diff --git a/.github/update.log b/.github/update.log index 51b8437f0c..488b358057 100644 --- a/.github/update.log +++ b/.github/update.log @@ -1247,3 +1247,4 @@ Update On Thu Jan 15 19:49:36 CET 2026 Update On Fri Jan 16 19:44:08 CET 2026 Update On Sat Jan 17 19:40:03 CET 2026 Update On Sun Jan 18 19:40:07 CET 2026 +Update On Thu Jan 22 16:29:47 CET 2026 diff --git a/clash-meta-android/core/src/main/golang/native/config/process.go b/clash-meta-android/core/src/main/golang/native/config/process.go index ae0fd924d1..0b60b1c520 100644 --- a/clash-meta-android/core/src/main/golang/native/config/process.go +++ b/clash-meta-android/core/src/main/golang/native/config/process.go @@ -114,7 +114,7 @@ func patchProviders(cfg *config.RawConfig, profileDir string) error { } else if url, ok := provider["url"].(string); ok { path = prefix + "/" + utils.MakeHash([]byte(url)).String() // same as C.GetPathByHash } else { - return // both path and url is empty, WTF??? + return // both path and url are empty, maybe inline provider } provider["path"] = profileDir + "/providers/" + path }) diff --git a/clash-meta/go.mod b/clash-meta/go.mod index b8ac2a12f6..33bb2cd096 100644 --- a/clash-meta/go.mod +++ b/clash-meta/go.mod @@ -26,14 +26,14 @@ require ( github.com/metacubex/quic-go v0.59.1-0.20260112033758-aa29579f2001 github.com/metacubex/randv2 v0.2.0 github.com/metacubex/restls-client-go v0.1.7 - github.com/metacubex/sing v0.5.6 - github.com/metacubex/sing-mux v0.3.4 + github.com/metacubex/sing v0.5.7 + github.com/metacubex/sing-mux v0.3.5 github.com/metacubex/sing-quic v0.0.0-20260112044712-65d17608159e github.com/metacubex/sing-shadowsocks v0.2.12 github.com/metacubex/sing-shadowsocks2 v0.2.7 github.com/metacubex/sing-shadowtls v0.0.0-20250503063515-5d9f966d17a2 github.com/metacubex/sing-tun v0.4.12 - github.com/metacubex/sing-vmess v0.2.4 + github.com/metacubex/sing-vmess v0.2.5 github.com/metacubex/sing-wireguard v0.0.0-20250503063753-2dc62acc626f github.com/metacubex/smux v0.0.0-20260105030934-d0c8756d3141 github.com/metacubex/tfo-go v0.0.0-20251130171125-413e892ac443 diff --git a/clash-meta/go.sum b/clash-meta/go.sum index 5c6868afae..805085a3b9 100644 --- a/clash-meta/go.sum +++ b/clash-meta/go.sum @@ -115,10 +115,10 @@ github.com/metacubex/randv2 v0.2.0 h1:uP38uBvV2SxYfLj53kuvAjbND4RUDfFJjwr4UigMiL github.com/metacubex/randv2 v0.2.0/go.mod h1:kFi2SzrQ5WuneuoLLCMkABtiBu6VRrMrWFqSPyj2cxY= github.com/metacubex/restls-client-go v0.1.7 h1:eCwiXCTQb5WJu9IlgYvDBA1OgrINv58dEe7hcN5H15k= github.com/metacubex/restls-client-go v0.1.7/go.mod h1:BN/U52vPw7j8VTSh2vleD/MnmVKCov84mS5VcjVHH4g= -github.com/metacubex/sing v0.5.6 h1:mEPDCadsCj3DB8gn+t/EtposlYuALEkExa/LUguw6/c= -github.com/metacubex/sing v0.5.6/go.mod h1:ypf0mjwlZm0sKdQSY+yQvmsbWa0hNPtkeqyRMGgoN+w= -github.com/metacubex/sing-mux v0.3.4 h1:tf4r27CIkzaxq9kBlAXQkgMXq2HPp5Mta60Kb4RCZF0= -github.com/metacubex/sing-mux v0.3.4/go.mod h1:SEJfAuykNj/ozbPqngEYqyggwSr81+L7Nu09NRD5mh4= +github.com/metacubex/sing v0.5.7 h1:8OC+fhKFSv/l9ehEhJRaZZAOuthfZo68SteBVLe8QqM= +github.com/metacubex/sing v0.5.7/go.mod h1:ypf0mjwlZm0sKdQSY+yQvmsbWa0hNPtkeqyRMGgoN+w= +github.com/metacubex/sing-mux v0.3.5 h1:UqVN+o62SR8kJaC9/3VfOc5UiVqgVY/ef9WwfGYYkk0= +github.com/metacubex/sing-mux v0.3.5/go.mod h1:8bT7ZKT3clRrJjYc/x5CRYibC1TX/bK73a3r3+2E+Fc= github.com/metacubex/sing-quic v0.0.0-20260112044712-65d17608159e h1:MLxp42z9Jd6LtY2suyawnl24oNzIsFxWc15bNeDIGxA= github.com/metacubex/sing-quic v0.0.0-20260112044712-65d17608159e/go.mod h1:+lgKTd52xAarGtqugALISShyw4KxnoEpYe2u0zJh26w= github.com/metacubex/sing-shadowsocks v0.2.12 h1:Wqzo8bYXrK5aWqxu/TjlTnYZzAKtKsaFQBdr6IHFaBE= @@ -129,8 +129,8 @@ github.com/metacubex/sing-shadowtls v0.0.0-20250503063515-5d9f966d17a2 h1:gXU+MY github.com/metacubex/sing-shadowtls v0.0.0-20250503063515-5d9f966d17a2/go.mod h1:mbfboaXauKJNIHJYxQRa+NJs4JU9NZfkA+I33dS2+9E= github.com/metacubex/sing-tun v0.4.12 h1:LCi+yB7y97X3cHQGdNXQBMQNHAzpP4AWg7YhSLk+LTM= github.com/metacubex/sing-tun v0.4.12/go.mod h1:L/TjQY5JEGy8nvsuYmy/XgMFMCPiF0+AWSFCYfS6r9w= -github.com/metacubex/sing-vmess v0.2.4 h1:Tx6AGgCiEf400E/xyDuYyafsel6sGbR8oF7RkAaus6I= -github.com/metacubex/sing-vmess v0.2.4/go.mod h1:21R5R1u90uUvBQF0owoooEu96/SAYYD56nDrwm6nFaM= +github.com/metacubex/sing-vmess v0.2.5 h1:m9Zt5I27lB9fmLMZfism9sH2LcnAfShZfwSkf6/KJoE= +github.com/metacubex/sing-vmess v0.2.5/go.mod h1:AwtlzUgf8COe9tRYAKqWZ+leDH7p5U98a0ZUpYehl8Q= github.com/metacubex/sing-wireguard v0.0.0-20250503063753-2dc62acc626f h1:Sr/DYKYofKHKc4GF3qkRGNuj6XA6c0eqPgEDN+VAsYU= github.com/metacubex/sing-wireguard v0.0.0-20250503063753-2dc62acc626f/go.mod h1:jpAkVLPnCpGSfNyVmj6Cq4YbuZsFepm/Dc+9BAOcR80= github.com/metacubex/smux v0.0.0-20260105030934-d0c8756d3141 h1:DK2l6m2Fc85H2BhiAPgbJygiWhesPlfGmF+9Vw6ARdk= diff --git a/clash-meta/transport/vmess/websocket.go b/clash-meta/transport/vmess/websocket.go index 0ee1b3ab2a..085f7dd447 100644 --- a/clash-meta/transport/vmess/websocket.go +++ b/clash-meta/transport/vmess/websocket.go @@ -42,7 +42,6 @@ type websocketWithEarlyDataConn struct { net.Conn wsWriter N.ExtendedWriter underlay net.Conn - closed bool dialed chan bool cancel context.CancelFunc ctx context.Context @@ -204,7 +203,7 @@ func (wsedc *websocketWithEarlyDataConn) Dial(earlyData []byte) error { } func (wsedc *websocketWithEarlyDataConn) Write(b []byte) (int, error) { - if wsedc.closed { + if wsedc.ctx.Err() != nil { return 0, io.ErrClosedPipe } if wsedc.Conn == nil { @@ -218,7 +217,7 @@ func (wsedc *websocketWithEarlyDataConn) Write(b []byte) (int, error) { } func (wsedc *websocketWithEarlyDataConn) WriteBuffer(buffer *buf.Buffer) error { - if wsedc.closed { + if wsedc.ctx.Err() != nil { return io.ErrClosedPipe } if wsedc.Conn == nil { @@ -232,7 +231,7 @@ func (wsedc *websocketWithEarlyDataConn) WriteBuffer(buffer *buf.Buffer) error { } func (wsedc *websocketWithEarlyDataConn) Read(b []byte) (int, error) { - if wsedc.closed { + if wsedc.ctx.Err() != nil { return 0, io.ErrClosedPipe } if wsedc.Conn == nil { @@ -246,7 +245,6 @@ func (wsedc *websocketWithEarlyDataConn) Read(b []byte) (int, error) { } func (wsedc *websocketWithEarlyDataConn) Close() error { - wsedc.closed = true wsedc.cancel() if wsedc.Conn == nil { // is dialing or not dialed return wsedc.underlay.Close() diff --git a/clash-nyanpasu/manifest/version.json b/clash-nyanpasu/manifest/version.json index fe4875cad6..ed8bdaba92 100644 --- a/clash-nyanpasu/manifest/version.json +++ b/clash-nyanpasu/manifest/version.json @@ -2,10 +2,10 @@ "manifest_version": 1, "latest": { "mihomo": "v1.19.19", - "mihomo_alpha": "alpha-0c995a2", - "clash_rs": "v0.9.3", + "mihomo_alpha": "alpha-1e1434d", + "clash_rs": "v0.9.4", "clash_premium": "2023-09-05-gdcc8d87", - "clash_rs_alpha": "0.9.3-alpha+sha.1c4e5b1" + "clash_rs_alpha": "0.9.4-alpha+sha.348bd90" }, "arch_template": { "mihomo": { @@ -69,5 +69,5 @@ "linux-armv7hf": "clash-armv7-unknown-linux-gnueabihf" } }, - "updated_at": "2026-01-17T22:21:31.032Z" + "updated_at": "2026-01-21T22:22:18.748Z" } diff --git a/geoip/go.mod b/geoip/go.mod index 2b9aa9d2e5..ebe64a82d8 100644 --- a/geoip/go.mod +++ b/geoip/go.mod @@ -1,31 +1,31 @@ module github.com/Loyalsoldier/geoip -go 1.24 +go 1.24.0 require ( - github.com/klauspost/compress v1.18.0 - github.com/maxmind/mmdbwriter v1.0.0 - github.com/oschwald/geoip2-golang v1.13.0 - github.com/oschwald/maxminddb-golang v1.13.1 - github.com/sagernet/sing-box v1.12.4 - github.com/spf13/cobra v1.10.1 + github.com/klauspost/compress v1.18.3 + github.com/maxmind/mmdbwriter v1.2.0 + github.com/oschwald/geoip2-golang/v2 v2.1.0 + github.com/oschwald/maxminddb-golang/v2 v2.1.1 + github.com/sagernet/sing-box v1.12.17 + github.com/spf13/cobra v1.10.2 github.com/tailscale/hujson v0.0.0-20250605163823-992244df8c5a github.com/tidwall/gjson v1.18.0 go4.org/netipx v0.0.0-20231129151722-fdeea329fbba - google.golang.org/protobuf v1.36.8 + google.golang.org/protobuf v1.36.11 gopkg.in/yaml.v2 v2.4.0 ) require ( github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/miekg/dns v1.1.67 // indirect - github.com/sagernet/sing v0.7.6-0.20250825114712-2aeec120ce28 // indirect + github.com/sagernet/sing v0.7.14 // indirect github.com/spf13/pflag v1.0.9 // indirect github.com/tidwall/match v1.1.1 // indirect github.com/tidwall/pretty v1.2.0 // indirect golang.org/x/mod v0.27.0 // indirect golang.org/x/net v0.43.0 // indirect golang.org/x/sync v0.16.0 // indirect - golang.org/x/sys v0.35.0 // indirect + golang.org/x/sys v0.38.0 // indirect golang.org/x/tools v0.36.0 // indirect ) diff --git a/geoip/go.sum b/geoip/go.sum index 2c654ab245..f723e18cdb 100644 --- a/geoip/go.sum +++ b/geoip/go.sum @@ -5,29 +5,29 @@ github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= -github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= -github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= -github.com/maxmind/mmdbwriter v1.0.0 h1:bieL4P6yaYaHvbtLSwnKtEvScUKKD6jcKaLiTM3WSMw= -github.com/maxmind/mmdbwriter v1.0.0/go.mod h1:noBMCUtyN5PUQ4H8ikkOvGSHhzhLok51fON2hcrpKj8= +github.com/klauspost/compress v1.18.3 h1:9PJRvfbmTabkOX8moIpXPbMMbYN60bWImDDU7L+/6zw= +github.com/klauspost/compress v1.18.3/go.mod h1:R0h/fSBs8DE4ENlcrlib3PsXS61voFxhIs2DeRhCvJ4= +github.com/maxmind/mmdbwriter v1.2.0 h1:hyvDopImmgvle3aR8AaddxXnT0iQH2KWJX3vNfkwzYM= +github.com/maxmind/mmdbwriter v1.2.0/go.mod h1:EQmKHhk2y9DRVvyNxwCLKC5FrkXZLx4snc5OlLY5XLE= github.com/miekg/dns v1.1.67 h1:kg0EHj0G4bfT5/oOys6HhZw4vmMlnoZ+gDu8tJ/AlI0= github.com/miekg/dns v1.1.67/go.mod h1:fujopn7TB3Pu3JM69XaawiU0wqjpL9/8xGop5UrTPps= -github.com/oschwald/geoip2-golang v1.13.0 h1:Q44/Ldc703pasJeP5V9+aFSZFmBN7DKHbNsSFzQATJI= -github.com/oschwald/geoip2-golang v1.13.0/go.mod h1:P9zG+54KPEFOliZ29i7SeYZ/GM6tfEL+rgSn03hYuUo= -github.com/oschwald/maxminddb-golang v1.13.1 h1:G3wwjdN9JmIK2o/ermkHM+98oX5fS+k5MbwsmL4MRQE= -github.com/oschwald/maxminddb-golang v1.13.1/go.mod h1:K4pgV9N/GcK694KSTmVSDTODk4IsCNThNdTmnaBZ/F8= +github.com/oschwald/geoip2-golang/v2 v2.1.0 h1:DjnLhNJu9WHwTrmoiQFvgmyJoczhdnm7LB23UBI2Amo= +github.com/oschwald/geoip2-golang/v2 v2.1.0/go.mod h1:qdVmcPgrTJ4q2eP9tHq/yldMTdp2VMr33uVdFbHBiBc= +github.com/oschwald/maxminddb-golang/v2 v2.1.1 h1:lA8FH0oOrM4u7mLvowq8IT6a3Q/qEnqRzLQn9eH5ojc= +github.com/oschwald/maxminddb-golang/v2 v2.1.1/go.mod h1:PLdx6PR+siSIoXqqy7C7r3SB3KZnhxWr1Dp6g0Hacl8= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/sagernet/sing v0.7.6-0.20250825114712-2aeec120ce28 h1:C8Lnqd0Q+C15kwaMiDsfq5S45rhhaQMBG91TT+6oFVo= -github.com/sagernet/sing v0.7.6-0.20250825114712-2aeec120ce28/go.mod h1:ARkL0gM13/Iv5VCZmci/NuoOlePoIsW0m7BWfln/Hak= -github.com/sagernet/sing-box v1.12.4 h1:FaKRKIorsior0nzjCoPSESonjHnmSOD/moKIA56OkLM= -github.com/sagernet/sing-box v1.12.4/go.mod h1:sYGo3cT+O9YwEucIqz+2JBrNTnvuU2F/+vpnbhuV3Qc= -github.com/spf13/cobra v1.10.1 h1:lJeBwCfmrnXthfAupyUTzJ/J4Nc1RsHC/mSRU2dll/s= -github.com/spf13/cobra v1.10.1/go.mod h1:7SmJGaTHFVBY0jW4NXGluQoLvhqFQM+6XSKD+P4XaB0= +github.com/sagernet/sing v0.7.14 h1:5QQRDCUvYNOMyVp3LuK/hYEBAIv0VsbD3x/l9zH467s= +github.com/sagernet/sing v0.7.14/go.mod h1:ARkL0gM13/Iv5VCZmci/NuoOlePoIsW0m7BWfln/Hak= +github.com/sagernet/sing-box v1.12.17 h1:Nrns3lgWuK7b5sB3IcKJnVu4SJ7B6g7MLLH1evlDDgU= +github.com/sagernet/sing-box v1.12.17/go.mod h1:q/gYlJOSeHXubCCKM9MiDqzWWNi0cgi4ySYd1kasIts= +github.com/spf13/cobra v1.10.2 h1:DMTTonx5m65Ic0GOoRY2c16WCbHxOOw6xxezuLaBpcU= +github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiTUUS4= github.com/spf13/pflag v1.0.9 h1:9exaQaMOCwffKiiiYk6/BndUBv+iRViNW+4lEMi0PvY= github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= -github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/tailscale/hujson v0.0.0-20250605163823-992244df8c5a h1:a6TNDN9CgG+cYjaeN8l2mc4kSz2iMiCDQxPEyltUV/I= github.com/tailscale/hujson v0.0.0-20250605163823-992244df8c5a/go.mod h1:EbW0wDK/qEUYI0A5bqq0C2kF8JTQwWONmGDBbzsxxHo= github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY= @@ -36,6 +36,7 @@ github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= +go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= go4.org/netipx v0.0.0-20231129151722-fdeea329fbba h1:0b9z3AuHCjxk0x/opv64kcgZLBseWJUpBw5I82+2U4M= go4.org/netipx v0.0.0-20231129151722-fdeea329fbba/go.mod h1:PLyyIXexvUFg3Owu6p/WfdlivPbZJsZdgWZlrGope/Y= golang.org/x/mod v0.27.0 h1:kb+q2PyFnEADO2IEF935ehFUXlWiNjJWtRNgBLSfbxQ= @@ -44,12 +45,12 @@ golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw= golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= -golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= -golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= +golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/tools v0.36.0 h1:kWS0uv/zsvHEle1LbV5LE8QujrxB3wfQyxHfhOk0Qkg= golang.org/x/tools v0.36.0/go.mod h1:WBDiHKJK8YgLHlcQPYQzNCkUxUypCaa5ZegCVutKm+s= -google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= -google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= +google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= +google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= diff --git a/geoip/plugin/maxmind/common_out.go b/geoip/plugin/maxmind/common_out.go index 01f10fc011..21063faa16 100644 --- a/geoip/plugin/maxmind/common_out.go +++ b/geoip/plugin/maxmind/common_out.go @@ -8,8 +8,8 @@ import ( "strings" "github.com/Loyalsoldier/geoip/lib" - "github.com/oschwald/geoip2-golang" - "github.com/oschwald/maxminddb-golang" + "github.com/oschwald/geoip2-golang/v2" + "github.com/oschwald/maxminddb-golang/v2" ) var ( @@ -20,6 +20,15 @@ var ( defaultIPInfoOutputDir = filepath.Join("./", "output", "ipinfo") ) +// Reference: https://github.com/oschwald/geoip2-golang/blob/HEAD/models.go +var ( + zeroDBIPLanguageNames dbipLanguageNames + zeroDBIPContinent dbipContinent + zeroDBIPCountryRecord dbipCountryRecord + zeroDBIPRepresentedCountry dbipRepresentedCountry + zeroDBIPCountry dbipCountry +) + // Reference: https://ipinfo.io/lite type ipInfoLite struct { ASN string `maxminddb:"asn"` @@ -31,6 +40,66 @@ type ipInfoLite struct { CountryCode string `maxminddb:"country_code"` } +// Reference: https://github.com/oschwald/geoip2-golang/blob/HEAD/models.go +type dbipLanguageNames struct { + geoip2.Names + + // Persian localized name + Persian string `json:"fa,omitzero" maxminddb:"fa"` + // Korean localized name + Korean string `json:"ko,omitzero" maxminddb:"ko"` +} + +func (d dbipLanguageNames) HasData() bool { + return d != zeroDBIPLanguageNames +} + +// Reference: https://github.com/oschwald/geoip2-golang/blob/HEAD/models.go +type dbipContinent struct { + geoip2.Continent + + Names dbipLanguageNames `json:"names,omitzero" maxminddb:"names"` +} + +func (d dbipContinent) HasData() bool { + return d != zeroDBIPContinent +} + +// Reference: https://github.com/oschwald/geoip2-golang/blob/HEAD/models.go +type dbipCountryRecord struct { + geoip2.CountryRecord + + Names dbipLanguageNames `json:"names,omitzero" maxminddb:"names"` +} + +func (d dbipCountryRecord) HasData() bool { + return d != zeroDBIPCountryRecord +} + +// Reference: https://github.com/oschwald/geoip2-golang/blob/HEAD/models.go +type dbipRepresentedCountry struct { + geoip2.RepresentedCountry + + Names dbipLanguageNames `json:"names,omitzero" maxminddb:"names"` +} + +func (d dbipRepresentedCountry) HasData() bool { + return d != zeroDBIPRepresentedCountry +} + +// Reference: https://github.com/oschwald/geoip2-golang/blob/HEAD/models.go +type dbipCountry struct { + Traits geoip2.CountryTraits `json:"traits,omitzero" maxminddb:"traits"` + Continent dbipContinent `json:"continent,omitzero" maxminddb:"continent"` + RepresentedCountry dbipRepresentedCountry `json:"represented_country,omitzero" maxminddb:"represented_country"` + Country dbipCountryRecord `json:"country,omitzero" maxminddb:"country"` + RegisteredCountry dbipCountryRecord `json:"registered_country,omitzero" maxminddb:"registered_country"` +} + +func (d dbipCountry) HasData() bool { + return d != zeroDBIPCountry +} + func newGeoLite2CountryMMDBOut(iType string, iDesc string, action lib.Action, data json.RawMessage) (lib.OutputConverter, error) { var tmp struct { OutputName string `json:"outputName"` @@ -98,26 +167,25 @@ func (g *GeoLite2CountryMMDBOut) GetExtraInfo() (map[string]any, error) { return nil, err } - db, err := maxminddb.FromBytes(content) + db, err := maxminddb.OpenBytes(content) if err != nil { return nil, err } defer db.Close() infoList := make(map[string]any) - networks := db.Networks(maxminddb.SkipAliasedNetworks) - for networks.Next() { + for network := range db.Networks() { switch g.Type { - case TypeGeoLite2CountryMMDBOut, TypeDBIPCountryMMDBOut: + case TypeGeoLite2CountryMMDBOut: var record geoip2.Country - _, err := networks.Network(&record) + err := network.Decode(&record) if err != nil { return nil, err } switch { - case strings.TrimSpace(record.Country.IsoCode) != "": - countryCode := strings.ToUpper(strings.TrimSpace(record.Country.IsoCode)) + case strings.TrimSpace(record.Country.ISOCode) != "": + countryCode := strings.ToUpper(strings.TrimSpace(record.Country.ISOCode)) if _, found := infoList[countryCode]; !found { infoList[countryCode] = geoip2.Country{ Continent: record.Continent, @@ -125,8 +193,8 @@ func (g *GeoLite2CountryMMDBOut) GetExtraInfo() (map[string]any, error) { } } - case strings.TrimSpace(record.RegisteredCountry.IsoCode) != "": - countryCode := strings.ToUpper(strings.TrimSpace(record.RegisteredCountry.IsoCode)) + case strings.TrimSpace(record.RegisteredCountry.ISOCode) != "": + countryCode := strings.ToUpper(strings.TrimSpace(record.RegisteredCountry.ISOCode)) if _, found := infoList[countryCode]; !found { infoList[countryCode] = geoip2.Country{ Continent: record.Continent, @@ -134,19 +202,14 @@ func (g *GeoLite2CountryMMDBOut) GetExtraInfo() (map[string]any, error) { } } - case strings.TrimSpace(record.RepresentedCountry.IsoCode) != "": - countryCode := strings.ToUpper(strings.TrimSpace(record.RepresentedCountry.IsoCode)) + case strings.TrimSpace(record.RepresentedCountry.ISOCode) != "": + countryCode := strings.ToUpper(strings.TrimSpace(record.RepresentedCountry.ISOCode)) if _, found := infoList[countryCode]; !found { infoList[countryCode] = geoip2.Country{ Continent: record.Continent, - Country: struct { - Names map[string]string `maxminddb:"names"` - IsoCode string `maxminddb:"iso_code"` - GeoNameID uint `maxminddb:"geoname_id"` - IsInEuropeanUnion bool `maxminddb:"is_in_european_union"` - }{ + Country: geoip2.CountryRecord{ Names: record.RepresentedCountry.Names, - IsoCode: record.RepresentedCountry.IsoCode, + ISOCode: record.RepresentedCountry.ISOCode, GeoNameID: record.RepresentedCountry.GeoNameID, IsInEuropeanUnion: record.RepresentedCountry.IsInEuropeanUnion, }, @@ -154,9 +217,52 @@ func (g *GeoLite2CountryMMDBOut) GetExtraInfo() (map[string]any, error) { } } + case TypeDBIPCountryMMDBOut: + var record dbipCountry + err := network.Decode(&record) + if err != nil { + return nil, err + } + + switch { + case strings.TrimSpace(record.Country.ISOCode) != "": + countryCode := strings.ToUpper(strings.TrimSpace(record.Country.ISOCode)) + if _, found := infoList[countryCode]; !found { + infoList[countryCode] = dbipCountry{ + Continent: record.Continent, + Country: record.Country, + } + } + + case strings.TrimSpace(record.RegisteredCountry.ISOCode) != "": + countryCode := strings.ToUpper(strings.TrimSpace(record.RegisteredCountry.ISOCode)) + if _, found := infoList[countryCode]; !found { + infoList[countryCode] = dbipCountry{ + Continent: record.Continent, + Country: record.RegisteredCountry, + } + } + + case strings.TrimSpace(record.RepresentedCountry.ISOCode) != "": + countryCode := strings.ToUpper(strings.TrimSpace(record.RepresentedCountry.ISOCode)) + if _, found := infoList[countryCode]; !found { + infoList[countryCode] = dbipCountry{ + Continent: record.Continent, + Country: dbipCountryRecord{ + CountryRecord: geoip2.CountryRecord{ + ISOCode: record.RepresentedCountry.ISOCode, + GeoNameID: record.RepresentedCountry.GeoNameID, + IsInEuropeanUnion: record.RepresentedCountry.IsInEuropeanUnion, + }, + Names: record.RepresentedCountry.Names, + }, + } + } + } + case TypeIPInfoCountryMMDBOut: var record ipInfoLite - _, err := networks.Network(&record) + err := network.Decode(&record) if err != nil { return nil, err } @@ -174,10 +280,6 @@ func (g *GeoLite2CountryMMDBOut) GetExtraInfo() (map[string]any, error) { } - if networks.Err() != nil { - return nil, networks.Err() - } - if len(infoList) == 0 { return nil, fmt.Errorf("❌ [type %s | action %s] no extra info found in the source MMDB file: %s", g.Type, g.Action, g.SourceMMDBURI) } diff --git a/geoip/plugin/maxmind/maxmind_country_mmdb_in.go b/geoip/plugin/maxmind/maxmind_country_mmdb_in.go index ab8be53fb7..be867b9b99 100644 --- a/geoip/plugin/maxmind/maxmind_country_mmdb_in.go +++ b/geoip/plugin/maxmind/maxmind_country_mmdb_in.go @@ -3,13 +3,12 @@ package maxmind import ( "encoding/json" "fmt" - "net" "os" "strings" "github.com/Loyalsoldier/geoip/lib" - "github.com/oschwald/geoip2-golang" - "github.com/oschwald/maxminddb-golang" + "github.com/oschwald/geoip2-golang/v2" + "github.com/oschwald/maxminddb-golang/v2" ) const ( @@ -97,38 +96,36 @@ func (g *GeoLite2CountryMMDBIn) Input(container lib.Container) (lib.Container, e } func (g *GeoLite2CountryMMDBIn) generateEntries(content []byte, entries map[string]*lib.Entry) error { - db, err := maxminddb.FromBytes(content) + db, err := maxminddb.OpenBytes(content) if err != nil { return err } defer db.Close() - networks := db.Networks(maxminddb.SkipAliasedNetworks) - for networks.Next() { + for network := range db.Networks() { var name string - var subnet *net.IPNet var err error switch g.Type { case TypeGeoLite2CountryMMDBIn, TypeDBIPCountryMMDBIn: var record geoip2.Country - subnet, err = networks.Network(&record) + err = network.Decode(&record) if err != nil { return err } switch { - case strings.TrimSpace(record.Country.IsoCode) != "": - name = strings.ToUpper(strings.TrimSpace(record.Country.IsoCode)) - case strings.TrimSpace(record.RegisteredCountry.IsoCode) != "": - name = strings.ToUpper(strings.TrimSpace(record.RegisteredCountry.IsoCode)) - case strings.TrimSpace(record.RepresentedCountry.IsoCode) != "": - name = strings.ToUpper(strings.TrimSpace(record.RepresentedCountry.IsoCode)) + case strings.TrimSpace(record.Country.ISOCode) != "": + name = strings.ToUpper(strings.TrimSpace(record.Country.ISOCode)) + case strings.TrimSpace(record.RegisteredCountry.ISOCode) != "": + name = strings.ToUpper(strings.TrimSpace(record.RegisteredCountry.ISOCode)) + case strings.TrimSpace(record.RepresentedCountry.ISOCode) != "": + name = strings.ToUpper(strings.TrimSpace(record.RepresentedCountry.ISOCode)) } case TypeIPInfoCountryMMDBIn: var record ipInfoLite - subnet, err = networks.Network(&record) + err = network.Decode(&record) if err != nil { return err } @@ -138,7 +135,7 @@ func (g *GeoLite2CountryMMDBIn) generateEntries(content []byte, entries map[stri return lib.ErrNotSupportedFormat } - if name == "" || subnet == nil { + if name == "" || !network.Found() { continue } @@ -151,16 +148,12 @@ func (g *GeoLite2CountryMMDBIn) generateEntries(content []byte, entries map[stri entry = lib.NewEntry(name) } - if err := entry.AddPrefix(subnet); err != nil { + if err := entry.AddPrefix(network.Prefix()); err != nil { return err } entries[name] = entry } - if networks.Err() != nil { - return networks.Err() - } - return nil } diff --git a/geoip/plugin/maxmind/maxmind_country_mmdb_out.go b/geoip/plugin/maxmind/maxmind_country_mmdb_out.go index 7cba249eed..4cf4cef686 100644 --- a/geoip/plugin/maxmind/maxmind_country_mmdb_out.go +++ b/geoip/plugin/maxmind/maxmind_country_mmdb_out.go @@ -12,7 +12,7 @@ import ( "github.com/Loyalsoldier/geoip/lib" "github.com/maxmind/mmdbwriter" "github.com/maxmind/mmdbwriter/mmdbtype" - "github.com/oschwald/geoip2-golang" + "github.com/oschwald/geoip2-golang/v2" ) const ( @@ -58,16 +58,19 @@ func (g *GeoLite2CountryMMDBOut) GetDescription() string { func (g *GeoLite2CountryMMDBOut) Output(container lib.Container) error { dbName := "" dbDesc := "" - recordSize := 28 + dbLanguages := []string{"en"} + recordSize := 24 switch g.Type { case TypeGeoLite2CountryMMDBOut: dbName = "GeoLite2-Country" dbDesc = "Customized GeoLite2 Country database" + dbLanguages = []string{"de", "en", "es", "fr", "ja", "pt-BR", "ru", "zh-CN"} case TypeDBIPCountryMMDBOut: dbName = "DBIP-Country-Lite" dbDesc = "Customized DB-IP Country Lite database" + dbLanguages = []string{"de", "en", "es", "fr", "ja", "pt-BR", "ru", "zh-CN", "fa", "ko"} case TypeIPInfoCountryMMDBOut: dbName = "IPInfo-Lite" @@ -79,6 +82,7 @@ func (g *GeoLite2CountryMMDBOut) Output(container lib.Container) error { mmdbwriter.Options{ DatabaseType: dbName, Description: map[string]string{"en": dbDesc}, + Languages: dbLanguages, RecordSize: recordSize, IncludeReservedNetworks: true, }, @@ -222,28 +226,28 @@ func (g *GeoLite2CountryMMDBOut) marshalData(writer *mmdbwriter.Tree, entry *lib record = mmdbtype.Map{ "continent": mmdbtype.Map{ "names": mmdbtype.Map{ - "de": mmdbtype.String(info.Continent.Names["de"]), - "en": mmdbtype.String(info.Continent.Names["en"]), - "es": mmdbtype.String(info.Continent.Names["es"]), - "fr": mmdbtype.String(info.Continent.Names["fr"]), - "ja": mmdbtype.String(info.Continent.Names["ja"]), - "pt-BR": mmdbtype.String(info.Continent.Names["pt-BR"]), - "ru": mmdbtype.String(info.Continent.Names["ru"]), - "zh-CN": mmdbtype.String(info.Continent.Names["zh-CN"]), + "de": mmdbtype.String(info.Continent.Names.German), + "en": mmdbtype.String(info.Continent.Names.English), + "es": mmdbtype.String(info.Continent.Names.Spanish), + "fr": mmdbtype.String(info.Continent.Names.French), + "ja": mmdbtype.String(info.Continent.Names.Japanese), + "pt-BR": mmdbtype.String(info.Continent.Names.BrazilianPortuguese), + "ru": mmdbtype.String(info.Continent.Names.Russian), + "zh-CN": mmdbtype.String(info.Continent.Names.SimplifiedChinese), }, "code": mmdbtype.String(info.Continent.Code), "geoname_id": mmdbtype.Uint32(info.Continent.GeoNameID), }, "country": mmdbtype.Map{ "names": mmdbtype.Map{ - "de": mmdbtype.String(info.Country.Names["de"]), - "en": mmdbtype.String(info.Country.Names["en"]), - "es": mmdbtype.String(info.Country.Names["es"]), - "fr": mmdbtype.String(info.Country.Names["fr"]), - "ja": mmdbtype.String(info.Country.Names["ja"]), - "pt-BR": mmdbtype.String(info.Country.Names["pt-BR"]), - "ru": mmdbtype.String(info.Country.Names["ru"]), - "zh-CN": mmdbtype.String(info.Country.Names["zh-CN"]), + "de": mmdbtype.String(info.Country.Names.German), + "en": mmdbtype.String(info.Country.Names.English), + "es": mmdbtype.String(info.Country.Names.Spanish), + "fr": mmdbtype.String(info.Country.Names.French), + "ja": mmdbtype.String(info.Country.Names.Japanese), + "pt-BR": mmdbtype.String(info.Country.Names.BrazilianPortuguese), + "ru": mmdbtype.String(info.Country.Names.Russian), + "zh-CN": mmdbtype.String(info.Country.Names.SimplifiedChinese), }, "iso_code": mmdbtype.String(entry.GetName()), "geoname_id": mmdbtype.Uint32(info.Country.GeoNameID), @@ -254,14 +258,14 @@ func (g *GeoLite2CountryMMDBOut) marshalData(writer *mmdbwriter.Tree, entry *lib record = mmdbtype.Map{ "country": mmdbtype.Map{ "names": mmdbtype.Map{ - "de": mmdbtype.String(info.Country.Names["de"]), - "en": mmdbtype.String(info.Country.Names["en"]), - "es": mmdbtype.String(info.Country.Names["es"]), - "fr": mmdbtype.String(info.Country.Names["fr"]), - "ja": mmdbtype.String(info.Country.Names["ja"]), - "pt-BR": mmdbtype.String(info.Country.Names["pt-BR"]), - "ru": mmdbtype.String(info.Country.Names["ru"]), - "zh-CN": mmdbtype.String(info.Country.Names["zh-CN"]), + "de": mmdbtype.String(info.Country.Names.German), + "en": mmdbtype.String(info.Country.Names.English), + "es": mmdbtype.String(info.Country.Names.Spanish), + "fr": mmdbtype.String(info.Country.Names.French), + "ja": mmdbtype.String(info.Country.Names.Japanese), + "pt-BR": mmdbtype.String(info.Country.Names.BrazilianPortuguese), + "ru": mmdbtype.String(info.Country.Names.Russian), + "zh-CN": mmdbtype.String(info.Country.Names.SimplifiedChinese), }, "iso_code": mmdbtype.String(entry.GetName()), "geoname_id": mmdbtype.Uint32(info.Country.GeoNameID), @@ -271,7 +275,7 @@ func (g *GeoLite2CountryMMDBOut) marshalData(writer *mmdbwriter.Tree, entry *lib } case TypeDBIPCountryMMDBOut: - info, found := extraInfo[entry.GetName()].(geoip2.Country) + info, found := extraInfo[entry.GetName()].(dbipCountry) if !found { log.Printf("⚠️ [type %s | action %s] not found extra info for list %s\n", g.Type, g.Action, entry.GetName()) @@ -284,32 +288,32 @@ func (g *GeoLite2CountryMMDBOut) marshalData(writer *mmdbwriter.Tree, entry *lib record = mmdbtype.Map{ "continent": mmdbtype.Map{ "names": mmdbtype.Map{ - "de": mmdbtype.String(info.Continent.Names["de"]), - "en": mmdbtype.String(info.Continent.Names["en"]), - "es": mmdbtype.String(info.Continent.Names["es"]), - "fa": mmdbtype.String(info.Continent.Names["fa"]), - "fr": mmdbtype.String(info.Continent.Names["fr"]), - "ja": mmdbtype.String(info.Continent.Names["ja"]), - "ko": mmdbtype.String(info.Continent.Names["ko"]), - "pt-BR": mmdbtype.String(info.Continent.Names["pt-BR"]), - "ru": mmdbtype.String(info.Continent.Names["ru"]), - "zh-CN": mmdbtype.String(info.Continent.Names["zh-CN"]), + "de": mmdbtype.String(info.Continent.Names.German), + "en": mmdbtype.String(info.Continent.Names.English), + "es": mmdbtype.String(info.Continent.Names.Spanish), + "fa": mmdbtype.String(info.Continent.Names.Persian), + "fr": mmdbtype.String(info.Continent.Names.French), + "ja": mmdbtype.String(info.Continent.Names.Japanese), + "ko": mmdbtype.String(info.Continent.Names.Korean), + "pt-BR": mmdbtype.String(info.Continent.Names.BrazilianPortuguese), + "ru": mmdbtype.String(info.Continent.Names.Russian), + "zh-CN": mmdbtype.String(info.Continent.Names.SimplifiedChinese), }, "code": mmdbtype.String(info.Continent.Code), "geoname_id": mmdbtype.Uint32(info.Continent.GeoNameID), }, "country": mmdbtype.Map{ "names": mmdbtype.Map{ - "de": mmdbtype.String(info.Country.Names["de"]), - "en": mmdbtype.String(info.Country.Names["en"]), - "es": mmdbtype.String(info.Country.Names["es"]), - "fa": mmdbtype.String(info.Country.Names["fa"]), - "fr": mmdbtype.String(info.Country.Names["fr"]), - "ja": mmdbtype.String(info.Country.Names["ja"]), - "ko": mmdbtype.String(info.Country.Names["ko"]), - "pt-BR": mmdbtype.String(info.Country.Names["pt-BR"]), - "ru": mmdbtype.String(info.Country.Names["ru"]), - "zh-CN": mmdbtype.String(info.Country.Names["zh-CN"]), + "de": mmdbtype.String(info.Country.Names.German), + "en": mmdbtype.String(info.Country.Names.English), + "es": mmdbtype.String(info.Country.Names.Spanish), + "fa": mmdbtype.String(info.Country.Names.Persian), + "fr": mmdbtype.String(info.Country.Names.French), + "ja": mmdbtype.String(info.Country.Names.Japanese), + "ko": mmdbtype.String(info.Country.Names.Korean), + "pt-BR": mmdbtype.String(info.Country.Names.BrazilianPortuguese), + "ru": mmdbtype.String(info.Country.Names.Russian), + "zh-CN": mmdbtype.String(info.Country.Names.SimplifiedChinese), }, "iso_code": mmdbtype.String(entry.GetName()), "geoname_id": mmdbtype.Uint32(info.Country.GeoNameID), @@ -320,16 +324,16 @@ func (g *GeoLite2CountryMMDBOut) marshalData(writer *mmdbwriter.Tree, entry *lib record = mmdbtype.Map{ "country": mmdbtype.Map{ "names": mmdbtype.Map{ - "de": mmdbtype.String(info.Country.Names["de"]), - "en": mmdbtype.String(info.Country.Names["en"]), - "es": mmdbtype.String(info.Country.Names["es"]), - "fa": mmdbtype.String(info.Country.Names["fa"]), - "fr": mmdbtype.String(info.Country.Names["fr"]), - "ja": mmdbtype.String(info.Country.Names["ja"]), - "ko": mmdbtype.String(info.Country.Names["ko"]), - "pt-BR": mmdbtype.String(info.Country.Names["pt-BR"]), - "ru": mmdbtype.String(info.Country.Names["ru"]), - "zh-CN": mmdbtype.String(info.Country.Names["zh-CN"]), + "de": mmdbtype.String(info.Country.Names.German), + "en": mmdbtype.String(info.Country.Names.English), + "es": mmdbtype.String(info.Country.Names.Spanish), + "fa": mmdbtype.String(info.Country.Names.Persian), + "fr": mmdbtype.String(info.Country.Names.French), + "ja": mmdbtype.String(info.Country.Names.Japanese), + "ko": mmdbtype.String(info.Country.Names.Korean), + "pt-BR": mmdbtype.String(info.Country.Names.BrazilianPortuguese), + "ru": mmdbtype.String(info.Country.Names.Russian), + "zh-CN": mmdbtype.String(info.Country.Names.SimplifiedChinese), }, "iso_code": mmdbtype.String(entry.GetName()), "geoname_id": mmdbtype.Uint32(info.Country.GeoNameID), diff --git a/geoip/plugin/plaintext/common_in.go b/geoip/plugin/plaintext/common_in.go index cc7728b142..f8253519ea 100644 --- a/geoip/plugin/plaintext/common_in.go +++ b/geoip/plugin/plaintext/common_in.go @@ -209,12 +209,38 @@ func (t *TextIn) scanFileForJSONIn(reader io.Reader, entry *lib.Entry) error { path = strings.TrimSpace(path) result := gjson.GetBytes(data, path) - for _, cidr := range result.Array() { - if err := entry.AddPrefix(cidr.String()); err != nil { - return err - } + if err := t.processJSONResult(result, entry); err != nil { + return fmt.Errorf("❌ [type %s | action %s] failed to process JSON: %v", t.Type, t.Action, err) } } return nil } + +func (t *TextIn) processJSONResult(result gjson.Result, entry *lib.Entry) error { + switch { + case !result.Exists(): + return fmt.Errorf("invaild IP address or CIDR (value not exist), please check your specified JSON path or JSON source") + + case result.Type == gjson.String: + cidr := strings.TrimSpace(result.String()) + if cidr == "" { + return fmt.Errorf("empty string, please check your specified JSON path or JSON source") + } + if err := entry.AddPrefix(cidr); err != nil { + return err + } + + case result.IsArray(): + for _, item := range result.Array() { + if err := t.processJSONResult(item, entry); err != nil { + return err + } + } + + default: + return fmt.Errorf("invaild IP address or CIDR, please check your specified JSON path or JSON source") + } + + return nil +} diff --git a/lede/package/boot/uboot-rockchip/Makefile b/lede/package/boot/uboot-rockchip/Makefile index fe1905cd21..1b711f2cea 100644 --- a/lede/package/boot/uboot-rockchip/Makefile +++ b/lede/package/boot/uboot-rockchip/Makefile @@ -145,6 +145,13 @@ define U-Boot/nanopi-r4se-rk3399 USE_RKBIN:=1 endef +define U-Boot/rock-4se-rk3399 + $(U-Boot/rk3399/Default) + NAME:=ROCK 4SE + BUILD_DEVICES:= \ + radxa_rock-4se +endef + define U-Boot/rock-pi-4-rk3399 $(U-Boot/rk3399/Default) NAME:=Rock Pi 4 @@ -517,6 +524,7 @@ UBOOT_TARGETS := \ nanopi-r4s-rk3399 \ nanopi-r4se-rk3399 \ rock-pi-4-rk3399 \ + rock-4se-rk3399 \ rockpro64-rk3399 \ sv901-eaio-rk3399 \ guangmiao-g4c-rk3399 \ diff --git a/lede/target/linux/generic/pending-6.12/720-04-net-phy-realtek-setup-aldps.patch b/lede/target/linux/generic/pending-6.12/720-04-net-phy-realtek-setup-aldps.patch index b36e54717d..3d3f7f5deb 100644 --- a/lede/target/linux/generic/pending-6.12/720-04-net-phy-realtek-setup-aldps.patch +++ b/lede/target/linux/generic/pending-6.12/720-04-net-phy-realtek-setup-aldps.patch @@ -24,19 +24,68 @@ Signed-off-by: Daniel Golle #define RTL8366RB_POWER_SAVE 0x15 #define RTL8366RB_POWER_SAVE_ON BIT(12) -@@ -1090,6 +1094,15 @@ static int rtl822xb_config_init(struct p +@@ -175,6 +179,10 @@ struct rtl821x_priv { + u32 saved_wolopts; + }; + ++struct rtl822x_priv { ++ bool enable_aldps; ++}; ++ + static int rtl821x_read_page(struct phy_device *phydev) + { + return __phy_read(phydev, RTL821x_PAGE_SELECT); +@@ -1025,6 +1033,18 @@ static int rtl822x_write_mmd(struct phy_ + + static int rtl822x_probe(struct phy_device *phydev) + { ++ struct device *dev = &phydev->mdio.dev; ++ struct rtl822x_priv *priv; ++ ++ priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL); ++ if (!priv) ++ return -ENOMEM; ++ ++ priv->enable_aldps = of_property_read_bool(dev->of_node, ++ "realtek,aldps-enable"); ++ ++ phydev->priv = priv; ++ + if (IS_ENABLED(CONFIG_REALTEK_PHY_HWMON) && + phydev->phy_id != RTL_GENERIC_PHYID) + return rtl822x_hwmon_init(phydev); +@@ -1032,6 +1052,19 @@ static int rtl822x_probe(struct phy_devi + return 0; + } + ++static int rtl822x_init_phycr1(struct phy_device *phydev, bool no_aldps) ++{ ++ struct rtl822x_priv *priv = phydev->priv; ++ u16 val = 0; ++ ++ if (priv->enable_aldps && !no_aldps) ++ val = RTL8221B_PHYCR1_ALDPS_EN | RTL8221B_PHYCR1_ALDPS_XTAL_OFF_EN; ++ ++ return phy_modify_mmd_changed(phydev, MDIO_MMD_VEND2, RTL8221B_PHYCR1, ++ RTL8221B_PHYCR1_ALDPS_EN | ++ RTL8221B_PHYCR1_ALDPS_XTAL_OFF_EN, val); ++} ++ + static int rtl822xb_config_init(struct phy_device *phydev) + { + bool has_2500, has_sgmii; +@@ -1108,6 +1141,14 @@ static int rtl822xb_config_init(struct p if (ret < 0) return ret; -+ if (of_property_read_bool(phydev->mdio.dev.of_node, "realtek,aldps-enable")) -+ ret = phy_set_bits_mmd(phydev, MDIO_MMD_VEND1, RTL8221B_PHYCR1, -+ RTL8221B_PHYCR1_ALDPS_EN | RTL8221B_PHYCR1_ALDPS_XTAL_OFF_EN); -+ else -+ ret = phy_clear_bits_mmd(phydev, MDIO_MMD_VEND1, RTL8221B_PHYCR1, -+ RTL8221B_PHYCR1_ALDPS_EN | RTL8221B_PHYCR1_ALDPS_XTAL_OFF_EN); ++ ret = phy_write_mmd(phydev, MDIO_MMD_VEND1, 0x6f11, 0x8020); + if (ret < 0) + return ret; + - /* Disable SGMII AN */ - ret = phy_write_mmd(phydev, MDIO_MMD_VEND1, 0x7588, 0x2); - if (ret < 0) ++ ret = rtl822x_init_phycr1(phydev, false); ++ if (ret < 0) ++ return ret; ++ + return 0; + } + diff --git a/lede/target/linux/generic/pending-6.12/720-08-net-phy-realtek-work-around-broken-serdes.patch b/lede/target/linux/generic/pending-6.12/720-08-net-phy-realtek-work-around-broken-serdes.patch deleted file mode 100644 index 1749a74e36..0000000000 --- a/lede/target/linux/generic/pending-6.12/720-08-net-phy-realtek-work-around-broken-serdes.patch +++ /dev/null @@ -1,58 +0,0 @@ -From: Daniel Golle -Date: Thu, 30 Jan 2025 05:33:12 +0000 -Subject: [PATCH] net: phy: realtek: work around broken SerDes - -For still unknown reasons the SerDes init sequence may sometimes -time out because a self-clearing bit never clears, indicating the -PHY has entered an unrecoverable error state. - -Work-around the issue by triggering a hardware reset and retry the -setup sequence while warning the user that this has happened. -This is really more of a work-around than a fix, and should be -replaced by a better actual fix in future (hopefully). - -Signed-off-by: Daniel Golle ---- ---- a/drivers/net/phy/realtek/realtek_main.c -+++ b/drivers/net/phy/realtek/realtek_main.c -@@ -1124,6 +1124,22 @@ static int rtl822xb_config_init(struct p - return 0; - } - -+static int rtl822xb_config_init_war(struct phy_device *phydev) -+{ -+ int ret; -+ -+ ret = rtl822xb_config_init(phydev); -+ -+ if (ret == -ETIMEDOUT) { -+ phydev_warn(phydev, "SerDes setup timed out, retrying\n"); -+ phy_device_reset(phydev, 1); -+ phy_device_reset(phydev, 0); -+ ret = rtl822xb_config_init(phydev); -+ } -+ -+ return ret; -+} -+ - static int rtl822xb_get_rate_matching(struct phy_device *phydev, - phy_interface_t iface) - { -@@ -1813,7 +1829,7 @@ static struct phy_driver realtek_drvs[] - .handle_interrupt = rtl8221b_handle_interrupt, - .soft_reset = genphy_soft_reset, - .probe = rtl822x_probe, -- .config_init = rtl822xb_config_init, -+ .config_init = rtl822xb_config_init_war, - .get_rate_matching = rtl822xb_get_rate_matching, - .get_features = rtl822x_c45_get_features, - .config_aneg = rtl822x_c45_config_aneg, -@@ -1843,7 +1859,7 @@ static struct phy_driver realtek_drvs[] - .handle_interrupt = rtl8221b_handle_interrupt, - .soft_reset = genphy_soft_reset, - .probe = rtl822x_probe, -- .config_init = rtl822xb_config_init, -+ .config_init = rtl822xb_config_init_war, - .get_rate_matching = rtl822xb_get_rate_matching, - .get_features = rtl822x_c45_get_features, - .config_aneg = rtl822x_c45_config_aneg, diff --git a/lede/target/linux/generic/pending-6.12/720-09-net-phy-realtek-disable-MDIO-broadcast.patch b/lede/target/linux/generic/pending-6.12/720-09-net-phy-realtek-disable-MDIO-broadcast.patch index bb20750033..5281e07d48 100644 --- a/lede/target/linux/generic/pending-6.12/720-09-net-phy-realtek-disable-MDIO-broadcast.patch +++ b/lede/target/linux/generic/pending-6.12/720-09-net-phy-realtek-disable-MDIO-broadcast.patch @@ -13,15 +13,21 @@ Signed-off-by: Daniel Golle --- --- a/drivers/net/phy/realtek/realtek_main.c +++ b/drivers/net/phy/realtek/realtek_main.c -@@ -1050,6 +1050,11 @@ static int rtl822xb_config_init(struct p - phydev->host_interfaces) || - phydev->interface == PHY_INTERFACE_MODE_SGMII; +@@ -132,6 +132,7 @@ + #define RTL8221B_PHYCR1 0xa430 + #define RTL8221B_PHYCR1_ALDPS_EN BIT(2) + #define RTL8221B_PHYCR1_ALDPS_XTAL_OFF_EN BIT(12) ++#define RTL8221B_PHYCR1_PHYAD_0_EN BIT(13) -+ /* disable listening on MDIO broadcast address (0) */ -+ ret = phy_clear_bits_mmd(phydev, MDIO_MMD_VEND2, 0xa430, BIT(13)); -+ if (ret < 0) -+ return ret; -+ - /* fill in possible interfaces */ - __assign_bit(PHY_INTERFACE_MODE_2500BASEX, phydev->possible_interfaces, - has_2500); + #define RTL8366RB_POWER_SAVE 0x15 + #define RTL8366RB_POWER_SAVE_ON BIT(12) +@@ -1062,7 +1063,8 @@ static int rtl822x_init_phycr1(struct ph + + return phy_modify_mmd_changed(phydev, MDIO_MMD_VEND2, RTL8221B_PHYCR1, + RTL8221B_PHYCR1_ALDPS_EN | +- RTL8221B_PHYCR1_ALDPS_XTAL_OFF_EN, val); ++ RTL8221B_PHYCR1_ALDPS_XTAL_OFF_EN | ++ RTL8221B_PHYCR1_PHYAD_0_EN, val); + } + + static int rtl822xb_config_init(struct phy_device *phydev) diff --git a/lede/target/linux/generic/pending-6.6/720-04-net-phy-realtek-setup-aldps.patch b/lede/target/linux/generic/pending-6.6/720-04-net-phy-realtek-setup-aldps.patch index b36e54717d..3d3f7f5deb 100644 --- a/lede/target/linux/generic/pending-6.6/720-04-net-phy-realtek-setup-aldps.patch +++ b/lede/target/linux/generic/pending-6.6/720-04-net-phy-realtek-setup-aldps.patch @@ -24,19 +24,68 @@ Signed-off-by: Daniel Golle #define RTL8366RB_POWER_SAVE 0x15 #define RTL8366RB_POWER_SAVE_ON BIT(12) -@@ -1090,6 +1094,15 @@ static int rtl822xb_config_init(struct p +@@ -175,6 +179,10 @@ struct rtl821x_priv { + u32 saved_wolopts; + }; + ++struct rtl822x_priv { ++ bool enable_aldps; ++}; ++ + static int rtl821x_read_page(struct phy_device *phydev) + { + return __phy_read(phydev, RTL821x_PAGE_SELECT); +@@ -1025,6 +1033,18 @@ static int rtl822x_write_mmd(struct phy_ + + static int rtl822x_probe(struct phy_device *phydev) + { ++ struct device *dev = &phydev->mdio.dev; ++ struct rtl822x_priv *priv; ++ ++ priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL); ++ if (!priv) ++ return -ENOMEM; ++ ++ priv->enable_aldps = of_property_read_bool(dev->of_node, ++ "realtek,aldps-enable"); ++ ++ phydev->priv = priv; ++ + if (IS_ENABLED(CONFIG_REALTEK_PHY_HWMON) && + phydev->phy_id != RTL_GENERIC_PHYID) + return rtl822x_hwmon_init(phydev); +@@ -1032,6 +1052,19 @@ static int rtl822x_probe(struct phy_devi + return 0; + } + ++static int rtl822x_init_phycr1(struct phy_device *phydev, bool no_aldps) ++{ ++ struct rtl822x_priv *priv = phydev->priv; ++ u16 val = 0; ++ ++ if (priv->enable_aldps && !no_aldps) ++ val = RTL8221B_PHYCR1_ALDPS_EN | RTL8221B_PHYCR1_ALDPS_XTAL_OFF_EN; ++ ++ return phy_modify_mmd_changed(phydev, MDIO_MMD_VEND2, RTL8221B_PHYCR1, ++ RTL8221B_PHYCR1_ALDPS_EN | ++ RTL8221B_PHYCR1_ALDPS_XTAL_OFF_EN, val); ++} ++ + static int rtl822xb_config_init(struct phy_device *phydev) + { + bool has_2500, has_sgmii; +@@ -1108,6 +1141,14 @@ static int rtl822xb_config_init(struct p if (ret < 0) return ret; -+ if (of_property_read_bool(phydev->mdio.dev.of_node, "realtek,aldps-enable")) -+ ret = phy_set_bits_mmd(phydev, MDIO_MMD_VEND1, RTL8221B_PHYCR1, -+ RTL8221B_PHYCR1_ALDPS_EN | RTL8221B_PHYCR1_ALDPS_XTAL_OFF_EN); -+ else -+ ret = phy_clear_bits_mmd(phydev, MDIO_MMD_VEND1, RTL8221B_PHYCR1, -+ RTL8221B_PHYCR1_ALDPS_EN | RTL8221B_PHYCR1_ALDPS_XTAL_OFF_EN); ++ ret = phy_write_mmd(phydev, MDIO_MMD_VEND1, 0x6f11, 0x8020); + if (ret < 0) + return ret; + - /* Disable SGMII AN */ - ret = phy_write_mmd(phydev, MDIO_MMD_VEND1, 0x7588, 0x2); - if (ret < 0) ++ ret = rtl822x_init_phycr1(phydev, false); ++ if (ret < 0) ++ return ret; ++ + return 0; + } + diff --git a/lede/target/linux/generic/pending-6.6/720-08-net-phy-realtek-work-around-broken-serdes.patch b/lede/target/linux/generic/pending-6.6/720-08-net-phy-realtek-work-around-broken-serdes.patch deleted file mode 100644 index 1749a74e36..0000000000 --- a/lede/target/linux/generic/pending-6.6/720-08-net-phy-realtek-work-around-broken-serdes.patch +++ /dev/null @@ -1,58 +0,0 @@ -From: Daniel Golle -Date: Thu, 30 Jan 2025 05:33:12 +0000 -Subject: [PATCH] net: phy: realtek: work around broken SerDes - -For still unknown reasons the SerDes init sequence may sometimes -time out because a self-clearing bit never clears, indicating the -PHY has entered an unrecoverable error state. - -Work-around the issue by triggering a hardware reset and retry the -setup sequence while warning the user that this has happened. -This is really more of a work-around than a fix, and should be -replaced by a better actual fix in future (hopefully). - -Signed-off-by: Daniel Golle ---- ---- a/drivers/net/phy/realtek/realtek_main.c -+++ b/drivers/net/phy/realtek/realtek_main.c -@@ -1124,6 +1124,22 @@ static int rtl822xb_config_init(struct p - return 0; - } - -+static int rtl822xb_config_init_war(struct phy_device *phydev) -+{ -+ int ret; -+ -+ ret = rtl822xb_config_init(phydev); -+ -+ if (ret == -ETIMEDOUT) { -+ phydev_warn(phydev, "SerDes setup timed out, retrying\n"); -+ phy_device_reset(phydev, 1); -+ phy_device_reset(phydev, 0); -+ ret = rtl822xb_config_init(phydev); -+ } -+ -+ return ret; -+} -+ - static int rtl822xb_get_rate_matching(struct phy_device *phydev, - phy_interface_t iface) - { -@@ -1813,7 +1829,7 @@ static struct phy_driver realtek_drvs[] - .handle_interrupt = rtl8221b_handle_interrupt, - .soft_reset = genphy_soft_reset, - .probe = rtl822x_probe, -- .config_init = rtl822xb_config_init, -+ .config_init = rtl822xb_config_init_war, - .get_rate_matching = rtl822xb_get_rate_matching, - .get_features = rtl822x_c45_get_features, - .config_aneg = rtl822x_c45_config_aneg, -@@ -1843,7 +1859,7 @@ static struct phy_driver realtek_drvs[] - .handle_interrupt = rtl8221b_handle_interrupt, - .soft_reset = genphy_soft_reset, - .probe = rtl822x_probe, -- .config_init = rtl822xb_config_init, -+ .config_init = rtl822xb_config_init_war, - .get_rate_matching = rtl822xb_get_rate_matching, - .get_features = rtl822x_c45_get_features, - .config_aneg = rtl822x_c45_config_aneg, diff --git a/lede/target/linux/generic/pending-6.6/720-09-net-phy-realtek-disable-MDIO-broadcast.patch b/lede/target/linux/generic/pending-6.6/720-09-net-phy-realtek-disable-MDIO-broadcast.patch index bb20750033..5281e07d48 100644 --- a/lede/target/linux/generic/pending-6.6/720-09-net-phy-realtek-disable-MDIO-broadcast.patch +++ b/lede/target/linux/generic/pending-6.6/720-09-net-phy-realtek-disable-MDIO-broadcast.patch @@ -13,15 +13,21 @@ Signed-off-by: Daniel Golle --- --- a/drivers/net/phy/realtek/realtek_main.c +++ b/drivers/net/phy/realtek/realtek_main.c -@@ -1050,6 +1050,11 @@ static int rtl822xb_config_init(struct p - phydev->host_interfaces) || - phydev->interface == PHY_INTERFACE_MODE_SGMII; +@@ -132,6 +132,7 @@ + #define RTL8221B_PHYCR1 0xa430 + #define RTL8221B_PHYCR1_ALDPS_EN BIT(2) + #define RTL8221B_PHYCR1_ALDPS_XTAL_OFF_EN BIT(12) ++#define RTL8221B_PHYCR1_PHYAD_0_EN BIT(13) -+ /* disable listening on MDIO broadcast address (0) */ -+ ret = phy_clear_bits_mmd(phydev, MDIO_MMD_VEND2, 0xa430, BIT(13)); -+ if (ret < 0) -+ return ret; -+ - /* fill in possible interfaces */ - __assign_bit(PHY_INTERFACE_MODE_2500BASEX, phydev->possible_interfaces, - has_2500); + #define RTL8366RB_POWER_SAVE 0x15 + #define RTL8366RB_POWER_SAVE_ON BIT(12) +@@ -1062,7 +1063,8 @@ static int rtl822x_init_phycr1(struct ph + + return phy_modify_mmd_changed(phydev, MDIO_MMD_VEND2, RTL8221B_PHYCR1, + RTL8221B_PHYCR1_ALDPS_EN | +- RTL8221B_PHYCR1_ALDPS_XTAL_OFF_EN, val); ++ RTL8221B_PHYCR1_ALDPS_XTAL_OFF_EN | ++ RTL8221B_PHYCR1_PHYAD_0_EN, val); + } + + static int rtl822xb_config_init(struct phy_device *phydev) diff --git a/lede/target/linux/mediatek/patches-6.12/840-cpufreq-add-support-to-adjust-cpu-volt-by-efuse-cali.patch b/lede/target/linux/mediatek/patches-6.12/840-cpufreq-add-support-to-adjust-cpu-volt-by-efuse-cali.patch new file mode 100644 index 0000000000..9aebab6689 --- /dev/null +++ b/lede/target/linux/mediatek/patches-6.12/840-cpufreq-add-support-to-adjust-cpu-volt-by-efuse-cali.patch @@ -0,0 +1,106 @@ +From fbb1d181782f990c0ac5f39d4aa9eda5c39cb442 Mon Sep 17 00:00:00 2001 +From: Sam Shih +Date: Tue, 4 Mar 2025 19:28:14 +0800 +Subject: [PATCH 1/2] cpufreq: add support to adjust cpu volt by efuse + calibration data + +--- + drivers/cpufreq/mediatek-cpufreq.c | 81 ++++++++++++++++++++++++++++-- + 1 file changed, 76 insertions(+), 5 deletions(-) + +--- a/drivers/cpufreq/mediatek-cpufreq.c ++++ b/drivers/cpufreq/mediatek-cpufreq.c +@@ -15,14 +15,26 @@ + #include + #include + #include ++#include ++ ++struct mtk_cpufreq_corr_data { ++ unsigned int freq; ++ unsigned int vbase; ++ unsigned int vscale; ++ unsigned int vmax; ++}; + + struct mtk_cpufreq_platform_data { ++ /* cpufreq correction data specification */ ++ const struct mtk_cpufreq_corr_data *corr_data; + int min_volt_shift; + int max_volt_shift; + int proc_max_volt; + int sram_min_volt; + int sram_max_volt; + bool ccifreq_supported; ++ /* whether voltage correction via nvmem is supported */ ++ bool nvmem_volt_corr; + }; + + /* +@@ -197,6 +209,50 @@ static bool is_ccifreq_ready(struct mtk_ + return true; + } + ++static int mtk_cpufreq_nvmem_volt_corr(struct mtk_cpu_dvfs_info *info, ++ struct cpufreq_policy *policy) ++{ ++ const struct mtk_cpufreq_corr_data *corr_data; ++ unsigned int target_voltage; ++ struct nvmem_cell *cell; ++ unsigned int cal_data; ++ const u8 *buf; ++ size_t len; ++ int i; ++ ++ cell = nvmem_cell_get(info->cpu_dev, "calibration-data"); ++ if (IS_ERR(cell)) ++ return PTR_ERR(cell); ++ ++ buf = nvmem_cell_read(cell, &len); ++ nvmem_cell_put(cell); ++ if (IS_ERR(buf)) ++ return PTR_ERR(buf); ++ ++ cal_data = buf[0] & 0x1f; ++ pr_debug("%s: read vbinning value: %d\n", __func__, cal_data); ++ kfree(buf); ++ if (!info->soc_data->corr_data) { ++ pr_err("voltage correction data not found\n"); ++ return -EINVAL; ++ } ++ ++ corr_data = &info->soc_data->corr_data[0]; ++ for (i = 0 ; i < corr_data->freq ; i++) { ++ target_voltage = corr_data->vbase + cal_data * corr_data->vscale; ++ if (target_voltage > corr_data->vmax) { ++ pr_warn("freq %u exceeds max voltage\n", corr_data->freq); ++ pr_warn("force update voltage to %u\n", corr_data->vmax); ++ target_voltage = corr_data->vmax; ++ } ++ dev_pm_opp_remove(info->cpu_dev, corr_data->freq); ++ dev_pm_opp_add(info->cpu_dev, corr_data->freq, target_voltage); ++ corr_data = &info->soc_data->corr_data[i + 1]; ++ } ++ ++ return 0; ++} ++ + static int mtk_cpufreq_set_target(struct cpufreq_policy *policy, + unsigned int index) + { +@@ -584,6 +640,15 @@ static int mtk_cpufreq_init(struct cpufr + return -EINVAL; + } + ++ if (info->soc_data->nvmem_volt_corr) { ++ ret = mtk_cpufreq_nvmem_volt_corr(info, policy); ++ if (ret) { ++ pr_err("failed to correction voltage for cpu%d: %d\n", ++ policy->cpu, ret); ++ return ret; ++ } ++ } ++ + ret = dev_pm_opp_init_cpufreq_table(info->cpu_dev, &freq_table); + if (ret) { + dev_err(info->cpu_dev, diff --git a/lede/target/linux/mediatek/patches-6.12/841-cpufreq-add-cpu-volt-correction-support-for-mt7988.patch b/lede/target/linux/mediatek/patches-6.12/841-cpufreq-add-cpu-volt-correction-support-for-mt7988.patch new file mode 100644 index 0000000000..43397d8529 --- /dev/null +++ b/lede/target/linux/mediatek/patches-6.12/841-cpufreq-add-cpu-volt-correction-support-for-mt7988.patch @@ -0,0 +1,33 @@ +--- a/drivers/cpufreq/mediatek-cpufreq.c ++++ b/drivers/cpufreq/mediatek-cpufreq.c +@@ -741,6 +741,16 @@ static struct platform_driver mtk_cpufre + .probe = mtk_cpufreq_probe, + }; + ++struct mtk_cpufreq_corr_data mt7988_volt_corr_data[] = { ++ { ++ .freq = 1800000000, ++ .vbase = 850000, ++ .vscale = 10000, ++ .vmax = 1120000, ++ }, ++ { } /* sentinel */ ++}; ++ + static const struct mtk_cpufreq_platform_data mt2701_platform_data = { + .min_volt_shift = 100000, + .max_volt_shift = 200000, +@@ -769,10 +779,12 @@ static const struct mtk_cpufreq_platform + static const struct mtk_cpufreq_platform_data mt7988_platform_data = { + .min_volt_shift = 100000, + .max_volt_shift = 200000, +- .proc_max_volt = 900000, ++ .proc_max_volt = 1120000, + .sram_min_volt = 0, + .sram_max_volt = 1150000, + .ccifreq_supported = true, ++ .nvmem_volt_corr = 1, ++ .corr_data = mt7988_volt_corr_data, + }; + + static const struct mtk_cpufreq_platform_data mt8183_platform_data = { diff --git a/lede/target/linux/mediatek/patches-6.12/842-mediatek-enable-using-efuse-cali-data-for-mt7988-cpu-volt.patch b/lede/target/linux/mediatek/patches-6.12/842-mediatek-enable-using-efuse-cali-data-for-mt7988-cpu-volt.patch new file mode 100644 index 0000000000..30115a2358 --- /dev/null +++ b/lede/target/linux/mediatek/patches-6.12/842-mediatek-enable-using-efuse-cali-data-for-mt7988-cpu-volt.patch @@ -0,0 +1,48 @@ +From c776eb44070d009375559d8c6eb8790edfe129a9 Mon Sep 17 00:00:00 2001 +From: Sam Shih +Date: Tue, 4 Mar 2025 19:35:14 +0800 +Subject: [PATCH 2/2] cpufreq: mt7988: enable using efuse calibration data for + adjusting cpu volt + +--- + arch/arm64/boot/dts/mediatek/mt7988a.dtsi | 8 ++++++++ + 1 file changed, 8 insertions(+) + +--- a/arch/arm64/boot/dts/mediatek/mt7988a.dtsi ++++ b/arch/arm64/boot/dts/mediatek/mt7988a.dtsi +@@ -55,6 +55,8 @@ + <&topckgen CLK_TOP_XTAL>; + clock-names = "cpu", "intermediate"; + operating-points-v2 = <&cluster0_opp>; ++ nvmem-cells = <&cpufreq_calibration>; ++ nvmem-cell-names = "calibration-data"; + mediatek,cci = <&cci>; + }; + +@@ -67,6 +69,8 @@ + <&topckgen CLK_TOP_XTAL>; + clock-names = "cpu", "intermediate"; + operating-points-v2 = <&cluster0_opp>; ++ nvmem-cells = <&cpufreq_calibration>; ++ nvmem-cell-names = "calibration-data"; + mediatek,cci = <&cci>; + }; + +@@ -79,6 +83,8 @@ + <&topckgen CLK_TOP_XTAL>; + clock-names = "cpu", "intermediate"; + operating-points-v2 = <&cluster0_opp>; ++ nvmem-cells = <&cpufreq_calibration>; ++ nvmem-cell-names = "calibration-data"; + mediatek,cci = <&cci>; + }; + +@@ -91,6 +97,8 @@ + <&topckgen CLK_TOP_XTAL>; + clock-names = "cpu", "intermediate"; + operating-points-v2 = <&cluster0_opp>; ++ nvmem-cells = <&cpufreq_calibration>; ++ nvmem-cell-names = "calibration-data"; + mediatek,cci = <&cci>; + }; + diff --git a/lede/target/linux/mediatek/patches-6.12/843-cpufreq-add-support-to-fix-voltage-cpu.patch b/lede/target/linux/mediatek/patches-6.12/843-cpufreq-add-support-to-fix-voltage-cpu.patch new file mode 100644 index 0000000000..b9f67c9faf --- /dev/null +++ b/lede/target/linux/mediatek/patches-6.12/843-cpufreq-add-support-to-fix-voltage-cpu.patch @@ -0,0 +1,21 @@ +--- a/drivers/cpufreq/mediatek-cpufreq.c ++++ b/drivers/cpufreq/mediatek-cpufreq.c +@@ -35,6 +35,8 @@ struct mtk_cpufreq_platform_data { + bool ccifreq_supported; + /* whether voltage correction via nvmem is supported */ + bool nvmem_volt_corr; ++ /* Flag indicating whether the processor voltage is fixed */ ++ bool proc_fixed_volt; + }; + + /* +@@ -176,6 +178,9 @@ static int mtk_cpufreq_set_voltage(struc + const struct mtk_cpufreq_platform_data *soc_data = info->soc_data; + int ret; + ++ if (soc_data->proc_fixed_volt) ++ return 0; ++ + if (info->need_voltage_tracking) + ret = mtk_cpufreq_voltage_tracking(info, vproc); + else diff --git a/lede/target/linux/mediatek/patches-6.12/844-cpufreq-mediatek-Add-support-for-MT7987.patch b/lede/target/linux/mediatek/patches-6.12/844-cpufreq-mediatek-Add-support-for-MT7987.patch new file mode 100644 index 0000000000..e0c8c47400 --- /dev/null +++ b/lede/target/linux/mediatek/patches-6.12/844-cpufreq-mediatek-Add-support-for-MT7987.patch @@ -0,0 +1,23 @@ +--- a/drivers/cpufreq/mediatek-cpufreq.c ++++ b/drivers/cpufreq/mediatek-cpufreq.c +@@ -781,6 +781,12 @@ static const struct mtk_cpufreq_platform + .ccifreq_supported = false, + }; + ++static const struct mtk_cpufreq_platform_data mt7987_platform_data = { ++ .proc_max_volt = 1023000, ++ .ccifreq_supported = false, ++ .proc_fixed_volt = true, ++}; ++ + static const struct mtk_cpufreq_platform_data mt7988_platform_data = { + .min_volt_shift = 100000, + .max_volt_shift = 200000, +@@ -825,6 +831,7 @@ static const struct of_device_id mtk_cpu + { .compatible = "mediatek,mt2712", .data = &mt2701_platform_data }, + { .compatible = "mediatek,mt7622", .data = &mt7622_platform_data }, + { .compatible = "mediatek,mt7623", .data = &mt7623_platform_data }, ++ { .compatible = "mediatek,mt7987", .data = &mt7987_platform_data }, + { .compatible = "mediatek,mt7988a", .data = &mt7988_platform_data }, + { .compatible = "mediatek,mt7988d", .data = &mt7988_platform_data }, + { .compatible = "mediatek,mt8167", .data = &mt8516_platform_data }, diff --git a/lede/target/linux/mediatek/patches-6.12/965-dts-mt7988a-add-trng-support.patch b/lede/target/linux/mediatek/patches-6.12/965-dts-mt7988a-add-trng-support.patch index 9c0b692418..77bd503437 100644 --- a/lede/target/linux/mediatek/patches-6.12/965-dts-mt7988a-add-trng-support.patch +++ b/lede/target/linux/mediatek/patches-6.12/965-dts-mt7988a-add-trng-support.patch @@ -8,7 +8,7 @@ Signed-off-by: Marcos Alano --- --- a/arch/arm64/boot/dts/mediatek/mt7988a.dtsi +++ b/arch/arm64/boot/dts/mediatek/mt7988a.dtsi -@@ -1319,4 +1319,8 @@ +@@ -1327,4 +1327,8 @@ , ; }; diff --git a/lede/target/linux/rockchip/files/arch/arm64/boot/dts/rockchip/rk3399-rock-4se.dts b/lede/target/linux/rockchip/files/arch/arm64/boot/dts/rockchip/rk3399-rock-4se.dts new file mode 100644 index 0000000000..a8b8d4acc3 --- /dev/null +++ b/lede/target/linux/rockchip/files/arch/arm64/boot/dts/rockchip/rk3399-rock-4se.dts @@ -0,0 +1,50 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* + * Copyright (c) 2019 Akash Gajjar + * Copyright (c) 2019 Pragnesh Patel + */ + +/dts-v1/; +#include "rk3399-t.dtsi" +#include "rk3399-rock-pi-4.dtsi" + +/ { + model = "Radxa ROCK 4SE"; + compatible = "radxa,rock-4se", "rockchip,rk3399"; + + aliases { + mmc2 = &sdio0; + }; +}; + +&sdio0 { + status = "okay"; + + brcmf: wifi@1 { + compatible = "brcm,bcm4329-fmac"; + reg = <1>; + interrupt-parent = <&gpio0>; + interrupts = ; + interrupt-names = "host-wake"; + pinctrl-names = "default"; + pinctrl-0 = <&wifi_host_wake_l>; + }; +}; + +&uart0 { + status = "okay"; + + bluetooth { + compatible = "brcm,bcm4345c5"; + clocks = <&rk808 1>; + clock-names = "lpo"; + device-wakeup-gpios = <&gpio2 RK_PD3 GPIO_ACTIVE_HIGH>; + host-wakeup-gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_HIGH>; + shutdown-gpios = <&gpio0 RK_PB1 GPIO_ACTIVE_HIGH>; + max-speed = <1500000>; + pinctrl-names = "default"; + pinctrl-0 = <&bt_host_wake_l &bt_wake_l &bt_enable_h>; + vbat-supply = <&vcc3v3_sys>; + vddio-supply = <&vcc_1v8>; + }; +}; diff --git a/lede/target/linux/rockchip/files/arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5.dts b/lede/target/linux/rockchip/files/arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5.dts index ff93acacda..ea56f99bda 100644 --- a/lede/target/linux/rockchip/files/arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5.dts +++ b/lede/target/linux/rockchip/files/arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5.dts @@ -121,16 +121,6 @@ vin-supply = <&vcc_5v0_sys>; }; - vcc_3v3_rtc_s5: regulator-vcc-3v3-rtc-s5 { - compatible = "regulator-fixed"; - regulator-name = "vcc_3v3_rtc_s5"; - regulator-boot-on; - regulator-always-on; - regulator-min-microvolt = <3300000>; - regulator-max-microvolt = <3300000>; - vin-supply = <&vcc_5v0_sys>; - }; - vcc_3v3_s0: regulator-vcc-3v3-s0 { compatible = "regulator-fixed"; regulator-name = "vcc_3v3_s0"; @@ -706,8 +696,8 @@ }; headphone { - hp_det: hp-det { - rockchip,pins = <0 RK_PD3 RK_FUNC_GPIO &pcfg_pull_up>; + hp_det_l: hp-det-l { + rockchip,pins = <4 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>; }; }; @@ -778,6 +768,11 @@ }; }; +&saradc { + vref-supply = <&vcca_1v8_s0>; + status = "okay"; +}; + &sdhci { bus-width = <8>; full-pwr-cycle-in-suspend; diff --git a/lede/target/linux/rockchip/files/arch/arm64/boot/dts/rockchip/rk3576-nanopi-m5.dts b/lede/target/linux/rockchip/files/arch/arm64/boot/dts/rockchip/rk3576-nanopi-m5.dts index 0b98f9e874..de4f6b61a8 100644 --- a/lede/target/linux/rockchip/files/arch/arm64/boot/dts/rockchip/rk3576-nanopi-m5.dts +++ b/lede/target/linux/rockchip/files/arch/arm64/boot/dts/rockchip/rk3576-nanopi-m5.dts @@ -206,25 +206,27 @@ pinctrl-names = "default"; pinctrl-0 = <&hp_det_l>; + simple-audio-card,bitclock-master = <&masterdai>; simple-audio-card,format = "i2s"; simple-audio-card,hp-det-gpios = <&gpio2 RK_PD6 GPIO_ACTIVE_LOW>; simple-audio-card,mclk-fs = <256>; - simple-audio-card,name = "realtek,rt5616-codec"; + simple-audio-card,name = "Onboard Analog RT5616"; simple-audio-card,routing = "Headphones", "HPOL", "Headphones", "HPOR", "IN1P", "Microphone Jack"; simple-audio-card,widgets = - "Headphone", "Headphone Jack", + "Headphone", "Headphones", "Microphone", "Microphone Jack"; simple-audio-card,codec { sound-dai = <&rt5616>; }; - simple-audio-card,cpu { + masterdai: simple-audio-card,cpu { sound-dai = <&sai2>; + system-clock-frequency = <12288000>; }; }; }; @@ -329,6 +331,10 @@ }; }; +&hdmi_sound { + status = "okay"; +}; + &hdptxphy { status = "okay"; }; @@ -736,6 +742,8 @@ assigned-clock-rates = <12288000>; clocks = <&cru CLK_SAI2_MCLKOUT>; clock-names = "mclk"; + pinctrl-0 = <&sai2m0_mclk>; + pinctrl-names = "default"; #sound-dai-cells = <0>; }; }; @@ -853,6 +861,10 @@ status = "okay"; }; +&sai6 { + status = "okay"; +}; + &saradc { vref-supply = <&vcca_1v8_s0>; status = "okay"; diff --git a/lede/target/linux/rockchip/files/arch/arm64/boot/dts/rockchip/rk3576-rock-4d.dts b/lede/target/linux/rockchip/files/arch/arm64/boot/dts/rockchip/rk3576-rock-4d.dts index 7023dc326d..3af3348789 100644 --- a/lede/target/linux/rockchip/files/arch/arm64/boot/dts/rockchip/rk3576-rock-4d.dts +++ b/lede/target/linux/rockchip/files/arch/arm64/boot/dts/rockchip/rk3576-rock-4d.dts @@ -742,7 +742,6 @@ }; usb_otg_pwren: usb-otg-pwren { rockchip,pins = <2 RK_PD2 RK_FUNC_GPIO &pcfg_pull_down>; - }; }; @@ -765,16 +764,12 @@ cap-mmc-highspeed; cap-sd-highspeed; disable-wp; - max-frequency = <200000000>; - no-sdio; - no-mmc; sd-uhs-sdr104; vmmc-supply = <&vcc_3v3_s3>; vqmmc-supply = <&vccio_sd_s0>; status = "okay"; }; - &sfc0 { pinctrl-names = "default"; pinctrl-0 = <&fspi0_pins &fspi0_csn0>; @@ -813,10 +808,6 @@ status = "okay"; }; -&ufshc { - status = "okay"; -}; - &usbdp_phy { status = "okay"; }; diff --git a/lede/target/linux/rockchip/image/armv8.mk b/lede/target/linux/rockchip/image/armv8.mk index ccaaaf50e2..c695a8b4dc 100644 --- a/lede/target/linux/rockchip/image/armv8.mk +++ b/lede/target/linux/rockchip/image/armv8.mk @@ -543,6 +543,15 @@ define Device/radxa_rock-4d endef TARGET_DEVICES += radxa_rock-4d +define Device/radxa_rock-4se + DEVICE_VENDOR := Radxa + DEVICE_MODEL := ROCK 4SE + SOC := rk3399 + IMAGE/sysupgrade.img.gz := boot-common | boot-script | pine64-img | gzip | append-metadata + UBOOT_DEVICE_NAME := rock-4se-rk3399 +endef +TARGET_DEVICES += radxa_rock-4se + define Device/radxa_rock-5a DEVICE_VENDOR := Radxa DEVICE_MODEL := ROCK 5A diff --git a/lede/target/linux/rockchip/image/mmc.bootscript b/lede/target/linux/rockchip/image/mmc.bootscript index 0d2304e456..2ff29678ce 100644 --- a/lede/target/linux/rockchip/image/mmc.bootscript +++ b/lede/target/linux/rockchip/image/mmc.bootscript @@ -1,18 +1,20 @@ part uuid mmc ${devnum}:2 uuid -if test $stdout = 'serial@2ad40000' ; -then serial_addr=',0x2ad40000'; serial_port='ttyS0'; -elif test $stdout = 'serial@fe660000' ; -then serial_addr=',0xfe660000'; serial_port='ttyS2'; -elif test $stdout = 'serial@feb50000' ; -then serial_addr=',0xfeb50000'; serial_port='ttyS2'; -elif test $stdout = 'serial@ff130000' ; -then serial_addr=',0xff130000'; serial_port='ttyS2'; -elif test $stdout = 'serial@ff1a0000' ; -then serial_addr=',0xff1a0000'; serial_port='ttyS2'; -elif test $stdout = 'serial@ff9f0000' ; -then serial_addr=',0xff9f0000'; serial_port='ttyS0'; -fi; +if test $soc = 'rk3308'; then + serial_addr=',0xff0c0000'; serial_port='ttyS2'; +elif test $soc = 'rk3328'; then + serial_addr=',0xff130000'; serial_port='ttyS2'; +elif test $soc = 'rk3399'; then + serial_addr=',0xff1a0000'; serial_port='ttyS2'; +elif test $soc = 'rk3528'; then + serial_addr=',0xff9f0000'; serial_port='ttyS0'; +elif test $soc = 'rk3568'; then + serial_addr=',0xfe660000'; serial_port='ttyS2'; +elif test $soc = 'rk3576'; then + serial_addr=',0x2ad40000'; serial_port='ttyS0'; +elif test $soc = 'rk3588'; then + serial_addr=',0xfeb50000'; serial_port='ttyS2'; +fi setenv bootargs "console=${serial_port},1500000 earlycon=uart8250,mmio32${serial_addr} root=PARTUUID=${uuid} rw rootwait"; diff --git a/mihomo/go.mod b/mihomo/go.mod index b8ac2a12f6..33bb2cd096 100644 --- a/mihomo/go.mod +++ b/mihomo/go.mod @@ -26,14 +26,14 @@ require ( github.com/metacubex/quic-go v0.59.1-0.20260112033758-aa29579f2001 github.com/metacubex/randv2 v0.2.0 github.com/metacubex/restls-client-go v0.1.7 - github.com/metacubex/sing v0.5.6 - github.com/metacubex/sing-mux v0.3.4 + github.com/metacubex/sing v0.5.7 + github.com/metacubex/sing-mux v0.3.5 github.com/metacubex/sing-quic v0.0.0-20260112044712-65d17608159e github.com/metacubex/sing-shadowsocks v0.2.12 github.com/metacubex/sing-shadowsocks2 v0.2.7 github.com/metacubex/sing-shadowtls v0.0.0-20250503063515-5d9f966d17a2 github.com/metacubex/sing-tun v0.4.12 - github.com/metacubex/sing-vmess v0.2.4 + github.com/metacubex/sing-vmess v0.2.5 github.com/metacubex/sing-wireguard v0.0.0-20250503063753-2dc62acc626f github.com/metacubex/smux v0.0.0-20260105030934-d0c8756d3141 github.com/metacubex/tfo-go v0.0.0-20251130171125-413e892ac443 diff --git a/mihomo/go.sum b/mihomo/go.sum index 5c6868afae..805085a3b9 100644 --- a/mihomo/go.sum +++ b/mihomo/go.sum @@ -115,10 +115,10 @@ github.com/metacubex/randv2 v0.2.0 h1:uP38uBvV2SxYfLj53kuvAjbND4RUDfFJjwr4UigMiL github.com/metacubex/randv2 v0.2.0/go.mod h1:kFi2SzrQ5WuneuoLLCMkABtiBu6VRrMrWFqSPyj2cxY= github.com/metacubex/restls-client-go v0.1.7 h1:eCwiXCTQb5WJu9IlgYvDBA1OgrINv58dEe7hcN5H15k= github.com/metacubex/restls-client-go v0.1.7/go.mod h1:BN/U52vPw7j8VTSh2vleD/MnmVKCov84mS5VcjVHH4g= -github.com/metacubex/sing v0.5.6 h1:mEPDCadsCj3DB8gn+t/EtposlYuALEkExa/LUguw6/c= -github.com/metacubex/sing v0.5.6/go.mod h1:ypf0mjwlZm0sKdQSY+yQvmsbWa0hNPtkeqyRMGgoN+w= -github.com/metacubex/sing-mux v0.3.4 h1:tf4r27CIkzaxq9kBlAXQkgMXq2HPp5Mta60Kb4RCZF0= -github.com/metacubex/sing-mux v0.3.4/go.mod h1:SEJfAuykNj/ozbPqngEYqyggwSr81+L7Nu09NRD5mh4= +github.com/metacubex/sing v0.5.7 h1:8OC+fhKFSv/l9ehEhJRaZZAOuthfZo68SteBVLe8QqM= +github.com/metacubex/sing v0.5.7/go.mod h1:ypf0mjwlZm0sKdQSY+yQvmsbWa0hNPtkeqyRMGgoN+w= +github.com/metacubex/sing-mux v0.3.5 h1:UqVN+o62SR8kJaC9/3VfOc5UiVqgVY/ef9WwfGYYkk0= +github.com/metacubex/sing-mux v0.3.5/go.mod h1:8bT7ZKT3clRrJjYc/x5CRYibC1TX/bK73a3r3+2E+Fc= github.com/metacubex/sing-quic v0.0.0-20260112044712-65d17608159e h1:MLxp42z9Jd6LtY2suyawnl24oNzIsFxWc15bNeDIGxA= github.com/metacubex/sing-quic v0.0.0-20260112044712-65d17608159e/go.mod h1:+lgKTd52xAarGtqugALISShyw4KxnoEpYe2u0zJh26w= github.com/metacubex/sing-shadowsocks v0.2.12 h1:Wqzo8bYXrK5aWqxu/TjlTnYZzAKtKsaFQBdr6IHFaBE= @@ -129,8 +129,8 @@ github.com/metacubex/sing-shadowtls v0.0.0-20250503063515-5d9f966d17a2 h1:gXU+MY github.com/metacubex/sing-shadowtls v0.0.0-20250503063515-5d9f966d17a2/go.mod h1:mbfboaXauKJNIHJYxQRa+NJs4JU9NZfkA+I33dS2+9E= github.com/metacubex/sing-tun v0.4.12 h1:LCi+yB7y97X3cHQGdNXQBMQNHAzpP4AWg7YhSLk+LTM= github.com/metacubex/sing-tun v0.4.12/go.mod h1:L/TjQY5JEGy8nvsuYmy/XgMFMCPiF0+AWSFCYfS6r9w= -github.com/metacubex/sing-vmess v0.2.4 h1:Tx6AGgCiEf400E/xyDuYyafsel6sGbR8oF7RkAaus6I= -github.com/metacubex/sing-vmess v0.2.4/go.mod h1:21R5R1u90uUvBQF0owoooEu96/SAYYD56nDrwm6nFaM= +github.com/metacubex/sing-vmess v0.2.5 h1:m9Zt5I27lB9fmLMZfism9sH2LcnAfShZfwSkf6/KJoE= +github.com/metacubex/sing-vmess v0.2.5/go.mod h1:AwtlzUgf8COe9tRYAKqWZ+leDH7p5U98a0ZUpYehl8Q= github.com/metacubex/sing-wireguard v0.0.0-20250503063753-2dc62acc626f h1:Sr/DYKYofKHKc4GF3qkRGNuj6XA6c0eqPgEDN+VAsYU= github.com/metacubex/sing-wireguard v0.0.0-20250503063753-2dc62acc626f/go.mod h1:jpAkVLPnCpGSfNyVmj6Cq4YbuZsFepm/Dc+9BAOcR80= github.com/metacubex/smux v0.0.0-20260105030934-d0c8756d3141 h1:DK2l6m2Fc85H2BhiAPgbJygiWhesPlfGmF+9Vw6ARdk= diff --git a/mihomo/transport/vmess/websocket.go b/mihomo/transport/vmess/websocket.go index 0ee1b3ab2a..085f7dd447 100644 --- a/mihomo/transport/vmess/websocket.go +++ b/mihomo/transport/vmess/websocket.go @@ -42,7 +42,6 @@ type websocketWithEarlyDataConn struct { net.Conn wsWriter N.ExtendedWriter underlay net.Conn - closed bool dialed chan bool cancel context.CancelFunc ctx context.Context @@ -204,7 +203,7 @@ func (wsedc *websocketWithEarlyDataConn) Dial(earlyData []byte) error { } func (wsedc *websocketWithEarlyDataConn) Write(b []byte) (int, error) { - if wsedc.closed { + if wsedc.ctx.Err() != nil { return 0, io.ErrClosedPipe } if wsedc.Conn == nil { @@ -218,7 +217,7 @@ func (wsedc *websocketWithEarlyDataConn) Write(b []byte) (int, error) { } func (wsedc *websocketWithEarlyDataConn) WriteBuffer(buffer *buf.Buffer) error { - if wsedc.closed { + if wsedc.ctx.Err() != nil { return io.ErrClosedPipe } if wsedc.Conn == nil { @@ -232,7 +231,7 @@ func (wsedc *websocketWithEarlyDataConn) WriteBuffer(buffer *buf.Buffer) error { } func (wsedc *websocketWithEarlyDataConn) Read(b []byte) (int, error) { - if wsedc.closed { + if wsedc.ctx.Err() != nil { return 0, io.ErrClosedPipe } if wsedc.Conn == nil { @@ -246,7 +245,6 @@ func (wsedc *websocketWithEarlyDataConn) Read(b []byte) (int, error) { } func (wsedc *websocketWithEarlyDataConn) Close() error { - wsedc.closed = true wsedc.cancel() if wsedc.Conn == nil { // is dialing or not dialed return wsedc.underlay.Close() diff --git a/openwrt-packages/luci-app-amlogic/Makefile b/openwrt-packages/luci-app-amlogic/Makefile index 383682bb0e..656c6c12df 100644 --- a/openwrt-packages/luci-app-amlogic/Makefile +++ b/openwrt-packages/luci-app-amlogic/Makefile @@ -16,7 +16,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-amlogic -PKG_VERSION:=3.1.282 +PKG_VERSION:=3.1.283 PKG_RELEASE:=1 PKG_LICENSE:=GPL-2.0 License diff --git a/openwrt-packages/luci-app-amlogic/root/usr/share/amlogic/amlogic_check_plugin.sh b/openwrt-packages/luci-app-amlogic/root/usr/share/amlogic/amlogic_check_plugin.sh index dfaeec3066..5efc3822c8 100755 --- a/openwrt-packages/luci-app-amlogic/root/usr/share/amlogic/amlogic_check_plugin.sh +++ b/openwrt-packages/luci-app-amlogic/root/usr/share/amlogic/amlogic_check_plugin.sh @@ -116,7 +116,7 @@ else # Intelligent File Discovery plugin_file_name="" - lang_file_name="" + lang_file_list="" # Method 1: Use GitHub API if 'jq' is installed (Preferred Method) if command -v jq >/dev/null 2>&1; then @@ -129,7 +129,7 @@ else if [[ -n "${asset_list}" ]]; then # Discover exact filenames using regular expressions from the asset list plugin_file_name="$(echo "${asset_list}" | tr ' ' '\n' | grep -oE "^luci-app-amlogic.*${package_manager}$" | head -n 1)" - lang_file_name="$(echo "${asset_list}" | tr ' ' '\n' | grep -oE "^luci-i18n-amlogic-zh-cn.*${package_manager}$" | head -n 1)" + lang_file_list=($(echo "${asset_list}" | tr ' ' '\n' | grep -oE "^luci-i18n-amlogic.*${package_manager}$")) else tolog "Warning: Failed to fetch data from GitHub API." "1" fi @@ -138,29 +138,26 @@ else fi # Validation and Download - if [[ -z "${plugin_file_name}" || -z "${lang_file_name}" ]]; then + if [[ -z "${plugin_file_name}" || "${#lang_file_list[@]}" -eq "0" ]]; then tolog "02.03.2 Could not discover plugin(.${package_manager}) in the release. Aborting." "1" fi tolog "Found plugin file: ${plugin_file_name}" - tolog "Found language file: ${lang_file_name}" - - plugin_full_url="${download_repo}/${latest_version}/${plugin_file_name}" - lang_full_url="${download_repo}/${latest_version}/${lang_file_name}" - - # Download the language pack - tolog "02.04 Downloading language pack..." - curl -fsSL "${lang_full_url}" -o "${TMP_CHECK_DIR}/${lang_file_name}" - if [[ "${?}" -ne "0" ]]; then - tolog "02.04 Language pack download failed." "1" - fi + tolog "Found language file: $(echo ${lang_file_list[@]} | xargs)" # Download the main plugin file - tolog "02.05 Downloading main plugin..." + plugin_full_url="${download_repo}/${latest_version}/${plugin_file_name}" + tolog "02.04 Downloading main plugin..." curl -fsSL "${plugin_full_url}" -o "${TMP_CHECK_DIR}/${plugin_file_name}" - if [[ "${?}" -ne "0" ]]; then - tolog "02.05 Plugin download failed." "1" - fi + [[ "${?}" -ne "0" ]] && tolog "02.04 Plugin [ ${plugin_file_name} ] download failed." "1" + + # Download language packs + for langfile in "${lang_file_list[@]}"; do + lang_full_url="${download_repo}/${latest_version}/${langfile}" + tolog "02.05 Downloading language pack [ ${langfile} ]..." + curl -fsSL "${lang_full_url}" -o "${TMP_CHECK_DIR}/${langfile}" + [[ "${?}" -ne "0" ]] && tolog "02.05 Language pack [ ${langfile} ] download failed." "1" + done sync && sleep 2 fi @@ -168,7 +165,6 @@ fi tolog "03. The plug is ready, you can update." sleep 2 -#echo 'Update' >$START_LOG tolog ' Latest version: '${latest_version}'' "1" exit 0 diff --git a/openwrt-packages/luci-app-ddns-go/Makefile b/openwrt-packages/luci-app-ddns-go/Makefile index 1ce97cce5a..a2b1ac398f 100644 --- a/openwrt-packages/luci-app-ddns-go/Makefile +++ b/openwrt-packages/luci-app-ddns-go/Makefile @@ -1,14 +1,14 @@ # SPDX-License-Identifier: GPL-3.0-only # -# Copyright (C) 2021-2025 sirpdboy +# Copyright (C) 2021-2026 sirpdboy # https://github.com/sirpdboy/luci-app-ddns-go # This is free software, licensed under the Apache License, Version 2.0 . # include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-ddns-go -PKG_VERSION:=1.6.4 -PKG_RELEASE:=20251106 +PKG_VERSION:=1.6.5 +PKG_RELEASE:=20260121 PKG_MAINTAINER:=sirpdboy PKG_CONFIG_DEPENDS:= diff --git a/openwrt-packages/luci-app-ddns-go/htdocs/luci-static/resources/view/ddns-go/config.js b/openwrt-packages/luci-app-ddns-go/htdocs/luci-static/resources/view/ddns-go/config.js index f56a145ce9..3f2ea1d584 100644 --- a/openwrt-packages/luci-app-ddns-go/htdocs/luci-static/resources/view/ddns-go/config.js +++ b/openwrt-packages/luci-app-ddns-go/htdocs/luci-static/resources/view/ddns-go/config.js @@ -1,4 +1,4 @@ -/* Copyright (C) 2021-2025 sirpdboy herboy2008@gmail.com https://github.com/sirpdboy/luci-app-ddns-go */ +/* Copyright (C) 2021-2026 sirpdboy herboy2008@gmail.com https://github.com/sirpdboy/luci-app-ddns-go */ 'use strict'; 'require view'; 'require fs'; @@ -308,12 +308,17 @@ return view.extend({ o = s.option(form.Value, 'delay', _('Delayed Start (seconds)')); o.default = '60'; - + o = s.option(form.Button, '_newpassword', _('Reset account password')); o.inputtitle = _('ResetPassword'); o.inputstyle = 'apply'; o.onclick = L.bind(this.handleResetPassword, this, data); - + + o = s.option(form.Button, '_update', _('Update kernel')); + o.inputtitle = _('Check Update'); + o.inputstyle = 'apply'; + o.onclick = L.bind(this.handleUpdate, this, data); + o = s.option(form.DummyValue, '_update_status', _('Current Version')); o.rawhtml = true; var currentVersion = ''; @@ -332,12 +337,6 @@ return view.extend({ currentVersion ? String.format('v%s', currentVersion) : _('Loading...')) ]); }; - - o = s.option(form.Button, '_update', _('Update kernel'), - _('Check and update DDNS-Go to the latest version')); - o.inputtitle = _('Check Update'); - o.inputstyle = 'apply'; - o.onclick = L.bind(this.handleUpdate, this, data); return m.render(); } diff --git a/openwrt-packages/luci-app-ddns-go/htdocs/luci-static/resources/view/ddns-go/ddns-go.js b/openwrt-packages/luci-app-ddns-go/htdocs/luci-static/resources/view/ddns-go/ddns-go.js index 328170d1b0..cca9e4e7a7 100644 --- a/openwrt-packages/luci-app-ddns-go/htdocs/luci-static/resources/view/ddns-go/ddns-go.js +++ b/openwrt-packages/luci-app-ddns-go/htdocs/luci-static/resources/view/ddns-go/ddns-go.js @@ -1,4 +1,4 @@ -/* Copyright (C) 2021-2025 sirpdboy herboy2008@gmail.com https://github.com/sirpdboy/luci-app-ddns-go */ +/* Copyright (C) 2021-2026 sirpdboy herboy2008@gmail.com https://github.com/sirpdboy/luci-app-ddns-go */ 'use strict'; 'require view'; diff --git a/openwrt-packages/luci-app-ddns-go/htdocs/luci-static/resources/view/ddns-go/log.js b/openwrt-packages/luci-app-ddns-go/htdocs/luci-static/resources/view/ddns-go/log.js index babfdbd238..f56ed44fbc 100644 --- a/openwrt-packages/luci-app-ddns-go/htdocs/luci-static/resources/view/ddns-go/log.js +++ b/openwrt-packages/luci-app-ddns-go/htdocs/luci-static/resources/view/ddns-go/log.js @@ -1,4 +1,7 @@ -/* Copyright (C) 2021-2025 sirpdboy herboy2008@gmail.com https://github.com/sirpdboy/luci-app-ddns-go */ +// SPDX-License-Identifier: Apache-2.0 +/* + * Copyright (C) 2022-2026 sirpdboy + */ 'use strict'; 'require dom'; 'require fs'; @@ -10,7 +13,6 @@ return view.extend({ render: function () { var css = ` - /* 日志框文本区域 */ #log_textarea pre { padding: 10px; /* 内边距 */ border-bottom: 1px solid #ddd; /* 边框颜色 */ @@ -20,15 +22,35 @@ return view.extend({ word-wrap: break-word; overflow-y: auto; } - /* 5s 自动刷新文字 */ .cbi-section small { margin-left: 1rem; font-size: small; - color: #666; /* 深灰色文字 */ } + .log-container { + display: flex; + flex-direction: column; + max-height: 1200px; + overflow-y: auto; + border-radius: 3px; + margin-top: 10px; + padding: 5px; + } + .log-line { + padding: 3px 0; + font-family: monospace; + font-size: 12px; + line-height: 1.4; + } + .log-line:last-child { + border-bottom: none; + } + .log-timestamp { + margin-right: 10px; + } + `; - var log_textarea = E('div', { 'id': 'log_textarea' }, + var log_container = E('div', { 'class': 'log-container', 'id': 'log_container' }, E('img', { 'src': L.resource(['icons/loading.gif']), 'alt': _('Loading...'), @@ -38,6 +60,77 @@ return view.extend({ var log_path = '/var/log/ddns-go.log'; var lastLogContent = ''; + var lastScrollTop = 0; + var isScrolledToTop = true; + + // 解析日志行的时间戳 + function parseLogTimestamp(logLine) { + // 匹配格式: 2026/01/21 22:35:13 Listening on :9876 + var timestampMatch = logLine.match(/^(\d{4}\/\d{2}\/\d{2} \d{2}:\d{2}:\d{2})/); + if (timestampMatch) { + var dateStr = timestampMatch[1].replace(/\//g, '-'); + return new Date(dateStr).getTime(); + } + return Date.now(); + } + + function reverseLogLines(logContent) { + if (!logContent || logContent.trim() === '') { + return logContent; + } + + var lines = logContent.split('\n'); + + lines = lines.filter(function(line) { + return line.trim() !== ''; + }); + + lines.sort(function(a, b) { + var timeA = parseLogTimestamp(a); + var timeB = parseLogTimestamp(b); + return timeB - timeA; // 降序排列 + }); + + return lines.join('\n'); + } + function formatLogLines(logContent, isNewContent) { + if (!logContent || logContent.trim() === '') { + return E('div', { 'class': 'log-line' }, _('Log is clean.')); + } + + var lines = logContent.split('\n'); + var formattedLines = []; + + for (var i = 0; i < lines.length; i++) { + var line = lines[i].trim(); + if (line === '') continue; + + var timestampMatch = line.match(/^(\d{4}\/\d{2}\/\d{2} \d{2}:\d{2}:\d{2})/); + var timestampSpan = null; + var messageSpan = null; + var lineClass = 'log-line'; + + + if (timestampMatch) { + timestampSpan = E('span', { + 'class': 'log-timestamp', + 'title': timestampMatch[1] + }, timestampMatch[0] + ' '); + messageSpan = E('span', {}, line.substring(timestampMatch[0].length + 1)); + } else { + messageSpan = E('span', {}, line); + } + + var lineDiv = E('div', { 'class': lineClass }, [ + timestampSpan, + messageSpan + ].filter(function(el) { return el !== null; })); + + formattedLines.push(lineDiv); + } + + return E('div', {}, formattedLines); + } var clear_log_button = E('div', {}, [ E('button', { @@ -53,9 +146,10 @@ return view.extend({ button.disabled = false; button.textContent = _('Clear Logs'); // 立即刷新日志显示框 - var log = E('pre', { 'wrap': 'pre' }, [_('Log is clean.')]); - dom.content(log_textarea, log); - lastLogContent = ''; + var logContent = _('Log is clean.'); + lastLogContent = logContent; + dom.content(log_container, formatLogLines(logContent, false)); + isScrolledToTop = true; // 清空日志后,保持在顶部 }) .catch(function () { button.textContent = _('Failed to clear log.'); @@ -66,52 +160,80 @@ return view.extend({ }, _('Clear Logs')) ]); + log_container.addEventListener('scroll', function() { + lastScrollTop = this.scrollTop; + isScrolledToTop = this.scrollTop <= 1; + }); + poll.add(L.bind(function () { return fs.read_direct(log_path, 'text') .then(function (res) { - var newContent = res.trim() || _('Log is clean.'); - - if (newContent !== lastLogContent) { - var log = E('pre', { 'wrap': 'pre' }, [newContent]); - dom.content(log_textarea, log); - log.scrollTop = log.scrollHeight; - lastLogContent = newContent; + var logContent = res.trim(); + if (logContent === '') { + logContent = _('Log is clean.'); + } + + // 检查内容是否有变化 + if (logContent !== lastLogContent) { + var isNewContent = lastLogContent !== '' && lastLogContent !== _('Log is clean.'); + + var reversedLog = reverseLogLines(logContent); + // 格式化为HTML + var formattedLog = formatLogLines(reversedLog, isNewContent); + + var prevScrollHeight = log_container.scrollHeight; + var prevScrollTop = log_container.scrollTop; + + dom.content(log_container, formattedLog); + lastLogContent = logContent; + + if (isScrolledToTop || isNewContent) { + log_container.scrollTop = 0; + } else { + var newScrollHeight = log_container.scrollHeight; + var heightDiff = newScrollHeight - prevScrollHeight; + log_container.scrollTop = prevScrollTop + heightDiff; + } } }).catch(function (err) { - var log; + var logContent; if (err.toString().includes('NotFoundError')) { - log = E('pre', { 'wrap': 'pre' }, [_('Log file does not exist.')]); + logContent = _('Log file does not exist.'); } else { - log = E('pre', { 'wrap': 'pre' }, [_('Unknown error: %s').format(err)]); + logContent = _('Unknown error: %s').format(err); + } + + if (logContent !== lastLogContent) { + dom.content(log_container, formatLogLines(logContent, false)); + lastLogContent = logContent; } - dom.content(log_textarea, log); }); })); + // 启动轮询 + poll.start(); return E('div', { 'class': 'cbi-map' }, [ E('style', [css]), E('div', { 'class': 'cbi-section' }, [ clear_log_button, - log_textarea, + log_container, E('small', {}, _('Refresh every 5 seconds.').format(L.env.pollinterval)), E('div', { 'class': 'cbi-section-actions cbi-section-actions-right' }) ]), - E('div', { 'style': 'text-align: right; font-style: italic;' }, [ - E('span', {}, [ - _('© github '), - E('a', { - 'href': 'https://github.com/sirpdboy', - 'target': '_blank', - 'style': 'text-decoration: none;' - }, 'by sirpdboy') - ]) - ]) - - + E('div', { 'style': 'text-align: right; font-style: italic;' }, [ + E('span', {}, [ + _('© github '), + E('a', { + 'href': 'https://github.com/sirpdboy', + 'target': '_blank', + 'style': 'text-decoration: none;' + }, 'by sirpdboy') + ]) + ]) ]); - } + }, - //handleSaveApply: null, - //handleSave: null, - //handleReset: null -}); + handleSaveApply: null, + handleSave: null, + handleReset: null +}); \ No newline at end of file diff --git a/openwrt-packages/luci-app-ddns-go/po/zh_Hans/ddns-go.po b/openwrt-packages/luci-app-ddns-go/po/zh_Hans/ddns-go.po index bb1ef00e40..e560c946a7 100644 --- a/openwrt-packages/luci-app-ddns-go/po/zh_Hans/ddns-go.po +++ b/openwrt-packages/luci-app-ddns-go/po/zh_Hans/ddns-go.po @@ -76,6 +76,9 @@ msgstr "开机延时启动(秒)" msgid "Update kernel" msgstr "更新内核" +msgid "Current Version" +msgstr "当前版本" + msgid "Check and update DDNS-Go to the latest version" msgstr "更新DDNS-Go到最新版本" diff --git a/openwrt-packages/luci-app-ddns-go/root/usr/share/rpcd/acl.d/luci-app-ddns-go.json b/openwrt-packages/luci-app-ddns-go/root/usr/share/rpcd/acl.d/luci-app-ddns-go.json index 875d3b830d..0b65c6f273 100644 --- a/openwrt-packages/luci-app-ddns-go/root/usr/share/rpcd/acl.d/luci-app-ddns-go.json +++ b/openwrt-packages/luci-app-ddns-go/root/usr/share/rpcd/acl.d/luci-app-ddns-go.json @@ -1,33 +1,34 @@ { "luci-app-ddns-go": { - "description": "Grant UCI access for luci-app-ddns-go", + "description": "Grant UCI access for luci-app-ddns-go", "read": { - "uci": [ "ddns-go" ], + "uci": ["*"], "file": { - "/etc/init.d/ddns-go": [ "exec" ], - "/usr/libexec/ddns-go-call": [ "exec" ], - "/usr/share/rpcd/ucode/luci.ddns-go": [ "exec" ], - "/bin/pidof": [ "exec" ], - "/bin/ps": [ "exec" ], - "/bin/ash": [ "exec" ], - "/etc/ddns-go/ddns-go-config.yaml": [ "read" ], - "/var/log/ddns-go.log": [ "read" ] - }, + "/etc/init.d/ddns-go": ["exec"], + "/usr/libexec/ddns-go-call": ["exec"], + "/usr/share/rpcd/ucode/luci.ddns-go": ["exec"], + "/bin/pidof": ["exec"], + "/bin/ps": ["exec"], + "/bin/ash": ["exec"], + "/etc/ddns-go/ddns-go-config.yaml": ["read"], + "/var/log/ddns-go.log": ["read"] + }, "ubus": { - "rc": [ "*" ], + "rc": ["*"], "service": ["list"], - "luci.ddns-go": [ "*" ] + "luci.ddns-go": ["*"], + "network.interface.*": ["status"], + "network": ["reload", "restart"] } }, "write": { "ubus": { - "luci.ddns-go": [ "*" ] + "luci.ddns-go": ["*"] }, "file": { "/etc/ddns-go/ddns-go-config.yaml": ["write"] - }, - "uci": ["ddns-go"] + }, + "uci": ["*"] } } - } \ No newline at end of file diff --git a/openwrt-packages/luci-app-lucky/luci-app-lucky/Makefile b/openwrt-packages/luci-app-lucky/luci-app-lucky/Makefile index 4982ae60c7..a17028e60b 100644 --- a/openwrt-packages/luci-app-lucky/luci-app-lucky/Makefile +++ b/openwrt-packages/luci-app-lucky/luci-app-lucky/Makefile @@ -1,14 +1,14 @@ # SPDX-License-Identifier: GPL-3.0-only # -# Copyright (C) 2021-2025 sirpdboy https://github.com/sirpdboy/luci-app-lucky +# Copyright (C) 2021-2026 sirpdboy https://github.com/sirpdboy/luci-app-lucky # # This is free software, licensed under the Apache License, Version 2.0 . # include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-lucky -PKG_VERSION:=3.0.2 -PKG_RELEASE:=14 +PKG_VERSION:=3.0.3 +PKG_RELEASE:=15 LUCI_TITLE:=LuCI Support for Dynamic lucky Client LUCI_DEPENDS:=+lucky diff --git a/openwrt-packages/luci-app-lucky/luci-app-lucky/htdocs/luci-static/resources/view/lucky/config.js b/openwrt-packages/luci-app-lucky/luci-app-lucky/htdocs/luci-static/resources/view/lucky/config.js index 2444310f74..f4ec602d62 100644 --- a/openwrt-packages/luci-app-lucky/luci-app-lucky/htdocs/luci-static/resources/view/lucky/config.js +++ b/openwrt-packages/luci-app-lucky/luci-app-lucky/htdocs/luci-static/resources/view/lucky/config.js @@ -1,4 +1,4 @@ -// Copyright (C) 2021-2025 sirpdboy herboy2008@gmail.com https://github.com/sirpdboy/luci-app-lucky +// Copyright (C) 2021-2026 sirpdboy herboy2008@gmail.com https://github.com/sirpdboy/luci-app-lucky 'use strict'; 'require form'; diff --git a/openwrt-packages/luci-app-lucky/luci-app-lucky/htdocs/luci-static/resources/view/lucky/lucky.js b/openwrt-packages/luci-app-lucky/luci-app-lucky/htdocs/luci-static/resources/view/lucky/lucky.js index e59f423f89..39b0fa931c 100644 --- a/openwrt-packages/luci-app-lucky/luci-app-lucky/htdocs/luci-static/resources/view/lucky/lucky.js +++ b/openwrt-packages/luci-app-lucky/luci-app-lucky/htdocs/luci-static/resources/view/lucky/lucky.js @@ -1,4 +1,4 @@ -// 版权 Copyright (C) 2021-2025 sirpdboy herboy2008@gmail.com https://github.com/sirpdboy/luci-app-lucky +// 版权 Copyright (C) 2021-2026 sirpdboy herboy2008@gmail.com https://github.com/sirpdboy/luci-app-lucky 'use strict'; 'require view'; @@ -16,7 +16,7 @@ return view.extend({ checkRunning: function() { return fs.exec('/bin/pidof', ['lucky']).then(function(pidRes) { if (pidRes.code === 0) return { isRunning: true }; - return fs.exec('/bin/ash', ['-c', 'ps | grep -q "[d]dns-go"']).then(function(grepRes) { + return fs.exec('/bin/ash', ['-c', 'ps | grep -q "[l]ucky"']).then(function(grepRes) { return { isRunning: grepRes.code === 0 }; }); }); @@ -56,7 +56,7 @@ return view.extend({ }); container.appendChild(iframe); } - + poll.add(function() { return self.checkRunning().then(function(checkResult) { var newStatus = checkResult.isRunning; diff --git a/openwrt-packages/luci-app-lucky/luci-app-lucky/po/zh_Hans/lucky.po b/openwrt-packages/luci-app-lucky/luci-app-lucky/po/zh_Hans/lucky.po index 6191d841d3..b26a244d79 100644 --- a/openwrt-packages/luci-app-lucky/luci-app-lucky/po/zh_Hans/lucky.po +++ b/openwrt-packages/luci-app-lucky/luci-app-lucky/po/zh_Hans/lucky.po @@ -2,7 +2,7 @@ msgid "" msgstr "Content-Type: text/plain; charset=UTF-8" msgid "Lucky" -msgstr "Lucky" +msgstr "Lucky大吉" msgid "Lucky Control panel" msgstr "Lucky操作台" @@ -57,3 +57,7 @@ msgstr "使用https加密访问" msgid "Set an installation access path, eg:sirpdboy" msgstr "设置一个安装访问路径,如:sirpdboy" + +msgid "Lucky Service Not Running" +msgstr "Lucky服务未启用" + diff --git a/openwrt-packages/luci-app-lucky/luci-app-lucky/root/etc/uci-defaults/luci-app-lucky b/openwrt-packages/luci-app-lucky/luci-app-lucky/root/etc/uci-defaults/luci-app-lucky index 6c1ab63cc2..334477420d 100644 --- a/openwrt-packages/luci-app-lucky/luci-app-lucky/root/etc/uci-defaults/luci-app-lucky +++ b/openwrt-packages/luci-app-lucky/luci-app-lucky/root/etc/uci-defaults/luci-app-lucky @@ -9,9 +9,5 @@ uci -q batch <<-EOF >/dev/null EOF } -rm -f /tmp/luci-indexcache* 2>/dev/null -rm -f /tmp/luci-modulecache/* 2>/dev/null # OpenWrt 21.02 -rm -f /tmp/luci-indexcache - rm -rf /tmp/luci-* exit 0 \ No newline at end of file diff --git a/openwrt-packages/luci-app-lucky/luci-app-lucky/root/usr/share/luci/menu.d/luci-app-lucky.json b/openwrt-packages/luci-app-lucky/luci-app-lucky/root/usr/share/luci/menu.d/luci-app-lucky.json index 760ebc5dfc..23a18223be 100644 --- a/openwrt-packages/luci-app-lucky/luci-app-lucky/root/usr/share/luci/menu.d/luci-app-lucky.json +++ b/openwrt-packages/luci-app-lucky/luci-app-lucky/root/usr/share/luci/menu.d/luci-app-lucky.json @@ -10,23 +10,21 @@ "uci": { "lucky": true } } }, - - "admin/services/lucky/config": { - "title": "Base Setting", - "order": 10, - "action": { - "type": "view", - "path": "lucky/config" - } - }, - "admin/services/lucky/lucky": { "title": "Lucky Control panel", - "order": 20, + "order": 10, "action": { "type": "view", "path": "lucky/lucky" } + }, + "admin/services/lucky/config": { + "title": "Base Setting", + "order": 20, + "action": { + "type": "view", + "path": "lucky/config" + } } } diff --git a/openwrt-packages/luci-app-lucky/luci-app-lucky/root/usr/share/rpcd/ucode/luci.lucky b/openwrt-packages/luci-app-lucky/luci-app-lucky/root/usr/share/rpcd/ucode/luci.lucky index cf667c0674..87ed9574aa 100644 --- a/openwrt-packages/luci-app-lucky/luci-app-lucky/root/usr/share/rpcd/ucode/luci.lucky +++ b/openwrt-packages/luci-app-lucky/luci-app-lucky/root/usr/share/rpcd/ucode/luci.lucky @@ -2,7 +2,7 @@ /* * SPDX-License-Identifier: GPL-2.0-only * - * Copyright (C) 2021-2025 sirpdboy https://github.com/sirpdboy/luci-app-lucky + * Copyright (C) 2021-2026 sirpdboy https://github.com/sirpdboy/luci-app-lucky */ 'use strict'; diff --git a/openwrt-packages/luci-app-lucky/lucky/Makefile b/openwrt-packages/luci-app-lucky/lucky/Makefile index c0178f3ada..8474ab8b8e 100644 --- a/openwrt-packages/luci-app-lucky/lucky/Makefile +++ b/openwrt-packages/luci-app-lucky/lucky/Makefile @@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=lucky -PKG_VERSION:=2.24.0 +PKG_VERSION:=2.26.1 PKG_RELEASE:=1 PKGARCH:=all @@ -19,9 +19,6 @@ endif ifeq ($(ARCH),mips) LUCKY_ARCH:=mips_softfloat endif -ifeq ($(ARCH),86) - LUCKY_ARCH:=i386 -endif ifeq ($(ARCH),i386) LUCKY_ARCH:=i386 endif @@ -29,17 +26,25 @@ ifeq ($(ARCH),x86_64) LUCKY_ARCH:=x86_64 endif ifeq ($(ARCH),arm) - LUCKY_ARCH:=armv5 -endif -ifeq ($(ARCH),arm7) + ifeq ($(BOARD),bcm53xx) + LUCKY_ARCH:=armv6 + else LUCKY_ARCH:=armv7 endif -ifeq ($(ARCH),armv8) - LUCKY_ARCH:=arm64 +endif +ifeq ($(BOARD),bcm53xx) + LUCKY_ARCH:=armv6 +ifeq ($(word 2,$(subst +,$(space),$(call qstrip,$(CONFIG_CPU_TYPE)))),) + LUCKY_ARCH:=armv5 +endif +endif +ifeq ($(BOARD),kirkwood) + LUCKY_ARCH:=armv5 endif ifeq ($(ARCH),aarch64) LUCKY_ARCH:=arm64 endif + PKG_LICENSE:=GPL-3.0-only PKG_LICENSE_FILES:=LICENSE PKG_MAINTAINER:=GDY666 diff --git a/openwrt-passwall/.github/workflows/Auto compile with openwrt sdk.yml b/openwrt-passwall/.github/workflows/Auto compile with openwrt sdk.yml index 2c55fda2d9..26a396a426 100644 --- a/openwrt-passwall/.github/workflows/Auto compile with openwrt sdk.yml +++ b/openwrt-passwall/.github/workflows/Auto compile with openwrt sdk.yml @@ -1,5 +1,6 @@ # # Copyright (c) 2022-2025 SMALLPROGRAM +# Copyright (C) 2026 Openwrt-Passwall Organization # Description: Auto compile # name: "Auto compile with openwrt sdk" @@ -15,8 +16,6 @@ env: TZ: Asia/Shanghai passwall: ${{ github.repository }} packages: Openwrt-Passwall/openwrt-passwall-packages - package_names: "chinadns-ng dns2socks geoview hysteria ipt2socks microsocks naiveproxy tcping trojan-plus tuic-client shadowsocks-rust shadowsocksr-libev simple-obfs sing-box v2ray-geodata v2ray-plugin xray-core xray-plugin shadow-tls" - package_release: "chinadns-ng dns2socks geoview hysteria ipt2socks microsocks naiveproxy tcping trojan-plus tuic-client shadowsocks-rust shadowsocksr-libev simple-obfs sing-box v2ray-geoip v2ray-plugin v2ray-geosite xray-core xray-plugin shadow-tls" permissions: contents: write @@ -67,10 +66,31 @@ jobs: - name: Prepare release if: steps.check_version.outputs.has_update == 'true' run: | - echo "## :mega:Update content" >> release.txt - echo "![](https://img.shields.io/github/downloads/${{ env.passwall }}/${{steps.check_version.outputs.latest_version}}/total?style=flat-square)" >> release.txt - echo "### Passwall Info" >> release.txt - echo "**:minidisc: Passwall Version: ${{steps.check_version.outputs.latest_version}}**" >> release.txt + echo "## :mega: 获取其他软件包 / How to Get Other Packages" >>release.txt + echo "" >>release.txt + echo "### 方式 1:添加软件源 / Method 1: Add Software Source" >>release.txt + echo " * 请按照 [openwrt-passwall-build](https://github.com/moetayuko/openwrt-passwall-build) 仓库的说明,将其提供的软件源添加到设备中,然后直接使用包管理器安装。" >>release.txt + echo " Follow the instructions in the [openwrt-passwall-build](https://github.com/moetayuko/openwrt-passwall-build) repository to add the provided software source to your device, then install directly using the package manager." >>release.txt + echo "" >>release.txt + echo "### 方式 2:手动下载并安装 / Method 2: Manual Download and Install" >>release.txt + echo "" >>release.txt + echo "* 从 [SourceForge](https://sourceforge.net/projects/openwrt-passwall-build/files/) 下载预构建的软件包。" >>release.txt + echo " Download prebuilt packages from [SourceForge](https://sourceforge.net/projects/openwrt-passwall-build/files/)." >>release.txt + echo "" >>release.txt + echo "* 将文件上传到您的设备,使用 Shell 命令进行安装。" >>release.txt + echo " Upload files to your device, install it with shell command." >>release.txt + echo "" >>release.txt + echo "ipk" >>release.txt + echo "\`\`\`" >>release.txt + echo "opkg install /path/to/package.ipk" >>release.txt + echo "\`\`\`" >>release.txt + echo "apk" >>release.txt + echo "\`\`\`" >>release.txt + echo "apk add /path/to/package.apk" >>release.txt + echo "\`\`\`" >>release.txt + echo "" >>release.txt + echo ":warning: 请将 /path/to/package 替换为实际下载的软件包路径。" >>release.txt + echo "- Replace /path/to/package with the actual path of the downloaded packages." >>release.txt touch release.txt - name: Generate new tag & release @@ -94,13 +114,14 @@ jobs: fail-fast: false matrix: include: - - platform: x86_64 - url_sdk: https://downloads.openwrt.org/releases/24.10.4/targets/x86/64/openwrt-sdk-24.10.4-x86-64_gcc-13.3.0_musl.Linux-x86_64.tar.zst - ver: "ipk" + - url_sdk: https://archive.openwrt.org/releases/21.02.7/targets/x86/64/openwrt-sdk-21.02.7-x86-64_gcc-8.4.0_musl.Linux-x86_64.tar.xz + ver: "22.03-" - - platform: x86_64 - url_sdk: https://downloads.openwrt.org/snapshots/targets/x86/64/openwrt-sdk-x86-64_gcc-14.3.0_musl.Linux-x86_64.tar.zst - ver: "apk" + - url_sdk: https://downloads.openwrt.org/releases/24.10.5/targets/x86/64/openwrt-sdk-24.10.5-x86-64_gcc-13.3.0_musl.Linux-x86_64.tar.zst + ver: "23.05-24.10" + + - url_sdk: https://downloads.openwrt.org/snapshots/targets/x86/64/openwrt-sdk-x86-64_gcc-14.3.0_musl.Linux-x86_64.tar.zst + ver: "25.12+" steps: - name: Install packages run: | @@ -141,7 +162,7 @@ jobs: "feeds.conf.default" cat > feeds.tmp <<'EOF' - src-git passwall_packages https://github.com/Openwrt-Passwall/openwrt-passwall-packages.git;main + src-git passwall_packages https://github.com/${{ env.packages }}.git;main src-git passwall https://github.com/${{ env.passwall }}.git;${{ github.ref_name }} EOF cat feeds.conf.default >> feeds.tmp @@ -150,27 +171,6 @@ jobs: ./scripts/feeds update -a ./scripts/feeds install -a - #--------------------------------------begin_patches------------------------------------------ - echo "Start applying the patch" - - rm -rf temp_resp - git clone -b master --single-branch https://github.com/openwrt/packages.git temp_resp - echo "update golang version" - rm -rf feeds/packages/lang/golang - cp -r temp_resp/lang/golang feeds/packages/lang - echo "update rust version" - rm -rf feeds/packages/lang/rust - cp -r temp_resp/lang/rust feeds/packages/lang - rm -rf temp_resp - - echo "update patch-kernel.sh" - git clone -b main --single-branch https://github.com/openwrt/openwrt.git temp_resp - cp -f temp_resp/scripts/patch-kernel.sh scripts/ - rm -rf temp_resp - - echo "Patch application completed" - #--------------------------------------end_patches-------------------------------------------- - - name: Compile id: compile run: | @@ -187,6 +187,7 @@ jobs: mkdir upload mv bin/packages/*/passwall/luci-* upload/ cd upload + for i in $(ls); do mv $i ${{ matrix.ver }}_$i; done echo "status=success" >> $GITHUB_OUTPUT echo "FIRMWARE=$PWD" >> $GITHUB_ENV @@ -198,356 +199,3 @@ jobs: with: tag_name: ${{needs.job_check.outputs.passwall_version}} files: ${{ env.FIRMWARE }}/* - - - job_auto_compile: - if: ${{ needs.job_check.outputs.has_update == 'true' && needs.job_check.outputs.prerelease == 'false' }} - needs: job_check - runs-on: ubuntu-latest - name: build (${{ matrix.ver }}-${{ matrix.platform }}) - strategy: - fail-fast: false - matrix: - include: - - platform: x86_64 - url_sdk: https://downloads.openwrt.org/releases/24.10.4/targets/x86/64/openwrt-sdk-24.10.4-x86-64_gcc-13.3.0_musl.Linux-x86_64.tar.zst - ver: "ipk" - - - platform: aarch64_generic - url_sdk: https://downloads.openwrt.org/releases/24.10.4/targets/rockchip/armv8/openwrt-sdk-24.10.4-rockchip-armv8_gcc-13.3.0_musl.Linux-x86_64.tar.zst - ver: "ipk" - - - platform: aarch64_cortex-a53 - url_sdk: https://downloads.openwrt.org/releases/24.10.4/targets/mvebu/cortexa53/openwrt-sdk-24.10.4-mvebu-cortexa53_gcc-13.3.0_musl.Linux-x86_64.tar.zst - ver: "ipk" - - - platform: aarch64_cortex-a72 - url_sdk: https://downloads.openwrt.org/releases/24.10.4/targets/mvebu/cortexa72/openwrt-sdk-24.10.4-mvebu-cortexa72_gcc-13.3.0_musl.Linux-x86_64.tar.zst - ver: "ipk" - - - platform: arm_cortex-a5_vfpv4 - url_sdk: https://downloads.openwrt.org/releases/24.10.4/targets/at91/sama5/openwrt-sdk-24.10.4-at91-sama5_gcc-13.3.0_musl_eabi.Linux-x86_64.tar.zst - ver: "ipk" - - - platform: arm_cortex-a7 - url_sdk: https://downloads.openwrt.org/releases/24.10.4/targets/mediatek/mt7629/openwrt-sdk-24.10.4-mediatek-mt7629_gcc-13.3.0_musl_eabi.Linux-x86_64.tar.zst - ver: "ipk" - - - platform: arm_cortex-a7_neon-vfpv4 - url_sdk: https://downloads.openwrt.org/releases/24.10.4/targets/sunxi/cortexa7/openwrt-sdk-24.10.4-sunxi-cortexa7_gcc-13.3.0_musl_eabi.Linux-x86_64.tar.zst - ver: "ipk" - - - platform: arm_cortex-a8_vfpv3 - url_sdk: https://downloads.openwrt.org/releases/24.10.4/targets/sunxi/cortexa8/openwrt-sdk-24.10.4-sunxi-cortexa8_gcc-13.3.0_musl_eabi.Linux-x86_64.tar.zst - ver: "ipk" - - - platform: arm_cortex-a9 - url_sdk: https://downloads.openwrt.org/releases/24.10.4/targets/bcm53xx/generic/openwrt-sdk-24.10.4-bcm53xx-generic_gcc-13.3.0_musl_eabi.Linux-x86_64.tar.zst - ver: "ipk" - - - platform: arm_cortex-a9_neon - url_sdk: https://downloads.openwrt.org/releases/24.10.4/targets/zynq/generic/openwrt-sdk-24.10.4-zynq-generic_gcc-13.3.0_musl_eabi.Linux-x86_64.tar.zst - ver: "ipk" - - - platform: arm_cortex-a9_vfpv3-d16 - url_sdk: https://downloads.openwrt.org/releases/24.10.4/targets/mvebu/cortexa9/openwrt-sdk-24.10.4-mvebu-cortexa9_gcc-13.3.0_musl_eabi.Linux-x86_64.tar.zst - ver: "ipk" - - - platform: arm_cortex-a15_neon-vfpv4 - url_sdk: https://downloads.openwrt.org/releases/24.10.4/targets/ipq806x/generic/openwrt-sdk-24.10.4-ipq806x-generic_gcc-13.3.0_musl_eabi.Linux-x86_64.tar.zst - ver: "ipk" - - - platform: mips_24kc - url_sdk: https://downloads.openwrt.org/releases/24.10.4/targets/ath79/generic/openwrt-sdk-24.10.4-ath79-generic_gcc-13.3.0_musl.Linux-x86_64.tar.zst - ver: "ipk" - - - platform: mips_4kec - url_sdk: https://downloads.openwrt.org/releases/24.10.4/targets/realtek/rtl838x/openwrt-sdk-24.10.4-realtek-rtl838x_gcc-13.3.0_musl.Linux-x86_64.tar.zst - ver: "ipk" - - - platform: mips_mips32 - url_sdk: https://downloads.openwrt.org/releases/24.10.4/targets/bcm53xx/generic/openwrt-sdk-24.10.4-bcm53xx-generic_gcc-13.3.0_musl_eabi.Linux-x86_64.tar.zst - ver: "ipk" - - - platform: mipsel_24kc - url_sdk: https://downloads.openwrt.org/releases/24.10.4/targets/ramips/rt288x/openwrt-sdk-24.10.4-ramips-rt288x_gcc-13.3.0_musl.Linux-x86_64.tar.zst - ver: "ipk" - - - platform: mipsel_74kc - url_sdk: https://downloads.openwrt.org/releases/24.10.4/targets/ramips/rt3883/openwrt-sdk-24.10.4-ramips-rt3883_gcc-13.3.0_musl.Linux-x86_64.tar.zst - ver: "ipk" - - - platform: mipsel_mips32 - url_sdk: https://downloads.openwrt.org/releases/24.10.4/targets/bcm47xx/generic/openwrt-sdk-24.10.4-bcm47xx-generic_gcc-13.3.0_musl.Linux-x86_64.tar.zst - ver: "ipk" - - - - - platform: x86_64 - url_sdk: https://downloads.openwrt.org/snapshots/targets/x86/64/openwrt-sdk-x86-64_gcc-14.3.0_musl.Linux-x86_64.tar.zst - ver: "apk" - - - platform: aarch64_generic - url_sdk: https://downloads.openwrt.org/snapshots/targets/rockchip/armv8/openwrt-sdk-rockchip-armv8_gcc-14.3.0_musl.Linux-x86_64.tar.zst - ver: "apk" - - - platform: aarch64_cortex-a53 - url_sdk: https://downloads.openwrt.org/snapshots/targets/mvebu/cortexa53/openwrt-sdk-mvebu-cortexa53_gcc-14.3.0_musl.Linux-x86_64.tar.zst - ver: "apk" - - - platform: aarch64_cortex-a72 - url_sdk: https://downloads.openwrt.org/snapshots/targets/mvebu/cortexa72/openwrt-sdk-mvebu-cortexa72_gcc-14.3.0_musl.Linux-x86_64.tar.zst - ver: "apk" - - - platform: arm_cortex-a5_vfpv4 - url_sdk: https://downloads.openwrt.org/snapshots/targets/at91/sama5/openwrt-sdk-at91-sama5_gcc-14.3.0_musl_eabi.Linux-x86_64.tar.zst - ver: "apk" - - - platform: arm_cortex-a7 - url_sdk: https://downloads.openwrt.org/snapshots/targets/mediatek/mt7629/openwrt-sdk-mediatek-mt7629_gcc-14.3.0_musl_eabi.Linux-x86_64.tar.zst - ver: "apk" - - - platform: arm_cortex-a7_neon-vfpv4 - url_sdk: https://downloads.openwrt.org/snapshots/targets/sunxi/cortexa7/openwrt-sdk-sunxi-cortexa7_gcc-14.3.0_musl_eabi.Linux-x86_64.tar.zst - ver: "apk" - - - platform: arm_cortex-a8_vfpv3 - url_sdk: https://downloads.openwrt.org/snapshots/targets/sunxi/cortexa8/openwrt-sdk-sunxi-cortexa8_gcc-14.3.0_musl_eabi.Linux-x86_64.tar.zst - ver: "apk" - - - platform: arm_cortex-a9 - url_sdk: https://downloads.openwrt.org/snapshots/targets/bcm53xx/generic/openwrt-sdk-bcm53xx-generic_gcc-14.3.0_musl_eabi.Linux-x86_64.tar.zst - ver: "apk" - - - platform: arm_cortex-a9_neon - url_sdk: https://downloads.openwrt.org/snapshots/targets/zynq/generic/openwrt-sdk-zynq-generic_gcc-14.3.0_musl_eabi.Linux-x86_64.tar.zst - ver: "apk" - - - platform: arm_cortex-a9_vfpv3-d16 - url_sdk: https://downloads.openwrt.org/snapshots/targets/mvebu/cortexa9/openwrt-sdk-mvebu-cortexa9_gcc-14.3.0_musl_eabi.Linux-x86_64.tar.zst - ver: "apk" - - - platform: arm_cortex-a15_neon-vfpv4 - url_sdk: https://downloads.openwrt.org/snapshots/targets/ipq806x/generic/openwrt-sdk-ipq806x-generic_gcc-14.3.0_musl_eabi.Linux-x86_64.tar.zst - ver: "apk" - - - platform: mips_24kc - url_sdk: https://downloads.openwrt.org/snapshots/targets/ath79/generic/openwrt-sdk-ath79-generic_gcc-14.3.0_musl.Linux-x86_64.tar.zst - ver: "apk" - - - platform: mips_4kec - url_sdk: https://downloads.openwrt.org/snapshots/targets/realtek/rtl838x/openwrt-sdk-realtek-rtl838x_gcc-14.3.0_musl.Linux-x86_64.tar.zst - ver: "apk" - - - platform: mips_mips32 - url_sdk: https://downloads.openwrt.org/snapshots/targets/bcm53xx/generic/openwrt-sdk-bcm53xx-generic_gcc-14.3.0_musl_eabi.Linux-x86_64.tar.zst - ver: "apk" - - - platform: mipsel_24kc - url_sdk: https://downloads.openwrt.org/snapshots/targets/ramips/rt288x/openwrt-sdk-ramips-rt288x_gcc-14.2.0_musl.Linux-x86_64.tar.zst - ver: "apk" - - - platform: mipsel_74kc - url_sdk: https://downloads.openwrt.org/snapshots/targets/ramips/rt3883/openwrt-sdk-ramips-rt3883_gcc-14.3.0_musl.Linux-x86_64.tar.zst - ver: "apk" - - - platform: mipsel_mips32 - url_sdk: https://downloads.openwrt.org/snapshots/targets/bcm47xx/generic/openwrt-sdk-bcm47xx-generic_gcc-14.3.0_musl.Linux-x86_64.tar.zst - ver: "apk" - - steps: - - name: Initialization ${{ matrix.platform }} compile environment - run: | - sudo -E rm -rf /usr/share/dotnet /etc/mysql /etc/php /usr/local/lib/android - echo "Install packages" - sudo -E apt-get -qq update - sudo -E apt-get -qq install ack antlr3 asciidoc autoconf automake autopoint binutils bison build-essential \ - bzip2 ccache clang cmake cpio curl device-tree-compiler ecj fastjar flex gawk gettext gcc-multilib \ - g++-multilib git gnutls-dev gperf haveged help2man intltool lib32gcc-s1 libc6-dev-i386 libelf-dev \ - libglib2.0-dev libgmp3-dev libltdl-dev libmpc-dev libmpfr-dev libncurses-dev libpython3-dev \ - libreadline-dev libssl-dev libtool libyaml-dev libz-dev lld llvm lrzsz mkisofs msmtp nano \ - ninja-build p7zip p7zip-full patch pkgconf python3 python3-pip python3-ply python3-docutils \ - python3-pyelftools qemu-utils re2c rsync scons squashfs-tools subversion swig texinfo uglifyjs \ - upx-ucl unzip vim wget xmlto xxd zlib1g-dev zstd - sudo -E apt-get -qq autoremove --purge - sudo -E apt-get -qq clean - - - name: ${{ matrix.platform }} sdk download - run: | - wget ${{ matrix.url_sdk }} - file_name=$(echo ${{matrix.url_sdk}} | awk -F/ '{print $NF}') - mkdir sdk - if [[ $file_name == *.tar.xz ]]; then - tar -xJf $file_name -C ./sdk --strip-components=1 - elif [[ $file_name == *.tar.zst ]]; then - tar --zstd -x -f $file_name -C ./sdk --strip-components=1 - else - echo "Unsupported file format: $file_name" - exit 1 - fi - cd sdk - - - name: SSH connection to Actions - uses: mxschmitt/action-tmate@v3.13 - if: (github.event.inputs.ssh == 'true' && github.event.inputs.ssh != 'false') || contains(github.event.action, 'ssh') - - - name: ${{ matrix.platform }} feeds configuration packages - run: | - cd sdk - - # Update feeds to github source - sed -i \ - -e 's|git\.openwrt\.org/feed|github.com/openwrt|g' \ - -e 's|git\.openwrt\.org/project|github.com/openwrt|g' \ - -e 's|git\.openwrt\.org/openwrt|github.com/openwrt|g' \ - "feeds.conf.default" - - cat > feeds.tmp <<'EOF' - src-git passwall_packages https://github.com/Openwrt-Passwall/openwrt-passwall-packages.git;main - src-git passwall https://github.com/${{ env.passwall }}.git;${{ github.ref_name }} - EOF - cat feeds.conf.default >> feeds.tmp - mv feeds.tmp feeds.conf.default - - - ./scripts/feeds update -a - ./scripts/feeds install -a - - #--------------------------------------begin_patches------------------------------------------ - echo "Start applying the patch" - - - rm -rf temp_resp - git clone -b master --single-branch https://github.com/openwrt/packages.git temp_resp - echo "update golang version" - rm -rf feeds/packages/lang/golang - cp -r temp_resp/lang/golang feeds/packages/lang - echo "update rust version" - rm -rf feeds/packages/lang/rust - cp -r temp_resp/lang/rust feeds/packages/lang - rm -rf temp_resp - - git clone -b main --single-branch https://github.com/openwrt/openwrt.git temp_resp - cp -f temp_resp/scripts/patch-kernel.sh scripts/ - rm -rf temp_resp - - echo "fixed rust host build error" - sed -i 's/--set=llvm\.download-ci-llvm=false/--set=llvm.download-ci-llvm=true/' feeds/packages/lang/rust/Makefile - grep -q -- '--ci false \\' feeds/packages/lang/rust/Makefile || sed -i '/x\.py \\/a \ --ci false \\' feeds/packages/lang/rust/Makefile - - - echo "Patch application completed" - #--------------------------------------end_patches-------------------------------------------- - - echo "CONFIG_ALL_NONSHARED=n" > .config - echo "CONFIG_ALL_KMODS=n" >> .config - echo "CONFIG_ALL=n" >> .config - echo "CONFIG_AUTOREMOVE=n" >> .config - echo "CONFIG_SIGNED_PACKAGES=n" >> .config - echo "CONFIG_PACKAGE_luci-app-passwall=m" >> .config - echo "CONFIG_PACKAGE_luci-app-passwall_Iptables_Transparent_Proxy=y" >> .config - echo "CONFIG_PACKAGE_luci-app-passwall_Nftables_Transparent_Proxy=y" >> .config - echo "CONFIG_PACKAGE_luci-app-passwall_INCLUDE_Geoview=y" >> .config - echo "CONFIG_PACKAGE_luci-app-passwall_INCLUDE_Haproxy=y" >> .config - echo "CONFIG_PACKAGE_luci-app-passwall_INCLUDE_Hysteria=y" >> .config - echo "CONFIG_PACKAGE_luci-app-passwall_INCLUDE_NaiveProxy=y" >> .config - echo "CONFIG_PACKAGE_luci-app-passwall_INCLUDE_Shadowsocks_Libev_Client=y" >> .config - echo "CONFIG_PACKAGE_luci-app-passwall_INCLUDE_Shadowsocks_Libev_Server=y" >> .config - echo "CONFIG_PACKAGE_luci-app-passwall_INCLUDE_Shadowsocks_Rust_Client=y" >> .config - echo "CONFIG_PACKAGE_luci-app-passwall_INCLUDE_Shadowsocks_Rust_Server=y" >> .config - echo "CONFIG_PACKAGE_luci-app-passwall_INCLUDE_ShadowsocksR_Libev_Client=y" >> .config - echo "CONFIG_PACKAGE_luci-app-passwall_INCLUDE_ShadowsocksR_Libev_Server=y" >> .config - echo "CONFIG_PACKAGE_luci-app-passwall_INCLUDE_Shadow_TLS=y" >> .config - echo "CONFIG_PACKAGE_luci-app-passwall_INCLUDE_Simple_Obfs=y" >> .config - echo "CONFIG_PACKAGE_luci-app-passwall_INCLUDE_SingBox=y" >> .config - echo "CONFIG_PACKAGE_luci-app-passwall_INCLUDE_Trojan_Plus=y" >> .config - echo "CONFIG_PACKAGE_luci-app-passwall_INCLUDE_tuic_client=y" >> .config - echo "CONFIG_PACKAGE_luci-app-passwall_INCLUDE_V2ray_Geodata=y" >> .config - echo "CONFIG_PACKAGE_luci-app-passwall_INCLUDE_V2ray_Plugin=y" >> .config - echo "CONFIG_PACKAGE_luci-app-passwall_INCLUDE_Xray=y" >> .config - echo "CONFIG_PACKAGE_luci-app-passwall_INCLUDE_Xray_Plugin=y" >> .config - - make defconfig - - - - name: ${{ matrix.platform }} compile - id: compile - run: | - cd sdk - for package in ${{ env.package_names }}; do - if [ -d "feeds/passwall_packages/$package" ]; then - echo "-----------begin compile $package ---------------" - sleep 10s - make package/$package/compile -j$(nproc) V=s - echo "-----------compiled $package ---------------" - echo "" - fi - done - - echo "status=success" >> $GITHUB_OUTPUT - - - name: Organize ${{ matrix.platform }} files - id: organize - if: steps.compile.outputs.status == 'success' - run: | - cd sdk - - mkdir tmp_upload - shopt -s nullglob - for src_dir in bin/packages/*/{packages,passwall_packages}; do - [[ -d "$src_dir" ]] || continue - - echo "Scanning: $src_dir" - - for prefix in ${{ env.package_release }}; do - for file in "$src_dir"/"$prefix"*; do - [[ -f "$file" ]] || continue - - filename=$(basename "$file") - echo " Found: $filename" - cp -r "$file" "tmp_upload/" - done - done - done - - mkdir upload - zip -jr upload/passwall_packages_${{ matrix.ver }}_${{ matrix.platform }}.zip tmp_upload/* - - echo "FIRMWARE=$PWD" >> $GITHUB_ENV - echo "status=success" >> $GITHUB_OUTPUT - - - name: Generate release info - id: info - if: steps.compile.outputs.status == 'success' - run: | - cd sdk - echo "## :mega:Update content" >> release.txt - echo "![](https://img.shields.io/github/downloads/${{ env.passwall }}/${{needs.job_check.outputs.passwall_version}}/total?style=flat-square)" >> release.txt - echo "### Passwall Info" >> release.txt - echo "**:minidisc: Passwall Version: ${{needs.job_check.outputs.passwall_version}}**" >> release.txt - - echo "### Packages Version" >> release.txt - echo "**package name**|**package version**" >> release.txt - echo "-|-" >> release.txt - - pkgs=$(ls feeds/passwall_packages -I v2ray-geodata | grep -E "$(echo "${{ env.package_names }}" | sed 's/ /|/g')") - for pkg in $pkgs; do - version=$(awk -F ':=' '/PKG_VERSION:=/{print $2}' feeds/passwall_packages/$pkg/Makefile | sed 's/\r//g') - [ -z "${version}" ] && version=$(awk -F ':=' '/PKG_SOURCE_DATE:=/{print $2}' feeds/passwall_packages/$pkg/Makefile | sed 's/\r//g') - echo "**:ice_cube: $pkg**|**${version}**" >> release.txt - done - echo "**:ice_cube: v2ray-geoip**|**$(awk -F ':=' '/GEOIP_VER:=/{print $2}' feeds/passwall_packages/v2ray-geodata/Makefile)**" >> release.txt - echo "**:ice_cube: v2ray-geosite**|**$(awk -F ':=' '/GEOSITE_VER:=/{print $2}' feeds/passwall_packages/v2ray-geodata/Makefile)**" >> release.txt - - touch release.txt - echo "status=success" >> $GITHUB_OUTPUT - - - name: Upload firmware to release - uses: softprops/action-gh-release@v2 - if: steps.info.outputs.status == 'success' - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - tag_name: ${{needs.job_check.outputs.passwall_version}} - body_path: ${{ env.FIRMWARE }}/release.txt - files: ${{ env.FIRMWARE }}/upload/* diff --git a/openwrt-passwall/luci-app-passwall/Makefile b/openwrt-passwall/luci-app-passwall/Makefile index 5d2fabbb9b..b2fd09455b 100644 --- a/openwrt-passwall/luci-app-passwall/Makefile +++ b/openwrt-passwall/luci-app-passwall/Makefile @@ -7,7 +7,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-passwall -PKG_VERSION:=26.1.17 +PKG_VERSION:=26.1.21 PKG_RELEASE:=1 PKG_PO_VERSION:=$(PKG_VERSION) diff --git a/openwrt-passwall/luci-app-passwall/luasrc/model/cbi/passwall/client/acl_config.lua b/openwrt-passwall/luci-app-passwall/luasrc/model/cbi/passwall/client/acl_config.lua index ed8796f350..83909d7dd4 100644 --- a/openwrt-passwall/luci-app-passwall/luasrc/model/cbi/passwall/client/acl_config.lua +++ b/openwrt-passwall/luci-app-passwall/luasrc/model/cbi/passwall/client/acl_config.lua @@ -464,11 +464,19 @@ o:depends({xray_dns_mode = "tcp+doh"}) o:depends({singbox_dns_mode = "doh"}) o = s:option(Value, "remote_dns_client_ip", translate("EDNS Client Subnet")) +o.description = translate("Notify the DNS server when the DNS query is notified, the location of the client (cannot be a private IP address).") .. "
" .. + translate("This feature requires the DNS server to support the Edns Client Subnet (RFC7871).") o.datatype = "ipaddr" o:depends({dns_mode = "sing-box"}) o:depends({dns_mode = "xray"}) o:depends({_node_sel_shunt = "1"}) +o = s:option(Flag, "remote_fakedns", "FakeDNS", translate("Use FakeDNS work in the shunt domain that proxy.")) +o.default = "0" +o.rmempty = false +o:depends({dns_mode = "sing-box"}) +o:depends({dns_mode = "xray"}) + o = s:option(ListValue, "chinadns_ng_default_tag", translate("Default DNS")) o.default = "none" o:value("gfw", translate("Remote DNS")) diff --git a/openwrt-passwall/luci-app-passwall/luasrc/model/cbi/passwall/client/global.lua b/openwrt-passwall/luci-app-passwall/luasrc/model/cbi/passwall/client/global.lua index 42774bcedd..7f89a9934d 100644 --- a/openwrt-passwall/luci-app-passwall/luasrc/model/cbi/passwall/client/global.lua +++ b/openwrt-passwall/luci-app-passwall/luasrc/model/cbi/passwall/client/global.lua @@ -161,7 +161,7 @@ if (has_singbox or has_xray) and #nodes_table > 0 then o.cfgvalue = get_cfgvalue(v.id, "preproxy_enabled") o.write = get_write(v.id, "preproxy_enabled") - o = s:taboption("Main", ListValue, vid .. "-main_node", string.format('%s', translate("Preproxy Node")), translate("Set the node to be used as a pre-proxy. Each rule (including Default) has a separate switch that controls whether this rule uses the pre-proxy or not.")) + o = s:taboption("Main", ListValue, vid .. "-main_node", string.format('%s', translate("Preproxy Node")), translate("Set the node to be used as a pre-proxy. Each rule (including Default) has a separate switch that controls whether this rule uses the pre-proxy or not.")) o:depends(vid .. "-preproxy_enabled", "1") o.template = appname .. "/cbi/nodes_listvalue" o.group = {} @@ -188,6 +188,12 @@ if (has_singbox or has_xray) and #nodes_table > 0 then o.cfgvalue = get_cfgvalue(v.id, "main_node") o.write = get_write(v.id, "main_node") + o = s:taboption("Main", Flag, vid .. "-fakedns", "FakeDNS", translate("Use FakeDNS work in the shunt domain that proxy.")) + o:depends("tcp_node", v.id) + o.cfgvalue = get_cfgvalue(v.id, "fakedns") + o.write = get_write(v.id, "fakedns") + o.remove = get_remove(v.id, "fakedns") + m.uci:foreach(appname, "shunt_rules", function(e) local id = e[".name"] local node_option = vid .. "-" .. id .. "_node" @@ -204,16 +210,23 @@ if (has_singbox or has_xray) and #nodes_table > 0 then o.template = appname .. "/cbi/nodes_listvalue" o.group = {"","","",""} - local pt = s:taboption("Main", ListValue, vid .. "-".. id .. "_proxy_tag", string.format('* %s', e.remarks .. " " .. translate("Preproxy"))) + local pt = s:taboption("Main", ListValue, vid .. "-".. id .. "_proxy_tag", string.format('* %s', e.remarks .. " " .. translate("Preproxy"))) pt.cfgvalue = get_cfgvalue(v.id, id .. "_proxy_tag") pt.write = get_write(v.id, id .. "_proxy_tag") pt.remove = get_remove(v.id, id .. "_proxy_tag") pt:value("", translate("Close")) pt:value("main", translate("Preproxy Node")) pt:depends("__hide__", "1") + + local fakedns_tag = s:taboption("Main", Flag, vid .. "-".. id .. "_fakedns", string.format('* %s', e.remarks .. " " .. "FakeDNS")) + fakedns_tag.cfgvalue = get_cfgvalue(v.id, id .. "_fakedns") + fakedns_tag.write = get_write(v.id, id .. "_fakedns") + fakedns_tag.remove = get_remove(v.id, id .. "_fakedns") + for k1, v1 in pairs(socks_list) do o:value(v1.id, v1.remark) o.group[#o.group+1] = (v1.group and v1.group ~= "") and v1.group or translate("default") + fakedns_tag:depends({ [node_option] = v1.id, [vid .. "-fakedns"] = "1" }) end for k1, v1 in pairs(balancing_list) do o:value(v1.id, v1.remark) @@ -233,6 +246,10 @@ if (has_singbox or has_xray) and #nodes_table > 0 then if not api.is_local_ip(v1.address) then --本地节点禁止使用前置 pt:depends({ [node_option] = v1.id, [vid .. "-preproxy_enabled"] = "1" }) end + fakedns_tag:depends({ [node_option] = v1.id, [vid .. "-fakedns"] = "1" }) + end + if v.default_node ~= "_direct" or v.default_node ~= "_blackhole" then + fakedns_tag:depends({ [node_option] = "_default", [vid .. "-fakedns"] = "1" }) end end end) @@ -269,7 +286,7 @@ if (has_singbox or has_xray) and #nodes_table > 0 then end local id = "default_proxy_tag" - o = s:taboption("Main", ListValue, vid .. "-" .. id, string.format('* %s', translate("Default Preproxy")), translate("When using, localhost will connect this node first and then use this node to connect the default node.")) + o = s:taboption("Main", ListValue, vid .. "-" .. id, string.format('* %s', translate("Default Preproxy")), translate("When using, localhost will connect this node first and then use this node to connect the default node.")) o.cfgvalue = get_cfgvalue(v.id, id) o.write = get_write(v.id, id) o.remove = get_remove(v.id, id) @@ -559,7 +576,7 @@ o:depends({singbox_dns_mode = "doh"}) o = s:taboption("DNS", Value, "remote_dns_client_ip", translate("EDNS Client Subnet")) o.description = translate("Notify the DNS server when the DNS query is notified, the location of the client (cannot be a private IP address).") .. "
" .. - translate("This feature requires the DNS server to support the Edns Client Subnet (RFC7871).") + translate("This feature requires the DNS server to support the Edns Client Subnet (RFC7871).") o.datatype = "ipaddr" o:depends({dns_mode = "sing-box"}) o:depends({dns_mode = "xray"}) @@ -574,7 +591,7 @@ o:depends({smartdns_dns_mode = "sing-box", dns_shunt = "smartdns"}) o:depends({dns_mode = "xray", dns_shunt = "dnsmasq"}) o:depends({dns_mode = "xray", dns_shunt = "chinadns-ng"}) o:depends({smartdns_dns_mode = "xray", dns_shunt = "smartdns"}) -o:depends("_node_sel_shunt", "1") +--o:depends("_node_sel_shunt", "1") o.validate = function(self, value, t) if value and value == "1" then local _dns_mode = s.fields["dns_mode"]:formvalue(t) diff --git a/openwrt-passwall/luci-app-passwall/luasrc/model/cbi/passwall/client/shunt_rules.lua b/openwrt-passwall/luci-app-passwall/luasrc/model/cbi/passwall/client/shunt_rules.lua index 764e0020a3..77b7275a9f 100644 --- a/openwrt-passwall/luci-app-passwall/luasrc/model/cbi/passwall/client/shunt_rules.lua +++ b/openwrt-passwall/luci-app-passwall/luasrc/model/cbi/passwall/client/shunt_rules.lua @@ -138,7 +138,10 @@ end source.write = dynamicList_write +--[[ +-- Too low usage rate, hidden sourcePort = s:option(Value, "sourcePort", translate("Source port")) +]]-- port = s:option(Value, "port", translate("port")) @@ -163,6 +166,11 @@ domain_list.validate = function(self, value) flag = 0 elseif host:find("ext:") and host:find("ext:") == 1 then flag = 0 + elseif host:find("rule-set:", 1, true) == 1 or host:find("rs:") == 1 then + local w = host:sub(host:find(":") + 1, #host) + if w:find("local:") == 1 or w:find("remote:") == 1 then + flag = 0 + end elseif host:find("#") and host:find("#") == 1 then flag = 0 end @@ -174,13 +182,21 @@ domain_list.validate = function(self, value) end return value end -domain_list.description = "
  • " .. translate("Plaintext: If this string matches any part of the targeting domain, this rule takes effet. Example: rule 'sina.com' matches targeting domain 'sina.com', 'sina.com.cn' and 'www.sina.com', but not 'sina.cn'.") -.. "
  • " .. translate("Regular expression: Begining with 'regexp:', the rest is a regular expression. When the regexp matches targeting domain, this rule takes effect. Example: rule 'regexp:\\.goo.*\\.com$' matches 'www.google.com' and 'fonts.googleapis.com', but not 'google.com'.") -.. "
  • " .. translate("Subdomain (recommended): Begining with 'domain:' and the rest is a domain. When the targeting domain is exactly the value, or is a subdomain of the value, this rule takes effect. Example: rule 'domain:v2ray.com' matches 'www.v2ray.com', 'v2ray.com', but not 'xv2ray.com'.") -.. "
  • " .. translate("Full domain: Begining with 'full:' and the rest is a domain. When the targeting domain is exactly the value, the rule takes effect. Example: rule 'domain:v2ray.com' matches 'v2ray.com', but not 'www.v2ray.com'.") -.. "
  • " .. translate("Pre-defined domain list: Begining with 'geosite:' and the rest is a name, such as geosite:google or geosite:cn.") -.. "
  • " .. translate("Annotation: Begining with #") -.. "
" +domain_list.description = "
    " +.. "
  • " .. translate("Plaintext: If this string matches any part of the targeting domain, this rule takes effet. Example: rule 'sina.com' matches targeting domain 'sina.com', 'sina.com.cn' and 'www.sina.com', but not 'sina.cn'.") .. "
  • " +.. "
  • " .. translate("Regular expression: Begining with 'regexp:', the rest is a regular expression. When the regexp matches targeting domain, this rule takes effect. Example: rule 'regexp:\\.goo.*\\.com$' matches 'www.google.com' and 'fonts.googleapis.com', but not 'google.com'.") .. "
  • " +.. "
  • " .. translate("Subdomain (recommended): Begining with 'domain:' and the rest is a domain. When the targeting domain is exactly the value, or is a subdomain of the value, this rule takes effect. Example: rule 'domain:v2ray.com' matches 'www.v2ray.com', 'v2ray.com', but not 'xv2ray.com'.") .. "
  • " +.. "
  • " .. translate("Full domain: Begining with 'full:' and the rest is a domain. When the targeting domain is exactly the value, the rule takes effect. Example: rule 'domain:v2ray.com' matches 'v2ray.com', but not 'www.v2ray.com'.") .. "
  • " +.. "
  • " .. translate("Pre-defined domain list: Begining with 'geosite:' and the rest is a name, such as geosite:google or geosite:cn.") .. "
  • " +.. "
  • " + .. translate("Sing-Box is compatible with Geo rules and rule-set. rule-set begin with 'rule-set:remote:' or 'rule-set:local:'.") + .. "
      " + .. "
    • " .. translate("Such as:") .. "'rule-set:remote:https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-cn.srs'" .. "
    • " + .. "
    • " .. translate("Such as:") .. "'rule-set:local:/usr/share/sing-box/geosite-cn.srs'" .. "
    • " + .. "
    " +.. "
  • " +.. "
  • " .. translate("Annotation: Begining with #") .. "
  • " +.. "
" ip_list = s:option(TextValue, "ip_list", "IP") ip_list.rows = 10 ip_list.wrap = "off" @@ -191,6 +207,11 @@ ip_list.validate = function(self, value) for index, ipmask in ipairs(ipmasks) do if ipmask:find("geoip:") and ipmask:find("geoip:") == 1 and not ipmask:find("%s") then elseif ipmask:find("ext:") and ipmask:find("ext:") == 1 and not ipmask:find("%s") then + elseif ipmask:find("rule-set:", 1, true) == 1 or ipmask:find("rs:") == 1 then + local w = ipmask:sub(ipmask:find(":") + 1, #ipmask) + if w:find("local:") == 1 or w:find("remote:") == 1 then + flag = 0 + end elseif ipmask:find("#") and ipmask:find("#") == 1 then else if not (datatypes.ipmask4(ipmask) or datatypes.ipmask6(ipmask)) then @@ -200,10 +221,20 @@ ip_list.validate = function(self, value) end return value end -ip_list.description = "
  • " .. translate("IP: such as '127.0.0.1'.") -.. "
  • " .. translate("CIDR: such as '127.0.0.0/8'.") -.. "
  • " .. translate("GeoIP: such as 'geoip:cn'. It begins with geoip: (lower case) and followed by two letter of country code.") -.. "
  • " .. translate("Annotation: Begining with #") -.. "
" +ip_list.description = "
    " +.. "
  • " .. translate("IP: such as '127.0.0.1'.") .. "
  • " +.. "
  • " .. translate("CIDR: such as '127.0.0.0/8'.") .. "
  • " +.. "
  • " .. translate("GeoIP: such as 'geoip:cn'. It begins with geoip: (lower case) and followed by two letter of country code.") .. "
  • " +.. "
  • " + .. translate("Sing-Box is compatible with Geo rules and rule-set. rule-set begin with 'rule-set:remote:' or 'rule-set:local:'.") + .. "
      " + .. "
    • " .. translate("Such as:") .. "'rule-set:remote:https://raw.githubusercontent.com/SagerNet/sing-geoip/rule-set/geoip-cn.srs'" .. "
    • " + .. "
    • " .. translate("Such as:") .. "'rule-set:local:/usr/share/sing-box/geoip-cn.srs'" .. "
    • " + .. "
    " +.. "
  • " +.. "
  • " .. translate("Annotation: Begining with #") .. "
  • " +.. "
" + +o = s:option(Flag, "invert", "Invert", translate("Invert match result.") .. " " .. translate("Only support Sing-Box.")) return m diff --git a/openwrt-passwall/luci-app-passwall/luasrc/model/cbi/passwall/client/type/ray.lua b/openwrt-passwall/luci-app-passwall/luasrc/model/cbi/passwall/client/type/ray.lua index 77bf64a6b8..f903d5ed15 100644 --- a/openwrt-passwall/luci-app-passwall/luasrc/model/cbi/passwall/client/type/ray.lua +++ b/openwrt-passwall/luci-app-passwall/luasrc/model/cbi/passwall/client/type/ray.lua @@ -215,13 +215,13 @@ o.default = "2" o.placeholder = "2" o.description = translate("The load balancer selects the optimal number of nodes, and traffic is randomly distributed among them.") - +local default_node = m.uci:get(appname, arg[1], "default_node") or "_direct" -- [[ 分流模块 ]] if #nodes_table > 0 then o = s:option(Flag, _n("preproxy_enabled"), translate("Preproxy")) o:depends({ [_n("protocol")] = "_shunt" }) - o = s:option(ListValue, _n("main_node"), string.format('%s', translate("Preproxy Node")), translate("Set the node to be used as a pre-proxy. Each rule (including Default) has a separate switch that controls whether this rule uses the pre-proxy or not.")) + o = s:option(ListValue, _n("main_node"), string.format('%s', translate("Preproxy Node")), translate("Set the node to be used as a pre-proxy. Each rule (including Default) has a separate switch that controls whether this rule uses the pre-proxy or not.")) o:depends({ [_n("protocol")] = "_shunt", [_n("preproxy_enabled")] = true }) o.template = appname .. "/cbi/nodes_listvalue" o.group = {} @@ -241,6 +241,9 @@ if #nodes_table > 0 then o:value(v.id, v.remark) o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") end + + o = s:option(Flag, _n("fakedns"), "FakeDNS", translate("Use FakeDNS work in the shunt domain that proxy.")) + o:depends({ [_n("protocol")] = "_shunt" }) end m.uci:foreach(appname, "shunt_rules", function(e) if e[".name"] and e.remarks then @@ -254,9 +257,17 @@ m.uci:foreach(appname, "shunt_rules", function(e) o.group = {"","","",""} if #nodes_table > 0 then + local pt = s:option(ListValue, _n(e[".name"] .. "_proxy_tag"), string.format('* %s', e.remarks .. " " .. translate("Preproxy"))) + pt:value("", translate("Close")) + pt:value("main", translate("Preproxy Node")) + pt:depends("__hide__", "1") + + local fakedns_tag = s:option(Flag, _n(e[".name"] .. "_fakedns"), string.format('* %s', e.remarks .. " " .. "FakeDNS")) + for k, v in pairs(socks_list) do o:value(v.id, v.remark) o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") + fakedns_tag:depends({ [_n("protocol")] = "_shunt", [_n("fakedns")] = true, [_n(e[".name"])] = v.id }) end for k, v in pairs(balancers_table) do o:value(v.id, v.remark) @@ -266,16 +277,16 @@ m.uci:foreach(appname, "shunt_rules", function(e) o:value(v.id, v.remark) o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") end - local pt = s:option(ListValue, _n(e[".name"] .. "_proxy_tag"), string.format('* %s', e.remarks .. " " .. translate("Preproxy"))) - pt:value("", translate("Close")) - pt:value("main", translate("Preproxy Node")) - pt:depends("__hide__", "1") for k, v in pairs(nodes_table) do o:value(v.id, v.remark) o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") if not api.is_local_ip(v.address) then --本地节点禁止使用前置 pt:depends({ [_n("protocol")] = "_shunt", [_n("preproxy_enabled")] = true, [_n(e[".name"])] = v.id }) end + fakedns_tag:depends({ [_n("protocol")] = "_shunt", [_n("fakedns")] = true, [_n(e[".name"])] = v.id }) + end + if default_node ~= "_direct" or default_node ~= "_blackhole" then + fakedns_tag:depends({ [_n("protocol")] = "_shunt", [_n("fakedns")] = true, [_n(e[".name"])] = "_default" }) end end end diff --git a/openwrt-passwall/luci-app-passwall/luasrc/model/cbi/passwall/client/type/sing-box.lua b/openwrt-passwall/luci-app-passwall/luasrc/model/cbi/passwall/client/type/sing-box.lua index ddf4391481..de0b72b977 100644 --- a/openwrt-passwall/luci-app-passwall/luasrc/model/cbi/passwall/client/type/sing-box.lua +++ b/openwrt-passwall/luci-app-passwall/luasrc/model/cbi/passwall/client/type/sing-box.lua @@ -187,12 +187,13 @@ o:depends({ [_n("protocol")] = "_urltest" }) o.default = "0" o.description = translate("Interrupt existing connections when the selected outbound has changed.") +local default_node = m.uci:get(appname, arg[1], "default_node") or "_direct" -- [[ 分流模块 ]] if #nodes_table > 0 then o = s:option(Flag, _n("preproxy_enabled"), translate("Preproxy")) o:depends({ [_n("protocol")] = "_shunt" }) - o = s:option(ListValue, _n("main_node"), string.format('%s', translate("Preproxy Node")), translate("Set the node to be used as a pre-proxy. Each rule (including Default) has a separate switch that controls whether this rule uses the pre-proxy or not.")) + o = s:option(ListValue, _n("main_node"), string.format('%s', translate("Preproxy Node")), translate("Set the node to be used as a pre-proxy. Each rule (including Default) has a separate switch that controls whether this rule uses the pre-proxy or not.")) o:depends({ [_n("protocol")] = "_shunt", [_n("preproxy_enabled")] = true }) o.template = appname .. "/cbi/nodes_listvalue" o.group = {} @@ -212,6 +213,9 @@ if #nodes_table > 0 then o:value(v.id, v.remark) o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") end + + o = s:option(Flag, _n("fakedns"), "FakeDNS", translate("Use FakeDNS work in the shunt domain that proxy.")) + o:depends({ [_n("protocol")] = "_shunt" }) end m.uci:foreach(appname, "shunt_rules", function(e) if e[".name"] and e.remarks then @@ -225,9 +229,17 @@ m.uci:foreach(appname, "shunt_rules", function(e) o.group = {"","","",""} if #nodes_table > 0 then + local pt = s:option(ListValue, _n(e[".name"] .. "_proxy_tag"), string.format('* %s', e.remarks .. " " .. translate("Preproxy"))) + pt:value("", translate("Close")) + pt:value("main", translate("Preproxy Node")) + pt:depends("__hide__", "1") + + local fakedns_tag = s:option(Flag, _n(e[".name"] .. "_fakedns"), string.format('* %s', e.remarks .. " " .. "FakeDNS")) + for k, v in pairs(socks_list) do o:value(v.id, v.remark) o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") + fakedns_tag:depends({ [_n("protocol")] = "_shunt", [_n("fakedns")] = true, [_n(e[".name"])] = v.id }) end for k, v in pairs(urltest_table) do o:value(v.id, v.remark) @@ -237,16 +249,16 @@ m.uci:foreach(appname, "shunt_rules", function(e) o:value(v.id, v.remark) o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") end - local pt = s:option(ListValue, _n(e[".name"] .. "_proxy_tag"), string.format('* %s', e.remarks .. " " .. translate("Preproxy"))) - pt:value("", translate("Close")) - pt:value("main", translate("Preproxy Node")) - pt:depends("__hide__", "1") for k, v in pairs(nodes_table) do o:value(v.id, v.remark) o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") if not api.is_local_ip(v.address) then --本地节点禁止使用前置 pt:depends({ [_n("protocol")] = "_shunt", [_n("preproxy_enabled")] = true, [_n(e[".name"])] = v.id }) end + fakedns_tag:depends({ [_n("protocol")] = "_shunt", [_n("fakedns")] = true, [_n(e[".name"])] = v.id }) + end + if default_node ~= "_direct" or default_node ~= "_blackhole" then + fakedns_tag:depends({ [_n("protocol")] = "_shunt", [_n("fakedns")] = true, [_n(e[".name"])] = "_default" }) end end end diff --git a/openwrt-passwall/luci-app-passwall/luasrc/passwall/api.lua b/openwrt-passwall/luci-app-passwall/luasrc/passwall/api.lua index a878d8f892..05c39fa611 100644 --- a/openwrt-passwall/luci-app-passwall/luasrc/passwall/api.lua +++ b/openwrt-passwall/luci-app-passwall/luasrc/passwall/api.lua @@ -21,6 +21,8 @@ LOG_FILE = "/tmp/log/" .. appname .. ".log" TMP_PATH = "/tmp/etc/" .. appname TMP_IFACE_PATH = TMP_PATH .. "/iface" +NEW_PORT = nil + function log(...) local result = os.date("%Y-%m-%d %H:%M:%S: ") .. table.concat({...}, " ") local f, err = io.open(LOG_FILE, "a") @@ -94,6 +96,16 @@ function get_cache_var(key) return val end +function get_new_port() + local cmd_format = ". /usr/share/passwall/utils.sh ; echo -n $(get_new_port %s tcp,udp)" + local set_port = 0 + if NEW_PORT and tonumber(NEW_PORT) then + set_port = tonumber(NEW_PORT) + 1 + end + NEW_PORT = tonumber(sys.exec(string.format(cmd_format, set_port == 0 and "auto" or set_port))) + return NEW_PORT +end + function exec_call(cmd) local process = io.popen(cmd .. '; echo -e "\n$?"') local lines = {} diff --git a/openwrt-passwall/luci-app-passwall/luasrc/passwall/util_sing-box.lua b/openwrt-passwall/luci-app-passwall/luasrc/passwall/util_sing-box.lua index a8e43ad09f..bd79b721c2 100644 --- a/openwrt-passwall/luci-app-passwall/luasrc/passwall/util_sing-box.lua +++ b/openwrt-passwall/luci-app-passwall/luasrc/passwall/util_sing-box.lua @@ -11,66 +11,74 @@ local local_version = api.get_app_version("sing-box"):match("[^v]+") local version_ge_1_11_0 = api.compare_versions(local_version, ">=", "1.11.0") local version_ge_1_12_0 = api.compare_versions(local_version, ">=", "1.12.0") -local geosite_all_tag = {} -local geoip_all_tag = {} -local srss_path = "/tmp/etc/" .. appname .."_tmp/srss/" +local GEO_VAR = { + OK = nil, + DIR = nil, + SITE_PATH = nil, + IP_PATH = nil, + SITE_TAGS = {}, + IP_TAGS = {}, + TO_SRS_PATH = "/tmp/etc/" .. appname .."_tmp/singbox_srss/" +} -local function convert_geofile() - if api.compare_versions(local_version, "<", "1.8.0") then - api.log("!!!注意:Sing-Box 版本低,Sing-Box 分流无法启用!请在[组件更新]中更新。") - return +function check_geoview() + if not GEO_VAR.OK then + -- Only get once + GEO_VAR.OK = (api.finded_com("geoview") and api.compare_versions(api.get_app_version("geoview"), ">=", "0.1.10")) and 1 or 0 end - local geo_dir = (uci:get(appname, "@global_rules[0]", "v2ray_location_asset") or "/usr/share/v2ray/"):match("^(.*)/") - local geosite_path = geo_dir .. "/geosite.dat" - local geoip_path = geo_dir .. "/geoip.dat" - if not api.finded_com("geoview") then - api.log("!!!注意:缺少 Geoview 组件,Sing-Box 分流无法启用!请在[组件更新]中更新。") - return + if GEO_VAR.OK == 0 then + api.log("!!!注意:缺少 Geoview 组件或版本过低,Sing-Box 分流无法启用!") else - if api.compare_versions(api.get_app_version("geoview"), "<", "0.1.10") then - api.log("!!!注意:Geoview 组件版本低,Sing-Box 分流无法启用!请在[组件更新]中更新。") - return + GEO_VAR.DIR = GEO_VAR.DIR or (uci:get(appname, "@global_rules[0]", "v2ray_location_asset") or "/usr/share/v2ray/"):match("^(.*)/") + GEO_VAR.SITE_PATH = GEO_VAR.SITE_PATH or (GEO_VAR.DIR .. "/geosite.dat") + GEO_VAR.IP_PATH = GEO_VAR.IP_PATH or (GEO_VAR.DIR .. "/geoip.dat") + if not fs.access(GEO_VAR.TO_SRS_PATH) then + fs.mkdir(GEO_VAR.TO_SRS_PATH) end end - if not fs.access(srss_path) then - fs.mkdir(srss_path) + return GEO_VAR.OK +end + +function geo_convert_srs(var) + if check_geoview() ~= 1 then + return + end + local geo_path = var["-geo_path"] + local prefix = var["-prefix"] + local rule_name = var["-rule_name"] + local output_srs_file = GEO_VAR.TO_SRS_PATH .. prefix .. "-" .. rule_name .. ".srs" + if not fs.access(output_srs_file) then + local cmd = string.format("geoview -type %s -action convert -input '%s' -list '%s' -output '%s' -lowmem=true", + prefix, geo_path, rule_name, output_srs_file) + sys.call(cmd) + local status = fs.access(output_srs_file) and "success." or "failed!" + if status == "failed!" then + api.log(string.format(" - %s:%s 转换为srs格式:%s", prefix, rule_name, status)) + end + end +end + +local function convert_geofile() + if check_geoview() ~= 1 then + return end local function convert(file_path, prefix, tags) if next(tags) and fs.access(file_path) then - local md5_file = srss_path .. prefix .. ".dat.md5" + local md5_file = GEO_VAR.TO_SRS_PATH .. prefix .. ".dat.md5" local new_md5 = sys.exec("md5sum " .. file_path .. " 2>/dev/null | awk '{print $1}'"):gsub("\n", "") local old_md5 = sys.exec("[ -f " .. md5_file .. " ] && head -n 1 " .. md5_file .. " | tr -d ' \t\n' || echo ''") if new_md5 ~= "" and new_md5 ~= old_md5 then sys.call("printf '%s' " .. new_md5 .. " > " .. md5_file) - sys.call("rm -rf " .. srss_path .. prefix .. "-*.srs" ) + sys.call("rm -rf " .. GEO_VAR.TO_SRS_PATH .. prefix .. "-*.srs" ) end for k in pairs(tags) do - local srs_file = srss_path .. prefix .. "-" .. k .. ".srs" - if not fs.access(srs_file) then - local cmd = string.format("geoview -type %s -action convert -input '%s' -list '%s' -output '%s' -lowmem=true", - prefix, file_path, k, srs_file) - sys.exec(cmd) - --local status = fs.access(srs_file) and "成功。" or "失败!" - --api.log(string.format(" - 转换 %s:%s ... %s", prefix, k, status)) - end + geo_convert_srs({["-geo_path"] = file_path, ["-prefix"] = prefix, ["-rule_name"] = k}) end end end --api.log("Sing-Box 规则集转换:") - convert(geosite_path, "geosite", geosite_all_tag) - convert(geoip_path, "geoip", geoip_all_tag) -end - -local new_port - -local function get_new_port() - local cmd_format = ". /usr/share/passwall/utils.sh ; echo -n $(get_new_port %s tcp)" - local set_port = 0 - if new_port and tonumber(new_port) then - set_port = tonumber(new_port) + 1 - end - new_port = tonumber(sys.exec(string.format(cmd_format, set_port == 0 and "auto" or set_port))) - return new_port + convert(GEO_VAR.SITE_PATH, "geosite", GEO_VAR.SITE_TAGS) + convert(GEO_VAR.IP_PATH, "geoip", GEO_VAR.IP_TAGS) end function gen_outbound(flag, node, tag, proxy_table) @@ -94,7 +102,7 @@ function gen_outbound(flag, node, tag, proxy_table) if node.type ~= "sing-box" then local relay_port = node.port - new_port = get_new_port() + local new_port = api.get_new_port() local config_file = string.format("%s_%s_%s.json", flag, tag, new_port) if tag and node_id and not tag:find(node_id) then config_file = string.format("%s_%s_%s_%s.json", flag, tag, node_id, new_port) @@ -925,6 +933,7 @@ function gen_config(var) local dns = nil local inbounds = {} local outbounds = {} + local rule_set_table = {} local COMMON = {} local singbox_settings = uci:get_all(appname, "@global_singbox[0]") or {} @@ -935,6 +944,59 @@ function gen_config(var) local experimental = nil + function add_rule_set(tab) + if tab and next(tab) and tab.tag and not rule_set_table[tab.tag]then + rule_set_table[tab.tag] = tab + end + end + + function parse_rule_set(w, rs) + -- Format: remote:https://raw.githubusercontent.com/lyc8503/sing-box-rules/rule-set-geosite/geosite-netflix.srs' + -- Format: local:/usr/share/sing-box/geosite-netflix.srs' + local result = nil + if w and #w > 0 then + if w:find("local:") == 1 or w:find("remote:") == 1 then + local _type = w:sub(1, w:find(":") - 1) -- "local" or "remote" + w = w:sub(w:find(":") + 1, #w) + local format = nil + local filename = w:sub(-w:reverse():find("/") + 1) -- geosite-netflix.srs + local suffix = "" + local find_doc = filename:reverse():find("%.") + if find_doc then + suffix = filename:sub(-find_doc + 1) -- "srs" or "json" + end + if suffix == "srs" then + format = "binary" + elseif suffix == "json" then + format = "source" + end + if format then + local rule_set_tag = filename:sub(1, filename:find("%.") - 1) --geosite-netflix + if rule_set_tag and #rule_set_tag > 0 then + if rs then + rule_set_tag = "rs_" .. rule_set_tag + end + result = { + type = _type, + tag = rule_set_tag, + format = format, + path = _type == "local" and w or nil, + url = _type == "remote" and w or nil, + --download_detour = _type == "remote" and "", + --update_interval = _type == "remote" and "", + } + end + end + end + end + return result + end + + function geo_rule_set(prefix, rule_name) + local output_srs_file = "local:" .. GEO_VAR.TO_SRS_PATH .. prefix .. "-" .. rule_name .. ".srs" + return parse_rule_set(output_srs_file) + end + if node_id then local node = uci:get_all(appname, node_id) if node then @@ -1154,6 +1216,8 @@ function gen_config(var) local preproxy_tag = preproxy_rule_name local preproxy_node_id = preproxy_rule_name and node["main_node"] or nil + inner_fakedns = node.fakedns or "0" + local function gen_shunt_node(rule_name, _node_id) if not rule_name then return nil, nil end if not _node_id then _node_id = node[rule_name] end @@ -1205,7 +1269,7 @@ function gen_config(var) pre_proxy = true end if pre_proxy then - new_port = get_new_port() + local new_port = api.get_new_port() table.insert(inbounds, { type = "direct", tag = "proxy_" .. rule_name, @@ -1344,6 +1408,8 @@ function gen_config(var) if is_private or #source_ip_cidr > 0 then rule.rule_set_ip_cidr_match_source = true end end + --[[ + -- Too low usage rate, hidden if e.sourcePort then local source_port = {} local source_port_range = {} @@ -1357,6 +1423,7 @@ function gen_config(var) rule.source_port = #source_port > 0 and source_port or nil rule.source_port_range = #source_port_range > 0 and source_port_range or nil end + ]]-- if e.port then local port = {} @@ -1372,7 +1439,7 @@ function gen_config(var) rule.port_range = #port_range > 0 and port_range or nil end - local rule_set_tag = {} + local rule_set = {} if e.domain_list then local domain_table = { @@ -1382,20 +1449,34 @@ function gen_config(var) domain_keyword = {}, domain_regex = {}, rule_set = {}, + fakedns = nil, + invert = e.invert == "1" and true or nil } string.gsub(e.domain_list, '[^' .. "\r\n" .. ']+', function(w) if w:find("#") == 1 then return end if w:find("geosite:") == 1 then local _geosite = w:sub(1 + #"geosite:") --适配srs - geosite_all_tag[_geosite] = true - table.insert(rule_set_tag, "geosite-" .. _geosite) - table.insert(domain_table.rule_set, "geosite-" .. _geosite) + local t = geo_rule_set("geosite", _geosite) + if t then + GEO_VAR.SITE_TAGS[_geosite] = true + add_rule_set(t) + table.insert(rule_set, t.tag) + table.insert(domain_table.rule_set, t.tag) + end elseif w:find("regexp:") == 1 then table.insert(domain_table.domain_regex, w:sub(1 + #"regexp:")) elseif w:find("full:") == 1 then table.insert(domain_table.domain, w:sub(1 + #"full:")) elseif w:find("domain:") == 1 then table.insert(domain_table.domain_suffix, w:sub(1 + #"domain:")) + elseif w:find("rule-set:", 1, true) == 1 or w:find("rs:") == 1 then + w = w:sub(w:find(":") + 1, #w) + local t = parse_rule_set(w, true) + if t then + add_rule_set(t) + table.insert(rule_set, t.tag) + table.insert(domain_table.rule_set, t.tag) + end else table.insert(domain_table.domain_keyword, w) end @@ -1404,6 +1485,10 @@ function gen_config(var) rule.domain_suffix = #domain_table.domain_suffix > 0 and domain_table.domain_suffix or nil rule.domain_keyword = #domain_table.domain_keyword > 0 and domain_table.domain_keyword or nil rule.domain_regex = #domain_table.domain_regex > 0 and domain_table.domain_regex or nil + rule.rule_set = #domain_table.rule_set > 0 and domain_table.rule_set or nil + if inner_fakedns == "1" and node[e[".name"] .. "_fakedns"] == "1" then + domain_table.fakedns = true + end if outboundTag then table.insert(dns_domain_rules, api.clone(domain_table)) @@ -1420,8 +1505,19 @@ function gen_config(var) if _geoip == "private" then is_private = true else - geoip_all_tag[_geoip] = true - table.insert(rule_set_tag, "geoip-" .. _geoip) + local t = geo_rule_set("geoip", _geoip) + if t then + GEO_VAR.IP_TAGS[_geoip] = true + add_rule_set(t) + table.insert(rule_set, t.tag) + end + end + elseif w:find("rule-set:", 1, true) == 1 or w:find("rs:") == 1 then + w = w:sub(w:find(":") + 1, #w) + local t = parse_rule_set(w, true) + if t then + add_rule_set(t) + table.insert(rule_set, t.tag) end else table.insert(ip_cidr, w) @@ -1432,7 +1528,8 @@ function gen_config(var) rule.ip_cidr = #ip_cidr > 0 and ip_cidr or nil end - rule.rule_set = #rule_set_tag > 0 and rule_set_tag or nil --适配srs + rule.rule_set = #rule_set > 0 and rule_set or nil --适配srs + rule.invert = e.invert == "1" and true or nil table.insert(rules, rule) end @@ -1441,34 +1538,6 @@ function gen_config(var) for index, value in ipairs(rules) do table.insert(route.rules, rules[index]) end - - local rule_set = {} --适配srs - if next(geosite_all_tag) then - for k,v in pairs(geosite_all_tag) do - local srs_file = srss_path .. "geosite-" .. k ..".srs" - local _rule_set = { - tag = "geosite-" .. k, - type = "local", - format = "binary", - path = srs_file - } - table.insert(rule_set, _rule_set) - end - end - if next(geoip_all_tag) then - for k,v in pairs(geoip_all_tag) do - local srs_file = srss_path .. "geoip-" .. k ..".srs" - local _rule_set = { - tag = "geoip-" .. k, - type = "local", - format = "binary", - path = srs_file - } - table.insert(rule_set, _rule_set) - end - end - route.rule_set = #rule_set >0 and rule_set or nil - elseif node.protocol == "_urltest" then if node.urltest_node then COMMON.default_outbound_tag = gen_urltest(node) @@ -1571,7 +1640,7 @@ function gen_config(var) table.insert(dns.servers, remote_server) end - if remote_dns_fake then + if remote_dns_fake or inner_fakedns == "1" then dns.fakeip = { enabled = true, inet4_range = "198.18.0.0/15", @@ -1637,7 +1706,7 @@ function gen_config(var) table.insert(dns.servers, remote_server) end - if remote_dns_fake then + if remote_dns_fake or inner_fakedns == "1" then table.insert(dns.servers, { tag = fakedns_tag, type = "fakeip", @@ -1755,8 +1824,9 @@ function gen_config(var) domain_suffix = (value.domain_suffix and #value.domain_suffix > 0) and value.domain_suffix or nil, domain_keyword = (value.domain_keyword and #value.domain_keyword > 0) and value.domain_keyword or nil, domain_regex = (value.domain_regex and #value.domain_regex > 0) and value.domain_regex or nil, - rule_set = (value.rule_set and #value.rule_set > 0) and value.rule_set or nil, --适配srs + rule_set = (value.rule_set and #value.rule_set > 0) and value.rule_set or nil, --适配srs disable_cache = false, + invert = value.invert, strategy = (version_ge_1_12_0 and value.outboundTag == "direct") and direct_strategy or nil --Migrate to 1.12 DNS } if version_ge_1_12_0 and value.outboundTag == "block" then --Migrate to 1.12 DNS @@ -1778,7 +1848,7 @@ function gen_config(var) table.insert(dns.servers, remote_shunt_server) dns_rule.server = remote_shunt_server.tag end - if remote_dns_fake then + if value.fakedns then local fakedns_dns_rule = api.clone(dns_rule) fakedns_dns_rule.query_type = { "A", "AAAA" @@ -1812,6 +1882,13 @@ function gen_config(var) outbound = "dns-out" }) end + + if next(rule_set_table) then + route.rule_set = {} + for k, v in pairs(rule_set_table) do + table.insert(route.rule_set, v) + end + end if inbounds or outbounds then local config = { @@ -2053,12 +2130,13 @@ end _G.gen_config = gen_config _G.gen_proto_config = gen_proto_config +_G.geo_convert_srs = geo_convert_srs if arg[1] then local func =_G[arg[1]] if func then print(func(api.get_function_args(arg))) - if (next(geosite_all_tag) or next(geoip_all_tag)) and not no_run then + if (next(GEO_VAR.SITE_TAGS) or next(GEO_VAR.IP_TAGS)) and not no_run then convert_geofile() end end diff --git a/openwrt-passwall/luci-app-passwall/luasrc/passwall/util_xray.lua b/openwrt-passwall/luci-app-passwall/luasrc/passwall/util_xray.lua index a681ff565f..dd8ab925a3 100644 --- a/openwrt-passwall/luci-app-passwall/luasrc/passwall/util_xray.lua +++ b/openwrt-passwall/luci-app-passwall/luasrc/passwall/util_xray.lua @@ -6,18 +6,6 @@ local jsonc = api.jsonc local appname = "passwall" local fs = api.fs -local new_port - -local function get_new_port() - local cmd_format = ". /usr/share/passwall/utils.sh ; echo -n $(get_new_port %s tcp)" - local set_port = 0 - if new_port and tonumber(new_port) then - set_port = tonumber(new_port) + 1 - end - new_port = tonumber(sys.exec(string.format(cmd_format, set_port == 0 and "auto" or set_port))) - return new_port -end - local function get_noise_packets() local noises = {} uci:foreach(appname, "xray_noise_packets", function(n) @@ -73,7 +61,7 @@ function gen_outbound(flag, node, tag, proxy_table) node.transport = "tcp" else local relay_port = node.port - new_port = get_new_port() + local new_port = api.get_new_port() local config_file = string.format("%s_%s_%s.json", flag, tag, new_port) if tag and node_id and not tag:find(node_id) then config_file = string.format("%s_%s_%s_%s.json", flag, tag, node_id, new_port) @@ -731,50 +719,6 @@ function gen_config(var) table.insert(inbounds, inbound) end - if tcp_redir_port or udp_redir_port then - local inbound = { - protocol = "dokodemo-door", - settings = {network = "tcp,udp", followRedirect = true}, - streamSettings = {sockopt = {tproxy = "tproxy"}}, - sniffing = { - enabled = xray_settings.sniffing_override_dest == "1" or node.protocol == "_shunt" - } - } - if inbound.sniffing.enabled == true then - inbound.sniffing.destOverride = {"http", "tls", "quic"} - inbound.sniffing.metadataOnly = false - inbound.sniffing.routeOnly = xray_settings.sniffing_override_dest ~= "1" or nil - inbound.sniffing.domainsExcluded = xray_settings.sniffing_override_dest == "1" and get_domain_excluded() or nil - end - if remote_dns_fake then - inbound.sniffing.enabled = true - if not inbound.sniffing.destOverride then - inbound.sniffing.destOverride = {"fakedns"} - inbound.sniffing.metadataOnly = true - else - table.insert(inbound.sniffing.destOverride, "fakedns") - inbound.sniffing.metadataOnly = false - end - end - - if tcp_redir_port then - local tcp_inbound = api.clone(inbound) - tcp_inbound.tag = "tcp_redir" - tcp_inbound.settings.network = "tcp" - tcp_inbound.port = tonumber(tcp_redir_port) - tcp_inbound.streamSettings.sockopt.tproxy = tcp_proxy_way - table.insert(inbounds, tcp_inbound) - end - - if udp_redir_port then - local udp_inbound = api.clone(inbound) - udp_inbound.tag = "udp_redir" - udp_inbound.settings.network = "udp" - udp_inbound.port = tonumber(udp_redir_port) - table.insert(inbounds, udp_inbound) - end - end - local function gen_loopback(outbound_tag, loopback_dst) if not outbound_tag or outbound_tag == "" then return nil end local inbound_tag = loopback_dst and "lo-to-" .. loopback_dst or outbound_tag .. "-lo" @@ -993,6 +937,8 @@ function gen_config(var) local preproxy_outbound_tag, preproxy_balancer_tag local preproxy_nodes + inner_fakedns = node.fakedns or "0" + local function gen_shunt_node(rule_name, _node_id) if not rule_name then return nil, nil end if not _node_id then @@ -1047,7 +993,7 @@ function gen_config(var) end --new outbound if use_proxy and _node.type ~= "Xray" then - new_port = get_new_port() + local new_port = api.get_new_port() table.insert(inbounds, { tag = "proxy_" .. rule_name, listen = "127.0.0.1", @@ -1193,13 +1139,18 @@ function gen_config(var) outboundTag = outbound_tag, balancerTag = balancer_tag, domain = {}, + fakedns = nil, } domains = {} string.gsub(e.domain_list, '[^' .. "\r\n" .. ']+', function(w) if w:find("#") == 1 then return end + if w:find("rule-set:", 1, true) == 1 or w:find("rs:") == 1 then return end table.insert(domains, w) table.insert(domain_table.domain, w) end) + if inner_fakedns == "1" and node[e[".name"] .. "_fakedns"] == "1" and #domains > 0 then + domain_table.fakedns = true + end if outbound_tag or balancer_tag then table.insert(dns_domain_rules, api.clone(domain_table)) end @@ -1210,6 +1161,7 @@ function gen_config(var) ip = {} string.gsub(e.ip_list, '[^' .. "\r\n" .. ']+', function(w) if w:find("#") == 1 then return end + if w:find("rule-set:", 1, true) == 1 or w:find("rs:") == 1 then return end table.insert(ip, w) end) if #ip == 0 then ip = nil end @@ -1228,7 +1180,7 @@ function gen_config(var) balancerTag = balancer_tag, network = e["network"] or "tcp,udp", source = source, - sourcePort = e["sourcePort"] ~= "" and e["sourcePort"] or nil, + --sourcePort = e["sourcePort"] ~= "" and e["sourcePort"] or nil, port = e["port"] ~= "" and e["port"] or nil, protocol = protocols } @@ -1320,6 +1272,50 @@ function gen_config(var) network = "tcp,udp" }) end + + if tcp_redir_port or udp_redir_port then + local inbound = { + protocol = "dokodemo-door", + settings = {network = "tcp,udp", followRedirect = true}, + streamSettings = {sockopt = {tproxy = "tproxy"}}, + sniffing = { + enabled = xray_settings.sniffing_override_dest == "1" or node.protocol == "_shunt" + } + } + if inbound.sniffing.enabled == true then + inbound.sniffing.destOverride = {"http", "tls", "quic"} + inbound.sniffing.metadataOnly = false + inbound.sniffing.routeOnly = xray_settings.sniffing_override_dest ~= "1" or nil + inbound.sniffing.domainsExcluded = xray_settings.sniffing_override_dest == "1" and get_domain_excluded() or nil + end + if remote_dns_fake or inner_fakedns == "1" then + inbound.sniffing.enabled = true + if not inbound.sniffing.destOverride then + inbound.sniffing.destOverride = {"fakedns"} + inbound.sniffing.metadataOnly = true + else + table.insert(inbound.sniffing.destOverride, "fakedns") + inbound.sniffing.metadataOnly = false + end + end + + if tcp_redir_port then + local tcp_inbound = api.clone(inbound) + tcp_inbound.tag = "tcp_redir" + tcp_inbound.settings.network = "tcp" + tcp_inbound.port = tonumber(tcp_redir_port) + tcp_inbound.streamSettings.sockopt.tproxy = tcp_proxy_way + table.insert(inbounds, tcp_inbound) + end + + if udp_redir_port then + local udp_inbound = api.clone(inbound) + udp_inbound.tag = "udp_redir" + udp_inbound.settings.network = "udp" + udp_inbound.port = tonumber(udp_redir_port) + table.insert(inbounds, udp_inbound) + end + end end if (remote_dns_udp_server and remote_dns_udp_port) or (remote_dns_tcp_server and remote_dns_tcp_port) then @@ -1402,7 +1398,7 @@ function gen_config(var) address = "fakedns", } - if remote_dns_fake then + if remote_dns_fake or inner_fakedns == "1" then fakedns = {} local fakedns4 = { ipPool = "198.18.0.0/15", @@ -1420,7 +1416,9 @@ function gen_config(var) elseif remote_dns_query_strategy == "UseIPv6" then table.insert(fakedns, fakedns6) end - table.insert(dns.servers, 1, _remote_fakedns) + if remote_dns_fake and inner_fakedns == "0" then + table.insert(dns.servers, 1, _remote_fakedns) + end end local dns_outbound_tag = "direct" @@ -1510,7 +1508,7 @@ function gen_config(var) if value.outboundTag == "direct" and _direct_dns.address then dns_server = api.clone(_direct_dns) else - if remote_dns_fake then + if value.fakedns then dns_server = api.clone(_remote_fakedns) else dns_server = api.clone(_remote_dns) diff --git a/openwrt-passwall/luci-app-passwall/po/zh-cn/passwall.po b/openwrt-passwall/luci-app-passwall/po/zh-cn/passwall.po index e93010bf6f..e69c473f37 100644 --- a/openwrt-passwall/luci-app-passwall/po/zh-cn/passwall.po +++ b/openwrt-passwall/luci-app-passwall/po/zh-cn/passwall.po @@ -1273,9 +1273,21 @@ msgstr "完整匹配: 由'full:'开始,余下部分是一个域名。当此域 msgid "Pre-defined domain list: Begining with 'geosite:' and the rest is a name, such as geosite:google or geosite:cn." msgstr "预定义域名列表:由'geosite:'开头,余下部分是一个名称,如geosite:google或者geosite:cn。" +msgid "Sing-Box is compatible with Geo rules and rule-set. rule-set begin with 'rule-set:remote:' or 'rule-set:local:'." +msgstr "Sing-Box 可兼容 Geo 规则和规则集,规则集由 'rule-set:remote:' 或 'rule-set:local:' 开始。" + +msgid "Such as:" +msgstr "例如:" + msgid "Annotation: Begining with #" msgstr "注释: 由 # 开头" +msgid "Invert match result." +msgstr "反选匹配结果。" + +msgid "Only support Sing-Box." +msgstr "只支持 Sing-Box。" + msgid "IP: such as '127.0.0.1'." msgstr "IP: 形如'127.0.0.1'。" diff --git a/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/app.sh b/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/app.sh index 43a66b0965..c1502f9c24 100755 --- a/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/app.sh +++ b/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/app.sh @@ -3,8 +3,8 @@ # Copyright (C) 2021-2025 xiaorouji # Copyright (C) 2026 Openwrt-Passwall Organization -. $IPKG_INSTROOT/lib/functions.sh -. $IPKG_INSTROOT/lib/functions/service.sh +. /lib/functions.sh +. /lib/functions/service.sh . /usr/share/passwall/utils.sh @@ -71,109 +71,6 @@ check_run_environment() { fi } - - -first_type() { - [ "${1#/}" != "$1" ] && [ -x "$1" ] && echo "$1" && return - for p in "/bin/$1" "/usr/bin/$1" "${TMP_BIN_PATH:-/tmp}/$1"; do - [ -x "$p" ] && echo "$p" && return - done - command -v "$1" 2>/dev/null || command -v "$2" 2>/dev/null -} - -is_socks_wrap() { - case "$1" in - Socks_*) return 0 ;; - *) return 1 ;; - esac -} - -ln_run() { - local file_func=${1} - local ln_name=${2} - local output=${3} - - shift 3; - if [ "${file_func%%/*}" != "${file_func}" ]; then - [ ! -L "${file_func}" ] && { - ln -s "${file_func}" "${TMP_BIN_PATH}/${ln_name}" >/dev/null 2>&1 - file_func="${TMP_BIN_PATH}/${ln_name}" - } - [ -x "${file_func}" ] || echolog " - $(readlink ${file_func}) 没有执行权限,无法启动:${file_func} $*" - fi - #echo "${file_func} $*" >&2 - [ -n "${file_func}" ] || echolog " - 找不到 ${ln_name},无法启动..." - [ "${output}" != "/dev/null" ] && [ "${ln_name}" != "chinadns-ng" ] && { - local persist_log_path=$(config_t_get global persist_log_path) - local sys_log=$(config_t_get global sys_log "0") - } - if [ -z "$persist_log_path" ] && [ "$sys_log" != "1" ]; then - ${file_func:-echolog " - ${ln_name}"} "$@" >${output} 2>&1 & - else - [ "${output: -1, -7}" == "TCP.log" ] && local protocol="TCP" - [ "${output: -1, -7}" == "UDP.log" ] && local protocol="UDP" - if [ -n "${persist_log_path}" ]; then - mkdir -p ${persist_log_path} - local log_file=${persist_log_path}/passwall_${protocol}_${ln_name}_$(date '+%F').log - echolog "记录到持久性日志文件:${log_file}" - ${file_func:-echolog " - ${ln_name}"} "$@" >> ${log_file} 2>&1 & - sys_log=0 - fi - if [ "${sys_log}" == "1" ]; then - echolog "记录 ${ln_name}_${protocol} 到系统日志" - ${file_func:-echolog " - ${ln_name}"} "$@" 2>&1 | logger -t PASSWALL_${protocol}_${ln_name} & - fi - fi - process_count=$(ls $TMP_SCRIPT_FUNC_PATH | wc -l) - process_count=$((process_count + 1)) - echo "${file_func:-echolog " - ${ln_name}"} $@ >${output}" > $TMP_SCRIPT_FUNC_PATH/$process_count -} - -parse_doh() { - local __doh=$1 __url_var=$2 __host_var=$3 __port_var=$4 __bootstrap_var=$5 - __doh=$(echo -e "$__doh" | tr -d ' \t\n') - local __url=${__doh%%,*} - local __bootstrap=${__doh#*,} - local __host_port=$(lua_api "get_domain_from_url(\"${__url}\")") - local __host __port - if echo "${__host_port}" | grep -q '^\[.*\]:[0-9]\+$'; then - __host=${__host_port%%]:*}] - __port=${__host_port##*:} - elif echo "${__host_port}" | grep -q ':[0-9]\+$'; then - __host=${__host_port%:*} - __port=${__host_port##*:} - else - __host=${__host_port} - __port=443 - fi - __host=${__host#[} - __host=${__host%]} - if [ "$(lua_api "is_ip(\"${__host}\")")" = "true" ]; then - __bootstrap=${__host} - fi - __bootstrap=${__bootstrap#[} - __bootstrap=${__bootstrap%]} - eval "${__url_var}='${__url}' ${__host_var}='${__host}' ${__port_var}='${__port}' ${__bootstrap_var}='${__bootstrap}'" -} - -get_geoip() { - local geoip_code="$1" - local geoip_type_flag="" - local geoip_path="${V2RAY_LOCATION_ASSET%*/}/geoip.dat" - [ -s "$geoip_path" ] || { echo ""; return 1; } - case "$2" in - "ipv4") geoip_type_flag="-ipv6=false" ;; - "ipv6") geoip_type_flag="-ipv4=false" ;; - esac - if type geoview &> /dev/null; then - geoview -input "$geoip_path" -list "$geoip_code" $geoip_type_flag -lowmem=true - return 0 - else - echo "" - return 1 - fi -} - run_ipt2socks() { local flag proto tcp_tproxy local_port socks_address socks_port socks_username socks_password log_file local _extra_param="" @@ -1111,14 +1008,6 @@ socks_node_switch() { } } -clean_log() { - logsnum=$(cat $LOG_FILE 2>/dev/null | wc -l) - [ "$logsnum" -gt 1000 ] && { - echo "" > $LOG_FILE - echolog "日志文件过长,清空处理!" - } -} - clean_crontab() { [ -f "/tmp/lock/${CONFIG}_cron.lock" ] && return touch /etc/crontabs/root @@ -1556,10 +1445,6 @@ start_haproxy() { ln_run "$(first_type haproxy)" haproxy "/dev/null" -f "${haproxy_path}/${haproxy_conf}" } -kill_all() { - kill -9 $(pidof "$@") >/dev/null 2>&1 -} - acl_app() { local items=$(uci show ${CONFIG} | grep "=acl_rule" | cut -d '.' -sf 2 | cut -d '=' -sf 1) [ -n "$items" ] && { @@ -1754,7 +1639,6 @@ acl_app() { if [ -n "${type}" ] && ([ "${type}" = "sing-box" ] || [ "${type}" = "xray" ]); then config_file="acl/${tcp_node}_TCP_${redir_port}.json" _extra_param="socks_address=127.0.0.1 socks_port=$socks_port" - _extra_param="${_extra_param} tcp_proxy_way=$TCP_PROXY_WAY" if [ "$dns_mode" = "sing-box" ] || [ "$dns_mode" = "xray" ]; then dns_port=$(get_new_port $(expr $dns_port + 1)) _dns_port=$dns_port @@ -1766,6 +1650,7 @@ acl_app() { [ "$dns_mode" = "xray" ] && [ "$v2ray_dns_mode" = "tcp+doh" ] && remote_dns_doh=${remote_dns_doh:-https://1.1.1.1/dns-query} _extra_param="dns_listen_port=${_dns_port} remote_dns_protocol=${v2ray_dns_mode} remote_dns_udp_server=${remote_dns} remote_dns_tcp_server=${remote_dns} remote_dns_doh=${remote_dns_doh} remote_dns_query_strategy=${remote_dns_query_strategy} remote_dns_client_ip=${remote_dns_client_ip}" fi + _extra_param="${_extra_param} tcp_proxy_way=$TCP_PROXY_WAY" [ -n "$udp_node" ] && ([ "$udp_node" = "tcp" ] || [ "$udp_node" = "$tcp_node" ]) && { config_file="${config_file//TCP_/TCP_UDP_}" _extra_param="${_extra_param} udp_redir_port=$redir_port" diff --git a/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/haproxy.lua b/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/haproxy.lua index cfc09be0ba..fcff734469 100644 --- a/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/haproxy.lua +++ b/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/haproxy.lua @@ -17,17 +17,6 @@ function get_ip_port_from(str) return result_ip, result_port end -local new_port -local function get_new_port() - local cmd_format = ". /usr/share/passwall/utils.sh ; echo -n $(get_new_port %s tcp)" - local set_port = 0 - if new_port and tonumber(new_port) then - set_port = tonumber(new_port) + 1 - end - new_port = tonumber(sys.exec(string.format(cmd_format, set_port == 0 and "auto" or set_port))) - return new_port -end - local var = api.get_args(arg) local haproxy_path = var["-path"] local haproxy_conf = var["-conf"] @@ -119,7 +108,7 @@ uci:foreach(appname, "haproxy_config", function(t) if health_check_type == "passwall_logic" then if server_node.type ~= "Socks" then local relay_port = server_node.port - new_port = get_new_port() + local new_port = api.get_new_port() local config_file = string.format("haproxy_%s_%s.json", t[".name"], new_port) sys.call(string.format('/usr/share/%s/app.sh run_socks "%s"> /dev/null', appname, diff --git a/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/helper_chinadns_add.lua b/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/helper_chinadns_add.lua index c17dde63d2..d52d9f34d6 100644 --- a/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/helper_chinadns_add.lua +++ b/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/helper_chinadns_add.lua @@ -166,17 +166,23 @@ local file_vpslist = TMP_ACL_PATH .. "/vpslist" if not is_file_nonzero(file_vpslist) then local f_out = io.open(file_vpslist, "w") local written_domains = {} - uci:foreach(appname, "nodes", function(t) - local function process_address(address) - if address == "engage.cloudflareclient.com" then return end - if datatypes.hostname(address) and not written_domains[address] then - f_out:write(address .. "\n") - written_domains[address] = true - end + local function process_address(address) + if address == "engage.cloudflareclient.com" then return end + if datatypes.hostname(address) and not written_domains[address] then + f_out:write(address .. "\n") + written_domains[address] = true end + end + uci:foreach(appname, "nodes", function(t) process_address(t.address) process_address(t.download_address) end) + uci:foreach(appname, "subscribe_list", function(t) --订阅链接 + local url, _ = api.get_domain_port_from_url(t.url or "") + if url and url ~= "" then + process_address(url) + end + end) f_out:close() end if is_file_nonzero(file_vpslist) then diff --git a/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/helper_dnsmasq.lua b/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/helper_dnsmasq.lua index f53085a940..4053983c83 100644 --- a/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/helper_dnsmasq.lua +++ b/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/helper_dnsmasq.lua @@ -365,17 +365,23 @@ function add_rule(var) setflag_4 .. "passwall_vps", setflag_6 .. "passwall_vps6" } - uci:foreach(appname, "nodes", function(t) - local function process_address(address) - if address == "engage.cloudflareclient.com" then return end - if datatypes.hostname(address) then - set_domain_dns(address, fwd_dns) - set_domain_ipset(address, table.concat(sets, ",")) - end + local function process_address(address) + if address == "engage.cloudflareclient.com" then return end + if datatypes.hostname(address) then + set_domain_dns(address, fwd_dns) + set_domain_ipset(address, table.concat(sets, ",")) end + end + uci:foreach(appname, "nodes", function(t) process_address(t.address) process_address(t.download_address) end) + uci:foreach(appname, "subscribe_list", function(t) --订阅链接 + local url, _ = api.get_domain_port_from_url(t.url or "") + if url and url ~= "" then + process_address(url) + end + end) log(string.format(" - 节点列表中的域名(vpslist):%s", fwd_dns or "默认")) end end diff --git a/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/helper_smartdns_add.lua b/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/helper_smartdns_add.lua index 499b44cd07..2f61a22d1a 100644 --- a/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/helper_smartdns_add.lua +++ b/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/helper_smartdns_add.lua @@ -309,17 +309,23 @@ local file_vpslist = TMP_ACL_PATH .. "/vpslist" if not is_file_nonzero(file_vpslist) then local f_out = io.open(file_vpslist, "w") local written_domains = {} - uci:foreach(appname, "nodes", function(t) - local function process_address(address) - if address == "engage.cloudflareclient.com" then return end - if datatypes.hostname(address) and not written_domains[address] then - f_out:write(address .. "\n") - written_domains[address] = true - end + local function process_address(address) + if address == "engage.cloudflareclient.com" then return end + if datatypes.hostname(address) and not written_domains[address] then + f_out:write(address .. "\n") + written_domains[address] = true end + end + uci:foreach(appname, "nodes", function(t) process_address(t.address) process_address(t.download_address) end) + uci:foreach(appname, "subscribe_list", function(t) --订阅链接 + local url, _ = api.get_domain_port_from_url(t.url or "") + if url and url ~= "" then + process_address(url) + end + end) f_out:close() end if is_file_nonzero(file_vpslist) then diff --git a/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/iptables.sh b/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/iptables.sh index ef4a31a5e5..11fd635274 100755 --- a/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/iptables.sh +++ b/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/iptables.sh @@ -769,6 +769,9 @@ filter_vpsip() { echolog " - [$?]加入所有IPv4节点到ipset[$IPSET_VPS]直连完成" uci show $CONFIG | grep -E "(.address=|.download_address=)" | cut -d "'" -f 2 | grep -E "([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}" | sed -e "/^$/d" | sed -e "s/^/add $IPSET_VPS6 &/g" | awk '{print $0} END{print "COMMIT"}' | ipset -! -R echolog " - [$?]加入所有IPv6节点到ipset[$IPSET_VPS6]直连完成" + #订阅方式为直连时 + get_subscribe_host | grep -E "([0-9]{1,3}[\.]){3}[0-9]{1,3}" | grep -v "^127\.0\.0\.1$" | sed -e "/^$/d" | sed -e "s/^/add $IPSET_VPS &/g" | awk '{print $0} END{print "COMMIT"}' | ipset -! -R + get_subscribe_host | grep -E "([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}" | sed -e "/^$/d" | sed -e "s/^/add $IPSET_VPS6 &/g" | awk '{print $0} END{print "COMMIT"}' | ipset -! -R } filter_server_port() { diff --git a/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/nftables.sh b/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/nftables.sh index 9f367d1c90..f562f8b2eb 100755 --- a/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/nftables.sh +++ b/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/nftables.sh @@ -812,6 +812,9 @@ filter_vpsip() { echolog " - [$?]加入所有IPv4节点到nftset[$NFTSET_VPS]直连完成" uci show $CONFIG | grep -E "(.address=|.download_address=)" | cut -d "'" -f 2 | grep -E "([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}" | sed -e "/^$/d" | insert_nftset $NFTSET_VPS6 "-1" echolog " - [$?]加入所有IPv6节点到nftset[$NFTSET_VPS6]直连完成" + #订阅方式为直连时 + get_subscribe_host | grep -E "([0-9]{1,3}[\.]){3}[0-9]{1,3}" | grep -v "^127\.0\.0\.1$" | sed -e "/^$/d" | insert_nftset $NFTSET_VPS "-1" + get_subscribe_host | grep -E "([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}" | sed -e "/^$/d" | insert_nftset $NFTSET_VPS6 "-1" } filter_server_port() { diff --git a/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/socks_auto_switch.sh b/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/socks_auto_switch.sh index a1af17957a..7ff7cf94dd 100755 --- a/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/socks_auto_switch.sh +++ b/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/socks_auto_switch.sh @@ -48,7 +48,7 @@ test_node() { local node_id=$1 local _type=$(echo $(config_n_get ${node_id} type) | tr 'A-Z' 'a-z') [ -n "${_type}" ] && { - local _tmp_port=$(get_new_port 61080 tcp,udp) + local _tmp_port=$(get_new_port 48800 tcp,udp) $APP_FILE run_socks flag="test_node_${node_id}" node=${node_id} bind=127.0.0.1 socks_port=${_tmp_port} config_file=test_node_${node_id}.json local curlx="socks5h://127.0.0.1:${_tmp_port}" sleep 1s diff --git a/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/subscribe.lua b/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/subscribe.lua index 751e366d05..a9e2bda9eb 100755 --- a/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/subscribe.lua +++ b/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/subscribe.lua @@ -446,7 +446,14 @@ local function get_subscribe_info(cfgid, value) for _, p in ipairs(rem_patterns) do rem_traffic = value:match(p) or rem_traffic end subscribe_info[cfgid] = subscribe_info[cfgid] or {expired_date = "", rem_traffic = ""} if expired_date then - subscribe_info[cfgid]["expired_date"] = expired_date + local function formatDate(str) + local y, m, d = str:match("(%d%d%d%d)[-/]?(%d%d?)[-/]?(%d%d?)") + if y and m and d then + return y .. "." .. m .. "." .. d + end + return str + end + subscribe_info[cfgid]["expired_date"] = formatDate(expired_date) end if rem_traffic then subscribe_info[cfgid]["rem_traffic"] = rem_traffic @@ -1560,11 +1567,11 @@ local function curl(url, file, ua, mode) curl_args[#curl_args + 1] = get_headers() local return_code, result if mode == "direct" then - return_code, result = api.curl_direct(url, file, curl_args) + return_code, result = api.curl_base(url, file, curl_args) elseif mode == "proxy" then return_code, result = api.curl_proxy(url, file, curl_args) else - return_code, result = api.curl_auto(url, file, curl_args) + return_code, result = api.curl_logic(url, file, curl_args) end return tonumber(result) end diff --git a/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/test.sh b/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/test.sh index e7d0da229f..525ec70f06 100755 --- a/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/test.sh +++ b/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/test.sh @@ -56,7 +56,7 @@ url_test_node() { [ -n "${_username}" ] && [ -n "${_password}" ] && curlx="socks5h://${_username}:${_password}@${_address}:${_port}" } else - local _tmp_port=$(get_new_port 61080 tcp) + local _tmp_port=$(get_new_port 48900 tcp,udp) /usr/share/${CONFIG}/app.sh run_socks flag="url_test_${node_id}" node=${node_id} bind=127.0.0.1 socks_port=${_tmp_port} config_file=url_test_${node_id}.json local curlx="socks5h://127.0.0.1:${_tmp_port}" fi diff --git a/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/utils.sh b/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/utils.sh index a11f5c5f01..79a61521c6 100755 --- a/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/utils.sh +++ b/openwrt-passwall/luci-app-passwall/root/usr/share/passwall/utils.sh @@ -20,6 +20,14 @@ echolog() { echo -e "$d: $*" >>$LOG_FILE } +clean_log() { + logsnum=$(cat $LOG_FILE 2>/dev/null | wc -l) + [ "$logsnum" -gt 1000 ] && { + echo "" > $LOG_FILE + echolog "日志文件过长,清空处理!" + } +} + config_get_type() { local ret=$(uci -q get "${CONFIG}.${1}" 2>/dev/null) echo "${ret:=$2}" @@ -41,10 +49,36 @@ config_t_set() { local ret=$(uci -q set "${CONFIG}.@${1}[${index}].${2}=${3}" 2>/dev/null) } +first_type() { + [ "${1#/}" != "$1" ] && [ -x "$1" ] && echo "$1" && return + for p in "/bin/$1" "/usr/bin/$1" "${TMP_BIN_PATH:-/tmp}/$1"; do + [ -x "$p" ] && echo "$p" && return + done + command -v "$1" 2>/dev/null || command -v "$2" 2>/dev/null +} + get_enabled_anonymous_secs() { uci -q show "${CONFIG}" | grep "${1}\[.*\.enabled='1'" | cut -d '.' -sf2 } +get_geoip() { + local geoip_code="$1" + local geoip_type_flag="" + local geoip_path="${V2RAY_LOCATION_ASSET%*/}/geoip.dat" + [ -s "$geoip_path" ] || { echo ""; return 1; } + case "$2" in + "ipv4") geoip_type_flag="-ipv6=false" ;; + "ipv6") geoip_type_flag="-ipv4=false" ;; + esac + if type geoview &> /dev/null; then + geoview -input "$geoip_path" -list "$geoip_code" $geoip_type_flag -lowmem=true + return 0 + else + echo "" + return 1 + fi +} + get_host_ip() { local host=$2 local count=$3 @@ -101,8 +135,35 @@ get_ip_port_from() { eval "${__ipv}=\"$val1\"; ${__portv}=\"$val2\"" } +parse_doh() { + local __doh=$1 __url_var=$2 __host_var=$3 __port_var=$4 __bootstrap_var=$5 + __doh=$(echo -e "$__doh" | tr -d ' \t\n') + local __url=${__doh%%,*} + local __bootstrap=${__doh#*,} + local __host_port=$(lua_api "get_domain_from_url(\"${__url}\")") + local __host __port + if echo "${__host_port}" | grep -q '^\[.*\]:[0-9]\+$'; then + __host=${__host_port%%]:*}] + __port=${__host_port##*:} + elif echo "${__host_port}" | grep -q ':[0-9]\+$'; then + __host=${__host_port%:*} + __port=${__host_port##*:} + else + __host=${__host_port} + __port=443 + fi + __host=${__host#[} + __host=${__host%]} + if [ "$(lua_api "is_ip(\"${__host}\")")" = "true" ]; then + __bootstrap=${__host} + fi + __bootstrap=${__bootstrap#[} + __bootstrap=${__bootstrap%]} + eval "${__url_var}='${__url}' ${__host_var}='${__host}' ${__port_var}='${__port}' ${__bootstrap_var}='${__bootstrap}'" +} + host_from_url(){ - local f=${1} + local f="${1}" ## Remove protocol part of url ## f="${f##http://}" @@ -184,16 +245,22 @@ check_port_exists() { } get_new_port() { + local default_start_port=2000 + local min_port=1025 + local max_port=49151 local port=$1 - [ "$port" == "auto" ] && port=2082 + [ "$port" == "auto" ] && port=$default_start_port + [ "$port" -lt $min_port -o "$port" -gt $max_port ] && port=$default_start_port local protocol=$(echo $2 | tr 'A-Z' 'a-z') local result=$(check_port_exists $port $protocol) if [ "$result" != 0 ]; then local temp= - if [ "$port" -lt 65535 ]; then + if [ "$port" -lt $max_port ]; then temp=$(expr $port + 1) - elif [ "$port" -gt 1 ]; then + elif [ "$port" -gt $min_port ]; then temp=$(expr $port - 1) + else + temp=$default_start_port fi get_new_port $temp $protocol else @@ -315,3 +382,66 @@ delete_ip2route() { done } } + +ln_run() { + local file_func=${1} + local ln_name=${2} + local output=${3} + + shift 3; + if [ "${file_func%%/*}" != "${file_func}" ]; then + [ ! -L "${file_func}" ] && { + ln -s "${file_func}" "${TMP_BIN_PATH}/${ln_name}" >/dev/null 2>&1 + file_func="${TMP_BIN_PATH}/${ln_name}" + } + [ -x "${file_func}" ] || echolog " - $(readlink ${file_func}) 没有执行权限,无法启动:${file_func} $*" + fi + #echo "${file_func} $*" >&2 + [ -n "${file_func}" ] || echolog " - 找不到 ${ln_name},无法启动..." + [ "${output}" != "/dev/null" ] && [ "${ln_name}" != "chinadns-ng" ] && { + local persist_log_path=$(config_t_get global persist_log_path) + local sys_log=$(config_t_get global sys_log "0") + } + if [ -z "$persist_log_path" ] && [ "$sys_log" != "1" ]; then + ${file_func:-echolog " - ${ln_name}"} "$@" >${output} 2>&1 & + else + [ "${output: -1, -7}" == "TCP.log" ] && local protocol="TCP" + [ "${output: -1, -7}" == "UDP.log" ] && local protocol="UDP" + if [ -n "${persist_log_path}" ]; then + mkdir -p ${persist_log_path} + local log_file=${persist_log_path}/passwall_${protocol}_${ln_name}_$(date '+%F').log + echolog "记录到持久性日志文件:${log_file}" + ${file_func:-echolog " - ${ln_name}"} "$@" >> ${log_file} 2>&1 & + sys_log=0 + fi + if [ "${sys_log}" == "1" ]; then + echolog "记录 ${ln_name}_${protocol} 到系统日志" + ${file_func:-echolog " - ${ln_name}"} "$@" 2>&1 | logger -t PASSWALL_${protocol}_${ln_name} & + fi + fi + process_count=$(ls $TMP_SCRIPT_FUNC_PATH | wc -l) + process_count=$((process_count + 1)) + echo "${file_func:-echolog " - ${ln_name}"} $@ >${output}" > $TMP_SCRIPT_FUNC_PATH/$process_count +} + +is_socks_wrap() { + case "$1" in + Socks_*) return 0 ;; + *) return 1 ;; + esac +} + +kill_all() { + kill -9 $(pidof "$@") >/dev/null 2>&1 +} + +get_subscribe_host(){ + local line + uci show "${CONFIG}" | grep "=subscribe_list" | while read -r line; do + local section="$(echo "$line" | cut -d '.' -sf 2 | cut -d '=' -sf 1)" + local url="$(config_n_get $section url)" + [ -n "$url" ] || continue + url="$(host_from_url "$url")" + echo "$url" + done +} diff --git a/openwrt-passwall2/.github/workflows/Auto compile with openwrt sdk.yml b/openwrt-passwall2/.github/workflows/Auto compile with openwrt sdk.yml index 39ee52a5b2..1dc0508f23 100644 --- a/openwrt-passwall2/.github/workflows/Auto compile with openwrt sdk.yml +++ b/openwrt-passwall2/.github/workflows/Auto compile with openwrt sdk.yml @@ -14,9 +14,6 @@ on: env: TZ: Asia/Shanghai passwall2: ${{ github.repository }} - packages: Openwrt-Passwall/openwrt-passwall-packages - package_names: "chinadns-ng geoview hysteria naiveproxy tcping tuic-client shadowsocks-rust shadowsocksr-libev simple-obfs sing-box v2ray-geodata v2ray-plugin xray-core" - package_release: "chinadns-ng geoview hysteria naiveproxy tcping tuic-client shadowsocks-rust shadowsocksr-libev simple-obfs sing-box v2ray-geoip v2ray-geosite v2ray-plugin xray-core" permissions: contents: write @@ -156,12 +153,25 @@ jobs: rm -rf temp_resp git clone -b master --single-branch https://github.com/openwrt/packages.git temp_resp + + #--------------------------------------Update Golang------------------------------------------ echo "update golang version" rm -rf feeds/packages/lang/golang cp -r temp_resp/lang/golang feeds/packages/lang + + #--------------------------------------Get latest Golang version------------------------------------------ + wget https://go.dev/dl/?mode=json -O /tmp/golang.json + go_latest_version=$(cat /tmp/golang.json | jq -r '.[0].version') + GO_VERSION_MAJOR_MINOR=$(echo $go_latest_version | sed 's#go##' | awk -F '.' '{print $1 "." $2}') + GO_VERSION_PATCH=$(echo $go_latest_version | sed 's#go##' | awk -F '.' '{print $3}') + go_latest_version_hash=$(cat /tmp/golang.json | jq -r '.[0].files[0].sha256') + sed -i -e "s/^GO_VERSION_MAJOR_MINOR:=.*/GO_VERSION_MAJOR_MINOR:=${GO_VERSION_MAJOR_MINOR}/" -e "s/^GO_VERSION_PATCH:=.*/GO_VERSION_PATCH:=${GO_VERSION_PATCH}/" -e "s/^PKG_HASH:=.*/PKG_HASH:=${go_latest_version_hash}/" "feeds/packages/lang/golang/golang/Makefile" + + #--------------------------------------Update Rust------------------------------------------ echo "update rust version" rm -rf feeds/packages/lang/rust cp -r temp_resp/lang/rust feeds/packages/lang + rm -rf temp_resp echo "update patch-kernel.sh" @@ -181,6 +191,7 @@ jobs: echo "CONFIG_ALL=n" >> .config echo "CONFIG_AUTOREMOVE=n" >> .config echo "CONFIG_LUCI_LANG_zh_Hans=y" >> .config + echo "CONFIG_LUCI_LANG_zh_Hant=y" >> .config echo "CONFIG_PACKAGE_luci-app-passwall2=m" >> .config make defconfig echo "make package/luci-app-passwall2/{clean,compile} -j$(nproc)" @@ -200,354 +211,3 @@ jobs: with: tag_name: ${{needs.job_check.outputs.passwall2_version}} files: ${{ env.FIRMWARE }}/* - - - job_auto_compile: - if: ${{ needs.job_check.outputs.has_update == 'true' && needs.job_check.outputs.prerelease == 'false' }} - needs: job_check - runs-on: ubuntu-latest - name: build (${{ matrix.ver }}-${{ matrix.platform }}) - strategy: - fail-fast: false - matrix: - include: - - platform: x86_64 - url_sdk: https://downloads.openwrt.org/releases/24.10.4/targets/x86/64/openwrt-sdk-24.10.4-x86-64_gcc-13.3.0_musl.Linux-x86_64.tar.zst - ver: "ipk" - - - platform: aarch64_generic - url_sdk: https://downloads.openwrt.org/releases/24.10.4/targets/rockchip/armv8/openwrt-sdk-24.10.4-rockchip-armv8_gcc-13.3.0_musl.Linux-x86_64.tar.zst - ver: "ipk" - - - platform: aarch64_cortex-a53 - url_sdk: https://downloads.openwrt.org/releases/24.10.4/targets/mvebu/cortexa53/openwrt-sdk-24.10.4-mvebu-cortexa53_gcc-13.3.0_musl.Linux-x86_64.tar.zst - ver: "ipk" - - - platform: aarch64_cortex-a72 - url_sdk: https://downloads.openwrt.org/releases/24.10.4/targets/mvebu/cortexa72/openwrt-sdk-24.10.4-mvebu-cortexa72_gcc-13.3.0_musl.Linux-x86_64.tar.zst - ver: "ipk" - - - platform: arm_cortex-a5_vfpv4 - url_sdk: https://downloads.openwrt.org/releases/24.10.4/targets/at91/sama5/openwrt-sdk-24.10.4-at91-sama5_gcc-13.3.0_musl_eabi.Linux-x86_64.tar.zst - ver: "ipk" - - - platform: arm_cortex-a7 - url_sdk: https://downloads.openwrt.org/releases/24.10.4/targets/mediatek/mt7629/openwrt-sdk-24.10.4-mediatek-mt7629_gcc-13.3.0_musl_eabi.Linux-x86_64.tar.zst - ver: "ipk" - - - platform: arm_cortex-a7_neon-vfpv4 - url_sdk: https://downloads.openwrt.org/releases/24.10.4/targets/sunxi/cortexa7/openwrt-sdk-24.10.4-sunxi-cortexa7_gcc-13.3.0_musl_eabi.Linux-x86_64.tar.zst - ver: "ipk" - - - platform: arm_cortex-a8_vfpv3 - url_sdk: https://downloads.openwrt.org/releases/24.10.4/targets/sunxi/cortexa8/openwrt-sdk-24.10.4-sunxi-cortexa8_gcc-13.3.0_musl_eabi.Linux-x86_64.tar.zst - ver: "ipk" - - - platform: arm_cortex-a9 - url_sdk: https://downloads.openwrt.org/releases/24.10.4/targets/bcm53xx/generic/openwrt-sdk-24.10.4-bcm53xx-generic_gcc-13.3.0_musl_eabi.Linux-x86_64.tar.zst - ver: "ipk" - - - platform: arm_cortex-a9_neon - url_sdk: https://downloads.openwrt.org/releases/24.10.4/targets/zynq/generic/openwrt-sdk-24.10.4-zynq-generic_gcc-13.3.0_musl_eabi.Linux-x86_64.tar.zst - ver: "ipk" - - - platform: arm_cortex-a9_vfpv3-d16 - url_sdk: https://downloads.openwrt.org/releases/24.10.4/targets/mvebu/cortexa9/openwrt-sdk-24.10.4-mvebu-cortexa9_gcc-13.3.0_musl_eabi.Linux-x86_64.tar.zst - ver: "ipk" - - - platform: arm_cortex-a15_neon-vfpv4 - url_sdk: https://downloads.openwrt.org/releases/24.10.4/targets/ipq806x/generic/openwrt-sdk-24.10.4-ipq806x-generic_gcc-13.3.0_musl_eabi.Linux-x86_64.tar.zst - ver: "ipk" - - - platform: mips_24kc - url_sdk: https://downloads.openwrt.org/releases/24.10.4/targets/ath79/generic/openwrt-sdk-24.10.4-ath79-generic_gcc-13.3.0_musl.Linux-x86_64.tar.zst - ver: "ipk" - - - platform: mips_4kec - url_sdk: https://downloads.openwrt.org/releases/24.10.4/targets/realtek/rtl838x/openwrt-sdk-24.10.4-realtek-rtl838x_gcc-13.3.0_musl.Linux-x86_64.tar.zst - ver: "ipk" - - - platform: mips_mips32 - url_sdk: https://downloads.openwrt.org/releases/24.10.4/targets/bcm53xx/generic/openwrt-sdk-24.10.4-bcm53xx-generic_gcc-13.3.0_musl_eabi.Linux-x86_64.tar.zst - ver: "ipk" - - - platform: mipsel_24kc - url_sdk: https://downloads.openwrt.org/releases/24.10.4/targets/ramips/rt288x/openwrt-sdk-24.10.4-ramips-rt288x_gcc-13.3.0_musl.Linux-x86_64.tar.zst - ver: "ipk" - - - platform: mipsel_74kc - url_sdk: https://downloads.openwrt.org/releases/24.10.4/targets/ramips/rt3883/openwrt-sdk-24.10.4-ramips-rt3883_gcc-13.3.0_musl.Linux-x86_64.tar.zst - ver: "ipk" - - - platform: mipsel_mips32 - url_sdk: https://downloads.openwrt.org/releases/24.10.4/targets/bcm47xx/generic/openwrt-sdk-24.10.4-bcm47xx-generic_gcc-13.3.0_musl.Linux-x86_64.tar.zst - ver: "ipk" - - - - - platform: x86_64 - url_sdk: https://downloads.openwrt.org/snapshots/targets/x86/64/openwrt-sdk-x86-64_gcc-14.3.0_musl.Linux-x86_64.tar.zst - ver: "apk" - - - platform: aarch64_generic - url_sdk: https://downloads.openwrt.org/snapshots/targets/rockchip/armv8/openwrt-sdk-rockchip-armv8_gcc-14.3.0_musl.Linux-x86_64.tar.zst - ver: "apk" - - - platform: aarch64_cortex-a53 - url_sdk: https://downloads.openwrt.org/snapshots/targets/mvebu/cortexa53/openwrt-sdk-mvebu-cortexa53_gcc-14.3.0_musl.Linux-x86_64.tar.zst - ver: "apk" - - - platform: aarch64_cortex-a72 - url_sdk: https://downloads.openwrt.org/snapshots/targets/mvebu/cortexa72/openwrt-sdk-mvebu-cortexa72_gcc-14.3.0_musl.Linux-x86_64.tar.zst - ver: "apk" - - - platform: arm_cortex-a5_vfpv4 - url_sdk: https://downloads.openwrt.org/snapshots/targets/at91/sama5/openwrt-sdk-at91-sama5_gcc-14.3.0_musl_eabi.Linux-x86_64.tar.zst - ver: "apk" - - - platform: arm_cortex-a7 - url_sdk: https://downloads.openwrt.org/snapshots/targets/mediatek/mt7629/openwrt-sdk-mediatek-mt7629_gcc-14.3.0_musl_eabi.Linux-x86_64.tar.zst - ver: "apk" - - - platform: arm_cortex-a7_neon-vfpv4 - url_sdk: https://downloads.openwrt.org/snapshots/targets/sunxi/cortexa7/openwrt-sdk-sunxi-cortexa7_gcc-14.3.0_musl_eabi.Linux-x86_64.tar.zst - ver: "apk" - - - platform: arm_cortex-a8_vfpv3 - url_sdk: https://downloads.openwrt.org/snapshots/targets/sunxi/cortexa8/openwrt-sdk-sunxi-cortexa8_gcc-14.3.0_musl_eabi.Linux-x86_64.tar.zst - ver: "apk" - - - platform: arm_cortex-a9 - url_sdk: https://downloads.openwrt.org/snapshots/targets/bcm53xx/generic/openwrt-sdk-bcm53xx-generic_gcc-14.3.0_musl_eabi.Linux-x86_64.tar.zst - ver: "apk" - - - platform: arm_cortex-a9_neon - url_sdk: https://downloads.openwrt.org/snapshots/targets/zynq/generic/openwrt-sdk-zynq-generic_gcc-14.3.0_musl_eabi.Linux-x86_64.tar.zst - ver: "apk" - - - platform: arm_cortex-a9_vfpv3-d16 - url_sdk: https://downloads.openwrt.org/snapshots/targets/mvebu/cortexa9/openwrt-sdk-mvebu-cortexa9_gcc-14.3.0_musl_eabi.Linux-x86_64.tar.zst - ver: "apk" - - - platform: arm_cortex-a15_neon-vfpv4 - url_sdk: https://downloads.openwrt.org/snapshots/targets/ipq806x/generic/openwrt-sdk-ipq806x-generic_gcc-14.3.0_musl_eabi.Linux-x86_64.tar.zst - ver: "apk" - - - platform: mips_24kc - url_sdk: https://downloads.openwrt.org/snapshots/targets/ath79/generic/openwrt-sdk-ath79-generic_gcc-14.3.0_musl.Linux-x86_64.tar.zst - ver: "apk" - - - platform: mips_4kec - url_sdk: https://downloads.openwrt.org/snapshots/targets/realtek/rtl838x/openwrt-sdk-realtek-rtl838x_gcc-14.3.0_musl.Linux-x86_64.tar.zst - ver: "apk" - - - platform: mips_mips32 - url_sdk: https://downloads.openwrt.org/snapshots/targets/bcm53xx/generic/openwrt-sdk-bcm53xx-generic_gcc-14.3.0_musl_eabi.Linux-x86_64.tar.zst - ver: "apk" - - - platform: mipsel_24kc - url_sdk: https://downloads.openwrt.org/snapshots/targets/ramips/rt288x/openwrt-sdk-ramips-rt288x_gcc-14.2.0_musl.Linux-x86_64.tar.zst - ver: "apk" - - - platform: mipsel_74kc - url_sdk: https://downloads.openwrt.org/snapshots/targets/ramips/rt3883/openwrt-sdk-ramips-rt3883_gcc-14.3.0_musl.Linux-x86_64.tar.zst - ver: "apk" - - - platform: mipsel_mips32 - url_sdk: https://downloads.openwrt.org/snapshots/targets/bcm47xx/generic/openwrt-sdk-bcm47xx-generic_gcc-14.3.0_musl.Linux-x86_64.tar.zst - ver: "apk" - - steps: - - name: Initialization ${{ matrix.platform }} compile environment - run: | - sudo -E rm -rf /usr/share/dotnet /etc/mysql /etc/php /usr/local/lib/android - echo "Install packages" - sudo -E apt-get -qq update - sudo -E apt-get -qq install ack antlr3 asciidoc autoconf automake autopoint binutils bison build-essential \ - bzip2 ccache clang cmake cpio curl device-tree-compiler ecj fastjar flex gawk gettext gcc-multilib \ - g++-multilib git gnutls-dev gperf haveged help2man intltool lib32gcc-s1 libc6-dev-i386 libelf-dev \ - libglib2.0-dev libgmp3-dev libltdl-dev libmpc-dev libmpfr-dev libncurses-dev libpython3-dev \ - libreadline-dev libssl-dev libtool libyaml-dev libz-dev lld llvm lrzsz mkisofs msmtp nano \ - ninja-build p7zip p7zip-full patch pkgconf python3 python3-pip python3-ply python3-docutils \ - python3-pyelftools qemu-utils re2c rsync scons squashfs-tools subversion swig texinfo uglifyjs \ - upx-ucl unzip vim wget xmlto xxd zlib1g-dev zstd - sudo -E apt-get -qq autoremove --purge - sudo -E apt-get -qq clean - - - name: ${{ matrix.platform }} sdk download - run: | - wget ${{ matrix.url_sdk }} - file_name=$(echo ${{matrix.url_sdk}} | awk -F/ '{print $NF}') - mkdir sdk - if [[ $file_name == *.tar.xz ]]; then - tar -xJf $file_name -C ./sdk --strip-components=1 - elif [[ $file_name == *.tar.zst ]]; then - tar --zstd -x -f $file_name -C ./sdk --strip-components=1 - else - echo "Unsupported file format: $file_name" - exit 1 - fi - cd sdk - - - name: SSH connection to Actions - uses: mxschmitt/action-tmate@v3.13 - if: (github.event.inputs.ssh == 'true' && github.event.inputs.ssh != 'false') || contains(github.event.action, 'ssh') - - - name: ${{ matrix.platform }} feeds configuration packages - run: | - cd sdk - - # Update feeds to github source - sed -i \ - -e 's|git\.openwrt\.org/feed|github.com/openwrt|g' \ - -e 's|git\.openwrt\.org/project|github.com/openwrt|g' \ - -e 's|git\.openwrt\.org/openwrt|github.com/openwrt|g' \ - "feeds.conf.default" - - cat > feeds.tmp <<'EOF' - src-git passwall_packages https://github.com/Openwrt-Passwall/openwrt-passwall-packages.git;main - src-git passwall2 https://github.com/${{ env.passwall2 }}.git;${{ github.ref_name }} - EOF - cat feeds.conf.default >> feeds.tmp - mv feeds.tmp feeds.conf.default - - - ./scripts/feeds update -a - ./scripts/feeds install -a - - - #--------------------------------------begin_patches------------------------------------------ - echo "Start applying the patch" - - - rm -rf temp_resp - git clone -b master --single-branch https://github.com/openwrt/packages.git temp_resp - echo "update golang version" - rm -rf feeds/packages/lang/golang - cp -r temp_resp/lang/golang feeds/packages/lang - echo "update rust version" - rm -rf feeds/packages/lang/rust - cp -r temp_resp/lang/rust feeds/packages/lang - rm -rf temp_resp - - echo "update patch-kernel.sh" - git clone -b main --single-branch https://github.com/openwrt/openwrt.git temp_resp - cp -f temp_resp/scripts/patch-kernel.sh scripts/ - rm -rf temp_resp - - echo "fixed rust host build error" - sed -i 's/--set=llvm\.download-ci-llvm=false/--set=llvm.download-ci-llvm=true/' feeds/packages/lang/rust/Makefile - grep -q -- '--ci false \\' feeds/packages/lang/rust/Makefile || sed -i '/x\.py \\/a \ --ci false \\' feeds/packages/lang/rust/Makefile - - - echo "Patch application completed" - #--------------------------------------end_patches-------------------------------------------- - - - echo "CONFIG_ALL_NONSHARED=n" > .config - echo "CONFIG_ALL_KMODS=n" >> .config - echo "CONFIG_ALL=n" >> .config - echo "CONFIG_AUTOREMOVE=n" >> .config - echo "CONFIG_SIGNED_PACKAGES=n" >> .config - echo "CONFIG_PACKAGE_luci-app-passwall2=m" >> .config - echo "CONFIG_PACKAGE_luci-app-passwall2_Iptables_Transparent_Proxy=y" >> .config - echo "CONFIG_PACKAGE_luci-app-passwall2_Nftables_Transparent_Proxy=y" >> .config - echo "CONFIG_PACKAGE_luci-app-passwall2_INCLUDE_Haproxy=y" >> .config - echo "CONFIG_PACKAGE_luci-app-passwall2_INCLUDE_Hysteria=y" >> .config - echo "CONFIG_PACKAGE_luci-app-passwall2_INCLUDE_IPv6_Nat=y" >> .config - echo "CONFIG_PACKAGE_luci-app-passwall2_INCLUDE_NaiveProxy=y" >> .config - echo "CONFIG_PACKAGE_luci-app-passwall2_INCLUDE_Shadowsocks_Libev_Client=y" >> .config - echo "CONFIG_PACKAGE_luci-app-passwall2_INCLUDE_Shadowsocks_Libev_Server=y" >> .config - echo "CONFIG_PACKAGE_luci-app-passwall2_INCLUDE_Shadowsocks_Rust_Client=y" >> .config - echo "CONFIG_PACKAGE_luci-app-passwall2_INCLUDE_Shadowsocks_Rust_Server=y" >> .config - echo "CONFIG_PACKAGE_luci-app-passwall2_INCLUDE_ShadowsocksR_Libev_Client=y" >> .config - echo "CONFIG_PACKAGE_luci-app-passwall2_INCLUDE_ShadowsocksR_Libev_Server=y" >> .config - echo "CONFIG_PACKAGE_luci-app-passwall2_INCLUDE_Simple_Obfs=y" >> .config - echo "CONFIG_PACKAGE_luci-app-passwall2_INCLUDE_SingBox=y" >> .config - echo "CONFIG_PACKAGE_luci-app-passwall2_INCLUDE_tuic_client=y" >> .config - echo "CONFIG_PACKAGE_luci-app-passwall2_INCLUDE_V2ray_Plugin=y" >> .config - - make defconfig - - - name: ${{ matrix.platform }} compile - id: compile - run: | - cd sdk - for package in ${{ env.package_names }}; do - if [ -d "feeds/passwall_packages/$package" ]; then - echo "-----------begin compile $package ---------------" - sleep 10s - make package/$package/compile -j$(nproc) V=s - echo "-----------compiled $package ---------------" - echo "" - fi - done - - echo "status=success" >> $GITHUB_OUTPUT - - - name: Organize ${{ matrix.platform }} files - id: organize - if: steps.compile.outputs.status == 'success' - run: | - cd sdk - - - mkdir tmp_upload - shopt -s nullglob - for src_dir in bin/packages/*/{packages,passwall_packages}; do - [[ -d "$src_dir" ]] || continue - - echo "Scanning: $src_dir" - - for prefix in ${{ env.package_release }}; do - for file in "$src_dir"/"$prefix"*; do - [[ -f "$file" ]] || continue - - filename=$(basename "$file") - echo " Found: $filename" - cp -r "$file" "tmp_upload/" - done - done - done - - mkdir upload - zip -jr upload/passwall_packages_${{ matrix.ver }}_${{ matrix.platform }}.zip tmp_upload/* - - echo "FIRMWARE=$PWD" >> $GITHUB_ENV - echo "status=success" >> $GITHUB_OUTPUT - - - name: Generate release info - id: info - if: steps.compile.outputs.status == 'success' - run: | - cd sdk - echo "## :mega:Update content" >> release.txt - echo "![](https://img.shields.io/github/downloads/${{ env.passwall2 }}/${{needs.job_check.outputs.passwall2_version}}/total?style=flat-square)" >> release.txt - echo "### Passwall2 Info" >> release.txt - echo "**:minidisc: Passwall2 Version: ${{needs.job_check.outputs.passwall2_version}}**" >> release.txt - - echo "### Packages Version" >> release.txt - echo "**package name**|**package version**" >> release.txt - echo "-|-" >> release.txt - - pkgs=$(ls feeds/passwall_packages -I v2ray-geodata | grep -E "$(echo "${{ env.package_names }}" | sed 's/ /|/g')") - for pkg in $pkgs; do - version=$(awk -F ':=' '/PKG_VERSION:=/{print $2}' feeds/passwall_packages/$pkg/Makefile | sed 's/\r//g') - [ -z "${version}" ] && version=$(awk -F ':=' '/PKG_SOURCE_DATE:=/{print $2}' feeds/passwall_packages/$pkg/Makefile | sed 's/\r//g') - echo "**:ice_cube: $pkg**|**${version}**" >> release.txt - done - echo "**:ice_cube: v2ray-geoip**|**$(awk -F ':=' '/GEOIP_VER:=/{print $2}' feeds/passwall_packages/v2ray-geodata/Makefile)**" >> release.txt - echo "**:ice_cube: v2ray-geosite**|**$(awk -F ':=' '/GEOSITE_VER:=/{print $2}' feeds/passwall_packages/v2ray-geodata/Makefile)**" >> release.txt - - touch release.txt - echo "status=success" >> $GITHUB_OUTPUT - - - name: Upload firmware to release - uses: softprops/action-gh-release@v2 - if: steps.info.outputs.status == 'success' - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - tag_name: ${{needs.job_check.outputs.passwall2_version}} - body_path: ${{ env.FIRMWARE }}/release.txt - files: ${{ env.FIRMWARE }}/upload/* diff --git a/openwrt-passwall2/luci-app-passwall2/Makefile b/openwrt-passwall2/luci-app-passwall2/Makefile index 6b50c61e86..7d021f2cb2 100644 --- a/openwrt-passwall2/luci-app-passwall2/Makefile +++ b/openwrt-passwall2/luci-app-passwall2/Makefile @@ -6,7 +6,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-passwall2 -PKG_VERSION:=26.1.18 +PKG_VERSION:=26.1.19 PKG_RELEASE:=1 PKG_PO_VERSION:=$(PKG_VERSION) diff --git a/openwrt-passwall2/luci-app-passwall2/luasrc/model/cbi/passwall2/client/acl_config.lua b/openwrt-passwall2/luci-app-passwall2/luasrc/model/cbi/passwall2/client/acl_config.lua index 0fdfc7c5ae..a219d88afe 100644 --- a/openwrt-passwall2/luci-app-passwall2/luasrc/model/cbi/passwall2/client/acl_config.lua +++ b/openwrt-passwall2/luci-app-passwall2/luasrc/model/cbi/passwall2/client/acl_config.lua @@ -312,9 +312,6 @@ o:depends("remote_dns_protocol", "udp") o = s:option(Flag, "remote_fakedns", "FakeDNS", translate("Use FakeDNS work in the domain that proxy.")) o.default = "0" o.rmempty = false -o:depends("remote_dns_protocol", "tcp") -o:depends("remote_dns_protocol", "doh") -o:depends("remote_dns_protocol", "udp") o = s:option(ListValue, "remote_dns_query_strategy", translate("Remote Query Strategy")) o.default = "UseIPv4" @@ -347,6 +344,12 @@ for k, v in pairs(nodes_table) do if v.type == "Xray" then s.fields["_xray_node"]:depends({ node = v.id }) end + if v.node_type == "normal" or v.protocol == "_balancing" or v.protocol == "_urltest" then + --Shunt node has its own separate options. + s.fields["remote_fakedns"]:depends({ node = v.id, remote_dns_protocol = "tcp" }) + s.fields["remote_fakedns"]:depends({ node = v.id, remote_dns_protocol = "doh" }) + s.fields["remote_fakedns"]:depends({ node = v.id, remote_dns_protocol = "udp" }) + end end s.fields["dns_hosts"]:depends({ _xray_node = "1" }) diff --git a/openwrt-passwall2/luci-app-passwall2/luasrc/model/cbi/passwall2/client/global.lua b/openwrt-passwall2/luci-app-passwall2/luasrc/model/cbi/passwall2/client/global.lua index 0c8323992c..7b3505d415 100644 --- a/openwrt-passwall2/luci-app-passwall2/luasrc/model/cbi/passwall2/client/global.lua +++ b/openwrt-passwall2/luci-app-passwall2/luasrc/model/cbi/passwall2/client/global.lua @@ -161,6 +161,12 @@ if (has_singbox or has_xray) and #nodes_table > 0 then o.cfgvalue = get_cfgvalue(v.id, "main_node") o.write = get_write(v.id, "main_node") + o = s:taboption("Main", Flag, vid .. "-fakedns", "FakeDNS") + o:depends("node", v.id) + o.cfgvalue = get_cfgvalue(v.id, "fakedns") + o.write = get_write(v.id, "fakedns") + o.remove = get_remove(v.id, "fakedns") + if (has_singbox and has_xray) or (v.type == "sing-box" and not has_singbox) or (v.type == "Xray" and not has_xray) then type:depends("node", v.id) else @@ -189,9 +195,16 @@ if (has_singbox or has_xray) and #nodes_table > 0 then pt.remove = get_remove(v.id, id .. "_proxy_tag") pt:value("", translate("Close")) pt:value("main", translate("Preproxy Node")) + + local fakedns_tag = s:taboption("Main", Flag, vid .. "-".. id .. "_fakedns", string.format('* %s', e.remarks .. " " .. "FakeDNS"), translate("Use FakeDNS work in the domain that proxy.")) + fakedns_tag.cfgvalue = get_cfgvalue(v.id, id .. "_fakedns") + fakedns_tag.write = get_write(v.id, id .. "_fakedns") + fakedns_tag.remove = get_remove(v.id, id .. "_fakedns") + for k1, v1 in pairs(socks_list) do o:value(v1.id, v1.remark) o.group[#o.group+1] = (v1.group and v1.group ~= "") and v1.group or translate("default") + fakedns_tag:depends({ [node_option] = v1.id, [vid .. "-fakedns"] = "1" }) end for k1, v1 in pairs(balancing_list) do o:value(v1.id, v1.remark) @@ -209,6 +222,10 @@ if (has_singbox or has_xray) and #nodes_table > 0 then o:value(v1.id, v1.remark) o.group[#o.group+1] = (v1.group and v1.group ~= "") and v1.group or translate("default") pt:depends({ [node_option] = v1.id, [vid .. "-preproxy_enabled"] = "1" }) + fakedns_tag:depends({ [node_option] = v1.id, [vid .. "-fakedns"] = "1" }) + end + if v.default_node ~= "_direct" or v.default_node ~= "_blackhole" then + fakedns_tag:depends({ [node_option] = "_default", [vid .. "-fakedns"] = "1" }) end end end) @@ -509,6 +526,10 @@ for k, v in pairs(nodes_table) do if v.type == "Xray" then s.fields["_xray_node"]:depends({ node = v.id }) end + if v.node_type == "normal" or v.protocol == "_balancing" or v.protocol == "_urltest" then + --Shunt node has its own separate options. + s.fields["remote_fakedns"]:depends({ node = v.id }) + end end m:append(Template(appname .. "/global/footer")) diff --git a/openwrt-passwall2/luci-app-passwall2/luasrc/model/cbi/passwall2/client/shunt_rules.lua b/openwrt-passwall2/luci-app-passwall2/luasrc/model/cbi/passwall2/client/shunt_rules.lua index 5900c246a3..2ec3994181 100644 --- a/openwrt-passwall2/luci-app-passwall2/luasrc/model/cbi/passwall2/client/shunt_rules.lua +++ b/openwrt-passwall2/luci-app-passwall2/luasrc/model/cbi/passwall2/client/shunt_rules.lua @@ -141,7 +141,10 @@ end source.write = dynamicList_write +--[[ +-- Too low usage rate, hidden sourcePort = s:option(Value, "sourcePort", translate("Source port")) +]]-- port = s:option(Value, "port", translate("Port")) diff --git a/openwrt-passwall2/luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/ray.lua b/openwrt-passwall2/luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/ray.lua index b8b5a46306..d655054a7e 100644 --- a/openwrt-passwall2/luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/ray.lua +++ b/openwrt-passwall2/luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/ray.lua @@ -215,7 +215,7 @@ o.default = "2" o.placeholder = "2" o.description = translate("The load balancer selects the optimal number of nodes, and traffic is randomly distributed among them.") - +local default_node = m.uci:get(appname, arg[1], "default_node") or "_direct" -- [[ Shunt Start ]] if #nodes_table > 0 then o = s:option(Flag, _n("preproxy_enabled"), translate("Preproxy")) @@ -244,6 +244,9 @@ if #nodes_table > 0 then if #o.keylist > 0 then o.default = o.keylist[1] end + + o = s:option(Flag, _n("fakedns"), "FakeDNS") + o:depends({ [_n("protocol")] = "_shunt" }) end m.uci:foreach(appname, "shunt_rules", function(e) if e[".name"] and e.remarks then @@ -257,9 +260,16 @@ m.uci:foreach(appname, "shunt_rules", function(e) o.group = {"","","",""} if #nodes_table > 0 then + local pt = s:option(ListValue, _n(e[".name"] .. "_proxy_tag"), string.format('* %s', e.remarks .. " " .. translate("Preproxy"))) + pt:value("", translate("Close")) + pt:value("main", translate("Preproxy Node")) + + local fakedns_tag = s:option(Flag, _n(e[".name"] .. "_fakedns"), string.format('* %s', e.remarks .. " " .. "FakeDNS"), translate("Use FakeDNS work in the domain that proxy.")) + for k, v in pairs(socks_list) do o:value(v.id, v.remark) o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") + fakedns_tag:depends({ [_n("protocol")] = "_shunt", [_n("fakedns")] = true, [_n(e[".name"])] = v.id }) end for k, v in pairs(balancers_table) do o:value(v.id, v.remark) @@ -269,13 +279,14 @@ m.uci:foreach(appname, "shunt_rules", function(e) o:value(v.id, v.remark) o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") end - local pt = s:option(ListValue, _n(e[".name"] .. "_proxy_tag"), string.format('* %s', e.remarks .. " " .. translate("Preproxy"))) - pt:value("", translate("Close")) - pt:value("main", translate("Preproxy Node")) for k, v in pairs(nodes_table) do o:value(v.id, v.remark) o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") pt:depends({ [_n("protocol")] = "_shunt", [_n("preproxy_enabled")] = true, [_n(e[".name"])] = v.id }) + fakedns_tag:depends({ [_n("protocol")] = "_shunt", [_n("fakedns")] = true, [_n(e[".name"])] = v.id }) + end + if default_node ~= "_direct" or default_node ~= "_blackhole" then + fakedns_tag:depends({ [_n("protocol")] = "_shunt", [_n("fakedns")] = true, [_n(e[".name"])] = "_default" }) end end end diff --git a/openwrt-passwall2/luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/sing-box.lua b/openwrt-passwall2/luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/sing-box.lua index 8f38111622..231a21c981 100644 --- a/openwrt-passwall2/luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/sing-box.lua +++ b/openwrt-passwall2/luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/sing-box.lua @@ -192,6 +192,7 @@ o:depends({ [_n("protocol")] = "_urltest" }) o.default = "0" o.description = translate("Interrupt existing connections when the selected outbound has changed.") +local default_node = m.uci:get(appname, arg[1], "default_node") or "_direct" -- [[ Shunt Start ]] if #nodes_table > 0 then o = s:option(Flag, _n("preproxy_enabled"), translate("Preproxy")) @@ -220,6 +221,9 @@ if #nodes_table > 0 then if #o.keylist > 0 then o.default = o.keylist[1] end + + o = s:option(Flag, _n("fakedns"), "FakeDNS") + o:depends({ [_n("protocol")] = "_shunt" }) end m.uci:foreach(appname, "shunt_rules", function(e) if e[".name"] and e.remarks then @@ -233,9 +237,16 @@ m.uci:foreach(appname, "shunt_rules", function(e) o.group = {"","","",""} if #nodes_table > 0 then + local pt = s:option(ListValue, _n(e[".name"] .. "_proxy_tag"), string.format('* %s', e.remarks .. " " .. translate("Preproxy"))) + pt:value("", translate("Close")) + pt:value("main", translate("Preproxy Node")) + + local fakedns_tag = s:option(Flag, _n(e[".name"] .. "_fakedns"), string.format('* %s', e.remarks .. " " .. "FakeDNS"), translate("Use FakeDNS work in the domain that proxy.")) + for k, v in pairs(socks_list) do o:value(v.id, v.remark) o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") + fakedns_tag:depends({ [_n("protocol")] = "_shunt", [_n("fakedns")] = true, [_n(e[".name"])] = v.id }) end for k, v in pairs(urltest_table) do o:value(v.id, v.remark) @@ -245,13 +256,14 @@ m.uci:foreach(appname, "shunt_rules", function(e) o:value(v.id, v.remark) o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") end - local pt = s:option(ListValue, _n(e[".name"] .. "_proxy_tag"), string.format('* %s', e.remarks .. " " .. translate("Preproxy"))) - pt:value("", translate("Close")) - pt:value("main", translate("Preproxy Node")) for k, v in pairs(nodes_table) do o:value(v.id, v.remark) o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") pt:depends({ [_n("protocol")] = "_shunt", [_n("preproxy_enabled")] = true, [_n(e[".name"])] = v.id }) + fakedns_tag:depends({ [_n("protocol")] = "_shunt", [_n("fakedns")] = true, [_n(e[".name"])] = v.id }) + end + if default_node ~= "_direct" or default_node ~= "_blackhole" then + fakedns_tag:depends({ [_n("protocol")] = "_shunt", [_n("fakedns")] = true, [_n(e[".name"])] = "_default" }) end end end diff --git a/openwrt-passwall2/luci-app-passwall2/luasrc/passwall2/util_sing-box.lua b/openwrt-passwall2/luci-app-passwall2/luasrc/passwall2/util_sing-box.lua index 334dce86ae..fa7a15be29 100644 --- a/openwrt-passwall2/luci-app-passwall2/luasrc/passwall2/util_sing-box.lua +++ b/openwrt-passwall2/luci-app-passwall2/luasrc/passwall2/util_sing-box.lua @@ -13,7 +13,7 @@ local version_ge_1_11_0 = api.compare_versions(local_version, ">=", "1.11.0") local version_ge_1_12_0 = api.compare_versions(local_version, ">=", "1.12.0") local GEO_VAR = { - OK = false, + OK = nil, DIR = nil, SITE_PATH = nil, IP_PATH = nil, @@ -24,9 +24,10 @@ local GEO_VAR = { function check_geoview() if not GEO_VAR.OK then - GEO_VAR.OK = (api.finded_com("geoview") and api.compare_versions(api.get_app_version("geoview"), ">=", "0.1.10")) and true or false + -- Only get once + GEO_VAR.OK = (api.finded_com("geoview") and api.compare_versions(api.get_app_version("geoview"), ">=", "0.1.10")) and 1 or 0 end - if GEO_VAR.OK == false then + if GEO_VAR.OK == 0 then api.log(0, "!!! Note: Geo rules cannot be used if the Geoview component is missing or the version is too low.") else GEO_VAR.DIR = GEO_VAR.DIR or (uci:get(appname, "@global_rules[0]", "v2ray_location_asset") or "/usr/share/v2ray/"):match("^(.*)/") @@ -40,7 +41,7 @@ function check_geoview() end function geo_convert_srs(var) - if check_geoview() == false then + if check_geoview() ~= 1 then return end local geo_path = var["-geo_path"] @@ -59,7 +60,7 @@ function geo_convert_srs(var) end local function convert_geofile() - if check_geoview() == false then + if check_geoview() ~= 1 then return end local function convert(file_path, prefix, tags) @@ -1220,6 +1221,8 @@ function gen_config(var) local preproxy_tag = preproxy_rule_name local preproxy_node_id = preproxy_rule_name and node["main_node"] or nil + inner_fakedns = node.fakedns or "0" + local function gen_shunt_node(rule_name, _node_id) if not rule_name then return nil end if not _node_id then _node_id = node[rule_name] end @@ -1407,6 +1410,8 @@ function gen_config(var) rule.source_ip_is_private = source_is_private and true or nil end + --[[ + -- Too low usage rate, hidden if e.sourcePort then local source_port = {} local source_port_range = {} @@ -1420,6 +1425,7 @@ function gen_config(var) rule.source_port = #source_port > 0 and source_port or nil rule.source_port_range = #source_port_range > 0 and source_port_range or nil end + ]]-- if e.port then local port = {} @@ -1445,6 +1451,7 @@ function gen_config(var) domain_keyword = {}, domain_regex = {}, rule_set = {}, + fakedns = nil, invert = e.invert == "1" and true or nil } string.gsub(e.domain_list, '[^' .. "\r\n" .. ']+', function(w) @@ -1481,6 +1488,9 @@ function gen_config(var) rule.domain_keyword = #domain_table.domain_keyword > 0 and domain_table.domain_keyword or nil rule.domain_regex = #domain_table.domain_regex > 0 and domain_table.domain_regex or nil rule.rule_set = #domain_table.rule_set > 0 and domain_table.rule_set or nil + if inner_fakedns == "1" and node[e[".name"] .. "_fakedns"] == "1" then + domain_table.fakedns = true + end if outboundTag then table.insert(dns_domain_rules, api.clone(domain_table)) @@ -1617,7 +1627,7 @@ function gen_config(var) end local fakedns_tag = "remote_fakeip" - if remote_dns_fake then + if remote_dns_fake or inner_fakedns == "1" then dns.fakeip = { enabled = true, inet4_range = "198.18.0.0/16", @@ -1707,7 +1717,7 @@ function gen_config(var) table.insert(dns.servers, remote_dns_server) dns_rule.server = remote_dns_server.tag end - if remote_dns_fake then + if value.fakedns then local fakedns_dns_rule = api.clone(dns_rule) fakedns_dns_rule.query_type = { "A", "AAAA" diff --git a/openwrt-passwall2/luci-app-passwall2/luasrc/passwall2/util_xray.lua b/openwrt-passwall2/luci-app-passwall2/luasrc/passwall2/util_xray.lua index 066a43aab0..e7b3eedf2f 100644 --- a/openwrt-passwall2/luci-app-passwall2/luasrc/passwall2/util_xray.lua +++ b/openwrt-passwall2/luci-app-passwall2/luasrc/passwall2/util_xray.lua @@ -708,49 +708,6 @@ function gen_config(var) table.insert(inbounds, inbound) end - if redir_port then - local inbound = { - port = tonumber(redir_port), - protocol = "dokodemo-door", - settings = {network = "tcp,udp", followRedirect = true}, - streamSettings = {sockopt = {tproxy = "tproxy"}}, - sniffing = { - enabled = xray_settings.sniffing_override_dest == "1" or node.protocol == "_shunt" - } - } - if inbound.sniffing.enabled == true then - inbound.sniffing.destOverride = {"http", "tls", "quic"} - inbound.sniffing.metadataOnly = false - inbound.sniffing.routeOnly = xray_settings.sniffing_override_dest ~= "1" or nil - inbound.sniffing.domainsExcluded = xray_settings.sniffing_override_dest == "1" and get_domain_excluded() or nil - end - if remote_dns_fake then - inbound.sniffing.enabled = true - if not inbound.sniffing.destOverride then - inbound.sniffing.destOverride = {"fakedns"} - inbound.sniffing.metadataOnly = true - else - table.insert(inbound.sniffing.destOverride, "fakedns") - inbound.sniffing.metadataOnly = false - end - end - - local tcp_inbound = api.clone(inbound) - tcp_inbound.tag = "tcp_redir" - tcp_inbound.settings.network = "tcp" - tcp_inbound.streamSettings.sockopt.tproxy = tcp_proxy_way - table.insert(inbounds, tcp_inbound) - - local udp_inbound = api.clone(inbound) - udp_inbound.tag = "udp_redir" - udp_inbound.settings.network = "udp" - table.insert(inbounds, udp_inbound) - end - - local function get_balancer_tag(_node_id) - return "balancer-" .. _node_id - end - local function gen_loopback(outboundTag, dst_node_id) if not outboundTag then return nil end local inboundTag = dst_node_id and "loop-in-" .. dst_node_id or outboundTag .. "-lo" @@ -974,6 +931,8 @@ function gen_config(var) local preproxy_outbound_tag, preproxy_balancer_tag local preproxy_nodes + inner_fakedns = node.fakedns or "0" + local function gen_shunt_node(rule_name, _node_id) if not rule_name then return nil, nil end if not _node_id then _node_id = node[rule_name] end @@ -1173,6 +1132,7 @@ function gen_config(var) outboundTag = outboundTag, balancerTag = balancerTag, domain = {}, + fakedns = nil, } domains = {} string.gsub(e.domain_list, '[^' .. "\r\n" .. ']+', function(w) @@ -1181,10 +1141,15 @@ function gen_config(var) table.insert(domains, w) table.insert(domain_table.domain, w) end) + if inner_fakedns == "1" and node[e[".name"] .. "_fakedns"] == "1" and #domains > 0 then + domain_table.fakedns = true + end if outboundTag or balancerTag then table.insert(dns_domain_rules, api.clone(domain_table)) end - if #domains == 0 then domains = nil end + if #domains == 0 then + domains = nil + end end local ip = nil if e.ip_list then @@ -1210,7 +1175,7 @@ function gen_config(var) balancerTag = balancerTag, network = e["network"] or "tcp,udp", source = source, - sourcePort = e["sourcePort"] ~= "" and e["sourcePort"] or nil, + --sourcePort = e["sourcePort"] ~= "" and e["sourcePort"] or nil, port = e["port"] ~= "" and e["port"] or nil, protocol = protocols } @@ -1391,7 +1356,7 @@ function gen_config(var) end local _remote_fakedns = nil - if remote_dns_fake then + if remote_dns_fake or inner_fakedns == "1" then fakedns = {} local fakedns4 = { ipPool = "198.18.0.0/16", @@ -1532,7 +1497,7 @@ function gen_config(var) if value.outboundTag == "direct" then dns_server = api.clone(_direct_dns) else - if remote_dns_fake then + if value.fakedns then dns_server = api.clone(_remote_fakedns) else dns_server = api.clone(_remote_dns) @@ -1635,6 +1600,45 @@ function gen_config(var) end end end + + if redir_port then + local inbound = { + port = tonumber(redir_port), + protocol = "dokodemo-door", + settings = {network = "tcp,udp", followRedirect = true}, + streamSettings = {sockopt = {tproxy = "tproxy"}}, + sniffing = { + enabled = xray_settings.sniffing_override_dest == "1" or node.protocol == "_shunt" + } + } + if inbound.sniffing.enabled == true then + inbound.sniffing.destOverride = {"http", "tls", "quic"} + inbound.sniffing.metadataOnly = false + inbound.sniffing.routeOnly = xray_settings.sniffing_override_dest ~= "1" or nil + inbound.sniffing.domainsExcluded = xray_settings.sniffing_override_dest == "1" and get_domain_excluded() or nil + end + if remote_dns_fake or inner_fakedns == "1" then + inbound.sniffing.enabled = true + if not inbound.sniffing.destOverride then + inbound.sniffing.destOverride = {"fakedns"} + inbound.sniffing.metadataOnly = true + else + table.insert(inbound.sniffing.destOverride, "fakedns") + inbound.sniffing.metadataOnly = false + end + end + + local tcp_inbound = api.clone(inbound) + tcp_inbound.tag = "tcp_redir" + tcp_inbound.settings.network = "tcp" + tcp_inbound.streamSettings.sockopt.tproxy = tcp_proxy_way + table.insert(inbounds, tcp_inbound) + + local udp_inbound = api.clone(inbound) + udp_inbound.tag = "udp_redir" + udp_inbound.settings.network = "udp" + table.insert(inbounds, udp_inbound) + end if inbounds or outbounds then local config = { diff --git a/openwrt-passwall2/luci-app-passwall2/po/zh-cn/passwall2.po b/openwrt-passwall2/luci-app-passwall2/po/zh-cn/passwall2.po index 9ff9c11ef5..27bb272131 100644 --- a/openwrt-passwall2/luci-app-passwall2/po/zh-cn/passwall2.po +++ b/openwrt-passwall2/luci-app-passwall2/po/zh-cn/passwall2.po @@ -16,6 +16,9 @@ msgstr "连接失败" msgid "Touch Check" msgstr "点我检测" +msgid "Global" +msgstr "全局" + msgid "Kernel Unsupported" msgstr "内核不支持" @@ -1942,6 +1945,9 @@ msgstr "Socks节点:[%s]%s,启动 %s:%s" msgid "To enable experimental IPv6 transparent proxy (TProxy), please ensure your node and type support IPv6!" msgstr "开启实验性IPv6透明代理(TProxy),请确认您的节点及类型支持IPv6!" +msgid "[%s] process %s error, skip!" +msgstr "【%s】 进程 %s 错误,跳过!" + msgid "Analyzing the node configuration of the Socks service..." msgstr "分析 Socks 服务的节点配置..." diff --git a/openwrt-passwall2/luci-app-passwall2/po/zh-tw/passwall2.po b/openwrt-passwall2/luci-app-passwall2/po/zh-tw/passwall2.po index 7dd040e0a9..4548a533a8 100644 --- a/openwrt-passwall2/luci-app-passwall2/po/zh-tw/passwall2.po +++ b/openwrt-passwall2/luci-app-passwall2/po/zh-tw/passwall2.po @@ -16,6 +16,9 @@ msgstr "連接失敗" msgid "Touch Check" msgstr "點我檢測" +msgid "Global" +msgstr "全局" + msgid "Kernel Unsupported" msgstr "內核不支持" @@ -1942,6 +1945,9 @@ msgstr "Socks節點:[%s]%s,啟動 %s:%s" msgid "To enable experimental IPv6 transparent proxy (TProxy), please ensure your node and type support IPv6!" msgstr "開啟實驗性IPv6透明代理(TProxy),請確認您的節點及類型支持IPv6!" +msgid "[%s] process %s error, skip!" +msgstr "【%s】 進程 %s 錯誤,跳過!" + msgid "Analyzing the node configuration of the Socks service..." msgstr "分析 Socks 服務的節點配置..." diff --git a/openwrt-passwall2/luci-app-passwall2/root/usr/share/passwall2/app.sh b/openwrt-passwall2/luci-app-passwall2/root/usr/share/passwall2/app.sh index d8f318f97f..f8a9233e2d 100755 --- a/openwrt-passwall2/luci-app-passwall2/root/usr/share/passwall2/app.sh +++ b/openwrt-passwall2/luci-app-passwall2/root/usr/share/passwall2/app.sh @@ -14,6 +14,8 @@ UTIL_XRAY=$LUA_UTIL_PATH/util_xray.lua UTIL_NAIVE=$LUA_UTIL_PATH/util_naiveproxy.lua UTIL_HYSTERIA2=$LUA_UTIL_PATH/util_hysteria2.lua UTIL_TUIC=$LUA_UTIL_PATH/util_tuic.lua +SINGBOX_BIN=$(first_type $(config_t_get global_app sing_box_file) sing-box) +XRAY_BIN=$(first_type $(config_t_get global_app xray_file) xray) check_run_environment() { local prefer_nft=$(config_t_get global_forwarding prefer_nft 1) @@ -68,64 +70,12 @@ check_run_environment() { fi } -first_type() { - [ "${1#/}" != "$1" ] && [ -x "$1" ] && echo "$1" && return - for p in "/bin/$1" "/usr/bin/$1" "${TMP_BIN_PATH:-/tmp}/$1"; do - [ -x "$p" ] && echo "$p" && return - done - command -v "$1" 2>/dev/null || command -v "$2" 2>/dev/null -} - -ln_run() { - local file_func=${1} - local ln_name=${2} - local output=${3} - - shift 3; - if [ "${file_func%%/*}" != "${file_func}" ]; then - [ ! -L "${file_func}" ] && { - ln -s "${file_func}" "${TMP_BIN_PATH}/${ln_name}" >/dev/null 2>&1 - file_func="${TMP_BIN_PATH}/${ln_name}" - } - [ -x "${file_func}" ] || log 1 "$(i18n "%s does not have execute permissions and cannot be started: %s %s" "$(readlink ${file_func})" "${file_func}" "$*")" - fi - #echo "${file_func} $*" >&2 - [ -n "${file_func}" ] || log 1 "$(i18n "%s not found, unable to start..." "${ln_name}")" - ${file_func:-log 1 "${ln_name}"} "$@" >${output} 2>&1 & - process_count=$(ls $TMP_SCRIPT_FUNC_PATH | grep -v "^_" | wc -l) - process_count=$((process_count + 1)) - echo "${file_func:-log 1 "${ln_name}"} $@ >${output}" > $TMP_SCRIPT_FUNC_PATH/$process_count -} - -get_geoip() { - local geoip_code="$1" - local geoip_type_flag="" - local geoip_path="$(config_t_get global_rules v2ray_location_asset)" - geoip_path="${geoip_path%*/}/geoip.dat" - [ -e "$geoip_path" ] || { echo ""; return; } - case "$2" in - "ipv4") geoip_type_flag="-ipv6=false" ;; - "ipv6") geoip_type_flag="-ipv4=false" ;; - esac - if type geoview &> /dev/null; then - geoview -input "$geoip_path" -list "$geoip_code" $geoip_type_flag -lowmem=true - else - echo "" - fi -} - run_xray() { local flag node redir_port tcp_proxy_way socks_address socks_port socks_username socks_password http_address http_port http_username http_password local dns_listen_port direct_dns_query_strategy remote_dns_protocol remote_dns_udp_server remote_dns_tcp_server remote_dns_doh remote_dns_client_ip remote_dns_detour remote_fakedns remote_dns_query_strategy dns_cache write_ipset_direct local loglevel log_file config_file local _extra_param="" eval_set_val $@ - local type=$(echo $(config_n_get $node type) | tr 'A-Z' 'a-z') - if [ "$type" != "xray" ]; then - local bin=$(first_type $(config_t_get global_app xray_file) xray) - [ -n "$bin" ] && type="xray" - fi - [ -z "$type" ] && return 1 [ -n "$log_file" ] || local log_file="/dev/null" [ -z "$loglevel" ] && local loglevel=$(config_t_get global loglevel "warning") [ -n "$flag" ] && pgrep -af "$TMP_BIN_PATH" | awk -v P1="${flag}" 'BEGIN{IGNORECASE=1}$0~P1{print $1}' | xargs kill -9 >/dev/null 2>&1 @@ -213,7 +163,7 @@ run_xray() { DNS_REMOTE_ARGS="${DNS_REMOTE_ARGS} -dns_out_tag remote -dns_listen_port ${dns_remote_listen_port} -remote_dns_outbound_socks_address 127.0.0.1 -remote_dns_outbound_socks_port ${socks_port}" lua $UTIL_XRAY gen_dns_config ${DNS_REMOTE_ARGS} > $V2RAY_DNS_REMOTE_CONFIG - ln_run "$(first_type $(config_t_get global_app ${type}_file) ${type})" ${type} $V2RAY_DNS_REMOTE_LOG run -c "$V2RAY_DNS_REMOTE_CONFIG" + ln_run "$XRAY_BIN" "xray" $V2RAY_DNS_REMOTE_LOG run -c "$V2RAY_DNS_REMOTE_CONFIG" _extra_param="${_extra_param} -remote_dns_udp_port ${dns_remote_listen_port} -remote_dns_udp_server 127.0.0.1 -remote_dns_query_strategy ${remote_dns_query_strategy}" fi } @@ -224,7 +174,13 @@ run_xray() { } lua $UTIL_XRAY gen_config -node $node -loglevel $loglevel ${_extra_param} > $config_file - ln_run "$(first_type $(config_t_get global_app ${type}_file) ${type})" ${type} $log_file run -c "$config_file" + + $XRAY_BIN run -test -c "$config_file" > $log_file; local status=$? + if [ "${status}" == 0 ]; then + ln_run "$XRAY_BIN" xray $log_file run -c "$config_file" + else + return ${status} + fi } run_singbox() { @@ -245,8 +201,7 @@ run_singbox() { [ -z "$loglevel" ] && local loglevel=$(config_t_get global loglevel "warn") [ "$loglevel" = "warning" ] && loglevel="warn" _extra_param="${_extra_param} -loglevel $loglevel" - - _extra_param="${_extra_param} -tags $($(first_type $(config_t_get global_app sing_box_file) sing-box) version | grep 'Tags:' | awk '{print $2}')" + _extra_param="${_extra_param} -tags $($SINGBOX_BIN version | grep 'Tags:' | awk '{print $2}')" [ -n "$flag" ] && pgrep -af "$TMP_BIN_PATH" | awk -v P1="${flag}" 'BEGIN{IGNORECASE=1}$0~P1{print $1}' | xargs kill -9 >/dev/null 2>&1 [ -n "$flag" ] && _extra_param="${_extra_param} -flag $flag" @@ -330,7 +285,13 @@ run_singbox() { } lua $UTIL_SINGBOX gen_config -node $node ${_extra_param} > $config_file - ln_run "$(first_type $(config_t_get global_app sing_box_file) sing-box)" "sing-box" "${log_file}" run -c "$config_file" + + $SINGBOX_BIN check -c "$config_file" > $log_file 2>&1; local status=$? + if [ "${status}" == 0 ]; then + ln_run "$SINGBOX_BIN" "sing-box" "${log_file}" run -c "$config_file" + else + return ${status} + fi } run_socks() { @@ -393,7 +354,7 @@ run_socks() { } [ -n "$no_run" ] && _extra_param="${_extra_param} -no_run 1" lua $UTIL_SINGBOX gen_config -flag SOCKS_$flag -node $node -local_socks_address $bind -local_socks_port $socks_port ${_extra_param} > $config_file - [ -n "$no_run" ] || ln_run "$(first_type $(config_t_get global_app sing_box_file) sing-box)" "sing-box" /dev/null run -c "$config_file" + [ -n "$no_run" ] || ln_run "$SINGBOX_BIN" "sing-box" /dev/null run -c "$config_file" ;; xray) [ "$http_port" != "0" ] && { @@ -404,7 +365,7 @@ run_socks() { [ -n "$relay_port" ] && _extra_param="${_extra_param} -server_host $server_host -server_port $server_port" [ -n "$no_run" ] && _extra_param="${_extra_param} -no_run 1" lua $UTIL_XRAY gen_config -flag SOCKS_$flag -node $node -local_socks_address $bind -local_socks_port $socks_port ${_extra_param} > $config_file - [ -n "$no_run" ] || ln_run "$(first_type $(config_t_get global_app xray_file) xray)" "xray" $log_file run -c "$config_file" + [ -n "$no_run" ] || ln_run "$XRAY_BIN" "xray" $log_file run -c "$config_file" ;; naiveproxy) lua $UTIL_NAIVE gen_config -node $node -run_type socks -local_addr $bind -local_port $socks_port -server_host $server_host -server_port $server_port > $config_file @@ -453,13 +414,13 @@ run_socks() { # http to socks [ -z "$http_flag" ] && [ "$http_port" != "0" ] && [ -n "$http_config_file" ] && [ "$type" != "sing-box" ] && [ "$type" != "xray" ] && [ "$type" != "socks" ] && { - local bin=$(first_type $(config_t_get global_app sing_box_file) sing-box) + local bin=$SINGBOX_BIN if [ -n "$bin" ]; then type="sing-box" lua $UTIL_SINGBOX gen_proto_config -local_http_port $http_port -server_proto socks -server_address "127.0.0.1" -server_port $socks_port -server_username $_username -server_password $_password > $http_config_file [ -n "$no_run" ] || ln_run "$bin" ${type} /dev/null run -c "$http_config_file" else - bin=$(first_type $(config_t_get global_app xray_file) xray) + bin=$XRAY_BIN [ -n "$bin" ] && type="xray" [ -z "$type" ] && return 1 lua $UTIL_XRAY gen_proto_config -local_http_port $http_port -server_proto socks -server_address "127.0.0.1" -server_port $socks_port -server_username $_username -server_password $_password > $http_config_file @@ -524,35 +485,34 @@ run_global() { V2RAY_ARGS="flag=global node=$NODE redir_port=$REDIR_PORT tcp_proxy_way=${TCP_PROXY_WAY}" V2RAY_ARGS="${V2RAY_ARGS} dns_listen_port=${TUN_DNS_PORT} direct_dns_query_strategy=${DIRECT_DNS_QUERY_STRATEGY} remote_dns_query_strategy=${REMOTE_DNS_QUERY_STRATEGY} dns_cache=${DNS_CACHE}" - local msg="DNS: ${TUN_DNS} ($(i18n "Direct DNS: %s" "${AUTO_DNS}")" + local dns_msg="DNS: ${TUN_DNS} ($(i18n "Direct DNS: %s" "${AUTO_DNS}")" [ -n "$REMOTE_DNS_PROTOCOL" ] && { V2RAY_ARGS="${V2RAY_ARGS} remote_dns_protocol=${REMOTE_DNS_PROTOCOL} remote_dns_detour=${REMOTE_DNS_DETOUR}" case "$REMOTE_DNS_PROTOCOL" in udp*) V2RAY_ARGS="${V2RAY_ARGS} remote_dns_udp_server=${REMOTE_DNS}" - msg="${msg} $(i18n "Remote DNS: %s" "${REMOTE_DNS}")" + dns_msg="${dns_msg} $(i18n "Remote DNS: %s" "${REMOTE_DNS}")" ;; tcp) V2RAY_ARGS="${V2RAY_ARGS} remote_dns_tcp_server=${REMOTE_DNS}" - msg="${msg} $(i18n "Remote DNS: %s" "${REMOTE_DNS}")" + dns_msg="${dns_msg} $(i18n "Remote DNS: %s" "${REMOTE_DNS}")" ;; doh) REMOTE_DNS_DOH=$(config_t_get global remote_dns_doh "https://1.1.1.1/dns-query") V2RAY_ARGS="${V2RAY_ARGS} remote_dns_doh=${REMOTE_DNS_DOH}" - msg="${msg} $(i18n "Remote DNS: %s" "${REMOTE_DNS_DOH}")" + dns_msg="${dns_msg} $(i18n "Remote DNS: %s" "${REMOTE_DNS_DOH}")" ;; esac [ "$REMOTE_FAKEDNS" = "1" ] && { V2RAY_ARGS="${V2RAY_ARGS} remote_fakedns=1" - msg="${msg} + FakeDNS " + dns_msg="${dns_msg} + FakeDNS " } local _remote_dns_client_ip=$(config_t_get global remote_dns_client_ip) [ -n "${_remote_dns_client_ip}" ] && V2RAY_ARGS="${V2RAY_ARGS} remote_dns_client_ip=${_remote_dns_client_ip}" } - msg="${msg})" - log 0 ${msg} + dns_msg="${dns_msg})" V2RAY_CONFIG=${GLOBAL_ACL_PATH}/global.json V2RAY_LOG=${GLOBAL_ACL_PATH}/global.log @@ -580,7 +540,15 @@ run_global() { run_func="run_singbox" fi - ${run_func} ${V2RAY_ARGS} + ${run_func} ${V2RAY_ARGS}; local status=$? + + if [ "$status" == 0 ]; then + log 0 ${dns_msg} + else + log_i18n 0 "[%s] process %s error, skip!" $(i18n "Global") "${V2RAY_CONFIG}" + ENABLED_DEFAULT_ACL=0 + return 1 + fi local RUN_NEW_DNSMASQ=1 RUN_NEW_DNSMASQ=${DNS_REDIRECT} @@ -651,14 +619,6 @@ start_socks() { } } -clean_log() { - logsnum=$(cat $LOG_FILE 2>/dev/null | wc -l) - [ "$logsnum" -gt 1000 ] && { - echo "" > $LOG_FILE - log_i18n 0 "Log file is too long, clear it!" - } -} - clean_crontab() { [ -f "/tmp/lock/${CONFIG}_cron.lock" ] && return touch /etc/crontabs/root @@ -873,10 +833,6 @@ run_ipset_dnsmasq() { ln_run "$(first_type dnsmasq)" "dnsmasq" "/dev/null" -C $config_file } -kill_all() { - kill -9 $(pidof "$@") >/dev/null 2>&1 -} - acl_app() { local items=$(uci show ${CONFIG} | grep "=acl_rule" | cut -d '.' -sf 2 | cut -d '=' -sf 1) [ -n "$items" ] && { @@ -978,7 +934,18 @@ acl_app() { elif [ "${type}" = "sing-box" ] && [ -n "${SINGBOX_BIN}" ]; then run_func="run_singbox" fi - ${run_func} flag=acl_$sid node=$node redir_port=$redir_port tcp_proxy_way=${TCP_PROXY_WAY} socks_address=127.0.0.1 socks_port=$acl_socks_port dns_listen_port=${dns_port} direct_dns_query_strategy=${direct_dns_query_strategy} remote_dns_protocol=${remote_dns_protocol} remote_dns_tcp_server=${remote_dns} remote_dns_udp_server=${remote_dns} remote_dns_doh="${remote_dns}" remote_dns_client_ip=${remote_dns_client_ip} remote_dns_detour=${remote_dns_detour} remote_fakedns=${remote_fakedns} remote_dns_query_strategy=${remote_dns_query_strategy} write_ipset_direct=${write_ipset_direct} config_file=${config_file} + ${run_func} flag=acl_$sid node=$node redir_port=$redir_port tcp_proxy_way=${TCP_PROXY_WAY} \ + socks_address=127.0.0.1 socks_port=$acl_socks_port \ + dns_listen_port=${dns_port} \ + direct_dns_query_strategy=${direct_dns_query_strategy} \ + remote_dns_protocol=${remote_dns_protocol} remote_dns_tcp_server=${remote_dns} remote_dns_udp_server=${remote_dns} remote_dns_doh="${remote_dns}" \ + remote_dns_client_ip=${remote_dns_client_ip} remote_dns_detour=${remote_dns_detour} remote_fakedns=${remote_fakedns} remote_dns_query_strategy=${remote_dns_query_strategy} \ + write_ipset_direct=${write_ipset_direct} config_file=${config_file} + local status=$? + if [ "$status" != 0 ]; then + log_i18n 2 "[%s] process %s error, skip!" "${remarks}" "${config_file}" + continue + fi fi dnsmasq_port=$(get_new_port $(expr $dnsmasq_port + 1)) run_copy_dnsmasq flag="$sid" listen_port=$dnsmasq_port tun_dns="127.0.0.1#${dns_port}" @@ -1143,9 +1110,6 @@ get_config() { fi set_cache_var GLOBAL_DNSMASQ_CONF ${DNSMASQ_CONF_DIR}/dnsmasq-${CONFIG}.conf set_cache_var GLOBAL_DNSMASQ_CONF_PATH ${GLOBAL_ACL_PATH}/dnsmasq.d - - XRAY_BIN=$(first_type $(config_t_get global_app xray_file) xray) - SINGBOX_BIN=$(first_type $(config_t_get global_app sing_box_file) sing-box) } arg1=$1 diff --git a/openwrt-passwall2/luci-app-passwall2/root/usr/share/passwall2/utils.sh b/openwrt-passwall2/luci-app-passwall2/root/usr/share/passwall2/utils.sh index 669dfca848..5184a7bd30 100755 --- a/openwrt-passwall2/luci-app-passwall2/root/usr/share/passwall2/utils.sh +++ b/openwrt-passwall2/luci-app-passwall2/root/usr/share/passwall2/utils.sh @@ -107,6 +107,14 @@ log_i18n() { log ${num} "$(i18n "$@")" } +clean_log() { + logsnum=$(cat $LOG_FILE 2>/dev/null | wc -l) + [ "$logsnum" -gt 1000 ] && { + echo "" > $LOG_FILE + log_i18n 0 "Log file is too long, clear it!" + } +} + lua_api() { local func=${1} [ -z "${func}" ] && { @@ -126,10 +134,35 @@ check_host() { return 0 } +first_type() { + [ "${1#/}" != "$1" ] && [ -x "$1" ] && echo "$1" && return + for p in "/bin/$1" "/usr/bin/$1" "${TMP_BIN_PATH:-/tmp}/$1"; do + [ -x "$p" ] && echo "$p" && return + done + command -v "$1" 2>/dev/null || command -v "$2" 2>/dev/null +} + get_enabled_anonymous_secs() { uci -q show "${CONFIG}" | grep "${1}\[.*\.enabled='1'" | cut -d '.' -sf2 } +get_geoip() { + local geoip_code="$1" + local geoip_type_flag="" + local geoip_path="$(config_t_get global_rules v2ray_location_asset)" + geoip_path="${geoip_path%*/}/geoip.dat" + [ -e "$geoip_path" ] || { echo ""; return; } + case "$2" in + "ipv4") geoip_type_flag="-ipv6=false" ;; + "ipv6") geoip_type_flag="-ipv4=false" ;; + esac + if type geoview &> /dev/null; then + geoview -input "$geoip_path" -list "$geoip_code" $geoip_type_flag -lowmem=true + else + echo "" + fi +} + get_host_ip() { local host=$2 local count=$3 @@ -322,3 +355,34 @@ delete_ip2route() { done } } + +ln_run() { + local file_func=${1} + local ln_name=${2} + local output=${3} + + shift 3; + if [ "${file_func%%/*}" != "${file_func}" ]; then + [ ! -L "${file_func}" ] && { + ln -s "${file_func}" "${TMP_BIN_PATH}/${ln_name}" >/dev/null 2>&1 + file_func="${TMP_BIN_PATH}/${ln_name}" + } + [ -x "${file_func}" ] || log 1 "$(i18n "%s does not have execute permissions and cannot be started: %s %s" "$(readlink ${file_func})" "${file_func}" "$*")" + fi + #echo "${file_func} $*" >&2 + [ -n "${file_func}" ] || log 1 "$(i18n "%s not found, unable to start..." "${ln_name}")" + ${file_func:-log 1 "${ln_name}"} "$@" >${output} 2>&1 & + + local pid=${!} + #sleep 1s + #kill -0 ${pid} 2>/dev/null + #local status_code=${?} + process_count=$(ls $TMP_SCRIPT_FUNC_PATH | grep -v "^_" | wc -l) + process_count=$((process_count + 1)) + echo "${file_func:-log 1 "${ln_name}"} $@ >${output}" > $TMP_SCRIPT_FUNC_PATH/$process_count + #return ${status_code} +} + +kill_all() { + kill -9 $(pidof "$@") >/dev/null 2>&1 +} diff --git a/shadowsocks-android/buildSrc/src/main/kotlin/Helpers.kt b/shadowsocks-android/buildSrc/src/main/kotlin/Helpers.kt index 6f91730e5b..c5c8e6f922 100644 --- a/shadowsocks-android/buildSrc/src/main/kotlin/Helpers.kt +++ b/shadowsocks-android/buildSrc/src/main/kotlin/Helpers.kt @@ -24,7 +24,7 @@ fun Project.setupCommon() { compileSdkVersion(36) defaultConfig { minSdk = 23 - targetSdk = 35 + targetSdk = 36 testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } compileOptions { diff --git a/shadowsocks-android/core/src/main/java/com/github/shadowsocks/acl/AclSyncer.kt b/shadowsocks-android/core/src/main/java/com/github/shadowsocks/acl/AclSyncer.kt index 26daa427d2..ed7362f623 100644 --- a/shadowsocks-android/core/src/main/java/com/github/shadowsocks/acl/AclSyncer.kt +++ b/shadowsocks-android/core/src/main/java/com/github/shadowsocks/acl/AclSyncer.kt @@ -35,6 +35,7 @@ import androidx.work.WorkerParameters import com.github.shadowsocks.Core import com.github.shadowsocks.Core.app import com.github.shadowsocks.core.BuildConfig +import com.github.shadowsocks.preference.DataStore import com.github.shadowsocks.utils.useCancellable import kotlinx.coroutines.Dispatchers import timber.log.Timber @@ -68,7 +69,8 @@ class AclSyncer(context: Context, workerParams: WorkerParameters) : CoroutineWor override suspend fun doWork(): Result = try { val route = inputData.getString(KEY_ROUTE)!! - val connection = URL("https://shadowsocks.org/acl/android/v1/$route.acl").openConnection() as HttpURLConnection + val connection = URL("https://shadowsocks.org/acl/android/v1/$route.acl") + .openConnection(DataStore.proxy) as HttpURLConnection val acl = connection.useCancellable { inputStream.bufferedReader().use { it.readText() } } Acl.getFile(route).printWriter().use { it.write(acl) } Result.success() diff --git a/shadowsocks-android/core/src/main/java/com/github/shadowsocks/bg/BaseService.kt b/shadowsocks-android/core/src/main/java/com/github/shadowsocks/bg/BaseService.kt index 2b1e8e3e72..f27f259d8c 100644 --- a/shadowsocks-android/core/src/main/java/com/github/shadowsocks/bg/BaseService.kt +++ b/shadowsocks-android/core/src/main/java/com/github/shadowsocks/bg/BaseService.kt @@ -29,6 +29,7 @@ import android.os.IBinder import android.os.RemoteCallbackList import android.os.RemoteException import androidx.core.content.ContextCompat +import androidx.core.os.bundleOf import com.github.shadowsocks.BootReceiver import com.github.shadowsocks.Core import com.github.shadowsocks.Core.app @@ -43,10 +44,17 @@ import com.github.shadowsocks.utils.Action import com.github.shadowsocks.utils.broadcastReceiver import com.github.shadowsocks.utils.readableMessage import com.google.firebase.analytics.FirebaseAnalytics -import com.google.firebase.analytics.ktx.analytics -import com.google.firebase.analytics.logEvent -import com.google.firebase.ktx.Firebase -import kotlinx.coroutines.* +import kotlinx.coroutines.CancellationException +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.Job +import kotlinx.coroutines.cancel +import kotlinx.coroutines.cancelAndJoin +import kotlinx.coroutines.coroutineScope +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext import timber.log.Timber import java.io.File import java.io.IOException @@ -269,7 +277,8 @@ object BaseService { // channge the state data.changeState(State.Stopping) GlobalScope.launch(Dispatchers.Main.immediate) { - Firebase.analytics.logEvent("stop") { param(FirebaseAnalytics.Param.METHOD, tag) } + FirebaseAnalytics.getInstance(this@Interface as Service).logEvent("stop", + bundleOf(FirebaseAnalytics.Param.METHOD to tag)) data.connectingJob?.cancelAndJoin() // ensure stop connecting first this@Interface as Service // we use a coroutineScope here to allow clean-up in parallel @@ -344,7 +353,8 @@ object BaseService { } data.notification = createNotification(profile.formattedName) - Firebase.analytics.logEvent("start") { param(FirebaseAnalytics.Param.METHOD, tag) } + FirebaseAnalytics.getInstance(this).logEvent("start", + bundleOf(FirebaseAnalytics.Param.METHOD to tag)) data.changeState(State.Connecting) data.connectingJob = GlobalScope.launch(Dispatchers.Main.immediate) { diff --git a/shadowsocks-android/core/src/main/java/com/github/shadowsocks/bg/VpnService.kt b/shadowsocks-android/core/src/main/java/com/github/shadowsocks/bg/VpnService.kt index 0d4e63a995..5716d1fc09 100644 --- a/shadowsocks-android/core/src/main/java/com/github/shadowsocks/bg/VpnService.kt +++ b/shadowsocks-android/core/src/main/java/com/github/shadowsocks/bg/VpnService.kt @@ -166,8 +166,8 @@ class VpnService : BaseVpnService(), BaseService.Interface { if (profile.ipv6) builder.addAddress(PRIVATE_VLAN6_CLIENT, 126) + val me = packageName if (profile.proxyApps) { - val me = packageName profile.individual.split('\n') .filter { it != me } .forEach { @@ -178,7 +178,9 @@ class VpnService : BaseVpnService(), BaseService.Interface { Timber.w(ex) } } - if (!profile.bypass) builder.addAllowedApplication(me) + if (profile.bypass) builder.addDisallowedApplication(me) + } else { + builder.addDisallowedApplication(me) } when (profile.route) { diff --git a/shadowsocks-android/core/src/main/java/com/github/shadowsocks/net/HttpsTest.kt b/shadowsocks-android/core/src/main/java/com/github/shadowsocks/net/HttpsTest.kt index bfba9499b0..16e8160adc 100644 --- a/shadowsocks-android/core/src/main/java/com/github/shadowsocks/net/HttpsTest.kt +++ b/shadowsocks-android/core/src/main/java/com/github/shadowsocks/net/HttpsTest.kt @@ -27,7 +27,6 @@ import androidx.lifecycle.ViewModel import com.github.shadowsocks.Core.app import com.github.shadowsocks.core.R import com.github.shadowsocks.preference.DataStore -import com.github.shadowsocks.utils.Key import com.github.shadowsocks.utils.useCancellable import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.GlobalScope @@ -35,7 +34,6 @@ import kotlinx.coroutines.Job import kotlinx.coroutines.launch import java.io.IOException import java.net.HttpURLConnection -import java.net.Proxy import java.net.URL import java.net.URLConnection @@ -83,9 +81,7 @@ class HttpsTest : ViewModel() { cancelTest() status.value = Status.Testing val url = URL("https://cp.cloudflare.com") - val conn = (if (DataStore.serviceMode != Key.modeVpn) { - url.openConnection(Proxy(Proxy.Type.SOCKS, DataStore.proxyAddress)) - } else url.openConnection()) as HttpURLConnection + val conn = url.openConnection(DataStore.proxy) as HttpURLConnection conn.setRequestProperty("Connection", "close") conn.instanceFollowRedirects = false conn.useCaches = false diff --git a/shadowsocks-android/core/src/main/java/com/github/shadowsocks/preference/DataStore.kt b/shadowsocks-android/core/src/main/java/com/github/shadowsocks/preference/DataStore.kt index a523681f74..5f3a772bf4 100644 --- a/shadowsocks-android/core/src/main/java/com/github/shadowsocks/preference/DataStore.kt +++ b/shadowsocks-android/core/src/main/java/com/github/shadowsocks/preference/DataStore.kt @@ -30,6 +30,7 @@ import com.github.shadowsocks.utils.DirectBoot import com.github.shadowsocks.utils.Key import com.github.shadowsocks.utils.parsePort import java.net.InetSocketAddress +import java.net.Proxy object DataStore : OnPreferenceDataStoreChangeListener { val publicStore = RoomPreferenceDataStore(PublicDatabase.kvPairDao) @@ -68,7 +69,7 @@ object DataStore : OnPreferenceDataStoreChangeListener { var portProxy: Int get() = getLocalPort(Key.portProxy, 1080) set(value) = publicStore.putString(Key.portProxy, value.toString()) - val proxyAddress get() = InetSocketAddress("127.0.0.1", portProxy) + val proxy get() = Proxy(Proxy.Type.SOCKS, InetSocketAddress("127.0.0.1", portProxy)) var portLocalDns: Int get() = getLocalPort(Key.portLocalDns, 5450) set(value) = publicStore.putString(Key.portLocalDns, value.toString()) diff --git a/shadowsocks-android/gradle/gradle-daemon-jvm.properties b/shadowsocks-android/gradle/gradle-daemon-jvm.properties new file mode 100644 index 0000000000..fb3f50a25e --- /dev/null +++ b/shadowsocks-android/gradle/gradle-daemon-jvm.properties @@ -0,0 +1,13 @@ +#This file is generated by updateDaemonJvm +toolchainUrl.FREE_BSD.AARCH64=https\://api.foojay.io/disco/v3.0/ids/ff1d4fc92bcfc9d3799beabb4e70cfa3/redirect +toolchainUrl.FREE_BSD.X86_64=https\://api.foojay.io/disco/v3.0/ids/08ce182188ada0b93565cd9ca4a4ab32/redirect +toolchainUrl.LINUX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/c5760d82d08e6c26884debb23736ea57/redirect +toolchainUrl.LINUX.X86_64=https\://api.foojay.io/disco/v3.0/ids/08ce182188ada0b93565cd9ca4a4ab32/redirect +toolchainUrl.MAC_OS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/021e528cbed860c875a9016f29ee13c1/redirect +toolchainUrl.MAC_OS.X86_64=https\://api.foojay.io/disco/v3.0/ids/6141bf023dcc7a96c47cad75c59b054e/redirect +toolchainUrl.UNIX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/ff1d4fc92bcfc9d3799beabb4e70cfa3/redirect +toolchainUrl.UNIX.X86_64=https\://api.foojay.io/disco/v3.0/ids/08ce182188ada0b93565cd9ca4a4ab32/redirect +toolchainUrl.WINDOWS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/22860963aebba7217b72b98c4f9a5cfb/redirect +toolchainUrl.WINDOWS.X86_64=https\://api.foojay.io/disco/v3.0/ids/a6eb06d81d82a782734ef3b616ba2684/redirect +toolchainVendor=JETBRAINS +toolchainVersion=21 diff --git a/shadowsocks-android/gradle/libs.versions.toml b/shadowsocks-android/gradle/libs.versions.toml index 6beb246263..6f5cf2d64e 100644 --- a/shadowsocks-android/gradle/libs.versions.toml +++ b/shadowsocks-android/gradle/libs.versions.toml @@ -1,21 +1,22 @@ [versions] -camera = "1.4.2" +camera = "1.5.2" coroutines = "1.10.2" -lifecycle = "2.9.1" -room = "2.7.2" -work = "2.10.2" +lifecycle = "2.10.0" +room = "2.8.4" +work = "2.11.0" [libraries] -android-gradle = "com.android.tools.build:gradle:8.11.1" -androidx-browser = "androidx.browser:browser:1.8.0" +android-gradle = "com.android.tools.build:gradle:8.13.2" +androidx-browser = "androidx.browser:browser:1.9.0" androidx-camera-camera2 = { module = "androidx.camera:camera-camera2", version.ref = "camera" } androidx-camera-lifecycle = { module = "androidx.camera:camera-lifecycle", version.ref = "camera" } androidx-camera-view = { module = "androidx.camera:camera-view", version.ref = "camera" } -androidx-concurrent-futures-ktx = "androidx.concurrent:concurrent-futures-ktx:1.2.0" +androidx-concurrent-futures-ktx = "androidx.concurrent:concurrent-futures-ktx:1.3.0" androidx-constraintlayout = "androidx.constraintlayout:constraintlayout:2.2.1" -androidx-core-ktx = "androidx.core:core-ktx:1.16.0" -androidx-espresso-core = "androidx.test.espresso:espresso-core:3.6.1" -androidx-junit-ktx = "androidx.test.ext:junit-ktx:1.2.1" +androidx-core-ktx = "androidx.core:core-ktx:1.17.0" +androidx-espresso-core = "androidx.test.espresso:espresso-core:3.7.0" +androidx-fragment-ktx = "androidx.fragment:fragment-ktx:1.8.9" +androidx-junit-ktx = "androidx.test.ext:junit-ktx:1.3.0" androidx-leanback-preference = "androidx.leanback:leanback-preference:1.2.0" androidx-lifecycle-livedata-core-ktx = { module = "androidx.lifecycle:lifecycle-livedata-core-ktx", version.ref = "lifecycle" } androidx-lifecycle-runtime-ktx = { module = "androidx.lifecycle:lifecycle-runtime-ktx", version.ref = "lifecycle" } @@ -23,32 +24,32 @@ androidx-preference = "androidx.preference:preference:1.2.1" androidx-room-compiler = { module = "androidx.room:room-compiler", version.ref = "room" } androidx-room-runtime = { module = "androidx.room:room-runtime", version.ref = "room" } androidx-room-testing = { module = "androidx.room:room-testing", version.ref = "room" } -androidx-test-runner = "androidx.test:runner:1.6.2" +androidx-test-runner = "androidx.test:runner:1.7.0" androidx-work-multiprocess = { module = "androidx.work:work-multiprocess", version.ref = "work" } androidx-work-runtime-ktx = { module = "androidx.work:work-runtime-ktx", version.ref = "work" } barcode-scanning = "com.google.mlkit:barcode-scanning:17.3.0" desugar = "com.android.tools:desugar_jdk_libs:2.1.5" -dnsjava = "dnsjava:dnsjava:3.6.3" -dokka = "org.jetbrains.dokka:dokka-gradle-plugin:2.0.0" +dnsjava = "dnsjava:dnsjava:3.6.4" +dokka = "org.jetbrains.dokka:dokka-gradle-plugin:2.1.0" fastscroll = "me.zhanghai.android.fastscroll:library:1.3.0" -firebase-analytics = "com.google.firebase:firebase-analytics:22.5.0" -firebase-crashlytics = "com.google.firebase:firebase-crashlytics:19.4.4" -firebase-crashlytics-gradle = "com.google.firebase:firebase-crashlytics-gradle:3.0.4" -google-oss-licenses = "com.google.android.gms:oss-licenses-plugin:0.10.6" -google-services = "com.google.gms:google-services:4.4.3" -gradle-maven-publish = "com.vanniktech:gradle-maven-publish-plugin:0.33.0" +firebase-analytics = "com.google.firebase:firebase-analytics:23.0.0" +firebase-crashlytics = "com.google.firebase:firebase-crashlytics:20.0.4" +firebase-crashlytics-gradle = "com.google.firebase:firebase-crashlytics-gradle:3.0.6" +google-oss-licenses = "com.google.android.gms:oss-licenses-plugin:0.10.10" +google-services = "com.google.gms:google-services:4.4.4" +gradle-maven-publish = "com.vanniktech:gradle-maven-publish-plugin:0.36.0" junit = "junit:junit:4.13.2" kotlin-gradle = "org.jetbrains.kotlin:kotlin-gradle-plugin:2.2.0" kotlinx-coroutines-android = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-android", version.ref = "coroutines" } kotlinx-coroutines-play-services = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-play-services", version.ref = "coroutines" } locale-api = "com.twofortyfouram:android-plugin-api-for-locale:1.0.4" -material = "com.google.android.material:material:1.12.0" -play-services-oss-licenses = "com.google.android.gms:play-services-oss-licenses:17.2.0" +material = "com.google.android.material:material:1.13.0" +play-services-oss-licenses = "com.google.android.gms:play-services-oss-licenses:17.3.0" preferencex-simplemenu = "com.takisoft.preferencex:preferencex-simplemenu:1.1.0" rust-android = "org.mozilla.rust-android-gradle:plugin:0.9.6" timber = "com.jakewharton.timber:timber:5.0.1" -zxing = "com.google.zxing:core:3.5.3" +zxing = "com.google.zxing:core:3.5.4" [plugins] -ksp = "com.google.devtools.ksp:2.2.0-2.0.2" -versions = "com.github.ben-manes.versions:0.52.0" +ksp = "com.google.devtools.ksp:2.3.4" +versions = "com.github.ben-manes.versions:0.53.0" diff --git a/shadowsocks-android/mobile/src/main/java/com/github/shadowsocks/MainActivity.kt b/shadowsocks-android/mobile/src/main/java/com/github/shadowsocks/MainActivity.kt index 45736f646e..d4e706e71f 100644 --- a/shadowsocks-android/mobile/src/main/java/com/github/shadowsocks/MainActivity.kt +++ b/shadowsocks-android/mobile/src/main/java/com/github/shadowsocks/MainActivity.kt @@ -53,9 +53,7 @@ import com.github.shadowsocks.widget.ServiceButton import com.github.shadowsocks.widget.StatsBar import com.google.android.material.navigation.NavigationView import com.google.android.material.snackbar.Snackbar -import com.google.firebase.analytics.ktx.analytics -import com.google.firebase.analytics.logEvent -import com.google.firebase.ktx.Firebase +import com.google.firebase.analytics.FirebaseAnalytics class MainActivity : AppCompatActivity(), ShadowsocksConnection.Callback, OnPreferenceDataStoreChangeListener, NavigationView.OnNavigationItemSelectedListener { @@ -204,7 +202,7 @@ class MainActivity : AppCompatActivity(), ShadowsocksConnection.Callback, OnPref } R.id.globalSettings -> displayFragment(GlobalSettingsFragment()) R.id.about -> { - Firebase.analytics.logEvent("about") { } + FirebaseAnalytics.getInstance(this).logEvent("about", null) displayFragment(AboutFragment()) } R.id.faq -> { diff --git a/shadowsocks-android/plugin/build.gradle.kts b/shadowsocks-android/plugin/build.gradle.kts index 5bac8ca61b..949d47a4e5 100644 --- a/shadowsocks-android/plugin/build.gradle.kts +++ b/shadowsocks-android/plugin/build.gradle.kts @@ -14,9 +14,9 @@ android { dependencies { coreLibraryDesugaring(libs.desugar) - api("androidx.core:core-ktx:1.7.0") - api("androidx.fragment:fragment-ktx:1.5.5") - api("com.google.android.material:material:1.6.0") + api(libs.androidx.core.ktx) + api(libs.androidx.fragment.ktx) + api(libs.material) testImplementation(libs.junit) androidTestImplementation(libs.androidx.test.runner) androidTestImplementation(libs.androidx.espresso.core) diff --git a/shadowsocks-android/settings.gradle.kts b/shadowsocks-android/settings.gradle.kts index 7106384858..ef7771c079 100644 --- a/shadowsocks-android/settings.gradle.kts +++ b/shadowsocks-android/settings.gradle.kts @@ -1 +1,4 @@ +plugins { + id("org.gradle.toolchains.foojay-resolver-convention") version "1.0.0" +} include(":core", ":plugin", ":mobile", ":tv") diff --git a/shadowsocks-rust/Cargo.lock b/shadowsocks-rust/Cargo.lock index dd89951a0a..6307d084d1 100644 --- a/shadowsocks-rust/Cargo.lock +++ b/shadowsocks-rust/Cargo.lock @@ -382,7 +382,7 @@ dependencies = [ "serde", "serde_bytes", "simdutf8", - "thiserror 2.0.17", + "thiserror 2.0.18", "time", "uuid", ] @@ -784,7 +784,7 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "10d60334b3b2e7c9d91ef8150abfb6fa4c1c39ebbcf4a81c2e346aad939fee3e" dependencies = [ - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -1345,7 +1345,7 @@ dependencies = [ "ring", "rustls", "serde", - "thiserror 2.0.17", + "thiserror 2.0.18", "tinyvec", "tokio", "tokio-rustls", @@ -1373,7 +1373,7 @@ dependencies = [ "rustls", "serde", "smallvec", - "thiserror 2.0.17", + "thiserror 2.0.18", "tokio", "tokio-rustls", "tracing", @@ -1989,7 +1989,7 @@ dependencies = [ "serde-value", "serde_json", "serde_yaml", - "thiserror 2.0.17", + "thiserror 2.0.18", "thread-id", "typemap-ors", "unicode-segmentation", @@ -2516,7 +2516,7 @@ dependencies = [ "rustc-hash", "rustls", "socket2 0.6.1", - "thiserror 2.0.17", + "thiserror 2.0.18", "tokio", "tracing", "web-time", @@ -2538,7 +2538,7 @@ dependencies = [ "rustls", "rustls-pki-types", "slab", - "thiserror 2.0.17", + "thiserror 2.0.18", "tinyvec", "tracing", "web-time", @@ -2634,7 +2634,7 @@ checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac" dependencies = [ "getrandom 0.2.16", "libredox", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -3124,7 +3124,7 @@ dependencies = [ "shadowsocks-crypto", "socket2 0.6.1", "spin", - "thiserror 2.0.17", + "thiserror 2.0.18", "tokio", "tokio-tfo", "trait-variant", @@ -3191,7 +3191,7 @@ dependencies = [ "sysexits", "syslog-tracing", "tcmalloc", - "thiserror 2.0.17", + "thiserror 2.0.18", "time", "tokio", "tracing", @@ -3243,7 +3243,7 @@ dependencies = [ "smoltcp", "socket2 0.6.1", "spin", - "thiserror 2.0.17", + "thiserror 2.0.18", "tokio", "tokio-native-tls", "tokio-rustls", @@ -3544,11 +3544,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.17" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8" +checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" dependencies = [ - "thiserror-impl 2.0.17", + "thiserror-impl 2.0.18", ] [[package]] @@ -3564,9 +3564,9 @@ dependencies = [ [[package]] name = "thiserror-impl" -version = "2.0.17" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" +checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", @@ -3792,7 +3792,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "786d480bce6247ab75f005b14ae1624ad978d3029d9113f0a22fa1ac773faeaf" dependencies = [ "crossbeam-channel", - "thiserror 2.0.17", + "thiserror 2.0.18", "time", "tracing-subscriber", ] @@ -3879,7 +3879,7 @@ dependencies = [ "libc", "log", "nix", - "thiserror 2.0.17", + "thiserror 2.0.18", "tokio", "tokio-util", "windows-sys 0.61.2", @@ -4596,7 +4596,7 @@ dependencies = [ "futures", "libloading 0.9.0", "log", - "thiserror 2.0.17", + "thiserror 2.0.18", "windows-sys 0.61.2", "winreg 0.55.0", ] diff --git a/shadowsocks-rust/crates/shadowsocks-service/src/local/http/http_client.rs b/shadowsocks-rust/crates/shadowsocks-service/src/local/http/http_client.rs index bad671921e..9045c05ebf 100644 --- a/shadowsocks-rust/crates/shadowsocks-service/src/local/http/http_client.rs +++ b/shadowsocks-rust/crates/shadowsocks-service/src/local/http/http_client.rs @@ -249,6 +249,9 @@ where if c.is_closed() { continue; } + if !c.is_ready() { + continue; + } return Some(c); } } @@ -271,12 +274,23 @@ where "HTTP connection keep-alive for host: {}, response: {:?}", host, response ); - self.cache_conn - .lock() - .await - .entry(host) - .or_insert_with(VecDeque::new) - .push_back((c, Instant::now())); + let cache_conn = self.cache_conn.clone(); + tokio::spawn(async move { + match c.ready().await { + Ok(_) => { + trace!("HTTP connection for host: {host} is ready and will be cached"); + cache_conn + .lock() + .await + .entry(host) + .or_insert_with(VecDeque::new) + .push_back((c, Instant::now())); + } + Err(e) => { + trace!("HTTP connection for host: {host} failed to become ready: {}", e); + } + }; + }); } Ok(response) @@ -448,4 +462,18 @@ where Self::Http2(r) => r.is_closed(), } } + + pub fn is_ready(&self) -> bool { + match self { + Self::Http1(r) => r.is_ready(), + Self::Http2(r) => r.is_ready(), + } + } + + pub async fn ready(&mut self) -> Result<(), hyper::Error> { + match self { + HttpConnection::Http1(r) => r.ready().await, + HttpConnection::Http2(r) => r.ready().await, + } + } } diff --git a/small/geoview/Makefile b/small/geoview/Makefile index cbc1358e1e..78e9c07888 100644 --- a/small/geoview/Makefile +++ b/small/geoview/Makefile @@ -1,12 +1,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=geoview -PKG_VERSION:=0.2.2 +PKG_VERSION:=0.2.4 PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://codeload.github.com/snowie2000/geoview/tar.gz/$(PKG_VERSION)? -PKG_HASH:=3cdec7da60d5ec84f71e086fdc77f43287d064371f51d49bcfe09abd50604343 +PKG_HASH:=1903d0e9aa1eea53cc445e558fae45ba6e328b1c44200954b4f15aa1adc8aff0 PKG_LICENSE:=Apache-2.0 PKG_LICENSE_FILES:=LICENSE diff --git a/small/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/client.js b/small/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/client.js index fdf8b36f05..22546c917c 100644 --- a/small/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/client.js +++ b/small/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/client.js @@ -309,7 +309,7 @@ const parseRulesYaml = hm.parseYaml.extend({ if (!entry) return null; - // key mapping // 2026/01/17 + // key mapping // 2026/01/18 let config = { id: this.id, label: '%s %s'.format(this.id.slice(0,7), _('(Imported)')), diff --git a/small/luci-app-passwall/Makefile b/small/luci-app-passwall/Makefile deleted file mode 100644 index 5d2fabbb9b..0000000000 --- a/small/luci-app-passwall/Makefile +++ /dev/null @@ -1,199 +0,0 @@ -# Copyright (C) 2018-2020 L-WRT Team -# Copyright (C) 2021-2025 xiaorouji -# Copyright (C) 2026 Openwrt-Passwall Organization -# -# This is free software, licensed under the GNU General Public License v3. - -include $(TOPDIR)/rules.mk - -PKG_NAME:=luci-app-passwall -PKG_VERSION:=26.1.17 -PKG_RELEASE:=1 -PKG_PO_VERSION:=$(PKG_VERSION) - -PKG_CONFIG_DEPENDS:= \ - CONFIG_PACKAGE_$(PKG_NAME)_Iptables_Transparent_Proxy \ - CONFIG_PACKAGE_$(PKG_NAME)_Nftables_Transparent_Proxy \ - CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_Geoview \ - CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_Haproxy \ - CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_Hysteria \ - CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_NaiveProxy \ - CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_Shadowsocks_Libev_Client \ - CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_Shadowsocks_Libev_Server \ - CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_Shadowsocks_Rust_Client \ - CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_Shadowsocks_Rust_Server \ - CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_ShadowsocksR_Libev_Client \ - CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_ShadowsocksR_Libev_Server \ - CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_Shadow_TLS \ - CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_Simple_Obfs \ - CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_SingBox \ - CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_Trojan_Plus \ - CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_tuic_client \ - CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_V2ray_Geodata \ - CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_V2ray_Plugin \ - CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_Xray \ - CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_Xray_Plugin - -LUCI_TITLE:=LuCI support for PassWall -LUCI_PKGARCH:=all -LUCI_DEPENDS:=+coreutils +coreutils-base64 +coreutils-nohup +curl \ - +chinadns-ng +dns2socks +dnsmasq-full +ip-full \ - +libuci-lua +lua +luci-compat +luci-lib-jsonc \ - +microsocks +resolveip +tcping - -define Package/$(PKG_NAME)/config -menu "Configuration" - depends on PACKAGE_$(PKG_NAME) - -config PACKAGE_$(PKG_NAME)_Iptables_Transparent_Proxy - bool "Iptables Transparent Proxy" - select PACKAGE_ipset - select PACKAGE_ipt2socks - select PACKAGE_iptables - select PACKAGE_iptables-zz-legacy - select PACKAGE_iptables-mod-conntrack-extra - select PACKAGE_iptables-mod-iprange - select PACKAGE_iptables-mod-socket - select PACKAGE_iptables-mod-tproxy - select PACKAGE_kmod-ipt-nat - default y if ! PACKAGE_firewall4 - -config PACKAGE_$(PKG_NAME)_Nftables_Transparent_Proxy - bool "Nftables Transparent Proxy" - select PACKAGE_ipt2socks - select PACKAGE_nftables - select PACKAGE_kmod-nft-socket - select PACKAGE_kmod-nft-tproxy - select PACKAGE_kmod-nft-nat - default y if PACKAGE_firewall4 - -config PACKAGE_$(PKG_NAME)_INCLUDE_Geoview - bool "Include Geoview" - select PACKAGE_geoview - default y if aarch64||arm||i386||x86_64 - -config PACKAGE_$(PKG_NAME)_INCLUDE_Haproxy - bool "Include Haproxy" - select PACKAGE_haproxy - default y if aarch64||arm||i386||x86_64 - -config PACKAGE_$(PKG_NAME)_INCLUDE_Hysteria - bool "Include Hysteria" - select PACKAGE_hysteria - default n - -config PACKAGE_$(PKG_NAME)_INCLUDE_NaiveProxy - bool "Include NaiveProxy" - depends on !(arc||armeb||loongarch64||mips||mips64||powerpc||TARGET_gemini) - select PACKAGE_naiveproxy - default n - -config PACKAGE_$(PKG_NAME)_INCLUDE_Shadowsocks_Libev_Client - bool "Include Shadowsocks Libev Client" - select PACKAGE_shadowsocks-libev-ss-local - select PACKAGE_shadowsocks-libev-ss-redir - default y - -config PACKAGE_$(PKG_NAME)_INCLUDE_Shadowsocks_Libev_Server - bool "Include Shadowsocks Libev Server" - select PACKAGE_shadowsocks-libev-ss-server - default y if aarch64||arm||i386||x86_64 - -config PACKAGE_$(PKG_NAME)_INCLUDE_Shadowsocks_Rust_Client - bool "Include Shadowsocks Rust Client" - depends on !i386 - select PACKAGE_shadowsocks-rust-sslocal - default y if aarch64||x86_64 - -config PACKAGE_$(PKG_NAME)_INCLUDE_Shadowsocks_Rust_Server - bool "Include Shadowsocks Rust Server" - depends on !i386 - select PACKAGE_shadowsocks-rust-ssserver - default n - -config PACKAGE_$(PKG_NAME)_INCLUDE_ShadowsocksR_Libev_Client - bool "Include ShadowsocksR Libev Client" - select PACKAGE_shadowsocksr-libev-ssr-local - select PACKAGE_shadowsocksr-libev-ssr-redir - default y - -config PACKAGE_$(PKG_NAME)_INCLUDE_ShadowsocksR_Libev_Server - bool "Include ShadowsocksR Libev Server" - select PACKAGE_shadowsocksr-libev-ssr-server - default n - -config PACKAGE_$(PKG_NAME)_INCLUDE_Shadow_TLS - bool "Include Shadow-TLS" - select PACKAGE_shadow-tls - depends on aarch64||arm||x86_64 - default n - -config PACKAGE_$(PKG_NAME)_INCLUDE_Simple_Obfs - bool "Include Simple-Obfs (Shadowsocks Plugin)" - select PACKAGE_simple-obfs-client - default y - -config PACKAGE_$(PKG_NAME)_INCLUDE_SingBox - bool "Include Sing-Box" - select PACKAGE_sing-box - default y if aarch64||arm||i386||x86_64 - -config PACKAGE_$(PKG_NAME)_INCLUDE_Trojan_Plus - bool "Include Trojan-Plus" - select PACKAGE_trojan-plus - default y - -config PACKAGE_$(PKG_NAME)_INCLUDE_tuic_client - bool "Include tuic-client" - depends on aarch64||arm||i386||x86_64 - select PACKAGE_tuic-client - default n - -config PACKAGE_$(PKG_NAME)_INCLUDE_V2ray_Geodata - bool "Include V2ray_Geodata" - select PACKAGE_v2ray-geoip - select PACKAGE_v2ray-geosite - default n - -config PACKAGE_$(PKG_NAME)_INCLUDE_V2ray_Plugin - bool "Include V2ray-Plugin (Shadowsocks Plugin)" - select PACKAGE_v2ray-plugin - default y if aarch64||arm||i386||x86_64 - -config PACKAGE_$(PKG_NAME)_INCLUDE_Xray - bool "Include Xray" - select PACKAGE_xray-core - select PACKAGE_unzip - default y if aarch64||arm||i386||x86_64 - -config PACKAGE_$(PKG_NAME)_INCLUDE_Xray_Plugin - bool "Include Xray-Plugin (Shadowsocks Plugin)" - select PACKAGE_xray-plugin - default n - -endmenu -endef - -define Package/$(PKG_NAME)/conffiles -/etc/config/passwall -/etc/config/passwall_server -/usr/share/passwall/rules/direct_host -/usr/share/passwall/rules/direct_ip -/usr/share/passwall/rules/proxy_host -/usr/share/passwall/rules/proxy_ip -/usr/share/passwall/rules/block_host -/usr/share/passwall/rules/block_ip -/usr/share/passwall/rules/lanlist_ipv4 -/usr/share/passwall/rules/lanlist_ipv6 -/usr/share/passwall/rules/domains_excluded -endef - -define Package/$(PKG_NAME)/postrm -#!/bin/sh -rm -f $${IPKG_INSTROOT}/usr/share/passwall/rules/*.nft -exit 0 -endef - -include $(TOPDIR)/feeds/luci/luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/small/luci-app-passwall/htdocs/luci-static/resources/view/passwall/Sortable.min.js b/small/luci-app-passwall/htdocs/luci-static/resources/view/passwall/Sortable.min.js deleted file mode 100644 index 95423a6491..0000000000 --- a/small/luci-app-passwall/htdocs/luci-static/resources/view/passwall/Sortable.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! Sortable 1.15.6 - MIT | git://github.com/SortableJS/Sortable.git */ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).Sortable=e()}(this,function(){"use strict";function e(e,t){var n,o=Object.keys(e);return Object.getOwnPropertySymbols&&(n=Object.getOwnPropertySymbols(e),t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),o.push.apply(o,n)),o}function I(o){for(var t=1;tt.length)&&(e=t.length);for(var n=0,o=new Array(e);n"===e[0]&&(e=e.substring(1)),t))try{if(t.matches)return t.matches(e);if(t.msMatchesSelector)return t.msMatchesSelector(e);if(t.webkitMatchesSelector)return t.webkitMatchesSelector(e)}catch(t){return}}function g(t){return t.host&&t!==document&&t.host.nodeType?t.host:t.parentNode}function P(t,e,n,o){if(t){n=n||document;do{if(null!=e&&(">"!==e[0]||t.parentNode===n)&&f(t,e)||o&&t===n)return t}while(t!==n&&(t=g(t)))}return null}var m,v=/\s+/g;function k(t,e,n){var o;t&&e&&(t.classList?t.classList[n?"add":"remove"](e):(o=(" "+t.className+" ").replace(v," ").replace(" "+e+" "," "),t.className=(o+(n?" "+e:"")).replace(v," ")))}function R(t,e,n){var o=t&&t.style;if(o){if(void 0===n)return document.defaultView&&document.defaultView.getComputedStyle?n=document.defaultView.getComputedStyle(t,""):t.currentStyle&&(n=t.currentStyle),void 0===e?n:n[e];o[e=!(e in o||-1!==e.indexOf("webkit"))?"-webkit-"+e:e]=n+("string"==typeof n?"":"px")}}function b(t,e){var n="";if("string"==typeof t)n=t;else do{var o=R(t,"transform")}while(o&&"none"!==o&&(n=o+" "+n),!e&&(t=t.parentNode));var i=window.DOMMatrix||window.WebKitCSSMatrix||window.CSSMatrix||window.MSCSSMatrix;return i&&new i(n)}function D(t,e,n){if(t){var o=t.getElementsByTagName(e),i=0,r=o.length;if(n)for(;i=n.left-e&&i<=n.right+e,e=r>=n.top-e&&r<=n.bottom+e;return o&&e?a=t:void 0}}),a);if(e){var n,o={};for(n in t)t.hasOwnProperty(n)&&(o[n]=t[n]);o.target=o.rootEl=e,o.preventDefault=void 0,o.stopPropagation=void 0,e[K]._onDragOver(o)}}var i,r,a}function Ft(t){Z&&Z.parentNode[K]._isOutsideThisEl(t.target)}function jt(t,e){if(!t||!t.nodeType||1!==t.nodeType)throw"Sortable: `el` must be an HTMLElement, not ".concat({}.toString.call(t));this.el=t,this.options=e=a({},e),t[K]=this;var n,o,i={group:null,sort:!0,disabled:!1,store:null,handle:null,draggable:/^[uo]l$/i.test(t.nodeName)?">li":">*",swapThreshold:1,invertSwap:!1,invertedSwapThreshold:null,removeCloneOnHide:!0,direction:function(){return kt(t,this.options)},ghostClass:"sortable-ghost",chosenClass:"sortable-chosen",dragClass:"sortable-drag",ignore:"a, img",filter:null,preventOnFilter:!0,animation:0,easing:null,setData:function(t,e){t.setData("Text",e.textContent)},dropBubble:!1,dragoverBubble:!1,dataIdAttr:"data-id",delay:0,delayOnTouchOnly:!1,touchStartThreshold:(Number.parseInt?Number:window).parseInt(window.devicePixelRatio,10)||1,forceFallback:!1,fallbackClass:"sortable-fallback",fallbackOnBody:!1,fallbackTolerance:0,fallbackOffset:{x:0,y:0},supportPointer:!1!==jt.supportPointer&&"PointerEvent"in window&&(!u||c),emptyInsertThreshold:5};for(n in z.initializePlugins(this,t,i),i)n in e||(e[n]=i[n]);for(o in Rt(e),this)"_"===o.charAt(0)&&"function"==typeof this[o]&&(this[o]=this[o].bind(this));this.nativeDraggable=!e.forceFallback&&It,this.nativeDraggable&&(this.options.touchStartThreshold=1),e.supportPointer?h(t,"pointerdown",this._onTapStart):(h(t,"mousedown",this._onTapStart),h(t,"touchstart",this._onTapStart)),this.nativeDraggable&&(h(t,"dragover",this),h(t,"dragenter",this)),St.push(this.el),e.store&&e.store.get&&this.sort(e.store.get(this)||[]),a(this,A())}function Ht(t,e,n,o,i,r,a,l){var s,c,u=t[K],d=u.options.onMove;return!window.CustomEvent||y||w?(s=document.createEvent("Event")).initEvent("move",!0,!0):s=new CustomEvent("move",{bubbles:!0,cancelable:!0}),s.to=e,s.from=t,s.dragged=n,s.draggedRect=o,s.related=i||e,s.relatedRect=r||X(e),s.willInsertAfter=l,s.originalEvent=a,t.dispatchEvent(s),c=d?d.call(u,s,a):c}function Lt(t){t.draggable=!1}function Kt(){xt=!1}function Wt(t){return setTimeout(t,0)}function zt(t){return clearTimeout(t)}jt.prototype={constructor:jt,_isOutsideThisEl:function(t){this.el.contains(t)||t===this.el||(vt=null)},_getDirection:function(t,e){return"function"==typeof this.options.direction?this.options.direction.call(this,t,e,Z):this.options.direction},_onTapStart:function(e){if(e.cancelable){var n=this,o=this.el,t=this.options,i=t.preventOnFilter,r=e.type,a=e.touches&&e.touches[0]||e.pointerType&&"touch"===e.pointerType&&e,l=(a||e).target,s=e.target.shadowRoot&&(e.path&&e.path[0]||e.composedPath&&e.composedPath()[0])||l,c=t.filter;if(!function(t){Ot.length=0;var e=t.getElementsByTagName("input"),n=e.length;for(;n--;){var o=e[n];o.checked&&Ot.push(o)}}(o),!Z&&!(/mousedown|pointerdown/.test(r)&&0!==e.button||t.disabled)&&!s.isContentEditable&&(this.nativeDraggable||!u||!l||"SELECT"!==l.tagName.toUpperCase())&&!((l=P(l,t.draggable,o,!1))&&l.animated||et===l)){if(it=j(l),at=j(l,t.draggable),"function"==typeof c){if(c.call(this,e,l,this))return V({sortable:n,rootEl:s,name:"filter",targetEl:l,toEl:o,fromEl:o}),U("filter",n,{evt:e}),void(i&&e.preventDefault())}else if(c=c&&c.split(",").some(function(t){if(t=P(s,t.trim(),o,!1))return V({sortable:n,rootEl:t,name:"filter",targetEl:l,fromEl:o,toEl:o}),U("filter",n,{evt:e}),!0}))return void(i&&e.preventDefault());t.handle&&!P(s,t.handle,o,!1)||this._prepareDragStart(e,a,l)}}},_prepareDragStart:function(t,e,n){var o,i=this,r=i.el,a=i.options,l=r.ownerDocument;n&&!Z&&n.parentNode===r&&(o=X(n),J=r,$=(Z=n).parentNode,tt=Z.nextSibling,et=n,st=a.group,ut={target:jt.dragged=Z,clientX:(e||t).clientX,clientY:(e||t).clientY},ft=ut.clientX-o.left,gt=ut.clientY-o.top,this._lastX=(e||t).clientX,this._lastY=(e||t).clientY,Z.style["will-change"]="all",o=function(){U("delayEnded",i,{evt:t}),jt.eventCanceled?i._onDrop():(i._disableDelayedDragEvents(),!s&&i.nativeDraggable&&(Z.draggable=!0),i._triggerDragStart(t,e),V({sortable:i,name:"choose",originalEvent:t}),k(Z,a.chosenClass,!0))},a.ignore.split(",").forEach(function(t){D(Z,t.trim(),Lt)}),h(l,"dragover",Bt),h(l,"mousemove",Bt),h(l,"touchmove",Bt),a.supportPointer?(h(l,"pointerup",i._onDrop),this.nativeDraggable||h(l,"pointercancel",i._onDrop)):(h(l,"mouseup",i._onDrop),h(l,"touchend",i._onDrop),h(l,"touchcancel",i._onDrop)),s&&this.nativeDraggable&&(this.options.touchStartThreshold=4,Z.draggable=!0),U("delayStart",this,{evt:t}),!a.delay||a.delayOnTouchOnly&&!e||this.nativeDraggable&&(w||y)?o():jt.eventCanceled?this._onDrop():(a.supportPointer?(h(l,"pointerup",i._disableDelayedDrag),h(l,"pointercancel",i._disableDelayedDrag)):(h(l,"mouseup",i._disableDelayedDrag),h(l,"touchend",i._disableDelayedDrag),h(l,"touchcancel",i._disableDelayedDrag)),h(l,"mousemove",i._delayedDragTouchMoveHandler),h(l,"touchmove",i._delayedDragTouchMoveHandler),a.supportPointer&&h(l,"pointermove",i._delayedDragTouchMoveHandler),i._dragStartTimer=setTimeout(o,a.delay)))},_delayedDragTouchMoveHandler:function(t){t=t.touches?t.touches[0]:t;Math.max(Math.abs(t.clientX-this._lastX),Math.abs(t.clientY-this._lastY))>=Math.floor(this.options.touchStartThreshold/(this.nativeDraggable&&window.devicePixelRatio||1))&&this._disableDelayedDrag()},_disableDelayedDrag:function(){Z&&Lt(Z),clearTimeout(this._dragStartTimer),this._disableDelayedDragEvents()},_disableDelayedDragEvents:function(){var t=this.el.ownerDocument;p(t,"mouseup",this._disableDelayedDrag),p(t,"touchend",this._disableDelayedDrag),p(t,"touchcancel",this._disableDelayedDrag),p(t,"pointerup",this._disableDelayedDrag),p(t,"pointercancel",this._disableDelayedDrag),p(t,"mousemove",this._delayedDragTouchMoveHandler),p(t,"touchmove",this._delayedDragTouchMoveHandler),p(t,"pointermove",this._delayedDragTouchMoveHandler)},_triggerDragStart:function(t,e){e=e||"touch"==t.pointerType&&t,!this.nativeDraggable||e?this.options.supportPointer?h(document,"pointermove",this._onTouchMove):h(document,e?"touchmove":"mousemove",this._onTouchMove):(h(Z,"dragend",this),h(J,"dragstart",this._onDragStart));try{document.selection?Wt(function(){document.selection.empty()}):window.getSelection().removeAllRanges()}catch(t){}},_dragStarted:function(t,e){var n;Dt=!1,J&&Z?(U("dragStarted",this,{evt:e}),this.nativeDraggable&&h(document,"dragover",Ft),n=this.options,t||k(Z,n.dragClass,!1),k(Z,n.ghostClass,!0),jt.active=this,t&&this._appendGhost(),V({sortable:this,name:"start",originalEvent:e})):this._nulling()},_emulateDragOver:function(){if(dt){this._lastX=dt.clientX,this._lastY=dt.clientY,Xt();for(var t=document.elementFromPoint(dt.clientX,dt.clientY),e=t;t&&t.shadowRoot&&(t=t.shadowRoot.elementFromPoint(dt.clientX,dt.clientY))!==e;)e=t;if(Z.parentNode[K]._isOutsideThisEl(t),e)do{if(e[K])if(e[K]._onDragOver({clientX:dt.clientX,clientY:dt.clientY,target:t,rootEl:e})&&!this.options.dragoverBubble)break}while(e=g(t=e));Yt()}},_onTouchMove:function(t){if(ut){var e=this.options,n=e.fallbackTolerance,o=e.fallbackOffset,i=t.touches?t.touches[0]:t,r=Q&&b(Q,!0),a=Q&&r&&r.a,l=Q&&r&&r.d,e=At&&wt&&E(wt),a=(i.clientX-ut.clientX+o.x)/(a||1)+(e?e[0]-Tt[0]:0)/(a||1),l=(i.clientY-ut.clientY+o.y)/(l||1)+(e?e[1]-Tt[1]:0)/(l||1);if(!jt.active&&!Dt){if(n&&Math.max(Math.abs(i.clientX-this._lastX),Math.abs(i.clientY-this._lastY))E.right+10||S.clientY>x.bottom&&S.clientX>x.left:S.clientY>E.bottom+10||S.clientX>x.right&&S.clientY>x.top)||m.animated)){if(m&&(t=n,e=r,C=X(B((_=this).el,0,_.options,!0)),_=L(_.el,_.options,Q),e?t.clientX<_.left-10||t.clientY65536?(i[0]=240|(1835008&n)>>>18,i[1]=128|(258048&n)>>>12,i[2]=128|(4032&n)>>>6,i[3]=128|63&n):n>2048?(i[0]=224|(61440&n)>>>12,i[1]=128|(4032&n)>>>6,i[2]=128|63&n):n>128?(i[0]=192|(1984&n)>>>6,i[1]=128|63&n):i[0]=n,this.parsedData.push(i)}this.parsedData=Array.prototype.concat.apply([],this.parsedData),this.parsedData.length!=this.data.length&&(this.parsedData.unshift(191),this.parsedData.unshift(187),this.parsedData.unshift(239))}function e(t,e){this.typeNumber=t,this.errorCorrectLevel=e,this.modules=null,this.moduleCount=0,this.dataCache=null,this.dataList=[]}t.prototype={getLength:function(t){return this.parsedData.length},write:function(t){for(var e=0,r=this.parsedData.length;e=7&&this.setupTypeNumber(t),null==this.dataCache&&(this.dataCache=e.createData(this.typeNumber,this.errorCorrectLevel,this.dataList)),this.mapData(this.dataCache,r)},setupPositionProbePattern:function(t,e){for(var r=-1;r<=7;r++)if(!(t+r<=-1||this.moduleCount<=t+r))for(var o=-1;o<=7;o++)e+o<=-1||this.moduleCount<=e+o||(this.modules[t+r][e+o]=0<=r&&r<=6&&(0==o||6==o)||0<=o&&o<=6&&(0==r||6==r)||2<=r&&r<=4&&2<=o&&o<=4)},getBestMaskPattern:function(){for(var t=0,e=0,r=0;r<8;r++){this.makeImpl(!0,r);var o=g.getLostPoint(this);(0==r||t>o)&&(t=o,e=r)}return e},createMovieClip:function(t,e,r){var o=t.createEmptyMovieClip(e,r);this.make();for(var i=0;i>r&1);this.modules[Math.floor(r/3)][r%3+this.moduleCount-8-3]=o}for(r=0;r<18;r++){o=!t&&1==(e>>r&1);this.modules[r%3+this.moduleCount-8-3][Math.floor(r/3)]=o}},setupTypeInfo:function(t,e){for(var r=this.errorCorrectLevel<<3|e,o=g.getBCHTypeInfo(r),i=0;i<15;i++){var n=!t&&1==(o>>i&1);i<6?this.modules[i][8]=n:i<8?this.modules[i+1][8]=n:this.modules[this.moduleCount-15+i][8]=n}for(i=0;i<15;i++){n=!t&&1==(o>>i&1);i<8?this.modules[8][this.moduleCount-i-1]=n:i<9?this.modules[8][15-i-1+1]=n:this.modules[8][15-i-1]=n}this.modules[this.moduleCount-8][8]=!t},mapData:function(t,e){for(var r=-1,o=this.moduleCount-1,i=7,n=0,a=this.moduleCount-1;a>0;a-=2)for(6==a&&a--;;){for(var s=0;s<2;s++)if(null==this.modules[o][a-s]){var h=!1;n>>i&1)),g.getMask(e,o,a-s)&&(h=!h),this.modules[o][a-s]=h,-1==--i&&(n++,i=7)}if((o+=r)<0||this.moduleCount<=o){o-=r,r=-r;break}}}},e.PAD0=236,e.PAD1=17,e.createData=function(t,r,o){for(var i=m.getRSBlocks(t,r),n=new _,a=0;a8*h)throw new Error("code length overflow. ("+n.getLengthInBits()+">"+8*h+")");for(n.getLengthInBits()+4<=8*h&&n.put(0,4);n.getLengthInBits()%8!=0;)n.putBit(!1);for(;!(n.getLengthInBits()>=8*h||(n.put(e.PAD0,8),n.getLengthInBits()>=8*h));)n.put(e.PAD1,8);return e.createBytes(n,i)},e.createBytes=function(t,e){for(var r=0,o=0,i=0,n=new Array(e.length),a=new Array(e.length),s=0;s=0?d.get(c):0}}var m=0;for(u=0;u=0;)e^=g.G15<=0;)e^=g.G18<>>=1;return e},getPatternPosition:function(t){return g.PATTERN_POSITION_TABLE[t-1]},getMask:function(t,e,r){switch(t){case i:return(e+r)%2==0;case n:return e%2==0;case a:return r%3==0;case s:return(e+r)%3==0;case h:return(Math.floor(e/2)+Math.floor(r/3))%2==0;case l:return e*r%2+e*r%3==0;case u:return(e*r%2+e*r%3)%2==0;case f:return(e*r%3+(e+r)%2)%2==0;default:throw new Error("bad maskPattern:"+t)}},getErrorCorrectPolynomial:function(t){for(var e=new p([1],0),r=0;r5&&(r+=3+n-5)}for(o=0;o=256;)t-=255;return d.EXP_TABLE[t]},EXP_TABLE:new Array(256),LOG_TABLE:new Array(256)},c=0;c<8;c++)d.EXP_TABLE[c]=1<>>7-t%8&1)},put:function(t,e){for(var r=0;r>>e-r-1&1))},getLengthInBits:function(){return this.length},putBit:function(t){var e=Math.floor(this.length/8);this.buffer.length<=e&&this.buffer.push(0),t&&(this.buffer[e]|=128>>>this.length%8),this.length++}};var v=[[17,14,11,7],[32,26,20,14],[53,42,32,24],[78,62,46,34],[106,84,60,44],[134,106,74,58],[154,122,86,64],[192,152,108,84],[230,180,130,98],[271,213,151,119],[321,251,177,137],[367,287,203,155],[425,331,241,177],[458,362,258,194],[520,412,292,220],[586,450,322,250],[644,504,364,280],[718,560,394,310],[792,624,442,338],[858,666,482,382],[929,711,509,403],[1003,779,565,439],[1091,857,611,461],[1171,911,661,511],[1273,997,715,535],[1367,1059,751,593],[1465,1125,805,625],[1528,1190,868,658],[1628,1264,908,698],[1732,1370,982,742],[1840,1452,1030,790],[1952,1538,1112,842],[2068,1628,1168,898],[2188,1722,1228,958],[2303,1809,1283,983],[2431,1911,1351,1051],[2563,1989,1423,1093],[2699,2099,1499,1139],[2809,2213,1579,1219],[2953,2331,1663,1273]];function C(){var t=!1,e=navigator.userAgent;if(/android/i.test(e)){t=!0;var r=e.toString().match(/android ([0-9]\.[0-9])/i);r&&r[1]&&(t=parseFloat(r[1]))}return t}var w=function(){var t=function(t,e){this._el=t,this._htOption=e};return t.prototype.draw=function(t){var e=this._htOption,r=this._el,o=t.getModuleCount();Math.floor(e.width/o),Math.floor(e.height/o);function i(t,e){var r=document.createElementNS("http://www.w3.org/2000/svg",t);for(var o in e)e.hasOwnProperty(o)&&r.setAttribute(o,e[o]);return r}this.clear();var n=i("svg",{viewBox:"0 0 "+String(o)+" "+String(o),width:"100%",height:"100%",fill:e.colorLight});n.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink","http://www.w3.org/1999/xlink"),r.appendChild(n),n.appendChild(i("rect",{fill:e.colorLight,width:"100%",height:"100%"})),n.appendChild(i("rect",{fill:e.colorDark,width:"1",height:"1",id:"template"}));for(var a=0;a'],s=0;s");for(var h=0;h');a.push("")}a.push(""),r.innerHTML=a.join("");var l=r.childNodes[0],u=(e.width-l.offsetWidth)/2,f=(e.height-l.offsetHeight)/2;u>0&&f>0&&(l.style.margin=f+"px "+u+"px")},t.prototype.clear=function(){this._el.innerHTML=""},t}():function(){function t(){this._elImage.src=this._elCanvas.toDataURL("image/png"),this._elImage.style.display="block",this._elCanvas.style.display="none"}if(this._android&&this._android<=2.1){var e=1/window.devicePixelRatio,r=CanvasRenderingContext2D.prototype.drawImage;CanvasRenderingContext2D.prototype.drawImage=function(t,o,i,n,a,s,h,l,u){if("nodeName"in t&&/img/i.test(t.nodeName))for(var f=arguments.length-1;f>=1;f--)arguments[f]=arguments[f]*e;else void 0===l&&(arguments[1]*=e,arguments[2]*=e,arguments[3]*=e,arguments[4]*=e);r.apply(this,arguments)}}var o=function(t,e){this._bIsPainted=!1,this._android=C(),this._htOption=e,this._elCanvas=document.createElement("canvas"),this._elCanvas.width=e.width,this._elCanvas.height=e.height,t.appendChild(this._elCanvas),this._el=t,this._oContext=this._elCanvas.getContext("2d"),this._bIsPainted=!1,this._elImage=document.createElement("img"),this._elImage.alt="Scan me!",this._elImage.style.display="none",this._el.appendChild(this._elImage),this._bSupportDataURI=null};return o.prototype.draw=function(t){var e=this._elImage,r=this._oContext,o=this._htOption,i=t.getModuleCount(),n=o.width/i,a=o.height/i,s=Math.round(n),h=Math.round(a);e.style.display="none",this.clear();for(var l=0;lv.length)throw new Error("Too long data");return r}(QRCode=function(t,e){if(this._htOption={width:256,height:256,typeNumber:4,colorDark:"#000000",colorLight:"#ffffff",correctLevel:o.H},"string"==typeof e&&(e={text:e}),e)for(var r in e)this._htOption[r]=e[r];"string"==typeof t&&(t=document.getElementById(t)),this._htOption.useSVG&&(D=w),this._android=C(),this._el=t,this._oQRCode=null,this._oDrawing=new D(this._el,this._htOption),this._htOption.text&&this.makeCode(this._htOption.text)}).prototype.makeCode=function(t){this._oQRCode=new e(A(t,this._htOption.correctLevel),this._htOption.correctLevel),this._oQRCode.addData(t),this._oQRCode.make(),this._el.title=t,this._oDrawing.draw(this._oQRCode),this.makeImage()},QRCode.prototype.makeImage=function(){"function"==typeof this._oDrawing.makeImage&&(!this._android||this._android>=3)&&this._oDrawing.makeImage()},QRCode.prototype.clear=function(){this._oDrawing.clear()},QRCode.CorrectLevel=o}(),"undefined"!=typeof module&&(module.exports=QRCode); diff --git a/small/luci-app-passwall/luasrc/controller/passwall.lua b/small/luci-app-passwall/luasrc/controller/passwall.lua deleted file mode 100644 index a052e29635..0000000000 --- a/small/luci-app-passwall/luasrc/controller/passwall.lua +++ /dev/null @@ -1,951 +0,0 @@ --- Copyright (C) 2018-2020 L-WRT Team --- Copyright (C) 2021-2025 xiaorouji --- Copyright (C) 2026 Openwrt-Passwall Organization - -module("luci.controller.passwall", package.seeall) -local api = require "luci.passwall.api" -local appname = "passwall" -- not available -local uci = api.uci -- in funtion index() -local fs = api.fs -local http = require "luci.http" -local util = require "luci.util" -local i18n = require "luci.i18n" -local jsonStringify = luci.jsonc.stringify - -function index() - if not nixio.fs.access("/etc/config/passwall") then - if nixio.fs.access("/usr/share/passwall/0_default_config") then - luci.sys.call('cp -f /usr/share/passwall/0_default_config /etc/config/passwall') - else return end - end - local api = require "luci.passwall.api" - local appname = "passwall" -- global definitions not available - local uci = api.uci -- in function index() - local fs = api.fs - entry({"admin", "services", appname}).dependent = true - entry({"admin", "services", appname, "reset_config"}, call("reset_config")).leaf = true - entry({"admin", "services", appname, "show"}, call("show_menu")).leaf = true - entry({"admin", "services", appname, "hide"}, call("hide_menu")).leaf = true - local e - if uci:get(appname, "@global[0]", "hide_from_luci") ~= "1" then - e = entry({"admin", "services", appname}, alias("admin", "services", appname, "settings"), _("Pass Wall"), -1) - else - e = entry({"admin", "services", appname}, alias("admin", "services", appname, "settings"), nil, -1) - end - e.dependent = true - e.acl_depends = { "luci-app-passwall" } - --[[ Client ]] - entry({"admin", "services", appname, "settings"}, cbi(appname .. "/client/global"), _("Basic Settings"), 1).dependent = true - entry({"admin", "services", appname, "node_list"}, cbi(appname .. "/client/node_list"), _("Node List"), 2).dependent = true - entry({"admin", "services", appname, "node_subscribe"}, cbi(appname .. "/client/node_subscribe"), _("Node Subscribe"), 3).dependent = true - entry({"admin", "services", appname, "other"}, cbi(appname .. "/client/other", {autoapply = true}), _("Other Settings"), 92).leaf = true - if fs.access("/usr/sbin/haproxy") then - entry({"admin", "services", appname, "haproxy"}, cbi(appname .. "/client/haproxy"), _("Load Balancing"), 93).leaf = true - end - entry({"admin", "services", appname, "app_update"}, cbi(appname .. "/client/app_update"), _("App Update"), 95).leaf = true - entry({"admin", "services", appname, "rule"}, cbi(appname .. "/client/rule"), _("Rule Manage"), 96).leaf = true - entry({"admin", "services", appname, "rule_list"}, cbi(appname .. "/client/rule_list", {autoapply = true}), _("Rule List"), 97).leaf = true - entry({"admin", "services", appname, "node_subscribe_config"}, cbi(appname .. "/client/node_subscribe_config")).leaf = true - entry({"admin", "services", appname, "node_config"}, cbi(appname .. "/client/node_config")).leaf = true - entry({"admin", "services", appname, "shunt_rules"}, cbi(appname .. "/client/shunt_rules")).leaf = true - entry({"admin", "services", appname, "socks_config"}, cbi(appname .. "/client/socks_config")).leaf = true - entry({"admin", "services", appname, "acl"}, cbi(appname .. "/client/acl"), _("Access control"), 98).leaf = true - entry({"admin", "services", appname, "acl_config"}, cbi(appname .. "/client/acl_config")).leaf = true - entry({"admin", "services", appname, "log"}, form(appname .. "/client/log"), _("Watch Logs"), 999).leaf = true - - --[[ Server ]] - entry({"admin", "services", appname, "server"}, cbi(appname .. "/server/index"), _("Server-Side"), 99).leaf = true - entry({"admin", "services", appname, "server_user"}, cbi(appname .. "/server/user")).leaf = true - - --[[ API ]] - entry({"admin", "services", appname, "server_user_status"}, call("server_user_status")).leaf = true - entry({"admin", "services", appname, "server_user_log"}, call("server_user_log")).leaf = true - entry({"admin", "services", appname, "server_get_log"}, call("server_get_log")).leaf = true - entry({"admin", "services", appname, "server_clear_log"}, call("server_clear_log")).leaf = true - entry({"admin", "services", appname, "link_add_node"}, call("link_add_node")).leaf = true - entry({"admin", "services", appname, "socks_autoswitch_add_node"}, call("socks_autoswitch_add_node")).leaf = true - entry({"admin", "services", appname, "socks_autoswitch_remove_node"}, call("socks_autoswitch_remove_node")).leaf = true - entry({"admin", "services", appname, "gen_client_config"}, call("gen_client_config")).leaf = true - entry({"admin", "services", appname, "get_now_use_node"}, call("get_now_use_node")).leaf = true - entry({"admin", "services", appname, "get_redir_log"}, call("get_redir_log")).leaf = true - entry({"admin", "services", appname, "get_socks_log"}, call("get_socks_log")).leaf = true - entry({"admin", "services", appname, "get_chinadns_log"}, call("get_chinadns_log")).leaf = true - entry({"admin", "services", appname, "get_log"}, call("get_log")).leaf = true - entry({"admin", "services", appname, "clear_log"}, call("clear_log")).leaf = true - entry({"admin", "services", appname, "index_status"}, call("index_status")).leaf = true - entry({"admin", "services", appname, "haproxy_status"}, call("haproxy_status")).leaf = true - entry({"admin", "services", appname, "socks_status"}, call("socks_status")).leaf = true - entry({"admin", "services", appname, "connect_status"}, call("connect_status")).leaf = true - entry({"admin", "services", appname, "ping_node"}, call("ping_node")).leaf = true - entry({"admin", "services", appname, "urltest_node"}, call("urltest_node")).leaf = true - entry({"admin", "services", appname, "add_node"}, call("add_node")).leaf = true - entry({"admin", "services", appname, "set_node"}, call("set_node")).leaf = true - entry({"admin", "services", appname, "copy_node"}, call("copy_node")).leaf = true - entry({"admin", "services", appname, "clear_all_nodes"}, call("clear_all_nodes")).leaf = true - entry({"admin", "services", appname, "delete_select_nodes"}, call("delete_select_nodes")).leaf = true - entry({"admin", "services", appname, "reassign_group"}, call("reassign_group")).leaf = true - entry({"admin", "services", appname, "get_node"}, call("get_node")).leaf = true - entry({"admin", "services", appname, "save_node_order"}, call("save_node_order")).leaf = true - entry({"admin", "services", appname, "save_node_list_opt"}, call("save_node_list_opt")).leaf = true - entry({"admin", "services", appname, "update_rules"}, call("update_rules")).leaf = true - entry({"admin", "services", appname, "subscribe_del_node"}, call("subscribe_del_node")).leaf = true - entry({"admin", "services", appname, "subscribe_del_all"}, call("subscribe_del_all")).leaf = true - entry({"admin", "services", appname, "subscribe_manual"}, call("subscribe_manual")).leaf = true - entry({"admin", "services", appname, "subscribe_manual_all"}, call("subscribe_manual_all")).leaf = true - entry({"admin", "services", appname, "flush_set"}, call("flush_set")).leaf = true - - --[[rule_list]] - entry({"admin", "services", appname, "read_rulelist"}, call("read_rulelist")).leaf = true - - --[[Components update]] - entry({"admin", "services", appname, "check_passwall"}, call("app_check")).leaf = true - local coms = require "luci.passwall.com" - local com - for _, com in ipairs(coms.order) do - entry({"admin", "services", appname, "check_" .. com}, call("com_check", com)).leaf = true - entry({"admin", "services", appname, "update_" .. com}, call("com_update", com)).leaf = true - end - - --[[Backup]] - entry({"admin", "services", appname, "create_backup"}, call("create_backup")).leaf = true - entry({"admin", "services", appname, "restore_backup"}, call("restore_backup")).leaf = true - - --[[geoview]] - entry({"admin", "services", appname, "geo_view"}, call("geo_view")).leaf = true -end - -local function http_write_json(content) - http.prepare_content("application/json") - http.write(jsonStringify(content or {code = 1})) -end - -function reset_config() - luci.sys.call('/etc/init.d/passwall stop') - luci.sys.call('[ -f "/usr/share/passwall/0_default_config" ] && cp -f /usr/share/passwall/0_default_config /etc/config/passwall') - http.redirect(api.url()) -end - -function show_menu() - api.sh_uci_del(appname, "@global[0]", "hide_from_luci", true) - luci.sys.call("rm -rf /tmp/luci-*") - luci.sys.call("/etc/init.d/rpcd restart >/dev/null") - http.redirect(api.url()) -end - -function hide_menu() - api.sh_uci_set(appname, "@global[0]", "hide_from_luci", "1", true) - luci.sys.call("rm -rf /tmp/luci-*") - luci.sys.call("/etc/init.d/rpcd restart >/dev/null") - http.redirect(luci.dispatcher.build_url("admin", "status", "overview")) -end - -function link_add_node() - -- 分片接收以突破uhttpd的限制 - local tmp_file = "/tmp/links.conf" - local chunk = http.formvalue("chunk") - local chunk_index = tonumber(http.formvalue("chunk_index")) - local total_chunks = tonumber(http.formvalue("total_chunks")) - local group = http.formvalue("group") or "default" - - if chunk and chunk_index ~= nil and total_chunks ~= nil then - -- 按顺序拼接到文件 - local mode = "a" - if chunk_index == 0 then - mode = "w" - end - local f = io.open(tmp_file, mode) - if f then - f:write(chunk) - f:close() - end - -- 如果是最后一片,才执行 - if chunk_index + 1 == total_chunks then - luci.sys.call("lua /usr/share/passwall/subscribe.lua add " .. group) - end - end -end - -function socks_autoswitch_add_node() - local id = http.formvalue("id") - local key = http.formvalue("key") - if id and id ~= "" and key and key ~= "" then - uci:set(appname, id, "enable_autoswitch", "1") - local new_list = uci:get(appname, id, "autoswitch_backup_node") or {} - for i = #new_list, 1, -1 do - if (uci:get(appname, new_list[i], "remarks") or ""):find(key) then - table.remove(new_list, i) - end - end - for k, e in ipairs(api.get_valid_nodes()) do - if e.node_type == "normal" and e["remark"]:find(key) then - table.insert(new_list, e.id) - end - end - uci:set_list(appname, id, "autoswitch_backup_node", new_list) - api.uci_save(uci, appname) - end - http.redirect(api.url("socks_config", id)) -end - -function socks_autoswitch_remove_node() - local id = http.formvalue("id") - local key = http.formvalue("key") - if id and id ~= "" and key and key ~= "" then - uci:set(appname, id, "enable_autoswitch", "1") - local new_list = uci:get(appname, id, "autoswitch_backup_node") or {} - for i = #new_list, 1, -1 do - if (uci:get(appname, new_list[i], "remarks") or ""):find(key) then - table.remove(new_list, i) - end - end - uci:set_list(appname, id, "autoswitch_backup_node", new_list) - api.uci_save(uci, appname) - end - http.redirect(api.url("socks_config", id)) -end - - -function gen_client_config() - local id = http.formvalue("id") - local config_file = api.TMP_PATH .. "/config_" .. id - luci.sys.call(string.format("/usr/share/passwall/app.sh run_socks flag=config_%s node=%s bind=127.0.0.1 socks_port=1080 config_file=%s no_run=1", id, id, config_file)) - if nixio.fs.access(config_file) then - http.prepare_content("application/json") - http.write(luci.sys.exec("cat " .. config_file)) - luci.sys.call("rm -f " .. config_file) - else - http.redirect(api.url("node_list")) - end -end - -function get_now_use_node() - local path = "/tmp/etc/passwall/acl/default" - local e = {} - local tcp_node = api.get_cache_var("ACL_GLOBAL_TCP_node") - if tcp_node then - e["TCP"] = tcp_node - end - local udp_node = api.get_cache_var("ACL_GLOBAL_UDP_node") - if udp_node then - e["UDP"] = udp_node - end - http_write_json(e) -end - -function get_redir_log() - local name = http.formvalue("name") - local proto = http.formvalue("proto") - local path = "/tmp/etc/passwall/acl/" .. name - proto = proto:upper() - if proto == "UDP" and (uci:get(appname, "@global[0]", "udp_node") or "nil") == "tcp" and not fs.access(path .. "/" .. proto .. ".log") then - proto = "TCP" - end - if fs.access(path .. "/" .. proto .. ".log") then - local content = luci.sys.exec("tail -n 19999 ".. path .. "/" .. proto .. ".log") - content = content:gsub("\n", "
") - http.write(content) - else - http.write(string.format("", i18n.translate("Not enabled log"))) - end -end - -function get_socks_log() - local name = http.formvalue("name") - local path = "/tmp/etc/passwall/SOCKS_" .. name .. ".log" - if fs.access(path) then - local content = luci.sys.exec("cat ".. path) - content = content:gsub("\n", "
") - http.write(content) - else - http.write(string.format("", i18n.translate("Not enabled log"))) - end -end - -function get_chinadns_log() - local flag = http.formvalue("flag") - local path = "/tmp/etc/passwall/acl/" .. flag .. "/chinadns_ng.log" - if fs.access(path) then - local content = luci.sys.exec("tail -n 5000 ".. path) - content = content:gsub("\n", "
") - http.write(content) - else - http.write(string.format("", i18n.translate("Not enabled log"))) - end -end - -function get_log() - -- luci.sys.exec("[ -f /tmp/log/passwall.log ] && sed '1!G;h;$!d' /tmp/log/passwall.log > /tmp/log/passwall_show.log") - http.write(luci.sys.exec("[ -f '/tmp/log/passwall.log' ] && cat /tmp/log/passwall.log")) -end - -function clear_log() - luci.sys.call("echo '' > /tmp/log/passwall.log") -end - -function index_status() - local e = {} - local dns_shunt = uci:get(appname, "@global[0]", "dns_shunt") or "dnsmasq" - if dns_shunt == "smartdns" then - e.dns_mode_status = luci.sys.call("pidof smartdns >/dev/null") == 0 - elseif dns_shunt == "chinadns-ng" then - e.dns_mode_status = luci.sys.call("/bin/busybox top -bn1 | grep -v 'grep' | grep '/tmp/etc/passwall/bin/' | grep 'default' | grep 'chinadns_ng' >/dev/null") == 0 - else - e.dns_mode_status = luci.sys.call("netstat -apn | grep ':15353 ' >/dev/null") == 0 - end - - e.haproxy_status = luci.sys.call(string.format("/bin/busybox top -bn1 | grep -v grep | grep '%s/bin/' | grep haproxy >/dev/null", appname)) == 0 - e["tcp_node_status"] = luci.sys.call("/bin/busybox top -bn1 | grep -v 'grep' | grep '/tmp/etc/passwall/bin/' | grep 'default' | grep 'TCP' >/dev/null") == 0 - - if (uci:get(appname, "@global[0]", "udp_node") or "nil") == "tcp" then - e["udp_node_status"] = e["tcp_node_status"] - else - e["udp_node_status"] = luci.sys.call("/bin/busybox top -bn1 | grep -v 'grep' | grep '/tmp/etc/passwall/bin/' | grep 'default' | grep 'UDP' >/dev/null") == 0 - end - http_write_json(e) -end - -function haproxy_status() - local e = {} - e["status"] = luci.sys.call(string.format("/bin/busybox top -bn1 | grep -v grep | grep '%s/bin/' | grep haproxy >/dev/null", appname)) == 0 - http_write_json(e) -end - -function socks_status() - local e = {} - local index = http.formvalue("index") - local id = http.formvalue("id") - e.index = index - e.socks_status = luci.sys.call(string.format("/bin/busybox top -bn1 | grep -v 'grep' | grep '/tmp/etc/passwall/bin/' | grep -v '_acl_' | grep '%s' | grep 'SOCKS_' > /dev/null", id)) == 0 - local use_http = uci:get(appname, id, "http_port") or 0 - e.use_http = 0 - if tonumber(use_http) > 0 then - e.use_http = 1 - e.http_status = luci.sys.call(string.format("/bin/busybox top -bn1 | grep -v 'grep' | grep '/tmp/etc/passwall/bin/' | grep -v '_acl_' | grep '%s' | grep -E 'HTTP_|HTTP2SOCKS' > /dev/null", id)) == 0 - end - http_write_json(e) -end - -function connect_status() - local e = {} - e.use_time = "" - local url = http.formvalue("url") - local baidu = string.find(url, "baidu") - local chn_list = uci:get(appname, "@global[0]", "chn_list") or "direct" - local gfw_list = uci:get(appname, "@global[0]", "use_gfw_list") or "1" - local proxy_mode = uci:get(appname, "@global[0]", "tcp_proxy_mode") or "proxy" - local localhost_proxy = uci:get(appname, "@global[0]", "localhost_proxy") or "1" - local socks_server = (localhost_proxy == "0") and api.get_cache_var("GLOBAL_TCP_SOCKS_server") or "" - url = "-w %{http_code}:%{time_pretransfer} " .. url - if socks_server and socks_server ~= "" then - if (chn_list == "proxy" and gfw_list == "0" and proxy_mode ~= "proxy" and baidu ~= nil) or (chn_list == "0" and gfw_list == "0" and proxy_mode == "proxy") then - -- 中国列表+百度 or 全局 - url = "-x socks5h://" .. socks_server .. " " .. url - elseif baidu == nil then - -- 其他代理模式+百度以外网站 - url = "-x socks5h://" .. socks_server .. " " .. url - end - end - local result = luci.sys.exec('/usr/bin/curl --connect-timeout 3 --max-time 5 -o /dev/null -I -sk ' .. url) - local code = tonumber(luci.sys.exec("echo -n '" .. result .. "' | awk -F ':' '{print $1}'") or "0") - if code ~= 0 then - local use_time_str = luci.sys.exec("echo -n '" .. result .. "' | awk -F ':' '{print $2}'") - local use_time = tonumber(use_time_str) - if use_time then - if use_time_str:find("%.") then - e.use_time = string.format("%.2f", use_time * 1000) - else - e.use_time = string.format("%.2f", use_time / 1000) - end - e.ping_type = "curl" - end - end - http_write_json(e) -end - -function ping_node() - local index = http.formvalue("index") - local address = http.formvalue("address") - local port = http.formvalue("port") - local type = http.formvalue("type") or "icmp" - local e = {} - e.index = index - if type == "tcping" and luci.sys.exec("echo -n $(command -v tcping)") ~= "" then - if api.is_ipv6(address) then - address = api.get_ipv6_only(address) - end - e.ping = luci.sys.exec(string.format("echo -n $(tcping -q -c 1 -i 1 -t 2 -p %s %s 2>&1 | grep -o 'time=[0-9]*' | awk -F '=' '{print $2}') 2>/dev/null", port, address)) - else - e.ping = luci.sys.exec("echo -n $(ping -c 1 -W 1 %q 2>&1 | grep -o 'time=[0-9]*' | awk -F '=' '{print $2}') 2>/dev/null" % address) - end - http_write_json(e) -end - -function urltest_node() - local index = http.formvalue("index") - local id = http.formvalue("id") - local e = {} - e.index = index - local result = luci.sys.exec(string.format("/usr/share/passwall/test.sh url_test_node %s %s", id, "urltest_node")) - local code = tonumber(luci.sys.exec("echo -n '" .. result .. "' | awk -F ':' '{print $1}'") or "0") - if code ~= 0 then - local use_time_str = luci.sys.exec("echo -n '" .. result .. "' | awk -F ':' '{print $2}'") - local use_time = tonumber(use_time_str) - if use_time then - if use_time_str:find("%.") then - e.use_time = string.format("%.2f", use_time * 1000) - else - e.use_time = string.format("%.2f", use_time / 1000) - end - end - end - http_write_json(e) -end - -function add_node() - local redirect = http.formvalue("redirect") - - local uuid = api.gen_short_uuid() - uci:section(appname, "nodes", uuid) - - local group = http.formvalue("group") - if group and group ~= "default" then - uci:set(appname, uuid, "group", group) - end - - if redirect == "1" then - api.uci_save(uci, appname) - http.redirect(api.url("node_config", uuid)) - else - api.uci_save(uci, appname, true, true) - http_write_json({result = uuid}) - end -end - -function set_node() - local protocol = http.formvalue("protocol") - local section = http.formvalue("section") - uci:set(appname, "@global[0]", protocol .. "_node", section) - if protocol == "tcp" then - local node_protocol = uci:get(appname, section, "protocol") - if node_protocol == "_shunt" then - local type = uci:get(appname, section, "type") - local dns_shunt = uci:get(appname, "@global[0]", "dns_shunt") - local dns_key = (dns_shunt == "smartdns") and "smartdns_dns_mode" or "dns_mode" - local dns_mode = uci:get(appname, "@global[0]", dns_key) - local new_dns_mode = (type == "Xray") and "xray" or "sing-box" - if dns_mode ~= new_dns_mode then - uci:set(appname, "@global[0]", dns_key, new_dns_mode) - uci:set(appname, "@global[0]", "v2ray_dns_mode", "tcp") - end - end - end - api.uci_save(uci, appname, true, true) - http.redirect(api.url("log")) -end - -function copy_node() - local section = http.formvalue("section") - local uuid = api.gen_short_uuid() - uci:section(appname, "nodes", uuid) - for k, v in pairs(uci:get_all(appname, section)) do - local filter = k:find("%.") - if filter and filter == 1 then - else - xpcall(function() - uci:set(appname, uuid, k, v) - end, - function(e) - end) - end - end - uci:delete(appname, uuid, "group") - uci:set(appname, uuid, "add_mode", 1) - api.uci_save(uci, appname) - http.redirect(api.url("node_config", uuid)) -end - -function clear_all_nodes() - uci:set(appname, '@global[0]', "enabled", "0") - uci:set(appname, '@global[0]', "socks_enabled", "0") - uci:set(appname, '@haproxy_config[0]', "balancing_enable", "0") - uci:delete(appname, '@global[0]', "tcp_node") - uci:delete(appname, '@global[0]', "udp_node") - uci:foreach(appname, "socks", function(t) - uci:delete(appname, t[".name"]) - uci:set_list(appname, t[".name"], "autoswitch_backup_node", {}) - end) - uci:foreach(appname, "haproxy_config", function(t) - uci:delete(appname, t[".name"]) - end) - uci:foreach(appname, "acl_rule", function(t) - uci:delete(appname, t[".name"], "tcp_node") - uci:delete(appname, t[".name"], "udp_node") - end) - uci:foreach(appname, "nodes", function(node) - uci:delete(appname, node['.name']) - end) - uci:foreach(appname, "subscribe_list", function(t) - uci:delete(appname, t[".name"], "md5") - uci:delete(appname, t[".name"], "chain_proxy") - uci:delete(appname, t[".name"], "preproxy_node") - uci:delete(appname, t[".name"], "to_node") - end) - - api.uci_save(uci, appname, true, true) -end - -function delete_select_nodes() - local ids = http.formvalue("ids") - local redirect = http.formvalue("redirect") - string.gsub(ids, '[^' .. "," .. ']+', function(w) - local socks - uci:foreach(appname, "socks", function(t) - if t["node"] == w then - uci:delete(appname, t[".name"]) - socks = "Socks_" .. t[".name"] - end - local auto_switch_node_list = uci:get(appname, t[".name"], "autoswitch_backup_node") or {} - for i = #auto_switch_node_list, 1, -1 do - if w == auto_switch_node_list[i] then - table.remove(auto_switch_node_list, i) - end - end - uci:set_list(appname, t[".name"], "autoswitch_backup_node", auto_switch_node_list) - end) - local tcp_node = uci:get(appname, "@global[0]", "tcp_node") or "" - if tcp_node == w or tcp_node == socks then - uci:delete(appname, '@global[0]', "tcp_node") - end - local udp_node = uci:get(appname, "@global[0]", "udp_node") or "" - if udp_node == w or udp_node == socks then - uci:delete(appname, '@global[0]', "udp_node") - end - uci:foreach(appname, "haproxy_config", function(t) - if t["lbss"] == w then - uci:delete(appname, t[".name"]) - end - end) - uci:foreach(appname, "acl_rule", function(t) - if t["tcp_node"] == w or t["tcp_node"] == socks then - uci:delete(appname, t[".name"], "tcp_node") - end - if t["udp_node"] == w or t["udp_node"] == socks then - uci:delete(appname, t[".name"], "udp_node") - end - end) - uci:foreach(appname, "nodes", function(t) - if t["preproxy_node"] == w then - uci:delete(appname, t[".name"], "preproxy_node") - uci:delete(appname, t[".name"], "chain_proxy") - end - if t["to_node"] == w then - uci:delete(appname, t[".name"], "to_node") - uci:delete(appname, t[".name"], "chain_proxy") - end - local list_name = t["urltest_node"] and "urltest_node" or (t["balancing_node"] and "balancing_node") - if list_name then - local nodes = uci:get_list(appname, t[".name"], list_name) - if nodes then - local changed = false - local new_nodes = {} - for _, node in ipairs(nodes) do - if node ~= w and node ~= socks then - table.insert(new_nodes, node) - else - changed = true - end - end - if changed then - uci:set_list(appname, t[".name"], list_name, new_nodes) - end - end - end - if t["fallback_node"] == w or t["fallback_node"] == socks then - uci:delete(appname, t[".name"], "fallback_node") - end - end) - uci:foreach(appname, "subscribe_list", function(t) - if t["preproxy_node"] == w then - uci:delete(appname, t[".name"], "preproxy_node") - uci:delete(appname, t[".name"], "chain_proxy") - end - if t["to_node"] == w then - uci:delete(appname, t[".name"], "to_node") - uci:delete(appname, t[".name"], "chain_proxy") - end - end) - if (uci:get(appname, w, "add_mode") or "0") == "2" then - local group = uci:get(appname, w, "group") or "" - if group ~= "" then - uci:foreach(appname, "subscribe_list", function(t) - if t["remark"] == group then - uci:delete(appname, t[".name"], "md5") - end - end) - end - end - uci:delete(appname, w) - end) - if redirect == "1" then - api.uci_save(uci, appname) - http.redirect(api.url("node_list")) - else - api.uci_save(uci, appname, true, true) - end -end - -function get_node() - local id = http.formvalue("id") - local result = {} - local show_node_info = api.uci_get_type("global_other", "show_node_info", "0") - - local function add_is_ipv6_key(o) - if o and o.address and show_node_info == "1" then - local f = api.get_ipv6_full(o.address) - if f ~= "" then - o.ipv6 = true - o.full_address = f - end - end - end - - if id then - result = uci:get_all(appname, id) - add_is_ipv6_key(result) - else - local default_nodes = {} - local other_nodes = {} - uci:foreach(appname, "nodes", function(t) - add_is_ipv6_key(t) - if not t.group or t.group == "" then - default_nodes[#default_nodes + 1] = t - else - other_nodes[#other_nodes + 1] = t - end - end) - for i = 1, #default_nodes do result[#result + 1] = default_nodes[i] end - for i = 1, #other_nodes do result[#result + 1] = other_nodes[i] end - end - http_write_json(result) -end - -function save_node_order() - local ids = http.formvalue("ids") or "" - local new_order = {} - for id in ids:gmatch("([^,]+)") do - new_order[#new_order + 1] = id - end - for idx, name in ipairs(new_order) do - luci.sys.call(string.format("uci -q reorder %s.%s=%d", appname, name, idx - 1)) - end - api.sh_uci_commit(appname) - http_write_json({ status = "ok" }) -end - -function reassign_group() - local ids = http.formvalue("ids") or "" - local group = http.formvalue("group") or "default" - for id in ids:gmatch("([^,]+)") do - if group ~="" and group ~= "default" then - api.sh_uci_set(appname, id, "group", group) - else - api.sh_uci_del(appname, id, "group") - end - end - api.sh_uci_commit(appname) - http_write_json({ status = "ok" }) -end - -function save_node_list_opt() - local option = http.formvalue("option") or "" - local value = http.formvalue("value") or "" - if option ~= "" then - api.sh_uci_set(appname, "@global_other[0]", option, value, true) - end - http_write_json({ status = "ok" }) -end - -function update_rules() - local update = http.formvalue("update") - luci.sys.call("lua /usr/share/passwall/rule_update.lua log '" .. update .. "' > /dev/null 2>&1 &") - http_write_json() -end - -function server_user_status() - local e = {} - e.index = http.formvalue("index") - e.status = luci.sys.call(string.format("/bin/busybox top -bn1 | grep -v 'grep' | grep '%s/bin/' | grep -i '%s' >/dev/null", appname .. "_server", http.formvalue("id"))) == 0 - http_write_json(e) -end - -function server_user_log() - local id = http.formvalue("id") - if fs.access("/tmp/etc/passwall_server/" .. id .. ".log") then - local content = luci.sys.exec("cat /tmp/etc/passwall_server/" .. id .. ".log") - content = content:gsub("\n", "
") - http.write(content) - else - http.write(string.format("", i18n.translate("Not enabled log"))) - end -end - -function server_get_log() - http.write(luci.sys.exec("[ -f '/tmp/log/passwall_server.log' ] && cat /tmp/log/passwall_server.log")) -end - -function server_clear_log() - luci.sys.call("echo '' > /tmp/log/passwall_server.log") -end - -function app_check() - local json = api.to_check_self() - http_write_json(json) -end - -function com_check(comname) - local json = api.to_check("",comname) - http_write_json(json) -end - -function com_update(comname) - local json = nil - local task = http.formvalue("task") - if task == "extract" then - json = api.to_extract(comname, http.formvalue("file"), http.formvalue("subfix")) - elseif task == "move" then - json = api.to_move(comname, http.formvalue("file")) - else - json = api.to_download(comname, http.formvalue("url"), http.formvalue("size")) - end - - http_write_json(json) -end - -function read_rulelist() - local rule_type = http.formvalue("type") - local rule_path - if rule_type == "gfw" then - rule_path = "/usr/share/passwall/rules/gfwlist" - elseif rule_type == "chn" then - rule_path = "/usr/share/passwall/rules/chnlist" - elseif rule_type == "chnroute" then - rule_path = "/usr/share/passwall/rules/chnroute" - else - http.status(400, "Invalid rule type") - return - end - if fs.access(rule_path) then - http.prepare_content("text/plain") - http.write(fs.readfile(rule_path)) - end -end - -local backup_files = { - "/etc/config/passwall", - "/etc/config/passwall_server", - "/usr/share/passwall/rules/block_host", - "/usr/share/passwall/rules/block_ip", - "/usr/share/passwall/rules/direct_host", - "/usr/share/passwall/rules/direct_ip", - "/usr/share/passwall/rules/proxy_host", - "/usr/share/passwall/rules/proxy_ip" -} - -function create_backup() - local date = os.date("%y%m%d%H%M") - local tar_file = "/tmp/passwall-" .. date .. "-backup.tar.gz" - fs.remove(tar_file) - local cmd = "tar -czf " .. tar_file .. " " .. table.concat(backup_files, " ") - luci.sys.call(cmd) - http.header("Content-Disposition", "attachment; filename=passwall-" .. date .. "-backup.tar.gz") - http.header("X-Backup-Filename", "passwall-" .. date .. "-backup.tar.gz") - http.prepare_content("application/octet-stream") - http.write(fs.readfile(tar_file)) - fs.remove(tar_file) -end - -function restore_backup() - local result = { status = "error", message = "unknown error" } - local ok, err = pcall(function() - local filename = http.formvalue("filename") - local chunk = http.formvalue("chunk") - local chunk_index = tonumber(http.formvalue("chunk_index") or "-1") - local total_chunks = tonumber(http.formvalue("total_chunks") or "-1") - if not filename then - result = { status = "error", message = "Missing filename" } - return - end - if not chunk then - result = { status = "error", message = "Missing chunk data" } - return - end - local file_path = "/tmp/" .. filename - local decoded = nixio.bin.b64decode(chunk) - if not decoded then - result = { status = "error", message = "Base64 decode failed" } - return - end - local fp = io.open(file_path, "a+") - if not fp then - result = { status = "error", message = "Failed to open file: " .. file_path } - return - end - fp:write(decoded) - fp:close() - if chunk_index + 1 == total_chunks then - luci.sys.call("echo '' > /tmp/log/passwall.log") - api.log(" * PassWall 配置文件上传成功…") - local temp_dir = '/tmp/passwall_bak' - luci.sys.call("mkdir -p " .. temp_dir) - if luci.sys.call("tar -xzf " .. file_path .. " -C " .. temp_dir) == 0 then - for _, backup_file in ipairs(backup_files) do - local temp_file = temp_dir .. backup_file - if fs.access(temp_file) then - luci.sys.call("cp -f " .. temp_file .. " " .. backup_file) - end - end - api.log(" * PassWall 配置还原成功…") - api.log(" * 重启 PassWall 服务中…\n") - luci.sys.call('/etc/init.d/passwall restart > /dev/null 2>&1 &') - luci.sys.call('/etc/init.d/passwall_server restart > /dev/null 2>&1 &') - result = { status = "success", message = "Upload completed", path = file_path } - else - api.log(" * PassWall 配置文件解压失败,请重试!") - result = { status = "error", message = "Decompression failed" } - end - luci.sys.call("rm -rf " .. temp_dir) - fs.remove(file_path) - else - result = { status = "success", message = "Chunk received" } - end - end) - if not ok then - result = { status = "error", message = tostring(err) } - end - http_write_json(result) -end - -function geo_view() - local action = http.formvalue("action") - local value = http.formvalue("value") - if not value or value == "" then - http.prepare_content("text/plain") - http.write(i18n.translate("Please enter query content!")) - return - end - local geo_dir = (uci:get(appname, "@global_rules[0]", "v2ray_location_asset") or "/usr/share/v2ray/"):match("^(.*)/") - local geosite_path = geo_dir .. "/geosite.dat" - local geoip_path = geo_dir .. "/geoip.dat" - local geo_type, file_path, cmd - local geo_string = "" - if action == "lookup" then - if api.datatypes.ipaddr(value) or api.datatypes.ip6addr(value) then - geo_type, file_path = "geoip", geoip_path - else - geo_type, file_path = "geosite", geosite_path - end - cmd = string.format("geoview -type %s -action lookup -input '%s' -value '%s' -lowmem=true", geo_type, file_path, value) - geo_string = luci.sys.exec(cmd):lower() - if geo_string ~= "" then - local lines = {} - for line in geo_string:gmatch("([^\n]*)\n?") do - if line ~= "" then - table.insert(lines, geo_type .. ":" .. line) - end - end - geo_string = table.concat(lines, "\n") - end - elseif action == "extract" then - local prefix, list = value:match("^(geoip:)(.*)$") - if not prefix then - prefix, list = value:match("^(geosite:)(.*)$") - end - if prefix and list and list ~= "" then - geo_type = prefix:sub(1, -2) - file_path = (geo_type == "geoip") and geoip_path or geosite_path - cmd = string.format("geoview -type %s -action extract -input '%s' -list '%s' -lowmem=true", geo_type, file_path, list) - geo_string = luci.sys.exec(cmd) - end - end - http.prepare_content("text/plain") - if geo_string and geo_string ~="" then - http.write(geo_string) - else - http.write(i18n.translate("No results were found!")) - end -end - -function subscribe_del_node() - local remark = http.formvalue("remark") - if remark and remark ~= "" then - luci.sys.call("lua /usr/share/" .. appname .. "/subscribe.lua truncate " .. luci.util.shellquote(remark) .. " > /dev/null 2>&1") - end - http.status(200, "OK") -end - -function subscribe_del_all() - luci.sys.call("lua /usr/share/" .. appname .. "/subscribe.lua truncate > /dev/null 2>&1") - http.status(200, "OK") -end - -function subscribe_manual() - local section = http.formvalue("section") or "" - local current_url = http.formvalue("url") or "" - if section == "" or current_url == "" then - http_write_json({ success = false, msg = "Missing section or URL, skip." }) - return - end - local uci_url = api.sh_uci_get(appname, section, "url") - if not uci_url or uci_url == "" then - http_write_json({ success = false, msg = i18n.translate("Please save and apply before manually subscribing.") }) - return - end - if uci_url ~= current_url then - api.sh_uci_set(appname, section, "url", current_url, true) - end - luci.sys.call("lua /usr/share/" .. appname .. "/subscribe.lua start " .. section .. " manual >/dev/null 2>&1 &") - http_write_json({ success = true, msg = "Subscribe triggered." }) -end - -function subscribe_manual_all() - local sections = http.formvalue("sections") or "" - local urls = http.formvalue("urls") or "" - if sections == "" or urls == "" then - http_write_json({ success = false, msg = "Missing section or URL, skip." }) - return - end - local section_list = util.split(sections, ",") - local url_list = util.split(urls, ",") - -- 检查是否存在未保存配置 - for i, section in ipairs(section_list) do - local uci_url = api.sh_uci_get(appname, section, "url") - if not uci_url or uci_url == "" then - http_write_json({ success = false, msg = i18n.translate("Please save and apply before manually subscribing.") }) - return - end - end - -- 保存有变动的url - for i, section in ipairs(section_list) do - local current_url = url_list[i] or "" - local uci_url = api.sh_uci_get(appname, section, "url") - if current_url ~= "" and uci_url ~= current_url then - api.sh_uci_set(appname, section, "url", current_url, true) - end - end - luci.sys.call("lua /usr/share/" .. appname .. "/subscribe.lua start all manual >/dev/null 2>&1 &") - http_write_json({ success = true, msg = "Subscribe triggered." }) -end - -function flush_set() - local redirect = http.formvalue("redirect") or "0" - local reload = http.formvalue("reload") or "0" - if reload == "1" then - uci:set(appname, '@global[0]', "flush_set", "1") - api.uci_save(uci, appname, true, true) - else - api.sh_uci_set(appname, "@global[0]", "flush_set", "1", true) - end - if redirect == "1" then - http.redirect(api.url("log")) - end -end diff --git a/small/luci-app-passwall/luasrc/model/cbi/passwall/client/acl.lua b/small/luci-app-passwall/luasrc/model/cbi/passwall/client/acl.lua deleted file mode 100644 index 9d5edc7e4d..0000000000 --- a/small/luci-app-passwall/luasrc/model/cbi/passwall/client/acl.lua +++ /dev/null @@ -1,104 +0,0 @@ -local api = require "luci.passwall.api" -local appname = "passwall" -local sys = api.sys - -m = Map(appname) -api.set_apply_on_parse(m) - -s = m:section(TypedSection, "global", translate("ACLs"), "" .. translate("ACLs is a tools which used to designate specific IP proxy mode.") .. "") -s.anonymous = true - -o = s:option(Flag, "acl_enable", translate("Main switch")) -o.rmempty = false -o.default = false - --- [[ ACLs Settings ]]-- -s = m:section(TypedSection, "acl_rule") -s.template = "cbi/tblsection" -s.sortable = true -s.anonymous = true -s.addremove = true -s.extedit = api.url("acl_config", "%s") -function s.create(e, t) - t = TypedSection.create(e, t) - luci.http.redirect(e.extedit:format(t)) -end -function s.remove(e, t) - sys.call("rm -rf /tmp/etc/passwall_tmp/dns_" .. t .. "*") - TypedSection.remove(e, t) -end - ----- Enable -o = s:option(Flag, "enabled", translate("Enable")) -o.default = 1 -o.rmempty = false - ----- Remarks -o = s:option(Value, "remarks", translate("Remarks")) -o.rmempty = true - -local mac_t = {} -sys.net.mac_hints(function(e, t) - mac_t[e] = { - ip = t, - mac = e - } -end) - -o = s:option(DummyValue, "sources", translate("Source")) -o.rawhtml = true -o.cfgvalue = function(t, n) - local e = '' - local v = Value.cfgvalue(t, n) or '-' - string.gsub(v, '[^' .. " " .. ']+', function(w) - local a = w - if mac_t[w] then - a = a .. ' (' .. mac_t[w].ip .. ')' - end - if #e > 0 then - e = e .. "
" - end - e = e .. a - end) - return e -end - -o = s:option(DummyValue, "interface", translate("Source Interface")) -o.cfgvalue = function(t, n) - local v = Value.cfgvalue(t, n) or '-' - return v -end - ---[[ ----- TCP No Redir Ports -o = s:option(Value, "tcp_no_redir_ports", translate("TCP No Redir Ports")) -o.default = "default" -o:value("disable", translate("No patterns are used")) -o:value("default", translate("Default")) -o:value("1:65535", translate("All")) - ----- UDP No Redir Ports -o = s:option(Value, "udp_no_redir_ports", translate("UDP No Redir Ports")) -o.default = "default" -o:value("disable", translate("No patterns are used")) -o:value("default", translate("Default")) -o:value("1:65535", translate("All")) - ----- TCP Redir Ports -o = s:option(Value, "tcp_redir_ports", translate("TCP Redir Ports")) -o.default = "default" -o:value("default", translate("Default")) -o:value("1:65535", translate("All")) -o:value("80,443", "80,443") -o:value("80:65535", "80 " .. translate("or more")) -o:value("1:443", "443 " .. translate("or less")) - ----- UDP Redir Ports -o = s:option(Value, "udp_redir_ports", translate("UDP Redir Ports")) -o.default = "default" -o:value("default", translate("Default")) -o:value("1:65535", translate("All")) -o:value("53", "53") -]]-- - -return m diff --git a/small/luci-app-passwall/luasrc/model/cbi/passwall/client/acl_config.lua b/small/luci-app-passwall/luasrc/model/cbi/passwall/client/acl_config.lua deleted file mode 100644 index ed8796f350..0000000000 --- a/small/luci-app-passwall/luasrc/model/cbi/passwall/client/acl_config.lua +++ /dev/null @@ -1,537 +0,0 @@ -local api = require "luci.passwall.api" -local appname = "passwall" - -m = Map(appname) -m.redirect = api.url("acl") -api.set_apply_on_parse(m) - -if not arg[1] or not m:get(arg[1]) then - luci.http.redirect(m.redirect) -end - -m:append(Template(appname .. "/cbi/nodes_listvalue_com")) - -local fs = api.fs -local sys = api.sys -local has_singbox = api.finded_com("sing-box") -local has_xray = api.finded_com("xray") -local has_gfwlist = fs.access("/usr/share/passwall/rules/gfwlist") -local has_chnlist = fs.access("/usr/share/passwall/rules/chnlist") -local has_chnroute = fs.access("/usr/share/passwall/rules/chnroute") - -local port_validate = function(self, value, t) - return value:gsub("-", ":") -end - -local nodes_table = {} -for _, e in ipairs(api.get_valid_nodes()) do - nodes_table[#nodes_table + 1] = e -end - -local normal_list = {} -for _, v in pairs(nodes_table) do - if v.node_type == "normal" then - normal_list[#normal_list + 1] = v - end -end - -local socks_list = {} -m.uci:foreach(appname, "socks", function(s) - if s.enabled == "1" and s.node then - socks_list[#socks_list + 1] = { - id = "Socks_" .. s[".name"], - remark = translate("Socks Config") .. " " .. string.format("[%s %s]", s.port, translate("Port")), - group = "Socks" - } - end -end) - -local dynamicList_write = function(self, section, value) - local t = {} - local t2 = {} - if type(value) == "table" then - local x - for _, x in ipairs(value) do - if x and #x > 0 then - if not t2[x] then - t2[x] = x - t[#t+1] = x - end - end - end - else - t = { value } - end - t = table.concat(t, " ") - return DynamicList.write(self, section, t) -end - --- [[ ACLs Settings ]]-- -s = m:section(NamedSection, arg[1], translate("ACLs"), translate("ACLs")) -s.addremove = false -s.dynamic = false - ----- Enable -o = s:option(Flag, "enabled", translate("Enable")) -o.default = 1 -o.rmempty = false - ----- Remarks -o = s:option(Value, "remarks", translate("Remarks")) -o.default = arg[1] -o.rmempty = false - -o = s:option(ListValue, "interface", translate("Source Interface")) -o:value("", translate("All")) -local wa = require "luci.tools.webadmin" -wa.cbi_add_networks(o) - -local mac_t = {} -sys.net.mac_hints(function(e, t) - mac_t[#mac_t + 1] = { - ip = t, - mac = e - } -end) -table.sort(mac_t, function(a,b) - if #a.ip < #b.ip then - return true - elseif #a.ip == #b.ip then - if a.ip < b.ip then - return true - else - return #a.ip < #b.ip - end - end - return false -end) - ----- Source -sources = s:option(DynamicList, "sources", translate("Source")) -sources.description = "
  • " .. translate("Example:") -.. "
  • " .. translate("MAC") .. ": 00:00:00:FF:FF:FF" -.. "
  • " .. translate("IP") .. ": 192.168.1.100" -.. "
  • " .. translate("IP CIDR") .. ": 192.168.1.0/24" -.. "
  • " .. translate("IP range") .. ": 192.168.1.100-192.168.1.200" -.. "
  • " .. translate("IPSet") .. ": ipset:lanlist" -.. "
" -sources.cast = "string" -for _, key in pairs(mac_t) do - sources:value(key.mac, "%s (%s)" % {key.mac, key.ip}) -end -sources.cfgvalue = function(self, section) - local value - if self.tag_error[section] then - value = self:formvalue(section) - else - value = self.map:get(section, self.option) - if type(value) == "string" then - local value2 = {} - string.gsub(value, '[^' .. " " .. ']+', function(w) table.insert(value2, w) end) - value = value2 - end - end - return value -end -sources.validate = function(self, value, t) - local err = {} - for _, v in ipairs(value) do - local flag = false - if v:find("ipset:") and v:find("ipset:") == 1 then - local ipset = v:gsub("ipset:", "") - if ipset and ipset ~= "" then - flag = true - end - end - - if flag == false and datatypes.macaddr(v) then - flag = true - end - - if flag == false and datatypes.ip4addr(v) then - flag = true - end - - if flag == false and api.iprange(v) then - flag = true - end - - if flag == false then - err[#err + 1] = v - end - end - - if #err > 0 then - self:add_error(t, "invalid", translate("Not true format, please re-enter!")) - for _, v in ipairs(err) do - self:add_error(t, "invalid", v) - end - end - - return value -end -sources.write = dynamicList_write - ----- TCP No Redir Ports -local TCP_NO_REDIR_PORTS = m:get("@global_forwarding[0]", "tcp_no_redir_ports") -o = s:option(Value, "tcp_no_redir_ports", translate("TCP No Redir Ports")) -o:value("", translate("Use global config") .. "(" .. TCP_NO_REDIR_PORTS .. ")") -o:value("disable", translate("No patterns are used")) -o:value("1:65535", translate("All")) -o.validate = port_validate - ----- UDP No Redir Ports -local UDP_NO_REDIR_PORTS = m:get("@global_forwarding[0]", "udp_no_redir_ports") -o = s:option(Value, "udp_no_redir_ports", translate("UDP No Redir Ports"), - "" .. - translate("Fill in the ports you don't want to be forwarded by the agent, with the highest priority.") .. - "") -o:value("", translate("Use global config") .. "(" .. UDP_NO_REDIR_PORTS .. ")") -o:value("disable", translate("No patterns are used")) -o:value("1:65535", translate("All")) -o.validate = port_validate - -o = s:option(DummyValue, "_hide_node_option", "") -o.template = "passwall/cbi/hidevalue" -o.value = "1" -o:depends({ tcp_no_redir_ports = "1:65535", udp_no_redir_ports = "1:65535" }) -if TCP_NO_REDIR_PORTS == "1:65535" and UDP_NO_REDIR_PORTS == "1:65535" then - o:depends({ tcp_no_redir_ports = "", udp_no_redir_ports = "" }) -end - -o = s:option(Flag, "use_global_config", translatef("Use global config")) -o.default = "0" -o.rmempty = false -o:depends({ _hide_node_option = "1", ['!reverse'] = true }) - -o = s:option(ListValue, "tcp_node", "" .. translate("TCP Node") .. "") -o.default = "" -o:depends({ _hide_node_option = false, use_global_config = false }) -o.template = appname .. "/cbi/nodes_listvalue" -o.group = {} - -o = s:option(DummyValue, "_tcp_node_bool", "") -o.template = "passwall/cbi/hidevalue" -o.value = "1" -o:depends({ tcp_node = "", ['!reverse'] = true }) - -o = s:option(ListValue, "udp_node", "" .. translate("UDP Node") .. "") -o.default = "" -o:value("", translate("Close")) -o:value("tcp", translate("Same as the tcp node")) -o:depends({ _tcp_node_bool = "1" }) -o.template = appname .. "/cbi/nodes_listvalue" -o.group = {"",""} - -o = s:option(DummyValue, "_udp_node_bool", "") -o.template = "passwall/cbi/hidevalue" -o.value = "1" -o:depends({ udp_node = "", ['!reverse'] = true }) - ----- TCP Proxy Drop Ports -local TCP_PROXY_DROP_PORTS = m:get("@global_forwarding[0]", "tcp_proxy_drop_ports") -o = s:option(Value, "tcp_proxy_drop_ports", translate("TCP Proxy Drop Ports")) -o:value("", translate("Use global config") .. "(" .. TCP_PROXY_DROP_PORTS .. ")") -o:value("disable", translate("No patterns are used")) -o.validate = port_validate -o:depends({ use_global_config = true }) -o:depends({ _tcp_node_bool = "1" }) - ----- UDP Proxy Drop Ports -local UDP_PROXY_DROP_PORTS = m:get("@global_forwarding[0]", "udp_proxy_drop_ports") -o = s:option(Value, "udp_proxy_drop_ports", translate("UDP Proxy Drop Ports")) -o:value("", translate("Use global config") .. "(" .. UDP_PROXY_DROP_PORTS .. ")") -o:value("disable", translate("No patterns are used")) -o:value("443", translate("QUIC")) -o.validate = port_validate -o:depends({ use_global_config = true }) -o:depends({ _tcp_node_bool = "1" }) - ----- TCP Redir Ports -local TCP_REDIR_PORTS = m:get("@global_forwarding[0]", "tcp_redir_ports") -o = s:option(Value, "tcp_redir_ports", translate("TCP Redir Ports"), translatef("Only work with using the %s node.", "TCP")) -o:value("", translate("Use global config") .. "(" .. TCP_REDIR_PORTS .. ")") -o:value("1:65535", translate("All")) -o:value("80,443", "80,443") -o:value("80:65535", "80 " .. translate("or more")) -o:value("1:443", "443 " .. translate("or less")) -o.validate = port_validate -o:depends({ use_global_config = true }) -o:depends({ _tcp_node_bool = "1" }) - ----- UDP Redir Ports -local UDP_REDIR_PORTS = m:get("@global_forwarding[0]", "udp_redir_ports") -o = s:option(Value, "udp_redir_ports", translate("UDP Redir Ports"), translatef("Only work with using the %s node.", "UDP")) -o:value("", translate("Use global config") .. "(" .. UDP_REDIR_PORTS .. ")") -o:value("1:65535", translate("All")) -o:value("53", "53") -o.validate = port_validate -o:depends({ use_global_config = true }) -o:depends({ _udp_node_bool = "1" }) - -o = s:option(DummyValue, "tips", " ") -o.rawhtml = true -o.cfgvalue = function(t, n) - return string.format('%s', - translate("The port settings support single ports and ranges.
Separate multiple ports with commas (,).
Example: 21,80,443,1000:2000.")) -end -o:depends({ use_global_config = true }) -o:depends({ _tcp_node_bool = "1" }) - -o = s:option(Flag, "use_direct_list", translatef("Use %s", translate("Direct List"))) -o.default = "1" -o:depends({ _tcp_node_bool = "1" }) - -o = s:option(Flag, "use_proxy_list", translatef("Use %s", translate("Proxy List"))) -o.default = "1" -o:depends({ _tcp_node_bool = "1" }) - -o = s:option(Flag, "use_block_list", translatef("Use %s", translate("Block List"))) -o.default = "1" -o:depends({ _tcp_node_bool = "1" }) - -if has_gfwlist then - o = s:option(Flag, "use_gfw_list", translatef("Use %s", translate("GFW List"))) - o.default = "1" - o:depends({ _tcp_node_bool = "1" }) -end - -if has_chnlist or has_chnroute then - o = s:option(ListValue, "chn_list", translate("China List")) - o:value("0", translate("Close(Not use)")) - o:value("direct", translate("Direct Connection")) - o:value("proxy", translate("Proxy")) - o.default = "direct" - o:depends({ _tcp_node_bool = "1" }) -end - -o = s:option(ListValue, "tcp_proxy_mode", "TCP " .. translate("Proxy Mode")) -o:value("disable", translate("No Proxy")) -o:value("proxy", translate("Proxy")) -o:depends({ _tcp_node_bool = "1" }) - -o = s:option(ListValue, "udp_proxy_mode", "UDP " .. translate("Proxy Mode")) -o:value("disable", translate("No Proxy")) -o:value("proxy", translate("Proxy")) -o:depends({ _udp_node_bool = "1" }) - -o = s:option(DummyValue, "switch_mode", " ") -o.template = appname .. "/global/proxy" -o:depends({ _tcp_node_bool = "1" }) - --- Node → DNS Depends Settings -o = s:option(DummyValue, "_node_sel_shunt", "") -o.template = appname .. "/cbi/hidevalue" -o.value = "1" -o:depends({ tcp_node = "__always__" }) - -o = s:option(DummyValue, "_node_sel_other", "") -o.template = appname .. "/cbi/hidevalue" -o.value = "1" -o:depends({ _node_sel_shunt = "1", ['!reverse'] = true }) - ----- DNS -o = s:option(ListValue, "dns_shunt", "DNS " .. translate("Shunt")) -o.default = "chinadns-ng" -o:value("dnsmasq", "Dnsmasq") -o:value("chinadns-ng", translate("ChinaDNS-NG (recommended)")) -o:depends({ _tcp_node_bool = "1" }) - -o = s:option(DummyValue, "view_chinadns_log", " ") -o.template = appname .. "/acl/view_chinadns_log" - -o = s:option(Flag, "filter_proxy_ipv6", translate("Filter Proxy Host IPv6"), translate("Experimental feature.")) -o.default = "0" -o:depends({ _tcp_node_bool = "1" }) - ----- DNS Forward Mode -o = s:option(ListValue, "dns_mode", translate("Filter Mode")) -if api.is_finded("dns2socks") then - o:value("dns2socks", "dns2socks") -end -if has_singbox then - o:value("sing-box", "Sing-Box") -end -if has_xray then - o:value("xray", "Xray") -end -o:depends({ _tcp_node_bool = "1", _node_sel_other = "1" }) -o.remove = function(self, section) - local f = s.fields["tcp_node"] - local id_val = f and f:formvalue(section) or "" - if id_val == "" then - return m:del(section, self.option) - end - for _, v in pairs(nodes_table) do - if v.id == id_val then - local new_val = (v.type == "Xray") and "xray" or "sing-box" - m:set(section, self.option, new_val) - - local dns_field = s.fields[v.type == "Xray" and "xray_dns_mode" or "singbox_dns_mode"] - local v2ray_dns_mode = dns_field and dns_field:formvalue(section) - if v2ray_dns_mode then - m:set(section, "v2ray_dns_mode", v2ray_dns_mode) - end - - break - end - end -end - -o = s:option(ListValue, "xray_dns_mode", translate("Request protocol")) -o.default = "tcp" -o:value("udp", "UDP") -o:value("tcp", "TCP") -o:value("tcp+doh", "TCP + DoH (" .. translate("A/AAAA type") .. ")") -o:depends("dns_mode", "xray") -o.cfgvalue = function(self, section) - return m:get(section, "v2ray_dns_mode") -end -o.write = function(self, section, value) - if s.fields["dns_mode"]:formvalue(section) == "xray" then - return m:set(section, "v2ray_dns_mode", value) - end -end - -o = s:option(ListValue, "singbox_dns_mode", translate("Request protocol")) -o.default = "tcp" -o:value("udp", "UDP") -o:value("tcp", "TCP") -o:value("doh", "DoH") -o:depends("dns_mode", "sing-box") -o.cfgvalue = function(self, section) - return m:get(section, "v2ray_dns_mode") -end -o.write = function(self, section, value) - if s.fields["dns_mode"]:formvalue(section) == "sing-box" then - return m:set(section, "v2ray_dns_mode", value) - end -end - ----- DNS Forward -o = s:option(Value, "remote_dns", translate("Remote DNS")) -o.default = "1.1.1.1" -o:value("1.1.1.1", "1.1.1.1 (CloudFlare)") -o:value("1.1.1.2", "1.1.1.2 (CloudFlare-Security)") -o:value("8.8.4.4", "8.8.4.4 (Google)") -o:value("8.8.8.8", "8.8.8.8 (Google)") -o:value("9.9.9.9", "9.9.9.9 (Quad9-Recommended)") -o:value("149.112.112.112", "149.112.112.112 (Quad9-Recommended)") -o:value("208.67.220.220", "208.67.220.220 (OpenDNS)") -o:value("208.67.222.222", "208.67.222.222 (OpenDNS)") -o:depends({dns_mode = "dns2socks"}) -o:depends({xray_dns_mode = "udp"}) -o:depends({xray_dns_mode = "tcp"}) -o:depends({xray_dns_mode = "tcp+doh"}) -o:depends({singbox_dns_mode = "udp"}) -o:depends({singbox_dns_mode = "tcp"}) - -o = s:option(Value, "remote_dns_doh", translate("Remote DNS DoH")) -o:value("https://1.1.1.1/dns-query", "1.1.1.1 (CloudFlare)") -o:value("https://1.1.1.2/dns-query", "1.1.1.2 (CloudFlare-Security)") -o:value("https://8.8.4.4/dns-query", "8.8.4.4 (Google)") -o:value("https://8.8.8.8/dns-query", "8.8.8.8 (Google)") -o:value("https://9.9.9.9/dns-query", "9.9.9.9 (Quad9)") -o:value("https://149.112.112.112/dns-query", "149.112.112.112 (Quad9)") -o:value("https://208.67.222.222/dns-query", "208.67.222.222 (OpenDNS)") -o:value("https://dns.adguard.com/dns-query,94.140.14.14", "94.140.14.14 (AdGuard)") -o:value("https://doh.libredns.gr/dns-query,116.202.176.26", "116.202.176.26 (LibreDNS)") -o:value("https://doh.libredns.gr/ads,116.202.176.26", "116.202.176.26 (LibreDNS-NoAds)") -o.default = "https://1.1.1.1/dns-query" -o.validate = function(self, value, t) - if value ~= "" then - value = api.trim(value) - local flag = 0 - local util = require "luci.util" - local val = util.split(value, ",") - local url = val[1] - val[1] = nil - for i = 1, #val do - local v = val[i] - if v then - if not api.datatypes.ipmask4(v) then - flag = 1 - end - end - end - if flag == 0 then - return value - end - end - return nil, translate("DoH request address") .. " " .. translate("Format must be:") .. " URL,IP" -end -o:depends({xray_dns_mode = "tcp+doh"}) -o:depends({singbox_dns_mode = "doh"}) - -o = s:option(Value, "remote_dns_client_ip", translate("EDNS Client Subnet")) -o.datatype = "ipaddr" -o:depends({dns_mode = "sing-box"}) -o:depends({dns_mode = "xray"}) -o:depends({_node_sel_shunt = "1"}) - -o = s:option(ListValue, "chinadns_ng_default_tag", translate("Default DNS")) -o.default = "none" -o:value("gfw", translate("Remote DNS")) -o:value("chn", translate("Direct DNS")) -o:value("none", translate("Smart, Do not accept no-ip reply from Direct DNS")) -o:value("none_noip", translate("Smart, Accept no-ip reply from Direct DNS")) -local desc = "
    " - .. "
  • " .. translate("When not matching any domain name list:") .. "
  • " - .. "
  • " .. translate("Remote DNS: Can avoid more DNS leaks, but some domestic domain names maybe to proxy!") .. "
  • " - .. "
  • " .. translate("Direct DNS: Internet experience may be better, but DNS will be leaked!") .. "
  • " -o.description = desc - .. "
  • " .. translate("Smart: Forward to both direct and remote DNS, if the direct DNS resolution result is a mainland China IP, then use the direct result, otherwise use the remote result.") .. "
  • " - .. "
  • " .. translate("In smart mode, no-ip reply from Direct DNS:") .. "
  • " - .. "
  • " .. translate("Do not accept: Wait and use Remote DNS Reply.") .. "
  • " - .. "
  • " .. translate("Accept: Trust the Reply, using this option can improve DNS resolution speeds for some mainland IPv4-only sites.") .. "
  • " - .. "
" -o:depends({dns_shunt = "chinadns-ng", tcp_proxy_mode = "proxy", chn_list = "direct"}) - -o = s:option(ListValue, "use_default_dns", translate("Default DNS")) -o.default = "direct" -o:value("remote", translate("Remote DNS")) -o:value("direct", translate("Direct DNS")) -o.description = desc .. "" -o:depends({dns_shunt = "dnsmasq", tcp_proxy_mode = "proxy", chn_list = "direct"}) - -local tcp = s.fields["tcp_node"] -local udp = s.fields["udp_node"] -for k, v in pairs(socks_list) do - tcp:value(v.id, v["remark"]) - tcp.group[#tcp.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - udp:value(v.id, v["remark"]) - udp.group[#udp.group+1] = (v.group and v.group ~= "") and v.group or translate("default") -end -for k, v in pairs(nodes_table) do - if #normal_list == 0 then - s.fields["dns_mode"]:depends({ _tcp_node_bool = "1" }) - break - end - if v.protocol == "_shunt" then - if v.type == "Xray" and has_xray then - tcp:value(v.id, v["remark"]) - tcp.group[#tcp.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - udp:value(v.id, v["remark"]) - udp.group[#udp.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - - s.fields["xray_dns_mode"]:depends({ _tcp_node_bool = "1", tcp_node = v.id }) - s.fields["_node_sel_shunt"]:depends({ tcp_node = v.id }) - end - if v.type == "sing-box" and has_singbox then - tcp:value(v.id, v["remark"]) - tcp.group[#tcp.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - udp:value(v.id, v["remark"]) - udp.group[#udp.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - - s.fields["singbox_dns_mode"]:depends({ _tcp_node_bool = "1", tcp_node = v.id }) - s.fields["_node_sel_shunt"]:depends({ tcp_node = v.id }) - end - else - tcp:value(v.id, v["remark"]) - tcp.group[#tcp.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - udp:value(v.id, v["remark"]) - udp.group[#udp.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - end -end - -return m diff --git a/small/luci-app-passwall/luasrc/model/cbi/passwall/client/app_update.lua b/small/luci-app-passwall/luasrc/model/cbi/passwall/client/app_update.lua deleted file mode 100644 index b39d6df9c5..0000000000 --- a/small/luci-app-passwall/luasrc/model/cbi/passwall/client/app_update.lua +++ /dev/null @@ -1,32 +0,0 @@ -local api = require "luci.passwall.api" -local appname = "passwall" - -m = Map(appname) -api.set_apply_on_parse(m) - --- [[ App Settings ]]-- -s = m:section(TypedSection, "global_app", translate("App Update"), - "" .. - translate("Please confirm that your firmware supports FPU.") .. - "") -s.anonymous = true -s:append(Template(appname .. "/app_update/app_version")) - -local k, v -local com = require "luci.passwall.com" -for _, k in ipairs(com.order) do - v = com[k] - if k ~= "geoview" and k ~= "chinadns-ng" then - o = s:option(Value, k:gsub("%-","_") .. "_file", translatef("%s App Path", v.name)) - o.default = v.default_path or ("/usr/bin/" .. k) - o.rmempty = false - end -end - -o = s:option(DummyValue, "tips", " ") -o.rawhtml = true -o.cfgvalue = function(t, n) - return string.format('%s', translate("if you want to run from memory, change the path, /tmp beginning then save the application and update it manually.")) -end - -return m diff --git a/small/luci-app-passwall/luasrc/model/cbi/passwall/client/global.lua b/small/luci-app-passwall/luasrc/model/cbi/passwall/client/global.lua deleted file mode 100644 index 42774bcedd..0000000000 --- a/small/luci-app-passwall/luasrc/model/cbi/passwall/client/global.lua +++ /dev/null @@ -1,929 +0,0 @@ -local api = require "luci.passwall.api" -local appname = "passwall" -local datatypes = api.datatypes -local fs = api.fs -local has_singbox = api.finded_com("sing-box") -local has_xray = api.finded_com("xray") -local has_gfwlist = fs.access("/usr/share/passwall/rules/gfwlist") -local has_chnlist = fs.access("/usr/share/passwall/rules/chnlist") -local has_chnroute = fs.access("/usr/share/passwall/rules/chnroute") - -m = Map(appname) -api.set_apply_on_parse(m) - -m:append(Template(appname .. "/cbi/nodes_listvalue_com")) - -local nodes_table = {} -for _, e in ipairs(api.get_valid_nodes()) do - nodes_table[#nodes_table + 1] = e -end - -local normal_list = {} -local balancing_list = {} -local urltest_list = {} -local shunt_list = {} -local iface_list = {} -for _, v in pairs(nodes_table) do - if v.node_type == "normal" then - normal_list[#normal_list + 1] = v - end - if v.protocol and v.protocol == "_balancing" then - balancing_list[#balancing_list + 1] = v - end - if v.protocol and v.protocol == "_urltest" then - urltest_list[#urltest_list + 1] = v - end - if v.protocol and v.protocol == "_shunt" then - shunt_list[#shunt_list + 1] = v - end - if v.protocol and v.protocol == "_iface" then - iface_list[#iface_list + 1] = v - end -end - -local socks_list = {} - -local tcp_socks_server = "127.0.0.1" .. ":" .. (m:get("@global[0]", "tcp_node_socks_port") or "1070") -local socks_table = {} -socks_table[#socks_table + 1] = { - id = tcp_socks_server, - remark = tcp_socks_server .. " - " .. translate("TCP Node") -} -m.uci:foreach(appname, "socks", function(s) - if s.enabled == "1" and s.node then - local id, remark - for k, n in pairs(nodes_table) do - if (s.node == n.id) then - remark = n["remark"]; break - end - end - id = "127.0.0.1" .. ":" .. s.port - socks_table[#socks_table + 1] = { - id = id, - remark = id .. " - " .. (remark or translate("Misconfigured")) - } - socks_list[#socks_list + 1] = { - id = "Socks_" .. s[".name"], - remark = translate("Socks Config") .. " " .. string.format("[%s %s]", s.port, translate("Port")), - group = "Socks" - } - end -end) - -local doh_validate = function(self, value, t) - value = value:gsub("%s+", "") - if value ~= "" then - local flag = 0 - local util = require "luci.util" - local val = util.split(value, ",") - local url = val[1] - val[1] = nil - for i = 1, #val do - local v = val[i] - if v then - if not datatypes.ipmask4(v) and not datatypes.ipmask6(v) then - flag = 1 - end - end - end - if flag == 0 then - return value - end - end - return nil, translatef("%s request address","DoH") .. " " .. translate("Format must be:") .. " URL,IP" -end - -m:append(Template(appname .. "/global/status")) - -s = m:section(TypedSection, "global") -s.anonymous = true -s.addremove = false - -s:tab("Main", translate("Main")) - --- [[ Global Settings ]]-- -o = s:taboption("Main", Flag, "enabled", translate("Main switch")) -o.rmempty = false - ----- TCP Node -o = s:taboption("Main", ListValue, "tcp_node", "" .. translate("TCP Node") .. "") -o.template = appname .. "/cbi/nodes_listvalue" -o:value("", translate("Close")) -o.group = {""} - ----- UDP Node -o = s:taboption("Main", ListValue, "udp_node", "" .. translate("UDP Node") .. "") -o.template = appname .. "/cbi/nodes_listvalue" -o:value("", translate("Close")) -o:value("tcp", translate("Same as the tcp node")) -o.group = {"",""} - --- 分流 -if (has_singbox or has_xray) and #nodes_table > 0 then - local function get_cfgvalue(shunt_node_id, option) - return function(self, section) - return m:get(shunt_node_id, option) - end - end - local function get_write(shunt_node_id, option) - return function(self, section, value) - if s.fields["tcp_node"]:formvalue(section) == shunt_node_id then - m:set(shunt_node_id, option, value) - end - end - end - local function get_remove(shunt_node_id, option) - return function(self, section) - if s.fields["tcp_node"]:formvalue(section) == shunt_node_id then - m:del(shunt_node_id, option) - end - end - end - if #normal_list > 0 then - for k, v in pairs(shunt_list) do - local vid = v.id - -- shunt node type, Sing-Box or Xray - o = s:taboption("Main", ListValue, vid .. "-type", translate("Type")) - if has_xray then - o:value("Xray", translate("Xray")) - end - if has_singbox then - o:value("sing-box", "Sing-Box") - end - o:depends("tcp_node", v.id) - o.cfgvalue = get_cfgvalue(v.id, "type") - o.write = get_write(v.id, "type") - - -- pre-proxy - o = s:taboption("Main", Flag, vid .. "-preproxy_enabled", translate("Preproxy")) - o:depends("tcp_node", v.id) - o.rmempty = false - o.cfgvalue = get_cfgvalue(v.id, "preproxy_enabled") - o.write = get_write(v.id, "preproxy_enabled") - - o = s:taboption("Main", ListValue, vid .. "-main_node", string.format('%s', translate("Preproxy Node")), translate("Set the node to be used as a pre-proxy. Each rule (including Default) has a separate switch that controls whether this rule uses the pre-proxy or not.")) - o:depends(vid .. "-preproxy_enabled", "1") - o.template = appname .. "/cbi/nodes_listvalue" - o.group = {} - for k1, v1 in pairs(socks_list) do - o:value(v1.id, v1.remark) - o.group[#o.group+1] = (v1.group and v1.group ~= "") and v1.group or translate("default") - end - for k1, v1 in pairs(balancing_list) do - o:value(v1.id, v1.remark) - o.group[#o.group+1] = (v1.group and v1.group ~= "") and v1.group or translate("default") - end - for k1, v1 in pairs(urltest_list) do - o:value(v1.id, v1.remark) - o.group[#o.group+1] = (v1.group and v1.group ~= "") and v1.group or translate("default") - end - for k1, v1 in pairs(iface_list) do - o:value(v1.id, v1.remark) - o.group[#o.group+1] = (v1.group and v1.group ~= "") and v1.group or translate("default") - end - for k1, v1 in pairs(normal_list) do - o:value(v1.id, v1.remark) - o.group[#o.group+1] = (v1.group and v1.group ~= "") and v1.group or translate("default") - end - o.cfgvalue = get_cfgvalue(v.id, "main_node") - o.write = get_write(v.id, "main_node") - - m.uci:foreach(appname, "shunt_rules", function(e) - local id = e[".name"] - local node_option = vid .. "-" .. id .. "_node" - if id and e.remarks then - o = s:taboption("Main", ListValue, node_option, string.format('* %s', api.url("shunt_rules", id), e.remarks)) - o.cfgvalue = get_cfgvalue(v.id, id) - o.write = get_write(v.id, id) - o.remove = get_remove(v.id, id) - o:depends("tcp_node", v.id) - o:value("", translate("Close")) - o:value("_default", translate("Default")) - o:value("_direct", translate("Direct Connection")) - o:value("_blackhole", translate("Blackhole")) - o.template = appname .. "/cbi/nodes_listvalue" - o.group = {"","","",""} - - local pt = s:taboption("Main", ListValue, vid .. "-".. id .. "_proxy_tag", string.format('* %s', e.remarks .. " " .. translate("Preproxy"))) - pt.cfgvalue = get_cfgvalue(v.id, id .. "_proxy_tag") - pt.write = get_write(v.id, id .. "_proxy_tag") - pt.remove = get_remove(v.id, id .. "_proxy_tag") - pt:value("", translate("Close")) - pt:value("main", translate("Preproxy Node")) - pt:depends("__hide__", "1") - for k1, v1 in pairs(socks_list) do - o:value(v1.id, v1.remark) - o.group[#o.group+1] = (v1.group and v1.group ~= "") and v1.group or translate("default") - end - for k1, v1 in pairs(balancing_list) do - o:value(v1.id, v1.remark) - o.group[#o.group+1] = (v1.group and v1.group ~= "") and v1.group or translate("default") - end - for k1, v1 in pairs(urltest_list) do - o:value(v1.id, v1.remark) - o.group[#o.group+1] = (v1.group and v1.group ~= "") and v1.group or translate("default") - end - for k1, v1 in pairs(iface_list) do - o:value(v1.id, v1.remark) - o.group[#o.group+1] = (v1.group and v1.group ~= "") and v1.group or translate("default") - end - for k1, v1 in pairs(normal_list) do - o:value(v1.id, v1.remark) - o.group[#o.group+1] = (v1.group and v1.group ~= "") and v1.group or translate("default") - if not api.is_local_ip(v1.address) then --本地节点禁止使用前置 - pt:depends({ [node_option] = v1.id, [vid .. "-preproxy_enabled"] = "1" }) - end - end - end - end) - - local id = "default_node" - o = s:taboption("Main", ListValue, vid .. "-" .. id, string.format('* %s', translate("Default"))) - o.cfgvalue = get_cfgvalue(v.id, id) - o.write = get_write(v.id, id) - o.remove = get_remove(v.id, id) - o:depends("tcp_node", v.id) - o:value("_direct", translate("Direct Connection")) - o:value("_blackhole", translate("Blackhole")) - o.template = appname .. "/cbi/nodes_listvalue" - o.group = {"",""} - for k1, v1 in pairs(socks_list) do - o:value(v1.id, v1.remark) - o.group[#o.group+1] = (v1.group and v1.group ~= "") and v1.group or translate("default") - end - for k1, v1 in pairs(balancing_list) do - o:value(v1.id, v1.remark) - o.group[#o.group+1] = (v1.group and v1.group ~= "") and v1.group or translate("default") - end - for k1, v1 in pairs(urltest_list) do - o:value(v1.id, v1.remark) - o.group[#o.group+1] = (v1.group and v1.group ~= "") and v1.group or translate("default") - end - for k1, v1 in pairs(iface_list) do - o:value(v1.id, v1.remark) - o.group[#o.group+1] = (v1.group and v1.group ~= "") and v1.group or translate("default") - end - for k1, v1 in pairs(normal_list) do - o:value(v1.id, v1.remark) - o.group[#o.group+1] = (v1.group and v1.group ~= "") and v1.group or translate("default") - end - - local id = "default_proxy_tag" - o = s:taboption("Main", ListValue, vid .. "-" .. id, string.format('* %s', translate("Default Preproxy")), translate("When using, localhost will connect this node first and then use this node to connect the default node.")) - o.cfgvalue = get_cfgvalue(v.id, id) - o.write = get_write(v.id, id) - o.remove = get_remove(v.id, id) - o:value("", translate("Close")) - o:value("main", translate("Preproxy Node")) - o:depends("__hide__", "1") - for k1, v1 in pairs(normal_list) do - if v1.protocol ~= "_balancing" and v1.protocol ~= "_urltest" and not api.is_local_ip(v1.address) then - o:depends({ [vid .. "-default_node"] = v1.id, [vid .. "-preproxy_enabled"] = "1" }) - end - end - end - else - local tips = s:taboption("Main", DummyValue, "tips", " ") - tips.rawhtml = true - tips.cfgvalue = function(t, n) - return string.format('%s', translate("There are no available nodes, please add or subscribe nodes first.")) - end - tips:depends({ tcp_node = "", ["!reverse"] = true }) - for k, v in pairs(shunt_list) do - tips:depends("udp_node", v.id) - end - for k, v in pairs(balancing_list) do - tips:depends("udp_node", v.id) - end - end -end - -o = s:taboption("Main", Value, "tcp_node_socks_port", translate("TCP Node") .. " Socks " .. translate("Listen Port")) -o.default = 1070 -o.datatype = "port" -o:depends({ tcp_node = "", ["!reverse"] = true }) ---[[ -if has_singbox or has_xray then - o = s:taboption("Main", Value, "tcp_node_http_port", translate("TCP Node") .. " HTTP " .. translate("Listen Port") .. " " .. translate("0 is not use")) - o.default = 0 - o.datatype = "port" -end -]]-- -o = s:taboption("Main", Flag, "tcp_node_socks_bind_local", translate("TCP Node") .. " Socks " .. translate("Bind Local"), translate("When selected, it can only be accessed localhost.")) -o.default = "1" -o:depends({ tcp_node = "", ["!reverse"] = true }) - --- Node → DNS Depends Settings -o = s:taboption("Main", DummyValue, "_node_sel_shunt", "") -o.template = appname .. "/cbi/hidevalue" -o.value = "1" -o:depends({ tcp_node = "__always__" }) - -o = s:taboption("Main", DummyValue, "_node_sel_other", "") -o.template = appname .. "/cbi/hidevalue" -o.value = "1" -o:depends({ _node_sel_shunt = "1", ['!reverse'] = true }) - --- [[ DNS Settings ]]-- -s:tab("DNS", translate("DNS")) - -o = s:taboption("DNS", ListValue, "dns_shunt", "DNS " .. translate("Shunt")) -o:value("dnsmasq", "Dnsmasq") -o:value("chinadns-ng", translate("ChinaDNS-NG (recommended)")) -if api.is_finded("smartdns") then - o:value("smartdns", "SmartDNS") - o = s:taboption("DNS", Value, "group_domestic", translate("Domestic group name")) - o.placeholder = "local" - o:depends("dns_shunt", "smartdns") - o.description = translate("You only need to configure domestic DNS packets in SmartDNS, and fill in the domestic DNS group name here.") -end - -o = s:taboption("DNS", ListValue, "direct_dns_mode", translate("Direct DNS") .. " " .. translate("Request protocol")) -o:value("", translate("Auto")) -o:value("udp", translatef("Requery DNS By %s", "UDP")) -o:value("tcp", translatef("Requery DNS By %s", "TCP")) -o:depends({dns_shunt = "dnsmasq"}) -o:depends({dns_shunt = "chinadns-ng"}) - -o = s:taboption("DNS", Value, "direct_dns", translate("Direct DNS")) -o.datatype = "or(ipaddr,ipaddrport)" -o.default = "223.5.5.5" -o:value("223.5.5.5") -o:value("223.6.6.6") -o:value("180.184.1.1") -o:value("180.184.2.2") -o:value("114.114.114.114") -o:value("114.114.115.115") -o:value("119.28.28.28") -o:depends("direct_dns_mode", "udp") -o:depends("direct_dns_mode", "tcp") - -o = s:taboption("DNS", Flag, "filter_proxy_ipv6", translate("Filter Proxy Host IPv6"), translate("Experimental feature.")) -o.default = "0" - --- TCP分流时dns过滤模式保存逻辑 -function dns_mode_save(section) - for k, v in pairs(shunt_list) do - local f = s.fields[v.id .. "-type"] - if f then - local type_val = f:formvalue(section) - if type_val and (type_val == "Xray" or type_val == "sing-box") then - local dns_shunt_val = s.fields["dns_shunt"]:formvalue(section) - local dns_mode_val = (dns_shunt_val ~= "smartdns") and "dns_mode" or "smartdns_dns_mode" - local current_val = m:get(section, dns_mode_val) or "" - local new_val = (type_val == "Xray") and "xray" or "sing-box" - - if current_val ~= new_val then - m:set(section, dns_mode_val, new_val) - m:del(section, (dns_mode_val == "dns_mode") and "smartdns_dns_mode" or "dns_mode") - end - - local dns_field = s.fields[type_val == "Xray" and "xray_dns_mode" or "singbox_dns_mode"] - local v2ray_dns_mode = dns_field and dns_field:formvalue(section) - if v2ray_dns_mode and m:get(section, "v2ray_dns_mode") ~= v2ray_dns_mode then - m:set(section, "v2ray_dns_mode", v2ray_dns_mode) - end - - break - end - end - end -end - ----- DNS Forward Mode -o = s:taboption("DNS", ListValue, "dns_mode", translate("Filter Mode")) -o.default = "tcp" -o:value("udp", translatef("Requery DNS By %s", "UDP")) -o:value("tcp", translatef("Requery DNS By %s", "TCP")) -if api.is_finded("dns2socks") then - o:value("dns2socks", "dns2socks") -end -if has_singbox then - o:value("sing-box", "Sing-Box") -end -if has_xray then - o:value("xray", "Xray") -end -o:depends({ dns_shunt = "chinadns-ng", _node_sel_other = "1" }) -o:depends({ dns_shunt = "dnsmasq", _node_sel_other = "1" }) -o.remove = function(self, section) - local f = s.fields["smartdns_dns_mode"] - if f and f:formvalue(section) then - return m:del(section, self.option) - end - dns_mode_save(section) -end - ----- SmartDNS Forward Mode -if api.is_finded("smartdns") then - o = s:taboption("DNS", ListValue, "smartdns_dns_mode", translate("Filter Mode")) - o:value("socks", "Socks") - if has_singbox then - o:value("sing-box", "Sing-Box") - end - if has_xray then - o:value("xray", "Xray") - end - o:depends({ dns_shunt = "smartdns", _node_sel_other = "1" }) - o.remove = function(self, section) - local f = s.fields["dns_mode"] - if f and f:formvalue(section) then - return m:del(section, self.option) - end - dns_mode_save(section) - end - - o = s:taboption("DNS", DynamicList, "smartdns_remote_dns", translate("Remote DNS")) - o:value("tcp://1.1.1.1") - o:value("tcp://8.8.4.4") - o:value("tcp://8.8.8.8") - o:value("tcp://9.9.9.9") - o:value("tcp://208.67.222.222") - o:value("tls://1.1.1.1") - o:value("tls://8.8.4.4") - o:value("tls://8.8.8.8") - o:value("tls://9.9.9.9") - o:value("tls://208.67.222.222") - o:value("https://1.1.1.1/dns-query") - o:value("https://8.8.4.4/dns-query") - o:value("https://8.8.8.8/dns-query") - o:value("https://9.9.9.9/dns-query") - o:value("https://208.67.222.222/dns-query") - o:value("https://dns.adguard.com/dns-query,94.140.14.14") - o:value("https://doh.libredns.gr/dns-query,116.202.176.26") - o:value("https://doh.libredns.gr/ads,116.202.176.26") - o:depends({ dns_shunt = "smartdns", smartdns_dns_mode = "socks" }) - o.cfgvalue = function(self, section) - return m:get(section, self.option) or {"tcp://1.1.1.1"} - end - function o.write(self, section, value) - local t = {} - local t2 = {} - if type(value) == "table" then - local x - for _, x in ipairs(value) do - if x and #x > 0 then - if not t2[x] then - t2[x] = x - t[#t+1] = x - end - end - end - else - t = { value } - end - return DynamicList.write(self, section, t) - end -end - -o = s:taboption("DNS", ListValue, "xray_dns_mode", translate("Remote DNS") .. " " .. translate("Request protocol")) -o.default = "tcp" -o:value("udp", "UDP") -o:value("tcp", "TCP") -o:value("tcp+doh", "TCP + DoH (" .. translate("A/AAAA type") .. ")") -o:depends("dns_mode", "xray") -o:depends("smartdns_dns_mode", "xray") -o.cfgvalue = function(self, section) - return m:get(section, "v2ray_dns_mode") -end -o.write = function(self, section, value) - if s.fields["dns_mode"]:formvalue(section) == "xray" or s.fields["smartdns_dns_mode"]:formvalue(section) == "xray" then - return m:set(section, "v2ray_dns_mode", value) - end -end - -o = s:taboption("DNS", ListValue, "singbox_dns_mode", translate("Remote DNS") .. " " .. translate("Request protocol")) -o.default = "tcp" -o:value("udp", "UDP") -o:value("tcp", "TCP") -o:value("doh", "DoH") -o:depends("dns_mode", "sing-box") -o:depends("smartdns_dns_mode", "sing-box") -o.cfgvalue = function(self, section) - return m:get(section, "v2ray_dns_mode") -end -o.write = function(self, section, value) - if s.fields["dns_mode"]:formvalue(section) == "sing-box" or s.fields["smartdns_dns_mode"]:formvalue(section) == "sing-box" then - return m:set(section, "v2ray_dns_mode", value) - end -end - -o = s:taboption("DNS", Value, "socks_server", translate("Socks Server"), translate("Make sure socks service is available on this address.")) -for k, v in pairs(socks_table) do o:value(v.id, v.remark) end -o.default = socks_table[1].id -o.validate = function(self, value, t) - if not datatypes.ipaddrport(value) then - return nil, translate("Socks Server") .. " " .. translate("Not valid IP format, please re-enter!") - end - return value -end -o:depends({dns_mode = "dns2socks"}) - ----- DNS Forward -o = s:taboption("DNS", Value, "remote_dns", translate("Remote DNS")) -o.datatype = "or(ipaddr,ipaddrport)" -o.default = "1.1.1.1" -o:value("1.1.1.1", "1.1.1.1 (CloudFlare)") -o:value("1.1.1.2", "1.1.1.2 (CloudFlare-Security)") -o:value("8.8.4.4", "8.8.4.4 (Google)") -o:value("8.8.8.8", "8.8.8.8 (Google)") -o:value("9.9.9.9", "9.9.9.9 (Quad9)") -o:value("149.112.112.112", "149.112.112.112 (Quad9)") -o:value("208.67.220.220", "208.67.220.220 (OpenDNS)") -o:value("208.67.222.222", "208.67.222.222 (OpenDNS)") -o:depends({dns_mode = "dns2socks"}) -o:depends({dns_mode = "tcp"}) -o:depends({dns_mode = "udp"}) -o:depends({xray_dns_mode = "udp"}) -o:depends({xray_dns_mode = "tcp"}) -o:depends({xray_dns_mode = "tcp+doh"}) -o:depends({singbox_dns_mode = "udp"}) -o:depends({singbox_dns_mode = "tcp"}) - ----- DoH -o = s:taboption("DNS", Value, "remote_dns_doh", translate("Remote DNS DoH")) -o.default = "https://1.1.1.1/dns-query" -o:value("https://1.1.1.1/dns-query", "1.1.1.1 (CloudFlare)") -o:value("https://1.1.1.2/dns-query", "1.1.1.2 (CloudFlare-Security)") -o:value("https://8.8.4.4/dns-query", "8.8.4.4 (Google)") -o:value("https://8.8.8.8/dns-query", "8.8.8.8 (Google)") -o:value("https://9.9.9.9/dns-query", "9.9.9.9 (Quad9)") -o:value("https://149.112.112.112/dns-query", "149.112.112.112 (Quad9)") -o:value("https://208.67.222.222/dns-query", "208.67.222.222 (OpenDNS)") -o:value("https://dns.adguard.com/dns-query,94.140.14.14", "94.140.14.14 (AdGuard)") -o:value("https://doh.libredns.gr/dns-query,116.202.176.26", "116.202.176.26 (LibreDNS)") -o:value("https://doh.libredns.gr/ads,116.202.176.26", "116.202.176.26 (LibreDNS-NoAds)") -o.validate = doh_validate -o:depends({xray_dns_mode = "tcp+doh"}) -o:depends({singbox_dns_mode = "doh"}) - -o = s:taboption("DNS", Value, "remote_dns_client_ip", translate("EDNS Client Subnet")) -o.description = translate("Notify the DNS server when the DNS query is notified, the location of the client (cannot be a private IP address).") .. "
" .. - translate("This feature requires the DNS server to support the Edns Client Subnet (RFC7871).") -o.datatype = "ipaddr" -o:depends({dns_mode = "sing-box"}) -o:depends({dns_mode = "xray"}) -o:depends("dns_shunt", "smartdns") -o:depends("_node_sel_shunt", "1") - -o = s:taboption("DNS", Flag, "remote_fakedns", "FakeDNS", translate("Use FakeDNS work in the shunt domain that proxy.")) -o.default = "0" -o:depends({dns_mode = "sing-box", dns_shunt = "dnsmasq"}) -o:depends({dns_mode = "sing-box", dns_shunt = "chinadns-ng"}) -o:depends({smartdns_dns_mode = "sing-box", dns_shunt = "smartdns"}) -o:depends({dns_mode = "xray", dns_shunt = "dnsmasq"}) -o:depends({dns_mode = "xray", dns_shunt = "chinadns-ng"}) -o:depends({smartdns_dns_mode = "xray", dns_shunt = "smartdns"}) -o:depends("_node_sel_shunt", "1") -o.validate = function(self, value, t) - if value and value == "1" then - local _dns_mode = s.fields["dns_mode"]:formvalue(t) - if not _dns_mode and s.fields["smartdns_dns_mode"] then - _dns_mode = s.fields["smartdns_dns_mode"]:formvalue(t) - end - local _tcp_node = s.fields["tcp_node"]:formvalue(t) - if _dns_mode and _tcp_node then - if m:get(_tcp_node, "type"):lower() ~= _dns_mode then - return nil, translatef("TCP node must be '%s' type to use FakeDNS.", _dns_mode) - end - end - end - return value -end - -o = s:taboption("DNS", ListValue, "chinadns_ng_default_tag", translate("Default DNS")) -o.default = "none" -o:value("gfw", translate("Remote DNS")) -o:value("chn", translate("Direct DNS")) -o:value("none", translate("Smart, Do not accept no-ip reply from Direct DNS")) -o:value("none_noip", translate("Smart, Accept no-ip reply from Direct DNS")) -local desc = "
    " - .. "
  • " .. translate("When not matching any domain name list:") .. "
  • " - .. "
  • " .. translate("Remote DNS: Can avoid more DNS leaks, but some domestic domain names maybe to proxy!") .. "
  • " - .. "
  • " .. translate("Direct DNS: Internet experience may be better, but DNS will be leaked!") .. "
  • " -o.description = desc - .. "
  • " .. translate("Smart: Forward to both direct and remote DNS, if the direct DNS resolution result is a mainland China IP, then use the direct result, otherwise use the remote result.") .. "
  • " - .. "
  • " .. translate("In smart mode, no-ip reply from Direct DNS:") .. "
  • " - .. "
  • " .. translate("Do not accept: Wait and use Remote DNS Reply.") .. "
  • " - .. "
  • " .. translate("Accept: Trust the Reply, using this option can improve DNS resolution speeds for some mainland IPv4-only sites.") .. "
  • " - .. "
" -o:depends({dns_shunt = "chinadns-ng", tcp_proxy_mode = "proxy", chn_list = "direct"}) - -o = s:taboption("DNS", ListValue, "use_default_dns", translate("Default DNS")) -o.default = "direct" -o:value("remote", translate("Remote DNS")) -o:value("direct", translate("Direct DNS")) -o.description = desc .. "" -o:depends({dns_shunt = "dnsmasq", tcp_proxy_mode = "proxy", chn_list = "direct"}) -if api.is_finded("smartdns") then - o:depends({dns_shunt = "smartdns", tcp_proxy_mode = "proxy", chn_list = "direct"}) -end - -o = s:taboption("DNS", Flag, "force_https_soa", translate("Force HTTPS SOA"), translate("Force queries with qtype 65 to respond with an SOA record.")) -o.default = "1" -o.rmempty = false -o:depends({dns_shunt = "chinadns-ng"}) -if api.is_finded("smartdns") then - o:depends({dns_shunt = "smartdns"}) -end - -o = s:taboption("DNS", Flag, "dns_redirect", translate("DNS Redirect"), translate("Force special DNS server to need proxy devices.")) -o.default = "1" -o.rmempty = false - -local use_nft = m:get("@global_forwarding[0]", "use_nft") == "1" -local set_title = api.i18n.translate(use_nft and "Clear NFTSET on Reboot" or "Clear IPSET on Reboot") -o = s:taboption("DNS", Flag, "flush_set_on_reboot", set_title, translate("Clear IPSET/NFTSET on service reboot. This may increase reboot time.")) -o.default = "0" - -set_title = api.i18n.translate(use_nft and "Clear NFTSET" or "Clear IPSET") -o = s:taboption("DNS", DummyValue, "clear_ipset", set_title, translate("Try this feature if the rule modification does not take effect.")) -o.rawhtml = true -function o.cfgvalue(self, section) - return string.format( - [[]], - api.url("flush_set") .. "?redirect=1&reload=1", set_title) -end - -s:tab("Proxy", translate("Mode")) - -o = s:taboption("Proxy", Flag, "use_direct_list", translatef("Use %s", translate("Direct List"))) -o.default = "1" - -o = s:taboption("Proxy", Flag, "use_proxy_list", translatef("Use %s", translate("Proxy List"))) -o.default = "1" - -o = s:taboption("Proxy", Flag, "use_block_list", translatef("Use %s", translate("Block List"))) -o.default = "1" - -if has_gfwlist then - o = s:taboption("Proxy", Flag, "use_gfw_list", translatef("Use %s", translate("GFW List"))) - o.default = "1" -end - -if has_chnlist or has_chnroute then - o = s:taboption("Proxy", ListValue, "chn_list", translate("China List")) - o:value("0", translate("Close(Not use)")) - o:value("direct", translate("Direct Connection")) - o:value("proxy", translate("Proxy")) - o.default = "direct" -end - ----- TCP Default Proxy Mode -o = s:taboption("Proxy", ListValue, "tcp_proxy_mode", "TCP " .. translate("Default Proxy Mode")) -o:value("disable", translate("No Proxy")) -o:value("proxy", translate("Proxy")) -o.default = "proxy" - ----- UDP Default Proxy Mode -o = s:taboption("Proxy", ListValue, "udp_proxy_mode", "UDP " .. translate("Default Proxy Mode")) -o:value("disable", translate("No Proxy")) -o:value("proxy", translate("Proxy")) -o.default = "proxy" - -o = s:taboption("Proxy", DummyValue, "switch_mode", " ") -o.template = appname .. "/global/proxy" - ----- Check the transparent proxy component -local handle = io.popen("lsmod") -local mods = "" -if handle then - mods = handle:read("*a") or "" - handle:close() -end - -if (mods:find("REDIRECT") and mods:find("TPROXY")) or (mods:find("nft_redir") and mods:find("nft_tproxy")) then - o = s:taboption("Proxy", Flag, "localhost_proxy", translate("Localhost Proxy"), translate("When selected, localhost can transparent proxy.")) - o.default = "1" - o.rmempty = false - - o = s:taboption("Proxy", Flag, "client_proxy", translate("Client Proxy"), translate("When selected, devices in LAN can transparent proxy. Otherwise, it will not be proxy. But you can still use access control to allow the designated device to proxy.")) - o.default = "1" - o.rmempty = false -else - local html = string.format([[
%s
]], translate("Missing components, transparent proxy is unavailable.")) - o = s:taboption("Proxy", DummyValue, "localhost_proxy", translate("Localhost Proxy")) - o.rawhtml = true - function o.cfgvalue(self, section) - return html - end - - o = s:taboption("Proxy", DummyValue, "client_proxy", translate("Client Proxy")) - o.rawhtml = true - function o.cfgvalue(self, section) - return html - end -end - -o = s:taboption("Proxy", DummyValue, "_proxy_tips", " ") -o.rawhtml = true -o.cfgvalue = function(t, n) - return string.format('%s', api.url("acl"), translate("Want different devices to use different proxy modes/ports/nodes? Please use access control.")) -end - -s:tab("log", translate("Log")) -o = s:taboption("log", Flag, "log_tcp", translate("Enable") .. " " .. translatef("%s Node Log", "TCP")) -o.default = "0" -o.rmempty = false - -o = s:taboption("log", Flag, "log_udp", translate("Enable") .. " " .. translatef("%s Node Log", "UDP")) -o.default = "0" -o.rmempty = false - -o = s:taboption("log", ListValue, "loglevel", "Sing-Box/Xray " .. translate("Log Level")) -o.default = "warning" -o:value("debug") -o:value("info") -o:value("warning") -o:value("error") - -o = s:taboption("log", ListValue, "trojan_loglevel", "Trojan " .. translate("Log Level")) -o.default = "2" -o:value("0", "all") -o:value("1", "info") -o:value("2", "warn") -o:value("3", "error") -o:value("4", "fatal") - -o = s:taboption("log", Flag, "advanced_log_feature", translate("Advanced log feature"), translate("For professionals only.")) -o.default = "0" -o = s:taboption("log", Flag, "sys_log", translate("Logging to system log"), translate("Logging to the system log for more advanced functions. For example, send logs to a dedicated log server.")) -o:depends("advanced_log_feature", "1") -o.default = "0" -o = s:taboption("log", Value, "persist_log_path", translate("Persist log file directory"), translate("The path to the directory used to store persist log files, the \"/\" at the end can be omitted. Leave it blank to disable this feature.")) -o:depends({ ["advanced_log_feature"] = 1, ["sys_log"] = 0 }) -o = s:taboption("log", Value, "log_event_filter", translate("Log Event Filter"), translate("Support regular expression.")) -o:depends("advanced_log_feature", "1") -o = s:taboption("log", Value, "log_event_cmd", translate("Shell Command"), translate("Shell command to execute, replace log content with %s.")) -o:depends("advanced_log_feature", "1") - -o = s:taboption("log", Flag, "log_chinadns_ng", translate("Enable") .. " ChinaDNS-NG " .. translate("Log")) -o.default = "0" -o.rmempty = false - -o = s:taboption("log", DummyValue, "_log_tips", " ") -o.rawhtml = true -o.cfgvalue = function(t, n) - return string.format('%s', translate("It is recommended to disable logging during regular use to reduce system overhead.")) -end - -s:tab("faq", "FAQ") -o = s:taboption("faq", DummyValue, "") -o.template = appname .. "/global/faq" - -s:tab("maintain", translate("Maintain")) -o = s:taboption("maintain", DummyValue, "") -o.template = appname .. "/global/backup" - --- [[ Socks Server ]]-- -o = s:taboption("Main", Flag, "socks_enabled", "Socks " .. translate("Main switch")) -o.rmempty = false - -s2 = m:section(TypedSection, "socks", translate("Socks Config")) -s2.template = "cbi/tblsection" -s2.anonymous = true -s2.addremove = true -s2.extedit = api.url("socks_config", "%s") -function s2.create(e, t) - local uuid = api.gen_short_uuid() - t = uuid - TypedSection.create(e, t) - luci.http.redirect(e.extedit:format(t)) -end -function s2.remove(e, t) - local socks = "Socks_" .. t - local new_node = "" - local node0 = m:get("@nodes[0]") or nil - if node0 then - new_node = node0[".name"] - end - if (m:get("@global[0]", "tcp_node") or "") == socks then - m:set('@global[0]', "tcp_node", new_node) - end - if (m:get("@global[0]", "udp_node") or "") == socks then - m:set('@global[0]', "udp_node", new_node) - end - m.uci:foreach(appname, "acl_rule", function(s) - if s["tcp_node"] and s["tcp_node"] == socks then - m:set(s[".name"], "tcp_node", "default") - end - if s["udp_node"] and s["udp_node"] == socks then - m:set(s[".name"], "udp_node", "default") - end - end) - m.uci:foreach(appname, "nodes", function(s) - local list_name = s["urltest_node"] and "urltest_node" or (s["balancing_node"] and "balancing_node") - if list_name then - local nodes = m.uci:get_list(appname, s[".name"], list_name) - if nodes then - local changed = false - local new_nodes = {} - for _, node in ipairs(nodes) do - if node ~= socks then - table.insert(new_nodes, node) - else - changed = true - end - end - if changed then - m.uci:set_list(appname, s[".name"], list_name, new_nodes) - end - end - end - if s["fallback_node"] == socks then - m:del(s[".name"], "fallback_node") - end - end) - TypedSection.remove(e, t) -end - -o = s2:option(DummyValue, "status", translate("Status")) -o.rawhtml = true -o.cfgvalue = function(t, n) - return string.format('
', n) -end - ----- Enable -o = s2:option(Flag, "enabled", translate("Enable")) -o.default = 1 -o.rmempty = false - -o = s2:option(ListValue, "node", translate("Socks Node")) -o.template = appname .. "/cbi/nodes_listvalue" -o.group = {} - -o = s2:option(DummyValue, "now_node", translate("Current Node")) -o.rawhtml = true -o.cfgvalue = function(_, n) - local current_node = api.get_cache_var("socks_" .. n) - if current_node then - local node = m:get(current_node) - if node then - return (api.get_node_remarks(node) or ""):gsub("(:)%[", "%1
[") - end - end -end - -local n = 1 -m.uci:foreach(appname, "socks", function(s) - if s[".name"] == section then - return false - end - n = n + 1 -end) - -o = s2:option(Value, "port", "Socks " .. translate("Listen Port")) -o.default = n + 1080 -o.datatype = "port" -o.rmempty = false - -if has_singbox or has_xray then - o = s2:option(Value, "http_port", "HTTP " .. translate("Listen Port")) - o.default = 0 - o.datatype = "port" -end - -local tcp = s.fields["tcp_node"] -local udp = s.fields["udp_node"] -local socks = s2.fields["node"] -for k, v in pairs(socks_list) do - tcp:value(v.id, v["remark"]) - tcp.group[#tcp.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - udp:value(v.id, v["remark"]) - udp.group[#udp.group+1] = (v.group and v.group ~= "") and v.group or translate("default") -end -for k, v in pairs(nodes_table) do - if #normal_list == 0 then - break - end - if v.protocol == "_shunt" then - if has_singbox or has_xray then - tcp:value(v.id, v["remark"]) - tcp.group[#tcp.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - udp:value(v.id, v["remark"]) - udp.group[#udp.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - - s.fields["_node_sel_shunt"]:depends({ tcp_node = v.id }) - s.fields["xray_dns_mode"]:depends({ [v.id .. "-type"] = "Xray", _node_sel_shunt = "1" }) - s.fields["singbox_dns_mode"]:depends({ [v.id .. "-type"] = "sing-box", _node_sel_shunt = "1" }) - end - else - tcp:value(v.id, v["remark"]) - tcp.group[#tcp.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - udp:value(v.id, v["remark"]) - udp.group[#udp.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - end - if v.type == "Socks" then - if has_singbox or has_xray then - socks:value(v.id, v["remark"]) - socks.group[#socks.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - end - else - socks:value(v.id, v["remark"]) - socks.group[#socks.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - end -end - -m:append(Template(appname .. "/global/footer")) - -return m diff --git a/small/luci-app-passwall/luasrc/model/cbi/passwall/client/haproxy.lua b/small/luci-app-passwall/luasrc/model/cbi/passwall/client/haproxy.lua deleted file mode 100644 index 2eab6a15d3..0000000000 --- a/small/luci-app-passwall/luasrc/model/cbi/passwall/client/haproxy.lua +++ /dev/null @@ -1,171 +0,0 @@ -local api = require "luci.passwall.api" -local appname = api.appname -local datatypes = api.datatypes -local net = require "luci.model.network".init() - -local nodes_table = {} -for k, e in ipairs(api.get_valid_nodes()) do - if e.node_type == "normal" then - nodes_table[#nodes_table + 1] = { - id = e[".name"], - obj = e, - remarks = e["remark"], - group = e["group"] - } - end -end - -m = Map(appname) -api.set_apply_on_parse(m) - -m:append(Template(appname .. "/cbi/nodes_value_com")) - --- [[ Haproxy Settings ]]-- -s = m:section(TypedSection, "global_haproxy", translate("Basic Settings")) -s.anonymous = true - -s:append(Template(appname .. "/haproxy/status")) - ----- Balancing Enable -o = s:option(Flag, "balancing_enable", translate("Enable Load Balancing")) -o.rmempty = false -o.default = false - ----- Console Login Auth -o = s:option(Flag, "console_auth", translate("Console Login Auth")) -o.default = false -o:depends("balancing_enable", true) - ----- Console Username -o = s:option(Value, "console_user", translate("Console Username")) -o.default = "" -o:depends("console_auth", true) - ----- Console Password -o = s:option(Value, "console_password", translate("Console Password")) -o.password = true -o.default = "" -o:depends("console_auth", true) - ----- Console Port -o = s:option(Value, "console_port", translate("Console Port"), translate( - "In the browser input routing IP plus port access, such as:192.168.1.1:1188")) -o.default = "1188" -o:depends("balancing_enable", true) - -o = s:option(Flag, "bind_local", translate("Haproxy Port") .. " " .. translate("Bind Local"), translate("When selected, it can only be accessed localhost.")) -o.default = "0" -o:depends("balancing_enable", true) - ----- Health Check Type -o = s:option(ListValue, "health_check_type", translate("Health Check Type")) -o.default = "passwall_logic" -o:value("tcp", "TCP") -o:value("passwall_logic", translate("URL Test") .. string.format("(passwall %s)", translate("Inner implement"))) -o:depends("balancing_enable", true) - ----- Passwall Inner implement Probe URL -o = s:option(Value, "health_probe_url", translate("Probe URL")) -o:value("https://cp.cloudflare.com/", "Cloudflare") -o:value("https://www.gstatic.com/generate_204", "Gstatic") -o:value("https://www.google.com/generate_204", "Google") -o:value("https://www.youtube.com/generate_204", "YouTube") -o:value("https://connect.rom.miui.com/generate_204", "MIUI (CN)") -o:value("https://connectivitycheck.platform.hicloud.com/generate_204", "HiCloud (CN)") -o.default = o.keylist[3] -o.description = translate("The URL used to detect the connection status.") -o:depends("health_check_type", "passwall_logic") - ----- Health Check Inter -o = s:option(Value, "health_check_inter", translate("Health Check Inter"), translate("Units:seconds")) -o.default = "60" -o:depends("balancing_enable", true) - -o = s:option(DummyValue, "health_check_tips", " ") -o.rawhtml = true -o.cfgvalue = function(t, n) - return string.format('%s', translate("When the URL test is used, the load balancing node will be converted into a Socks node. when node list set customizing, must be a Socks node, otherwise the health check will be invalid.")) -end -o:depends("health_check_type", "passwall_logic") - --- [[ Balancing Settings ]]-- -s = m:section(TypedSection, "haproxy_config", translate("Node List"), - "" .. - translate("Add a node, Export Of Multi WAN Only support Multi Wan. Load specific gravity range 1-256. Multiple primary servers can be load balanced, standby will only be enabled when the primary server is offline! Multiple groups can be set, Haproxy port same one for each group.") .. - "\n" .. translate("Note that the node configuration parameters for load balancing must be consistent when use TCP health check type, otherwise it cannot be used normally!") .. - "") -s.template = "cbi/tblsection" -s.sortable = true -s.anonymous = true -s.addremove = true - -s.create = function(e, t) - TypedSection.create(e, api.gen_short_uuid()) -end - -s.remove = function(self, section) - for k, v in pairs(self.children) do - v.rmempty = true - v.validate = nil - end - TypedSection.remove(self, section) -end - ----- Enable -o = s:option(Flag, "enabled", translate("Enable")) -o.default = 1 -o.rmempty = false - ----- Node Address -o = s:option(Value, "lbss", translate("Node Address")) -o.template = appname .. "/cbi/nodes_value" -o.group = {} -for k, v in pairs(nodes_table) do - o:value(v.id, v.remarks) - o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") -end -o.rmempty = false -o.validate = function(self, value) - if not value then return nil, translate("Node address cannot be empty.") end - local t = m:get(value) or nil - if t and t[".type"] == "nodes" then - return value - end - if datatypes.hostport(value) or datatypes.ip4addrport(value) then - return value - end - if api.is_ipv6addrport(value) then - return value - end - return nil, translate("Not valid IP format, please re-enter!") .. " (IP:Port)" -end - ----- Haproxy Port -o = s:option(Value, "haproxy_port", translate("Haproxy Port")) -o.datatype = "port" -o.default = 1181 -o.rmempty = false - ----- Node Weight -o = s:option(Value, "lbweight", translate("Node Weight")) -o.datatype = "uinteger" -o.default = 5 -o.rmempty = false - ----- Export -o = s:option(ListValue, "export", translate("Export Of Multi WAN")) -o:value(0, translate("Auto")) -local wa = require "luci.tools.webadmin" -wa.cbi_add_networks(o) -o.default = 0 -o.rmempty = false - ----- Mode -o = s:option(ListValue, "backup", translate("Mode")) -o:value(0, translate("Primary")) -o:value(1, translate("Standby")) -o.rmempty = false - -m:append(Template(appname .. "/haproxy/js")) - -return m diff --git a/small/luci-app-passwall/luasrc/model/cbi/passwall/client/log.lua b/small/luci-app-passwall/luasrc/model/cbi/passwall/client/log.lua deleted file mode 100644 index ef8c9be0bd..0000000000 --- a/small/luci-app-passwall/luasrc/model/cbi/passwall/client/log.lua +++ /dev/null @@ -1,8 +0,0 @@ -local api = require "luci.passwall.api" -local appname = "passwall" - -f = SimpleForm(appname) -f.reset = false -f.submit = false -f:append(Template(appname .. "/log/log")) -return f diff --git a/small/luci-app-passwall/luasrc/model/cbi/passwall/client/node_config.lua b/small/luci-app-passwall/luasrc/model/cbi/passwall/client/node_config.lua deleted file mode 100644 index 77129f7be7..0000000000 --- a/small/luci-app-passwall/luasrc/model/cbi/passwall/client/node_config.lua +++ /dev/null @@ -1,98 +0,0 @@ -local api = require "luci.passwall.api" -local appname = "passwall" - -m = Map(appname, translate("Node Config")) -m.redirect = api.url("node_list") -api.set_apply_on_parse(m) - -if not arg[1] or not m:get(arg[1]) then - luci.http.redirect(m.redirect) -end - -m:append(Template(appname .. "/cbi/nodes_multivalue_com")) -m:append(Template(appname .. "/cbi/nodes_listvalue_com")) - -s = m:section(NamedSection, arg[1], "nodes", "") -s.addremove = false -s.dynamic = false - -o = s:option(DummyValue, "passwall", " ") -o.rawhtml = true -o.template = "passwall/node_list/link_share_man" -o.value = arg[1] - -o = s:option(Value, "remarks", translate("Node Remarks")) -o.default = translate("Remarks") -o.rmempty = false - -o = s:option(Value, "group", translate("Group Name")) -o.default = "" -o:value("", translate("default")) -local groups = {} -m.uci:foreach(appname, "nodes", function(s) - if s[".name"] ~= arg[1] then - if s.group and s.group ~= "" then - groups[s.group] = true - end - end -end) -for k, v in pairs(groups) do - o:value(k) -end -o.write = function(self, section, value) - value = api.trim(value) - local lower = value:lower() - - if lower == "" or lower == "default" then - return m:del(section, self.option) - end - - for _, v in ipairs(self.keylist or {}) do - if v:lower() == lower then - return m:set(section, self.option, v) - end - end - m:set(section, self.option, value) -end - -o = s:option(ListValue, "type", translate("Type")) - -if api.is_finded("ipt2socks") then - local function _n(name) - return "socks_" .. name - end - - s.fields["type"]:value("Socks", translate("Socks")) - - o = s:option(ListValue, _n("del_protocol"), " ") --始终隐藏,用于删除 protocol - o:depends({ [_n("__hide")] = "1" }) - o.rewrite_option = "protocol" - - o = s:option(Value, _n("address"), translate("Address (Support Domain Name)")) - - o = s:option(Value, _n("port"), translate("Port")) - o.datatype = "port" - - o = s:option(Value, _n("username"), translate("Username")) - - o = s:option(Value, _n("password"), translate("Password")) - o.password = true - - api.luci_types(arg[1], m, s, "Socks", "socks_") -end - -local fs = api.fs -local types_dir = "/usr/lib/lua/luci/model/cbi/passwall/client/type/" - -local type_table = {} -for filename in fs.dir(types_dir) do - table.insert(type_table, filename) -end -table.sort(type_table) - -for index, value in ipairs(type_table) do - local p_func = loadfile(types_dir .. value) - setfenv(p_func, getfenv(1))(m, s) -end - -return m diff --git a/small/luci-app-passwall/luasrc/model/cbi/passwall/client/node_list.lua b/small/luci-app-passwall/luasrc/model/cbi/passwall/client/node_list.lua deleted file mode 100644 index 0465b87a06..0000000000 --- a/small/luci-app-passwall/luasrc/model/cbi/passwall/client/node_list.lua +++ /dev/null @@ -1,35 +0,0 @@ -local api = require "luci.passwall.api" -local appname = "passwall" -local sys = api.sys -local datatypes = api.datatypes - -m = Map(appname) -api.set_apply_on_parse(m) - --- [[ Other Settings ]]-- -s = m:section(TypedSection, "global_other") -s.anonymous = true - -o = s:option(ListValue, "auto_detection_time", translate("Automatic detection delay")) -o:value("0", translate("Close")) -o:value("icmp", "Ping") -o:value("tcping", "TCP Ping") - -o = s:option(Flag, "show_node_info", translate("Show server address and port")) -o.default = "0" - -o = s:option(Value, "url_test_url", translate("URL Test Address")) -o:value("https://cp.cloudflare.com/", "Cloudflare") -o:value("https://www.gstatic.com/generate_204", "Gstatic") -o:value("https://www.google.com/generate_204", "Google") -o:value("https://www.youtube.com/generate_204", "YouTube") -o:value("https://connect.rom.miui.com/generate_204", "MIUI (CN)") -o:value("https://connectivitycheck.platform.hicloud.com/generate_204", "HiCloud (CN)") -o.default = o.keylist[3] - --- [[ Add the node via the link ]]-- -s:append(Template(appname .. "/node_list/link_add_node")) - -m:append(Template(appname .. "/node_list/node_list")) - -return m diff --git a/small/luci-app-passwall/luasrc/model/cbi/passwall/client/node_subscribe.lua b/small/luci-app-passwall/luasrc/model/cbi/passwall/client/node_subscribe.lua deleted file mode 100644 index 8b17b0bef9..0000000000 --- a/small/luci-app-passwall/luasrc/model/cbi/passwall/client/node_subscribe.lua +++ /dev/null @@ -1,238 +0,0 @@ -local api = require "luci.passwall.api" -local uci = api.uci -local appname = "passwall" -local has_ss = api.is_finded("ss-redir") -local has_ss_rust = api.is_finded("sslocal") -local has_trojan_plus = api.is_finded("trojan-plus") -local has_singbox = api.finded_com("sing-box") -local has_xray = api.finded_com("xray") -local has_hysteria2 = api.finded_com("hysteria") -local ss_type = {} -local trojan_type = {} -local vmess_type = {} -local vless_type = {} -local hysteria2_type = {} -local xray_version = api.get_app_version("xray") -if has_ss then - local s = "shadowsocks-libev" - table.insert(ss_type, s) -end -if has_ss_rust then - local s = "shadowsocks-rust" - table.insert(ss_type, s) -end -if has_trojan_plus then - local s = "trojan-plus" - table.insert(trojan_type, s) -end -if has_singbox then - local s = "sing-box" - table.insert(trojan_type, s) - table.insert(ss_type, s) - table.insert(vmess_type, s) - table.insert(vless_type, s) - table.insert(hysteria2_type, s) -end -if has_xray then - local s = "xray" - table.insert(trojan_type, s) - table.insert(ss_type, s) - table.insert(vmess_type, s) - table.insert(vless_type, s) - if api.compare_versions(xray_version, ">=", "26.1.13") then - table.insert(hysteria2_type, s) - end -end -if has_hysteria2 then - local s = "hysteria2" - table.insert(hysteria2_type, s) -end - -m = Map(appname) -api.set_apply_on_parse(m) - -function m.on_before_save(self) - if self.no_commit then - return - end - self.uci:foreach(appname, "subscribe_list", function(e) - self:del(e[".name"], "md5") - end) -end - --- [[ Subscribe Settings ]]-- -s = m:section(TypedSection, "global_subscribe", "") -s.anonymous = true - -o = s:option(ListValue, "filter_keyword_mode", translate("Filter keyword Mode")) -o:value("0", translate("Close")) -o:value("1", translate("Discard List")) -o:value("2", translate("Keep List")) -o:value("3", translate("Discard List,But Keep List First")) -o:value("4", translate("Keep List,But Discard List First")) - -o = s:option(DynamicList, "filter_discard_list", translate("Discard List")) - -o = s:option(DynamicList, "filter_keep_list", translate("Keep List")) - -if #ss_type > 0 then - o = s:option(ListValue, "ss_type", translatef("%s Node Use Type", "Shadowsocks")) - for key, value in pairs(ss_type) do - o:value(value) - end -end - -if #trojan_type > 0 then - o = s:option(ListValue, "trojan_type", translatef("%s Node Use Type", "Trojan")) - for key, value in pairs(trojan_type) do - o:value(value) - end -end - -if #vmess_type > 0 then - o = s:option(ListValue, "vmess_type", translatef("%s Node Use Type", "VMess")) - for key, value in pairs(vmess_type) do - o:value(value) - end - if has_xray then - o.default = "xray" - end -end - -if #vless_type > 0 then - o = s:option(ListValue, "vless_type", translatef("%s Node Use Type", "VLESS")) - for key, value in pairs(vless_type) do - o:value(value) - end - if has_xray then - o.default = "xray" - end -end - -if #hysteria2_type > 0 then - o = s:option(ListValue, "hysteria2_type", translatef("%s Node Use Type", "Hysteria2")) - for key, value in pairs(hysteria2_type) do - o:value(value) - end - if has_hysteria2 then - o.default = "hysteria2" - end -end - -if #ss_type > 0 or #trojan_type > 0 or #vmess_type > 0 or #vless_type > 0 or #hysteria2_type > 0 then - o.description = string.format("%s", - translate("The configured type also applies to the core specified when manually importing nodes.")) -end - -o = s:option(ListValue, "domain_strategy", "Sing-box " .. translate("Domain Strategy"), translate("Set the default domain resolution strategy for the sing-box node.")) -o.default = "" -o:value("", translate("Auto")) -o:value("prefer_ipv4", translate("Prefer IPv4")) -o:value("prefer_ipv6", translate("Prefer IPv6")) -o:value("ipv4_only", translate("IPv4 Only")) -o:value("ipv6_only", translate("IPv6 Only")) - ----- Subscribe Delete All -o = s:option(DummyValue, "_stop", translate("Delete All Subscribe Node")) -o.rawhtml = true -function o.cfgvalue(self, section) - return string.format( - [[]], - translate("Delete All Subscribe Node")) -end - -o = s:option(DummyValue, "_update", translate("Manual subscription All")) -o.rawhtml = true -o.cfgvalue = function(self, section) - return string.format([[ - ]], - translate("Manual subscription All")) -end - -s = m:section(TypedSection, "subscribe_list", "", "" .. translate("When adding a new subscription, please save and apply before manually subscribing. If you only change the subscription URL, you can subscribe manually, and the system will save it automatically.") .. "") -s.addremove = true -s.anonymous = true -s.sortable = true -s.template = "cbi/tblsection" -s.extedit = api.url("node_subscribe_config", "%s") -function s.create(e, t) - m.no_commit = true - local id = TypedSection.create(e, t) - luci.http.redirect(e.extedit:format(id)) -end - -o = s:option(Value, "remark", translate("Remarks")) -o.width = "auto" -o.rmempty = false -o.validate = function(self, value, section) - value = api.trim(value) - if value == "" then - return nil, translate("Remark cannot be empty.") - end - local duplicate = false - m.uci:foreach(appname, "subscribe_list", function(e) - if e[".name"] ~= section and e["remark"] and e["remark"]:lower() == value:lower() then - duplicate = true - return false - end - end) - if duplicate or value:lower() == "default" then - return nil, translate("This remark already exists, please change a new remark.") - end - return value -end -o.write = function(self, section, value) - local old = m:get(section, self.option) or "" - if old ~= value then - m.uci:foreach(appname, "nodes", function(e) - if e["group"] and e["group"]:lower() == old:lower() then - m.uci:set(appname, e[".name"], "group", value) - end - end) - end - return Value.write(self, section, value) -end - -o = s:option(DummyValue, "_node_count", translate("Subscribe Info")) -o.rawhtml = true -o.cfgvalue = function(t, n) - local remark = m:get(n, "remark") or "" - local str = m:get(n, "rem_traffic") or "" - local expired_date = m:get(n, "expired_date") or "" - if expired_date ~= "" then - str = str .. (str ~= "" and "/" or "") .. expired_date - end - str = str ~= "" and "
" .. str or "" - local num = 0 - m.uci:foreach(appname, "nodes", function(s) - if s["group"] and s["group"]:lower() == remark:lower() then - num = num + 1 - end - end) - return string.format("%s%s", translate("Node num") .. ": " .. num, str) -end - -o = s:option(Value, "url", translate("Subscribe URL")) -o.width = "auto" -o.rmempty = false - -o = s:option(DummyValue, "_remove", translate("Delete the subscribed node")) -o.rawhtml = true -function o.cfgvalue(self, section) - local remark = m:get(section, "remark") or "" - return string.format( - [[]], - remark, translate("Delete the subscribed node")) -end - -o = s:option(DummyValue, "_update", translate("Manual subscription")) -o.rawhtml = true -o.cfgvalue = function(self, section) - return string.format([[ - ]], - section, translate("Manual subscription")) -end - -m:append(Template(appname .. "/node_subscribe/js")) - -return m diff --git a/small/luci-app-passwall/luasrc/model/cbi/passwall/client/node_subscribe_config.lua b/small/luci-app-passwall/luasrc/model/cbi/passwall/client/node_subscribe_config.lua deleted file mode 100644 index b3a24812fc..0000000000 --- a/small/luci-app-passwall/luasrc/model/cbi/passwall/client/node_subscribe_config.lua +++ /dev/null @@ -1,287 +0,0 @@ -local api = require "luci.passwall.api" -local uci = api.uci -local appname = "passwall" - -m = Map(appname) -m.redirect = api.url("node_subscribe") -api.set_apply_on_parse(m) - -if not arg[1] or not m:get(arg[1]) then - luci.http.redirect(m.redirect) -end - -function m.on_before_save(self) - self:del(arg[1], "md5") -end - -m:append(Template(appname .. "/cbi/nodes_listvalue_com")) - -local has_ss = api.is_finded("ss-redir") -local has_ss_rust = api.is_finded("sslocal") -local has_trojan_plus = api.is_finded("trojan-plus") -local has_singbox = api.finded_com("sing-box") -local has_xray = api.finded_com("xray") -local has_hysteria2 = api.finded_com("hysteria") -local ss_type = {} -local trojan_type = {} -local vmess_type = {} -local vless_type = {} -local hysteria2_type = {} -local xray_version = api.get_app_version("xray") -if has_ss then - local s = "shadowsocks-libev" - table.insert(ss_type, s) -end -if has_ss_rust then - local s = "shadowsocks-rust" - table.insert(ss_type, s) -end -if has_trojan_plus then - local s = "trojan-plus" - table.insert(trojan_type, s) -end -if has_singbox then - local s = "sing-box" - table.insert(trojan_type, s) - table.insert(ss_type, s) - table.insert(vmess_type, s) - table.insert(vless_type, s) - table.insert(hysteria2_type, s) -end -if has_xray then - local s = "xray" - table.insert(trojan_type, s) - table.insert(ss_type, s) - table.insert(vmess_type, s) - table.insert(vless_type, s) - if api.compare_versions(xray_version, ">=", "26.1.13") then - table.insert(hysteria2_type, s) - end -end -if has_hysteria2 then - local s = "hysteria2" - table.insert(hysteria2_type, s) -end -local nodes_table = {} -for k, e in ipairs(api.get_valid_nodes()) do - if e.node_type == "normal" then - nodes_table[#nodes_table + 1] = { - id = e[".name"], - remark = e["remark"], - type = e["type"], - add_mode = e["add_mode"], - chain_proxy = e["chain_proxy"], - group = e["group"] - } - end -end - -s = m:section(NamedSection, arg[1]) -s.addremove = false -s.dynamic = false - -o = s:option(Value, "remark", translate("Subscribe Remark")) -o.rmempty = false -o.validate = function(self, value, section) - value = api.trim(value) - if value == "" then - return nil, translate("Remark cannot be empty.") - end - local duplicate = false - m.uci:foreach(appname, "subscribe_list", function(e) - if e[".name"] ~= section and e["remark"] and e["remark"]:lower() == value:lower() then - duplicate = true - return false - end - end) - if duplicate or value:lower() == "default" then - return nil, translate("This remark already exists, please change a new remark.") - end - return value -end -o.write = function(self, section, value) - local old = m:get(section, self.option) or "" - if old ~= value then - m.uci:foreach(appname, "nodes", function(e) - if e["group"] and e["group"]:lower() == old:lower() then - m.uci:set(appname, e[".name"], "group", value) - end - end) - end - return Value.write(self, section, value) -end - -o = s:option(TextValue, "url", translate("Subscribe URL")) -o.rows = 5 -o.rmempty = false -o.validate = function(self, value) - if not value or value == "" then - return nil, translate("URL cannot be empty.") - end - return value:gsub("%s+", ""):gsub("%z", "") -end - -o = s:option(Flag, "allowInsecure", translate("allowInsecure"), translate("Whether unsafe connections are allowed. When checked, Certificate validation will be skipped.")) -o.default = "0" -o.rmempty = false - -o = s:option(ListValue, "filter_keyword_mode", translate("Filter keyword Mode")) -o.default = "5" -o:value("0", translate("Close")) -o:value("1", translate("Discard List")) -o:value("2", translate("Keep List")) -o:value("3", translate("Discard List,But Keep List First")) -o:value("4", translate("Keep List,But Discard List First")) -o:value("5", translate("Use global config")) - -o = s:option(DynamicList, "filter_discard_list", translate("Discard List")) -o:depends("filter_keyword_mode", "1") -o:depends("filter_keyword_mode", "3") -o:depends("filter_keyword_mode", "4") - -o = s:option(DynamicList, "filter_keep_list", translate("Keep List")) -o:depends("filter_keyword_mode", "2") -o:depends("filter_keyword_mode", "3") -o:depends("filter_keyword_mode", "4") - -if #ss_type > 0 then - o = s:option(ListValue, "ss_type", translatef("%s Node Use Type", "Shadowsocks")) - o.default = "global" - o:value("global", translate("Use global config")) - for key, value in pairs(ss_type) do - o:value(value) - end -end - -if #trojan_type > 0 then - o = s:option(ListValue, "trojan_type", translatef("%s Node Use Type", "Trojan")) - o.default = "global" - o:value("global", translate("Use global config")) - for key, value in pairs(trojan_type) do - o:value(value) - end -end - -if #vmess_type > 0 then - o = s:option(ListValue, "vmess_type", translatef("%s Node Use Type", "VMess")) - o.default = "global" - o:value("global", translate("Use global config")) - for key, value in pairs(vmess_type) do - o:value(value) - end -end - -if #vless_type > 0 then - o = s:option(ListValue, "vless_type", translatef("%s Node Use Type", "VLESS")) - o.default = "global" - o:value("global", translate("Use global config")) - for key, value in pairs(vless_type) do - o:value(value) - end -end - -if #hysteria2_type > 0 then - o = s:option(ListValue, "hysteria2_type", translatef("%s Node Use Type", "Hysteria2")) - o.default = "global" - o:value("global", translate("Use global config")) - for key, value in pairs(hysteria2_type) do - o:value(value) - end -end - -o = s:option(ListValue, "domain_strategy", "Sing-box " .. translate("Domain Strategy"), translate("Set the default domain resolution strategy for the sing-box node.")) -o.default = "global" -o:value("global", translate("Use global config")) -o:value("", translate("Auto")) -o:value("prefer_ipv4", translate("Prefer IPv4")) -o:value("prefer_ipv6", translate("Prefer IPv6")) -o:value("ipv4_only", translate("IPv4 Only")) -o:value("ipv6_only", translate("IPv6 Only")) - ----- Enable auto update subscribe -o = s:option(Flag, "auto_update", translate("Enable auto update subscribe")) -o.default = 0 -o.rmempty = false - ----- Week Update -o = s:option(ListValue, "week_update", translate("Update Mode")) -o:value(8, translate("Loop Mode")) -o:value(7, translate("Every day")) -o:value(1, translate("Every Monday")) -o:value(2, translate("Every Tuesday")) -o:value(3, translate("Every Wednesday")) -o:value(4, translate("Every Thursday")) -o:value(5, translate("Every Friday")) -o:value(6, translate("Every Saturday")) -o:value(0, translate("Every Sunday")) -o.default = 7 -o:depends("auto_update", true) -o.rmempty = true - ----- Time Update -o = s:option(ListValue, "time_update", translate("Update Time(every day)")) -for t = 0, 23 do o:value(t, t .. ":00") end -o.default = 0 -o:depends("week_update", "0") -o:depends("week_update", "1") -o:depends("week_update", "2") -o:depends("week_update", "3") -o:depends("week_update", "4") -o:depends("week_update", "5") -o:depends("week_update", "6") -o:depends("week_update", "7") -o.rmempty = true - ----- Interval Update -o = s:option(ListValue, "interval_update", translate("Update Interval(hour)")) -for t = 1, 24 do o:value(t, t .. " " .. translate("hour")) end -o.default = 2 -o:depends("week_update", "8") -o.rmempty = true - -o = s:option(ListValue, "access_mode", translate("Subscribe URL Access Method")) -o.default = "" -o:value("", translate("Auto")) -o:value("direct", translate("Direct Connection")) -o:value("proxy", translate("Proxy")) - -o = s:option(Value, "user_agent", translate("User-Agent")) -o.default = "passwall" -o:value("passwall", "PassWall") -o:value("v2rayN/9.99", "v2rayN") -o:value("curl", "Curl") -o:value("Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0", "Edge for Linux") -o:value("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0", "Edge for Windows") - -o = s:option(ListValue, "chain_proxy", translate("Chain Proxy")) -o:value("", translate("Close(Not use)")) -o:value("1", translate("Preproxy Node")) -o:value("2", translate("Landing Node")) - -local descrStr = "Chained proxy works only with Xray or Sing-box nodes.
" -descrStr = descrStr .. "The chained node must be the same type as your subscription node (Xray with Xray, Sing-box with Sing-box).
" -descrStr = descrStr .. "You can only use manual or imported nodes as chained nodes." -descrStr = translate(descrStr) .. "
" .. translate("Only support a layer of proxy.") - -o1 = s:option(ListValue, "preproxy_node", translate("Preproxy Node")) -o1:depends({ ["chain_proxy"] = "1" }) -o1.description = descrStr -o1.template = appname .. "/cbi/nodes_listvalue" -o1.group = {} - -o2 = s:option(ListValue, "to_node", translate("Landing Node")) -o2:depends({ ["chain_proxy"] = "2" }) -o2.description = descrStr -o2.template = appname .. "/cbi/nodes_listvalue" -o2.group = {} - -for k, v in pairs(nodes_table) do - if (v.type == "Xray" or v.type == "sing-box") and (not v.chain_proxy or v.chain_proxy == "") and v.add_mode ~= "2" then - o1:value(v.id, v.remark) - o1.group[#o1.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - o2:value(v.id, v.remark) - o2.group[#o2.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - end -end - -return m diff --git a/small/luci-app-passwall/luasrc/model/cbi/passwall/client/other.lua b/small/luci-app-passwall/luasrc/model/cbi/passwall/client/other.lua deleted file mode 100644 index 6d778b31a2..0000000000 --- a/small/luci-app-passwall/luasrc/model/cbi/passwall/client/other.lua +++ /dev/null @@ -1,268 +0,0 @@ -local api = require "luci.passwall.api" -local appname = "passwall" -local fs = api.fs -local has_singbox = api.finded_com("sing-box") -local has_xray = api.finded_com("xray") - -local port_validate = function(self, value, t) - return value:gsub("-", ":") -end - -m = Map(appname) -api.set_apply_on_parse(m) - --- [[ Delay Settings ]]-- -s = m:section(TypedSection, "global_delay", translate("Delay Settings")) -s.anonymous = true -s.addremove = false - ----- Open and close Daemon -o = s:option(Flag, "start_daemon", translate("Open and close Daemon")) -o.default = 1 -o.rmempty = false - ----- Delay Start -o = s:option(Value, "start_delay", translate("Delay Start"), translate("Units:seconds")) -o.default = "1" -o.rmempty = true - -for index, value in ipairs({"stop", "start", "restart"}) do - o = s:option(ListValue, value .. "_week_mode", translate(value .. " automatically mode")) - o:value("", translate("Disable")) - o:value(8, translate("Loop Mode")) - o:value(7, translate("Every day")) - o:value(1, translate("Every Monday")) - o:value(2, translate("Every Tuesday")) - o:value(3, translate("Every Wednesday")) - o:value(4, translate("Every Thursday")) - o:value(5, translate("Every Friday")) - o:value(6, translate("Every Saturday")) - o:value(0, translate("Every Sunday")) - o = s:option(ListValue, value .. "_time_mode", translate(value .. " Time(Every day)")) - for t = 0, 23 do o:value(t, t .. ":00") end - o.default = 0 - o:depends(value .. "_week_mode", "0") - o:depends(value .. "_week_mode", "1") - o:depends(value .. "_week_mode", "2") - o:depends(value .. "_week_mode", "3") - o:depends(value .. "_week_mode", "4") - o:depends(value .. "_week_mode", "5") - o:depends(value .. "_week_mode", "6") - o:depends(value .. "_week_mode", "7") - o = s:option(ListValue, value .. "_interval_mode", translate(value .. " Interval(Hour)")) - for t = 1, 24 do o:value(t, t .. " " .. translate("Hour")) end - o.default = 2 - o:depends(value .. "_week_mode", "8") -end - --- [[ Forwarding Settings ]]-- -s = m:section(TypedSection, "global_forwarding", translate("Forwarding Settings")) -s.anonymous = true -s.addremove = false - ----- TCP No Redir Ports -o = s:option(Value, "tcp_no_redir_ports", translate("TCP No Redir Ports")) -o.default = "disable" -o:value("disable", translate("No patterns are used")) -o:value("1:65535", translate("All")) -o.validate = port_validate - ----- UDP No Redir Ports -o = s:option(Value, "udp_no_redir_ports", translate("UDP No Redir Ports"), - "" .. translate( - "Fill in the ports you don't want to be forwarded by the agent, with the highest priority.") .. - "") -o.default = "disable" -o:value("disable", translate("No patterns are used")) -o:value("1:65535", translate("All")) -o.validate = port_validate - ----- TCP Proxy Drop Ports -o = s:option(Value, "tcp_proxy_drop_ports", translate("TCP Proxy Drop Ports")) -o.default = "disable" -o:value("disable", translate("No patterns are used")) -o.validate = port_validate - ----- UDP Proxy Drop Ports -o = s:option(Value, "udp_proxy_drop_ports", translate("UDP Proxy Drop Ports")) -o.default = "443" -o:value("disable", translate("No patterns are used")) -o:value("443", translate("QUIC")) -o.validate = port_validate - ----- TCP Redir Ports -o = s:option(Value, "tcp_redir_ports", translate("TCP Redir Ports")) -o:value("1:65535", translate("All")) -o:value("22,25,53,80,143,443,465,587,853,873,993,995,5222,8080,8443,9418", translate("Common Use")) -o:value("80,443", translate("Only Web")) -o.default = o.keylist[2] -o.validate = port_validate - ----- UDP Redir Ports -o = s:option(Value, "udp_redir_ports", translate("UDP Redir Ports")) -o.default = "1:65535" -o:value("1:65535", translate("All")) -o:value("53", "DNS") -o.validate = port_validate - -o = s:option(DummyValue, "tips", " ") -o.rawhtml = true -o.cfgvalue = function(t, n) - return string.format('%s', - translate("The port settings support single ports and ranges.
Separate multiple ports with commas (,).
Example: 21,80,443,1000:2000.")) -end - ----- Use nftables -o = s:option(ListValue, "prefer_nft", translate("Prefer firewall tools")) -o.default = "1" -o:value("0", "Iptables") -o:value("1", "Nftables") - ----- Check the transparent proxy component -local handle = io.popen("lsmod") -local mods = "" -if handle then - mods = handle:read("*a") or "" - handle:close() -end - -if (mods:find("REDIRECT") and mods:find("TPROXY")) or (mods:find("nft_redir") and mods:find("nft_tproxy")) then - o = s:option(ListValue, "tcp_proxy_way", translate("TCP Proxy Way")) - o.default = "redirect" - o:value("redirect", "REDIRECT") - o:value("tproxy", "TPROXY") - o:depends("ipv6_tproxy", false) - o.remove = function(self, section) - -- 禁止在隐藏时删除 - end - - o = s:option(ListValue, "_tcp_proxy_way", translate("TCP Proxy Way")) - o.default = "tproxy" - o:value("tproxy", "TPROXY") - o:depends("ipv6_tproxy", true) - o.write = function(self, section, value) - self.map:set(section, "tcp_proxy_way", value) - end - - if mods:find("ip6table_mangle") or mods:find("nft_tproxy") then - ---- IPv6 TProxy - o = s:option(Flag, "ipv6_tproxy", translate("IPv6 TProxy"), - "" .. translate( - "Experimental feature. Make sure that your node supports IPv6.") .. - "") - o.default = 0 - o.rmempty = false - end -end - -o = s:option(Flag, "accept_icmp", translate("Hijacking ICMP (PING)")) -o.default = 0 - -o = s:option(Flag, "accept_icmpv6", translate("Hijacking ICMPv6 (IPv6 PING)")) -o:depends("ipv6_tproxy", true) -o.default = 0 - -if has_xray then - s_xray = m:section(TypedSection, "global_xray", "Xray " .. translate("Settings")) - s_xray.anonymous = true - s_xray.addremove = false - - o = s_xray:option(Flag, "fragment", translate("Fragment"), translate("TCP fragments, which can deceive the censorship system in some cases, such as bypassing SNI blacklists.")) - o.default = 0 - - o = s_xray:option(ListValue, "fragment_packets", translate("Fragment Packets"), translate("\"1-3\" is for segmentation at TCP layer, applying to the beginning 1 to 3 data writes by the client. \"tlshello\" is for TLS client hello packet fragmentation.")) - o.default = "tlshello" - o:value("tlshello", "tlshello") - o:value("1-1", "1-1") - o:value("1-2", "1-2") - o:value("1-3", "1-3") - o:value("1-5", "1-5") - o:depends("fragment", true) - - o = s_xray:option(Value, "fragment_length", translate("Fragment Length"), translate("Fragmented packet length (byte)")) - o.default = "100-200" - o:depends("fragment", true) - - o = s_xray:option(Value, "fragment_interval", translate("Fragment Interval"), translate("Fragmentation interval (ms)")) - o.default = "10-20" - o:depends("fragment", true) - - o = s_xray:option(Value, "fragment_maxSplit", translate("Max Split"), translate("Limit the maximum number of splits.")) - o.default = "100-200" - o:depends("fragment", true) - - o = s_xray:option(Flag, "noise", translate("Noise"), translate("UDP noise, Under some circumstances it can bypass some UDP based protocol restrictions.")) - o.default = 0 - - o = s_xray:option(Flag, "sniffing_override_dest", translate("Override the connection destination address")) - o.default = 0 - o.description = translate("Override the connection destination address with the sniffed domain.
Otherwise use sniffed domain for routing only.
If using shunt nodes, configure the domain shunt rules correctly.") - - local domains_excluded = string.format("/usr/share/%s/rules/domains_excluded", appname) - o = s_xray:option(TextValue, "excluded_domains", translate("Excluded Domains"), translate("If the traffic sniffing result is in this list, the destination address will not be overridden.")) - o.rows = 15 - o.wrap = "off" - o.cfgvalue = function(self, section) return fs.readfile(domains_excluded) or "" end - o.write = function(self, section, value) fs.writefile(domains_excluded, value:gsub("\r\n", "\n")) end - o:depends({sniffing_override_dest = true}) - - o = s_xray:option(Value, "buffer_size", translate("Buffer Size"), translate("Buffer size for every connection (kB)")) - o.datatype = "uinteger" - - s_xray_noise = m:section(TypedSection, "xray_noise_packets", translate("Xray Noise Packets"),"" .. translate("To send noise packets, select \"Noise\" in Xray Settings.") .. "") - s_xray_noise.template = "cbi/tblsection" - s_xray_noise.sortable = true - s_xray_noise.anonymous = true - s_xray_noise.addremove = true - - s_xray_noise.create = function(e, t) - TypedSection.create(e, api.gen_short_uuid()) - end - - s_xray_noise.remove = function(self, section) - for k, v in pairs(self.children) do - v.rmempty = true - v.validate = nil - end - TypedSection.remove(self, section) - end - - o = s_xray_noise:option(Flag, "enabled", translate("Enable")) - o.default = 1 - o.rmempty = false - - o = s_xray_noise:option(ListValue, "type", translate("Type")) - o:value("rand", "rand") - o:value("str", "str") - o:value("hex", "hex") - o:value("base64", "base64") - - o = s_xray_noise:option(Value, "packet", translate("Packet")) - o.datatype = "minlength(1)" - o.rmempty = false - - o = s_xray_noise:option(Value, "delay", translate("Delay (ms)")) - o.datatype = "or(uinteger,portrange)" - o.rmempty = false - - o = s_xray_noise:option(ListValue, "applyTo", translate("IP Type")) - o:value("ip", "ALL") - o:value("ipv4", "IPv4") - o:value("ipv6", "IPv6") -end - -if has_singbox then - s = m:section(TypedSection, "global_singbox", "Sing-Box " .. translate("Settings")) - s.anonymous = true - s.addremove = false - - o = s:option(Flag, "record_fragment", "TLS Record " .. translate("Fragment"), - translate("Split handshake data into multiple TLS records for better censorship evasion. Low overhead. Recommended to enable first.")) - o.default = 0 - - o = s:option(Flag, "fragment", "TLS TCP " .. translate("Fragment"), - translate("Split handshake into multiple TCP segments. Enhances obfuscation. May increase delay. Use only if needed.")) - o.default = 0 -end - -return m diff --git a/small/luci-app-passwall/luasrc/model/cbi/passwall/client/rule.lua b/small/luci-app-passwall/luasrc/model/cbi/passwall/client/rule.lua deleted file mode 100644 index 9bdf13292f..0000000000 --- a/small/luci-app-passwall/luasrc/model/cbi/passwall/client/rule.lua +++ /dev/null @@ -1,176 +0,0 @@ -local api = require "luci.passwall.api" -local appname = "passwall" -local has_xray = api.finded_com("xray") -local has_singbox = api.finded_com("sing-box") - -m = Map(appname) -api.set_apply_on_parse(m) - --- [[ Rule Settings ]]-- -s = m:section(TypedSection, "global_rules", translate("Rule status")) -s.anonymous = true - ---[[ -o = s:option(Flag, "adblock", translate("Enable adblock")) -o.rmempty = false -]]-- - ----- gfwlist URL -o = s:option(DynamicList, "gfwlist_url", translate("GFW domains(gfwlist) Update URL")) -o:depends("geo2rule", false) -o:value("https://cdn.jsdelivr.net/gh/YW5vbnltb3Vz/domain-list-community@release/gfwlist.txt", translate("v2fly/domain-list-community")) -o:value("https://cdn.jsdelivr.net/gh/Loyalsoldier/v2ray-rules-dat@release/gfw.txt", translate("Loyalsoldier/v2ray-rules-dat")) -o:value("https://cdn.jsdelivr.net/gh/Loukky/gfwlist-by-loukky/gfwlist.txt", translate("Loukky/gfwlist-by-loukky")) -o:value("https://cdn.jsdelivr.net/gh/gfwlist/gfwlist/gfwlist.txt", translate("gfwlist/gfwlist")) -o.default = o.keylist[2] - -----chnroute URL -o = s:option(DynamicList, "chnroute_url", translate("China IPs(chnroute) Update URL")) -o:depends("geo2rule", false) -o:value("https://cdn.jsdelivr.net/gh/gaoyifan/china-operator-ip@ip-lists/china.txt", translate("gaoyifan/china-operator-ip/china")) -o:value("https://ispip.clang.cn/all_cn.txt", translate("Clang.CN")) -o:value("https://cdn.jsdelivr.net/gh/soffchen/GeoIP2-CN@release/CN-ip-cidr.txt", translate("soffchen/GeoIP2-CN")) -o:value("https://cdn.jsdelivr.net/gh/Hackl0us/GeoIP2-CN@release/CN-ip-cidr.txt", translate("Hackl0us/GeoIP2-CN")) -o:value("https://cdn.jsdelivr.net/gh/blackmatrix7/ios_rule_script@master/rule/Clash/ChinaMax/ChinaMax_IP_No_IPv6.txt", translate("ios_rule_script/ChinaMax_IP_No_IPv6")) - -----chnroute6 URL -o = s:option(DynamicList, "chnroute6_url", translate("China IPv6s(chnroute6) Update URL")) -o:depends("geo2rule", false) -o:value("https://cdn.jsdelivr.net/gh/gaoyifan/china-operator-ip@ip-lists/china6.txt", translate("gaoyifan/china-operator-ip/china6")) -o:value("https://ispip.clang.cn/all_cn_ipv6.txt", translate("Clang.CN.IPv6")) -o:value("https://cdn.jsdelivr.net/gh/blackmatrix7/ios_rule_script@master/rule/Clash/ChinaMax/ChinaMax_IP.txt", translate("ios_rule_script/ChinaMax_IP")) - -----chnlist URL -o = s:option(DynamicList, "chnlist_url", translate("China List(Chnlist) Update URL")) -o:depends("geo2rule", false) -o:value("https://cdn.jsdelivr.net/gh/felixonmars/dnsmasq-china-list/accelerated-domains.china.conf", translate("felixonmars/domains.china")) -o:value("https://cdn.jsdelivr.net/gh/felixonmars/dnsmasq-china-list/apple.china.conf", translate("felixonmars/apple.china")) -o:value("https://cdn.jsdelivr.net/gh/felixonmars/dnsmasq-china-list/google.china.conf", translate("felixonmars/google.china")) -o:value("https://cdn.jsdelivr.net/gh/Loyalsoldier/v2ray-rules-dat@release/china-list.txt", translate("Loyalsoldier/china-list")) -o:value("https://cdn.jsdelivr.net/gh/Loyalsoldier/v2ray-rules-dat@release/apple-cn.txt", translate("Loyalsoldier/apple-cn")) -o:value("https://cdn.jsdelivr.net/gh/Loyalsoldier/v2ray-rules-dat@release/google-cn.txt", translate("Loyalsoldier/google-cn")) -o:value("https://cdn.jsdelivr.net/gh/blackmatrix7/ios_rule_script@master/rule/Clash/ChinaMax/ChinaMax_Domain.txt", translate("ios_rule_script/ChinaMax_Domain")) - -if has_xray or has_singbox then - o = s:option(ListValue, "geoip_url", translate("GeoIP Update URL")) - o:value("https://github.com/Loyalsoldier/geoip/releases/latest/download/geoip.dat", translate("Loyalsoldier/geoip")) - o:value("https://github.com/MetaCubeX/meta-rules-dat/releases/latest/download/geoip.dat", translate("MetaCubeX/geoip")) - o:value("https://cdn.jsdelivr.net/gh/Loyalsoldier/geoip@release/geoip.dat", translate("Loyalsoldier/geoip (CDN)")) - o:value("https://cdn.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/geoip.dat", translate("MetaCubeX/geoip (CDN)")) - o.default = o.keylist[1] - - o = s:option(ListValue, "geosite_url", translate("Geosite Update URL")) - o:value("https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geosite.dat", translate("Loyalsoldier/geosite")) - o:value("https://github.com/MetaCubeX/meta-rules-dat/releases/latest/download/geosite.dat", translate("MetaCubeX/geosite")) - o:value("https://cdn.jsdelivr.net/gh/Loyalsoldier/v2ray-rules-dat@release/geosite.dat", translate("Loyalsoldier/geosite (CDN)")) - o:value("https://cdn.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/geosite.dat", translate("MetaCubeX/geosite (CDN)")) - o.default = o.keylist[1] - - o = s:option(Value, "v2ray_location_asset", translate("Location of Geo rule files"), translate("This variable specifies a directory where geoip.dat and geosite.dat files are.")) - o.default = "/usr/share/v2ray/" - o.placeholder = "/usr/share/v2ray/" - o.rmempty = false - - if api.is_finded("geoview") then - o = s:option(Flag, "geo2rule", translate("Generate Rule List from Geo")) - o.default = 0 - o.rmempty = false - o.description = translate("Generate rule lists such as GFW, China domains, and China IP ranges based on Geo files.") .. "
" .. - translate("When manually updating with this option enabled, rules will be regenerated from existing Geo files even if no new version is available.") .. "" - - o = s:option(Flag, "enable_geoview", translate("Enable Geo Data Parsing")) - o.default = 0 - o.rmempty = false - o.description = "
    " - .. "
  • " .. translate("Experimental feature.") .. "
  • " - .. "
  • " .. "1." .. translate("Analyzes and preloads GeoIP/Geosite data to enhance the shunt performance of Sing-box/Xray.") .. "
  • " - .. "
  • " .. "2." .. translate("Once enabled, the rule list can support GeoIP/Geosite rules.") .. "
  • " - .. "
  • " .. translate("Note: Increases resource usage; Geosite analysis is only supported in ChinaDNS-NG and SmartDNS modes.") .. "
  • " - .. "
" - function o.write(self, section, value) - local old = m:get(section, self.option) or "0" - if old ~= value then - m:set("@global[0]", "flush_set", "1") - end - return Flag.write(self, section, value) - end - end -end - ----- Auto Update -o = s:option(Flag, "auto_update", translate("Enable auto update rules")) -o.default = 0 -o.rmempty = false - ----- Week Update -o = s:option(ListValue, "week_update", translate("Update Mode")) -o:value(8, translate("Loop Mode")) -o:value(7, translate("Every day")) -o:value(1, translate("Every Monday")) -o:value(2, translate("Every Tuesday")) -o:value(3, translate("Every Wednesday")) -o:value(4, translate("Every Thursday")) -o:value(5, translate("Every Friday")) -o:value(6, translate("Every Saturday")) -o:value(0, translate("Every Sunday")) -o.default = 7 -o:depends("auto_update", true) -o.rmempty = true - ----- Time Update -o = s:option(ListValue, "time_update", translate("Update Time(every day)")) -for t = 0, 23 do o:value(t, t .. ":00") end -o.default = 0 -o:depends("week_update", "0") -o:depends("week_update", "1") -o:depends("week_update", "2") -o:depends("week_update", "3") -o:depends("week_update", "4") -o:depends("week_update", "5") -o:depends("week_update", "6") -o:depends("week_update", "7") -o.rmempty = true - ----- Interval Update -o = s:option(ListValue, "interval_update", translate("Update Interval(hour)")) -for t = 1, 24 do o:value(t, t .. " " .. translate("hour")) end -o.default = 2 -o:depends("week_update", "8") -o.rmempty = true - ----- 更新选项,始终被js隐藏 -local flags = { - "gfwlist_update", "chnroute_update", "chnroute6_update", - "chnlist_update", "geoip_update", "geosite_update" -} -for _, f in ipairs(flags) do - o = s:option(Flag, f) - o.rmempty = false -end - -s:append(Template(appname .. "/rule/rule_version")) - -if has_xray or has_singbox then - s = m:section(TypedSection, "shunt_rules", "Sing-Box/Xray " .. translate("Shunt Rule"), "" .. translate("Please note attention to the priority, the higher the order, the higher the priority.") .. "") - s.template = "cbi/tblsection" - s.anonymous = false - s.addremove = true - s.sortable = true - s.extedit = api.url("shunt_rules", "%s") - function s.create(e, t) - TypedSection.create(e, t) - luci.http.redirect(e.extedit:format(t)) - end - function s.remove(e, t) - m.uci:foreach(appname, "nodes", function(s) - if s["protocol"] and s["protocol"] == "_shunt" then - m:del(s[".name"], t) - end - end) - TypedSection.remove(e, t) - end - - o = s:option(DummyValue, "remarks", translate("Remarks")) -end - -return m diff --git a/small/luci-app-passwall/luasrc/model/cbi/passwall/client/rule_list.lua b/small/luci-app-passwall/luasrc/model/cbi/passwall/client/rule_list.lua deleted file mode 100644 index 27f902c35a..0000000000 --- a/small/luci-app-passwall/luasrc/model/cbi/passwall/client/rule_list.lua +++ /dev/null @@ -1,346 +0,0 @@ -local api = require "luci.passwall.api" -local appname = "passwall" -local fs = api.fs -local sys = api.sys -local uci = api.uci -local datatypes = api.datatypes -local path = string.format("/usr/share/%s/rules/", appname) -local gfwlist_path = "/usr/share/passwall/rules/gfwlist" -local chnlist_path = "/usr/share/passwall/rules/chnlist" -local chnroute_path = "/usr/share/passwall/rules/chnroute" - -m = Map(appname) -api.set_apply_on_parse(m) - -function clean_text(text) - local nbsp = string.char(0xC2, 0xA0) -- 不间断空格(U+00A0) - local fullwidth_space = string.char(0xE3, 0x80, 0x80) -- 全角空格(U+3000) - return text - :gsub("\t", " ") - :gsub(nbsp, " ") - :gsub(fullwidth_space, " ") - :gsub("^%s+", "") - :gsub("%s+$", "\n") - :gsub("\r\n", "\n") - :gsub("[ \t]*\n[ \t]*", "\n") -end - --- [[ Rule List Settings ]]-- -s = m:section(TypedSection, "global_rules") -s.anonymous = true - -s:tab("direct_list", translate("Direct List")) -s:tab("proxy_list", translate("Proxy List")) -s:tab("block_list", translate("Block List")) -s:tab("lan_ip_list", translate("Lan IP List")) -s:tab("route_hosts", translate("Route Hosts")) - ----- Direct Hosts -local direct_host = path .. "direct_host" -o = s:taboption("direct_list", TextValue, "direct_host", "", "" .. translate("Join the direct hosts list of domain names will not proxy.") .. "") -o.rows = 15 -o.wrap = "off" -o.cfgvalue = function(self, section) - return fs.readfile(direct_host) or "" -end -o.write = function(self, section, value) - fs.writefile(direct_host, value:gsub("\r\n", "\n")) - sys.call("rm -rf /tmp/etc/passwall_tmp/dns_*") -end -o.remove = function(self, section, value) - fs.writefile(direct_host, "") - sys.call("rm -rf /tmp/etc/passwall_tmp/dns_*") -end -o.validate = function(self, value) - local hosts= {} - value = clean_text(value) - string.gsub(value, '[^' .. "\r\n" .. ']+', function(w) table.insert(hosts, w) end) - for index, host in ipairs(hosts) do - if host:sub(1, 1) == "#" or host:sub(1, 8) == "geosite:" then - return value - end - if not datatypes.hostname(host) then - return nil, host .. " " .. translate("Not valid domain name, please re-enter!") - end - end - return value -end - ----- Direct IP -local direct_ip = path .. "direct_ip" -o = s:taboption("direct_list", TextValue, "direct_ip", "", "" .. translate("These had been joined ip addresses will not proxy. Please input the ip address or ip address segment,every line can input only one ip address. For example: 192.168.0.0/24 or 223.5.5.5.") .. "") -o.rows = 15 -o.wrap = "off" -o.cfgvalue = function(self, section) - return fs.readfile(direct_ip) or "" -end -o.write = function(self, section, value) - fs.writefile(direct_ip, value:gsub("\r\n", "\n")) -end -o.remove = function(self, section, value) - fs.writefile(direct_ip, "") -end -o.validate = function(self, value) - local ipmasks= {} - value = clean_text(value) - string.gsub(value, '[^' .. "\r\n" .. ']+', function(w) table.insert(ipmasks, w) end) - for index, ipmask in ipairs(ipmasks) do - if ipmask:sub(1, 1) == "#" or ipmask:sub(1, 6) == "geoip:" then - return value - end - if not ( datatypes.ipmask4(ipmask) or datatypes.ipmask6(ipmask) ) then - return nil, ipmask .. " " .. translate("Not valid IP format, please re-enter!") - end - end - return value -end - ----- Proxy Hosts -local proxy_host = path .. "proxy_host" -o = s:taboption("proxy_list", TextValue, "proxy_host", "", "" .. translate("These had been joined websites will use proxy. Please input the domain names of websites, every line can input only one website domain. For example: google.com.") .. "") -o.rows = 15 -o.wrap = "off" -o.cfgvalue = function(self, section) - return fs.readfile(proxy_host) or "" -end -o.write = function(self, section, value) - fs.writefile(proxy_host, value:gsub("\r\n", "\n")) - sys.call("rm -rf /tmp/etc/passwall_tmp/dns_*") -end -o.remove = function(self, section, value) - fs.writefile(proxy_host, "") - sys.call("rm -rf /tmp/etc/passwall_tmp/dns_*") -end -o.validate = function(self, value) - local hosts= {} - value = clean_text(value) - string.gsub(value, '[^' .. "\r\n" .. ']+', function(w) table.insert(hosts, w) end) - for index, host in ipairs(hosts) do - if host:sub(1, 1) == "#" or host:sub(1, 8) == "geosite:" then - return value - end - if not datatypes.hostname(host) then - return nil, host .. " " .. translate("Not valid domain name, please re-enter!") - end - end - return value -end - ----- Proxy IP -local proxy_ip = path .. "proxy_ip" -o = s:taboption("proxy_list", TextValue, "proxy_ip", "", "" .. translate("These had been joined ip addresses will use proxy. Please input the ip address or ip address segment, every line can input only one ip address. For example: 35.24.0.0/24 or 8.8.4.4.") .. "") -o.rows = 15 -o.wrap = "off" -o.cfgvalue = function(self, section) - return fs.readfile(proxy_ip) or "" -end -o.write = function(self, section, value) - fs.writefile(proxy_ip, value:gsub("\r\n", "\n")) -end -o.remove = function(self, section, value) - fs.writefile(proxy_ip, "") -end -o.validate = function(self, value) - local ipmasks= {} - value = clean_text(value) - string.gsub(value, '[^' .. "\r\n" .. ']+', function(w) table.insert(ipmasks, w) end) - for index, ipmask in ipairs(ipmasks) do - if ipmask:sub(1, 1) == "#" or ipmask:sub(1, 6) == "geoip:" then - return value - end - if not ( datatypes.ipmask4(ipmask) or datatypes.ipmask6(ipmask) ) then - return nil, ipmask .. " " .. translate("Not valid IP format, please re-enter!") - end - end - return value -end - ----- Block Hosts -local block_host = path .. "block_host" -o = s:taboption("block_list", TextValue, "block_host", "", "" .. translate("These had been joined websites will be block. Please input the domain names of websites, every line can input only one website domain. For example: twitter.com.") .. "") -o.rows = 15 -o.wrap = "off" -o.cfgvalue = function(self, section) - return fs.readfile(block_host) or "" -end -o.write = function(self, section, value) - fs.writefile(block_host, value:gsub("\r\n", "\n")) -end -o.remove = function(self, section, value) - fs.writefile(block_host, "") -end -o.validate = function(self, value) - local hosts= {} - value = clean_text(value) - string.gsub(value, '[^' .. "\r\n" .. ']+', function(w) table.insert(hosts, w) end) - for index, host in ipairs(hosts) do - if host:sub(1, 1) == "#" or host:sub(1, 8) == "geosite:" then - return value - end - if not datatypes.hostname(host) then - return nil, host .. " " .. translate("Not valid domain name, please re-enter!") - end - end - return value -end - ----- Block IP -local block_ip = path .. "block_ip" -o = s:taboption("block_list", TextValue, "block_ip", "", "" .. translate("These had been joined ip addresses will be block. Please input the ip address or ip address segment, every line can input only one ip address.") .. "") -o.rows = 15 -o.wrap = "off" -o.cfgvalue = function(self, section) - return fs.readfile(block_ip) or "" -end -o.write = function(self, section, value) - fs.writefile(block_ip, value:gsub("\r\n", "\n")) -end -o.remove = function(self, section, value) - fs.writefile(block_ip, "") -end -o.validate = function(self, value) - local ipmasks= {} - value = clean_text(value) - string.gsub(value, '[^' .. "\r\n" .. ']+', function(w) table.insert(ipmasks, w) end) - for index, ipmask in ipairs(ipmasks) do - if ipmask:sub(1, 1) == "#" or ipmask:sub(1, 6) == "geoip:" then - return value - end - if not ( datatypes.ipmask4(ipmask) or datatypes.ipmask6(ipmask) ) then - return nil, ipmask .. " " .. translate("Not valid IP format, please re-enter!") - end - end - return value -end - ----- Lan IPv4 -local lanlist_ipv4 = path .. "lanlist_ipv4" -o = s:taboption("lan_ip_list", TextValue, "lanlist_ipv4", "", "" .. translate("The list is the IPv4 LAN IP list, which represents the direct connection IP of the LAN. If you need the LAN IP in the proxy list, please clear it from the list. Do not modify this list by default.") .. "") -o.rows = 15 -o.wrap = "off" -o.cfgvalue = function(self, section) - return fs.readfile(lanlist_ipv4) or "" -end -o.write = function(self, section, value) - fs.writefile(lanlist_ipv4, value:gsub("\r\n", "\n")) -end -o.remove = function(self, section, value) - fs.writefile(lanlist_ipv4, "") -end -o.validate = function(self, value) - local ipmasks= {} - value = clean_text(value) - string.gsub(value, '[^' .. "\r\n" .. ']+', function(w) table.insert(ipmasks, w) end) - for index, ipmask in ipairs(ipmasks) do - if ipmask:sub(1, 1) == "#" then - return value - end - if not datatypes.ipmask4(ipmask) then - return nil, ipmask .. " " .. translate("Not valid IPv4 format, please re-enter!") - end - end - return value -end - ----- Lan IPv6 -local lanlist_ipv6 = path .. "lanlist_ipv6" -o = s:taboption("lan_ip_list", TextValue, "lanlist_ipv6", "", "" .. translate("The list is the IPv6 LAN IP list, which represents the direct connection IP of the LAN. If you need the LAN IP in the proxy list, please clear it from the list. Do not modify this list by default.") .. "") -o.rows = 15 -o.wrap = "off" -o.cfgvalue = function(self, section) - return fs.readfile(lanlist_ipv6) or "" -end -o.write = function(self, section, value) - fs.writefile(lanlist_ipv6, value:gsub("\r\n", "\n")) -end -o.remove = function(self, section, value) - fs.writefile(lanlist_ipv6, "") -end -o.validate = function(self, value) - local ipmasks= {} - value = clean_text(value) - string.gsub(value, '[^' .. "\r\n" .. ']+', function(w) table.insert(ipmasks, w) end) - for index, ipmask in ipairs(ipmasks) do - if ipmask:sub(1, 1) == "#" then - return value - end - if not datatypes.ipmask6(ipmask) then - return nil, ipmask .. " " .. translate("Not valid IPv6 format, please re-enter!") - end - end - return value -end - ----- Route Hosts -local hosts = "/etc/hosts" -o = s:taboption("route_hosts", TextValue, "hosts", "", "" .. translate("Configure routing etc/hosts file, if you don't know what you are doing, please don't change the content.") .. "") -o.rows = 15 -o.wrap = "off" -o.cfgvalue = function(self, section) - return fs.readfile(hosts) or "" -end -o.write = function(self, section, value) - fs.writefile(hosts, clean_text(value)) -end -o.remove = function(self, section, value) - fs.writefile(hosts, "") -end - -if fs.access(gfwlist_path) then - s:tab("gfw_list", translate("GFW List")) - o = s:taboption("gfw_list", DummyValue, "_gfw_fieldset") - o.rawhtml = true - o.default = string.format([[ -
- - -
- - ]], translate("Read List")) -end - -if fs.access(chnlist_path) then - s:tab("chn_list", translate("China List") .. "(" .. translate("Domain") .. ")") - o = s:taboption("chn_list", DummyValue, "_chn_fieldset") - o.rawhtml = true - o.default = string.format([[ -
- - -
- - ]], translate("Read List")) -end - -if fs.access(chnroute_path) then - s:tab("chnroute_list", translate("China List") .. "(IP)") - o = s:taboption("chnroute_list", DummyValue, "_chnroute_fieldset") - o.rawhtml = true - o.default = string.format([[ -
- - -
- - ]], translate("Read List")) -end - -m:append(Template(appname .. "/rule_list/js")) - -local geo_dir = (uci:get(appname, "@global_rules[0]", "v2ray_location_asset") or "/usr/share/v2ray/"):match("^(.*)/") -local geosite_path = geo_dir .. "/geosite.dat" -local geoip_path = geo_dir .. "/geoip.dat" -if api.finded_com("geoview") and fs.access(geosite_path) and fs.access(geoip_path) then - if api.compare_versions(api.get_app_version("geoview"), ">=", "0.1.0") then - s:tab("geoview", translate("Geo View")) - o = s:taboption("geoview", DummyValue, "_geoview_fieldset") - o.rawhtml = true - o.template = appname .. "/rule_list/geoview" - end -end - -m.on_before_save = function(self) - m:set("@global[0]", "flush_set", "1") -end - -return m diff --git a/small/luci-app-passwall/luasrc/model/cbi/passwall/client/shunt_rules.lua b/small/luci-app-passwall/luasrc/model/cbi/passwall/client/shunt_rules.lua deleted file mode 100644 index 764e0020a3..0000000000 --- a/small/luci-app-passwall/luasrc/model/cbi/passwall/client/shunt_rules.lua +++ /dev/null @@ -1,209 +0,0 @@ -local api = require "luci.passwall.api" -local appname = "passwall" -local datatypes = api.datatypes - -m = Map(appname, "Sing-Box/Xray " .. translate("Shunt Rule")) -m.redirect = api.url("rule") -api.set_apply_on_parse(m) - -if not arg[1] or not m:get(arg[1]) then - luci.http.redirect(m.redirect) -end - -m.on_before_save = function(self) - m:set("@global[0]", "flush_set", "1") -end - --- Add inline CSS to map description -m.description = (m.description or "") .. "\n" .. [[ - -]] - -function clean_text(text) - local nbsp = string.char(0xC2, 0xA0) -- 不间断空格(U+00A0) - local fullwidth_space = string.char(0xE3, 0x80, 0x80) -- 全角空格(U+3000) - return text - :gsub("\t", " ") - :gsub(nbsp, " ") - :gsub(fullwidth_space, " ") - :gsub("^%s+", "") - :gsub("%s+$", "\n") - :gsub("\r\n", "\n") - :gsub("[ \t]*\n[ \t]*", "\n") -end - -s = m:section(NamedSection, arg[1], "shunt_rules", "") -s.addremove = false -s.dynamic = false - -remarks = s:option(Value, "remarks", translate("Remarks")) -remarks.default = arg[1] -remarks.rmempty = false - -protocol = s:option(MultiValue, "protocol", translate("Protocol")) -protocol:value("http") -protocol:value("tls") -protocol:value("bittorrent") -protocol.widget = "checkbox" -protocol.default = nil - -o = s:option(MultiValue, "inbound", translate("Inbound Tag")) -o:value("tproxy", translate("Transparent proxy")) -o:value("socks", "Socks") -o.widget = "checkbox" -o.default = nil - -network = s:option(ListValue, "network", translate("Network")) -network:value("tcp,udp", "TCP UDP") -network:value("tcp", "TCP") -network:value("udp", "UDP") - -source = s:option(DynamicList, "source", translate("Source")) -source.description = "
  • " .. translate("Example:") -.. "
  • " .. translate("IP") .. ": 192.168.1.100" -.. "
  • " .. translate("IP CIDR") .. ": 192.168.1.0/24" -.. "
  • " .. translate("GeoIP") .. ": geoip:private" -.. "
" -source.cast = "string" -source.cfgvalue = function(self, section) - local value - if self.tag_error[section] then - value = self:formvalue(section) - else - value = self.map:get(section, self.option) - if type(value) == "string" then - local value2 = {} - string.gsub(value, '[^' .. " " .. ']+', function(w) table.insert(value2, w) end) - value = value2 - end - end - return value -end -source.validate = function(self, value, t) - local err = {} - for _, v in ipairs(value) do - local flag = false - if datatypes.ip4addr(v) then - flag = true - end - - if flag == false and v:find("geoip:") and v:find("geoip:") == 1 then - flag = true - end - - if flag == false then - err[#err + 1] = v - end - end - - if #err > 0 then - self:add_error(t, "invalid", translate("Not true format, please re-enter!")) - for _, v in ipairs(err) do - self:add_error(t, "invalid", v) - end - end - - return value -end - -local dynamicList_write = function(self, section, value) - local t = {} - local t2 = {} - if type(value) == "table" then - local x - for _, x in ipairs(value) do - if x and #x > 0 then - if not t2[x] then - t2[x] = x - t[#t+1] = x - end - end - end - else - t = { value } - end - t = table.concat(t, " ") - return DynamicList.write(self, section, t) -end - -source.write = dynamicList_write - -sourcePort = s:option(Value, "sourcePort", translate("Source port")) - -port = s:option(Value, "port", translate("port")) - -domain_list = s:option(TextValue, "domain_list", translate("Domain")) -domain_list.rows = 10 -domain_list.wrap = "off" -domain_list.validate = function(self, value) - local hosts= {} - value = clean_text(value) - string.gsub(value, "[^\r\n]+", function(w) table.insert(hosts, w) end) - for index, host in ipairs(hosts) do - local flag = 1 - local tmp_host = host - if not host:find("#") and host:find("%s") then - elseif host:find("regexp:") and host:find("regexp:") == 1 then - flag = 0 - elseif host:find("domain:.") and host:find("domain:.") == 1 then - tmp_host = host:gsub("domain:", "") - elseif host:find("full:.") and host:find("full:.") == 1 then - tmp_host = host:gsub("full:", "") - elseif host:find("geosite:") and host:find("geosite:") == 1 then - flag = 0 - elseif host:find("ext:") and host:find("ext:") == 1 then - flag = 0 - elseif host:find("#") and host:find("#") == 1 then - flag = 0 - end - if flag == 1 then - if not datatypes.hostname(tmp_host) then - return nil, tmp_host .. " " .. translate("Not valid domain name, please re-enter!") - end - end - end - return value -end -domain_list.description = "
  • " .. translate("Plaintext: If this string matches any part of the targeting domain, this rule takes effet. Example: rule 'sina.com' matches targeting domain 'sina.com', 'sina.com.cn' and 'www.sina.com', but not 'sina.cn'.") -.. "
  • " .. translate("Regular expression: Begining with 'regexp:', the rest is a regular expression. When the regexp matches targeting domain, this rule takes effect. Example: rule 'regexp:\\.goo.*\\.com$' matches 'www.google.com' and 'fonts.googleapis.com', but not 'google.com'.") -.. "
  • " .. translate("Subdomain (recommended): Begining with 'domain:' and the rest is a domain. When the targeting domain is exactly the value, or is a subdomain of the value, this rule takes effect. Example: rule 'domain:v2ray.com' matches 'www.v2ray.com', 'v2ray.com', but not 'xv2ray.com'.") -.. "
  • " .. translate("Full domain: Begining with 'full:' and the rest is a domain. When the targeting domain is exactly the value, the rule takes effect. Example: rule 'domain:v2ray.com' matches 'v2ray.com', but not 'www.v2ray.com'.") -.. "
  • " .. translate("Pre-defined domain list: Begining with 'geosite:' and the rest is a name, such as geosite:google or geosite:cn.") -.. "
  • " .. translate("Annotation: Begining with #") -.. "
" -ip_list = s:option(TextValue, "ip_list", "IP") -ip_list.rows = 10 -ip_list.wrap = "off" -ip_list.validate = function(self, value) - local ipmasks= {} - value = clean_text(value) - string.gsub(value, "[^\r\n]+", function(w) table.insert(ipmasks, w) end) - for index, ipmask in ipairs(ipmasks) do - if ipmask:find("geoip:") and ipmask:find("geoip:") == 1 and not ipmask:find("%s") then - elseif ipmask:find("ext:") and ipmask:find("ext:") == 1 and not ipmask:find("%s") then - elseif ipmask:find("#") and ipmask:find("#") == 1 then - else - if not (datatypes.ipmask4(ipmask) or datatypes.ipmask6(ipmask)) then - return nil, ipmask .. " " .. translate("Not valid IP format, please re-enter!") - end - end - end - return value -end -ip_list.description = "
  • " .. translate("IP: such as '127.0.0.1'.") -.. "
  • " .. translate("CIDR: such as '127.0.0.0/8'.") -.. "
  • " .. translate("GeoIP: such as 'geoip:cn'. It begins with geoip: (lower case) and followed by two letter of country code.") -.. "
  • " .. translate("Annotation: Begining with #") -.. "
" - -return m diff --git a/small/luci-app-passwall/luasrc/model/cbi/passwall/client/socks_config.lua b/small/luci-app-passwall/luasrc/model/cbi/passwall/client/socks_config.lua deleted file mode 100644 index 51df209086..0000000000 --- a/small/luci-app-passwall/luasrc/model/cbi/passwall/client/socks_config.lua +++ /dev/null @@ -1,152 +0,0 @@ -local api = require "luci.passwall.api" -local appname = "passwall" - -m = Map(appname) -m.redirect = api.url() -api.set_apply_on_parse(m) - -if not arg[1] or not m:get(arg[1]) then - luci.http.redirect(m.redirect) -end - -m:append(Template(appname .. "/cbi/nodes_multivalue_com")) -m:append(Template(appname .. "/cbi/nodes_listvalue_com")) - -local has_singbox = api.finded_com("sing-box") -local has_xray = api.finded_com("xray") - -local nodes_table = {} -for k, e in ipairs(api.get_valid_nodes()) do - nodes_table[#nodes_table + 1] = e -end - -s = m:section(NamedSection, arg[1], translate("Socks Config"), translate("Socks Config")) -s.addremove = false -s.dynamic = false - ----- Enable -o = s:option(Flag, "enabled", translate("Enable")) -o.default = 1 -o.rmempty = false - -local auto_switch_tip -local current_node = api.get_cache_var("socks_" .. arg[1]) -if current_node then - local n = m:get(current_node) - if n then - if tonumber(m:get(arg[1], "enable_autoswitch") or 0) == 1 then - if n then - local remarks = api.get_node_remarks(n) - local url = api.url("node_config", n[".name"]) - auto_switch_tip = translatef("Current node: %s", string.format('%s', url, remarks)) .. "
" - end - end - end -end - -socks_node = s:option(ListValue, "node", translate("Node")) -if auto_switch_tip then - socks_node.description = auto_switch_tip -end -socks_node.template = appname .. "/cbi/nodes_listvalue" -socks_node.group = {} - -o = s:option(Flag, "bind_local", translate("Bind Local"), translate("When selected, it can only be accessed localhost.")) -o.default = "0" - -local n = 1 -m.uci:foreach(appname, "socks", function(s) - if s[".name"] == section then - return false - end - n = n + 1 -end) - -o = s:option(Value, "port", "Socks " .. translate("Listen Port")) -o.default = n + 1080 -o.datatype = "port" -o.rmempty = false - -if has_singbox or has_xray then - o = s:option(Value, "http_port", "HTTP " .. translate("Listen Port") .. " " .. translate("0 is not use")) - o.default = 0 - o.datatype = "port" -end - -o = s:option(Flag, "log", translate("Enable") .. " " .. translate("Log")) -o.default = 1 -o.rmempty = false - -o = s:option(Flag, "enable_autoswitch", translate("Auto Switch")) -o.default = 0 -o.rmempty = false - -o = s:option(Value, "autoswitch_testing_time", translate("How often to test"), translate("Units:seconds")) -o.datatype = "min(10)" -o.default = 30 -o:depends("enable_autoswitch", true) - -o = s:option(Value, "autoswitch_connect_timeout", translate("Timeout seconds"), translate("Units:seconds")) -o.datatype = "min(1)" -o.default = 3 -o:depends("enable_autoswitch", true) - -o = s:option(Value, "autoswitch_retry_num", translate("Timeout retry num")) -o.datatype = "min(1)" -o.default = 1 -o:depends("enable_autoswitch", true) - -o = s:option(MultiValue, "autoswitch_backup_node", translate("List of backup nodes")) -o:depends("enable_autoswitch", true) -o.widget = "checkbox" -o.template = appname .. "/cbi/nodes_multivalue" -o.group = {} -for i, v in pairs(nodes_table) do - o:value(v.id, v.remark) - o.group[#o.group+1] = v.group or "" - socks_node:value(v.id, v["remark"]) - socks_node.group[#socks_node.group+1] = (v.group and v.group ~= "") and v.group or translate("default") -end --- 读取旧 DynamicList -function o.cfgvalue(self, section) - return m.uci:get_list(appname, section, "autoswitch_backup_node") or {} -end --- 写入保持 DynamicList -function o.write(self, section, value) - local old = m.uci:get_list(appname, section, "autoswitch_backup_node") or {} - local new, set = {}, {} - for v in value:gmatch("%S+") do - new[#new + 1] = v - set[v] = 1 - end - for _, v in ipairs(old) do - if not set[v] then - m.uci:set_list(appname, section, "autoswitch_backup_node", new) - return - end - set[v] = nil - end - for _ in pairs(set) do - m.uci:set_list(appname, section, "autoswitch_backup_node", new) - return - end -end - -o = s:option(Flag, "autoswitch_restore_switch", translate("Restore Switch"), translate("When detects main node is available, switch back to the main node.")) -o:depends("enable_autoswitch", true) - -o = s:option(Value, "autoswitch_probe_url", translate("Probe URL"), translate("The URL used to detect the connection status.")) -o:value("https://cp.cloudflare.com/", "Cloudflare") -o:value("https://www.gstatic.com/generate_204", "Gstatic") -o:value("https://www.google.com/generate_204", "Google") -o:value("https://www.youtube.com/generate_204", "YouTube") -o:value("https://connect.rom.miui.com/generate_204", "MIUI (CN)") -o:value("https://connectivitycheck.platform.hicloud.com/generate_204", "HiCloud (CN)") -o.default = o.keylist[3] -o:depends("enable_autoswitch", true) - -o = s:option(DummyValue, "btn") -o.template = appname .. "/socks_auto_switch/btn" -o:depends("enable_autoswitch", true) - -return m diff --git a/small/luci-app-passwall/luasrc/model/cbi/passwall/client/type/hysteria2.lua b/small/luci-app-passwall/luasrc/model/cbi/passwall/client/type/hysteria2.lua deleted file mode 100644 index bdda6e549a..0000000000 --- a/small/luci-app-passwall/luasrc/model/cbi/passwall/client/type/hysteria2.lua +++ /dev/null @@ -1,80 +0,0 @@ -local m, s = ... - -local api = require "luci.passwall.api" - -if not api.finded_com("hysteria") then - return -end - -local type_name = "Hysteria2" - -local option_prefix = "hysteria2_" - -local function _n(name) - return option_prefix .. name -end - --- [[ Hysteria2 ]] - -s.fields["type"]:value(type_name, "Hysteria2") - -o = s:option(ListValue, _n("protocol"), translate("Protocol")) -o:value("udp", "UDP") - -o = s:option(Value, _n("address"), translate("Address (Support Domain Name)")) - -o = s:option(Value, _n("port"), translate("Port")) -o.datatype = "port" - -o = s:option(Value, _n("hop"), translate("Port hopping range")) -o.description = translate("Format as 1000:2000 or 1000-2000 Multiple groups are separated by commas (,).") -o.rewrite_option = o.option - -o = s:option(Value, _n("hop_interval"), translate("Hop Interval"), translate("Example:") .. "30s (≥5s)") -o.placeholder = "30s" -o.default = "30s" -o.rewrite_option = o.option - -o = s:option(Value, _n("obfs"), translate("Obfs Password")) -o.rewrite_option = o.option - -o = s:option(Value, _n("auth_password"), translate("Auth Password")) -o.password = true -o.rewrite_option = o.option - -o = s:option(Flag, _n("fast_open"), translate("Fast Open")) -o.default = "0" - -o = s:option(Value, _n("tls_serverName"), translate("Domain")) - -o = s:option(Flag, _n("tls_allowInsecure"), translate("allowInsecure"), translate("Whether unsafe connections are allowed. When checked, Certificate validation will be skipped.")) -o.default = "0" - -o = s:option(Value, _n("tls_pinSHA256"), translate("PinSHA256"),translate("Certificate fingerprint")) -o.rewrite_option = o.option - -o = s:option(Value, _n("up_mbps"), translate("Max upload Mbps")) -o.rewrite_option = o.option - -o = s:option(Value, _n("down_mbps"), translate("Max download Mbps")) -o.rewrite_option = o.option - -o = s:option(Value, _n("recv_window"), translate("QUIC stream receive window")) -o.rewrite_option = o.option - -o = s:option(Value, _n("recv_window_conn"), translate("QUIC connection receive window")) -o.rewrite_option = o.option - - -o = s:option(Value, _n("idle_timeout"), translate("Idle Timeout"), translate("Example:") .. "30s (4s-120s)") -o.rewrite_option = o.option - -o = s:option(Flag, _n("disable_mtu_discovery"), translate("Disable MTU detection")) -o.default = "0" -o.rewrite_option = o.option - -o = s:option(Flag, _n("lazy_start"), translate("Lazy Start")) -o.default = "0" -o.rewrite_option = o.option - -api.luci_types(arg[1], m, s, type_name, option_prefix) diff --git a/small/luci-app-passwall/luasrc/model/cbi/passwall/client/type/naive.lua b/small/luci-app-passwall/luasrc/model/cbi/passwall/client/type/naive.lua deleted file mode 100644 index 1683b4fe3f..0000000000 --- a/small/luci-app-passwall/luasrc/model/cbi/passwall/client/type/naive.lua +++ /dev/null @@ -1,35 +0,0 @@ -local m, s = ... - -local api = require "luci.passwall.api" - -if not api.is_finded("naive") then - return -end - -local type_name = "Naiveproxy" - -local option_prefix = "naive_" - -local function _n(name) - return option_prefix .. name -end - --- [[ Naive ]] - -s.fields["type"]:value(type_name, translate("NaiveProxy")) - -o = s:option(ListValue, _n("protocol"), translate("Protocol")) -o:value("https", translate("HTTPS")) -o:value("quic", translate("QUIC")) - -o = s:option(Value, _n("address"), translate("Address (Support Domain Name)")) - -o = s:option(Value, _n("port"), translate("Port")) -o.datatype = "port" - -o = s:option(Value, _n("username"), translate("Username")) - -o = s:option(Value, _n("password"), translate("Password")) -o.password = true - -api.luci_types(arg[1], m, s, type_name, option_prefix) diff --git a/small/luci-app-passwall/luasrc/model/cbi/passwall/client/type/ray.lua b/small/luci-app-passwall/luasrc/model/cbi/passwall/client/type/ray.lua deleted file mode 100644 index 77bf64a6b8..0000000000 --- a/small/luci-app-passwall/luasrc/model/cbi/passwall/client/type/ray.lua +++ /dev/null @@ -1,829 +0,0 @@ -local m, s = ... - -local api = require "luci.passwall.api" - -if not api.finded_com("xray") then - return -end - -local appname = "passwall" -local jsonc = api.jsonc - -local type_name = "Xray" - -local option_prefix = "xray_" - -local function _n(name) - return option_prefix .. name -end - -local ss_method_list = { - "none", "plain", "aes-128-gcm", "aes-256-gcm", "chacha20-poly1305", "chacha20-ietf-poly1305", "xchacha20-poly1305", "xchacha20-ietf-poly1305", "2022-blake3-aes-128-gcm", "2022-blake3-aes-256-gcm", "2022-blake3-chacha20-poly1305" -} - -local security_list = { "none", "auto", "aes-128-gcm", "chacha20-poly1305", "zero" } - -local header_type_list = { - "none", "srtp", "utp", "wechat-video", "dtls", "wireguard", "dns" -} - -local xray_version = api.get_app_version("xray") --- [[ Xray ]] - -s.fields["type"]:value(type_name, "Xray") - -o = s:option(ListValue, _n("protocol"), translate("Protocol")) -o:value("vmess", translate("Vmess")) -o:value("vless", translate("VLESS")) -o:value("http", translate("HTTP")) -o:value("socks", translate("Socks")) -o:value("shadowsocks", translate("Shadowsocks")) -o:value("trojan", translate("Trojan")) -o:value("wireguard", translate("WireGuard")) -if api.compare_versions(xray_version, ">=", "26.1.13") then - o:value("hysteria2", translate("Hysteria2")) -end -if api.compare_versions(xray_version, ">=", "1.8.12") then - o:value("_balancing", translate("Balancing")) -end -o:value("_shunt", translate("Shunt")) -o:value("_iface", translate("Custom Interface")) - -o = s:option(Value, _n("iface"), translate("Interface")) -o.default = "eth1" -o:depends({ [_n("protocol")] = "_iface" }) - -local nodes_table = {} -local balancers_table = {} -local fallback_table = {} -local iface_table = {} -local is_balancer = nil -for k, e in ipairs(api.get_valid_nodes()) do - if e.node_type == "normal" then - nodes_table[#nodes_table + 1] = { - id = e[".name"], - remark = e["remark"], - type = e["type"], - address = e["address"], - chain_proxy = e["chain_proxy"], - group = e["group"] - } - end - if e.protocol == "_balancing" then - balancers_table[#balancers_table + 1] = { - id = e[".name"], - remark = e["remark"], - group = e["group"] - } - if e[".name"] ~= arg[1] then - fallback_table[#fallback_table + 1] = { - id = e[".name"], - remark = e["remark"], - fallback = e["fallback_node"], - group = e["group"] - } - else - is_balancer = true - end - end - if e.protocol == "_iface" then - iface_table[#iface_table + 1] = { - id = e[".name"], - remark = e["remark"], - group = e["group"] - } - end -end - -local socks_list = {} -m.uci:foreach(appname, "socks", function(s) - if s.enabled == "1" and s.node then - socks_list[#socks_list + 1] = { - id = "Socks_" .. s[".name"], - remark = translate("Socks Config") .. " " .. string.format("[%s %s]", s.port, translate("Port")), - group = "Socks" - } - end -end) - --- 负载均衡列表 -o = s:option(MultiValue, _n("balancing_node"), translate("Load balancing node list"), translate("Load balancing node list, document")) -o:depends({ [_n("protocol")] = "_balancing" }) -o.widget = "checkbox" -o.template = appname .. "/cbi/nodes_multivalue" -o.group = {} -for k, v in pairs(socks_list) do - o:value(v.id, v.remark) - o.group[#o.group+1] = v.group or "" -end -for i, v in pairs(nodes_table) do - o:value(v.id, v.remark) - o.group[#o.group+1] = v.group or "" -end --- 读取旧 DynamicList -function o.cfgvalue(self, section) - return m.uci:get_list(appname, section, "balancing_node") or {} -end --- 写入保持 DynamicList -function o.custom_write(self, section, value) - local old = m.uci:get_list(appname, section, "balancing_node") or {} - local new, set = {}, {} - for v in value:gmatch("%S+") do - new[#new + 1] = v - set[v] = 1 - end - for _, v in ipairs(old) do - if not set[v] then - m.uci:set_list(appname, section, "balancing_node", new) - return - end - set[v] = nil - end - for _ in pairs(set) do - m.uci:set_list(appname, section, "balancing_node", new) - return - end -end - -o = s:option(ListValue, _n("balancingStrategy"), translate("Balancing Strategy")) -o:depends({ [_n("protocol")] = "_balancing" }) -o:value("random") -o:value("roundRobin") -o:value("leastPing") -o:value("leastLoad") -o.default = "random" - --- Fallback Node -o = s:option(ListValue, _n("fallback_node"), translate("Fallback Node")) -o:value("", translate("Close(Not use)")) -o:depends({ [_n("protocol")] = "_balancing" }) -o.template = appname .. "/cbi/nodes_listvalue" -o.group = {""} -local function check_fallback_chain(fb) - for k, v in pairs(fallback_table) do - if v.fallback == fb then - fallback_table[k] = nil - check_fallback_chain(v.id) - end - end -end --- 检查fallback链,去掉会形成闭环的balancer节点 -if is_balancer then - check_fallback_chain(arg[1]) -end -for k, v in pairs(socks_list) do - o:value(v.id, v.remark) - o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") -end -for k, v in pairs(fallback_table) do - o:value(v.id, v.remark) - o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") -end -for k, v in pairs(nodes_table) do - o:value(v.id, v.remark) - o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") -end - --- 探测地址 -o = s:option(Flag, _n("useCustomProbeUrl"), translate("Use Custom Probe URL"), translate("By default the built-in probe URL will be used, enable this option to use a custom probe URL.")) -o:depends({ [_n("protocol")] = "_balancing" }) - -o = s:option(Value, _n("probeUrl"), translate("Probe URL")) -o:depends({ [_n("useCustomProbeUrl")] = true }) -o:value("https://cp.cloudflare.com/", "Cloudflare") -o:value("https://www.gstatic.com/generate_204", "Gstatic") -o:value("https://www.google.com/generate_204", "Google") -o:value("https://www.youtube.com/generate_204", "YouTube") -o:value("https://connect.rom.miui.com/generate_204", "MIUI (CN)") -o:value("https://connectivitycheck.platform.hicloud.com/generate_204", "HiCloud (CN)") -o.default = o.keylist[3] -o.description = translate("The URL used to detect the connection status.") - --- 探测间隔 -o = s:option(Value, _n("probeInterval"), translate("Probe Interval")) -o:depends({ [_n("protocol")] = "_balancing" }) -o.default = "1m" -o.placeholder = "1m" -o.description = translate("The interval between initiating probes.") .. "
" .. - translate("The time format is numbers + units, such as '10s', '2h45m', and the supported time units are s, m, h, which correspond to seconds, minutes, and hours, respectively.") .. "
" .. - translate("When the unit is not filled in, it defaults to seconds.") - -o = s:option(Value, _n("expected"), translate("Preferred Node Count")) -o:depends({ [_n("balancingStrategy")] = "leastLoad" }) -o.datatype = "uinteger" -o.default = "2" -o.placeholder = "2" -o.description = translate("The load balancer selects the optimal number of nodes, and traffic is randomly distributed among them.") - - --- [[ 分流模块 ]] -if #nodes_table > 0 then - o = s:option(Flag, _n("preproxy_enabled"), translate("Preproxy")) - o:depends({ [_n("protocol")] = "_shunt" }) - - o = s:option(ListValue, _n("main_node"), string.format('%s', translate("Preproxy Node")), translate("Set the node to be used as a pre-proxy. Each rule (including Default) has a separate switch that controls whether this rule uses the pre-proxy or not.")) - o:depends({ [_n("protocol")] = "_shunt", [_n("preproxy_enabled")] = true }) - o.template = appname .. "/cbi/nodes_listvalue" - o.group = {} - for k, v in pairs(socks_list) do - o:value(v.id, v.remark) - o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - end - for k, v in pairs(balancers_table) do - o:value(v.id, v.remark) - o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - end - for k, v in pairs(iface_table) do - o:value(v.id, v.remark) - o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - end - for k, v in pairs(nodes_table) do - o:value(v.id, v.remark) - o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - end -end -m.uci:foreach(appname, "shunt_rules", function(e) - if e[".name"] and e.remarks then - o = s:option(ListValue, _n(e[".name"]), string.format('* %s', api.url("shunt_rules", e[".name"]), e.remarks)) - o:value("", translate("Close")) - o:value("_default", translate("Default")) - o:value("_direct", translate("Direct Connection")) - o:value("_blackhole", translate("Blackhole")) - o:depends({ [_n("protocol")] = "_shunt" }) - o.template = appname .. "/cbi/nodes_listvalue" - o.group = {"","","",""} - - if #nodes_table > 0 then - for k, v in pairs(socks_list) do - o:value(v.id, v.remark) - o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - end - for k, v in pairs(balancers_table) do - o:value(v.id, v.remark) - o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - end - for k, v in pairs(iface_table) do - o:value(v.id, v.remark) - o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - end - local pt = s:option(ListValue, _n(e[".name"] .. "_proxy_tag"), string.format('* %s', e.remarks .. " " .. translate("Preproxy"))) - pt:value("", translate("Close")) - pt:value("main", translate("Preproxy Node")) - pt:depends("__hide__", "1") - for k, v in pairs(nodes_table) do - o:value(v.id, v.remark) - o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - if not api.is_local_ip(v.address) then --本地节点禁止使用前置 - pt:depends({ [_n("protocol")] = "_shunt", [_n("preproxy_enabled")] = true, [_n(e[".name"])] = v.id }) - end - end - end - end -end) - -o = s:option(DummyValue, _n("shunt_tips"), " ") -o.not_rewrite = true -o.rawhtml = true -o.cfgvalue = function(t, n) - return string.format('%s', translate("No shunt rules? Click me to go to add.")) -end -o:depends({ [_n("protocol")] = "_shunt" }) - -local o = s:option(ListValue, _n("default_node"), string.format('* %s', translate("Default"))) -o:depends({ [_n("protocol")] = "_shunt" }) -o:value("_direct", translate("Direct Connection")) -o:value("_blackhole", translate("Blackhole")) -o.template = appname .. "/cbi/nodes_listvalue" -o.group = {"",""} - -if #nodes_table > 0 then - for k, v in pairs(socks_list) do - o:value(v.id, v.remark) - o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - end - for k, v in pairs(balancers_table) do - o:value(v.id, v.remark) - o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - end - for k, v in pairs(iface_table) do - o:value(v.id, v.remark) - o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - end - local dpt = s:option(ListValue, _n("default_proxy_tag"), string.format('* %s', translate("Default Preproxy")), translate("When using, localhost will connect this node first and then use this node to connect the default node.")) - dpt:value("", translate("Close")) - dpt:value("main", translate("Preproxy Node")) - dpt:depends("__hide__", "1") - for k, v in pairs(nodes_table) do - o:value(v.id, v.remark) - o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - if not api.is_local_ip(v.address) then - dpt:depends({ [_n("protocol")] = "_shunt", [_n("preproxy_enabled")] = true, [_n("default_node")] = v.id }) - end - end -end - -o = s:option(ListValue, _n("domainStrategy"), translate("Domain Strategy")) -o:value("AsIs") -o:value("IPIfNonMatch") -o:value("IPOnDemand") -o.default = "IPOnDemand" -o.description = "
  • " .. translate("'AsIs': Only use domain for routing. Default value.") - .. "
  • " .. translate("'IPIfNonMatch': When no rule matches current domain, resolves it into IP addresses (A or AAAA records) and try all rules again.") - .. "
  • " .. translate("'IPOnDemand': As long as there is a IP-based rule, resolves the domain into IP immediately.") - .. "
" -o:depends({ [_n("protocol")] = "_shunt" }) - -o = s:option(ListValue, _n("domainMatcher"), translate("Domain matcher")) -o:value("hybrid") -o:value("linear") -o:depends({ [_n("protocol")] = "_shunt" }) - --- [[ 分流模块 End ]] - -o = s:option(Value, _n("address"), translate("Address (Support Domain Name)")) - -o = s:option(Value, _n("port"), translate("Port")) -o.datatype = "port" - -local protocols = s.fields[_n("protocol")].keylist -if #protocols > 0 then - for index, value in ipairs(protocols) do - if not value:find("_") then - s.fields[_n("address")]:depends({ [_n("protocol")] = value }) - s.fields[_n("port")]:depends({ [_n("protocol")] = value }) - end - end -end - -o = s:option(Value, _n("username"), translate("Username")) -o:depends({ [_n("protocol")] = "http" }) -o:depends({ [_n("protocol")] = "socks" }) - -o = s:option(Value, _n("password"), translate("Password")) -o.password = true -o:depends({ [_n("protocol")] = "http" }) -o:depends({ [_n("protocol")] = "socks" }) -o:depends({ [_n("protocol")] = "shadowsocks" }) -o:depends({ [_n("protocol")] = "trojan" }) - -o = s:option(ListValue, _n("security"), translate("Encrypt Method")) -for a, t in ipairs(security_list) do o:value(t) end -o:depends({ [_n("protocol")] = "vmess" }) - -o = s:option(Value, _n("encryption"), translate("Encrypt Method") .. " (encryption)") -o.default = "none" -o.placeholder = "none" -o:depends({ [_n("protocol")] = "vless" }) -o.validate = function(self, value) - value = api.trim(value) - return (value == "" and "none" or value) -end - -o = s:option(ListValue, _n("ss_method"), translate("Encrypt Method")) -o.rewrite_option = "method" -for a, t in ipairs(ss_method_list) do o:value(t) end -o:depends({ [_n("protocol")] = "shadowsocks" }) - -o = s:option(Flag, _n("iv_check"), translate("IV Check")) -o:depends({ [_n("protocol")] = "shadowsocks", [_n("ss_method")] = "aes-128-gcm" }) -o:depends({ [_n("protocol")] = "shadowsocks", [_n("ss_method")] = "aes-256-gcm" }) -o:depends({ [_n("protocol")] = "shadowsocks", [_n("ss_method")] = "chacha20-poly1305" }) -o:depends({ [_n("protocol")] = "shadowsocks", [_n("ss_method")] = "xchacha20-poly1305" }) - -o = s:option(Flag, _n("uot"), translate("UDP over TCP")) -o:depends({ [_n("protocol")] = "shadowsocks" }) - -o = s:option(Value, _n("uuid"), translate("ID")) -o.password = true -o:depends({ [_n("protocol")] = "vmess" }) -o:depends({ [_n("protocol")] = "vless" }) - -o = s:option(ListValue, _n("flow"), translate("flow")) -o.default = "" -o:value("", translate("Disable")) -o:value("xtls-rprx-vision") -o:depends({ [_n("protocol")] = "vless" }) - ----- [[hysteria2]] -o = s:option(Value, _n("hysteria2_hop"), translate("Port hopping range")) -o.description = translate("Format as 1000:2000 or 1000-2000 Multiple groups are separated by commas (,).") -o:depends({ [_n("protocol")] = "hysteria2" }) - -o = s:option(Value, _n("hysteria2_hop_interval"), translate("Hop Interval"), translate("Example:") .. "30s (≥5s)") -o.placeholder = "30s" -o.default = "30s" -o:depends({ [_n("protocol")] = "hysteria2" }) - -o = s:option(Value, _n("hysteria2_up_mbps"), translate("Max upload Mbps")) -o:depends({ [_n("protocol")] = "hysteria2" }) - -o = s:option(Value, _n("hysteria2_down_mbps"), translate("Max download Mbps")) -o:depends({ [_n("protocol")] = "hysteria2" }) - -o = s:option(ListValue, _n("hysteria2_obfs_type"), translate("Obfs Type")) -o:value("", translate("Disable")) -o:value("salamander") -o:depends({ [_n("protocol")] = "hysteria2" }) - -o = s:option(Value, _n("hysteria2_obfs_password"), translate("Obfs Password")) -o:depends({ [_n("protocol")] = "hysteria2" }) - -o = s:option(Value, _n("hysteria2_auth_password"), translate("Auth Password")) -o.password = true -o:depends({ [_n("protocol")] = "hysteria2"}) - -o = s:option(Value, _n("hysteria2_idle_timeout"), translate("Idle Timeout"), translate("Example:") .. "30s (4s-120s)") -o:depends({ [_n("protocol")] = "hysteria2"}) - -o = s:option(Flag, _n("hysteria2_disable_mtu_discovery"), translate("Disable MTU detection")) -o.default = "0" -o:depends({ [_n("protocol")] = "hysteria2"}) ----- [[hysteria2 end]] - -o = s:option(Flag, _n("tls"), translate("TLS")) -o.default = 0 -o:depends({ [_n("protocol")] = "vmess" }) -o:depends({ [_n("protocol")] = "vless" }) -o:depends({ [_n("protocol")] = "http" }) -o:depends({ [_n("protocol")] = "socks" }) -o:depends({ [_n("protocol")] = "trojan" }) -o:depends({ [_n("protocol")] = "shadowsocks" }) - -o = s:option(Flag, _n("reality"), translate("REALITY"), translate("Only recommend to use with VLESS-TCP-XTLS-Vision.")) -o.default = 0 -o:depends({ [_n("tls")] = true, [_n("transport")] = "raw" }) -o:depends({ [_n("tls")] = true, [_n("transport")] = "ws" }) -o:depends({ [_n("tls")] = true, [_n("transport")] = "grpc" }) -o:depends({ [_n("tls")] = true, [_n("transport")] = "httpupgrade" }) -o:depends({ [_n("tls")] = true, [_n("transport")] = "xhttp" }) - -o = s:option(ListValue, _n("alpn"), translate("alpn")) -o.default = "default" -o:value("default", translate("Default")) -o:value("h3") -o:value("h2") -o:value("h3,h2") -o:value("http/1.1") -o:value("h2,http/1.1") -o:value("h3,h2,http/1.1") -o:depends({ [_n("tls")] = true, [_n("reality")] = false }) -o:depends({ [_n("protocol")] = "hysteria2" }) - --- o = s:option(Value, _n("minversion"), translate("minversion")) --- o.default = "1.3" --- o:value("1.3") --- o:depends({ [_n("tls")] = true }) - -o = s:option(Value, _n("tls_serverName"), translate("Domain")) -o:depends({ [_n("tls")] = true }) -o:depends({ [_n("protocol")] = "hysteria2" }) - -o = s:option(Flag, _n("tls_allowInsecure"), translate("allowInsecure"), translate("Whether unsafe connections are allowed. When checked, Certificate validation will be skipped.")) -o.default = "0" -o:depends({ [_n("tls")] = true, [_n("reality")] = false }) -o:depends({ [_n("protocol")] = "hysteria2" }) - -o = s:option(Value, _n("tls_chain_fingerprint"), translate("TLS Chain Fingerprint (SHA256)"), translate("Once set, connects only when the server’s chain fingerprint matches.")) -o:depends({ [_n("tls")] = true, [_n("reality")] = false }) - -o = s:option(Flag, _n("ech"), translate("ECH")) -o.default = "0" -o:depends({ [_n("tls")] = true, [_n("flow")] = "", [_n("reality")] = false }) -o:depends({ [_n("protocol")] = "hysteria2" }) - -o = s:option(TextValue, _n("ech_config"), translate("ECH Config")) -o.default = "" -o.rows = 5 -o.wrap = "soft" -o:depends({ [_n("ech")] = true }) -o.validate = function(self, value) - return api.trim(value:gsub("[\r\n]", "")) -end - -o = s:option(ListValue, _n("ech_ForceQuery"), translate("ECH Query Policy"), translate("Controls the policy used when performing DNS queries for ECH configuration.")) -o.default = "none" -o:value("none") -o:value("half") -o:value("full") -o:depends({ [_n("ech")] = true }) - --- [[ REALITY部分 ]] -- -o = s:option(Value, _n("reality_publicKey"), translate("Public Key")) -o:depends({ [_n("tls")] = true, [_n("reality")] = true }) - -o = s:option(Value, _n("reality_shortId"), translate("Short Id")) -o:depends({ [_n("tls")] = true, [_n("reality")] = true }) - -o = s:option(Value, _n("reality_spiderX"), translate("Spider X")) -o.placeholder = "/" -o:depends({ [_n("tls")] = true, [_n("reality")] = true }) - -o = s:option(Flag, _n("utls"), translate("uTLS")) -o.default = "0" -o:depends({ [_n("tls")] = true, [_n("reality")] = false }) - -o = s:option(ListValue, _n("fingerprint"), translate("Finger Print")) -o:value("chrome") -o:value("firefox") -o:value("edge") -o:value("safari") -o:value("360") -o:value("qq") -o:value("ios") -o:value("android") -o:value("random") -o:value("randomized") -o.default = "chrome" -o:depends({ [_n("tls")] = true, [_n("utls")] = true }) -o:depends({ [_n("tls")] = true, [_n("reality")] = true }) - -o = s:option(Flag, _n("use_mldsa65Verify"), translate("ML-DSA-65")) -o.default = "0" -o:depends({ [_n("tls")] = true, [_n("reality")] = true }) - -o = s:option(TextValue, _n("reality_mldsa65Verify"), "ML-DSA-65 " .. translate("Public key")) -o.default = "" -o.rows = 5 -o.wrap = "soft" -o:depends({ [_n("use_mldsa65Verify")] = true }) -o.validate = function(self, value) - return api.trim(value:gsub("[\r\n]", "")) -end - -o = s:option(ListValue, _n("transport"), translate("Transport")) -o:value("raw", "RAW (TCP)") -o:value("mkcp", "mKCP") -o:value("ws", "WebSocket") -o:value("grpc", "gRPC") -o:value("httpupgrade", "HttpUpgrade") -o:value("xhttp", "XHTTP") -o:depends({ [_n("protocol")] = "vmess" }) -o:depends({ [_n("protocol")] = "vless" }) -o:depends({ [_n("protocol")] = "socks" }) -o:depends({ [_n("protocol")] = "shadowsocks" }) -o:depends({ [_n("protocol")] = "trojan" }) - -o = s:option(Value, _n("wireguard_public_key"), translate("Public Key")) -o:depends({ [_n("protocol")] = "wireguard" }) - -o = s:option(Value, _n("wireguard_secret_key"), translate("Private Key")) -o:depends({ [_n("protocol")] = "wireguard" }) - -o = s:option(Value, _n("wireguard_preSharedKey"), translate("Pre shared key")) -o:depends({ [_n("protocol")] = "wireguard" }) - -o = s:option(DynamicList, _n("wireguard_local_address"), translate("Local Address")) -o:depends({ [_n("protocol")] = "wireguard" }) - -o = s:option(Value, _n("wireguard_mtu"), translate("MTU")) -o.default = "1420" -o:depends({ [_n("protocol")] = "wireguard" }) - -if api.compare_versions(xray_version, ">=", "1.8.0") then - o = s:option(Value, _n("wireguard_reserved"), translate("Reserved"), translate("Decimal numbers separated by \",\" or Base64-encoded strings.")) - o:depends({ [_n("protocol")] = "wireguard" }) -end - -o = s:option(Value, _n("wireguard_keepAlive"), translate("Keep Alive")) -o.default = "0" -o:depends({ [_n("protocol")] = "wireguard" }) - --- [[ RAW部分 ]]-- - --- TCP伪装 -o = s:option(ListValue, _n("tcp_guise"), translate("Camouflage Type")) -o:value("none", "none") -o:value("http", "http") -o:depends({ [_n("transport")] = "raw" }) - --- HTTP域名 -o = s:option(DynamicList, _n("tcp_guise_http_host"), translate("HTTP Host")) -o:depends({ [_n("tcp_guise")] = "http" }) - --- HTTP路径 -o = s:option(DynamicList, _n("tcp_guise_http_path"), translate("HTTP Path")) -o.placeholder = "/" -o:depends({ [_n("tcp_guise")] = "http" }) - --- [[ mKCP部分 ]]-- - -o = s:option(ListValue, _n("mkcp_guise"), translate("Camouflage Type"), translate('
none: default, no masquerade, data sent is packets with no characteristics.
srtp: disguised as an SRTP packet, it will be recognized as video call data (such as FaceTime).
utp: packets disguised as uTP will be recognized as bittorrent downloaded data.
wechat-video: packets disguised as WeChat video calls.
dtls: disguised as DTLS 1.2 packet.
wireguard: disguised as a WireGuard packet. (not really WireGuard protocol)
dns: Disguising traffic as DNS requests.')) -for a, t in ipairs(header_type_list) do o:value(t) end -o:depends({ [_n("transport")] = "mkcp" }) - -o = s:option(Value, _n("mkcp_domain"), translate("Camouflage Domain"), translate("Use it together with the DNS disguised type. You can fill in any domain.")) -o:depends({ [_n("mkcp_guise")] = "dns" }) - -o = s:option(Value, _n("mkcp_mtu"), translate("KCP MTU")) -o.default = "1350" -o:depends({ [_n("transport")] = "mkcp" }) - -o = s:option(Value, _n("mkcp_tti"), translate("KCP TTI")) -o.default = "20" -o:depends({ [_n("transport")] = "mkcp" }) - -o = s:option(Value, _n("mkcp_uplinkCapacity"), translate("KCP uplinkCapacity")) -o.default = "5" -o:depends({ [_n("transport")] = "mkcp" }) - -o = s:option(Value, _n("mkcp_downlinkCapacity"), translate("KCP downlinkCapacity")) -o.default = "20" -o:depends({ [_n("transport")] = "mkcp" }) - -o = s:option(Flag, _n("mkcp_congestion"), translate("KCP Congestion")) -o:depends({ [_n("transport")] = "mkcp" }) - -o = s:option(Value, _n("mkcp_readBufferSize"), translate("KCP readBufferSize")) -o.default = "1" -o:depends({ [_n("transport")] = "mkcp" }) - -o = s:option(Value, _n("mkcp_writeBufferSize"), translate("KCP writeBufferSize")) -o.default = "1" -o:depends({ [_n("transport")] = "mkcp" }) - -o = s:option(Value, _n("mkcp_seed"), translate("KCP Seed")) -o:depends({ [_n("transport")] = "mkcp" }) - --- [[ WebSocket部分 ]]-- -o = s:option(Value, _n("ws_host"), translate("WebSocket Host")) -o:depends({ [_n("transport")] = "ws" }) - -o = s:option(Value, _n("ws_path"), translate("WebSocket Path")) -o.placeholder = "/" -o:depends({ [_n("transport")] = "ws" }) - -o = s:option(Value, _n("ws_heartbeatPeriod"), translate("HeartbeatPeriod(second)")) -o.datatype = "integer" -o:depends({ [_n("transport")] = "ws" }) - --- [[ gRPC部分 ]]-- -o = s:option(Value, _n("grpc_serviceName"), "ServiceName") -o:depends({ [_n("transport")] = "grpc" }) - -o = s:option(ListValue, _n("grpc_mode"), "gRPC " .. translate("Transfer mode")) -o:value("gun") -o:value("multi") -o:depends({ [_n("transport")] = "grpc" }) - -o = s:option(Flag, _n("grpc_health_check"), translate("Health check")) -o:depends({ [_n("transport")] = "grpc" }) - -o = s:option(Value, _n("grpc_idle_timeout"), translate("Idle timeout")) -o.default = "10" -o:depends({ [_n("grpc_health_check")] = true }) - -o = s:option(Value, _n("grpc_health_check_timeout"), translate("Health check timeout")) -o.default = "20" -o:depends({ [_n("grpc_health_check")] = true }) - -o = s:option(Flag, _n("grpc_permit_without_stream"), translate("Permit without stream")) -o.default = "0" -o:depends({ [_n("grpc_health_check")] = true }) - -o = s:option(Value, _n("grpc_initial_windows_size"), translate("Initial Windows Size")) -o.default = "0" -o:depends({ [_n("transport")] = "grpc" }) - --- [[ HttpUpgrade部分 ]]-- -o = s:option(Value, _n("httpupgrade_host"), translate("HttpUpgrade Host")) -o:depends({ [_n("transport")] = "httpupgrade" }) - -o = s:option(Value, _n("httpupgrade_path"), translate("HttpUpgrade Path")) -o.placeholder = "/" -o:depends({ [_n("transport")] = "httpupgrade" }) - --- [[ XHTTP部分 ]]-- -o = s:option(ListValue, _n("xhttp_mode"), "XHTTP " .. translate("Mode")) -o:depends({ [_n("transport")] = "xhttp" }) -o.default = "auto" -o:value("auto") -o:value("packet-up") -o:value("stream-up") -o:value("stream-one") - -o = s:option(Value, _n("xhttp_host"), translate("XHTTP Host")) -o:depends({ [_n("transport")] = "xhttp" }) - -o = s:option(Value, _n("xhttp_path"), translate("XHTTP Path")) -o.placeholder = "/" -o:depends({ [_n("transport")] = "xhttp" }) - -o = s:option(Flag, _n("use_xhttp_extra"), translate("XHTTP Extra")) -o.default = "0" -o:depends({ [_n("transport")] = "xhttp" }) - -o = s:option(TextValue, _n("xhttp_extra"), " ", translate("An XHttpObject in JSON format, used for sharing.")) -o:depends({ [_n("use_xhttp_extra")] = true }) -o.rows = 15 -o.wrap = "off" -o.custom_cfgvalue = function(self, section, value) - local raw = m:get(section, "xhttp_extra") - if raw then - return api.base64Decode(raw) - end -end -o.custom_write = function(self, section, value) - m:set(section, "xhttp_extra", api.base64Encode(value)) - local success, data = pcall(jsonc.parse, value) - if success and data then - local address = (data.extra and data.extra.downloadSettings and data.extra.downloadSettings.address) - or (data.downloadSettings and data.downloadSettings.address) - if address and address ~= "" then - address = address:gsub("^%[", ""):gsub("%]$", "") - m:set(section, "download_address", address) - else - m:del(section, "download_address") - end - else - m:del(section, "download_address") - end -end -o.validate = function(self, value) - value = value:gsub("\r\n", "\n"):gsub("^[ \t]*\n", ""):gsub("\n[ \t]*$", ""):gsub("\n[ \t]*\n", "\n") - if value:sub(-1) == "\n" then - value = value:sub(1, -2) - end - return value -end -o.custom_remove = function(self, section, value) - m:del(section, "xhttp_extra") - m:del(section, "download_address") -end - --- [[ User-Agent ]]-- -o = s:option(Value, _n("user_agent"), translate("User-Agent")) -o:depends({ [_n("tcp_guise")] = "http" }) -o:depends({ [_n("transport")] = "ws" }) -o:depends({ [_n("transport")] = "httpupgrade" }) -o:depends({ [_n("transport")] = "xhttp" }) - --- [[ Mux.Cool ]]-- -o = s:option(Flag, _n("mux"), "Mux", translate("Enable Mux.Cool")) -o:depends({ [_n("protocol")] = "vmess" }) -o:depends({ [_n("protocol")] = "vless", [_n("transport")] = "raw" }) -o:depends({ [_n("protocol")] = "vless", [_n("transport")] = "ws" }) -o:depends({ [_n("protocol")] = "vless", [_n("transport")] = "grpc" }) -o:depends({ [_n("protocol")] = "vless", [_n("transport")] = "httpupgrade" }) -o:depends({ [_n("protocol")] = "http" }) -o:depends({ [_n("protocol")] = "socks" }) -o:depends({ [_n("protocol")] = "shadowsocks" }) -o:depends({ [_n("protocol")] = "trojan" }) - -o = s:option(Value, _n("mux_concurrency"), translate("Mux concurrency")) -o.default = -1 -o:depends({ [_n("mux")] = true }) - -o = s:option(Value, _n("xudp_concurrency"), translate("XUDP Mux concurrency")) -o.default = 8 -o:depends({ [_n("mux")] = true }) - -o = s:option(Flag, _n("tcp_fast_open"), "TCP " .. translate("Fast Open")) -o.default = 0 - ---[[tcpMptcp]] -o = s:option(Flag, _n("tcpMptcp"), "tcpMptcp", translate("Enable Multipath TCP, need to be enabled in both server and client configuration.")) -o.default = 0 - -o = s:option(Value, _n("preconns"), translate("Pre-connections"), translate("Number of early established connections to reduce latency.")) -o.datatype = "uinteger" -o.placeholder = 0 -o:depends({ [_n("protocol")] = "vless" }) - -o = s:option(ListValue, _n("chain_proxy"), translate("Chain Proxy")) -o:value("", translate("Close(Not use)")) -o:value("1", translate("Preproxy Node")) -o:value("2", translate("Landing Node")) -for i, v in ipairs(s.fields[_n("protocol")].keylist) do - if not v:find("_") then - o:depends({ [_n("protocol")] = v }) - end -end - -o1 = s:option(ListValue, _n("preproxy_node"), translate("Preproxy Node"), translate("Only support a layer of proxy.")) -o1:depends({ [_n("chain_proxy")] = "1" }) -o1.template = appname .. "/cbi/nodes_listvalue" -o1.group = {} - -o2 = s:option(ListValue, _n("to_node"), translate("Landing Node"), translate("Only support a layer of proxy.")) -o2:depends({ [_n("chain_proxy")] = "2" }) -o2.template = appname .. "/cbi/nodes_listvalue" -o2.group = {} - -for k, v in pairs(nodes_table) do - if v.type == "Xray" and v.id ~= arg[1] and (not v.chain_proxy or v.chain_proxy == "") then - o1:value(v.id, v.remark) - o1.group[#o1.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - o2:value(v.id, v.remark) - o2.group[#o2.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - end -end - -for i, v in ipairs(s.fields[_n("protocol")].keylist) do - if not v:find("_") and v ~= "hysteria2" then - s.fields[_n("tcp_fast_open")]:depends({ [_n("protocol")] = v }) - s.fields[_n("tcpMptcp")]:depends({ [_n("protocol")] = v }) - s.fields[_n("chain_proxy")]:depends({ [_n("protocol")] = v }) - end -end - -api.luci_types(arg[1], m, s, type_name, option_prefix) diff --git a/small/luci-app-passwall/luasrc/model/cbi/passwall/client/type/sing-box.lua b/small/luci-app-passwall/luasrc/model/cbi/passwall/client/type/sing-box.lua deleted file mode 100644 index ddf4391481..0000000000 --- a/small/luci-app-passwall/luasrc/model/cbi/passwall/client/type/sing-box.lua +++ /dev/null @@ -1,859 +0,0 @@ -local m, s = ... - -local api = require "luci.passwall.api" - -local singbox_bin = api.finded_com("sing-box") - -if not singbox_bin then - return -end - -local local_version = api.get_app_version("sing-box") -local version_ge_1_12_0 = api.compare_versions(local_version:match("[^v]+"), ">=", "1.12.0") - -local singbox_tags = luci.sys.exec(singbox_bin .. " version | grep 'Tags:' | awk '{print $2}'") - -local appname = "passwall" - -local type_name = "sing-box" - -local option_prefix = "singbox_" - -local function _n(name) - return option_prefix .. name -end - -local ss_method_new_list = { - "none", "aes-128-gcm", "aes-192-gcm", "aes-256-gcm", "chacha20-ietf-poly1305", "xchacha20-ietf-poly1305", "2022-blake3-aes-128-gcm", "2022-blake3-aes-256-gcm", "2022-blake3-chacha20-poly1305" -} - -local ss_method_old_list = { - "aes-128-ctr", "aes-192-ctr", "aes-256-ctr", "aes-128-cfb", "aes-192-cfb", "aes-256-cfb", "rc4-md5", "chacha20-ietf", "xchacha20", -} - -local security_list = { "none", "auto", "aes-128-gcm", "chacha20-poly1305", "zero" } - --- [[ sing-box ]] - -s.fields["type"]:value(type_name, "Sing-Box") - -o = s:option(ListValue, _n("protocol"), translate("Protocol")) -o:value("socks", "Socks") -o:value("http", "HTTP") -o:value("shadowsocks", "Shadowsocks") -o:value("vmess", "Vmess") -o:value("trojan", "Trojan") -if singbox_tags:find("with_wireguard") then - o:value("wireguard", "WireGuard") -end -if singbox_tags:find("with_quic") then - o:value("hysteria", "Hysteria") -end -o:value("vless", "VLESS") -if singbox_tags:find("with_quic") then - o:value("tuic", "TUIC") -end -if singbox_tags:find("with_quic") then - o:value("hysteria2", "Hysteria2") -end -if version_ge_1_12_0 then - o:value("anytls", "AnyTLS") -end -o:value("ssh", "SSH") -o:value("_urltest", translate("URLTest")) -o:value("_shunt", translate("Shunt")) -o:value("_iface", translate("Custom Interface")) - -o = s:option(Value, _n("iface"), translate("Interface")) -o.default = "eth1" -o:depends({ [_n("protocol")] = "_iface" }) - -local nodes_table = {} -local iface_table = {} -local urltest_table = {} -for k, e in ipairs(api.get_valid_nodes()) do - if e.node_type == "normal" then - nodes_table[#nodes_table + 1] = { - id = e[".name"], - remark = e["remark"], - type = e["type"], - address = e["address"], - chain_proxy = e["chain_proxy"], - group = e["group"] - } - end - if e.protocol == "_iface" then - iface_table[#iface_table + 1] = { - id = e[".name"], - remark = e["remark"], - group = e["group"] - } - end - if e.protocol == "_urltest" then - urltest_table[#urltest_table + 1] = { - id = e[".name"], - remark = e["remark"], - group = e["group"] - } - end -end - -local socks_list = {} -m.uci:foreach(appname, "socks", function(s) - if s.enabled == "1" and s.node then - socks_list[#socks_list + 1] = { - id = "Socks_" .. s[".name"], - remark = translate("Socks Config") .. " " .. string.format("[%s %s]", s.port, translate("Port")), - group = "Socks" - } - end -end) - ---[[ URLTest ]] -o = s:option(MultiValue, _n("urltest_node"), translate("URLTest node list"), translate("List of nodes to test, document")) -o:depends({ [_n("protocol")] = "_urltest" }) -o.widget = "checkbox" -o.template = appname .. "/cbi/nodes_multivalue" -o.group = {} -for k, v in pairs(socks_list) do - o:value(v.id, v.remark) - o.group[#o.group+1] = v.group or "" -end -for i, v in pairs(nodes_table) do - o:value(v.id, v.remark) - o.group[#o.group+1] = v.group or "" -end --- 读取旧 DynamicList -function o.cfgvalue(self, section) - return m.uci:get_list(appname, section, "urltest_node") or {} -end --- 写入保持 DynamicList -function o.custom_write(self, section, value) - local old = m.uci:get_list(appname, section, "urltest_node") or {} - local new, set = {}, {} - for v in value:gmatch("%S+") do - new[#new + 1] = v - set[v] = 1 - end - for _, v in ipairs(old) do - if not set[v] then - m.uci:set_list(appname, section, "urltest_node", new) - return - end - set[v] = nil - end - for _ in pairs(set) do - m.uci:set_list(appname, section, "urltest_node", new) - return - end -end - -o = s:option(Value, _n("urltest_url"), translate("Probe URL")) -o:depends({ [_n("protocol")] = "_urltest" }) -o:value("https://cp.cloudflare.com/", "Cloudflare") -o:value("https://www.gstatic.com/generate_204", "Gstatic") -o:value("https://www.google.com/generate_204", "Google") -o:value("https://www.youtube.com/generate_204", "YouTube") -o:value("https://connect.rom.miui.com/generate_204", "MIUI (CN)") -o:value("https://connectivitycheck.platform.hicloud.com/generate_204", "HiCloud (CN)") -o.default = o.keylist[3] -o.description = translate("The URL used to detect the connection status.") - -o = s:option(Value, _n("urltest_interval"), translate("Test interval")) -o:depends({ [_n("protocol")] = "_urltest" }) -o.default = "3m" -o.placeholder = "3m" -o.description = translate("The interval between initiating probes.") .. "
" .. - translate("The time format is numbers + units, such as '10s', '2h45m', and the supported time units are s, m, h, which correspond to seconds, minutes, and hours, respectively.") .. "
" .. - translate("When the unit is not filled in, it defaults to seconds.") .. "
" .. - translate("Test interval must be less or equal than idle timeout.") - -o = s:option(Value, _n("urltest_tolerance"), translate("Test tolerance"), translate("The test tolerance in milliseconds.")) -o:depends({ [_n("protocol")] = "_urltest" }) -o.datatype = "uinteger" -o.placeholder = "50" -o.default = "50" - -o = s:option(Value, _n("urltest_idle_timeout"), translate("Idle timeout")) -o:depends({ [_n("protocol")] = "_urltest" }) -o.placeholder = "30m" -o.default = "30m" -o.description = translate("The idle timeout.") .. "
" .. - translate("The time format is numbers + units, such as '10s', '2h45m', and the supported time units are s, m, h, which correspond to seconds, minutes, and hours, respectively.") .. "
" .. - translate("When the unit is not filled in, it defaults to seconds.") - -o = s:option(Flag, _n("urltest_interrupt_exist_connections"), translate("Interrupt existing connections")) -o:depends({ [_n("protocol")] = "_urltest" }) -o.default = "0" -o.description = translate("Interrupt existing connections when the selected outbound has changed.") - --- [[ 分流模块 ]] -if #nodes_table > 0 then - o = s:option(Flag, _n("preproxy_enabled"), translate("Preproxy")) - o:depends({ [_n("protocol")] = "_shunt" }) - - o = s:option(ListValue, _n("main_node"), string.format('%s', translate("Preproxy Node")), translate("Set the node to be used as a pre-proxy. Each rule (including Default) has a separate switch that controls whether this rule uses the pre-proxy or not.")) - o:depends({ [_n("protocol")] = "_shunt", [_n("preproxy_enabled")] = true }) - o.template = appname .. "/cbi/nodes_listvalue" - o.group = {} - for k, v in pairs(socks_list) do - o:value(v.id, v.remark) - o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - end - for k, v in pairs(urltest_table) do - o:value(v.id, v.remark) - o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - end - for k, v in pairs(iface_table) do - o:value(v.id, v.remark) - o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - end - for k, v in pairs(nodes_table) do - o:value(v.id, v.remark) - o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - end -end -m.uci:foreach(appname, "shunt_rules", function(e) - if e[".name"] and e.remarks then - o = s:option(ListValue, _n(e[".name"]), string.format('* %s', api.url("shunt_rules", e[".name"]), e.remarks)) - o:value("", translate("Close")) - o:value("_default", translate("Default")) - o:value("_direct", translate("Direct Connection")) - o:value("_blackhole", translate("Blackhole")) - o:depends({ [_n("protocol")] = "_shunt" }) - o.template = appname .. "/cbi/nodes_listvalue" - o.group = {"","","",""} - - if #nodes_table > 0 then - for k, v in pairs(socks_list) do - o:value(v.id, v.remark) - o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - end - for k, v in pairs(urltest_table) do - o:value(v.id, v.remark) - o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - end - for k, v in pairs(iface_table) do - o:value(v.id, v.remark) - o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - end - local pt = s:option(ListValue, _n(e[".name"] .. "_proxy_tag"), string.format('* %s', e.remarks .. " " .. translate("Preproxy"))) - pt:value("", translate("Close")) - pt:value("main", translate("Preproxy Node")) - pt:depends("__hide__", "1") - for k, v in pairs(nodes_table) do - o:value(v.id, v.remark) - o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - if not api.is_local_ip(v.address) then --本地节点禁止使用前置 - pt:depends({ [_n("protocol")] = "_shunt", [_n("preproxy_enabled")] = true, [_n(e[".name"])] = v.id }) - end - end - end - end -end) - -o = s:option(DummyValue, _n("shunt_tips"), " ") -o.not_rewrite = true -o.rawhtml = true -o.cfgvalue = function(t, n) - return string.format('%s', translate("No shunt rules? Click me to go to add.")) -end -o:depends({ [_n("protocol")] = "_shunt" }) - -local o = s:option(ListValue, _n("default_node"), string.format('* %s', translate("Default"))) -o:depends({ [_n("protocol")] = "_shunt" }) -o:value("_direct", translate("Direct Connection")) -o:value("_blackhole", translate("Blackhole")) -o.template = appname .. "/cbi/nodes_listvalue" -o.group = {"",""} - -if #nodes_table > 0 then - for k, v in pairs(socks_list) do - o:value(v.id, v.remark) - o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - end - for k, v in pairs(urltest_table) do - o:value(v.id, v.remark) - o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - end - for k, v in pairs(iface_table) do - o:value(v.id, v.remark) - o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - end - local dpt = s:option(ListValue, _n("default_proxy_tag"), string.format('* %s', translate("Default Preproxy")), translate("When using, localhost will connect this node first and then use this node to connect the default node.")) - dpt:value("", translate("Close")) - dpt:value("main", translate("Preproxy Node")) - dpt:depends("__hide__", "1") - for k, v in pairs(nodes_table) do - o:value(v.id, v.remark) - o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - if not api.is_local_ip(v.address) then - dpt:depends({ [_n("protocol")] = "_shunt", [_n("preproxy_enabled")] = true, [_n("default_node")] = v.id }) - end - end -end - --- [[ 分流模块 End ]] - -o = s:option(Value, _n("address"), translate("Address (Support Domain Name)")) - -o = s:option(Value, _n("port"), translate("Port")) -o.datatype = "port" - -local protocols = s.fields[_n("protocol")].keylist -if #protocols > 0 then - for index, value in ipairs(protocols) do - if not value:find("_") then - s.fields[_n("address")]:depends({ [_n("protocol")] = value }) - s.fields[_n("port")]:depends({ [_n("protocol")] = value }) - end - end -end - -o = s:option(Value, _n("username"), translate("Username")) -o:depends({ [_n("protocol")] = "http" }) -o:depends({ [_n("protocol")] = "socks" }) -o:depends({ [_n("protocol")] = "ssh" }) - -o = s:option(Value, _n("password"), translate("Password")) -o.password = true -o:depends({ [_n("protocol")] = "http" }) -o:depends({ [_n("protocol")] = "socks" }) -o:depends({ [_n("protocol")] = "shadowsocks" }) -o:depends({ [_n("protocol")] = "trojan" }) -o:depends({ [_n("protocol")] = "tuic" }) -o:depends({ [_n("protocol")] = "anytls" }) -o:depends({ [_n("protocol")] = "ssh" }) - -o = s:option(ListValue, _n("security"), translate("Encrypt Method")) -for a, t in ipairs(security_list) do o:value(t) end -o:depends({ [_n("protocol")] = "vmess" }) - -o = s:option(ListValue, _n("ss_method"), translate("Encrypt Method")) -o.rewrite_option = "method" -for a, t in ipairs(ss_method_new_list) do o:value(t) end -for a, t in ipairs(ss_method_old_list) do o:value(t) end -o:depends({ [_n("protocol")] = "shadowsocks" }) - -o = s:option(Flag, _n("uot"), translate("UDP over TCP")) -o:depends({ [_n("protocol")] = "socks" }) -o:depends({ [_n("protocol")] = "shadowsocks" }) - -o = s:option(Value, _n("uuid"), translate("ID")) -o.password = true -o:depends({ [_n("protocol")] = "vmess" }) -o:depends({ [_n("protocol")] = "vless" }) -o:depends({ [_n("protocol")] = "tuic" }) - -o = s:option(Value, _n("alter_id"), "Alter ID") -o.datatype = "uinteger" -o.default = "0" -o:depends({ [_n("protocol")] = "vmess" }) - -o = s:option(Flag, _n("global_padding"), "global_padding", translate("Protocol parameter. Will waste traffic randomly if enabled.")) -o.default = "0" -o:depends({ [_n("protocol")] = "vmess" }) - -o = s:option(Flag, _n("authenticated_length"), "authenticated_length", translate("Protocol parameter. Enable length block encryption.")) -o.default = "0" -o:depends({ [_n("protocol")] = "vmess" }) - -o = s:option(ListValue, _n("flow"), translate("flow")) -o.default = "" -o:value("", translate("Disable")) -o:value("xtls-rprx-vision") -o:depends({ [_n("protocol")] = "vless", [_n("tls")] = true }) - -if singbox_tags:find("with_quic") then - o = s:option(Value, _n("hysteria_hop"), translate("Port hopping range")) - o.description = translate("Format as 1000:2000 or 1000-2000 Multiple groups are separated by commas (,).") - o:depends({ [_n("protocol")] = "hysteria" }) - - o = s:option(Value, _n("hysteria_hop_interval"), translate("Hop Interval"), translate("Example:") .. "30s (≥5s)") - o.placeholder = "30s" - o.default = "30s" - o:depends({ [_n("protocol")] = "hysteria" }) - - o = s:option(Value, _n("hysteria_obfs"), translate("Obfs Password")) - o:depends({ [_n("protocol")] = "hysteria" }) - - o = s:option(ListValue, _n("hysteria_auth_type"), translate("Auth Type")) - o:value("disable", translate("Disable")) - o:value("string", translate("STRING")) - o:value("base64", translate("BASE64")) - o:depends({ [_n("protocol")] = "hysteria" }) - - o = s:option(Value, _n("hysteria_auth_password"), translate("Auth Password")) - o.password = true - o:depends({ [_n("protocol")] = "hysteria", [_n("hysteria_auth_type")] = "string"}) - o:depends({ [_n("protocol")] = "hysteria", [_n("hysteria_auth_type")] = "base64"}) - - o = s:option(Value, _n("hysteria_up_mbps"), translate("Max upload Mbps")) - o.default = "10" - o:depends({ [_n("protocol")] = "hysteria" }) - - o = s:option(Value, _n("hysteria_down_mbps"), translate("Max download Mbps")) - o.default = "50" - o:depends({ [_n("protocol")] = "hysteria" }) - - o = s:option(Value, _n("hysteria_recv_window_conn"), translate("QUIC stream receive window")) - o:depends({ [_n("protocol")] = "hysteria" }) - - o = s:option(Value, _n("hysteria_recv_window"), translate("QUIC connection receive window")) - o:depends({ [_n("protocol")] = "hysteria" }) - - o = s:option(Flag, _n("hysteria_disable_mtu_discovery"), translate("Disable MTU detection")) - o:depends({ [_n("protocol")] = "hysteria" }) - - o = s:option(Value, _n("hysteria_alpn"), translate("QUIC TLS ALPN")) - o:depends({ [_n("protocol")] = "hysteria" }) -end - -if singbox_tags:find("with_quic") then - o = s:option(ListValue, _n("tuic_congestion_control"), translate("Congestion control algorithm")) - o.default = "cubic" - o:value("bbr", translate("BBR")) - o:value("cubic", translate("CUBIC")) - o:value("new_reno", translate("New Reno")) - o:depends({ [_n("protocol")] = "tuic" }) - - o = s:option(ListValue, _n("tuic_udp_relay_mode"), translate("UDP relay mode")) - o.default = "native" - o:value("native", translate("native")) - o:value("quic", translate("QUIC")) - o:depends({ [_n("protocol")] = "tuic" }) - - --[[ - o = s:option(Flag, _n("tuic_udp_over_stream"), translate("UDP over stream")) - o:depends({ [_n("protocol")] = "tuic" }) - ]]-- - - o = s:option(Flag, _n("tuic_zero_rtt_handshake"), translate("Enable 0-RTT QUIC handshake")) - o.default = 0 - o:depends({ [_n("protocol")] = "tuic" }) - - o = s:option(Value, _n("tuic_heartbeat"), translate("Heartbeat interval(second)")) - o.datatype = "uinteger" - o.default = "3" - o:depends({ [_n("protocol")] = "tuic" }) - - o = s:option(ListValue, _n("tuic_alpn"), translate("QUIC TLS ALPN")) - o.default = "default" - o:value("default", translate("Default")) - o:value("h3") - o:value("h2") - o:value("h3,h2") - o:value("http/1.1") - o:value("h2,http/1.1") - o:value("h3,h2,http/1.1") - o:depends({ [_n("protocol")] = "tuic" }) -end - -if singbox_tags:find("with_quic") then - o = s:option(Value, _n("hysteria2_hop"), translate("Port hopping range")) - o.description = translate("Format as 1000:2000 or 1000-2000 Multiple groups are separated by commas (,).") - o:depends({ [_n("protocol")] = "hysteria2" }) - - o = s:option(Value, _n("hysteria2_hop_interval"), translate("Hop Interval"), translate("Example:") .. "30s (≥5s)") - o.placeholder = "30s" - o.default = "30s" - o:depends({ [_n("protocol")] = "hysteria2" }) - - o = s:option(Value, _n("hysteria2_up_mbps"), translate("Max upload Mbps")) - o:depends({ [_n("protocol")] = "hysteria2" }) - - o = s:option(Value, _n("hysteria2_down_mbps"), translate("Max download Mbps")) - o:depends({ [_n("protocol")] = "hysteria2" }) - - o = s:option(ListValue, _n("hysteria2_obfs_type"), translate("Obfs Type")) - o:value("", translate("Disable")) - o:value("salamander") - o:depends({ [_n("protocol")] = "hysteria2" }) - - o = s:option(Value, _n("hysteria2_obfs_password"), translate("Obfs Password")) - o:depends({ [_n("protocol")] = "hysteria2" }) - - o = s:option(Value, _n("hysteria2_auth_password"), translate("Auth Password")) - o.password = true - o:depends({ [_n("protocol")] = "hysteria2"}) -end - --- [[ SSH config start ]] -- -o = s:option(Value, _n("ssh_priv_key"), translate("Private Key")) -o:depends({ [_n("protocol")] = "ssh" }) - -o = s:option(Value, _n("ssh_priv_key_pp"), translate("Private Key Passphrase")) -o.password = true -o:depends({ [_n("protocol")] = "ssh" }) - -o = s:option(DynamicList, _n("ssh_host_key"), translate("Host Key"), translate("Accept any if empty.")) -o:depends({ [_n("protocol")] = "ssh" }) - -o = s:option(DynamicList, _n("ssh_host_key_algo"), translate("Host Key Algorithms")) -o:depends({ [_n("protocol")] = "ssh" }) - -o = s:option(Value, _n("ssh_client_version"), translate("Client Version"), translate("Random version will be used if empty.")) -o:depends({ [_n("protocol")] = "ssh" }) --- [[ SSH config end ]] -- - -o = s:option(Flag, _n("tls"), translate("TLS")) -o.default = 0 -o:depends({ [_n("protocol")] = "vmess" }) -o:depends({ [_n("protocol")] = "vless" }) -o:depends({ [_n("protocol")] = "http" }) -o:depends({ [_n("protocol")] = "trojan" }) -o:depends({ [_n("protocol")] = "shadowsocks" }) -o:depends({ [_n("protocol")] = "anytls" }) - -o = s:option(ListValue, _n("alpn"), translate("alpn")) -o.default = "default" -o:value("default", translate("Default")) -o:value("h3") -o:value("h2") -o:value("h3,h2") -o:value("http/1.1") -o:value("h2,http/1.1") -o:value("h3,h2,http/1.1") -o:depends({ [_n("tls")] = true }) - -o = s:option(Flag, _n("tls_disable_sni"), translate("Disable SNI"), translate("Do not send server name in ClientHello.")) -o.default = "0" -o:depends({ [_n("tls")] = true }) -o:depends({ [_n("protocol")] = "hysteria"}) -o:depends({ [_n("protocol")] = "tuic" }) -o:depends({ [_n("protocol")] = "hysteria2" }) -o:depends({ [_n("protocol")] = "shadowsocks" }) - -o = s:option(Value, _n("tls_serverName"), translate("Domain")) -o:depends({ [_n("tls")] = true }) -o:depends({ [_n("protocol")] = "hysteria"}) -o:depends({ [_n("protocol")] = "tuic" }) -o:depends({ [_n("protocol")] = "hysteria2" }) -o:depends({ [_n("protocol")] = "shadowsocks" }) - -o = s:option(Flag, _n("tls_allowInsecure"), translate("allowInsecure"), translate("Whether unsafe connections are allowed. When checked, Certificate validation will be skipped.")) -o.default = "0" -o:depends({ [_n("tls")] = true }) -o:depends({ [_n("protocol")] = "hysteria"}) -o:depends({ [_n("protocol")] = "tuic" }) -o:depends({ [_n("protocol")] = "hysteria2" }) -o:depends({ [_n("protocol")] = "shadowsocks" }) - -o = s:option(Flag, _n("ech"), translate("ECH")) -o.default = "0" -o:depends({ [_n("tls")] = true, [_n("flow")] = "", [_n("reality")] = false }) -o:depends({ [_n("protocol")] = "tuic" }) -o:depends({ [_n("protocol")] = "hysteria" }) -o:depends({ [_n("protocol")] = "hysteria2" }) - -o = s:option(TextValue, _n("ech_config"), translate("ECH Config")) -o.default = "" -o.rows = 5 -o.wrap = "off" -o:depends({ [_n("ech")] = true }) -o.validate = function(self, value) - value = value:gsub("^%s+", ""):gsub("%s+$","\n"):gsub("\r\n","\n"):gsub("[ \t]*\n[ \t]*", "\n") - value = value:gsub("^%s*\n", "") - if value:sub(-1) == "\n" then - value = value:sub(1, -2) - end - return value -end - -if singbox_tags:find("with_utls") then - o = s:option(Flag, _n("utls"), translate("uTLS")) - o.default = "0" - o:depends({ [_n("tls")] = true }) - - o = s:option(ListValue, _n("fingerprint"), translate("Finger Print")) - o:value("chrome") - o:value("firefox") - o:value("edge") - o:value("safari") - o:value("360") - o:value("qq") - o:value("ios") - o:value("android") - o:value("random") - o:value("randomized") - o.default = "chrome" - o:depends({ [_n("utls")] = true }) - - -- [[ REALITY部分 ]] -- - o = s:option(Flag, _n("reality"), translate("REALITY")) - o.default = 0 - o:depends({ [_n("protocol")] = "vless", [_n("tls")] = true }) - o:depends({ [_n("protocol")] = "vmess", [_n("tls")] = true }) - o:depends({ [_n("protocol")] = "shadowsocks", [_n("tls")] = true }) - o:depends({ [_n("protocol")] = "socks", [_n("tls")] = true }) - o:depends({ [_n("protocol")] = "trojan", [_n("tls")] = true }) - o:depends({ [_n("protocol")] = "anytls", [_n("tls")] = true }) - - o = s:option(Value, _n("reality_publicKey"), translate("Public Key")) - o:depends({ [_n("reality")] = true }) - - o = s:option(Value, _n("reality_shortId"), translate("Short Id")) - o:depends({ [_n("reality")] = true }) -end - -o = s:option(ListValue, _n("transport"), translate("Transport")) -o:value("tcp", "TCP") -o:value("http", "HTTP") -o:value("ws", "WebSocket") -o:value("httpupgrade", "HTTPUpgrade") -if singbox_tags:find("with_quic") then - o:value("quic", "QUIC") -end -if singbox_tags:find("with_grpc") then - o:value("grpc", "gRPC") -else o:value("grpc", "gRPC-lite") -end -o:depends({ [_n("protocol")] = "vmess" }) -o:depends({ [_n("protocol")] = "vless" }) -o:depends({ [_n("protocol")] = "socks" }) -o:depends({ [_n("protocol")] = "shadowsocks" }) -o:depends({ [_n("protocol")] = "trojan" }) - -if singbox_tags:find("with_wireguard") then - o = s:option(Value, _n("wireguard_public_key"), translate("Public Key")) - o:depends({ [_n("protocol")] = "wireguard" }) - - o = s:option(Value, _n("wireguard_secret_key"), translate("Private Key")) - o:depends({ [_n("protocol")] = "wireguard" }) - - o = s:option(Value, _n("wireguard_preSharedKey"), translate("Pre shared key")) - o:depends({ [_n("protocol")] = "wireguard" }) - - o = s:option(DynamicList, _n("wireguard_local_address"), translate("Local Address")) - o:depends({ [_n("protocol")] = "wireguard" }) - - o = s:option(Value, _n("wireguard_mtu"), translate("MTU")) - o.default = "1420" - o:depends({ [_n("protocol")] = "wireguard" }) - - o = s:option(Value, _n("wireguard_reserved"), translate("Reserved"), translate("Decimal numbers separated by \",\" or Base64-encoded strings.")) - o:depends({ [_n("protocol")] = "wireguard" }) -end - --- [[ TCP部分(模拟) ]]-- -o = s:option(ListValue, _n("tcp_guise"), translate("Camouflage Type")) -o:value("none", "none") -o:value("http", "http") -o:depends({ [_n("transport")] = "tcp" }) - -o = s:option(DynamicList, _n("tcp_guise_http_host"), translate("HTTP Host")) -o:depends({ [_n("tcp_guise")] = "http" }) - -o = s:option(DynamicList, _n("tcp_guise_http_path"), translate("HTTP Path")) -o.placeholder = "/" -o:depends({ [_n("tcp_guise")] = "http" }) - --- [[ HTTP部分 ]]-- -o = s:option(DynamicList, _n("http_host"), translate("HTTP Host")) -o:depends({ [_n("transport")] = "http" }) - -o = s:option(Value, _n("http_path"), translate("HTTP Path")) -o.placeholder = "/" -o:depends({ [_n("transport")] = "http" }) - -o = s:option(Flag, _n("http_h2_health_check"), translate("Health check")) -o:depends({ [_n("tls")] = true, [_n("transport")] = "http" }) - -o = s:option(Value, _n("http_h2_read_idle_timeout"), translate("Idle timeout")) -o.default = "10" -o:depends({ [_n("tls")] = true, [_n("transport")] = "http", [_n("http_h2_health_check")] = true }) - -o = s:option(Value, _n("http_h2_health_check_timeout"), translate("Health check timeout")) -o.default = "15" -o:depends({ [_n("tls")] = true, [_n("transport")] = "http", [_n("http_h2_health_check")] = true }) - --- [[ WebSocket部分 ]]-- -o = s:option(Value, _n("ws_host"), translate("WebSocket Host")) -o:depends({ [_n("transport")] = "ws" }) - -o = s:option(Value, _n("ws_path"), translate("WebSocket Path")) -o.placeholder = "/" -o:depends({ [_n("transport")] = "ws" }) - -o = s:option(Flag, _n("ws_enableEarlyData"), translate("Enable early data")) -o:depends({ [_n("transport")] = "ws" }) - -o = s:option(Value, _n("ws_maxEarlyData"), translate("Early data length")) -o.default = "1024" -o:depends({ [_n("ws_enableEarlyData")] = true }) - -o = s:option(Value, _n("ws_earlyDataHeaderName"), translate("Early data header name"), translate("Recommended value: Sec-WebSocket-Protocol")) -o:depends({ [_n("ws_enableEarlyData")] = true }) - --- [[ HTTPUpgrade部分 ]]-- -o = s:option(Value, _n("httpupgrade_host"), translate("HTTPUpgrade Host")) -o:depends({ [_n("transport")] = "httpupgrade" }) - -o = s:option(Value, _n("httpupgrade_path"), translate("HTTPUpgrade Path")) -o.placeholder = "/" -o:depends({ [_n("transport")] = "httpupgrade" }) - --- [[ gRPC部分 ]]-- -o = s:option(Value, _n("grpc_serviceName"), "ServiceName") -o:depends({ [_n("transport")] = "grpc" }) - -o = s:option(Flag, _n("grpc_health_check"), translate("Health check")) -o:depends({ [_n("transport")] = "grpc" }) - -o = s:option(Value, _n("grpc_idle_timeout"), translate("Idle timeout")) -o.default = "10" -o:depends({ [_n("grpc_health_check")] = true }) - -o = s:option(Value, _n("grpc_health_check_timeout"), translate("Health check timeout")) -o.default = "20" -o:depends({ [_n("grpc_health_check")] = true }) - -o = s:option(Flag, _n("grpc_permit_without_stream"), translate("Permit without stream")) -o.default = "0" -o:depends({ [_n("grpc_health_check")] = true }) - --- [[ User-Agent ]]-- -o = s:option(Value, _n("user_agent"), translate("User-Agent")) -o:depends({ [_n("tcp_guise")] = "http" }) -o:depends({ [_n("transport")] = "http" }) -o:depends({ [_n("transport")] = "ws" }) -o:depends({ [_n("transport")] = "httpupgrade" }) - --- [[ Mux ]]-- -o = s:option(Flag, _n("mux"), translate("Mux")) -o.rmempty = false -o:depends({ [_n("protocol")] = "vmess" }) -o:depends({ [_n("protocol")] = "vless", [_n("flow")] = "" }) -o:depends({ [_n("protocol")] = "shadowsocks", [_n("uot")] = "" }) -o:depends({ [_n("protocol")] = "trojan" }) - -o = s:option(ListValue, _n("mux_type"), translate("Mux")) -o:value("smux") -o:value("yamux") -o:value("h2mux") -o:depends({ [_n("mux")] = true }) - -o = s:option(Value, _n("mux_concurrency"), translate("Mux concurrency")) -o.default = 4 -o:depends({ [_n("mux")] = true, [_n("tcpbrutal")] = false }) - -o = s:option(Flag, _n("mux_padding"), translate("Padding")) -o.default = 0 -o:depends({ [_n("mux")] = true }) - --- [[ TCP Brutal ]]-- -o = s:option(Flag, _n("tcpbrutal"), translate("TCP Brutal")) -o.default = 0 -o:depends({ [_n("mux")] = true }) - -o = s:option(Value, _n("tcpbrutal_up_mbps"), translate("Max upload Mbps")) -o.default = "10" -o:depends({ [_n("tcpbrutal")] = true }) - -o = s:option(Value, _n("tcpbrutal_down_mbps"), translate("Max download Mbps")) -o.default = "50" -o:depends({ [_n("tcpbrutal")] = true }) - -o = s:option(Flag, _n("shadowtls"), "ShadowTLS") -o.default = 0 -o:depends({ [_n("protocol")] = "vmess", [_n("tls")] = false }) -o:depends({ [_n("protocol")] = "shadowsocks", [_n("tls")] = false }) - -o = s:option(ListValue, _n("shadowtls_version"), "ShadowTLS " .. translate("Version")) -o.default = "1" -o:value("1", "ShadowTLS v1") -o:value("2", "ShadowTLS v2") -o:value("3", "ShadowTLS v3") -o:depends({ [_n("shadowtls")] = true }) - -o = s:option(Value, _n("shadowtls_password"), "ShadowTLS " .. translate("Password")) -o.password = true -o:depends({ [_n("shadowtls")] = true, [_n("shadowtls_version")] = "2" }) -o:depends({ [_n("shadowtls")] = true, [_n("shadowtls_version")] = "3" }) - -o = s:option(Value, _n("shadowtls_serverName"), "ShadowTLS " .. translate("Domain")) -o:depends({ [_n("shadowtls")] = true }) - -if singbox_tags:find("with_utls") then - o = s:option(Flag, _n("shadowtls_utls"), "ShadowTLS " .. translate("uTLS")) - o.default = "0" - o:depends({ [_n("shadowtls")] = true }) - - o = s:option(ListValue, _n("shadowtls_fingerprint"), "ShadowTLS " .. translate("Finger Print")) - o:value("chrome") - o:value("firefox") - o:value("edge") - o:value("safari") - -- o:value("360") - o:value("qq") - o:value("ios") - -- o:value("android") - o:value("random") - -- o:value("randomized") - o.default = "chrome" - o:depends({ [_n("shadowtls")] = true, [_n("shadowtls_utls")] = true }) -end - --- [[ SIP003 plugin ]]-- -o = s:option(Flag, _n("plugin_enabled"), translate("plugin")) -o.default = 0 -o:depends({ [_n("protocol")] = "shadowsocks" }) - -o = s:option(ListValue, _n("plugin"), "SIP003 " .. translate("plugin")) -o.default = "obfs-local" -o:depends({ [_n("plugin_enabled")] = true }) -o:value("obfs-local") -o:value("v2ray-plugin") - -o = s:option(Value, _n("plugin_opts"), translate("opts")) -o:depends({ [_n("plugin_enabled")] = true }) - -o = s:option(ListValue, _n("domain_strategy"), translate("Domain Strategy"), translate("If is domain name, The requested domain name will be resolved to IP before connect.")) -o.default = "" -o:value("", translate("Auto")) -o:value("prefer_ipv4", translate("Prefer IPv4")) -o:value("prefer_ipv6", translate("Prefer IPv6")) -o:value("ipv4_only", translate("IPv4 Only")) -o:value("ipv6_only", translate("IPv6 Only")) -o:depends({ [_n("protocol")] = "socks" }) -o:depends({ [_n("protocol")] = "http" }) -o:depends({ [_n("protocol")] = "shadowsocks" }) -o:depends({ [_n("protocol")] = "vmess" }) -o:depends({ [_n("protocol")] = "trojan" }) -o:depends({ [_n("protocol")] = "wireguard" }) -o:depends({ [_n("protocol")] = "hysteria" }) -o:depends({ [_n("protocol")] = "vless" }) -o:depends({ [_n("protocol")] = "tuic" }) -o:depends({ [_n("protocol")] = "hysteria2" }) -o:depends({ [_n("protocol")] = "anytls" }) - -o = s:option(ListValue, _n("chain_proxy"), translate("Chain Proxy")) -o:value("", translate("Close(Not use)")) -o:value("1", translate("Preproxy Node")) -o:value("2", translate("Landing Node")) -for i, v in ipairs(s.fields[_n("protocol")].keylist) do - if not v:find("_") then - o:depends({ [_n("protocol")] = v }) - end -end - -o1 = s:option(ListValue, _n("preproxy_node"), translate("Preproxy Node"), translate("Only support a layer of proxy.")) -o1:depends({ [_n("chain_proxy")] = "1" }) -o1.template = appname .. "/cbi/nodes_listvalue" -o1.group = {} - -o2 = s:option(ListValue, _n("to_node"), translate("Landing Node"), translate("Only support a layer of proxy.")) -o2:depends({ [_n("chain_proxy")] = "2" }) -o2.template = appname .. "/cbi/nodes_listvalue" -o2.group = {} - -for k, v in pairs(nodes_table) do - if v.type == "sing-box" and v.id ~= arg[1] and (not v.chain_proxy or v.chain_proxy == "") then - o1:value(v.id, v.remark) - o1.group[#o1.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - o2:value(v.id, v.remark) - o2.group[#o2.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - end -end - -api.luci_types(arg[1], m, s, type_name, option_prefix) diff --git a/small/luci-app-passwall/luasrc/model/cbi/passwall/client/type/ss-rust.lua b/small/luci-app-passwall/luasrc/model/cbi/passwall/client/type/ss-rust.lua deleted file mode 100644 index cfc6e4740c..0000000000 --- a/small/luci-app-passwall/luasrc/model/cbi/passwall/client/type/ss-rust.lua +++ /dev/null @@ -1,75 +0,0 @@ -local m, s = ... - -local api = require "luci.passwall.api" - -if not api.is_finded("sslocal") then - return -end - -local type_name = "SS-Rust" - -local option_prefix = "ssrust_" - -local function _n(name) - return option_prefix .. name -end - -local ssrust_encrypt_method_list = { - "none", "plain", - "aes-128-gcm", "aes-256-gcm", "chacha20-ietf-poly1305", - "2022-blake3-aes-128-gcm", "2022-blake3-aes-256-gcm", "2022-blake3-chacha20-poly1305" -} - --- [[ Shadowsocks Rust ]] - -s.fields["type"]:value(type_name, translate("Shadowsocks Rust")) - -o = s:option(ListValue, _n("del_protocol")) --始终隐藏,用于删除 protocol -o:depends({ [_n("__hide")] = "1" }) -o.rewrite_option = "protocol" - -o = s:option(Value, _n("address"), translate("Address (Support Domain Name)")) - -o = s:option(Value, _n("port"), translate("Port")) -o.datatype = "port" - -o = s:option(Value, _n("password"), translate("Password")) -o.password = true - -o = s:option(Value, _n("method"), translate("Encrypt Method")) -for a, t in ipairs(ssrust_encrypt_method_list) do o:value(t) end - -o = s:option(Value, _n("timeout"), translate("Connection Timeout")) -o.datatype = "uinteger" -o.default = 300 - -o = s:option(ListValue, _n("tcp_fast_open"), "TCP " .. translate("Fast Open"), translate("Need node support required")) -o:value("false") -o:value("true") - -o = s:option(Flag, _n("plugin_enabled"), translate("plugin")) -o.default = 0 - -o = s:option(Value, _n("plugin"), "SIP003 " .. translate("plugin"), translate("Supports custom SIP003 plugins, Make sure the plugin is installed.")) -o.default = "none" -o:value("none", translate("none")) -if api.is_finded("xray-plugin") then o:value("xray-plugin") end -if api.is_finded("v2ray-plugin") then o:value("v2ray-plugin") end -if api.is_finded("obfs-local") then o:value("obfs-local") end -if api.is_finded("shadow-tls") then o:value("shadow-tls") end -o:depends({ [_n("plugin_enabled")] = true }) -o.validate = function(self, value, t) - if value and value ~= "" and value ~= "none" then - if not api.is_finded(value) then - return nil, value .. ": " .. translate("Can't find this file!") - else - return value - end - end - return nil -end - -o = s:option(Value, _n("plugin_opts"), translate("opts")) -o:depends({ [_n("plugin_enabled")] = true }) - -api.luci_types(arg[1], m, s, type_name, option_prefix) diff --git a/small/luci-app-passwall/luasrc/model/cbi/passwall/client/type/ss.lua b/small/luci-app-passwall/luasrc/model/cbi/passwall/client/type/ss.lua deleted file mode 100644 index b323aba15d..0000000000 --- a/small/luci-app-passwall/luasrc/model/cbi/passwall/client/type/ss.lua +++ /dev/null @@ -1,65 +0,0 @@ -local m, s = ... - -local api = require "luci.passwall.api" - -if not api.is_finded("ss-local") and not api.is_finded("ss-redir") then - return -end - -local type_name = "SS" - -local option_prefix = "ss_" - -local function _n(name) - return option_prefix .. name -end - -local ss_encrypt_method_list = { - "rc4-md5", "aes-128-cfb", "aes-192-cfb", "aes-256-cfb", "aes-128-ctr", - "aes-192-ctr", "aes-256-ctr", "bf-cfb", "salsa20", "chacha20", "chacha20-ietf", - "aes-128-gcm", "aes-192-gcm", "aes-256-gcm", "chacha20-ietf-poly1305", - "xchacha20-ietf-poly1305" -} - --- [[ Shadowsocks Libev ]] - -s.fields["type"]:value(type_name, translate("Shadowsocks Libev")) - -o = s:option(ListValue, _n("del_protocol")) --始终隐藏,用于删除 protocol -o:depends({ [_n("__hide")] = "1" }) -o.rewrite_option = "protocol" - -o = s:option(Value, _n("address"), translate("Address (Support Domain Name)")) - -o = s:option(Value, _n("port"), translate("Port")) -o.datatype = "port" - -o = s:option(Value, _n("password"), translate("Password")) -o.password = true - -o = s:option(Value, _n("method"), translate("Encrypt Method")) -for a, t in ipairs(ss_encrypt_method_list) do o:value(t) end - -o = s:option(Value, _n("timeout"), translate("Connection Timeout")) -o.datatype = "uinteger" -o.default = 300 - -o = s:option(ListValue, _n("tcp_fast_open"), "TCP " .. translate("Fast Open"), translate("Need node support required")) -o:value("false") -o:value("true") - -o = s:option(Flag, _n("plugin_enabled"), translate("plugin")) -o.default = 0 - -o = s:option(ListValue, _n("plugin"), "SIP003 " .. translate("plugin")) -o.default = "none" -o:value("none", translate("none")) -if api.is_finded("xray-plugin") then o:value("xray-plugin") end -if api.is_finded("v2ray-plugin") then o:value("v2ray-plugin") end -if api.is_finded("obfs-local") then o:value("obfs-local") end -o:depends({ [_n("plugin_enabled")] = true }) - -o = s:option(Value, _n("plugin_opts"), translate("opts")) -o:depends({ [_n("plugin_enabled")] = true }) - -api.luci_types(arg[1], m, s, type_name, option_prefix) diff --git a/small/luci-app-passwall/luasrc/model/cbi/passwall/client/type/ssr.lua b/small/luci-app-passwall/luasrc/model/cbi/passwall/client/type/ssr.lua deleted file mode 100644 index 153ea6154b..0000000000 --- a/small/luci-app-passwall/luasrc/model/cbi/passwall/client/type/ssr.lua +++ /dev/null @@ -1,73 +0,0 @@ -local m, s = ... - -local api = require "luci.passwall.api" - -if not api.is_finded("ssr-local") and not api.is_finded("ssr-redir")then - return -end - -local type_name = "SSR" - -local option_prefix = "ssr_" - -local function _n(name) - return option_prefix .. name -end - -local ssr_encrypt_method_list = { - "none", "table", "rc2-cfb", "rc4", "rc4-md5", "rc4-md5-6", "aes-128-cfb", - "aes-192-cfb", "aes-256-cfb", "aes-128-ctr", "aes-192-ctr", "aes-256-ctr", - "bf-cfb", "camellia-128-cfb", "camellia-192-cfb", "camellia-256-cfb", - "cast5-cfb", "des-cfb", "idea-cfb", "seed-cfb", "salsa20", "chacha20", - "chacha20-ietf" -} - -local ssr_protocol_list = { - "origin", "verify_simple", "verify_deflate", "verify_sha1", "auth_simple", - "auth_sha1", "auth_sha1_v2", "auth_sha1_v4", "auth_aes128_md5", - "auth_aes128_sha1", "auth_chain_a", "auth_chain_b", "auth_chain_c", - "auth_chain_d", "auth_chain_e", "auth_chain_f" -} -local ssr_obfs_list = { - "plain", "http_simple", "http_post", "random_head", "tls_simple", - "tls1.0_session_auth", "tls1.2_ticket_auth" -} - --- [[ ShadowsocksR Libev ]] - -s.fields["type"]:value(type_name, translate("ShadowsocksR Libev")) - -o = s:option(ListValue, _n("del_protocol")) --始终隐藏,用于删除 protocol -o:depends({ [_n("__hide")] = "1" }) -o.rewrite_option = "protocol" - -o = s:option(Value, _n("address"), translate("Address (Support Domain Name)")) - -o = s:option(Value, _n("port"), translate("Port")) -o.datatype = "port" - -o = s:option(Value, _n("password"), translate("Password")) -o.password = true - -o = s:option(ListValue, _n("method"), translate("Encrypt Method")) -for a, t in ipairs(ssr_encrypt_method_list) do o:value(t) end - -o = s:option(ListValue, _n("protocol"), translate("Protocol")) -for a, t in ipairs(ssr_protocol_list) do o:value(t) end - -o = s:option(Value, _n("protocol_param"), translate("Protocol_param")) - -o = s:option(ListValue, _n("obfs"), translate("Obfs")) -for a, t in ipairs(ssr_obfs_list) do o:value(t) end - -o = s:option(Value, _n("obfs_param"), translate("Obfs_param")) - -o = s:option(Value, _n("timeout"), translate("Connection Timeout")) -o.datatype = "uinteger" -o.default = 300 - -o = s:option(ListValue, _n("tcp_fast_open"), "TCP " .. translate("Fast Open"), translate("Need node support required")) -o:value("false") -o:value("true") - -api.luci_types(arg[1], m, s, type_name, option_prefix) diff --git a/small/luci-app-passwall/luasrc/model/cbi/passwall/client/type/trojan-plus.lua b/small/luci-app-passwall/luasrc/model/cbi/passwall/client/type/trojan-plus.lua deleted file mode 100644 index 0f2c207f1c..0000000000 --- a/small/luci-app-passwall/luasrc/model/cbi/passwall/client/type/trojan-plus.lua +++ /dev/null @@ -1,60 +0,0 @@ -local m, s = ... - -local api = require "luci.passwall.api" - -if not api.is_finded("trojan-plus") then - return -end - -local type_name = "Trojan-Plus" - -local option_prefix = "trojan_plus_" - -local function _n(name) - return option_prefix .. name -end - --- [[ Trojan Plus ]] - -s.fields["type"]:value(type_name, "Trojan-Plus") - -o = s:option(ListValue, _n("del_protocol")) --始终隐藏,用于删除 protocol -o:depends({ [_n("__hide")] = "1" }) -o.rewrite_option = "protocol" - -o = s:option(Value, _n("address"), translate("Address (Support Domain Name)")) - -o = s:option(Value, _n("port"), translate("Port")) -o.datatype = "port" - -o = s:option(Value, _n("password"), translate("Password")) -o.password = true - -o = s:option(ListValue, _n("tcp_fast_open"), "TCP " .. translate("Fast Open"), translate("Need node support required")) -o:value("false") -o:value("true") - -o = s:option(Flag, _n("tls"), translate("TLS")) -o.default = 0 -o.validate = function(self, value, t) - if value then - local type = s.fields["type"] and s.fields["type"]:formvalue(t) or "" - if value == "0" and type == type_name then - return nil, translate("Original Trojan only supported 'tls', please choose 'tls'.") - end - return value - end -end - -o = s:option(Flag, _n("tls_allowInsecure"), translate("allowInsecure"), translate("Whether unsafe connections are allowed. When checked, Certificate validation will be skipped.")) -o.default = "0" -o:depends({ [_n("tls")] = true }) - -o = s:option(Value, _n("tls_serverName"), translate("Domain")) -o:depends({ [_n("tls")] = true }) - -o = s:option(Flag, _n("tls_sessionTicket"), translate("Session Ticket")) -o.default = "0" -o:depends({ [_n("tls")] = true }) - -api.luci_types(arg[1], m, s, type_name, option_prefix) diff --git a/small/luci-app-passwall/luasrc/model/cbi/passwall/client/type/tuic.lua b/small/luci-app-passwall/luasrc/model/cbi/passwall/client/type/tuic.lua deleted file mode 100644 index cf748a3d4f..0000000000 --- a/small/luci-app-passwall/luasrc/model/cbi/passwall/client/type/tuic.lua +++ /dev/null @@ -1,137 +0,0 @@ -local m, s = ... - -local api = require "luci.passwall.api" - -if not api.is_finded("tuic-client") then - return -end - -local type_name = "TUIC" - -local option_prefix = "tuic_" - -local function _n(name) - return option_prefix .. name -end - --- [[ TUIC ]] - -s.fields["type"]:value(type_name, translate("TUIC")) - -o = s:option(ListValue, _n("del_protocol")) --始终隐藏,用于删除 protocol -o:depends({ [_n("__hide")] = "1" }) -o.rewrite_option = "protocol" - -o = s:option(Value, _n("address"), translate("Address (Support Domain Name)")) - -o = s:option(Value, _n("port"), translate("Port")) -o.datatype = "port" - -o = s:option(Value, _n("uuid"), translate("ID")) -o.password = true - --- Tuic Password for remote server connect -o = s:option(Value, _n("password"), translate("TUIC User Password For Connect Remote Server")) -o.password = true -o.rmempty = true -o.default = "" -o.rewrite_option = o.option - ---[[ --- Tuic username for local socks connect -o = s:option(Value, _n("socks_username"), translate("TUIC UserName For Local Socks")) -o.rmempty = true -o.default = "" -o.rewrite_option = o.option - --- Tuic Password for local socks connect -o = s:option(Value, _n("socks_password"), translate("TUIC Password For Local Socks")) -o.password = true -o.rmempty = true -o.default = "" -o.rewrite_option = o.option ---]] - -o = s:option(Value, _n("ip"), translate("Set the TUIC proxy server ip address")) -o.datatype = "ipaddr" -o.rmempty = true -o.rewrite_option = o.option - -o = s:option(ListValue, _n("udp_relay_mode"), translate("UDP relay mode")) -o:value("native", translate("native")) -o:value("quic", translate("QUIC")) -o.default = "native" -o.rmempty = true -o.rewrite_option = o.option - -o = s:option(ListValue, _n("congestion_control"), translate("Congestion control algorithm")) -o:value("bbr", translate("BBR")) -o:value("cubic", translate("CUBIC")) -o:value("new_reno", translate("New Reno")) -o.default = "cubic" -o.rmempty = true -o.rewrite_option = o.option - -o = s:option(Value, _n("heartbeat"), translate("Heartbeat interval(second)")) -o.datatype = "uinteger" -o.default = "3" -o.rmempty = true -o.rewrite_option = o.option - -o = s:option(Value, _n("timeout"), translate("Timeout for establishing a connection to server(second)")) -o.datatype = "uinteger" -o.default = "8" -o.rmempty = true -o.rewrite_option = o.option - -o = s:option(Value, _n("gc_interval"), translate("Garbage collection interval(second)")) -o.datatype = "uinteger" -o.default = "3" -o.rmempty = true -o.rewrite_option = o.option - -o = s:option(Value, _n("gc_lifetime"), translate("Garbage collection lifetime(second)")) -o.datatype = "uinteger" -o.default = "15" -o.rmempty = true -o.rewrite_option = o.option - -o = s:option(Value, _n("send_window"), translate("TUIC send window")) -o.datatype = "uinteger" -o.default = 20971520 -o.rmempty = true -o.rewrite_option = o.option - -o = s:option(Value, _n("receive_window"), translate("TUIC receive window")) -o.datatype = "uinteger" -o.default = 10485760 -o.rmempty = true -o.rewrite_option = o.option - -o = s:option(Value, _n("max_package_size"), translate("TUIC Maximum packet size the socks5 server can receive from external, in bytes")) -o.datatype = "uinteger" -o.default = 1500 -o.rmempty = true -o.rewrite_option = o.option - ---Tuic settings for the local inbound socks5 server -o = s:option(Flag, _n("dual_stack"), translate("Set if the listening socket should be dual-stack")) -o.default = 0 -o.rmempty = true -o.rewrite_option = o.option - -o = s:option(Flag, _n("disable_sni"), translate("Disable SNI")) -o.default = 0 -o.rmempty = true -o.rewrite_option = o.option - -o = s:option(Flag, _n("zero_rtt_handshake"), translate("Enable 0-RTT QUIC handshake")) -o.default = 0 -o.rmempty = true -o.rewrite_option = o.option - -o = s:option(DynamicList, _n("tls_alpn"), translate("TLS ALPN")) -o.rmempty = true -o.rewrite_option = o.option - -api.luci_types(arg[1], m, s, type_name, option_prefix) diff --git a/small/luci-app-passwall/luasrc/model/cbi/passwall/server/index.lua b/small/luci-app-passwall/luasrc/model/cbi/passwall/server/index.lua deleted file mode 100644 index d6ee9323b3..0000000000 --- a/small/luci-app-passwall/luasrc/model/cbi/passwall/server/index.lua +++ /dev/null @@ -1,91 +0,0 @@ -local api = require "luci.passwall.api" - -m = Map("passwall_server", translate("Server-Side")) -api.set_apply_on_parse(m) - -t = m:section(NamedSection, "global", "global") -t.anonymous = true -t.addremove = false - -e = t:option(Flag, "enable", translate("Enable")) -e.rmempty = false - -t = m:section(TypedSection, "user", translate("Users Manager")) -t.anonymous = true -t.addremove = true -t.sortable = true -t.template = "cbi/tblsection" -t.extedit = api.url("server_user", "%s") -function t.create(e, t) - local uuid = api.gen_uuid() - t = uuid - TypedSection.create(e, t) - luci.http.redirect(e.extedit:format(t)) -end -function t.remove(e, t) - e.map.proceed = true - e.map:del(t) - luci.http.redirect(api.url("server")) -end - -e = t:option(Flag, "enable", translate("Enable")) -e.width = "5%" -e.rmempty = false - -e = t:option(DummyValue, "status", translate("Status")) -e.rawhtml = true -e.cfgvalue = function(t, n) - return string.format('%s', translate("Collecting data...")) -end - -e = t:option(DummyValue, "remarks", translate("Remarks")) -e.width = "15%" - -e = t:option(DummyValue, "type", translate("Type")) -e.width = "20%" -e.rawhtml = true -e.cfgvalue = function(t, n) - local str = "" - local type = m:get(n, "type") or "" - if type == "sing-box" or type == "Xray" then - local protocol = m:get(n, "protocol") or "" - if protocol == "vmess" then - protocol = "VMess" - elseif protocol == "vless" then - protocol = "VLESS" - elseif protocol == "shadowsocks" then - protocol = "SS" - elseif protocol == "shadowsocksr" then - protocol = "SSR" - elseif protocol == "wireguard" then - protocol = "WG" - elseif protocol == "hysteria" then - protocol = "HY" - elseif protocol == "hysteria2" then - protocol = "HY2" - elseif protocol == "anytls" then - protocol = "AnyTLS" - else - protocol = protocol:gsub("^%l",string.upper) - local custom = m:get(n, "custom") or "0" - if custom == "1" then - protocol = translate("Custom Config") - end - end - if type == "sing-box" then type = "Sing-Box" end - type = type .. " " .. protocol - end - str = str .. translate(type) - return str -end - -e = t:option(DummyValue, "port", translate("Port")) - -e = t:option(Flag, "log", translate("Log")) -e.default = "1" -e.rmempty = false - -m:append(Template("passwall/server/log")) - -m:append(Template("passwall/server/users_list_status")) -return m diff --git a/small/luci-app-passwall/luasrc/model/cbi/passwall/server/type/hysteria2.lua b/small/luci-app-passwall/luasrc/model/cbi/passwall/server/type/hysteria2.lua deleted file mode 100644 index 49d264693c..0000000000 --- a/small/luci-app-passwall/luasrc/model/cbi/passwall/server/type/hysteria2.lua +++ /dev/null @@ -1,111 +0,0 @@ -local m, s = ... - -local api = require "luci.passwall.api" - -if not api.finded_com("hysteria") then - return -end - -local fs = api.fs - -local type_name = "Hysteria2" - -local option_prefix = "hysteria2_" - -local function _n(name) - return option_prefix .. name -end - --- [[ Hysteria2 ]] - -s.fields["type"]:value(type_name, "Hysteria2") - -o = s:option(Flag, _n("custom"), translate("Use Custom Config")) - -o = s:option(Value, _n("port"), translate("Listen Port")) -o.datatype = "port" -o:depends({ [_n("custom")] = false }) - -o = s:option(Value, _n("obfs"), translate("Obfs Password")) -o.rewrite_option = o.option -o:depends({ [_n("custom")] = false }) - -o = s:option(Value, _n("auth_password"), translate("Auth Password")) -o.password = true -o.rewrite_option = o.option -o:depends({ [_n("custom")] = false }) - -o = s:option(Flag, _n("udp"), translate("UDP")) -o.default = "1" -o.rewrite_option = o.option -o:depends({ [_n("custom")] = false }) - -o = s:option(Value, _n("up_mbps"), translate("Max upload Mbps")) -o.rewrite_option = o.option -o:depends({ [_n("custom")] = false }) - -o = s:option(Value, _n("down_mbps"), translate("Max download Mbps")) -o.rewrite_option = o.option -o:depends({ [_n("custom")] = false }) - -o = s:option(Flag, _n("ignoreClientBandwidth"), translate("ignoreClientBandwidth")) -o.default = "0" -o.rewrite_option = o.option -o:depends({ [_n("custom")] = false }) - -o = s:option(FileUpload, _n("tls_certificateFile"), translate("Public key absolute path"), translate("as:") .. "/etc/ssl/fullchain.pem") -o.default = m:get(s.section, "tls_certificateFile") or "/etc/config/ssl/" .. arg[1] .. ".pem" -if o and o:formvalue(arg[1]) then o.default = o:formvalue(arg[1]) end -o.validate = function(self, value, t) - if value and value ~= "" then - if not fs.access(value) then - return nil, translate("Can't find this file!") - else - return value - end - end - return nil -end -o:depends({ [_n("custom")] = false }) - -o = s:option(FileUpload, _n("tls_keyFile"), translate("Private key absolute path"), translate("as:") .. "/etc/ssl/private.key") -o.default = m:get(s.section, "tls_keyFile") or "/etc/config/ssl/" .. arg[1] .. ".key" -if o and o:formvalue(arg[1]) then o.default = o:formvalue(arg[1]) end -o.validate = function(self, value, t) - if value and value ~= "" then - if not fs.access(value) then - return nil, translate("Can't find this file!") - else - return value - end - end - return nil -end -o:depends({ [_n("custom")] = false }) - -o = s:option(TextValue, _n("custom_config"), translate("Custom Config")) -o.rows = 10 -o.wrap = "off" -o:depends({ [_n("custom")] = true }) -o.validate = function(self, value, t) - if value and api.jsonc.parse(value) then - return value - else - return nil, translate("Must be JSON text!") - end -end -o.custom_cfgvalue = function(self, section, value) - local config_str = m:get(section, "config_str") - if config_str then - return api.base64Decode(config_str) - end -end -o.custom_write = function(self, section, value) - m:set(section, "config_str", api.base64Encode(value)) -end - -o = s:option(Flag, _n("log"), translate("Log")) -o.default = "1" -o.rmempty = false - -api.luci_types(arg[1], m, s, type_name, option_prefix) diff --git a/small/luci-app-passwall/luasrc/model/cbi/passwall/server/type/ray.lua b/small/luci-app-passwall/luasrc/model/cbi/passwall/server/type/ray.lua deleted file mode 100644 index 36962cd3cb..0000000000 --- a/small/luci-app-passwall/luasrc/model/cbi/passwall/server/type/ray.lua +++ /dev/null @@ -1,475 +0,0 @@ -local m, s = ... - -local api = require "luci.passwall.api" - -if not api.finded_com("xray") then - return -end - -local fs = api.fs - -local type_name = "Xray" - -local option_prefix = "xray_" - -local function _n(name) - return option_prefix .. name -end - -local x_ss_method_list = { - "none", "plain", "aes-128-gcm", "aes-256-gcm", "chacha20-poly1305", "xchacha20-poly1305", "2022-blake3-aes-128-gcm", "2022-blake3-aes-256-gcm", "2022-blake3-chacha20-poly1305" -} - -local header_type_list = { - "none", "srtp", "utp", "wechat-video", "dtls", "wireguard", "dns" -} - --- [[ Xray ]] - -s.fields["type"]:value(type_name, "Xray") - -o = s:option(Flag, _n("custom"), translate("Use Custom Config")) - -o = s:option(ListValue, _n("protocol"), translate("Protocol")) -o:value("vmess", "Vmess") -o:value("vless", "VLESS") -o:value("http", "HTTP") -o:value("socks", "Socks") -o:value("shadowsocks", "Shadowsocks") -o:value("trojan", "Trojan") -o:value("dokodemo-door", "dokodemo-door") -o:depends({ [_n("custom")] = false }) - -o = s:option(Value, _n("port"), translate("Listen Port")) -o.datatype = "port" -o:depends({ [_n("custom")] = false }) - -o = s:option(Flag, _n("auth"), translate("Auth")) -o.validate = function(self, value, t) - if value and value == "1" then - local user_v = s.fields[_n("username")] and s.fields[_n("username")]:formvalue(t) or "" - local pass_v = s.fields[_n("password")] and s.fields[_n("password")]:formvalue(t) or "" - if user_v == "" or pass_v == "" then - return nil, translate("Username and Password must be used together!") - end - end - return value -end -o:depends({ [_n("protocol")] = "socks" }) -o:depends({ [_n("protocol")] = "http" }) - -o = s:option(Value, _n("username"), translate("Username")) -o:depends({ [_n("auth")] = true }) - -o = s:option(Value, _n("password"), translate("Password")) -o.password = true -o:depends({ [_n("auth")] = true }) -o:depends({ [_n("protocol")] = "shadowsocks" }) - -o = s:option(ListValue, _n("d_protocol"), translate("Destination protocol")) -o:value("tcp", "TCP") -o:value("udp", "UDP") -o:value("tcp,udp", "TCP,UDP") -o:depends({ [_n("protocol")] = "dokodemo-door" }) - -o = s:option(Value, _n("d_address"), translate("Destination address")) -o:depends({ [_n("protocol")] = "dokodemo-door" }) - -o = s:option(Value, _n("d_port"), translate("Destination port")) -o.datatype = "port" -o:depends({ [_n("protocol")] = "dokodemo-door" }) - -o = s:option(Value, _n("decryption"), translate("Encrypt Method") .. " (decryption)") -o.default = "none" -o.placeholder = "none" -o:depends({ [_n("protocol")] = "vless" }) -o.validate = function(self, value) - value = api.trim(value) - return (value == "" and "none" or value) -end - -o = s:option(ListValue, _n("x_ss_method"), translate("Encrypt Method")) -o.rewrite_option = "method" -for a, t in ipairs(x_ss_method_list) do o:value(t) end -o:depends({ [_n("protocol")] = "shadowsocks" }) - -o = s:option(Flag, _n("iv_check"), translate("IV Check")) -o:depends({ [_n("protocol")] = "shadowsocks" }) - -o = s:option(ListValue, _n("ss_network"), translate("Transport")) -o.default = "tcp,udp" -o:value("tcp", "TCP") -o:value("udp", "UDP") -o:value("tcp,udp", "TCP,UDP") -o:depends({ [_n("protocol")] = "shadowsocks" }) - -o = s:option(Flag, _n("udp_forward"), translate("UDP Forward")) -o.default = "1" -o.rmempty = false -o:depends({ [_n("protocol")] = "socks" }) - -o = s:option(DynamicList, _n("uuid"), translate("ID") .. "/" .. translate("Password")) -for i = 1, 3 do - o:value(api.gen_uuid(1)) -end -o:depends({ [_n("protocol")] = "vmess" }) -o:depends({ [_n("protocol")] = "vless" }) -o:depends({ [_n("protocol")] = "trojan" }) - -o = s:option(ListValue, _n("flow"), translate("flow")) -o.default = "" -o:value("", translate("Disable")) -o:value("xtls-rprx-vision") -o:depends({ [_n("protocol")] = "vless" }) - -o = s:option(Flag, _n("tls"), translate("TLS")) -o.default = 0 -o.validate = function(self, value, t) - if value then - local reality = s.fields[_n("reality")] and s.fields[_n("reality")]:formvalue(t) or nil - if reality and reality == "1" then return value end - if value == "1" then - local ca = s.fields[_n("tls_certificateFile")] and s.fields[_n("tls_certificateFile")]:formvalue(t) or "" - local key = s.fields[_n("tls_keyFile")] and s.fields[_n("tls_keyFile")]:formvalue(t) or "" - if ca == "" or key == "" then - return nil, translate("Public key and Private key path can not be empty!") - end - end - return value - end -end -o:depends({ [_n("protocol")] = "vmess" }) -o:depends({ [_n("protocol")] = "vless" }) -o:depends({ [_n("protocol")] = "http" }) -o:depends({ [_n("protocol")] = "socks" }) -o:depends({ [_n("protocol")] = "shadowsocks" }) -o:depends({ [_n("protocol")] = "trojan" }) - --- [[ REALITY部分 ]] -- -o = s:option(Flag, _n("reality"), translate("REALITY")) -o.default = 0 -o:depends({ [_n("tls")] = true }) - -o = s:option(Value, _n("reality_private_key"), translate("Private Key")) -o:depends({ [_n("reality")] = true }) - -o = s:option(DynamicList, _n("reality_shortId"), translate("Short Id")) -o:depends({ [_n("reality")] = true }) - -o = s:option(Value, _n("reality_dest"), translate("Dest")) -o.default = "google.com:443" -o:depends({ [_n("reality")] = true }) - -o = s:option(DynamicList, _n("reality_serverNames"), translate("serverNames")) -o:depends({ [_n("reality")] = true }) -function o.write(self, section, value) - local t = {} - local t2 = {} - if type(value) == "table" then - local x - for _, x in ipairs(value) do - if x and #x > 0 then - if not t2[x] then - t2[x] = x - t[#t+1] = x - end - end - end - else - t = { value } - end - return DynamicList.write(self, section, t) -end - -o = s:option(ListValue, _n("alpn"), translate("alpn")) -o.default = "h2,http/1.1" -o:value("h3") -o:value("h2") -o:value("h3,h2") -o:value("http/1.1") -o:value("h2,http/1.1") -o:value("h3,h2,http/1.1") -o:depends({ [_n("tls")] = true, [_n("reality")] = false }) - -o = s:option(Flag, _n("use_mldsa65Seed"), translate("ML-DSA-65")) -o.default = "0" -o:depends({ [_n("reality")] = true }) - -o = s:option(TextValue, _n("reality_mldsa65Seed"), "ML-DSA-65 " .. translate("Private Key")) -o.default = "" -o.rows = 5 -o.wrap = "soft" -o:depends({ [_n("use_mldsa65Seed")] = true }) -o.validate = function(self, value) - return api.trim(value:gsub("[\r\n]", "")) -end - --- o = s:option(Value, _n("minversion"), translate("minversion")) --- o.default = "1.3" --- o:value("1.3") ---o:depends({ [_n("tls")] = true }) - --- [[ TLS部分 ]] -- - -o = s:option(FileUpload, _n("tls_certificateFile"), translate("Public key absolute path"), translate("as:") .. "/etc/ssl/fullchain.pem") -o.default = m:get(s.section, "tls_certificateFile") or "/etc/config/ssl/" .. arg[1] .. ".pem" -if o and o:formvalue(arg[1]) then o.default = o:formvalue(arg[1]) end -o:depends({ [_n("tls")] = true, [_n("reality")] = false }) -o.validate = function(self, value, t) - if value and value ~= "" then - if not fs.access(value) then - return nil, translate("Can't find this file!") - else - return value - end - end - return nil -end - -o = s:option(FileUpload, _n("tls_keyFile"), translate("Private key absolute path"), translate("as:") .. "/etc/ssl/private.key") -o.default = m:get(s.section, "tls_keyFile") or "/etc/config/ssl/" .. arg[1] .. ".key" -if o and o:formvalue(arg[1]) then o.default = o:formvalue(arg[1]) end -o:depends({ [_n("tls")] = true, [_n("reality")] = false }) -o.validate = function(self, value, t) - if value and value ~= "" then - if not fs.access(value) then - return nil, translate("Can't find this file!") - else - return value - end - end - return nil -end - -o = s:option(Flag, _n("ech"), translate("ECH")) -o.default = "0" -o:depends({ [_n("tls")] = true, [_n("flow")] = "", [_n("reality")] = false }) - -o = s:option(TextValue, _n("ech_key"), translate("ECH Key")) -o.default = "" -o.rows = 5 -o.wrap = "soft" -o:depends({ [_n("ech")] = true }) -o.validate = function(self, value) - return api.trim(value:gsub("[\r\n]", "")) -end - -o = s:option(ListValue, _n("transport"), translate("Transport")) -o:value("raw", "RAW") -o:value("mkcp", "mKCP") -o:value("ws", "WebSocket") -o:value("grpc", "gRPC") -o:value("httpupgrade", "HttpUpgrade") -o:value("xhttp", "XHTTP") -o:depends({ [_n("protocol")] = "vmess" }) -o:depends({ [_n("protocol")] = "vless" }) -o:depends({ [_n("protocol")] = "socks" }) -o:depends({ [_n("protocol")] = "shadowsocks" }) -o:depends({ [_n("protocol")] = "trojan" }) - --- [[ WebSocket部分 ]]-- - -o = s:option(Value, _n("ws_host"), translate("WebSocket Host")) -o:depends({ [_n("transport")] = "ws" }) - -o = s:option(Value, _n("ws_path"), translate("WebSocket Path")) -o:depends({ [_n("transport")] = "ws" }) - --- [[ HttpUpgrade部分 ]]-- -o = s:option(Value, _n("httpupgrade_host"), translate("HttpUpgrade Host")) -o:depends({ [_n("transport")] = "httpupgrade" }) - -o = s:option(Value, _n("httpupgrade_path"), translate("HttpUpgrade Path")) -o.placeholder = "/" -o:depends({ [_n("transport")] = "httpupgrade" }) - --- [[ XHTTP部分 ]]-- -o = s:option(Value, _n("xhttp_host"), translate("XHTTP Host")) -o:depends({ [_n("transport")] = "xhttp" }) - -o = s:option(Value, _n("xhttp_path"), translate("XHTTP Path")) -o.placeholder = "/" -o:depends({ [_n("transport")] = "xhttp" }) - -o = s:option(Value, _n("xhttp_maxuploadsize"), translate("maxUploadSize")) -o.default = "1000000" -o:depends({ [_n("transport")] = "xhttp" }) - -o = s:option(Value, _n("xhttp_maxconcurrentuploads"), translate("maxConcurrentUploads")) -o.default = "10" -o:depends({ [_n("transport")] = "xhttp" }) - --- [[ TCP部分 ]]-- - --- TCP伪装 -o = s:option(ListValue, _n("tcp_guise"), translate("Camouflage Type")) -o:value("none", "none") -o:value("http", "http") -o:depends({ [_n("transport")] = "raw" }) - --- HTTP域名 -o = s:option(DynamicList, _n("tcp_guise_http_host"), translate("HTTP Host")) -o:depends({ [_n("tcp_guise")] = "http" }) - --- HTTP路径 -o = s:option(DynamicList, _n("tcp_guise_http_path"), translate("HTTP Path")) -o:depends({ [_n("tcp_guise")] = "http" }) - --- [[ mKCP部分 ]]-- - -o = s:option(ListValue, _n("mkcp_guise"), translate("Camouflage Type"), translate('
none: default, no masquerade, data sent is packets with no characteristics.
srtp: disguised as an SRTP packet, it will be recognized as video call data (such as FaceTime).
utp: packets disguised as uTP will be recognized as bittorrent downloaded data.
wechat-video: packets disguised as WeChat video calls.
dtls: disguised as DTLS 1.2 packet.
wireguard: disguised as a WireGuard packet. (not really WireGuard protocol)
dns: Disguising traffic as DNS requests.')) -for a, t in ipairs(header_type_list) do o:value(t) end -o:depends({ [_n("transport")] = "mkcp" }) - -o = s:option(Value, _n("mkcp_domain"), translate("Camouflage Domain"), translate("Use it together with the DNS disguised type. You can fill in any domain.")) -o:depends({ [_n("mkcp_guise")] = "dns" }) - -o = s:option(Value, _n("mkcp_mtu"), translate("KCP MTU")) -o.default = "1350" -o:depends({ [_n("transport")] = "mkcp" }) - -o = s:option(Value, _n("mkcp_tti"), translate("KCP TTI")) -o.default = "20" -o:depends({ [_n("transport")] = "mkcp" }) - -o = s:option(Value, _n("mkcp_uplinkCapacity"), translate("KCP uplinkCapacity")) -o.default = "5" -o:depends({ [_n("transport")] = "mkcp" }) - -o = s:option(Value, _n("mkcp_downlinkCapacity"), translate("KCP downlinkCapacity")) -o.default = "20" -o:depends({ [_n("transport")] = "mkcp" }) - -o = s:option(Flag, _n("mkcp_congestion"), translate("KCP Congestion")) -o:depends({ [_n("transport")] = "mkcp" }) - -o = s:option(Value, _n("mkcp_readBufferSize"), translate("KCP readBufferSize")) -o.default = "1" -o:depends({ [_n("transport")] = "mkcp" }) - -o = s:option(Value, _n("mkcp_writeBufferSize"), translate("KCP writeBufferSize")) -o.default = "1" -o:depends({ [_n("transport")] = "mkcp" }) - -o = s:option(Value, _n("mkcp_seed"), translate("KCP Seed")) -o:depends({ [_n("transport")] = "mkcp" }) - --- [[ gRPC部分 ]]-- -o = s:option(Value, _n("grpc_serviceName"), "ServiceName") -o:depends({ [_n("transport")] = "grpc" }) - -o = s:option(Flag, _n("acceptProxyProtocol"), translate("acceptProxyProtocol"), translate("Whether to receive PROXY protocol, when this node want to be fallback or forwarded by proxy, it must be enable, otherwise it cannot be used.")) -o.default = "0" -o:depends({ [_n("custom")] = false }) - --- [[ Fallback部分 ]]-- -o = s:option(Flag, _n("fallback"), translate("Fallback")) -o:depends({ [_n("protocol")] = "vless", [_n("transport")] = "raw" }) -o:depends({ [_n("protocol")] = "trojan", [_n("transport")] = "raw" }) - ---[[ -o = s:option(Value, _n("fallback_alpn"), "Fallback alpn") -o:depends({ [_n("fallback")] = true }) - -o = s:option(Value, _n("fallback_path"), "Fallback path") -o:depends({ [_n("fallback")] = true }) - -o = s:option(Value, _n("fallback_dest"), "Fallback dest") -o:depends({ [_n("fallback")] = true }) - -o = s:option(Value, _n("fallback_xver"), "Fallback xver") -o.default = 0 -o:depends({ [_n("fallback")] = true }) -]]-- - -o = s:option(DynamicList, _n("fallback_list"), "Fallback", translate("format: dest,path,xver")) -o:depends({ [_n("fallback")] = true }) - -o = s:option(Flag, _n("bind_local"), translate("Bind Local"), translate("When selected, it can only be accessed localhost.")) -o.default = "0" -o:depends({ [_n("custom")] = false }) - -o = s:option(Flag, _n("accept_lan"), translate("Accept LAN Access"), translate("When selected, it can accessed lan , this will not be safe!")) -o.default = "0" -o:depends({ [_n("custom")] = false }) - -local nodes_table = {} -for k, e in ipairs(api.get_valid_nodes()) do - if e.node_type == "normal" and e.type == type_name then - nodes_table[#nodes_table + 1] = { - id = e[".name"], - remarks = e["remark"], - group = e["group"] - } - end -end - -o = s:option(ListValue, _n("outbound_node"), translate("outbound node")) -o:value("", translate("Close")) -o:value("_socks", translate("Custom Socks")) -o:value("_http", translate("Custom HTTP")) -o:value("_iface", translate("Custom Interface")) -o.template = api.appname .. "/cbi/nodes_listvalue" -o.group = {"","","",""} -for k, v in pairs(nodes_table) do - o:value(v.id, v.remarks) - o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") -end -o:depends({ [_n("custom")] = false }) - -o = s:option(Value, _n("outbound_node_address"), translate("Address (Support Domain Name)")) -o:depends({ [_n("outbound_node")] = "_socks"}) -o:depends({ [_n("outbound_node")] = "_http"}) - -o = s:option(Value, _n("outbound_node_port"), translate("Port")) -o.datatype = "port" -o:depends({ [_n("outbound_node")] = "_socks"}) -o:depends({ [_n("outbound_node")] = "_http"}) - -o = s:option(Value, _n("outbound_node_username"), translate("Username")) -o:depends({ [_n("outbound_node")] = "_socks"}) -o:depends({ [_n("outbound_node")] = "_http"}) - -o = s:option(Value, _n("outbound_node_password"), translate("Password")) -o.password = true -o:depends({ [_n("outbound_node")] = "_socks"}) -o:depends({ [_n("outbound_node")] = "_http"}) - -o = s:option(Value, _n("outbound_node_iface"), translate("Interface")) -o.default = "eth1" -o:depends({ [_n("outbound_node")] = "_iface"}) - -o = s:option(TextValue, _n("custom_config"), translate("Custom Config")) -o.rows = 10 -o.wrap = "off" -o:depends({ [_n("custom")] = true }) -o.validate = function(self, value, t) - if value and api.jsonc.parse(value) then - return value - else - return nil, translate("Must be JSON text!") - end -end -o.custom_cfgvalue = function(self, section, value) - local config_str = m:get(section, "config_str") - if config_str then - return api.base64Decode(config_str) - end -end -o.custom_write = function(self, section, value) - m:set(section, "config_str", api.base64Encode(value)) -end - -o = s:option(Flag, _n("log"), translate("Log")) -o.default = "1" -o.rmempty = false - -o = s:option(ListValue, _n("loglevel"), translate("Log Level")) -o.default = "warning" -o:value("debug") -o:value("info") -o:value("warning") -o:value("error") -o:depends({ [_n("log")] = true }) - -api.luci_types(arg[1], m, s, type_name, option_prefix) diff --git a/small/luci-app-passwall/luasrc/model/cbi/passwall/server/type/sing-box.lua b/small/luci-app-passwall/luasrc/model/cbi/passwall/server/type/sing-box.lua deleted file mode 100644 index 8e5f1f4605..0000000000 --- a/small/luci-app-passwall/luasrc/model/cbi/passwall/server/type/sing-box.lua +++ /dev/null @@ -1,474 +0,0 @@ -local m, s = ... - -local api = require "luci.passwall.api" - -local singbox_bin = api.finded_com("sing-box") - -if not singbox_bin then - return -end - -local local_version = api.get_app_version("sing-box") -local version_ge_1_12_0 = api.compare_versions(local_version:match("[^v]+"), ">=", "1.12.0") - -local fs = api.fs - -local singbox_tags = luci.sys.exec(singbox_bin .. " version | grep 'Tags:' | awk '{print $2}'") - -local type_name = "sing-box" - -local option_prefix = "singbox_" - -local function _n(name) - return option_prefix .. name -end - -local ss_method_list = { - "none", "aes-128-gcm", "aes-192-gcm", "aes-256-gcm", "chacha20-ietf-poly1305", "xchacha20-ietf-poly1305", - "2022-blake3-aes-128-gcm", "2022-blake3-aes-256-gcm", "2022-blake3-chacha20-poly1305" -} - --- [[ Sing-Box ]] - -s.fields["type"]:value(type_name, "Sing-Box") - -o = s:option(Flag, _n("custom"), translate("Use Custom Config")) - -o = s:option(ListValue, _n("protocol"), translate("Protocol")) -o:value("mixed", "Mixed") -o:value("socks", "Socks") -o:value("http", "HTTP") -o:value("shadowsocks", "Shadowsocks") -o:value("vmess", "Vmess") -o:value("vless", "VLESS") -o:value("trojan", "Trojan") -o:value("naive", "Naive") -if singbox_tags:find("with_quic") then - o:value("hysteria", "Hysteria") -end -if singbox_tags:find("with_quic") then - o:value("tuic", "TUIC") -end -if singbox_tags:find("with_quic") then - o:value("hysteria2", "Hysteria2") -end -if version_ge_1_12_0 then - o:value("anytls", "AnyTLS") -end -o:value("direct", "Direct") -o:depends({ [_n("custom")] = false }) - -o = s:option(Value, _n("port"), translate("Listen Port")) -o.datatype = "port" -o:depends({ [_n("custom")] = false }) - -o = s:option(Flag, _n("auth"), translate("Auth")) -o.validate = function(self, value, t) - if value and value == "1" then - local user_v = s.fields[_n("username")] and s.fields[_n("username")]:formvalue(t) or "" - local pass_v = s.fields[_n("password")] and s.fields[_n("password")]:formvalue(t) or "" - if user_v == "" or pass_v == "" then - return nil, translate("Username and Password must be used together!") - end - end - return value -end -o:depends({ [_n("protocol")] = "mixed" }) -o:depends({ [_n("protocol")] = "socks" }) -o:depends({ [_n("protocol")] = "http" }) - -o = s:option(Value, _n("username"), translate("Username")) -o:depends({ [_n("auth")] = true }) -o:depends({ [_n("protocol")] = "naive" }) -o:depends({ [_n("protocol")] = "anytls" }) - -o = s:option(Value, _n("password"), translate("Password")) -o.password = true -o:depends({ [_n("auth")] = true }) -o:depends({ [_n("protocol")] = "shadowsocks" }) -o:depends({ [_n("protocol")] = "naive" }) -o:depends({ [_n("protocol")] = "tuic" }) -o:depends({ [_n("protocol")] = "anytls" }) - -if singbox_tags:find("with_quic") then - o = s:option(Value, _n("hysteria_up_mbps"), translate("Max upload Mbps")) - o.default = "100" - o:depends({ [_n("protocol")] = "hysteria" }) - - o = s:option(Value, _n("hysteria_down_mbps"), translate("Max download Mbps")) - o.default = "100" - o:depends({ [_n("protocol")] = "hysteria" }) - - o = s:option(Value, _n("hysteria_obfs"), translate("Obfs Password")) - o:depends({ [_n("protocol")] = "hysteria" }) - - o = s:option(ListValue, _n("hysteria_auth_type"), translate("Auth Type")) - o:value("disable", translate("Disable")) - o:value("string", translate("STRING")) - o:value("base64", translate("BASE64")) - o:depends({ [_n("protocol")] = "hysteria" }) - - o = s:option(Value, _n("hysteria_auth_password"), translate("Auth Password")) - o.password = true - o:depends({ [_n("protocol")] = "hysteria", [_n("hysteria_auth_type")] = "string"}) - o:depends({ [_n("protocol")] = "hysteria", [_n("hysteria_auth_type")] = "base64"}) - - o = s:option(Value, _n("hysteria_recv_window_conn"), translate("QUIC stream receive window")) - o:depends({ [_n("protocol")] = "hysteria" }) - - o = s:option(Value, _n("hysteria_recv_window_client"), translate("QUIC connection receive window")) - o:depends({ [_n("protocol")] = "hysteria" }) - - o = s:option(Value, _n("hysteria_max_conn_client"), translate("QUIC concurrent bidirectional streams")) - o.default = "1024" - o:depends({ [_n("protocol")] = "hysteria" }) - - o = s:option(Flag, _n("hysteria_disable_mtu_discovery"), translate("Disable MTU detection")) - o:depends({ [_n("protocol")] = "hysteria" }) - - o = s:option(Value, _n("hysteria_alpn"), translate("QUIC TLS ALPN")) - o:depends({ [_n("protocol")] = "hysteria" }) -end - -if singbox_tags:find("with_quic") then - o = s:option(ListValue, _n("tuic_congestion_control"), translate("Congestion control algorithm")) - o.default = "cubic" - o:value("bbr", translate("BBR")) - o:value("cubic", translate("CUBIC")) - o:value("new_reno", translate("New Reno")) - o:depends({ [_n("protocol")] = "tuic" }) - - o = s:option(Flag, _n("tuic_zero_rtt_handshake"), translate("Enable 0-RTT QUIC handshake")) - o.default = 0 - o:depends({ [_n("protocol")] = "tuic" }) - - o = s:option(Value, _n("tuic_heartbeat"), translate("Heartbeat interval(second)")) - o.datatype = "uinteger" - o.default = "3" - o:depends({ [_n("protocol")] = "tuic" }) - - o = s:option(Value, _n("tuic_alpn"), translate("QUIC TLS ALPN")) - o:depends({ [_n("protocol")] = "tuic" }) -end - -if singbox_tags:find("with_quic") then - o = s:option(Flag, _n("hysteria2_ignore_client_bandwidth"), translate("Commands the client to use the BBR flow control algorithm")) - o.default = 0 - o:depends({ [_n("protocol")] = "hysteria2" }) - - o = s:option(Value, _n("hysteria2_up_mbps"), translate("Max upload Mbps")) - o:depends({ [_n("protocol")] = "hysteria2", [_n("hysteria2_ignore_client_bandwidth")] = false }) - - o = s:option(Value, _n("hysteria2_down_mbps"), translate("Max download Mbps")) - o:depends({ [_n("protocol")] = "hysteria2", [_n("hysteria2_ignore_client_bandwidth")] = false }) - - o = s:option(ListValue, _n("hysteria2_obfs_type"), translate("Obfs Type")) - o:value("", translate("Disable")) - o:value("salamander") - o:depends({ [_n("protocol")] = "hysteria2" }) - - o = s:option(Value, _n("hysteria2_obfs_password"), translate("Obfs Password")) - o:depends({ [_n("protocol")] = "hysteria2" }) - - o = s:option(Value, _n("hysteria2_auth_password"), translate("Auth Password")) - o.password = true - o:depends({ [_n("protocol")] = "hysteria2"}) -end - -o = s:option(ListValue, _n("d_protocol"), translate("Destination protocol")) -o:value("tcp", "TCP") -o:value("udp", "UDP") -o:value("tcp,udp", "TCP,UDP") -o:depends({ [_n("protocol")] = "direct" }) - -o = s:option(Value, _n("d_address"), translate("Destination address")) -o:depends({ [_n("protocol")] = "direct" }) - -o = s:option(Value, _n("d_port"), translate("Destination port")) -o.datatype = "port" -o:depends({ [_n("protocol")] = "direct" }) - -o = s:option(Value, _n("decryption"), translate("Encrypt Method")) -o.default = "none" -o:depends({ [_n("protocol")] = "vless" }) - -o = s:option(ListValue, _n("ss_method"), translate("Encrypt Method")) -o.rewrite_option = "method" -for a, t in ipairs(ss_method_list) do o:value(t) end -o:depends({ [_n("protocol")] = "shadowsocks" }) - -o = s:option(DynamicList, _n("uuid"), translate("ID") .. "/" .. translate("Password")) -for i = 1, 3 do - o:value(api.gen_uuid(1)) -end -o:depends({ [_n("protocol")] = "vmess" }) -o:depends({ [_n("protocol")] = "vless" }) -o:depends({ [_n("protocol")] = "trojan" }) -o:depends({ [_n("protocol")] = "tuic" }) - -o = s:option(ListValue, _n("flow"), translate("flow")) -o.default = "" -o:value("", translate("Disable")) -o:value("xtls-rprx-vision") -o:depends({ [_n("protocol")] = "vless" , [_n("tls")] = true }) - -o = s:option(Flag, _n("tls"), translate("TLS")) -o.default = 0 -o.validate = function(self, value, t) - if value then - local reality = s.fields[_n("reality")] and s.fields[_n("reality")]:formvalue(t) or nil - if reality and reality == "1" then return value end - if value == "1" then - local ca = s.fields[_n("tls_certificateFile")] and s.fields[_n("tls_certificateFile")]:formvalue(t) or "" - local key = s.fields[_n("tls_keyFile")] and s.fields[_n("tls_keyFile")]:formvalue(t) or "" - if ca == "" or key == "" then - return nil, translate("Public key and Private key path can not be empty!") - end - end - return value - end -end -o:depends({ [_n("protocol")] = "http" }) -o:depends({ [_n("protocol")] = "vmess" }) -o:depends({ [_n("protocol")] = "vless" }) -o:depends({ [_n("protocol")] = "trojan" }) -o:depends({ [_n("protocol")] = "anytls" }) - --- https://github.com/SagerNet/sing-box/commit/d2a04c4e41e6cef0937331cb6d10211f431caaab -if singbox_tags:find("with_utls") then - -- [[ REALITY部分 ]] -- - o = s:option(Flag, _n("reality"), translate("REALITY")) - o.default = 0 - o:depends({ [_n("protocol")] = "http", [_n("tls")] = true }) - o:depends({ [_n("protocol")] = "vmess", [_n("tls")] = true }) - o:depends({ [_n("protocol")] = "vless", [_n("tls")] = true }) - o:depends({ [_n("protocol")] = "trojan", [_n("tls")] = true }) - o:depends({ [_n("protocol")] = "anytls", [_n("tls")] = true }) - - o = s:option(Value, _n("reality_private_key"), translate("Private Key")) - o:depends({ [_n("reality")] = true }) - - o = s:option(Value, _n("reality_shortId"), translate("Short Id")) - o:depends({ [_n("reality")] = true }) - - o = s:option(Value, _n("reality_handshake_server"), translate("Handshake Server")) - o.default = "google.com" - o:depends({ [_n("reality")] = true }) - - o = s:option(Value, _n("reality_handshake_server_port"), translate("Handshake Server Port")) - o.datatype = "port" - o.default = "443" - o:depends({ [_n("reality")] = true }) -end - --- [[ TLS部分 ]] -- - -o = s:option(FileUpload, _n("tls_certificateFile"), translate("Public key absolute path"), translate("as:") .. "/etc/ssl/fullchain.pem") -o.default = m:get(s.section, "tls_certificateFile") or "/etc/config/ssl/" .. arg[1] .. ".pem" -if o and o:formvalue(arg[1]) then o.default = o:formvalue(arg[1]) end -o:depends({ [_n("tls")] = true, [_n("reality")] = false }) -o:depends({ [_n("protocol")] = "naive" }) -o:depends({ [_n("protocol")] = "hysteria" }) -o:depends({ [_n("protocol")] = "tuic" }) -o:depends({ [_n("protocol")] = "hysteria2" }) -o.validate = function(self, value, t) - if value and value ~= "" then - if not fs.access(value) then - return nil, translate("Can't find this file!") - else - return value - end - end - return nil -end - -o = s:option(FileUpload, _n("tls_keyFile"), translate("Private key absolute path"), translate("as:") .. "/etc/ssl/private.key") -o.default = m:get(s.section, "tls_keyFile") or "/etc/config/ssl/" .. arg[1] .. ".key" -if o and o:formvalue(arg[1]) then o.default = o:formvalue(arg[1]) end -o:depends({ [_n("tls")] = true, [_n("reality")] = false }) -o:depends({ [_n("protocol")] = "naive" }) -o:depends({ [_n("protocol")] = "hysteria" }) -o:depends({ [_n("protocol")] = "tuic" }) -o:depends({ [_n("protocol")] = "hysteria2" }) -o.validate = function(self, value, t) - if value and value ~= "" then - if not fs.access(value) then - return nil, translate("Can't find this file!") - else - return value - end - end - return nil -end - -o = s:option(Flag, _n("ech"), translate("ECH")) -o.default = "0" -o:depends({ [_n("tls")] = true, [_n("flow")] = "", [_n("reality")] = false }) -o:depends({ [_n("protocol")] = "naive" }) -o:depends({ [_n("protocol")] = "hysteria" }) -o:depends({ [_n("protocol")] = "tuic" }) -o:depends({ [_n("protocol")] = "hysteria2" }) - -o = s:option(TextValue, _n("ech_key"), translate("ECH Key")) -o.default = "" -o.rows = 5 -o.wrap = "off" -o:depends({ [_n("ech")] = true }) -o.validate = function(self, value) - value = value:gsub("^%s+", ""):gsub("%s+$","\n"):gsub("\r\n","\n"):gsub("[ \t]*\n[ \t]*", "\n") - value = value:gsub("^%s*\n", "") - if value:sub(-1) == "\n" then - value = value:sub(1, -2) - end - return value -end - -o = s:option(ListValue, _n("transport"), translate("Transport")) -o:value("tcp", "TCP") -o:value("http", "HTTP") -o:value("ws", "WebSocket") -o:value("httpupgrade", "HTTPUpgrade") -o:value("quic", "QUIC") -o:value("grpc", "gRPC") -o:depends({ [_n("protocol")] = "shadowsocks" }) -o:depends({ [_n("protocol")] = "vmess" }) -o:depends({ [_n("protocol")] = "vless" }) -o:depends({ [_n("protocol")] = "trojan" }) - --- [[ HTTP部分 ]]-- - -o = s:option(DynamicList, _n("http_host"), translate("HTTP Host")) -o:depends({ [_n("transport")] = "http" }) - -o = s:option(Value, _n("http_path"), translate("HTTP Path")) -o:depends({ [_n("transport")] = "http" }) - --- [[ WebSocket部分 ]]-- - -o = s:option(Value, _n("ws_host"), translate("WebSocket Host")) -o:depends({ [_n("transport")] = "ws" }) - -o = s:option(Value, _n("ws_path"), translate("WebSocket Path")) -o:depends({ [_n("transport")] = "ws" }) - --- [[ HTTPUpgrade部分 ]]-- - -o = s:option(Value, _n("httpupgrade_host"), translate("HTTPUpgrade Host")) -o:depends({ [_n("transport")] = "httpupgrade" }) - -o = s:option(Value, _n("httpupgrade_path"), translate("HTTPUpgrade Path")) -o:depends({ [_n("transport")] = "httpupgrade" }) - --- [[ gRPC部分 ]]-- -o = s:option(Value, _n("grpc_serviceName"), "ServiceName") -o:depends({ [_n("transport")] = "grpc" }) - --- [[ Mux ]]-- -o = s:option(Flag, _n("mux"), translate("Mux")) -o.rmempty = false -o:depends({ [_n("protocol")] = "vmess" }) -o:depends({ [_n("protocol")] = "vless", [_n("flow")] = "" }) -o:depends({ [_n("protocol")] = "shadowsocks" }) -o:depends({ [_n("protocol")] = "trojan" }) - --- [[ TCP Brutal ]]-- -o = s:option(Flag, _n("tcpbrutal"), translate("TCP Brutal")) -o.default = 0 -o:depends({ [_n("mux")] = true }) - -o = s:option(Value, _n("tcpbrutal_up_mbps"), translate("Max upload Mbps")) -o.default = "10" -o:depends({ [_n("tcpbrutal")] = true }) - -o = s:option(Value, _n("tcpbrutal_down_mbps"), translate("Max download Mbps")) -o.default = "50" -o:depends({ [_n("tcpbrutal")] = true }) - -o = s:option(Flag, _n("bind_local"), translate("Bind Local"), translate("When selected, it can only be accessed localhost.")) -o.default = "0" -o:depends({ [_n("custom")] = false }) - -o = s:option(Flag, _n("accept_lan"), translate("Accept LAN Access"), translate("When selected, it can accessed lan , this will not be safe!")) -o.default = "0" -o:depends({ [_n("custom")] = false }) - -local nodes_table = {} -for k, e in ipairs(api.get_valid_nodes()) do - if e.node_type == "normal" and e.type == type_name then - nodes_table[#nodes_table + 1] = { - id = e[".name"], - remarks = e["remark"], - group = e["group"] - } - end -end - -o = s:option(ListValue, _n("outbound_node"), translate("outbound node")) -o:value("", translate("Close")) -o:value("_socks", translate("Custom Socks")) -o:value("_http", translate("Custom HTTP")) -o:value("_iface", translate("Custom Interface")) -o.template = api.appname .. "/cbi/nodes_listvalue" -o.group = {"","","",""} -for k, v in pairs(nodes_table) do - o:value(v.id, v.remarks) - o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") -end -o:depends({ [_n("custom")] = false }) - -o = s:option(Value, _n("outbound_node_address"), translate("Address (Support Domain Name)")) -o:depends({ [_n("outbound_node")] = "_socks" }) -o:depends({ [_n("outbound_node")] = "_http" }) - -o = s:option(Value, _n("outbound_node_port"), translate("Port")) -o.datatype = "port" -o:depends({ [_n("outbound_node")] = "_socks" }) -o:depends({ [_n("outbound_node")] = "_http" }) - -o = s:option(Value, _n("outbound_node_username"), translate("Username")) -o:depends({ [_n("outbound_node")] = "_socks" }) -o:depends({ [_n("outbound_node")] = "_http" }) - -o = s:option(Value, _n("outbound_node_password"), translate("Password")) -o.password = true -o:depends({ [_n("outbound_node")] = "_socks" }) -o:depends({ [_n("outbound_node")] = "_http" }) - -o = s:option(Value, _n("outbound_node_iface"), translate("Interface")) -o.default = "eth1" -o:depends({ [_n("outbound_node")] = "_iface" }) - -o = s:option(TextValue, _n("custom_config"), translate("Custom Config")) -o.rows = 10 -o.wrap = "off" -o:depends({ [_n("custom")] = true }) -o.validate = function(self, value, t) - if value and api.jsonc.parse(value) then - return value - else - return nil, translate("Must be JSON text!") - end -end -o.custom_cfgvalue = function(self, section, value) - local config_str = m:get(section, "config_str") - if config_str then - return api.base64Decode(config_str) - end -end -o.custom_write = function(self, section, value) - m:set(section, "config_str", api.base64Encode(value)) -end - -o = s:option(Flag, _n("log"), translate("Log")) -o.default = "1" -o.rmempty = false - -o = s:option(ListValue, _n("loglevel"), translate("Log Level")) -o.default = "info" -o:value("debug") -o:value("info") -o:value("warn") -o:value("error") -o:depends({ [_n("log")] = true }) - -api.luci_types(arg[1], m, s, type_name, option_prefix) diff --git a/small/luci-app-passwall/luasrc/model/cbi/passwall/server/type/socks.lua b/small/luci-app-passwall/luasrc/model/cbi/passwall/server/type/socks.lua deleted file mode 100644 index 82cd0524f0..0000000000 --- a/small/luci-app-passwall/luasrc/model/cbi/passwall/server/type/socks.lua +++ /dev/null @@ -1,46 +0,0 @@ -local m, s = ... - -local api = require "luci.passwall.api" - -if not api.is_finded("microsocks") then - return -end - -local type_name = "Socks" - -local option_prefix = "socks_" - -local function _n(name) - return option_prefix .. name -end - --- [[ microsocks ]] - -s.fields["type"]:value(type_name, "Socks") - -o = s:option(Value, _n("port"), translate("Listen Port")) -o.datatype = "port" - -o = s:option(Flag, _n("auth"), translate("Auth")) -o.validate = function(self, value, t) - if value and value == "1" then - local user_v = s.fields[_n("username")] and s.fields[_n("username")]:formvalue(t) or "" - local pass_v = s.fields[_n("password")] and s.fields[_n("password")]:formvalue(t) or "" - if user_v == "" or pass_v == "" then - return nil, translate("Username and Password must be used together!") - end - end - return value -end - -o = s:option(Value, _n("username"), translate("Username")) -o:depends({ [_n("auth")] = true }) - -o = s:option(Value, _n("password"), translate("Password")) -o.password = true -o:depends({ [_n("auth")] = true }) - -o = s:option(Flag, _n("log"), translate("Log")) -o.default = "1" - -api.luci_types(arg[1], m, s, type_name, option_prefix) diff --git a/small/luci-app-passwall/luasrc/model/cbi/passwall/server/type/ss-rust.lua b/small/luci-app-passwall/luasrc/model/cbi/passwall/server/type/ss-rust.lua deleted file mode 100644 index 22b97424d9..0000000000 --- a/small/luci-app-passwall/luasrc/model/cbi/passwall/server/type/ss-rust.lua +++ /dev/null @@ -1,75 +0,0 @@ -local m, s = ... - -local api = require "luci.passwall.api" - -if not api.is_finded("ssserver") then - return -end - -local type_name = "SS-Rust" - -local option_prefix = "ssrust_" - -local function _n(name) - return option_prefix .. name -end - -local ssrust_encrypt_method_list = { - "plain", "none", - "aes-128-gcm", "aes-256-gcm", "chacha20-ietf-poly1305", - "2022-blake3-aes-128-gcm", "2022-blake3-aes-256-gcm", "2022-blake3-chacha20-poly1305" -} - --- [[ Shadowsocks Rust ]] - -s.fields["type"]:value(type_name, translate("Shadowsocks Rust")) - -o = s:option(Flag, _n("custom"), translate("Use Custom Config")) - -o = s:option(Value, _n("port"), translate("Listen Port")) -o.datatype = "port" -o:depends({ [_n("custom")] = false }) - -o = s:option(Value, _n("password"), translate("Password")) -o.password = true -o:depends({ [_n("custom")] = false }) - -o = s:option(ListValue, _n("method"), translate("Encrypt Method")) -for a, t in ipairs(ssrust_encrypt_method_list) do o:value(t) end -o:depends({ [_n("custom")] = false }) - -o = s:option(Value, _n("timeout"), translate("Connection Timeout")) -o.datatype = "uinteger" -o.default = 300 -o:depends({ [_n("custom")] = false }) - -o = s:option(Flag, _n("tcp_fast_open"), "TCP " .. translate("Fast Open")) -o.default = "0" -o:depends({ [_n("custom")] = false }) - -o = s:option(TextValue, _n("custom_config"), translate("Custom Config")) -o.rows = 10 -o.wrap = "off" -o:depends({ [_n("custom")] = true }) -o.validate = function(self, value, t) - if value and api.jsonc.parse(value) then - return value - else - return nil, translate("Must be JSON text!") - end -end -o.custom_cfgvalue = function(self, section, value) - local config_str = m:get(section, "config_str") - if config_str then - return api.base64Decode(config_str) - end -end -o.custom_write = function(self, section, value) - m:set(section, "config_str", api.base64Encode(value)) -end - -o = s:option(Flag, _n("log"), translate("Log")) -o.default = "1" -o.rmempty = false - -api.luci_types(arg[1], m, s, type_name, option_prefix) diff --git a/small/luci-app-passwall/luasrc/model/cbi/passwall/server/type/ss.lua b/small/luci-app-passwall/luasrc/model/cbi/passwall/server/type/ss.lua deleted file mode 100644 index cac798b84b..0000000000 --- a/small/luci-app-passwall/luasrc/model/cbi/passwall/server/type/ss.lua +++ /dev/null @@ -1,78 +0,0 @@ -local m, s = ... - -local api = require "luci.passwall.api" - -if not api.is_finded("ss-server") then - return -end - -local type_name = "SS" - -local option_prefix = "ss_" - -local function _n(name) - return option_prefix .. name -end - -local ss_encrypt_method_list = { - "rc4-md5", "aes-128-cfb", "aes-192-cfb", "aes-256-cfb", "aes-128-ctr", - "aes-192-ctr", "aes-256-ctr", "bf-cfb", "camellia-128-cfb", - "camellia-192-cfb", "camellia-256-cfb", "salsa20", "chacha20", - "chacha20-ietf", -- aead - "aes-128-gcm", "aes-192-gcm", "aes-256-gcm", "chacha20-ietf-poly1305", - "xchacha20-ietf-poly1305" -} - --- [[ Shadowsocks ]] - -s.fields["type"]:value(type_name, translate("Shadowsocks")) - -o = s:option(Flag, _n("custom"), translate("Use Custom Config")) - -o = s:option(Value, _n("port"), translate("Listen Port")) -o.datatype = "port" -o:depends({ [_n("custom")] = false }) - -o = s:option(Value, _n("password"), translate("Password")) -o.password = true -o:depends({ [_n("custom")] = false }) - -o = s:option(ListValue, _n("method"), translate("Encrypt Method")) -for a, t in ipairs(ss_encrypt_method_list) do o:value(t) end -o:depends({ [_n("custom")] = false }) - -o = s:option(Value, _n("timeout"), translate("Connection Timeout")) -o.datatype = "uinteger" -o.default = 300 -o:depends({ [_n("custom")] = false }) - -o = s:option(Flag, _n("tcp_fast_open"), "TCP " .. translate("Fast Open")) -o.default = "0" -o:depends({ [_n("custom")] = false }) - -o = s:option(TextValue, _n("custom_config"), translate("Custom Config")) -o.rows = 10 -o.wrap = "off" -o:depends({ [_n("custom")] = true }) -o.validate = function(self, value, t) - if value and api.jsonc.parse(value) then - return value - else - return nil, translate("Must be JSON text!") - end -end -o.custom_cfgvalue = function(self, section, value) - local config_str = m:get(section, "config_str") - if config_str then - return api.base64Decode(config_str) - end -end -o.custom_write = function(self, section, value) - m:set(section, "config_str", api.base64Encode(value)) -end - -o = s:option(Flag, _n("log"), translate("Log")) -o.default = "1" -o.rmempty = false - -api.luci_types(arg[1], m, s, type_name, option_prefix) diff --git a/small/luci-app-passwall/luasrc/model/cbi/passwall/server/type/ssr.lua b/small/luci-app-passwall/luasrc/model/cbi/passwall/server/type/ssr.lua deleted file mode 100644 index 924974bb6a..0000000000 --- a/small/luci-app-passwall/luasrc/model/cbi/passwall/server/type/ssr.lua +++ /dev/null @@ -1,106 +0,0 @@ -local m, s = ... - -local api = require "luci.passwall.api" - -if not api.is_finded("ssr-server") then - return -end - -local type_name = "SSR" - -local option_prefix = "ssr_" - -local function _n(name) - return option_prefix .. name -end - -local ssr_encrypt_method_list = { - "none", "table", "rc2-cfb", "rc4", "rc4-md5", "rc4-md5-6", "aes-128-cfb", - "aes-192-cfb", "aes-256-cfb", "aes-128-ctr", "aes-192-ctr", "aes-256-ctr", - "bf-cfb", "camellia-128-cfb", "camellia-192-cfb", "camellia-256-cfb", - "cast5-cfb", "des-cfb", "idea-cfb", "seed-cfb", "salsa20", "chacha20", - "chacha20-ietf" -} - -local ssr_protocol_list = { - "origin", "verify_simple", "verify_deflate", "verify_sha1", "auth_simple", - "auth_sha1", "auth_sha1_v2", "auth_sha1_v4", "auth_aes128_md5", - "auth_aes128_sha1", "auth_chain_a", "auth_chain_b", "auth_chain_c", - "auth_chain_d", "auth_chain_e", "auth_chain_f" -} -local ssr_obfs_list = { - "plain", "http_simple", "http_post", "random_head", "tls_simple", - "tls1.0_session_auth", "tls1.2_ticket_auth" -} - --- [[ ShadowsocksR ]] - -s.fields["type"]:value(type_name, translate("ShadowsocksR")) - -o = s:option(Flag, _n("custom"), translate("Use Custom Config")) - -o = s:option(Value, _n("port"), translate("Listen Port")) -o.datatype = "port" -o:depends({ [_n("custom")] = false }) - -o = s:option(Value, _n("password"), translate("Password")) -o.password = true -o:depends({ [_n("custom")] = false }) - -o = s:option(ListValue, _n("method"), translate("Encrypt Method")) -for a, t in ipairs(ssr_encrypt_method_list) do o:value(t) end -o:depends({ [_n("custom")] = false }) - -o = s:option(ListValue, _n("protocol"), translate("Protocol")) -for a, t in ipairs(ssr_protocol_list) do o:value(t) end -o:depends({ [_n("custom")] = false }) - -o = s:option(Value, _n("protocol_param"), translate("Protocol_param")) -o:depends({ [_n("custom")] = false }) - -o = s:option(ListValue, _n("obfs"), translate("Obfs")) -for a, t in ipairs(ssr_obfs_list) do o:value(t) end -o:depends({ [_n("custom")] = false }) - -o = s:option(Value, _n("obfs_param"), translate("Obfs_param")) -o:depends({ [_n("custom")] = false }) - -o = s:option(Value, _n("timeout"), translate("Connection Timeout")) -o.datatype = "uinteger" -o.default = 300 -o:depends({ [_n("custom")] = false }) - -o = s:option(Flag, _n("tcp_fast_open"), "TCP " .. translate("Fast Open")) -o.default = "0" -o:depends({ [_n("custom")] = false }) - -o = s:option(TextValue, _n("custom_config"), translate("Custom Config")) -o.rows = 10 -o.wrap = "off" -o:depends({ [_n("custom")] = true }) -o.validate = function(self, value, t) - if value and api.jsonc.parse(value) then - return value - else - return nil, translate("Must be JSON text!") - end -end -o.custom_cfgvalue = function(self, section, value) - local config_str = m:get(section, "config_str") - if config_str then - return api.base64Decode(config_str) - end -end -o.custom_write = function(self, section, value) - m:set(section, "config_str", api.base64Encode(value)) -end - -o = s:option(Flag, _n("udp_forward"), translate("UDP Forward")) -o.default = "1" -o.rmempty = false - -o = s:option(Flag, _n("log"), translate("Log")) -o.default = "1" -o.rmempty = false - -api.luci_types(arg[1], m, s, type_name, option_prefix) diff --git a/small/luci-app-passwall/luasrc/model/cbi/passwall/server/type/trojan-plus.lua b/small/luci-app-passwall/luasrc/model/cbi/passwall/server/type/trojan-plus.lua deleted file mode 100644 index 9581a7a6a3..0000000000 --- a/small/luci-app-passwall/luasrc/model/cbi/passwall/server/type/trojan-plus.lua +++ /dev/null @@ -1,110 +0,0 @@ -local m, s = ... - -local api = require "luci.passwall.api" - -if not api.is_finded("trojan-plus") then - return -end - -local fs = api.fs - -local type_name = "Trojan-Plus" - -local option_prefix = "trojan_plus_" - -local function _n(name) - return option_prefix .. name -end - --- [[ Trojan-Plus ]] - -s.fields["type"]:value(type_name, "Trojan-Plus") - -o = s:option(Value, _n("port"), translate("Listen Port")) -o.datatype = "port" - -o = s:option(DynamicList, _n("uuid"), translate("ID") .. "/" .. translate("Password")) -for i = 1, 3 do - o:value(api.gen_uuid(1)) -end - -o = s:option(Flag, _n("tls"), translate("TLS")) -o.default = 0 -o.validate = function(self, value, t) - if value then - local type = s.fields["type"] and s.fields["type"]:formvalue(t) or "" - if value == "0" and type == type_name then - return nil, translate("Original Trojan only supported 'tls', please choose 'tls'.") - end - if value == "1" then - local ca = s.fields[_n("tls_certificateFile")] and s.fields[_n("tls_certificateFile")]:formvalue(t) or "" - local key = s.fields[_n("tls_keyFile")] and s.fields[_n("tls_keyFile")]:formvalue(t) or "" - if ca == "" or key == "" then - return nil, translate("Public key and Private key path can not be empty!") - end - end - return value - end -end - -o = s:option(FileUpload, _n("tls_certificateFile"), translate("Public key absolute path"), translate("as:") .. "/etc/ssl/fullchain.pem") -o.default = m:get(s.section, "tls_certificateFile") or "/etc/config/ssl/" .. arg[1] .. ".pem" -o:depends({ [_n("tls")] = true }) -o.validate = function(self, value, t) - if value and value ~= "" then - if not fs.access(value) then - return nil, translate("Can't find this file!") - else - return value - end - end - return nil -end - -o = s:option(FileUpload, _n("tls_keyFile"), translate("Private key absolute path"), translate("as:") .. "/etc/ssl/private.key") -o.default = m:get(s.section, "tls_keyFile") or "/etc/config/ssl/" .. arg[1] .. ".key" -o:depends({ [_n("tls")] = true }) -o.validate = function(self, value, t) - if value and value ~= "" then - if not fs.access(value) then - return nil, translate("Can't find this file!") - else - return value - end - end - return nil -end - -o = s:option(Flag, _n("tls_sessionTicket"), translate("Session Ticket")) -o.default = "0" -o:depends({ [_n("tls")] = true }) - -o = s:option(Flag, _n("tcp_fast_open"), translate("TCP Fast Open")) -o.default = "0" - -o = s:option(Flag, _n("remote_enable"), translate("Enable Remote"), translate("You can forward to Nginx/Caddy/V2ray/Xray WebSocket and more.")) -o.default = "1" -o.rmempty = false - -o = s:option(Value, _n("remote_address"), translate("Remote Address")) -o.default = "127.0.0.1" -o:depends({ [_n("remote_enable")] = true }) - -o = s:option(Value, _n("remote_port"), translate("Remote Port")) -o.datatype = "port" -o.default = "80" -o:depends({ [_n("remote_enable")] = true }) - -o = s:option(Flag, _n("log"), translate("Log")) -o.default = "1" - -o = s:option(ListValue, _n("loglevel"), translate("Log Level")) -o.default = "2" -o:value("0", "all") -o:value("1", "info") -o:value("2", "warn") -o:value("3", "error") -o:value("4", "fatal") -o:depends({ [_n("log")] = true }) - -api.luci_types(arg[1], m, s, type_name, option_prefix) diff --git a/small/luci-app-passwall/luasrc/model/cbi/passwall/server/user.lua b/small/luci-app-passwall/luasrc/model/cbi/passwall/server/user.lua deleted file mode 100644 index 6e85945b68..0000000000 --- a/small/luci-app-passwall/luasrc/model/cbi/passwall/server/user.lua +++ /dev/null @@ -1,41 +0,0 @@ -local api = require "luci.passwall.api" -local appname = api.appname -local fs = api.fs -local types_dir = "/usr/lib/lua/luci/model/cbi/" .. appname .. "/server/type/" - -m = Map("passwall_server", translate("Server Config")) -m.redirect = api.url("server") -api.set_apply_on_parse(m) - -if not arg[1] or not m:get(arg[1]) then - luci.http.redirect(m.redirect) -end - -m:append(Template(appname .. "/cbi/nodes_listvalue_com")) - -s = m:section(NamedSection, arg[1], "user", "") -s.addremove = false -s.dynamic = false - -o = s:option(Flag, "enable", translate("Enable")) -o.default = "1" -o.rmempty = false - -o = s:option(Value, "remarks", translate("Remarks")) -o.default = translate("Remarks") -o.rmempty = false - -o = s:option(ListValue, "type", translate("Type")) - -local type_table = {} -for filename in fs.dir(types_dir) do - table.insert(type_table, filename) -end -table.sort(type_table) - -for index, value in ipairs(type_table) do - local p_func = loadfile(types_dir .. value) - setfenv(p_func, getfenv(1))(m, s) -end - -return m diff --git a/small/luci-app-passwall/luasrc/passwall/api.lua b/small/luci-app-passwall/luasrc/passwall/api.lua deleted file mode 100644 index a878d8f892..0000000000 --- a/small/luci-app-passwall/luasrc/passwall/api.lua +++ /dev/null @@ -1,1391 +0,0 @@ -module("luci.passwall.api", package.seeall) -local com = require "luci.passwall.com" -bin = require "nixio".bin -fs = require "nixio.fs" -sys = require "luci.sys" -uci = require "luci.model.uci".cursor() -util = require "luci.util" -datatypes = require "luci.cbi.datatypes" -jsonc = require "luci.jsonc" -i18n = require "luci.i18n" - -appname = "passwall" -curl_args = { "-skfL", "--connect-timeout 3", "--retry 3" } -command_timeout = 300 -OPENWRT_ARCH = nil -DISTRIB_ARCH = nil -OPENWRT_BOARD = nil - -CACHE_PATH = "/tmp/etc/" .. appname .. "_tmp" -LOG_FILE = "/tmp/log/" .. appname .. ".log" -TMP_PATH = "/tmp/etc/" .. appname -TMP_IFACE_PATH = TMP_PATH .. "/iface" - -function log(...) - local result = os.date("%Y-%m-%d %H:%M:%S: ") .. table.concat({...}, " ") - local f, err = io.open(LOG_FILE, "a") - if f and err == nil then - f:write(result .. "\n") - f:close() - end -end - -function is_js_luci() - return sys.call('[ -f "/www/luci-static/resources/uci.js" ]') == 0 -end - -function is_old_uci() - return sys.call("grep -E 'require[ \t]*\"uci\"' /usr/lib/lua/luci/model/uci.lua >/dev/null 2>&1") == 0 -end - -function uci_save(cursor, config, commit, apply) - if is_old_uci() then - cursor:save(config) - if commit then - cursor:commit(config) - if apply then - sys.call("/etc/init.d/" .. config .. " reload > /dev/null 2>&1 &") - end - end - else - commit = true - if commit then - if apply then - cursor:commit(config) - else - sh_uci_commit(config) - end - end - end -end - -function sh_uci_get(config, section, option) - local _, val = exec_call(string.format("uci -q get %s.%s.%s", config, section, option)) - return val -end - -function sh_uci_set(config, section, option, val, commit) - exec_call(string.format("uci -q set %s.%s.%s=\"%s\"", config, section, option, val)) - if commit then sh_uci_commit(config) end -end - -function sh_uci_del(config, section, option, commit) - exec_call(string.format("uci -q delete %s.%s.%s", config, section, option)) - if commit then sh_uci_commit(config) end -end - -function sh_uci_add_list(config, section, option, val, commit) - exec_call(string.format("uci -q del_list %s.%s.%s=\"%s\"", config, section, option, val)) - exec_call(string.format("uci -q add_list %s.%s.%s=\"%s\"", config, section, option, val)) - if commit then sh_uci_commit(config) end -end - -function sh_uci_commit(config) - exec_call(string.format("uci -q commit %s", config)) -end - -function set_cache_var(key, val) - sys.call(string.format('. /usr/share/passwall/utils.sh ; set_cache_var %s "%s"', key, val)) -end - -function get_cache_var(key) - local val = sys.exec(string.format('. /usr/share/passwall/utils.sh ; echo -n $(get_cache_var %s)', key)) - if val == "" then val = nil end - return val -end - -function exec_call(cmd) - local process = io.popen(cmd .. '; echo -e "\n$?"') - local lines = {} - local result = "" - local return_code - for line in process:lines() do - lines[#lines + 1] = line - end - process:close() - if #lines > 0 then - return_code = lines[#lines] - for i = 1, #lines - 1 do - result = result .. lines[i] .. ((i == #lines - 1) and "" or "\n") - end - end - return tonumber(return_code), trim(result) -end - -function base64Decode(text) - if not text then return '' end - local encoded = text:gsub("%z", ""):gsub("%c", ""):gsub("_", "/"):gsub("-", "+") - local mod4 = #encoded % 4 - encoded = encoded .. string.sub('====', mod4 + 1) - local result = nixio.bin.b64decode(encoded) - if result then - return result:gsub("%z", "") - else - return text - end -end - -function base64Encode(text) - local result = nixio.bin.b64encode(text) - return result -end - ---提取URL中的域名和端口(no ip) -function get_domain_port_from_url(url) - local scheme, domain, port = string.match(url, "^(https?)://([%w%.%-]+):?(%d*)") - if not domain then - scheme, domain, port = string.match(url, "^(https?)://(%b[])([^:/]*)/?") - end - if not domain then return nil, nil end - if domain:sub(1, 1) == "[" then domain = domain:sub(2, -2) end - port = port ~= "" and tonumber(port) or (scheme == "https" and 443 or 80) - if datatypes.ipaddr(domain) or datatypes.ip6addr(domain) then return nil, nil end - return domain, port -end - ---解析域名 -function domainToIPv4(domain, dns) - local Dns = dns or "223.5.5.5" - local IPs = luci.sys.exec('nslookup %s %s | awk \'/^Name:/{getline; if ($1 == "Address:") print $2}\'' % { domain, Dns }) - for IP in string.gmatch(IPs, "%S+") do - if datatypes.ipaddr(IP) and not datatypes.ip6addr(IP) then return IP end - end - return nil -end - -function curl_base(url, file, args) - if not args then args = {} end - if file then - args[#args + 1] = "-o " .. file - end - local cmd = string.format('curl %s "%s"', table_join(args), url) - return exec_call(cmd) -end - -function curl_proxy(url, file, args) - --使用代理 - local socks_server = get_cache_var("GLOBAL_TCP_SOCKS_server") - if socks_server and socks_server ~= "" then - if not args then args = {} end - local tmp_args = clone(args) - tmp_args[#tmp_args + 1] = "-x socks5h://" .. socks_server - return curl_base(url, file, tmp_args) - end - return nil, nil -end - -function curl_logic(url, file, args) - local return_code, result = curl_proxy(url, file, args) - if not return_code or return_code ~= 0 then - return_code, result = curl_base(url, file, args) - end - return return_code, result -end - -function curl_direct(url, file, args) - --直连访问 - local chn_list = uci:get(appname, "@global[0]", "chn_list") or "direct" - local Dns = (chn_list == "proxy") and "1.1.1.1" or "223.5.5.5" - if not args then args = {} end - local tmp_args = clone(args) - local domain, port = get_domain_port_from_url(url) - if domain then - local ip = domainToIPv4(domain, Dns) - if ip then - tmp_args[#tmp_args + 1] = "--resolve " .. domain .. ":" .. port .. ":" .. ip - end - end - return curl_base(url, file, tmp_args) -end - -function curl_auto(url, file, args) - local localhost_proxy = uci:get(appname, "@global[0]", "localhost_proxy") or "1" - if localhost_proxy == "1" then - return curl_base(url, file, args) -- 当路由器本机开启代理时,采用passwall规则进行访问 - else - local return_code, result = curl_proxy(url, file, args) - if not return_code or return_code ~= 0 then - return_code, result = curl_direct(url, file, args) - end - return return_code, result - end -end - -function url(...) - local url = string.format("admin/services/%s", appname) - local args = { ... } - for i, v in pairs(args) do - if v ~= "" then - url = url .. "/" .. v - end - end - return require "luci.dispatcher".build_url(url) -end - -function trim(s) - if type(s) ~= "string" then return "" end - local i, j = 1, #s - while i <= j and s:byte(i) <= 32 do i = i + 1 end - while j >= i and s:byte(j) <= 32 do j = j - 1 end - if i > j then return "" end - return s:sub(i, j) -end - --- 分割字符串 -function split(full, sep) - if full then - full = full:gsub("%z", "") -- 这里不是很清楚 有时候结尾带个\0 - local off, result = 1, {} - while true do - local nStart, nEnd = full:find(sep, off) - if not nEnd then - local res = string.sub(full, off, string.len(full)) - if #res > 0 then -- 过滤掉 \0 - table.insert(result, res) - end - break - else - table.insert(result, string.sub(full, off, nStart - 1)) - off = nEnd + 1 - end - end - return result - end - return {} -end - -function is_exist(table, value) - for index, k in ipairs(table) do - if k == value then - return true - end - end - return false -end - -function repeat_exist(table, value) - local count = 0 - for index, k in ipairs(table) do - if k:find("-") and k == value then - count = count + 1 - end - end - if count > 1 then - return true - end - return false -end - -function remove(...) - for index, value in ipairs({...}) do - if value and #value > 0 and value ~= "/" then - sys.call(string.format("rm -rf %s", value)) - end - end -end - -function is_install(package) - if package and #package > 0 then - local file_path = "/usr/lib/opkg/info" - local file_ext = ".control" - local has = sys.call("[ -d " .. file_path .. " ]") - if has ~= 0 then - file_path = "/lib/apk/packages" - file_ext = ".list" - end - return sys.call(string.format('[ -s "%s/%s%s" ]', file_path, package, file_ext)) == 0 - end - return false -end - -function get_args(arg) - local var = {} - for i, arg_k in pairs(arg) do - if i > 0 then - local v = arg[i + 1] - if v then - if repeat_exist(arg, v) == false then - var[arg_k] = v - end - end - end - end - return var -end - -function get_function_args(arg) - local var = nil - if arg and #arg > 1 then - local param = {} - for i = 2, #arg do - param[#param + 1] = arg[i] - end - var = get_args(param) - end - return var -end - -function strToTable(str) - if str == nil or type(str) ~= "string" then - return {} - end - - return loadstring("return " .. str)() -end - -function is_normal_node(e) - if e and e.type and e.protocol and (e.protocol == "_balancing" or e.protocol == "_shunt" or e.protocol == "_iface" or e.protocol == "_urltest") then - return false - end - return true -end - -function is_special_node(e) - return is_normal_node(e) == false -end - -function is_ip(val) - local str = val:match("%[(.-)%]") or val - return datatypes.ipaddr(str) or false -end - -function is_ipv6(val) - local str = val:match("%[(.-)%]") or val - return datatypes.ip6addr(str) or false -end - -function is_local_ip(ip) - ip = trim(ip):lower() - ip = ip:gsub("^[%w%d]+://", "") -- 去掉协议头 - :gsub("/.*$", "") -- 去掉路径 - :gsub("^%[", ""):gsub("%]$", "") -- 去掉IPv6方括号 - :gsub(":%d+$", "") -- 去掉端口 - return ip:match("^127%.") or ip:match("^10%.") or - ip:match("^172%.1[6-9]%.") or ip:match("^172%.2[0-9]%.") or - ip:match("^172%.3[0-1]%.") or ip:match("^192%.168%.") or - ip == "::1" or ip:match("^f[cd]") or ip:match("^fe[89ab]") -end - -function is_ipv6addrport(val) - local address, port = val:match("%[(.-)%]:([0-9]+)$") - if address and datatypes.ip6addr(address) and datatypes.port(port) then - return true - end - return false -end - -function get_ipv6_only(val) - local result = "" - local inner = val:match("%[(.-)%]") or val - if datatypes.ip6addr(inner) then - result = inner - end - return result -end - -function get_ipv6_full(val) - local result = "" - if is_ipv6(val) then - result = val - if not val:match("%[.-%]") then - result = "[" .. result .. "]" - end - end - return result -end - -function get_ip_type(val) - if is_ipv6(val) then - return "6" - elseif datatypes.ip4addr(val) then - return "4" - end - return "" -end - -function is_mac(val) - return datatypes.macaddr(val) -end - -function ip_or_mac(val) - if val then - if get_ip_type(val) == "4" then - return "ip" - end - if is_mac(val) then - return "mac" - end - end - return "" -end - -function iprange(val) - if val then - local ipStart, ipEnd = val:match("^([^/]+)-([^/]+)$") - if (ipStart and datatypes.ip4addr(ipStart)) and (ipEnd and datatypes.ip4addr(ipEnd)) then - return true - end - end - return false -end - -function get_domain_from_url(url) - local domain = string.match(url, "//([^/]+)") - if domain then - return domain - end - return url -end - -function get_valid_nodes() - local show_node_info = uci_get_type("global_other", "show_node_info", "0") - local nodes = {} - local default_nodes = {} - local other_nodes = {} - uci:foreach(appname, "nodes", function(e) - e.id = e[".name"] - if e.type and e.remarks then - if (e.type == "sing-box" or e.type == "Xray") and e.protocol and - (e.protocol == "_balancing" or e.protocol == "_shunt" or e.protocol == "_iface" or e.protocol == "_urltest") then - local type = e.type - if type == "sing-box" then type = "Sing-Box" end - e["remark"] = "%s:[%s] " % {type .. " " .. i18n.translatef(e.protocol), e.remarks} - e["node_type"] = "special" - if not e.group or e.group == "" then - default_nodes[#default_nodes + 1] = e - else - other_nodes[#other_nodes + 1] = e - end - end - local port = e.port or e.hysteria_hop or e.hysteria2_hop - if port and e.address then - local address = e.address - if is_ip(address) or datatypes.hostname(address) then - local type = e.type - if (type == "sing-box" or type == "Xray") and e.protocol then - local protocol = e.protocol - if protocol == "vmess" then - protocol = "VMess" - elseif protocol == "vless" then - protocol = "VLESS" - elseif protocol == "shadowsocks" then - protocol = "SS" - elseif protocol == "shadowsocksr" then - protocol = "SSR" - elseif protocol == "wireguard" then - protocol = "WG" - elseif protocol == "hysteria" then - protocol = "HY" - elseif protocol == "hysteria2" then - protocol = "HY2" - elseif protocol == "anytls" then - protocol = "AnyTLS" - elseif protocol == "ssh" then - protocol = "SSH" - else - protocol = protocol:gsub("^%l",string.upper) - end - if type == "sing-box" then type = "Sing-Box" end - type = type .. " " .. protocol - end - if is_ipv6(address) then address = get_ipv6_full(address) end - e["remark"] = "%s:[%s]" % {type, e.remarks} - if show_node_info == "1" then - port = port:gsub(":", "-") - e["remark"] = "%s:[%s] %s:%s" % {type, e.remarks, address, port} - end - e.node_type = "normal" - if not e.group or e.group == "" then - default_nodes[#default_nodes + 1] = e - else - other_nodes[#other_nodes + 1] = e - end - end - end - end - end) - for i = 1, #default_nodes do nodes[#nodes + 1] = default_nodes[i] end - for i = 1, #other_nodes do nodes[#nodes + 1] = other_nodes[i] end - return nodes -end - -function get_node_remarks(n) - local remarks = "" - if n then - if (n.type == "sing-box" or n.type == "Xray") and n.protocol and - (n.protocol == "_balancing" or n.protocol == "_shunt" or n.protocol == "_iface" or n.protocol == "_urltest") then - remarks = "%s:[%s] " % {n.type .. " " .. i18n.translatef(n.protocol), n.remarks} - else - local type2 = n.type - if (n.type == "sing-box" or n.type == "Xray") and n.protocol then - local protocol = n.protocol - if protocol == "vmess" then - protocol = "VMess" - elseif protocol == "vless" then - protocol = "VLESS" - elseif protocol == "shadowsocks" then - protocol = "SS" - elseif protocol == "shadowsocksr" then - protocol = "SSR" - elseif protocol == "wireguard" then - protocol = "WG" - elseif protocol == "hysteria" then - protocol = "HY" - elseif protocol == "hysteria2" then - protocol = "HY2" - elseif protocol == "anytls" then - protocol = "AnyTLS" - elseif protocol == "ssh" then - protocol = "SSH" - else - protocol = protocol:gsub("^%l",string.upper) - end - if type2 == "sing-box" then type2 = "Sing-Box" end - type2 = type2 .. " " .. protocol - end - remarks = "%s:[%s]" % {type2, n.remarks} - end - end - return remarks -end - -function get_full_node_remarks(n) - local remarks = get_node_remarks(n) - if #remarks > 0 then - local port = n.port or n.hysteria_hop or n.hysteria2_hop - if n.address and port then - port = port:gsub(":", "-") - remarks = remarks .. " " .. n.address .. ":" .. port - end - end - return remarks -end - -function gen_uuid(format) - local uuid = sys.exec("echo -n $(cat /proc/sys/kernel/random/uuid)") - if format == nil then - uuid = string.gsub(uuid, "-", "") - end - return uuid -end - -function gen_short_uuid() - return sys.exec("echo -n $(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 8)") -end - -function uci_get_type(type, config, default) - local value = uci:get_first(appname, type, config, default) or sys.exec("echo -n $(uci -q get " .. appname .. ".@" .. type .."[0]." .. config .. ")") - if (value == nil or value == "") and (default and default ~= "") then - value = default - end - return value -end - -function uci_get_type_id(id, config, default) - local value = uci:get(appname, id, config, default) or sys.exec("echo -n $(uci -q get " .. appname .. "." .. id .. "." .. config .. ")") - if (value == nil or value == "") and (default and default ~= "") then - value = default - end - return value -end - -local function chmod_755(file) - if file and file ~= "" then - if not fs.access(file, "rwx", "rx", "rx") then - fs.chmod(file, 755) - end - end -end - -function get_customed_path(e) - return uci_get_type("global_app", e .. "_file") -end - -function finded_com(e) - local bin = get_app_path(e) - if not bin then return end - local s = luci.sys.exec('echo -n $(type -t -p "%s" | head -n1)' % { bin }) - if s == "" then - s = nil - end - return s -end - -function finded(e) - return luci.sys.exec('echo -n $(type -t -p "/bin/%s" -p "/usr/bin/%s" "%s" | head -n1)' % {e, e, e}) -end - -function is_finded(e) - return finded(e) ~= "" and true or false -end - -function clone(org) - local function copy(org, res) - for k,v in pairs(org) do - if type(v) ~= "table" then - res[k] = v; - else - res[k] = {}; - copy(v, res[k]) - end - end - end - - local res = {} - copy(org, res) - return res -end - -function get_bin_version_cache(file, cmd) - sys.call("mkdir -p /tmp/etc/passwall_tmp") - if fs.access(file) then - chmod_755(file) - local md5 = sys.exec("echo -n $(md5sum " .. file .. " | awk '{print $1}')") - if fs.access("/tmp/etc/passwall_tmp/" .. md5) then - return sys.exec("echo -n $(cat /tmp/etc/passwall_tmp/%s)" % md5) - else - local version = sys.exec(string.format("echo -n $(%s %s)", file, cmd)) - if version and version ~= "" then - sys.call("echo '" .. version .. "' > " .. "/tmp/etc/passwall_tmp/" .. md5) - return version - end - end - end - return "" -end - -function get_app_path(app_name) - if com[app_name] then - local def_path = com[app_name].default_path - local path = uci_get_type("global_app", app_name:gsub("%-","_") .. "_file") - path = path and (#path>0 and path or def_path) or def_path - return path - end -end - -function get_app_version(app_name, file) - if file == nil then file = get_app_path(app_name) end - return get_bin_version_cache(file, com[app_name].cmd_version) -end - -local function is_file(path) - if path and #path > 1 then - if sys.exec('[ -f "%s" ] && echo -n 1' % path) == "1" then - return true - end - end - return nil -end - -local function is_dir(path) - if path and #path > 1 then - if sys.exec('[ -d "%s" ] && echo -n 1' % path) == "1" then - return true - end - end - return nil -end - -local function get_final_dir(path) - if is_dir(path) then - return path - else - return get_final_dir(fs.dirname(path)) - end -end - -local function get_free_space(dir) - if dir == nil then dir = "/" end - if sys.call("df -k " .. dir .. " >/dev/null 2>&1") == 0 then - return tonumber(sys.exec("echo -n $(df -k " .. dir .. " | awk 'NR>1' | awk '{print $4}')")) - end - return 0 -end - -local function get_file_space(file) - if file == nil then return 0 end - if fs.access(file) then - return tonumber(sys.exec("echo -n $(du -k " .. file .. " | awk '{print $1}')")) - end - return 0 -end - -function _unpack(t, i) - i = i or 1 - if t[i] ~= nil then return t[i], _unpack(t, i + 1) end -end - -function table_join(t, s) - if not s then - s = " " - end - local str = "" - for index, value in ipairs(t) do - str = str .. t[index] .. (index == #t and "" or s) - end - return str -end - -local function exec(cmd, args, writer, timeout) - local os = require "os" - local nixio = require "nixio" - - local fdi, fdo = nixio.pipe() - local pid = nixio.fork() - - if pid > 0 then - fdo:close() - - if writer or timeout then - local starttime = os.time() - while true do - if timeout and os.difftime(os.time(), starttime) >= timeout then - nixio.kill(pid, nixio.const.SIGTERM) - return 1 - end - - if writer then - local buffer = fdi:read(2048) - if buffer and #buffer > 0 then - writer(buffer) - end - end - - local wpid, stat, code = nixio.waitpid(pid, "nohang") - - if wpid and stat == "exited" then return code end - - if not writer and timeout then nixio.nanosleep(1) end - end - else - local wpid, stat, code = nixio.waitpid(pid) - return wpid and stat == "exited" and code - end - elseif pid == 0 then - nixio.dup(fdo, nixio.stdout) - fdi:close() - fdo:close() - nixio.exece(cmd, args, nil) - nixio.stdout:close() - os.exit(1) - end -end - -function compare_versions(ver1, comp, ver2) - local table = table - - if not ver1 then ver1 = "" end - if not ver2 then ver2 = "" end - - local av1 = util.split(ver1, "[%.%-]", nil, true) - local av2 = util.split(ver2, "[%.%-]", nil, true) - - local max = table.getn(av1) - local n2 = table.getn(av2) - if (max < n2) then max = n2 end - - for i = 1, max, 1 do - local s1 = tonumber(av1[i] or 0) or 0 - local s2 = tonumber(av2[i] or 0) or 0 - - if comp == "~=" and (s1 ~= s2) then return true end - if (comp == "<" or comp == "<=") and (s1 < s2) then return true end - if (comp == ">" or comp == ">=") and (s1 > s2) then return true end - if (s1 ~= s2) then return false end - end - - return not (comp == "<" or comp == ">") -end - -local function auto_get_arch() - local arch = nixio.uname().machine or "" - if not OPENWRT_ARCH and fs.access("/usr/lib/os-release") then - OPENWRT_ARCH = sys.exec("echo -n $(grep 'OPENWRT_ARCH' /usr/lib/os-release | awk -F '[\\042\\047]' '{print $2}')") - OPENWRT_BOARD = sys.exec("echo -n $(grep 'OPENWRT_BOARD' /usr/lib/os-release | awk -F '[\\042\\047]' '{print $2}')") - if OPENWRT_ARCH == "" then OPENWRT_ARCH = nil end - if OPENWRT_BOARD == "" then OPENWRT_BOARD = nil end - end - if not DISTRIB_ARCH and fs.access("/etc/openwrt_release") then - DISTRIB_ARCH = sys.exec("echo -n $(grep 'DISTRIB_ARCH' /etc/openwrt_release | awk -F '[\\042\\047]' '{print $2}')") - if DISTRIB_ARCH == "" then DISTRIB_ARCH = nil end - end - - if arch:match("^i[%d]86$") then - arch = "x86" - elseif arch:match("armv5") then -- armv5l - arch = "armv5" - elseif arch:match("armv6") then - arch = "armv6" - elseif arch:match("armv7") then -- armv7l - arch = "armv7" - end - - if OPENWRT_ARCH or DISTRIB_ARCH then - if arch == "mips" then - if OPENWRT_ARCH and OPENWRT_ARCH:match("mipsel") == "mipsel" - or DISTRIB_ARCH and DISTRIB_ARCH:match("mipsel") == "mipsel" then - arch = "mipsel" - end - elseif arch == "armv7" then - if OPENWRT_ARCH and not OPENWRT_ARCH:match("vfp") and not OPENWRT_ARCH:match("neon") - or DISTRIB_ARCH and not DISTRIB_ARCH:match("vfp") and not DISTRIB_ARCH:match("neon") then - arch = "armv5" - end - end - end - - if arch == "aarch64" and OPENWRT_BOARD and OPENWRT_BOARD:match("rockchip") ~= nil then - arch = "rockchip" - end - - return trim(arch) -end - -function parseURL(url) - if not url or url == "" then - return nil - end - local pattern = "^(%w+)://" - local protocol = url:match(pattern) - - if not protocol then - --error("Invalid URL: " .. url) - return nil - end - - local auth_host_port = url:sub(#protocol + 4) - local auth_pattern = "^([^@]+)@" - local auth = auth_host_port:match(auth_pattern) - local username, password - - if auth then - username, password = auth:match("^([^:]+):([^:]+)$") - auth_host_port = auth_host_port:sub(#auth + 2) - end - - local host, port = auth_host_port:match("^([^:]+):(%d+)$") - - if not host or not port then - --error("Invalid URL: " .. url) - return nil - end - - return { - protocol = protocol, - username = username, - password = password, - host = host, - port = tonumber(port) - } -end - -local default_file_tree = { - x86_64 = "amd64", - x86 = "386", - aarch64 = "arm64", - rockchip = "arm64", - mips = "mips", - mips64 = "mips64", - mipsel = "mipsel", - mips64el = "mips64el", - armv5 = "arm.*5", - armv6 = "arm.*6[^4]*", - armv7 = "arm.*7", - armv8 = "arm64", - riscv64 = "riscv64" -} - -local function get_api_json(url) - local jsonc = require "luci.jsonc" - local return_code, content = curl_auto(url, nil, curl_args) - if return_code ~= 0 or content == "" then return {} end - return jsonc.parse(content) or {} -end - -local function check_path(app_name) - local path = get_app_path(app_name) or "" - if path == "" then - return { - code = 1, - error = i18n.translatef("You did not fill in the %s path. Please save and apply then update manually.", app_name) - } - end - return { - code = 0, - app_path = path - } -end - -function to_check(arch, app_name) - local result = check_path(app_name) - if result.code ~= 0 then - return result - end - - if not arch or arch == "" then arch = auto_get_arch() end - - local file_tree = com[app_name].file_tree[arch] or default_file_tree[arch] or "" - - if file_tree == "" then - return { - code = 1, - error = i18n.translate("Can't determine ARCH, or ARCH not supported.") - } - end - - local local_version = get_app_version(app_name) - local match_file_name = string.format(com[app_name].match_fmt_str, file_tree) - local json = get_api_json(com[app_name]:get_url()) - - if #json > 0 then - json = json[1] - end - - if json.tag_name == nil then - return { - code = 1, - error = i18n.translate("Get remote version info failed.") - } - end - - local remote_version = json.tag_name - if com[app_name].remote_version_str_replace then - remote_version = remote_version:gsub(com[app_name].remote_version_str_replace, "") - end - local has_update = compare_versions(local_version:match("[^v]+"), "<", remote_version:match("[^v]+")) ---[[ - if not has_update then - return { - code = 0, - local_version = local_version, - remote_version = remote_version - } - end -]]-- - local asset = {} - for _, v in ipairs(json.assets) do - if v.name and v.name:match(match_file_name) then - asset = v - break - end - end - if not asset.browser_download_url then - return { - code = 1, - local_version = local_version, - remote_version = remote_version, - html_url = json.html_url, - data = asset, - error = i18n.translate("New version found, but failed to get new version download url.") - } - end - - return { - code = 0, - has_update = has_update, - local_version = local_version, - remote_version = remote_version, - html_url = json.html_url, - data = asset - } -end - -function to_download(app_name, url, size) - local result = check_path(app_name) - if result.code ~= 0 then - return result - end - - if not url or url == "" then - return {code = 1, error = i18n.translate("Download url is required.")} - end - - sys.call("/bin/rm -f /tmp/".. app_name .."_download.*") - - local tmp_file = trim(util.exec("mktemp -u -t ".. app_name .."_download.XXXXXX")) - - if size then - local kb1 = get_free_space("/tmp") - if tonumber(size) > tonumber(kb1) then - return {code = 1, error = i18n.translatef("%s not enough space.", "/tmp")} - end - end - - local _curl_args = clone(curl_args) - table.insert(_curl_args, "--speed-limit 51200 --speed-time 15 --max-time 300") - - local return_code, result = curl_auto(url, tmp_file, _curl_args) - result = return_code == 0 - - if not result then - exec("/bin/rm", {"-f", tmp_file}) - return { - code = 1, - error = i18n.translatef("File download failed or timed out: %s", url) - } - end - - return {code = 0, file = tmp_file, zip = com[app_name].zipped } -end - -function to_extract(app_name, file, subfix) - local result = check_path(app_name) - if result.code ~= 0 then - return result - end - - if not file or file == "" or not fs.access(file) then - return {code = 1, error = i18n.translate("File path required.")} - end - - local tools_name - if com[app_name].zipped then - if not com[app_name].zipped_suffix or com[app_name].zipped_suffix == "zip" then - tools_name = "unzip" - end - if com[app_name].zipped_suffix and com[app_name].zipped_suffix == "tar.gz" then - tools_name = "tar" - end - if tools_name then - if sys.exec("echo -n $(command -v %s)" % { tools_name }) == "" then - exec("/bin/rm", {"-f", file}) - return { - code = 1, - error = i18n.translate("Not installed %s, Can't unzip!" % { tools_name }) - } - end - end - end - - sys.call("/bin/rm -rf /tmp/".. app_name .."_extract.*") - - local new_file_size = get_file_space(file) - local tmp_free_size = get_free_space("/tmp") - if tmp_free_size <= 0 or tmp_free_size <= new_file_size then - return {code = 1, error = i18n.translatef("%s not enough space.", "/tmp")} - end - - local tmp_dir = trim(util.exec("mktemp -d -t ".. app_name .."_extract.XXXXXX")) - - local output = {} - - if tools_name then - if tools_name == "unzip" then - local bin = sys.exec("echo -n $(command -v unzip)") - exec(bin, {"-o", file, app_name, "-d", tmp_dir}, function(chunk) output[#output + 1] = chunk end) - elseif tools_name == "tar" then - local bin = sys.exec("echo -n $(command -v tar)") - if com[app_name].zipped_suffix == "tar.gz" then - exec(bin, {"-zxf", file, "-C", tmp_dir}, function(chunk) output[#output + 1] = chunk end) - sys.call("/bin/mv -f " .. tmp_dir .. "/*/" .. com[app_name].name:lower() .. " " .. tmp_dir) - end - end - end - - local files = util.split(table.concat(output)) - - exec("/bin/rm", {"-f", file}) - - return {code = 0, file = tmp_dir} -end - -function to_move(app_name,file) - local result = check_path(app_name) - if result.code ~= 0 then - return result - end - - local app_path = result.app_path - local bin_path = file - local cmd_rm_tmp = "/bin/rm -rf /tmp/" .. app_name .. "_download.*" - if fs.stat(file, "type") == "dir" then - bin_path = file .. "/" .. com[app_name].name:lower() - cmd_rm_tmp = "/bin/rm -rf /tmp/" .. app_name .. "_extract.*" - end - - if not file or file == "" then - sys.call(cmd_rm_tmp) - return {code = 1, error = i18n.translate("Client file is required.")} - end - - local new_version = get_app_version(app_name, bin_path) - if new_version == "" then - sys.call(cmd_rm_tmp) - return { - code = 1, - error = i18n.translate("The client file is not suitable for current device.") .. app_name .. "__" .. bin_path - } - end - - local flag = sys.call('pgrep -af "passwall/.*'.. app_name ..'" >/dev/null') - if flag == 0 then - sys.call("/etc/init.d/passwall stop") - end - - local old_app_size = 0 - if fs.access(app_path) then - old_app_size = get_file_space(app_path) - end - local new_app_size = get_file_space(bin_path) - local final_dir = get_final_dir(app_path) - local final_dir_free_size = get_free_space(final_dir) - if final_dir_free_size > 0 then - final_dir_free_size = final_dir_free_size + old_app_size - if new_app_size > final_dir_free_size then - sys.call(cmd_rm_tmp) - return {code = 1, error = i18n.translatef("%s not enough space.", final_dir)} - end - end - - result = exec("/bin/mv", { "-f", bin_path, app_path }, nil, command_timeout) == 0 - - sys.call(cmd_rm_tmp) - if flag == 0 then - sys.call("/etc/init.d/passwall restart >/dev/null 2>&1 &") - end - - if not result or not fs.access(app_path) then - return { - code = 1, - error = i18n.translatef("Can't move new file to path: %s", app_path) - } - end - - return {code = 0} -end - -function get_version() - local version = sys.exec("opkg list-installed luci-app-passwall 2>/dev/null | awk '{print $3}'") - if not version or #version == 0 then - version = sys.exec("apk list luci-app-passwall 2>/dev/null | awk '/installed/ {print $1}' | cut -d'-' -f4-") - end - return (version or ""):gsub("\n", ""):match("^([^-]+)") -end - -function to_check_self() - local url = "https://raw.githubusercontent.com/Openwrt-Passwall/openwrt-passwall/main/luci-app-passwall/Makefile" - local tmp_file = "/tmp/passwall_makefile" - local return_code, result = curl_auto(url, tmp_file, curl_args) - result = return_code == 0 - if not result then - exec("/bin/rm", {"-f", tmp_file}) - return { - code = 1, - error = i18n.translatef("Failed") - } - end - local local_version = get_version() - local remote_version = sys.exec("echo -n $(grep '^PKG_VERSION' /tmp/passwall_makefile | head -n 1 | awk -F '=' '{print $2}')") - exec("/bin/rm", {"-f", tmp_file}) - - local has_update = compare_versions(local_version, "<", remote_version) - if not has_update then - return { - code = 0, - local_version = local_version, - remote_version = remote_version - } - end - return { - code = 1, - has_update = true, - local_version = local_version, - remote_version = remote_version, - error = i18n.translatef("The latest version: %s, currently does not support automatic update, if you need to update, please compile or download the ipk and then manually install.", remote_version) - } -end - -function luci_types(id, m, s, type_name, option_prefix) - local rewrite_option_table = {} - for key, value in pairs(s.fields) do - if key:find(option_prefix) == 1 then - if not s.fields[key].not_rewrite then - if s.fields[key].rewrite_option then - if not rewrite_option_table[s.fields[key].rewrite_option] then - rewrite_option_table[s.fields[key].rewrite_option] = 1 - else - rewrite_option_table[s.fields[key].rewrite_option] = rewrite_option_table[s.fields[key].rewrite_option] + 1 - end - end - - s.fields[key].cfgvalue = function(self, section) - -- 添加自定义 custom_cfgvalue 属性,如果有自定义的 custom_cfgvalue 函数,则使用自定义的 cfgvalue 逻辑 - if self.custom_cfgvalue then - return self:custom_cfgvalue(section) - else - if self.rewrite_option then - return m:get(section, self.rewrite_option) - else - if self.option:find(option_prefix) == 1 then - return m:get(section, self.option:sub(1 + #option_prefix)) - end - end - end - end - s.fields[key].write = function(self, section, value) - if s.fields["type"]:formvalue(id) == type_name then - -- 添加自定义 custom_write 属性,如果有自定义的 custom_write 函数,则使用自定义的 write 逻辑 - if self.custom_write then - self:custom_write(section, value) - else - if self.rewrite_option then - m:set(section, self.rewrite_option, value) - else - if self.option:find(option_prefix) == 1 then - m:set(section, self.option:sub(1 + #option_prefix), value) - end - end - end - end - end - s.fields[key].remove = function(self, section) - if s.fields["type"]:formvalue(id) == type_name then - -- 添加自定义 custom_remove 属性,如果有自定义的 custom_remove 函数,则使用自定义的 remove 逻辑 - if self.custom_remove then - self:custom_remove(section) - else - if self.rewrite_option and rewrite_option_table[self.rewrite_option] == 1 then - m:del(section, self.rewrite_option) - else - if self.option:find(option_prefix) == 1 then - m:del(section, self.option:sub(1 + #option_prefix)) - end - end - end - end - end - end - - local deps = s.fields[key].deps - if #deps > 0 then - for index, value in ipairs(deps) do - deps[index]["type"] = type_name - end - else - s.fields[key]:depends({ type = type_name }) - end - end - end -end - -function get_std_domain(domain) - domain = trim(domain) - if domain == "" then return "" end - -- 含 # → "" - for i = 1, #domain do - if domain:byte(i) == 35 then return "" end -- '#' - end - local len = #domain - local si, ei = 1, len - -- 去前缀 '.' - while si <= len and domain:byte(si) == 46 do si = si + 1 end - -- 去后缀 '.' - while ei >= si and domain:byte(ei) == 46 do ei = ei - 1 end - if si > ei then return "" end - domain = domain:sub(si, ei) - len = #domain - -- 是否有 '*' - local star = false - for i = 1, len do - if domain:byte(i) == 42 then star = true break end - end - if not star then return domain end - -- 切割 label - local parts, pstart = {}, 1 - for i = 1, len + 1 do - local b = (i <= len) and domain:byte(i) or 46 -- '.' 作为结束 - if b == 46 then - parts[#parts + 1] = domain:sub(pstart, i - 1) - pstart = i + 1 - end - end - -- 从右向左找含 '*' ,并删除包含 '*' 的部分及其左边部分 - for i = #parts, 1, -1 do - local s = parts[i] - local has = false - for j = 1, #s do - if s:byte(j) == 42 then has = true break end - end - if has then - if i == #parts then return "" end - local out = parts[i + 1] - for k = i + 2, #parts do - out = out .. "." .. parts[k] - end - return out - end - end - return domain -end - -function format_go_time(input) - input = input and trim(input) - local N = 0 - if input and input:match("^%d+$") then - N = tonumber(input) - elseif input and input ~= "" then - for value, unit in input:gmatch("(%d+)%s*([hms])") do - value = tonumber(value) - if unit == "h" then - N = N + value * 3600 - elseif unit == "m" then - N = N + value * 60 - elseif unit == "s" then - N = N + value - end - end - end - if N <= 0 then - return "0s" - end - local result = "" - local h = math.floor(N / 3600) - local m = math.floor(N % 3600 / 60) - local s = N % 60 - if h > 0 then result = result .. h .. "h" end - if m > 0 then result = result .. m .. "m" end - if s > 0 or result == "" then result = result .. s .. "s" end - return result -end - -function set_apply_on_parse(map) - if not map then return end - if is_js_luci() then - apply_redirect(map) - local old = map.on_after_save - map.on_after_save = function(self) - if old then old(self) end - map:set("@global[0]", "timestamp", os.time()) - end - -- 优化页面 - local cbi = require "luci.cbi" - map:append(cbi.Template(appname .. "/cbi/optimize_cbi_ui")) - end -end - -function apply_redirect(m) - local tmp_uci_file = "/etc/config/" .. appname .. "_redirect" - if m.redirect and m.redirect ~= "" then - if fs.access(tmp_uci_file) then - local redirect - for line in io.lines(tmp_uci_file) do - redirect = line:match("option%s+url%s+['\"]([^'\"]+)['\"]") - if redirect and redirect ~= "" then break end - end - if redirect and redirect ~= "" then - sys.call("/bin/rm -f " .. tmp_uci_file) - luci.http.redirect(redirect) - end - else - fs.writefile(tmp_uci_file, "config redirect\n") - end - m.on_after_save = function(self) - local redirect = self.redirect - if redirect and redirect ~= "" then - uci:set(appname .. "_redirect", "@redirect[0]", "url", redirect) - end - end - else - sys.call("/bin/rm -f " .. tmp_uci_file) - end -end diff --git a/small/luci-app-passwall/luasrc/passwall/com.lua b/small/luci-app-passwall/luasrc/passwall/com.lua deleted file mode 100644 index f990818386..0000000000 --- a/small/luci-app-passwall/luasrc/passwall/com.lua +++ /dev/null @@ -1,109 +0,0 @@ -local _M = {} - -local function gh_release_url(self) - --return "https://api.github.com/repos/" .. self.repo .. "/releases/latest" - return "https://github.com/Openwrt-Passwall/openwrt-passwall-packages/releases/download/api-cache/" .. string.lower(self.name) .. "-release-api.json" -end - -local function gh_pre_release_url(self) - --return "https://api.github.com/repos/" .. self.repo .. "/releases?per_page=1" - return "https://github.com/Openwrt-Passwall/openwrt-passwall-packages/releases/download/api-cache/" .. string.lower(self.name) .. "-pre-release-api.json" -end - --- 排序顺序定义 -_M.order = { - "geoview", - "chinadns-ng", - "xray", - "sing-box", - "hysteria" -} - -_M.hysteria = { - name = "Hysteria", - repo = "HyNetwork/hysteria", - get_url = gh_release_url, - cmd_version = "version | awk '/^Version:/ {print $2}'", - remote_version_str_replace = "app/", - zipped = false, - default_path = "/usr/bin/hysteria", - match_fmt_str = "linux%%-%s$", - file_tree = { - armv6 = "arm", - armv7 = "arm", - mipsel = "mipsle" - } -} - -_M["sing-box"] = { - name = "Sing-Box", - repo = "SagerNet/sing-box", - get_url = gh_release_url, - cmd_version = "version | awk '{print $3}' | sed -n 1P", - zipped = true, - zipped_suffix = "tar.gz", - default_path = "/usr/bin/sing-box", - match_fmt_str = "linux%%-%s", - file_tree = { - x86_64 = "amd64", - mips64el = "mips64le" - } -} - -_M.xray = { - name = "Xray", - repo = "XTLS/Xray-core", - get_url = gh_pre_release_url, - cmd_version = "version | awk '{print $2}' | sed -n 1P", - zipped = true, - default_path = "/usr/bin/xray", - match_fmt_str = "linux%%-%s", - file_tree = { - x86_64 = "64", - x86 = "32", - mips = "mips32", - mipsel = "mips32le", - mips64el = "mips64le" - } -} - -_M["chinadns-ng"] = { - name = "ChinaDNS-NG", - repo = "zfl9/chinadns-ng", - get_url = gh_release_url, - cmd_version = "-V | awk '{print $2}'", - zipped = false, - default_path = "/usr/bin/chinadns-ng", - match_fmt_str = "%s", - file_tree = { - x86_64 = "wolfssl@x86_64.*x86_64@", - x86 = "wolfssl@i386.*i686", - mips = "wolfssl@mips%-.*mips32%+soft_float@", - mips64 = "wolfssl@mips64%-.*mips64%+soft_float@", - mipsel = "wolfssl@mipsel.*mips32%+soft_float@", - mips64el = "wolfssl@mips64el%-.*mips64%+soft_float@", - aarch64 = "wolfssl_noasm@aarch64.*v8a", - rockchip = "wolfssl@aarch64.*v8a", - armv5 = "wolfssl@arm.*v5te", - armv6 = "wolfssl@arm.*v6t2", - armv7 = "wolfssl@arm.*eabihf.*v7a", - armv8 = "wolfssl_noasm@aarch64.*v8a", - riscv64 = "wolfssl@riscv64.*" - } -} - -_M.geoview = { - name = "Geoview", - repo = "snowie2000/geoview", - get_url = gh_release_url, - cmd_version = '-version 2>/dev/null | awk \'NR==1 && $1=="Geoview" {print $2}\'', - zipped = false, - default_path = "/usr/bin/geoview", - match_fmt_str = "linux%%-%s", - file_tree = { - mipsel = "mipsle", - mips64el = "mips64le" - } -} - -return _M diff --git a/small/luci-app-passwall/luasrc/passwall/server_app.lua b/small/luci-app-passwall/luasrc/passwall/server_app.lua deleted file mode 100644 index 05d48d95f1..0000000000 --- a/small/luci-app-passwall/luasrc/passwall/server_app.lua +++ /dev/null @@ -1,262 +0,0 @@ -#!/usr/bin/lua - -local action = arg[1] -local api = require "luci.passwall.api" -local sys = api.sys -local uci = api.uci -local jsonc = api.jsonc - -local CONFIG = "passwall_server" -local CONFIG_PATH = "/tmp/etc/" .. CONFIG -local NFT_INCLUDE_FILE = CONFIG_PATH .. "/" .. CONFIG .. ".nft" -local LOG_APP_FILE = "/tmp/log/" .. CONFIG .. ".log" -local TMP_BIN_PATH = CONFIG_PATH .. "/bin" -local require_dir = "luci.passwall." - -local ipt_bin = sys.exec("echo -n $(/usr/share/passwall/iptables.sh get_ipt_bin)") -local ip6t_bin = sys.exec("echo -n $(/usr/share/passwall/iptables.sh get_ip6t_bin)") - -local nft_flag = api.is_finded("fw4") and "1" or "0" - -local function log(...) - local f, err = io.open(LOG_APP_FILE, "a") - if f and err == nil then - local str = os.date("%Y-%m-%d %H:%M:%S: ") .. table.concat({...}, " ") - f:write(str .. "\n") - f:close() - end -end - -local function cmd(cmd) - sys.call(cmd) -end - -local function ipt(arg) - if ipt_bin and #ipt_bin > 0 then - cmd(ipt_bin .. " -w " .. arg) - end -end - -local function ip6t(arg) - if ip6t_bin and #ip6t_bin > 0 then - cmd(ip6t_bin .. " -w " .. arg) - end -end - -local function ln_run(s, d, command, output) - if not output then - output = "/dev/null" - end - d = TMP_BIN_PATH .. "/" .. d - cmd(string.format('[ ! -f "%s" ] && ln -s %s %s 2>/dev/null', d, s, d)) - return string.format("%s >%s 2>&1 &", d .. " " .. command, output) -end - -local function gen_include() - cmd(string.format("echo '#!/bin/sh' > /tmp/etc/%s.include", CONFIG)) - local function extract_rules(n, a) - local _ipt = ipt_bin - if n == "6" then - _ipt = ip6t_bin - end - local result = "*" .. a - result = result .. "\n" .. sys.exec(_ipt .. '-save -t ' .. a .. ' | grep "PSW-SERVER" | sed -e "s/^-A \\(INPUT\\)/-I \\1 1/"') - result = result .. "COMMIT" - return result - end - local f, err = io.open("/tmp/etc/" .. CONFIG .. ".include", "a") - if f and err == nil then - if nft_flag == "0" then - f:write(ipt_bin .. '-save -c | grep -v "PSW-SERVER" | ' .. ipt_bin .. '-restore -c' .. "\n") - f:write(ipt_bin .. '-restore -n <<-EOT' .. "\n") - f:write(extract_rules("4", "filter") .. "\n") - f:write("EOT" .. "\n") - f:write(ip6t_bin .. '-save -c | grep -v "PSW-SERVER" | ' .. ip6t_bin .. '-restore -c' .. "\n") - f:write(ip6t_bin .. '-restore -n <<-EOT' .. "\n") - f:write(extract_rules("6", "filter") .. "\n") - f:write("EOT" .. "\n") - f:close() - else - f:write("nft -f " .. NFT_INCLUDE_FILE .. "\n") - f:close() - end - end -end - -local function start() - local enabled = tonumber(uci:get(CONFIG, "@global[0]", "enable") or 0) - if enabled == nil or enabled == 0 then - return - end - cmd(string.format("mkdir -p %s %s", CONFIG_PATH, TMP_BIN_PATH)) - cmd(string.format("touch %s", LOG_APP_FILE)) - if nft_flag == "0" then - ipt("-N PSW-SERVER") - ipt("-I INPUT -j PSW-SERVER") - ip6t("-N PSW-SERVER") - ip6t("-I INPUT -j PSW-SERVER") - else - nft_file, err = io.open(NFT_INCLUDE_FILE, "w") - nft_file:write('#!/usr/sbin/nft -f\n') - nft_file:write('add chain inet fw4 PSW-SERVER\n') - nft_file:write('flush chain inet fw4 PSW-SERVER\n') - nft_file:write('insert rule inet fw4 input position 0 jump PSW-SERVER comment "PSW-SERVER"\n') - end - uci:foreach(CONFIG, "user", function(user) - local id = user[".name"] - local enable = user.enable - if enable and tonumber(enable) == 1 then - local enable_log = user.log - local log_path = nil - if enable_log and enable_log == "1" then - log_path = CONFIG_PATH .. "/" .. id .. ".log" - else - log_path = nil - end - local remarks = user.remarks - local port = tonumber(user.port) - local bin - local config = {} - local config_file = CONFIG_PATH .. "/" .. id .. ".json" - local udp_forward = 1 - local type = user.type or "" - if type == "Socks" then - local auth = "" - if user.auth and user.auth == "1" then - local username = user.username or "" - local password = user.password or "" - if username ~= "" and password ~= "" then - username = "-u " .. username - password = "-P " .. password - auth = username .. " " .. password - end - end - bin = ln_run("/usr/bin/microsocks", "microsocks_" .. id, string.format("-i :: -p %s %s", port, auth), log_path) - elseif type == "SS" or type == "SSR" then - if user.custom == "1" and user.config_str then - config = jsonc.parse(api.base64Decode(user.config_str)) - else - config = require(require_dir .. "util_shadowsocks").gen_config_server(user) - end - local udp_param = "" - udp_forward = tonumber(user.udp_forward) or 1 - if udp_forward == 1 then - udp_param = "-u" - end - type = type:lower() - bin = ln_run("/usr/bin/" .. type .. "-server", type .. "-server", "-c " .. config_file .. " " .. udp_param, log_path) - elseif type == "SS-Rust" then - if user.custom == "1" and user.config_str then - config = jsonc.parse(api.base64Decode(user.config_str)) - else - config = require(require_dir .. "util_shadowsocks").gen_config_server(user) - end - bin = ln_run("/usr/bin/ssserver", "ssserver", "-c " .. config_file, log_path) - elseif type == "Xray" then - if user.custom == "1" and user.config_str then - config = jsonc.parse(api.base64Decode(user.config_str)) - if log_path then - if not config.log then - config.log = {} - end - config.log.loglevel = user.loglevel - end - else - config = require(require_dir .. "util_xray").gen_config_server(user) - end - bin = ln_run(api.get_app_path("xray"), "xray", "run -c " .. config_file, log_path) - elseif type == "sing-box" then - if user.custom == "1" and user.config_str then - config = jsonc.parse(api.base64Decode(user.config_str)) - if log_path then - if not config.log then - config.log = {} - end - config.log.timestamp = true - config.log.disabled = false - config.log.level = user.loglevel - config.log.output = log_path - end - else - config = require(require_dir .. "util_sing-box").gen_config_server(user) - end - bin = ln_run(api.get_app_path("sing-box"), "sing-box", "run -c " .. config_file, log_path) - elseif type == "Hysteria2" then - if user.custom == "1" and user.config_str then - config = jsonc.parse(api.base64Decode(user.config_str)) - else - config = require(require_dir .. "util_hysteria2").gen_config_server(user) - end - bin = ln_run(api.get_app_path("hysteria"), "hysteria", "-c " .. config_file .. " server", log_path) - elseif type == "Trojan" then - config = require(require_dir .. "util_trojan").gen_config_server(user) - bin = ln_run("/usr/sbin/trojan", "trojan", "-c " .. config_file, log_path) - elseif type == "Trojan-Plus" then - config = require(require_dir .. "util_trojan").gen_config_server(user) - bin = ln_run("/usr/sbin/trojan-plus", "trojan-plus", "-c " .. config_file, log_path) - end - - if next(config) then - local f, err = io.open(config_file, "w") - if f and err == nil then - f:write(jsonc.stringify(config, 1)) - f:close() - end - log(string.format("%s 生成配置文件并运行 - %s", remarks, config_file)) - end - - if bin then - cmd(bin) - end - - local bind_local = user.bind_local or 0 - if bind_local and tonumber(bind_local) ~= 1 and port then - if nft_flag == "0" then - ipt(string.format('-A PSW-SERVER -p tcp --dport %s -m comment --comment "%s" -j ACCEPT', port, remarks)) - ip6t(string.format('-A PSW-SERVER -p tcp --dport %s -m comment --comment "%s" -j ACCEPT', port, remarks)) - if udp_forward == 1 then - ipt(string.format('-A PSW-SERVER -p udp --dport %s -m comment --comment "%s" -j ACCEPT', port, remarks)) - ip6t(string.format('-A PSW-SERVER -p udp --dport %s -m comment --comment "%s" -j ACCEPT', port, remarks)) - end - else - nft_file:write(string.format('add rule inet fw4 PSW-SERVER meta l4proto tcp tcp dport {%s} counter accept comment "%s"\n', port, remarks)) - if udp_forward == 1 then - nft_file:write(string.format('add rule inet fw4 PSW-SERVER meta l4proto udp udp dport {%s} counter accept comment "%s"\n', port, remarks)) - end - end - end - end - end) - if nft_flag == "1" then - nft_file:write("add rule inet fw4 PSW-SERVER return\n") - nft_file:close() - cmd("nft -f " .. NFT_INCLUDE_FILE) - end - gen_include() -end - -local function stop() - cmd(string.format("/bin/busybox top -bn1 | grep -v 'grep' | grep '%s/' | awk '{print $1}' | xargs kill -9 >/dev/null 2>&1", CONFIG_PATH)) - if nft_flag == "0" then - ipt("-D INPUT -j PSW-SERVER 2>/dev/null") - ipt("-F PSW-SERVER 2>/dev/null") - ipt("-X PSW-SERVER 2>/dev/null") - ip6t("-D INPUT -j PSW-SERVER 2>/dev/null") - ip6t("-F PSW-SERVER 2>/dev/null") - ip6t("-X PSW-SERVER 2>/dev/null") - else - local nft_cmd = "handles=$(nft -a list chain inet fw4 input | grep -E \"PSW-SERVER\" | awk -F '# handle ' '{print$2}')\n for handle in $handles; do\n nft delete rule inet fw4 input handle ${handle} 2>/dev/null\n done" - cmd(nft_cmd) - cmd("nft flush chain inet fw4 PSW-SERVER 2>/dev/null") - cmd("nft delete chain inet fw4 PSW-SERVER 2>/dev/null") - end - cmd(string.format("rm -rf %s %s /tmp/etc/%s.include", CONFIG_PATH, LOG_APP_FILE, CONFIG)) -end - -if action then - if action == "start" then - start() - elseif action == "stop" then - stop() - end -end diff --git a/small/luci-app-passwall/luasrc/passwall/util_hysteria2.lua b/small/luci-app-passwall/luasrc/passwall/util_hysteria2.lua deleted file mode 100644 index f2668e4732..0000000000 --- a/small/luci-app-passwall/luasrc/passwall/util_hysteria2.lua +++ /dev/null @@ -1,141 +0,0 @@ -module("luci.passwall.util_hysteria2", package.seeall) -local api = require "luci.passwall.api" -local uci = api.uci -local jsonc = api.jsonc - -function gen_config_server(node) - local config = { - listen = ":" .. node.port, - tls = { - cert = node.tls_certificateFile, - key = node.tls_keyFile, - }, - obfs = (node.hysteria2_obfs) and { - type = "salamander", - salamander = { - password = node.hysteria2_obfs - } - } or nil, - auth = { - type = "password", - password = node.hysteria2_auth_password - }, - bandwidth = (node.hysteria2_up_mbps or node.hysteria2_down_mbps) and { - up = node.hysteria2_up_mbps and node.hysteria2_up_mbps .. " mbps" or nil, - down = node.hysteria2_down_mbps and node.hysteria2_down_mbps .. " mbps" or nil - } or nil, - ignoreClientBandwidth = (node.hysteria2_ignoreClientBandwidth == "1") and true or false, - disableUDP = (node.hysteria2_udp == "0") and true or false, - } - return config -end - -function gen_config(var) - local node_id = var["-node"] - if not node_id then - print("-node 不能为空") - return - end - local node = uci:get_all("passwall", node_id) - local local_tcp_redir_port = var["-local_tcp_redir_port"] - local local_udp_redir_port = var["-local_udp_redir_port"] - local local_socks_address = var["-local_socks_address"] or "0.0.0.0" - local local_socks_port = var["-local_socks_port"] - local local_socks_username = var["-local_socks_username"] - local local_socks_password = var["-local_socks_password"] - local local_http_address = var["-local_http_address"] or "0.0.0.0" - local local_http_port = var["-local_http_port"] - local local_http_username = var["-local_http_username"] - local local_http_password = var["-local_http_password"] - local tcp_proxy_way = var["-tcp_proxy_way"] - local server_host = var["-server_host"] or node.address - local server_port = var["-server_port"] or node.port - - if api.is_ipv6(server_host) then - server_host = api.get_ipv6_full(server_host) - end - local server = server_host .. ":" .. server_port - - if (node.hysteria2_hop) then - server = server .. "," .. string.gsub(node.hysteria2_hop, ":", "-") - end - - local config = { - server = server, - transport = { - type = node.protocol or "udp", - udp = { - hopInterval = (function() - local HopIntervalStr = tostring(node.hysteria2_hop_interval or "30s") - local HopInterval = tonumber(HopIntervalStr:match("^%d+")) - if HopInterval and HopInterval >= 5 then - return tostring(HopInterval) .. "s" - end - return "30s" - end)(), - } - }, - obfs = (node.hysteria2_obfs) and { - type = "salamander", - salamander = { - password = node.hysteria2_obfs - } - } or nil, - auth = node.hysteria2_auth_password, - tls = { - sni = node.tls_serverName, - insecure = (node.tls_allowInsecure == "1") and true or false, - pinSHA256 = (node.hysteria2_tls_pinSHA256) and node.hysteria2_tls_pinSHA256 or nil, - }, - quic = { - initStreamReceiveWindow = (node.hysteria2_recv_window) and tonumber(node.hysteria2_recv_window) or nil, - initConnReceiveWindow = (node.hysteria2_recv_window_conn) and tonumber(node.hysteria2_recv_window_conn) or nil, - maxIdleTimeout = (function() - local timeoutStr = tostring(node.hysteria2_idle_timeout or "") - local timeout = tonumber(timeoutStr:match("^%d+")) - if timeout and timeout >= 4 and timeout <= 120 then - return tostring(timeout) .. "s" - end - return nil - end)(), - disablePathMTUDiscovery = (node.hysteria2_disable_mtu_discovery) and true or false, - }, - bandwidth = (node.hysteria2_up_mbps or node.hysteria2_down_mbps) and { - up = node.hysteria2_up_mbps and node.hysteria2_up_mbps .. " mbps" or nil, - down = node.hysteria2_down_mbps and node.hysteria2_down_mbps .. " mbps" or nil - } or nil, - fast_open = (node.fast_open == "1") and true or false, - lazy = (node.hysteria2_lazy_start == "1") and true or false, - socks5 = (local_socks_address and local_socks_port) and { - listen = local_socks_address .. ":" .. local_socks_port, - username = (local_socks_username and local_socks_password) and local_socks_username or nil, - password = (local_socks_username and local_socks_password) and local_socks_password or nil, - disableUDP = false, - } or nil, - http = (local_http_address and local_http_port) and { - listen = local_http_address .. ":" .. local_http_port, - username = (local_http_username and local_http_password) and local_http_username or nil, - password = (local_http_username and local_http_password) and local_http_password or nil, - } or nil, - tcpRedirect = ("redirect" == tcp_proxy_way and local_tcp_redir_port) and { - listen = "0.0.0.0:" .. local_tcp_redir_port - } or nil, - tcpTProxy = ("tproxy" == tcp_proxy_way and local_tcp_redir_port) and { - listen = "0.0.0.0:" .. local_tcp_redir_port - } or nil, - udpTProxy = (local_udp_redir_port) and { - listen = "0.0.0.0:" .. local_udp_redir_port - } or nil - } - - return jsonc.stringify(config, 1) -end - -_G.gen_config = gen_config - -if arg[1] then - local func =_G[arg[1]] - if func then - print(func(api.get_function_args(arg))) - end -end diff --git a/small/luci-app-passwall/luasrc/passwall/util_naiveproxy.lua b/small/luci-app-passwall/luasrc/passwall/util_naiveproxy.lua deleted file mode 100644 index ee095c1e6c..0000000000 --- a/small/luci-app-passwall/luasrc/passwall/util_naiveproxy.lua +++ /dev/null @@ -1,39 +0,0 @@ -module("luci.passwall.util_naiveproxy", package.seeall) -local api = require "luci.passwall.api" -local uci = api.uci -local jsonc = api.jsonc - -function gen_config(var) - local node_id = var["-node"] - if not node_id then - print("-node 不能为空") - return - end - local node = uci:get_all("passwall", node_id) - local run_type = var["-run_type"] - local local_addr = var["-local_addr"] - local local_port = var["-local_port"] - local server_host = var["-server_host"] or node.address - local server_port = var["-server_port"] or node.port - - if api.is_ipv6(server_host) then - server_host = api.get_ipv6_full(server_host) - end - local server = server_host .. ":" .. server_port - - local config = { - listen = run_type .. "://" .. local_addr .. ":" .. local_port, - proxy = node.protocol .. "://" .. node.username .. ":" .. node.password .. "@" .. server - } - - return jsonc.stringify(config, 1) -end - -_G.gen_config = gen_config - -if arg[1] then - local func =_G[arg[1]] - if func then - print(func(api.get_function_args(arg))) - end -end diff --git a/small/luci-app-passwall/luasrc/passwall/util_shadowsocks.lua b/small/luci-app-passwall/luasrc/passwall/util_shadowsocks.lua deleted file mode 100644 index 4b70f06a98..0000000000 --- a/small/luci-app-passwall/luasrc/passwall/util_shadowsocks.lua +++ /dev/null @@ -1,161 +0,0 @@ -module("luci.passwall.util_shadowsocks", package.seeall) -local api = require "luci.passwall.api" -local uci = api.uci -local jsonc = api.jsonc - -function gen_config_server(node) - local config = {} - config.server_port = tonumber(node.port) - config.password = node.password - config.timeout = tonumber(node.timeout) - config.fast_open = (node.tcp_fast_open and node.tcp_fast_open == "1") and true or false - config.method = node.method - - if node.type == "SS-Rust" then - config.server = "::" - config.mode = "tcp_and_udp" - else - config.server = {"[::0]", "0.0.0.0"} - end - - if node.type == "SSR" then - config.protocol = node.protocol - config.protocol_param = node.protocol_param - config.obfs = node.obfs - config.obfs_param = node.obfs_param - end - - return config -end - -local plugin_sh, plugin_bin - -function gen_config(var) - local node_id = var["-node"] - if not node_id then - print("-node 不能为空") - return - end - local node = uci:get_all("passwall", node_id) - local server_host = var["-server_host"] or node.address - local server_port = var["-server_port"] or node.port - local local_addr = var["-local_addr"] - local local_port = var["-local_port"] - local mode = var["-mode"] - local local_socks_address = var["-local_socks_address"] or "0.0.0.0" - local local_socks_port = var["-local_socks_port"] - local local_socks_username = var["-local_socks_username"] - local local_socks_password = var["-local_socks_password"] - local local_http_address = var["-local_http_address"] or "0.0.0.0" - local local_http_port = var["-local_http_port"] - local local_http_username = var["-local_http_username"] - local local_http_password = var["-local_http_password"] - local local_tcp_redir_port = var["-local_tcp_redir_port"] - local local_tcp_redir_address = var["-local_tcp_redir_address"] or "0.0.0.0" - local local_udp_redir_port = var["-local_udp_redir_port"] - local local_udp_redir_address = var["-local_udp_redir_address"] or "0.0.0.0" - - if api.is_ipv6(server_host) then - server_host = api.get_ipv6_only(server_host) - end - local server = server_host - - local plugin_file - if node.plugin and node.plugin ~= "" and node.plugin ~= "none" then - plugin_sh = var["-plugin_sh"] or "" - plugin_file = (plugin_sh ~="") and plugin_sh or node.plugin - plugin_bin = node.plugin - end - - local config = { - server = server, - server_port = tonumber(server_port), - local_address = local_addr, - local_port = tonumber(local_port), - password = node.password, - method = node.method, - timeout = tonumber(node.timeout), - fast_open = (node.tcp_fast_open and node.tcp_fast_open == "true") and true or false, - reuse_port = true, - tcp_tproxy = var["-tcp_tproxy"] and true or nil - } - - if node.type == "SS" then - config.plugin = plugin_file or nil - config.plugin_opts = (plugin_file) and node.plugin_opts or nil - config.mode = mode - elseif node.type == "SSR" then - config.protocol = node.protocol - config.protocol_param = node.protocol_param - config.obfs = node.obfs - config.obfs_param = node.obfs_param - elseif node.type == "SS-Rust" then - config = { - servers = { - { - address = server, - port = tonumber(server_port), - method = node.method, - password = node.password, - timeout = tonumber(node.timeout), - plugin = plugin_file or nil, - plugin_opts = (plugin_file) and node.plugin_opts or nil - } - }, - locals = {}, - fast_open = (node.tcp_fast_open and node.tcp_fast_open == "true") and true or false - } - if local_socks_address and local_socks_port then - table.insert(config.locals, { - local_address = local_socks_address, - local_port = tonumber(local_socks_port), - mode = "tcp_and_udp" - }) - end - if local_http_address and local_http_port then - table.insert(config.locals, { - protocol = "http", - local_address = local_http_address, - local_port = tonumber(local_http_port) - }) - end - if local_tcp_redir_address and local_tcp_redir_port then - table.insert(config.locals, { - protocol = "redir", - mode = "tcp_only", - tcp_redir = var["-tcp_tproxy"] and "tproxy" or nil, - local_address = local_tcp_redir_address, - local_port = tonumber(local_tcp_redir_port) - }) - end - if local_udp_redir_address and local_udp_redir_port then - table.insert(config.locals, { - protocol = "redir", - mode = "udp_only", - local_address = local_udp_redir_address, - local_port = tonumber(local_udp_redir_port) - }) - end - end - - return jsonc.stringify(config, 1) -end - -_G.gen_config = gen_config - -if arg[1] then - local func =_G[arg[1]] - if func then - print(func(api.get_function_args(arg))) - if plugin_sh and plugin_sh ~="" and plugin_bin then - local f = io.open(plugin_sh, "w") - f:write("#!/bin/sh\n") - f:write("export PATH=/usr/sbin:/usr/bin:/sbin:/bin:/root/bin:$PATH\n") - f:write(plugin_bin .. " $@ &\n") - f:write("echo $! > " .. plugin_sh:gsub("%.sh$", ".pid") .. "\n") - f:write("wait\n") - f:close() - luci.sys.call("chmod +x " .. plugin_sh) - end - end -end diff --git a/small/luci-app-passwall/luasrc/passwall/util_sing-box.lua b/small/luci-app-passwall/luasrc/passwall/util_sing-box.lua deleted file mode 100644 index a8e43ad09f..0000000000 --- a/small/luci-app-passwall/luasrc/passwall/util_sing-box.lua +++ /dev/null @@ -1,2065 +0,0 @@ -module("luci.passwall.util_sing-box", package.seeall) -local api = require "luci.passwall.api" -local uci = api.uci -local sys = api.sys -local jsonc = api.jsonc -local appname = "passwall" -local fs = api.fs -local split = api.split - -local local_version = api.get_app_version("sing-box"):match("[^v]+") -local version_ge_1_11_0 = api.compare_versions(local_version, ">=", "1.11.0") -local version_ge_1_12_0 = api.compare_versions(local_version, ">=", "1.12.0") - -local geosite_all_tag = {} -local geoip_all_tag = {} -local srss_path = "/tmp/etc/" .. appname .."_tmp/srss/" - -local function convert_geofile() - if api.compare_versions(local_version, "<", "1.8.0") then - api.log("!!!注意:Sing-Box 版本低,Sing-Box 分流无法启用!请在[组件更新]中更新。") - return - end - local geo_dir = (uci:get(appname, "@global_rules[0]", "v2ray_location_asset") or "/usr/share/v2ray/"):match("^(.*)/") - local geosite_path = geo_dir .. "/geosite.dat" - local geoip_path = geo_dir .. "/geoip.dat" - if not api.finded_com("geoview") then - api.log("!!!注意:缺少 Geoview 组件,Sing-Box 分流无法启用!请在[组件更新]中更新。") - return - else - if api.compare_versions(api.get_app_version("geoview"), "<", "0.1.10") then - api.log("!!!注意:Geoview 组件版本低,Sing-Box 分流无法启用!请在[组件更新]中更新。") - return - end - end - if not fs.access(srss_path) then - fs.mkdir(srss_path) - end - local function convert(file_path, prefix, tags) - if next(tags) and fs.access(file_path) then - local md5_file = srss_path .. prefix .. ".dat.md5" - local new_md5 = sys.exec("md5sum " .. file_path .. " 2>/dev/null | awk '{print $1}'"):gsub("\n", "") - local old_md5 = sys.exec("[ -f " .. md5_file .. " ] && head -n 1 " .. md5_file .. " | tr -d ' \t\n' || echo ''") - if new_md5 ~= "" and new_md5 ~= old_md5 then - sys.call("printf '%s' " .. new_md5 .. " > " .. md5_file) - sys.call("rm -rf " .. srss_path .. prefix .. "-*.srs" ) - end - for k in pairs(tags) do - local srs_file = srss_path .. prefix .. "-" .. k .. ".srs" - if not fs.access(srs_file) then - local cmd = string.format("geoview -type %s -action convert -input '%s' -list '%s' -output '%s' -lowmem=true", - prefix, file_path, k, srs_file) - sys.exec(cmd) - --local status = fs.access(srs_file) and "成功。" or "失败!" - --api.log(string.format(" - 转换 %s:%s ... %s", prefix, k, status)) - end - end - end - end - --api.log("Sing-Box 规则集转换:") - convert(geosite_path, "geosite", geosite_all_tag) - convert(geoip_path, "geoip", geoip_all_tag) -end - -local new_port - -local function get_new_port() - local cmd_format = ". /usr/share/passwall/utils.sh ; echo -n $(get_new_port %s tcp)" - local set_port = 0 - if new_port and tonumber(new_port) then - set_port = tonumber(new_port) + 1 - end - new_port = tonumber(sys.exec(string.format(cmd_format, set_port == 0 and "auto" or set_port))) - return new_port -end - -function gen_outbound(flag, node, tag, proxy_table) - local result = nil - if node then - local node_id = node[".name"] - if tag == nil then - tag = node_id - end - - local proxy_tag = nil - local fragment = nil - local record_fragment = nil - local run_socks_instance = true - if proxy_table ~= nil and type(proxy_table) == "table" then - proxy_tag = proxy_table.tag or nil - fragment = proxy_table.fragment or nil - record_fragment = proxy_table.record_fragment or nil - run_socks_instance = proxy_table.run_socks_instance - end - - if node.type ~= "sing-box" then - local relay_port = node.port - new_port = get_new_port() - local config_file = string.format("%s_%s_%s.json", flag, tag, new_port) - if tag and node_id and not tag:find(node_id) then - config_file = string.format("%s_%s_%s_%s.json", flag, tag, node_id, new_port) - end - if run_socks_instance then - sys.call(string.format('/usr/share/%s/app.sh run_socks "%s"> /dev/null', - appname, - string.format("flag=%s node=%s bind=%s socks_port=%s config_file=%s relay_port=%s", - new_port, --flag - node_id, --node - "127.0.0.1", --bind - new_port, --socks port - config_file, --config file - (proxy_tag and relay_port) and tostring(relay_port) or "" --relay port - ) - ) - ) - end - node = { - protocol = "socks", - address = "127.0.0.1", - port = new_port - } - else - if proxy_tag then - node.detour = proxy_tag - end - end - - result = { - _id = node_id, - _flag = flag, - _flag_proxy_tag = proxy_tag, - tag = tag, - type = node.protocol, - server = node.address, - server_port = tonumber(node.port), - domain_strategy = node.domain_strategy, - detour = node.detour, - } - - if version_ge_1_12_0 then - --https://sing-box.sagernet.org/migration/#migrate-outbound-domain-strategy-option-to-domain-resolver - result.domain_strategy = nil - result.domain_resolver = { - server = "direct", - strategy = (node.domain_strategy and node.domain_strategy ~="") and node.domain_strategy or nil - } - end - - local tls = nil - if node.tls == "1" then - local alpn = nil - if node.alpn and node.alpn ~= "default" then - alpn = {} - string.gsub(node.alpn, '[^' .. "," .. ']+', function(w) - table.insert(alpn, w) - end) - end - tls = { - enabled = true, - disable_sni = (node.tls_disable_sni == "1") and true or false, --不要在 ClientHello 中发送服务器名称. - server_name = node.tls_serverName, --用于验证返回证书上的主机名,除非设置不安全。它还包含在 ClientHello 中以支持虚拟主机,除非它是 IP 地址。 - insecure = (node.tls_allowInsecure == "1") and true or false, --接受任何服务器证书。 - alpn = alpn, --支持的应用层协议协商列表,按优先顺序排列。如果两个对等点都支持 ALPN,则选择的协议将是此列表中的一个,如果没有相互支持的协议则连接将失败。 - --min_version = "1.2", - --max_version = "1.3", - fragment = fragment, - record_fragment = record_fragment, - ech = { - enabled = (node.ech == "1") and true or false, - config = node.ech_config and split(node.ech_config:gsub("\\n", "\n"), "\n") or {} - }, - utls = { - enabled = (node.utls == "1" or node.reality == "1") and true or false, - fingerprint = node.fingerprint or "chrome" - }, - reality = { - enabled = (node.reality == "1") and true or false, - public_key = node.reality_publicKey, - short_id = node.reality_shortId - } - } - end - - local mux = nil - if node.mux == "1" then - mux = { - enabled = true, - protocol = node.mux_type or "h2mux", - max_connections = ( (node.tcpbrutal == "1") and 1 ) or tonumber(node.mux_concurrency) or 4, - padding = (node.mux_padding == "1") and true or false, - --min_streams = 4, - --max_streams = 0, - brutal = { - enabled = (node.tcpbrutal == "1") and true or false, - up_mbps = tonumber(node.tcpbrutal_up_mbps) or 10, - down_mbps = tonumber(node.tcpbrutal_down_mbps) or 50, - }, - } - end - - local v2ray_transport = nil - - if node.transport == "tcp" and node.tcp_guise == "http" and (node.tcp_guise_http_host or "") ~= "" then --模拟xray raw(tcp)传输 - v2ray_transport = { - type = "http", - host = node.tcp_guise_http_host, - path = node.tcp_guise_http_path and (function() - local first = node.tcp_guise_http_path[1] - return (first == "" or not first) and "/" or first - end)() or "/", - headers = node.user_agent and { - ["User-Agent"] = node.user_agent - } or nil, - idle_timeout = (node.http_h2_health_check == "1") and node.http_h2_read_idle_timeout or nil, - ping_timeout = (node.http_h2_health_check == "1") and node.http_h2_health_check_timeout or nil, - } - --不强制执行 TLS。如果未配置 TLS,将使用纯 HTTP 1.1。 - end - - if node.transport == "http" then - v2ray_transport = { - type = "http", - host = node.http_host or {}, - path = node.http_path or "/", - headers = node.user_agent and { - ["User-Agent"] = node.user_agent - } or nil, - idle_timeout = (node.http_h2_health_check == "1") and node.http_h2_read_idle_timeout or nil, - ping_timeout = (node.http_h2_health_check == "1") and node.http_h2_health_check_timeout or nil, - } - --不强制执行 TLS。如果未配置 TLS,将使用纯 HTTP 1.1。 - end - - if node.transport == "ws" then - v2ray_transport = { - type = "ws", - path = node.ws_path or "/", - headers = (node.ws_host or node.user_agent) and { - Host = node.ws_host, - ["User-Agent"] = node.user_agent - } or nil, - max_early_data = tonumber(node.ws_maxEarlyData) or nil, - early_data_header_name = (node.ws_earlyDataHeaderName) and node.ws_earlyDataHeaderName or nil --要与 Xray-core 兼容,请将其设置为 Sec-WebSocket-Protocol。它需要与服务器保持一致。 - } - end - - if node.transport == "httpupgrade" then - v2ray_transport = { - type = "httpupgrade", - host = node.httpupgrade_host, - path = node.httpupgrade_path or "/", - headers = node.user_agent and { - ["User-Agent"] = node.user_agent - } or nil - } - end - - if node.transport == "quic" then - v2ray_transport = { - type = "quic" - } - --没有额外的加密支持: 它基本上是重复加密。 并且 Xray-core 在这里与 v2ray-core 不兼容。 - end - - if node.transport == "grpc" then - v2ray_transport = { - type = "grpc", - service_name = node.grpc_serviceName, - idle_timeout = tonumber(node.grpc_idle_timeout) or nil, - ping_timeout = tonumber(node.grpc_health_check_timeout) or nil, - permit_without_stream = (node.grpc_permit_without_stream == "1") and true or nil, - } - end - - local protocol_table = nil - - if node.protocol == "socks" then - protocol_table = { - version = "5", - username = (node.username and node.password) and node.username or nil, - password = (node.username and node.password) and node.password or nil, - udp_over_tcp = node.uot == "1" and { - enabled = true, - version = 2 - } or nil, - } - end - - if node.protocol == "http" then - protocol_table = { - username = (node.username and node.password) and node.username or nil, - password = (node.username and node.password) and node.password or nil, - path = nil, - headers = nil, - tls = tls - } - end - - if node.protocol == "shadowsocks" then - protocol_table = { - method = node.method or nil, - password = node.password or "", - plugin = (node.plugin_enabled and node.plugin) or nil, - plugin_opts = (node.plugin_enabled and node.plugin_opts) or nil, - udp_over_tcp = node.uot == "1" and { - enabled = true, - version = 2 - } or nil, - multiplex = mux, - } - end - - if node.protocol == "trojan" then - protocol_table = { - password = node.password, - tls = tls, - multiplex = mux, - transport = v2ray_transport - } - end - - if node.protocol == "vmess" then - protocol_table = { - uuid = node.uuid, - security = node.security, - alter_id = (node.alter_id) and tonumber(node.alter_id) or 0, - global_padding = (node.global_padding == "1") and true or false, - authenticated_length = (node.authenticated_length == "1") and true or false, - tls = tls, - packet_encoding = "", --UDP 包编码。(空):禁用 packetaddr:由 v2ray 5+ 支持 xudp:由 xray 支持 - multiplex = mux, - transport = v2ray_transport, - } - end - - if node.protocol == "vless" then - protocol_table = { - uuid = node.uuid, - flow = (node.tls == '1' and node.flow) and node.flow or nil, - tls = tls, - packet_encoding = "xudp", --UDP 包编码。(空):禁用 packetaddr:由 v2ray 5+ 支持 xudp:由 xray 支持 - multiplex = mux, - transport = v2ray_transport, - } - end - - if node.protocol == "wireguard" then - if node.wireguard_reserved then - local bytes = {} - if not node.wireguard_reserved:match("[^%d,]+") then - node.wireguard_reserved:gsub("%d+", function(b) - bytes[#bytes + 1] = tonumber(b) - end) - else - local result = api.bin.b64decode(node.wireguard_reserved) - for i = 1, #result do - bytes[i] = result:byte(i) - end - end - node.wireguard_reserved = #bytes > 0 and bytes or nil - end - protocol_table = { - system_interface = nil, - interface_name = nil, - local_address = node.wireguard_local_address, - private_key = node.wireguard_secret_key, - peer_public_key = node.wireguard_public_key, - pre_shared_key = node.wireguard_preSharedKey, - reserved = node.wireguard_reserved, - mtu = tonumber(node.wireguard_mtu), - } - end - - if node.protocol == "hysteria" then - local server_ports = {} - if node.hysteria_hop then - node.hysteria_hop = string.gsub(node.hysteria_hop, "-", ":") - for range in node.hysteria_hop:gmatch("([^,]+)") do - if range:match("^%d+:%d+$") then - table.insert(server_ports, range) - end - end - end - protocol_table = { - server_ports = next(server_ports) and server_ports or nil, - hop_interval = (function() - if not next(server_ports) then return nil end - local v = tonumber((node.hysteria_hop_interval or "30s"):match("^%d+")) - return (v and v >= 5) and (v .. "s") or "30s" - end)(), - up_mbps = tonumber(node.hysteria_up_mbps), - down_mbps = tonumber(node.hysteria_down_mbps), - obfs = node.hysteria_obfs, - auth = (node.hysteria_auth_type == "base64") and node.hysteria_auth_password or nil, - auth_str = (node.hysteria_auth_type == "string") and node.hysteria_auth_password or nil, - recv_window_conn = tonumber(node.hysteria_recv_window_conn), - recv_window = tonumber(node.hysteria_recv_window), - disable_mtu_discovery = (node.hysteria_disable_mtu_discovery == "1") and true or false, - tls = { - enabled = true, - server_name = node.tls_serverName, - insecure = (node.tls_allowInsecure == "1") and true or false, - fragment = fragment, - record_fragment = record_fragment, - alpn = (node.hysteria_alpn and node.hysteria_alpn ~= "") and { - node.hysteria_alpn - } or nil, - ech = { - enabled = (node.ech == "1") and true or false, - config = node.ech_config and split(node.ech_config:gsub("\\n", "\n"), "\n") or {} - } - } - } - end - - if node.protocol == "shadowtls" then - protocol_table = { - version = tonumber(node.shadowtls_version), - password = (node.shadowtls_version == "2" or node.shadowtls_version == "3") and node.password or nil, - tls = tls, - } - end - - if node.protocol == "tuic" then - protocol_table = { - uuid = node.uuid, - password = node.password, - congestion_control = node.tuic_congestion_control or "cubic", - udp_relay_mode = node.tuic_udp_relay_mode or "native", - udp_over_stream = false, - zero_rtt_handshake = (node.tuic_zero_rtt_handshake == "1") and true or false, - heartbeat = node.tuic_heartbeat .. "s", - tls = { - enabled = true, - server_name = node.tls_serverName, - insecure = (node.tls_allowInsecure == "1") and true or false, - fragment = fragment, - record_fragment = record_fragment, - alpn = (node.tuic_alpn and node.tuic_alpn ~= "") and { - node.tuic_alpn - } or nil, - ech = { - enabled = (node.ech == "1") and true or false, - config = node.ech_config and split(node.ech_config:gsub("\\n", "\n"), "\n") or {} - } - } - } - end - - if node.protocol == "hysteria2" then - local server_ports = {} - if node.hysteria2_hop then - node.hysteria2_hop = string.gsub(node.hysteria2_hop, "-", ":") - for range in node.hysteria2_hop:gmatch("([^,]+)") do - if range:match("^%d+:%d+$") then - table.insert(server_ports, range) - end - end - end - protocol_table = { - server_ports = next(server_ports) and server_ports or nil, - hop_interval = (function() - if not next(server_ports) then return nil end - local v = tonumber((node.hysteria2_hop_interval or "30s"):match("^%d+")) - return (v and v >= 5) and (v .. "s") or "30s" - end)(), - up_mbps = (node.hysteria2_up_mbps and tonumber(node.hysteria2_up_mbps)) and tonumber(node.hysteria2_up_mbps) or nil, - down_mbps = (node.hysteria2_down_mbps and tonumber(node.hysteria2_down_mbps)) and tonumber(node.hysteria2_down_mbps) or nil, - obfs = { - type = node.hysteria2_obfs_type, - password = node.hysteria2_obfs_password - }, - password = node.hysteria2_auth_password or nil, - tls = { - enabled = true, - server_name = node.tls_serverName, - insecure = (node.tls_allowInsecure == "1") and true or false, - fragment = fragment, - record_fragment = record_fragment, - ech = { - enabled = (node.ech == "1") and true or false, - config = node.ech_config and split(node.ech_config:gsub("\\n", "\n"), "\n") or {} - } - } - } - end - - if node.protocol == "anytls" then - protocol_table = { - password = (node.password and node.password ~= "") and node.password or "", - idle_session_check_interval = "30s", - idle_session_timeout = "30s", - min_idle_session = 5, - tls = tls - } - end - - if node.protocol == "ssh" then - protocol_table = { - user = (node.username and node.username ~= "") and node.username or "root", - password = (node.password and node.password ~= "") and node.password or "", - private_key = node.ssh_priv_key, - private_key_passphrase = node.ssh_priv_key_pp, - host_key = node.ssh_host_key, - host_key_algorithms = node.ssh_host_key_algo, - client_version = node.ssh_client_version - } - end - - if protocol_table then - for key, value in pairs(protocol_table) do - result[key] = value - end - end - end - return result -end - -function gen_config_server(node) - local outbounds = { - { type = "direct", tag = "direct" } - } - - local tls = { - enabled = true, - certificate_path = node.tls_certificateFile, - key_path = node.tls_keyFile, - } - - if node.tls == "1" and node.reality == "1" then - tls.certificate_path = nil - tls.key_path = nil - tls.server_name = node.reality_handshake_server - tls.reality = { - enabled = true, - private_key = node.reality_private_key, - short_id = { - node.reality_shortId - }, - handshake = { - server = node.reality_handshake_server, - server_port = tonumber(node.reality_handshake_server_port) - } - } - end - - if node.tls == "1" and node.ech == "1" then - tls.ech = { - enabled = true, - key = node.ech_key and split(node.ech_key:gsub("\\n", "\n"), "\n") or {} - } - end - - local mux = nil - if node.mux == "1" then - mux = { - enabled = true, - padding = (node.mux_padding == "1") and true or false, - brutal = { - enabled = (node.tcpbrutal == "1") and true or false, - up_mbps = tonumber(node.tcpbrutal_up_mbps) or 10, - down_mbps = tonumber(node.tcpbrutal_down_mbps) or 50, - }, - } - end - - local v2ray_transport = nil - - if node.transport == "http" then - v2ray_transport = { - type = "http", - host = node.http_host or {}, - path = node.http_path or "/", - } - end - - if node.transport == "ws" then - v2ray_transport = { - type = "ws", - path = node.ws_path or "/", - headers = (node.ws_host ~= nil) and { Host = node.ws_host } or nil, - early_data_header_name = (node.ws_earlyDataHeaderName) and node.ws_earlyDataHeaderName or nil --要与 Xray-core 兼容,请将其设置为 Sec-WebSocket-Protocol。它需要与服务器保持一致。 - } - end - - if node.transport == "httpupgrade" then - v2ray_transport = { - type = "httpupgrade", - host = node.httpupgrade_host, - path = node.httpupgrade_path or "/", - } - end - - if node.transport == "quic" then - v2ray_transport = { - type = "quic" - } - --没有额外的加密支持: 它基本上是重复加密。 并且 Xray-core 在这里与 v2ray-core 不兼容。 - end - - if node.transport == "grpc" then - v2ray_transport = { - type = "grpc", - service_name = node.grpc_serviceName, - } - end - - local inbound = { - type = node.protocol, - tag = "inbound", - listen = (node.bind_local == "1") and "127.0.0.1" or "::", - listen_port = tonumber(node.port), - } - - local protocol_table = nil - - if node.protocol == "mixed" then - protocol_table = { - users = (node.auth == "1") and { - { - username = node.username, - password = node.password - } - } or nil, - set_system_proxy = false - } - end - - if node.protocol == "socks" then - protocol_table = { - users = (node.auth == "1") and { - { - username = node.username, - password = node.password - } - } or nil - } - end - - if node.protocol == "http" then - protocol_table = { - users = (node.auth == "1") and { - { - username = node.username, - password = node.password - } - } or nil, - tls = (node.tls == "1") and tls or nil, - } - end - - if node.protocol == "shadowsocks" then - protocol_table = { - method = node.method, - password = node.password, - multiplex = mux, - } - end - - if node.protocol == "vmess" then - if node.uuid then - local users = {} - for i = 1, #node.uuid do - users[i] = { - name = node.uuid[i], - uuid = node.uuid[i], - alterId = 0, - } - end - protocol_table = { - users = users, - tls = (node.tls == "1") and tls or nil, - multiplex = mux, - transport = v2ray_transport, - } - end - end - - if node.protocol == "vless" then - if node.uuid then - local users = {} - for i = 1, #node.uuid do - users[i] = { - name = node.uuid[i], - uuid = node.uuid[i], - flow = node.flow, - } - end - protocol_table = { - users = users, - tls = (node.tls == "1") and tls or nil, - multiplex = mux, - transport = v2ray_transport, - } - end - end - - if node.protocol == "trojan" then - if node.uuid then - local users = {} - for i = 1, #node.uuid do - users[i] = { - name = node.uuid[i], - password = node.uuid[i], - } - end - protocol_table = { - users = users, - tls = (node.tls == "1") and tls or nil, - fallback = nil, - fallback_for_alpn = nil, - multiplex = mux, - transport = v2ray_transport, - } - end - end - - if node.protocol == "naive" then - protocol_table = { - users = { - { - username = node.username, - password = node.password - } - }, - tls = tls, - } - end - - if node.protocol == "hysteria" then - tls.alpn = (node.hysteria_alpn and node.hysteria_alpn ~= "") and { - node.hysteria_alpn - } or nil - protocol_table = { - up = node.hysteria_up_mbps .. " Mbps", - down = node.hysteria_down_mbps .. " Mbps", - up_mbps = tonumber(node.hysteria_up_mbps), - down_mbps = tonumber(node.hysteria_down_mbps), - obfs = node.hysteria_obfs, - users = { - { - name = "user1", - auth = (node.hysteria_auth_type == "base64") and node.hysteria_auth_password or nil, - auth_str = (node.hysteria_auth_type == "string") and node.hysteria_auth_password or nil, - } - }, - recv_window_conn = node.hysteria_recv_window_conn and tonumber(node.hysteria_recv_window_conn) or nil, - recv_window_client = node.hysteria_recv_window_client and tonumber(node.hysteria_recv_window_client) or nil, - max_conn_client = node.hysteria_max_conn_client and tonumber(node.hysteria_max_conn_client) or nil, - disable_mtu_discovery = (node.hysteria_disable_mtu_discovery == "1") and true or false, - tls = tls - } - end - - if node.protocol == "tuic" then - if node.uuid then - local users = {} - for i = 1, #node.uuid do - users[i] = { - name = node.uuid[i], - uuid = node.uuid[i], - password = node.password - } - end - tls.alpn = (node.tuic_alpn and node.tuic_alpn ~= "") and { - node.tuic_alpn - } or nil - protocol_table = { - users = users, - congestion_control = node.tuic_congestion_control or "cubic", - zero_rtt_handshake = (node.tuic_zero_rtt_handshake == "1") and true or false, - heartbeat = node.tuic_heartbeat .. "s", - tls = tls - } - end - end - - if node.protocol == "hysteria2" then - protocol_table = { - up_mbps = (node.hysteria2_ignore_client_bandwidth ~= "1" and node.hysteria2_up_mbps and tonumber(node.hysteria2_up_mbps)) and tonumber(node.hysteria2_up_mbps) or nil, - down_mbps = (node.hysteria2_ignore_client_bandwidth ~= "1" and node.hysteria2_down_mbps and tonumber(node.hysteria2_down_mbps)) and tonumber(node.hysteria2_down_mbps) or nil, - obfs = { - type = node.hysteria2_obfs_type, - password = node.hysteria2_obfs_password - }, - users = { - { - name = "user1", - password = node.hysteria2_auth_password or nil, - } - }, - ignore_client_bandwidth = (node.hysteria2_ignore_client_bandwidth == "1") and true or false, - tls = tls - } - end - - if node.protocol == "anytls" then - protocol_table = { - users = { - { - name = (node.username and node.username ~= "") and node.username or "sekai", - password = node.password - } - }, - tls = tls, - } - end - - if node.protocol == "direct" then - protocol_table = { - network = (node.d_protocol ~= "TCP,UDP") and node.d_protocol or nil, - override_address = node.d_address, - override_port = tonumber(node.d_port) - } - end - - if protocol_table then - for key, value in pairs(protocol_table) do - inbound[key] = value - end - end - - local route = { - rules = { - { - ip_is_private = true, - action = node.accept_lan == "1" and "route" or "reject", - outbound = node.accept_lan == "1" and "direct" or nil - - } - } - } - - if node.outbound_node then - local outbound = nil - if node.outbound_node == "_iface" and node.outbound_node_iface then - outbound = { - type = "direct", - tag = "outbound", - bind_interface = node.outbound_node_iface, - routing_mark = 255, - } - sys.call(string.format("mkdir -p %s && touch %s/%s", api.TMP_IFACE_PATH, api.TMP_IFACE_PATH, node.outbound_node_iface)) - else - local outbound_node_t = uci:get_all("passwall", node.outbound_node) - if node.outbound_node == "_socks" or node.outbound_node == "_http" then - outbound_node_t = { - type = node.type, - protocol = node.outbound_node:gsub("_", ""), - address = node.outbound_node_address, - port = tonumber(node.outbound_node_port), - username = (node.outbound_node_username and node.outbound_node_username ~= "") and node.outbound_node_username or nil, - password = (node.outbound_node_password and node.outbound_node_password ~= "") and node.outbound_node_password or nil, - } - end - outbound = require("luci.passwall.util_sing-box").gen_outbound(nil, outbound_node_t, "outbound") - end - if outbound then - route.final = "outbound" - table.insert(outbounds, 1, outbound) - end - end - - local config = { - log = { - disabled = (not node or node.log == "0") and true or false, - level = node.loglevel or "info", - timestamp = true, - --output = logfile, - }, - inbounds = { inbound }, - outbounds = outbounds, - route = route - } - - for index, value in ipairs(config.outbounds) do - for k, v in pairs(config.outbounds[index]) do - if k:find("_") == 1 then - config.outbounds[index][k] = nil - end - end - end - - return config -end - -function gen_config(var) - local flag = var["-flag"] - local log = var["-log"] or "0" - local loglevel = var["-loglevel"] or "warn" - local logfile = var["-logfile"] or "/dev/null" - local node_id = var["-node"] - local server_host = var["-server_host"] - local server_port = var["-server_port"] - local tcp_proxy_way = var["-tcp_proxy_way"] - local tcp_redir_port = var["-tcp_redir_port"] - local udp_redir_port = var["-udp_redir_port"] - local local_socks_address = var["-local_socks_address"] or "0.0.0.0" - local local_socks_port = var["-local_socks_port"] - local local_socks_username = var["-local_socks_username"] - local local_socks_password = var["-local_socks_password"] - local local_http_address = var["-local_http_address"] or "0.0.0.0" - local local_http_port = var["-local_http_port"] - local local_http_username = var["-local_http_username"] - local local_http_password = var["-local_http_password"] - local dns_listen_port = var["-dns_listen_port"] - local direct_dns_port = var["-direct_dns_port"] - local direct_dns_udp_server = var["-direct_dns_udp_server"] - local direct_dns_tcp_server = var["-direct_dns_tcp_server"] - local direct_dns_query_strategy = var["-direct_dns_query_strategy"] - local remote_dns_server = var["-remote_dns_server"] - local remote_dns_port = var["-remote_dns_port"] - local remote_dns_udp_server = var["-remote_dns_udp_server"] - local remote_dns_tcp_server = var["-remote_dns_tcp_server"] - local remote_dns_doh_url = var["-remote_dns_doh_url"] - local remote_dns_doh_host = var["-remote_dns_doh_host"] - local remote_dns_client_ip = var["-remote_dns_client_ip"] - local remote_dns_query_strategy = var["-remote_dns_query_strategy"] - local remote_dns_fake = var["-remote_dns_fake"] - local dns_cache = var["-dns_cache"] - local dns_socks_address = var["-dns_socks_address"] - local dns_socks_port = var["-dns_socks_port"] - local no_run = var["-no_run"] - - local dns_domain_rules = {} - local dns = nil - local inbounds = {} - local outbounds = {} - local COMMON = {} - - local singbox_settings = uci:get_all(appname, "@global_singbox[0]") or {} - - local route = { - rules = {} - } - - local experimental = nil - - if node_id then - local node = uci:get_all(appname, node_id) - if node then - if server_host and server_port then - node.address = server_host - node.port = server_port - end - end - - if local_socks_port then - local inbound = { - type = "socks", - tag = "socks-in", - listen = local_socks_address, - listen_port = tonumber(local_socks_port), - sniff = true - } - if local_socks_username and local_socks_password and local_socks_username ~= "" and local_socks_password ~= "" then - inbound.users = { - { - username = local_socks_username, - password = local_socks_password - } - } - end - table.insert(inbounds, inbound) - end - - if local_http_port then - local inbound = { - type = "http", - tag = "http-in", - listen = local_http_address, - listen_port = tonumber(local_http_port) - } - if local_http_username and local_http_password and local_http_username ~= "" and local_http_password ~= "" then - inbound.users = { - { - username = local_http_username, - password = local_http_password - } - } - end - table.insert(inbounds, inbound) - end - - if tcp_redir_port then - if tcp_proxy_way ~= "tproxy" then - local inbound = { - type = "redirect", - tag = "redirect_tcp", - listen = "::", - listen_port = tonumber(tcp_redir_port), - sniff = true - } - table.insert(inbounds, inbound) - else - local inbound = { - type = "tproxy", - tag = "tproxy_tcp", - network = "tcp", - listen = "::", - listen_port = tonumber(tcp_redir_port), - sniff = true - } - table.insert(inbounds, inbound) - end - end - - if udp_redir_port then - local inbound = { - type = "tproxy", - tag = "tproxy_udp", - network = "udp", - listen = "::", - listen_port = tonumber(udp_redir_port), - sniff = true - } - table.insert(inbounds, inbound) - end - - local function gen_urltest(_node) - local urltest_id = _node[".name"] - local urltest_tag = "urltest-" .. urltest_id - -- existing urltest - for _, v in ipairs(outbounds) do - if v.tag == urltest_tag then - return urltest_tag - end - end - -- new urltest - local ut_nodes = _node.urltest_node - local valid_nodes = {} - for i = 1, #ut_nodes do - local ut_node_id = ut_nodes[i] - local ut_node_tag = "ut-" .. ut_node_id - local is_new_ut_node = true - for _, outbound in ipairs(outbounds) do - if string.sub(outbound.tag, 1, #ut_node_tag) == ut_node_tag then - is_new_ut_node = false - valid_nodes[#valid_nodes + 1] = outbound.tag - break - end - end - if is_new_ut_node then - local ut_node - if ut_node_id:find("Socks_") then - local socks_id = ut_node_id:sub(1 + #"Socks_") - local socks_node = uci:get_all(appname, socks_id) or nil - if socks_node then - ut_node = { - type = "sing-box", - protocol = "socks", - address = "127.0.0.1", - port = socks_node.port, - uot = "1", - remarks = "Socks_" .. socks_node.port - } - end - else - ut_node = uci:get_all(appname, ut_node_id) - end - if ut_node then - local outbound = gen_outbound(flag, ut_node, ut_node_tag, { fragment = singbox_settings.fragment == "1" or nil, record_fragment = singbox_settings.record_fragment == "1" or nil, run_socks_instance = not no_run }) - if outbound then - outbound.tag = outbound.tag .. ":" .. ut_node.remarks - table.insert(outbounds, outbound) - valid_nodes[#valid_nodes + 1] = outbound.tag - end - end - end - end - if #valid_nodes == 0 then return nil end - local outbound = { - type = "urltest", - tag = urltest_tag, - outbounds = valid_nodes, - url = _node.urltest_url or "https://www.gstatic.com/generate_204", - interval = (api.format_go_time(_node.urltest_interval) ~= "0s") and api.format_go_time(_node.urltest_interval) or "3m", - tolerance = (_node.urltest_tolerance and tonumber(_node.urltest_tolerance) > 0) and tonumber(_node.urltest_tolerance) or 50, - idle_timeout = (api.format_go_time(_node.urltest_idle_timeout) ~= "0s") and api.format_go_time(_node.urltest_idle_timeout) or "30m", - interrupt_exist_connections = (_node.urltest_interrupt_exist_connections == "true" or _node.urltest_interrupt_exist_connections == "1") and true or false - } - table.insert(outbounds, outbound) - return urltest_tag - end - - local function set_outbound_detour(node, outbound, outbounds_table, shunt_rule_name) - if not node or not outbound or not outbounds_table then return nil end - local default_outTag = outbound.tag - local last_insert_outbound - - if node.shadowtls == "1" then - local _node = { - type = "sing-box", - protocol = "shadowtls", - shadowtls_version = node.shadowtls_version, - password = (node.shadowtls_version == "2" or node.shadowtls_version == "3") and node.shadowtls_password or nil, - address = node.address, - port = node.port, - tls = "1", - tls_serverName = node.shadowtls_serverName, - utls = node.shadowtls_utls, - fingerprint = node.shadowtls_fingerprint - } - local shadowtls_outbound = gen_outbound(nil, _node, outbound.tag .. "_shadowtls") - if shadowtls_outbound then - last_insert_outbound = shadowtls_outbound - outbound.detour = outbound.tag .. "_shadowtls" - outbound.server = nil - outbound.server_port = nil - end - end - - if node.chain_proxy == "1" and node.preproxy_node then - if outbound["_flag_proxy_tag"] then - --Ignore - else - local preproxy_node = uci:get_all(appname, node.preproxy_node) - if preproxy_node then - local preproxy_outbound = gen_outbound(nil, preproxy_node) - if preproxy_outbound then - preproxy_outbound.tag = preproxy_node[".name"] .. ":" .. preproxy_node.remarks - outbound.tag = preproxy_outbound.tag .. " -> " .. outbound.tag - outbound.detour = preproxy_outbound.tag - last_insert_outbound = preproxy_outbound - default_outTag = outbound.tag - end - end - end - end - if node.chain_proxy == "2" and node.to_node then - local to_node = uci:get_all(appname, node.to_node) - if to_node then - local to_outbound = gen_outbound(nil, to_node) - if to_outbound then - if shunt_rule_name then - to_outbound.tag = outbound.tag - outbound.tag = node[".name"] - else - to_outbound.tag = outbound.tag .. " -> " .. to_outbound.tag - end - - to_outbound.detour = outbound.tag - table.insert(outbounds_table, to_outbound) - default_outTag = to_outbound.tag - end - end - end - return default_outTag, last_insert_outbound - end - - if node.protocol == "_shunt" then - local rules = {} - - local preproxy_rule_name = node.preproxy_enabled == "1" and "main" or nil - local preproxy_tag = preproxy_rule_name - local preproxy_node_id = preproxy_rule_name and node["main_node"] or nil - - local function gen_shunt_node(rule_name, _node_id) - if not rule_name then return nil, nil end - if not _node_id then _node_id = node[rule_name] end - local rule_outboundTag - if _node_id == "_direct" then - rule_outboundTag = "direct" - elseif _node_id == "_blackhole" then - rule_outboundTag = "block" - elseif _node_id == "_default" and rule_name ~= "default" then - rule_outboundTag = "default" - elseif _node_id and _node_id:find("Socks_") then - local socks_id = _node_id:sub(1 + #"Socks_") - local socks_node = uci:get_all(appname, socks_id) or nil - if socks_node then - local _node = { - type = "sing-box", - protocol = "socks", - address = "127.0.0.1", - port = socks_node.port, - uot = "1", - } - local _outbound = gen_outbound(flag, _node, rule_name) - if _outbound then - table.insert(outbounds, _outbound) - rule_outboundTag = _outbound.tag - end - end - elseif _node_id then - local _node = uci:get_all(appname, _node_id) - if not _node then return nil, nil end - - if api.is_normal_node(_node) then - local use_proxy = preproxy_tag and node[rule_name .. "_proxy_tag"] == preproxy_rule_name and _node_id ~= preproxy_node_id - local copied_outbound - for index, value in ipairs(outbounds) do - if value["_id"] == _node_id and value["_flag_proxy_tag"] == (use_proxy and preproxy_tag or nil) then - copied_outbound = api.clone(value) - break - end - end - if copied_outbound then - copied_outbound.tag = rule_name .. ":" .. _node.remarks - table.insert(outbounds, copied_outbound) - rule_outboundTag = copied_outbound.tag - else - if use_proxy then - local pre_proxy = nil - if _node.type ~= "sing-box" then - pre_proxy = true - end - if pre_proxy then - new_port = get_new_port() - table.insert(inbounds, { - type = "direct", - tag = "proxy_" .. rule_name, - listen = "127.0.0.1", - listen_port = new_port, - override_address = _node.address, - override_port = tonumber(_node.port), - }) - if _node.tls_serverName == nil then - _node.tls_serverName = _node.address - end - _node.address = "127.0.0.1" - _node.port = new_port - table.insert(rules, 1, { - inbound = {"proxy_" .. rule_name}, - outbound = preproxy_tag, - }) - end - end - local proxy_table = { - tag = use_proxy and preproxy_tag or nil, - run_socks_instance = not no_run - } - if not proxy_table.tag then - if singbox_settings.fragment == "1" then - proxy_table.fragment = true - end - if singbox_settings.record_fragment == "1" then - proxy_table.record_fragment = true - end - end - local _outbound = gen_outbound(flag, _node, rule_name, proxy_table) - if _outbound then - _outbound.tag = _outbound.tag .. ":" .. _node.remarks - rule_outboundTag, last_insert_outbound = set_outbound_detour(_node, _outbound, outbounds, rule_name) - table.insert(outbounds, _outbound) - if last_insert_outbound then - table.insert(outbounds, last_insert_outbound) - end - end - end - elseif _node.protocol == "_urltest" then - rule_outboundTag = gen_urltest(_node) - elseif _node.protocol == "_iface" then - if _node.iface then - local _outbound = { - type = "direct", - tag = rule_name .. ":" .. _node.remarks, - bind_interface = _node.iface, - routing_mark = 255, - } - table.insert(outbounds, _outbound) - rule_outboundTag = _outbound.tag - sys.call(string.format("mkdir -p %s && touch %s/%s", api.TMP_IFACE_PATH, api.TMP_IFACE_PATH, _node.iface)) - end - end - end - return rule_outboundTag - end - - if preproxy_tag and preproxy_node_id then - local preproxy_outboundTag = gen_shunt_node(preproxy_rule_name, preproxy_node_id) - if preproxy_outboundTag then - preproxy_tag = preproxy_outboundTag - end - end - --default_node - local default_node_id = node.default_node or "_direct" - COMMON.default_outbound_tag = gen_shunt_node("default", default_node_id) - --shunt rule - uci:foreach(appname, "shunt_rules", function(e) - local outboundTag = gen_shunt_node(e[".name"]) - if outboundTag and e.remarks then - if outboundTag == "default" then - outboundTag = COMMON.default_outbound_tag - end - local protocols = nil - if e["protocol"] and e["protocol"] ~= "" then - protocols = {} - string.gsub(e["protocol"], '[^' .. " " .. ']+', function(w) - table.insert(protocols, w) - end) - end - - local inboundTag = nil - if e["inbound"] and e["inbound"] ~= "" then - inboundTag = {} - if e["inbound"]:find("tproxy") then - if tcp_redir_port then - if tcp_proxy_way == "tproxy" then - table.insert(inboundTag, "tproxy_tcp") - else - table.insert(inboundTag, "redirect_tcp") - end - end - if udp_redir_port then - table.insert(inboundTag, "tproxy_udp") - end - end - if e["inbound"]:find("socks") then - if local_socks_port then - table.insert(inboundTag, "socks-in") - end - end - end - - local rule = { - inbound = inboundTag, - outbound = outboundTag, - protocol = protocols - } - - if e.network then - local network = {} - string.gsub(e.network, '[^' .. "," .. ']+', function(w) - table.insert(network, w) - end) - rule.network = network - end - - if e.source then - local source_ip_cidr = {} - local is_private = false - string.gsub(e.source, '[^' .. " " .. ']+', function(w) - if w:find("geoip") == 1 then - local _geoip = w:sub(1 + #"geoip:") --适配srs - if _geoip == "private" then - is_private = true - end - else - table.insert(source_ip_cidr, w) - end - end) - rule.source_ip_is_private = is_private and true or nil - rule.source_ip_cidr = #source_ip_cidr > 0 and source_ip_cidr or nil - if is_private or #source_ip_cidr > 0 then rule.rule_set_ip_cidr_match_source = true end - end - - if e.sourcePort then - local source_port = {} - local source_port_range = {} - string.gsub(e.sourcePort, '[^' .. "," .. ']+', function(w) - if tonumber(w) and tonumber(w) >= 1 and tonumber(w) <= 65535 then - table.insert(source_port, tonumber(w)) - else - table.insert(source_port_range, w) - end - end) - rule.source_port = #source_port > 0 and source_port or nil - rule.source_port_range = #source_port_range > 0 and source_port_range or nil - end - - if e.port then - local port = {} - local port_range = {} - string.gsub(e.port, '[^' .. "," .. ']+', function(w) - if tonumber(w) and tonumber(w) >= 1 and tonumber(w) <= 65535 then - table.insert(port, tonumber(w)) - else - table.insert(port_range, w) - end - end) - rule.port = #port > 0 and port or nil - rule.port_range = #port_range > 0 and port_range or nil - end - - local rule_set_tag = {} - - if e.domain_list then - local domain_table = { - outboundTag = outboundTag, - domain = {}, - domain_suffix = {}, - domain_keyword = {}, - domain_regex = {}, - rule_set = {}, - } - string.gsub(e.domain_list, '[^' .. "\r\n" .. ']+', function(w) - if w:find("#") == 1 then return end - if w:find("geosite:") == 1 then - local _geosite = w:sub(1 + #"geosite:") --适配srs - geosite_all_tag[_geosite] = true - table.insert(rule_set_tag, "geosite-" .. _geosite) - table.insert(domain_table.rule_set, "geosite-" .. _geosite) - elseif w:find("regexp:") == 1 then - table.insert(domain_table.domain_regex, w:sub(1 + #"regexp:")) - elseif w:find("full:") == 1 then - table.insert(domain_table.domain, w:sub(1 + #"full:")) - elseif w:find("domain:") == 1 then - table.insert(domain_table.domain_suffix, w:sub(1 + #"domain:")) - else - table.insert(domain_table.domain_keyword, w) - end - end) - rule.domain = #domain_table.domain > 0 and domain_table.domain or nil - rule.domain_suffix = #domain_table.domain_suffix > 0 and domain_table.domain_suffix or nil - rule.domain_keyword = #domain_table.domain_keyword > 0 and domain_table.domain_keyword or nil - rule.domain_regex = #domain_table.domain_regex > 0 and domain_table.domain_regex or nil - - if outboundTag then - table.insert(dns_domain_rules, api.clone(domain_table)) - end - end - - if e.ip_list then - local ip_cidr = {} - local is_private = false - string.gsub(e.ip_list, '[^' .. "\r\n" .. ']+', function(w) - if w:find("#") == 1 then return end - if w:find("geoip:") == 1 then - local _geoip = w:sub(1 + #"geoip:") --适配srs - if _geoip == "private" then - is_private = true - else - geoip_all_tag[_geoip] = true - table.insert(rule_set_tag, "geoip-" .. _geoip) - end - else - table.insert(ip_cidr, w) - end - end) - - rule.ip_is_private = is_private and true or nil - rule.ip_cidr = #ip_cidr > 0 and ip_cidr or nil - end - - rule.rule_set = #rule_set_tag > 0 and rule_set_tag or nil --适配srs - - table.insert(rules, rule) - end - end) - - for index, value in ipairs(rules) do - table.insert(route.rules, rules[index]) - end - - local rule_set = {} --适配srs - if next(geosite_all_tag) then - for k,v in pairs(geosite_all_tag) do - local srs_file = srss_path .. "geosite-" .. k ..".srs" - local _rule_set = { - tag = "geosite-" .. k, - type = "local", - format = "binary", - path = srs_file - } - table.insert(rule_set, _rule_set) - end - end - if next(geoip_all_tag) then - for k,v in pairs(geoip_all_tag) do - local srs_file = srss_path .. "geoip-" .. k ..".srs" - local _rule_set = { - tag = "geoip-" .. k, - type = "local", - format = "binary", - path = srs_file - } - table.insert(rule_set, _rule_set) - end - end - route.rule_set = #rule_set >0 and rule_set or nil - - elseif node.protocol == "_urltest" then - if node.urltest_node then - COMMON.default_outbound_tag = gen_urltest(node) - end - elseif node.protocol == "_iface" then - if node.iface then - local outbound = { - type = "direct", - tag = node.remarks or node_id, - bind_interface = node.iface, - routing_mark = 255, - } - table.insert(outbounds, outbound) - COMMON.default_outbound_tag = outbound.tag - sys.call(string.format("mkdir -p %s && touch %s/%s", api.TMP_IFACE_PATH, api.TMP_IFACE_PATH, node.iface)) - end - else - local outbound = gen_outbound(flag, node, nil, { fragment = singbox_settings.fragment == "1" or nil, record_fragment = singbox_settings.record_fragment == "1" or nil, run_socks_instance = not no_run }) - if outbound then - outbound.tag = outbound.tag .. ":" .. node.remarks - COMMON.default_outbound_tag, last_insert_outbound = set_outbound_detour(node, outbound, outbounds) - table.insert(outbounds, outbound) - if last_insert_outbound then - table.insert(outbounds, last_insert_outbound) - end - end - end - end - - if COMMON.default_outbound_tag then - route.final = COMMON.default_outbound_tag - end - - if dns_listen_port then - dns = { - servers = {}, - rules = {}, - disable_cache = (dns_cache and dns_cache == "0") and true or false, - disable_expire = false, --禁用 DNS 缓存过期。 - independent_cache = false, --使每个 DNS 服务器的缓存独立,以满足特殊目的。如果启用,将轻微降低性能。 - reverse_mapping = true, --在响应 DNS 查询后存储 IP 地址的反向映射以为路由目的提供域名。 - fakeip = nil, - } - - if not version_ge_1_12_0 then --Migrate to new DNS server formats - table.insert(dns.servers, { - tag = "block", - address = "rcode://success", - }) - end - - if dns_socks_address and dns_socks_port then - default_outTag = "dns_socks_out" - table.insert(outbounds, 1, { - type = "socks", - tag = default_outTag, - server = dns_socks_address, - server_port = tonumber(dns_socks_port) - }) - else - default_outTag = COMMON.default_outbound_tag - end - - local remote_strategy = "prefer_ipv6" - if remote_dns_query_strategy == "UseIPv4" then - remote_strategy = "ipv4_only" - elseif remote_dns_query_strategy == "UseIPv6" then - remote_strategy = "ipv6_only" - end - - local remote_server = {} - local fakedns_tag = "remote_fakeip" - - if not version_ge_1_12_0 then --Migrate to new DNS server formats - remote_server = { - tag = "remote", - address_strategy = "prefer_ipv4", - strategy = remote_strategy, - address_resolver = "direct", - detour = default_outTag, - client_subnet = (remote_dns_client_ip and remote_dns_client_ip ~= "") and remote_dns_client_ip or nil, - } - - if remote_dns_udp_server then - remote_server.address = remote_dns_udp_server - end - - if remote_dns_tcp_server then - remote_server.address = remote_dns_tcp_server - end - - if remote_dns_doh_url and remote_dns_doh_host then - remote_server.address = remote_dns_doh_url - end - - if remote_server.address then - if api.is_local_ip(remote_server.address) then --dns为本地ip,不走代理 - remote_server.detour = "direct" - end - table.insert(dns.servers, remote_server) - end - - if remote_dns_fake then - dns.fakeip = { - enabled = true, - inet4_range = "198.18.0.0/15", - inet6_range = "fc00::/18", - } - - table.insert(dns.servers, { - tag = fakedns_tag, - address = "fakeip", - strategy = remote_strategy, - }) - - if not experimental then - experimental = {} - end - experimental.cache_file = { - enabled = true, - store_fakeip = true, - path = api.CACHE_PATH .. "/singbox_" .. flag .. ".db" - } - end - else -- Migrate to 1.12 DNS - remote_server = { - tag = "remote", - domain_strategy = remote_strategy, - detour = default_outTag, - } - - local tmp_address - - if remote_dns_udp_server then - local server_port = tonumber(remote_dns_port) or 53 - remote_server.type = "udp" - remote_server.server = remote_dns_server - remote_server.server_port = server_port - tmp_address = remote_dns_server - end - - if remote_dns_tcp_server then - local server_port = tonumber(remote_dns_port) or 53 - remote_server.type = "tcp" - remote_server.server = remote_dns_server - remote_server.server_port = server_port - tmp_address = remote_dns_server - end - - if remote_dns_doh_url and remote_dns_doh_host then - local server_port = tonumber(remote_dns_port) or 443 - remote_server.type = "https" - remote_server.server = remote_dns_doh_host - remote_server.server_port = server_port - tmp_address = remote_dns_doh_host - end - - if tmp_address and not tmp_address:match("^%d+%.%d+%.%d+%.%d+$") and not tmp_address:match("^[%[%]%x:]+$") then --dns为域名时 - remote_server.domain_resolver = "direct" - end - - if remote_server.server then - if api.is_local_ip(remote_server.server) then --dns为本地ip,不走代理 - remote_server.detour = "direct" - end - table.insert(dns.servers, remote_server) - end - - if remote_dns_fake then - table.insert(dns.servers, { - tag = fakedns_tag, - type = "fakeip", - inet4_range = "198.18.0.0/15", - inet6_range = "fc00::/18", - }) - - if not experimental then - experimental = {} - end - experimental.cache_file = { - enabled = true, - store_fakeip = true, - path = api.CACHE_PATH .. "/singbox_" .. flag .. ".db" - } - end - end - - local direct_strategy = "prefer_ipv6" - if direct_dns_udp_server or direct_dns_tcp_server then - if direct_dns_query_strategy == "UseIPv4" then - direct_strategy = "ipv4_only" - elseif direct_dns_query_strategy == "UseIPv6" then - direct_strategy = "ipv6_only" - end - - local domain = {} - local nodes_domain_text = sys.exec('uci show passwall | grep ".address=" | cut -d "\'" -f 2 | grep "[a-zA-Z]$" | sort -u') - string.gsub(nodes_domain_text, '[^' .. "\r\n" .. ']+', function(w) - table.insert(domain, w) - end) - if #domain > 0 then - table.insert(dns_domain_rules, 1, { - outboundTag = "direct", - domain = domain, - strategy = version_ge_1_12_0 and direct_strategy or nil - }) - end - - if not version_ge_1_12_0 then --Migrate to new DNS server formats - local direct_dns_server, port - if direct_dns_udp_server then - port = tonumber(direct_dns_port) or 53 - direct_dns_server = "udp://" .. direct_dns_udp_server .. ":" .. port - elseif direct_dns_tcp_server then - port = tonumber(direct_dns_port) or 53 - direct_dns_server = "tcp://" .. direct_dns_tcp_server .. ":" .. port - end - - table.insert(dns.servers, { - tag = "direct", - address = direct_dns_server, - address_strategy = "prefer_ipv6", - strategy = direct_strategy, - detour = "direct", - }) - else -- Migrate to 1.12 DNS - local direct_dns_server, port, type - if direct_dns_udp_server then - port = tonumber(direct_dns_port) or 53 - direct_dns_server = direct_dns_udp_server - type = "udp" - elseif direct_dns_tcp_server then - port = tonumber(direct_dns_port) or 53 - direct_dns_server = direct_dns_tcp_server - type = "tcp" - end - - table.insert(dns.servers, { - tag = "direct", - type = type, - server = direct_dns_server, - server_port = port, - domain_strategy = direct_strategy, - detour = "direct", - }) - end - - end - - local default_dns_flag = "remote" - if dns_socks_address and dns_socks_port then - else - if node_id and (tcp_redir_port or udp_redir_port) then - local node = uci:get_all(appname, node_id) - if node.protocol == "_shunt" then - if node.default_node == "_direct" then - default_dns_flag = "direct" - end - end - else default_dns_flag = "direct" - end - end - if default_dns_flag == "remote" then - if remote_dns_fake then - table.insert(dns.rules, { - query_type = { "A", "AAAA" }, - server = fakedns_tag, - disable_cache = true - }) - end - end - dns.final = default_dns_flag - if version_ge_1_12_0 then -- Migrate to 1.12 DNS - dns.strategy = (default_dns_flag == "direct") and direct_strategy or remote_strategy - end - - --按分流顺序DNS - if dns_domain_rules and #dns_domain_rules > 0 then - for index, value in ipairs(dns_domain_rules) do - if value.outboundTag and (value.domain or value.domain_suffix or value.domain_keyword or value.domain_regex or value.rule_set) then - local dns_rule = { - server = value.outboundTag, - domain = (value.domain and #value.domain > 0) and value.domain or nil, - domain_suffix = (value.domain_suffix and #value.domain_suffix > 0) and value.domain_suffix or nil, - domain_keyword = (value.domain_keyword and #value.domain_keyword > 0) and value.domain_keyword or nil, - domain_regex = (value.domain_regex and #value.domain_regex > 0) and value.domain_regex or nil, - rule_set = (value.rule_set and #value.rule_set > 0) and value.rule_set or nil, --适配srs - disable_cache = false, - strategy = (version_ge_1_12_0 and value.outboundTag == "direct") and direct_strategy or nil --Migrate to 1.12 DNS - } - if version_ge_1_12_0 and value.outboundTag == "block" then --Migrate to 1.12 DNS - dns_rule.action = "predefined" - dns_rule.rcode = "NOERROR" - dns_rule.server = nil - dns_rule.disable_cache = nil - end - if value.outboundTag ~= "block" and value.outboundTag ~= "direct" then - dns_rule.server = "remote" - dns_rule.strategy = version_ge_1_12_0 and remote_strategy or nil --Migrate to 1.12 DNS - dns_rule.client_subnet = (version_ge_1_12_0 and remote_dns_client_ip and remote_dns_client_ip ~= "") and remote_dns_client_ip or nil --Migrate to 1.12 DNS - if value.outboundTag ~= COMMON.default_outbound_tag and (remote_server.address or remote_server.server) then - local remote_shunt_server = api.clone(remote_server) - remote_shunt_server.tag = value.outboundTag - local is_local = (remote_server.address and api.is_local_ip(remote_server.address)) or - (remote_server.server and api.is_local_ip(remote_server.server)) --dns为本地ip,不走代理 - remote_shunt_server.detour = is_local and "direct" or value.outboundTag - table.insert(dns.servers, remote_shunt_server) - dns_rule.server = remote_shunt_server.tag - end - if remote_dns_fake then - local fakedns_dns_rule = api.clone(dns_rule) - fakedns_dns_rule.query_type = { - "A", "AAAA" - } - fakedns_dns_rule.server = fakedns_tag - fakedns_dns_rule.disable_cache = true - table.insert(dns.rules, fakedns_dns_rule) - end - end - table.insert(dns.rules, dns_rule) - end - end - end - - table.insert(inbounds, { - type = "direct", - tag = "dns-in", - listen = "127.0.0.1", - listen_port = tonumber(dns_listen_port), - sniff = true, - }) - table.insert(outbounds, { - type = "dns", - tag = "dns-out", - }) - table.insert(route.rules, 1, { - protocol = "dns", - inbound = { - "dns-in" - }, - outbound = "dns-out" - }) - end - - if inbounds or outbounds then - local config = { - log = { - disabled = log == "0" and true or false, - level = loglevel, - timestamp = true, - output = logfile, - }, - -- DNS - dns = dns, - -- 传入连接 - inbounds = inbounds, - -- 传出连接 - outbounds = outbounds, - -- 路由 - route = route, - --实验性 - experimental = experimental, - } - - local direct_outbound = { - type = "direct", - tag = "direct", - routing_mark = 255, - } - if not version_ge_1_12_0 then --Migrate to 1.12 DNS - direct_outbound.domain_strategy = "prefer_ipv6" - else - local domain_resolver = { - server = "direct", - strategy = "prefer_ipv6" - } - direct_outbound.domain_resolver = domain_resolver - - -- 当没有 direct dns 服务器时添加 local - local hasDirect = false - if config.dns and config.dns.servers then - for _, server in ipairs(config.dns.servers) do - if server.tag == "direct" then - hasDirect = true - break - end - end - end - if not hasDirect then - config.dns = { - servers = { - { - type = "local", - tag = "direct", - detour = "direct" - } - }, - } - end - end - table.insert(outbounds,direct_outbound) - - table.insert(outbounds, { - type = "block", - tag = "block" - }) - for index, value in ipairs(config.outbounds) do - if not value["_flag_proxy_tag"] and not value.detour and value["_id"] and value.server and value.server_port and not no_run then - sys.call(string.format("echo '%s' >> %s", value["_id"], api.TMP_PATH .. "/direct_node_list")) - end - for k, v in pairs(config.outbounds[index]) do - if k:find("_") == 1 then - config.outbounds[index][k] = nil - end - end - end - if version_ge_1_11_0 then - -- Migrate logics - -- https://sing-box.sagernet.org/migration/ - local endpoints = {} - for i = #config.outbounds, 1, -1 do - local value = config.outbounds[i] - if value.type == "wireguard" then - -- https://sing-box.sagernet.org/migration/#migrate-wireguard-outbound-to-endpoint - local endpoint = { - type = "wireguard", - tag = value.tag, - system = value.system_interface, - name = value.interface_name, - mtu = value.mtu, - address = value.local_address, - private_key = value.private_key, - peers = { - { - address = value.server, - port = value.server_port, - public_key = value.peer_public_key, - pre_shared_key = value.pre_shared_key, - allowed_ips = {"0.0.0.0/0"}, - reserved = value.reserved - } - }, - domain_strategy = value.domain_strategy, - detour = value.detour - } - endpoints[#endpoints + 1] = endpoint - table.remove(config.outbounds, i) - end - if value.type == "block" or value.type == "dns" then - -- https://sing-box.sagernet.org/migration/#migrate-legacy-special-outbounds-to-rule-actions - table.remove(config.outbounds, i) - end - end - if #endpoints > 0 then - config.endpoints = endpoints - end - - -- https://sing-box.sagernet.org/migration/#migrate-legacy-special-outbounds-to-rule-actions - for i = #config.route.rules, 1, -1 do - local value = config.route.rules[i] - if value.outbound == "block" then - value.action = "reject" - value.outbound = nil - elseif value.outbound == "dns-out" then - value.action = "hijack-dns" - value.outbound = nil - else - value.action = "route" - end - end - - -- https://sing-box.sagernet.org/migration/#migrate-legacy-inbound-fields-to-rule-actions - for i = #config.inbounds, 1, -1 do - local value = config.inbounds[i] - if value.sniff == true then - table.insert(config.route.rules, 1, { - inbound = value.tag, - action = "sniff" - }) - value.sniff = nil - end - if value.domain_strategy then - table.insert(config.route.rules, 1, { - inbound = value.tag, - action = "resolve", - strategy = value.domain_strategy, - --server = "" - }) - value.domain_strategy = nil - end - end - - if config.route.final == "block" then - config.route.final = nil - table.insert(config.route.rules, { - action = "reject" - }) - end - end - return jsonc.stringify(config, 1) - end -end - -function gen_proto_config(var) - local local_socks_address = var["-local_socks_address"] or "0.0.0.0" - local local_socks_port = var["-local_socks_port"] - local local_socks_username = var["-local_socks_username"] - local local_socks_password = var["-local_socks_password"] - local local_http_address = var["-local_http_address"] or "0.0.0.0" - local local_http_port = var["-local_http_port"] - local local_http_username = var["-local_http_username"] - local local_http_password = var["-local_http_password"] - local server_proto = var["-server_proto"] - local server_address = var["-server_address"] - local server_port = var["-server_port"] - local server_username = var["-server_username"] - local server_password = var["-server_password"] - - local inbounds = {} - local outbounds = {} - - if local_socks_address and local_socks_port then - local inbound = { - type = "socks", - tag = "socks-in", - listen = local_socks_address, - listen_port = tonumber(local_socks_port), - } - if local_socks_username and local_socks_password and local_socks_username ~= "" and local_socks_password ~= "" then - inbound.users = { - username = local_socks_username, - password = local_socks_password - } - end - table.insert(inbounds, inbound) - end - - if local_http_address and local_http_port then - local inbound = { - type = "http", - tag = "http-in", - tls = nil, - listen = local_http_address, - listen_port = tonumber(local_http_port), - } - if local_http_username and local_http_password and local_http_username ~= "" and local_http_password ~= "" then - inbound.users = { - { - username = local_http_username, - password = local_http_password - } - } - end - table.insert(inbounds, inbound) - end - - if server_proto ~= "nil" and server_address ~= "nil" and server_port ~= "nil" then - local outbound = { - type = server_proto, - tag = "out", - server = server_address, - server_port = tonumber(server_port), - username = (server_username and server_password) and server_username or nil, - password = (server_username and server_password) and server_password or nil, - } - if outbound then table.insert(outbounds, outbound) end - end - - local config = { - log = { - disabled = true, - level = "warn", - timestamp = true, - }, - -- 传入连接 - inbounds = inbounds, - -- 传出连接 - outbounds = outbounds, - } - return jsonc.stringify(config, 1) -end - -_G.gen_config = gen_config -_G.gen_proto_config = gen_proto_config - -if arg[1] then - local func =_G[arg[1]] - if func then - print(func(api.get_function_args(arg))) - if (next(geosite_all_tag) or next(geoip_all_tag)) and not no_run then - convert_geofile() - end - end -end diff --git a/small/luci-app-passwall/luasrc/passwall/util_trojan.lua b/small/luci-app-passwall/luasrc/passwall/util_trojan.lua deleted file mode 100644 index 848b689a56..0000000000 --- a/small/luci-app-passwall/luasrc/passwall/util_trojan.lua +++ /dev/null @@ -1,104 +0,0 @@ -module("luci.passwall.util_trojan", package.seeall) -local api = require "luci.passwall.api" -local uci = api.uci -local json = api.jsonc - -function gen_config_server(node) - local cipher = "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:AES128-SHA:AES256-SHA:DES-CBC3-SHA" - local cipher13 = "TLS_AES_128_GCM_SHA256:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_256_GCM_SHA384" - local config = { - run_type = "server", - local_addr = "::", - local_port = tonumber(node.port), - remote_addr = (node.remote_enable == "1" and node.remote_address) and node.remote_address or nil, - remote_port = (node.remote_enable == "1" and node.remote_port) and tonumber(node.remote_port) or nil, - password = node.uuid, - log_level = (node.log and node.log == "1") and tonumber(node.loglevel) or 5, - ssl = { - cert = node.tls_certificateFile, - key = node.tls_keyFile, - key_password = "", - cipher = cipher, - cipher_tls13 = cipher13, - prefer_server_cipher = true, - reuse_session = true, - session_ticket = (node.tls_sessionTicket == "1") and true or false, - session_timeout = 600, - plain_http_response = "", - curves = "", - dhparam = "" - }, - tcp = { - prefer_ipv4 = false, - no_delay = true, - keep_alive = true, - reuse_port = false, - fast_open = (node.tcp_fast_open and node.tcp_fast_open == "1") and true or false, - fast_open_qlen = 20 - } - } - return config -end - -function gen_config(var) - local node_id = var["-node"] - if not node_id then - print("-node 不能为空") - return - end - local node = uci:get_all("passwall", node_id) - local run_type = var["-run_type"] - local local_addr = var["-local_addr"] - local local_port = var["-local_port"] - local server_host = var["-server_host"] or node.address - local server_port = var["-server_port"] or node.port - local loglevel = var["-loglevel"] or 2 - local cipher = "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:AES128-SHA:AES256-SHA:DES-CBC3-SHA" - local cipher13 = "TLS_AES_128_GCM_SHA256:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_256_GCM_SHA384" - - if api.is_ipv6(server_host) then - server_host = api.get_ipv6_only(server_host) - end - local server = server_host - - local trojan = { - run_type = run_type, - local_addr = local_addr, - local_port = tonumber(local_port), - remote_addr = server, - remote_port = tonumber(server_port), - password = {node.password}, - log_level = tonumber(loglevel), - ssl = { - verify = (node.tls_allowInsecure ~= "1") and true or false, - verify_hostname = true, - cert = nil, - cipher = cipher, - cipher_tls13 = cipher13, - sni = node.tls_serverName or server, - alpn = {"h2", "http/1.1"}, - reuse_session = true, - session_ticket = (node.tls_sessionTicket and node.tls_sessionTicket == "1") and true or false, - curves = "" - }, - udp_timeout = 60, - tcp = { - use_tproxy = (node.type == "Trojan-Plus" and var["-use_tproxy"]) and true or nil, - no_delay = true, - keep_alive = true, - reuse_port = true, - fast_open = (node.tcp_fast_open == "true") and true or false, - fast_open_qlen = 20 - } - } - return json.stringify(trojan, 1) -end - -_G.gen_config = gen_config - -if arg[1] then - local func =_G[arg[1]] - if func then - print(func(api.get_function_args(arg))) - end -end diff --git a/small/luci-app-passwall/luasrc/passwall/util_tuic.lua b/small/luci-app-passwall/luasrc/passwall/util_tuic.lua deleted file mode 100644 index e138b6da56..0000000000 --- a/small/luci-app-passwall/luasrc/passwall/util_tuic.lua +++ /dev/null @@ -1,57 +0,0 @@ -module("luci.passwall.util_tuic", package.seeall) -local api = require "luci.passwall.api" -local uci = api.uci -local json = api.jsonc - -function gen_config(var) - local node_id = var["-node"] - if not node_id then - print("-node 不能为空") - return - end - local node = uci:get_all("passwall", node_id) - local local_addr = var["-local_addr"] - local local_port = var["-local_port"] - local server_host = var["-server_host"] or node.address - local server_port = var["-server_port"] or node.port - local loglevel = var["-loglevel"] or "warn" - - local tuic= { - relay = { - server = server_host .. ":" .. server_port, - ip = node.tuic_ip, - uuid = node.uuid, - password = node.tuic_password, - -- certificates = node.tuic_certificate and { node.tuic_certpath } or nil, - udp_relay_mode = node.tuic_udp_relay_mode, - congestion_control = node.tuic_congestion_control, - heartbeat = node.tuic_heartbeat .. "s", - timeout = node.tuic_timeout .. "s", - gc_interval = node.tuic_gc_interval .. "s", - gc_lifetime = node.tuic_gc_lifetime .. "s", - alpn = node.tuic_tls_alpn, - disable_sni = (node.tuic_disable_sni == "1"), - zero_rtt_handshake = (node.tuic_zero_rtt_handshake == "1"), - send_window = tonumber(node.tuic_send_window), - receive_window = tonumber(node.tuic_receive_window) - }, - ["local"] = { - server = "[::]:" .. local_port, - username = node.tuic_socks_username, - password = node.tuic_socks_password, - dual_stack = (node.tuic_dual_stack == "1") and true or false, - max_packet_size = tonumber(node.tuic_max_package_size) - }, - log_level = loglevel - } - return json.stringify(tuic, 1) -end - -_G.gen_config = gen_config - -if arg[1] then - local func =_G[arg[1]] - if func then - print(func(api.get_function_args(arg))) - end -end diff --git a/small/luci-app-passwall/luasrc/passwall/util_xray.lua b/small/luci-app-passwall/luasrc/passwall/util_xray.lua deleted file mode 100644 index a681ff565f..0000000000 --- a/small/luci-app-passwall/luasrc/passwall/util_xray.lua +++ /dev/null @@ -1,1803 +0,0 @@ -module("luci.passwall.util_xray", package.seeall) -local api = require "luci.passwall.api" -local uci = api.uci -local sys = api.sys -local jsonc = api.jsonc -local appname = "passwall" -local fs = api.fs - -local new_port - -local function get_new_port() - local cmd_format = ". /usr/share/passwall/utils.sh ; echo -n $(get_new_port %s tcp)" - local set_port = 0 - if new_port and tonumber(new_port) then - set_port = tonumber(new_port) + 1 - end - new_port = tonumber(sys.exec(string.format(cmd_format, set_port == 0 and "auto" or set_port))) - return new_port -end - -local function get_noise_packets() - local noises = {} - uci:foreach(appname, "xray_noise_packets", function(n) - local noise = (n.enabled == "1") and { - type = n.type, - packet = n.packet, - delay = string.find(n.delay, "-") and n.delay or tonumber(n.delay), - applyTo = n.applyTo - } or nil - table.insert(noises, noise) - end) - if #noises == 0 then noises = nil end - return noises -end - -local function get_domain_excluded() - local path = string.format("/usr/share/%s/rules/domains_excluded", appname) - local content = fs.readfile(path) - if not content then return nil end - local hosts = {} - string.gsub(content, '[^' .. "\n" .. ']+', function(w) - local s = api.trim(w) - if s == "" then return end - if s:find("#") and s:find("#") == 1 then return end - if not s:find("#") or s:find("#") ~= 1 then table.insert(hosts, s) end - end) - if #hosts == 0 then hosts = nil end - return hosts -end - -function gen_outbound(flag, node, tag, proxy_table) - local result = nil - if node then - local node_id = node[".name"] - if tag == nil then - tag = node_id - end - - local proxy_tag = nil - local fragment = nil - local noise = nil - local run_socks_instance = true - if proxy_table ~= nil and type(proxy_table) == "table" then - proxy_tag = proxy_table.tag or nil - fragment = proxy_table.fragment or nil - noise = proxy_table.noise or nil - run_socks_instance = proxy_table.run_socks_instance - end - - if node.type ~= "Xray" then - if node.type == "Socks" then - node.protocol = "socks" - node.transport = "tcp" - else - local relay_port = node.port - new_port = get_new_port() - local config_file = string.format("%s_%s_%s.json", flag, tag, new_port) - if tag and node_id and not tag:find(node_id) then - config_file = string.format("%s_%s_%s_%s.json", flag, tag, node_id, new_port) - end - if run_socks_instance then - sys.call(string.format('/usr/share/%s/app.sh run_socks "%s"> /dev/null', - appname, - string.format("flag=%s node=%s bind=%s socks_port=%s config_file=%s relay_port=%s", - new_port, --flag - node_id, --node - "127.0.0.1", --bind - new_port, --socks port - config_file, --config file - (proxy_tag and relay_port) and tostring(relay_port) or "" --relay port - ) - )) - end - node = {} - node.protocol = "socks" - node.transport = "tcp" - node.address = "127.0.0.1" - node.port = new_port - end - node.stream_security = "none" - else - if proxy_tag then - node.proxySettings = { - tag = proxy_tag, - transportLayer = true - } - end - end - - if node.type == "Xray" then - if node.tls and node.tls == "1" then - node.stream_security = "tls" - if node.type == "Xray" and node.reality and node.reality == "1" then - node.stream_security = "reality" - end - end - end - - if node.protocol == "wireguard" and node.wireguard_reserved then - local bytes = {} - if not node.wireguard_reserved:match("[^%d,]+") then - node.wireguard_reserved:gsub("%d+", function(b) - bytes[#bytes + 1] = tonumber(b) - end) - else - local result = api.bin.b64decode(node.wireguard_reserved) - for i = 1, #result do - bytes[i] = result:byte(i) - end - end - node.wireguard_reserved = #bytes > 0 and bytes or nil - end - - if node.protocol == "hysteria2" then - node.protocol = "hysteria" - node.transport = "hysteria" - node.stream_security = "tls" - end - - result = { - _id = node_id, - _flag = flag, - _flag_proxy_tag = proxy_tag, - tag = tag, - proxySettings = node.proxySettings or nil, - protocol = node.protocol, - mux = { - enabled = (node.mux == "1") and true or false, - concurrency = (node.mux == "1" and ((node.mux_concurrency) and tonumber(node.mux_concurrency) or -1)) or nil, - xudpConcurrency = (node.mux == "1" and ((node.xudp_concurrency) and tonumber(node.xudp_concurrency) or 8)) or nil - } or nil, - -- 底层传输配置 - streamSettings = (node.streamSettings or node.protocol == "vmess" or node.protocol == "vless" or node.protocol == "socks" or node.protocol == "shadowsocks" or node.protocol == "trojan" or node.protocol == "hysteria") and { - sockopt = { - mark = 255, - tcpFastOpen = (node.tcp_fast_open == "1") and true or nil, - tcpMptcp = (node.tcpMptcp == "1") and true or nil, - dialerProxy = (fragment or noise) and "dialerproxy" or nil - }, - network = node.transport, - security = node.stream_security, - tlsSettings = (node.stream_security == "tls") and { - serverName = node.tls_serverName, - allowInsecure = (node.tls_allowInsecure == "1") and true or false, - fingerprint = (node.type == "Xray" and node.utls == "1" and node.fingerprint and node.fingerprint ~= "") and node.fingerprint or nil, - pinnedPeerCertificateChainSha256 = node.tls_chain_fingerprint and { node.tls_chain_fingerprint } or nil, - echConfigList = (node.ech == "1") and node.ech_config or nil, - echForceQuery = (node.ech == "1") and (node.ech_ForceQuery or "none") or nil - } or nil, - realitySettings = (node.stream_security == "reality") and { - serverName = node.tls_serverName, - publicKey = node.reality_publicKey, - shortId = node.reality_shortId or "", - spiderX = node.reality_spiderX or "/", - fingerprint = (node.type == "Xray" and node.fingerprint and node.fingerprint ~= "") and node.fingerprint or "chrome", - mldsa65Verify = (node.use_mldsa65Verify == "1") and node.reality_mldsa65Verify or nil - } or nil, - rawSettings = ((node.transport == "raw" or node.transport == "tcp") and node.protocol ~= "socks" and (node.tcp_guise and node.tcp_guise ~= "none")) and { - header = { - type = node.tcp_guise, - request = (node.tcp_guise == "http") and { - path = node.tcp_guise_http_path and (function() - local t, r = node.tcp_guise_http_path, {} - for _, v in ipairs(t) do - r[#r + 1] = (v == "" and "/" or v) - end - return r - end)() or {"/"}, - headers = (node.tcp_guise_http_host or node.user_agent) and { - Host = node.tcp_guise_http_host, - ["User-Agent"] = node.user_agent and {node.user_agent} or nil - } or nil - } or nil - } - } or nil, - kcpSettings = (node.transport == "mkcp") and { - mtu = tonumber(node.mkcp_mtu), - tti = tonumber(node.mkcp_tti), - uplinkCapacity = tonumber(node.mkcp_uplinkCapacity), - downlinkCapacity = tonumber(node.mkcp_downlinkCapacity), - congestion = (node.mkcp_congestion == "1") and true or false, - readBufferSize = tonumber(node.mkcp_readBufferSize), - writeBufferSize = tonumber(node.mkcp_writeBufferSize), - seed = (node.mkcp_seed and node.mkcp_seed ~= "") and node.mkcp_seed or nil, - header = { - type = node.mkcp_guise, - domain = node.mkcp_domain - } - } or nil, - wsSettings = (node.transport == "ws") and { - path = node.ws_path or "/", - host = node.ws_host, - headers = node.user_agent and { - ["User-Agent"] = node.user_agent - } or nil, - maxEarlyData = tonumber(node.ws_maxEarlyData) or nil, - earlyDataHeaderName = (node.ws_earlyDataHeaderName) and node.ws_earlyDataHeaderName or nil, - heartbeatPeriod = tonumber(node.ws_heartbeatPeriod) or nil - } or nil, - grpcSettings = (node.transport == "grpc") and { - serviceName = node.grpc_serviceName, - multiMode = (node.grpc_mode == "multi") and true or nil, - idle_timeout = tonumber(node.grpc_idle_timeout) or nil, - health_check_timeout = tonumber(node.grpc_health_check_timeout) or nil, - permit_without_stream = (node.grpc_permit_without_stream == "1") and true or nil, - initial_windows_size = tonumber(node.grpc_initial_windows_size) or nil - } or nil, - httpupgradeSettings = (node.transport == "httpupgrade") and { - path = node.httpupgrade_path or "/", - host = node.httpupgrade_host, - headers = node.user_agent and { - ["User-Agent"] = node.user_agent - } or nil - } or nil, - xhttpSettings = (node.transport == "xhttp") and { - mode = node.xhttp_mode or "auto", - path = node.xhttp_path or "/", - host = node.xhttp_host, - extra = (function() - local extra_tbl = {} - -- 解析 xhttp_extra 并做简单容错处理 - if node.xhttp_extra then - local success, parsed = pcall(jsonc.parse, api.base64Decode(node.xhttp_extra)) - if success and parsed then - extra_tbl = parsed.extra or parsed - for k, v in pairs(extra_tbl) do - if (type(v) == "table" and next(v) == nil) or v == nil then - extra_tbl[k] = nil - end - end - end - end - -- 处理 User-Agent - if node.user_agent and node.user_agent ~= "" then - extra_tbl.headers = extra_tbl.headers or {} - if not extra_tbl.headers["User-Agent"] and not extra_tbl.headers["user-agent"] then - extra_tbl.headers["User-Agent"] = node.user_agent - end - end - -- 清理空的 headers - if extra_tbl.headers and next(extra_tbl.headers) == nil then - extra_tbl.headers = nil - end - return next(extra_tbl) ~= nil and extra_tbl or nil - end)() - } or nil, - hysteriaSettings = (node.transport == "hysteria") and { - version = 2, - auth = node.hysteria2_auth_password, - up = (node.hysteria2_up_mbps and tonumber(node.hysteria2_up_mbps)) and tonumber(node.hysteria2_up_mbps) .. "mbps" or nil, - down = (node.hysteria2_down_mbps and tonumber(node.hysteria2_down_mbps)) and tonumber(node.hysteria2_down_mbps) .. "mbps" or nil, - udphop = (node.hysteria2_hop) and { - port = string.gsub(node.hysteria2_hop, ":", "-"), - interval = (function() - local v = tonumber((node.hysteria2_hop_interval or "30s"):match("^%d+")) - return (v and v >= 5) and v or 30 - end)() - } or nil, - maxIdleTimeout = (function() - local timeoutStr = tostring(node.hysteria2_idle_timeout or "") - local timeout = tonumber(timeoutStr:match("^%d+")) - if timeout and timeout >= 4 and timeout <= 120 then - return timeout - end - return 30 - end)(), - disablePathMTUDiscovery = (node.hysteria2_disable_mtu_discovery) and true or false - } or nil, - udpmasks = (node.transport == "hysteria" and node.hysteria2_obfs_type and node.hysteria2_obfs_type ~= "") and { - { - type = node.hysteria2_obfs_type, - settings = node.hysteria2_obfs_password and { - password = node.hysteria2_obfs_password - } or nil - } - } or nil - } or nil, - settings = { - vnext = (node.protocol == "vmess" or node.protocol == "vless") and { - { - address = node.address, - port = tonumber(node.port), - users = { - { - id = node.uuid, - level = 0, - security = (node.protocol == "vmess") and node.security or nil, - testpre = (node.protocol == "vless") and tonumber(node.preconns) or nil, - encryption = (node.protocol == "vless") and ((node.encryption and node.encryption ~= "") and node.encryption or "none") or nil, - flow = (node.protocol == "vless" - and (node.tls == "1" or (node.encryption and node.encryption ~= "" and node.encryption ~= "none")) - and node.flow and node.flow ~= "") and node.flow or nil - } - } - } - } or nil, - servers = (node.protocol == "socks" or node.protocol == "http" or node.protocol == "shadowsocks" or node.protocol == "trojan") and { - { - address = node.address, - port = tonumber(node.port), - method = (node.method == "chacha20-ietf-poly1305" and "chacha20-poly1305") or - (node.method == "xchacha20-ietf-poly1305" and "xchacha20-poly1305") or - (node.method ~= "" and node.method) or nil, - ivCheck = (node.protocol == "shadowsocks") and node.iv_check == "1" or nil, - uot = (node.protocol == "shadowsocks") and node.uot == "1" or nil, - password = node.password or "", - users = (node.username and node.password) and { - { - user = node.username, - pass = node.password - } - } or nil - } - } or nil, - address = (node.protocol == "wireguard" and node.wireguard_local_address) or (node.protocol == "hysteria" and node.address) or nil, - secretKey = (node.protocol == "wireguard") and node.wireguard_secret_key or nil, - peers = (node.protocol == "wireguard") and { - { - publicKey = node.wireguard_public_key, - endpoint = node.address .. ":" .. node.port, - preSharedKey = node.wireguard_preSharedKey, - keepAlive = node.wireguard_keepAlive and tonumber(node.wireguard_keepAlive) or nil - } - } or nil, - mtu = (node.protocol == "wireguard" and node.wireguard_mtu) and tonumber(node.wireguard_mtu) or nil, - reserved = (node.protocol == "wireguard" and node.wireguard_reserved) and node.wireguard_reserved or nil, - port = (node.protocol == "hysteria" and node.port) and tonumber(node.port) or nil, - version = node.protocol == "hysteria" and 2 or nil - } - } - - if node.protocol == "wireguard" then - result.settings.kernelMode = false - end - - local alpn = {} - if node.alpn and node.alpn ~= "default" then - string.gsub(node.alpn, '[^' .. "," .. ']+', function(w) - table.insert(alpn, w) - end) - end - if alpn and #alpn > 0 then - if result.streamSettings.tlsSettings then - result.streamSettings.tlsSettings.alpn = alpn - end - end - end - return result -end - -function gen_config_server(node) - local settings = nil - local routing = nil - local outbounds = { - { protocol = "freedom", tag = "direct" }, { protocol = "blackhole", tag = "blocked" } - } - - if node.protocol == "vmess" or node.protocol == "vless" then - if node.uuid then - local clients = {} - for i = 1, #node.uuid do - clients[i] = { - id = node.uuid[i], - flow = (node.protocol == "vless" - and (node.tls == "1" or (node.decryption and node.decryption ~= "" and node.decryption ~= "none")) - and node.flow and node.flow ~= "") and node.flow or nil - } - end - settings = { - clients = clients, - decryption = (node.protocol == "vless") and ((node.decryption and node.decryption ~= "") and node.decryption or "none") or nil - } - end - elseif node.protocol == "socks" then - settings = { - udp = ("1" == node.udp_forward) and true or false, - auth = ("1" == node.auth) and "password" or "noauth", - accounts = ("1" == node.auth) and { - { - user = node.username, - pass = node.password - } - } or nil - } - elseif node.protocol == "http" then - settings = { - allowTransparent = false, - accounts = ("1" == node.auth) and { - { - user = node.username, - pass = node.password - } - } or nil - } - node.transport = "tcp" - node.tcp_guise = "none" - elseif node.protocol == "shadowsocks" then - settings = { - method = node.method, - password = node.password, - ivCheck = ("1" == node.iv_check) and true or false, - network = node.ss_network or "TCP,UDP" - } - elseif node.protocol == "trojan" then - if node.uuid then - local clients = {} - for i = 1, #node.uuid do - clients[i] = { - password = node.uuid[i], - } - end - settings = { - clients = clients - } - end - elseif node.protocol == "dokodemo-door" then - settings = { - network = node.d_protocol, - address = node.d_address, - port = tonumber(node.d_port) - } - end - - if node.fallback and node.fallback == "1" then - local fallbacks = {} - for i = 1, #node.fallback_list do - local fallbackStr = node.fallback_list[i] - if fallbackStr then - local tmp = {} - string.gsub(fallbackStr, '[^,]+', function(w) - table.insert(tmp, w) - end) - local dest = tmp[1] or "" - local path = tmp[2] - local xver = tonumber(tmp[3]) - if not dest:find("%.") then - dest = tonumber(dest) - end - fallbacks[i] = { - path = path, - dest = dest, - xver = xver - } - end - end - settings.fallbacks = fallbacks - end - - routing = { - domainStrategy = "IPOnDemand", - rules = { - { - ip = {"10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16"}, - outboundTag = (node.accept_lan == nil or node.accept_lan == "0") and "blocked" or "direct" - } - } - } - - if node.outbound_node then - local outbound = nil - if node.outbound_node == "_iface" and node.outbound_node_iface then - outbound = { - protocol = "freedom", - tag = "outbound", - streamSettings = { - sockopt = { - mark = 255, - interface = node.outbound_node_iface - } - } - } - sys.call(string.format("mkdir -p %s && touch %s/%s", api.TMP_IFACE_PATH, api.TMP_IFACE_PATH, node.outbound_node_iface)) - else - local outbound_node_t = uci:get_all("passwall", node.outbound_node) - if node.outbound_node == "_socks" or node.outbound_node == "_http" then - outbound_node_t = { - type = node.type, - protocol = node.outbound_node:gsub("_", ""), - transport = "tcp", - address = node.outbound_node_address, - port = node.outbound_node_port, - username = (node.outbound_node_username and node.outbound_node_username ~= "") and node.outbound_node_username or nil, - password = (node.outbound_node_password and node.outbound_node_password ~= "") and node.outbound_node_password or nil, - } - end - outbound = require("luci.passwall.util_xray").gen_outbound(nil, outbound_node_t, "outbound") - end - if outbound then - table.insert(outbounds, 1, outbound) - end - end - - local config = { - log = { - -- error = "/tmp/etc/passwall_server/log/" .. user[".name"] .. ".log", - loglevel = ("1" == node.log) and node.loglevel or "none" - }, - -- 传入连接 - inbounds = { - { - listen = (node.bind_local == "1") and "127.0.0.1" or nil, - port = tonumber(node.port), - protocol = node.protocol, - settings = settings, - streamSettings = { - network = node.transport, - security = "none", - tlsSettings = ("1" == node.tls) and { - disableSystemRoot = false, - certificates = { - { - certificateFile = node.tls_certificateFile, - keyFile = node.tls_keyFile - } - }, - echServerKeys = (node.ech == "1") and node.ech_key or nil - } or nil, - rawSettings = (node.transport == "raw" or node.transport == "tcp") and { - header = { - type = node.tcp_guise, - request = (node.tcp_guise == "http") and { - path = node.tcp_guise_http_path and (function() - local t, r = node.tcp_guise_http_path, {} - for _, v in ipairs(t) do - r[#r + 1] = (v == "" and "/" or v) - end - return r - end)() or {"/"}, - headers = { - Host = node.tcp_guise_http_host or {} - } - } or nil - } - } or nil, - kcpSettings = (node.transport == "mkcp") and { - mtu = tonumber(node.mkcp_mtu), - tti = tonumber(node.mkcp_tti), - uplinkCapacity = tonumber(node.mkcp_uplinkCapacity), - downlinkCapacity = tonumber(node.mkcp_downlinkCapacity), - congestion = (node.mkcp_congestion == "1") and true or false, - readBufferSize = tonumber(node.mkcp_readBufferSize), - writeBufferSize = tonumber(node.mkcp_writeBufferSize), - seed = (node.mkcp_seed and node.mkcp_seed ~= "") and node.mkcp_seed or nil, - header = { - type = node.mkcp_guise, - domain = node.mkcp_domain - } - } or nil, - wsSettings = (node.transport == "ws") and { - host = node.ws_host or nil, - path = node.ws_path - } or nil, - grpcSettings = (node.transport == "grpc") and { - serviceName = node.grpc_serviceName - } or nil, - httpupgradeSettings = (node.transport == "httpupgrade") and { - path = node.httpupgrade_path or "/", - host = node.httpupgrade_host - } or nil, - xhttpSettings = (node.transport == "xhttp") and { - path = node.xhttp_path or "/", - host = node.xhttp_host, - maxUploadSize = node.xhttp_maxuploadsize, - maxConcurrentUploads = node.xhttp_maxconcurrentuploads - } or nil, - sockopt = { - acceptProxyProtocol = (node.acceptProxyProtocol and node.acceptProxyProtocol == "1") and true or false - } - } - } - }, - -- 传出连接 - outbounds = outbounds, - routing = routing - } - - local alpn = {} - if node.alpn then - string.gsub(node.alpn, '[^' .. "," .. ']+', function(w) - table.insert(alpn, w) - end) - end - if alpn and #alpn > 0 then - if config.inbounds[1].streamSettings.tlsSettings then - config.inbounds[1].streamSettings.tlsSettings.alpn = alpn - end - end - - if "1" == node.tls then - config.inbounds[1].streamSettings.security = "tls" - if "1" == node.reality then - config.inbounds[1].streamSettings.tlsSettings = nil - config.inbounds[1].streamSettings.security = "reality" - config.inbounds[1].streamSettings.realitySettings = { - show = false, - dest = node.reality_dest, - serverNames = node.reality_serverNames or {}, - privateKey = node.reality_private_key, - shortIds = node.reality_shortId or "", - mldsa65Seed = (node.use_mldsa65Seed == "1") and node.reality_mldsa65Seed or nil - } or nil - end - end - - return config -end - -function gen_config(var) - local flag = var["-flag"] - local node_id = var["-node"] - local server_host = var["-server_host"] - local server_port = var["-server_port"] - local tcp_proxy_way = var["-tcp_proxy_way"] or "redirect" - local tcp_redir_port = var["-tcp_redir_port"] - local udp_redir_port = var["-udp_redir_port"] - local local_socks_address = var["-local_socks_address"] or "0.0.0.0" - local local_socks_port = var["-local_socks_port"] - local local_socks_username = var["-local_socks_username"] - local local_socks_password = var["-local_socks_password"] - local local_http_address = var["-local_http_address"] or "0.0.0.0" - local local_http_port = var["-local_http_port"] - local local_http_username = var["-local_http_username"] - local local_http_password = var["-local_http_password"] - local dns_listen_port = var["-dns_listen_port"] - local dns_cache = var["-dns_cache"] - local direct_dns_port = var["-direct_dns_port"] - local direct_dns_udp_server = var["-direct_dns_udp_server"] - local direct_dns_tcp_server = var["-direct_dns_tcp_server"] - local direct_dns_query_strategy = var["-direct_dns_query_strategy"] - local remote_dns_udp_server = var["-remote_dns_udp_server"] - local remote_dns_udp_port = var["-remote_dns_udp_port"] - local remote_dns_tcp_server = var["-remote_dns_tcp_server"] - local remote_dns_tcp_port = var["-remote_dns_tcp_port"] - local remote_dns_doh_url = var["-remote_dns_doh_url"] - local remote_dns_doh_host = var["-remote_dns_doh_host"] - local remote_dns_doh_ip = var["-remote_dns_doh_ip"] - local remote_dns_doh_port = var["-remote_dns_doh_port"] - local remote_dns_client_ip = var["-remote_dns_client_ip"] - local remote_dns_fake = var["-remote_dns_fake"] - local remote_dns_query_strategy = var["-remote_dns_query_strategy"] - local dns_socks_address = var["-dns_socks_address"] - local dns_socks_port = var["-dns_socks_port"] - local loglevel = var["-loglevel"] or "warning" - local no_run = var["-no_run"] - - local dns_domain_rules = {} - local dns = nil - local fakedns = nil - local routing = nil - local observatory = nil - local burstObservatory = nil - local strategy = nil - local inbounds = {} - local outbounds = {} - local COMMON = {} - - local xray_settings = uci:get_all(appname, "@global_xray[0]") or {} - - if node_id then - local node = uci:get_all(appname, node_id) - local balancers = {} - local rules = {} - if node then - if server_host and server_port then - node.address = server_host - node.port = server_port - end - end - if local_socks_port then - local inbound = { - tag = "socks-in", - listen = local_socks_address, - port = tonumber(local_socks_port), - protocol = "socks", - settings = {auth = "noauth", udp = true}, - sniffing = { - enabled = xray_settings.sniffing_override_dest == "1" or node.protocol == "_shunt" - } - } - if inbound.sniffing.enabled == true then - inbound.sniffing.destOverride = {"http", "tls", "quic"} - inbound.sniffing.routeOnly = xray_settings.sniffing_override_dest ~= "1" or nil - inbound.sniffing.domainsExcluded = xray_settings.sniffing_override_dest == "1" and get_domain_excluded() or nil - end - if local_socks_username and local_socks_password and local_socks_username ~= "" and local_socks_password ~= "" then - inbound.settings.auth = "password" - inbound.settings.accounts = { - { - user = local_socks_username, - pass = local_socks_password - } - } - end - table.insert(inbounds, inbound) - end - if local_http_port then - local inbound = { - listen = local_http_address, - port = tonumber(local_http_port), - protocol = "http", - settings = {allowTransparent = false} - } - if local_http_username and local_http_password and local_http_username ~= "" and local_http_password ~= "" then - inbound.settings.accounts = { - { - user = local_http_username, - pass = local_http_password - } - } - end - table.insert(inbounds, inbound) - end - - if tcp_redir_port or udp_redir_port then - local inbound = { - protocol = "dokodemo-door", - settings = {network = "tcp,udp", followRedirect = true}, - streamSettings = {sockopt = {tproxy = "tproxy"}}, - sniffing = { - enabled = xray_settings.sniffing_override_dest == "1" or node.protocol == "_shunt" - } - } - if inbound.sniffing.enabled == true then - inbound.sniffing.destOverride = {"http", "tls", "quic"} - inbound.sniffing.metadataOnly = false - inbound.sniffing.routeOnly = xray_settings.sniffing_override_dest ~= "1" or nil - inbound.sniffing.domainsExcluded = xray_settings.sniffing_override_dest == "1" and get_domain_excluded() or nil - end - if remote_dns_fake then - inbound.sniffing.enabled = true - if not inbound.sniffing.destOverride then - inbound.sniffing.destOverride = {"fakedns"} - inbound.sniffing.metadataOnly = true - else - table.insert(inbound.sniffing.destOverride, "fakedns") - inbound.sniffing.metadataOnly = false - end - end - - if tcp_redir_port then - local tcp_inbound = api.clone(inbound) - tcp_inbound.tag = "tcp_redir" - tcp_inbound.settings.network = "tcp" - tcp_inbound.port = tonumber(tcp_redir_port) - tcp_inbound.streamSettings.sockopt.tproxy = tcp_proxy_way - table.insert(inbounds, tcp_inbound) - end - - if udp_redir_port then - local udp_inbound = api.clone(inbound) - udp_inbound.tag = "udp_redir" - udp_inbound.settings.network = "udp" - udp_inbound.port = tonumber(udp_redir_port) - table.insert(inbounds, udp_inbound) - end - end - - local function gen_loopback(outbound_tag, loopback_dst) - if not outbound_tag or outbound_tag == "" then return nil end - local inbound_tag = loopback_dst and "lo-to-" .. loopback_dst or outbound_tag .. "-lo" - table.insert(outbounds, { - protocol = "loopback", - tag = outbound_tag, - settings = { inboundTag = inbound_tag } - }) - return inbound_tag - end - - local function gen_balancer(_node, loopback_tag) - local balancer_id = _node[".name"] - local balancer_tag = "balancer-" .. balancer_id - local loopback_dst = balancer_id -- route destination for the loopback outbound - if not loopback_tag or loopback_tag == "" then loopback_tag = balancer_id end - -- existing balancer - for _, v in ipairs(balancers) do - if v.tag == balancer_tag then - gen_loopback(loopback_tag, loopback_dst) - return balancer_tag - end - end - -- new balancer - local blc_nodes = _node.balancing_node - local valid_nodes = {} - for i = 1, #blc_nodes do - local blc_node_id = blc_nodes[i] - local blc_node_tag = "blc-" .. blc_node_id - local is_new_blc_node = true - for _, outbound in ipairs(outbounds) do - if string.sub(outbound.tag, 1, #blc_node_tag) == blc_node_tag then - is_new_blc_node = false - valid_nodes[#valid_nodes + 1] = outbound.tag - break - end - end - if is_new_blc_node then - local blc_node - if blc_node_id:find("Socks_") then - local socks_id = blc_node_id:sub(1 + #"Socks_") - local socks_node = uci:get_all(appname, socks_id) or nil - if socks_node then - blc_node = { - type = "Xray", - protocol = "socks", - address = "127.0.0.1", - port = socks_node.port, - transport = "tcp", - stream_security = "none", - remarks = "Socks_" .. socks_node.port - } - end - else - blc_node = uci:get_all(appname, blc_node_id) - end - if blc_node then - local outbound = gen_outbound(flag, blc_node, blc_node_tag, { fragment = xray_settings.fragment == "1" or nil, noise = xray_settings.noise == "1" or nil, run_socks_instance = not no_run }) - if outbound then - outbound.tag = outbound.tag .. ":" .. blc_node.remarks - table.insert(outbounds, outbound) - valid_nodes[#valid_nodes + 1] = outbound.tag - end - end - end - end - if #valid_nodes == 0 then return nil end - - -- fallback node - local fallback_node_tag = nil - local fallback_node_id = _node.fallback_node - if not fallback_node_id or fallback_node_id == "" then fallback_node_id = nil end - if fallback_node_id then - local is_new_node = true - for _, outbound in ipairs(outbounds) do - if string.sub(outbound.tag, 1, #fallback_node_id) == fallback_node_id then - is_new_node = false - fallback_node_tag = outbound.tag - break - end - end - if is_new_node then - local fallback_node - if fallback_node_id:find("Socks_") then - local socks_id = fallback_node_id:sub(1 + #"Socks_") - local socks_node = uci:get_all(appname, socks_id) or nil - if socks_node then - fallback_node = { - type = "Xray", - protocol = "socks", - address = "127.0.0.1", - port = socks_node.port, - transport = "tcp", - stream_security = "none", - remarks = "Socks_" .. socks_node.port - } - end - else - fallback_node = uci:get_all(appname, fallback_node_id) - end - if fallback_node then - if fallback_node.protocol ~= "_balancing" then - local outbound = gen_outbound(flag, fallback_node, fallback_node_id, { fragment = xray_settings.fragment == "1" or nil, noise = xray_settings.noise == "1" or nil, run_socks_instance = not no_run }) - if outbound then - outbound.tag = outbound.tag .. ":" .. fallback_node.remarks - table.insert(outbounds, outbound) - fallback_node_tag = outbound.tag - end - else - if gen_balancer(fallback_node) then - fallback_node_tag = fallback_node_id - end - end - end - end - end - if _node.balancingStrategy == "leastLoad" then - strategy = { - type = _node.balancingStrategy, - settings = { - expected = _node.expected and tonumber(_node.expected) and tonumber(_node.expected) or 2, - maxRTT = "1s" - } - } - else - strategy = { type = _node.balancingStrategy or "random" } - end - table.insert(balancers, { - tag = balancer_tag, - selector = api.clone(valid_nodes), - fallbackTag = fallback_node_tag, - strategy = strategy - }) - if _node.balancingStrategy == "leastPing" or _node.balancingStrategy == "leastLoad" or fallback_node_tag then - if _node.balancingStrategy == "leastLoad" then - if not burstObservatory then - burstObservatory = { - subjectSelector = { "blc-" }, - pingConfig = { - destination = _node.useCustomProbeUrl and _node.probeUrl or nil, - interval = (api.format_go_time(_node.probeInterval) ~= "0s") and api.format_go_time(_node.probeInterval) or "1m", - sampling = 3, - timeout = "5s" - } - } - end - else - if not observatory then - observatory = { - subjectSelector = { "blc-" }, - probeUrl = _node.useCustomProbeUrl and _node.probeUrl or nil, - probeInterval = (api.format_go_time(_node.probeInterval) ~= "0s") and api.format_go_time(_node.probeInterval) or "1m", - enableConcurrency = true - } - end - end - end - local inbound_tag = gen_loopback(loopback_tag, loopback_dst) - table.insert(rules, { inboundTag = { inbound_tag }, balancerTag = balancer_tag }) - return balancer_tag - end - - local function set_outbound_detour(node, outbound, outbounds_table, shunt_rule_name) - if not node or not outbound or not outbounds_table then return nil end - local default_outTag = outbound.tag - local last_insert_outbound - - if node.chain_proxy == "1" and node.preproxy_node then - if outbound["_flag_proxy_tag"] then - --Ignore - else - local preproxy_node = uci:get_all(appname, node.preproxy_node) - if preproxy_node then - local preproxy_outbound = gen_outbound(nil, preproxy_node) - if preproxy_outbound then - preproxy_outbound.tag = preproxy_node[".name"] .. ":" .. preproxy_node.remarks - outbound.tag = preproxy_outbound.tag .. " -> " .. outbound.tag - outbound.proxySettings = { - tag = preproxy_outbound.tag, - transportLayer = true - } - last_insert_outbound = preproxy_outbound - default_outTag = outbound.tag - end - end - end - end - if node.chain_proxy == "2" and node.to_node then - local to_node = uci:get_all(appname, node.to_node) - if to_node then - local to_outbound = gen_outbound(nil, to_node) - if to_outbound then - if shunt_rule_name then - to_outbound.tag = outbound.tag - outbound.tag = node[".name"] - else - to_outbound.tag = outbound.tag .. " -> " .. to_outbound.tag - end - - to_outbound.proxySettings = { - tag = outbound.tag, - transportLayer = true - } - table.insert(outbounds_table, to_outbound) - default_outTag = to_outbound.tag - end - end - end - return default_outTag, last_insert_outbound - end - - if node.protocol == "_shunt" then - local preproxy_rule_name = node.preproxy_enabled == "1" and "main" or nil - local preproxy_tag = preproxy_rule_name - local preproxy_node_id = preproxy_rule_name and node["main_node"] or nil - local preproxy_outbound_tag, preproxy_balancer_tag - local preproxy_nodes - - local function gen_shunt_node(rule_name, _node_id) - if not rule_name then return nil, nil end - if not _node_id then - _node_id = node[rule_name] or nil - if not _node_id then return nil, nil end - end - if _node_id == "_direct" then - return "direct", nil - elseif _node_id == "_blackhole" then - return "blackhole", nil - elseif _node_id == "_default" then - return "default", nil - elseif _node_id and _node_id:find("Socks_") then - local socks_id = _node_id:sub(1 + #"Socks_") - local socks_node = uci:get_all(appname, socks_id) or nil - local socks_tag - if socks_node then - local _node = { - type = "Xray", - protocol = "socks", - address = "127.0.0.1", - port = socks_node.port, - transport = "tcp", - stream_security = "none" - } - local outbound = gen_outbound(flag, _node, rule_name) - if outbound then - table.insert(outbounds, outbound) - socks_tag = outbound.tag - end - end - return socks_tag, nil - end - - local _node = uci:get_all(appname, _node_id) - if not _node then return nil, nil end - - if api.is_normal_node(_node) then - local use_proxy = preproxy_tag and node[rule_name .. "_proxy_tag"] == preproxy_rule_name and _node_id ~= preproxy_node_id - if use_proxy and preproxy_balancer_tag and preproxy_nodes[_node_id] then use_proxy = false end - local copied_outbound - for index, value in ipairs(outbounds) do - if value["_id"] == _node_id and value["_flag_proxy_tag"] == (use_proxy and preproxy_tag or nil) then - copied_outbound = api.clone(value) - break - end - end - if copied_outbound then - copied_outbound.tag = rule_name - table.insert(outbounds, copied_outbound) - return copied_outbound.tag, nil - end - --new outbound - if use_proxy and _node.type ~= "Xray" then - new_port = get_new_port() - table.insert(inbounds, { - tag = "proxy_" .. rule_name, - listen = "127.0.0.1", - port = new_port, - protocol = "dokodemo-door", - settings = {network = "tcp,udp", address = _node.address, port = tonumber(_node.port)} - }) - if _node.tls_serverName == nil then - _node.tls_serverName = _node.address - end - _node.address = "127.0.0.1" - _node.port = new_port - table.insert(rules, 1, { - inboundTag = {"proxy_" .. rule_name}, - outboundTag = not preproxy_balancer_tag and preproxy_tag or nil, - balancerTag = preproxy_balancer_tag - }) - end - local proxy_table = { - tag = use_proxy and preproxy_tag or nil, - run_socks_instance = not no_run - } - if not proxy_table.tag then - if xray_settings.fragment == "1" then - proxy_table.fragment = true - end - if xray_settings.noise == "1" then - proxy_table.noise = true - end - end - local outbound = gen_outbound(flag, _node, rule_name, proxy_table) - local outbound_tag - if outbound then - outbound.tag = outbound.tag .. ":" .. _node.remarks - outbound_tag, last_insert_outbound = set_outbound_detour(_node, outbound, outbounds, rule_name) - if rule_name == "default" then - table.insert(outbounds, 1, outbound) - else - table.insert(outbounds, outbound) - end - if last_insert_outbound then - table.insert(outbounds, last_insert_outbound) - end - end - return outbound_tag, nil - elseif _node.protocol == "_balancing" then - local blc_tag = gen_balancer(_node, rule_name) - if rule_name == "default" then - for i, ob in ipairs(outbounds) do - if ob.protocol == "loopback" and ob.tag == "default" then - if i > 1 then table.insert(outbounds, 1, table.remove(outbounds, i)) end - break - end - end - end - return nil, blc_tag - elseif _node.protocol == "_iface" then - local outbound_tag - if _node.iface then - local outbound = { - protocol = "freedom", - tag = rule_name, - streamSettings = { - sockopt = { - mark = 255, - interface = _node.iface - } - } - } - outbound_tag = outbound.tag - if rule_name == "default" then - table.insert(outbounds, 1, outbound) - else - table.insert(outbounds, outbound) - end - sys.call(string.format("mkdir -p %s && touch %s/%s", api.TMP_IFACE_PATH, api.TMP_IFACE_PATH, _node.iface)) - end - return outbound_tag, nil - end - end - - if preproxy_tag and preproxy_node_id then - preproxy_outbound_tag, preproxy_balancer_tag = gen_shunt_node(preproxy_rule_name, preproxy_node_id) - if preproxy_balancer_tag then - local _node_id = preproxy_node_id - preproxy_nodes = {} - while _node_id do - _node = uci:get_all(appname, _node_id) - if not _node then break end - if _node.protocol ~= "_balancing" then - preproxy_nodes[_node_id] = true - break - end - local _blc_nodes = _node.balancing_node - for i = 1, #_blc_nodes do preproxy_nodes[_blc_nodes[i]] = true end - _node_id = _node.fallback_node - end - else - preproxy_tag = preproxy_outbound_tag - end - end - --default_node - local default_node_id = node.default_node or "_direct" - local default_outboundTag, default_balancerTag = gen_shunt_node("default", default_node_id) - COMMON.default_outbound_tag = default_outboundTag - COMMON.default_balancer_tag = default_balancerTag - --shunt rule - uci:foreach(appname, "shunt_rules", function(e) - local outbound_tag, balancer_tag = gen_shunt_node(e[".name"]) - if outbound_tag or balancer_tag and e.remarks then - if outbound_tag == "default" then - outbound_tag = default_outboundTag - balancer_tag = default_balancerTag - end - local protocols = nil - if e["protocol"] and e["protocol"] ~= "" then - protocols = {} - string.gsub(e["protocol"], '[^' .. " " .. ']+', function(w) - table.insert(protocols, w) - end) - end - local inbound_tag = nil - if e["inbound"] and e["inbound"] ~= "" then - inbound_tag = {} - if e["inbound"]:find("tproxy") then - if tcp_redir_port then - table.insert(inbound_tag, "tcp_redir") - end - if udp_redir_port then - table.insert(inbound_tag, "udp_redir") - end - end - if e["inbound"]:find("socks") then - if local_socks_port then - table.insert(inbound_tag, "socks-in") - end - end - end - local domains = nil - if e.domain_list then - local domain_table = { - shunt_rule_name = e[".name"], - outboundTag = outbound_tag, - balancerTag = balancer_tag, - domain = {}, - } - domains = {} - string.gsub(e.domain_list, '[^' .. "\r\n" .. ']+', function(w) - if w:find("#") == 1 then return end - table.insert(domains, w) - table.insert(domain_table.domain, w) - end) - if outbound_tag or balancer_tag then - table.insert(dns_domain_rules, api.clone(domain_table)) - end - if #domains == 0 then domains = nil end - end - local ip = nil - if e.ip_list then - ip = {} - string.gsub(e.ip_list, '[^' .. "\r\n" .. ']+', function(w) - if w:find("#") == 1 then return end - table.insert(ip, w) - end) - if #ip == 0 then ip = nil end - end - local source = nil - if e.source then - source = {} - string.gsub(e.source, '[^' .. " " .. ']+', function(w) - table.insert(source, w) - end) - end - local rule = { - ruleTag = e.remarks, - inboundTag = inbound_tag, - outboundTag = outbound_tag, - balancerTag = balancer_tag, - network = e["network"] or "tcp,udp", - source = source, - sourcePort = e["sourcePort"] ~= "" and e["sourcePort"] or nil, - port = e["port"] ~= "" and e["port"] or nil, - protocol = protocols - } - if domains then - local _rule = api.clone(rule) - _rule.ruleTag = _rule.ruleTag .. " Domains" - _rule.domains = domains - table.insert(rules, _rule) - end - if ip then - local _rule = api.clone(rule) - _rule.ruleTag = _rule.ruleTag .. " IP" - _rule.ip = ip - table.insert(rules, _rule) - end - if not domains and not ip and protocols then - table.insert(rules, rule) - end - end - end) - - if default_outboundTag or default_balancerTag then - local rule = { - _flag = "default", - type = "field", - outboundTag = default_outboundTag, - balancerTag = default_balancerTag - } - if node.domainStrategy == "IPIfNonMatch" then - rule.ip = { "0.0.0.0/0", "::/0" } - else - rule.network = "tcp,udp" - end - table.insert(rules, rule) - end - - routing = { - domainStrategy = node.domainStrategy or "AsIs", - domainMatcher = node.domainMatcher or "hybrid", - balancers = #balancers > 0 and balancers or nil, - rules = rules - } - elseif node.protocol == "_balancing" then - if node.balancing_node then - local balancer_tag = gen_balancer(node) - if balancer_tag then - table.insert(rules, { network = "tcp,udp", balancerTag = balancer_tag }) - end - routing = { - balancers = balancers, - rules = rules - } - COMMON.default_balancer_tag = balancer_tag - end - elseif node.protocol == "_iface" then - if node.iface then - local outbound = { - protocol = "freedom", - tag = node.remarks or node_id, - streamSettings = { - sockopt = { - mark = 255, - interface = node.iface - } - } - } - table.insert(outbounds, outbound) - COMMON.default_outbound_tag = outbound.tag - sys.call(string.format("mkdir -p %s && touch %s/%s", api.TMP_IFACE_PATH, api.TMP_IFACE_PATH, node.iface)) - end - else - local outbound = gen_outbound(flag, node, nil, { fragment = xray_settings.fragment == "1" or nil, noise = xray_settings.noise == "1" or nil, run_socks_instance = not no_run }) - if outbound then - outbound.tag = outbound.tag .. ":" .. node.remarks - COMMON.default_outbound_tag, last_insert_outbound = set_outbound_detour(node, outbound, outbounds) - table.insert(outbounds, outbound) - if last_insert_outbound then - table.insert(outbounds, last_insert_outbound) - end - end - routing = { - domainStrategy = "AsIs", - domainMatcher = "hybrid", - rules = {} - } - table.insert(routing.rules, { - ruleTag = "default", - outboundTag = COMMON.default_outbound_tag, - network = "tcp,udp" - }) - end - end - - if (remote_dns_udp_server and remote_dns_udp_port) or (remote_dns_tcp_server and remote_dns_tcp_port) then - if not routing then - routing = { - domainStrategy = "IPOnDemand", - rules = {} - } - end - - dns = { - tag = "dns-global", - hosts = {}, - disableCache = (dns_cache and dns_cache == "0") and true or false, - disableFallback = true, - disableFallbackIfMatch = true, - servers = {}, - clientIp = (remote_dns_client_ip and remote_dns_client_ip ~= "") and remote_dns_client_ip or nil, - queryStrategy = "UseIP" - } - - local _direct_dns = { - tag = "dns-global-direct", - queryStrategy = (direct_dns_query_strategy and direct_dns_query_strategy ~= "") and direct_dns_query_strategy or "UseIP" - } - - if direct_dns_udp_server or direct_dns_tcp_server then - local domain = {} - local nodes_domain_text = sys.exec('uci show passwall | grep ".address=" | cut -d "\'" -f 2 | grep "[a-zA-Z]$" | sort -u') - string.gsub(nodes_domain_text, '[^' .. "\r\n" .. ']+', function(w) - table.insert(domain, w) - end) - if #domain > 0 then - table.insert(dns_domain_rules, 1, { - shunt_rule_name = "logic-vpslist", - outboundTag = "direct", - domain = domain - }) - end - - if direct_dns_udp_server then - local port = tonumber(direct_dns_port) or 53 - _direct_dns.port = port - _direct_dns.address = direct_dns_udp_server - elseif direct_dns_tcp_server then - local port = tonumber(direct_dns_port) or 53 - _direct_dns.address = "tcp://" .. direct_dns_tcp_server .. ":" .. port - end - - if COMMON.default_outbound_tag == "direct" then - table.insert(dns.servers, _direct_dns) - end - end - - local _remote_dns = { - --tag = "dns-global-remote", - queryStrategy = (remote_dns_query_strategy and remote_dns_query_strategy ~= "") and remote_dns_query_strategy or "UseIPv4", - } - if remote_dns_udp_server then - _remote_dns.address = remote_dns_udp_server - _remote_dns.port = tonumber(remote_dns_udp_port) or 53 - else - _remote_dns.address = "tcp://" .. remote_dns_tcp_server .. ":" .. tonumber(remote_dns_tcp_port) or 53 - end - - local _remote_dns_host - if remote_dns_doh_url and remote_dns_doh_host then - if remote_dns_doh_ip and remote_dns_doh_host ~= remote_dns_doh_ip and not api.is_ip(remote_dns_doh_host) then - dns.hosts[remote_dns_doh_host] = remote_dns_doh_ip - _remote_dns_host = remote_dns_doh_host - end - _remote_dns.address = remote_dns_doh_url - _remote_dns.port = tonumber(remote_dns_doh_port) - end - - table.insert(dns.servers, _remote_dns) - - local _remote_fakedns = { - --tag = "dns-global-remote-fakedns", - address = "fakedns", - } - - if remote_dns_fake then - fakedns = {} - local fakedns4 = { - ipPool = "198.18.0.0/15", - poolSize = 65535 - } - local fakedns6 = { - ipPool = "fc00::/18", - poolSize = 65535 - } - if remote_dns_query_strategy == "UseIP" then - table.insert(fakedns, fakedns4) - table.insert(fakedns, fakedns6) - elseif remote_dns_query_strategy == "UseIPv4" then - table.insert(fakedns, fakedns4) - elseif remote_dns_query_strategy == "UseIPv6" then - table.insert(fakedns, fakedns6) - end - table.insert(dns.servers, 1, _remote_fakedns) - end - - local dns_outbound_tag = "direct" - if dns_socks_address and dns_socks_port then - dns_outbound_tag = "out" - table.insert(outbounds, 1, { - tag = dns_outbound_tag, - protocol = "socks", - streamSettings = { - network = "tcp", - security = "none", - sockopt = { - mark = 255 - } - }, - settings = { - servers = { - { - address = dns_socks_address, - port = tonumber(dns_socks_port) - } - } - } - }) - else - if COMMON.default_balancer_tag then - dns_outbound_tag = nil - elseif COMMON.default_outbound_tag then - dns_outbound_tag = COMMON.default_outbound_tag - end - end - - local dns_rule_position = 1 - if dns_listen_port then - table.insert(inbounds, { - listen = "127.0.0.1", - port = tonumber(dns_listen_port), - protocol = "dokodemo-door", - tag = "dns-in", - settings = { - address = remote_dns_udp_server or remote_dns_tcp_server, - port = tonumber(remote_dns_udp_port) or tonumber(remote_dns_tcp_port), - network = "tcp,udp" - } - }) - - table.insert(outbounds, { - tag = "dns-out", - protocol = "dns", - proxySettings = dns_outbound_tag and { - tag = dns_outbound_tag - } or nil, - settings = { - address = remote_dns_udp_server or remote_dns_tcp_server, - port = tonumber(remote_dns_udp_port) or tonumber(remote_dns_tcp_port), - network = remote_dns_udp_server and "udp" or "tcp", - nonIPQuery = "reject" - } - }) - - table.insert(routing.rules, 1, { - inboundTag = { - "dns-in" - }, - outboundTag = "dns-out" - }) - dns_rule_position = dns_rule_position + 1 - end - - if COMMON.default_outbound_tag == "direct" then - if direct_dns_udp_server or direct_dns_tcp_server then - table.insert(routing.rules, dns_rule_position, { - inboundTag = { - "dns-global-direct" - }, - outboundTag = "direct" - }) - dns_rule_position = dns_rule_position + 1 - end - end - - --按分流顺序DNS - if dns_domain_rules and #dns_domain_rules > 0 then - for index, value in ipairs(dns_domain_rules) do - if value.domain and (value.outboundTag or value.balancerTag) then - local dns_server = nil - if value.outboundTag == "direct" and _direct_dns.address then - dns_server = api.clone(_direct_dns) - else - if remote_dns_fake then - dns_server = api.clone(_remote_fakedns) - else - dns_server = api.clone(_remote_dns) - end - end - dns_server.domains = value.domain - if value.shunt_rule_name then - dns_server.tag = "dns-in-" .. value.shunt_rule_name - end - - if dns_server then - local outboundTag, balancerTag - if not api.is_local_ip(dns_server.address) or value.outboundTag == "blackhole" then --dns为本地ip,不走代理 - outboundTag = value.outboundTag - balancerTag = value.balancerTag - else - outboundTag = "direct" - balancerTag = nil - end - table.insert(dns.servers, dns_server) - table.insert(routing.rules, dns_rule_position, { - inboundTag = { dns_server.tag }, - outboundTag = outboundTag, - balancerTag = balancerTag - }) - dns_rule_position = dns_rule_position + 1 - end - end - end - end - - local _outboundTag, _balancerTag - if not api.is_local_ip(_remote_dns.address) or dns_outbound_tag == "blackhole" then --dns为本地ip,不走代理 - _outboundTag = dns_outbound_tag - _balancerTag = COMMON.default_balancer_tag - else - _outboundTag = "direct" - _balancerTag = nil - end - table.insert(routing.rules, dns_rule_position, { - inboundTag = { "dns-global" }, - balancerTag = _balancerTag, - outboundTag = _outboundTag - }) - dns_rule_position = dns_rule_position + 1 - - local default_rule_index = nil - for index, value in ipairs(routing.rules) do - if value.ruleTag == "default" then - default_rule_index = index - break - end - end - if default_rule_index then - local default_rule = api.clone(routing.rules[default_rule_index]) - table.remove(routing.rules, default_rule_index) - table.insert(routing.rules, default_rule) - end - - local dns_hosts_len = 0 - for key, value in pairs(dns.hosts) do - dns_hosts_len = dns_hosts_len + 1 - end - - if dns_hosts_len == 0 then - dns.hosts = nil - end - end - - if inbounds or outbounds then - local config = { - log = { - -- error = string.format("/tmp/etc/%s/%s.log", appname, node[".name"]), - loglevel = loglevel - }, - -- DNS - dns = dns, - fakedns = fakedns, - -- 传入连接 - inbounds = inbounds, - -- 传出连接 - outbounds = outbounds, - -- 连接观测 - observatory = (not burstObservatory) and observatory or nil, - burstObservatory = burstObservatory, - -- 路由 - routing = routing, - -- 本地策略 - policy = { - levels = { - [0] = { - -- handshake = 4, - -- connIdle = 300, - -- uplinkOnly = 2, - -- downlinkOnly = 5, - bufferSize = xray_settings.buffer_size and tonumber(xray_settings.buffer_size) or nil, - statsUserUplink = false, - statsUserDownlink = false - } - }, - -- system = { - -- statsInboundUplink = false, - -- statsInboundDownlink = false - -- } - } - } - - if xray_settings.fragment == "1" or xray_settings.noise == "1" then - table.insert(outbounds, { - protocol = "freedom", - tag = "dialerproxy", - settings = { - domainStrategy = (direct_dns_query_strategy and direct_dns_query_strategy ~= "") and direct_dns_query_strategy or "UseIP", - fragment = (xray_settings.fragment == "1") and { - packets = (xray_settings.fragment_packets and xray_settings.fragment_packets ~= "") and xray_settings.fragment_packets, - length = (xray_settings.fragment_length and xray_settings.fragment_length ~= "") and xray_settings.fragment_length, - interval = (xray_settings.fragment_interval and xray_settings.fragment_interval ~= "") and xray_settings.fragment_interval, - maxSplit = (xray_settings.fragment_maxSplit and xray_settings.fragment_maxSplit ~= "") and xray_settings.fragment_maxSplit - } or nil, - noises = (xray_settings.noise == "1") and get_noise_packets() or nil - }, - streamSettings = { - sockopt = { - mark = 255 - } - } - }) - end - - local direct_outbound = { - protocol = "freedom", - tag = "direct", - settings = { - domainStrategy = (direct_dns_query_strategy and direct_dns_query_strategy ~= "") and direct_dns_query_strategy or "UseIP" - }, - streamSettings = { - sockopt = { - mark = 255 - } - } - } - if COMMON.default_outbound_tag == "direct" then - table.insert(outbounds, 1, direct_outbound) - else - table.insert(outbounds, direct_outbound) - end - - local blackhole_outbound = { - protocol = "blackhole", - tag = "blackhole" - } - if COMMON.default_outbound_tag == "blackhole" then - table.insert(outbounds, 1, blackhole_outbound) - else - table.insert(outbounds, blackhole_outbound) - end - - for index, value in ipairs(config.outbounds) do - local s = value.settings - if not value["_flag_proxy_tag"] and value["_id"] and s and not no_run and - ((s.vnext and s.vnext[1] and s.vnext[1].address and s.vnext[1].port) or - (s.servers and s.servers[1] and s.servers[1].address and s.servers[1].port) or - (s.peers and s.peers[1] and s.peers[1].endpoint) or - (s.address and s.port)) then - sys.call(string.format("echo '%s' >> %s", value["_id"], api.TMP_PATH .. "/direct_node_list")) - end - for k, v in pairs(config.outbounds[index]) do - if k:find("_") == 1 then - config.outbounds[index][k] = nil - end - end - end - return jsonc.stringify(config, 1) - end -end - -function gen_proto_config(var) - local local_socks_address = var["-local_socks_address"] or "0.0.0.0" - local local_socks_port = var["-local_socks_port"] - local local_socks_username = var["-local_socks_username"] - local local_socks_password = var["-local_socks_password"] - local local_http_address = var["-local_http_address"] or "0.0.0.0" - local local_http_port = var["-local_http_port"] - local local_http_username = var["-local_http_username"] - local local_http_password = var["-local_http_password"] - local server_proto = var["-server_proto"] - local server_address = var["-server_address"] - local server_port = var["-server_port"] - local server_username = var["-server_username"] - local server_password = var["-server_password"] - - local inbounds = {} - local outbounds = {} - local routing = nil - - if local_socks_address and local_socks_port then - local inbound = { - listen = local_socks_address, - port = tonumber(local_socks_port), - protocol = "socks", - settings = { - udp = true, - auth = "noauth" - } - } - if local_socks_username and local_socks_password and local_socks_username ~= "" and local_socks_password ~= "" then - inbound.settings.auth = "password" - inbound.settings.accounts = { - { - user = local_socks_username, - pass = local_socks_password - } - } - end - table.insert(inbounds, inbound) - end - - if local_http_address and local_http_port then - local inbound = { - listen = local_http_address, - port = tonumber(local_http_port), - protocol = "http", - settings = { - allowTransparent = false - } - } - if local_http_username and local_http_password and local_http_username ~= "" and local_http_password ~= "" then - inbound.settings.accounts = { - { - user = local_http_username, - pass = local_http_password - } - } - end - table.insert(inbounds, inbound) - end - - if server_proto ~= "nil" and server_address ~= "nil" and server_port ~= "nil" then - local outbound = { - protocol = server_proto, - streamSettings = { - network = "tcp", - security = "none" - }, - settings = { - servers = { - { - address = server_address, - port = tonumber(server_port), - users = (server_username and server_password) and { - { - user = server_username, - pass = server_password - } - } or nil - } - } - } - } - if outbound then table.insert(outbounds, outbound) end - end - - -- 额外传出连接 - table.insert(outbounds, { - protocol = "freedom", tag = "direct", settings = {keep = ""}, sockopt = {mark = 255} - }) - - local config = { - log = { - loglevel = "warning" - }, - -- 传入连接 - inbounds = inbounds, - -- 传出连接 - outbounds = outbounds, - -- 路由 - routing = routing - } - return jsonc.stringify(config, 1) -end - -_G.gen_config = gen_config -_G.gen_proto_config = gen_proto_config - -if arg[1] then - local func =_G[arg[1]] - if func then - print(func(api.get_function_args(arg))) - end -end diff --git a/small/luci-app-passwall/luasrc/view/passwall/acl/view_chinadns_log.htm b/small/luci-app-passwall/luasrc/view/passwall/acl/view_chinadns_log.htm deleted file mode 100644 index 316b1d6a0b..0000000000 --- a/small/luci-app-passwall/luasrc/view/passwall/acl/view_chinadns_log.htm +++ /dev/null @@ -1,55 +0,0 @@ -<% -local api = require "luci.passwall.api" --%> - diff --git a/small/luci-app-passwall/luasrc/view/passwall/app_update/app_version.htm b/small/luci-app-passwall/luasrc/view/passwall/app_update/app_version.htm deleted file mode 100644 index cda606e76b..0000000000 --- a/small/luci-app-passwall/luasrc/view/passwall/app_update/app_version.htm +++ /dev/null @@ -1,213 +0,0 @@ -<% -local api = require "luci.passwall.api" -local com = require "luci.passwall.com" -local version = {} --%> - - - -
- -
- - 【 <%=api.get_version()%> 】 - - - -
-
- -<%for _, k in ipairs(com.order) do - local v = com[k] - version[k] = api.get_app_version(k)%> -
- -
- - 【 <%=version[k] ~="" and version[k] or translate("Null") %> 】 - - - - -
-
-<%end%> diff --git a/small/luci-app-passwall/luasrc/view/passwall/cbi/hidevalue.htm b/small/luci-app-passwall/luasrc/view/passwall/cbi/hidevalue.htm deleted file mode 100644 index 76a1ff2340..0000000000 --- a/small/luci-app-passwall/luasrc/view/passwall/cbi/hidevalue.htm +++ /dev/null @@ -1,3 +0,0 @@ -
" data-index="<%=self.index%>" data-depends="<%=pcdata(self:deplist2json(section))%>" style="display: none !important"> - " /> -
diff --git a/small/luci-app-passwall/luasrc/view/passwall/cbi/nodes_listvalue.htm b/small/luci-app-passwall/luasrc/view/passwall/cbi/nodes_listvalue.htm deleted file mode 100644 index 2081a531b9..0000000000 --- a/small/luci-app-passwall/luasrc/view/passwall/cbi/nodes_listvalue.htm +++ /dev/null @@ -1,145 +0,0 @@ -<%+cbi/valueheader%> -<% --- Template Developers: --- - lwb1978 --- - snowie2000 --- Copyright: copyright(c)2025–2027 --- Description: Passwall(2) UI template - -local json = require "luci.jsonc" - --- 读取值(keylist/vallist/group) -local values = {} -for i, key in pairs(self.keylist) do - values[#values + 1] = { - key = key, - label = self.vallist[i] or key, - group = self.group and self.group[i] or nil - } -end - --- 获取当前配置值(单值) -local current_key = nil -local cval = self:cfgvalue(section) -if type(cval) == "table" then - -- 若意外为table,取第一个 - for k,_ in pairs(cval) do - current_key = k - break - end -elseif type(cval) == "string" then - current_key = (cval:match("%S+")) -- 取第一个 token -end - --- 分离无组节点(ungrouped)与有组节点(grouped),并保持原有顺序 -local ungrouped = {} -local groups = {} -local group_order = {} -for _, item in ipairs(values) do - if not item.group or item.group == "" then - table.insert(ungrouped, item) - else - local g = item.group - if not groups[g] then - groups[g] = {} - table.insert(group_order, g) - end - table.insert(groups[g], item) - end -end - --- 如果没有配置值,默认取第一个(优先无组第一项,否则第一组第一项) -if not current_key then - if #ungrouped > 0 then - current_key = ungrouped[1].key - else - -- 找到 group_order 第一个有节点的项 - for _, g in ipairs(group_order) do - if groups[g] and #groups[g] > 0 then - current_key = groups[g][1].key - break - end - end - end -end - --- 获取当前 label(用于主控件显示) -local function find_label_by_key(k) - if not k then return "" end - for _, v in ipairs(values) do - if v.key == k then return v.label end - end - return "" -end -local current_label = find_label_by_key(current_key) or "" - --- 打包数据给 JS -local dropdown_data = { - current_key = current_key, - current_label = current_label, - ungrouped = ungrouped, - groups = groups, - group_order = group_order, - cbid = cbid, -} -%> - - -
- - - -
- - <%=pcdata(current_label ~= "" and current_label or ("("..translate("Not set")..")"))%> - - -
- - -
- -<%+cbi/valuefooter%> - - diff --git a/small/luci-app-passwall/luasrc/view/passwall/cbi/nodes_listvalue_com.htm b/small/luci-app-passwall/luasrc/view/passwall/cbi/nodes_listvalue_com.htm deleted file mode 100644 index 072cd98701..0000000000 --- a/small/luci-app-passwall/luasrc/view/passwall/cbi/nodes_listvalue_com.htm +++ /dev/null @@ -1,690 +0,0 @@ -<% --- Template Developers: --- - lwb1978 --- - snowie2000 --- Copyright: copyright(c)2025–2027 --- Description: Passwall(2) UI template --- It is the common part of the template and cannot be used independently -%> - - - diff --git a/small/luci-app-passwall/luasrc/view/passwall/cbi/nodes_multivalue.htm b/small/luci-app-passwall/luasrc/view/passwall/cbi/nodes_multivalue.htm deleted file mode 100644 index 199e67d3ff..0000000000 --- a/small/luci-app-passwall/luasrc/view/passwall/cbi/nodes_multivalue.htm +++ /dev/null @@ -1,131 +0,0 @@ -<%+cbi/valueheader%> -<% --- Template Developers: --- - lwb1978 --- Copyright: copyright(c)2025–2027 --- Description: Passwall(2) UI template -local json = require "luci.jsonc" -local cbid = "cbid." .. self.config .. "." .. section .. "." .. self.option - --- 读取 MultiValue -local values = {} -for i, key in pairs(self.keylist) do - values[#values + 1] = { - key = key, - label = self.vallist[i] or key, - group = self.group and self.group[i] or nil - } -end - --- 获取选中值 -local selected = {} -local cval = self:cfgvalue(section) -if type(cval) == "table" then - for _, v in pairs(cval) do - selected[v] = true - end -elseif type(cval) == "string" then - for v in cval:gmatch("%S+") do - selected[v] = true - end -end - --- 按原顺序分组 -local groups = {} -local group_order = {} -for _, item in ipairs(values) do - local g = item.group - if not g or g == "" then - g = translate("default") - end - if not groups[g] then - groups[g] = {} - table.insert(group_order, g) - end - table.insert(groups[g], item) -end - -local total_count = #values -local selected_count = 0 -for _, item in ipairs(values) do - if selected[item.key] then - selected_count = selected_count + 1 - end -end - -local function idSafe(id) - return (id - :gsub("^%s+", "") - :gsub("%s+$", "") - :gsub("%s+", "-") - :gsub("[%z\1-\31\127]", "") - ) -end -%> - -
- - - - -
-
    - <% for _, gname in ipairs(group_order) do local items = groups[gname] %> -
  • - -
    - - <%=pcdata(gname)%> - <% - local g_selected = 0 - for _, it in ipairs(items) do - if selected[it.key] then - g_selected = g_selected + 1 - end - end - %> - - (<%=g_selected%>/<%=#items%>) - -
    - - -
  • - <% end %> -
-
- -
- - - <%:Selected:%> <%=selected_count%>/<%=total_count%> -
-
-<%+cbi/valuefooter%> - - diff --git a/small/luci-app-passwall/luasrc/view/passwall/cbi/nodes_multivalue_com.htm b/small/luci-app-passwall/luasrc/view/passwall/cbi/nodes_multivalue_com.htm deleted file mode 100644 index 275cb73db6..0000000000 --- a/small/luci-app-passwall/luasrc/view/passwall/cbi/nodes_multivalue_com.htm +++ /dev/null @@ -1,478 +0,0 @@ -<% --- Template Developers: --- - lwb1978 --- Copyright: copyright(c)2025–2027 --- Description: Passwall(2) UI template -%> - - - - diff --git a/small/luci-app-passwall/luasrc/view/passwall/cbi/nodes_value.htm b/small/luci-app-passwall/luasrc/view/passwall/cbi/nodes_value.htm deleted file mode 100644 index 9745dd8348..0000000000 --- a/small/luci-app-passwall/luasrc/view/passwall/cbi/nodes_value.htm +++ /dev/null @@ -1,159 +0,0 @@ -<%+cbi/valueheader%> -<% --- Template Developers: --- - lwb1978 --- Copyright: copyright(c)2025–2027 --- Description: Passwall(2) UI template - -local json = require "luci.jsonc" - --- 读取值(keylist/vallist/group) -local values = {{key = "", label = translate("-- Please choose --")}} -for i, key in pairs(self.keylist) do - if key and key ~= "" then - values[#values + 1] = { - key = key, - label = self.vallist[i] or key, - group = self.group and self.group[i] or nil - } - end -end - --- 获取当前配置值(单值) -local current_key = nil -local cval = self:cfgvalue(section) -if type(cval) == "table" then - -- 若意外为table,取第一个 - for k,_ in pairs(cval) do - current_key = k - break - end -elseif type(cval) == "string" then - current_key = (cval:match("%S+")) -- 取第一个 token -end - --- 分离无组节点(ungrouped)与有组节点(grouped),并保持原有顺序 -local ungrouped = {} -local groups = {} -local group_order = {} -local current_key_added = false -for _, item in ipairs(values) do - if not current_key_added and current_key and current_key ~= "" and item.key == current_key then - current_key_added = true - end - if not item.group or item.group == "" then - table.insert(ungrouped, item) - else - local g = item.group - if not groups[g] then - groups[g] = {} - table.insert(group_order, g) - end - table.insert(groups[g], item) - end -end -if not current_key_added and current_key and current_key ~= "" then - table.insert(ungrouped, {key = current_key, label = current_key}) -end - --- 如果没有配置值,默认取第一个(优先无组第一项,否则第一组第一项) -if not current_key then - if #ungrouped > 0 then - current_key = ungrouped[1].key - else - -- 找到 group_order 第一个有节点的项 - for _, g in ipairs(group_order) do - if groups[g] and #groups[g] > 0 then - current_key = groups[g][1].key - break - end - end - end -end - --- 获取当前 label(用于主控件显示) -local function find_label_by_key(k) - if not k then return "" end - for _, v in ipairs(values) do - if v.key == k then return v.label end - end - return "" -end -local current_label = find_label_by_key(current_key) or "" - --- 打包数据给 JS -local dropdown_data = { - current_key = current_key, - current_label = current_label, - ungrouped = ungrouped, - groups = groups, - group_order = group_order, - cbid = cbid, -} -%> - - -
- - - - -
- - <%=pcdata(current_label ~= "" and current_label or current_key)%> - - -
- - -
- -<%+cbi/valuefooter%> - - diff --git a/small/luci-app-passwall/luasrc/view/passwall/cbi/nodes_value_com.htm b/small/luci-app-passwall/luasrc/view/passwall/cbi/nodes_value_com.htm deleted file mode 100644 index 41b5f8b6d9..0000000000 --- a/small/luci-app-passwall/luasrc/view/passwall/cbi/nodes_value_com.htm +++ /dev/null @@ -1,722 +0,0 @@ -<% --- Template Developers: --- - lwb1978 --- Copyright: copyright(c)2025–2027 --- Description: Passwall(2) UI template --- It is the common part of the template and cannot be used independently -%> - - - diff --git a/small/luci-app-passwall/luasrc/view/passwall/cbi/optimize_cbi_ui.htm b/small/luci-app-passwall/luasrc/view/passwall/cbi/optimize_cbi_ui.htm deleted file mode 100644 index 579d03835b..0000000000 --- a/small/luci-app-passwall/luasrc/view/passwall/cbi/optimize_cbi_ui.htm +++ /dev/null @@ -1,24 +0,0 @@ - diff --git a/small/luci-app-passwall/luasrc/view/passwall/global/backup.htm b/small/luci-app-passwall/luasrc/view/passwall/global/backup.htm deleted file mode 100644 index f92d529c93..0000000000 --- a/small/luci-app-passwall/luasrc/view/passwall/global/backup.htm +++ /dev/null @@ -1,241 +0,0 @@ -<% -local api = require "luci.passwall.api" --%> - -
-

<%:Backup and Restore%>

-
- <%:Backup or Restore Client and Server Configurations.%> -
- <%:Note: Restoring configurations across different versions may cause compatibility issues.%> -
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
- - - - - - diff --git a/small/luci-app-passwall/luasrc/view/passwall/global/faq.htm b/small/luci-app-passwall/luasrc/view/passwall/global/faq.htm deleted file mode 100644 index bb68c39ff1..0000000000 --- a/small/luci-app-passwall/luasrc/view/passwall/global/faq.htm +++ /dev/null @@ -1,66 +0,0 @@ -<% -local api = require "luci.passwall.api" --%> - -
-
-
    - <%:DNS related issues:%> -
  • 1. <%:Certain browsers such as Chrome have built-in DNS service, which may affect DNS resolution settings. You can go to 'Settings -> Privacy and security -> Use secure DNS' menu to turn it off.%>
  • -
  • 2. <%:If you are unable to access the internet after reboot, please try clearing the cache of your terminal devices (make sure to close all open browser application windows first, this step is especially important):%> -
    • <%:For Windows systems, open Command Prompt and run the command 'ipconfig /flushdns'.%>
    • -
    • <%:For Mac systems, open Terminal and run the command 'sudo killall -HUP mDNSResponder'.%>
    • -
    • <%:For mobile devices, you can clear it by reconnecting to the network, such as toggling Airplane Mode and reconnecting to WiFi.%>
    • -
    -
  • -
  • 3. <%:Please make sure your device's network settings point both the DNS server and default gateway to this router, to ensure DNS queries are properly routed.%>
  • -
-
-
-
- - diff --git a/small/luci-app-passwall/luasrc/view/passwall/global/footer.htm b/small/luci-app-passwall/luasrc/view/passwall/global/footer.htm deleted file mode 100644 index 67beab784c..0000000000 --- a/small/luci-app-passwall/luasrc/view/passwall/global/footer.htm +++ /dev/null @@ -1,194 +0,0 @@ -<% -local api = require "luci.passwall.api" --%> - - diff --git a/small/luci-app-passwall/luasrc/view/passwall/global/proxy.htm b/small/luci-app-passwall/luasrc/view/passwall/global/proxy.htm deleted file mode 100644 index 33ce38f085..0000000000 --- a/small/luci-app-passwall/luasrc/view/passwall/global/proxy.htm +++ /dev/null @@ -1,110 +0,0 @@ -
" data-index="<%=self.index%>" data-depends="<%=pcdata(self:deplist2json(section))%>"> - -
-
- - - - -
-
-
- - diff --git a/small/luci-app-passwall/luasrc/view/passwall/global/status.htm b/small/luci-app-passwall/luasrc/view/passwall/global/status.htm deleted file mode 100644 index f2915cbd9a..0000000000 --- a/small/luci-app-passwall/luasrc/view/passwall/global/status.htm +++ /dev/null @@ -1,279 +0,0 @@ -<% -local api = require "luci.passwall.api" --%> - - - -
- - <%:Running Status%> - -
-
-
-
-
- -
-
-
-

TCP
<%:NOT RUNNING%>

-
-
-
-
-
-
-
- -
-
-
-

UDP
<%:NOT RUNNING%>

-
-
-
-
-
-
-
- -
-
-
-

DNS
<%:NOT RUNNING%>

-
-
-
-
-
-
-
- -
-
-
-

<%:Load Balancing%>
<%:NOT RUNNING%>

-
-
-
-
-
-
-
- -
-
-
-

<%:Baidu Connection%>
<%:Touch Check%>

-
-
-
-
-
-
-
- -
-
-
-

<%:Google Connection%>
<%:Touch Check%>

-
-
-
-
-
-
-
- -
-
-
-

<%:GitHub Connection%>
<%:Touch Check%>

-
-
-
-
-
-
-
- -
-
-
-

<%:Instagram Connection%>
<%:Touch Check%>

-
-
-
-
- -
diff --git a/small/luci-app-passwall/luasrc/view/passwall/haproxy/js.htm b/small/luci-app-passwall/luasrc/view/passwall/haproxy/js.htm deleted file mode 100644 index 6ba2b26e26..0000000000 --- a/small/luci-app-passwall/luasrc/view/passwall/haproxy/js.htm +++ /dev/null @@ -1,202 +0,0 @@ -<% -local api = require "luci.passwall.api" --%> - - - - diff --git a/small/luci-app-passwall/luasrc/view/passwall/haproxy/status.htm b/small/luci-app-passwall/luasrc/view/passwall/haproxy/status.htm deleted file mode 100644 index 7d5e090755..0000000000 --- a/small/luci-app-passwall/luasrc/view/passwall/haproxy/status.htm +++ /dev/null @@ -1,30 +0,0 @@ -<% -local api = require "luci.passwall.api" -local haproxy_enable = api.uci_get_type("global_haproxy", "balancing_enable", "0") -local console_port = api.uci_get_type("global_haproxy", "console_port", "") --%> -

- - diff --git a/small/luci-app-passwall/luasrc/view/passwall/log/log.htm b/small/luci-app-passwall/luasrc/view/passwall/log/log.htm deleted file mode 100644 index 33208086f2..0000000000 --- a/small/luci-app-passwall/luasrc/view/passwall/log/log.htm +++ /dev/null @@ -1,45 +0,0 @@ -<% -local api = require "luci.passwall.api" --%> - -
- - -
diff --git a/small/luci-app-passwall/luasrc/view/passwall/node_list/link_add_node.htm b/small/luci-app-passwall/luasrc/view/passwall/node_list/link_add_node.htm deleted file mode 100644 index 78a31c61e7..0000000000 --- a/small/luci-app-passwall/luasrc/view/passwall/node_list/link_add_node.htm +++ /dev/null @@ -1,540 +0,0 @@ -<% -local api = require "luci.passwall.api" --%> - - - - - - - -
-
-

<%:Reassign Node Group%>

-
-
- -
-
- <%:default%> - -
- - -
-
-
-
- - -
-
-
- - - -
-
- - - - - - - - - -
-
- - diff --git a/small/luci-app-passwall/luasrc/view/passwall/node_list/link_share_man.htm b/small/luci-app-passwall/luasrc/view/passwall/node_list/link_share_man.htm deleted file mode 100644 index 7cbbe81036..0000000000 --- a/small/luci-app-passwall/luasrc/view/passwall/node_list/link_share_man.htm +++ /dev/null @@ -1,1711 +0,0 @@ -<%+cbi/valueheader%> -<% -local api = require "luci.passwall.api" -local appname = 'passwall' -local map = self.map - -local has_ss = api.is_finded("ss-redir") -local has_ss_rust = api.is_finded("sslocal") -local has_trojan_plus = api.is_finded("trojan-plus") -local has_singbox = api.finded_com("sing-box") -local has_xray = api.finded_com("xray") -local has_hysteria2 = api.finded_com("hysteria") - -local function get_core(field, candidates) - local v = map:get("@global_subscribe[0]", field) - if not v or v == "" then - for _, c in ipairs(candidates) do - if c[1] then return c[2] end - end - end - return v -end - -local ss_type = get_core("ss_type", {{has_ss,"shadowsocks-libev"},{has_ss_rust,"shadowsocks-rust"},{has_singbox,"sing-box"},{has_xray,"xray"}}) -local trojan_type = get_core("trojan_type", {{has_trojan_plus,"trojan-plus"},{has_singbox,"sing-box"},{has_xray,"xray"}}) -local vmess_type = get_core("vmess_type", {{has_xray,"xray"},{has_singbox,"sing-box"}}) -local vless_type = get_core("vless_type", {{has_xray,"xray"},{has_singbox,"sing-box"}}) -local hysteria2_type = get_core("hysteria2_type", {{has_hysteria2,"hysteria2"},{has_singbox,"sing-box"}, {has_xray,"xray"}}) --%> - - - - -<%+cbi/valuefooter%> diff --git a/small/luci-app-passwall/luasrc/view/passwall/node_list/node_list.htm b/small/luci-app-passwall/luasrc/view/passwall/node_list/node_list.htm deleted file mode 100644 index 81137cb599..0000000000 --- a/small/luci-app-passwall/luasrc/view/passwall/node_list/node_list.htm +++ /dev/null @@ -1,1051 +0,0 @@ -<% -local api = require "luci.passwall.api" --%> - - - - -<% if api.is_js_luci() then -%> - -<%- else %> - -<%- end %> - - - - - - - -
-
- - - -
-
-
<%:You choose node is:%>
-
- - - -
-
-
diff --git a/small/luci-app-passwall/luasrc/view/passwall/node_subscribe/js.htm b/small/luci-app-passwall/luasrc/view/passwall/node_subscribe/js.htm deleted file mode 100644 index cfc5101c09..0000000000 --- a/small/luci-app-passwall/luasrc/view/passwall/node_subscribe/js.htm +++ /dev/null @@ -1,263 +0,0 @@ -<% -local api = require "luci.passwall.api" --%> - - - - - diff --git a/small/luci-app-passwall/luasrc/view/passwall/rule/rule_version.htm b/small/luci-app-passwall/luasrc/view/passwall/rule/rule_version.htm deleted file mode 100644 index 4cd704890d..0000000000 --- a/small/luci-app-passwall/luasrc/view/passwall/rule/rule_version.htm +++ /dev/null @@ -1,260 +0,0 @@ -<% -local api = require "luci.passwall.api" --%> - - - - -
- -
-
- - - - - - -

-
-
-
- - diff --git a/small/luci-app-passwall/luasrc/view/passwall/rule_list/geoview.htm b/small/luci-app-passwall/luasrc/view/passwall/rule_list/geoview.htm deleted file mode 100644 index 098fae35d6..0000000000 --- a/small/luci-app-passwall/luasrc/view/passwall/rule_list/geoview.htm +++ /dev/null @@ -1,111 +0,0 @@ -<% -local api = require "luci.passwall.api" --%> - - - -
-
    - <%:Tips:%> -
  • 1. <%:By entering a domain or IP, you can query the Geo rule list they belong to.%>
  • -
  • 2. <%:By entering a GeoIP or Geosite, you can extract the domains/IPs they contain.%>
  • -
  • 3. <%:Use the GeoIP/Geosite query function to verify if the entered Geo rules are correct.%>
  • -
-
-
- -
- -
- <%:Enter a domain or IP to query the Geo rule list they belong to.%> -
-
-
-
- -
- -
- <%:Enter a GeoIP or Geosite to extract the domains/IPs they contain. Format: geoip:cn or geosite:gfw%> -
-
-
-
- -
- - diff --git a/small/luci-app-passwall/luasrc/view/passwall/rule_list/js.htm b/small/luci-app-passwall/luasrc/view/passwall/rule_list/js.htm deleted file mode 100644 index c950646ddc..0000000000 --- a/small/luci-app-passwall/luasrc/view/passwall/rule_list/js.htm +++ /dev/null @@ -1,47 +0,0 @@ -<% -local api = require "luci.passwall.api" -local translate = luci.i18n.translate -local total_lines_text = translate("Total Lines") --%> - diff --git a/small/luci-app-passwall/luasrc/view/passwall/server/log.htm b/small/luci-app-passwall/luasrc/view/passwall/server/log.htm deleted file mode 100644 index f337408802..0000000000 --- a/small/luci-app-passwall/luasrc/view/passwall/server/log.htm +++ /dev/null @@ -1,48 +0,0 @@ -<% -local api = require "luci.passwall.api" --%> - -
- - <%:Logs%> - - - -
diff --git a/small/luci-app-passwall/luasrc/view/passwall/server/users_list_status.htm b/small/luci-app-passwall/luasrc/view/passwall/server/users_list_status.htm deleted file mode 100644 index 8ba385aaf4..0000000000 --- a/small/luci-app-passwall/luasrc/view/passwall/server/users_list_status.htm +++ /dev/null @@ -1,38 +0,0 @@ -<% -local api = require "luci.passwall.api" --%> - diff --git a/small/luci-app-passwall/luasrc/view/passwall/socks_auto_switch/btn.htm b/small/luci-app-passwall/luasrc/view/passwall/socks_auto_switch/btn.htm deleted file mode 100644 index 485889d52a..0000000000 --- a/small/luci-app-passwall/luasrc/view/passwall/socks_auto_switch/btn.htm +++ /dev/null @@ -1,45 +0,0 @@ -<% -local api = require "luci.passwall.api" --%> - - - -
" data-index="<%=self.index%>" data-depends="<%=pcdata(self:deplist2json(section))%>"> - -
- - -
-
diff --git a/small/luci-app-passwall/po/zh-cn/passwall.po b/small/luci-app-passwall/po/zh-cn/passwall.po deleted file mode 100644 index e93010bf6f..0000000000 --- a/small/luci-app-passwall/po/zh-cn/passwall.po +++ /dev/null @@ -1,2045 +0,0 @@ -msgid "Pass Wall" -msgstr "PassWall" - -msgid "Auto" -msgstr "自动" - -msgid "RUNNING" -msgstr "运行中" - -msgid "NOT RUNNING" -msgstr "未运行" - -msgid "Working..." -msgstr "连接正常" - -msgid "Problem detected!" -msgstr "连接失败" - -msgid "Touch Check" -msgstr "点我检测" - -msgid "TLS handshake test, latency for reference only" -msgstr "TLS握手测试,延时仅供参考" - -msgid "Kernel Unsupported" -msgstr "内核不支持" - -msgid "Settings" -msgstr "设置" - -msgid "Main Settings" -msgstr "节点选择" - -msgid "Basic Settings" -msgstr "基本设置" - -msgid "Node List" -msgstr "节点列表" - -msgid "Other Settings" -msgstr "高级设置" - -msgid "Load Balancing" -msgstr "负载均衡" - -msgid "Enter interface" -msgstr "进入界面" - -msgid "Rule Manage" -msgstr "规则管理" - -msgid "Rule List" -msgstr "规则列表" - -msgid "Access control" -msgstr "访问控制" - -msgid "Watch Logs" -msgstr "查看日志" - -msgid "Node Config" -msgstr "节点配置" - -msgid "Running Status" -msgstr "运行状态" - -msgid "Baidu Connection" -msgstr "百度连接" - -msgid "Google Connection" -msgstr "谷歌连接" - -msgid "GitHub Connection" -msgstr "GitHub 连接" - -msgid "Instagram Connection" -msgstr "Instagram 连接" - -msgid "Node Check" -msgstr "节点检测" - -msgid "Check..." -msgstr "检测中..." - -msgid "Clear" -msgstr "清除" - -msgid "Main switch" -msgstr "主开关" - -msgid "TCP Node" -msgstr "TCP 节点" - -msgid "UDP Node" -msgstr "UDP 节点" - -msgid "Edit Current Node" -msgstr "编辑当前节点" - -msgid "Socks Config" -msgstr "Socks 配置" - -msgid "Socks Node" -msgstr "Socks 节点" - -msgid "Current Node" -msgstr "当前节点" - -msgid "Listen Port" -msgstr "监听端口" - -msgid "0 is not use" -msgstr "0 为不使用" - -msgid "Same as the tcp node" -msgstr "与 TCP 节点相同" - -msgid "Current node: %s" -msgstr "当前节点:%s" - -msgid "DNS Shunt" -msgstr "DNS分流" - -msgid "Domestic group name" -msgstr "国内分组名" - -msgid "You only need to configure domestic DNS packets in SmartDNS, and fill in the domestic DNS group name here." -msgstr "您只需要在SmartDNS配置好国内DNS分组,并在此处填入国内DNS分组名。" - -msgid "Filter Mode" -msgstr "过滤模式" - -msgid "A/AAAA type" -msgstr "A/AAAA 类型" - -msgid "TCP node must be '%s' type to use FakeDNS." -msgstr "TCP 节点必须是 '%s' 类型才能使用 FakeDNS。" - -msgid "Direct DNS" -msgstr "直连 DNS" - -msgid "Remote DNS" -msgstr "远程 DNS" - -msgid "Resolver For The List Proxied" -msgstr "解析被代理的域名列表" - -msgid "Requery DNS By %s" -msgstr "通过 %s 请求 DNS" - -msgid "Socks Server" -msgstr "Socks 服务器" - -msgid "Misconfigured" -msgstr "配置不当" - -msgid "Make sure socks service is available on this address." -msgstr "请确保此 Socks 服务可用。" - -msgid "%s request address" -msgstr "%s 请求地址" - -msgid "Format must be:" -msgstr "格式必须为:" - -msgid "Request protocol" -msgstr "请求协议" - -msgid "Remote DNS DoH" -msgstr "远程 DNS DoH" - -msgid "Notify the DNS server when the DNS query is notified, the location of the client (cannot be a private IP address)." -msgstr "用于 DNS 查询时通知 DNS 服务器,客户端所在的地理位置(不能是私有 IP 地址)。" - -msgid "This feature requires the DNS server to support the Edns Client Subnet (RFC7871)." -msgstr "此功能需要 DNS 服务器支持 EDNS Client Subnet(RFC7871)。" - -msgid "The effect is better, recommend." -msgstr "效果更好,推荐使用。" - -msgid "ChinaDNS-NG (recommended)" -msgstr "ChinaDNS-NG (推荐)" - -msgid "Default DNS" -msgstr "默认 DNS" - -msgid "When not matching any domain name list:" -msgstr "当不匹配任何域名列表时:" - -msgid "Remote DNS: Can avoid more DNS leaks, but some domestic domain names maybe to proxy!" -msgstr "远程 DNS:可以避免更多的 DNS 泄露,但会导致规则列表外的某些国内域名可能会走代理!" - -msgid "Direct DNS: Internet experience may be better, but DNS will be leaked!" -msgstr "直连 DNS:上网体验可能会更佳,但是会泄露 DNS!" - -msgid "Smart, Do not accept no-ip reply from Direct DNS" -msgstr "智能,不接受直连 DNS 空响应" - -msgid "Smart, Accept no-ip reply from Direct DNS" -msgstr "智能,接受直连 DNS 空响应" - -msgid "Smart: Forward to both direct and remote DNS, if the direct DNS resolution result is a mainland China IP, then use the direct result, otherwise use the remote result." -msgstr "智能:同时转发给直连和远程 DNS,如果直连 DNS 解析结果是大陆 IP,则使用直连结果,否则使用远程结果。" - -msgid "In smart mode, no-ip reply from Direct DNS:" -msgstr "使用智能模式,直连 DNS 返回空响应时:" - -msgid "Do not accept: Wait and use Remote DNS Reply." -msgstr "不接受:等待并使用远程 DNS 的响应。" - -msgid "Accept: Trust the Reply, using this option can improve DNS resolution speeds for some mainland IPv4-only sites." -msgstr "接受:信任空响应,使用此选项可以提升部分大陆仅 IPv4 站点的 DNS 解析速度。" - -msgid "Filter Proxy Host IPv6" -msgstr "过滤代理域名 IPv6" - -msgid "Experimental feature." -msgstr "实验性功能。" - -msgid "Use FakeDNS work in the shunt domain that proxy." -msgstr "需要代理的分流规则域名使用 FakeDNS。" - -msgid "Redirect" -msgstr "重定向" - -msgid "DNS Redirect" -msgstr "DNS 重定向" - -msgid "Force special DNS server to need proxy devices." -msgstr "强制需要代理的设备使用专用 DNS 服务器。" - -msgid "Clear IPSET on Reboot" -msgstr "重启清空 IPSET" - -msgid "Clear NFTSET on Reboot" -msgstr "重启清空 NFTSET" - -msgid "Clear IPSET/NFTSET on service reboot. This may increase reboot time." -msgstr "重启服务时清空 IPSET/NFTSET,可能会延长重启时间。" - -msgid "Clear IPSET" -msgstr "清空 IPSET" - -msgid "Clear NFTSET" -msgstr "清空 NFTSET" - -msgid "Try this feature if the rule modification does not take effect." -msgstr "如果修改规则后没有生效,请尝试此功能。" - -msgid "Force HTTPS SOA" -msgstr "停用 HTTPS 记录解析" - -msgid "Force queries with qtype 65 to respond with an SOA record." -msgstr "强制使 qtype 65 查询返回 SOA。" - -msgid "Are you sure to hide?" -msgstr "你确定要隐藏吗?" - -msgid "DNS related issues:" -msgstr "DNS 相关问题:" - -msgid "Certain browsers such as Chrome have built-in DNS service, which may affect DNS resolution settings. You can go to 'Settings -> Privacy and security -> Use secure DNS' menu to turn it off." -msgstr "某些浏览器如 Chrome 等内置此功能,这会影响设置的 DNS 解析。您可以进入 '设置->私隐和安全->使用安全 DNS' 菜单,将其关闭。" - -msgid "If you are unable to access the internet after reboot, please try clearing the cache of your terminal devices (make sure to close all open browser application windows first, this step is especially important):" -msgstr "如果在重启后无法上网,请尝试清除终端设备的缓存(先关闭所有正在使用的浏览器应用程序,这一步尤其重要):" - -msgid "For Windows systems, open Command Prompt and run the command 'ipconfig /flushdns'." -msgstr "对于Windows系统,请在命令提示符中运行命令 'ipconfig /flushdns'." - -msgid "For Mac systems, open Terminal and run the command 'sudo killall -HUP mDNSResponder'." -msgstr "对于Mac系统,在终端中运行命令 'sudo killall -HUP mDNSResponder'." - -msgid "For mobile devices, you can clear it by reconnecting to the network, such as toggling Airplane Mode and reconnecting to WiFi." -msgstr "对于移动设备,可通过重新接入网络的方式清除。比如开关一次飞行模式,重新连接 WiFi。" - -msgid "Please make sure your device's network settings point both the DNS server and default gateway to this router, to ensure DNS queries are properly routed." -msgstr "请确认您设备的网络设置,客户端 DNS 服务器和默认网关应均指向本路由器,以确保 DNS 查询正确路由。" - -msgid "Browser access:" -msgstr "浏览器访问:" - -msgid "Hide in main menu:" -msgstr "在主菜单中隐藏:" - -msgid "Show in main menu:" -msgstr "在主菜单中显示:" - -msgid "DNS Export Of Multi WAN" -msgstr "国内 DNS 指定解析出口" - -msgid "Node Export Of Multi WAN" -msgstr "节点指定出口" - -msgid "Only support Multi Wan." -msgstr "只有多线接入才有效。" - -msgid "Not Specify" -msgstr "不指定" - -msgid "custom" -msgstr "自定义" - -msgid "Process" -msgstr "进程" - -msgid "1 Process" -msgstr "单进程" - -msgid "Use %s" -msgstr "使用 %s" - -msgid "Close(Not use)" -msgstr "关闭(不使用)" - -msgid "Proxy Mode" -msgstr "代理模式" - -msgid "Default Proxy Mode" -msgstr "默认代理模式" - -msgid "No Proxy" -msgstr "不代理" - -msgid "Proxy" -msgstr "代理" - -msgid "Global Proxy" -msgstr "全局代理" - -msgid "GFW List" -msgstr "GFW 列表" - -msgid "Not China List" -msgstr "中国列表以外" - -msgid "China List" -msgstr "中国列表" - -msgid "Localhost" -msgstr "本机" - -msgid "Switch Mode" -msgstr "切换模式" - -msgid "Localhost Proxy" -msgstr "路由器本机代理" - -msgid "When selected, localhost can transparent proxy." -msgstr "当勾选时,路由器本机可以透明代理。" - -msgid "Client Proxy" -msgstr "客户端代理" - -msgid "When selected, devices in LAN can transparent proxy. Otherwise, it will not be proxy. But you can still use access control to allow the designated device to proxy." -msgstr "当勾选时,局域网内的设备可以透明代理。否则,将不代理。但您仍然可以使用访问控制允许指定的设备代理。" - -msgid "Missing components, transparent proxy is unavailable." -msgstr "缺少组件,透明代理不可用。" - -msgid "Want different devices to use different proxy modes/ports/nodes? Please use access control." -msgstr "希望不同设备使用不同的代理模式/端口/节点?请使用访问控制。" - -msgid "Operation" -msgstr "操作" - -msgid "Add Node" -msgstr "添加节点" - -msgid "Add the node via the link" -msgstr "通过链接添加节点" - -msgid "Enter share links, one per line. Subscription links are not supported!" -msgstr "输入分享链接,支持多个节点,每行一个。请勿输入订阅链接!" - -msgid "Please enter the correct link." -msgstr "请输入正确的链接。" - -msgid "Clear all nodes" -msgstr "清空所有节点" - -msgid "Are you sure to clear all nodes?" -msgstr "你确定要清空所有节点吗?" - -msgid "Error" -msgstr "错误" - -msgid "Delete select nodes" -msgstr "删除选择的节点" - -msgid "To Top" -msgstr "置顶" - -msgid "Select" -msgstr "选择" - -msgid "Selected:" -msgstr "已选:" - -msgid "DeSelect" -msgstr "反选" - -msgid "Select all" -msgstr "全选" - -msgid "DeSelect all" -msgstr "全不选" - -msgid "Are you sure to delete select nodes?" -msgstr "你确定要删除选择的节点吗?" - -msgid "You no select nodes !" -msgstr "你没有选择任何节点!" - -msgid "Are you sure set to" -msgstr "你确定要设为" - -msgid "the server?" -msgstr "服务器吗?" - -msgid "You choose node is:" -msgstr "你选择的节点是:" - -msgid "Timeout" -msgstr "超时" - -msgid "Node Remarks" -msgstr "节点备注" - -msgid "Add Mode" -msgstr "添加方式" - -msgid "Save Order" -msgstr "保存当前顺序" - -msgid "Saved current page order successfully." -msgstr "保存当前页面顺序成功。" - -msgid "Drag to reorder" -msgstr "拖动以重排" - -msgid "Type" -msgstr "类型" - -msgid "_balancing" -msgstr "负载均衡" - -msgid "_shunt" -msgstr "分流" - -msgid "_iface" -msgstr "接口" - -msgid "Balancing" -msgstr "负载均衡" - -msgid "Balancing Strategy" -msgstr "负载均衡策略" - -msgid "Fallback Node" -msgstr "后备节点" - -msgid "Use Custom Probe URL" -msgstr "使用自定义探测网址" - -msgid "By default the built-in probe URL will be used, enable this option to use a custom probe URL." -msgstr "默认使用内置的探测网址,启用此选项以使用自定义探测网址。" - -msgid "Probe URL" -msgstr "探测网址" - -msgid "The URL used to detect the connection status." -msgstr "用于检测连接状态的网址。" - -msgid "Probe Interval" -msgstr "探测间隔" - -msgid "The interval between initiating probes." -msgstr "发起探测的间隔。" - -msgid "The time format is numbers + units, such as '10s', '2h45m', and the supported time units are s, m, h, which correspond to seconds, minutes, and hours, respectively." -msgstr "时间格式为数字+单位,比如"10s", "2h45m",支持的时间单位有 smh,分别对应秒、分、时。" - -msgid "When the unit is not filled in, it defaults to seconds." -msgstr "未填写单位时,默认为秒。" - -msgid "Preferred Node Count" -msgstr "优选节点数量" - -msgid "The load balancer selects the optimal number of nodes, and traffic is randomly distributed among them." -msgstr "负载均衡器选出最优节点的个数,流量将在这几个节点中随机分配。" - -msgid "Shunt" -msgstr "分流" - -msgid "Preproxy" -msgstr "前置代理" - -msgid "Preproxy Node" -msgstr "前置代理节点" - -msgid "Set the node to be used as a pre-proxy. Each rule (including Default) has a separate switch that controls whether this rule uses the pre-proxy or not." -msgstr "设置用作前置代理的节点。每条规则(包括默认)都有独立开关控制本规则是否使用前置代理。" - -msgid "Direct Connection" -msgstr "直连" - -msgid "Blackhole" -msgstr "黑洞" - -msgid "Default Preproxy" -msgstr "默认前置代理" - -msgid "There are no available nodes, please add or subscribe nodes first." -msgstr "没有可用节点,请先添加或订阅节点。" - -msgid "No shunt rules? Click me to go to add." -msgstr "没有分流规则?点我前往去添加。" - -msgid "When using, localhost will connect this node first and then use this node to connect the default node." -msgstr "当使用时,本机将首先连接到此节点,然后再使用此节点连接到默认节点落地。" - -msgid "Domain Strategy" -msgstr "域名解析策略" - -msgid "Domain matcher" -msgstr "域名匹配算法" - -msgid "'AsIs': Only use domain for routing. Default value." -msgstr "AsIs:只使用域名进行路由选择。默认值。" - -msgid "'IPIfNonMatch': When no rule matches current domain, resolves it into IP addresses (A or AAAA records) and try all rules again." -msgstr "IPIfNonMatch:当域名没有匹配任何规则时,将域名解析成 IP(A 记录或 AAAA 记录)再次进行匹配。" - -msgid "'IPOnDemand': As long as there is a IP-based rule, resolves the domain into IP immediately." -msgstr "IPOnDemand:当匹配时碰到任何基于 IP 的规则,将域名立即解析为 IP 进行匹配。" - -msgid "Prefer IPv4" -msgstr "IPv4 优先" - -msgid "Prefer IPv6" -msgstr "IPv6 优先" - -msgid "IPv4 Only" -msgstr "仅 IPv4" - -msgid "IPv6 Only" -msgstr "仅 IPv6" - -msgid "Load balancing node list" -msgstr "负载均衡节点列表" - -msgid "Load balancing node list, document" -msgstr "负载均衡节点列表,文档原理" - -msgid "From Share URL" -msgstr "导入分享URL" - -msgid "Build Share URL" -msgstr "导出分享URL" - -msgid "Generate QRCode" -msgstr "生成二维码" - -msgid "Export Config File" -msgstr "导出配置文件" - -msgid "Import Finished" -msgstr "导入完成:" - -msgid "Not a supported scheme:" -msgstr "不支持这种样式的:" - -msgid "Invalid Share URL Format" -msgstr "无效的分享URL信息" - -msgid "Paste Share URL Here" -msgstr "在此处粘贴分享信息" - -msgid "Share URL to clipboard unable." -msgstr "无法分享URL到剪贴板。" - -msgid "Share URL to clipboard successfully." -msgstr "成功复制分享URL到剪贴板。" - -msgid "Faltal on get option, please help in debug:" -msgstr "代码错误,请协助捉虫:" - -msgid "Faltal on set option, please help in debug:" -msgstr "代码错误,请协助捉虫:" - -msgid "Address" -msgstr "地址" - -msgid "Address (Support Domain Name)" -msgstr "地址(支持域名)" - -msgid "Trojan Verify Cert" -msgstr "验证证书" - -msgid "Trojan Cert Path" -msgstr "证书路径" - -msgid "Finger Print" -msgstr "指纹伪造" - -msgid "Avoid using randomized, unless you have to." -msgstr "避免使用 randomized , 除非你必须要。" - -msgid "Original" -msgstr "原版" - -msgid "Transport Plugin" -msgstr "传输层插件" - -msgid "Shadowsocks secondary encryption" -msgstr "Shadowsocks 二次加密" - -msgid "Obfs Type" -msgstr "混淆类型" - -msgid "Obfs Password" -msgstr "混淆密码" - -msgid "Auth Type" -msgstr "认证类型" - -msgid "Auth Password" -msgstr "认证密码" - -msgid "Commands the client to use the BBR flow control algorithm" -msgstr "命令客户端使用 BBR 流量控制算法" - -msgid "PinSHA256" -msgstr "PinSHA256" - -msgid "Certificate fingerprint" -msgstr "证书指纹" - -msgid "Max upload Mbps" -msgstr "最大上行(Mbps)" - -msgid "Max download Mbps" -msgstr "最大下行(Mbps)" - -msgid "QUIC stream receive window" -msgstr "QUIC 流接收窗口" - -msgid "QUIC connection receive window" -msgstr "QUIC 连接接收窗口" - -msgid "QUIC concurrent bidirectional streams" -msgstr "QUIC 并发双向流的最大数量" - -msgid "Disable MTU detection" -msgstr "禁用 MTU 检测" - -msgid "ignoreClientBandwidth" -msgstr "忽略客户端带宽设置" - -msgid "Lazy Start" -msgstr "延迟启动" - -msgid "Encrypt Method" -msgstr "加密方式" - -msgid "Encrypt Key" -msgstr "加密密钥" - -msgid "Latency" -msgstr "延迟" - -msgid "Automatic detection delay" -msgstr "自动检测延迟" - -msgid "Show server address and port" -msgstr "显示服务器地址和端口" - -msgid "URL Test Address" -msgstr "URL 测试地址" - -msgid "URL Test" -msgstr "URL 测试" - -msgid "Test" -msgstr "测试" - -msgid "Node num" -msgstr "节点数量" - -msgid "Self add" -msgstr "自添" - -msgid "Apply" -msgstr "应用" - -msgid "Use" -msgstr "使用" - -msgid "Copy" -msgstr "复制" - -msgid "Delay Settings" -msgstr "定时配置" - -msgid "Open and close Daemon" -msgstr "启动守护进程" - -msgid "Delay Start" -msgstr "开机时延时启动" - -msgid "Units:seconds" -msgstr "单位:秒" - -msgid "Units:minutes" -msgstr "单位:分钟" - -msgid "stop automatically mode" -msgstr "定时关闭模式" - -msgid "stop Time(Every day)" -msgstr "关闭时间(每天)" - -msgid "stop Interval(Hour)" -msgstr "关闭间隔(小时)" - -msgid "start automatically mode" -msgstr "定时开启模式" - -msgid "start Time(Every day)" -msgstr "开启时间(每天)" - -msgid "start Interval(Hour)" -msgstr "开启间隔(小时)" - -msgid "restart automatically mode" -msgstr "定时重启模式" - -msgid "restart Time(Every day)" -msgstr "重启时间(每天)" - -msgid "restart Interval(Hour)" -msgstr "重启间隔(小时)" - -msgid "Forwarding Settings" -msgstr "转发配置" - -msgid "TCP No Redir Ports" -msgstr "TCP 不转发端口" - -msgid "UDP No Redir Ports" -msgstr "UDP 不转发端口" - -msgid "Fill in the ports you don't want to be forwarded by the agent, with the highest priority." -msgstr "填写你不希望被代理转发的端口,优先级最高。" - -msgid "The port settings support single ports and ranges.
Separate multiple ports with commas (,).
Example: 21,80,443,1000:2000." -msgstr "以上端口设置支持单端口和端口范围。
多个端口用英文逗号(,)隔开。
例:21,80,443,1000:2000。" - -msgid "TCP Proxy Drop Ports" -msgstr "TCP 转发屏蔽端口" - -msgid "UDP Proxy Drop Ports" -msgstr "UDP 转发屏蔽端口" - -msgid "TCP Redir Ports" -msgstr "TCP 转发端口" - -msgid "UDP Redir Ports" -msgstr "UDP 转发端口" - -msgid "No patterns are used" -msgstr "不使用" - -msgid "All" -msgstr "所有" - -msgid "Common Use" -msgstr "常用的" - -msgid "Only Web" -msgstr "仅网页" - -msgid "default" -msgstr "默认" - -msgid "Default" -msgstr "默认" - -msgid "Close" -msgstr "关闭" - -msgid "Hijacking ICMP (PING)" -msgstr "劫持ICMP (PING)" - -msgid "Hijacking ICMPv6 (IPv6 PING)" -msgstr "劫持ICMPv6 (IPv6 PING)" - -msgid "Sniffing" -msgstr "流量嗅探" - -msgid "TCP Proxy Way" -msgstr "TCP 代理方式" - -msgid "Proxy Settings" -msgstr "代理配置" - -msgid "Auto Switch" -msgstr "自动切换" - -msgid "How often to test" -msgstr "多久检测一次" - -msgid "Timeout seconds" -msgstr "超时秒数" - -msgid "Timeout retry num" -msgstr "超时重试次数" - -msgid "Main node" -msgstr "主节点" - -msgid "List of backup nodes" -msgstr "备用节点的列表" - -msgid "Restore Switch" -msgstr "恢复切换" - -msgid "When detects main node is available, switch back to the main node." -msgstr "当检测到主节点可用时,切换回主节点。" - -msgid "If the main node is V2ray/Xray shunt" -msgstr "如果主节点是 V2ray/Xray 分流" - -msgid "Switch it" -msgstr "切掉它" - -msgid "Applying to the default node" -msgstr "应用于默认节点" - -msgid "Applying to the preproxy node" -msgstr "应用于前置代理节点" - -msgid "Add nodes to the standby node list by keywords" -msgstr "通过关键字添加节点到备用节点列表" - -msgid "Delete nodes in the standby node list by keywords" -msgstr "通过关键字删除备用节点列表的节点" - -msgid "Please enter the node keyword, pay attention to distinguish between spaces, uppercase and lowercase." -msgstr "请输入节点关键字,注意区分空格、大写和小写。" - -msgid "Configure this node with 127.0.0.1: this port" -msgstr "使用 127.0.0.1 和此端口配置节点" - -msgid "Enable Load Balancing" -msgstr "开启负载均衡" - -msgid "Console Login Auth" -msgstr "控制台登录认证" - -msgid "Console Username" -msgstr "控制台账号" - -msgid "Console Password" -msgstr "控制台密码" - -msgid "Console Port" -msgstr "控制台端口" - -msgid "In the browser input routing IP plus port access, such as:192.168.1.1:1188" -msgstr "在浏览器输入路由IP加端口访问,如:192.168.1.1:1188" - -msgid "Haproxy Port" -msgstr "负载均衡端口" - -msgid "Health Check Type" -msgstr "健康检查类型" - -msgid "Inner implement" -msgstr "内置实现" - -msgid "Health Check Inter" -msgstr "健康检查节点间隔时间" - -msgid "When the URL test is used, the load balancing node will be converted into a Socks node. when node list set customizing, must be a Socks node, otherwise the health check will be invalid." -msgstr "当使用 URL 测试时,负载均衡节点将转换成 Socks 节点。下面的节点列表自定义时必须为 Socks 节点,否则健康检查将无效。" - -msgid "Add a node, Export Of Multi WAN Only support Multi Wan. Load specific gravity range 1-256. Multiple primary servers can be load balanced, standby will only be enabled when the primary server is offline! Multiple groups can be set, Haproxy port same one for each group." -msgstr "添加节点,指定出口功能是为多 WAN 用户准备的。负载比重范围 1-256。多个主服务器可以负载均衡,备用只有在主服务器离线时才会启用!可以设置多个组,负载均衡端口相同则为一组。" - -msgid "Note that the node configuration parameters for load balancing must be consistent when use TCP health check type, otherwise it cannot be used normally!" -msgstr "注意,当使用 TCP 健康检查时负载均衡的节点配置参数必须一致,否则无法正常使用!" - -msgid "Node" -msgstr "节点" - -msgid "Node Address" -msgstr "节点地址" - -msgid "Node address cannot be empty." -msgstr "节点地址不能为空。" - -msgid "Node Port" -msgstr "节点端口" - -msgid "Node Weight" -msgstr "负载比重" - -msgid "Export Of Multi WAN" -msgstr "多 WAN 指定出口" - -msgid "Main" -msgstr "主要" - -msgid "Mode" -msgstr "模式" - -msgid "Primary" -msgstr "主要" - -msgid "Standby" -msgstr "备用" - -msgid "Check update" -msgstr "检查更新" - -msgid "Force update" -msgstr "强制更新" - -msgid "Manually update" -msgstr "手动更新" - -msgid "Update Options" -msgstr "更新选项" - -msgid "The latest version: %s, currently does not support automatic update, if you need to update, please compile or download the ipk and then manually install." -msgstr "最新版本:%s,目前暂不支持自动更新,如需更新,请自行编译或下载 ipk 然后手动安装。" - -msgid "Enable custom URL" -msgstr "启用自定义规则地址" - -msgid "GFW domains(gfwlist) Update URL" -msgstr "防火墙域名列表(gfwlist)更新URL" - -msgid "China IPs(chnroute) Update URL" -msgstr "中国IP段(chnroute)更新URL" - -msgid "China IPv6s(chnroute6) Update URL" -msgstr "中国IPv6段(chnroute6)更新URL" - -msgid "China List(Chnlist) Update URL" -msgstr "中国域名列表(Chnlist)更新URL" - -msgid "Rule status" -msgstr "规则版本" - -msgid "Enable auto update rules" -msgstr "开启自动更新规则" - -msgid "Update Time(every day)" -msgstr "更新时间(每天)" - -msgid "Update Interval(hour)" -msgstr "更新间隔(小时)" - -msgid "Update Mode" -msgstr "更新模式" - -msgid "Loop Mode" -msgstr "循环" - -msgid "Every day" -msgstr "每天" - -msgid "Every Monday" -msgstr "每周一" - -msgid "Every Tuesday" -msgstr "每周二" - -msgid "Every Wednesday" -msgstr "每周三" - -msgid "Every Thursday" -msgstr "每周四" - -msgid "Every Friday" -msgstr "每周五" - -msgid "Every Saturday" -msgstr "每周六" - -msgid "Every Sunday" -msgstr "每周日" - -msgid "hour" -msgstr "小时" - -msgid "Hour" -msgstr "小时" - -msgid "GeoIP Update URL" -msgstr "GeoIP 更新URL" - -msgid "Geosite Update URL" -msgstr "Geosite 更新URL" - -msgid "Location of Geo rule files" -msgstr "Geo 规则文件目录" - -msgid "This variable specifies a directory where geoip.dat and geosite.dat files are." -msgstr "此变量指定 geoip.dat 和 geosite.dat 文件所在的目录。" - -msgid "Generate Rule List from Geo" -msgstr "从 Geo 文件生成规则" - -msgid "Generate rule lists such as GFW, China domains, and China IP ranges based on Geo files." -msgstr "根据 Geo 文件生成规则列表,包括 GFW、中国域名和中国 IP 段等。" - -msgid "When manually updating with this option enabled, rules will be regenerated from existing Geo files even if no new version is available." -msgstr "启用此选项后手动更新时,即使没有新版本也会从现有 Geo 文件重新生成规则。" - -msgid "Enable Geo Data Parsing" -msgstr "开启 Geo 数据解析" - -msgid "Analyzes and preloads GeoIP/Geosite data to enhance the shunt performance of Sing-box/Xray." -msgstr "分析和预加载 GeoIP/Geosite 数据,以增强 Sing-box/Xray 的分流效果。" - -msgid "Once enabled, the rule list can support GeoIP/Geosite rules." -msgstr "启用后,规则列表可以支持 GeoIP/Geosite 规则。" - -msgid "Note: Increases resource usage; Geosite analysis is only supported in ChinaDNS-NG and SmartDNS modes." -msgstr "注:会增加一些系统资源的开销,仅在 ChinaDNS-NG 和 SmartDNS 模式下支持分析 Geosite 。" - -msgid "Shunt Rule" -msgstr "分流规则" - -msgid "Please note attention to the priority, the higher the order, the higher the priority." -msgstr "请注意优先级问题,排序越上面优先级越高。" - -msgid "Update..." -msgstr "更新中" - -msgid "It is the latest version" -msgstr "已是最新版本" - -msgid "Update successful" -msgstr "更新成功" - -msgid "Click to update" -msgstr "点击更新" - -msgid "Updating..." -msgstr "更新中" - -msgid "Retry" -msgstr "重试" - -msgid "Unexpected error" -msgstr "意外错误" - -msgid "Updating, are you sure to close?" -msgstr "正在更新,你确认要关闭吗?" - -msgid "Downloading..." -msgstr "下载中" - -msgid "Unpacking..." -msgstr "解压中" - -msgid "Moving..." -msgstr "移动中" - -msgid "App Update" -msgstr "组件更新" - -msgid "Please confirm that your firmware supports FPU." -msgstr "请确认你的固件支持 FPU。" - -msgid "if you want to run from memory, change the path, /tmp beginning then save the application and update it manually." -msgstr "如果你希望从内存中运行,请更改路径,/tmp 开头,然后保存应用后,再手动更新。" - -msgid "Make sure there is enough space to install %s" -msgstr "确保有足够的空间安装 %s" - -msgid "App Path" -msgstr "程序路径" - -msgid "%s App Path" -msgstr "%s 程序路径" - -msgid "%s Client App Path" -msgstr "%s 客户端程序路径" - -msgid "alternate API URL for version checking" -msgstr "用于版本检查的 API URL" - -msgid "Node Subscribe" -msgstr "节点订阅" - -msgid "Subscribe Remark" -msgstr "订阅备注(机场)" - -msgid "Subscribe Info" -msgstr "订阅信息" - -msgid "Subscribe URL" -msgstr "订阅网址" - -msgid "Subscribe URL Access Method" -msgstr "订阅网址访问方式" - -msgid "When adding a new subscription, please save and apply before manually subscribing. If you only change the subscription URL, you can subscribe manually, and the system will save it automatically." -msgstr "新增订阅请先保存并应用后再手动订阅;如仅修改订阅地址,可直接手动订阅,系统将自动保存。" - -msgid "Please save and apply before manually subscribing." -msgstr "请先保存并应用后再手动订阅。" - -msgid "Subscribe URL cannot be empty." -msgstr "订阅网址不能为空。" - -msgid "Subscribe via proxy" -msgstr "通过代理订阅" - -msgid "Enable auto update subscribe" -msgstr "开启自动更新订阅" - -msgid "Manual subscription" -msgstr "手动订阅" - -msgid "Delete All Subscribe Node" -msgstr "删除所有订阅节点" - -msgid "Delete the subscribed node" -msgstr "删除已订阅的节点" - -msgid "Are you sure you want to delete all subscribed nodes?" -msgstr "您确定要删除所有已订阅的节点吗?" - -msgid "Manual subscription All" -msgstr "手动订阅全部链接" - -msgid "This remark already exists, please change a new remark." -msgstr "此备注已存在,请改一个新的备注。" - -msgid "Remark cannot be empty." -msgstr "备注不能为空。" - -msgid "URL cannot be empty." -msgstr "网址不能为空。" - -msgid "Filter keyword Mode" -msgstr "过滤关键字模式" - -msgid "Discard List" -msgstr "丢弃列表" - -msgid "Keep List" -msgstr "保留列表" - -msgid "Discard List,But Keep List First" -msgstr "丢弃列表,但保留列表优先" - -msgid "Keep List,But Discard List First" -msgstr "保留列表,但丢弃列表优先" - -msgid "Use global config" -msgstr "使用全局配置" - -msgid "User-Agent" -msgstr "用户代理(User-Agent)" - -msgid "Add" -msgstr "添加" - -msgid "ACLs" -msgstr "访问控制" - -msgid "ACLs is a tools which used to designate specific IP proxy mode." -msgstr "访问控制列表是用于指定特殊 IP 代理模式的工具。" - -msgid "Example:" -msgstr "例:" - -msgid "IP range" -msgstr "IP 范围" - -msgid "Source Interface" -msgstr "源接口" - -msgid "Use Interface With ACLs" -msgstr "使用接口控制" - -msgid "Remarks" -msgstr "备注" - -msgid "Direct List" -msgstr "直连列表" - -msgid "Proxy List" -msgstr "代理列表" - -msgid "Block List" -msgstr "屏蔽列表" - -msgid "Lan IP List" -msgstr "局域网 IP 列表" - -msgid "Route Hosts" -msgstr "路由 Hosts 文件" - -msgid "Join the direct hosts list of domain names will not proxy." -msgstr "加入的域名不走代理,对所有模式有效。且优先级最高。" - -msgid "These had been joined ip addresses will not proxy. Please input the ip address or ip address segment,every line can input only one ip address. For example: 192.168.0.0/24 or 223.5.5.5." -msgstr "加入的 IP 段不走代理,对所有模式有效。且优先级最高。可输入 IP 地址或地址段,如:192.168.0.0/24 或 223.5.5.5,每个地址段一行。" - -msgid "These had been joined websites will use proxy. Please input the domain names of websites, every line can input only one website domain. For example: google.com." -msgstr "加入的域名将走代理。输入网站域名,如:google.com,每个地址段一行。" - -msgid "These had been joined ip addresses will use proxy. Please input the ip address or ip address segment, every line can input only one ip address. For example: 35.24.0.0/24 or 8.8.4.4." -msgstr "加入的 IP 段将走代理。可输入 IP 地址或地址段,如:35.24.0.0/24 或 8.8.4.4,每个地址段一行。" - -msgid "These had been joined websites will be block. Please input the domain names of websites, every line can input only one website domain. For example: twitter.com." -msgstr "加入的域名将屏蔽。输入网站域名,如:twitter.com,每个地址段一行。" - -msgid "The list is the IPv4 LAN IP list, which represents the direct connection IP of the LAN. If you need the LAN IP in the proxy list, please clear it from the list. Do not modify this list by default." -msgstr "列表中为 IPv4 的局域网 IP 列表,代表局域网直连 IP。如果需要代理列表中的局域网 IP,请将其在该列表中清除,并将其添加到代理列表中。默认情况下不要修改这个列表。" - -msgid "The list is the IPv6 LAN IP list, which represents the direct connection IP of the LAN. If you need the LAN IP in the proxy list, please clear it from the list. Do not modify this list by default." -msgstr "列表中为 IPv6 的局域网 IP 列表,代表局域网直连 IP。如果需要代理列表中的局域网 IP,请将其在该列表中清除,并将其添加到代理列表中。默认情况下不要修改这个列表。" - -msgid "Configure routing etc/hosts file, if you don't know what you are doing, please don't change the content." -msgstr "配置路由 etc/hosts 文件,如果你不知道自己在做什么,请不要改动内容。" - -msgid "These had been joined ip addresses will be block. Please input the ip address or ip address segment, every line can input only one ip address." -msgstr "加入的 IP 段将屏蔽。可输入 IP 地址或地址段,每个地址段一行。" - -msgid "Inbound Tag" -msgstr "入站标签" - -msgid "Transparent proxy" -msgstr "透明代理" - -msgid "Not valid domain name, please re-enter!" -msgstr "不是有效域名,请重新输入!" - -msgid "Not valid IP format, please re-enter!" -msgstr "不是有效 IP 格式,请重新输入!" - -msgid "Not valid IPv4 format, please re-enter!" -msgstr "不是有效 IPv4 格式,请重新输入!" - -msgid "Not valid IPv6 format, please re-enter!" -msgstr "不是有效 IPv6 格式,请重新输入!" - -msgid "Not true format, please re-enter!" -msgstr "不是正确的格式,请重新输入!" - -msgid "Plaintext: If this string matches any part of the targeting domain, this rule takes effet. Example: rule 'sina.com' matches targeting domain 'sina.com', 'sina.com.cn' and 'www.sina.com', but not 'sina.cn'." -msgstr "纯字符串: 当此字符串匹配目标域名中任意部分,该规则生效。比如'sina.com'可以匹配'sina.com'、'sina.com.cn'和'www.sina.com',但不匹配'sina.cn'。" - -msgid "Regular expression: Begining with 'regexp:', the rest is a regular expression. When the regexp matches targeting domain, this rule takes effect. Example: rule 'regexp:\\.goo.*\\.com$' matches 'www.google.com' and 'fonts.googleapis.com', but not 'google.com'." -msgstr "正则表达式: 由'regexp:'开始,余下部分是一个正则表达式。当此正则表达式匹配目标域名时,该规则生效。例如'regexp:\\.goo.*\\.com$'匹配'www.google.com'、'fonts.googleapis.com',但不匹配'google.com'。" - -msgid "Subdomain (recommended): Begining with 'domain:' and the rest is a domain. When the targeting domain is exactly the value, or is a subdomain of the value, this rule takes effect. Example: rule 'domain:v2ray.com' matches 'www.v2ray.com', 'v2ray.com', but not 'xv2ray.com'." -msgstr "子域名 (推荐): 由'domain:'开始,余下部分是一个域名。当此域名是目标域名或其子域名时,该规则生效。例如'domain:v2ray.com'匹配'www.v2ray.com'、'v2ray.com',但不匹配'xv2ray.com'。" - -msgid "Full domain: Begining with 'full:' and the rest is a domain. When the targeting domain is exactly the value, the rule takes effect. Example: rule 'domain:v2ray.com' matches 'v2ray.com', but not 'www.v2ray.com'." -msgstr "完整匹配: 由'full:'开始,余下部分是一个域名。当此域名完整匹配目标域名时,该规则生效。例如'full:v2ray.com'匹配'v2ray.com'但不匹配'www.v2ray.com'。" - -msgid "Pre-defined domain list: Begining with 'geosite:' and the rest is a name, such as geosite:google or geosite:cn." -msgstr "预定义域名列表:由'geosite:'开头,余下部分是一个名称,如geosite:google或者geosite:cn。" - -msgid "Annotation: Begining with #" -msgstr "注释: 由 # 开头" - -msgid "IP: such as '127.0.0.1'." -msgstr "IP: 形如'127.0.0.1'。" - -msgid "CIDR: such as '127.0.0.0/8'." -msgstr "CIDR: 形如'10.0.0.0/8'." - -msgid "GeoIP: such as 'geoip:cn'. It begins with geoip: (lower case) and followed by two letter of country code." -msgstr "GeoIP: 形如'geoip:cn',必须以geoip:(小写)开头,后面跟双字符国家代码,支持几乎所有可以上网的国家。" - -msgid "Clear logs" -msgstr "清空日志" - -msgid "Only recommend to use with VLESS-TCP-XTLS-Vision." -msgstr "只推荐与 VLESS-TCP-XTLS-Vision 搭配使用。" - -msgid "Password" -msgstr "密码" - -msgid "IV Check" -msgstr "IV 检查" - -msgid "UDP over TCP" -msgstr "TCP 封装 UDP" - -msgid "Connection Timeout" -msgstr "连接超时时间" - -msgid "Local Port" -msgstr "本地端口" - -msgid "Fast Open" -msgstr "快速打开" - -msgid "Pre-connections" -msgstr "预连接" - -msgid "Number of early established connections to reduce latency." -msgstr "预连接的数量,用于降低延迟。" - -msgid "Need node support required" -msgstr "需要节点支持" - -msgid "plugin" -msgstr "插件" - -msgid "Supports custom SIP003 plugins, Make sure the plugin is installed." -msgstr "支持自定义 SIP003 插件,请确保插件已安装。" - -msgid "opts" -msgstr "插件选项" - -msgid "Protocol" -msgstr "协议名称" - -msgid "Protocol_param" -msgstr "协议参数" - -msgid "Obfs" -msgstr "混淆" - -msgid "Obfs_param" -msgstr "混淆参数" - -msgid "Plugin Name" -msgstr "插件名称" - -msgid "Plugin Arguments" -msgstr "插件参数" - -msgid "Naiveproxy Protocol" -msgstr "Naiveproxy 协议" - -msgid "V2ray Protocol" -msgstr "V2ray 协议" - -msgid "User Level" -msgstr "用户等级(level)" - -msgid "Transport" -msgstr "传输方式" - -msgid "Public Key" -msgstr "公钥" - -msgid "Private Key" -msgstr "私钥" - -msgid "Pre shared key" -msgstr "额外的对称加密密钥" - -msgid "Local Address" -msgstr "本地地址" - -msgid "Decimal numbers separated by \",\" or Base64-encoded strings." -msgstr "用“,”隔开的十进制数字或 Base64 编码字符串。" - -msgid "Camouflage Domain" -msgstr "伪装域名" - -msgid "Camouflage Type" -msgstr "伪装类型" - -msgid "Transport Layer Encryption" -msgstr "传输层加密" - -msgid "Whether or not transport layer encryption is enabled, \"none\" for unencrypted, \"tls\" for using TLS, \"xtls\" for using XTLS." -msgstr "是否启入传输层加密,支持的选项有 \"none\" 表示不加密,\"tls\" 表示使用 TLS,\"xtls\" 表示使用 XTLS。" - -msgid "Original Trojan only supported 'tls', please choose 'tls'." -msgstr "原版Trojan只支持'tls',请选择'tls'。" - -msgid "Transfer mode" -msgstr "传输模式" - -msgid "Do not send server name in ClientHello." -msgstr "不要在 ClientHello 中发送服务器名称。" - -msgid "Domain" -msgstr "域名" - -msgid "allowInsecure" -msgstr "允许不安全连接" - -msgid "Whether unsafe connections are allowed. When checked, Certificate validation will be skipped." -msgstr "是否允许不安全连接。当勾选时,将跳过证书验证。" - -msgid "%s Node Use Type" -msgstr "%s 节点使用类型" - -msgid "Set the TUIC proxy server ip address" -msgstr "指定远程 TUIC 服务器 IP" - -msgid "TUIC User Password For Connect Remote Server" -msgstr "用于远程 TUIC 服务器连接的密码" - -msgid "TUIC UserName For Local Socks" -msgstr "用于本地 Socks 服务器连接的用户名" - -msgid "TUIC Password For Local Socks" -msgstr "用于本地 Socks 服务器连接的密码" - -msgid "UDP relay mode" -msgstr "UDP 中继模式" - -msgid "Congestion control algorithm" -msgstr "拥塞控制算法" - -msgid "Heartbeat interval(second)" -msgstr "保活心跳包发送间隔(单位:秒)" - -msgid "Timeout for establishing a connection to server(second)" -msgstr "连接超时时间(单位:秒)" - -msgid "Garbage collection interval(second)" -msgstr "UDP 数据包片残片清理间隔(单位:秒)" - -msgid "Garbage collection lifetime(second)" -msgstr "UDP 数据包残片在服务器的保留时间(单位:秒)" - -msgid "Disable SNI" -msgstr "关闭 SNI 服务器名称指示" - -msgid "Enable 0-RTT QUIC handshake" -msgstr "客户端启用 0-RTT QUIC 连接握手" - -msgid "TUIC send window" -msgstr "发送窗口(无需确认即可发送的最大字节数:默认8Mb*2)" - -msgid "TUIC receive window" -msgstr "接收窗口(无需确认即可接收的最大字节数:默认8Mb)" - -msgid "TUIC Maximum packet size the socks5 server can receive from external, in bytes" -msgstr "TUIC socks5 服务器可以从外部接收的最大数据包大小(以字节为单位)" - -msgid "Set if the listening socket should be dual-stack" -msgstr "设置监听套接字为双栈" - -msgid "
none: default, no masquerade, data sent is packets with no characteristics.
srtp: disguised as an SRTP packet, it will be recognized as video call data (such as FaceTime).
utp: packets disguised as uTP will be recognized as bittorrent downloaded data.
wechat-video: packets disguised as WeChat video calls.
dtls: disguised as DTLS 1.2 packet.
wireguard: disguised as a WireGuard packet. (not really WireGuard protocol)
dns: Disguising traffic as DNS requests." -msgstr "
none:默认值,不进行伪装,发送的数据是没有特征的数据包。
srtp:伪装成 SRTP 数据包,会被识别为视频通话数据(如 FaceTime)。
utp:伪装成 uTP 数据包,会被识别为 BT 下载数据。
wechat-video:伪装成微信视频通话的数据包。
dtls:伪装成 DTLS 1.2 数据包。
wireguard:伪装成 WireGuard 数据包。(并不是真正的 WireGuard 协议)
dns:把流量伪装成 DNS 请求。" - -msgid "Use it together with the DNS disguised type. You can fill in any domain." -msgstr "配合伪装类型 DNS 使用,可随便填一个域名。" - -msgid "Auth" -msgstr "身份认证" - -msgid "Socks for authentication" -msgstr "Socks 认证方式" - -msgid "Socks protocol authentication, support anonymous and password." -msgstr "Socks 协议的认证方式,支持匿名方式和账号密码方式。" - -msgid "anonymous" -msgstr "匿名" - -msgid "User Password" -msgstr "账号密码" - -msgid "Username and Password must be used together!" -msgstr "账号和密码必须同时使用!" - -msgid "Node Number" -msgstr "节点数量" - -msgid "You can only set up a maximum of %s nodes for the time being, Used for access control." -msgstr "目前最多只能设置 %s 个节点,用于给访问控制使用。" - -msgid "Prefer firewall tools" -msgstr "首选防火墙工具" - -msgid "IPv6 TProxy" -msgstr "IPv6 透明代理(TProxy)" - -msgid "Experimental feature. Make sure that your node supports IPv6." -msgstr "实验特性,请确保你的节点支持IPv6" - -msgid "Status info" -msgstr "状态信息" - -msgid "Big icon" -msgstr "大图标" - -msgid "Show node check" -msgstr "显示节点检测" - -msgid "Show Show IP111" -msgstr "显示 IP111" - -msgid "Destination protocol" -msgstr "目标协议" - -msgid "Destination address" -msgstr "目标地址" - -msgid "Destination port" -msgstr "目标端口" - -msgid "Whether to receive PROXY protocol, when this node want to be fallback or forwarded by proxy, it must be enable, otherwise it cannot be used." -msgstr "是否接收 PROXY protocol,当该节点要被回落或被代理转发时,必须启用,否则不能使用。" - -msgid "outbound node" -msgstr "出站节点" - -msgid "Custom Socks" -msgstr "自定义 Socks" - -msgid "Custom HTTP" -msgstr "自定义 HTTP" - -msgid "Custom Interface" -msgstr "自定义接口" - -msgid "Interface" -msgstr "接口" - -msgid "Bind Local" -msgstr "本机监听" - -msgid "When selected, it can only be accessed localhost." -msgstr "当勾选时,只能本机访问。" - -msgid "Accept LAN Access" -msgstr "接受局域网访问" - -msgid "When selected, it can accessed lan , this will not be safe!" -msgstr "当勾选时,可以直接访问局域网,这将不安全!(非特殊情况不建议开启)" - -msgid "Enable Remote" -msgstr "启用转发" - -msgid "You can forward to Nginx/Caddy/V2ray/Xray WebSocket and more." -msgstr "您可以转发到 Nginx/Caddy/V2ray/Xray WebSocket 等。" - -msgid "Remote Address" -msgstr "远程地址" - -msgid "Remote Port" -msgstr "远程端口" - -msgid "as:" -msgstr "如:" - -msgid "Public key absolute path" -msgstr "公钥文件绝对路径" - -msgid "Private key absolute path" -msgstr "私钥文件绝对路径" - -msgid "Can't find this file!" -msgstr "找不到这个文件!" - -msgid "Public key and Private key path can not be empty!" -msgstr "公钥和私钥文件路径不能为空!" - -msgid "Server-Side" -msgstr "服务器端" - -msgid "Server Config" -msgstr "服务器配置" - -msgid "Users Manager" -msgstr "用户管理" - -msgid "Logs" -msgstr "日志" - -msgid "Log" -msgstr "日志" - -msgid "%s Node Log" -msgstr "%s 节点日志" - -msgid "Log Level" -msgstr "日志等级" - -msgid "Advanced log feature" -msgstr "高级日志功能" - -msgid "For professionals only." -msgstr "仅限专业人士使用。" - -msgid "Persist log file directory" -msgstr "持久性日志文件目录" - -msgid "The path to the directory used to store persist log files, the \"/\" at the end can be omitted. Leave it blank to disable this feature." -msgstr "用来存储持久性日志文件的目录路径,末尾的 “/” 可以省略。留空以禁用此功能。" - -msgid "Logging to system log" -msgstr "记录到系统日志" - -msgid "Logging to the system log for more advanced functions. For example, send logs to a dedicated log server." -msgstr "将日志记录到系统日志,以实现更加高级的功能。例如,把日志发送到专门的日志服务器。" - -msgid "Log Event Filter" -msgstr "日志事件过滤器" - -msgid "Support regular expression." -msgstr "支持正则表达式。" - -msgid "Shell Command" -msgstr "Shell 命令" - -msgid "Shell command to execute, replace log content with %s." -msgstr "要执行的 Shell 命令,用 %s 代替日志内容。" - -msgid "Not enabled log" -msgstr "未启用日志" - -msgid "It is recommended to disable logging during regular use to reduce system overhead." -msgstr "正常使用时建议关闭日志,以减少系统开销。" - -msgid "UDP Forward" -msgstr "UDP 转发" - -msgid "DNS Settings" -msgstr "DNS 设置" - -msgid "Null" -msgstr "无" - -msgid "You did not fill in the %s path. Please save and apply then update manually." -msgstr "您没有填写 %s 路径。请保存应用后再手动更新。" - -msgid "Not installed %s, Can't unzip!" -msgstr "未安装 %s,无法解压!" - -msgid "Can't determine ARCH, or ARCH not supported." -msgstr "无法确认ARCH架构,或是不支持。" - -msgid "Get remote version info failed." -msgstr "获取远程版本信息失败。" - -msgid "New version found, but failed to get new version download url." -msgstr "发现新版本,但未能获得新版本的下载地址。" - -msgid "Download url is required." -msgstr "请指定下载地址。" - -msgid "File download failed or timed out: %s" -msgstr "文件下载失败或超时:%s" - -msgid "File path required." -msgstr "请指定文件路径。" - -msgid "%s not enough space." -msgstr "%s 空间不足。" - -msgid "Can't find client in file: %s" -msgstr "无法在文件中找到客户端:%s" - -msgid "Client file is required." -msgstr "请指定客户端文件。" - -msgid "The client file is not suitable for current device." -msgstr "客户端文件不适合当前设备。" - -msgid "Can't move new file to path: %s" -msgstr "无法移动新文件到:%s" - -msgid "An XHttpObject in JSON format, used for sharing." -msgstr "JSON 格式的 XHttpObject,用来实现分享。" - -msgid "Enable Mux.Cool" -msgstr "启用 Mux.Cool" - -msgid "Mux concurrency" -msgstr "最大并发连接数" - -msgid "XUDP Mux concurrency" -msgstr "XUDP 最大并发连接数" - -msgid "Padding" -msgstr "填充" - -msgid "Enable early data" -msgstr "启用前置数据" - -msgid "Early data length" -msgstr "前置数据最大长度" - -msgid "Early data header name" -msgstr "前置数据 HTTP 头名" - -msgid "Recommended value: Sec-WebSocket-Protocol" -msgstr "推荐值:Sec-WebSocket-Protocol" - -msgid "Health check" -msgstr "健康检查" - -msgid "Health check timeout" -msgstr "检查超时时间" - -msgid "Permit without stream" -msgstr "无子连接时的健康检查" - -msgid "Initial Windows Size" -msgstr "初始窗口大小" - -msgid "Excluded Domains" -msgstr "排除域名" - -msgid "If the traffic sniffing result is in this list, the destination address will not be overridden." -msgstr "如果流量嗅探结果在此列表中,则不会覆盖目标地址。" - -msgid "Buffer Size" -msgstr "缓冲区大小" - -msgid "Buffer size for every connection (kB)" -msgstr "每一个连接的缓冲区大小(kB)" - -msgid "Handshake Timeout" -msgstr "握手超时 " - -msgid "Idle Timeout" -msgstr "空闲超时 " - -msgid "Hop Interval" -msgstr "端口跳跃时间 " - -msgid "HeartbeatPeriod(second)" -msgstr "心跳周期(单位:秒)" - -msgid "Override the connection destination address" -msgstr "覆盖连接目标地址" - -msgid "Handshake Server" -msgstr "握手服务器" - -msgid "Handshake Server Port" -msgstr "握手服务器端口" - -msgid "Override the connection destination address with the sniffed domain.
Otherwise use sniffed domain for routing only.
If using shunt nodes, configure the domain shunt rules correctly." -msgstr "用探测出的域名覆盖连接目标地址。
否则仅将探测得到的域名用于路由。
如使用分流节点,请正确设置域名分流规则。" - -msgid "Override the connection destination address with the sniffed domain.
When enabled, traffic will match only by domain, ignoring IP rules.
If using shunt nodes, configure the domain shunt rules correctly." -msgstr "用探测出的域名覆盖连接目标地址。
启用后仅使用域名进行流量匹配,将忽略IP规则。
如使用分流节点,请正确设置域名分流规则。" - -msgid "Protocol parameter. Will waste traffic randomly if enabled." -msgstr "协议参数。如果启用会随机浪费流量。" - -msgid "Protocol parameter. Enable length block encryption." -msgstr "协议参数。启用长度块加密。" - -msgid "TLS Chain Fingerprint (SHA256)" -msgstr "TLS 证书链指纹(SHA256)" - -msgid "Once set, connects only when the server’s chain fingerprint matches." -msgstr "设置后,仅在服务器证书链指纹匹配时连接。" - -msgid "ECH Config" -msgstr "ECH 配置" - -msgid "ECH Key" -msgstr "ECH 密钥" - -msgid "ECH Query Policy" -msgstr "ECH 查询策略" - -msgid "Controls the policy used when performing DNS queries for ECH configuration." -msgstr "控制使用 DNS 查询 ECH 配置时的策略。" - -msgid "Enable Multipath TCP, need to be enabled in both server and client configuration." -msgstr "启用 Multipath TCP,需在服务端和客户端配置中同时启用。" - -msgid "Fragment" -msgstr "分片" - -msgid "TCP fragments, which can deceive the censorship system in some cases, such as bypassing SNI blacklists." -msgstr "TCP 分片,在某些情况下可以欺骗审查系统,比如绕过 SNI 黑名单。" - -msgid "Fragment Packets" -msgstr "分片方式" - -msgid "\"1-3\" is for segmentation at TCP layer, applying to the beginning 1 to 3 data writes by the client. \"tlshello\" is for TLS client hello packet fragmentation." -msgstr "\"1-3\" 是 TCP 的流切片,应用于客户端第 1 至第 3 次写数据。\"tlshello\" 是 TLS 握手包切片。" - -msgid "Fragment Length" -msgstr "分片包长" - -msgid "Fragmented packet length (byte)" -msgstr "分片包长 (byte)" - -msgid "Fragment Interval" -msgstr "分片间隔" - -msgid "Fragmentation interval (ms)" -msgstr "分片间隔(ms)" - -msgid "Max Split" -msgstr "最大分片数" - -msgid "Limit the maximum number of splits." -msgstr "限制分片的最大数量。" - -msgid "Split handshake data into multiple TLS records for better censorship evasion. Low overhead. Recommended to enable first." -msgstr "将握手数据拆分为多个 TLS 记录,提升抗封锁能力,几乎不增加延迟,建议优先启用。" - -msgid "Split handshake into multiple TCP segments. Enhances obfuscation. May increase delay. Use only if needed." -msgstr "将 TLS 握手数据分为多个 TCP 包发送,提高伪装性,可能增加延迟,仅在封锁严重时使用。" - -msgid "Noise" -msgstr "噪声" - -msgid "UDP noise, Under some circumstances it can bypass some UDP based protocol restrictions." -msgstr "UDP 噪声,在某些情况下可以绕过一些针对 UDP 协议的限制。" - -msgid "To send noise packets, select \"Noise\" in Xray Settings." -msgstr "在 Xray 设置中勾选 “噪声” 以发送噪声包。" - -msgid "Xray Noise Packets" -msgstr "Xray 噪声数据包" - -msgid "Packet" -msgstr "数据包" - -msgid "Delay (ms)" -msgstr "延迟(ms)" - -msgid "IP Type" -msgstr "IP 类型" - -msgid "If is domain name, The requested domain name will be resolved to IP before connect." -msgstr "如果是域名,域名将在请求发出之前解析为 IP。" - -msgid "Chain Proxy" -msgstr "链式代理" - -msgid "Landing Node" -msgstr "落地节点" - -msgid "Only support a layer of proxy." -msgstr "仅支持一层代理。" - -msgid "" -"Chained proxy works only with Xray or Sing-box nodes.
" -"The chained node must be the same type as your subscription node (Xray with Xray, Sing-box with Sing-box).
" -"You can only use manual or imported nodes as chained nodes." -msgstr "" -"链式代理仅支持 Xray 与 Sing-box 节点。
" -"链式节点需与订阅节点类型一致(Xray 对应 Xray,Sing-box 对应 Sing-box)。
" -"仅支持手动添加或导入的节点用作链式节点。" - -msgid "Only work with using the %s node." -msgstr "与使用 %s 节点时生效。" - -msgid "Set the default domain resolution strategy for the sing-box node." -msgstr "为 sing-box 节点设置默认的域名解析策略。" - -msgid "Total Lines" -msgstr "总行数:" - -msgid "Read List" -msgstr "读取列表" - -msgid "Maintain" -msgstr "维护" - -msgid "Backup and Restore" -msgstr "备份还原" - -msgid "Backup or Restore Client and Server Configurations." -msgstr "备份或还原客户端及服务端配置。" - -msgid "Note: Restoring configurations across different versions may cause compatibility issues." -msgstr "注意:不同版本间的配置恢复可能会导致兼容性问题。" - -msgid "Create Backup File" -msgstr "创建备份文件" - -msgid "Restore Backup File" -msgstr "恢复备份文件" - -msgid "DL Backup" -msgstr "下载备份" - -msgid "RST Backup" -msgstr "恢复备份" - -msgid "UL Restore" -msgstr "上传恢复" - -msgid "CLOSE WIN" -msgstr "关闭窗口" - -msgid "Restore to default configuration" -msgstr "恢复默认配置" - -msgid "Do Reset" -msgstr "执行重置" - -msgid "Please select a file first." -msgstr "请先选择一个文件。" - -msgid "Invalid file type. Please upload a .tar.gz file." -msgstr "文件类型无效,请上传一个 .tar.gz 文件。" - -msgid "File size exceeds 10MB limit." -msgstr "文件大小超过 10MB 限制。" - -msgid "Do you want to restore the client to default settings?" -msgstr "是否要恢复客户端默认配置?" - -msgid "Are you sure you want to restore the client to default settings?" -msgstr "是否真的要恢复客户端默认配置?" - -msgid "_urltest" -msgstr "URLTest" - -msgid "URLTest node list" -msgstr "URLTest 节点列表" - -msgid "List of nodes to test, document" -msgstr "要测试的节点列表,文档原理" - -msgid "Test interval" -msgstr "测试间隔" - -msgid "Test interval must be less or equal than idle timeout." -msgstr "测试间隔时间必须小于或等于空闲超时时间。" - -msgid "Test tolerance" -msgstr "测试容差" - -msgid "The test tolerance in milliseconds." -msgstr "测试容差时间(单位:毫秒)。" - -msgid "Idle timeout" -msgstr "空闲超时" - -msgid "The idle timeout." -msgstr "空闲超时时间。" - -msgid "Interrupt existing connections" -msgstr "中断现有连接" - -msgid "Interrupt existing connections when the selected outbound has changed." -msgstr "当选择的出站发生变化时中断现有连接。" - -msgid "Port hopping range" -msgstr "端口跳跃范围" - -msgid "Format as 1000:2000 or 1000-2000 Multiple groups are separated by commas (,)." -msgstr "格式为:1000:2000 或 1000-2000 多组时用逗号(,)隔开。" - -msgid "Use Custom Config" -msgstr "使用自定义配置" - -msgid "Custom Config" -msgstr "自定义配置" - -msgid "Must be JSON text!" -msgstr "必须是 JSON 文本内容!" - -msgid "Geo View" -msgstr "Geo 查询" - -msgid "Query" -msgstr "查询" - -msgid "Querying" -msgstr "查询中" - -msgid "Please enter query content!" -msgstr "请输入查询内容!" - -msgid "No results were found!" -msgstr "未找到任何结果!" - -msgid "Domain/IP Query" -msgstr "域名/IP 查询" - -msgid "GeoIP/Geosite Query" -msgstr "GeoIP/Geosite 查询" - -msgid "Enter a domain or IP to query the Geo rule list they belong to." -msgstr "输入域名/IP,查询它们所在的 Geo 规则列表。" - -msgid "Enter a GeoIP or Geosite to extract the domains/IPs they contain. Format: geoip:cn or geosite:gfw" -msgstr "输入 GeoIP/Geosite,提取它们所包含的域名/IP。格式:geoip:cn 或 geosite:gfw" - -msgid "Tips:" -msgstr "小贴士:" - -msgid "By entering a domain or IP, you can query the Geo rule list they belong to." -msgstr "可以通过输入域名/IP,查询它们所在的 Geo 规则列表。" - -msgid "By entering a GeoIP or Geosite, you can extract the domains/IPs they contain." -msgstr "可以通过输入 GeoIP/Geosite,提取它们所包含的域名/IP。" - -msgid "Use the GeoIP/Geosite query function to verify if the entered Geo rules are correct." -msgstr "利用 GeoIP/Geosite 查询功能,可以验证输入的 Geo 规则是否正确。" - -msgid "Private Key Passphrase" -msgstr "私钥指纹" - -msgid "Host Key" -msgstr "主机密钥" - -msgid "Accept any if empty." -msgstr "留空则不校验。" - -msgid "Host Key Algorithms" -msgstr "主机密钥算法" - -msgid "Client Version" -msgstr "客户端版本" - -msgid "Random version will be used if empty." -msgstr "如留空,则使用随机版本。" - -msgid "The configured type also applies to the core specified when manually importing nodes." -msgstr "配置的类型同样适用于手动导入节点时所指定的核心程序。" - -msgid "Group Name" -msgstr "分组名" - -msgid "Reassign Group" -msgstr "调整分组" - -msgid "Reassign Node Group" -msgstr "调整节点分组" - -msgid "Currently using %s node" -msgstr "当前使用的 %s 节点" - -msgid "Search nodes..." -msgstr "搜索节点…" diff --git a/small/luci-app-passwall/po/zh_Hans b/small/luci-app-passwall/po/zh_Hans deleted file mode 120000 index 41451e4a19..0000000000 --- a/small/luci-app-passwall/po/zh_Hans +++ /dev/null @@ -1 +0,0 @@ -zh-cn \ No newline at end of file diff --git a/small/luci-app-passwall/root/etc/config/passwall_server b/small/luci-app-passwall/root/etc/config/passwall_server deleted file mode 100644 index c9526cb285..0000000000 --- a/small/luci-app-passwall/root/etc/config/passwall_server +++ /dev/null @@ -1,4 +0,0 @@ - -config global 'global' - option enable '0' - diff --git a/small/luci-app-passwall/root/etc/hotplug.d/iface/98-passwall b/small/luci-app-passwall/root/etc/hotplug.d/iface/98-passwall deleted file mode 100644 index 87638f540d..0000000000 --- a/small/luci-app-passwall/root/etc/hotplug.d/iface/98-passwall +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/sh - -[[ "$ACTION" == "ifup" && $(uci get "passwall.@global[0].enabled") == "1" ]] && [ -f /var/lock/passwall_ready.lock ] && { - default_device=$(ip route | grep default | awk -F 'dev ' '{print $2}' | awk '{print $1}') - [ "$default_device" == "$DEVICE" ] && { - LOCK_FILE_DIR=/var/lock - [ ! -d ${LOCK_FILE_DIR} ] && mkdir -p ${LOCK_FILE_DIR} - LOCK_FILE="${LOCK_FILE_DIR}/passwall_ifup.lock" - if [ -s ${LOCK_FILE} ]; then - SPID=$(cat ${LOCK_FILE}) - if [ -e /proc/${SPID}/status ]; then - exit 1 - fi - cat /dev/null > ${LOCK_FILE} - fi - echo $$ > ${LOCK_FILE} - - /etc/init.d/passwall restart >/dev/null 2>&1 & - logger -p notice -t network -s "passwall: restart when $INTERFACE ifup" - - rm -rf ${LOCK_FILE} - } -} diff --git a/small/luci-app-passwall/root/etc/init.d/passwall b/small/luci-app-passwall/root/etc/init.d/passwall deleted file mode 100755 index 07126d4a1d..0000000000 --- a/small/luci-app-passwall/root/etc/init.d/passwall +++ /dev/null @@ -1,77 +0,0 @@ -#!/bin/sh /etc/rc.common - -START=99 -STOP=15 - -ROOT="${IPKG_INSTROOT:-}" -. "$ROOT/usr/share/passwall/utils.sh" -APP_FILE=${APP_PATH}/app.sh -LOCK_FILE_DIR=/var/lock -LOCK_FILE=${LOCK_FILE_DIR}/${CONFIG}.lock - -set_lock() { - [ ! -d "$LOCK_FILE_DIR" ] && mkdir -p $LOCK_FILE_DIR - exec 999>"$LOCK_FILE" - flock -xn 999 -} - -unset_lock() { - flock -u 999 - rm -rf "$LOCK_FILE" -} - -unlock() { - failcount=1 - while [ "$failcount" -le 10 ]; do - if [ -f "$LOCK_FILE" ]; then - let "failcount++" - sleep 1s - [ "$failcount" -ge 10 ] && unset_lock - else - break - fi - done -} - -boot_func() { - local delay=$(uci -q get ${CONFIG}.@global_delay[0].start_delay || echo 1) - if [ "$delay" -gt 0 ]; then - echolog "执行启动延时 $delay 秒后再启动!" - sleep $delay - fi - restart - touch ${LOCK_FILE_DIR}/${CONFIG}_ready.lock -} - -boot() { - boot_func >/dev/null 2>&1 & -} - -start() { - set_lock - [ $? == 1 ] && echolog "脚本已经在运行,不重复运行,退出." && exit 0 - $APP_FILE start - unset_lock -} - -stop() { - unlock - set_lock - [ $? == 1 ] && echolog "停止脚本等待超时,不重复运行,退出." && exit 0 - $APP_FILE stop - unset_lock -} - -restart() { - set_lock - [ $? == 1 ] && echolog "脚本已经在运行,不重复运行,退出." && exit 0 - $APP_FILE stop - $APP_FILE start - unset_lock -} - -reload() { - echo "Warning: This service does not support configuration reloading" - echo "Performing full restart instead..." - restart -} diff --git a/small/luci-app-passwall/root/etc/init.d/passwall_server b/small/luci-app-passwall/root/etc/init.d/passwall_server deleted file mode 100755 index f60b8c2322..0000000000 --- a/small/luci-app-passwall/root/etc/init.d/passwall_server +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/sh /etc/rc.common - -START=99 - -start() { - lua /usr/lib/lua/luci/passwall/server_app.lua start -} - -stop() { - lua /usr/lib/lua/luci/passwall/server_app.lua stop -} - -restart() { - stop - start -} - -reload() { - echo "Warning: This service does not support configuration reloading" - echo "Performing full restart instead..." - restart -} diff --git a/small/luci-app-passwall/root/etc/uci-defaults/luci-passwall b/small/luci-app-passwall/root/etc/uci-defaults/luci-passwall deleted file mode 100755 index 0a1d8fa4bb..0000000000 --- a/small/luci-app-passwall/root/etc/uci-defaults/luci-passwall +++ /dev/null @@ -1,58 +0,0 @@ -#!/bin/sh - -if [ -e "/etc/config/ucitrack" ]; then - uci -q batch <<-EOF - delete ucitrack.@passwall[-1] - add ucitrack passwall - set ucitrack.@passwall[-1].init=passwall - delete ucitrack.@passwall_server[-1] - add ucitrack passwall_server - set ucitrack.@passwall_server[-1].init=passwall_server - commit ucitrack -EOF -fi - -uci -q batch <<-EOF - delete firewall.passwall - set firewall.passwall=include - set firewall.passwall.type='script' - set firewall.passwall.path='/var/etc/passwall.include' - - delete firewall.passwall_server - set firewall.passwall_server=include - set firewall.passwall_server.type='script' - set firewall.passwall_server.path='/var/etc/passwall_server.include' - - set dhcp.@dnsmasq[0].localuse=1 - commit dhcp - set uhttpd.main.max_requests=50 - commit uhttpd -EOF - -if [ -x "/sbin/fw3" ]; then - uci -q set firewall.passwall.reload='1' - uci -q set firewall.passwall_server.reload='1' -else - uci -q delete firewall.passwall.reload - uci -q delete firewall.passwall.fw4_compatible - uci -q delete firewall.passwall_server.reload - uci -q delete firewall.passwall_server.fw4_compatible -fi -uci commit firewall - -[ ! -s "/etc/config/passwall" ] && cp -f /usr/share/passwall/0_default_config /etc/config/passwall - -chmod +x /usr/share/passwall/*.sh - -[ "$(uci -q get passwall.@global_xray[0].sniffing)" == "1" ] && [ "$(uci -q get passwall.@global_xray[0].route_only)" != "1" ] && uci -q set passwall.@global_xray[0].sniffing_override_dest=1 -uci -q delete passwall.@global_xray[0].sniffing -uci -q delete passwall.@global_xray[0].route_only -uci -q commit passwall - -sed -i "s#add_from#group#g" /etc/config/passwall 2>/dev/null - -rm -f /tmp/luci-indexcache /tmp/luci-indexcache.* -rm -rf /tmp/luci-modulecache/ -killall -HUP rpcd 2>/dev/null - -exit 0 diff --git a/small/luci-app-passwall/root/usr/share/passwall/0_default_config b/small/luci-app-passwall/root/usr/share/passwall/0_default_config deleted file mode 100644 index 3f0f3bbae2..0000000000 --- a/small/luci-app-passwall/root/usr/share/passwall/0_default_config +++ /dev/null @@ -1,250 +0,0 @@ - -config global - option enabled '0' - option socks_enabled '0' - option tcp_node_socks_port '1070' - option filter_proxy_ipv6 '1' - option dns_shunt 'chinadns-ng' - option dns_mode 'tcp' - option remote_dns '1.1.1.1' - list smartdns_remote_dns 'https://1.1.1.1/dns-query' - option use_default_dns 'direct' - option chinadns_ng_default_tag 'none' - option dns_redirect '1' - option use_direct_list '1' - option use_proxy_list '1' - option use_block_list '1' - option use_gfw_list '1' - option chn_list 'direct' - option tcp_proxy_mode 'proxy' - option udp_proxy_mode 'proxy' - option localhost_proxy '1' - option client_proxy '1' - option acl_enable '0' - option log_tcp '0' - option log_udp '0' - option loglevel 'error' - option trojan_loglevel '4' - option log_chinadns_ng '0' - -config global_haproxy - option balancing_enable '0' - -config global_delay - option start_daemon '1' - option start_delay '60' - -config global_forwarding - option tcp_no_redir_ports 'disable' - option udp_no_redir_ports 'disable' - option tcp_proxy_drop_ports 'disable' - option udp_proxy_drop_ports '443' - option tcp_redir_ports '22,25,53,80,143,443,465,587,853,873,993,995,5222,8080,8443,9418' - option udp_redir_ports '1:65535' - option accept_icmp '0' - option prefer_nft '1' - option tcp_proxy_way 'redirect' - option ipv6_tproxy '0' - -config global_xray - option sniffing_override_dest '0' - -config global_singbox - option sniff_override_destination '0' - -config global_other - option auto_detection_time 'tcping' - option show_node_info '0' - -config global_rules - option auto_update '0' - option chnlist_update '1' - option chnroute_update '1' - option chnroute6_update '1' - option gfwlist_update '1' - option geosite_update '0' - option geoip_update '0' - list gfwlist_url 'https://cdn.jsdelivr.net/gh/Loyalsoldier/v2ray-rules-dat@release/gfw.txt' - list chnroute_url 'https://ispip.clang.cn/all_cn.txt' - list chnroute_url 'https://cdn.jsdelivr.net/gh/gaoyifan/china-operator-ip@ip-lists/china.txt' - list chnroute6_url 'https://ispip.clang.cn/all_cn_ipv6.txt' - list chnroute6_url 'https://cdn.jsdelivr.net/gh/gaoyifan/china-operator-ip@ip-lists/china6.txt' - list chnlist_url 'https://cdn.jsdelivr.net/gh/felixonmars/dnsmasq-china-list/accelerated-domains.china.conf' - list chnlist_url 'https://cdn.jsdelivr.net/gh/felixonmars/dnsmasq-china-list/apple.china.conf' - option v2ray_location_asset '/usr/share/v2ray/' - option geoip_url 'https://github.com/Loyalsoldier/geoip/releases/latest/download/geoip.dat' - option geosite_url 'https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geosite.dat' - -config global_app - option sing_box_file '/usr/bin/sing-box' - option xray_file '/usr/bin/xray' - option hysteria_file '/usr/bin/hysteria' - -config global_subscribe - option filter_keyword_mode '1' - list filter_discard_list '距离下次重置剩余' - list filter_discard_list '套餐到期' - list filter_discard_list '过期时间' - list filter_discard_list '剩余流量' - list filter_discard_list 'QQ群' - list filter_discard_list '官网' - -config nodes 'myshunt' - option remarks '分流总节点' - option type 'Xray' - option protocol '_shunt' - option DirectGame '_direct' - option ProxyGame '_default' - option AIGC '_default' - option Streaming '_default' - option Proxy '_default' - option Direct '_direct' - option default_node '_direct' - option domainStrategy 'IPOnDemand' - -config shunt_rules 'DirectGame' - option remarks 'DirectGame' - option domain_list '# steam直连域名获取国内CDN走国内线路下载 -cm.steampowered.com -steamserver.net - -# steam国内CDN华为云 -steampipe.steamcontent.tnkjmec.com -# steam国内CDN白山云 -st.dl.eccdnx.com -st.dl.bscstorage.net -st.dl.pinyuncloud.com -# steam国内CDN新流云(原金山云)(支持ipv6) -dl.steam.clngaa.com -# steam国内CDN网宿 -cdn.mileweb.cs.steampowered.com.8686c.com -cdn-ws.content.steamchina.com -# steam国内CDN腾讯云 (蒸汽中国独占) -cdn-qc.content.steamchina.com -# steam国内CDN阿里云(支持ipv6) -cdn-ali.content.steamchina.com -xz.pphimalayanrt.com -lv.queniujq.cn -alibaba.cdn.steampipe.steamcontent.com - -# 国内游戏geosite域名 -geosite:category-games@cn' - option ip_list '# steam直连IP -45.121.184.0/24 -103.10.124.0/23 -103.28.54.0/24 -146.66.152.0/24 -146.66.155.0/24 -153.254.86.0/24 -155.133.224.0/22 -155.133.230.0/24 -155.133.232.0/23 -155.133.234.0/24 -155.133.236.0/22 -155.133.240.0/23 -155.133.244.0/23 -155.133.246.0/24 -155.133.248.0/21 -162.254.192.0/21 -185.25.182.0/23 -190.217.32.0/22 -192.69.96.0/22 -205.196.6.0/24 -208.64.200.0/22 -208.78.164.0/22 -205.185.194.0/24' - -config shunt_rules 'ProxyGame' - option remarks 'ProxyGame' - option domain_list '# steam 商店/客服/聊天/网页布局/API/二维码/Google云同步 代理URL -steamcommunity.com -www.steamcommunity.com -store.steampowered.com -checkout.steampowered.com -api.steampowered.com -help.steampowered.com -login.steampowered.com -store.akamai.steamstatic.com -steambroadcast.akamaized.net -steamvideo-a.akamaihd.net -steamusercontent-a.akamaihd.net -steamstore-a.akamaihd.net -steamcommunity-a.akamaihd.net -steamcdn-a.akamaihd.net -steamuserimages-a.akamaihd.net -community.akamai.steamstatic.com -avatars.akamai.steamstatic.com -community.steamstatic.com -cdn.akamai.steamstatic.com -avatars.steamstatic.com -shared.akamai.steamstatic.com -clan.akamai.steamstatic.com -cdn.cloudflare.steamstatic.com -community.cloudflare.steamstatic.com -store.cloudflare.steamstatic.com -avatars.cloudflare.steamstatic.com -clan.cloudflare.steamstatic.com -shared.cloudflare.steamstatic.com -steam-chat.com -steamcloud-ugc.storage.googleapis.com -steamcloud-eu-ams.storage.googleapis.com -steamcloud-eu-fra.storage.googleapis.com -steamcloud-finland.storage.googleapis.com -steamcloud-saopaulo.storage.googleapis.com -steamcloud-singapore.storage.googleapis.com -steamcloud-sydney.storage.googleapis.com -steamcloud-taiwan.storage.googleapis.com -steamcloud-eu.storage.googleapis.com - -geosite:category-games' - -config shunt_rules 'AIGC' - option remarks 'AIGC' - option domain_list 'geosite:category-ai-!cn -geosite:apple-intelligence' - -config shunt_rules 'Streaming' - option remarks 'Streaming' - option domain_list 'geosite:netflix -geosite:disney' - -config shunt_rules 'Proxy' - option remarks 'Proxy' - option domain_list 'geosite:geolocation-!cn' - option ip_list '149.154.160.0/20 -91.108.4.0/22 -91.108.56.0/24 -109.239.140.0/24 -67.198.55.0/24 -8.8.4.4 -8.8.8.8 -208.67.222.222 -208.67.220.220 -1.1.1.1 -1.1.1.2 -1.0.0.1 -9.9.9.9 -149.112.112.112 -2001:67c:4e8::/48 -2001:b28:f23c::/48 -2001:b28:f23d::/48 -2001:b28:f23f::/48 -2001:b28:f242::/48 -2001:4860:4860::8888 -2001:4860:4860::8844 -2606:4700:4700::1111 -2606:4700:4700::1001' - -config shunt_rules 'Direct' - option remarks 'Direct' - option domain_list 'geosite:cn' - option ip_list '223.5.5.5/32 -223.6.6.6/32 -119.29.29.29/32 -180.76.76.76/32 -114.114.114.114/32 -114.114.115.115/32 -1.12.12.12/32 -120.53.53.53/32 -geoip:cn -geoip:private' diff --git a/small/luci-app-passwall/root/usr/share/passwall/app.sh b/small/luci-app-passwall/root/usr/share/passwall/app.sh deleted file mode 100755 index 43a66b0965..0000000000 --- a/small/luci-app-passwall/root/usr/share/passwall/app.sh +++ /dev/null @@ -1,2068 +0,0 @@ -#!/bin/sh -# Copyright (C) 2018-2020 L-WRT Team -# Copyright (C) 2021-2025 xiaorouji -# Copyright (C) 2026 Openwrt-Passwall Organization - -. $IPKG_INSTROOT/lib/functions.sh -. $IPKG_INSTROOT/lib/functions/service.sh - -. /usr/share/passwall/utils.sh - -GLOBAL_ACL_PATH=${TMP_ACL_PATH}/default -LUA_UTIL_PATH=/usr/lib/lua/luci/passwall -UTIL_SINGBOX=$LUA_UTIL_PATH/util_sing-box.lua -UTIL_SS=$LUA_UTIL_PATH/util_shadowsocks.lua -UTIL_XRAY=$LUA_UTIL_PATH/util_xray.lua -UTIL_TROJAN=$LUA_UTIL_PATH/util_trojan.lua -UTIL_NAIVE=$LUA_UTIL_PATH/util_naiveproxy.lua -UTIL_HYSTERIA2=$LUA_UTIL_PATH/util_hysteria2.lua -UTIL_TUIC=$LUA_UTIL_PATH/util_tuic.lua - -check_run_environment() { - local prefer_nft=$(config_t_get global_forwarding prefer_nft 1) - local dnsmasq_info=$(dnsmasq -v 2>/dev/null) - local dnsmasq_ver=$(echo "$dnsmasq_info" | sed -n '1s/.*version \([0-9.]*\).*/\1/p') - # local dnsmasq_opts=$(echo "$dnsmasq_info" | grep -i "Compile time options") - local dnsmasq_ipset=0; echo "$dnsmasq_info" | grep -qw "ipset" && dnsmasq_ipset=1 - local dnsmasq_nftset=0; echo "$dnsmasq_info" | grep -qw "nftset" && dnsmasq_nftset=1 - local has_ipt=0; { command -v iptables-legacy || command -v iptables; } >/dev/null && has_ipt=1 - local has_ipset=$(command -v ipset >/dev/null && echo 1 || echo 0) - local has_fw4=$(command -v fw4 >/dev/null && echo 1 || echo 0) - if [ "$prefer_nft" = "1" ]; then - if [ "$dnsmasq_nftset" -eq 1 ] && [ "$has_fw4" -eq 1 ]; then - USE_TABLES="nftables" - elif [ "$has_ipset" -eq 1 ] && [ "$has_ipt" -eq 1 ] && [ "$dnsmasq_ipset" -eq 1 ]; then - echolog "警告:nftables (fw4) 应用环境不完整,切换至 iptables。(has_fw4:$has_fw4/dnsmasq_nftset:$dnsmasq_nftset)" - USE_TABLES="iptables" - fi - else - if [ "$has_ipset" -eq 1 ] && [ "$has_ipt" -eq 1 ] && [ "$dnsmasq_ipset" -eq 1 ]; then - USE_TABLES="iptables" - elif [ "$dnsmasq_nftset" -eq 1 ] && [ "$has_fw4" -eq 1 ]; then - echolog "警告:iptables (fw3) 应用环境不完整,切换至 nftables。(has_ipt:$has_ipt/has_ipset:$has_ipset/dnsmasq_ipset:$dnsmasq_ipset)" - USE_TABLES="nftables" - fi - fi - - if [ -n "$USE_TABLES" ]; then - local dep_list - local file_path="/usr/lib/opkg/info" - local file_ext=".control" - [ -d "/lib/apk/packages" ] && { file_path="/lib/apk/packages"; file_ext=".list"; } - - if [ "$USE_TABLES" = "iptables" ]; then - dep_list="iptables-mod-tproxy iptables-mod-socket iptables-mod-iprange iptables-mod-conntrack-extra kmod-ipt-nat" - else - dep_list="kmod-nft-socket kmod-nft-tproxy kmod-nft-nat" - nftflag=1 - local v_num=$(echo "$dnsmasq_ver" | tr -cd '0-9') - if [ "${v_num:-0}" -lt 290 ]; then - echolog "提示:Dnsmasq ($dnsmasq_ver) 低于 2.90,建议升级以增强稳定性。" - fi - fi - local pkg - for pkg in $dep_list; do - if [ ! -s "${file_path}/${pkg}${file_ext}" ]; then - echolog "警告:${USE_TABLES} 透明代理缺失基础依赖 ${pkg}!" - fi - done - else - echolog "警告:不满足任何透明代理系统环境。(has_fw4:$has_fw4/has_ipt:$has_ipt/has_ipset:$has_ipset/dnsmasq_nftset:$dnsmasq_nftset/dnsmasq_ipset:$dnsmasq_ipset)" - fi -} - - - -first_type() { - [ "${1#/}" != "$1" ] && [ -x "$1" ] && echo "$1" && return - for p in "/bin/$1" "/usr/bin/$1" "${TMP_BIN_PATH:-/tmp}/$1"; do - [ -x "$p" ] && echo "$p" && return - done - command -v "$1" 2>/dev/null || command -v "$2" 2>/dev/null -} - -is_socks_wrap() { - case "$1" in - Socks_*) return 0 ;; - *) return 1 ;; - esac -} - -ln_run() { - local file_func=${1} - local ln_name=${2} - local output=${3} - - shift 3; - if [ "${file_func%%/*}" != "${file_func}" ]; then - [ ! -L "${file_func}" ] && { - ln -s "${file_func}" "${TMP_BIN_PATH}/${ln_name}" >/dev/null 2>&1 - file_func="${TMP_BIN_PATH}/${ln_name}" - } - [ -x "${file_func}" ] || echolog " - $(readlink ${file_func}) 没有执行权限,无法启动:${file_func} $*" - fi - #echo "${file_func} $*" >&2 - [ -n "${file_func}" ] || echolog " - 找不到 ${ln_name},无法启动..." - [ "${output}" != "/dev/null" ] && [ "${ln_name}" != "chinadns-ng" ] && { - local persist_log_path=$(config_t_get global persist_log_path) - local sys_log=$(config_t_get global sys_log "0") - } - if [ -z "$persist_log_path" ] && [ "$sys_log" != "1" ]; then - ${file_func:-echolog " - ${ln_name}"} "$@" >${output} 2>&1 & - else - [ "${output: -1, -7}" == "TCP.log" ] && local protocol="TCP" - [ "${output: -1, -7}" == "UDP.log" ] && local protocol="UDP" - if [ -n "${persist_log_path}" ]; then - mkdir -p ${persist_log_path} - local log_file=${persist_log_path}/passwall_${protocol}_${ln_name}_$(date '+%F').log - echolog "记录到持久性日志文件:${log_file}" - ${file_func:-echolog " - ${ln_name}"} "$@" >> ${log_file} 2>&1 & - sys_log=0 - fi - if [ "${sys_log}" == "1" ]; then - echolog "记录 ${ln_name}_${protocol} 到系统日志" - ${file_func:-echolog " - ${ln_name}"} "$@" 2>&1 | logger -t PASSWALL_${protocol}_${ln_name} & - fi - fi - process_count=$(ls $TMP_SCRIPT_FUNC_PATH | wc -l) - process_count=$((process_count + 1)) - echo "${file_func:-echolog " - ${ln_name}"} $@ >${output}" > $TMP_SCRIPT_FUNC_PATH/$process_count -} - -parse_doh() { - local __doh=$1 __url_var=$2 __host_var=$3 __port_var=$4 __bootstrap_var=$5 - __doh=$(echo -e "$__doh" | tr -d ' \t\n') - local __url=${__doh%%,*} - local __bootstrap=${__doh#*,} - local __host_port=$(lua_api "get_domain_from_url(\"${__url}\")") - local __host __port - if echo "${__host_port}" | grep -q '^\[.*\]:[0-9]\+$'; then - __host=${__host_port%%]:*}] - __port=${__host_port##*:} - elif echo "${__host_port}" | grep -q ':[0-9]\+$'; then - __host=${__host_port%:*} - __port=${__host_port##*:} - else - __host=${__host_port} - __port=443 - fi - __host=${__host#[} - __host=${__host%]} - if [ "$(lua_api "is_ip(\"${__host}\")")" = "true" ]; then - __bootstrap=${__host} - fi - __bootstrap=${__bootstrap#[} - __bootstrap=${__bootstrap%]} - eval "${__url_var}='${__url}' ${__host_var}='${__host}' ${__port_var}='${__port}' ${__bootstrap_var}='${__bootstrap}'" -} - -get_geoip() { - local geoip_code="$1" - local geoip_type_flag="" - local geoip_path="${V2RAY_LOCATION_ASSET%*/}/geoip.dat" - [ -s "$geoip_path" ] || { echo ""; return 1; } - case "$2" in - "ipv4") geoip_type_flag="-ipv6=false" ;; - "ipv6") geoip_type_flag="-ipv4=false" ;; - esac - if type geoview &> /dev/null; then - geoview -input "$geoip_path" -list "$geoip_code" $geoip_type_flag -lowmem=true - return 0 - else - echo "" - return 1 - fi -} - -run_ipt2socks() { - local flag proto tcp_tproxy local_port socks_address socks_port socks_username socks_password log_file - local _extra_param="" - eval_set_val $@ - [ -n "$log_file" ] || log_file="/dev/null" - socks_address=$(get_host_ip "ipv4" ${socks_address}) - [ -n "$socks_username" ] && [ -n "$socks_password" ] && _extra_param="${_extra_param} -a $socks_username -k $socks_password" - [ -n "$tcp_tproxy" ] || _extra_param="${_extra_param} -R" - case "$proto" in - UDP) - flag="${flag}_UDP" - _extra_param="${_extra_param} -U" - ;; - TCP) - flag="${flag}_TCP" - _extra_param="${_extra_param} -T" - ;; - *) - flag="${flag}_TCP_UDP" - ;; - esac - _extra_param="${_extra_param} -o 60 -n 65535 -v" - ln_run "$(first_type ipt2socks)" "ipt2socks_${flag}" $log_file -l $local_port -b 0.0.0.0 -s $socks_address -p $socks_port ${_extra_param} -} - -run_singbox() { - local flag type node tcp_redir_port tcp_proxy_way udp_redir_port socks_address socks_port socks_username socks_password http_address http_port http_username http_password - local dns_listen_port direct_dns_query_strategy direct_dns_port direct_dns_udp_server direct_dns_tcp_server remote_dns_protocol remote_dns_udp_server remote_dns_tcp_server remote_dns_doh remote_dns_client_ip remote_fakedns remote_dns_query_strategy dns_cache dns_socks_address dns_socks_port - local loglevel log_file config_file server_host server_port no_run - local _extra_param="" - eval_set_val $@ - [ -z "$type" ] && { - local type=$(echo $(config_n_get $node type) | tr 'A-Z' 'a-z') - if [ "$type" != "sing-box" ]; then - bin=$(first_type $(config_t_get global_app sing_box_file) sing-box) - [ -n "$bin" ] && type="sing-box" - fi - } - [ -z "$type" ] && return 1 - [ -n "$log_file" ] || local log_file="/dev/null" - _extra_param="${_extra_param} -log 1 -logfile ${log_file}" - if [ "$log_file" = "/dev/null" ]; then - _extra_param="${_extra_param} -log 0" - else - _extra_param="${_extra_param} -log 1 -logfile ${log_file}" - fi - [ -z "$loglevel" ] && local loglevel=$(config_t_get global loglevel "warn") - [ "$loglevel" = "warning" ] && loglevel="warn" - _extra_param="${_extra_param} -loglevel $loglevel" - - [ -n "$flag" ] && _extra_param="${_extra_param} -flag $flag" - [ -n "$node" ] && _extra_param="${_extra_param} -node $node" - [ -n "$server_host" ] && _extra_param="${_extra_param} -server_host $server_host" - [ -n "$server_port" ] && _extra_param="${_extra_param} -server_port $server_port" - [ -n "$tcp_redir_port" ] && _extra_param="${_extra_param} -tcp_redir_port $tcp_redir_port" - [ -n "$tcp_proxy_way" ] && _extra_param="${_extra_param} -tcp_proxy_way $tcp_proxy_way" - [ -n "$udp_redir_port" ] && _extra_param="${_extra_param} -udp_redir_port $udp_redir_port" - [ -n "$socks_address" ] && _extra_param="${_extra_param} -local_socks_address $socks_address" - [ -n "$socks_port" ] && _extra_param="${_extra_param} -local_socks_port $socks_port" - [ -n "$socks_username" ] && [ -n "$socks_password" ] && _extra_param="${_extra_param} -local_socks_username $socks_username -local_socks_password $socks_password" - [ -n "$http_address" ] && _extra_param="${_extra_param} -local_http_address $http_address" - [ -n "$http_port" ] && _extra_param="${_extra_param} -local_http_port $http_port" - [ -n "$http_username" ] && [ -n "$http_password" ] && _extra_param="${_extra_param} -local_http_username $http_username -local_http_password $http_password" - [ -n "$dns_socks_address" ] && [ -n "$dns_socks_port" ] && _extra_param="${_extra_param} -dns_socks_address ${dns_socks_address} -dns_socks_port ${dns_socks_port}" - [ -n "$dns_listen_port" ] && _extra_param="${_extra_param} -dns_listen_port ${dns_listen_port}" - [ -n "$dns_cache" ] && _extra_param="${_extra_param} -dns_cache ${dns_cache}" - - if [ -n "$direct_dns_udp_server" ]; then - direct_dns_port=$(echo ${direct_dns_udp_server} | awk -F '#' '{print $2}') - _extra_param="${_extra_param} -direct_dns_udp_server $(echo ${direct_dns_udp_server} | awk -F '#' '{print $1}')" - elif [ -n "$direct_dns_tcp_server" ]; then - direct_dns_port=$(echo ${direct_dns_tcp_server} | awk -F '#' '{print $2}') - _extra_param="${_extra_param} -direct_dns_tcp_server $(echo ${direct_dns_tcp_server} | awk -F '#' '{print $1}')" - else - local local_dns=$(echo -n $(echo "${LOCAL_DNS}" | sed "s/,/\n/g" | head -n1) | tr " " ",") - _extra_param="${_extra_param} -direct_dns_udp_server $(echo ${local_dns} | awk -F '#' '{print $1}')" - direct_dns_port=$(echo ${local_dns} | awk -F '#' '{print $2}') - fi - _extra_param="${_extra_param} -direct_dns_port ${direct_dns_port:-53}" - direct_dns_query_strategy=${direct_dns_query_strategy:-UseIP} - _extra_param="${_extra_param} -direct_dns_query_strategy ${direct_dns_query_strategy}" - - [ -n "$remote_dns_query_strategy" ] && _extra_param="${_extra_param} -remote_dns_query_strategy ${remote_dns_query_strategy}" - case "$remote_dns_protocol" in - udp|tcp) - local _proto="$remote_dns_protocol" - local _dns=$(get_first_dns remote_dns_${_proto}_server 53 | sed 's/#/:/g') - local _dns_address=$(echo ${_dns} | awk -F ':' '{print $1}') - local _dns_port=$(echo ${_dns} | awk -F ':' '{print $2}') - _extra_param="${_extra_param} -remote_dns_server ${_dns_address} -remote_dns_port ${_dns_port} -remote_dns_${_proto}_server ${_proto}://${_dns}" - ;; - doh) - local _doh_url _doh_host _doh_port _doh_bootstrap - parse_doh "$remote_dns_doh" _doh_url _doh_host _doh_port _doh_bootstrap - [ -n "$_doh_bootstrap" ] && _extra_param="${_extra_param} -remote_dns_server ${_doh_bootstrap}" - _extra_param="${_extra_param} -remote_dns_port ${_doh_port} -remote_dns_doh_url ${_doh_url} -remote_dns_doh_host ${_doh_host}" - ;; - esac - [ -n "$remote_dns_client_ip" ] && _extra_param="${_extra_param} -remote_dns_client_ip ${remote_dns_client_ip}" - [ "$remote_fakedns" = "1" ] && _extra_param="${_extra_param} -remote_dns_fake 1" - [ -n "$no_run" ] && _extra_param="${_extra_param} -no_run 1" - lua $UTIL_SINGBOX gen_config ${_extra_param} > $config_file - [ -n "$no_run" ] || ln_run "$(first_type $(config_t_get global_app sing_box_file) sing-box)" "sing-box" $log_file run -c "$config_file" -} - -run_xray() { - local flag type node tcp_redir_port tcp_proxy_way udp_redir_port socks_address socks_port socks_username socks_password http_address http_port http_username http_password - local dns_listen_port direct_dns_query_strategy direct_dns_port direct_dns_udp_server direct_dns_tcp_server remote_dns_protocol remote_dns_udp_server remote_dns_tcp_server remote_dns_doh remote_dns_client_ip remote_fakedns remote_dns_query_strategy dns_cache dns_socks_address dns_socks_port - local loglevel log_file config_file server_host server_port no_run - local _extra_param="" - eval_set_val $@ - [ -z "$type" ] && { - local type=$(echo $(config_n_get $node type) | tr 'A-Z' 'a-z') - if [ "$type" != "xray" ]; then - bin=$(first_type $(config_t_get global_app xray_file) xray) - [ -n "$bin" ] && type="xray" - fi - } - [ -z "$type" ] && return 1 - [ -n "$log_file" ] || local log_file="/dev/null" - [ -z "$loglevel" ] && local loglevel=$(config_t_get global loglevel "warning") - [ -n "$flag" ] && _extra_param="${_extra_param} -flag $flag" - [ -n "$node" ] && _extra_param="${_extra_param} -node $node" - [ -n "$server_host" ] && _extra_param="${_extra_param} -server_host $server_host" - [ -n "$server_port" ] && _extra_param="${_extra_param} -server_port $server_port" - [ -n "$tcp_redir_port" ] && _extra_param="${_extra_param} -tcp_redir_port $tcp_redir_port" - [ -n "$tcp_proxy_way" ] && _extra_param="${_extra_param} -tcp_proxy_way $tcp_proxy_way" - [ -n "$udp_redir_port" ] && _extra_param="${_extra_param} -udp_redir_port $udp_redir_port" - [ -n "$socks_address" ] && _extra_param="${_extra_param} -local_socks_address $socks_address" - [ -n "$socks_port" ] && _extra_param="${_extra_param} -local_socks_port $socks_port" - [ -n "$socks_username" ] && [ -n "$socks_password" ] && _extra_param="${_extra_param} -local_socks_username $socks_username -local_socks_password $socks_password" - [ -n "$http_address" ] && _extra_param="${_extra_param} -local_http_address $http_address" - [ -n "$http_port" ] && _extra_param="${_extra_param} -local_http_port $http_port" - [ -n "$http_username" ] && [ -n "$http_password" ] && _extra_param="${_extra_param} -local_http_username $http_username -local_http_password $http_password" - [ -n "$dns_socks_address" ] && [ -n "$dns_socks_port" ] && _extra_param="${_extra_param} -dns_socks_address ${dns_socks_address} -dns_socks_port ${dns_socks_port}" - [ -n "$dns_listen_port" ] && _extra_param="${_extra_param} -dns_listen_port ${dns_listen_port}" - - if [ -n "$direct_dns_udp_server" ]; then - direct_dns_port=$(echo ${direct_dns_udp_server} | awk -F '#' '{print $2}') - _extra_param="${_extra_param} -direct_dns_udp_server $(echo ${direct_dns_udp_server} | awk -F '#' '{print $1}')" - elif [ -n "$direct_dns_tcp_server" ]; then - direct_dns_port=$(echo ${direct_dns_tcp_server} | awk -F '#' '{print $2}') - _extra_param="${_extra_param} -direct_dns_tcp_server $(echo ${direct_dns_tcp_server} | awk -F '#' '{print $1}')" - else - local local_dns=$(echo -n $(echo "${LOCAL_DNS}" | sed "s/,/\n/g" | head -n1) | tr " " ",") - _extra_param="${_extra_param} -direct_dns_udp_server $(echo ${local_dns} | awk -F '#' '{print $1}')" - direct_dns_port=$(echo ${local_dns} | awk -F '#' '{print $2}') - fi - _extra_param="${_extra_param} -direct_dns_port ${direct_dns_port:-53}" - - direct_dns_query_strategy=${direct_dns_query_strategy:-UseIP} - _extra_param="${_extra_param} -direct_dns_query_strategy ${direct_dns_query_strategy}" - [ -n "$remote_dns_query_strategy" ] && _extra_param="${_extra_param} -remote_dns_query_strategy ${remote_dns_query_strategy}" - [ -n "$remote_dns_client_ip" ] && _extra_param="${_extra_param} -remote_dns_client_ip ${remote_dns_client_ip}" - [ "$remote_fakedns" = "1" ] && _extra_param="${_extra_param} -remote_dns_fake 1" - [ -n "$dns_cache" ] && _extra_param="${_extra_param} -dns_cache ${dns_cache}" - - case "$remote_dns_protocol" in - udp) - local _dns=$(get_first_dns remote_dns_udp_server 53 | sed 's/#/:/g') - local _dns_address=$(echo ${_dns} | awk -F ':' '{print $1}') - local _dns_port=$(echo ${_dns} | awk -F ':' '{print $2}') - _extra_param="${_extra_param} -remote_dns_udp_server ${_dns_address} -remote_dns_udp_port ${_dns_port}" - ;; - tcp|tcp+doh) - local _dns=$(get_first_dns remote_dns_tcp_server 53 | sed 's/#/:/g') - local _dns_address=$(echo ${_dns} | awk -F ':' '{print $1}') - local _dns_port=$(echo ${_dns} | awk -F ':' '{print $2}') - _extra_param="${_extra_param} -remote_dns_tcp_server ${_dns_address} -remote_dns_tcp_port ${_dns_port}" - [ "$remote_dns_protocol" = "tcp+doh" ] && { - local _doh_url _doh_host _doh_port _doh_bootstrap - parse_doh "$remote_dns_doh" _doh_url _doh_host _doh_port _doh_bootstrap - [ -n "$_doh_bootstrap" ] && _extra_param="${_extra_param} -remote_dns_doh_ip ${_doh_bootstrap}" - _extra_param="${_extra_param} -remote_dns_doh_port ${_doh_port} -remote_dns_doh_url ${_doh_url} -remote_dns_doh_host ${_doh_host}" - } - ;; - esac - _extra_param="${_extra_param} -loglevel $loglevel" - [ -n "$no_run" ] && _extra_param="${_extra_param} -no_run 1" - lua $UTIL_XRAY gen_config ${_extra_param} > $config_file - [ -n "$no_run" ] || ln_run "$(first_type $(config_t_get global_app ${type}_file) ${type})" ${type} $log_file run -c "$config_file" -} - -run_dns2socks() { - local flag socks socks_address socks_port socks_username socks_password listen_address listen_port dns cache log_file - local _extra_param="" - eval_set_val $@ - [ -n "$flag" ] && flag="_${flag}" - [ -n "$log_file" ] || log_file="/dev/null" - dns=$(get_first_dns dns 53 | sed 's/#/:/g') - [ -n "$socks" ] && { - socks="${socks//#/:}" - socks_address=$(echo $socks | awk -F ':' '{print $1}') - socks_port=$(echo $socks | awk -F ':' '{print $2}') - } - [ -n "$socks_username" ] && [ -n "$socks_password" ] && _extra_param="${_extra_param} /u $socks_username /p $socks_password" - [ -z "$cache" ] && cache=1 - [ "$cache" = "0" ] && _extra_param="${_extra_param} /d" - ln_run "$(first_type dns2socks)" "dns2socks${flag}" $log_file ${_extra_param} "${socks_address}:${socks_port}" "${dns}" "${listen_address}:${listen_port}" -} - -run_chinadns_ng() { - local _flag _listen_port _dns_local _dns_trust _no_ipv6_trust _use_direct_list _use_proxy_list _gfwlist _chnlist _default_mode _default_tag _no_logic_log _tcp_node _remote_fakedns - local _extra_param="" - eval_set_val $@ - - local _CONF_FILE=$TMP_ACL_PATH/$_flag/chinadns_ng.conf - local _LOG_FILE="/dev/null" - [ "$(config_t_get global log_chinadns_ng "0")" == "1" ] && _LOG_FILE=$TMP_ACL_PATH/$_flag/chinadns_ng.log - - _extra_param="-FLAG ${_flag} -TCP_NODE ${_tcp_node} -LISTEN_PORT ${_listen_port} -DNS_LOCAL ${_dns_local} -DNS_TRUST ${_dns_trust}" - _extra_param="${_extra_param} -USE_DIRECT_LIST ${_use_direct_list} -USE_PROXY_LIST ${_use_proxy_list} -USE_BLOCK_LIST ${_use_block_list}" - _extra_param="${_extra_param} -GFWLIST ${_gfwlist} -CHNLIST ${_chnlist} -NO_IPV6_TRUST ${_no_ipv6_trust} -DEFAULT_MODE ${_default_mode}" - _extra_param="${_extra_param} -DEFAULT_TAG ${_default_tag} -NFTFLAG ${nftflag} -NO_LOGIC_LOG ${_no_logic_log} -REMOTE_FAKEDNS ${_remote_fakedns}" - _extra_param="${_extra_param} -LOG_FILE ${_LOG_FILE}" - - lua $APP_PATH/helper_chinadns_add.lua ${_extra_param} > ${_CONF_FILE} - ln_run "$(first_type chinadns-ng)" chinadns-ng "${_LOG_FILE}" -C ${_CONF_FILE} -} - -run_socks() { - local flag node bind socks_port config_file http_port http_config_file relay_port log_file no_run - eval_set_val $@ - [ -n "$config_file" ] && [ -z "$(echo ${config_file} | grep $TMP_PATH)" ] && config_file=$TMP_PATH/$config_file - [ -n "$http_port" ] || http_port=0 - [ -n "$http_config_file" ] && [ -z "$(echo ${http_config_file} | grep $TMP_PATH)" ] && http_config_file=$TMP_PATH/$http_config_file - if [ -n "$log_file" ] && [ -z "$(echo ${log_file} | grep $TMP_PATH)" ]; then - log_file=$TMP_PATH/$log_file - else - log_file="/dev/null" - fi - - local node2socks_port=0 - local type remarks server_host server_port - if is_socks_wrap "$node"; then - node2socks_port=$(config_n_get ${node#Socks_} port 0) - fi - if [ "$node2socks_port" = "0" ]; then - type=$(echo $(config_n_get $node type) | tr 'A-Z' 'a-z') - remarks=$(config_n_get $node remarks) - server_host=$(config_n_get $node address) - server_port=$(config_n_get $node port) - else - type="socks" - server_host="127.0.0.1" - server_port=$node2socks_port - remarks="Socks 配置($server_port 端口)" - fi - - [ -n "$relay_port" ] && { - server_host="127.0.0.1" - server_port=$relay_port - } - local error_msg tmp - - if [ -n "$server_host" ] && [ -n "$server_port" ]; then - check_host $server_host - [ $? != 0 ] && { - echolog " - Socks节点:[$remarks]${server_host} 是非法的服务器地址,无法启动!" - return 1 - } - tmp="${server_host}:${server_port}" - else - error_msg="某种原因,此 Socks 服务的相关配置已失联,启动中止!" - fi - - if [ "$type" == "sing-box" ] || [ "$type" == "xray" ]; then - local protocol=$(config_n_get $node protocol) - if [ "$protocol" == "_balancing" ] || [ "$protocol" == "_shunt" ] || [ "$protocol" == "_iface" ] || [ "$protocol" == "_urltest" ]; then - unset error_msg - fi - fi - - [ -n "${error_msg}" ] && { - [ "$bind" != "127.0.0.1" ] && echolog " - Socks节点:[$remarks]${tmp},启动中止 ${bind}:${socks_port} ${error_msg}" - return 1 - } - [ "$bind" != "127.0.0.1" ] && echolog " - Socks节点:[$remarks]${tmp},启动 ${bind}:${socks_port}" - - case "$type" in - socks) - local _socks_address _socks_port _socks_username _socks_password - if [ "$node2socks_port" = "0" ]; then - _socks_address=$(config_n_get $node address) - _socks_port=$(config_n_get $node port) - _socks_username=$(config_n_get $node username) - _socks_password=$(config_n_get $node password) - else - _socks_address="127.0.0.1" - _socks_port=$node2socks_port - fi - [ "$http_port" != "0" ] && { - http_flag=1 - config_file="${config_file//SOCKS/HTTP_SOCKS}" - local _extra_param="-local_http_address $bind -local_http_port $http_port" - } - local bin=$(first_type $(config_t_get global_app sing_box_file) sing-box) - if [ -n "$bin" ]; then - type="sing-box" - lua $UTIL_SINGBOX gen_proto_config -local_socks_address $bind -local_socks_port $socks_port ${_extra_param} -server_proto socks -server_address ${_socks_address} -server_port ${_socks_port} -server_username ${_socks_username} -server_password ${_socks_password} > $config_file - ln_run "$bin" ${type} $log_file run -c "$config_file" - else - bin=$(first_type $(config_t_get global_app xray_file) xray) - [ -n "$bin" ] && { - type="xray" - lua $UTIL_XRAY gen_proto_config -local_socks_address $bind -local_socks_port $socks_port ${_extra_param} -server_proto socks -server_address ${_socks_address} -server_port ${_socks_port} -server_username ${_socks_username} -server_password ${_socks_password} > $config_file - ln_run "$bin" ${type} $log_file run -c "$config_file" - } - fi - ;; - sing-box) - [ "$http_port" != "0" ] && { - http_flag=1 - config_file="${config_file//SOCKS/HTTP_SOCKS}" - local _args="http_address=$bind http_port=$http_port" - } - [ -n "$relay_port" ] && _args="${_args} server_host=$server_host server_port=$server_port" - [ -n "$no_run" ] && _args="${_args} no_run=1" - run_singbox flag=$flag node=$node socks_address=$bind socks_port=$socks_port config_file=$config_file log_file=$log_file ${_args} - ;; - xray) - [ "$http_port" != "0" ] && { - http_flag=1 - config_file="${config_file//SOCKS/HTTP_SOCKS}" - local _args="http_address=$bind http_port=$http_port" - } - [ -n "$relay_port" ] && _args="${_args} server_host=$server_host server_port=$server_port" - [ -n "$no_run" ] && _args="${_args} no_run=1" - run_xray flag=$flag node=$node socks_address=$bind socks_port=$socks_port config_file=$config_file log_file=$log_file ${_args} - ;; - trojan*) - lua $UTIL_TROJAN gen_config -node $node -run_type client -local_addr $bind -local_port $socks_port -server_host $server_host -server_port $server_port > $config_file - [ -n "$no_run" ] || ln_run "$(first_type ${type})" "${type}" $log_file -c "$config_file" - ;; - naiveproxy) - lua $UTIL_NAIVE gen_config -node $node -run_type socks -local_addr $bind -local_port $socks_port -server_host $server_host -server_port $server_port > $config_file - [ -n "$no_run" ] || ln_run "$(first_type naive)" naive $log_file "$config_file" - ;; - ssr) - lua $UTIL_SS gen_config -node $node -local_addr $bind -local_port $socks_port -server_host $server_host -server_port $server_port > $config_file - [ -n "$no_run" ] || ln_run "$(first_type ssr-local)" "ssr-local" $log_file -c "$config_file" -v -u - ;; - ss) - [ -n "$no_run" ] || { - local plugin_sh="${config_file%.json}_plugin.sh" - local _extra_param="-plugin_sh $plugin_sh" - } - lua $UTIL_SS gen_config -node $node -local_addr $bind -local_port $socks_port -server_host $server_host -server_port $server_port -mode tcp_and_udp ${_extra_param} > $config_file - [ -n "$no_run" ] || ln_run "$(first_type ss-local)" "ss-local" $log_file -c "$config_file" -v - ;; - ss-rust) - local _extra_param - [ "$http_port" != "0" ] && { - http_flag=1 - config_file="${config_file//SOCKS/HTTP_SOCKS}" - _extra_param="-local_http_address $bind -local_http_port $http_port" - } - [ -n "$no_run" ] || { - local plugin_sh="${config_file%.json}_plugin.sh" - _extra_param="${_extra_param:+$_extra_param }-plugin_sh $plugin_sh" - } - lua $UTIL_SS gen_config -node $node -local_socks_address $bind -local_socks_port $socks_port -server_host $server_host -server_port $server_port ${_extra_param} > $config_file - [ -n "$no_run" ] || ln_run "$(first_type sslocal)" "sslocal" $log_file -c "$config_file" -v - ;; - hysteria2) - [ "$http_port" != "0" ] && { - http_flag=1 - config_file="${config_file//SOCKS/HTTP_SOCKS}" - local _extra_param="-local_http_address $bind -local_http_port $http_port" - } - lua $UTIL_HYSTERIA2 gen_config -node $node -local_socks_address $bind -local_socks_port $socks_port -server_host $server_host -server_port $server_port ${_extra_param} > $config_file - [ -n "$no_run" ] || ln_run "$(first_type $(config_t_get global_app hysteria_file))" "hysteria" $log_file -c "$config_file" client - ;; - tuic) - lua $UTIL_TUIC gen_config -node $node -local_addr $bind -local_port $socks_port -server_host $server_host -server_port $server_port > $config_file - [ -n "$no_run" ] || ln_run "$(first_type tuic-client)" "tuic-client" $log_file -c "$config_file" - ;; - esac - - set_cache_var "node_${node}_socks_port" "${socks_port}" - - # http to socks - [ -z "$http_flag" ] && [ "$http_port" != "0" ] && [ -n "$http_config_file" ] && [ "$type" != "sing-box" ] && [ "$type" != "xray" ] && [ "$type" != "socks" ] && { - local bin=$(first_type $(config_t_get global_app sing_box_file) sing-box) - if [ -n "$bin" ]; then - type="sing-box" - lua $UTIL_SINGBOX gen_proto_config -local_http_address $bind -local_http_port $http_port -server_proto socks -server_address "127.0.0.1" -server_port $socks_port -server_username $_username -server_password $_password > $http_config_file - [ -n "$no_run" ] || ln_run "$bin" ${type} /dev/null run -c "$http_config_file" - else - bin=$(first_type $(config_t_get global_app xray_file) xray) - [ -n "$bin" ] && type="xray" - [ -z "$type" ] && return 1 - lua $UTIL_XRAY gen_proto_config local_http_address $bind -local_http_port $http_port -server_proto socks -server_address "127.0.0.1" -server_port $socks_port -server_username $_username -server_password $_password > $http_config_file - [ -n "$no_run" ] || ln_run "$bin" ${type} /dev/null run -c "$http_config_file" - fi - } - unset http_flag - - [ -z "$no_run" ] && [ "${server_host}" != "127.0.0.1" ] && [ "$type" != "sing-box" ] && [ "$type" != "xray" ] && echo "${node}" >> $TMP_PATH/direct_node_list -} - -run_redir() { - local node proto bind local_port config_file log_file - eval_set_val $@ - local tcp_node_socks_flag tcp_node_http_flag - [ -n "$config_file" ] && [ -z "$(echo ${config_file} | grep $TMP_PATH)" ] && config_file=${GLOBAL_ACL_PATH}/${config_file} - if [ -n "$log_file" ] && [ -z "$(echo ${log_file} | grep $TMP_PATH)" ]; then - log_file=${GLOBAL_ACL_PATH}/${log_file} - else - log_file="/dev/null" - fi - local proto=$(echo $proto | tr 'A-Z' 'a-z') - local PROTO=$(echo $proto | tr 'a-z' 'A-Z') - - local node2socks_port=0 - local type remarks server_host port - if is_socks_wrap "$node"; then - node2socks_port=$(config_n_get ${node#Socks_} port 0) - fi - if [ "$node2socks_port" = "0" ]; then - type=$(echo $(config_n_get $node type) | tr 'A-Z' 'a-z') - remarks=$(config_n_get $node remarks) - server_host=$(config_n_get $node address) - port=$(config_n_get $node port) - else - type="socks" - server_host="127.0.0.1" - port=$node2socks_port - remarks="Socks 配置($port 端口)" - fi - - local enable_log=$(config_t_get global log_${proto} 1) - [ "$enable_log" != "1" ] && log_file="/dev/null" - [ -n "$server_host" ] && [ -n "$port" ] && { - check_host $server_host - [ $? != 0 ] && { - echolog "${PROTO}节点:[$remarks]${server_host} 是非法的服务器地址,无法启动!" - return 1 - } - } - [ "$bind" != "127.0.0.1" ] && echolog "${PROTO}节点:[$remarks],监听端口:$local_port" - - case "$PROTO" in - UDP) - case "$type" in - socks) - local _socks_address _socks_port _socks_username _socks_password - if [ "$node2socks_port" = "0" ]; then - _socks_address=$(config_n_get $node address) - _socks_port=$(config_n_get $node port) - _socks_username=$(config_n_get $node username) - _socks_password=$(config_n_get $node password) - else - _socks_address="127.0.0.1" - _socks_port=$node2socks_port - fi - run_ipt2socks flag=default proto=UDP local_port=${local_port} socks_address=${_socks_address} socks_port=${_socks_port} socks_username=${_socks_username} socks_password=${_socks_password} log_file=${log_file} - ;; - sing-box) - local protocol=$(config_n_get $node protocol) - [ "$protocol" = "_shunt" ] && { - local geoip_path="${V2RAY_LOCATION_ASSET%*/}/geoip.dat" - local geosite_path="${V2RAY_LOCATION_ASSET%*/}/geosite.dat" - if [ ! -s "$geoip_path" ] || [ ! -s "$geosite_path" ]; then - echolog "* 缺少Geo规则文件,UDP Sing-Box分流节点无法正常使用!" - fi - } - run_singbox flag=UDP node=$node udp_redir_port=$local_port config_file=$config_file log_file=$log_file - ;; - xray) - local protocol=$(config_n_get $node protocol) - [ "$protocol" = "_shunt" ] && { - local geoip_path="${V2RAY_LOCATION_ASSET%*/}/geoip.dat" - local geosite_path="${V2RAY_LOCATION_ASSET%*/}/geosite.dat" - if [ ! -s "$geoip_path" ] || [ ! -s "$geosite_path" ]; then - echolog "* 缺少Geo规则文件,UDP Xray分流节点无法正常使用!" - fi - } - run_xray flag=UDP node=$node udp_redir_port=$local_port config_file=$config_file log_file=$log_file - ;; - trojan*) - local loglevel=$(config_t_get global trojan_loglevel "2") - lua $UTIL_TROJAN gen_config -node $node -run_type nat -local_addr "0.0.0.0" -local_port $local_port -loglevel $loglevel > $config_file - ln_run "$(first_type ${type})" "${type}" $log_file -c "$config_file" - ;; - naiveproxy) - echolog "Naiveproxy不支持UDP转发!" - ;; - ssr) - lua $UTIL_SS gen_config -node $node -local_addr "0.0.0.0" -local_port $local_port > $config_file - ln_run "$(first_type ssr-redir)" "ssr-redir" $log_file -c "$config_file" -v -U - ;; - ss) - local plugin_sh="${config_file%.json}_plugin.sh" - local _extra_param="-plugin_sh $plugin_sh" - lua $UTIL_SS gen_config -node $node -local_addr "0.0.0.0" -local_port $local_port -mode udp_only $_extra_param > $config_file - ln_run "$(first_type ss-redir)" "ss-redir" $log_file -c "$config_file" -v - ;; - ss-rust) - local plugin_sh="${config_file%.json}_plugin.sh" - local _extra_param="-plugin_sh $plugin_sh" - lua $UTIL_SS gen_config -node $node -local_udp_redir_port $local_port $_extra_param > $config_file - ln_run "$(first_type sslocal)" "sslocal" $log_file -c "$config_file" -v - ;; - hysteria2) - lua $UTIL_HYSTERIA2 gen_config -node $node -local_udp_redir_port $local_port > $config_file - ln_run "$(first_type $(config_t_get global_app hysteria_file))" "hysteria" $log_file -c "$config_file" client - ;; - tuic) - echolog "TUIC不支持UDP转发!" - ;; - esac - ;; - TCP) - [ "$TCP_UDP" = "1" ] && echolog "UDP节点:与TCP节点相同" - tcp_node_socks=1 - tcp_node_socks_bind_local=$(config_t_get global tcp_node_socks_bind_local 1) - tcp_node_socks_bind="127.0.0.1" - [ "${tcp_node_socks_bind_local}" != "1" ] && tcp_node_socks_bind="0.0.0.0" - tcp_node_socks_port=$(get_new_port $(config_t_get global tcp_node_socks_port 1070)) - tcp_node_http_port=$(config_t_get global tcp_node_http_port 0) - [ "$tcp_node_http_port" != "0" ] && tcp_node_http=1 - if [ $PROXY_IPV6 == "1" ]; then - echolog "开启实验性IPv6透明代理(TProxy),请确认您的节点及类型支持IPv6!" - fi - - if [ "${TCP_PROXY_WAY}" = "redirect" ]; then - can_ipt=$(echo "$REDIRECT_LIST" | grep "$type") - elif [ "${TCP_PROXY_WAY}" = "tproxy" ]; then - can_ipt=$(echo "$TPROXY_LIST" | grep "$type") - fi - [ -z "$can_ipt" ] && type="socks" - - case "$type" in - socks) - _socks_flag=1 - if [ "$node2socks_port" = "0" ]; then - _socks_address=$(config_n_get $node address) - _socks_port=$(config_n_get $node port) - _socks_username=$(config_n_get $node username) - _socks_password=$(config_n_get $node password) - else - _socks_address="127.0.0.1" - _socks_port=$node2socks_port - fi - [ -z "$can_ipt" ] && { - local _config_file=$config_file - _config_file="TCP_SOCKS_${node}.json" - local _port=$(get_new_port 2080) - run_socks flag="TCP" node=$node bind=127.0.0.1 socks_port=${_port} config_file=${_config_file} - _socks_address=127.0.0.1 - _socks_port=${_port} - unset _socks_username - unset _socks_password - } - ;; - sing-box) - local _flag="TCP" - local _args="" - [ "$tcp_node_socks" = "1" ] && { - tcp_node_socks_flag=1 - _args="${_args} socks_address=${tcp_node_socks_bind} socks_port=${tcp_node_socks_port}" - config_file="${config_file//TCP/TCP_SOCKS}" - } - [ "$tcp_node_http" = "1" ] && { - tcp_node_http_flag=1 - _args="${_args} http_port=${tcp_node_http_port}" - config_file="${config_file//TCP/TCP_HTTP}" - } - [ "$TCP_UDP" = "1" ] && { - UDP_REDIR_PORT=$local_port - unset UDP_NODE - _flag="TCP_UDP" - _args="${_args} udp_redir_port=${UDP_REDIR_PORT}" - config_file="${config_file//TCP/TCP_UDP}" - } - - local protocol=$(config_n_get $node protocol) - local default_node=$(config_n_get $node default_node) - local v2ray_dns_mode=$(config_t_get global v2ray_dns_mode tcp) - [ "${DNS_MODE}" != "sing-box" ] && [ "${DNS_MODE}" != "udp" ] && [ "$protocol" = "_shunt" ] && [ "$default_node" = "_direct" ] && { - DNS_MODE="sing-box" - v2ray_dns_mode="tcp" - echolog "* 当前TCP节点采用Sing-Box分流且默认节点为直连,远程DNS过滤模式将默认使用Sing-Box(TCP),防止环回!" - } - - [ "$protocol" = "_shunt" ] && { - local geoip_path="${V2RAY_LOCATION_ASSET%*/}/geoip.dat" - local geosite_path="${V2RAY_LOCATION_ASSET%*/}/geosite.dat" - if [ ! -s "$geoip_path" ] || [ ! -s "$geosite_path" ]; then - echolog "* 缺少Geo规则文件,TCP Sing-Box分流节点无法正常使用!" - fi - } - - [ "${DNS_MODE}" = "sing-box" ] && { - NO_PLUGIN_DNS=1 - config_file="${config_file//.json/_DNS.json}" - _args="${_args} remote_dns_query_strategy=${REMOTE_DNS_QUERY_STRATEGY}" - DNSMASQ_FILTER_PROXY_IPV6=0 - local _remote_dns_client_ip=$(config_t_get global remote_dns_client_ip) - [ -n "${_remote_dns_client_ip}" ] && _args="${_args} remote_dns_client_ip=${_remote_dns_client_ip}" - [ "${DNS_CACHE}" == "0" ] && _args="${_args} dns_cache=0" - resolve_dns_port=${NEXT_DNS_LISTEN_PORT} - _args="${_args} dns_listen_port=${resolve_dns_port}" - - case "$(config_t_get global direct_dns_mode "auto")" in - udp) - _args="${_args} direct_dns_udp_server=$(config_t_get global direct_dns 223.5.5.5 | sed -E 's/^\[([^]]+)\]:(.*)$/\1#\2/; t; s/^([^:]+):([0-9]+)$/\1#\2/')" - ;; - tcp) - _args="${_args} direct_dns_tcp_server=$(config_t_get global direct_dns 223.5.5.5 | sed -E 's/^\[([^]]+)\]:(.*)$/\1#\2/; t; s/^([^:]+):([0-9]+)$/\1#\2/')" - ;; - esac - - _args="${_args} remote_dns_protocol=${v2ray_dns_mode}" - case "$v2ray_dns_mode" in - udp|tcp) - local _proto="$v2ray_dns_mode" - _args="${_args} remote_dns_${_proto}_server=${REMOTE_DNS}" - resolve_dns_log="Sing-Box DNS(127.0.0.1#${resolve_dns_port}) -> ${_proto}://${REMOTE_DNS}" - ;; - doh) - remote_dns_doh=$(config_t_get global remote_dns_doh "https://1.1.1.1/dns-query") - _args="${_args} remote_dns_doh=${remote_dns_doh}" - resolve_dns_log="Sing-Box DNS(127.0.0.1#${resolve_dns_port}) -> ${remote_dns_doh}" - ;; - esac - local remote_fakedns=$(config_t_get global remote_fakedns 0) - [ "${remote_fakedns}" = "1" ] && { - fakedns=1 - _args="${_args} remote_fakedns=1" - resolve_dns_log="${resolve_dns_log} + FakeDNS" - } - NEXT_DNS_LISTEN_PORT=$(expr $NEXT_DNS_LISTEN_PORT + 1) - } - run_singbox flag=$_flag node=$node tcp_redir_port=$local_port tcp_proxy_way=$TCP_PROXY_WAY config_file=$config_file log_file=$log_file ${_args} - ;; - xray) - local _flag="TCP" - local _args="" - [ "$tcp_node_socks" = "1" ] && { - tcp_node_socks_flag=1 - _args="${_args} socks_address=${tcp_node_socks_bind} socks_port=${tcp_node_socks_port}" - config_file="${config_file//TCP/TCP_SOCKS}" - } - [ "$tcp_node_http" = "1" ] && { - tcp_node_http_flag=1 - _args="${_args} http_port=${tcp_node_http_port}" - config_file="${config_file//TCP/TCP_HTTP}" - } - [ "$TCP_UDP" = "1" ] && { - UDP_REDIR_PORT=$local_port - unset UDP_NODE - _flag="TCP_UDP" - _args="${_args} udp_redir_port=${UDP_REDIR_PORT}" - config_file="${config_file//TCP/TCP_UDP}" - } - - local protocol=$(config_n_get $node protocol) - local default_node=$(config_n_get $node default_node) - local v2ray_dns_mode=$(config_t_get global v2ray_dns_mode tcp) - [ "${DNS_MODE}" != "xray" ] && [ "${DNS_MODE}" != "udp" ] && [ "$protocol" = "_shunt" ] && [ "$default_node" = "_direct" ] && { - DNS_MODE="xray" - v2ray_dns_mode="tcp" - echolog "* 当前TCP节点采用Xray分流且默认节点为直连,远程DNS过滤模式将默认使用Xray(TCP),防止环回!" - } - - [ "$protocol" = "_shunt" ] && { - local geoip_path="${V2RAY_LOCATION_ASSET%*/}/geoip.dat" - local geosite_path="${V2RAY_LOCATION_ASSET%*/}/geosite.dat" - if [ ! -s "$geoip_path" ] || [ ! -s "$geosite_path" ]; then - echolog "* 缺少Geo规则文件,TCP Xray分流节点无法正常使用!" - fi - } - - [ "${DNS_MODE}" = "xray" ] && { - NO_PLUGIN_DNS=1 - config_file="${config_file//.json/_DNS.json}" - _args="${_args} remote_dns_query_strategy=${REMOTE_DNS_QUERY_STRATEGY}" - DNSMASQ_FILTER_PROXY_IPV6=0 - local _remote_dns_client_ip=$(config_t_get global remote_dns_client_ip) - [ -n "${_remote_dns_client_ip}" ] && _args="${_args} remote_dns_client_ip=${_remote_dns_client_ip}" - [ "${DNS_CACHE}" == "0" ] && _args="${_args} dns_cache=0" - resolve_dns_port=${NEXT_DNS_LISTEN_PORT} - _args="${_args} dns_listen_port=${resolve_dns_port}" - - case "$(config_t_get global direct_dns_mode "auto")" in - udp) - _args="${_args} direct_dns_udp_server=$(config_t_get global direct_dns 223.5.5.5 | sed -E 's/^\[([^]]+)\]:(.*)$/\1#\2/; t; s/^([^:]+):([0-9]+)$/\1#\2/')" - ;; - tcp) - _args="${_args} direct_dns_tcp_server=$(config_t_get global direct_dns 223.5.5.5 | sed -E 's/^\[([^]]+)\]:(.*)$/\1#\2/; t; s/^([^:]+):([0-9]+)$/\1#\2/')" - ;; - esac - - _args="${_args} remote_dns_protocol=${v2ray_dns_mode}" - case "$v2ray_dns_mode" in - udp) - _args="${_args} remote_dns_udp_server=${REMOTE_DNS}" - resolve_dns_log="Xray DNS(127.0.0.1#${resolve_dns_port}) -> udp://${REMOTE_DNS}" - ;; - tcp|tcp+doh) - _args="${_args} remote_dns_tcp_server=${REMOTE_DNS}" - if [ "$v2ray_dns_mode" = "tcp+doh" ]; then - remote_dns_doh=$(config_t_get global remote_dns_doh "https://1.1.1.1/dns-query") - _args="${_args} remote_dns_doh=${remote_dns_doh}" - resolve_dns_log="Xray DNS(127.0.0.1#${resolve_dns_port}) -> (${remote_dns_doh})(A/AAAA) + tcp://${REMOTE_DNS}" - else - resolve_dns_log="Xray DNS(127.0.0.1#${resolve_dns_port}) -> tcp://${REMOTE_DNS}" - fi - ;; - esac - local remote_fakedns=$(config_t_get global remote_fakedns 0) - [ "${remote_fakedns}" = "1" ] && { - fakedns=1 - _args="${_args} remote_fakedns=1" - resolve_dns_log="${resolve_dns_log} + FakeDNS" - } - NEXT_DNS_LISTEN_PORT=$(expr $NEXT_DNS_LISTEN_PORT + 1) - } - run_xray flag=$_flag node=$node tcp_redir_port=$local_port tcp_proxy_way=$TCP_PROXY_WAY config_file=$config_file log_file=$log_file ${_args} - ;; - trojan*) - [ "${TCP_PROXY_WAY}" = "tproxy" ] && lua_tproxy_arg="-use_tproxy true" - [ "$TCP_UDP" = "1" ] && { - config_file="${config_file//TCP/TCP_UDP}" - UDP_REDIR_PORT=$TCP_REDIR_PORT - unset UDP_NODE - } - local loglevel=$(config_t_get global trojan_loglevel "2") - lua $UTIL_TROJAN gen_config -node $node -run_type nat -local_addr "0.0.0.0" -local_port $local_port -loglevel $loglevel $lua_tproxy_arg > $config_file - ln_run "$(first_type ${type})" "${type}" $log_file -c "$config_file" - ;; - naiveproxy) - lua $UTIL_NAIVE gen_config -node $node -run_type redir -local_addr "0.0.0.0" -local_port $local_port > $config_file - ln_run "$(first_type naive)" naive $log_file "$config_file" - ;; - ssr) - [ "${TCP_PROXY_WAY}" = "tproxy" ] && lua_tproxy_arg="-tcp_tproxy true" - [ "$TCP_UDP" = "1" ] && { - config_file="${config_file//TCP/TCP_UDP}" - UDP_REDIR_PORT=$TCP_REDIR_PORT - unset UDP_NODE - _extra_param="-u" - } - lua $UTIL_SS gen_config -node $node -local_addr "0.0.0.0" -local_port $local_port $lua_tproxy_arg > $config_file - ln_run "$(first_type ssr-redir)" "ssr-redir" $log_file -c "$config_file" -v ${_extra_param} - ;; - ss) - [ "${TCP_PROXY_WAY}" = "tproxy" ] && lua_tproxy_arg="-tcp_tproxy true" - local lua_mode_arg="-mode tcp_only" - [ "$TCP_UDP" = "1" ] && { - config_file="${config_file//TCP/TCP_UDP}" - UDP_REDIR_PORT=$TCP_REDIR_PORT - unset UDP_NODE - lua_mode_arg="-mode tcp_and_udp" - } - local plugin_sh="${config_file%.json}_plugin.sh" - lua_mode_arg="${lua_mode_arg} -plugin_sh $plugin_sh" - lua $UTIL_SS gen_config -node $node -local_addr "0.0.0.0" -local_port $local_port $lua_mode_arg $lua_tproxy_arg > $config_file - ln_run "$(first_type ss-redir)" "ss-redir" $log_file -c "$config_file" -v - ;; - ss-rust) - local _extra_param="-local_tcp_redir_port $local_port" - [ "${TCP_PROXY_WAY}" = "tproxy" ] && _extra_param="${_extra_param} -tcp_tproxy true" - [ "$tcp_node_socks" = "1" ] && { - tcp_node_socks_flag=1 - config_file="${config_file//TCP/TCP_SOCKS}" - _extra_param="${_extra_param} -local_socks_address ${tcp_node_socks_bind} -local_socks_port ${tcp_node_socks_port}" - } - [ "$tcp_node_http" = "1" ] && { - tcp_node_http_flag=1 - config_file="${config_file//TCP/TCP_HTTP}" - _extra_param="${_extra_param} -local_http_port ${tcp_node_http_port}" - } - [ "$TCP_UDP" = "1" ] && { - config_file="${config_file//TCP/TCP_UDP}" - UDP_REDIR_PORT=$TCP_REDIR_PORT - unset UDP_NODE - _extra_param="${_extra_param} -local_udp_redir_port $local_port" - } - local plugin_sh="${config_file%.json}_plugin.sh" - _extra_param="${_extra_param} -plugin_sh $plugin_sh" - lua $UTIL_SS gen_config -node $node ${_extra_param} > $config_file - ln_run "$(first_type sslocal)" "sslocal" $log_file -c "$config_file" -v - ;; - hysteria2) - local _extra_param="-local_tcp_redir_port $local_port" - [ "$tcp_node_socks" = "1" ] && { - tcp_node_socks_flag=1 - config_file="${config_file//TCP/TCP_SOCKS}" - _extra_param="${_extra_param} -local_socks_address ${tcp_node_socks_bind} -local_socks_port ${tcp_node_socks_port}" - } - [ "$tcp_node_http" = "1" ] && { - tcp_node_http_flag=1 - config_file="${config_file//TCP/TCP_HTTP}" - _extra_param="${_extra_param} -local_http_port ${tcp_node_http_port}" - } - [ "$TCP_UDP" = "1" ] && { - config_file="${config_file//TCP/TCP_UDP}" - UDP_REDIR_PORT=$TCP_REDIR_PORT - unset UDP_NODE - _extra_param="${_extra_param} -local_udp_redir_port $local_port" - } - _extra_param="${_extra_param} -tcp_proxy_way ${TCP_PROXY_WAY}" - lua $UTIL_HYSTERIA2 gen_config -node $node ${_extra_param} > $config_file - ln_run "$(first_type $(config_t_get global_app hysteria_file))" "hysteria" $log_file -c "$config_file" client - ;; - esac - if [ -n "${_socks_flag}" ]; then - local _flag="TCP" - [ "$TCP_UDP" = "1" ] && { - _flag="TCP_UDP" - UDP_REDIR_PORT=$TCP_REDIR_PORT - unset UDP_NODE - } - local _socks_tproxy="" - [ "${TCP_PROXY_WAY}" = "tproxy" ] && _socks_tproxy="1" - run_ipt2socks flag=default proto=${_flag} tcp_tproxy=${_socks_tproxy} local_port=${local_port} socks_address=${_socks_address} socks_port=${_socks_port} socks_username=${_socks_username} socks_password=${_socks_password} log_file=${log_file} - fi - - [ -z "$tcp_node_socks_flag" ] && { - [ "$tcp_node_socks" = "1" ] && { - local config_file="SOCKS_TCP.json" - local log_file="SOCKS_TCP.log" - local http_port=0 - local http_config_file="HTTP2SOCKS_TCP.json" - [ "$tcp_node_http" = "1" ] && [ -z "$tcp_node_http_flag" ] && { - http_port=$tcp_node_http_port - } - run_socks flag=TCP node=$node bind=$tcp_node_socks_bind socks_port=$tcp_node_socks_port config_file=$config_file http_port=$http_port http_config_file=$http_config_file - } - } - - [ "$tcp_node_socks" = "1" ] && { - TCP_SOCKS_server="127.0.0.1:$tcp_node_socks_port" - set_cache_var "GLOBAL_TCP_SOCKS_server" "${TCP_SOCKS_server}" - } - ;; - esac - unset tcp_node_socks_flag tcp_node_http_flag - [ "$type" != "sing-box" ] && [ "$type" != "xray" ] && echo "${node}" >> $TMP_PATH/direct_node_list - [ -n "${redir_port}" ] && set_cache_var "node_${node}_${PROTO}_redir_port" "${local_port}" -} - -start_redir() { - local proto=${1} - eval node=\$${proto}_NODE - if [ -n "$node" ]; then - TYPE=$(echo $(config_n_get $node type) | tr 'A-Z' 'a-z') - local config_file="${proto}.json" - local log_file="${proto}.log" - eval current_port=\$${proto}_REDIR_PORT - local port=$(echo $(get_new_port $current_port $proto)) - eval ${proto}_REDIR_PORT=$port - run_redir node=$node proto=${proto} bind=0.0.0.0 local_port=$port config_file=$config_file log_file=$log_file - set_cache_var "ACL_GLOBAL_${proto}_node" "${node}" - set_cache_var "ACL_GLOBAL_${proto}_redir_port" "${port}" - [ "$TCP_UDP" = "1" ] && { - set_cache_var "ACL_GLOBAL_UDP_node" "${node}" - set_cache_var "ACL_GLOBAL_UDP_redir_port" "${port}" - } - else - [ "${proto}" = "UDP" ] && [ "$TCP_UDP" = "1" ] && return - echolog "${proto}节点没有选择或为空,不代理${proto}。" - fi -} - -start_socks() { - [ "$SOCKS_ENABLED" = "1" ] && { - local ids=$(uci show $CONFIG | grep "=socks" | awk -F '.' '{print $2}' | awk -F '=' '{print $1}') - [ -n "$ids" ] && { - echolog "分析 Socks 服务的节点配置..." - for id in $ids; do - local enabled=$(config_n_get $id enabled 0) - [ "$enabled" == "0" ] && continue - local node=$(config_n_get $id node) - [ -z "$node" ] && continue - local bind_local=$(config_n_get $id bind_local 0) - local bind="0.0.0.0" - [ "$bind_local" = "1" ] && bind="127.0.0.1" - local port=$(config_n_get $id port) - local config_file="SOCKS_${id}.json" - local log_file="SOCKS_${id}.log" - local log=$(config_n_get $id log 1) - [ "$log" == "0" ] && log_file="" - local http_port=$(config_n_get $id http_port 0) - local http_config_file="HTTP2SOCKS_${id}.json" - run_socks flag=$id node=$node bind=$bind socks_port=$port config_file=$config_file http_port=$http_port http_config_file=$http_config_file log_file=$log_file - set_cache_var "socks_${id}" "$node" - - #自动切换逻辑 - local enable_autoswitch=$(config_n_get $id enable_autoswitch 0) - [ "$enable_autoswitch" = "1" ] && $APP_PATH/socks_auto_switch.sh ${id} > /dev/null 2>&1 & - done - } - } -} - -socks_node_switch() { - local flag new_node - eval_set_val $@ - [ -n "$flag" ] && [ -n "$new_node" ] && { - local prefix pf filename - # 结束 SS 插件进程 - for prefix in "" "HTTP_"; do - pf="$TMP_PATH/${prefix}SOCKS_${flag}_plugin.pid" - [ -s "$pf" ] && kill -9 "$(head -n1 "$pf")" >/dev/null 2>&1 - done - - pgrep -af "$TMP_BIN_PATH" | awk -v P1="${flag}" 'BEGIN{IGNORECASE=1}$0~P1 && !/acl\/|acl_/{print $1}' | xargs kill -9 >/dev/null 2>&1 - for prefix in "" "HTTP_" "HTTP2"; do - rm -rf "$TMP_PATH/${prefix}SOCKS_${flag}"* - done - - for filename in $(ls ${TMP_SCRIPT_FUNC_PATH}); do - cmd=$(cat ${TMP_SCRIPT_FUNC_PATH}/${filename}) - [ -n "$(echo $cmd | grep "${flag}")" ] && rm -f ${TMP_SCRIPT_FUNC_PATH}/${filename} - done - local bind_local=$(config_n_get $flag bind_local 0) - local bind="0.0.0.0" - [ "$bind_local" = "1" ] && bind="127.0.0.1" - local port=$(config_n_get $flag port) - local config_file="SOCKS_${flag}.json" - local log_file="SOCKS_${flag}.log" - local log=$(config_n_get $flag log 1) - [ "$log" == "0" ] && log_file="" - local http_port=$(config_n_get $flag http_port 0) - local http_config_file="HTTP2SOCKS_${flag}.json" - LOG_FILE="/dev/null" - run_socks flag=$flag node=$new_node bind=$bind socks_port=$port config_file=$config_file http_port=$http_port http_config_file=$http_config_file log_file=$log_file - set_cache_var "socks_${flag}" "$new_node" - local USE_TABLES=$(get_cache_var "USE_TABLES") - [ -n "$USE_TABLES" ] && source $APP_PATH/${USE_TABLES}.sh filter_direct_node_list - } -} - -clean_log() { - logsnum=$(cat $LOG_FILE 2>/dev/null | wc -l) - [ "$logsnum" -gt 1000 ] && { - echo "" > $LOG_FILE - echolog "日志文件过长,清空处理!" - } -} - -clean_crontab() { - [ -f "/tmp/lock/${CONFIG}_cron.lock" ] && return - touch /etc/crontabs/root - #sed -i "/${CONFIG}/d" /etc/crontabs/root >/dev/null 2>&1 - sed -i "/$(echo "/etc/init.d/${CONFIG}" | sed 's#\/#\\\/#g')/d" /etc/crontabs/root >/dev/null 2>&1 - sed -i "/$(echo "lua ${APP_PATH}/rule_update.lua log" | sed 's#\/#\\\/#g')/d" /etc/crontabs/root >/dev/null 2>&1 - sed -i "/$(echo "lua ${APP_PATH}/subscribe.lua start" | sed 's#\/#\\\/#g')/d" /etc/crontabs/root >/dev/null 2>&1 - - pgrep -af "${CONFIG}/" | awk '/tasks\.sh/{print $1}' | xargs kill -9 >/dev/null 2>&1 - rm -rf /tmp/lock/${CONFIG}_tasks.lock -} - -start_crontab() { - if [ "$ENABLED_DEFAULT_ACL" == 1 ] || [ "$ENABLED_ACLS" == 1 ]; then - start_daemon=$(config_t_get global_delay start_daemon 0) - [ "$start_daemon" = "1" ] && $APP_PATH/monitor.sh > /dev/null 2>&1 & - fi - - [ -f "/tmp/lock/${CONFIG}_cron.lock" ] && { - rm -rf "/tmp/lock/${CONFIG}_cron.lock" - echolog "当前为计划任务自动运行,不重新配置定时任务。" - return - } - - clean_crontab - - [ "$ENABLED" != 1 ] && { - /etc/init.d/cron restart - return - } - - stop_week_mode=$(config_t_get global_delay stop_week_mode) - stop_time_mode=$(config_t_get global_delay stop_time_mode) - if [ -n "$stop_week_mode" ]; then - local t="0 $stop_time_mode * * $stop_week_mode" - [ "$stop_week_mode" = "7" ] && t="0 $stop_time_mode * * *" - if [ "$stop_week_mode" = "8" ]; then - update_loop=1 - else - echo "$t /etc/init.d/$CONFIG stop > /dev/null 2>&1 &" >>/etc/crontabs/root - fi - echolog "配置定时任务:自动关闭服务。" - fi - start_week_mode=$(config_t_get global_delay start_week_mode) - start_time_mode=$(config_t_get global_delay start_time_mode) - if [ -n "$start_week_mode" ]; then - local t="0 $start_time_mode * * $start_week_mode" - [ "$start_week_mode" = "7" ] && t="0 $start_time_mode * * *" - if [ "$start_week_mode" = "8" ]; then - update_loop=1 - else - echo "$t /etc/init.d/$CONFIG start > /dev/null 2>&1 &" >>/etc/crontabs/root - fi - echolog "配置定时任务:自动开启服务。" - fi - restart_week_mode=$(config_t_get global_delay restart_week_mode) - restart_time_mode=$(config_t_get global_delay restart_time_mode) - if [ -n "$restart_week_mode" ]; then - local t="0 $restart_time_mode * * $restart_week_mode" - [ "$restart_week_mode" = "7" ] && t="0 $restart_time_mode * * *" - if [ "$restart_week_mode" = "8" ]; then - update_loop=1 - else - echo "$t /etc/init.d/$CONFIG restart > /dev/null 2>&1 &" >>/etc/crontabs/root - fi - echolog "配置定时任务:自动重启服务。" - fi - - autoupdate=$(config_t_get global_rules auto_update) - weekupdate=$(config_t_get global_rules week_update) - dayupdate=$(config_t_get global_rules time_update) - if [ "$autoupdate" = "1" ]; then - local t="0 $dayupdate * * $weekupdate" - [ "$weekupdate" = "7" ] && t="0 $dayupdate * * *" - if [ "$weekupdate" = "8" ]; then - update_loop=1 - else - echo "$t lua $APP_PATH/rule_update.lua log all cron > /dev/null 2>&1 &" >>/etc/crontabs/root - fi - echolog "配置定时任务:自动更新规则。" - fi - - TMP_SUB_PATH=$TMP_PATH/sub_crontabs - mkdir -p $TMP_SUB_PATH - for item in $(uci show ${CONFIG} | grep "=subscribe_list" | cut -d '.' -sf 2 | cut -d '=' -sf 1); do - if [ "$(config_n_get $item auto_update 0)" = "1" ]; then - cfgid=$(uci show ${CONFIG}.$item | head -n 1 | cut -d '.' -sf 2 | cut -d '=' -sf 1) - remark=$(config_n_get $item remark) - week_update=$(config_n_get $item week_update) - time_update=$(config_n_get $item time_update) - echo "$cfgid" >> $TMP_SUB_PATH/${week_update}_${time_update} - echolog "配置定时任务:自动更新【$remark】订阅。" - fi - done - - [ -d "${TMP_SUB_PATH}" ] && { - for name in $(ls ${TMP_SUB_PATH}); do - week_update=$(echo $name | awk -F '_' '{print $1}') - time_update=$(echo $name | awk -F '_' '{print $2}') - cfgids=$(echo -n $(cat ${TMP_SUB_PATH}/${name}) | sed 's# #,#g') - local t="0 $time_update * * $week_update" - [ "$week_update" = "7" ] && t="0 $time_update * * *" - if [ "$week_update" = "8" ]; then - update_loop=1 - else - echo "$t lua $APP_PATH/subscribe.lua start $cfgids cron > /dev/null 2>&1 &" >>/etc/crontabs/root - fi - done - rm -rf $TMP_SUB_PATH - } - - if [ "$ENABLED_DEFAULT_ACL" == 1 ] || [ "$ENABLED_ACLS" == 1 ]; then - [ "$update_loop" = "1" ] && { - $APP_PATH/tasks.sh > /dev/null 2>&1 & - echolog "自动更新:启动循环更新进程。" - } - else - echolog "运行于非代理模式,仅允许服务启停的定时任务。" - fi - - /etc/init.d/cron restart -} - -stop_crontab() { - [ -f "/tmp/lock/${CONFIG}_cron.lock" ] && return - clean_crontab - /etc/init.d/cron restart - #echolog "清除定时执行命令。" -} - -start_dns() { - echolog "DNS域名解析:" - - local china_ng_local_dns=$(IFS=','; set -- $LOCAL_DNS; [ "${1%%[#:]*}" = "127.0.0.1" ] && echo "$1" || ([ -n "$2" ] && echo "$*" || echo "$1")) - local sing_box_local_dns= - local direct_dns_mode=$(config_t_get global direct_dns_mode "auto") - - #获取访问控制节点所使用的DNS分流模式 - local ACL_RULE_DNSMASQ=0 - for acl_section in $(uci show ${CONFIG} | grep "=acl_rule" | cut -d '.' -sf 2 | cut -d '=' -sf 1); do - if [ "$(config_n_get $acl_section enabled)" = "1" ] && \ - [ "$(config_n_get $acl_section dns_shunt)" = "dnsmasq" ]; then - ACL_RULE_DNSMASQ=1 - break - fi - done - - case "$direct_dns_mode" in - udp) - LOCAL_DNS=$(config_t_get global direct_dns 223.5.5.5 | sed -E 's/^\[([^]]+)\]:(.*)$/\1#\2/; t; s/^([^:]+):([0-9]+)$/\1#\2/') - china_ng_local_dns=${LOCAL_DNS} - sing_box_local_dns="direct_dns_udp_server=${LOCAL_DNS}" - ;; - tcp) - local DIRECT_DNS=$(config_t_get global direct_dns 223.5.5.5 | sed -E 's/^\[([^]]+)\]:(.*)$/\1#\2/; t; s/^([^:]+):([0-9]+)$/\1#\2/') - china_ng_local_dns="tcp://${DIRECT_DNS}" - sing_box_local_dns="direct_dns_tcp_server=${DIRECT_DNS}" - - #当全局(包括访问控制节点)开启chinadns-ng时,不启动新进程。 - [ "$DNS_SHUNT" != "chinadns-ng" ] || [ "$ACL_RULE_DNSMASQ" = "1" ] && { - LOCAL_DNS="127.0.0.1#${NEXT_DNS_LISTEN_PORT}" - local china_ng_c_dns="tcp://$(get_first_dns DIRECT_DNS 53 | sed -E 's/^\[([^]]+)\]:(.*)$/\1#\2/; t; s/^([^:]+):([0-9]+)$/\1#\2/')" - ln_run "$(first_type chinadns-ng)" chinadns-ng "/dev/null" -b :: -l ${NEXT_DNS_LISTEN_PORT} -c ${china_ng_c_dns} -d chn - echolog " - ChinaDNS-NG(${LOCAL_DNS}) -> ${china_ng_c_dns}" - echolog " * 请确保上游直连 DNS 支持 TCP 查询。" - NEXT_DNS_LISTEN_PORT=$(expr $NEXT_DNS_LISTEN_PORT + 1) - } - ;; - auto) - #Automatic logic is already done by default - : - ;; - esac - - # 追加直连DNS到iptables/nftables - [ "$(config_t_get global_haproxy balancing_enable 0)" != "1" ] && IPT_APPEND_DNS= - add_default_port() { - [ -z "$1" ] && echo "" || echo "$1" | awk -F',' '{for(i=1;i<=NF;i++){if($i !~ /#/) $i=$i"#53";} print $0;}' OFS=',' - } - LOCAL_DNS=$(add_default_port "$LOCAL_DNS") - IPT_APPEND_DNS=$(add_default_port "${IPT_APPEND_DNS:-$LOCAL_DNS}") - echo "$IPT_APPEND_DNS" | grep -q -E "(^|,)$LOCAL_DNS(,|$)" || IPT_APPEND_DNS="${IPT_APPEND_DNS:+$IPT_APPEND_DNS,}$LOCAL_DNS" - [ -n "$DIRECT_DNS" ] && { - DIRECT_DNS=$(add_default_port "$DIRECT_DNS") - echo "$IPT_APPEND_DNS" | grep -q -E "(^|,)$DIRECT_DNS(,|$)" || IPT_APPEND_DNS="${IPT_APPEND_DNS:+$IPT_APPEND_DNS,}$DIRECT_DNS" - } - # 排除127.0.0.1的条目 - IPT_APPEND_DNS=$(echo "$IPT_APPEND_DNS" | awk -F',' '{for(i=1;i<=NF;i++) if($i !~ /^127\.0\.0\.1/) printf (i>1?",":"") $i; print ""}' | sed 's/^,\|,$//g') - - TUN_DNS="127.0.0.1#${NEXT_DNS_LISTEN_PORT}" - [ -n "${NO_PLUGIN_DNS}" ] && TUN_DNS="127.0.0.1#${resolve_dns_port}" - - case "$DNS_MODE" in - dns2socks) - local dns2socks_socks_server=$(echo $(config_t_get global socks_server 127.0.0.1:1080) | sed "s/#/:/g") - local dns2socks_forward=$(get_first_dns REMOTE_DNS 53 | sed 's/#/:/g') - run_dns2socks socks=$dns2socks_socks_server listen_address=127.0.0.1 listen_port=${NEXT_DNS_LISTEN_PORT} dns=$dns2socks_forward cache=$DNS_CACHE - echolog " - dns2socks(${TUN_DNS}),${dns2socks_socks_server} -> tcp://${dns2socks_forward}" - ;; - sing-box) - [ -z "${NO_PLUGIN_DNS}" ] && { - local config_file=$TMP_PATH/DNS.json - local log_file=$TMP_PATH/DNS.log - local log_file=/dev/null - local _args="type=$DNS_MODE config_file=$config_file log_file=$log_file" - [ "${DNS_CACHE}" == "0" ] && _args="${_args} dns_cache=0" - _args="${_args} direct_dns_query_strategy=${DIRECT_DNS_QUERY_STRATEGY}" - _args="${_args} remote_dns_query_strategy=${REMOTE_DNS_QUERY_STRATEGY}" - DNSMASQ_FILTER_PROXY_IPV6=0 - local _remote_dns_client_ip=$(config_t_get global remote_dns_client_ip) - [ -n "${_remote_dns_client_ip}" ] && _args="${_args} remote_dns_client_ip=${_remote_dns_client_ip}" - TCP_PROXY_DNS=1 - local v2ray_dns_mode=$(config_t_get global v2ray_dns_mode tcp) - _args="${_args} dns_listen_port=${NEXT_DNS_LISTEN_PORT}" - _args="${_args} remote_dns_protocol=${v2ray_dns_mode}" - case "$v2ray_dns_mode" in - udp|tcp) - local _proto="$v2ray_dns_mode" - _args="${_args} remote_dns_${_proto}_server=${REMOTE_DNS}" - echolog " - Sing-Box DNS(${TUN_DNS}) -> ${_proto}://${REMOTE_DNS}" - ;; - doh) - remote_dns_doh=$(config_t_get global remote_dns_doh "https://1.1.1.1/dns-query") - _args="${_args} remote_dns_doh=${remote_dns_doh}" - echolog " - Sing-Box DNS(${TUN_DNS}) -> ${remote_dns_doh}" - - local _doh_url _doh_host _doh_port _doh_bootstrap - parse_doh "$remote_dns_doh" _doh_url _doh_host _doh_port _doh_bootstrap - [ -n "${_doh_bootstrap}" ] && REMOTE_DNS="${_doh_bootstrap}#${_doh_port}" - ;; - esac - _args="${_args} dns_socks_address=127.0.0.1 dns_socks_port=${tcp_node_socks_port}" - [ -n "${sing_box_local_dns}" ] && _args="${_args} ${sing_box_local_dns}" - run_singbox ${_args} - } - ;; - xray) - [ -z "${NO_PLUGIN_DNS}" ] && { - local config_file=$TMP_PATH/DNS.json - local log_file=$TMP_PATH/DNS.log - local log_file=/dev/null - local _args="type=$DNS_MODE config_file=$config_file log_file=$log_file" - [ "${DNS_CACHE}" == "0" ] && _args="${_args} dns_cache=0" - _args="${_args} direct_dns_query_strategy=${DIRECT_DNS_QUERY_STRATEGY}" - _args="${_args} remote_dns_query_strategy=${REMOTE_DNS_QUERY_STRATEGY}" - DNSMASQ_FILTER_PROXY_IPV6=0 - local _remote_dns_client_ip=$(config_t_get global remote_dns_client_ip) - [ -n "${_remote_dns_client_ip}" ] && _args="${_args} remote_dns_client_ip=${_remote_dns_client_ip}" - TCP_PROXY_DNS=1 - local v2ray_dns_mode=$(config_t_get global v2ray_dns_mode tcp) - _args="${_args} dns_listen_port=${NEXT_DNS_LISTEN_PORT}" - _args="${_args} remote_dns_protocol=${v2ray_dns_mode}" - case "$v2ray_dns_mode" in - udp) - _args="${_args} remote_dns_udp_server=${REMOTE_DNS}" - echolog " - Xray DNS(${TUN_DNS}) -> udp://${REMOTE_DNS}" - ;; - tcp|tcp+doh) - _args="${_args} remote_dns_tcp_server=${REMOTE_DNS}" - if [ "$v2ray_dns_mode" = "tcp+doh" ]; then - remote_dns_doh=$(config_t_get global remote_dns_doh "https://1.1.1.1/dns-query") - _args="${_args} remote_dns_doh=${remote_dns_doh}" - echolog " - Xray DNS(${TUN_DNS}) -> (${remote_dns_doh})(A/AAAA) + tcp://${REMOTE_DNS}" - - local _doh_url _doh_host _doh_port _doh_bootstrap - parse_doh "$remote_dns_doh" _doh_url _doh_host _doh_port _doh_bootstrap - [ -n "${_doh_bootstrap}" ] && REMOTE_DNS="${REMOTE_DNS},${_doh_bootstrap}#${_doh_port}" - else - echolog " - Xray DNS(${TUN_DNS}) -> tcp://${REMOTE_DNS}" - fi - ;; - esac - _args="${_args} dns_socks_address=127.0.0.1 dns_socks_port=${tcp_node_socks_port}" - run_xray ${_args} - } - ;; - udp) - UDP_PROXY_DNS=1 - local china_ng_listen_port=${NEXT_DNS_LISTEN_PORT} - local china_ng_trust_dns="udp://$(get_first_dns REMOTE_DNS 53 | sed -E 's/^\[([^]]+)\]:(.*)$/\1#\2/; t; s/^([^:]+):([0-9]+)$/\1#\2/')" - if [ "$DNS_SHUNT" != "chinadns-ng" ] && [ "$FILTER_PROXY_IPV6" = "1" ]; then - DNSMASQ_FILTER_PROXY_IPV6=0 - local no_ipv6_trust="-N" - ln_run "$(first_type chinadns-ng)" chinadns-ng "/dev/null" -b :: -l ${china_ng_listen_port} -t ${china_ng_trust_dns} -d gfw ${no_ipv6_trust} - echolog " - ChinaDNS-NG(${TUN_DNS}) -> ${china_ng_trust_dns}" - else - TUN_DNS="$(echo ${REMOTE_DNS} | sed 's/#/:/g' | sed -E 's/\:([^:]+)$/#\1/g')" - echolog " - udp://${TUN_DNS}" - fi - ;; - tcp) - TCP_PROXY_DNS=1 - local china_ng_listen_port=${NEXT_DNS_LISTEN_PORT} - local china_ng_trust_dns="tcp://$(get_first_dns REMOTE_DNS 53 | sed -E 's/^\[([^]]+)\]:(.*)$/\1#\2/; t; s/^([^:]+):([0-9]+)$/\1#\2/')" - [ "$DNS_SHUNT" != "chinadns-ng" ] && { - [ "$FILTER_PROXY_IPV6" = "1" ] && DNSMASQ_FILTER_PROXY_IPV6=0 && local no_ipv6_trust="-N" - ln_run "$(first_type chinadns-ng)" chinadns-ng "/dev/null" -b :: -l ${china_ng_listen_port} -t ${china_ng_trust_dns} -d gfw ${no_ipv6_trust} - echolog " - ChinaDNS-NG(${TUN_DNS}) -> ${china_ng_trust_dns}" - } - ;; - esac - - [ -n "${resolve_dns_log}" ] && echolog " - ${resolve_dns_log}" - - [ -n "${TCP_PROXY_DNS}" ] && echolog " * 请确认上游 DNS 支持 TCP/DoH 查询,如非直连地址,确保 TCP 代理打开,并且已经正确转发!" - [ -n "${UDP_PROXY_DNS}" ] && echolog " * 请确认上游 DNS 支持 UDP 查询并已使用 UDP 节点,如上游 DNS 非直连地址,确保 UDP 代理打开,并且已经正确转发!" - - local china_ng_listen=0 - [ "${DNS_SHUNT}" = "smartdns" ] && { - if command -v smartdns > /dev/null 2>&1; then - rm -rf $TMP_PATH2/dnsmasq_default* - local group_domestic=$(config_t_get global group_domestic) - local smartdns_remote_dns=$(config_t_get global smartdns_remote_dns) - if [ -n "${smartdns_remote_dns}" -a "${smartdns_remote_dns}" != "nil" ]; then - smartdns_remote_dns=$(echo ${smartdns_remote_dns} | tr -s ' ' '|') - else - smartdns_remote_dns="tcp://1.1.1.1" - fi - - echolog " - 域名解析:使用SmartDNS,请确保配置正常。" - china_ng_listen="127.0.0.1#${SMARTDNS_LISTEN_PORT}" - echolog " - SmartDNS(127.0.0.1#${SMARTDNS_LOCAL_PORT}) -> 国内分组(${group_domestic:-null}),SmartDNS(${china_ng_listen}) -> Dnsmasq" - china_ng_listen="${china_ng_listen},::1#${SMARTDNS_LISTEN_PORT}" - - local subnet_ip=$(config_t_get global remote_dns_client_ip) - lua $APP_PATH/helper_smartdns_add.lua -FLAG "default" -SMARTDNS_CONF "/tmp/etc/smartdns/$CONFIG.conf" \ - -LISTEN_PORT ${SMARTDNS_LISTEN_PORT} -LOCAL_PORT ${SMARTDNS_LOCAL_PORT} \ - -LOCAL_GROUP ${group_domestic:-null} -REMOTE_GROUP "passwall_proxy" -REMOTE_PROXY_SERVER ${TCP_SOCKS_server} -USE_DEFAULT_DNS "${USE_DEFAULT_DNS:-direct}" \ - -REMOTE_DNS ${smartdns_remote_dns} -DNS_MODE ${DNS_MODE:-socks} -TUN_DNS ${TUN_DNS} -REMOTE_FAKEDNS ${fakedns:-0} \ - -USE_DIRECT_LIST "${USE_DIRECT_LIST}" -USE_PROXY_LIST "${USE_PROXY_LIST}" -USE_BLOCK_LIST "${USE_BLOCK_LIST}" -USE_GFW_LIST "${USE_GFW_LIST}" -CHN_LIST "${CHN_LIST}" \ - -TCP_NODE ${TCP_NODE} -DEFAULT_PROXY_MODE "${TCP_PROXY_MODE}" -NO_PROXY_IPV6 ${FILTER_PROXY_IPV6:-0} -NFTFLAG ${nftflag:-0} \ - -SUBNET ${subnet_ip:-0} -NO_LOGIC_LOG ${NO_LOGIC_LOG:-0} - source $APP_PATH/helper_smartdns.sh restart - - USE_DEFAULT_DNS="chinadns_ng" - else - DNS_SHUNT="dnsmasq" - echolog " * 未安装SmartDNS,默认使用Dnsmasq进行域名解析!" - fi - } - - [ "${DNS_SHUNT}" = "chinadns-ng" ] && [ -n "$(first_type chinadns-ng)" ] && { - chinadns_ng_min=2024.04.13 - chinadns_ng_now=$($(first_type chinadns-ng) -V | grep -i "ChinaDNS-NG " | awk '{print $2}') - if [ $(check_ver "$chinadns_ng_now" "$chinadns_ng_min") = 1 ]; then - echolog " * 注意:当前 ChinaDNS-NG 版本为[ $chinadns_ng_now ],请更新到[ $chinadns_ng_min ]或以上版本,否则 DNS 有可能无法正常工作!" - fi - - [ "$FILTER_PROXY_IPV6" = "1" ] && DNSMASQ_FILTER_PROXY_IPV6=0 - [ -z "${china_ng_listen_port}" ] && local china_ng_listen_port=$(expr $NEXT_DNS_LISTEN_PORT + 1) - china_ng_listen="127.0.0.1#${china_ng_listen_port}" - [ -z "${china_ng_trust_dns}" ] && local china_ng_trust_dns=${TUN_DNS} - - echolog " - ChinaDNS-NG(${china_ng_listen}):直连DNS:${china_ng_local_dns},可信DNS:${china_ng_trust_dns}" - - china_ng_listen="${china_ng_listen},::1#${china_ng_listen_port}" - - run_chinadns_ng \ - _flag="default" \ - _listen_port=${china_ng_listen_port} \ - _dns_local=${china_ng_local_dns} \ - _dns_trust=${china_ng_trust_dns} \ - _no_ipv6_trust=${FILTER_PROXY_IPV6} \ - _use_direct_list=${USE_DIRECT_LIST} \ - _use_proxy_list=${USE_PROXY_LIST} \ - _use_block_list=${USE_BLOCK_LIST} \ - _gfwlist=${USE_GFW_LIST} \ - _chnlist=${CHN_LIST} \ - _default_mode=${TCP_PROXY_MODE} \ - _default_tag=$(config_t_get global chinadns_ng_default_tag smart) \ - _no_logic_log=0 \ - _tcp_node=${TCP_NODE} \ - _remote_fakedns=${fakedns:-0} - - USE_DEFAULT_DNS="chinadns_ng" - } - - [ "$USE_DEFAULT_DNS" = "remote" ] && { - dnsmasq_version=$(dnsmasq -v | grep -i "Dnsmasq version " | awk '{print $3}') - [ "$(expr $dnsmasq_version \>= 2.87)" == 0 ] && echolog "Dnsmasq版本低于2.87,有可能无法正常使用!!!" - } - - local DNSMASQ_TUN_DNS=$(get_first_dns TUN_DNS 53 | sed -E 's/^\[([^]]+)\]:(.*)$/\1#\2/; t; s/^([^:]+):([0-9]+)$/\1#\2/') - local RUN_NEW_DNSMASQ=1 - RUN_NEW_DNSMASQ=${DNS_REDIRECT} - if [ "${RUN_NEW_DNSMASQ}" == "0" ]; then - #The old logic will be removed in the future. - #Run a copy dnsmasq instance, DNS hijack that don't need a proxy devices. - [ "1" = "0" ] && { - DIRECT_DNSMASQ_PORT=$(get_new_port 11400) - DIRECT_DNSMASQ_CONF=${GLOBAL_ACL_PATH}/direct_dnsmasq.conf - DIRECT_DNSMASQ_CONF_PATH=${GLOBAL_ACL_PATH}/direct_dnsmasq.d - mkdir -p ${DIRECT_DNSMASQ_CONF_PATH} - lua $APP_PATH/helper_dnsmasq.lua copy_instance -LISTEN_PORT ${DIRECT_DNSMASQ_PORT} -DNSMASQ_CONF ${DIRECT_DNSMASQ_CONF} -TMP_DNSMASQ_PATH ${DIRECT_DNSMASQ_CONF_PATH} - ln_run "$(first_type dnsmasq)" "dnsmasq_direct" "/dev/null" -C ${DIRECT_DNSMASQ_CONF} -x ${GLOBAL_ACL_PATH}/direct_dnsmasq.pid - echo "${DIRECT_DNSMASQ_PORT}" > ${GLOBAL_ACL_PATH}/direct_dnsmasq_port - } - - #Rewrite the default DNS service configuration - #Modify the default dnsmasq service - lua $APP_PATH/helper_dnsmasq.lua stretch - lua $APP_PATH/helper_dnsmasq.lua add_rule -FLAG "default" -TMP_DNSMASQ_PATH ${GLOBAL_DNSMASQ_CONF_PATH} -DNSMASQ_CONF_FILE ${GLOBAL_DNSMASQ_CONF} \ - -DEFAULT_DNS ${DEFAULT_DNS} -LOCAL_DNS ${LOCAL_DNS} -TUN_DNS ${DNSMASQ_TUN_DNS} \ - -REMOTE_FAKEDNS ${fakedns:-0} -USE_DEFAULT_DNS "${USE_DEFAULT_DNS:-direct}" -CHINADNS_DNS ${china_ng_listen:-0} \ - -USE_DIRECT_LIST "${USE_DIRECT_LIST}" -USE_PROXY_LIST "${USE_PROXY_LIST}" -USE_BLOCK_LIST "${USE_BLOCK_LIST}" -USE_GFW_LIST "${USE_GFW_LIST}" -CHN_LIST "${CHN_LIST}" \ - -TCP_NODE ${TCP_NODE} -DEFAULT_PROXY_MODE ${TCP_PROXY_MODE} -NO_PROXY_IPV6 ${DNSMASQ_FILTER_PROXY_IPV6:-0} -NFTFLAG ${nftflag:-0} \ - -NO_LOGIC_LOG ${NO_LOGIC_LOG:-0} - uci -q add_list dhcp.@dnsmasq[0].addnmount=${GLOBAL_DNSMASQ_CONF_PATH} - uci -q commit dhcp - lua $APP_PATH/helper_dnsmasq.lua logic_restart -LOG 1 - else - #Run a copy dnsmasq instance, DNS hijack for that need proxy devices. - GLOBAL_DNSMASQ_PORT=$(get_new_port 11400) - GLOBAL_DNSMASQ_CONF=${GLOBAL_ACL_PATH}/dnsmasq.conf - GLOBAL_DNSMASQ_CONF_PATH=${GLOBAL_ACL_PATH}/dnsmasq.d - lua $APP_PATH/helper_dnsmasq.lua add_rule -FLAG "default" -TMP_DNSMASQ_PATH ${GLOBAL_DNSMASQ_CONF_PATH} -DNSMASQ_CONF_FILE ${GLOBAL_DNSMASQ_CONF} \ - -LISTEN_PORT ${GLOBAL_DNSMASQ_PORT} -DEFAULT_DNS ${DEFAULT_DNS} -LOCAL_DNS ${LOCAL_DNS} -TUN_DNS ${DNSMASQ_TUN_DNS} \ - -REMOTE_FAKEDNS ${fakedns:-0} -USE_DEFAULT_DNS "${USE_DEFAULT_DNS:-direct}" -CHINADNS_DNS ${china_ng_listen:-0} \ - -USE_DIRECT_LIST "${USE_DIRECT_LIST}" -USE_PROXY_LIST "${USE_PROXY_LIST}" -USE_BLOCK_LIST "${USE_BLOCK_LIST}" -USE_GFW_LIST "${USE_GFW_LIST}" -CHN_LIST "${CHN_LIST}" \ - -TCP_NODE ${TCP_NODE} -DEFAULT_PROXY_MODE ${TCP_PROXY_MODE} -NO_PROXY_IPV6 ${DNSMASQ_FILTER_PROXY_IPV6:-0} -NFTFLAG ${nftflag:-0} \ - -NO_LOGIC_LOG ${NO_LOGIC_LOG:-0} - ln_run "$(first_type dnsmasq)" "dnsmasq_default" "/dev/null" -C ${GLOBAL_DNSMASQ_CONF} -x ${GLOBAL_ACL_PATH}/dnsmasq.pid - set_cache_var "ACL_default_dns_port" "${GLOBAL_DNSMASQ_PORT}" - DNS_REDIRECT_PORT=${GLOBAL_DNSMASQ_PORT} - #dhcp.leases to hosts - $APP_PATH/lease2hosts.sh > /dev/null 2>&1 & - fi -} - -start_haproxy() { - [ "$(config_t_get global_haproxy balancing_enable 0)" != "1" ] && return - haproxy_path=$TMP_PATH/haproxy - haproxy_conf="config.cfg" - lua $APP_PATH/haproxy.lua -path ${haproxy_path} -conf ${haproxy_conf} -dns ${LOCAL_DNS} - ln_run "$(first_type haproxy)" haproxy "/dev/null" -f "${haproxy_path}/${haproxy_conf}" -} - -kill_all() { - kill -9 $(pidof "$@") >/dev/null 2>&1 -} - -acl_app() { - local items=$(uci show ${CONFIG} | grep "=acl_rule" | cut -d '.' -sf 2 | cut -d '=' -sf 1) - [ -n "$items" ] && { - local item - local socks_port redir_port dns_port dnsmasq_port chinadns_port - local msg msg2 - socks_port=11100 - redir_port=11200 - dns_port=11300 - dnsmasq_port=${GLOBAL_DNSMASQ_PORT:-11400} - chinadns_port=11500 - for item in $items; do - local sid=$(uci -q show "${CONFIG}.${item}" | grep "=acl_rule" | awk -F '=' '{print $1}' | awk -F '.' '{print $2}') - [ "$(config_n_get $sid enabled)" = "1" ] || continue - eval $(uci -q show "${CONFIG}.${item}" | cut -d'.' -sf 3-) - - if [ -n "${sources}" ]; then - for s in $sources; do - local s2 - is_iprange=$(lua_api "iprange(\"${s}\")") - if [ "${is_iprange}" = "true" ]; then - s2="iprange:${s}" - elif [ -n "$(echo ${s} | grep '^ipset:')" ]; then - s2="ipset:${s}" - else - _ip_or_mac=$(lua_api "ip_or_mac(\"${s}\")") - if [ "${_ip_or_mac}" = "ip" ]; then - s2="ip:${s}" - elif [ "${_ip_or_mac}" = "mac" ]; then - s2="mac:${s}" - fi - fi - [ -n "${s2}" ] && source_list="${source_list}\n${s2}" - unset s2 - done - else - source_list="any" - fi - - local acl_path=${TMP_ACL_PATH}/$sid - mkdir -p ${acl_path} - [ -n "${source_list}" ] && echo -e "${source_list}" | sed '/^$/d' > ${acl_path}/source_list - - use_global_config=${use_global_config:-0} - [ "${use_global_config}" = "1" ] && { - tcp_node="default" - udp_node="default" - } - tcp_no_redir_ports=${tcp_no_redir_ports:-${TCP_NO_REDIR_PORTS}} - udp_no_redir_ports=${udp_no_redir_ports:-${UDP_NO_REDIR_PORTS}} - if has_1_65535 "$tcp_no_redir_ports" && has_1_65535 "$udp_no_redir_ports"; then - unset use_global_config - unset tcp_node - unset udp_node - else - use_direct_list=${use_direct_list:-1} - use_proxy_list=${use_proxy_list:-1} - use_block_list=${use_block_list:-1} - use_gfw_list=${use_gfw_list:-1} - chn_list=${chn_list:-direct} - tcp_proxy_mode=${tcp_proxy_mode:-proxy} - udp_proxy_mode=${udp_proxy_mode:-proxy} - filter_proxy_ipv6=${filter_proxy_ipv6:-0} - dnsmasq_filter_proxy_ipv6=${filter_proxy_ipv6} - dns_shunt=${dns_shunt:-dnsmasq} - dns_mode=${dns_mode:-dns2socks} - remote_dns=${remote_dns:-1.1.1.1} - use_default_dns=${use_default_dns:-direct} - [ "$dns_mode" = "sing-box" ] && { - [ "$v2ray_dns_mode" = "doh" ] && remote_dns=${remote_dns_doh:-https://1.1.1.1/dns-query} - } - fi - - [ -n "$tcp_node" ] && { - local GLOBAL_TCP_NODE=$(get_cache_var "ACL_GLOBAL_TCP_node") - [ -n "${GLOBAL_TCP_NODE}" ] && GLOBAL_TCP_redir_port=$(get_cache_var "ACL_GLOBAL_TCP_redir_port") - if [ "$tcp_node" = "default" ]; then - if [ -n "${GLOBAL_TCP_NODE}" ]; then - set_cache_var "ACL_${sid}_tcp_node" "${GLOBAL_TCP_NODE}" - set_cache_var "ACL_${sid}_tcp_redir_port" "${GLOBAL_TCP_redir_port}" - set_cache_var "ACL_${sid}_dns_port" "${GLOBAL_DNSMASQ_PORT}" - set_cache_var "ACL_${sid}_tcp_default" "1" - else - echolog " - 全局节点未启用,跳过【${remarks}】" - fi - else - [ "$(config_get_type $tcp_node)" = "nodes" ] || [ "$(config_get_type ${tcp_node#Socks_})" = "socks" ] && { - if [ -n "${GLOBAL_TCP_NODE}" ] && [ "$tcp_node" = "${GLOBAL_TCP_NODE}" ]; then - set_cache_var "ACL_${sid}_tcp_node" "${GLOBAL_TCP_NODE}" - set_cache_var "ACL_${sid}_tcp_redir_port" "${GLOBAL_TCP_redir_port}" - set_cache_var "ACL_${sid}_dns_port" "${GLOBAL_DNSMASQ_PORT}" - set_cache_var "ACL_${sid}_tcp_default" "1" - else - run_dns() { - local _dns_port - [ -n $1 ] && _dns_port=$1 - [ -z ${_dns_port} ] && { - dns_port=$(get_new_port $(expr $dns_port + 1)) - _dns_port=$dns_port - if [ "$dns_mode" = "dns2socks" ]; then - run_dns2socks flag=acl_${sid} socks_address=127.0.0.1 socks_port=$socks_port listen_address=0.0.0.0 listen_port=${_dns_port} dns=$remote_dns cache=1 - elif [ "$dns_mode" = "sing-box" -o "$dns_mode" = "xray" ]; then - config_file=$TMP_ACL_PATH/${tcp_node}_SOCKS_${socks_port}_DNS.json - [ "$dns_mode" = "xray" ] && [ "$v2ray_dns_mode" = "tcp+doh" ] && remote_dns_doh=${remote_dns_doh:-https://1.1.1.1/dns-query} - local type=${dns_mode} - [ "${dns_mode}" = "sing-box" ] && type="singbox" - dnsmasq_filter_proxy_ipv6=0 - remote_dns_query_strategy="UseIP" - [ "$filter_proxy_ipv6" = "1" ] && remote_dns_query_strategy="UseIPv4" - run_${type} flag=acl_${sid} type=$dns_mode dns_socks_address=127.0.0.1 dns_socks_port=$socks_port dns_listen_port=${_dns_port} remote_dns_protocol=${v2ray_dns_mode} remote_dns_udp_server=${remote_dns} remote_dns_tcp_server=${remote_dns} remote_dns_doh="${remote_dns_doh}" remote_dns_query_strategy=${remote_dns_query_strategy} remote_dns_client_ip=${remote_dns_client_ip} config_file=$config_file - fi - set_cache_var "node_${tcp_node}_$(echo -n "${remote_dns}" | md5sum | cut -d " " -f1)" "${_dns_port}" - } - - [ "$dns_shunt" = "chinadns-ng" ] && [ -n "$(first_type chinadns-ng)" ] && { - chinadns_ng_min=2024.04.13 - chinadns_ng_now=$($(first_type chinadns-ng) -V | grep -i "ChinaDNS-NG " | awk '{print $2}') - if [ $(check_ver "$chinadns_ng_now" "$chinadns_ng_min") = 1 ]; then - echolog " * 注意:当前 ChinaDNS-NG 版本为[ $chinadns_ng_now ],请更新到[ $chinadns_ng_min ]或以上版本,否则 DNS 有可能无法正常工作!" - fi - - [ "$filter_proxy_ipv6" = "1" ] && dnsmasq_filter_proxy_ipv6=0 - chinadns_port=$(expr $chinadns_port + 1) - _china_ng_listen="127.0.0.1#${chinadns_port},::1#${chinadns_port}" - - _chinadns_local_dns=$(IFS=','; set -- $LOCAL_DNS; [ "${1%%[#:]*}" = "127.0.0.1" ] && echo "$1" || ([ -n "$2" ] && echo "$1,$2" || echo "$1")) - _direct_dns_mode=$(config_t_get global direct_dns_mode "auto") - case "${_direct_dns_mode}" in - udp) - _chinadns_local_dns=$(config_t_get global direct_dns 223.5.5.5 | sed -E 's/^\[([^]]+)\]:(.*)$/\1#\2/; t; s/^([^:]+):([0-9]+)$/\1#\2/') - ;; - tcp) - _chinadns_local_dns="tcp://$(config_t_get global direct_dns 223.5.5.5 | sed -E 's/^\[([^]]+)\]:(.*)$/\1#\2/; t; s/^([^:]+):([0-9]+)$/\1#\2/')" - ;; - esac - - run_chinadns_ng \ - _flag="$sid" \ - _listen_port=${chinadns_port} \ - _dns_local=${_chinadns_local_dns} \ - _dns_trust=127.0.0.1#${_dns_port} \ - _no_ipv6_trust=${filter_proxy_ipv6} \ - _use_direct_list=${use_direct_list} \ - _use_proxy_list=${use_proxy_list} \ - _use_block_list=${use_block_list} \ - _gfwlist=${use_gfw_list} \ - _chnlist=${chn_list} \ - _default_mode=${tcp_proxy_mode} \ - _default_tag=${chinadns_ng_default_tag:-smart} \ - _no_logic_log=1 \ - _tcp_node=${tcp_node} \ - _remote_fakedns=0 - - use_default_dns="chinadns_ng" - } - - dnsmasq_port=$(get_new_port $(expr $dnsmasq_port + 1)) - local dnsmasq_conf=${acl_path}/dnsmasq.conf - local dnsmasq_conf_path=${acl_path}/dnsmasq.d - lua $APP_PATH/helper_dnsmasq.lua add_rule -FLAG ${sid} -TMP_DNSMASQ_PATH ${dnsmasq_conf_path} -DNSMASQ_CONF_FILE ${dnsmasq_conf} \ - -LISTEN_PORT ${dnsmasq_port} -DEFAULT_DNS ${DEFAULT_DNS} -LOCAL_DNS $LOCAL_DNS \ - -USE_DIRECT_LIST "${use_direct_list}" -USE_PROXY_LIST "${use_proxy_list}" -USE_BLOCK_LIST "${use_block_list}" -USE_GFW_LIST "${use_gfw_list}" -CHN_LIST "${chn_list}" \ - -TUN_DNS "127.0.0.1#${_dns_port}" -REMOTE_FAKEDNS 0 -USE_DEFAULT_DNS "${use_default_dns:-direct}" -CHINADNS_DNS ${_china_ng_listen:-0} \ - -TCP_NODE $tcp_node -DEFAULT_PROXY_MODE ${tcp_proxy_mode} -NO_PROXY_IPV6 ${dnsmasq_filter_proxy_ipv6:-0} -NFTFLAG ${nftflag:-0} \ - -NO_LOGIC_LOG 1 - ln_run "$(first_type dnsmasq)" "dnsmasq_${sid}" "/dev/null" -C ${dnsmasq_conf} -x ${acl_path}/dnsmasq.pid - set_cache_var "ACL_${sid}_dns_port" "${dnsmasq_port}" - set_cache_var "node_${tcp_node}_$(echo -n "${tcp_proxy_mode}${remote_dns}" | md5sum | cut -d " " -f1)" "${dnsmasq_port}" - #dhcp.leases to hosts - $APP_PATH/lease2hosts.sh > /dev/null 2>&1 & - } - _redir_port=$(get_cache_var "node_${tcp_node}_redir_port") - _socks_port=$(get_cache_var "node_${tcp_node}_socks_port") - if [ -n "${_socks_port}" ] && [ -n "${_redir_port}" ]; then - socks_port=${_socks_port} - tcp_port=${_redir_port} - _dnsmasq_port=$(get_cache_var "node_${tcp_node}_$(echo -n "${tcp_proxy_mode}${remote_dns}" | md5sum | cut -d " " -f1)") - if [ -z "${_dnsmasq_port}" ]; then - _dns_port=$(get_cache_var "node_${tcp_node}_$(echo -n "${remote_dns}" | md5sum | cut -d " " -f1)") - run_dns ${_dns_port} - else - [ -n "${_dnsmasq_port}" ] && set_cache_var "ACL_${sid}_dns_port" "${_dnsmasq_port}" - fi - else - socks_port=$(get_new_port $(expr $socks_port + 1)) - set_cache_var "node_${tcp_node}_socks_port" "${socks_port}" - redir_port=$(get_new_port $(expr $redir_port + 1)) - set_cache_var "node_${tcp_node}_redir_port" "${redir_port}" - tcp_port=$redir_port - - local type=$(echo $(config_n_get $tcp_node type) | tr 'A-Z' 'a-z') - if [ -n "${type}" ] && ([ "${type}" = "sing-box" ] || [ "${type}" = "xray" ]); then - config_file="acl/${tcp_node}_TCP_${redir_port}.json" - _extra_param="socks_address=127.0.0.1 socks_port=$socks_port" - _extra_param="${_extra_param} tcp_proxy_way=$TCP_PROXY_WAY" - if [ "$dns_mode" = "sing-box" ] || [ "$dns_mode" = "xray" ]; then - dns_port=$(get_new_port $(expr $dns_port + 1)) - _dns_port=$dns_port - config_file="${config_file//TCP_/DNS_${_dns_port}_TCP_}" - remote_dns_doh=${remote_dns} - dnsmasq_filter_proxy_ipv6=0 - remote_dns_query_strategy="UseIP" - [ "$filter_proxy_ipv6" = "1" ] && remote_dns_query_strategy="UseIPv4" - [ "$dns_mode" = "xray" ] && [ "$v2ray_dns_mode" = "tcp+doh" ] && remote_dns_doh=${remote_dns_doh:-https://1.1.1.1/dns-query} - _extra_param="dns_listen_port=${_dns_port} remote_dns_protocol=${v2ray_dns_mode} remote_dns_udp_server=${remote_dns} remote_dns_tcp_server=${remote_dns} remote_dns_doh=${remote_dns_doh} remote_dns_query_strategy=${remote_dns_query_strategy} remote_dns_client_ip=${remote_dns_client_ip}" - fi - [ -n "$udp_node" ] && ([ "$udp_node" = "tcp" ] || [ "$udp_node" = "$tcp_node" ]) && { - config_file="${config_file//TCP_/TCP_UDP_}" - _extra_param="${_extra_param} udp_redir_port=$redir_port" - } - config_file="$TMP_PATH/$config_file" - [ "${type}" = "sing-box" ] && type="singbox" - run_${type} flag=$tcp_node node=$tcp_node tcp_redir_port=$redir_port ${_extra_param} config_file=$config_file - else - config_file="acl/${tcp_node}_SOCKS_${socks_port}.json" - run_socks flag=$tcp_node node=$tcp_node bind=127.0.0.1 socks_port=$socks_port config_file=$config_file - local log_file=$TMP_ACL_PATH/ipt2socks_${tcp_node}_${redir_port}.log - log_file="/dev/null" - run_ipt2socks flag=acl_${tcp_node} tcp_tproxy=${is_tproxy} local_port=$redir_port socks_address=127.0.0.1 socks_port=$socks_port log_file=$log_file - fi - run_dns ${_dns_port} - fi - set_cache_var "ACL_${sid}_tcp_node" "${tcp_node}" - set_cache_var "ACL_${sid}_tcp_redir_port" "${tcp_port}" - fi - } - fi - } - [ -n "$udp_node" ] && { - if [ "$udp_node" = "default" ]; then - local GLOBAL_UDP_NODE=$(get_cache_var "ACL_GLOBAL_UDP_node") - [ -n "${GLOBAL_UDP_NODE}" ] && GLOBAL_UDP_redir_port=$(get_cache_var "ACL_GLOBAL_UDP_redir_port") - if [ -n "${GLOBAL_UDP_NODE}" ]; then - set_cache_var "ACL_${sid}_udp_node" "${GLOBAL_UDP_NODE}" - set_cache_var "ACL_${sid}_udp_redir_port" "${GLOBAL_UDP_redir_port}" - set_cache_var "ACL_${sid}_udp_default" "1" - else - echolog " - 全局节点未启用,跳过【${remarks}】" - fi - elif [ "$udp_node" = "tcp" ] || [ "$udp_node" = "$tcp_node" ]; then - udp_node=$(get_cache_var "ACL_${sid}_tcp_node") - udp_port=$(get_cache_var "ACL_${sid}_tcp_redir_port") - set_cache_var "ACL_${sid}_udp_node" "${udp_node}" - set_cache_var "ACL_${sid}_udp_redir_port" "${udp_port}" - else - [ "$(config_get_type $udp_node)" = "nodes" ] || [ "$(config_get_type ${udp_node#Socks_})" = "socks" ] && { - if [ -n "${GLOBAL_UDP_NODE}" ] && [ "$udp_node" = "${GLOBAL_UDP_NODE}" ]; then - set_cache_var "ACL_${sid}_udp_node" "${GLOBAL_UDP_NODE}" - set_cache_var "ACL_${sid}_udp_redir_port" "${GLOBAL_UDP_redir_port}" - set_cache_var "ACL_${sid}_udp_default" "1" - else - _redir_port=$(get_cache_var "node_${udp_node}_redir_port") - _socks_port=$(get_cache_var "node_${udp_node}_socks_port") - if [ -n "${_socks_port}" ] && [ -n "${_redir_port}" ]; then - socks_port=${_socks_port} - udp_port=${_redir_port} - else - socks_port=$(get_new_port $(expr $socks_port + 1)) - set_cache_var "node_${udp_node}_socks_port" "${socks_port}" - redir_port=$(get_new_port $(expr $redir_port + 1)) - set_cache_var "node_${udp_node}_redir_port" "${redir_port}" - udp_port=$redir_port - - local type=$(echo $(config_n_get $udp_node type) | tr 'A-Z' 'a-z') - if [ -n "${type}" ] && ([ "${type}" = "sing-box" ] || [ "${type}" = "xray" ]); then - config_file="acl/${udp_node}_UDP_${redir_port}.json" - config_file="$TMP_PATH/$config_file" - [ "${type}" = "sing-box" ] && type="singbox" - run_${type} flag=$udp_node node=$udp_node udp_redir_port=$redir_port config_file=$config_file - else - config_file="acl/${udp_node}_SOCKS_${socks_port}.json" - run_socks flag=$udp_node node=$udp_node bind=127.0.0.1 socks_port=$socks_port config_file=$config_file - local log_file=$TMP_ACL_PATH/ipt2socks_${udp_node}_${redir_port}.log - log_file="/dev/null" - run_ipt2socks flag=acl_${udp_node} local_port=$redir_port socks_address=127.0.0.1 socks_port=$socks_port log_file=$log_file - fi - fi - set_cache_var "ACL_${sid}_udp_node" "${udp_node}" - set_cache_var "ACL_${sid}_udp_redir_port" "${udp_port}" - fi - } - fi - } - unset enabled sid remarks sources interface tcp_no_redir_ports udp_no_redir_ports use_global_config tcp_node udp_node use_direct_list use_proxy_list use_block_list use_gfw_list chn_list tcp_proxy_mode udp_proxy_mode filter_proxy_ipv6 dns_mode remote_dns v2ray_dns_mode remote_dns_doh remote_dns_client_ip - unset _ip _mac _iprange _ipset _ip_or_mac source_list tcp_port udp_port config_file _extra_param - unset _china_ng_listen _chinadns_local_dns _direct_dns_mode chinadns_ng_default_tag dnsmasq_filter_proxy_ipv6 - done - unset socks_port redir_port dns_port dnsmasq_port chinadns_port - } -} - -start() { - mkdir -p /tmp/etc /tmp/log $TMP_PATH $TMP_BIN_PATH $TMP_SCRIPT_FUNC_PATH $TMP_ROUTE_PATH $TMP_ACL_PATH $TMP_PATH2 - get_config - export V2RAY_LOCATION_ASSET=$(config_t_get global_rules v2ray_location_asset "/usr/share/v2ray/") - export XRAY_LOCATION_ASSET=$V2RAY_LOCATION_ASSET - export ENABLE_DEPRECATED_GEOSITE=true - export ENABLE_DEPRECATED_GEOIP=true - ulimit -n 65535 - start_haproxy - start_socks - nftflag=0 - USE_TABLES="" - check_run_environment - if [ "$ENABLED_DEFAULT_ACL" == 1 ] || [ "$ENABLED_ACLS" == 1 ]; then - [ "$(uci -q get dhcp.@dnsmasq[0].dns_redirect)" == "1" ] && { - uci -q set ${CONFIG}.@global[0].dnsmasq_dns_redirect='1' - uci -q commit ${CONFIG} - uci -q set dhcp.@dnsmasq[0].dns_redirect='0' - uci -q commit dhcp - lua $APP_PATH/helper_dnsmasq.lua restart -LOG 0 - } - fi - [ "$ENABLED_DEFAULT_ACL" == 1 ] && { - mkdir -p ${GLOBAL_ACL_PATH} - start_redir TCP - start_redir UDP - start_dns - } - [ -n "$USE_TABLES" ] && source $APP_PATH/${USE_TABLES}.sh start - set_cache_var "USE_TABLES" "$USE_TABLES" - if [ "$ENABLED_DEFAULT_ACL" == 1 ] || [ "$ENABLED_ACLS" == 1 ]; then - bridge_nf_ipt=$(sysctl -e -n net.bridge.bridge-nf-call-iptables) - set_cache_var "bak_bridge_nf_ipt" "$bridge_nf_ipt" - sysctl -w net.bridge.bridge-nf-call-iptables=0 >/dev/null 2>&1 - [ "$PROXY_IPV6" == "1" ] && { - bridge_nf_ip6t=$(sysctl -e -n net.bridge.bridge-nf-call-ip6tables) - set_cache_var "bak_bridge_nf_ip6t" "$bridge_nf_ip6t" - sysctl -w net.bridge.bridge-nf-call-ip6tables=0 >/dev/null 2>&1 - } - fi - - start_crontab - echolog "运行完成!\n" -} - -stop() { - clean_log - eval_cache_var - [ -n "$USE_TABLES" ] && source $APP_PATH/${USE_TABLES}.sh stop - delete_ip2route - # 结束 SS 插件进程 - # kill_all xray-plugin v2ray-plugin obfs-local shadow-tls - local pid_file pid - find "$TMP_PATH" -type f -name '*_plugin.pid' 2>/dev/null | while read -r pid_file; do - read -r pid < "$pid_file" - if [ -n "$pid" ]; then - kill -9 "$pid" >/dev/null 2>&1 - fi - done - pgrep -f "sleep.*(6s|9s|58s)" | xargs kill -9 >/dev/null 2>&1 - pgrep -af "${CONFIG}/" | awk '! /app\.sh|subscribe\.lua|rule_update\.lua|tasks\.sh|ujail/{print $1}' | xargs kill -9 >/dev/null 2>&1 - stop_crontab - source $APP_PATH/helper_smartdns.sh del - rm -rf $GLOBAL_DNSMASQ_CONF - rm -rf $GLOBAL_DNSMASQ_CONF_PATH - [ "1" = "1" ] && { - #restore logic - bak_dnsmasq_dns_redirect=$(config_t_get global dnsmasq_dns_redirect) - [ -n "${bak_dnsmasq_dns_redirect}" ] && { - uci -q set dhcp.@dnsmasq[0].dns_redirect="${bak_dnsmasq_dns_redirect}" - uci -q commit dhcp - uci -q delete ${CONFIG}.@global[0].dnsmasq_dns_redirect - uci -q commit ${CONFIG} - } - if [ -z "${ACL_default_dns_port}" ] || [ -n "${bak_dnsmasq_dns_redirect}" ]; then - uci -q del_list dhcp.@dnsmasq[0].addnmount="${GLOBAL_DNSMASQ_CONF_PATH}" - uci -q commit dhcp - lua $APP_PATH/helper_dnsmasq.lua restart -LOG 0 - fi - [ -n "${bak_bridge_nf_ipt}" ] && sysctl -w net.bridge.bridge-nf-call-iptables=${bak_bridge_nf_ipt} >/dev/null 2>&1 - [ -n "${bak_bridge_nf_ip6t}" ] && sysctl -w net.bridge.bridge-nf-call-ip6tables=${bak_bridge_nf_ip6t} >/dev/null 2>&1 - } - rm -rf $TMP_PATH - rm -rf /tmp/lock/${CONFIG}_socks_auto_switch* - rm -rf /tmp/lock/${CONFIG}_lease2hosts* - echolog "清空并关闭相关程序和缓存完成。" - exit 0 -} - -get_config() { - ENABLED_DEFAULT_ACL=0 - TCP_REDIR_PORT=1041 - UDP_REDIR_PORT=1051 - ENABLED=$(config_t_get global enabled 0) - SOCKS_ENABLED=$(config_t_get global socks_enabled 0) - TCP_NODE=$(config_t_get global tcp_node) - UDP_NODE=$(config_t_get global udp_node) - TCP_UDP=0 - if [ "$UDP_NODE" = "tcp" ]; then - UDP_NODE=$TCP_NODE - TCP_UDP=1 - elif [ "$UDP_NODE" = "$TCP_NODE" ]; then - TCP_UDP=1 - fi - [ "$ENABLED" = 1 ] && { - local _node - for _node in "$TCP_NODE" "$UDP_NODE"; do - [ -n "$_node" ] && case "$_node" in - Socks_*) [ "$(config_get_type "${_node#Socks_}")" = "socks" ] && ENABLED_DEFAULT_ACL=1 ;; - *) [ "$(config_get_type "$_node")" = "nodes" ] && ENABLED_DEFAULT_ACL=1 ;; - esac - done - } - ENABLED_ACLS=$(config_t_get global acl_enable 0) - [ "$ENABLED_ACLS" = 1 ] && { - [ "$(uci show ${CONFIG} | grep "@acl_rule" | grep "enabled='1'" | wc -l)" == 0 ] && ENABLED_ACLS=0 - } - - TCP_PROXY_WAY=$(config_t_get global_forwarding tcp_proxy_way redirect) - PROXY_IPV6=$(config_t_get global_forwarding ipv6_tproxy 0) - TCP_REDIR_PORTS=$(config_t_get global_forwarding tcp_redir_ports '80,443') - UDP_REDIR_PORTS=$(config_t_get global_forwarding udp_redir_ports '1:65535') - TCP_NO_REDIR_PORTS=$(config_t_get global_forwarding tcp_no_redir_ports 'disable') - UDP_NO_REDIR_PORTS=$(config_t_get global_forwarding udp_no_redir_ports 'disable') - TCP_PROXY_DROP_PORTS=$(config_t_get global_forwarding tcp_proxy_drop_ports 'disable') - UDP_PROXY_DROP_PORTS=$(config_t_get global_forwarding udp_proxy_drop_ports '80,443') - USE_DIRECT_LIST=$(config_t_get global use_direct_list 1) - USE_PROXY_LIST=$(config_t_get global use_proxy_list 1) - USE_BLOCK_LIST=$(config_t_get global use_block_list 1) - USE_GFW_LIST=$(config_t_get global use_gfw_list 1) - CHN_LIST=$(config_t_get global chn_list direct) - TCP_PROXY_MODE=$(config_t_get global tcp_proxy_mode proxy) - UDP_PROXY_MODE=$(config_t_get global udp_proxy_mode proxy) - [ "${TCP_PROXY_MODE}" != "disable" ] && TCP_PROXY_MODE="proxy" - [ "${UDP_PROXY_MODE}" != "disable" ] && UDP_PROXY_MODE="proxy" - LOCALHOST_PROXY=$(config_t_get global localhost_proxy 1) - [ "${LOCALHOST_PROXY}" == 1 ] && { - LOCALHOST_TCP_PROXY_MODE=$TCP_PROXY_MODE - LOCALHOST_UDP_PROXY_MODE=$UDP_PROXY_MODE - } - CLIENT_PROXY=$(config_t_get global client_proxy 1) - DNS_SHUNT=$(config_t_get global dns_shunt dnsmasq) - [ -z "$(first_type $DNS_SHUNT)" ] && DNS_SHUNT="dnsmasq" - DNS_MODE=$(config_t_get global dns_mode tcp) - [ "$DNS_SHUNT" = "smartdns" ] && DNS_MODE=$(config_t_get global smartdns_dns_mode socks) - REMOTE_DNS=$(config_t_get global remote_dns 1.1.1.1:53 | sed 's/#/:/g' | sed -E 's/\:([^:]+)$/#\1/g') - USE_DEFAULT_DNS=$(config_t_get global use_default_dns direct) - FILTER_PROXY_IPV6=$(config_t_get global filter_proxy_ipv6 0) - DNS_REDIRECT=$(config_t_get global dns_redirect 1) - - REDIRECT_LIST="socks ss ss-rust ssr sing-box xray trojan-plus naiveproxy hysteria2" - TPROXY_LIST="socks ss ss-rust ssr sing-box xray trojan-plus hysteria2" - - NEXT_DNS_LISTEN_PORT=15353 - TUN_DNS="127.0.0.1#${NEXT_DNS_LISTEN_PORT}" - DNS_CACHE=0 - DIRECT_DNS_QUERY_STRATEGY="UseIP" - REMOTE_DNS_QUERY_STRATEGY="UseIP" - [ "$FILTER_PROXY_IPV6" = "1" ] && REMOTE_DNS_QUERY_STRATEGY="UseIPv4" - DNSMASQ_FILTER_PROXY_IPV6=${FILTER_PROXY_IPV6} - - RESOLVFILE=/tmp/resolv.conf.d/resolv.conf.auto - [ -f "${RESOLVFILE}" ] && [ -s "${RESOLVFILE}" ] || RESOLVFILE=/tmp/resolv.conf.auto - - ISP_DNS=$(cat $RESOLVFILE 2>/dev/null | grep -E -o "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+" | grep -v -E '^(0\.0\.0\.0|127\.0\.0\.1)$' | awk '!seen[$0]++') - ISP_DNS6=$(cat $RESOLVFILE 2>/dev/null | grep -E "([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}" | awk -F % '{print $1}' | awk -F " " '{print $2}' | grep -v -Fx ::1 | grep -v -Fx :: | awk '!seen[$0]++') - - DEFAULT_DNS=$(uci show dhcp.@dnsmasq[0] | grep "\.server=" | awk -F '=' '{print $2}' | sed "s/'//g" | tr ' ' '\n' | grep -v "\/" | sed ':label;N;s/\n/,/;b label') - [ -z "${DEFAULT_DNS}" ] && [ "$(echo $ISP_DNS | tr ' ' '\n' | wc -l)" -ge 1 ] && DEFAULT_DNS=$(echo -n $ISP_DNS | tr ' ' '\n' | tr '\n' ',' | sed 's/,$//') - LOCAL_DNS="${DEFAULT_DNS:-119.29.29.29,223.5.5.5}" - IPT_APPEND_DNS=${LOCAL_DNS} - - DNSMASQ_CONF_DIR=/tmp/dnsmasq.d - DEFAULT_DNSMASQ_CFGID="$(uci -q show "dhcp.@dnsmasq[0]" | awk 'NR==1 {split($0, conf, /[.=]/); print conf[2]}')" - if [ -f "/tmp/etc/dnsmasq.conf.$DEFAULT_DNSMASQ_CFGID" ]; then - DNSMASQ_CONF_DIR="$(awk -F '=' '/^conf-dir=/ {print $2}' "/tmp/etc/dnsmasq.conf.$DEFAULT_DNSMASQ_CFGID")" - if [ -n "$DNSMASQ_CONF_DIR" ]; then - DNSMASQ_CONF_DIR=${DNSMASQ_CONF_DIR%*/} - else - DNSMASQ_CONF_DIR="/tmp/dnsmasq.d" - fi - fi - set_cache_var GLOBAL_DNSMASQ_CONF ${DNSMASQ_CONF_DIR}/dnsmasq-${CONFIG}.conf - set_cache_var GLOBAL_DNSMASQ_CONF_PATH ${GLOBAL_ACL_PATH}/dnsmasq.d - - SMARTDNS_LOCAL_PORT=0 - SMARTDNS_LISTEN_PORT=0 - [ "${DNS_SHUNT}" = "smartdns" ] && { - NEXT_DNS_LISTEN_PORT=$(expr $NEXT_DNS_LISTEN_PORT + 1) - SMARTDNS_LOCAL_PORT=${NEXT_DNS_LISTEN_PORT} - NEXT_DNS_LISTEN_PORT=$(expr $NEXT_DNS_LISTEN_PORT + 1) - SMARTDNS_LISTEN_PORT=${NEXT_DNS_LISTEN_PORT} - NEXT_DNS_LISTEN_PORT=$(expr $NEXT_DNS_LISTEN_PORT + 1) - LOCAL_DNS="127.0.0.1#${SMARTDNS_LOCAL_PORT}" - uci -q set smartdns.@smartdns[0].auto_set_dnsmasq=0 - uci commit smartdns - } -} - -arg1=$1 -shift -case $arg1 in -run_socks) - run_socks $@ - ;; -socks_node_switch) - socks_node_switch $@ - ;; -start) - start - ;; -stop) - stop - ;; -esac diff --git a/small/luci-app-passwall/root/usr/share/passwall/haproxy.lua b/small/luci-app-passwall/root/usr/share/passwall/haproxy.lua deleted file mode 100644 index cfc09be0ba..0000000000 --- a/small/luci-app-passwall/root/usr/share/passwall/haproxy.lua +++ /dev/null @@ -1,240 +0,0 @@ -#!/usr/bin/lua - -local api = require ("luci.passwall.api") -local appname = "passwall" -local fs = api.fs -local jsonc = api.jsonc -local uci = api.uci -local sys = api.sys - -local log = function(...) - api.log(...) -end - -function get_ip_port_from(str) - local result_port = sys.exec("echo -n " .. str .. " | sed -n 's/^.*[:#]\\([0-9]*\\)$/\\1/p'") - local result_ip = sys.exec(string.format("__host=%s;__varport=%s;", str, result_port) .. "echo -n ${__host%%${__varport:+[:#]${__varport}*}}") - return result_ip, result_port -end - -local new_port -local function get_new_port() - local cmd_format = ". /usr/share/passwall/utils.sh ; echo -n $(get_new_port %s tcp)" - local set_port = 0 - if new_port and tonumber(new_port) then - set_port = tonumber(new_port) + 1 - end - new_port = tonumber(sys.exec(string.format(cmd_format, set_port == 0 and "auto" or set_port))) - return new_port -end - -local var = api.get_args(arg) -local haproxy_path = var["-path"] -local haproxy_conf = var["-conf"] -local haproxy_dns = var["-dns"] or "119.29.29.29:53,223.5.5.5:53" - -local cpu_thread = sys.exec('echo -n $(cat /proc/cpuinfo | grep "processor" | wc -l)') or "1" -local health_check_type = uci:get(appname, "@global_haproxy[0]", "health_check_type") or "tcp" -local health_check_inter = uci:get(appname, "@global_haproxy[0]", "health_check_inter") or "10" -local console_port = uci:get(appname, "@global_haproxy[0]", "console_port") -local bind_local = uci:get(appname, "@global_haproxy[0]", "bind_local") or "0" -local bind_address = "0.0.0.0" -if bind_local == "1" then bind_address = "127.0.0.1" end - -log("HAPROXY 负载均衡:") -log(string.format(" * 控制台端口:%s", console_port)) -fs.mkdir(haproxy_path) -local haproxy_file = haproxy_path .. "/" .. haproxy_conf - -local f_out = io.open(haproxy_file, "a") - -local haproxy_config = [[ -global - daemon - log 127.0.0.1 local2 - maxconn 60000 - stats socket {{path}}/haproxy.sock - nbthread {{nbthread}} - external-check - insecure-fork-wanted - -defaults - mode tcp - log global - option tcplog - option dontlognull - option http-server-close - #option forwardfor except 127.0.0.0/8 - option redispatch - retries 2 - timeout http-request 10s - timeout queue 1m - timeout connect 10s - timeout client 1m - timeout server 1m - timeout http-keep-alive 10s - timeout check 10s - maxconn 3000 - -resolvers mydns - resolve_retries 1 - timeout resolve 5s - hold valid 600s -{{dns}} -]] - -haproxy_config = haproxy_config:gsub("{{path}}", haproxy_path) -haproxy_config = haproxy_config:gsub("{{nbthread}}", cpu_thread) - -local mydns = "" -local index = 0 -string.gsub(haproxy_dns, '[^' .. "," .. ']+', function(w) - index = index + 1 - local s = w:gsub("#", ":") - if not s:find(":") then - s = s .. ":53" - end - mydns = mydns .. (index > 1 and "\n" or "") .. " " .. string.format("nameserver dns%s %s", index, s) -end) -haproxy_config = haproxy_config:gsub("{{dns}}", mydns) - -f_out:write(haproxy_config) - -local listens = {} - -uci:foreach(appname, "haproxy_config", function(t) - if t.enabled == "1" then - local server_remark - local server_address - local server_port - local lbss = t.lbss - local listen_port = tonumber(t.haproxy_port) or 0 - local server_node = uci:get_all(appname, lbss) - if server_node and server_node.address and server_node.port then - server_remark = server_node.address .. ":" .. server_node.port - server_address = server_node.address - server_port = server_node.port - t.origin_address = server_address - t.origin_port = server_port - if health_check_type == "passwall_logic" then - if server_node.type ~= "Socks" then - local relay_port = server_node.port - new_port = get_new_port() - local config_file = string.format("haproxy_%s_%s.json", t[".name"], new_port) - sys.call(string.format('/usr/share/%s/app.sh run_socks "%s"> /dev/null', - appname, - string.format("flag=%s node=%s bind=%s socks_port=%s config_file=%s", - new_port, --flag - server_node[".name"], --node - "127.0.0.1", --bind - new_port, --socks port - config_file --config file - ) - ) - ) - server_address = "127.0.0.1" - server_port = new_port - end - end - else - server_address, server_port = get_ip_port_from(lbss) - server_remark = server_address .. ":" .. server_port - t.origin_address = server_address - t.origin_port = server_port - end - if server_address and server_port and listen_port > 0 then - if not listens[listen_port] then - listens[listen_port] = {} - end - t.server_remark = server_remark - t.server_address = server_address - t.server_port = server_port - table.insert(listens[listen_port], t) - else - log(" - 丢弃1个明显无效的节点") - end - end -end) - -local sortTable = {} -for i in pairs(listens) do - if i ~= nil then - table.insert(sortTable, i) - end -end -table.sort(sortTable, function(a,b) return (a < b) end) - -for i, port in pairs(sortTable) do - log(" + 入口 %s:%s" % {bind_address, port}) - - f_out:write("\n" .. string.format([[ -listen %s - bind %s:%s - mode tcp - balance roundrobin -]], port, bind_address, port)) - - if health_check_type == "passwall_logic" then - f_out:write(string.format([[ - option external-check - external-check command "/usr/share/passwall/haproxy_check.sh" -]], port, port)) - end - - local count_M, count_B = 1, 1 - for i, o in ipairs(listens[port]) do - local remark = o.server_remark or "" - -- 防止重名导致无法运行 - if tostring(o.backup) ~= "1" then - remark = "M" .. count_M .. "-" .. remark - count_M = count_M + 1 - else - remark = "B" .. count_B .. "-" .. remark - count_B = count_B + 1 - end - local server = o.server_address .. ":" .. o.server_port - local server_conf = "server {{remark}} {{server}} weight {{weight}} {{resolvers}} check inter {{inter}} rise 1 fall 3 {{backup}}" - server_conf = server_conf:gsub("{{remark}}", remark) - server_conf = server_conf:gsub("{{server}}", server) - server_conf = server_conf:gsub("{{weight}}", o.lbweight) - local resolvers = "resolvers mydns" - if api.is_ip(o.server_address) then - resolvers = "" - end - server_conf = server_conf:gsub("{{resolvers}}", resolvers) - server_conf = server_conf:gsub("{{inter}}", tonumber(health_check_inter) .. "s") - server_conf = server_conf:gsub("{{backup}}", tostring(o.backup) == "1" and "backup" or "") - - f_out:write(" " .. server_conf .. "\n") - - if o.export ~= "0" then - sys.call(string.format(". /usr/share/passwall/utils.sh ; add_ip2route %s %s", o.origin_address, o.export)) - end - - log(string.format(" | - 出口节点:%s:%s,权重:%s", o.origin_address, o.origin_port, o.lbweight)) - end -end - ---控制台配置 -local console_user = uci:get(appname, "@global_haproxy[0]", "console_user") -local console_password = uci:get(appname, "@global_haproxy[0]", "console_password") -local str = [[ -listen console - bind 0.0.0.0:%s - mode http - stats refresh 30s - stats uri / - stats admin if TRUE - %s -]] -f_out:write("\n" .. string.format(str, console_port, (console_user and console_user ~= "" and console_password and console_password ~= "") and "stats auth " .. console_user .. ":" .. console_password or "")) - -f_out:close() - ---passwall内置健康检查URL -if health_check_type == "passwall_logic" then - local probeUrl = uci:get(appname, "@global_haproxy[0]", "health_probe_url") or "https://www.google.com/generate_204" - local f_url = io.open(haproxy_path .. "/Probe_URL", "w") - f_url:write(probeUrl) - f_url:close() -end diff --git a/small/luci-app-passwall/root/usr/share/passwall/haproxy_check.sh b/small/luci-app-passwall/root/usr/share/passwall/haproxy_check.sh deleted file mode 100755 index 91c1531b14..0000000000 --- a/small/luci-app-passwall/root/usr/share/passwall/haproxy_check.sh +++ /dev/null @@ -1,37 +0,0 @@ -#!/bin/sh - -export PATH=/usr/sbin:/usr/bin:/sbin:/bin:/root/bin -CONFIG=passwall - -listen_address=$1 -listen_port=$2 -server_address=$3 -server_port=$4 - -pgrep -af "${CONFIG}/" | awk '/app\.sh.*(start|stop)/ || /nftables\.sh/ || /iptables\.sh/ { found = 1 } END { exit !found }' && { - # 特定任务执行中不检测 - exit 0 -} - -probe_file="/tmp/etc/passwall/haproxy/Probe_URL" -probeUrl="https://www.google.com/generate_204" -if [ -f "$probe_file" ]; then - firstLine=$(head -n 1 "$probe_file" | tr -d ' \t\n') - [ -n "$firstLine" ] && probeUrl="$firstLine" -fi - -extra_params="-x socks5h://${server_address}:${server_port}" -if /usr/bin/curl --help all | grep -q "\-\-retry-all-errors"; then - extra_params="${extra_params} --retry-all-errors" -fi - -status=$(/usr/bin/curl -I -o /dev/null -skL ${extra_params} --connect-timeout 3 --retry 2 --max-time 10 -w "%{http_code}" "${probeUrl}") - -case "$status" in - 200|204) - exit 0 - ;; - *) - exit 1 - ;; -esac diff --git a/small/luci-app-passwall/root/usr/share/passwall/helper_chinadns_add.lua b/small/luci-app-passwall/root/usr/share/passwall/helper_chinadns_add.lua deleted file mode 100644 index c17dde63d2..0000000000 --- a/small/luci-app-passwall/root/usr/share/passwall/helper_chinadns_add.lua +++ /dev/null @@ -1,525 +0,0 @@ -local sys = require "luci.sys" -local api = require "luci.passwall.api" -local appname = "passwall" - -local var = api.get_args(arg) -local FLAG = var["-FLAG"] -local LISTEN_PORT = var["-LISTEN_PORT"] -local DNS_LOCAL = var["-DNS_LOCAL"] -local DNS_TRUST = var["-DNS_TRUST"] -local USE_DIRECT_LIST = var["-USE_DIRECT_LIST"] -local USE_PROXY_LIST = var["-USE_PROXY_LIST"] -local USE_BLOCK_LIST = var["-USE_BLOCK_LIST"] -local GFWLIST = var["-GFWLIST"] -local CHNLIST = var["-CHNLIST"] -local NO_IPV6_TRUST = var["-NO_IPV6_TRUST"] -local DEFAULT_MODE = var["-DEFAULT_MODE"] -local DEFAULT_TAG = var["-DEFAULT_TAG"] -local NO_LOGIC_LOG = var["-NO_LOGIC_LOG"] -local TCP_NODE = var["-TCP_NODE"] -local NFTFLAG = var["-NFTFLAG"] -local REMOTE_FAKEDNS = var["-REMOTE_FAKEDNS"] -local LOG_FILE = var["-LOG_FILE"] - -local uci = api.uci -local sys = api.sys -local fs = api.fs -local datatypes = api.datatypes - -local TMP_PATH = "/tmp/etc/" .. appname -local TMP_ACL_PATH = TMP_PATH .. "/acl" -local RULES_PATH = "/usr/share/" .. appname .. "/rules" -local FLAG_PATH = TMP_ACL_PATH .. "/" .. FLAG -local config_lines = {} -local tmp_lines = {} -local USE_GEOVIEW = uci:get(appname, "@global_rules[0]", "enable_geoview") - -local function log(...) - if NO_LOGIC_LOG == "1" then - return - end - api.log(...) -end - -local function is_file_nonzero(path) - if path and #path > 1 then - if sys.exec('[ -s "%s" ] && echo -n 1' % path) == "1" then - return true - end - end - return nil -end - -local function insert_unique(dest_table, value, lookup_table) - if not lookup_table[value] then - table.insert(dest_table, value) - lookup_table[value] = true - end -end - -local function merge_array(array1, array2) - for i, line in ipairs(array2) do - table.insert(array1, #array1 + 1, line) - end -end - -local function insert_array_before(array1, array2, target) --将array2插入到array1的target前面,target不存在则追加 - for i, line in ipairs(array1) do - if line == target then - for j = #array2, 1, -1 do - table.insert(array1, i, array2[j]) - end - return - end - end - merge_array(array1, array2) -end - -local function insert_array_after(array1, array2, target) --将array2插入到array1的target后面,target不存在则追加 - for i, line in ipairs(array1) do - if line == target then - for j = 1, #array2 do - table.insert(array1, i + j, array2[j]) - end - return - end - end - merge_array(array1, array2) -end - -local function get_geosite(list_arg, out_path) - local geosite_path = uci:get(appname, "@global_rules[0]", "v2ray_location_asset") or "/usr/share/v2ray/" - geosite_path = geosite_path:match("^(.*)/") .. "/geosite.dat" - if not is_file_nonzero(geosite_path) then return 1 end - if api.is_finded("geoview") and list_arg and out_path then - sys.exec("geoview -type geosite -append=true -input " .. geosite_path .. " -list '" .. list_arg .. "' -output " .. out_path) - return 0 - end - return 1 -end - -if not fs.access(FLAG_PATH) then - fs.mkdir(FLAG_PATH) -end - -local setflag = (NFTFLAG == "1") and "inet@passwall@" or "" - -local only_global = (DEFAULT_MODE == "proxy" and CHNLIST == "0" and GFWLIST == "0") and 1 - -local force_https_soa = uci:get(appname, "@global[0]", "force_https_soa") or 1 - -config_lines = { - LOG_FILE ~= "/dev/null" and "verbose" or "", - "bind-addr ::", - "bind-port " .. LISTEN_PORT, - "china-dns " .. DNS_LOCAL, - "trust-dns " .. DNS_TRUST, - tonumber(force_https_soa) == 1 and "filter-qtype 65" or "" -} - -for i = 1, 6 do - table.insert(config_lines, "#--" .. i) -end - ---自定义规则组,后声明的组具有更高优先级 ---屏蔽列表 -local file_block_host = TMP_ACL_PATH .. "/block_host" -if USE_BLOCK_LIST == "1" and not fs.access(file_block_host) then - local block_domain, lookup_block_domain = {}, {} - local geosite_arg = "" - for line in io.lines(RULES_PATH .. "/block_host") do - if not line:find("#") and line:find("geosite:") then - line = string.match(line, ":([^:]+)$") - geosite_arg = geosite_arg .. (geosite_arg ~= "" and "," or "") .. line - else - line = api.get_std_domain(line) - if line ~= "" and not line:find("#") then - insert_unique(block_domain, line, lookup_block_domain) - end - end - end - if #block_domain > 0 then - local f_out = io.open(file_block_host, "w") - for i = 1, #block_domain do - f_out:write(block_domain[i] .. "\n") - end - f_out:close() - end - if USE_GEOVIEW == "1" and geosite_arg ~= "" and api.is_finded("geoview") then - if get_geosite(geosite_arg, file_block_host) == 0 then - log(" * 解析[屏蔽列表] Geosite 到屏蔽域名表(blocklist)完成") - else - log(" * 解析[屏蔽列表] Geosite 到屏蔽域名表(blocklist)失败!") - end - end -end -if USE_BLOCK_LIST == "1" and is_file_nonzero(file_block_host) then - tmp_lines = { - "group null", - "group-dnl " .. file_block_host - } - insert_array_after(config_lines, tmp_lines, "#--5") -end - ---始终用国内DNS解析节点域名 -local file_vpslist = TMP_ACL_PATH .. "/vpslist" -if not is_file_nonzero(file_vpslist) then - local f_out = io.open(file_vpslist, "w") - local written_domains = {} - uci:foreach(appname, "nodes", function(t) - local function process_address(address) - if address == "engage.cloudflareclient.com" then return end - if datatypes.hostname(address) and not written_domains[address] then - f_out:write(address .. "\n") - written_domains[address] = true - end - end - process_address(t.address) - process_address(t.download_address) - end) - f_out:close() -end -if is_file_nonzero(file_vpslist) then - local sets = { - setflag .. "passwall_vps", - setflag .. "passwall_vps6" - } - tmp_lines = { - "group vpslist", - "group-dnl " .. file_vpslist, - "group-upstream " .. DNS_LOCAL, - "group-ipset " .. table.concat(sets, ",") - } - insert_array_after(config_lines, tmp_lines, "#--6") - log(string.format(" - 节点列表中的域名(vpslist):%s", DNS_LOCAL or "默认")) -end - ---直连(白名单)列表 -local file_direct_host = TMP_ACL_PATH .. "/direct_host" -if USE_DIRECT_LIST == "1" and not fs.access(file_direct_host) then - local direct_domain, lookup_direct_domain = {}, {} - local geosite_arg = "" - for line in io.lines(RULES_PATH .. "/direct_host") do - if not line:find("#") and line:find("geosite:") then - line = string.match(line, ":([^:]+)$") - geosite_arg = geosite_arg .. (geosite_arg ~= "" and "," or "") .. line - else - line = api.get_std_domain(line) - if line ~= "" and not line:find("#") then - insert_unique(direct_domain, line, lookup_direct_domain) - end - end - end - if #direct_domain > 0 then - local f_out = io.open(file_direct_host, "w") - for i = 1, #direct_domain do - f_out:write(direct_domain[i] .. "\n") - end - f_out:close() - end - if USE_GEOVIEW == "1" and geosite_arg ~= "" and api.is_finded("geoview") then - if get_geosite(geosite_arg, file_direct_host) == 0 then - log(" * 解析[直连列表] Geosite 到域名白名单(whitelist)完成") - else - log(" * 解析[直连列表] Geosite 到域名白名单(whitelist)失败!") - end - end -end -if USE_DIRECT_LIST == "1" and is_file_nonzero(file_direct_host) then - local sets = { - setflag .. "passwall_white", - setflag .. "passwall_white6" - } - tmp_lines = { - "group directlist", - "group-dnl " .. file_direct_host, - "group-upstream " .. DNS_LOCAL, - "group-ipset " .. table.concat(sets, ",") - } - insert_array_after(config_lines, tmp_lines, "#--4") - log(string.format(" - 域名白名单(whitelist):%s", DNS_LOCAL or "默认")) -end - ---代理(黑名单)列表 -local file_proxy_host = TMP_ACL_PATH .. "/proxy_host" -if USE_PROXY_LIST == "1" and not fs.access(file_proxy_host) then - local proxy_domain, lookup_proxy_domain = {}, {} - local geosite_arg = "" - for line in io.lines(RULES_PATH .. "/proxy_host") do - if not line:find("#") and line:find("geosite:") then - line = string.match(line, ":([^:]+)$") - geosite_arg = geosite_arg .. (geosite_arg ~= "" and "," or "") .. line - else - line = api.get_std_domain(line) - if line ~= "" and not line:find("#") then - insert_unique(proxy_domain, line, lookup_proxy_domain) - end - end - end - if #proxy_domain > 0 then - local f_out = io.open(file_proxy_host, "w") - for i = 1, #proxy_domain do - f_out:write(proxy_domain[i] .. "\n") - end - f_out:close() - end - if USE_GEOVIEW == "1" and geosite_arg ~= "" and api.is_finded("geoview") then - if get_geosite(geosite_arg, file_proxy_host) == 0 then - log(" * 解析[代理列表] Geosite 到代理域名表(blacklist)完成") - else - log(" * 解析[代理列表] Geosite 到代理域名表(blacklist)失败!") - end - end -end -if USE_PROXY_LIST == "1" and is_file_nonzero(file_proxy_host) then - local sets = { - setflag .. "passwall_black", - setflag .. "passwall_black6" - } - if FLAG ~= "default" then - sets = { - setflag .. "passwall_" .. FLAG .. "_black", - setflag .. "passwall_" .. FLAG .. "_black6" - } - end - tmp_lines = { - "group proxylist", - "group-dnl " .. file_proxy_host, - "group-upstream " .. DNS_TRUST, - REMOTE_FAKEDNS ~= "1" and "group-ipset " .. table.concat(sets, ",") or "" - } - if NO_IPV6_TRUST == "1" then table.insert(tmp_lines, "no-ipv6 tag:proxylist") end - insert_array_after(config_lines, tmp_lines, "#--3") - log(string.format(" - 代理域名表(blacklist):%s", DNS_TRUST or "默认")) -end - ---内置组(chn/gfw)优先级在自定义组后 ---GFW列表 -if GFWLIST == "1" and is_file_nonzero(RULES_PATH .. "/gfwlist") then - local sets = { - setflag .. "passwall_gfw", - setflag .. "passwall_gfw6" - } - if FLAG ~= "default" then - sets = { - setflag .. "passwall_" .. FLAG .. "_gfw", - setflag .. "passwall_" .. FLAG .. "_gfw6" - } - end - tmp_lines = { - "gfwlist-file " .. RULES_PATH .. "/gfwlist", - REMOTE_FAKEDNS ~= "1" and "add-taggfw-ip " .. table.concat(sets, ",") or "" - } - if NO_IPV6_TRUST == "1" then table.insert(tmp_lines, "no-ipv6 tag:gfw") end - merge_array(config_lines, tmp_lines) - log(string.format(" - 防火墙域名表(gfwlist):%s", DNS_TRUST or "默认")) -end - ---中国列表 -if CHNLIST ~= "0" and is_file_nonzero(RULES_PATH .. "/chnlist") then - if CHNLIST == "direct" then - tmp_lines = { - "chnlist-file " .. RULES_PATH .. "/chnlist", - "ipset-name4 " .. setflag .. "passwall_chn", - "ipset-name6 " .. setflag .. "passwall_chn6", - "add-tagchn-ip", - "chnlist-first" - } - merge_array(config_lines, tmp_lines) - log(string.format(" - 中国域名表(chnroute):%s", DNS_LOCAL or "默认")) - end - - --回中国模式 - if CHNLIST == "proxy" then - local sets = { - setflag .. "passwall_chn", - setflag .. "passwall_chn6" - } - tmp_lines = { - "group chn_proxy", - "group-dnl " .. RULES_PATH .. "/chnlist", - "group-upstream " .. DNS_TRUST, - REMOTE_FAKEDNS ~= "1" and "group-ipset " .. table.concat(sets, ",") or "" - } - if NO_IPV6_TRUST == "1" then table.insert(tmp_lines, "no-ipv6 tag:chn_proxy") end - insert_array_after(config_lines, tmp_lines, "#--1") - log(string.format(" - 中国域名表(chnroute):%s", DNS_TRUST or "默认")) - end -end - ---分流规则 -if uci:get(appname, TCP_NODE, "protocol") == "_shunt" then - local white_domain, lookup_white_domain = {}, {} - local shunt_domain, lookup_shunt_domain = {}, {} - local file_white_host = FLAG_PATH .. "/shunt_direct_host" - local file_shunt_host = FLAG_PATH .. "/shunt_proxy_host" - local geosite_white_arg, geosite_shunt_arg = "", "" - - local t = uci:get_all(appname, TCP_NODE) - local default_node_id = t["default_node"] or "_direct" - uci:foreach(appname, "shunt_rules", function(s) - local _node_id = t[s[".name"]] - if _node_id and _node_id ~= "_blackhole" then - if _node_id == "_default" then - _node_id = default_node_id - end - - local domain_list = s.domain_list or "" - for line in string.gmatch(domain_list, "[^\r\n]+") do - if line ~= "" and not line:find("#") and not line:find("regexp:") and not line:find("ext:") then - if line:find("geosite:") then - line = string.match(line, ":([^:]+)$") - if _node_id == "_direct" then - geosite_white_arg = geosite_white_arg .. (geosite_white_arg ~= "" and "," or "") .. line - else - geosite_shunt_arg = geosite_shunt_arg .. (geosite_shunt_arg ~= "" and "," or "") .. line - end - else - if line:find("domain:") or line:find("full:") then - line = string.match(line, ":([^:]+)$") - end - line = api.get_std_domain(line) - if line ~= "" and not line:find("#") then - if _node_id == "_direct" then - insert_unique(white_domain, line, lookup_white_domain) - else - insert_unique(shunt_domain, line, lookup_shunt_domain) - end - end - end - end - end - - if _node_id ~= "_direct" then - log(string.format(" - Sing-Box/Xray分流规则(%s):%s", s.remarks, DNS_TRUST or "默认")) - end - end - end) - - if is_file_nonzero(file_white_host) == nil then - if #white_domain > 0 then - local f_out = io.open(file_white_host, "w") - for i = 1, #white_domain do - f_out:write(white_domain[i] .. "\n") - end - f_out:close() - end - end - - if is_file_nonzero(file_shunt_host) == nil then - if #shunt_domain > 0 then - local f_out = io.open(file_shunt_host, "w") - for i = 1, #shunt_domain do - f_out:write(shunt_domain[i] .. "\n") - end - f_out:close() - end - end - - if GFWLIST == "1" and CHNLIST == "0" and USE_GEOVIEW == "1" and api.is_finded("geoview") then --仅GFW模式解析geosite - local return_white, return_shunt - if geosite_white_arg ~= "" then - return_white = get_geosite(geosite_white_arg, file_white_host) - end - if geosite_shunt_arg ~= "" then - return_shunt = get_geosite(geosite_shunt_arg, file_shunt_host) - end - if (return_white == nil or return_white == 0) and (return_shunt == nil or return_shunt == 0) then - log(" * 解析[分流节点] Geosite 完成") - else - log(" * 解析[分流节点] Geosite 失败!") - end - end - - local sets = { - setflag .. "passwall_shunt", - setflag .. "passwall_shunt6" - } - if FLAG ~= "default" then - sets = { - setflag .. "passwall_" .. FLAG .. "_shunt", - setflag .. "passwall_" .. FLAG .. "_shunt6" - } - end - - if is_file_nonzero(file_white_host) then - if USE_DIRECT_LIST == "1" then - --当白名单启用时,添加到白名单组一同处理 - for i, v in ipairs(config_lines) do - if v == "group-dnl " .. file_direct_host then - config_lines[i] = "group-dnl " .. file_direct_host .. "," .. file_white_host - break - end - end - else - --当白名单不启用时,创建新组,ipset到shuntlist - tmp_lines = { - "group whitelist", - "group-dnl " .. file_white_host, - "group-upstream " .. DNS_LOCAL, - "group-ipset " .. table.concat(sets, ",") - } - insert_array_after(config_lines, tmp_lines, "#--4") - end - - end - - if is_file_nonzero(file_shunt_host) then - tmp_lines = { - "group shuntlist", - "group-dnl " .. file_shunt_host, - "group-upstream " .. DNS_TRUST, - (not only_global and REMOTE_FAKEDNS == "1") and "" or ("group-ipset " .. table.concat(sets, ",")) - } - if NO_IPV6_TRUST == "1" then table.insert(tmp_lines, "no-ipv6 tag:shuntlist") end - insert_array_after(config_lines, tmp_lines, "#--2") - end - -end - ---只使用gfwlist模式,GFW列表以外的域名及默认使用本地DNS -if GFWLIST == "1" and CHNLIST == "0" then DEFAULT_TAG = "chn" end - ---回中国模式,中国列表以外的域名及默认使用本地DNS -if CHNLIST == "proxy" then DEFAULT_TAG = "chn" end - ---全局模式,默认使用远程DNS -if only_global then - DEFAULT_TAG = "gfw" - if NO_IPV6_TRUST == "1" and uci:get(appname, TCP_NODE, "protocol") ~= "_shunt" then - table.insert(config_lines, "no-ipv6") - end -end - ---是否接受直连 DNS 空响应 -if DEFAULT_TAG == "none_noip" then table.insert(config_lines, "noip-as-chnip") end - -if DEFAULT_TAG == nil or DEFAULT_TAG == "smart" or DEFAULT_TAG == "none_noip" then DEFAULT_TAG = "none" end - -table.insert(config_lines, "default-tag " .. DEFAULT_TAG) - -if DEFAULT_TAG == "none" then - table.insert(config_lines, "verdict-cache 5000") -end - -table.insert(config_lines, "hosts") - -if DEFAULT_TAG == "chn" then - log(string.format(" - 默认 DNS :%s", DNS_LOCAL)) -elseif DEFAULT_TAG == "gfw" then - log(string.format(" - 默认 DNS :%s", DNS_TRUST)) -else - log(string.format(" - 默认 DNS :%s", "智能匹配")) -end - ---输出配置文件 -if #config_lines > 0 then - for i = 1, #config_lines do - line = config_lines[i] - if line ~= "" and not line:find("^#--") then - print(line) - end - end -end - -log(" - ChinaDNS-NG已作为Dnsmasq上游,如果你自行配置了错误的DNS流程,将会导致域名(直连/代理域名)分流失效!!!") diff --git a/small/luci-app-passwall/root/usr/share/passwall/helper_dnsmasq.lua b/small/luci-app-passwall/root/usr/share/passwall/helper_dnsmasq.lua deleted file mode 100644 index f53085a940..0000000000 --- a/small/luci-app-passwall/root/usr/share/passwall/helper_dnsmasq.lua +++ /dev/null @@ -1,720 +0,0 @@ -local api = require "luci.passwall.api" -local appname = "passwall" -local uci = api.uci -local sys = api.sys -local fs = api.fs -local datatypes = api.datatypes -local TMP = {} - -local function tinsert(table_name, val) - if table_name and type(table_name) == "table" then - if not TMP[table_name] then - TMP[table_name] = {} - end - if TMP[table_name][val] then - return false - end - table.insert(table_name, val) - TMP[table_name][val] = true - return true - end - return false -end - -local function backup_servers() - local DNSMASQ_DNS = uci:get("dhcp", "@dnsmasq[0]", "server") - if DNSMASQ_DNS and #DNSMASQ_DNS > 0 then - uci:set(appname, "@global[0]", "dnsmasq_servers", DNSMASQ_DNS) - api.uci_save(uci, appname, true) - end -end - -local function restore_servers() - local dns_table = {} - local DNSMASQ_DNS = uci:get("dhcp", "@dnsmasq[0]", "server") - if DNSMASQ_DNS and #DNSMASQ_DNS > 0 then - for k, v in ipairs(DNSMASQ_DNS) do - tinsert(dns_table, v) - end - end - local OLD_SERVER = uci:get(appname, "@global[0]", "dnsmasq_servers") - if OLD_SERVER and #OLD_SERVER > 0 then - for k, v in ipairs(OLD_SERVER) do - tinsert(dns_table, v) - end - uci:delete(appname, "@global[0]", "dnsmasq_servers") - api.uci_save(uci, appname, true) - end - if dns_table and #dns_table > 0 then - uci:set_list("dhcp", "@dnsmasq[0]", "server", dns_table) - api.uci_save(uci, "dhcp", true) - end -end - -function stretch() - local dnsmasq_server = uci:get("dhcp", "@dnsmasq[0]", "server") - local dnsmasq_noresolv = uci:get("dhcp", "@dnsmasq[0]", "noresolv") - local _flag - if dnsmasq_server and #dnsmasq_server > 0 then - for k, v in ipairs(dnsmasq_server) do - if not v:find("/") then - _flag = true - end - end - end - if not _flag and dnsmasq_noresolv == "1" then - uci:delete("dhcp", "@dnsmasq[0]", "noresolv") - local RESOLVFILE = "/tmp/resolv.conf.d/resolv.conf.auto" - local file = io.open(RESOLVFILE, "r") - if not file then - RESOLVFILE = "/tmp/resolv.conf.auto" - else - local size = file:seek("end") - file:close() - if size == 0 then - RESOLVFILE = "/tmp/resolv.conf.auto" - end - end - uci:set("dhcp", "@dnsmasq[0]", "resolvfile", RESOLVFILE) - api.uci_save(uci, "dhcp", true) - end -end - -function restart(var) - local LOG = var["-LOG"] - sys.call("/etc/init.d/dnsmasq restart >/dev/null 2>&1") - if LOG == "1" then - api.log("重启 dnsmasq 服务") - end -end - -function logic_restart(var) - local LOG = var["-LOG"] - local DEFAULT_DNS = api.get_cache_var("DEFAULT_DNS") - if DEFAULT_DNS then - backup_servers() - --sys.call("sed -i '/list server/d' /etc/config/dhcp >/dev/null 2>&1") - local dns_table = {} - local dnsmasq_server = uci:get("dhcp", "@dnsmasq[0]", "server") - if dnsmasq_server and #dnsmasq_server > 0 then - for k, v in ipairs(dnsmasq_server) do - if v:find("/") then - tinsert(dns_table, v) - end - end - uci:set_list("dhcp", "@dnsmasq[0]", "server", dns_table) - api.uci_save(uci, "dhcp", true) - end - sys.call("/etc/init.d/dnsmasq restart >/dev/null 2>&1") - restore_servers() - else - sys.call("/etc/init.d/dnsmasq restart >/dev/null 2>&1") - end - if LOG == "1" then - api.log("重启 dnsmasq 服务") - end -end - -function copy_instance(var) - local LISTEN_PORT = var["-LISTEN_PORT"] - local TMP_DNSMASQ_PATH = var["-TMP_DNSMASQ_PATH"] - local conf_lines = {} - local DEFAULT_DNSMASQ_CFGID = sys.exec("echo -n $(uci -q show dhcp.@dnsmasq[0] | awk 'NR==1 {split($0, conf, /[.=]/); print conf[2]}')") - for line in io.lines("/tmp/etc/dnsmasq.conf." .. DEFAULT_DNSMASQ_CFGID) do - local filter - if line:find("passwall") then filter = true end - if line:find("ubus") then filter = true end - if line:find("dhcp") then filter = true end - if line:find("server=") == 1 then filter = true end - if line:find("port=") == 1 then filter = true end - if line:find("conf%-dir=") == 1 then - filter = true - if TMP_DNSMASQ_PATH then - local tmp_path = line:sub(1 + #"conf-dir=") - sys.call(string.format("cp -r %s/* %s/ 2>/dev/null", tmp_path, TMP_DNSMASQ_PATH)) - end - end - if line:find("address=") == 1 or (line:find("server=") == 1 and line:find("/")) then filter = nil end - if not filter then - tinsert(conf_lines, line) - end - end - tinsert(conf_lines, "port=" .. LISTEN_PORT) - if TMP_DNSMASQ_PATH then - sys.call("rm -rf " .. TMP_DNSMASQ_PATH .. "/*passwall*") - end - if var["-return"] == "1" then - return conf_lines - end - if #conf_lines > 0 then - local DNSMASQ_CONF = var["-DNSMASQ_CONF"] - local conf_out = io.open(DNSMASQ_CONF, "a") - conf_out:write(table.concat(conf_lines, "\n")) - conf_out:write("\n") - conf_out:close() - end -end - -function add_rule(var) - local FLAG = var["-FLAG"] - local TMP_DNSMASQ_PATH = var["-TMP_DNSMASQ_PATH"] - local DNSMASQ_CONF_FILE = var["-DNSMASQ_CONF_FILE"] - local LISTEN_PORT = var["-LISTEN_PORT"] - local DEFAULT_DNS = var["-DEFAULT_DNS"] - local LOCAL_DNS = var["-LOCAL_DNS"] - local TUN_DNS = var["-TUN_DNS"] - local REMOTE_FAKEDNS = var["-REMOTE_FAKEDNS"] - local USE_DEFAULT_DNS = var["-USE_DEFAULT_DNS"] - local CHINADNS_DNS = var["-CHINADNS_DNS"] - local TCP_NODE = var["-TCP_NODE"] - local USE_DIRECT_LIST = var["-USE_DIRECT_LIST"] - local USE_PROXY_LIST = var["-USE_PROXY_LIST"] - local USE_BLOCK_LIST = var["-USE_BLOCK_LIST"] - local USE_GFW_LIST = var["-USE_GFW_LIST"] - local CHN_LIST = var["-CHN_LIST"] - local DEFAULT_PROXY_MODE = var["-DEFAULT_PROXY_MODE"] - local NO_PROXY_IPV6 = var["-NO_PROXY_IPV6"] - local NO_LOGIC_LOG = var["-NO_LOGIC_LOG"] - local NFTFLAG = var["-NFTFLAG"] - local CACHE_PATH = api.CACHE_PATH - local CACHE_FLAG = "dnsmasq_" .. FLAG - local CACHE_DNS_PATH = CACHE_PATH .. "/" .. CACHE_FLAG - local CACHE_TEXT_FILE = CACHE_DNS_PATH .. ".txt" - local USE_CHINADNS_NG = "0" - - local list1 = {} - local excluded_domain = {} - - local function log(...) - if NO_LOGIC_LOG == "1" then - return - end - api.log(...) - end - - local function check_dns(domain, dns) - if domain == "" or domain:find("#") then - return false - end - if not dns then - return - end - for k,v in ipairs(list1[domain].dns) do - if dns == v then - return true - end - end - return false - end - - local function check_ipset(domain, ipset) - if domain == "" or domain:find("#") then - return false - end - if not ipset then - return - end - for k,v in ipairs(list1[domain].ipsets) do - if ipset == v then - return true - end - end - return false - end - - local function set_domain_address(domain, address) - if domain == "" or domain:find("#") then - return - end - if not list1[domain] then - list1[domain] = { - dns = {}, - ipsets = {} - } - end - if not list1[domain].address then - list1[domain].address = address - end - end - - local function set_domain_dns(domain, dns) - if domain == "" or domain:find("#") then - return - end - if not dns then - return - end - if not list1[domain] then - list1[domain] = { - dns = {}, - ipsets = {} - } - end - for line in string.gmatch(dns, '[^' .. "," .. ']+') do - if not check_dns(domain, line) then - table.insert(list1[domain].dns, line) - end - end - end - - local function set_domain_ipset(domain, ipset) - if domain == "" or domain:find("#") then - return - end - if not ipset then - return - end - if not list1[domain] then - list1[domain] = { - dns = {}, - ipsets = {} - } - end - for line in string.gmatch(ipset, '[^' .. "," .. ']+') do - if not check_ipset(domain, line) then - table.insert(list1[domain].ipsets, line) - end - end - end - - local function add_excluded_domain(domain) - if domain == "" or domain:find("#") then - return - end - table.insert(excluded_domain, domain) - end - - local function check_excluded_domain(domain) - if domain == "" or domain:find("#") then - return false - end - for k,v in ipairs(excluded_domain) do - if domain == v or domain:sub(-#("."..v)) == "."..v then - return true - end - end - return false - end - - local cache_text = "" - local nodes_address_md5 = sys.exec("echo -n $(uci show passwall | grep '\\.address') | md5sum") - local new_rules = sys.exec("echo -n $(find /usr/share/passwall/rules -type f | xargs md5sum)") - local new_text = TMP_DNSMASQ_PATH .. DNSMASQ_CONF_FILE .. DEFAULT_DNS .. LOCAL_DNS .. TUN_DNS .. REMOTE_FAKEDNS .. USE_DEFAULT_DNS .. CHINADNS_DNS .. USE_DIRECT_LIST .. USE_PROXY_LIST .. USE_BLOCK_LIST .. USE_GFW_LIST .. CHN_LIST .. DEFAULT_PROXY_MODE .. NO_PROXY_IPV6 .. nodes_address_md5 .. new_rules .. NFTFLAG - if fs.access(CACHE_TEXT_FILE) then - for line in io.lines(CACHE_TEXT_FILE) do - cache_text = line - end - end - - if cache_text ~= new_text then - api.remove(CACHE_DNS_PATH .. "*") - end - - local dnsmasq_default_dns - if USE_DEFAULT_DNS ~= "nil" then - if USE_DEFAULT_DNS == "direct" then - dnsmasq_default_dns = LOCAL_DNS - end - if USE_DEFAULT_DNS == "remote" then - dnsmasq_default_dns = TUN_DNS - end - if USE_DEFAULT_DNS == "remote" and CHN_LIST == "direct" then - dnsmasq_default_dns = TUN_DNS - end - end - - local only_global - if DEFAULT_PROXY_MODE == "proxy" and CHN_LIST == "0" and USE_GFW_LIST == "0" then - --没有启用中国列表和GFW列表时 - dnsmasq_default_dns = TUN_DNS - only_global = 1 - end - if USE_DEFAULT_DNS == "chinadns_ng" and CHINADNS_DNS ~= "0" then - dnsmasq_default_dns = CHINADNS_DNS - USE_CHINADNS_NG = "1" - end - - local setflag_4= (NFTFLAG == "1") and "4#inet#passwall#" or "" - local setflag_6= (NFTFLAG == "1") and "6#inet#passwall#" or "" - - if not fs.access(CACHE_DNS_PATH) then - fs.mkdir(CACHE_DNS_PATH) - - --屏蔽列表 - if USE_CHINADNS_NG == "0" then - if USE_BLOCK_LIST == "1" then - for line in io.lines("/usr/share/passwall/rules/block_host") do - line = api.get_std_domain(line) - if line ~= "" and not line:find("#") and not line:find(":") then - set_domain_address(line, "") - end - end - end - end - - local fwd_dns - local no_ipv6 - - --始终用国内DNS解析节点域名 - if true then - fwd_dns = LOCAL_DNS - if USE_CHINADNS_NG == "1" then - fwd_dns = nil - else - local sets = { - setflag_4 .. "passwall_vps", - setflag_6 .. "passwall_vps6" - } - uci:foreach(appname, "nodes", function(t) - local function process_address(address) - if address == "engage.cloudflareclient.com" then return end - if datatypes.hostname(address) then - set_domain_dns(address, fwd_dns) - set_domain_ipset(address, table.concat(sets, ",")) - end - end - process_address(t.address) - process_address(t.download_address) - end) - log(string.format(" - 节点列表中的域名(vpslist):%s", fwd_dns or "默认")) - end - end - - --直连(白名单)列表 - if USE_DIRECT_LIST == "1" then - if fs.access("/usr/share/passwall/rules/direct_host") then - fwd_dns = LOCAL_DNS - if USE_CHINADNS_NG == "1" then - fwd_dns = nil - end - if fwd_dns then - local sets = { - setflag_4 .. "passwall_white", - setflag_6 .. "passwall_white6" - } - --始终用国内DNS解析直连(白名单)列表 - for line in io.lines("/usr/share/passwall/rules/direct_host") do - line = api.get_std_domain(line) - if line ~= "" and not line:find("#") and not line:find(":") then - add_excluded_domain(line) - set_domain_dns(line, fwd_dns) - set_domain_ipset(line, table.concat(sets, ",")) - end - end - log(string.format(" - 域名白名单(whitelist):%s", fwd_dns or "默认")) - end - end - end - - --代理(黑名单)列表 - if USE_PROXY_LIST == "1" then - if fs.access("/usr/share/passwall/rules/proxy_host") then - fwd_dns = TUN_DNS - if USE_CHINADNS_NG == "1" then - fwd_dns = nil - end - if fwd_dns then - local set_name = "passwall_black" - local set6_name = "passwall_black6" - if FLAG ~= "default" then - set_name = "passwall_" .. FLAG .. "_black" - set6_name = "passwall_" .. FLAG .. "_black6" - end - local sets = { - setflag_4 .. set_name - } - if NO_PROXY_IPV6 ~= "1" then - table.insert(sets, setflag_6 .. set6_name) - end - if REMOTE_FAKEDNS == "1" then - sets = {} - end - --始终使用远程DNS解析代理(黑名单)列表 - for line in io.lines("/usr/share/passwall/rules/proxy_host") do - line = api.get_std_domain(line) - if line ~= "" and not line:find("#") and not line:find(":") then - add_excluded_domain(line) - if NO_PROXY_IPV6 == "1" then - set_domain_address(line, "::") - end - set_domain_dns(line, fwd_dns) - set_domain_ipset(line, table.concat(sets, ",")) - end - end - log(string.format(" - 代理域名表(blacklist):%s", fwd_dns or "默认")) - end - end - end - - --GFW列表 - if USE_GFW_LIST == "1" then - if fs.access("/usr/share/passwall/rules/gfwlist") then - fwd_dns = TUN_DNS - if USE_CHINADNS_NG == "1" then - fwd_dns = nil - end - if fwd_dns then - local set_name = "passwall_gfw" - local set6_name = "passwall_gfw6" - if FLAG ~= "default" then - set_name = "passwall_" .. FLAG .. "_gfw" - set6_name = "passwall_" .. FLAG .. "_gfw6" - end - local sets = { - setflag_4 .. set_name - } - if NO_PROXY_IPV6 ~= "1" then - table.insert(sets, setflag_6 .. set6_name) - end - if REMOTE_FAKEDNS == "1" then - sets = {} - end - for line in io.lines("/usr/share/passwall/rules/gfwlist") do - if line ~= "" and not line:find("#") and not check_excluded_domain(line) then - if NO_PROXY_IPV6 == "1" then - set_domain_address(line, "::") - end - if dnsmasq_default_dns == fwd_dns then - fwd_dns = nil - else - set_domain_dns(line, fwd_dns) - end - set_domain_ipset(line, table.concat(sets, ",")) - end - end - log(string.format(" - 防火墙域名表(gfwlist):%s", fwd_dns or "默认")) - end - end - end - - --中国列表 - if CHN_LIST ~= "0" then - if fs.access("/usr/share/passwall/rules/chnlist") then - fwd_dns = nil - if CHN_LIST == "direct" then - fwd_dns = LOCAL_DNS - end - if CHN_LIST == "proxy" then - fwd_dns = TUN_DNS - end - if USE_CHINADNS_NG == "1" then - fwd_dns = nil - end - if fwd_dns then - local sets = { - setflag_4 .. "passwall_chn", - setflag_6 .. "passwall_chn6" - } - if CHN_LIST == "proxy" then - if NO_PROXY_IPV6 == "1" then - sets = { - setflag_4 .. "passwall_chn" - } - end - if REMOTE_FAKEDNS == "1" then - sets = {} - end - end - for line in io.lines("/usr/share/passwall/rules/chnlist") do - if line ~= "" and not line:find("#") and not check_excluded_domain(line) then - if CHN_LIST == "proxy" and NO_PROXY_IPV6 == "1" then - set_domain_address(line, "::") - end - if dnsmasq_default_dns == fwd_dns then - fwd_dns = nil - else - set_domain_dns(line, fwd_dns) - end - set_domain_ipset(line, table.concat(sets, ",")) - end - end - log(string.format(" - 中国域名表(chnroute):%s", fwd_dns or "默认")) - end - end - end - - --分流规则 - if uci:get(appname, TCP_NODE, "protocol") == "_shunt" and USE_CHINADNS_NG == "0" then - local t = uci:get_all(appname, TCP_NODE) - local default_node_id = t["default_node"] or "_direct" - uci:foreach(appname, "shunt_rules", function(s) - local _node_id = t[s[".name"]] - if _node_id and _node_id ~= "_blackhole" then - if _node_id == "_default" then - _node_id = default_node_id - end - - fwd_dns = nil - no_ipv6 = nil - - local sets = {} - - if _node_id == "_direct" then - fwd_dns = LOCAL_DNS - if USE_DIRECT_LIST == "1" then - table.insert(sets, setflag_4 .. "passwall_white") - table.insert(sets, setflag_6 .. "passwall_white6") - else - local set_name = "passwall_shunt" - local set6_name = "passwall_shunt6" - if FLAG ~= "default" then - set_name = "passwall_" .. FLAG .. "_shunt" - set6_name = "passwall_" .. FLAG .. "_shunt6" - end - table.insert(sets, setflag_4 .. set_name) - table.insert(sets, setflag_6 .. set6_name) - end - else - local set_name = "passwall_shunt" - local set6_name = "passwall_shunt6" - if FLAG ~= "default" then - set_name = "passwall_" .. FLAG .. "_shunt" - set6_name = "passwall_" .. FLAG .. "_shunt6" - end - fwd_dns = TUN_DNS - table.insert(sets, setflag_4 .. set_name) - if NO_PROXY_IPV6 ~= "1" then - table.insert(sets, setflag_6 .. set6_name) - else - no_ipv6 = true - end - if not only_global then - if REMOTE_FAKEDNS == "1" then - sets = {} - end - end - end - - local domain_list = s.domain_list or "" - for line in string.gmatch(domain_list, "[^\r\n]+") do - if line ~= "" and not line:find("#") and not line:find("regexp:") and not line:find("geosite:") and not line:find("ext:") then - if line:find("domain:") or line:find("full:") then - line = string.match(line, ":([^:]+)$") - end - line = api.get_std_domain(line) - add_excluded_domain(line) - - if no_ipv6 then - set_domain_address(line, "::") - end - set_domain_dns(line, fwd_dns) - set_domain_ipset(line, table.concat(sets, ",")) - end - end - if _node_id ~= "_direct" then - log(string.format(" - Sing-Box/Xray分流规则(%s):%s", s.remarks, fwd_dns or "默认")) - end - end - end) - elseif only_global == 1 and NO_PROXY_IPV6 == "1" then - --节点:固定节点 - --代理模式:全局模式 - --过滤代理域名 IPv6:启用 - --禁止解析所有IPv6记录 - list1["#"] = { - dns = {}, - ipsets = {}, - address = "::" - } - end - - if list1 and next(list1) then - local address_out = io.open(CACHE_DNS_PATH .. "/000-address.conf", "a") - local server_out = io.open(CACHE_DNS_PATH .. "/001-server.conf", "a") - local ipset_out = io.open(CACHE_DNS_PATH .. "/ipset.conf", "a") - local set_name = "ipset" - if NFTFLAG == "1" then - set_name = "nftset" - end - for key, value in pairs(list1) do - if value.address then - local domain = "." .. key - if key == "#" then - domain = key - end - address_out:write(string.format("address=/%s/%s", domain, value.address) .. "\n") - end - if value.dns and #value.dns > 0 then - for i, dns in ipairs(value.dns) do - server_out:write(string.format("server=/.%s/%s", key, dns) .. "\n") - end - end - if value.ipsets and #value.ipsets > 0 then - local ipsets_str = "" - for i, ipset in ipairs(value.ipsets) do - ipsets_str = ipsets_str .. ipset .. "," - end - ipsets_str = ipsets_str:sub(1, #ipsets_str - 1) - ipset_out:write(string.format("%s=/.%s/%s", set_name, key, ipsets_str) .. "\n") - end - end - address_out:close() - server_out:close() - ipset_out:close() - end - - local f_out = io.open(CACHE_TEXT_FILE, "a") - f_out:write(new_text) - f_out:close() - end - - if USE_CHINADNS_NG == "0" then - api.remove(TMP_DNSMASQ_PATH) - fs.symlink(CACHE_DNS_PATH, TMP_DNSMASQ_PATH) - end - - if DNSMASQ_CONF_FILE ~= "nil" then - local conf_lines = {} - if LISTEN_PORT then - --Copy dnsmasq instance - conf_lines = copy_instance({["-LISTEN_PORT"] = LISTEN_PORT, ["-TMP_DNSMASQ_PATH"] = TMP_DNSMASQ_PATH, ["-return"] = "1"}) - --dhcp.leases to hosts - local hosts = "/tmp/etc/" .. appname .. "_tmp/dhcp-hosts" - sys.call("touch " .. hosts) - tinsert(conf_lines, "addn-hosts=" .. hosts) - else - --Modify the default dnsmasq service - end - if USE_CHINADNS_NG == "0" then - tinsert(conf_lines, string.format("conf-dir=%s", TMP_DNSMASQ_PATH)) - end - if dnsmasq_default_dns then - for s in string.gmatch(dnsmasq_default_dns, '[^' .. "," .. ']+') do - tinsert(conf_lines, string.format("server=%s", s)) - end - tinsert(conf_lines, "all-servers") - tinsert(conf_lines, "no-poll") - tinsert(conf_lines, "no-resolv") - if USE_CHINADNS_NG == "0" then - log(string.format(" - 默认:%s", dnsmasq_default_dns)) - end - - if FLAG == "default" then - api.set_cache_var("DEFAULT_DNS", DEFAULT_DNS) - end - end - if #conf_lines > 0 then - local conf_out = io.open(DNSMASQ_CONF_FILE, "a") - conf_out:write(table.concat(conf_lines, "\n")) - conf_out:write("\n") - conf_out:close() - end - end - - if USE_CHINADNS_NG == "0" then - log(" - PassWall必须依赖于Dnsmasq,如果你自行配置了错误的DNS流程,将会导致域名(直连/代理域名)分流失效!!!") - end -end - -_G.stretch = stretch -_G.restart = restart -_G.logic_restart = logic_restart -_G.copy_instance = copy_instance -_G.add_rule = add_rule - -if arg[1] then - local func =_G[arg[1]] - if func then - func(api.get_function_args(arg)) - end -end diff --git a/small/luci-app-passwall/root/usr/share/passwall/helper_smartdns.sh b/small/luci-app-passwall/root/usr/share/passwall/helper_smartdns.sh deleted file mode 100755 index 14254f141f..0000000000 --- a/small/luci-app-passwall/root/usr/share/passwall/helper_smartdns.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/sh - -restart() { - local no_log - eval_set_val $@ - _LOG_FILE=$LOG_FILE - [ -n "$no_log" ] && LOG_FILE="/dev/null" - rm -rf /tmp/smartdns.cache - /etc/init.d/smartdns reload >/dev/null 2>&1 - LOG_FILE=${_LOG_FILE} -} - -del() { - rm -rf /tmp/etc/smartdns/passwall.conf - sed -i "/passwall/d" /etc/smartdns/custom.conf >/dev/null 2>&1 - rm -rf /tmp/smartdns.cache - /etc/init.d/smartdns reload >/dev/null 2>&1 -} - -arg1=$1 -shift -case $arg1 in -del) - del $@ - ;; -restart) - restart $@ - ;; -*) ;; -esac diff --git a/small/luci-app-passwall/root/usr/share/passwall/helper_smartdns_add.lua b/small/luci-app-passwall/root/usr/share/passwall/helper_smartdns_add.lua deleted file mode 100644 index 499b44cd07..0000000000 --- a/small/luci-app-passwall/root/usr/share/passwall/helper_smartdns_add.lua +++ /dev/null @@ -1,662 +0,0 @@ -require "luci.sys" -local api = require "luci.passwall.api" -local appname = "passwall" - -local var = api.get_args(arg) -local FLAG = var["-FLAG"] -local SMARTDNS_CONF = var["-SMARTDNS_CONF"] -local LOCAL_GROUP = var["-LOCAL_GROUP"] -local REMOTE_GROUP = var["-REMOTE_GROUP"] -local REMOTE_PROXY_SERVER = var["-REMOTE_PROXY_SERVER"] -local USE_DEFAULT_DNS = var["-USE_DEFAULT_DNS"] -local REMOTE_DNS = var["-REMOTE_DNS"] -local TUN_DNS = var["-TUN_DNS"] -local DNS_MODE = var["-DNS_MODE"] -local REMOTE_FAKEDNS = var["-REMOTE_FAKEDNS"] -local TCP_NODE = var["-TCP_NODE"] -local USE_DIRECT_LIST = var["-USE_DIRECT_LIST"] -local USE_PROXY_LIST = var["-USE_PROXY_LIST"] -local USE_BLOCK_LIST = var["-USE_BLOCK_LIST"] -local USE_GFW_LIST = var["-USE_GFW_LIST"] -local CHN_LIST = var["-CHN_LIST"] -local DEFAULT_PROXY_MODE = var["-DEFAULT_PROXY_MODE"] -local NO_PROXY_IPV6 = var["-NO_PROXY_IPV6"] -local NO_LOGIC_LOG = var["-NO_LOGIC_LOG"] -local NFTFLAG = var["-NFTFLAG"] -local SUBNET = var["-SUBNET"] -local LISTEN_PORT = var["-LISTEN_PORT"] -local LOCAL_PORT = var["-LOCAL_PORT"] - -local uci = api.uci -local sys = api.sys -local fs = api.fs -local datatypes = api.datatypes - -local TMP_PATH = "/tmp/etc/" .. appname -local TMP_ACL_PATH = TMP_PATH .. "/acl" -local RULES_PATH = "/usr/share/" .. appname .. "/rules" -local FLAG_PATH = TMP_ACL_PATH .. "/" .. FLAG -local TMP_CONF_FILE = FLAG_PATH .. "/smartdns.conf" -local config_lines = {} -local tmp_lines = {} -local USE_GEOVIEW = uci:get(appname, "@global_rules[0]", "enable_geoview") - -local function log(...) - if NO_LOGIC_LOG == "1" then - return - end - api.log(...) -end - -local function is_file_nonzero(path) - if path and #path > 1 then - if sys.exec('[ -s "%s" ] && echo -n 1' % path) == "1" then - return true - end - end - return nil -end - -local function insert_unique(dest_table, value, lookup_table) - if not lookup_table[value] then - table.insert(dest_table, value) - lookup_table[value] = true - end -end - -local function merge_array(array1, array2) - for i, line in ipairs(array2) do - table.insert(array1, #array1 + 1, line) - end -end - -local function insert_array_before(array1, array2, target) --将array2插入到array1的target前面,target不存在则追加 - for i, line in ipairs(array1) do - if line == target then - for j = #array2, 1, -1 do - table.insert(array1, i, array2[j]) - end - return - end - end - merge_array(array1, array2) -end - -local function insert_array_after(array1, array2, target) --将array2插入到array1的target后面,target不存在则追加 - for i, line in ipairs(array1) do - if line == target then - for j = 1, #array2 do - table.insert(array1, i + j, array2[j]) - end - return - end - end - merge_array(array1, array2) -end - -local function get_geosite(list_arg, out_path) - local geosite_path = uci:get(appname, "@global_rules[0]", "v2ray_location_asset") or "/usr/share/v2ray/" - geosite_path = geosite_path:match("^(.*)/") .. "/geosite.dat" - if not is_file_nonzero(geosite_path) then return 1 end - if api.is_finded("geoview") and list_arg and out_path then - sys.exec("geoview -type geosite -append=true -input " .. geosite_path .. " -list '" .. list_arg .. "' -output " .. out_path) - return 0 - end - return 1 -end - -if not fs.access(FLAG_PATH) then - fs.mkdir(FLAG_PATH) -end - -local LOCAL_EXTEND_ARG = "" -if LOCAL_GROUP == "null" then - LOCAL_GROUP = nil - log(" * 注意:国内分组名未设置,直连 DNS 将无法查询!") -else - --从smartdns配置中读取参数 - local custom_conf_path = "/etc/smartdns/custom.conf" - local options = { - {key = "dualstack_ip_selection", config_key = "dualstack-ip-selection", yes_no = true, arg_yes = "-d yes", arg_no = "-d no", default = "yes"}, - {key = "speed_check_mode", config_key = "speed-check-mode", prefix = "-c ", default = "ping,tcp:80,tcp:443"}, - {key = "serve_expired", config_key = "serve-expired", yes_no = true, arg_yes = "", arg_no = "-no-serve-expired", default = "yes"}, - {key = "response_mode", config_key = "response-mode", prefix = "-r ", default = "first-ping"}, - {key = "rr_ttl", config_key = "rr-ttl", prefix = "-rr-ttl "}, - {key = "rr_ttl_min", config_key = "rr-ttl-min", prefix = "-rr-ttl-min "}, - {key = "rr_ttl_max", config_key = "rr-ttl-max", prefix = "-rr-ttl-max "}, - {key = "rr_ttl_reply_max", config_key = "rr-ttl-reply-max", prefix = "-rr-ttl-reply-max "} - } - -- 从 custom.conf 中读取值,以最后出现的值为准 - local custom_config = {} - local f_in = io.open(custom_conf_path, "r") - if f_in then - for line in f_in:lines() do - line = api.trim(line) - if line ~= "" and not line:match("^#") then - local param, value = line:match("^(%S+)%s+(%S+)$") - if param and value then custom_config[param] = value end - end - end - f_in:close() - end - -- 从 smartdns 配置中读取值,优先级以 custom.conf 为准 - for _, opt in ipairs(options) do - local val = custom_config[opt.config_key] or uci:get("smartdns", "@smartdns[0]", opt.key) or opt.default - if val == "yes" then val = "1" elseif val == "no" then val = "0" end - if opt.yes_no then - local arg = (val == "1" and opt.arg_yes or opt.arg_no) - if arg and arg ~= "" then - LOCAL_EXTEND_ARG = LOCAL_EXTEND_ARG .. (LOCAL_EXTEND_ARG ~= "" and " " or "") .. arg - end - else - if val and (not opt.value or (opt.invert and val ~= opt.value) or (not opt.invert and val == opt.value)) then - LOCAL_EXTEND_ARG = LOCAL_EXTEND_ARG .. (LOCAL_EXTEND_ARG ~= "" and " " or "") .. (opt.prefix or "") .. (opt.arg or val) - end - end - end -end - -if not REMOTE_GROUP or REMOTE_GROUP == "nil" then - REMOTE_GROUP = "passwall_proxy" - if REMOTE_DNS then - REMOTE_DNS = REMOTE_DNS:gsub("#", ":") - end - sys.call('sed -i "/passwall/d" /etc/smartdns/custom.conf >/dev/null 2>&1') -end - -local force_https_soa = uci:get(appname, "@global[0]", "force_https_soa") or 1 -local proxy_server_name = "passwall-proxy-server" -config_lines = { - tonumber(LISTEN_PORT) ~= 0 and "bind [::]:" .. LISTEN_PORT .. "@lo" or "", - (tonumber(LOCAL_PORT) ~= 0 and LOCAL_GROUP) and "bind [::]:" .. LOCAL_PORT .. "@lo -group " .. LOCAL_GROUP or "", - tonumber(force_https_soa) == 1 and "force-qtype-SOA 65" or "force-qtype-SOA -,65", - "server 114.114.114.114 -bootstrap-dns", - DNS_MODE == "socks" and string.format("proxy-server socks5://%s -name %s", REMOTE_PROXY_SERVER, proxy_server_name) or "" -} -if DNS_MODE == "socks" then - for w in string.gmatch(REMOTE_DNS, '[^|]+') do - local server_dns = api.trim(w) - local server_param - - local dnsType = string.match(server_dns, "^(.-)://") - dnsType = dnsType and string.lower(dnsType) or nil - local dnsServer = string.match(server_dns, "://(.+)") or server_dns - - if dnsType and dnsType ~= "" and dnsType ~= "udp" then - if dnsType == "tcp" then - server_param = "server-tcp " .. dnsServer - elseif dnsType == "tls" then - server_param = "server-tls " .. dnsServer - elseif dnsType == "quic" then - server_param = "server-quic " .. dnsServer - elseif dnsType == "https" or dnsType == "h3" then - local http_host = nil - local url = w - local port = 443 - local s = api.split(w, ",") - if s and #s > 1 then - url = s[1] - local dns_ip = s[2] - local host_port = api.get_domain_from_url(s[1]) - if host_port and #host_port > 0 then - http_host = host_port - local s2 = api.split(host_port, ":") - if s2 and #s2 > 1 then - http_host = s2[1] - port = s2[2] - end - url = url:gsub(http_host, dns_ip) - end - end - server_dns = url - if http_host then - server_dns = server_dns .. " -http-host " .. http_host - end - server_param = (dnsType == "https" and "server-https " or "server-h3 ") .. server_dns - end - else - server_param = "server " .. dnsServer - - end - - if not api.is_local_ip(w) then - server_param = server_param .. " -proxy " .. proxy_server_name - end - - server_param = server_param .. " -group " .. REMOTE_GROUP .. " -exclude-default-group" - if SUBNET and SUBNET ~= "" and SUBNET ~= "0" then - server_param = server_param .. " -subnet " .. SUBNET - end - table.insert(config_lines, server_param) - end - REMOTE_FAKEDNS = 0 -else - local server_param = string.format("server %s -group %s -exclude-default-group", TUN_DNS:gsub("#", ":"), REMOTE_GROUP) - table.insert(config_lines, server_param) - log(" - " .. DNS_MODE:gsub("^%l",string.upper) .. " " .. TUN_DNS .. " -> " .. REMOTE_GROUP) -end - ---设置默认 DNS 分组(托底组) -local DEFAULT_DNS_GROUP = (USE_DEFAULT_DNS == "direct" and LOCAL_GROUP) or - (USE_DEFAULT_DNS == "remote" and REMOTE_GROUP) -local only_global = (DEFAULT_PROXY_MODE == "proxy" and CHN_LIST == "0" and USE_GFW_LIST == "0") and 1 --没有启用中国列表和GFW列表时(全局) -if only_global == 1 then - DEFAULT_DNS_GROUP = REMOTE_GROUP -end -if DEFAULT_DNS_GROUP then - local domain_rules_str = "domain-rules /./ -nameserver " .. DEFAULT_DNS_GROUP - if DEFAULT_DNS_GROUP == REMOTE_GROUP then - domain_rules_str = domain_rules_str .. " -speed-check-mode none -d no -no-serve-expired" - if NO_PROXY_IPV6 == "1" then - domain_rules_str = domain_rules_str .. " -address #6" - end - elseif DEFAULT_DNS_GROUP == LOCAL_GROUP then - domain_rules_str = domain_rules_str .. (LOCAL_EXTEND_ARG ~= "" and " " .. LOCAL_EXTEND_ARG or "") - end - table.insert(config_lines, domain_rules_str) -end - -local setflag = (NFTFLAG == "1") and "inet#passwall#" or "" -local set_type = (NFTFLAG == "1") and "-nftset" or "-ipset" - ---预设排序标签(越往后优先级越高) -for i = 1, 8 do - table.insert(config_lines, "#--" .. i) -end - ---屏蔽列表 -local file_block_host = TMP_ACL_PATH .. "/block_host" -if USE_BLOCK_LIST == "1" and not fs.access(file_block_host) then - local block_domain, lookup_block_domain = {}, {} - local geosite_arg = "" - for line in io.lines(RULES_PATH .. "/block_host") do - if not line:find("#") and line:find("geosite:") then - line = string.match(line, ":([^:]+)$") - geosite_arg = geosite_arg .. (geosite_arg ~= "" and "," or "") .. line - else - line = api.get_std_domain(line) - if line ~= "" and not line:find("#") then - insert_unique(block_domain, line, lookup_block_domain) - end - end - end - if #block_domain > 0 then - local f_out = io.open(file_block_host, "w") - for i = 1, #block_domain do - f_out:write(block_domain[i] .. "\n") - end - f_out:close() - end - if USE_GEOVIEW == "1" and geosite_arg ~= "" and api.is_finded("geoview") then - if get_geosite(geosite_arg, file_block_host) == 0 then - log(" * 解析[屏蔽列表] Geosite 到屏蔽域名表(blocklist)完成") - else - log(" * 解析[屏蔽列表] Geosite 到屏蔽域名表(blocklist)失败!") - end - end -end -if USE_BLOCK_LIST == "1" and is_file_nonzero(file_block_host) then - local domain_set_name = "passwall-block" - tmp_lines = { - string.format("domain-set -name %s -file %s", domain_set_name, file_block_host), - string.format("domain-rules /domain-set:%s/ -a #", domain_set_name) - } - insert_array_after(config_lines, tmp_lines, "#--7") -end - ---始终用国内DNS解析节点域名 -local file_vpslist = TMP_ACL_PATH .. "/vpslist" -if not is_file_nonzero(file_vpslist) then - local f_out = io.open(file_vpslist, "w") - local written_domains = {} - uci:foreach(appname, "nodes", function(t) - local function process_address(address) - if address == "engage.cloudflareclient.com" then return end - if datatypes.hostname(address) and not written_domains[address] then - f_out:write(address .. "\n") - written_domains[address] = true - end - end - process_address(t.address) - process_address(t.download_address) - end) - f_out:close() -end -if is_file_nonzero(file_vpslist) then - local domain_set_name = "passwall-vpslist" - tmp_lines = { - string.format("domain-set -name %s -file %s", domain_set_name, file_vpslist) - } - local sets = { - "#4:" .. setflag .. "passwall_vps", - "#6:" .. setflag .. "passwall_vps6" - } - local domain_rules_str = string.format('domain-rules /domain-set:%s/ %s', domain_set_name, LOCAL_GROUP and "-nameserver " .. LOCAL_GROUP or "") - domain_rules_str = domain_rules_str .. " " .. set_type .. " " .. table.concat(sets, ",") - domain_rules_str = domain_rules_str .. (LOCAL_EXTEND_ARG ~= "" and " " .. LOCAL_EXTEND_ARG or "") - table.insert(tmp_lines, domain_rules_str) - insert_array_after(config_lines, tmp_lines, "#--8") - log(string.format(" - 节点列表中的域名(vpslist)使用分组:%s", LOCAL_GROUP or "默认")) -end - ---直连(白名单)列表 -local file_direct_host = TMP_ACL_PATH .. "/direct_host" -if USE_DIRECT_LIST == "1" and not fs.access(file_direct_host) then - local direct_domain, lookup_direct_domain = {}, {} - local geosite_arg = "" - for line in io.lines(RULES_PATH .. "/direct_host") do - if not line:find("#") and line:find("geosite:") then - line = string.match(line, ":([^:]+)$") - geosite_arg = geosite_arg .. (geosite_arg ~= "" and "," or "") .. line - else - line = api.get_std_domain(line) - if line ~= "" and not line:find("#") then - insert_unique(direct_domain, line, lookup_direct_domain) - end - end - end - if #direct_domain > 0 then - local f_out = io.open(file_direct_host, "w") - for i = 1, #direct_domain do - f_out:write(direct_domain[i] .. "\n") - end - f_out:close() - end - if USE_GEOVIEW == "1" and geosite_arg ~= "" and api.is_finded("geoview") then - if get_geosite(geosite_arg, file_direct_host) == 0 then - log(" * 解析[直连列表] Geosite 到域名白名单(whitelist)完成") - else - log(" * 解析[直连列表] Geosite 到域名白名单(whitelist)失败!") - end - end -end -if USE_DIRECT_LIST == "1" and is_file_nonzero(file_direct_host) then - local domain_set_name = "passwall-directlist" - tmp_lines = { - string.format("domain-set -name %s -file %s", domain_set_name, file_direct_host) - } - local sets = { - "#4:" .. setflag .. "passwall_white", - "#6:" .. setflag .. "passwall_white6" - } - local domain_rules_str = string.format('domain-rules /domain-set:%s/ %s', domain_set_name, LOCAL_GROUP and "-nameserver " .. LOCAL_GROUP or "") - domain_rules_str = domain_rules_str .. " " .. set_type .. " " .. table.concat(sets, ",") - domain_rules_str = domain_rules_str .. (LOCAL_EXTEND_ARG ~= "" and " " .. LOCAL_EXTEND_ARG or "") - table.insert(tmp_lines, domain_rules_str) - insert_array_after(config_lines, tmp_lines, "#--6") - log(string.format(" - 域名白名单(whitelist)使用分组:%s", LOCAL_GROUP or "默认")) -end - ---代理(黑名单)列表 -local file_proxy_host = TMP_ACL_PATH .. "/proxy_host" -if USE_PROXY_LIST == "1" and not fs.access(file_proxy_host) then - local proxy_domain, lookup_proxy_domain = {}, {} - local geosite_arg = "" - for line in io.lines(RULES_PATH .. "/proxy_host") do - if not line:find("#") and line:find("geosite:") then - line = string.match(line, ":([^:]+)$") - geosite_arg = geosite_arg .. (geosite_arg ~= "" and "," or "") .. line - else - line = api.get_std_domain(line) - if line ~= "" and not line:find("#") then - insert_unique(proxy_domain, line, lookup_proxy_domain) - end - end - end - if #proxy_domain > 0 then - local f_out = io.open(file_proxy_host, "w") - for i = 1, #proxy_domain do - f_out:write(proxy_domain[i] .. "\n") - end - f_out:close() - end - if USE_GEOVIEW == "1" and geosite_arg ~= "" and api.is_finded("geoview") then - if get_geosite(geosite_arg, file_proxy_host) == 0 then - log(" * 解析[代理列表] Geosite 到代理域名表(blacklist)完成") - else - log(" * 解析[代理列表] Geosite 到代理域名表(blacklist)失败!") - end - end -end -if USE_PROXY_LIST == "1" and is_file_nonzero(file_proxy_host) then - local domain_set_name = "passwall-proxylist" - tmp_lines = { - string.format("domain-set -name %s -file %s", domain_set_name, file_proxy_host) - } - local domain_rules_str = string.format('domain-rules /domain-set:%s/ -nameserver %s', domain_set_name, REMOTE_GROUP) - domain_rules_str = domain_rules_str .. " -speed-check-mode none" - domain_rules_str = domain_rules_str .. " -no-serve-expired" - local sets = { - "#4:" .. setflag .. "passwall_black" - } - if NO_PROXY_IPV6 == "1" then - domain_rules_str = domain_rules_str .. " -address #6" - domain_rules_str = REMOTE_FAKEDNS ~= "1" and (domain_rules_str .. " " .. set_type .. " " .. table.concat(sets, ",")) or domain_rules_str - else - table.insert(sets, "#6:" .. setflag .. "passwall_black6") - domain_rules_str = REMOTE_FAKEDNS ~= "1" and (domain_rules_str .. " -d no " .. set_type .. " " .. table.concat(sets, ",")) or domain_rules_str - end - table.insert(tmp_lines, domain_rules_str) - insert_array_after(config_lines, tmp_lines, "#--5") - log(string.format(" - 代理域名表(blacklist)使用分组:%s", REMOTE_GROUP or "默认")) -end - ---GFW列表 -if USE_GFW_LIST == "1" and is_file_nonzero(RULES_PATH .. "/gfwlist") then - local domain_set_name = "passwall-gfwlist" - tmp_lines = { - string.format("domain-set -name %s -file %s", domain_set_name, RULES_PATH .. "/gfwlist") - } - local domain_rules_str = string.format('domain-rules /domain-set:%s/ -nameserver %s', domain_set_name, REMOTE_GROUP) - domain_rules_str = domain_rules_str .. " -speed-check-mode none" - domain_rules_str = domain_rules_str .. " -no-serve-expired" - local sets = { - "#4:" .. setflag .. "passwall_gfw" - } - if NO_PROXY_IPV6 == "1" then - domain_rules_str = domain_rules_str .. " -address #6" - domain_rules_str = REMOTE_FAKEDNS ~= "1" and (domain_rules_str .. " " .. set_type .. " " .. table.concat(sets, ",")) or domain_rules_str - else - table.insert(sets, "#6:" .. setflag .. "passwall_gfw6") - domain_rules_str = REMOTE_FAKEDNS ~= "1" and (domain_rules_str .. " -d no " .. set_type .. " " .. table.concat(sets, ",")) or domain_rules_str - end - table.insert(tmp_lines, domain_rules_str) - insert_array_after(config_lines, tmp_lines, "#--1") - log(string.format(" - 防火墙域名表(gfwlist)使用分组:%s", REMOTE_GROUP or "默认")) -end - ---中国列表 -if CHN_LIST ~= "0" and is_file_nonzero(RULES_PATH .. "/chnlist") then - local domain_set_name = "passwall-chnlist" - tmp_lines = { - string.format("domain-set -name %s -file %s", domain_set_name, RULES_PATH .. "/chnlist") - } - - if CHN_LIST == "direct" then - local sets = { - "#4:" .. setflag .. "passwall_chn", - "#6:" .. setflag .. "passwall_chn6" - } - local domain_rules_str = string.format('domain-rules /domain-set:%s/ %s', domain_set_name, LOCAL_GROUP and "-nameserver " .. LOCAL_GROUP or "") - domain_rules_str = domain_rules_str .. " " .. set_type .. " " .. table.concat(sets, ",") - domain_rules_str = domain_rules_str .. (LOCAL_EXTEND_ARG ~= "" and " " .. LOCAL_EXTEND_ARG or "") - table.insert(tmp_lines, domain_rules_str) - insert_array_after(config_lines, tmp_lines, "#--2") - log(string.format(" - 中国域名表(chnroute)使用分组:%s", LOCAL_GROUP or "默认")) - end - - --回中国模式 - if CHN_LIST == "proxy" then - local domain_rules_str = string.format('domain-rules /domain-set:%s/ -nameserver %s', domain_set_name, REMOTE_GROUP) - domain_rules_str = domain_rules_str .. " -speed-check-mode none" - domain_rules_str = domain_rules_str .. " -no-serve-expired" - local sets = { - "#4:" .. setflag .. "passwall_chn" - } - if NO_PROXY_IPV6 == "1" then - domain_rules_str = domain_rules_str .. " -address #6" - domain_rules_str = REMOTE_FAKEDNS ~= "1" and (domain_rules_str .. " " .. set_type .. " " .. table.concat(sets, ",")) or domain_rules_str - else - table.insert(sets, "#6:" .. setflag .. "passwall_chn6") - domain_rules_str = REMOTE_FAKEDNS ~= "1" and (domain_rules_str .. " -d no " .. set_type .. " " .. table.concat(sets, ",")) or domain_rules_str - end - table.insert(tmp_lines, domain_rules_str) - insert_array_after(config_lines, tmp_lines, "#--2") - log(string.format(" - 中国域名表(chnroute)使用分组:%s", REMOTE_GROUP or "默认")) - end -end - ---分流规则 -if uci:get(appname, TCP_NODE, "protocol") == "_shunt" then - local white_domain, lookup_white_domain = {}, {} - local shunt_domain, lookup_shunt_domain = {}, {} - local file_white_host = FLAG_PATH .. "/shunt_direct_host" - local file_shunt_host = FLAG_PATH .. "/shunt_proxy_host" - local geosite_white_arg, geosite_shunt_arg = "", "" - - local t = uci:get_all(appname, TCP_NODE) - local default_node_id = t["default_node"] or "_direct" - uci:foreach(appname, "shunt_rules", function(s) - local _node_id = t[s[".name"]] - if _node_id and _node_id ~= "_blackhole" then - if _node_id == "_default" then - _node_id = default_node_id - end - - local domain_list = s.domain_list or "" - for line in string.gmatch(domain_list, "[^\r\n]+") do - if line ~= "" and not line:find("#") and not line:find("regexp:") and not line:find("ext:") then - if line:find("geosite:") then - line = string.match(line, ":([^:]+)$") - if _node_id == "_direct" then - geosite_white_arg = geosite_white_arg .. (geosite_white_arg ~= "" and "," or "") .. line - else - geosite_shunt_arg = geosite_shunt_arg .. (geosite_shunt_arg ~= "" and "," or "") .. line - end - else - if line:find("domain:") or line:find("full:") then - line = string.match(line, ":([^:]+)$") - end - line = api.get_std_domain(line) - if line ~= "" and not line:find("#") then - if _node_id == "_direct" then - insert_unique(white_domain, line, lookup_white_domain) - else - insert_unique(shunt_domain, line, lookup_shunt_domain) - end - end - end - end - end - - if _node_id ~= "_direct" then - log(string.format(" - Sing-Box/Xray分流规则(%s)使用分组:%s", s.remarks, REMOTE_GROUP or "默认")) - end - end - end) - - if is_file_nonzero(file_white_host) == nil then - if #white_domain > 0 then - local f_out = io.open(file_white_host, "w") - for i = 1, #white_domain do - f_out:write(white_domain[i] .. "\n") - end - f_out:close() - end - end - - if is_file_nonzero(file_shunt_host) == nil then - if #shunt_domain > 0 then - local f_out = io.open(file_shunt_host, "w") - for i = 1, #shunt_domain do - f_out:write(shunt_domain[i] .. "\n") - end - f_out:close() - end - end - - if USE_GFW_LIST == "1" and CHN_LIST == "0" and USE_GEOVIEW == "1" and api.is_finded("geoview") then --仅GFW模式解析geosite - local return_white, return_shunt - if geosite_white_arg ~= "" then - return_white = get_geosite(geosite_white_arg, file_white_host) - end - if geosite_shunt_arg ~= "" then - return_shunt = get_geosite(geosite_shunt_arg, file_shunt_host) - end - if (return_white == nil or return_white == 0) and (return_shunt == nil or return_shunt == 0) then - log(" * 解析[分流节点] Geosite 完成") - else - log(" * 解析[分流节点] Geosite 失败!") - end - end - - if is_file_nonzero(file_white_host) then - local domain_set_name = "passwall-whitehost" - tmp_lines = { - string.format("domain-set -name %s -file %s", domain_set_name, file_white_host) - } - local domain_rules_str = string.format('domain-rules /domain-set:%s/ %s', domain_set_name, LOCAL_GROUP and "-nameserver " .. LOCAL_GROUP or "") - if USE_DIRECT_LIST == "1" then - local sets = { - "#4:" .. setflag .. "passwall_white", - "#6:" .. setflag .. "passwall_white6" - } - domain_rules_str = domain_rules_str .. " " .. set_type .. " " .. table.concat(sets, ",") - else - local sets = { - "#4:" .. setflag .. "passwall_shunt", - "#6:" .. setflag .. "passwall_shunt6" - } - domain_rules_str = domain_rules_str .. " " .. set_type .. " " .. table.concat(sets, ",") - end - domain_rules_str = domain_rules_str .. (LOCAL_EXTEND_ARG ~= "" and " " .. LOCAL_EXTEND_ARG or "") - table.insert(tmp_lines, domain_rules_str) - insert_array_after(config_lines, tmp_lines, "#--4") - end - - if is_file_nonzero(file_shunt_host) then - local domain_set_name = "passwall-shuntlist" - tmp_lines = { - string.format("domain-set -name %s -file %s", domain_set_name, file_shunt_host) - } - local domain_rules_str = string.format('domain-rules /domain-set:%s/ -nameserver %s', domain_set_name, REMOTE_GROUP) - domain_rules_str = domain_rules_str .. " -speed-check-mode none" - domain_rules_str = domain_rules_str .. " -no-serve-expired" - local sets = { - "#4:" .. setflag .. "passwall_shunt" - } - if NO_PROXY_IPV6 == "1" then - domain_rules_str = domain_rules_str .. " -address #6" - domain_rules_str = (not only_global and REMOTE_FAKEDNS == "1") - and domain_rules_str - or (domain_rules_str .. " " .. set_type .. " " .. table.concat(sets, ",")) - else - table.insert(sets, "#6:" .. setflag .. "passwall_shunt6") - domain_rules_str = (not only_global and REMOTE_FAKEDNS == "1") - and domain_rules_str - or (domain_rules_str .. " -d no " .. set_type .. " " .. table.concat(sets, ",")) - end - table.insert(tmp_lines, domain_rules_str) - insert_array_after(config_lines, tmp_lines, "#--3") - end - -end - -if #config_lines > 0 then - local f_out = io.open(TMP_CONF_FILE, "w") - for i = 1, #config_lines do - line = config_lines[i] - if line ~= "" and not line:find("^#--") then - f_out:write(line .. "\n") - end - end - f_out:close() -end - -if DEFAULT_DNS_GROUP then - log(string.format(" - 默认 DNS 分组:%s", DEFAULT_DNS_GROUP)) -end - -fs.symlink(TMP_CONF_FILE, SMARTDNS_CONF) -sys.call(string.format('echo "conf-file %s" >> /etc/smartdns/custom.conf', string.gsub(SMARTDNS_CONF, appname, appname .. "*"))) -log(" - SmartDNS已作为Dnsmasq上游,如果你自行配置了错误的DNS流程,将会导致域名(直连/代理域名)分流失效!!!") diff --git a/small/luci-app-passwall/root/usr/share/passwall/iptables.sh b/small/luci-app-passwall/root/usr/share/passwall/iptables.sh deleted file mode 100755 index ef4a31a5e5..0000000000 --- a/small/luci-app-passwall/root/usr/share/passwall/iptables.sh +++ /dev/null @@ -1,1557 +0,0 @@ -#!/bin/sh - -DIR="$(cd "$(dirname "$0")" && pwd)" -MY_PATH=$DIR/iptables.sh -IPSET_LOCAL="passwall_local" -IPSET_WAN="passwall_wan" -IPSET_LAN="passwall_lan" -IPSET_VPS="passwall_vps" -IPSET_SHUNT="passwall_shunt" -IPSET_GFW="passwall_gfw" -IPSET_CHN="passwall_chn" -IPSET_BLACK="passwall_black" -IPSET_WHITE="passwall_white" -IPSET_BLOCK="passwall_block" - -IPSET_LOCAL6="passwall_local6" -IPSET_WAN6="passwall_wan6" -IPSET_LAN6="passwall_lan6" -IPSET_VPS6="passwall_vps6" -IPSET_SHUNT6="passwall_shunt6" -IPSET_GFW6="passwall_gfw6" -IPSET_CHN6="passwall_chn6" -IPSET_BLACK6="passwall_black6" -IPSET_WHITE6="passwall_white6" -IPSET_BLOCK6="passwall_block6" - -FORCE_INDEX=2 - -USE_SHUNT_TCP=0 -USE_SHUNT_UDP=0 - -. /lib/functions/network.sh - -ipt=$(command -v iptables-legacy || command -v iptables) -ip6t=$(command -v ip6tables-legacy || command -v ip6tables) - -ipt_n="$ipt -t nat -w" -ipt_m="$ipt -t mangle -w" -ip6t_n="$ip6t -t nat -w" -ip6t_m="$ip6t -t mangle -w" -[ -z "$ip6t" -o -z "$(lsmod | grep 'ip6table_nat')" ] && ip6t_n="eval #$ip6t_n" -[ -z "$ip6t" -o -z "$(lsmod | grep 'ip6table_mangle')" ] && ip6t_m="eval #$ip6t_m" -FWI=$(uci -q get firewall.passwall.path 2>/dev/null) -FAKE_IP="198.18.0.0/15" -FAKE_IP_6="fc00::/18" - -factor() { - if [ -z "$1" ] || [ -z "$2" ]; then - echo "" - elif [ "$1" == "1:65535" ]; then - echo "" - else - echo "$2 $1" - fi -} - -dst() { - echo "-m set $2 --match-set $1 dst" -} - -comment() { - local name=$(echo $1 | sed 's/ /_/g') - echo "-m comment --comment '$name'" -} - -#解决端口超过15个ipt无效,支持单端口、端口范围 -add_port_rules() { - local ipt_cmd="$1" - local port_list="$2" - local target="$3" - echo "$port_list" | grep -vq '[0-9]' && return - port_list=$(echo "$port_list" | tr -d ' ' | sed 's/-/:/g' | tr ',' '\n' | awk '!a[$0]++' | grep -v '^$') - [ -z "$port_list" ] && return - if echo "$port_list" | grep -q '^1:65535$'; then - eval "$ipt_cmd $target" - return - fi - local multiport_ports="" - local range_ports="" - local count=0 - local port - for port in $port_list; do - if echo "$port" | grep -q ':'; then - range_ports="$range_ports $port" - else - multiport_ports="$multiport_ports,$port" - count=$((count + 1)) - if [ "$count" -eq 15 ]; then - eval "$ipt_cmd -m multiport --dport ${multiport_ports#,} $target" - multiport_ports="" - count=0 - fi - fi - done - if [ -n "$multiport_ports" ]; then - eval "$ipt_cmd -m multiport --dport ${multiport_ports#,} $target" - fi - for port in $range_ports; do - eval "$ipt_cmd --dport $port $target" - done -} - -destroy_ipset() { - for i in "$@"; do - ipset -q -F $i - ipset -q -X $i - done -} - -insert_rule_before() { - [ $# -ge 3 ] || { - return 1 - } - local ipt_tmp="${1}"; shift - local chain="${1}"; shift - local keyword="${1}"; shift - local rule="${1}"; shift - local default_index="${1}"; shift - default_index=${default_index:-0} - local _index=$($ipt_tmp -n -L $chain --line-numbers 2>/dev/null | grep "$keyword" | head -n 1 | awk '{print $1}') - if [ -z "${_index}" ] && [ "${default_index}" = "0" ]; then - $ipt_tmp -A $chain $rule - else - if [ -z "${_index}" ]; then - _index=${default_index} - fi - $ipt_tmp -I $chain $_index $rule - fi -} - -insert_rule_after() { - [ $# -ge 3 ] || { - return 1 - } - local ipt_tmp="${1}"; shift - local chain="${1}"; shift - local keyword="${1}"; shift - local rule="${1}"; shift - local default_index="${1}"; shift - default_index=${default_index:-0} - local _index=$($ipt_tmp -n -L $chain --line-numbers 2>/dev/null | grep "$keyword" | awk 'END {print}' | awk '{print $1}') - if [ -z "${_index}" ] && [ "${default_index}" = "0" ]; then - $ipt_tmp -A $chain $rule - else - if [ -n "${_index}" ]; then - _index=$((_index + 1)) - else - _index=${default_index} - fi - $ipt_tmp -I $chain $_index $rule - fi -} - -RULE_LAST_INDEX() { - [ $# -ge 3 ] || { - echolog "索引列举方式不正确(iptables),终止执行!" - return 1 - } - local ipt_tmp="${1}"; shift - local chain="${1}"; shift - local list="${1}"; shift - local default="${1:-0}"; shift - local _index=$($ipt_tmp -n -L $chain --line-numbers 2>/dev/null | grep "$list" | head -n 1 | awk '{print $1}') - echo "${_index:-${default}}" -} - -REDIRECT() { - local s="-j REDIRECT" - if [ -n "$1" ]; then - s="$s --to-ports $1" - if [ "$2" = "MARK" ]; then - s="-j MARK --set-mark $1" - elif [ "$2" = "TPROXY" ]; then - local mark="-m mark --mark 1" - s="${mark} -j TPROXY --tproxy-mark 1/1 --on-port $1" - fi - fi - echo "$s" -} - -get_jump_ipt() { - case "$1" in - direct) - local mark="-m mark ! --mark 1" - s="${mark} -j RETURN" - echo $s - ;; - proxy) - if [ -n "$2" ] && [ -n "$(echo $2 | grep "^-")" ]; then - echo "$2" - else - echo "$(REDIRECT $2 $3)" - fi - ;; - esac -} - -gen_lanlist() { - cat $RULES_PATH/lanlist_ipv4 | tr -s '\n' | grep -v "^#" -} - -gen_lanlist_6() { - cat $RULES_PATH/lanlist_ipv6 | tr -s '\n' | grep -v "^#" -} - -get_wan_ips() { - local family="$1" - local NET_ADDR - local iface - local INTERFACES=$(ubus call network.interface dump | jsonfilter -e '@.interface[@.route[0]].interface') - for iface in $INTERFACES; do - local addr - if [ "$family" = "ip6" ]; then - network_get_ipaddr6 addr "$iface" - case "$addr" in - ""|fe80*) continue ;; - esac - else - network_get_ipaddr addr "$iface" - case "$addr" in - ""|"0.0.0.0") continue ;; - esac - fi - - case " $NET_ADDR " in - *" $addr "*) ;; - *) NET_ADDR="${NET_ADDR:+$NET_ADDR }$addr" ;; - esac - done - echo "$NET_ADDR" -} - -load_acl() { - ([ "$ENABLED_ACLS" == 1 ] || ([ "$ENABLED_DEFAULT_ACL" == 1 ] && [ "$CLIENT_PROXY" == 1 ])) && echolog " - 访问控制:" - [ "$ENABLED_ACLS" == 1 ] && { - acl_app - for sid in $(ls -F ${TMP_ACL_PATH} | grep '/$' | awk -F '/' '{print $1}' | grep -v 'default'); do - eval $(uci -q show "${CONFIG}.${sid}" | cut -d'.' -sf 3-) - - tcp_no_redir_ports=${tcp_no_redir_ports:-default} - udp_no_redir_ports=${udp_no_redir_ports:-default} - use_global_config=${use_global_config:-0} - tcp_proxy_drop_ports=${tcp_proxy_drop_ports:-default} - udp_proxy_drop_ports=${udp_proxy_drop_ports:-default} - tcp_redir_ports=${tcp_redir_ports:-default} - udp_redir_ports=${udp_redir_ports:-default} - use_direct_list=${use_direct_list:-1} - use_proxy_list=${use_proxy_list:-1} - use_block_list=${use_block_list:-1} - use_gfw_list=${use_gfw_list:-1} - chn_list=${chn_list:-direct} - tcp_proxy_mode=${tcp_proxy_mode:-proxy} - udp_proxy_mode=${udp_proxy_mode:-proxy} - [ "$tcp_no_redir_ports" = "default" ] && tcp_no_redir_ports=$TCP_NO_REDIR_PORTS - [ "$udp_no_redir_ports" = "default" ] && udp_no_redir_ports=$UDP_NO_REDIR_PORTS - [ "$tcp_proxy_drop_ports" = "default" ] && tcp_proxy_drop_ports=$TCP_PROXY_DROP_PORTS - [ "$udp_proxy_drop_ports" = "default" ] && udp_proxy_drop_ports=$UDP_PROXY_DROP_PORTS - [ "$tcp_redir_ports" = "default" ] && tcp_redir_ports=$TCP_REDIR_PORTS - [ "$udp_redir_ports" = "default" ] && udp_redir_ports=$UDP_REDIR_PORTS - - [ -n "$(get_cache_var "ACL_${sid}_tcp_node")" ] && tcp_node=$(get_cache_var "ACL_${sid}_tcp_node") - [ -n "$(get_cache_var "ACL_${sid}_tcp_redir_port")" ] && tcp_port=$(get_cache_var "ACL_${sid}_tcp_redir_port") - [ -n "$(get_cache_var "ACL_${sid}_udp_node")" ] && udp_node=$(get_cache_var "ACL_${sid}_udp_node") - [ -n "$(get_cache_var "ACL_${sid}_udp_redir_port")" ] && udp_port=$(get_cache_var "ACL_${sid}_udp_redir_port") - [ -n "$(get_cache_var "ACL_${sid}_dns_port")" ] && dns_redirect_port=$(get_cache_var "ACL_${sid}_dns_port") - [ -n "$tcp_node" ] && { - if is_socks_wrap "$tcp_node"; then - tcp_node_remark="Socks 配置($(config_n_get ${tcp_node#Socks_} port) 端口)" - else - tcp_node_remark=$(config_n_get $tcp_node remarks) - fi - } - [ -n "$udp_node" ] && { - if is_socks_wrap "$udp_node"; then - udp_node_remark="Socks 配置($(config_n_get ${udp_node#Socks_} port) 端口)" - else - udp_node_remark=$(config_n_get $udp_node remarks) - fi - } - - use_shunt_tcp=0 - use_shunt_udp=0 - [ -n "$tcp_node" ] && [ "$(config_n_get $tcp_node protocol)" = "_shunt" ] && use_shunt_tcp=1 - [ -n "$udp_node" ] && [ "$(config_n_get $udp_node protocol)" = "_shunt" ] && use_shunt_udp=1 - - [ "${use_global_config}" = "1" ] && { - if is_socks_wrap "$TCP_NODE"; then - tcp_node_remark="Socks 配置($(config_n_get ${TCP_NODE#Socks_} port) 端口)" - else - tcp_node_remark=$(config_n_get $TCP_NODE remarks) - fi - if is_socks_wrap "$UDP_NODE"; then - udp_node_remark="Socks 配置($(config_n_get ${UDP_NODE#Socks_} port) 端口)" - else - udp_node_remark=$(config_n_get $UDP_NODE remarks) - fi - use_direct_list=${USE_DIRECT_LIST} - use_proxy_list=${USE_PROXY_LIST} - use_block_list=${USE_BLOCK_LIST} - use_gfw_list=${USE_GFW_LIST} - chn_list=${CHN_LIST} - tcp_proxy_mode=${TCP_PROXY_MODE} - udp_proxy_mode=${UDP_PROXY_MODE} - use_shunt_tcp=${USE_SHUNT_TCP} - use_shunt_udp=${USE_SHUNT_UDP} - dns_redirect_port=${DNS_REDIRECT_PORT} - black_set_name=${IPSET_BLACK} - black6_set_name=${IPSET_BLACK6} - gfw_set_name=${IPSET_GFW} - gfw6_set_name=${IPSET_GFW6} - shunt_set_name=${IPSET_SHUNT} - shunt6_set_name=${IPSET_SHUNT6} - } - - _acl_list=${TMP_ACL_PATH}/${sid}/source_list - - for i in $(cat $_acl_list); do - local _ipt_source _ipv4 - local msg - if [ -n "${interface}" ]; then - . /lib/functions/network.sh - local gateway device - network_get_gateway gateway "${interface}" - network_get_device device "${interface}" - [ -z "${device}" ] && device="${interface}" - _ipt_source="-i ${device} " - msg="源接口【${device}】," - else - msg="源接口【所有】," - fi - if [ -n "$(echo ${i} | grep '^iprange:')" ]; then - _iprange=$(echo ${i} | sed 's#iprange:##g') - _ipt_source=$(factor ${_iprange} "${_ipt_source}-m iprange --src-range") - msg="${msg}IP range【${_iprange}】," - _ipv4="1" - unset _iprange - elif [ -n "$(echo ${i} | grep '^ipset:')" ]; then - _ipset=$(echo ${i} | sed 's#ipset:##g') - msg="${msg}IPset【${_ipset}】," - ipset -q list ${_ipset} >/dev/null - if [ $? -eq 0 ]; then - _ipt_source="${_ipt_source}-m set --match-set ${_ipset} src" - unset _ipset - else - echolog " - 【$remarks】,${msg}不存在,忽略。" - unset _ipset - continue - fi - elif [ -n "$(echo ${i} | grep '^ip:')" ]; then - _ip=$(echo ${i} | sed 's#ip:##g') - _ipt_source=$(factor ${_ip} "${_ipt_source}-s") - msg="${msg}IP【${_ip}】," - _ipv4="1" - unset _ip - elif [ -n "$(echo ${i} | grep '^mac:')" ]; then - _mac=$(echo ${i} | sed 's#mac:##g') - _ipt_source=$(factor ${_mac} "${_ipt_source}-m mac --mac-source") - msg="${msg}MAC【${_mac}】," - unset _mac - elif [ -n "$(echo ${i} | grep '^any')" ]; then - msg="${msg}所有设备," - else - continue - fi - msg="【$remarks】,${msg}" - - ipt_tmp=$ipt_n - [ -n "${is_tproxy}" ] && ipt_tmp=$ipt_m - - [ "$tcp_no_redir_ports" != "disable" ] && { - if ! has_1_65535 "$tcp_no_redir_ports"; then - [ "$_ipv4" != "1" ] && add_port_rules "$ip6t_m -A PSW $(comment "$remarks") ${_ipt_source} -p tcp" $tcp_no_redir_ports "-j RETURN" 2>/dev/null - add_port_rules "$ipt_tmp -A PSW $(comment "$remarks") ${_ipt_source} -p tcp" $tcp_no_redir_ports "-j RETURN" - echolog " - ${msg}不代理 TCP 端口[${tcp_no_redir_ports}]" - else - #结束时会return,无需加多余的规则。 - unset tcp_port - echolog " - ${msg}不代理所有 TCP 端口" - fi - } - - [ "$udp_no_redir_ports" != "disable" ] && { - if ! has_1_65535 "$udp_no_redir_ports"; then - [ "$_ipv4" != "1" ] && add_port_rules "$ip6t_m -A PSW $(comment "$remarks") ${_ipt_source} -p udp" $udp_no_redir_ports "-j RETURN" 2>/dev/null - add_port_rules "$ipt_m -A PSW $(comment "$remarks") ${_ipt_source} -p udp" $udp_no_redir_ports "-j RETURN" - echolog " - ${msg}不代理 UDP 端口[${udp_no_redir_ports}]" - else - #结束时会return,无需加多余的规则。 - unset udp_port - echolog " - ${msg}不代理所有 UDP 端口" - fi - } - - local dns_redirect - [ $(config_t_get global dns_redirect "1") = "1" ] && dns_redirect=53 - if ([ -n "$tcp_port" ] && [ -n "${tcp_proxy_mode}" ]) || ([ -n "$udp_port" ] && [ -n "${udp_proxy_mode}" ]); then - [ "${use_proxy_list}" = "1" ] && { - [ "${use_global_config}" = "0" ] && { - black_set_name="passwall_${sid}_black" - black6_set_name="passwall_${sid}_black6" - ipset -! create $black_set_name nethash maxelem 1048576 timeout 172800 - ipset -! create $black6_set_name nethash family inet6 maxelem 1048576 timeout 172800 - } - } - [ "${use_gfw_list}" = "1" ] && { - [ "${use_global_config}" = "0" ] && { - gfw_set_name="passwall_${sid}_gfw" - gfw6_set_name="passwall_${sid}_gfw6" - ipset -! create $gfw_set_name nethash maxelem 1048576 timeout 172800 - ipset -! create $gfw6_set_name nethash family inet6 maxelem 1048576 timeout 172800 - } - } - [ "${use_shunt_tcp}" = "1" -o "${use_shunt_udp}" = "1" ] && { - [ "${use_global_config}" = "0" ] && { - shunt_set_name="passwall_${sid}_shunt" - shunt6_set_name="passwall_${sid}_shunt6" - ipset -! create $shunt_set_name nethash maxelem 1048576 timeout 172800 - ipset -! create $shunt6_set_name nethash family inet6 maxelem 1048576 timeout 172800 - } - } - [ -n "${dns_redirect_port}" ] && dns_redirect=${dns_redirect_port} - else - [ -n "${DIRECT_DNSMASQ_PORT}" ] && dns_redirect=${DIRECT_DNSMASQ_PORT} - fi - if [ -n "${dns_redirect}" ]; then - $ipt_m -A PSW $(comment "$remarks") -p udp ${_ipt_source} --dport 53 -j RETURN - [ "$_ipv4" != "1" ] && $ip6t_m -A PSW $(comment "$remarks") -p udp ${_ipt_source} --dport 53 -j RETURN 2>/dev/null - $ipt_m -A PSW $(comment "$remarks") -p tcp ${_ipt_source} --dport 53 -j RETURN - [ "$_ipv4" != "1" ] && $ip6t_m -A PSW $(comment "$remarks") -p tcp ${_ipt_source} --dport 53 -j RETURN 2>/dev/null - $ipt_n -A PSW_DNS $(comment "$remarks") -p udp ${_ipt_source} --dport 53 -j REDIRECT --to-ports ${dns_redirect} - [ "$_ipv4" != "1" ] && $ip6t_n -A PSW_DNS $(comment "$remarks") -p udp ${_ipt_source} --dport 53 -j REDIRECT --to-ports ${dns_redirect} 2>/dev/null - $ipt_n -A PSW_DNS $(comment "$remarks") -p tcp ${_ipt_source} --dport 53 -j REDIRECT --to-ports ${dns_redirect} - [ "$_ipv4" != "1" ] && $ip6t_n -A PSW_DNS $(comment "$remarks") -p tcp ${_ipt_source} --dport 53 -j REDIRECT --to-ports ${dns_redirect} 2>/dev/null - [ -z "$(get_cache_var "ACL_${sid}_tcp_default")" ] && echolog " - ${msg}使用与全局配置不相同节点,已将DNS强制重定向到专用 DNS 服务器。" - fi - - [ -n "$tcp_port" -o -n "$udp_port" ] && { - [ "${use_block_list}" = "1" ] && $ipt_m -A PSW $(comment "$remarks") ${_ipt_source} $(dst $IPSET_BLOCK) -j DROP - [ "${use_direct_list}" = "1" ] && $ipt_tmp -A PSW $(comment "$remarks") ${_ipt_source} $(dst $IPSET_WHITE) -j RETURN - [ "$PROXY_IPV6" == "1" ] && [ "$_ipv4" != "1" ] && { - [ "${use_block_list}" = "1" ] && $ip6t_m -A PSW $(comment "$remarks") ${_ipt_source} $(dst $IPSET_BLOCK6) -j DROP 2>/dev/null - [ "${use_direct_list}" = "1" ] && $ip6t_m -A PSW $(comment "$remarks") ${_ipt_source} $(dst $IPSET_WHITE6) -j RETURN 2>/dev/null - } - - [ "$tcp_proxy_drop_ports" != "disable" ] && { - [ "$PROXY_IPV6" == "1" ] && [ "$_ipv4" != "1" ] && { - add_port_rules "$ip6t_m -A PSW $(comment "$remarks") -p tcp ${_ipt_source}" $tcp_proxy_drop_ports "-d $FAKE_IP_6 -j DROP" 2>/dev/null - [ "${use_proxy_list}" = "1" ] && add_port_rules "$ip6t_m -A PSW $(comment "$remarks") -p tcp ${_ipt_source}" $tcp_proxy_drop_ports "$(dst $black6_set_name) -j DROP" 2>/dev/null - [ "${use_gfw_list}" = "1" ] && add_port_rules "$ip6t_m -A PSW $(comment "$remarks") -p tcp ${_ipt_source}" $tcp_proxy_drop_ports "$(dst $gfw6_set_name) -j DROP" 2>/dev/null - [ "${chn_list}" != "0" ] && add_port_rules "$ip6t_m -A PSW $(comment "$remarks") -p tcp ${_ipt_source}" $tcp_proxy_drop_ports "$(dst $IPSET_CHN6) $(get_jump_ipt ${chn_list} "-j DROP")" 2>/dev/null - [ "${use_shunt_tcp}" = "1" ] && add_port_rules "$ip6t_m -A PSW $(comment "$remarks") -p tcp ${_ipt_source}" $tcp_proxy_drop_ports "$(dst $shunt6_set_name) -j DROP" 2>/dev/null - [ "${tcp_proxy_mode}" != "disable" ] && add_port_rules "$ip6t_m -A PSW $(comment "$remarks") -p tcp ${_ipt_source}" $tcp_proxy_drop_ports "-j DROP" 2>/dev/null - } - add_port_rules "$ipt_m -A PSW $(comment "$remarks") -p tcp ${_ipt_source}" $tcp_proxy_drop_ports "-d $FAKE_IP -j DROP" - [ "${use_proxy_list}" = "1" ] && add_port_rules "$ipt_m -A PSW $(comment "$remarks") -p tcp ${_ipt_source}" $tcp_proxy_drop_ports "$(dst $black_set_name) -j DROP" - [ "${use_gfw_list}" = "1" ] && add_port_rules "$ipt_m -A PSW $(comment "$remarks") -p tcp ${_ipt_source}" $tcp_proxy_drop_ports "$(dst $gfw_set_name) -j DROP" - [ "${chn_list}" != "0" ] && add_port_rules "$ipt_m -A PSW $(comment "$remarks") -p tcp ${_ipt_source}" $tcp_proxy_drop_ports "$(dst $IPSET_CHN) $(get_jump_ipt ${chn_list} "-j DROP")" - [ "${use_shunt_tcp}" = "1" ] && add_port_rules "$ipt_m -A PSW $(comment "$remarks") -p tcp ${_ipt_source}" $tcp_proxy_drop_ports "$(dst $shunt_set_name) -j DROP" - [ "${tcp_proxy_mode}" != "disable" ] && add_port_rules "$ipt_m -A PSW $(comment "$remarks") -p tcp ${_ipt_source}" $tcp_proxy_drop_ports "-j DROP" - echolog " - ${msg}屏蔽代理 TCP 端口[${tcp_proxy_drop_ports}]" - } - - [ "$udp_proxy_drop_ports" != "disable" ] && { - [ "$PROXY_IPV6" == "1" ] && [ "$_ipv4" != "1" ] && { - add_port_rules "$ip6t_m -A PSW $(comment "$remarks") -p udp ${_ipt_source}" $udp_proxy_drop_ports "-d $FAKE_IP_6 -j DROP" 2>/dev/null - [ "${use_proxy_list}" = "1" ] && add_port_rules "$ip6t_m -A PSW $(comment "$remarks") -p udp ${_ipt_source}" $udp_proxy_drop_ports "$(dst $black6_set_name) -j DROP" 2>/dev/null - [ "${use_gfw_list}" = "1" ] && add_port_rules "$ip6t_m -A PSW $(comment "$remarks") -p udp ${_ipt_source}" $udp_proxy_drop_ports "$(dst $gfw6_set_name) -j DROP" 2>/dev/null - [ "${chn_list}" != "0" ] && add_port_rules "$ip6t_m -A PSW $(comment "$remarks") -p udp ${_ipt_source}" $udp_proxy_drop_ports "$(dst $IPSET_CHN6) $(get_jump_ipt ${chn_list} "-j DROP")" 2>/dev/null - [ "${use_shunt_udp}" = "1" ] && add_port_rules "$ip6t_m -A PSW $(comment "$remarks") -p udp ${_ipt_source}" $udp_proxy_drop_ports "$(dst $shunt6_set_name) -j DROP" 2>/dev/null - [ "${udp_proxy_mode}" != "disable" ] && add_port_rules "$ip6t_m -A PSW $(comment "$remarks") -p udp ${_ipt_source}" $udp_proxy_drop_ports "-j DROP" 2>/dev/null - } - add_port_rules "$ipt_m -A PSW $(comment "$remarks") -p udp ${_ipt_source}" $udp_proxy_drop_ports "-d $FAKE_IP -j DROP" - [ "${use_proxy_list}" = "1" ] && add_port_rules "$ipt_m -A PSW $(comment "$remarks") -p udp ${_ipt_source}" $udp_proxy_drop_ports "$(dst $black_set_name) -j DROP" - [ "${use_gfw_list}" = "1" ] && add_port_rules "$ipt_m -A PSW $(comment "$remarks") -p udp ${_ipt_source}" $udp_proxy_drop_ports "$(dst $gfw_set_name) -j DROP" - [ "${chn_list}" != "0" ] && add_port_rules "$ipt_m -A PSW $(comment "$remarks") -p udp ${_ipt_source}" $udp_proxy_drop_ports "$(dst $IPSET_CHN) $(get_jump_ipt ${chn_list} "-j DROP")" - [ "${use_shunt_udp}" = "1" ] && add_port_rules "$ipt_m -A PSW $(comment "$remarks") -p udp ${_ipt_source}" $udp_proxy_drop_ports "$(dst $shunt_set_name) -j DROP" - [ "${udp_proxy_mode}" != "disable" ] && add_port_rules "$ipt_m -A PSW $(comment "$remarks") -p udp ${_ipt_source}" $udp_proxy_drop_ports "-j DROP" - echolog " - ${msg}屏蔽代理 UDP 端口[${udp_proxy_drop_ports}]" - } - } - - [ -n "$tcp_port" ] && { - if [ -n "${tcp_proxy_mode}" ]; then - msg2="${msg}使用 TCP 节点[$tcp_node_remark]" - if [ -n "${is_tproxy}" ]; then - msg2="${msg2}(TPROXY:${tcp_port})" - ipt_tmp=$ipt_m - ipt_j="-j PSW_RULE" - else - msg2="${msg2}(REDIRECT:${tcp_port})" - ipt_j="$(REDIRECT $tcp_port)" - fi - - [ "$accept_icmp" = "1" ] && { - $ipt_n -A PSW $(comment "$remarks") -p icmp ${_ipt_source} -d $FAKE_IP $(REDIRECT) - [ "${use_proxy_list}" = "1" ] && $ipt_n -A PSW $(comment "$remarks") -p icmp ${_ipt_source} $(dst $black_set_name) $(REDIRECT) - [ "${use_gfw_list}" = "1" ] && $ipt_n -A PSW $(comment "$remarks") -p icmp ${_ipt_source} $(dst $gfw_set_name) $(REDIRECT) - [ "${chn_list}" != "0" ] && $ipt_n -A PSW $(comment "$remarks") -p icmp ${_ipt_source} $(dst $IPSET_CHN) $(get_jump_ipt ${chn_list}) - [ "${use_shunt_tcp}" = "1" ] && $ipt_n -A PSW $(comment "$remarks") -p icmp ${_ipt_source} $(dst $shunt_set_name) $(REDIRECT) - [ "${tcp_proxy_mode}" != "disable" ] && $ipt_n -A PSW $(comment "$remarks") -p icmp ${_ipt_source} $(REDIRECT) - } - - [ "$accept_icmpv6" = "1" ] && [ "$PROXY_IPV6" == "1" ] && [ "$_ipv4" != "1" ] && { - $ip6t_n -A PSW $(comment "$remarks") -p ipv6-icmp ${_ipt_source} -d $FAKE_IP_6 $(REDIRECT) 2>/dev/null - [ "${use_proxy_list}" = "1" ] && $ip6t_n -A PSW $(comment "$remarks") -p ipv6-icmp ${_ipt_source} $(dst $black6_set_name) $(REDIRECT) 2>/dev/null - [ "${use_gfw_list}" = "1" ] && $ip6t_n -A PSW $(comment "$remarks") -p ipv6-icmp ${_ipt_source} $(dst $gfw6_set_name) $(REDIRECT) 2>/dev/null - [ "${chn_list}" != "0" ] && $ip6t_n -A PSW $(comment "$remarks") -p ipv6-icmp ${_ipt_source} $(dst $IPSET_CHN6) $(get_jump_ipt ${chn_list}) 2>/dev/null - [ "${use_shunt_tcp}" = "1" ] && $ip6t_n -A PSW $(comment "$remarks") -p ipv6-icmp ${_ipt_source} $(dst $shunt6_set_name) $(REDIRECT) 2>/dev/null - [ "${tcp_proxy_mode}" != "disable" ] && $ip6t_n -A PSW $(comment "$remarks") -p ipv6-icmp ${_ipt_source} $(REDIRECT) 2>/dev/null - } - - $ipt_tmp -A PSW $(comment "$remarks") -p tcp ${_ipt_source} -d $FAKE_IP ${ipt_j} - [ "${use_proxy_list}" = "1" ] && add_port_rules "$ipt_tmp -A PSW $(comment "$remarks") -p tcp ${_ipt_source}" $tcp_redir_ports "$(dst $black_set_name) ${ipt_j}" - [ "${use_gfw_list}" = "1" ] && add_port_rules "$ipt_tmp -A PSW $(comment "$remarks") -p tcp ${_ipt_source}" $tcp_redir_ports "$(dst $gfw_set_name) ${ipt_j}" - [ "${chn_list}" != "0" ] && add_port_rules "$ipt_tmp -A PSW $(comment "$remarks") -p tcp ${_ipt_source}" $tcp_redir_ports "$(dst $IPSET_CHN) $(get_jump_ipt ${chn_list} "${ipt_j}")" - [ "${use_shunt_tcp}" = "1" ] && add_port_rules "$ipt_tmp -A PSW $(comment "$remarks") -p tcp ${_ipt_source}" $tcp_redir_ports "$(dst $shunt_set_name) ${ipt_j}" - [ "${tcp_proxy_mode}" != "disable" ] && add_port_rules "$ipt_tmp -A PSW $(comment "$remarks") -p tcp ${_ipt_source}" $tcp_redir_ports "${ipt_j}" - [ -n "${is_tproxy}" ] && $ipt_m -A PSW $(comment "$remarks") -p tcp ${_ipt_source} $(REDIRECT $tcp_port TPROXY) - - [ "$PROXY_IPV6" == "1" ] && [ "$_ipv4" != "1" ] && { - $ip6t_m -A PSW $(comment "$remarks") -p tcp ${_ipt_source} -d $FAKE_IP_6 -j PSW_RULE 2>/dev/null - [ "${use_proxy_list}" = "1" ] && add_port_rules "$ip6t_m -A PSW $(comment "$remarks") -p tcp ${_ipt_source}" $tcp_redir_ports "$(dst $black6_set_name) -j PSW_RULE" 2>/dev/null - [ "${use_gfw_list}" = "1" ] && add_port_rules "$ip6t_m -A PSW $(comment "$remarks") -p tcp ${_ipt_source}" $tcp_redir_ports "$(dst $gfw6_set_name) -j PSW_RULE" 2>/dev/null - [ "${chn_list}" != "0" ] && add_port_rules "$ip6t_m -A PSW $(comment "$remarks") -p tcp ${_ipt_source}" $tcp_redir_ports "$(dst $IPSET_CHN6) $(get_jump_ipt ${chn_list} "-j PSW_RULE")" 2>/dev/null - [ "${use_shunt_tcp}" = "1" ] && add_port_rules "$ip6t_m -A PSW $(comment "$remarks") -p tcp ${_ipt_source}" $tcp_redir_ports "$(dst $shunt6_set_name) -j PSW_RULE" 2>/dev/null - [ "${tcp_proxy_mode}" != "disable" ] && add_port_rules "$ip6t_m -A PSW $(comment "$remarks") -p tcp ${_ipt_source}" $tcp_redir_ports "-j PSW_RULE" 2>/dev/null - $ip6t_m -A PSW $(comment "$remarks") -p tcp ${_ipt_source} $(REDIRECT $tcp_port TPROXY) 2>/dev/null - } - else - msg2="${msg}不代理 TCP" - fi - echolog " - ${msg2}" - } - - [ "$_ipv4" != "1" ] && $ip6t_m -A PSW $(comment "$remarks") ${_ipt_source} -p tcp -j RETURN 2>/dev/null - $ipt_tmp -A PSW $(comment "$remarks") ${_ipt_source} -p tcp -j RETURN - - [ -n "$udp_port" ] && { - if [ -n "${udp_proxy_mode}" ]; then - msg2="${msg}使用 UDP 节点[$udp_node_remark]" - msg2="${msg2}(TPROXY:${udp_port})" - - $ipt_m -A PSW $(comment "$remarks") -p udp ${_ipt_source} -d $FAKE_IP -j PSW_RULE - [ "${use_proxy_list}" = "1" ] && add_port_rules "$ipt_m -A PSW $(comment "$remarks") -p udp ${_ipt_source}" $udp_redir_ports "$(dst $black_set_name) -j PSW_RULE" - [ "${use_gfw_list}" = "1" ] && add_port_rules "$ipt_m -A PSW $(comment "$remarks") -p udp ${_ipt_source}" $udp_redir_ports "$(dst $gfw_set_name) -j PSW_RULE" - [ "${chn_list}" != "0" ] && add_port_rules "$ipt_m -A PSW $(comment "$remarks") -p udp ${_ipt_source}" $udp_redir_ports "$(dst $IPSET_CHN) $(get_jump_ipt ${chn_list} "-j PSW_RULE")" - [ "${use_shunt_udp}" = "1" ] && add_port_rules "$ipt_m -A PSW $(comment "$remarks") -p udp ${_ipt_source}" $udp_redir_ports "$(dst $shunt_set_name) -j PSW_RULE" - [ "${udp_proxy_mode}" != "disable" ] && add_port_rules "$ipt_m -A PSW $(comment "$remarks") -p udp ${_ipt_source}" $udp_redir_ports "-j PSW_RULE" - $ipt_m -A PSW $(comment "$remarks") -p udp ${_ipt_source} $(REDIRECT $udp_port TPROXY) - - [ "$PROXY_IPV6" == "1" ] && [ "$_ipv4" != "1" ] && { - $ip6t_m -A PSW $(comment "$remarks") -p udp ${_ipt_source} -d $FAKE_IP_6 -j PSW_RULE 2>/dev/null - [ "${use_proxy_list}" = "1" ] && add_port_rules "$ip6t_m -A PSW $(comment "$remarks") -p udp ${_ipt_source}" $udp_redir_ports "$(dst $black6_set_name) -j PSW_RULE" 2>/dev/null - [ "${use_gfw_list}" = "1" ] && add_port_rules "$ip6t_m -A PSW $(comment "$remarks") -p udp ${_ipt_source}" $udp_redir_ports "$(dst $gfw6_set_name) -j PSW_RULE" 2>/dev/null - [ "${chn_list}" != "0" ] && add_port_rules "$ip6t_m -A PSW $(comment "$remarks") -p udp ${_ipt_source}" $udp_redir_ports "$(dst $IPSET_CHN6) $(get_jump_ipt ${chn_list} "-j PSW_RULE")" 2>/dev/null - [ "${use_shunt_udp}" = "1" ] && add_port_rules "$ip6t_m -A PSW $(comment "$remarks") -p udp ${_ipt_source}" $udp_redir_ports "$(dst $shunt6_set_name) -j PSW_RULE" 2>/dev/null - [ "${udp_proxy_mode}" != "disable" ] && add_port_rules "$ip6t_m -A PSW $(comment "$remarks") -p udp ${_ipt_source}" $udp_redir_ports "-j PSW_RULE" 2>/dev/null - $ip6t_m -A PSW $(comment "$remarks") -p udp ${_ipt_source} $(REDIRECT $udp_port TPROXY) 2>/dev/null - } - else - msg2="${msg}不代理 UDP" - fi - echolog " - ${msg2}" - } - [ "$_ipv4" != "1" ] && $ip6t_m -A PSW $(comment "$remarks") ${_ipt_source} -p udp -j RETURN 2>/dev/null - $ipt_m -A PSW $(comment "$remarks") ${_ipt_source} -p udp -j RETURN - unset ipt_tmp ipt_j _ipt_source msg msg2 _ipv4 - done - unset enabled sid remarks sources use_global_config use_direct_list use_proxy_list use_block_list use_gfw_list chn_list tcp_proxy_mode udp_proxy_mode dns_redirect_port tcp_no_redir_ports udp_no_redir_ports tcp_proxy_drop_ports udp_proxy_drop_ports tcp_redir_ports udp_redir_ports tcp_node udp_node interface - unset tcp_port udp_port tcp_node_remark udp_node_remark _acl_list use_shunt_tcp use_shunt_udp dns_redirect - done - } - - [ "$ENABLED_DEFAULT_ACL" == 1 ] && [ "$CLIENT_PROXY" == 1 ] && { - msg="【默认】," - local ipt_tmp=$ipt_n - [ -n "${is_tproxy}" ] && ipt_tmp=$ipt_m - - [ "$TCP_NO_REDIR_PORTS" != "disable" ] && { - add_port_rules "$ip6t_m -A PSW $(comment "默认") -p tcp" $TCP_NO_REDIR_PORTS "-j RETURN" - add_port_rules "$ipt_tmp -A PSW $(comment "默认") -p tcp" $TCP_NO_REDIR_PORTS "-j RETURN" - if ! has_1_65535 "$TCP_NO_REDIR_PORTS"; then - echolog " - ${msg}不代理 TCP 端口[${TCP_NO_REDIR_PORTS}]" - else - unset TCP_PROXY_MODE - echolog " - ${msg}不代理所有 TCP 端口" - fi - } - - [ "$UDP_NO_REDIR_PORTS" != "disable" ] && { - add_port_rules "$ip6t_m -A PSW $(comment "默认") -p udp" $UDP_NO_REDIR_PORTS "-j RETURN" - add_port_rules "$ipt_m -A PSW $(comment "默认") -p udp" $UDP_NO_REDIR_PORTS "-j RETURN" - if ! has_1_65535 "$UDP_NO_REDIR_PORTS"; then - echolog " - ${msg}不代理 UDP 端口[${UDP_NO_REDIR_PORTS}]" - else - unset UDP_PROXY_MODE - echolog " - ${msg}不代理所有 UDP 端口" - fi - } - - local DNS_REDIRECT - [ $(config_t_get global dns_redirect "1") = "1" ] && DNS_REDIRECT=53 - if ([ -n "$TCP_NODE" ] && [ -n "${TCP_PROXY_MODE}" ]) || ([ -n "$UDP_NODE" ] && [ -n "${UDP_PROXY_MODE}" ]); then - [ -n "${DNS_REDIRECT_PORT}" ] && DNS_REDIRECT=${DNS_REDIRECT_PORT} - else - [ -n "${DIRECT_DNSMASQ_PORT}" ] && DNS_REDIRECT=${DIRECT_DNSMASQ_PORT} - fi - - if [ -n "${DNS_REDIRECT}" ]; then - $ipt_m -A PSW $(comment "默认") -p udp --dport 53 -j RETURN - $ip6t_m -A PSW $(comment "默认") -p udp --dport 53 -j RETURN 2>/dev/null - $ipt_m -A PSW $(comment "默认") -p tcp --dport 53 -j RETURN - $ip6t_m -A PSW $(comment "默认") -p tcp --dport 53 -j RETURN 2>/dev/null - $ipt_n -A PSW_DNS $(comment "默认") -p udp --dport 53 -j REDIRECT --to-ports ${DNS_REDIRECT} - $ip6t_n -A PSW_DNS $(comment "默认") -p udp --dport 53 -j REDIRECT --to-ports ${DNS_REDIRECT} 2>/dev/null - $ipt_n -A PSW_DNS $(comment "默认") -p tcp --dport 53 -j REDIRECT --to-ports ${DNS_REDIRECT} - $ip6t_n -A PSW_DNS $(comment "默认") -p tcp --dport 53 -j REDIRECT --to-ports ${DNS_REDIRECT} 2>/dev/null - fi - - [ -n "${TCP_PROXY_MODE}" -o -n "${UDP_PROXY_MODE}" ] && { - [ "${USE_BLOCK_LIST}" = "1" ] && $ipt_m -A PSW $(comment "默认") $(dst $IPSET_BLOCK) -j DROP - [ "${USE_DIRECT_LIST}" = "1" ] && $ipt_tmp -A PSW $(comment "默认") $(dst $IPSET_WHITE) -j RETURN - [ "$PROXY_IPV6" == "1" ] && { - [ "${USE_BLOCK_LIST}" = "1" ] && $ip6t_m -A PSW $(comment "默认") $(dst $IPSET_BLOCK6) -j DROP 2>/dev/null - [ "${USE_DIRECT_LIST}" = "1" ] && $ip6t_m -A PSW $(comment "默认") $(dst $IPSET_WHITE6) -j RETURN 2>/dev/null - } - - [ "$TCP_PROXY_DROP_PORTS" != "disable" ] && { - [ "$PROXY_IPV6" == "1" ] && { - add_port_rules "$ip6t_m -A PSW $(comment "默认") -p tcp" $TCP_PROXY_DROP_PORTS "-d $FAKE_IP_6 -j DROP" - [ "${USE_PROXY_LIST}" = "1" ] && add_port_rules "$ip6t_m -A PSW $(comment "默认") -p tcp" $TCP_PROXY_DROP_PORTS "$(dst $IPSET_BLACK6) -j DROP" - [ "${USE_GFW_LIST}" = "1" ] && add_port_rules "$ip6t_m -A PSW $(comment "默认") -p tcp" $TCP_PROXY_DROP_PORTS "$(dst $IPSET_GFW6) -j DROP" - [ "${CHN_LIST}" != "0" ] && add_port_rules "$ip6t_m -A PSW $(comment "默认") -p tcp" $TCP_PROXY_DROP_PORTS "$(dst $IPSET_CHN6) $(get_jump_ipt ${CHN_LIST} "-j DROP")" - [ "${USE_SHUNT_TCP}" = "1" ] && $ip6t_m -A PSW $(comment "默认") -p tcp $TCP_PROXY_DROP_PORTS "$(dst $IPSET_SHUNT6) -j DROP" - [ "${TCP_PROXY_MODE}" != "disable" ] && $ip6t_m -A PSW $(comment "默认") -p tcp $TCP_PROXY_DROP_PORTS "-j DROP" - } - add_port_rules "$ipt_m -A PSW $(comment "默认") -p tcp" $TCP_PROXY_DROP_PORTS "-d $FAKE_IP -j DROP" - [ "${USE_PROXY_LIST}" = "1" ] && add_port_rules "$ipt_m -A PSW $(comment "默认") -p tcp" $TCP_PROXY_DROP_PORTS "$(dst $IPSET_BLACK) -j DROP" - [ "${USE_GFW_LIST}" = "1" ] && add_port_rules "$ipt_m -A PSW $(comment "默认") -p tcp" $TCP_PROXY_DROP_PORTS "$(dst $IPSET_GFW) -j DROP" - [ "${CHN_LIST}" != "0" ] && add_port_rules "$ipt_m -A PSW $(comment "默认") -p tcp" $TCP_PROXY_DROP_PORTS "$(dst $IPSET_CHN) $(get_jump_ipt ${CHN_LIST} "-j DROP")" - [ "${USE_SHUNT_TCP}" = "1" ] && add_port_rules "$ipt_m -A PSW $(comment "默认") -p tcp" $TCP_PROXY_DROP_PORTS $(dst $IPSET_SHUNT) "-j DROP" - [ "${TCP_PROXY_MODE}" != "disable" ] && add_port_rules "$ipt_m -A PSW $(comment "默认") -p tcp" $TCP_PROXY_DROP_PORTS "-j DROP" - echolog " - ${msg}屏蔽代理 TCP 端口[${TCP_PROXY_DROP_PORTS}]" - } - - [ "$UDP_PROXY_DROP_PORTS" != "disable" ] && { - [ "$PROXY_IPV6" == "1" ] && { - add_port_rules "$ip6t_m -A PSW $(comment "默认") -p udp" $UDP_PROXY_DROP_PORTS "-d $FAKE_IP_6 -j DROP" - [ "${USE_PROXY_LIST}" = "1" ] && add_port_rules "$ip6t_m -A PSW $(comment "默认") -p udp" $UDP_PROXY_DROP_PORTS "$(dst $IPSET_BLACK6) -j DROP" - [ "${USE_GFW_LIST}" = "1" ] && add_port_rules "$ip6t_m -A PSW $(comment "默认") -p udp" $UDP_PROXY_DROP_PORTS "$(dst $IPSET_GFW6) -j DROP" - [ "${CHN_LIST}" != "0" ] && add_port_rules "$ip6t_m -A PSW $(comment "默认") -p udp" $UDP_PROXY_DROP_PORTS "$(dst $IPSET_CHN6) $(get_jump_ipt ${CHN_LIST} "-j DROP")" - [ "${USE_SHUNT_TCP}" = "1" ] && add_port_rules "$ip6t_m -A PSW $(comment "默认") -p udp" $UDP_PROXY_DROP_PORTS "$(dst $IPSET_SHUNT6) -j DROP" - [ "${UDP_PROXY_MODE}" != "disable" ] && add_port_rules "$ip6t_m -A PSW $(comment "默认") -p udp" $UDP_PROXY_DROP_PORTS "-j DROP" - } - add_port_rules "$ipt_m -A PSW $(comment "默认") -p udp" $UDP_PROXY_DROP_PORTS "-d $FAKE_IP -j DROP" - [ "${USE_PROXY_LIST}" = "1" ] && add_port_rules "$ipt_m -A PSW $(comment "默认") -p udp" $UDP_PROXY_DROP_PORTS "$(dst $IPSET_BLACK) -j DROP" - [ "${USE_GFW_LIST}" = "1" ] && add_port_rules "$ipt_m -A PSW $(comment "默认") -p udp" $UDP_PROXY_DROP_PORTS "$(dst $IPSET_GFW) -j DROP" - [ "${CHN_LIST}" != "0" ] && add_port_rules "$ipt_m -A PSW $(comment "默认") -p udp" $UDP_PROXY_DROP_PORTS "$(dst $IPSET_CHN) $(get_jump_ipt ${CHN_LIST} "-j DROP")" - [ "${USE_SHUNT_UDP}" = "1" ] && add_port_rules "$ipt_m -A PSW $(comment "默认") -p udp" $UDP_PROXY_DROP_PORTS "$(dst $IPSET_SHUNT) -j DROP" - [ "${UDP_PROXY_MODE}" != "disable" ] && add_port_rules "$ipt_m -A PSW $(comment "默认") -p udp" $UDP_PROXY_DROP_PORTS "-j DROP" - echolog " - ${msg}屏蔽代理 UDP 端口[${UDP_PROXY_DROP_PORTS}]" - } - } - - # 加载TCP默认代理模式 - if [ -n "${TCP_PROXY_MODE}" ]; then - [ -n "$TCP_NODE" ] && { - if is_socks_wrap "$TCP_NODE"; then - msg2="${msg}使用 TCP 节点[Socks 配置($(config_n_get ${TCP_NODE#Socks_} port) 端口)]" - else - msg2="${msg}使用 TCP 节点[$(config_n_get $TCP_NODE remarks)]" - fi - if [ -n "${is_tproxy}" ]; then - msg2="${msg2}(TPROXY:${TCP_REDIR_PORT})" - ipt_j="-j PSW_RULE" - else - msg2="${msg2}(REDIRECT:${TCP_REDIR_PORT})" - ipt_j="$(REDIRECT $TCP_REDIR_PORT)" - fi - - [ "$accept_icmp" = "1" ] && { - $ipt_n -A PSW $(comment "默认") -p icmp -d $FAKE_IP $(REDIRECT) - [ "${USE_PROXY_LIST}" = "1" ] && $ipt_n -A PSW $(comment "默认") -p icmp $(dst $IPSET_BLACK) $(REDIRECT) - [ "${USE_GFW_LIST}" = "1" ] && $ipt_n -A PSW $(comment "默认") -p icmp $(dst $IPSET_GFW) $(REDIRECT) - [ "${CHN_LIST}" != "0" ] && $ipt_n -A PSW $(comment "默认") -p icmp $(dst $IPSET_CHN) $(get_jump_ipt ${CHN_LIST}) - [ "${USE_SHUNT_TCP}" = "1" ] && $ipt_n -A PSW $(comment "默认") -p icmp $(dst $IPSET_SHUNT) $(REDIRECT) - [ "${TCP_PROXY_MODE}" != "disable" ] && $ipt_n -A PSW $(comment "默认") -p icmp $(REDIRECT) - } - - [ "$accept_icmpv6" = "1" ] && [ "$PROXY_IPV6" == "1" ] && { - $ip6t_n -A PSW $(comment "默认") -p ipv6-icmp -d $FAKE_IP_6 $(REDIRECT) - [ "${USE_PROXY_LIST}" = "1" ] && $ip6t_n -A PSW $(comment "默认") -p ipv6-icmp $(dst $IPSET_BLACK6) $(REDIRECT) - [ "${USE_GFW_LIST}" = "1" ] && $ip6t_n -A PSW $(comment "默认") -p ipv6-icmp $(dst $IPSET_GFW6) $(REDIRECT) - [ "${CHN_LIST}" != "0" ] && $ip6t_n -A PSW $(comment "默认") -p ipv6-icmp $(dst $IPSET_CHN6) $(get_jump_ipt ${CHN_LIST}) - [ "${USE_SHUNT_TCP}" = "1" ] && $ip6t_n -A PSW $(comment "默认") -p ipv6-icmp $(dst $IPSET_SHUNT6) $(REDIRECT) - [ "${TCP_PROXY_MODE}" != "disable" ] && $ip6t_n -A PSW $(comment "默认") -p ipv6-icmp $(REDIRECT) - } - - $ipt_tmp -A PSW $(comment "默认") -p tcp -d $FAKE_IP ${ipt_j} - [ "${USE_PROXY_LIST}" = "1" ] && add_port_rules "$ipt_tmp -A PSW $(comment "默认") -p tcp" $TCP_REDIR_PORTS "$(dst $IPSET_BLACK) ${ipt_j}" - [ "${USE_GFW_LIST}" = "1" ] && add_port_rules "$ipt_tmp -A PSW $(comment "默认") -p tcp" $TCP_REDIR_PORTS "$(dst $IPSET_GFW) ${ipt_j}" - [ "${CHN_LIST}" != "0" ] && add_port_rules "$ipt_tmp -A PSW $(comment "默认") -p tcp" $TCP_REDIR_PORTS "$(dst $IPSET_CHN) $(get_jump_ipt ${CHN_LIST} "${ipt_j}")" - [ "${USE_SHUNT_TCP}" = "1" ] && add_port_rules "$ipt_tmp -A PSW $(comment "默认") -p tcp" $TCP_REDIR_PORTS "$(dst $IPSET_SHUNT) ${ipt_j}" - [ "${TCP_PROXY_MODE}" != "disable" ] && add_port_rules "$ipt_tmp -A PSW $(comment "默认") -p tcp" $TCP_REDIR_PORTS "${ipt_j}" - [ -n "${is_tproxy}" ]&& $ipt_tmp -A PSW $(comment "默认") -p tcp $(REDIRECT $TCP_REDIR_PORT TPROXY) - - [ "$PROXY_IPV6" == "1" ] && { - $ip6t_m -A PSW $(comment "默认") -p tcp -d $FAKE_IP_6 -j PSW_RULE - [ "${USE_PROXY_LIST}" = "1" ] && add_port_rules "$ip6t_m -A PSW $(comment "默认") -p tcp" $TCP_REDIR_PORTS "$(dst $IPSET_BLACK6) -j PSW_RULE" - [ "${USE_GFW_LIST}" = "1" ] && add_port_rules "$ip6t_m -A PSW $(comment "默认") -p tcp" $TCP_REDIR_PORTS "$(dst $IPSET_GFW6) -j PSW_RULE" - [ "${CHN_LIST}" != "0" ] && add_port_rules "$ip6t_m -A PSW $(comment "默认") -p tcp" $TCP_REDIR_PORTS "$(dst $IPSET_CHN6) $(get_jump_ipt ${CHN_LIST} "-j PSW_RULE")" - [ "${USE_SHUNT_TCP}" = "1" ] && add_port_rules "$ip6t_m -A PSW $(comment "默认") -p tcp" $TCP_REDIR_PORTS "$(dst $IPSET_SHUNT6) -j PSW_RULE" - [ "${TCP_PROXY_MODE}" != "disable" ] && add_port_rules "$ip6t_m -A PSW $(comment "默认") -p tcp" $TCP_REDIR_PORTS "-j PSW_RULE" - $ip6t_m -A PSW $(comment "默认") -p tcp $(REDIRECT $TCP_REDIR_PORT TPROXY) - } - - echolog " - ${msg2}" - } - fi - $ipt_n -A PSW $(comment "默认") -p tcp -j RETURN - $ipt_m -A PSW $(comment "默认") -p tcp -j RETURN - $ip6t_m -A PSW $(comment "默认") -p tcp -j RETURN - - # 加载UDP默认代理模式 - if [ -n "${UDP_PROXY_MODE}" ]; then - [ -n "$UDP_NODE" -o "$TCP_UDP" = "1" ] && { - if is_socks_wrap "$UDP_NODE"; then - msg2="${msg}使用 UDP 节点[Socks 配置($(config_n_get ${UDP_NODE#Socks_} port) 端口)](TPROXY:${UDP_REDIR_PORT})" - else - msg2="${msg}使用 UDP 节点[$(config_n_get $UDP_NODE remarks)](TPROXY:${UDP_REDIR_PORT})" - fi - - $ipt_m -A PSW $(comment "默认") -p udp -d $FAKE_IP -j PSW_RULE - [ "${USE_PROXY_LIST}" = "1" ] && add_port_rules "$ipt_m -A PSW $(comment "默认") -p udp" $UDP_REDIR_PORTS "$(dst $IPSET_BLACK) -j PSW_RULE" - [ "${USE_GFW_LIST}" = "1" ] && add_port_rules "$ipt_m -A PSW $(comment "默认") -p udp" $UDP_REDIR_PORTS "$(dst $IPSET_GFW) -j PSW_RULE" - [ "${CHN_LIST}" != "0" ] && add_port_rules "$ipt_m -A PSW $(comment "默认") -p udp" $UDP_REDIR_PORTS "$(dst $IPSET_CHN) $(get_jump_ipt ${CHN_LIST} "-j PSW_RULE")" - [ "${USE_SHUNT_UDP}" = "1" ] && add_port_rules "$ipt_m -A PSW $(comment "默认") -p udp" $UDP_REDIR_PORTS "$(dst $IPSET_SHUNT) -j PSW_RULE" - [ "${UDP_PROXY_MODE}" != "disable" ] && add_port_rules "$ipt_m -A PSW $(comment "默认") -p udp" $UDP_REDIR_PORTS "-j PSW_RULE" - $ipt_m -A PSW $(comment "默认") -p udp $(REDIRECT $UDP_REDIR_PORT TPROXY) - - [ "$PROXY_IPV6" == "1" ] && { - $ip6t_m -A PSW $(comment "默认") -p udp -d $FAKE_IP_6 -j PSW_RULE - [ "${USE_PROXY_LIST}" = "1" ] && add_port_rules "$ip6t_m -A PSW $(comment "默认") -p udp" $UDP_REDIR_PORTS "$(dst $IPSET_BLACK6) -j PSW_RULE" - [ "${USE_GFW_LIST}" = "1" ] && add_port_rules "$ip6t_m -A PSW $(comment "默认") -p udp" $UDP_REDIR_PORTS "$(dst $IPSET_GFW6) -j PSW_RULE" - [ "${CHN_LIST}" != "0" ] && add_port_rules "$ip6t_m -A PSW $(comment "默认") -p udp" $UDP_REDIR_PORTS "$(dst $IPSET_CHN6) $(get_jump_ipt ${CHN_LIST} "-j PSW_RULE")" - [ "${USE_SHUNT_UDP}" = "1" ] && add_port_rules "$ip6t_m -A PSW $(comment "默认") -p udp" $UDP_REDIR_PORTS "$(dst $IPSET_SHUNT6) -j PSW_RULE" - [ "${UDP_PROXY_MODE}" != "disable" ] && add_port_rules "$ip6t_m -A PSW $(comment "默认") -p udp" $UDP_REDIR_PORTS "-j PSW_RULE" - $ip6t_m -A PSW $(comment "默认") -p udp $(REDIRECT $UDP_REDIR_PORT TPROXY) - } - - echolog " - ${msg2}" - } - fi - $ipt_m -A PSW $(comment "默认") -p udp -j RETURN - $ip6t_m -A PSW $(comment "默认") -p udp -j RETURN - } -} - -filter_haproxy() { - for item in ${haproxy_items}; do - local ip=$(get_host_ip ipv4 $(echo $item | awk -F ":" '{print $1}') 1) - ipset -q add $IPSET_VPS $ip - done - echolog " - [$?]加入负载均衡的节点到ipset[$IPSET_VPS]直连完成" -} - -filter_vpsip() { - uci show $CONFIG | grep -E "(.address=|.download_address=)" | cut -d "'" -f 2 | grep -E "([0-9]{1,3}[\.]){3}[0-9]{1,3}" | grep -v "^127\.0\.0\.1$" | sed -e "/^$/d" | sed -e "s/^/add $IPSET_VPS &/g" | awk '{print $0} END{print "COMMIT"}' | ipset -! -R - echolog " - [$?]加入所有IPv4节点到ipset[$IPSET_VPS]直连完成" - uci show $CONFIG | grep -E "(.address=|.download_address=)" | cut -d "'" -f 2 | grep -E "([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}" | sed -e "/^$/d" | sed -e "s/^/add $IPSET_VPS6 &/g" | awk '{print $0} END{print "COMMIT"}' | ipset -! -R - echolog " - [$?]加入所有IPv6节点到ipset[$IPSET_VPS6]直连完成" -} - -filter_server_port() { - local address=${1} - local port=${2} - local stream=${3} - stream=$(echo ${3} | tr 'A-Z' 'a-z') - local _is_tproxy ipt_tmp - ipt_tmp=$ipt_n - _is_tproxy=${is_tproxy} - [ "$stream" == "udp" ] && _is_tproxy="TPROXY" - [ -n "${_is_tproxy}" ] && ipt_tmp=$ipt_m - - for _ipt in 4 6; do - [ "$_ipt" == "4" ] && _ipt=$ipt_tmp - [ "$_ipt" == "6" ] && _ipt=$ip6t_m - $_ipt -n -L PSW_OUTPUT | grep -q "${address}:${port}" - if [ $? -ne 0 ]; then - $_ipt -I PSW_OUTPUT $(comment "${address}:${port}") -p $stream -d $address --dport $port -j RETURN 2>/dev/null - fi - done -} - -filter_node() { - local node=${1} - local stream=${2} - if [ -n "$node" ]; then - local address=$(config_n_get $node address) - local port=$(config_n_get $node port) - [ -z "$address" ] && [ -z "$port" ] && { - return 1 - } - filter_server_port $address $port $stream - filter_server_port $address $port $stream - fi -} - -filter_direct_node_list() { - [ ! -s "$TMP_PATH/direct_node_list" ] && return - for _node_id in $(cat $TMP_PATH/direct_node_list | awk '!seen[$0]++'); do - filter_node "$_node_id" TCP - filter_node "$_node_id" UDP - unset _node_id - done -} - -add_firewall_rule() { - echolog "开始加载 iptables 防火墙规则..." - ipset -! create $IPSET_LOCAL nethash maxelem 1048576 - ipset -! create $IPSET_WAN nethash maxelem 1048576 - ipset -! create $IPSET_LAN nethash maxelem 1048576 - ipset -! create $IPSET_VPS nethash maxelem 1048576 - ipset -! create $IPSET_SHUNT nethash maxelem 1048576 timeout 172800 - ipset -! create $IPSET_GFW nethash maxelem 1048576 timeout 172800 - ipset -! create $IPSET_CHN nethash maxelem 1048576 timeout 172800 - ipset -! create $IPSET_BLACK nethash maxelem 1048576 timeout 172800 - ipset -! create $IPSET_WHITE nethash maxelem 1048576 timeout 172800 - ipset -! create $IPSET_BLOCK nethash maxelem 1048576 timeout 172800 - - ipset -! create $IPSET_LOCAL6 nethash family inet6 maxelem 1048576 - ipset -! create $IPSET_WAN6 nethash family inet6 maxelem 1048576 - ipset -! create $IPSET_LAN6 nethash family inet6 maxelem 1048576 - ipset -! create $IPSET_VPS6 nethash family inet6 maxelem 1048576 - ipset -! create $IPSET_SHUNT6 nethash family inet6 maxelem 1048576 timeout 172800 - ipset -! create $IPSET_GFW6 nethash family inet6 maxelem 1048576 timeout 172800 - ipset -! create $IPSET_CHN6 nethash family inet6 maxelem 1048576 timeout 172800 - ipset -! create $IPSET_BLACK6 nethash family inet6 maxelem 1048576 timeout 172800 - ipset -! create $IPSET_WHITE6 nethash family inet6 maxelem 1048576 timeout 172800 - ipset -! create $IPSET_BLOCK6 nethash family inet6 maxelem 1048576 timeout 172800 - - cat $RULES_PATH/chnroute | tr -s '\n' | grep -v "^#" | sed -e "/^$/d" | sed -e "s/^/add $IPSET_CHN &/g" -e "s/$/ timeout 0/g" | ipset -! -R - cat $RULES_PATH/chnroute6 | tr -s '\n' | grep -v "^#" | sed -e "/^$/d" | sed -e "s/^/add $IPSET_CHN6 &/g" -e "s/$/ timeout 0/g" | ipset -! -R - - #导入规则列表、分流规则中的IP列表 - local USE_SHUNT_NODE=0 - local USE_PROXY_LIST_ALL=${USE_PROXY_LIST} - local USE_DIRECT_LIST_ALL=${USE_DIRECT_LIST} - local USE_BLOCK_LIST_ALL=${USE_BLOCK_LIST} - local _TCP_NODE=$(config_t_get global tcp_node) - local _UDP_NODE=$(config_t_get global udp_node) - local USE_GEOVIEW=$(config_t_get global_rules enable_geoview) - - [ -n "$_TCP_NODE" ] && [ "$(config_n_get $_TCP_NODE protocol)" = "_shunt" ] && USE_SHUNT_TCP=1 && USE_SHUNT_NODE=1 - [ -n "$_UDP_NODE" ] && [ "$(config_n_get $_UDP_NODE protocol)" = "_shunt" ] && USE_SHUNT_UDP=1 && USE_SHUNT_NODE=1 - [ "$_UDP_NODE" = "tcp" ] && USE_SHUNT_UDP=$USE_SHUNT_TCP - - for acl_section in $(uci show ${CONFIG} | grep "=acl_rule" | cut -d '.' -sf 2 | cut -d '=' -sf 1); do - [ "$(config_n_get $acl_section enabled)" != "1" ] && continue - [ "$(config_n_get $acl_section use_global_config 0)" != "1" ] && { - [ "$(config_n_get $acl_section use_direct_list 1)" = "1" ] && USE_PROXY_LIST_ALL=1 - [ "$(config_n_get $acl_section use_proxy_list 1)" = "1" ] && USE_DIRECT_LIST_ALL=1 - [ "$(config_n_get $acl_section use_block_list 1)" = "1" ] && USE_BLOCK_LIST_ALL=1 - } - for _node in $(config_n_get $acl_section tcp_node) $(config_n_get $acl_section udp_node); do - local node_protocol=$(config_n_get $_node protocol) - [ "$node_protocol" = "_shunt" ] && { USE_SHUNT_NODE=1; break; } - done - done - - #直连列表 - [ "$USE_DIRECT_LIST_ALL" = "1" ] && { - cat $RULES_PATH/direct_ip | tr -s "\r\n" "\n" | grep -v "^#" | sed -e "/^$/d" | grep -E "(\.((2(5[0-5]|[0-4][0-9]))|[0-1]?[0-9]{1,2})){3}" | sed -e "s/^/add $IPSET_WHITE &/g" -e "s/$/ timeout 0/g" | ipset -! -R - cat $RULES_PATH/direct_ip | tr -s "\r\n" "\n" | grep -v "^#" | sed -e "/^$/d" | grep -E "([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}" | sed -e "s/^/add $IPSET_WHITE6 &/g" -e "s/$/ timeout 0/g" | ipset -! -R - [ "$USE_GEOVIEW" = "1" ] && { - local GEOIP_CODE=$(cat $RULES_PATH/direct_ip | tr -s "\r\n" "\n" | sed -e "/^$/d" | grep -E "^geoip:" | grep -v "^geoip:private" | sed -E 's/^geoip:(.*)/\1/' | sed ':a;N;$!ba;s/\n/,/g') - if [ -n "$GEOIP_CODE" ] && type geoview &> /dev/null; then - get_geoip $GEOIP_CODE ipv4 | grep -E "(\.((2(5[0-5]|[0-4][0-9]))|[0-1]?[0-9]{1,2})){3}" | sed -e "s/^/add $IPSET_WHITE &/g" -e "s/$/ timeout 0/g" | ipset -! -R - get_geoip $GEOIP_CODE ipv6 | grep -E "([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}" | sed -e "s/^/add $IPSET_WHITE6 &/g" -e "s/$/ timeout 0/g" | ipset -! -R - echolog " - [$?]解析并加入[直连列表] GeoIP 到 IPSET 完成" - fi - } - } - - #代理列表 - [ "$USE_PROXY_LIST_ALL" = "1" ] && { - cat $RULES_PATH/proxy_ip | tr -s "\r\n" "\n" | grep -v "^#" | sed -e "/^$/d" | grep -E "(\.((2(5[0-5]|[0-4][0-9]))|[0-1]?[0-9]{1,2})){3}" | sed -e "s/^/add $IPSET_BLACK &/g" -e "s/$/ timeout 0/g" | ipset -! -R - cat $RULES_PATH/proxy_ip | tr -s "\r\n" "\n" | grep -v "^#" | sed -e "/^$/d" | grep -E "([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}" | sed -e "s/^/add $IPSET_BLACK6 &/g" -e "s/$/ timeout 0/g" | ipset -! -R - [ "$USE_GEOVIEW" = "1" ] && { - local GEOIP_CODE=$(cat $RULES_PATH/proxy_ip | tr -s "\r\n" "\n" | sed -e "/^$/d" | grep -E "^geoip:" | grep -v "^geoip:private" | sed -E 's/^geoip:(.*)/\1/' | sed ':a;N;$!ba;s/\n/,/g') - if [ -n "$GEOIP_CODE" ] && type geoview &> /dev/null; then - get_geoip $GEOIP_CODE ipv4 | grep -E "(\.((2(5[0-5]|[0-4][0-9]))|[0-1]?[0-9]{1,2})){3}" | sed -e "s/^/add $IPSET_BLACK &/g" -e "s/$/ timeout 0/g" | ipset -! -R - get_geoip $GEOIP_CODE ipv6 | grep -E "([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}" | sed -e "s/^/add $IPSET_BLACK6 &/g" -e "s/$/ timeout 0/g" | ipset -! -R - echolog " - [$?]解析并加入[代理列表] GeoIP 到 IPSET 完成" - fi - } - } - - #屏蔽列表 - [ "$USE_BLOCK_LIST_ALL" = "1" ] && { - cat $RULES_PATH/block_ip | tr -s "\r\n" "\n" | grep -v "^#" | sed -e "/^$/d" | grep -E "(\.((2(5[0-5]|[0-4][0-9]))|[0-1]?[0-9]{1,2})){3}" | sed -e "s/^/add $IPSET_BLOCK &/g" -e "s/$/ timeout 0/g" | ipset -! -R - cat $RULES_PATH/block_ip | tr -s "\r\n" "\n" | grep -v "^#" | sed -e "/^$/d" | grep -E "([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}" | sed -e "s/^/add $IPSET_BLOCK6 &/g" -e "s/$/ timeout 0/g" | ipset -! -R - [ "$USE_GEOVIEW" = "1" ] && { - local GEOIP_CODE=$(cat $RULES_PATH/block_ip | tr -s "\r\n" "\n" | sed -e "/^$/d" | grep -E "^geoip:" | grep -v "^geoip:private" | sed -E 's/^geoip:(.*)/\1/' | sed ':a;N;$!ba;s/\n/,/g') - if [ -n "$GEOIP_CODE" ] && type geoview &> /dev/null; then - get_geoip $GEOIP_CODE ipv4 | grep -E "(\.((2(5[0-5]|[0-4][0-9]))|[0-1]?[0-9]{1,2})){3}" | sed -e "s/^/add $IPSET_BLOCK &/g" -e "s/$/ timeout 0/g" | ipset -! -R - get_geoip $GEOIP_CODE ipv6 | grep -E "([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}" | sed -e "s/^/add $IPSET_BLOCK6 &/g" -e "s/$/ timeout 0/g" | ipset -! -R - echolog " - [$?]解析并加入[屏蔽列表] GeoIP 到 IPSET 完成" - fi - } - } - - #分流列表 - [ "$USE_SHUNT_NODE" = "1" ] && { - local GEOIP_CODE="" - local shunt_ids=$(uci show $CONFIG | grep "=shunt_rules" | awk -F '.' '{print $2}' | awk -F '=' '{print $1}') - for shunt_id in $shunt_ids; do - config_n_get $shunt_id ip_list | tr -s "\r\n" "\n" | grep -v "^#" | sed -e "/^$/d" | grep -E "(\.((2(5[0-5]|[0-4][0-9]))|[0-1]?[0-9]{1,2})){3}" | sed -e "s/^/add $IPSET_SHUNT &/g" -e "s/$/ timeout 0/g" | ipset -! -R - config_n_get $shunt_id ip_list | tr -s "\r\n" "\n" | grep -v "^#" | sed -e "/^$/d" | grep -E "([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}" | sed -e "s/^/add $IPSET_SHUNT6 &/g" -e "s/$/ timeout 0/g" | ipset -! -R - [ "$USE_GEOVIEW" = "1" ] && { - local geoip_code=$(config_n_get $shunt_id ip_list | tr -s "\r\n" "\n" | sed -e "/^$/d" | grep -E "^geoip:" | grep -v "^geoip:private" | sed -E 's/^geoip:(.*)/\1/' | sed ':a;N;$!ba;s/\n/,/g') - [ -n "$geoip_code" ] && GEOIP_CODE="${GEOIP_CODE:+$GEOIP_CODE,}$geoip_code" - } - done - if [ -n "$GEOIP_CODE" ] && type geoview &> /dev/null; then - get_geoip $GEOIP_CODE ipv4 | grep -E "(\.((2(5[0-5]|[0-4][0-9]))|[0-1]?[0-9]{1,2})){3}" | sed -e "s/^/add $IPSET_SHUNT &/g" -e "s/$/ timeout 0/g" | ipset -! -R - get_geoip $GEOIP_CODE ipv6 | grep -E "([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}" | sed -e "s/^/add $IPSET_SHUNT6 &/g" -e "s/$/ timeout 0/g" | ipset -! -R - echolog " - [$?]解析并加入[分流节点] GeoIP 到 IPSET 完成" - fi - } - - ipset -! -R <<-EOF - $(ip address show | grep -w "inet" | awk '{print $2}' | awk -F '/' '{print $1}' | sed -e "s/^/add $IPSET_LOCAL /") - EOF - - ipset -! -R <<-EOF - $(ip address show | grep -w "inet6" | awk '{print $2}' | awk -F '/' '{print $1}' | sed -e "s/^/add $IPSET_LOCAL6 /") - EOF - - #局域网IP列表 - ipset -! -R <<-EOF - $(gen_lanlist | sed -e "s/^/add $IPSET_LAN /") - EOF - - ipset -! -R <<-EOF - $(gen_lanlist_6 | sed -e "s/^/add $IPSET_LAN6 /") - EOF - - # 忽略特殊IP段 - local lan_ifname lan_ip - lan_ifname=$(uci -q -p /tmp/state get network.lan.ifname) - [ -n "$lan_ifname" ] && { - lan_ip=$(ip address show $lan_ifname | grep -w "inet" | awk '{print $2}') - lan_ip6=$(ip address show $lan_ifname | grep -w "inet6" | awk '{print $2}') - #echolog "本机IPv4网段互访直连:${lan_ip}" - #echolog "本机IPv6网段互访直连:${lan_ip6}" - - [ -n "$lan_ip" ] && ipset -! -R <<-EOF - $(echo $lan_ip | sed -e "s/ /\n/g" | sed -e "s/^/add $IPSET_LAN /") - EOF - - [ -n "$lan_ip6" ] && ipset -! -R <<-EOF - $(echo $lan_ip6 | sed -e "s/ /\n/g" | sed -e "s/^/add $IPSET_LAN6 /") - EOF - } - - [ -n "$ISP_DNS" ] && { - #echolog "处理 ISP DNS 例外..." - for ispip in $ISP_DNS; do - ipset -! add $IPSET_WHITE $ispip timeout 0 - echolog " - [$?]追加ISP IPv4 DNS到白名单:${ispip}" - done - } - - [ -n "$ISP_DNS6" ] && { - #echolog "处理 ISP IPv6 DNS 例外..." - for ispip6 in $ISP_DNS6; do - ipset -! add $IPSET_WHITE6 $ispip6 timeout 0 - echolog " - [$?]追加ISP IPv6 DNS到白名单:${ispip6}" - done - } - - # 过滤所有节点IP - filter_vpsip > /dev/null 2>&1 & - # filter_haproxy > /dev/null 2>&1 & - - accept_icmp=$(config_t_get global_forwarding accept_icmp 0) - accept_icmpv6=$(config_t_get global_forwarding accept_icmpv6 0) - - if [ "${TCP_PROXY_WAY}" = "redirect" ]; then - unset is_tproxy - elif [ "${TCP_PROXY_WAY}" = "tproxy" ]; then - is_tproxy="TPROXY" - fi - - $ipt_n -N PSW - $ipt_n -A PSW $(dst $IPSET_LAN) -j RETURN - $ipt_n -A PSW $(dst $IPSET_VPS) -j RETURN - - WAN_IP=$(get_wan_ips ip4) - [ ! -z "${WAN_IP}" ] && { - for wan_ip in $WAN_IP; do - $ipt_n -A PSW $(comment "WAN_IP_RETURN") -d "${wan_ip}" -j RETURN - done - } - - [ "$accept_icmp" = "1" ] && insert_rule_after "$ipt_n" "PREROUTING" "prerouting_rule" "-p icmp -j PSW" - [ -z "${is_tproxy}" ] && insert_rule_after "$ipt_n" "PREROUTING" "prerouting_rule" "-p tcp -j PSW" - - $ipt_n -N PSW_OUTPUT - $ipt_n -A PSW_OUTPUT $(dst $IPSET_LAN) -j RETURN - $ipt_n -A PSW_OUTPUT $(dst $IPSET_VPS) -j RETURN - [ "${USE_DIRECT_LIST}" = "1" ] && $ipt_n -A PSW_OUTPUT $(dst $IPSET_WHITE) -j RETURN - $ipt_n -A PSW_OUTPUT -m mark --mark 0xff -j RETURN - - $ipt_n -N PSW_DNS - if [ $(config_t_get global dns_redirect "1") = "0" ]; then - #Only hijack when dest address is local IP - $ipt_n -I PREROUTING $(dst $IPSET_LOCAL) -j PSW_DNS - else - $ipt_n -I PREROUTING 1 -j PSW_DNS - fi - - $ipt_m -N PSW_DIVERT - $ipt_m -A PSW_DIVERT -j MARK --set-mark 1 - $ipt_m -A PSW_DIVERT -j ACCEPT - - $ipt_m -N PSW_RULE - $ipt_m -A PSW_RULE -j CONNMARK --restore-mark - $ipt_m -A PSW_RULE -m mark --mark 1 -j RETURN - $ipt_m -A PSW_RULE -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j MARK --set-xmark 1 - $ipt_m -A PSW_RULE -p udp -m conntrack --ctstate NEW -j MARK --set-xmark 1 - $ipt_m -A PSW_RULE -j CONNMARK --save-mark - - $ipt_m -N PSW - $ipt_m -A PSW $(dst $IPSET_LAN) -j RETURN - $ipt_m -A PSW $(dst $IPSET_VPS) -j RETURN - - [ ! -z "${WAN_IP}" ] && { - ipset -F $IPSET_WAN - for wan_ip in $WAN_IP; do - ipset -! add $IPSET_WAN ${wan_ip} - echolog " - [$?]加入WAN IPv4到ipset[$IPSET_WAN]:${wan_ip}" - done - $ipt_m -A PSW $(comment "WAN_IP_RETURN") $(dst $IPSET_WAN) -j RETURN - } - unset WAN_IP wan_ip - - insert_rule_before "$ipt_m" "PREROUTING" "mwan3" "-j PSW" - insert_rule_before "$ipt_m" "PREROUTING" "PSW" "-p tcp -m socket -j PSW_DIVERT" - - $ipt_m -N PSW_OUTPUT - $ipt_m -A PSW_OUTPUT $(dst $IPSET_LAN) -j RETURN - $ipt_m -A PSW_OUTPUT $(dst $IPSET_VPS) -j RETURN - - [ -n "$IPT_APPEND_DNS" ] && { - local local_dns dns_address dns_port - for local_dns in $(echo $IPT_APPEND_DNS | tr ',' ' '); do - dns_address=$(echo "$local_dns" | sed -E 's/(@|\[)?([0-9a-fA-F:.]+)(@|#|$).*/\2/') - dns_port=$(echo "$local_dns" | sed -nE 's/.*#([0-9]+)$/\1/p') - if echo "$dns_address" | grep -q -v ':'; then - $ipt_m -A PSW_OUTPUT -p udp -d ${dns_address} --dport ${dns_port:-53} -j RETURN - $ipt_m -A PSW_OUTPUT -p tcp -d ${dns_address} --dport ${dns_port:-53} -j RETURN - echolog " - [$?]追加直连DNS到iptables:${dns_address}:${dns_port:-53}" - else - $ip6t_m -A PSW_OUTPUT -p udp -d ${dns_address} --dport ${dns_port:-53} -j RETURN - $ip6t_m -A PSW_OUTPUT -p tcp -d ${dns_address} --dport ${dns_port:-53} -j RETURN - echolog " - [$?]追加直连DNS到iptables:[${dns_address}]:${dns_port:-53}" - fi - done - } - - [ "${USE_BLOCK_LIST}" = "1" ] && $ipt_m -A PSW_OUTPUT $(dst $IPSET_BLOCK) -j DROP - [ "${USE_DIRECT_LIST}" = "1" ] && $ipt_m -A PSW_OUTPUT $(dst $IPSET_WHITE) -j RETURN - $ipt_m -A PSW_OUTPUT -m mark --mark 0xff -j RETURN - - ip rule add fwmark 1 lookup 100 - ip route add local 0.0.0.0/0 dev lo table 100 - - [ "$accept_icmpv6" = "1" ] && { - $ip6t_n -N PSW - $ip6t_n -A PSW $(dst $IPSET_LAN6) -j RETURN - $ip6t_n -A PSW $(dst $IPSET_VPS6) -j RETURN - $ip6t_n -A PREROUTING -p ipv6-icmp -j PSW - - $ip6t_n -N PSW_OUTPUT - $ip6t_n -A PSW_OUTPUT $(dst $IPSET_LAN6) -j RETURN - $ip6t_n -A PSW_OUTPUT $(dst $IPSET_VPS6) -j RETURN - [ "${USE_DIRECT_LIST}" = "1" ] && $ip6t_n -A PSW_OUTPUT $(dst $IPSET_WHITE6) -j RETURN - $ip6t_n -A PSW_OUTPUT -m mark --mark 0xff -j RETURN - } - - $ip6t_n -N PSW_DNS - if [ $(config_t_get global dns_redirect "1") = "0" ]; then - #Only hijack when dest address is local IP - $ip6t_n -I PREROUTING $(dst $IPSET_LOCAL6) -j PSW_DNS - else - $ip6t_n -I PREROUTING 1 -j PSW_DNS - fi - - $ip6t_m -N PSW_DIVERT - $ip6t_m -A PSW_DIVERT -j MARK --set-mark 1 - $ip6t_m -A PSW_DIVERT -j ACCEPT - - $ip6t_m -N PSW_RULE - $ip6t_m -A PSW_RULE -j CONNMARK --restore-mark - $ip6t_m -A PSW_RULE -m mark --mark 1 -j RETURN - $ip6t_m -A PSW_RULE -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j MARK --set-xmark 1 - $ip6t_m -A PSW_RULE -p udp -m conntrack --ctstate NEW -j MARK --set-xmark 1 - $ip6t_m -A PSW_RULE -j CONNMARK --save-mark - - $ip6t_m -N PSW - $ip6t_m -A PSW $(dst $IPSET_LAN6) -j RETURN - $ip6t_m -A PSW $(dst $IPSET_VPS6) -j RETURN - - WAN6_IP=$(get_wan_ips ip6) - [ ! -z "${WAN6_IP}" ] && { - ipset -F $IPSET_WAN6 - for wan6_ip in $WAN6_IP; do - ipset -! add $IPSET_WAN6 ${wan6_ip} - echolog " - [$?]加入WAN IPv6到ipset[$IPSET_WAN6]:${wan6_ip}" - done - $ip6t_m -A PSW $(comment "WAN6_IP_RETURN") $(dst $IPSET_WAN6) -j RETURN - } - unset WAN6_IP wan6_ip - - insert_rule_before "$ip6t_m" "PREROUTING" "mwan3" "-j PSW" - insert_rule_before "$ip6t_m" "PREROUTING" "PSW" "-p tcp -m socket -j PSW_DIVERT" - - $ip6t_m -N PSW_OUTPUT - $ip6t_m -A PSW_OUTPUT -m mark --mark 0xff -j RETURN - $ip6t_m -A PSW_OUTPUT $(dst $IPSET_LAN6) -j RETURN - $ip6t_m -A PSW_OUTPUT $(dst $IPSET_VPS6) -j RETURN - [ "${USE_BLOCK_LIST}" = "1" ] && $ip6t_m -A PSW_OUTPUT $(dst $IPSET_BLOCK6) -j DROP - [ "${USE_DIRECT_LIST}" = "1" ] && $ip6t_m -A PSW_OUTPUT $(dst $IPSET_WHITE6) -j RETURN - - ip -6 rule add fwmark 1 table 100 - ip -6 route add local ::/0 dev lo table 100 - - [ "$TCP_UDP" = "1" ] && [ -z "$UDP_NODE" ] && UDP_NODE=$TCP_NODE - - [ "$ENABLED_DEFAULT_ACL" == 1 ] && { - local ipt_tmp=$ipt_n - if [ -n "${is_tproxy}" ]; then - ipt_tmp=$ipt_m - ipt_j="-j PSW_RULE" - else - ipt_j="$(REDIRECT $TCP_REDIR_PORT)" - fi - - msg="【路由器本机】," - [ "$TCP_NO_REDIR_PORTS" != "disable" ] && { - add_port_rules "$ipt_tmp -A PSW_OUTPUT -p tcp" $TCP_NO_REDIR_PORTS "-j RETURN" - add_port_rules "$ip6t_m -A PSW_OUTPUT -p tcp" $TCP_NO_REDIR_PORTS "-j RETURN" - if ! has_1_65535 "$TCP_NO_REDIR_PORTS"; then - echolog " - ${msg}不代理 TCP 端口[${TCP_NO_REDIR_PORTS}]" - else - unset LOCALHOST_TCP_PROXY_MODE - echolog " - ${msg}不代理所有 TCP 端口" - fi - } - - [ "$UDP_NO_REDIR_PORTS" != "disable" ] && { - add_port_rules "$ipt_m -A PSW_OUTPUT -p udp" $UDP_NO_REDIR_PORTS "-j RETURN" - add_port_rules "$ip6t_m -A PSW_OUTPUT -p udp" $UDP_NO_REDIR_PORTS "-j RETURN" - if ! has_1_65535 "$UDP_NO_REDIR_PORTS"; then - echolog " - ${msg}不代理 UDP 端口[${UDP_NO_REDIR_PORTS}]" - else - unset LOCALHOST_UDP_PROXY_MODE - echolog " - ${msg}不代理所有 UDP 端口" - fi - } - - if ([ -n "$TCP_NODE" ] && [ -n "${LOCALHOST_TCP_PROXY_MODE}" ]) || ([ -n "$UDP_NODE" ] && [ -n "${LOCALHOST_UDP_PROXY_MODE}" ]); then - [ -n "$DNS_REDIRECT_PORT" ] && { - $ipt_n -A OUTPUT $(comment "PSW_DNS") -p udp -o lo --dport 53 -j REDIRECT --to-ports $DNS_REDIRECT_PORT - $ip6t_n -A OUTPUT $(comment "PSW_DNS") -p udp -o lo --dport 53 -j REDIRECT --to-ports $DNS_REDIRECT_PORT 2>/dev/null - $ipt_n -A OUTPUT $(comment "PSW_DNS") -p tcp -o lo --dport 53 -j REDIRECT --to-ports $DNS_REDIRECT_PORT - $ip6t_n -A OUTPUT $(comment "PSW_DNS") -p tcp -o lo --dport 53 -j REDIRECT --to-ports $DNS_REDIRECT_PORT 2>/dev/null - } - fi - - [ -n "${LOCALHOST_TCP_PROXY_MODE}" -o -n "${LOCALHOST_UDP_PROXY_MODE}" ] && { - [ "$TCP_PROXY_DROP_PORTS" != "disable" ] && { - add_port_rules "$ipt_m -A PSW_OUTPUT -p tcp" $TCP_PROXY_DROP_PORTS "-d $FAKE_IP -j DROP" - [ "${USE_PROXY_LIST}" = "1" ] && add_port_rules "$ipt_m -A PSW_OUTPUT -p tcp" $TCP_PROXY_DROP_PORTS "$(dst $IPSET_BLACK) -j DROP" - [ "${USE_GFW_LIST}" = "1" ] && add_port_rules "$ipt_m -A PSW_OUTPUT -p tcp" $TCP_PROXY_DROP_PORTS "$(dst $IPSET_GFW) -j DROP" - [ "${CHN_LIST}" != "0" ] && add_port_rules "$ipt_m -A PSW_OUTPUT -p tcp" $TCP_PROXY_DROP_PORTS "$(dst $IPSET_CHN) $(get_jump_ipt ${CHN_LIST} "-j DROP")" - [ "${USE_SHUNT_TCP}" = "1" ] && add_port_rules "$ipt_m -A PSW_OUTPUT -p tcp" $TCP_PROXY_DROP_PORTS "$(dst $IPSET_SHUNT) -j DROP" - [ "${LOCALHOST_TCP_PROXY_MODE}" != "disable" ] && add_port_rules "$ipt_m -A PSW_OUTPUT -p tcp" $TCP_PROXY_DROP_PORTS "-j DROP" - echolog " - ${msg}屏蔽代理 TCP 端口[${TCP_PROXY_DROP_PORTS}]" - } - - [ "$UDP_PROXY_DROP_PORTS" != "disable" ] && { - add_port_rules "$ipt_m -A PSW_OUTPUT -p udp" $UDP_PROXY_DROP_PORTS "-d $FAKE_IP -j DROP" - [ "${USE_PROXY_LIST}" = "1" ] && add_port_rules "$ipt_m -A PSW_OUTPUT -p udp" $UDP_PROXY_DROP_PORTS "$(dst $IPSET_BLACK) -j DROP" - [ "${USE_GFW_LIST}" = "1" ] && add_port_rules "$ipt_m -A PSW_OUTPUT -p udp" $UDP_PROXY_DROP_PORTS "$(dst $IPSET_GFW) -j DROP" - [ "${CHN_LIST}" != "0" ] && add_port_rules "$ipt_m -A PSW_OUTPUT -p udp" $UDP_PROXY_DROP_PORTS "$(dst $IPSET_CHN) $(get_jump_ipt ${CHN_LIST} "-j DROP")" - [ "${USE_SHUNT_UDP}" = "1" ] && add_port_rules "$ipt_m -A PSW_OUTPUT -p udp" $UDP_PROXY_DROP_PORTS "$(dst $IPSET_SHUNT) -j DROP" - [ "${LOCALHOST_UDP_PROXY_MODE}" != "disable" ] && add_port_rules "$ipt_m -A PSW_OUTPUT -p udp" $UDP_PROXY_DROP_PORTS "-j DROP" - echolog " - ${msg}屏蔽代理 UDP 端口[${UDP_PROXY_DROP_PORTS}]" - } - } - - # 加载路由器自身代理 TCP - if [ -n "$TCP_NODE" ]; then - _proxy_tcp_access() { - [ -n "${2}" ] || return 0 - if echo "${2}" | grep -q -v ':'; then - ipset -q test $IPSET_LAN ${2} - [ $? -eq 0 ] && { - echolog " - 上游 DNS 服务器 ${2} 已在直接访问的列表中,不强制向 TCP 代理转发对该服务器 TCP/${3} 端口的访问" - return 0 - } - if [ -z "${is_tproxy}" ]; then - $ipt_n -I PSW_OUTPUT -p tcp -d ${2} --dport ${3} $(REDIRECT $TCP_REDIR_PORT) - else - $ipt_m -I PSW_OUTPUT -p tcp -d ${2} --dport ${3} -j PSW_RULE - $ipt_m -I PSW $(comment "本机") -p tcp -i lo -d ${2} --dport ${3} $(REDIRECT $TCP_REDIR_PORT TPROXY) - fi - echolog " - [$?]将上游 DNS 服务器 ${2}:${3} 加入到路由器自身代理的 TCP 转发链" - else - ipset -q test $IPSET_LAN6 ${2} - [ $? -eq 0 ] && { - echolog " - 上游 DNS 服务器 ${2} 已在直接访问的列表中,不强制向 TCP 代理转发对该服务器 TCP/${3} 端口的访问" - return 0 - } - $ip6t_m -I PSW_OUTPUT -p tcp -d ${2} --dport ${3} -j PSW_RULE - $ip6t_m -I PSW $(comment "本机") -p tcp -i lo -d ${2} --dport ${3} $(REDIRECT $TCP_REDIR_PORT TPROXY) - echolog " - [$?]将上游 DNS 服务器 [${2}]:${3} 加入到路由器自身代理的 TCP 转发链,请确保您的节点支持IPv6,并开启IPv6透明代理!" - fi - } - [ -n "${TCP_PROXY_DNS}" ] && hosts_foreach REMOTE_DNS _proxy_tcp_access 53 - - [ "$accept_icmp" = "1" ] && { - $ipt_n -A OUTPUT -p icmp -j PSW_OUTPUT - $ipt_n -A PSW_OUTPUT -p icmp -d $FAKE_IP $(REDIRECT) - [ "${USE_PROXY_LIST}" = "1" ] && $ipt_n -A PSW_OUTPUT -p icmp $(dst $IPSET_BLACK) $(REDIRECT) - [ "${USE_GFW_LIST}" = "1" ] && $ipt_n -A PSW_OUTPUT -p icmp $(dst $IPSET_GFW) $(REDIRECT) - [ "${CHN_LIST}" != "0" ] && $ipt_n -A PSW_OUTPUT -p icmp $(dst $IPSET_CHN) $(get_jump_ipt ${CHN_LIST}) - [ "${USE_SHUNT_TCP}" = "1" ] && $ipt_n -A PSW_OUTPUT -p icmp $(dst $IPSET_SHUNT) $(REDIRECT) - [ -n "${LOCALHOST_TCP_PROXY_MODE}" ] && [ "${LOCALHOST_TCP_PROXY_MODE}" != "disable" ] && $ipt_n -A PSW_OUTPUT -p icmp $(REDIRECT) - } - - [ "$accept_icmpv6" = "1" ] && { - $ip6t_n -A OUTPUT -p ipv6-icmp -j PSW_OUTPUT - $ip6t_n -A PSW_OUTPUT -p ipv6-icmp -d $FAKE_IP_6 $(REDIRECT) - [ "${USE_PROXY_LIST}" = "1" ] && $ip6t_n -A PSW_OUTPUT -p ipv6-icmp $(dst $IPSET_BLACK6) $(REDIRECT) - [ "${USE_GFW_LIST}" = "1" ] && $ip6t_n -A PSW_OUTPUT -p ipv6-icmp $(dst $IPSET_GFW6) $(REDIRECT) - [ "${CHN_LIST}" != "0" ] && $ip6t_n -A PSW_OUTPUT -p ipv6-icmp $(dst $IPSET_CHN6) $(get_jump_ipt ${CHN_LIST}) - [ "${USE_SHUNT_TCP}" = "1" ] && $ip6t_n -A PSW_OUTPUT -p ipv6-icmp $(dst $IPSET_SHUNT6) $(REDIRECT) - [ -n "${LOCALHOST_TCP_PROXY_MODE}" ] && [ "${LOCALHOST_TCP_PROXY_MODE}" != "disable" ] && $ip6t_n -A PSW_OUTPUT -p ipv6-icmp $(REDIRECT) - } - - [ -n "${LOCALHOST_TCP_PROXY_MODE}" ] && { - $ipt_tmp -A PSW_OUTPUT -p tcp -d $FAKE_IP ${ipt_j} - [ "${USE_PROXY_LIST}" = "1" ] && add_port_rules "$ipt_tmp -A PSW_OUTPUT -p tcp" $TCP_REDIR_PORTS "$(dst $IPSET_BLACK) ${ipt_j}" - [ "${USE_GFW_LIST}" = "1" ] && add_port_rules "$ipt_tmp -A PSW_OUTPUT -p tcp" $TCP_REDIR_PORTS "$(dst $IPSET_GFW) ${ipt_j}" - [ "${CHN_LIST}" != "0" ] && add_port_rules "$ipt_tmp -A PSW_OUTPUT -p tcp" $TCP_REDIR_PORTS "$(dst $IPSET_CHN) $(get_jump_ipt ${CHN_LIST} "${ipt_j}")" - [ "${USE_SHUNT_TCP}" = "1" ] && add_port_rules "$ipt_tmp -A PSW_OUTPUT -p tcp" $TCP_REDIR_PORTS "$(dst $IPSET_SHUNT) ${ipt_j}" - [ "${LOCALHOST_TCP_PROXY_MODE}" != "disable" ] && add_port_rules "$ipt_tmp -A PSW_OUTPUT -p tcp" $TCP_REDIR_PORTS "${ipt_j}" - [ -n "${is_tproxy}" ] && $ipt_m -A PSW $(comment "本机") -p tcp -i lo $(REDIRECT $TCP_REDIR_PORT TPROXY) - } - [ -z "${is_tproxy}" ] && $ipt_n -A OUTPUT -p tcp -j PSW_OUTPUT - [ -n "${is_tproxy}" ] && { - $ipt_m -A PSW $(comment "本机") -p tcp -i lo -j RETURN - insert_rule_before "$ipt_m" "OUTPUT" "mwan3" "$(comment mangle-OUTPUT-PSW) -p tcp -j PSW_OUTPUT" - } - - [ "$PROXY_IPV6" == "1" ] && { - [ -n "${LOCALHOST_TCP_PROXY_MODE}" ] && { - $ip6t_m -A PSW_OUTPUT -p tcp -d $FAKE_IP_6 -j PSW_RULE - [ "${USE_PROXY_LIST}" = "1" ] && add_port_rules "$ip6t_m -A PSW_OUTPUT -p tcp" $TCP_REDIR_PORTS "$(dst $IPSET_BLACK6) -j PSW_RULE" - [ "${USE_GFW_LIST}" = "1" ] && add_port_rules "$ip6t_m -A PSW_OUTPUT -p tcp" $TCP_REDIR_PORTS "$(dst $IPSET_GFW6) -j PSW_RULE" - [ "${CHN_LIST}" != "0" ] && add_port_rules "$ip6t_m -A PSW_OUTPUT -p tcp" $TCP_REDIR_PORTS "$(dst $IPSET_CHN6) $(get_jump_ipt ${CHN_LIST} "-j PSW_RULE")" - [ "${USE_SHUNT_TCP}" = "1" ] && add_port_rules "$ip6t_m -A PSW_OUTPUT -p tcp" $TCP_REDIR_PORTS "$(dst $IPSET_SHUNT6) -j PSW_RULE" - [ "${LOCALHOST_TCP_PROXY_MODE}" != "disable" ] && add_port_rules "$ip6t_m -A PSW_OUTPUT -p tcp" $TCP_REDIR_PORTS "-j PSW_RULE" - $ip6t_m -A PSW $(comment "本机") -p tcp -i lo $(REDIRECT $TCP_REDIR_PORT TPROXY) - } - $ip6t_m -A PSW $(comment "本机") -p tcp -i lo -j RETURN - insert_rule_before "$ip6t_m" "OUTPUT" "mwan3" "$(comment mangle-OUTPUT-PSW) -p tcp -j PSW_OUTPUT" - } - fi - - # 加载路由器自身代理 UDP - if [ -n "$UDP_NODE" -o "$TCP_UDP" = "1" ]; then - _proxy_udp_access() { - [ -n "${2}" ] || return 0 - if echo "${2}" | grep -q -v ':'; then - ipset -q test $IPSET_LAN ${2} - [ $? == 0 ] && { - echolog " - 上游 DNS 服务器 ${2} 已在直接访问的列表中,不强制向 UDP 代理转发对该服务器 UDP/${3} 端口的访问" - return 0 - } - $ipt_m -I PSW_OUTPUT -p udp -d ${2} --dport ${3} -j PSW_RULE - $ipt_m -I PSW $(comment "本机") -p udp -i lo -d ${2} --dport ${3} $(REDIRECT $UDP_REDIR_PORT TPROXY) - echolog " - [$?]将上游 DNS 服务器 ${2}:${3} 加入到路由器自身代理的 UDP 转发链" - else - ipset -q test $IPSET_LAN6 ${2} - [ $? == 0 ] && { - echolog " - 上游 DNS 服务器 ${2} 已在直接访问的列表中,不强制向 UDP 代理转发对该服务器 UDP/${3} 端口的访问" - return 0 - } - $ip6t_m -I PSW_OUTPUT -p udp -d ${2} --dport ${3} -j PSW_RULE - $ip6t_m -I PSW $(comment "本机") -p udp -i lo -d ${2} --dport ${3} $(REDIRECT $UDP_REDIR_PORT TPROXY) - echolog " - [$?]将上游 DNS 服务器 [${2}]:${3} 加入到路由器自身代理的 UDP 转发链,请确保您的节点支持IPv6,并开启IPv6透明代理!" - fi - } - [ -n "${UDP_PROXY_DNS}" ] && hosts_foreach REMOTE_DNS _proxy_udp_access 53 - [ -n "${LOCALHOST_UDP_PROXY_MODE}" ] && { - $ipt_m -A PSW_OUTPUT -p udp -d $FAKE_IP -j PSW_RULE - [ "${USE_PROXY_LIST}" = "1" ] && add_port_rules "$ipt_m -A PSW_OUTPUT -p udp" $UDP_REDIR_PORTS "$(dst $IPSET_BLACK) -j PSW_RULE" - [ "${USE_GFW_LIST}" = "1" ] && add_port_rules "$ipt_m -A PSW_OUTPUT -p udp" $UDP_REDIR_PORTS "$(dst $IPSET_GFW) -j PSW_RULE" - [ "${CHN_LIST}" != "0" ] && add_port_rules "$ipt_m -A PSW_OUTPUT -p udp" $UDP_REDIR_PORTS "$(dst $IPSET_CHN) $(get_jump_ipt ${CHN_LIST} "-j PSW_RULE")" - [ "${USE_SHUNT_UDP}" = "1" ] && add_port_rules "$ipt_m -A PSW_OUTPUT -p udp" $UDP_REDIR_PORTS "$(dst $IPSET_SHUNT) -j PSW_RULE" - [ "${LOCALHOST_UDP_PROXY_MODE}" != "disable" ] && add_port_rules "$ipt_m -A PSW_OUTPUT -p udp" $UDP_REDIR_PORTS "-j PSW_RULE" - $ipt_m -A PSW $(comment "本机") -p udp -i lo $(REDIRECT $UDP_REDIR_PORT TPROXY) - } - $ipt_m -A PSW $(comment "本机") -p udp -i lo -j RETURN - insert_rule_before "$ipt_m" "OUTPUT" "mwan3" "$(comment mangle-OUTPUT-PSW) -p udp -j PSW_OUTPUT" - - [ "$PROXY_IPV6" == "1" ] && { - [ -n "$LOCALHOST_UDP_PROXY_MODE" ] && { - $ip6t_m -A PSW_OUTPUT -p udp -d $FAKE_IP_6 -j PSW_RULE - [ "${USE_PROXY_LIST}" = "1" ] && add_port_rules "$ip6t_m -A PSW_OUTPUT -p udp" $UDP_REDIR_PORTS "$(dst $IPSET_BLACK6) -j PSW_RULE" - [ "${USE_GFW_LIST}" = "1" ] && add_port_rules "$ip6t_m -A PSW_OUTPUT -p udp" $UDP_REDIR_PORTS "$(dst $IPSET_GFW6) -j PSW_RULE" - [ "${CHN_LIST}" != "0" ] && add_port_rules "$ip6t_m -A PSW_OUTPUT -p udp" $UDP_REDIR_PORTS "$(dst $IPSET_CHN6) $(get_jump_ipt ${CHN_LIST} "-j PSW_RULE")" - [ "${USE_SHUNT_UDP}" = "1" ] && add_port_rules "$ip6t_m -A PSW_OUTPUT -p udp" $UDP_REDIR_PORTS "$(dst $IPSET_SHUNT6) -j PSW_RULE" - [ "${LOCALHOST_UDP_PROXY_MODE}" != "disable" ] && add_port_rules "$ip6t_m -A PSW_OUTPUT -p udp" $UDP_REDIR_PORTS "-j PSW_RULE" - $ip6t_m -A PSW $(comment "本机") -p udp -i lo $(REDIRECT $UDP_REDIR_PORT TPROXY) - } - $ip6t_m -A PSW $(comment "本机") -p udp -i lo -j RETURN - insert_rule_before "$ip6t_m" "OUTPUT" "mwan3" "$(comment mangle-OUTPUT-PSW) -p udp -j PSW_OUTPUT" - } - fi - - $ipt_m -I OUTPUT $(comment "mangle-OUTPUT-PSW") -o lo -j RETURN - insert_rule_before "$ipt_m" "OUTPUT" "mwan3" "$(comment mangle-OUTPUT-PSW) -m mark --mark 1 -j RETURN" - - $ip6t_m -I OUTPUT $(comment "mangle-OUTPUT-PSW") -o lo -j RETURN - insert_rule_before "$ip6t_m" "OUTPUT" "mwan3" "$(comment mangle-OUTPUT-PSW) -m mark --mark 1 -j RETURN" - } - - # 加载ACLS - load_acl - - [ -d "${TMP_IFACE_PATH}" ] && { - for iface in $(ls ${TMP_IFACE_PATH}); do - $ipt_n -I PSW_OUTPUT -o $iface -j RETURN - $ipt_m -I PSW_OUTPUT -o $iface -j RETURN - done - } - - $ipt_n -I PREROUTING $(comment "PSW") -m mark --mark 1 -j RETURN - $ip6t_n -I PREROUTING $(comment "PSW") -m mark --mark 1 -j RETURN - - filter_direct_node_list > /dev/null 2>&1 & - - echolog "防火墙规则加载完成!" -} - -del_firewall_rule() { - for ipt in "$ipt_n" "$ipt_m" "$ip6t_n" "$ip6t_m"; do - for chain in "PREROUTING" "OUTPUT"; do - for i in $(seq 1 $($ipt -nL $chain | grep -c PSW)); do - local index=$($ipt --line-number -nL $chain | grep PSW | head -1 | awk '{print $1}') - $ipt -D $chain $index 2>/dev/null - done - done - for chain in "PSW" "PSW_OUTPUT" "PSW_DIVERT" "PSW_DNS" "PSW_RULE"; do - $ipt -F $chain 2>/dev/null - $ipt -X $chain 2>/dev/null - done - done - - ip rule del fwmark 1 lookup 100 2>/dev/null - ip route del local 0.0.0.0/0 dev lo table 100 2>/dev/null - - ip -6 rule del fwmark 1 table 100 2>/dev/null - ip -6 route del local ::/0 dev lo table 100 2>/dev/null - - destroy_ipset $IPSET_LOCAL - destroy_ipset $IPSET_WAN - destroy_ipset $IPSET_LAN - destroy_ipset $IPSET_VPS - #destroy_ipset $IPSET_SHUNT - #destroy_ipset $IPSET_GFW - #destroy_ipset $IPSET_CHN - #destroy_ipset $IPSET_BLACK - destroy_ipset $IPSET_BLOCK - destroy_ipset $IPSET_WHITE - - destroy_ipset $IPSET_LOCAL6 - destroy_ipset $IPSET_WAN6 - destroy_ipset $IPSET_LAN6 - destroy_ipset $IPSET_VPS6 - #destroy_ipset $IPSET_SHUNT6 - #destroy_ipset $IPSET_GFW6 - #destroy_ipset $IPSET_CHN6 - #destroy_ipset $IPSET_BLACK6 - destroy_ipset $IPSET_BLOCK6 - destroy_ipset $IPSET_WHITE6 - - echolog "删除 iptables 规则完成。" -} - -flush_ipset() { - echolog "清空 IPSet。" - for _name in $(ipset list | grep "Name: " | grep "passwall_" | awk '{print $2}'); do - destroy_ipset ${_name} - done -} - -flush_include() { - echo '#!/bin/sh' >$FWI -} - -gen_include() { - flush_include - extract_rules() { - local _ipt="${ipt}" - [ "$1" == "6" ] && _ipt="${ip6t}" - [ -z "${_ipt}" ] && return - - echo "*$2" - ${_ipt}-save -t $2 | grep "PSW" | grep -v "\-j PSW$" | grep -v "mangle\-OUTPUT\-PSW" | grep -v "socket \-j PSW_DIVERT$" | sed -e "s/^-A \(OUTPUT\|PREROUTING\)/-I \1 1/" - echo 'COMMIT' - } - local __ipt="" - [ -n "${ipt}" ] && { - __ipt=$(cat <<- EOF - mangle_output_psw=\$(${ipt}-save -t mangle | grep "PSW" | grep "mangle\-OUTPUT\-PSW" | sed "s#-A OUTPUT ##g") - $ipt-save -c | grep -v "PSW" | $ipt-restore -c - $ipt-restore -n <<-EOT - $(extract_rules 4 nat) - $(extract_rules 4 mangle) - EOT - - echo "\${mangle_output_psw}" | while read line; do - \$(${MY_PATH} insert_rule_before "$ipt_m" "OUTPUT" "mwan3" "\${line}") - done - - [ "$accept_icmp" = "1" ] && \$(${MY_PATH} insert_rule_after "$ipt_n" "PREROUTING" "prerouting_rule" "-p icmp -j PSW") - [ -z "${is_tproxy}" ] && \$(${MY_PATH} insert_rule_after "$ipt_n" "PREROUTING" "prerouting_rule" "-p tcp -j PSW") - - \$(${MY_PATH} insert_rule_before "$ipt_m" "PREROUTING" "mwan3" "-j PSW") - \$(${MY_PATH} insert_rule_before "$ipt_m" "PREROUTING" "PSW" "-p tcp -m socket -j PSW_DIVERT") - - WAN_IP=\$(${MY_PATH} get_wan_ips ip4) - [ ! -z "\${WAN_IP}" ] && { - ipset -F $IPSET_WAN - for wan_ip in \$WAN_IP; do - ipset -! add $IPSET_WAN \${wan_ip} - done - } - fi - EOF - ) - } - local __ip6t="" - [ -n "${ip6t}" ] && { - __ip6t=$(cat <<- EOF - mangle_output_psw=\$(${ip6t}-save -t mangle | grep "PSW" | grep "mangle\-OUTPUT\-PSW" | sed "s#-A OUTPUT ##g") - $ip6t-save -c | grep -v "PSW" | $ip6t-restore -c - $ip6t-restore -n <<-EOT - $(extract_rules 6 nat) - $(extract_rules 6 mangle) - EOT - - echo "\${mangle_output_psw}" | while read line; do - \$(${MY_PATH} insert_rule_before "$ip6t_m" "OUTPUT" "mwan3" "\${line}") - done - - [ "$accept_icmpv6" = "1" ] && $ip6t_n -A PREROUTING -p ipv6-icmp -j PSW - - \$(${MY_PATH} insert_rule_before "$ip6t_m" "PREROUTING" "mwan3" "-j PSW") - \$(${MY_PATH} insert_rule_before "$ip6t_m" "PREROUTING" "PSW" "-p tcp -m socket -j PSW_DIVERT") - - WAN6_IP=\$(${MY_PATH} get_wan_ips ip6) - [ ! -z "\${WAN6_IP}" ] && { - ipset -F $IPSET_WAN6 - for wan6_ip in \$WAN6_IP; do - ipset -! add $IPSET_WAN6 \${wan6_ip} - done - } - EOF - ) - } - cat <<-EOF >> $FWI - ${__ipt} - - ${__ip6t} - - return 0 - EOF - return 0 -} - -get_ipt_bin() { - echo $ipt -} - -get_ip6t_bin() { - echo $ip6t -} - -start() { - [ "$ENABLED_DEFAULT_ACL" == 0 -a "$ENABLED_ACLS" == 0 ] && return - add_firewall_rule - gen_include -} - -stop() { - [ -z "$(command -v echolog)" ] && . /usr/share/passwall/utils.sh - del_firewall_rule - [ $(config_t_get global flush_set_on_reboot "0") = "1" -o $(config_t_get global flush_set "0") = "1" ] && { - uci -q delete ${CONFIG}.@global[0].flush_set - uci -q commit ${CONFIG} - flush_ipset - rm -rf /tmp/etc/passwall_tmp/singbox* - rm -rf /tmp/etc/passwall_tmp/dnsmasq* - } - flush_include -} - -arg1=$1 -shift -case $arg1 in -RULE_LAST_INDEX) - RULE_LAST_INDEX "$@" - ;; -insert_rule_before) - insert_rule_before "$@" - ;; -insert_rule_after) - insert_rule_after "$@" - ;; -get_ipt_bin) - get_ipt_bin - ;; -get_ip6t_bin) - get_ip6t_bin - ;; -get_wan_ips) - get_wan_ips - ;; -filter_direct_node_list) - filter_direct_node_list - ;; -stop) - stop - ;; -start) - start - ;; -*) ;; -esac diff --git a/small/luci-app-passwall/root/usr/share/passwall/lease2hosts.sh b/small/luci-app-passwall/root/usr/share/passwall/lease2hosts.sh deleted file mode 100755 index d81de5076b..0000000000 --- a/small/luci-app-passwall/root/usr/share/passwall/lease2hosts.sh +++ /dev/null @@ -1,51 +0,0 @@ -#!/bin/sh - -# dhcp.leases to hosts - -. /usr/share/passwall/utils.sh -LOCK_FILE=${LOCK_PATH}/${CONFIG}_lease2hosts.lock -LEASE_FILE="/tmp/dhcp.leases" -HOSTS_FILE="$TMP_PATH2/dhcp-hosts" -TMP_FILE="/tmp/dhcp-hosts.tmp" - -exec 99>"$LOCK_FILE" -flock -n 99 -if [ "$?" != 0 ]; then - exit 0 -fi - -reload_dnsmasq_pids() { - local pidfile pid - find $TMP_PATH/acl -type f -name 'dnsmasq.pid' 2>/dev/null | while read pidfile; do - if [ -s "$pidfile" ]; then - read pid < "$pidfile" - if [ -n "$pid" ] && kill -0 "$pid" 2>/dev/null; then - kill -HUP "$pid" - fi - fi - done -} - -while true; do - - if [ -f "$LEASE_FILE" ]; then - awk 'NF >= 4 && $4 != "*" {print $3" "$4}' "$LEASE_FILE" | sort > "$TMP_FILE" - if [ -s "$TMP_FILE" ]; then - if [ ! -f "$HOSTS_FILE" ] || ! cmp -s "$TMP_FILE" "$HOSTS_FILE"; then - mv "$TMP_FILE" "$HOSTS_FILE" - reload_dnsmasq_pids - else - rm -f "$TMP_FILE" - fi - else - if [ -s "$HOSTS_FILE" ]; then - : > "$HOSTS_FILE" - reload_dnsmasq_pids - fi - rm -f "$TMP_FILE" - fi - fi - - sleep 60 - -done 2>/dev/null diff --git a/small/luci-app-passwall/root/usr/share/passwall/monitor.sh b/small/luci-app-passwall/root/usr/share/passwall/monitor.sh deleted file mode 100755 index 74a40b225a..0000000000 --- a/small/luci-app-passwall/root/usr/share/passwall/monitor.sh +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/sh - -. /usr/share/passwall/utils.sh -LOCK_FILE=${LOCK_PATH}/${CONFIG}_monitor.lock - -ENABLED=$(config_t_get global enabled 0) -[ "$ENABLED" != 1 ] && return 1 -ENABLED=$(config_t_get global_delay start_daemon 0) -[ "$ENABLED" != 1 ] && return 1 -sleep 58s -while [ "$ENABLED" -eq 1 ]; do - [ -f "$LOCK_FILE" ] && { - sleep 6s - continue - } - touch $LOCK_FILE - - for filename in $(ls ${TMP_SCRIPT_FUNC_PATH}); do - cmd=$(cat ${TMP_SCRIPT_FUNC_PATH}/${filename}) - cmd_check=$(echo $cmd | awk -F '>' '{print $1}') - [ -n "$(echo $cmd_check | grep "dns2socks")" ] && cmd_check=$(echo $cmd_check | sed "s#:# #g") - icount=$(pgrep -f "$(echo $cmd_check)" | wc -l) - if [ $icount = 0 ]; then - #echo "${cmd} 进程挂掉,重启" >> /tmp/log/passwall.log - eval $(echo "nohup ${cmd} 2>&1 &") >/dev/null 2>&1 & - fi - done - - rm -f $LOCK_FILE - sleep 58s -done diff --git a/small/luci-app-passwall/root/usr/share/passwall/nftables.sh b/small/luci-app-passwall/root/usr/share/passwall/nftables.sh deleted file mode 100755 index 9f367d1c90..0000000000 --- a/small/luci-app-passwall/root/usr/share/passwall/nftables.sh +++ /dev/null @@ -1,1521 +0,0 @@ -#!/bin/sh - -DIR="$(cd "$(dirname "$0")" && pwd)" -MY_PATH=$DIR/nftables.sh -NFTABLE_NAME="inet passwall" -NFTSET_LOCAL="passwall_local" -NFTSET_WAN="passwall_wan" -NFTSET_LAN="passwall_lan" -NFTSET_VPS="passwall_vps" -NFTSET_SHUNT="passwall_shunt" -NFTSET_GFW="passwall_gfw" -NFTSET_CHN="passwall_chn" -NFTSET_BLACK="passwall_black" -NFTSET_WHITE="passwall_white" -NFTSET_BLOCK="passwall_block" - -NFTSET_LOCAL6="passwall_local6" -NFTSET_WAN6="passwall_wan6" -NFTSET_LAN6="passwall_lan6" -NFTSET_VPS6="passwall_vps6" -NFTSET_SHUNT6="passwall_shunt6" -NFTSET_GFW6="passwall_gfw6" -NFTSET_CHN6="passwall_chn6" -NFTSET_BLACK6="passwall_black6" -NFTSET_WHITE6="passwall_white6" -NFTSET_BLOCK6="passwall_block6" - -FORCE_INDEX=0 - -USE_SHUNT_TCP=0 -USE_SHUNT_UDP=0 - -. /lib/functions/network.sh - -FWI=$(uci -q get firewall.passwall.path 2>/dev/null) -FAKE_IP="198.18.0.0/15" -FAKE_IP_6="fc00::/18" - -factor() { - local ports="$1" - if [ -z "$1" ] || [ -z "$2" ] || [ "$ports" = "1:65535" ]; then - echo "" - # acl mac address - elif echo "$1" | grep -qE '([A-Fa-f0-9]{2}:){5}[A-Fa-f0-9]{2}'; then - echo "$2 {$1}" - else - ports=$(echo "$ports" | tr -d ' ' | sed 's/:/-/g' | tr ',' '\n' | awk '!a[$0]++' | grep -v '^$') - [ -z "$ports" ] && { echo ""; return; } - if echo "$ports" | grep -q '^1-65535$'; then - echo "" - return - fi - local port - local port_list="" - for port in $ports; do - port_list="${port_list},$port" - done - port_list="${port_list#,}" - echo "$2 {$port_list}" - fi -} - -insert_rule_before() { - [ $# -ge 4 ] || { - return 1 - } - local table_name="${1}"; shift - local chain_name="${1}"; shift - local keyword="${1}"; shift - local rule="${1}"; shift - local default_index="${1}"; shift - default_index=${default_index:-0} - local _index=$(nft -a list chain $table_name $chain_name 2>/dev/null | grep "$keyword" | awk -F '# handle ' '{print$2}' | head -n 1 | awk '{print $1}') - if [ -z "${_index}" ] && [ "${default_index}" = "0" ]; then - nft "add rule $table_name $chain_name $rule" - else - if [ -z "${_index}" ]; then - _index=${default_index} - fi - nft "insert rule $table_name $chain_name position $_index $rule" - fi -} - -insert_rule_after() { - [ $# -ge 4 ] || { - return 1 - } - local table_name="${1}"; shift - local chain_name="${1}"; shift - local keyword="${1}"; shift - local rule="${1}"; shift - local default_index="${1}"; shift - default_index=${default_index:-0} - local _index=$(nft -a list chain $table_name $chain_name 2>/dev/null | grep "$keyword" | awk -F '# handle ' '{print$2}' | head -n 1 | awk '{print $1}') - if [ -z "${_index}" ] && [ "${default_index}" = "0" ]; then - nft "add rule $table_name $chain_name $rule" - else - if [ -n "${_index}" ]; then - _index=$((_index + 1)) - else - _index=${default_index} - fi - nft "insert rule $table_name $chain_name position $_index $rule" - fi -} - -RULE_LAST_INDEX() { - [ $# -ge 3 ] || { - echolog "索引列举方式不正确(nftables),终止执行!" - return 1 - } - local table_name="${1}"; shift - local chain_name="${1}"; shift - local keyword="${1}"; shift - local default="${1:-0}"; shift - local _index=$(nft -a list chain $table_name $chain_name 2>/dev/null | grep "$keyword" | awk -F '# handle ' '{print$2}' | head -n 1 | awk '{print $1}') - echo "${_index:-${default}}" -} - -REDIRECT() { - local s="counter redirect" - [ -n "$1" ] && { - local s="$s to :$1" - [ "$2" == "MARK" ] && s="counter meta mark set $1" - [ "$2" == "TPROXY" ] && { - s="counter meta mark 1 tproxy to :$1" - } - [ "$2" == "TPROXY4" ] && { - s="counter meta mark 1 tproxy ip to :$1" - } - [ "$2" == "TPROXY6" ] && { - s="counter meta mark 1 tproxy ip6 to :$1" - } - - } - echo $s -} - -destroy_nftset() { - for i in "$@"; do - nft flush set $NFTABLE_NAME $i 2>/dev/null - nft delete set $NFTABLE_NAME $i 2>/dev/null - done -} - -gen_nft_tables() { - if ! nft list table "$NFTABLE_NAME" >/dev/null 2>&1; then - nft -f - <<-EOF - table $NFTABLE_NAME { - chain dstnat { - type nat hook prerouting priority dstnat - 1; policy accept; - } - chain mangle_prerouting { - type filter hook prerouting priority mangle - 1; policy accept; - } - chain mangle_output { - type route hook output priority mangle - 1; policy accept; - } - chain nat_output { - type nat hook output priority -1; policy accept; - } - } - EOF - fi -} - -insert_nftset() { - local nftset_name="${1}"; shift - local timeout_argument="${1}"; shift - local default_timeout="365d" - local suffix="" - - if [ -n "$nftset_name" ] && { [ $# -gt 0 ] || [ ! -t 0 ]; }; then - case "$timeout_argument" in - "-1") suffix="" ;; - "0") suffix=" timeout $default_timeout" ;; - *) suffix=" timeout $timeout_argument" ;; - esac - { - if [ $# -gt 0 ]; then - echo "add element $NFTABLE_NAME $nftset_name { " - printf "%s\n" "$@" | awk -v s="$suffix" '{if (NR > 1) printf ",\n";printf "%s%s", $0, s}' - echo " }" - else - local first_line - if IFS= read -r first_line; then - echo "add element $NFTABLE_NAME $nftset_name { " - { echo "$first_line"; cat; } | awk -v s="$suffix" '{if (NR > 1) printf ",\n";printf "%s%s", $0, s}' - echo " }" - fi - fi - } | nft -f - - fi -} - -gen_nftset() { - local nftset_name="${1}"; shift - local ip_type="${1}"; shift - # 0 - don't set defalut timeout - local timeout_argument_set="${1}"; shift - # 0 - don't let element timeout(365 days) when set's timeout parameters be seted - # -1 - follow the set's timeout parameters - local timeout_argument_element="${1}"; shift - local gc_interval_time="1h" - - if ! nft list set $NFTABLE_NAME $nftset_name >/dev/null 2>&1; then - if [ "$timeout_argument_set" == "0" ]; then - nft "add set $NFTABLE_NAME $nftset_name { type $ip_type; flags interval, timeout; auto-merge; }" - else - nft "add set $NFTABLE_NAME $nftset_name { type $ip_type; flags interval, timeout; timeout $timeout_argument_set; gc-interval $gc_interval_time; auto-merge; }" - fi - fi - [ $# -gt 0 ] || [ ! -t 0 ] && insert_nftset "$nftset_name" "$timeout_argument_element" "$@" -} - -get_jump_ipt() { - case "$1" in - direct) - echo "mark != 1 counter return" - ;; - proxy) - if [ -n "$2" ] && [ -n "$(echo $2 | grep "^counter")" ]; then - echo "$2" - else - echo "$(REDIRECT $2 $3)" - fi - ;; - esac -} - -gen_lanlist() { - cat $RULES_PATH/lanlist_ipv4 | tr -s '\n' | grep -v "^#" -} - -gen_lanlist_6() { - cat $RULES_PATH/lanlist_ipv6 | tr -s '\n' | grep -v "^#" -} - -get_wan_ips() { - local family="$1" - local NET_ADDR - local iface - local INTERFACES=$(ubus call network.interface dump | jsonfilter -e '@.interface[@.route[0]].interface') - for iface in $INTERFACES; do - local addr - if [ "$family" = "ip6" ]; then - network_get_ipaddr6 addr "$iface" - case "$addr" in - ""|fe80*) continue ;; - esac - else - network_get_ipaddr addr "$iface" - case "$addr" in - ""|"0.0.0.0") continue ;; - esac - fi - - case " $NET_ADDR " in - *" $addr "*) ;; - *) NET_ADDR="${NET_ADDR:+$NET_ADDR }$addr" ;; - esac - done - echo "$NET_ADDR" -} - -load_acl() { - ([ "$ENABLED_ACLS" == 1 ] || ([ "$ENABLED_DEFAULT_ACL" == 1 ] && [ "$CLIENT_PROXY" == 1 ])) && echolog " - 访问控制:" - [ "$ENABLED_ACLS" == 1 ] && { - acl_app - for sid in $(ls -F ${TMP_ACL_PATH} | grep '/$' | awk -F '/' '{print $1}' | grep -v 'default'); do - eval $(uci -q show "${CONFIG}.${sid}" | cut -d'.' -sf 3-) - - tcp_no_redir_ports=${tcp_no_redir_ports:-default} - udp_no_redir_ports=${udp_no_redir_ports:-default} - use_global_config=${use_global_config:-0} - tcp_proxy_drop_ports=${tcp_proxy_drop_ports:-default} - udp_proxy_drop_ports=${udp_proxy_drop_ports:-default} - tcp_redir_ports=${tcp_redir_ports:-default} - udp_redir_ports=${udp_redir_ports:-default} - use_direct_list=${use_direct_list:-1} - use_proxy_list=${use_proxy_list:-1} - use_block_list=${use_block_list:-1} - use_gfw_list=${use_gfw_list:-1} - chn_list=${chn_list:-direct} - tcp_proxy_mode=${tcp_proxy_mode:-proxy} - udp_proxy_mode=${udp_proxy_mode:-proxy} - [ "$tcp_no_redir_ports" = "default" ] && tcp_no_redir_ports=$TCP_NO_REDIR_PORTS - [ "$udp_no_redir_ports" = "default" ] && udp_no_redir_ports=$UDP_NO_REDIR_PORTS - [ "$tcp_proxy_drop_ports" = "default" ] && tcp_proxy_drop_ports=$TCP_PROXY_DROP_PORTS - [ "$udp_proxy_drop_ports" = "default" ] && udp_proxy_drop_ports=$UDP_PROXY_DROP_PORTS - [ "$tcp_redir_ports" = "default" ] && tcp_redir_ports=$TCP_REDIR_PORTS - [ "$udp_redir_ports" = "default" ] && udp_redir_ports=$UDP_REDIR_PORTS - - [ -n "$(get_cache_var "ACL_${sid}_tcp_node")" ] && tcp_node=$(get_cache_var "ACL_${sid}_tcp_node") - [ -n "$(get_cache_var "ACL_${sid}_tcp_redir_port")" ] && tcp_port=$(get_cache_var "ACL_${sid}_tcp_redir_port") - [ -n "$(get_cache_var "ACL_${sid}_udp_node")" ] && udp_node=$(get_cache_var "ACL_${sid}_udp_node") - [ -n "$(get_cache_var "ACL_${sid}_udp_redir_port")" ] && udp_port=$(get_cache_var "ACL_${sid}_udp_redir_port") - [ -n "$(get_cache_var "ACL_${sid}_dns_port")" ] && dns_redirect_port=$(get_cache_var "ACL_${sid}_dns_port") - [ -n "$tcp_node" ] && { - if is_socks_wrap "$tcp_node"; then - tcp_node_remark="Socks 配置($(config_n_get ${tcp_node#Socks_} port) 端口)" - else - tcp_node_remark=$(config_n_get $tcp_node remarks) - fi - } - [ -n "$udp_node" ] && { - if is_socks_wrap "$udp_node"; then - udp_node_remark="Socks 配置($(config_n_get ${udp_node#Socks_} port) 端口)" - else - udp_node_remark=$(config_n_get $udp_node remarks) - fi - } - use_shunt_tcp=0 - use_shunt_udp=0 - [ -n "$tcp_node" ] && [ "$(config_n_get $tcp_node protocol)" = "_shunt" ] && use_shunt_tcp=1 - [ -n "$udp_node" ] && [ "$(config_n_get $udp_node protocol)" = "_shunt" ] && use_shunt_udp=1 - - [ "${use_global_config}" = "1" ] && { - if is_socks_wrap "$TCP_NODE"; then - tcp_node_remark="Socks 配置($(config_n_get ${TCP_NODE#Socks_} port) 端口)" - else - tcp_node_remark=$(config_n_get $TCP_NODE remarks) - fi - if is_socks_wrap "$UDP_NODE"; then - udp_node_remark="Socks 配置($(config_n_get ${UDP_NODE#Socks_} port) 端口)" - else - udp_node_remark=$(config_n_get $UDP_NODE remarks) - fi - use_direct_list=${USE_DIRECT_LIST} - use_proxy_list=${USE_PROXY_LIST} - use_block_list=${USE_BLOCK_LIST} - use_gfw_list=${USE_GFW_LIST} - chn_list=${CHN_LIST} - tcp_proxy_mode=${TCP_PROXY_MODE} - udp_proxy_mode=${UDP_PROXY_MODE} - use_shunt_tcp=${USE_SHUNT_TCP} - use_shunt_udp=${USE_SHUNT_UDP} - dns_redirect_port=${DNS_REDIRECT_PORT} - black_set_name=${NFTSET_BLACK} - black6_set_name=${NFTSET_BLACK6} - gfw_set_name=${NFTSET_GFW} - gfw6_set_name=${NFTSET_GFW6} - shunt_set_name=${NFTSET_SHUNT} - shunt6_set_name=${NFTSET_SHUNT6} - } - - _acl_list=${TMP_ACL_PATH}/${sid}/source_list - - for i in $(cat $_acl_list); do - local _ipt_source _ipv4 - local msg - if [ -n "${interface}" ]; then - . /lib/functions/network.sh - local gateway device - network_get_gateway gateway "${interface}" - network_get_device device "${interface}" - [ -z "${device}" ] && device="${interface}" - _ipt_source="iifname ${device} " - msg="源接口【${device}】," - else - msg="源接口【所有】," - fi - if [ -n "$(echo ${i} | grep '^iprange:')" ]; then - _iprange=$(echo ${i} | sed 's#iprange:##g') - _ipt_source=$(factor ${_iprange} "${_ipt_source}ip saddr") - msg="${msg}IP range【${_iprange}】," - _ipv4="1" - unset _iprange - elif [ -n "$(echo ${i} | grep '^ipset:')" ]; then - _ipset=$(echo ${i} | sed 's#ipset:##g') - _ipt_source="${_ipt_source}ip saddr @${_ipset}" - msg="${msg}NFTset【${_ipset}】," - unset _ipset - elif [ -n "$(echo ${i} | grep '^ip:')" ]; then - _ip=$(echo ${i} | sed 's#ip:##g') - _ipt_source=$(factor ${_ip} "${_ipt_source}ip saddr") - msg="${msg}IP【${_ip}】," - _ipv4="1" - unset _ip - elif [ -n "$(echo ${i} | grep '^mac:')" ]; then - _mac=$(echo ${i} | sed 's#mac:##g') - _ipt_source=$(factor ${_mac} "${_ipt_source}ether saddr") - msg="${msg}MAC【${_mac}】," - unset _mac - elif [ -n "$(echo ${i} | grep '^any')" ]; then - msg="${msg}所有设备," - else - continue - fi - msg="【$remarks】,${msg}" - - [ "$tcp_no_redir_ports" != "disable" ] && { - if ! has_1_65535 "$tcp_no_redir_ports"; then - nft "add rule $NFTABLE_NAME $nft_prerouting_chain ${_ipt_source} ip protocol tcp $(factor $tcp_no_redir_ports "tcp dport") counter return comment \"$remarks\"" - [ "$_ipv4" != "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 ${_ipt_source} meta l4proto tcp $(factor $tcp_no_redir_ports "tcp dport") counter return comment \"$remarks\"" - echolog " - ${msg}不代理 TCP 端口[${tcp_no_redir_ports}]" - else - #结束时会return,无需加多余的规则。 - unset tcp_port - echolog " - ${msg}不代理所有 TCP 端口" - fi - } - - [ "$udp_no_redir_ports" != "disable" ] && { - if ! has_1_65535 "$udp_no_redir_ports"; then - nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp ${_ipt_source} $(factor $udp_no_redir_ports "udp dport") counter return comment \"$remarks\"" - [ "$_ipv4" != "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp ${_ipt_source} $(factor $udp_no_redir_ports "udp dport") counter return comment \"$remarks\"" 2>/dev/null - echolog " - ${msg}不代理 UDP 端口[${udp_no_redir_ports}]" - else - #结束时会return,无需加多余的规则。 - unset udp_port - echolog " - ${msg}不代理所有 UDP 端口" - fi - } - - local dns_redirect - [ $(config_t_get global dns_redirect "1") = "1" ] && dns_redirect=53 - if ([ -n "$tcp_port" ] && [ -n "${tcp_proxy_mode}" ]) || ([ -n "$udp_port" ] && [ -n "${udp_proxy_mode}" ]); then - [ "${use_proxy_list}" = "1" ] && { - [ "${use_global_config}" = "0" ] && { - black_set_name="passwall_${sid}_black" - black6_set_name="passwall_${sid}_black6" - gen_nftset $black_set_name ipv4_addr "2d" 0 - gen_nftset $black6_set_name ipv6_addr "2d" 0 - } - } - [ "${use_gfw_list}" = "1" ] && { - [ "${use_global_config}" = "0" ] && { - gfw_set_name="passwall_${sid}_gfw" - gfw6_set_name="passwall_${sid}_gfw6" - gen_nftset $gfw_set_name ipv4_addr "2d" 0 - gen_nftset $gfw6_set_name ipv6_addr "2d" 0 - } - } - [ "${use_shunt_tcp}" = "1" -o "${use_shunt_udp}" = "1" ] && { - [ "${use_global_config}" = "0" ] && { - shunt_set_name="passwall_${sid}_shunt" - shunt6_set_name="passwall_${sid}_shunt6" - gen_nftset $shunt_set_name ipv4_addr "2d" 0 - gen_nftset $shunt6_set_name ipv6_addr "2d" 0 - } - } - [ -n "${dns_redirect_port}" ] && dns_redirect=${dns_redirect_port} - else - [ -n "${DIRECT_DNSMASQ_PORT}" ] && dns_redirect=${DIRECT_DNSMASQ_PORT} - fi - if [ -n "${dns_redirect}" ]; then - nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp ${_ipt_source} udp dport 53 counter return comment \"$remarks\"" - [ "$_ipv4" != "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp ${_ipt_source} udp dport 53 counter return comment \"$remarks\"" - nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol tcp ${_ipt_source} tcp dport 53 counter return comment \"$remarks\"" - [ "$_ipv4" != "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp ${_ipt_source} tcp dport 53 counter return comment \"$remarks\"" - #nft "add rule $NFTABLE_NAME PSW_DNS ip protocol udp ${_ipt_source} udp dport 53 counter redirect to :${dns_redirect} comment \"$remarks\"" - #nft "add rule $NFTABLE_NAME PSW_DNS ip protocol tcp ${_ipt_source} tcp dport 53 counter redirect to :${dns_redirect} comment \"$remarks\"" - nft "add rule $NFTABLE_NAME PSW_DNS meta l4proto udp ${_ipt_source} udp dport 53 counter redirect to :${dns_redirect} comment \"$remarks\"" - nft "add rule $NFTABLE_NAME PSW_DNS meta l4proto tcp ${_ipt_source} tcp dport 53 counter redirect to :${dns_redirect} comment \"$remarks\"" - [ -z "$(get_cache_var "ACL_${sid}_tcp_default")" ] && echolog " - ${msg}使用与全局配置不相同节点,已将DNS强制重定向到专用 DNS 服务器。" - fi - - [ -n "$tcp_port" -o -n "$udp_port" ] && { - [ "${use_block_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ${_ipt_source} ip daddr @$NFTSET_BLOCK counter drop comment \"$remarks\"" - [ "${use_block_list}" = "1" ] && [ -z "${is_tproxy}" ] && nft "add rule $NFTABLE_NAME PSW_NAT ${_ipt_source} ip daddr @$NFTSET_BLOCK counter drop comment \"$remarks\"" - [ "${use_direct_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ${_ipt_source} ip daddr @$NFTSET_WHITE counter return comment \"$remarks\"" - [ "${use_direct_list}" = "1" ] && [ -z "${is_tproxy}" ] && nft "add rule $NFTABLE_NAME PSW_NAT ${_ipt_source} ip daddr @$NFTSET_WHITE counter return comment \"$remarks\"" - [ "$PROXY_IPV6" == "1" ] && [ "$_ipv4" != "1" ] && { - [ "${use_block_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 ${_ipt_source} ip6 daddr @$NFTSET_BLOCK6 counter drop comment \"$remarks\"" - [ "${use_direct_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 ${_ipt_source} ip6 daddr @$NFTSET_WHITE6 counter return comment \"$remarks\"" - } - - [ "$tcp_proxy_drop_ports" != "disable" ] && { - [ "$PROXY_IPV6" == "1" ] && [ "$_ipv4" != "1" ] && { - nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "tcp dport") ip6 daddr $FAKE_IP_6 counter drop comment \"$remarks\"" 2>/dev/null - [ "${use_proxy_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "tcp dport") ip6 daddr @$black6_set_name counter drop comment \"$remarks\"" 2>/dev/null - [ "${use_gfw_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "tcp dport") ip6 daddr @$gfw6_set_name counter drop comment \"$remarks\"" 2>/dev/null - [ "${chn_list}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "tcp dport") ip6 daddr @$NFTSET_CHN6 $(get_jump_ipt ${chn_list} "counter drop") comment \"$remarks\"" 2>/dev/null - [ "${use_shunt_tcp}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "tcp dport") ip6 daddr @$shunt6_set_name counter drop comment \"$remarks\"" 2>/dev/null - [ "${tcp_proxy_mode}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "tcp dport") counter drop comment \"$remarks\"" 2>/dev/null - } - nft "add rule $NFTABLE_NAME $nft_prerouting_chain ip protocol tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "tcp dport") ip daddr $FAKE_IP counter drop comment \"$remarks\"" - [ "${use_proxy_list}" = "1" ] && nft "add rule $NFTABLE_NAME $nft_prerouting_chain ip protocol tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "tcp dport") ip daddr @$black_set_name counter drop comment \"$remarks\"" - [ "${use_gfw_list}" = "1" ] && nft "add rule $NFTABLE_NAME $nft_prerouting_chain ip protocol tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "tcp dport") ip daddr @$gfw_set_name counter drop comment \"$remarks\"" - [ "${chn_list}" != "0" ] && nft "add rule $NFTABLE_NAME $nft_prerouting_chain ip protocol tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "tcp dport") ip daddr @$NFTSET_CHN $(get_jump_ipt ${chn_list} "counter drop") comment \"$remarks\"" - [ "${use_shunt_tcp}" = "1" ] && nft "add rule $NFTABLE_NAME $nft_prerouting_chain ip protocol tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "tcp dport") ip daddr @$shunt_set_name counter drop comment \"$remarks\"" - [ "${tcp_proxy_mode}" != "disable" ] && nft "add rule $NFTABLE_NAME $nft_prerouting_chain ip protocol tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "tcp dport") counter drop comment \"$remarks\"" - echolog " - ${msg}屏蔽代理 TCP 端口[${tcp_proxy_drop_ports}]" - } - - [ "$udp_proxy_drop_ports" != "disable" ] && { - [ "$PROXY_IPV6" == "1" ] && [ "$_ipv4" != "1" ] && { - nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp ${_ipt_source} $(factor $udp_proxy_drop_ports "udp dport") ip6 daddr $FAKE_IP_6 counter drop comment \"$remarks\"" 2>/dev/null - [ "${use_proxy_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp ${_ipt_source} $(factor $udp_proxy_drop_ports "udp dport") ip6 daddr @$black6_set_name counter drop comment \"$remarks\"" 2>/dev/null - [ "${use_gfw_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp ${_ipt_source} $(factor $udp_proxy_drop_ports "udp dport") ip6 daddr @$gfw6_set_name counter drop comment \"$remarks\"" 2>/dev/null - [ "${chn_list}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp ${_ipt_source} $(factor $udp_proxy_drop_ports "udp dport") ip6 daddr @$NFTSET_CHN6 $(get_jump_ipt ${chn_list} "counter drop") comment \"$remarks\"" 2>/dev/null - [ "${use_shunt_udp}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp ${_ipt_source} $(factor $udp_proxy_drop_ports "udp dport") ip6 daddr @$shunt6_set_name counter drop comment \"$remarks\"" 2>/dev/null - [ "${udp_proxy_mode}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp ${_ipt_source} $(factor $udp_proxy_drop_ports "udp dport") counter drop comment \"$remarks\"" 2>/dev/null - } - nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp ${_ipt_source} $(factor $udp_proxy_drop_ports "udp dport") ip daddr $FAKE_IP counter drop comment \"$remarks\"" 2>/dev/null - [ "${use_proxy_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp ${_ipt_source} $(factor $udp_proxy_drop_ports "udp dport") ip daddr @$black_set_name counter drop comment \"$remarks\"" 2>/dev/null - [ "${use_gfw_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp ${_ipt_source} $(factor $udp_proxy_drop_ports "udp dport") ip daddr @$gfw_set_name counter drop comment \"$remarks\"" 2>/dev/null - [ "${chn_list}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp ${_ipt_source} $(factor $udp_proxy_drop_ports "udp dport") ip daddr @$NFTSET_CHN $(get_jump_ipt ${chn_list} "counter drop") comment \"$remarks\"" 2>/dev/null - [ "${use_shunt_udp}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp ${_ipt_source} $(factor $udp_proxy_drop_ports "udp dport") ip daddr @$shunt_set_name counter drop comment \"$remarks\"" 2>/dev/null - [ "${udp_proxy_mode}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp ${_ipt_source} $(factor $udp_proxy_drop_ports "udp dport") counter drop comment \"$remarks\"" 2>/dev/null - echolog " - ${msg}屏蔽代理 UDP 端口[${udp_proxy_drop_ports}]" - } - } - - [ -n "$tcp_port" ] && { - if [ -n "${tcp_proxy_mode}" ]; then - msg2="${msg}使用 TCP 节点[$tcp_node_remark]" - if [ -n "${is_tproxy}" ]; then - msg2="${msg2}(TPROXY:${tcp_port})" - nft_chain="PSW_MANGLE" - nft_j="counter jump PSW_RULE" - else - msg2="${msg2}(REDIRECT:${tcp_port})" - nft_chain="PSW_NAT" - nft_j="$(REDIRECT $tcp_port)" - fi - - [ "$accept_icmp" = "1" ] && { - [ "${use_direct_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip protocol icmp ${_ipt_source} ip daddr @$NFTSET_WHITE counter return comment \"$remarks\"" - nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip protocol icmp ${_ipt_source} ip daddr $FAKE_IP $(REDIRECT) comment \"$remarks\"" - [ "${use_proxy_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip protocol icmp ${_ipt_source} ip daddr @$black_set_name $(REDIRECT) comment \"$remarks\"" - [ "${use_gfw_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip protocol icmp ${_ipt_source} ip daddr @$gfw_set_name $(REDIRECT) comment \"$remarks\"" - [ "${chn_list}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip protocol icmp ${_ipt_source} ip daddr @$NFTSET_CHN $(get_jump_ipt ${chn_list}) comment \"$remarks\"" - [ "${use_shunt_tcp}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip protocol icmp ${_ipt_source} ip daddr @$shunt_set_name $(REDIRECT) comment \"$remarks\"" - [ "${tcp_proxy_mode}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip protocol icmp ${_ipt_source} $(REDIRECT) comment \"$remarks\"" - nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip protocol icmp ${_ipt_source} return comment \"$remarks\"" - } - - [ "$accept_icmpv6" = "1" ] && [ "$PROXY_IPV6" == "1" ] && [ "$_ipv4" != "1" ] && { - [ "${use_direct_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT meta l4proto icmpv6 ${_ipt_source} ip6 daddr @$NFTSET_WHITE6 counter return comment \"$remarks\"" 2>/dev/null - nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT meta l4proto icmpv6 ${_ipt_source} ip6 daddr $FAKE_IP_6 $(REDIRECT) comment \"$remarks\"" 2>/dev/null - [ "${use_proxy_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT meta l4proto icmpv6 ${_ipt_source} ip6 daddr @$black6_set_name $(REDIRECT) comment \"$remarks\"" 2>/dev/null - [ "${use_gfw_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT meta l4proto icmpv6 ${_ipt_source} ip6 daddr @$gfw6_set_name $(REDIRECT) comment \"$remarks\"" 2>/dev/null - [ "${chn_list}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT meta l4proto icmpv6 ${_ipt_source} ip6 daddr @$NFTSET_CHN6 $(get_jump_ipt ${chn_list}) comment \"$remarks\"" 2>/dev/null - [ "${use_shunt_tcp}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT meta l4proto icmpv6 ${_ipt_source} ip6 daddr @$shunt6_set_name $(REDIRECT) comment \"$remarks\"" 2>/dev/null - [ "${tcp_proxy_mode}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT meta l4proto icmpv6 ${_ipt_source} $(REDIRECT) comment \"$remarks\"" 2>/dev/null - nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT meta l4proto icmpv6 ${_ipt_source} return comment \"$remarks\"" 2>/dev/null - } - - nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp ${_ipt_source} ip daddr $FAKE_IP ${nft_j} comment \"$remarks\"" - [ "${use_proxy_list}" = "1" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp ${_ipt_source} $(factor $tcp_redir_ports "tcp dport") ip daddr @$black_set_name ${nft_j} comment \"$remarks\" " - [ "${use_gfw_list}" = "1" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp ${_ipt_source} $(factor $tcp_redir_ports "tcp dport") ip daddr @$gfw_set_name ${nft_j} comment \"$remarks\" " - [ "${chn_list}" != "0" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp ${_ipt_source} $(factor $tcp_redir_ports "tcp dport") ip daddr @$NFTSET_CHN $(get_jump_ipt ${chn_list} "${nft_j}") comment \"$remarks\" " - [ "${use_shunt_tcp}" = "1" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp ${_ipt_source} $(factor $tcp_redir_ports "tcp dport") ip daddr @$shunt_set_name ${nft_j} comment \"$remarks\"" - [ "${tcp_proxy_mode}" != "disable" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp ${_ipt_source} $(factor $tcp_redir_ports "tcp dport") ${nft_j} comment \"$remarks\"" - [ -n "${is_tproxy}" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp ${_ipt_source} $(REDIRECT $tcp_port TPROXY4) comment \"$remarks\"" - - [ "$PROXY_IPV6" == "1" ] && [ "$_ipv4" != "1" ] && { - nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp ${_ipt_source} ip6 daddr $FAKE_IP_6 counter jump PSW_RULE comment \"$remarks\"" - [ "${use_proxy_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp ${_ipt_source} $(factor $tcp_redir_ports "tcp dport") ip6 daddr @$black6_set_name counter jump PSW_RULE comment \"$remarks\"" 2>/dev/null - [ "${use_gfw_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp ${_ipt_source} $(factor $tcp_redir_ports "tcp dport") ip6 daddr @$gfw6_set_name counter jump PSW_RULE comment \"$remarks\"" 2>/dev/null - [ "${chn_list}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp ${_ipt_source} $(factor $tcp_redir_ports "tcp dport") ip6 daddr @$NFTSET_CHN6 $(get_jump_ipt ${chn_list} "counter jump PSW_RULE") comment \"$remarks\" " - [ "${use_shunt_tcp}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp ${_ipt_source} $(factor $tcp_redir_ports "tcp dport") ip6 daddr @$shunt6_set_name counter jump PSW_RULE comment \"$remarks\"" 2>/dev/null - [ "${tcp_proxy_mode}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp ${_ipt_source} $(factor $tcp_redir_ports "tcp dport") counter jump PSW_RULE comment \"$remarks\"" 2>/dev/null - nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp ${_ipt_source} $(REDIRECT $tcp_port TPROXY) comment \"$remarks\"" 2>/dev/null - } - else - msg2="${msg}不代理 TCP" - fi - echolog " - ${msg2}" - } - - nft "add rule $NFTABLE_NAME $nft_prerouting_chain ip protocol tcp ${_ipt_source} counter return comment \"$remarks\"" - [ "$_ipv4" != "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp ${_ipt_source} counter return comment \"$remarks\"" 2>/dev/null - - [ -n "$udp_port" ] && { - if [ -n "${udp_proxy_mode}" ]; then - msg2="${msg}使用 UDP 节点[$udp_node_remark]" - msg2="${msg2}(TPROXY:${udp_port})" - - nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp ${_ipt_source} ip daddr $FAKE_IP counter jump PSW_RULE comment \"$remarks\"" - [ "${use_proxy_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp ${_ipt_source} $(factor $udp_redir_ports "udp dport") ip daddr @$black_set_name counter jump PSW_RULE comment \"$remarks\"" - [ "${use_gfw_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp ${_ipt_source} $(factor $udp_redir_ports "udp dport") ip daddr @$gfw_set_name counter jump PSW_RULE comment \"$remarks\"" - [ "${chn_list}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp ${_ipt_source} $(factor $udp_redir_ports "udp dport") ip daddr @$NFTSET_CHN $(get_jump_ipt ${chn_list} "counter jump PSW_RULE") comment \"$remarks\"" - [ "${use_shunt_udp}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp ${_ipt_source} $(factor $udp_redir_ports "udp dport") ip daddr @$shunt_set_name counter jump PSW_RULE comment \"$remarks\"" - [ "${udp_proxy_mode}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp ${_ipt_source} $(factor $udp_redir_ports "udp dport") counter jump PSW_RULE comment \"$remarks\"" - nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp ${_ipt_source} $(REDIRECT $udp_port TPROXY4) comment \"$remarks\"" - - [ "$PROXY_IPV6" == "1" ] && [ "$_ipv4" != "1" ] && { - nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp ${_ipt_source} ip6 daddr $FAKE_IP_6 counter jump PSW_RULE comment \"$remarks\"" - [ "${use_proxy_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp ${_ipt_source} $(factor $udp_redir_ports "udp dport") ip6 daddr @$black6_set_name counter jump PSW_RULE comment \"$remarks\"" 2>/dev/null - [ "${use_gfw_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp ${_ipt_source} $(factor $udp_redir_ports "udp dport") ip6 daddr @$gfw6_set_name counter jump PSW_RULE comment \"$remarks\"" 2>/dev/null - [ "${chn_list}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp ${_ipt_source} $(factor $udp_redir_ports "udp dport") ip6 daddr @$NFTSET_CHN6 $(get_jump_ipt ${chn_list} "counter jump PSW_RULE") comment \"$remarks\"" 2>/dev/null - [ "${use_shunt_udp}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp ${_ipt_source} $(factor $udp_redir_ports "udp dport") ip6 daddr @$shunt6_set_name counter jump PSW_RULE comment \"$remarks\"" 2>/dev/null - [ "${udp_proxy_mode}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp ${_ipt_source} $(factor $udp_redir_ports "udp dport") counter jump PSW_RULE comment \"$remarks\"" 2>/dev/null - nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp ${_ipt_source} $(REDIRECT $udp_port TPROXY) comment \"$remarks\"" 2>/dev/null - } - else - msg2="${msg}不代理 UDP" - fi - echolog " - ${msg2}" - } - nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp ${_ipt_source} counter return comment \"$remarks\"" - [ "$_ipv4" != "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp ${_ipt_source} counter return comment \"$remarks\"" 2>/dev/null - unset nft_chain nft_j _ipt_source msg msg2 _ipv4 - done - unset enabled sid remarks sources use_global_config use_direct_list use_proxy_list use_block_list use_gfw_list chn_list tcp_proxy_mode udp_proxy_mode dns_redirect_port tcp_no_redir_ports udp_no_redir_ports tcp_proxy_drop_ports udp_proxy_drop_ports tcp_redir_ports udp_redir_ports tcp_node udp_node interface - unset tcp_port udp_port tcp_node_remark udp_node_remark _acl_list use_shunt_tcp use_shunt_udp dns_redirect - done - } - - [ "$ENABLED_DEFAULT_ACL" == 1 ] && [ "$CLIENT_PROXY" == 1 ] && { - msg="【默认】," - [ "$TCP_NO_REDIR_PORTS" != "disable" ] && { - nft "add rule $NFTABLE_NAME $nft_prerouting_chain ip protocol tcp $(factor $TCP_NO_REDIR_PORTS "tcp dport") counter return comment \"默认\"" - nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp $(factor $TCP_NO_REDIR_PORTS "tcp dport") counter return comment \"默认\"" - if ! has_1_65535 "$TCP_NO_REDIR_PORTS"; then - echolog " - ${msg}不代理 TCP 端口[${TCP_NO_REDIR_PORTS}]" - else - unset TCP_PROXY_MODE - echolog " - ${msg}不代理所有 TCP 端口" - fi - } - - [ "$UDP_NO_REDIR_PORTS" != "disable" ] && { - nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp $(factor $UDP_NO_REDIR_PORTS "udp dport") counter return comment \"默认\"" - nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 counter meta l4proto udp $(factor $UDP_NO_REDIR_PORTS "udp dport") counter return comment \"默认\"" - if ! has_1_65535 "$UDP_NO_REDIR_PORTS"; then - echolog " - ${msg}不代理 UDP 端口[${UDP_NO_REDIR_PORTS}]" - else - unset UDP_PROXY_MODE - echolog " - ${msg}不代理所有 UDP 端口" - fi - } - - local DNS_REDIRECT - [ $(config_t_get global dns_redirect "1") = "1" ] && DNS_REDIRECT=53 - if ([ -n "$TCP_NODE" ] && [ -n "${TCP_PROXY_MODE}" ]) || ([ -n "$UDP_NODE" ] && [ -n "${UDP_PROXY_MODE}" ]); then - [ -n "${DNS_REDIRECT_PORT}" ] && DNS_REDIRECT=${DNS_REDIRECT_PORT} - else - [ -n "${DIRECT_DNSMASQ_PORT}" ] && DNS_REDIRECT=${DIRECT_DNSMASQ_PORT} - fi - - if [ -n "${DNS_REDIRECT}" ]; then - nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp udp dport 53 counter return comment \"默认\"" - nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp udp dport 53 counter return comment \"默认\"" - nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol tcp tcp dport 53 counter return comment \"默认\"" - nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp tcp dport 53 counter return comment \"默认\"" - nft "add rule $NFTABLE_NAME PSW_DNS ip protocol udp udp dport 53 counter redirect to :${DNS_REDIRECT} comment \"默认\"" - nft "add rule $NFTABLE_NAME PSW_DNS ip protocol tcp tcp dport 53 counter redirect to :${DNS_REDIRECT} comment \"默认\"" - nft "add rule $NFTABLE_NAME PSW_DNS meta l4proto udp udp dport 53 counter redirect to :${DNS_REDIRECT} comment \"默认\"" - nft "add rule $NFTABLE_NAME PSW_DNS meta l4proto tcp tcp dport 53 counter redirect to :${DNS_REDIRECT} comment \"默认\"" - fi - - [ -n "${TCP_PROXY_MODE}" -o -n "${UDP_PROXY_MODE}" ] && { - [ "${USE_BLOCK_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip daddr @$NFTSET_BLOCK counter drop comment \"默认\"" - [ "${USE_BLOCK_LIST}" = "1" ] && [ -z "${is_tproxy}" ] && nft "add rule $NFTABLE_NAME PSW_NAT ip daddr @$NFTSET_BLOCK counter drop comment \"默认\"" - [ "${USE_DIRECT_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip daddr @$NFTSET_WHITE counter return comment \"默认\"" - [ "${USE_DIRECT_LIST}" = "1" ] && [ -z "${is_tproxy}" ] && nft "add rule $NFTABLE_NAME PSW_NAT ip daddr @$NFTSET_WHITE counter return comment \"默认\"" - [ "$PROXY_IPV6" == "1" ] && { - [ "${USE_BLOCK_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 ip6 daddr @$NFTSET_BLOCK6 counter drop comment \"默认\"" - [ "${USE_DIRECT_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 ip6 daddr @$NFTSET_WHITE6 counter return comment \"默认\"" - } - - [ "$TCP_PROXY_DROP_PORTS" != "disable" ] && { - [ "$PROXY_IPV6" == "1" ] && { - nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp $(factor $TCP_PROXY_DROP_PORTS "tcp dport") ip6 daddr $FAKE_IP_6 counter drop comment \"默认\"" - [ "${USE_PROXY_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp $(factor $TCP_PROXY_DROP_PORTS "tcp dport") ip6 daddr @$NFTSET_BLACK6 counter drop comment \"默认\"" - [ "${USE_GFW_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp $(factor $TCP_PROXY_DROP_PORTS "tcp dport") ip6 daddr @$NFTSET_GFW6 counter drop comment \"默认\"" - [ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp $(factor $TCP_PROXY_DROP_PORTS "tcp dport") ip6 daddr @$NFTSET_CHN6 $(get_jump_ipt ${CHN_LIST} "counter drop") comment \"默认\"" - [ "${USE_SHUNT_TCP}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp $(factor $TCP_PROXY_DROP_PORTS "tcp dport") ip6 daddr @$NFTSET_SHUNT6 counter drop comment \"默认\"" - [ "${TCP_PROXY_MODE}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp $(factor $TCP_PROXY_DROP_PORTS "tcp dport") counter drop comment \"默认\"" - } - - nft "add rule $NFTABLE_NAME $nft_prerouting_chain ip protocol tcp $(factor $TCP_PROXY_DROP_PORTS "tcp dport") ip daddr $FAKE_IP counter drop comment \"默认\"" - [ "${USE_PROXY_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME $nft_prerouting_chain ip protocol tcp $(factor $TCP_PROXY_DROP_PORTS "tcp dport") ip daddr @$NFTSET_BLACK counter drop comment \"默认\"" - [ "${USE_GFW_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME $nft_prerouting_chain ip protocol tcp $(factor $TCP_PROXY_DROP_PORTS "tcp dport") ip daddr @$NFTSET_GFW counter drop comment \"默认\"" - [ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME $nft_prerouting_chain ip protocol tcp $(factor $TCP_PROXY_DROP_PORTS "tcp dport") ip daddr @$NFTSET_CHN $(get_jump_ipt ${CHN_LIST} "counter drop") comment \"默认\"" - [ "${USE_SHUNT_TCP}" = "1" ] && nft "add rule $NFTABLE_NAME $nft_prerouting_chain ip protocol tcp $(factor $TCP_PROXY_DROP_PORTS "tcp dport") ip daddr @$NFTSET_SHUNT counter drop comment \"默认\"" - [ "${TCP_PROXY_MODE}" != "disable" ] && nft "add rule $NFTABLE_NAME $nft_prerouting_chain ip protocol tcp $(factor $TCP_PROXY_DROP_PORTS "tcp dport") counter drop comment \"默认\"" - echolog " - ${msg}屏蔽代理 TCP 端口[${TCP_PROXY_DROP_PORTS}]" - } - - [ "$UDP_PROXY_DROP_PORTS" != "disable" ] && { - [ "$PROXY_IPV6" == "1" ] && { - nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp $(factor $UDP_PROXY_DROP_PORTS "udp dport") ip6 daddr $FAKE_IP_6 counter drop comment \"默认\"" - [ "${USE_PROXY_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp $(factor $UDP_PROXY_DROP_PORTS "udp dport") ip6 daddr @$NFTSET_BLACK6 counter drop comment \"默认\"" - [ "${USE_GFW_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp $(factor $UDP_PROXY_DROP_PORTS "udp dport") ip6 daddr @$NFTSET_GFW6 counter drop comment \"默认\"" - [ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp $(factor $UDP_PROXY_DROP_PORTS "udp dport") ip6 daddr @$NFTSET_CHN6 $(get_jump_ipt ${CHN_LIST} "counter drop") comment \"默认\"" - [ "${USE_SHUNT_UDP}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp $(factor $UDP_PROXY_DROP_PORTS "udp dport") ip6 daddr @$NFTSET_SHUNT6 counter drop comment \"默认\"" - [ "${UDP_PROXY_MODE}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp $(factor $UDP_PROXY_DROP_PORTS "udp dport") counter drop comment \"默认\"" - } - nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp $(factor $UDP_PROXY_DROP_PORTS "udp dport") ip daddr $FAKE_IP counter drop comment \"默认\"" - [ "${USE_PROXY_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp $(factor $UDP_PROXY_DROP_PORTS "udp dport") ip daddr @$NFTSET_BLACK counter drop comment \"默认\"" - [ "${USE_GFW_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp $(factor $UDP_PROXY_DROP_PORTS "udp dport") ip daddr @$NFTSET_GFW counter drop comment \"默认\"" - [ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp $(factor $UDP_PROXY_DROP_PORTS "udp dport") ip daddr @$NFTSET_CHN $(get_jump_ipt ${CHN_LIST} "counter drop") comment \"默认\"" - [ "${USE_SHUNT_UDP}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp $(factor $UDP_PROXY_DROP_PORTS "udp dport") ip daddr @$NFTSET_SHUNT counter drop comment \"默认\"" - [ "${UDP_PROXY_MODE}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp $(factor $UDP_PROXY_DROP_PORTS "udp dport") counter drop comment \"默认\"" - echolog " - ${msg}屏蔽代理 UDP 端口[${UDP_PROXY_DROP_PORTS}]" - } - } - - # 加载TCP默认代理模式 - if [ -n "${TCP_PROXY_MODE}" ]; then - [ -n "$TCP_NODE" ] && { - if is_socks_wrap "$TCP_NODE"; then - msg2="${msg}使用 TCP 节点[Socks 配置($(config_n_get ${TCP_NODE#Socks_} port) 端口)]" - else - msg2="${msg}使用 TCP 节点[$(config_n_get $TCP_NODE remarks)]" - fi - if [ -n "${is_tproxy}" ]; then - msg2="${msg2}(TPROXY:${TCP_REDIR_PORT})" - nft_chain="PSW_MANGLE" - nft_j="counter jump PSW_RULE" - else - msg2="${msg2}(REDIRECT:${TCP_REDIR_PORT})" - nft_chain="PSW_NAT" - nft_j="$(REDIRECT $TCP_REDIR_PORT)" - fi - - [ "$accept_icmp" = "1" ] && { - [ "${USE_DIRECT_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip daddr @$NFTSET_WHITE counter return comment \"默认\"" - nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip protocol icmp ip daddr $FAKE_IP $(REDIRECT) comment \"默认\"" - [ "${USE_PROXY_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip protocol icmp ip daddr @$NFTSET_BLACK $(REDIRECT) comment \"默认\"" - [ "${USE_GFW_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip protocol icmp ip daddr @$NFTSET_GFW $(REDIRECT) comment \"默认\"" - [ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip protocol icmp ip daddr @$NFTSET_CHN $(get_jump_ipt ${CHN_LIST}) comment \"默认\"" - [ "${USE_SHUNT_TCP}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip protocol icmp ip daddr @$NFTSET_SHUNT $(REDIRECT) comment \"默认\"" - [ "${TCP_PROXY_MODE}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip protocol icmp $(REDIRECT) comment \"默认\"" - nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip protocol icmp return comment \"默认\"" - } - - [ "$accept_icmpv6" = "1" ] && [ "$PROXY_IPV6" == "1" ] && { - [ "${USE_DIRECT_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip6 daddr @$NFTSET_WHITE6 counter return comment \"默认\"" - nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT meta l4proto icmpv6 ip6 daddr $FAKE_IP_6 $(REDIRECT) comment \"默认\"" - [ "${USE_PROXY_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT meta l4proto icmpv6 ip6 daddr @$NFTSET_BLACK6 $(REDIRECT) comment \"默认\"" - [ "${USE_GFW_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT meta l4proto icmpv6 ip6 daddr @$NFTSET_GFW6 $(REDIRECT) comment \"默认\"" - [ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT meta l4proto icmpv6 ip6 daddr @$NFTSET_CHN6 $(get_jump_ipt ${CHN_LIST}) comment \"默认\"" - [ "${USE_SHUNT_TCP}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT meta l4proto icmpv6 ip6 daddr @$NFTSET_SHUNT6 $(REDIRECT) comment \"默认\"" - [ "${TCP_PROXY_MODE}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT meta l4proto icmpv6 $(REDIRECT) comment \"默认\"" - nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT meta l4proto icmpv6 return comment \"默认\"" - } - - nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp ip daddr $FAKE_IP ${nft_j} comment \"默认\"" - [ "${USE_PROXY_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp $(factor $TCP_REDIR_PORTS "tcp dport") ip daddr @$NFTSET_BLACK ${nft_j} comment \"默认\"" - [ "${USE_GFW_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp $(factor $TCP_REDIR_PORTS "tcp dport") ip daddr @$NFTSET_GFW ${nft_j} comment \"默认\"" - [ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp $(factor $TCP_REDIR_PORTS "tcp dport") ip daddr @$NFTSET_CHN $(get_jump_ipt ${CHN_LIST} "${nft_j}") comment \"默认\"" - [ "${USE_SHUNT_TCP}" = "1" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp $(factor $TCP_REDIR_PORTS "tcp dport") ip daddr @$NFTSET_SHUNT ${nft_j} comment \"默认\"" - [ "${TCP_PROXY_MODE}" != "disable" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp $(factor $TCP_REDIR_PORTS "tcp dport") ${nft_j} comment \"默认\"" - [ -n "${is_tproxy}" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp $(REDIRECT $TCP_REDIR_PORT TPROXY4) comment \"默认\"" - nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp counter return comment \"默认\"" - - [ "$PROXY_IPV6" == "1" ] && { - nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp ip6 daddr $FAKE_IP_6 counter jump PSW_RULE comment \"默认\"" - [ "${USE_PROXY_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp $(factor $TCP_REDIR_PORTS "tcp dport") ip6 daddr @$NFTSET_BLACK6 counter jump PSW_RULE comment \"默认\"" - [ "${USE_GFW_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp $(factor $TCP_REDIR_PORTS "tcp dport") ip6 daddr @$NFTSET_GFW6 counter jump PSW_RULE comment \"默认\"" - [ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp $(factor $TCP_REDIR_PORTS "tcp dport") ip6 daddr @$NFTSET_CHN6 $(get_jump_ipt ${CHN_LIST} "counter jump PSW_RULE") comment \"默认\"" - [ "${USE_SHUNT_TCP}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp $(factor $TCP_REDIR_PORTS "tcp dport") ip6 daddr @$NFTSET_SHUNT6 counter jump PSW_RULE comment \"默认\"" - [ "${TCP_PROXY_MODE}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp $(factor $TCP_REDIR_PORTS "tcp dport") counter jump PSW_RULE comment \"默认\"" - nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp $(REDIRECT $TCP_REDIR_PORT TPROXY) comment \"默认\"" - nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp counter return comment \"默认\"" - } - - echolog " - ${msg2}" - } - fi - - # 加载UDP默认代理模式 - if [ -n "${UDP_PROXY_MODE}" ]; then - [ -n "$UDP_NODE" -o "$TCP_UDP" = "1" ] && { - if is_socks_wrap "$UDP_NODE"; then - msg2="${msg}使用 UDP 节点[Socks 配置($(config_n_get ${UDP_NODE#Socks_} port) 端口)](TPROXY:${UDP_REDIR_PORT})" - else - msg2="${msg}使用 UDP 节点[$(config_n_get $UDP_NODE remarks)](TPROXY:${UDP_REDIR_PORT})" - fi - - nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp ip daddr $FAKE_IP counter jump PSW_RULE comment \"默认\"" - [ "${USE_PROXY_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp $(factor $UDP_REDIR_PORTS "udp dport") ip daddr @$NFTSET_BLACK counter jump PSW_RULE comment \"默认\"" - [ "${USE_GFW_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp $(factor $UDP_REDIR_PORTS "udp dport") ip daddr @$NFTSET_GFW counter jump PSW_RULE comment \"默认\"" - [ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp $(factor $UDP_REDIR_PORTS "udp dport") ip daddr @$NFTSET_CHN $(get_jump_ipt ${CHN_LIST} "counter jump PSW_RULE") comment \"默认\"" - [ "${USE_SHUNT_UDP}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp $(factor $UDP_REDIR_PORTS "udp dport") ip daddr @$NFTSET_SHUNT counter jump PSW_RULE comment \"默认\"" - [ "${UDP_PROXY_MODE}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp $(factor $UDP_REDIR_PORTS "udp dport") counter jump PSW_RULE comment \"默认\"" - nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp $(REDIRECT $UDP_REDIR_PORT TPROXY4) comment \"默认\"" - nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp counter return comment \"默认\"" - - [ "$PROXY_IPV6" == "1" ] && { - nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp ip6 daddr $FAKE_IP_6 counter jump PSW_RULE comment \"默认\"" - [ "${USE_PROXY_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp $(factor $UDP_REDIR_PORTS "udp dport") ip6 daddr @$NFTSET_BLACK6 counter jump PSW_RULE comment \"默认\"" - [ "${USE_GFW_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp $(factor $UDP_REDIR_PORTS "udp dport") ip6 daddr @$NFTSET_GFW6 counter jump PSW_RULE comment \"默认\"" - [ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp $(factor $UDP_REDIR_PORTS "udp dport") ip6 daddr @$NFTSET_CHN6 $(get_jump_ipt ${CHN_LIST} "counter jump PSW_RULE") comment \"默认\"" - [ "${USE_SHUNT_UDP}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp $(factor $UDP_REDIR_PORTS "udp dport") ip6 daddr @$NFTSET_SHUNT6 counter jump PSW_RULE comment \"默认\"" - [ "${UDP_PROXY_MODE}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp $(factor $UDP_REDIR_PORTS "udp dport") counter jump PSW_RULE comment \"默认\"" - nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp $(REDIRECT $UDP_REDIR_PORT TPROXY) comment \"默认\"" - nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp counter return comment \"默认\"" - } - - echolog " - ${msg2}" - } - fi - } -} - -filter_haproxy() { - for item in ${haproxy_items}; do - local ip=$(get_host_ip ipv4 $(echo $item | awk -F ":" '{print $1}') 1) - insert_nftset $NFTSET_VPS "-1" $ip - done - echolog " - [$?]加入负载均衡的节点到nftset[$NFTSET_VPS]直连完成" -} - -filter_vps_addr() { - for server_host in $@; do - local vps_ip4=$(get_host_ip "ipv4" ${server_host}) - local vps_ip6=$(get_host_ip "ipv6" ${server_host}) - [ -n "$vps_ip4" ] && insert_nftset $NFTSET_VPS "-1" $vps_ip4 - [ -n "$vps_ip6" ] && insert_nftset $NFTSET_VPS6 "-1" $vps_ip6 - done -} - -filter_vpsip() { - uci show $CONFIG | grep -E "(.address=|.download_address=)" | cut -d "'" -f 2 | grep -E "([0-9]{1,3}[\.]){3}[0-9]{1,3}" | grep -v "^127\.0\.0\.1$" | sed -e "/^$/d" | insert_nftset $NFTSET_VPS "-1" - echolog " - [$?]加入所有IPv4节点到nftset[$NFTSET_VPS]直连完成" - uci show $CONFIG | grep -E "(.address=|.download_address=)" | cut -d "'" -f 2 | grep -E "([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}" | sed -e "/^$/d" | insert_nftset $NFTSET_VPS6 "-1" - echolog " - [$?]加入所有IPv6节点到nftset[$NFTSET_VPS6]直连完成" -} - -filter_server_port() { - local address=${1} - local port=${2} - local stream=${3} - stream=$(echo ${3} | tr 'A-Z' 'a-z') - local _is_tproxy - _is_tproxy=${is_tproxy} - [ "$stream" == "udp" ] && _is_tproxy="TPROXY" - - for _ipt in 4 6; do - [ "$_ipt" == "4" ] && _ip_type=ip - [ "$_ipt" == "6" ] && _ip_type=ip6 - nft "list chain $NFTABLE_NAME $nft_output_chain" 2>/dev/null | grep -q "${address}:${port}" - if [ $? -ne 0 ]; then - nft "insert rule $NFTABLE_NAME $nft_output_chain meta l4proto $stream $_ip_type daddr $address $stream dport $port return comment \"${address}:${port}\"" 2>/dev/null - fi - done -} - -filter_node() { - local node=${1} - local stream=${2} - if [ -n "$node" ]; then - local address=$(config_n_get $node address) - local port=$(config_n_get $node port) - [ -z "$address" ] && [ -z "$port" ] && { - return 1 - } - filter_server_port $address $port $stream - filter_server_port $address $port $stream - fi -} - -filter_direct_node_list() { - [ ! -s "$TMP_PATH/direct_node_list" ] && return - for _node_id in $(cat $TMP_PATH/direct_node_list | awk '!seen[$0]++'); do - filter_node "$_node_id" TCP - filter_node "$_node_id" UDP - unset _node_id - done -} - -add_firewall_rule() { - echolog "开始加载 nftables 防火墙规则..." - gen_nft_tables - gen_nftset $NFTSET_WAN ipv4_addr 0 "-1" - gen_nftset $NFTSET_VPS ipv4_addr 0 "-1" - gen_nftset $NFTSET_GFW ipv4_addr "2d" 0 - gen_nftset $NFTSET_LOCAL ipv4_addr 0 "-1" - gen_nftset $NFTSET_LAN ipv4_addr 0 "-1" $(gen_lanlist) - if [ -f $RULES_PATH/chnroute.nft ] && [ -s $RULES_PATH/chnroute.nft ] && [ $(awk 'END{print NR}' $RULES_PATH/chnroute.nft) -ge 8 ]; then - #echolog "使用缓存加载chnroute..." - nft -f $RULES_PATH/chnroute.nft - else - cat $RULES_PATH/chnroute | tr -s '\n' | grep -v "^#" | gen_nftset $NFTSET_CHN ipv4_addr "2d" 0 - fi - gen_nftset $NFTSET_BLACK ipv4_addr "2d" 0 - gen_nftset $NFTSET_WHITE ipv4_addr "2d" 0 - gen_nftset $NFTSET_BLOCK ipv4_addr "2d" 0 - gen_nftset $NFTSET_SHUNT ipv4_addr "2d" 0 - - gen_nftset $NFTSET_WAN6 ipv6_addr 0 "-1" - gen_nftset $NFTSET_VPS6 ipv6_addr 0 "-1" - gen_nftset $NFTSET_GFW6 ipv6_addr "2d" 0 - gen_nftset $NFTSET_LOCAL6 ipv6_addr 0 "-1" - gen_nftset $NFTSET_LAN6 ipv6_addr 0 "-1" $(gen_lanlist_6) - if [ -f $RULES_PATH/chnroute6.nft ] && [ -s $RULES_PATH/chnroute6.nft ] && [ $(awk 'END{print NR}' $RULES_PATH/chnroute6.nft) -ge 8 ]; then - #echolog "使用缓存加载chnroute6..." - nft -f $RULES_PATH/chnroute6.nft - else - cat $RULES_PATH/chnroute6 | tr -s '\n' | grep -v "^#" | gen_nftset $NFTSET_CHN6 ipv6_addr "2d" 0 - fi - gen_nftset $NFTSET_BLACK6 ipv6_addr "2d" 0 - gen_nftset $NFTSET_WHITE6 ipv6_addr "2d" 0 - gen_nftset $NFTSET_BLOCK6 ipv6_addr "2d" 0 - gen_nftset $NFTSET_SHUNT6 ipv6_addr "2d" 0 - - #导入规则列表、分流规则中的IP列表 - local USE_SHUNT_NODE=0 - local USE_PROXY_LIST_ALL=${USE_PROXY_LIST} - local USE_DIRECT_LIST_ALL=${USE_DIRECT_LIST} - local USE_BLOCK_LIST_ALL=${USE_BLOCK_LIST} - local _TCP_NODE=$(config_t_get global tcp_node) - local _UDP_NODE=$(config_t_get global udp_node) - local USE_GEOVIEW=$(config_t_get global_rules enable_geoview) - - [ -n "$_TCP_NODE" ] && [ "$(config_n_get $_TCP_NODE protocol)" = "_shunt" ] && USE_SHUNT_TCP=1 && USE_SHUNT_NODE=1 - [ -n "$_UDP_NODE" ] && [ "$(config_n_get $_UDP_NODE protocol)" = "_shunt" ] && USE_SHUNT_UDP=1 && USE_SHUNT_NODE=1 - [ "$_UDP_NODE" = "tcp" ] && USE_SHUNT_UDP=$USE_SHUNT_TCP - - for acl_section in $(uci show ${CONFIG} | grep "=acl_rule" | cut -d '.' -sf 2 | cut -d '=' -sf 1); do - [ "$(config_n_get $acl_section enabled)" != "1" ] && continue - [ "$(config_n_get $acl_section use_global_config 0)" != "1" ] && { - [ "$(config_n_get $acl_section use_direct_list 1)" = "1" ] && USE_PROXY_LIST_ALL=1 - [ "$(config_n_get $acl_section use_proxy_list 1)" = "1" ] && USE_DIRECT_LIST_ALL=1 - [ "$(config_n_get $acl_section use_block_list 1)" = "1" ] && USE_BLOCK_LIST_ALL=1 - } - for _node in $(config_n_get $acl_section tcp_node) $(config_n_get $acl_section udp_node); do - local node_protocol=$(config_n_get $_node protocol) - [ "$node_protocol" = "_shunt" ] && { USE_SHUNT_NODE=1; break; } - done - done - - #直连列表 - [ "$USE_DIRECT_LIST_ALL" = "1" ] && { - insert_nftset $NFTSET_WHITE "0" $(cat $RULES_PATH/direct_ip | tr -s "\r\n" "\n" | sed -e "/^$/d" | grep -v "^#" | grep -E "(\.((2(5[0-5]|[0-4][0-9]))|[0-1]?[0-9]{1,2})){3}") - insert_nftset $NFTSET_WHITE6 "0" $(cat $RULES_PATH/direct_ip | tr -s "\r\n" "\n" | sed -e "/^$/d" | grep -v "^#" | grep -E "([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}") - [ "$USE_GEOVIEW" = "1" ] && { - local GEOIP_CODE=$(cat $RULES_PATH/direct_ip | tr -s "\r\n" "\n" | sed -e "/^$/d" | grep -E "^geoip:" | grep -v "^geoip:private" | sed -E 's/^geoip:(.*)/\1/' | sed ':a;N;$!ba;s/\n/,/g') - if [ -n "$GEOIP_CODE" ] && type geoview &> /dev/null; then - get_geoip $GEOIP_CODE ipv4 | grep -E "(\.((2(5[0-5]|[0-4][0-9]))|[0-1]?[0-9]{1,2})){3}" | insert_nftset $NFTSET_WHITE "0" - get_geoip $GEOIP_CODE ipv6 | grep -E "([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}" | insert_nftset $NFTSET_WHITE6 "0" - echolog " - [$?]解析并加入[直连列表] GeoIP 到 NFTSET 完成" - fi - } - } - - #代理列表 - [ "$USE_PROXY_LIST_ALL" = "1" ] && { - insert_nftset $NFTSET_BLACK "0" $(cat $RULES_PATH/proxy_ip | tr -s "\r\n" "\n" | sed -e "/^$/d" | grep -v "^#" | grep -E "(\.((2(5[0-5]|[0-4][0-9]))|[0-1]?[0-9]{1,2})){3}") - insert_nftset $NFTSET_BLACK6 "0" $(cat $RULES_PATH/proxy_ip | tr -s "\r\n" "\n" | sed -e "/^$/d" | grep -v "^#" | grep -E "([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}") - [ "$USE_GEOVIEW" = "1" ] && { - local GEOIP_CODE=$(cat $RULES_PATH/proxy_ip | tr -s "\r\n" "\n" | sed -e "/^$/d" | grep -E "^geoip:" | grep -v "^geoip:private" | sed -E 's/^geoip:(.*)/\1/' | sed ':a;N;$!ba;s/\n/,/g') - if [ -n "$GEOIP_CODE" ] && type geoview &> /dev/null; then - get_geoip $GEOIP_CODE ipv4 | grep -E "(\.((2(5[0-5]|[0-4][0-9]))|[0-1]?[0-9]{1,2})){3}" | insert_nftset $NFTSET_BLACK "0" - get_geoip $GEOIP_CODE ipv6 | grep -E "([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}" | insert_nftset $NFTSET_BLACK6 "0" - echolog " - [$?]解析并加入[代理列表] GeoIP 到 NFTSET 完成" - fi - } - } - - #屏蔽列表 - [ "$USE_BLOCK_LIST_ALL" = "1" ] && { - insert_nftset $NFTSET_BLOCK "0" $(cat $RULES_PATH/block_ip | tr -s "\r\n" "\n" | sed -e "/^$/d" | grep -v "^#" | grep -E "(\.((2(5[0-5]|[0-4][0-9]))|[0-1]?[0-9]{1,2})){3}") - insert_nftset $NFTSET_BLOCK6 "0" $(cat $RULES_PATH/block_ip | tr -s "\r\n" "\n" | sed -e "/^$/d" | grep -v "^#" | grep -E "([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}") - [ "$USE_GEOVIEW" = "1" ] && { - local GEOIP_CODE=$(cat $RULES_PATH/block_ip | tr -s "\r\n" "\n" | sed -e "/^$/d" | grep -E "^geoip:" | grep -v "^geoip:private" | sed -E 's/^geoip:(.*)/\1/' | sed ':a;N;$!ba;s/\n/,/g') - if [ -n "$GEOIP_CODE" ] && type geoview &> /dev/null; then - get_geoip $GEOIP_CODE ipv4 | grep -E "(\.((2(5[0-5]|[0-4][0-9]))|[0-1]?[0-9]{1,2})){3}" | insert_nftset $NFTSET_BLOCK "0" - get_geoip $GEOIP_CODE ipv6 | grep -E "([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}" | insert_nftset $NFTSET_BLOCK6 "0" - echolog " - [$?]解析并加入[屏蔽列表] GeoIP 到 NFTSET 完成" - fi - } - } - - #分流列表 - [ "$USE_SHUNT_NODE" = "1" ] && { - local GEOIP_CODE="" - local shunt_ids=$(uci show $CONFIG | grep "=shunt_rules" | awk -F '.' '{print $2}' | awk -F '=' '{print $1}') - for shunt_id in $shunt_ids; do - config_n_get $shunt_id ip_list | tr -s "\r\n" "\n" | sed -e "/^$/d" | grep -v "^#" | grep -E "(\.((2(5[0-5]|[0-4][0-9]))|[0-1]?[0-9]{1,2})){3}" | insert_nftset $NFTSET_SHUNT "0" - config_n_get $shunt_id ip_list | tr -s "\r\n" "\n" | sed -e "/^$/d" | grep -v "^#" | grep -E "([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}" | insert_nftset $NFTSET_SHUNT6 "0" - [ "$USE_GEOVIEW" = "1" ] && { - local geoip_code=$(config_n_get $shunt_id ip_list | tr -s "\r\n" "\n" | sed -e "/^$/d" | grep -E "^geoip:" | grep -v "^geoip:private" | sed -E 's/^geoip:(.*)/\1/' | sed ':a;N;$!ba;s/\n/,/g') - [ -n "$geoip_code" ] && GEOIP_CODE="${GEOIP_CODE:+$GEOIP_CODE,}$geoip_code" - } - done - if [ -n "$GEOIP_CODE" ] && type geoview &> /dev/null; then - get_geoip $GEOIP_CODE ipv4 | grep -E "(\.((2(5[0-5]|[0-4][0-9]))|[0-1]?[0-9]{1,2})){3}" | insert_nftset $NFTSET_SHUNT "0" - get_geoip $GEOIP_CODE ipv6 | grep -E "([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}" | insert_nftset $NFTSET_SHUNT6 "0" - echolog " - [$?]解析并加入[分流节点] GeoIP 到 NFTSET 完成" - fi - } - - ip address show | grep -w "inet" | awk '{print $2}' | awk -F '/' '{print $1}' | sed -e "s/ /\n/g" | insert_nftset $NFTSET_LOCAL "-1" - ip address show | grep -w "inet6" | awk '{print $2}' | awk -F '/' '{print $1}' | sed -e "s/ /\n/g" | insert_nftset $NFTSET_LOCAL6 "-1" - - # 忽略特殊IP段 - local lan_ifname lan_ip - lan_ifname=$(uci -q -p /tmp/state get network.lan.ifname) - [ -n "$lan_ifname" ] && { - lan_ip=$(ip address show $lan_ifname | grep -w "inet" | awk '{print $2}') - lan_ip6=$(ip address show $lan_ifname | grep -w "inet6" | awk '{print $2}') - #echolog "本机IPv4网段互访直连:${lan_ip}" - #echolog "本机IPv6网段互访直连:${lan_ip6}" - - [ -n "$lan_ip" ] && insert_nftset $NFTSET_LAN "-1" $(echo $lan_ip | sed -e "s/ /\n/g") - [ -n "$lan_ip6" ] && insert_nftset $NFTSET_LAN6 "-1" $(echo $lan_ip6 | sed -e "s/ /\n/g") - } - - [ -n "$ISP_DNS" ] && { - #echolog "处理 ISP DNS 例外..." - for ispip in $ISP_DNS; do - insert_nftset $NFTSET_WHITE 0 $ispip - echolog " - [$?]追加ISP IPv4 DNS到白名单:${ispip}" - done - } - - [ -n "$ISP_DNS6" ] && { - #echolog "处理 ISP IPv6 DNS 例外..." - for ispip6 in $ISP_DNS6; do - insert_nftset $NFTSET_WHITE6 0 $ispip6 - echolog " - [$?]追加ISP IPv6 DNS到白名单:${ispip6}" - done - } - - # 过滤所有节点IP - filter_vpsip > /dev/null 2>&1 & - # filter_haproxy > /dev/null 2>&1 & - # Prevent some conditions - filter_vps_addr $(config_n_get $TCP_NODE address) $(config_n_get $UDP_NODE address) > /dev/null 2>&1 & - filter_vps_addr $(config_n_get $TCP_NODE download_address) $(config_n_get $UDP_NODE download_address) > /dev/null 2>&1 & - - accept_icmp=$(config_t_get global_forwarding accept_icmp 0) - accept_icmpv6=$(config_t_get global_forwarding accept_icmpv6 0) - - if [ "${TCP_PROXY_WAY}" = "redirect" ]; then - unset is_tproxy - nft_prerouting_chain="PSW_NAT" - nft_output_chain="PSW_OUTPUT_NAT" - elif [ "${TCP_PROXY_WAY}" = "tproxy" ]; then - is_tproxy="TPROXY" - nft_prerouting_chain="PSW_MANGLE" - nft_output_chain="PSW_OUTPUT_MANGLE" - fi - - nft "add chain $NFTABLE_NAME PSW_DIVERT" - nft "flush chain $NFTABLE_NAME PSW_DIVERT" - nft "add rule $NFTABLE_NAME PSW_DIVERT meta l4proto tcp socket transparent 1 mark set 1 counter accept" - - nft "add chain $NFTABLE_NAME PSW_DNS" - nft "flush chain $NFTABLE_NAME PSW_DNS" - if [ $(config_t_get global dns_redirect "1") = "0" ]; then - #Only hijack when dest address is local IP - nft "insert rule $NFTABLE_NAME dstnat ip daddr @${NFTSET_LOCAL} jump PSW_DNS" - nft "insert rule $NFTABLE_NAME dstnat ip6 daddr @${NFTSET_LOCAL6} jump PSW_DNS" - else - nft "insert rule $NFTABLE_NAME dstnat jump PSW_DNS" - fi - - # for ipv4 ipv6 tproxy mark - nft "add chain $NFTABLE_NAME PSW_RULE" - nft "flush chain $NFTABLE_NAME PSW_RULE" - nft "add rule $NFTABLE_NAME PSW_RULE meta mark set ct mark counter" - nft "add rule $NFTABLE_NAME PSW_RULE meta mark 1 counter return" - nft "add rule $NFTABLE_NAME PSW_RULE tcp flags &(fin|syn|rst|ack) == syn meta mark set mark and 0x0 xor 0x1 counter" - nft "add rule $NFTABLE_NAME PSW_RULE meta l4proto udp ct state new meta mark set mark and 0x0 xor 0x1 counter" - nft "add rule $NFTABLE_NAME PSW_RULE ct mark set mark counter" - - #ipv4 tproxy mode and udp - nft "add chain $NFTABLE_NAME PSW_MANGLE" - nft "flush chain $NFTABLE_NAME PSW_MANGLE" - nft "add rule $NFTABLE_NAME PSW_MANGLE ip daddr @$NFTSET_LAN counter return" - nft "add rule $NFTABLE_NAME PSW_MANGLE ip daddr @$NFTSET_VPS counter return" - - nft "add chain $NFTABLE_NAME PSW_OUTPUT_MANGLE" - nft "flush chain $NFTABLE_NAME PSW_OUTPUT_MANGLE" - nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE ip daddr @$NFTSET_LAN counter return" - nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE ip daddr @$NFTSET_VPS counter return" - - [ "${USE_BLOCK_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE ip daddr @$NFTSET_BLOCK counter drop" - [ "${USE_DIRECT_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE ip daddr @$NFTSET_WHITE counter return" - nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE meta mark 0xff counter return" - - # jump chains - nft "add rule $NFTABLE_NAME mangle_prerouting counter jump PSW_DIVERT" - nft "add rule $NFTABLE_NAME mangle_prerouting ip protocol udp counter jump PSW_MANGLE" - [ -n "${is_tproxy}" ] && nft "add rule $NFTABLE_NAME mangle_prerouting ip protocol tcp counter jump PSW_MANGLE" - - #ipv4 tcp redirect mode - [ -z "${is_tproxy}" ] && { - nft "add chain $NFTABLE_NAME PSW_NAT" - nft "flush chain $NFTABLE_NAME PSW_NAT" - nft "add rule $NFTABLE_NAME PSW_NAT ip daddr @$NFTSET_LAN counter return" - nft "add rule $NFTABLE_NAME PSW_NAT ip daddr @$NFTSET_VPS counter return" - nft "add rule $NFTABLE_NAME dstnat ip protocol tcp counter jump PSW_NAT" - - nft "add chain $NFTABLE_NAME PSW_OUTPUT_NAT" - nft "flush chain $NFTABLE_NAME PSW_OUTPUT_NAT" - nft "add rule $NFTABLE_NAME PSW_OUTPUT_NAT ip daddr @$NFTSET_LAN counter return" - nft "add rule $NFTABLE_NAME PSW_OUTPUT_NAT ip daddr @$NFTSET_VPS counter return" - [ "${USE_BLOCK_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_NAT ip daddr @$NFTSET_BLOCK counter drop" - [ "${USE_DIRECT_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_NAT ip daddr @$NFTSET_WHITE counter return" - nft "add rule $NFTABLE_NAME PSW_OUTPUT_NAT meta mark 0xff counter return" - } - - #icmp ipv6-icmp redirect - if [ "$accept_icmp" = "1" ]; then - nft "add chain $NFTABLE_NAME PSW_ICMP_REDIRECT" - nft "flush chain $NFTABLE_NAME PSW_ICMP_REDIRECT" - nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip daddr @$NFTSET_LAN counter return" - nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip daddr @$NFTSET_VPS counter return" - - [ "$accept_icmpv6" = "1" ] && { - nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip6 daddr @$NFTSET_LAN6 counter return" - nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip6 daddr @$NFTSET_VPS6 counter return" - } - - nft "add rule $NFTABLE_NAME dstnat meta l4proto {icmp,icmpv6} counter jump PSW_ICMP_REDIRECT" - nft "add rule $NFTABLE_NAME nat_output meta l4proto {icmp,icmpv6} counter jump PSW_ICMP_REDIRECT" - fi - - WAN_IP=$(get_wan_ips ip4) - if [ -n "${WAN_IP}" ]; then - nft flush set $NFTABLE_NAME $NFTSET_WAN - insert_nftset $NFTSET_WAN "-1" $WAN_IP - [ -z "${is_tproxy}" ] && nft "add rule $NFTABLE_NAME PSW_NAT ip daddr @$NFTSET_WAN counter return comment \"WAN_IP_RETURN\"" - nft "add rule $NFTABLE_NAME PSW_MANGLE ip daddr @$NFTSET_WAN counter return comment \"WAN_IP_RETURN\"" - for wan_ip in $WAN_IP; do - echolog " - [$?]加入WAN IPv4到nftset[$NFTSET_WAN]:${wan_ip}" - done - fi - unset WAN_IP wan_ip - - ip rule add fwmark 1 lookup 100 - ip route add local 0.0.0.0/0 dev lo table 100 - - #ipv6 tproxy mode and udp - nft "add chain $NFTABLE_NAME PSW_MANGLE_V6" - nft "flush chain $NFTABLE_NAME PSW_MANGLE_V6" - nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 ip6 daddr @$NFTSET_LAN6 counter return" - nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 ip6 daddr @$NFTSET_VPS6 counter return" - - nft "add chain $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6" - nft "flush chain $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6" - nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 ip6 daddr @$NFTSET_LAN6 counter return" - nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 ip6 daddr @$NFTSET_VPS6 counter return" - [ "${USE_BLOCK_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 ip6 daddr @$NFTSET_BLOCK6 counter drop" - [ "${USE_DIRECT_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 ip6 daddr @$NFTSET_WHITE6 counter return" - nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 meta mark 0xff counter return" - - [ -n "$IPT_APPEND_DNS" ] && { - local local_dns dns_address dns_port - for local_dns in $(echo $IPT_APPEND_DNS | tr ',' ' '); do - dns_address=$(echo "$local_dns" | sed -E 's/(@|\[)?([0-9a-fA-F:.]+)(@|#|$).*/\2/') - dns_port=$(echo "$local_dns" | sed -nE 's/.*#([0-9]+)$/\1/p') - if echo "$dns_address" | grep -q -v ':'; then - nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE ip protocol udp ip daddr ${dns_address} $(factor ${dns_port:-53} "udp dport") counter return" - nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE ip protocol tcp ip daddr ${dns_address} $(factor ${dns_port:-53} "tcp dport") counter return" - echolog " - [$?]追加直连DNS到nftables:${dns_address}:${dns_port:-53}" - else - nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 meta l4proto udp ip6 daddr ${dns_address} $(factor ${dns_port:-53} "udp dport") counter return" - nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 meta l4proto tcp ip6 daddr ${dns_address} $(factor ${dns_port:-53} "tcp dport") counter return" - echolog " - [$?]追加直连DNS到nftables:[${dns_address}]:${dns_port:-53}" - fi - done - } - - # jump chains - [ "$PROXY_IPV6" == "1" ] && { - nft "add rule $NFTABLE_NAME mangle_prerouting meta nfproto {ipv6} counter jump PSW_MANGLE_V6" - nft "add rule $NFTABLE_NAME mangle_output meta nfproto {ipv6} counter jump PSW_OUTPUT_MANGLE_V6 comment \"PSW_OUTPUT_MANGLE\"" - - WAN6_IP=$(get_wan_ips ip6) - [ -n "${WAN6_IP}" ] && { - nft flush set $NFTABLE_NAME $NFTSET_WAN6 - insert_nftset $NFTSET_WAN6 "-1" $WAN6_IP - nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 ip6 daddr @$NFTSET_WAN6 counter return comment \"WAN6_IP_RETURN\"" - for wan6_ip in $WAN6_IP; do - echolog " - [$?]加入WAN IPv6到nftset[$NFTSET_WAN6]:${wan6_ip}" - done - } - unset WAN6_IP wan6_ip - - ip -6 rule add fwmark 1 table 100 - ip -6 route add local ::/0 dev lo table 100 - } - - [ "$TCP_UDP" = "1" ] && [ -z "$UDP_NODE" ] && UDP_NODE=$TCP_NODE - - [ "$ENABLED_DEFAULT_ACL" == 1 ] && { - msg="【路由器本机】," - - [ "$TCP_NO_REDIR_PORTS" != "disable" ] && { - nft "add rule $NFTABLE_NAME $nft_output_chain ip protocol tcp $(factor $TCP_NO_REDIR_PORTS "tcp dport") counter return" - nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 meta l4proto tcp $(factor $TCP_NO_REDIR_PORTS "tcp dport") counter return" - if ! has_1_65535 "$TCP_NO_REDIR_PORTS"; then - echolog " - ${msg}不代理 TCP 端口[${TCP_NO_REDIR_PORTS}]" - else - unset LOCALHOST_TCP_PROXY_MODE - echolog " - ${msg}不代理所有 TCP 端口" - fi - } - - [ "$UDP_NO_REDIR_PORTS" != "disable" ] && { - nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE ip protocol udp $(factor $UDP_NO_REDIR_PORTS "udp dport") counter return" - nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 meta l4proto udp $(factor $UDP_NO_REDIR_PORTS "udp dport") counter return" - if ! has_1_65535 "$UDP_NO_REDIR_PORTS"; then - echolog " - ${msg}不代理 UDP 端口[${UDP_NO_REDIR_PORTS}]" - else - unset LOCALHOST_UDP_PROXY_MODE - echolog " - ${msg}不代理所有 UDP 端口" - fi - } - - if ([ -n "$TCP_NODE" ] && [ -n "${LOCALHOST_TCP_PROXY_MODE}" ]) || ([ -n "$UDP_NODE" ] && [ -n "${LOCALHOST_UDP_PROXY_MODE}" ]); then - [ -n "$DNS_REDIRECT_PORT" ] && { - nft "add rule $NFTABLE_NAME nat_output ip protocol udp oif lo udp dport 53 counter redirect to :$DNS_REDIRECT_PORT comment \"PSW_DNS\"" - nft "add rule $NFTABLE_NAME nat_output ip protocol tcp oif lo tcp dport 53 counter redirect to :$DNS_REDIRECT_PORT comment \"PSW_DNS\"" - nft "add rule $NFTABLE_NAME nat_output meta l4proto udp oif lo udp dport 53 counter redirect to :$DNS_REDIRECT_PORT comment \"PSW_DNS\"" - nft "add rule $NFTABLE_NAME nat_output meta l4proto tcp oif lo tcp dport 53 counter redirect to :$DNS_REDIRECT_PORT comment \"PSW_DNS\"" - } - fi - - [ -n "${LOCALHOST_TCP_PROXY_MODE}" -o -n "${LOCALHOST_UDP_PROXY_MODE}" ] && { - [ "$TCP_PROXY_DROP_PORTS" != "disable" ] && { - nft add rule $NFTABLE_NAME $nft_output_chain ip protocol tcp ip daddr $FAKE_IP $(factor $TCP_PROXY_DROP_PORTS "tcp dport") counter drop - [ "${USE_PROXY_LIST}" = "1" ] && nft add rule $NFTABLE_NAME $nft_output_chain ip protocol tcp ip daddr @$NFTSET_BLACK $(factor $TCP_PROXY_DROP_PORTS "tcp dport") counter drop - [ "${USE_GFW_LIST}" = "1" ] && nft add rule $NFTABLE_NAME $nft_output_chain ip protocol tcp ip daddr @$NFTSET_GFW $(factor $TCP_PROXY_DROP_PORTS "tcp dport") counter drop - [ "${CHN_LIST}" != "0" ] && nft add rule $NFTABLE_NAME $nft_output_chain ip protocol tcp ip daddr @$NFTSET_CHN $(factor $TCP_PROXY_DROP_PORTS "tcp dport") $(get_jump_ipt ${CHN_LIST} "counter drop") - [ "${USE_SHUNT_TCP}" = "1" ] && nft add rule $NFTABLE_NAME $nft_output_chain ip protocol tcp ip daddr @$NFTSET_SHUNT $(factor $TCP_PROXY_DROP_PORTS "tcp dport") counter drop - [ "${LOCALHOST_TCP_PROXY_MODE}" != "disable" ] && nft add rule $NFTABLE_NAME $nft_output_chain ip protocol tcp $(factor $TCP_PROXY_DROP_PORTS "tcp dport") counter drop - echolog " - ${msg}屏蔽代理 TCP 端口[${TCP_PROXY_DROP_PORTS}]" - } - - [ "$UDP_PROXY_DROP_PORTS" != "disable" ] && { - nft add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE ip protocol udp ip daddr $FAKE_IP $(factor $UDP_PROXY_DROP_PORTS "udp dport") counter drop - [ "${USE_PROXY_LIST}" = "1" ] && nft add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE ip protocol udp ip daddr @$NFTSET_BLACK $(factor $UDP_PROXY_DROP_PORTS "udp dport") counter drop - [ "${USE_GFW_LIST}" = "1" ] && nft add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE ip protocol udp ip daddr @$NFTSET_GFW $(factor $UDP_PROXY_DROP_PORTS "udp dport") counter drop - [ "${CHN_LIST}" != "0" ] && nft add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE ip protocol udp ip daddr @$NFTSET_CHN $(factor $UDP_PROXY_DROP_PORTS "udp dport") $(get_jump_ipt ${CHN_LIST} "counter drop") - [ "${USE_SHUNT_UDP}" = "1" ] && nft add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE ip protocol udp ip daddr @$NFTSET_SHUNT $(factor $UDP_PROXY_DROP_PORTS "udp dport") counter drop - [ "${LOCALHOST_UDP_PROXY_MODE}" != "disable" ] && nft add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE counter ip protocol udp $(factor $UDP_PROXY_DROP_PORTS "udp dport") counter drop - echolog " - ${msg}屏蔽代理 UDP 端口[${UDP_PROXY_DROP_PORTS}]" - } - } - - # 加载路由器自身代理 TCP - if [ -n "$TCP_NODE" ]; then - _proxy_tcp_access() { - [ -n "${2}" ] || return 0 - if echo "${2}" | grep -q -v ':'; then - nft "get element $NFTABLE_NAME $NFTSET_LAN {${2}}" &>/dev/null - [ $? -eq 0 ] && { - echolog " - 上游 DNS 服务器 ${2} 已在直接访问的列表中,不强制向 TCP 代理转发对该服务器 TCP/${3} 端口的访问" - return 0 - } - if [ -z "${is_tproxy}" ]; then - nft insert rule $NFTABLE_NAME PSW_OUTPUT_NAT ip protocol tcp ip daddr ${2} tcp dport ${3} $(REDIRECT $TCP_REDIR_PORT) - else - nft insert rule $NFTABLE_NAME PSW_OUTPUT_MANGLE ip protocol tcp ip daddr ${2} tcp dport ${3} counter jump PSW_RULE - nft insert rule $NFTABLE_NAME PSW_MANGLE ip protocol tcp iif lo tcp dport ${3} ip daddr ${2} $(REDIRECT $TCP_REDIR_PORT TPROXY4) comment \"本机\" - fi - echolog " - [$?]将上游 DNS 服务器 ${2}:${3} 加入到路由器自身代理的 TCP 转发链" - else - nft "get element $NFTABLE_NAME $NFTSET_LAN6 {${2}}" &>/dev/null - [ $? -eq 0 ] && { - echolog " - 上游 DNS 服务器 ${2} 已在直接访问的列表中,不强制向 TCP 代理转发对该服务器 TCP/${3} 端口的访问" - return 0 - } - nft "insert rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 meta l4proto tcp ip6 daddr ${2} tcp dport ${3} counter jump PSW_RULE" - nft "insert rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp iif lo tcp dport ${3} ip6 daddr ${2} $(REDIRECT $TCP_REDIR_PORT TPROXY6) comment \"本机\"" - echolog " - [$?]将上游 DNS 服务器 [${2}]:${3} 加入到路由器自身代理的 TCP 转发链,请确保您的节点支持IPv6,并开启IPv6透明代理!" - fi - } - [ "$TCP_PROXY_DNS" == 1 ] && hosts_foreach REMOTE_DNS _proxy_tcp_access 53 - - [ "$accept_icmp" = "1" ] && { - nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT oif lo ip protocol icmp ip daddr $FAKE_IP counter redirect" - [ "${USE_PROXY_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT oif lo ip protocol icmp ip daddr @$NFTSET_BLACK counter redirect" - [ "${USE_GFW_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT oif lo ip protocol icmp ip daddr @$NFTSET_GFW counter redirect" - [ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT oif lo ip protocol icmp ip daddr @$NFTSET_CHN $(get_jump_ipt ${CHN_LIST})" - [ "${USE_SHUNT_TCP}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT oif lo ip protocol icmp ip daddr @$NFTSET_SHUNT counter redirect" - [ -n "${LOCALHOST_TCP_PROXY_MODE}" ] && [ "${LOCALHOST_TCP_PROXY_MODE}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT oif lo ip protocol icmp counter redirect" - nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT oif lo ip protocol icmp counter return" - } - - [ "$accept_icmpv6" = "1" ] && { - nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT oif lo meta l4proto icmpv6 ip6 daddr $FAKE_IP_6 counter redirect" - [ "${USE_PROXY_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT oif lo meta l4proto icmpv6 ip6 daddr @$NFTSET_BLACK6 counter redirect" - [ "${USE_GFW_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT oif lo meta l4proto icmpv6 ip6 daddr @$NFTSET_GFW6 counter redirect" - [ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT oif lo meta l4proto icmpv6 ip6 daddr @$NFTSET_CHN6 $(get_jump_ipt ${CHN_LIST})" - [ "${USE_SHUNT_TCP}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT oif lo meta l4proto icmpv6 ip6 daddr @$NFTSET_SHUNT6 counter redirect" - [ -n "${LOCALHOST_TCP_PROXY_MODE}" ] && [ "${LOCALHOST_TCP_PROXY_MODE}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT oif lo meta l4proto icmpv6 counter redirect" - nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT oif lo meta l4proto icmpv6 counter return" - } - - if [ -n "${is_tproxy}" ]; then - nft_chain="PSW_OUTPUT_MANGLE" - nft_j="counter jump PSW_RULE" - else - nft_chain="PSW_OUTPUT_NAT" - nft_j="$(REDIRECT $TCP_REDIR_PORT)" - fi - - [ -n "${LOCALHOST_TCP_PROXY_MODE}" ] && { - nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp ip daddr $FAKE_IP ${nft_j}" - [ "${USE_PROXY_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp ip daddr @$NFTSET_BLACK $(factor $TCP_REDIR_PORTS "tcp dport") ${nft_j}" - [ "${USE_GFW_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp ip daddr @$NFTSET_GFW $(factor $TCP_REDIR_PORTS "tcp dport") ${nft_j}" - [ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp ip daddr @$NFTSET_CHN $(factor $TCP_REDIR_PORTS "tcp dport") $(get_jump_ipt ${CHN_LIST} "${nft_j}")" - [ "${USE_SHUNT_TCP}" = "1" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp ip daddr @$NFTSET_SHUNT $(factor $TCP_REDIR_PORTS "tcp dport") ${nft_j}" - [ "${LOCALHOST_TCP_PROXY_MODE}" != "disable" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp $(factor $TCP_REDIR_PORTS "tcp dport") ${nft_j}" - [ -n "${is_tproxy}" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol tcp iif lo $(REDIRECT $TCP_REDIR_PORT TPROXY4) comment \"本机\"" - } - [ -n "${is_tproxy}" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol tcp iif lo counter return comment \"本机\"" - [ -n "${is_tproxy}" ] && nft "add rule $NFTABLE_NAME mangle_output ip protocol tcp counter jump PSW_OUTPUT_MANGLE comment \"PSW_OUTPUT_MANGLE\"" - [ -z "${is_tproxy}" ] && nft "add rule $NFTABLE_NAME nat_output ip protocol tcp counter jump PSW_OUTPUT_NAT" - - [ "$PROXY_IPV6" == "1" ] && { - [ -n "${LOCALHOST_TCP_PROXY_MODE}" ] && { - nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 meta l4proto tcp ip6 daddr $FAKE_IP_6 counter jump PSW_RULE" - [ "${USE_PROXY_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 meta l4proto tcp ip6 daddr @$NFTSET_BLACK6 $(factor $TCP_REDIR_PORTS "tcp dport") counter jump PSW_RULE" - [ "${USE_GFW_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 meta l4proto tcp ip6 daddr @$NFTSET_GFW6 $(factor $TCP_REDIR_PORTS "tcp dport") counter jump PSW_RULE" - [ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 meta l4proto tcp ip6 daddr @$NFTSET_CHN6 $(factor $TCP_REDIR_PORTS "tcp dport") $(get_jump_ipt ${CHN_LIST} "counter jump PSW_RULE")" - [ "${USE_SHUNT_TCP}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 meta l4proto tcp ip6 daddr @$NFTSET_SHUNT6 $(factor $TCP_REDIR_PORTS "tcp dport") counter jump PSW_RULE" - [ "${LOCALHOST_TCP_PROXY_MODE}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 meta l4proto tcp $(factor $TCP_REDIR_PORTS "tcp dport") counter jump PSW_RULE" - nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp iif lo $(REDIRECT $TCP_REDIR_PORT TPROXY) comment \"本机\"" - } - nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp iif lo counter return comment \"本机\"" - } - fi - - # 加载路由器自身代理 UDP - if [ -n "$UDP_NODE" -o "$TCP_UDP" = "1" ]; then - _proxy_udp_access() { - [ -n "${2}" ] || return 0 - if echo "${2}" | grep -q -v ':'; then - nft "get element $NFTABLE_NAME $NFTSET_LAN {${2}}" &>/dev/null - [ $? == 0 ] && { - echolog " - 上游 DNS 服务器 ${2} 已在直接访问的列表中,不强制向 UDP 代理转发对该服务器 UDP/${3} 端口的访问" - return 0 - } - nft "insert rule $NFTABLE_NAME PSW_OUTPUT_MANGLE ip protocol udp ip daddr ${2} udp dport ${3} counter jump PSW_RULE" - nft "insert rule $NFTABLE_NAME PSW_MANGLE ip protocol udp iif lo ip daddr ${2} $(REDIRECT $UDP_REDIR_PORT TPROXY4) comment \"本机\"" - echolog " - [$?]将上游 DNS 服务器 ${2}:${3} 加入到路由器自身代理的 UDP 转发链" - else - nft "get element $NFTABLE_NAME $NFTSET_LAN6 {${2}}" &>/dev/null - [ $? == 0 ] && { - echolog " - 上游 DNS 服务器 ${2} 已在直接访问的列表中,不强制向 UDP 代理转发对该服务器 UDP/${3} 端口的访问" - return 0 - } - nft "insert rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 meta l4proto udp ip6 daddr ${2} udp dport ${3} counter jump PSW_RULE" - nft "insert rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp iif lo ip6 daddr ${2} $(REDIRECT $UDP_REDIR_PORT TPROXY6) comment \"本机\"" - echolog " - [$?]将上游 DNS 服务器 [${2}]:${3} 加入到路由器自身代理的 UDP 转发链,请确保您的节点支持IPv6,并开启IPv6透明代理!" - fi - } - [ -n "${UDP_PROXY_DNS}" ] && hosts_foreach REMOTE_DNS _proxy_udp_access 53 - [ -n "${LOCALHOST_UDP_PROXY_MODE}" ] && { - nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE ip protocol udp ip daddr $FAKE_IP counter jump PSW_RULE" - [ "${USE_PROXY_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE ip protocol udp ip daddr @$NFTSET_BLACK $(factor $UDP_REDIR_PORTS "udp dport") counter jump PSW_RULE" - [ "${USE_GFW_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE ip protocol udp ip daddr @$NFTSET_GFW $(factor $UDP_REDIR_PORTS "udp dport") counter jump PSW_RULE" - [ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE ip protocol udp ip daddr @$NFTSET_CHN $(factor $UDP_REDIR_PORTS "udp dport") $(get_jump_ipt ${CHN_LIST} "counter jump PSW_RULE")" - [ "${USE_SHUNT_UDP}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE ip protocol udp ip daddr @$NFTSET_SHUNT $(factor $UDP_REDIR_PORTS "udp dport") counter jump PSW_RULE" - [ "${LOCALHOST_UDP_PROXY_MODE}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE ip protocol udp $(factor $UDP_REDIR_PORTS "udp dport") counter jump PSW_RULE" - nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp iif lo $(REDIRECT $UDP_REDIR_PORT TPROXY4) comment \"本机\"" - } - nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp iif lo counter return comment \"本机\"" - nft "add rule $NFTABLE_NAME mangle_output ip protocol udp counter jump PSW_OUTPUT_MANGLE comment \"PSW_OUTPUT_MANGLE\"" - - [ "$PROXY_IPV6" == "1" ] && { - [ -n "${LOCALHOST_UDP_PROXY_MODE}" ] && { - nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 meta l4proto udp ip6 daddr $FAKE_IP_6 counter jump PSW_RULE" - [ "${USE_PROXY_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 meta l4proto udp ip6 daddr @$NFTSET_BLACK6 $(factor $UDP_REDIR_PORTS "udp dport") counter jump PSW_RULE" - [ "${USE_GFW_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 meta l4proto udp ip6 daddr @$NFTSET_GFW6 $(factor $UDP_REDIR_PORTS "udp dport") counter jump PSW_RULE" - [ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 meta l4proto udp ip6 daddr @$NFTSET_CHN6 $(factor $UDP_REDIR_PORTS "udp dport") $(get_jump_ipt ${CHN_LIST} "counter jump PSW_RULE")" - [ "${USE_SHUNT_UDP}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 meta l4proto udp ip6 daddr @$NFTSET_SHUNT6 $(factor $UDP_REDIR_PORTS "udp dport") counter jump PSW_RULE" - [ "${LOCALHOST_UDP_PROXY_MODE}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 meta l4proto udp $(factor $UDP_REDIR_PORTS "udp dport") counter jump PSW_RULE" - nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp iif lo $(REDIRECT $UDP_REDIR_PORT TPROXY) comment \"本机\"" - } - nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp iif lo counter return comment \"本机\"" - } - fi - - nft "add rule $NFTABLE_NAME mangle_output oif lo counter return comment \"PSW_OUTPUT_MANGLE\"" - nft "add rule $NFTABLE_NAME mangle_output meta mark 1 counter return comment \"PSW_OUTPUT_MANGLE\"" - } - - # 加载ACLS - load_acl - - [ -d "${TMP_IFACE_PATH}" ] && { - for iface in $(ls ${TMP_IFACE_PATH}); do - nft "insert rule $NFTABLE_NAME $nft_output_chain oif $iface counter return" - nft "insert rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 oif $iface counter return" - done - } - - filter_direct_node_list > /dev/null 2>&1 & - - echolog "防火墙规则加载完成!" -} - -del_firewall_rule() { - for nft in "dstnat" "srcnat" "nat_output" "mangle_prerouting" "mangle_output"; do - local handles=$(nft -a list chain $NFTABLE_NAME ${nft} 2>/dev/null | grep -E "PSW_" | awk -F '# handle ' '{print$2}') - for handle in $handles; do - nft delete rule $NFTABLE_NAME ${nft} handle ${handle} 2>/dev/null - done - done - - for handle in $(nft -a list chains | grep -E "chain PSW_" | grep -v "PSW_RULE" | awk -F '# handle ' '{print$2}'); do - nft delete chain $NFTABLE_NAME handle ${handle} 2>/dev/null - done - - # Need to be removed at the end, otherwise it will show "Resource busy" - nft delete chain $NFTABLE_NAME handle $(nft -a list chains | grep -E "PSW_RULE" | awk -F '# handle ' '{print$2}') 2>/dev/null - - ip rule del fwmark 1 lookup 100 2>/dev/null - ip route del local 0.0.0.0/0 dev lo table 100 2>/dev/null - - ip -6 rule del fwmark 1 table 100 2>/dev/null - ip -6 route del local ::/0 dev lo table 100 2>/dev/null - - destroy_nftset $NFTSET_LOCAL - destroy_nftset $NFTSET_WAN - destroy_nftset $NFTSET_LAN - destroy_nftset $NFTSET_VPS - #destroy_nftset $NFTSET_SHUNT - #destroy_nftset $NFTSET_GFW - #destroy_nftset $NFTSET_CHN - #destroy_nftset $NFTSET_BLACK - destroy_nftset $NFTSET_BLOCK - destroy_nftset $NFTSET_WHITE - - destroy_nftset $NFTSET_LOCAL6 - destroy_nftset $NFTSET_WAN6 - destroy_nftset $NFTSET_LAN6 - destroy_nftset $NFTSET_VPS6 - #destroy_nftset $NFTSET_SHUNT6 - #destroy_nftset $NFTSET_GFW6 - #destroy_nftset $NFTSET_CHN6 - #destroy_nftset $NFTSET_BLACK6 - destroy_nftset $NFTSET_BLOCK6 - destroy_nftset $NFTSET_WHITE6 - - echolog "删除 nftables 规则完成。" -} - -flush_nftset() { - echolog "清空 NFTSet。" - for _name in $(nft -a list sets | grep -E "passwall_" | awk -F 'set ' '{print $2}' | awk '{print $1}'); do - destroy_nftset ${_name} - done -} - -flush_table() { - nft flush table $NFTABLE_NAME - nft delete table $NFTABLE_NAME -} - -flush_include() { - echo '#!/bin/sh' >$FWI -} - -gen_include() { - flush_include - local nft_chain_file=$TMP_PATH/PSW_RULE.nft - echo '#!/usr/sbin/nft -f' > $nft_chain_file - nft list table $NFTABLE_NAME >> $nft_chain_file - - local __nft=" " - __nft=$(cat <<- EOF - [ -z "\$(nft list chain $NFTABLE_NAME mangle_prerouting | grep PSW_DIVERT)" ] && nft -f ${nft_chain_file} - WAN_IP=\$(sh ${MY_PATH} get_wan_ips ip4) - [ ! -z "\${WAN_IP}" ] && { - nft flush set $NFTABLE_NAME $NFTSET_WAN - sh ${MY_PATH} insert_nftset $NFTSET_WAN "-1" \$WAN_IP - } - [ "$PROXY_IPV6" == "1" ] && { - WAN6_IP=\$(sh ${MY_PATH} get_wan_ips ip6) - [ ! -z "\${WAN6_IP}" ] && { - nft flush set $NFTABLE_NAME $NFTSET_WAN6 - sh ${MY_PATH} insert_nftset $NFTSET_WAN6 "-1" \$WAN6_IP - } - } - EOF - ) - - cat <<-EOF >> $FWI - ${__nft} - - return 0 - EOF - return 0 -} - -start() { - [ "$ENABLED_DEFAULT_ACL" == 0 -a "$ENABLED_ACLS" == 0 ] && return - add_firewall_rule - gen_include -} - -stop() { - [ -z "$(command -v echolog)" ] && . /usr/share/passwall/utils.sh - del_firewall_rule - [ $(config_t_get global flush_set_on_reboot "0") = "1" -o $(config_t_get global flush_set "0") = "1" ] && { - uci -q delete ${CONFIG}.@global[0].flush_set - uci -q commit ${CONFIG} - #flush_table - flush_nftset - rm -rf /tmp/etc/passwall_tmp/singbox* - rm -rf /tmp/etc/passwall_tmp/dnsmasq* - } - flush_include -} - -arg1=$1 -shift -case $arg1 in -insert_nftset) - insert_nftset "$@" - ;; -get_wan_ips) - get_wan_ips "$@" - ;; -filter_direct_node_list) - filter_direct_node_list - ;; -stop) - stop - ;; -start) - start - ;; -*) ;; -esac diff --git a/small/luci-app-passwall/root/usr/share/passwall/rule_update.lua b/small/luci-app-passwall/root/usr/share/passwall/rule_update.lua deleted file mode 100755 index be047c128c..0000000000 --- a/small/luci-app-passwall/root/usr/share/passwall/rule_update.lua +++ /dev/null @@ -1,754 +0,0 @@ -#!/usr/bin/lua - -local api = require ("luci.passwall.api") -local name = api.appname -local uci = api.uci -local sys = api.sys -local jsonc = api.jsonc -local fs = api.fs - -local arg1 = arg[1] -local arg2 = arg[2] -local arg3 = arg[3] - -local nftable_name = "inet passwall" -local rule_path = "/usr/share/" .. name .. "/rules" -local reboot = 0 -local gfwlist_update = "0" -local chnroute_update = "0" -local chnroute6_update = "0" -local chnlist_update = "0" -local geoip_update = "0" -local geosite_update = "0" - -local excluded_domain = {"apple.com","sina.cn","sina.com.cn","baidu.com","byr.cn","jlike.com","weibo.com","zhongsou.com","youdao.com","sogou.com","so.com","soso.com","aliyun.com","taobao.com","jd.com","qq.com","bing.com"} - -local gfwlist_url = uci:get(name, "@global_rules[0]", "gfwlist_url") or {"https://fastly.jsdelivr.net/gh/Loyalsoldier/v2ray-rules-dat@release/gfw.txt"} -local chnroute_url = uci:get(name, "@global_rules[0]", "chnroute_url") or {"https://ispip.clang.cn/all_cn.txt"} -local chnroute6_url = uci:get(name, "@global_rules[0]", "chnroute6_url") or {"https://ispip.clang.cn/all_cn_ipv6.txt"} -local chnlist_url = uci:get(name, "@global_rules[0]", "chnlist_url") or {"https://fastly.jsdelivr.net/gh/felixonmars/dnsmasq-china-list/accelerated-domains.china.conf","https://fastly.jsdelivr.net/gh/felixonmars/dnsmasq-china-list/apple.china.conf","https://fastly.jsdelivr.net/gh/felixonmars/dnsmasq-china-list/google.china.conf"} -local geoip_url = uci:get(name, "@global_rules[0]", "geoip_url") or "https://github.com/Loyalsoldier/geoip/releases/latest/download/geoip.dat" -local geosite_url = uci:get(name, "@global_rules[0]", "geosite_url") or "https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geosite.dat" -local asset_location = uci:get(name, "@global_rules[0]", "v2ray_location_asset") or "/usr/share/v2ray/" -local geo2rule = uci:get(name, "@global_rules[0]", "geo2rule") or "0" -local geoip_update_ok, geosite_update_ok = false, false -asset_location = asset_location:match("/$") and asset_location or (asset_location .. "/") - -if arg3 == "cron" then - arg2 = nil -end - -local log = function(...) - if arg1 then - if arg1 == "log" then - api.log(...) - elseif arg1 == "print" then - local result = os.date("%Y-%m-%d %H:%M:%S: ") .. table.concat({...}, " ") - print(result) - end - end -end - ---gen cache for nftset from file -local function gen_cache(set_name, ip_type, input_file, output_file) - local tmp_set_name = set_name .. "_tmp_" .. os.time() - local f_in = io.open(input_file, "r") - if not f_in then return false end - local nft_pipe = io.popen("nft -f -", "w") - if not nft_pipe then - f_in:close() - return false - end - nft_pipe:write('#!/usr/sbin/nft -f\n') - nft_pipe:write(string.format('add table %s\n', nftable_name)) - nft_pipe:write(string.format('add set %s %s { type %s; flags interval, timeout; timeout 2d; gc-interval 1h; auto-merge; }\n', nftable_name, tmp_set_name, ip_type)) - nft_pipe:write(string.format('add element %s %s { ', nftable_name, tmp_set_name)) - local count = 0 - local batch_size = 500 - for line in f_in:lines() do - local ip = line:match("^%s*(.-)%s*$") - if ip and ip ~= "" then - nft_pipe:write(ip, "timeout 365d, ") - count = count + 1 - if count % batch_size == 0 then - nft_pipe:write("}\n") - nft_pipe:write(string.format('add element %s %s { ', nftable_name, tmp_set_name)) - end - end - end - nft_pipe:write("}\n") - f_in:close() - - local success = nft_pipe:close() - if not (success == true or success == 0) then - os.execute(string.format('nft delete set %s %s 2>/dev/null', nftable_name, tmp_set_name)) - return false - end - os.execute(string.format('nft list set %s %s | sed "s/%s/%s/g" > %s', nftable_name, tmp_set_name, tmp_set_name, set_name, output_file)) - os.execute(string.format('nft delete set %s %s 2>/dev/null', nftable_name, tmp_set_name)) -end - --- curl -local function curl(url, file) - local http_code = 0 - local header_str = "" - local args = { - "-skL", - "--retry 3", - "--connect-timeout 3", - "--max-time 300", - "--speed-limit 51200 --speed-time 15", - '-A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36"', - "--dump-header -", - "-w '\\n%{http_code}'" - } - if file then - args[#args + 1] = "-o " .. file - end - local return_code, result = api.curl_auto(url, nil, args) - if result and result ~= "" then - local body, code = result:match("^(.-)%s*([0-9]+)$") - if code then - http_code = tonumber(code) or 0 - header_str = body - else - http_code = tonumber(result:match("(%d+)%s*$")) or 0 - end - end - if header_str ~= "" then - header_str = header_str:gsub("\r", "") - end - return http_code, header_str -end - ---check excluded domain -local excluded_map = {} -for _, d in ipairs(excluded_domain) do - excluded_map[d] = true -end -local function check_excluded_domain(value) - if not value or value == "" then return false end - value = value:lower() - local eq_pos = value:find("=", 1, true) - if eq_pos then - value = value:sub(eq_pos + 1) - end - if value:sub(1,1) == "/" then - value = value:sub(2) - end - local slash_pos = value:find("/", 1, true) - local colon_pos = value:find(":", 1, true) - local cut_pos - if slash_pos and colon_pos then - cut_pos = (slash_pos < colon_pos) and slash_pos or colon_pos - else - cut_pos = slash_pos or colon_pos - end - if cut_pos then - value = value:sub(1, cut_pos - 1) - end - value = value:gsub("^%.*", ""):gsub("%.*$", "") - while value do - if excluded_map[value] then - return true - end - local dot_pos = value:find(".", 1, true) - if not dot_pos then - break - end - value = value:sub(dot_pos + 1) - end - return false -end - --- 替代 string.find 查找 "^[#!\\[@]+" -local function is_comment_line(s) - if not s or s == "" then return false end - local b = s:byte(1) - -- '#' = 35, '!' = 33, '\' = 92, '[' = 91, '@' = 64 - if b == 35 or b == 33 or b == 92 or b == 91 or b == 64 then - return true - end - return false -end - --- IPv4 检测,替代 string.find "^%d+%.%d+%.%d+%.%d+" --- IPv4 cidr检测,替代 string.find "^%d+%.%d+%.%d+%.%d+[%/][%d]+$" -local function is_ipv4(s, check_cidr) - local dot = 0 - local seg_start = 1 - local len = #s - local mask_start = nil - local i = 1 - while i <= len do - local b = s:byte(i) - if b >= 48 and b <= 57 then - -- 数字,继续 - elseif b == 46 then -- "." - dot = dot + 1 - if dot > 3 or i == seg_start then return false end - local seg = tonumber(s:sub(seg_start, i - 1)) - if not seg or seg > 255 then return false end - seg_start = i + 1 - elseif b == 47 then -- "/" - if not check_cidr then return false end - if dot ~= 3 or i == seg_start then return false end - local seg = tonumber(s:sub(seg_start, i - 1)) - if not seg or seg > 255 then return false end - mask_start = i + 1 - break - else - return false - end - i = i + 1 - end - -- 如果没有 CIDR,则检查最后一段即可 - if not check_cidr or not mask_start then - if dot ~= 3 or seg_start > len then return false end - local seg = tonumber(s:sub(seg_start)) - return seg and seg <= 255 or false - end - -- CIDR 掩码检查 - if mask_start > len then return false end - local mask = tonumber(s:sub(mask_start)) - return mask and mask >= 0 and mask <= 32 or false -end - -local function is_ipv4_cidr(s) - return is_ipv4(s, true) -end - -local function is_ipv6(s, check_cidr) - local first = s:byte(1) - local last = s:byte(#s) - if first == 91 and last == 93 then -- "[" and "]" - s = s:sub(2, -2) - end - local len = #s - local i = 1 - local seg_len = 0 - local segs = 0 - local saw_dc = false -- 是否出现 "::" - local b - while i <= len do - b = s:byte(i) - -- CIDR 部分 - if b == 47 then -- '/' - if not check_cidr then - return false - end - -- 处理 "/" 之前的段 - if seg_len > 0 then segs = segs + 1 end - if (not saw_dc and segs ~= 8) or (saw_dc and segs > 8) then return false end - -- 解析掩码 - i = i + 1 - if i > len then return false end - local mask = 0 - while i <= len do - b = s:byte(i) - if b < 48 or b > 57 then return false end - mask = mask * 10 + (b - 48) - if mask > 128 then return false end - i = i + 1 - end - -- CIDR 解析成功 - return true - end - -- 冒号处理(: 或 ::) - if b == 58 then - local nextb = (i+1 <= len) and s:byte(i+1) or 0 - -- "::" - if nextb == 58 then - if saw_dc then return false end - saw_dc = true - if seg_len > 0 then segs = segs + 1 end - seg_len = 0 - i = i + 2 - else - -- 普通 ":" - if seg_len == 0 then return false end - segs = segs + 1 - seg_len = 0 - i = i + 1 - end - else - -- hex 数字 - local is_hex = - (b >= 48 and b <= 57) or -- 0-9 - (b >= 65 and b <= 70) or -- A-F - (b >= 97 and b <= 102) -- a-f - if not is_hex then return false end - seg_len = seg_len + 1 - if seg_len > 4 then return false end - i = i + 1 - end - end - if seg_len > 0 then segs = segs + 1 end - if not saw_dc then return segs == 8 end - return segs <= 8 -end - --- IPv6 cidr检测,替代 string.find ":-[%x]+%:+[%x]-[%/][%d]+$" -local function is_ipv6_cidr(s) - return is_ipv6(s, true) -end - --- 检测是否含有冒号,替代 string.find(line, ":") -local function has_colon(s) - for i = 1, #s do - if s:byte(i) == 58 then -- ':' - return true - end - end - return false -end - --- 域名提取,替代 string.match "([%w%-]+%.[%w%.%-]+)[%/%*]*" -local function extract_domain(s) - if not s or s == "" then return nil end - local len = #s - local start = nil - local last_dot = nil - for i = 1, len do - local b = s:byte(i) - -- 允许的域名字符:a-zA-Z0-9.- - if (b >= 48 and b <= 57) or (b >= 65 and b <= 90) or (b >= 97 and b <= 122) or b == 45 or b == 46 then - if not start then start = i end - if b == 46 then last_dot = i end - else - if start then - if last_dot and last_dot > start then - local domain = s:sub(start, i - 1) - while domain:byte(1) == 46 do - domain = domain:sub(2) - end - return domain - else - start = nil - last_dot = nil - end - end - end - end - if start and last_dot and last_dot > start then - local domain = s:sub(start) - while domain:byte(1) == 46 do - domain = domain:sub(2) - end - return domain - end - return nil -end - -local function non_file_check(file_path, header_content) - local remote_file_size = nil - local local_file_size = tonumber(fs.stat(file_path, "size")) or 0 - if local_file_size == 0 then - log("下载文件为空或读取出错。") - return true - end - if header_content and header_content ~= "" then - for size in header_content:gmatch("[Cc]ontent%-[Ll]ength:%s*(%d+)") do - local s = tonumber(size) - if s and s > 0 then - remote_file_size = s - end - end - end - if remote_file_size and remote_file_size ~= local_file_size then - log(string.format("校验出错:远程 %dB, 下载 %dB", remote_file_size, local_file_size)) - return true - end - return false -end - -local function GeoToRule(rule_name, rule_type, out_path) - if not api.is_finded("geoview") then - log(rule_name .. "生成失败,缺少 geoview 组件。") - return false; - end - local geosite_path = asset_location .. "geosite.dat" - local geoip_path = asset_location .. "geoip.dat" - local file_path = (rule_type == "domain") and geosite_path or geoip_path - local geo_arg - if rule_type == "domain" then - if rule_name == "gfwlist" then - geo_arg = "-type geosite -list gfw" - else - geo_arg = "-type geosite -list cn" - end - elseif rule_type == "ip4" then - geo_arg = "-type geoip -list cn -ipv6=false" - elseif rule_type == "ip6" then - geo_arg = "-type geoip -list cn -ipv4=false" - end - local cmd = string.format("geoview -input '%s' %s -lowmem=true -output '%s'", file_path, geo_arg, out_path) - sys.exec(cmd) - return true; -end - ---fetch rule -local function fetch_rule(rule_name,rule_type,url,exclude_domain, max_retries) - local sret = 200 - local max_attempts = max_retries or 2 - local rule_dataset = {} - local file_tmp = "/tmp/" .. rule_name .. "_tmp" - local rule_final_path = rule_path .. "/" .. rule_name - if geo2rule == "1" then - url = {"geo2rule"} - log(rule_name.. " 开始生成...") - else - log(rule_name.. " 开始更新...") - end - - for k, v in ipairs(url) do - local current_file = "/tmp/" .. rule_name .. "_dl" .. k - local success = false - - if v ~= "geo2rule" then - for i = 1, max_attempts do - local http_code, header = curl(v, current_file) - if http_code == 200 and not non_file_check(current_file, header) then - success = true - break - end - os.remove(current_file) - log(string.format("%s 第%d条规则下载失败 (HTTP:%s),正在进行第%d次尝试...", rule_name, k, tostring(http_code), i)) - end - else - if not GeoToRule(rule_name, rule_type, current_file) then return 1 end - success = true - end - - if success then - local f = io.open(current_file, "r") - if f then - if rule_name == "gfwlist" and geo2rule == "0" then - local decode = api.base64Decode(f:read("*all")) - for line in string.gmatch(decode, "[^\r\n]+") do - line = line:gsub("full:", "") - if not (is_comment_line(line) or is_ipv4(line) or has_colon(line) or (exclude_domain and check_excluded_domain(line))) then - local match = extract_domain(line) - if match then - rule_dataset[match] = true - end - end - end - else - for line in f:lines() do - if rule_type == "domain" then - line = line:gsub("full:", "") - if not (is_comment_line(line) or is_ipv4(line) or has_colon(line) or (exclude_domain and check_excluded_domain(line))) then - local match = extract_domain(line) - if match then - rule_dataset[match] = true - end - end - elseif rule_type == "ip4" then - local function is_0dot(s) -- "^0%..*" - return s and s:byte(1)==48 and s:byte(2)==46 - end - if is_ipv4_cidr(line) and not is_0dot(line) then - rule_dataset[line] = true - end - elseif rule_type == "ip6" then - local function is_double_colon_cidr(s) -- "^::(/%d+)?$" - if not s or s:byte(1)~=58 or s:byte(2)~=58 then return false end - local l = #s - if l==2 then return true end - if l==3 or s:byte(3)~=47 then return false end - for i=4,l do - local b=s:byte(i) - if b<48 or b>57 then return false end - end - return true - end - if is_ipv6_cidr(line) and not is_double_colon_cidr(line) then - rule_dataset[line] = true - end - end - end - end - f:close() - end - else - sret = 0 - log(string.format("%s 第%d条规则: %s 下载失败!", rule_name, k, v)) - end - os.remove(current_file) - end - - if sret == 200 then - local result_list = {} - for line, _ in pairs(rule_dataset) do table.insert(result_list, line) end - table.sort(result_list) - - local out = io.open(file_tmp, "w") - if out then - for _, line in ipairs(result_list) do out:write(line .. "\n") end - out:close() - end - - local old_md5 = sys.exec(string.format("md5sum %s 2>/dev/null | awk '{print $1}'", rule_final_path)):gsub("\n", "") - local new_md5 = sys.exec(string.format("md5sum %s 2>/dev/null | awk '{print $1}'", file_tmp)):gsub("\n", "") - - if old_md5 ~= new_md5 then - if api.is_finded("fw4") and (rule_type == "ip4" or rule_type == "ip6") then - local nft_file = file_tmp .. ".nft" - local set_name = "passwall_" .. rule_name - if rule_name == "chnroute" then set_name = "passwall_chn" - elseif rule_name == "chnroute6" then set_name = "passwall_chn6" end - - local addr_type = (rule_type == "ip4") and "ipv4_addr" or "ipv6_addr" - gen_cache(set_name, addr_type, file_tmp, nft_file) - os.execute(string.format("mv -f %s %s.nft", nft_file, rule_final_path)) - end - os.execute(string.format("mv -f %s %s", file_tmp, rule_final_path)) - reboot = 1 - log(string.format("%s 更新成功,总规则数 %d 条。", rule_name, #result_list)) - else - log(rule_name .. " 版本一致,无需更新。") - os.remove(file_tmp) - end - else - log(rule_name .. " 更新失败(部分或全部资源无法下载)。") - os.remove(file_tmp) - end - return 0 -end - -local function fetch_geofile(geo_name, geo_type, url) - local tmp_path = "/tmp/" .. geo_name - local asset_path = asset_location .. geo_name - local down_filename = url:match("^.*/([^/?#]+)") - local sha_url = url:gsub(down_filename, down_filename .. ".sha256sum") - local sha_path = tmp_path .. ".sha256sum" - - local function verify_sha256(sha_file) - return sys.call("sha256sum -c " .. sha_file .. " > /dev/null 2>&1") == 0 - end - - local sha_verify, _ = curl(sha_url, sha_path) == 200 - if sha_verify then - local f = io.open(sha_path, "r") - if f then - local content = f:read("*l") - f:close() - if content then - content = content:gsub(down_filename, tmp_path) - f = io.open(sha_path, "w") - if f then - f:write(content) - f:close() - end - end - end - if fs.access(asset_path) then - sys.call(string.format("cp -f %s %s", asset_path, tmp_path)) - if verify_sha256(sha_path) then - log(geo_type .. " 版本一致,无需更新。") - return 0 - end - end - end - - local sret_tmp, header = curl(url, tmp_path) - if sret_tmp == 200 and non_file_check(tmp_path, header) then - log(geo_type .. " 下载文件过程出错,尝试重新下载。") - os.remove(tmp_path) - sret_tmp, header= curl(url, tmp_path) - if sret_tmp == 200 and non_file_check(tmp_path, header) then - sret_tmp = 0 - log(geo_type .. " 下载文件过程出错,请检查网络或下载链接后重试!") - end - end - if sret_tmp == 200 then - if sha_verify then - if verify_sha256(sha_path) then - sys.call(string.format("mkdir -p %s && cp -f %s %s", asset_location, tmp_path, asset_path)) - reboot = 1 - log(geo_type .. " 更新成功。") - if geo_type == "geoip" then - geoip_update_ok = true - else - geosite_update_ok = true - end - else - log(geo_type .. " 更新失败,请稍后重试或更换更新URL。") - return 1 - end - else - if fs.access(asset_path) and sys.call(string.format("cmp -s %s %s", tmp_path, asset_path)) == 0 then - log(geo_type .. " 版本一致,无需更新。") - return 0 - end - sys.call(string.format("mkdir -p %s && cp -f %s %s", asset_location, tmp_path, asset_path)) - reboot = 1 - log(geo_type .. " 更新成功。") - if geo_type == "geoip" then - geoip_update_ok = true - else - geosite_update_ok = true - end - end - else - log(geo_type .. " 更新失败,请稍后重试或更换更新URL。") - return 1 - end - return 0 -end - -local function fetch_gfwlist() - fetch_rule("gfwlist","domain",gfwlist_url,true) -end - -local function fetch_chnroute() - fetch_rule("chnroute","ip4",chnroute_url,false) -end - -local function fetch_chnroute6() - fetch_rule("chnroute6","ip6",chnroute6_url,false) -end - -local function fetch_chnlist() - fetch_rule("chnlist","domain",chnlist_url,false) -end - -local function fetch_geoip() - fetch_geofile("geoip.dat","geoip",geoip_url) -end - -local function fetch_geosite() - fetch_geofile("geosite.dat","geosite",geosite_url) -end - -if arg2 then - string.gsub(arg2, '[^' .. "," .. ']+', function(w) - if w == "gfwlist" then - gfwlist_update = "1" - end - if w == "chnroute" then - chnroute_update = "1" - end - if w == "chnroute6" then - chnroute6_update = "1" - end - if w == "chnlist" then - chnlist_update = "1" - end - if w == "geoip" then - geoip_update = "1" - end - if w == "geosite" then - geosite_update = "1" - end - end) -else - gfwlist_update = uci:get(name, "@global_rules[0]", "gfwlist_update") or "1" - chnroute_update = uci:get(name, "@global_rules[0]", "chnroute_update") or "1" - chnroute6_update = uci:get(name, "@global_rules[0]", "chnroute6_update") or "1" - chnlist_update = uci:get(name, "@global_rules[0]", "chnlist_update") or "1" - geoip_update = uci:get(name, "@global_rules[0]", "geoip_update") or "1" - geosite_update = uci:get(name, "@global_rules[0]", "geosite_update") or "1" -end -if gfwlist_update == "0" and chnroute_update == "0" and chnroute6_update == "0" and chnlist_update == "0" and geoip_update == "0" and geosite_update == "0" then - os.exit(0) -end - -log("开始更新规则...") -local function safe_call(func, err_msg) - xpcall(func, function(e) - log(e) - log(debug.traceback()) - log(err_msg) - end) -end - -local function remove_tmp_geofile(name) - os.remove("/tmp/" .. name .. ".dat") - os.remove("/tmp/" .. name .. ".dat.sha256sum") -end - -if geo2rule == "1" then - if geoip_update == "1" then - log("geoip 开始更新...") - safe_call(fetch_geoip, "更新geoip发生错误...") - remove_tmp_geofile("geoip") - end - - if geosite_update == "1" then - log("geosite 开始更新...") - safe_call(fetch_geosite, "更新geosite发生错误...") - remove_tmp_geofile("geosite") - end - - -- 如果是手动更新(arg2存在)始终生成规则 - local force_generate = (arg2 ~= nil) - - if geoip_update_ok or force_generate then - if fs.access(asset_location .. "geoip.dat") then - safe_call(fetch_chnroute, "生成chnroute发生错误...") - safe_call(fetch_chnroute6, "生成chnroute6发生错误...") - else - log("geoip.dat 文件不存在,跳过规则生成。") - end - end - - if geosite_update_ok or force_generate then - if fs.access(asset_location .. "geosite.dat") then - safe_call(fetch_gfwlist, "生成gfwlist发生错误...") - safe_call(fetch_chnlist, "生成chnlist发生错误...") - else - log("geosite.dat 文件不存在,跳过规则生成。") - end - end -else - if gfwlist_update == "1" then - safe_call(fetch_gfwlist, "更新gfwlist发生错误...") - end - - if chnroute_update == "1" then - safe_call(fetch_chnroute, "更新chnroute发生错误...") - end - - if chnroute6_update == "1" then - safe_call(fetch_chnroute6, "更新chnroute6发生错误...") - end - - if chnlist_update == "1" then - safe_call(fetch_chnlist, "更新chnlist发生错误...") - end - - if geoip_update == "1" then - log("geoip 开始更新...") - safe_call(fetch_geoip, "更新geoip发生错误...") - remove_tmp_geofile("geoip") - end - - if geosite_update == "1" then - log("geosite 开始更新...") - safe_call(fetch_geosite, "更新geosite发生错误...") - remove_tmp_geofile("geosite") - end -end - -uci:set(name, "@global_rules[0]", "gfwlist_update", gfwlist_update) -uci:set(name, "@global_rules[0]", "chnroute_update", chnroute_update) -uci:set(name, "@global_rules[0]", "chnroute6_update", chnroute6_update) -uci:set(name, "@global_rules[0]", "chnlist_update", chnlist_update) -uci:set(name, "@global_rules[0]", "geoip_update", geoip_update) -uci:set(name, "@global_rules[0]", "geosite_update", geosite_update) -api.uci_save(uci, name, true) - -if reboot == 1 then - if arg3 == "cron" then - if not fs.access("/var/lock/" .. name .. ".lock") then - sys.call("touch /tmp/lock/" .. name .. "_cron.lock") - end - end - - log("重启服务,应用新的规则。") - uci:set(name, "@global[0]", "flush_set", "1") - api.uci_save(uci, name, true, true) -end -log("规则更新完毕...\n") diff --git a/small/luci-app-passwall/root/usr/share/passwall/rules/block_host b/small/luci-app-passwall/root/usr/share/passwall/rules/block_host deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/small/luci-app-passwall/root/usr/share/passwall/rules/block_ip b/small/luci-app-passwall/root/usr/share/passwall/rules/block_ip deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/small/luci-app-passwall/root/usr/share/passwall/rules/chnlist b/small/luci-app-passwall/root/usr/share/passwall/rules/chnlist deleted file mode 100644 index a85b7b6fc5..0000000000 --- a/small/luci-app-passwall/root/usr/share/passwall/rules/chnlist +++ /dev/null @@ -1,116286 +0,0 @@ -0.zone -00.net -000.link -000000.net -00042.com -00058.com -0006266.com -000700.com -000714.xyz -000793.com -00086.net -0008bet.com -000e.com -000pc.net -001.com -001060.com -00117163.xyz -001daima.com -001fzc.com -001jm.com -001job.com -001jp.com -001kd.com -001km.com -001pp.com -001pt.com -001sj.net -001tudou.com -001u.com -001wifi.com -001win5.cc -002049.com -00257.com -002574.com -0033.com -0037wan.com -00394.net -004218.com -004678.com -004837963.xyz -005.tv -00563.com -0058.com -00615.net -0066.com -007.pub -0073.com -00772229.com -00791.com -007card.vip -007gameapp10.com -007manhua.com -007shoes.com -007swz.com -007szx.com -007yx.com -008.bet -00817.com -0086l.com -0086org.com -008gj.com -008sport.com -0098118.com -009job.com -009y.com -00bx.com -00cdn.com -00cf.com -00cha.com -00cha.net -00hh.com -00ic.com -00it.net -00mi.com -00shu.com -00shu.la -00tera.com -00tu.com -00wv.com -00xu.com -00y9334535.com -01-cf.com -010.cc -010123456.com -010155.net -0101cdn.com -0101e.com -0101semi.com -0101ssd.com -010203.com -010237.com -01058511989.com -01095113.com -010b.com -010bianhu.com -010bjzs.com -010cb.com -010cns.com -010dell.com -010dh.com -010dsmzyy.com -010fang.net -010gaokao.com -010huaer.com -010huashi.com -010jianzhan.com -010lf.com -010shangpu.com -010time.com -010xiongdi.com -010zaixian.com -011.com -012233.com -0123401234.com -0123456789.com -0135135.com -01368.com -0138.com -014.cc -01401.com -014929.com -016sf.com -01bzw.us -01bzw.xyz -01caijing.com -01dou.com -01home.com -01hour.com -01hr.com -01hub.com -01isp.com -01isp.net -01jinhua.com -01jzw.com -01ki.com -01p.com -01rv.com -01skjj.com -01studio.cc -01teacher.com -01wb.com -01yo.com -01yuanma.com -01yun.com -01zenith.net -01zhuanche.com -01zk.com -01zph.com -02-89910011.com -020.com -020.net -02017.com -0208.com -020883.com -020910.com -02096998.com -020banjia.net -020bdqn.net -020gzjx.com -020h.com -020job.com -020xue.com -020ym.com -020zp.net -020ztc.com -021-116114.com -021.cc -021.com -021.net -0214.com -02156506666.net -02163.com -021bolang.com -021byb.com -021dianyuan.com -021dzjx.com -021east.com -021gjhb.com -021huamei.com -021huaying.com -021images.com -021images.vip -021ja.com -021jgyy.com -021jingwei.com -021kd.com -021lawfirm.com -021phone.com -021ren.com -021sports.com -021tk.com -021van.com -021wfz.com -021ye.com -021yongzhuo.com -021zhuang.com -021zsb.com -022003.com -022china.com -022meishu.com -022s.com -022shui.com -022sunny.com -022v.com -023086.com -023cj.com -023cq.cc -023dir.com -023dns.com -023fyy.com -023gmdk.com -023up.com -023xfyy.com -023xiaoyuan.com -023yts.com -023yy95.net -023yynk.net -023zp.com -02405.com -024365.com -0245.cc -0245.net -02456789.com -024888.net -024bj.com -024eps.com -024frde.com -024fuchan.com -024fuwu.com -024fzy.com -024heyi.com -024hh.com -024huada.com -024jsq.com -024zxw.com -025.com -025002.com -02516.com -025ct.com -025kaiyi.com -025nj.com -025njtf.com -025sc.com -025tffs.com -025tongfeng.com -025tuanjian.com -025tuopan.com -025xl.com -025zp.com -026hao.com -026idc.com -0270.cc -02712122.com -02727.com -02766667777.com -0279.net -027965888.net -027accp.com -027aige.com -027art.com -027chuxun.com -027chwl.com -027chx.com -027cloud.com -027eat.com -027g3nkf40.com -027hhl.com -027hpedu.com -027hpit.com -027htxt.com -027hxzy.com -027hy.com -027idc.com -027jsxh.com -027one.com -027qjxh.com -027qyy.com -027tianlong.com -027tytpf.com -027wcbyy.com -027yx.com -027zb.com -027zikao.com -027zpw.com -028-xhxgt.com -0283home.com -028brother.com -028csc.com -028desite.com -028f.com -028hema.com -028kuaidai.com -028ltzx.com -028office.com -028px.com -028pxw.com -028sh.com -028sjkj.com -028yyyy.com -029-xinxi.com -029200.com -02924.com -029558.com -029900.com -029g.com -029gl.com -029jiuda.com -029judao.com -029k.com -029lvwo.com -029shw.com -029taihe.com -029wsw.com -029xxw.com -029yjy.com -029zp.com -02a5ji7vso.com -02d.com -02hm.com -02lb.com -02lu.com -02pew65z89.com -02shu.com -02wan.com -02wq.com -02yc.com -030303.com -030mall.com -0310it.com -0311.cc -031130.xyz -03118888.com -0311hd.com -0311led.com -0311wifi.com -0316.cc -0316366.com -03167.com -0316yun.com -03241119.xyz -0328.com -033033.com -035110000.com -0351data.com -0351fdc.com -0352fang.com -0354rcw.com -0355fk.com -0356.com -0356f.com -0357hz.com -0359tv.com -0368.com -036yx.com -0370-2221999.net -0371jixie.com -0371lianghao.com -0371sou.com -0371wang.com -037398.com -0377auto.com -0378zz.com -0379home.com -0379wan.com -0391fc.com -03964.com -03dq.com -03fcw.com -03fdcw.com -03k.org -03supin.com -03tc.com -03u.com -03wy.com -03xs.com -04075k2xgr.com -0411.com -041101.com -0411ct.com -0411cxd.com -0411e.com -0411gh.com -0411hd.com -0411king.com -0411xslvshi.com -0411zssy.com -0415123.com -0415t.com -0416job.com -041799.com -0421wcbzk.com -0427.com -0430.com -0431cn.com -0434.cc -0437.com -0452e.com -0453.com -0454.cc -0455tv.com -0455zd.com -0456yun.com -0460.com -0470a.com -0472.com -0476vip.com -049.com -04ip.com -04qfw7m68o.com -04r0e3w2ac.com -05.gd -050400.com -051058.com -0510gcw.com -0510gtgc.com -0510syedu.com -0510zyw.com -0513.net -0513.org -0513011.com -0513zs.com -0514.com -0514.net -05148.cc -0514gcw.com -051591.com -0515auto.com -0515kf.com -0515smw.com -0515yc.com -0515yy.com -0516ds.com -0516k.com -0517.net -0517cw.com -0517man.com -0517w.com -0518home.com -0518yy.com -0523114.com -05236.com -052360.com -0523bbs.net -0523tx.net -0523zp.com -0523zz.com -05273.com -0527zp.com -0527zz.com -052yx.com -0531.com -053135.com -0531soso.com -0531wt.com -0532.com -053217.com -05321888.com -0533.net -0534.com -0534888.com -0535-0411.com -0535cp.com -0535you.com -0536job.net -0536qz.com -0536weixin.com -0537love.com -0537ys.com -0537yz.com -0539fc.com -053c.com -0543bbs.com -0543hr.com -054400.com -0546fdc.com -0546tx.com -0550.com -055110.com -055178.com -0551wl.com -0552jie.com -0553zsw.com -0554news.com -0554shdz.com -0554zp.com -0555fc.com -0557100.com -0558job.com -0559jqdq.com -055e8qn69j.com -0564abc.com -0564shw.com -0566cn.net -0566job.com -057.com -0570fc.com -0570zs.com -057191.com -0571crm.com -0571gszc.com -0571nh.com -0571pu.com -0571zp.com -0572h.com -0572home.com -0572zpw.com -0573fang.com -0573ol.com -0573ren.com -0574bbs.com -0574nbjg.com -0575.host -057555.com -0575bbs.com -0575jb.com -0575life.com -0575qs.com -0575zhuji.com -0576qq.com -0577-it.com -0577365.net -0577cnw.com -0577gyy.com -0577home.net -0577hr.com -0577job.com -0577qiche.com -0578rencai.com -05790.com -0579818.com -0579com.com -0579fw.com -057x.com -058idc.com -05927.com -0592dsw.com -0592jj.com -0592ui.com -0592xl.com -0594.com -0594.work -0594fake.com -0594hyw.com -0594sneaker.com -0595job.com -0595qz.com -0595rc.com -0596fc.com -0597kk.com -0597music.com -0597ok.com -0597seo.com -0598777.com -0598rc.com -0598yu.com -0599yx.com -05bq.com -05idc.com -05info.com -05sun.com -05vm.com -05wan.com -05wang.com -05youxi.com -0605.com -0609.com -0618.com -06192.com -0626.lol -063108.com -0631rc.com -0632idc.com -0634.com -0635.com -065201.com -06555.com -0660hf.com -0663.net -0663job.com -0668.com -06681.com -0668gz.com -067555.com -06abc.com -06climate.com -06game.com -06peng.com -06ps.com -06tn.com -07.la -070725.xyz -07073.com -07073h5.com -07073vr.com -0708.com -0712f.com -0712fang.com -0714.com -0715fc.com -0715rc.com -0715zp.com -0716fw.com -0716mr.com -07177.com -0718.cc -0718qp.com -0718xf.com -0722fc.com -0722zs.com -0724c.com -0725.com -0728f.com -0730188.com -0730news.com -073122.com -0731777.com -0731a.com -0731cfw.com -0731fdc.com -0731hds.com -0731i.com -0731job.com -0731mcw.com -0731pgy.com -0731tg.com -0731wan.com -0733news.com -0734zpw.com -0735.com -07358.com -0735jz.com -0735zx.com -0735zz.com -0736fdc.com -0736zp.com -0736zz.com -0738.cc -0738rc.com -073980.com -0739qq.com -0739tt.com -073img.com -073pic.com -07430743.com -0744114.com -0744tv.com -0746job.com -0746news.com -0750rc.com -0751.cc -075238.com -0752qc.com -0753zz.com -0755.net -07551.com -07551.net -0755400.com -075577777.com -0755888.com -0755910.com -0755bdqn.com -0755bzf.com -0755caibao.com -0755cts.com -0755fm.com -0755gty.com -0755hao.com -0755haoyu.com -0755hj.com -0755hz.com -0755jz.net -0755sszx.net -0755yf.net -0755zb.com -0756fang.com -0756idc.com -0756tong.com -0756zx.com -0757fc.com -0757info.com -0757p.com -0757rc.com -0758net.com -0759.pw -0759home.com -0759job.com -0759k.com -0759yc.com -0760.com -0760bw.com -0760rc.com -076299.com -076299.net -0762uu.com -0763f.com -076650.com -0768000.com -0769auto.com -0769che.com -0769net.com -0769pf.com -0769sun.com -0769sx.com -0769web.net -0769yp.com -0771.com -0771.tv -07712008.com -07715555555.com -07719999.com -0771cts.com -0771cyts.com -0771fukang.com -0771rc.com -0772fang.com -0772gcw.com -0772job.com -0772lou.com -07743988888.com -07752267777.com -07754255555.com -0775fcw.com -0775jzw.com -0775qc.com -0775yzf.com -0776.cool -07761.com -0776hr.com -0779-2678999.com -07792222222.com -07890.com -07908.com -0791abc.com -0791br.com -0791fuwu.com -0791look.com -0791qzw.com -0792jj.net -0792ju.com -0792lsly.com -0792u.com -0793.tv -07938.com -0794zp.com -0797122.com -0797auto.com -0797ayzp.com -0797pta.com -0797rs.com -0797tuan.com -0797zz.com -0798.cc -0799z.com -079mxd.com -07cn.com -07cn.net -07net01.com -07ren.com -07sh.com -07swz.com -080210.com -081.com -0813fs.com -0817.net -0817ch.com -0817tv.com -0818tuan.com -0818tuangou.com -0827ug.com -0830bbs.com -0831home.com -0832mh.com -0835.com -0835meiya.com -0838.com -0838che.com -0839zp.com -085.com -0852diaoyu.com -0853rc.com -0854job.com -0856st.com -0857job.com -0859job.com -0859qp.com -0859sy.com -086019.com -08644.com -0871aaa.com -0871gc.com -0873js.com -0877zp.com -0890.com -08952.com -08958e44r8.com -0898.net -089858.com -0898888.com -0898hq.com -0898mmf.com -0898uf.com -089u.com -08an.com -08ar.com -08c6.com -08cms.com -08ky.com -08px.com -08qx.com -08wojia.com -08zf.com -0904.cool -090expo.com -0912158.com -0912app.com -0912fdj.com -0913ss.com -0916001.com -0917.com -0917888.com -0917e.com -0919123.com -092394.com -093.com -0935e.com -0937.cc -0937.com -0937.net -0937js.com -0938edu.com -0938net.com -0939.net -093nd9.com -09451.com -094j35.com -095196555.com -0951job.com -0952xh.com -096663.com -0972xxg.com -0991dj.com -0991net.com -0992.cc -099913.com -09game.com -09p9z7d1h8.com -09shijue.com -0a2d.com -0baiwen.com -0car0.com -0cname.com -0d.work -0daily.com -0dian8.org -0dm.com -0du.net -0duw.com -0duxs.com -0e91wut86c.com -0easy.com -0fw.net -0g1s.com -0gouche.com -0he0.com -0hgame.com -0i-i0.com -0ka.com -0kee.com -0kkkkkt.com -0l23f6i4e8.com -0ms.one -0np1ydukvn.com -0olut8.com -0rl.cc -0rz.ltd -0s73o26p67.com -0s8s.com -0sm.com -0snd.cc -0u.com -0voice.com -0x3.com -0x3.me -0x6.me -0x7.me -0x9.me -0xaa55.com -0xff000000.com -0xffffff.org -0xiao.com -0xsky.com -0xue.com -0z.gs -1-123.com -1-b.tc -1-cs.net -1-du.net -1-fss24-s0.streamhoster.com -1-luxury.com -1-yuan.net -1.cc -100-tong.com -100.com -100.me -100.travel -10000.com -100000w.com -10000gd.tech -10000idc.net -10000job.com -10000link.com -10000post.com -10000shequ.com -10000tc.com -10000yao.com -10001wan.com -100024.xyz -1000360.com -10006.info -1000fun.com -1000my.com -1000phone.com -1000phone.net -1000plan.org -1000qm.vip -1000qs.com -1000thinktank.com -1000tuan.com -1000uc.com -1000xuexi.com -1000xun.com -1000zhu.com -10010.com -10010.net -10010.team -10010400.net -10010hb.net -10010js.com -10010ll.com -10010mx.com -10010nm.com -1001g.com -1001hw.com -1001p.com -100248.com -10029.com -10034.com -100520.com -100580.com -1008011.com -1008120.com -10086.com -10086.games -1008656.com -10086kuaixiu.com -100allin.com -100alpha.com -100ask.net -100ask.org -100audio.com -100bt.com -100chou.com -100chui.com -100cjc.com -100credit.com -100cup.com -100d3.com -100data.com -100du.com -100e.com -100eby.com -100eshu.com -100exam.com -100fang.com -100font.com -100gpw.com -100guoji.com -100hsl.com -100incense.com -100inn.cc -100intlschool.com -100ip.net -100jg.com -100jiapu.com -100kk.com -100ksw.com -100lake.com -100lbj.com -100legend.com -100loujia.com -100market.net -100md.com -100mian.com -100mmedia.net -100nets.com -100njz.com -100nong.com -100offer.com -100old.com -100pd.com -100pei.com -100ppi.com -100puzzles.com -100qu.net -100run.com -100shop.com -100shuai.com -100skin.com -100stone.com -100sucai.com -100szy.com -100t.com -100tal.com -100tiao1.net -100tmt.com -100top1.com -100try.com -100tv.com -100txy.com -100vr.com -100wa.com -100web.store -100weidu.com -100wen.com -100wsanguo.com -100xgj.com -100xhs.com -100xiao.com -100xin.com -100xuexi.com -100yangsheng.com -100ycdn.com -100ye.com -100ye.net -100yigui.com -100yingcai.com -100yiyao.net -100zd.com -100zhuang.com -100zp.com -101.com -1010-0000.com -10100.com -10100000.com -10101111.com -10101111cdn.com -1010gamer.com -1010jiajiao.com -1010jz.com -1010pic.com -1010sh.com -1010t.com -101505.com -10155.com -1015600.com -10185.com -101hair.com -101hr.com -101jiajiao.com -101weiqi.com -1024.ink -1024fuli.com -1024g.com -1024ie.com -1024nic.com -1024ss.com -1024tools.com -1024wl.com -1024zx.com -1026jz.com -102no.com -102pay.com -103153.com -10333.com -10349.com -1050qm.com -105mr.com -10639888.com -1065m.com -10666114.net -1073.com -1088hg41.com -108ai.com -108mir.com -108pk.com -108qi.com -108sq.com -108tian.com -109.com -109360.com -10966.net -109876543210.com -109ya.com -10bests.com -10fang.com -10gjkj.com -10gt.com -10guoying.com -10huan.com -10idc.com -10isp.com -10juhua.com -10moons.com -10p07v10o5.com -10pkpk.com -10qq.com -10r1.com -10s1.com -10sea.com -10soo.com -10tianqi.com -10vps.com -10yan.com -110.com -11000011.com -110160.com -110ask.com -110clwz.com -110disk.net -110hack.com -110route.com -110tm.com -111.com -111111111.com -1111lm.com -111237.com -1113.cc -1114.com -11159.com -11160066.com -11172222.com -111867.com -111com.net -111golf.com -111ppp999kkk.com -111wo.com -111yao.com -111zyw.com -112112.com -112192.com -1122.com -11222.com -112682.com -1128job.com -112seo.com -112wan.com -11315.com -11343.com -113989.com -113dh.com -113ya.com -114-91.com -1140086.com -1145858.com -11467.com -11478.com -114837322.xyz -114auto.com -114best.com -114blog.com -114cbd.com -114chn.com -114db.com -114dev.com -114dg.com -114dns.com -114dns.net -114dnss.com -114gh.com -114god.com -114guoshu.com -114hyw.com -114hzw.com -114ic.com -114ic.net -114jcw.com -114menhu.com -114mo.com -114my.com -114my.net -114naliyou.com -114oc.com -114photo.com -114piaowu.com -114pinpai.com -114qy.com -114s.com -114sf.com -114shouji.com -114study.com -114ttg.com -114ups.com -114yygh.com -114zhibo.com -114zpw.com -114zw.org -115.com -115155.xyz -1156.com -1156dns.com -115800.com -115cdn.com -115cdn.de -115cdn.net -115cloud.com -115cloud.net -115img.com -115meta.com -115seo.com -115vod.com -115wg.com -115zb.com -1163.com -1166.com -1168.tv -11684.com -116968.com -116cd.com -116cd.net -116daohang.com -116kj.com -116yx.com -117915.com -117trip.com -117y.com -1181.com -118114.net -118360.com -1188fc.com -118cy.com -118inns.com -118jm.com -118pan.com -118ttc.com -118wa.com -1190119.com -119120.org -11951.com -11992169.xyz -119958.com -119bid.com -119lora.com -119tx.com -119you.com -11bao.com -11bz.com -11dns.com -11fdj.com -11fldxn.com -11flow.com -11g.com -11gai.com -11haoka.com -11job.com -11job.net -11ka.com -11lx.com -11meigui.com -11pdf.com -11player.com -11rain.com -11space.com -11sun.com -11wow.com -11xotn7p.com -11yinyuan.com -11zhang.com -120.net -1204cm.com -120918.com -120ask.com -120askimages.com -120bid.com -120btc.com -120cihui.com -120fd.com -120it.com -120jg.com -120jhccz.com -120jinyi.com -120jxxh.com -120kid.com -120kq.com -120naotan.com -120scp.com -120sg.com -120shgc.com -120spd.com -120sun.com -120top.com -120x.net -121121.net -12114rc.com -1212.com -12120.net -12123.com -121314.com -121588.com -121ask.com -121down.com -121ghs.com -121mai.com -121mu.com -121wty.com -122521.com -12272.vip -122bid.com -122cha.com -122cn.net -122law.com -123-789.com -123.cc -12301.cc -1230539.com -12306.com -12306bypass.com -12308.com -12308com.com -1230t.com -123123.net -12315.com -12316cn.com -12317.com -12317wan.com -1231818.com -123242.com -123245.com -123254.com -123294.com -123295.com -123326.com -12333.com -12333.org -12333si.com -12333tc.com -123366.xyz -1233dns.com -1234.me -12341288.com -1234567.com -123456edu.com -123456wz.com -12345b.com -12345good.com -12345good.net -12345o.com -12348.net -12349.net -1234biao.com -1234i.com -1234n.com -1234sy.com -1234wu.com -1234wu.net -1234ye.com -1234yes.com -12354.com -12355.net -123624.com -123635.com -123641.com -123652.com -12365auto.com -12366.com -12366.net -12366cn.com -123684.com -12369zb.com -123773.com -123842.com -123860.com -123865.com -123912.com -123952.com -123957.com -123aa.com -123ad.com -123admin.com -123aoe.com -123baofeng.com -123bo.com -123boligang.com -123du.cc -123ems.com -123fc.com -123fh.com -123haitao.com -123haiwai.com -123hao.com -123hdp.com -123huaiyun.com -123juzi.com -123kanfang.com -123langlang.com -123meiyan.com -123menpiao.com -123nice.net -123ox.com -123pan.com -123panpay.com -123pans.com -123qibu.com -123qy.com -123shopee.com -123si.org -123slg.com -123ths.com -123u.com -123v.net -123webgame.com -123wk.com -123xfw.com -123xueshu.com -123yiche.com -123ypw.com -123yx.com -124866.xyz -125.la -125180.com -12530.com -12533.com -1256789.xyz -12580.com -12580.tv -12580life.com -125cn.net -125edu.com -125job.com -125p.com -125school.com -125visa.com -125y.com -125yan.com -126.am -126.com -126.fm -126.link -126.net -126blog.com -126disk.com -126doc.com -126g.com -126job.net -126qiye.com -127.com -127.net -1278721.com -127cdn.com -127xx.com -127z.com -128456.com -1288.tv -12880.com -128qd.com -128sy.com -128uu.com -12988.net -129t.com -12dzx.com -12gang.com -12h5.com -12ha.com -12kanshu.com -12ketang.com -12ky.com -12miao.com -12pk.com -12py879p9p.com -12sporting.com -12yao.com -12ym.com -13.gs -130014.xyz -130158.com -131.com -13100455400.com -13112.com -1312.vip -13124.com -13131313131.com -1314.io -1314520sz.com -1314gl.com -1314h.com -1314study.com -1314tkd.com -1314wallet.com -1314zf.com -1314zhilv.com -131cc.com -1322.com -132lawyer.com -1330.net -133191.com -1332vp.com -133300.com -13377608388.com -13384.com -133998.com -13482896776.com -1350135.com -135031.com -135139.net -135309.com -135650.com -13567.com -1356789.com -1357vip.com -135958.com -135995.com -135bianjiqi.com -135e.com -135editor.com -135edu.com -135plat.com -135yuedu.com -136.com -1360.com -136136.com -1362-rfwi.cc -13636.com -1366.com -13667703999.com -136bet.app -136fc.com -136hr.com -136pic.com -13707.net -137139.com -13720.com -13726936178.com -137365.com -1374.com -13793085458.com -13793277711.com -137home.com -137y.com -138.net -13800.net -13800100.co -13800100.com -1380898.com -138379.com -138gzs.com -138job.com -138pet.com -138top.com -138txt.com -138vps.com -139.com -139000.com -13901559172.com -1391.com -13910.com -139130.com -139135.com -1392189.com -13937180868.com -13980.com -1399vip.com -139cm.com -139ee.com -139erp.com -139game.com -139game.net -139play.com -139shop.com -139talk.com -139wanke.com -139y.com -139zhuti.com -13a.com -13cr.com -13e7.com -13ejob.com -13freight.com -13gm.com -13jue.com -13lm.com -13q19b8wgb.com -13qh.com -13s.co -13th.tech -13ww.net -13xiaoshuo.com -13yx.com -14033.live.streamtheworld.com -140414.com -1415926.com -1415926.mobi -142857.red -14294.com -143614.xyz -14498.com -1451cn.com -146368.com -147seo.com -147xz.com -148-law.com -1488.com -14885566.com -148com.com -148la.com -14944.net -14hj.com -14play.net -14xd.com -14ygame.com -150100.com -150170.com -150cn.com -151.hk -1510game.com -15111223344.com -15140.com -1515.website -15153.com -15166.com -151733.com -1518.com -151m.net -151rs.com -151top.com -151web.com -15201.com -15211223344.com -152500.com -1527ego.com -153.com -15311223344.com -153g.net -1545ts.com -155.com -155155155.xyz -1556.net -1559.com -155idc.com -156186.com -156669.com -156pay.com -156zy.suyunbo.tv -157110.com -157300.net -157seo.com -158566.com -1588.tv -158c.com -158jixie.com -158wf.com -159.com -15982.com -159shouji.com -15bl.com -15gg.com -15gift.com -15hr.com -15hr.net -15job.com -15kuaixiu.com -15lu.com -15ms.com -15re.com -15scsc.com -15sn.com -15wkd6i45lq3.com -15xdd.com -15yl.com -15yunmall.com -160.com -1601sy4ge0.com -160dyf.com -160job.com -160yx.com -16109.com -161580.com -1616.net -16163.com -1616n.com -16177.net -1617k.com -1618.com -1626.com -163.cm -163.com -163.fm -163.gg -163.link -163.lu -163.net -163110.com -1633.com -1633.store -1633d.com -163663.com -1637.com -163888.net -163adl.com -163cdn.com -163cms.com -163cn.link -163cn.tv -163cp.com -163cs.com -163fen.com -163guangdong.com -163guoqi.com -163gz.com -163henan.com -163hot.net -163hubei.com -163hunan.com -163img.com -163industry.com -163jiasu.com -163k.cc -163k.com -163kada.com -163lady.com -163liao.com -163mail.cc -163mail.com -163mail.net -163nasa.com -163nos.com -163ns.com -163pinglun.com -163py.com -163qb.com -163qikanlunwen.com -163qiyukf.com -163wh.com -163yu.com -163yun.com -164580.com -16466.com -165123.com -16587.com -165image.com -165image.vip -165zhuji.com -166.com -166.net -166161.com -166511.com -1666.com -1668.net -1668hk.com -166cai.com -166cdn.com -166dns.com -16757.com -16768.com -16789.net -168-hx.com -16816.com -168267xz.com -168338.com -16835.com -16838.com -1686888.com -1688.com -16885.com -16886000.com -168866.com -16888.com -1688988.com -1688b2b.com -1688du.com -1688e.com -1688eric.com -1688la.com -1688lucky.com -1688ru.com -1688s.com -1688tsw.com -1688visa.com -1688zhuce.com -16899168.com -168auto.com -168chaogu.com -168dc.com -168dmj.com -168dns.com -168hs.com -168job.com -168kaifu.com -168kk.com -168kn.com -168lyq.com -168manhua.com -168mlj.com -168moliao.com -168rcw.com -168tea.com -168tex.com -168trucker.com -168xiezi.com -168zcw.com -169.com -169163.com -16925500.xyz -169369.com -16949pcb.com -1696.com -169666.xyz -169700.com -16988.com -16999.com -169it.com -169jk.com -169ol.com -16app.tv -16boke.com -16bus.net -16buzhi.com -16c1.com -16ceshi.com -16ds.com -16fan.com -16first.com -16game.net -16hyt.com -16kang.com -16ker.com -16lao.com -16map.com -16p.com -16pic.com -16rd.com -16sucai.com -16type.com -16tz.com -16wl.cc -16xx8.com -16ye.com -17.com -170.com -170066.com -17025.org -170601.xyz -170hi.com -170mv.com -170tao.com -171026.com -17167.com -17173-inc.com -17173.com -17173.net -17173cdn.com -17173gc.com -17173ie.com -17173v.com -17173vr.com -17173vr.net -17173yx.com -17178.com -1717pk.com -1718china.com -1718world.com -171tax.com -171win.net -17207.com -172haoka.vip -172l.com -172tt.com -172xiaoyuan.com -173.com -173.hk -173.tv -1732.com -1732.net -17345.com -17348.com -17350.com -17351.com -17365h5.com -17365pc.com -1739705934745550.com -173cs.com -173eg.com -173fahao.com -173fc.com -173fh.com -173funny.com -173ie.com -173ie.net -173kan.com -173kw.com -173kz.com -173on.com -173shouyou.com -173shouyou.net -173sy.com -173tuku.com -173uu.com -173yeyou.com -173yeyou.net -173zb.com -173zy.com -1744.cc -17495.com -1755.com -17566.com -1758.com -175aa.com -175cinemas.com -175club.com -175game.com -175ha.com -175hd.com -175kh.com -175pt.com -175pt.net -175sf.com -175wan.com -175yo.com -17666.mobi -1766bbs.com -17673.com -1768.com -176quan.com -176web.net -1773.com -1778.com -177xfb.com -178.com -178.net -178198.com -178448.com -1787.ink -178768.com -178800.cc -178871.xyz -17888.com -178du.com -178hui.com -178linux.com -178rw.com -178yy.com -178zhaopin.com -179.com -179179.com -1797.cc -17986.net -17989.com -179cy.com -179e.com -17admob.com -17ai.me -17aifun.com -17b.net -17bang.ren -17bdc.com -17beijiang.com -17bianji.com -17biao.com -17bigu.com -17biying.net -17bt.com -17byh.com -17cdn.com -17ce.com -17chacha.com -17chdd.com -17cma.com -17coding.info -17d.co -17dao.com -17dap.com -17dawan.com -17dc.com -17ditu.com -17dm.com -17donor.com -17dp.com -17duu.com -17emarketing.com -17et.com -17ex.com -17f.co -17fandai.com -17fee.com -17feia.com -17fengguo.com -17fengyou.com -17fifa.com -17font.com -17foreign.com -17forex.com -17fpv.com -17g.com -17game.com -17gaoda.com -17getfun.com -17golang.com -17guagua.com -17gwx.com -17haibao.com -17hc.com -17house.com -17hpl.com -17huahua.com -17huang.com -17huayuan.com -17huo.com -17huodong.com -17ic.com -17itou.com -17ivr.com -17jc.net -17jiaoyu.com -17jiedu.org -17jita.com -17jzt.com -17k.com -17kan.cc -17kgk.com -17kjs.com -17koko.com -17kouyu.com -17kqh.com -17kss.com -17kuxun.com -17kxgame.com -17kzy.com -17l18w9s1z.com -17lai.org -17lai.site -17lele.net -17lewan.net -17lht.com -17liuxue.com -17ll.com -17look.com -17m3.com -17meb.com -17meiwen.com -17mf.com -17mqw.com -17ms.com -17neo.com -17oh.com -17ok.com -17only.net -17p.co -17pa.com -17palyba.com -17popo.com -17pr.com -17pw.com -17python.com -17qcc.com -17qiche.com -17qiqu.com -17qread.com -17qzx.com -17rd.com -17rd.net -17read.com -17relax.com -17roco.com -17sfc.com -17shanyuan.com -17shenqi.com -17smart.net -17sort.com -17startup.com -17sucai.com -17suzao.com -17swan.com -17syi.com -17sysj.com -17t.co -17tanwan.com -17taoca.com -17taoqu.com -17taotaoa.com -17taotaob.com -17taotaoba.com -17taotaoc.com -17tcw.com -17tigan.com -17tiku.com -17toushi.com -17track.net -17ttt.com -17tui.cc -17tx.com -17u.com -17u.net -17u1u.com -17u7.com -17ugo.com -17uhui.com -17uhui.net -17uoo.com -17usoft.com -17usoft.net -17utt.com -17uxi.com -17v5.com -17vsell.com -17wan7.com -17wanba.com -17wangdan.com -17wansf.com -17wanxiao.com -17wclass.com -17weike.com -17wendao.com -17whz.com -17win.com -17ww.cc -17xing.com -17xsj.com -17xueaoshu.com -17xueba.com -17xueshe.com -17xuexi.com -17xxl.com -17xxw.com -17y.com -17ya.com -17yaoqu.com -17ym.org -17you.com -17yund.com -17yunlian.net -17yunzhijiao.com -17yunzhijiao.net -17yy.com -17zhiliao.com -17zhuangxiu.com -17ziti.com -17zixue.com -17zjh.com -17zub.com -17zuoye.com -17zuoye.net -17zuqiu.com -17zwd.com -17zyxy.com -17zyxy.net -18.cm -18000000001.com -1800zz.com -180102.com -18023.com -18095.com -180disk.com -180qt.com -180yy.com -18176631811.com -18183.com -18183g.com -18183sf.com -181855.com -1818hm.com -181ps.com -181ue.com -18263.vip -182682.xyz -182yg.org -18318.com -18375.com -183me.com -183post.com -183read.cc -183read.com -1845p3hr95.com -18488.com -185185.com -1857qc.net -1860sf.com -1866.tv -18665348887.com -186688.com -1872001.com -1873game.com -1874.cool -18778450600.com -187997.com -188.com -188.net -188158.com -188187.xyz -188188.org -18837331771.com -18856.com -188628.com -1888.com.mo -18888.com -188bifen.com -188bio.com -188cdn.com -188hi.com -188lanxi.com -188mb.com -188naicha.com -188pi.com -188soft.com -188wan.com -188yd.com -189002.com -1892139.com -18937777777.com -18999666.xyz -189cha.com -189che.com -189cube.com -189ebuy.com -189jxt.com -189qas.com -189read.com -189sec.com -189smarthome.com -189store.com -189works.com -189young.com -18art.art -18av.com -18dao.info -18daxue.com -18dx.com -18ebank.com -18fzl.com -18guanjia.com -18imall.com -18inet.com -18ishop.com -18istore.com -18join.com -18juyou.com -18l.net -18ladys.com -18link.com -18ph.com -18q.co -18qh.com -18qiang.com -18qingqu.com -18snf.com -18t0f515a3.com -18touch.com -18wk.com -18yl.com -18zhongyao.com -18zhuanqian.com -18zn.com -18zp.com -18zw.com -19.com -190.vip -1900.live -19000yy.com -1900m.com -1903beer.com -1903it.com -1904bus.com -1905.com -190757.com -190cai.com -19183.live.streamtheworld.com -19196.com -1919game.net -191game.com -192ly.com -192sm.com -1931.com -1934xjzy.com -1937cn.com -1937nanjing.org -193839.com -193sihu.com -194610.xyz -1947.cc -1949idc.com -194nb.com -195155.com -195idc.com -196g.com -197.cc -197.com -197232.vip -197393.cc -1977088.com -197784.com -197854.com -19789.com -19799.com -198358.com -19840423.com -198434.com -198503.xyz -198526.com -1985cd.com -1985qg.com -1987619.com -1987cn.com -1987yp.com -1988.tv -19888.tv -198game.net -1990i.com -199238.vip -1993sc.com -199508.com -199604.com -1997sty.com -1998mall.com -1998n.com -1998r.com -1999year.com -199it.com -199u2.com -199yt.com -19c8.com -19call.com -19call.net -19cntv.com -19lou.com -19mini.com -19mro.com -19pay.net -19ued.com -19where.com -19x19.com -19yxw.com -19zhan.com -1a22.com -1amen.com -1ang.com -1aq.com -1auto.net -1b0y8tocaz24.com -1b17.com -1b1tech.com -1blx503444.com -1boshu1.com -1browser.net -1bus.net -1c0d1n1f0l1y.cc -1c38.com -1cae.com -1caifu.com -1caitong.com -1card1.com -1cdakj.com -1cent.xyz -1checker.com -1chong.com -1cloudsp.com -1cnmedia.com -1cno.com -1d1d100.com -1d9z.com -1dao99.com -1date1cake.com -1der-ad.com -1diaocha.com -1diary.me -1drv.ws -1dw9r53h79.com -1f11.com -1fangchan.com -1fenlei.com -1flash.net -1foo.com -1fooai.com -1g31.com -1gaifang.com -1gbru.com -1gcat.com -1gdoutian.com -1gesem.com -1ggame.com -1gow.net -1haigtm.com -1haitao.com -1hangye.com -1haogu.com -1hdru-hls-otcnet.cdnvideo.ru -1hkt.com -1hourlife.com -1hshop.com -1huamu.com -1huizhan.com -1hwz.com -1ij6ut.com -1iptv.com -1j1x.com -1j8.net -1jbest.com -1jh3a5806i.com -1jiesong.com -1jkbie336689.com -1ju.com -1juhao.com -1juzi.com -1k100.com -1k2k.com -1ka123.com -1kapp.com -1ke.net -1kic.com -1kkk.com -1kmxc.com -1kuang.com -1kx.me -1kxun.com -1kyx.com -1law.vip -1liantu.com -1lou.com -1lzs.com -1m.net -1m3d.com -1m85.com -1mall.com -1maoshua.com -1mdoutian.com -1menjin.com -1mfg.com -1miba.com -1mishu.com -1mit.com -1mjz.com -1mmbie336689.com -1mmed.com -1more.com -1ms.run -1mushroom.com -1mutian.com -1mxian.com -1n1v97c96h.com -1nami.com -1nfinite.ai -1nmob.com -1nongjing.com -1nyz.com -1o1o.xyz -1paibao.net -1plas.com -1pm2.com -1ppt.com -1pxs.com -1q2q.com -1qfa.com -1qia.com -1qianbao.com -1qianbao.net -1qirun.com -1qishu.com -1qit.com -1r0zwootq4.com -1r1g.com -1renshi.com -1safety.cc -1sapp.com -1shangbiao.com -1shoucang.com -1sj.tv -1skp.com -1smart.org -1sohu.com -1speaking.com -1st56.com -1stacks.net -1stchip.com -1styan.com -1sw12mvkbp.com -1szq.com -1t.gs -1t1t.com -1tai.com -1tdw.com -1textile.com -1ting.com -1tjob.com -1tong.com -1toon.com -1tu-design.com -1tu.com -1tuikem.com -1uuc.com -1w1w314c71.com -1wang.com -1xbet88.com -1xinzulin.com -1xlala.cc -1xmb.com -1y.com -1y0g.com -1y2y.com -1yabc.com -1yangai.com -1yaoda.com -1yb.co -1ycdn.com -1yd.me -1ydt.com -1yinian.com -1ysh.com -1yunhui.com -1yyg.com -1zhangdan.com -1zhanshou.com -1zhao.org -1zhe.com -1zhengji.com -1zhixue.com -1ziyou.com -1zj.com -1zjob.com -1zu.com -2-33.com -2-class.com -2-mm.net -20001104.com -2000200.com -2000211.com -200022.xyz -2000240.com -2000888.com -2000dns.com -2000new.com -2000y.net -20021002.xyz -2003n.cc -2003n.com -2006q.com -20087.com -2008php.com -2008red.com -2008zwe.com -200call.com -200wan.com -200y.com -200zi.com -201061.com -201201.com -2012jh.com -20130123.com -201314520.net -2014.mobi -20150.net -201551.com -2016os.com -2016ruanwen.com -2016win10.com -20170228.com -20171117.com -20174555.com -20188.com -2018zjjly.com -20191209.xyz -2019cdac.com -201g.com -202014.xyz -202030.com -202271.xyz -2022cdnpl.com -2023.com -2023game.com -2024qq.com -2025.net -202wan.com -203328.com -2048sj.com -2049baby.com -204cloud.com -2050life.com -206zz.com -207xz.com -2080ly.com -2093hd.com -2099xs.com -20fl.com -20g0.com -20images10.com -20images21.com -20images25.com -20images7.com -20ju.com -20kf.com -20on.com -20planet.com -20qu.com -20xs.org -20xue.com -20xy.cc -20yy.com -20z.com -21-sun.com -210997.com -210z.com -2113.com -2114.com -2115.com -211600.com -21191.vip -2119915.com -211cad.com -211hr.com -211ic.com -211lx.com -211zph.com -212200.com -212300.com -212313.com -2125.com -21263.net -2133.com -2133bbs.com -21373.com -2144.com -2144gy.com -2155.com -215soft.com -2165588.com -216tt.com -217.net -2177s.com -217wo.com -218318.com -218996.com -21ask.com -21bcr.com -21beats.com -21bowu.com -21bx.com -21cake.com -21cbr.com -21cccc.com -21ccnn.com -21cctm.com -21ccvn.com -21cd.com -21cloudbox.com -21cn.com -21cn.net -21cnentmail.com -21cnev.com -21cnhr.com -21cnimg.com -21cnjy.com -21cnjy.net -21cnsales.com -21cnsungate.com -21cntx.com -21cos.com -21cp.cc -21cp.com -21ctest.com -21cto.com -21dagong.com -21datasheet.com -21deal.com -21dianyuan.com -21dida.com -21dtv.com -21ejob.com -21eline.com -21epub.com -21etm.com -21fid.com -21food.com -21fv52efm1.com -21gold.org -21good.com -21hifi.com -21hospital.com -21hyzs.com -21ic.com -21icsearch.com -21ido.com -21jiao.net -21jingji.com -21js.com -21kan.com -21ks.net -21kunpeng.com -21ld.com -21maoyi.com -21mcu.com -21mmo.com -21mould.net -21na.com -21our.com -21qa.net -21qphr.com -21qupu.com -21rv.com -21shhr.com -21shipin.com -21shte.net -21sjmg.com -21sla.com -21smov.com -21so.com -21softs.com -21spv.com -21tb.com -21teacher.com -21tjsports.com -21tx.com -21tyn.com -21uv.com -21van.com -21viacloud.com -21vianet.com -21voa.com -21wecan.com -21wenda.com -21wenju.com -21xc.com -21xcx.com -21xfbd.com -21xianhua.com -21xl.info -21xuema.com -21yangjie.com -21yibiao.com -21yq.com -21ytv.com -21zbs.com -22.com -220840.com -220c.com -221234.xyz -221400job.com -22145.com -2217.com -221700.com -222.com -22221111.com -222579.com -22283.live.streamtheworld.com -222abc999abc.com -222bz.com -222i.net -222pcb.com -222wy333bb.com -22336699.xyz -2238202.com -2239.com -22393.live.streamtheworld.com -2243.com -22442400.com -2247.com -224700.com -224837439.xyz -224m.com -225.cc -2250329.com -2255039.com -2258.com -2259.com -225image.com -225image.vip -2265.com -226500.com -226531.com -226969.xyz -226yzy.com -2280.com -2281wa.ren -2288.org -228job.com -229.com -2295.com -2298.com -22ba.com -22baobei.com -22bw.com -22dm.com -22edu.com -22hd.com -22ja.com -22lianmeng.com -22lrc.com -22mt.in -22n.com -22net.com -22plc.com -22pq.com -22shop.com -22tianbo.com -22tj.com -22vape.com -22vd.com -230890.com -231083.com -231122.com -2317.com -2321111.com -232232.xyz -2323u.com -2323wan.com -232485.com -2329.com -233.com -2330.com -233000.com -2333333333333.com -2333u.com -23356.com -233863.com -2339.com -233id.com -233leyuan.com -233lyly.com -233netcloud.com -233netpre.com -233netpro.com -233py.com -233xyx.com -2344.com -2345.gd -2345.net -23456789.xyz -23456v.com -2345cdn.net -2345download.com -2345ff.com -2345ii.com -2345li.com -2345mbrowser.com -2345soso.com -234du.com -234f.com -234fang.com -236306.com -236400.com -236501.xyz -2366.com -23673.com -236z.com -2375sj.com -238000.net -238090.com -239300.net -23bei.com -23book.com -23class.com -23cube.com -23dns.com -23do.com -23du.com -23img.com -23job.net -23ks.com -23luke.com -23mofang.com -23qb.com -23qb.net -23qcw.com -23sk.com -23txt.com -23us.so -23us23us.com -23uswx.com -23uswx.info -23uswx.net -23wow.com -23wx.cc -23wx.io -23xsw.cc -23ye.com -23yy.com -23zw.com -240yx.com -246546.com -246ys.com -2478.com -248.com -248xyx.com -249m.com -24av.com -24biao.com -24dq.com -24geban.com -24haowan.com -24hmb.com -24jiankong.com -24k99.com -24kplus.com -24maker.com -24money.com -24om.com -24shi.cc -24th.com -24timemap.com -24u7tos.com -24zbw.com -250.cc -2500.tv -25000li.com -2500city.com -2500sz.com -250340.com -251400.com -2523.com -25285577.com -253.com -25395.vip -253952.com -253u.com -2541.com -254254.com -254game.com -255616.com -255star.com -256app.com -256cha.com -25752.com -258.com -258288.com -25847.com -25892.com -258ch.com -258en.com -258fuwu.com -258sd.com -258weishi.com -25992.com -25az.com -25dir.com -25dx.com -25game.com -25nc.com -25pp.com -25pyg.com -25q7ekcc67.com -25rk.com -25tmw.com -25un.com -25wy.com -25xg.com -25xianbao.com -25xm.com -25xz.com -25yi.com -25yz.com -260.net -260068.com -2628liao.com -2629.com -263-mail.net -263.com -263.net -2639911.com -263cv.net -263em.com -263fc.com -263h.com -263idc.com -263idc.net -263live.net -263vps.com -263xmail.com -263y.com -264006.com -264321.com -264400.com -265.com -26582.vip -26595.com -265g.com -265h.com -265xh.com -266.com -266.la -266wan.com -2671111.net -2677dl.com -2678.com -267pd1841t.com -2686.com -2688.com -268v.com -269.net -26923.com -26duc.com -26host.com -26joy.com -26ks.cc -26s.com -26youxi.com -270che.com -270top.com -27195.vip -272500.com -27270.com -272955.com -27399.com -273u.com -27492.com -275.com -2755005.com -277sy.com -27813000.com -278838mcu.com -278wan.com -279.tv -279love.com -279tt.com -279wo.com -27al.com -27cat.com -27daili.com -27dt.com -27l.com -27tj.com -27ws.com -27xuexiao.com -28.bet -28.com -281010.com -28126.cc -281669.vip -281826.vip -2827.com -28283.com -282g.com -2835177ccc.com -283d.com -2848168.com -28493.com -2850.com -2858999.com -285u.com -28715.vip -288idc.com -289.com -2898.com -28beiduo.com -28gl.com -28gua.com -28ka.com -28khy.com -28qp.com -28rv.com -28sog.com -28tui.com -28yt.com -28z9.com -28zhe.com -29029.com -2903866.net -291315.com -2918.com -2925.com -292775.com -29293.com -293.net -29592.net -296u.com -29797.com -2980.com -299906.com -29dnue.com -29nh.com -29wt.com -29xf.com -2agi.net -2ai2.com -2ai2.net -2amok.com -2apzhfa.xyz -2av7.com -2b26.com -2bkw.com -2broear.com -2bulu.com -2bzq.com -2caipiao.com -2ccc.com -2chcn.com -2cloo.com -2cname.com -2cq.com -2cshop.com -2cto.com -2cubeglobal.com -2cycd.com -2cycomic.com -2cyxw.com -2cyzx.com -2d3d5d.net -2danji.com -2dcode.biz -2df.me -2dfire.com -2dfire.info -2dmaker.com -2dph.com -2du.net -2dyou.com -2e56m039tk.com -2ed5d.com -2eka.cloud -2f.com -2fc5.com -2fz1.com -2gdt.com -2gei.com -2haha.com -2haitao.com -2handsmt.com -2haohr.com -2heng.xin -2hu.net -2hua.com -2i1i.com -2ibook.com -2ic.cc -2ita.com -2itcn.com -2j88.com -2jianli.com -2k2k.com -2kb.com -2kfb.com -2kk.cc -2kno.com -2ktq.com -2kxs.info -2kxs.org -2kxy.com -2l4938221x.com -2lian.com -2liang.net -2ll.co -2loveyou.com -2m2j.com -2m3m.com -2ma2.com -2mdn-cn.net -2mjob.com -2mould.com -2mpq9iu440.com -2muslim.com -2o.cx -2or3m.com -2p.com -2pcdn.com -2q10.com -2qsc.com -2qupu.com -2r3r.com -2rich.net -2sdx.com -2sey.com -2sjc.com -2sonar.com -2sx.net -2t58.com -2taobao2jd.com -2tianxin.com -2tt.net -2tubaobao.xyz -2tx.com -2umj.com -2ut7.com -2v8d.com -2v9t3xf9z2.com -2vfun.com -2w.ma -2weima.com -2xiazai.com -2y9y.com -2ychem.com -2yq.org -2yuanyy.com -2yup.com -2yx8.com -2z96vx20bx.com -2zhan.com -2zhk.com -2zimu.com -2zzt.com -3-3.me -3-hospital-cqmu.com -3.biz -30.net -3000.com -300033.info -30006124.xyz -3000api.com -3000idc.com -3000soft.net -3000test.com -3000ways.com -3000xs.cc -3001.net -300113.com -300280.com -300624.com -3008268.com -300hu.com -300m-team.com -300ppt.com -300zi.com -3011.net -301688.com -301cc.cc -301mba.com -3023.com -302302.xyz -303c.com -3044.com -306t.com -308.tv -3099.net -30aitool.com -30c.org -30cgy.com -30daydo.com -30fun.com -30gaokao.com -30ka.com -30play.com -30post.com -30sche.com -30th-feb.com -30w.co -31062gs7f9.com -310game.com -310s-2520.com -310tv.com -310v.com -310v.net -310win.com -311.biz -311100.com -311wan.com -312000.net -31260939.com -312green.com -313033.com -313515.com -314pay.com -315008.com -3150315.com -3152018.com -3158.com -3158bbs.com -315958.com -315banzhao.com -315che.com -315code.com -315dian.com -315fangwei.com -315hyw.com -315i.com -315img.com -315mro.com -315online.com -315rx.com -315sc.org -315tech.com -315tsz.com -31609.com -31668.com -316watches.com -3171688.com -317608.com -31793.com -317hu.com -318595.xyz -3188.la -318ek.com -318jskyycq.com -318yishu.com -3198.com -31amjs.com -31bzjx.com -31cg.com -31d.net -31doc.com -31expo.com -31fabu.com -31food.com -31games.com -31gamestudio.com -31huiyi.com -31i9ti.com -31idc.com -31jf.com -31jgj.com -31knit.com -31m49.com -31maque.com -31meijia.com -31ml.com -31mold.com -31ns.info -31ppt.com -31pump.com -31rent.com -31sf.com -31travel.com -31wj.com -31xj.com -31xs.net -31yarn.com -31yr.com -320921.com -320g.com -321.net -321002.com -321009.com -32109.com -321274.com -321ba.com -321cad.com -321cy.com -321fenx.com -321go.com -321key.com -321mh.com -321sq.com -321tips.com -321zou.com -322799.com -322h.com -322wl.com -3230.com -32331.vip -3234.com -3235587.com -3237.com -325802.net -3259.com -325999.com -32768k.net -3280.com -32800.com -3286.cc -328f.com -328vip.com -3290.com -32974z0361.com -32bm.cc -32cd.com -32ka.com -32kan.com -32r.com -32rsoft.com -32us.com -32wan.com -32xp.com -33.com -3304399.com -3304399.net -33105.com -331234.xyz -3312345.com -3320.net -3321.com -3322.cc -3322.net -3322.org -3322032.com -33226163.xyz -3323.com -33230.org -3323399.com -3328.tv -332831.com -333-555.com -333.com -33315.com -333232.xyz -333333.com -333333.org -3335665.com -33360.com -333666999.club -3336683.com -3337726.com -3337756.com -3337782.com -33380xl.com -333915.com -3339999.net -3339auto.com -333a51.app -333a58.app -333bbb777kkk.com -333cn.com -333com85.app -333com89.app -333f.com -333iy.com -333job.com -333ku.com -333rh.com -333y3.com -33442121.com -334433.xyz -3344u.com -334837632.xyz -33519.com -3356666.com -3359.com -33591.com -3361.com -33655.net -3366.com -3366.net -3366812ccc.com -336685.com -336688.net -3366886633.com -3366img.com -3366ok.com -336woool.com -337000.com -337y.com -3387.com -338888.net -3389dh.com -33988.net -33aml.com -33app.net -33bus.com -33dy.cc -33erwo.com -33fang.com -33ip.com -33iq.com -33jianzhi.com -33lc.com -33ly.com -33map.com -33map.net -33oncall.com -33out.com -33oz.com -33subs.com -33tool.com -33trip.com -33yq.com -34.com -340888.com -342200.com -342jinbo.com -34347.com -343480.com -345123.xyz -3454.com -3456-1.vip -3456.cc -3456.com -3456.tv -34580.com -345fk.com -345huishou.com -345idc.com -346.com -3464.com -346888.com -34lou.com -34wl.com -34xian.com -35.com -35.net -350.com -350.net -3500.com -350200.com -350211.net -3503.com -350abc.net -350c.com -3516w.com -35195.vip -352.com -3520.net -352200.com -3525.com -353233.com -3533.com -353300.com -35335.com -3536.com -3551.com -355xx.com -356123.com -35617.vip -35667.com -3566t.com -356884.com -357.com -357global.com -358.com -359203.com -35941.com -3595.com -359798114.xyz -359mai.com -35app.com -35ba.com -35banjia.com -35d1.com -35dalu.com -35dxs.com -35go.net -35hw.com -35inter.com -35jk.com -35lz.com -35nic.com -35pic.com -35sf.com -35xss.com -35zww.com -36-7.com -36.cc -36.la -360-g.net -360-game.net -360-jr.com -360.com -360.net -3600.net -3600d.com -360114.com -360118.com -360424.com -360500.com -3608.com -360abc.com -360adlab.com -360adlab.net -360adlab.org -360aiyi.com -360anyu.com -360boclub.com -360bsafe.com -360buy.com -360buyimg.com -360buyinternational.com -360byd.com -360bzl.com -360caifu.com -360cdn.com -360changshi.com -360che.com -360chezhan.com -360chou.com -360cloudwaf.com -360daikuan.com -360ddj.com -360dlcdn.com -360doc.com -360doc.net -360doc1.net -360doc11.net -360doc18.net -360doc2.net -360doc21.net -360doc22.net -360doc25.net -360doc30.net -360doc33.net -360doc35.net -360doc36.net -360doc37.net -360doc4.net -360doc7.net -360docs.net -360doo.com -360down.com -360drm.com -360eol.com -360gann.com -360gem.com -360gogreen.com -360gongju.com -360gongkao.com -360gtm.com -360guanai.com -360hapi.com -360hifi.com -360hitao.com -360hqb.com -360humi.com -360huzhubao.com -360hx.com -360hy.com -360hyzj.com -360ic.com -360imgcdn.com -360insurancemall.com -360jianzhu.com -360jie.com -360jinrong.net -360jk.com -360jq.com -360jrjietiao.com -360jrkt.com -360kan.com -360kcsj.com -360kj.net -360ksbd.com -360kuai.com -360kuaixiao.com -360kuaixue.com -360kxr.com -360lion.com -360lj.com -360lnk.com -360loushi.com -360midi.com -360mkt.com -360os.com -360panyun.com -360panyun.net -360powder.com -360qc.com -360qd.com -360qhcdn.com -360qikan.com -360qikan.net -360qnw.com -360qws.com -360qyaq.com -360safe.com -360safedns.com -360sdn.com -360shouji.com -360shouzhuan.com -360shuke.com -360shuoshuo.com -360sides.com -360sides.net -360simg.com -360sjrom.com -360sky.com -360so.com -360so.net -360sok.com -360sou.com -360sou.net -360soucha.com -360sousou.com -360sportwatches.com -360src.com -360sres.com -360stamp.com -360taojin.com -360tianma.com -360tong.net -360top.com -360totalsecurity.com -360tpcdn.com -360tres.com -360tuan.com -360u9.com -360underwear.com -360uu.com -360vcloud.com -360vcloud.net -360vrzy.com -360webcache.com -360wenmi.com -360worldcare.com -360wscdn.com -360wulian.net -360wyw.com -360wzb.com -360wzws.com -360xh.com -360xiaos.com -360xiehui.com -360xinyongka.com -360xkw.com -360xlab.com -360xlab.net -360xlab.org -360xyws.com -360yao.com -360ybj.com -360yijia.com -360youtu.com -360yuanshuo.com -360yuxue.com -360zebra.com -360zhileng.com -360zhushou.com -360zhyx.com -360zmr.com -360zqaq.com -360zqf.com -360zuowen.com -360zuqiu.com -36130.com -361757.com -3618med.com -361cv.com -361dai.com -361mogame.com -361rv.com -361sport.com -361zhao.com -362.cc -36267.vip -363.com -363.hk -363.net -363120.com -363322014.com -3636.tech -363635.com -363u.com -364000.com -365.com -365.hk -36500.net -365128.com -365135.com -3652.com -36524hua.com -36543.com -365500.com -3656.com -36578.com -365960.com -365autogo.com -365azw.com -365bh.cc -365bj.com -365bmc.com -365bmw.com -365book.net -365cego.com -365cgw.com -365chanlun.com -365chiji.com -365css.com -365cyd.com -365cyd.net -365daan.com -365daygo.com -365dhw.com -365diandao.com -365digitalonline.com -365ditu.com -365editor.com -365eme.com -365essay.com -365f.com -365fanyi.com -365gangqin.com -365gcd.net -365good.cc -365heart.com -365hele.com -365hf.com -365htk.com -365huaer.com -365huangjin.com -365ibuy.com -365icl.com -365ime.com -365j.com -365jia.com -365jiankang.com -365jilin.com -365jq.com -365jw.com -365jz.com -365kan.tv -365kandian.com -365key.com -365kl.net -365liye.com -365master.com -365matrix.com -365mmjg.com -365mx.com -365nongye.com -365pcbuy.com -365pingxuan.com -365pk.com -365pp.com -365pr.net -365pub.com -365qipai365.com -365rili.com -365sec.com -365shequ.com -365sky.com -365sydc.com -365ta.com -365time.com -365tkt.com -365ttcz.com -365tvip.com -365vip.com -365world.com -365xiazai.com -365xs.la -365xuet.com -365yarn.com -365yg.com -365you.com -365yyf.com -365zhaopin.com -365zhuanrang.com -365zmw.com -365zsw.net -365zzx.com -36612345.com -3663.com -366300.com -366666.net -36683.com -3669yx.com -366club.com -366ec.com -366ec.net -366kmpf.com -366translation.com -36706.com -3673.com -367edu.com -36840.com -36885.vip -3688km.com -368mall.com -368tea.com -369110.xyz -36932.com -36939.net -369785.com -3699.cc -3699.co -3699wan.com -369cha.com -369hui.com -36aw.com -36dianping.com -36dj.com -36dong.com -36hjob.com -36jr.com -36kr.com -36kr.net -36krcdn.com -36krcnd.com -36pnes36t0qs.com -36qp.com -36tw.com -36ve.net -36yc.com -36zpp.com -37.com -37021.com -370fd.com -371.com -371.net -3710167.com -37163.com -371bus.com -371love.com -37201.com -3721.vip -3721520.com -3722.com -37274.com -3733.com -3733game.com -3737.com -3737k.com -373f.com -373net.com -373yx.com -37439.com -3761.com -37937.com -379art.com -379bst.com -37biao.com -37bjw.com -37cos.com -37cu.com -37dh.com -37game2.com -37gjw.com -37gogo.com -37hr.com -37k.com -37laboratory.com -37med.com -37pps.com -37su.com -37swan.com -37tang.com -37tgy.com -37wan.net -37wan.one -37wanimg.com -37wanwan.com -37wanwancdn.com -37women.com -37www.com -37wxwl.com -37x4kf0q4n.com -37yzy.com -37zone.com -37zp.com -3800920.com -3800j.com -380852.com -380871.com -38109222.com -3816.net -3817.com -381pk.com -3839.com -3839apk.com -3839app.com -3839app.net -3839img.com -3839pay.com -3839pic.com -3839vc.com -3839video.com -383k.com -383yun.com -3851120.com -3856.cc -385k.cc -38735.vip -388g.com -3892222.com -38999h.vip -38blog.com -38ejed.com -38film.com -38hack.com -38hot.net -38hp.com -38hzt.com -38mhw.com -38xs.com -38zp.com -39.com -39.net -390seo.com -391065.com -3911.com -391k.com -392766.net -393.com -3937.com -3939339.com -394394.com -39655.com -3975ad.com -3975ad.xyz -3975app.com -3975cdn.com -3977s.com -3987.com -3993.com -399s.com -39amjs.com -39ask.net -39center.com -39clean.com -39cs.com -39d83s.com -39dg.com -39ej7e.com -39fei.com -39fengliao.com -39h83s.com -39hd.com -39health.com -39jks.com -39kan.com -39kf.com -39meitu.com -39nj8382uq.com -39shubao.com -39shuwu.com -39sk.com -39txt.com -39yst.com -3a2studio.com -3a3b3c.com -3a4.net -3a4b5c.com -3ait.com -3alv.com -3aok.com -3apz.com -3aqj.com -3avox.com -3b2o.com -3bag.ru -3bf.cc -3bu.com -3c2p.com -3c3t.com -3chongmen.com -3cjob.com -3conline.com -3cpp.org -3ct.cc -3d-apollo.com -3d-chips.com -3d-gold.com -3d-medicines.com -3d-stereovision.com -3d2000.com -3d66.com -3d9r.com -3daima.com -3dbody.com -3dbt.com -3dbuyu.com -3dbuyu.net -3dcat.live -3ddayin.net -3ddaz.com -3ddl.net -3ddl.org -3deazer.com -3debut.com -3dfcs.com -3dgali.com -3dgenomics.org -3dhao.com -3dhoo.com -3dinlife.com -3djulebu.com -3dkunshan.com -3dllc.cc -3dllc.com -3dly.com -3dmaxvip.com -3dmgame.com -3dmgame.hk -3dmgame.net -3dmjiasu.com -3dmomoda.com -3dmxku.com -3dnew.com -3doe.com -3drrr.com -3dsdce.com -3dsjw.com -3dsnail.com -3dtakers.com -3dtank.com -3dtoo.com -3dtvbits.org -3dwebyx.com -3dwhere.com -3dxt.com -3dxuan.com -3dxy.net -3dzyw.com -3e.net -3echemical.com -3edns.com -3edu.net -3elife.net -3etimes.com -3eyes.org -3fahudong.com -3fang.com -3fantizi.com -3fcl8.net -3fda.com -3fzipper.com -3g-edu.org -3g368.com -3g48.com -3g567.com -3gbizhi.com -3gcj.com -3gdisk.com -3gifs.com -3glasses.com -3gmfw.com -3gogogo.com -3gosc.com -3gpk.net -3gqqw.com -3gsdxu.com -3gsou.com -3gwoool.com -3gxk.net -3h.com -3h1i.com -3h3.com -3h77.com -3haovip.com -3healthcare.com -3heyun.com -3hhinvestment.com -3hmedicalgroup.com -3hmlg.com -3incloud.com -3ins.net -3j3f.com -3jdh.com -3jhuyu.com -3jidi.com -3jlm.com -3jrx.com -3jzh.com -3k.com -3k3cn.com -3ke.cc -3kew.com -3kid.com -3kismet.com -3kjs.com -3kk.com -3kmq.com -3ko.com -3kr.com -3kyi.com -3kzhushou.com -3labtest.com -3laohu.com -3lbrand.com -3lengjing.com -3lmeter.com -3lsoft.com -3m099cey43.com -3mbang.com -3mh0yvx.com -3miao.net -3miko.xyz -3mtw.com -3mu.me -3muzn.com -3n1b.com -3nbb.com -3nfood.com -3ny8.com -3piaochong.com -3png.com -3polar.com -3poo.com -3pw.net -3q2008.com -3qdu.com -3qdu.net -3qdu.org -3qhouse.com -3qit.com -3qj.com -3qled.com -3qqq.net -3quan.com -3qwe.com -3qzone.cc -3r5y.com -3rcd.com -3renhe.net -3renwx.com -3richman.com -3rotber.com -3rroll.com -3s-guojian.com -3s.work -3s001.com -3s78.com -3scard.com -3see.com -3sjt.com -3slift.com -3snews.net -3songshu.com -3sribu.com -3srobotics.com -3stl.com -3sunway.com -3swg.com -3thiku.com -3tilabs.com -3tinkers.com -3tmall.com -3treesgroup.com -3tstore.com -3u.com -3unshine.com -3uol.com -3us.com -3uww.cc -3uww.com -3v.do -3vjia.com -3vjuyuan.com -3vsheji.com -3vyd.com -3wcoffee.com -3wen.com -3wfocus.com -3wft.com -3wka.com -3wmm.com -3wyk.com -3x6gr4f829.com -3x7.com -3xgd.com -3xiaoniao.com -3xiazai.com -3xinhome.com -3xyg.com -3y7h.com -3yakj.com -3yoqu.com -3yt.com -3yt.la -3yun.net -3ywepvs8n1.com -3yx.com -3zbsy.com -3zhijk.com -3zhm.com -3zmuseum.com -3zonegame.com -4-xiang.com -4.plus -400-lighting.com -400.com -40000-30000.com -4000011520.com -4000022282.com -4000034168.com -4000066666.com -4000156651.com -4000278400.com -4000286188.com -4000500521.com -4000730138.com -4000773040.com -400078.com -4000892990.com -4000931114.com -4000979797.com -4001006666.com -4001113900.com -4001180057.com -400123.com -4001581581.com -4001817899.com -4001890001.com -4001961200.com -400301.com -400332.com -40035.com -400388.com -4006055885.com -4006216888.com -4006300457.com -4006339177.com -4006510600.com -4006631958.com -4006695539.com -4006758160.com -4006787252.com -4006800660.com -4006806555.com -4006906600.com -4007051668.com -4007108885.net -4007112366.com -4007123123.com -4007777958.com -4008-197-197.com -400800.vip -4008000000.com -4008005216.com -4008075595.com -4008100800.com -4008103103.com -4008107107.com -4008109886.com -4008117117.com -4008123123.com -4008258399.com -4008338788.com -4008600011.com -4008618618.com -4008787706.com -4008800016.com -4008824365.com -4008863456.com -4008880999.com -4008880999.net -4008885818.com -4008cn.com -4009.com -4009515151.com -4009870870.com -4009991000.com -400cx.com -400dianhua.com -400gb.com -400ja.com -400kaoyan.vip -400lyw.com -400num.com -400qikan.com -400taocan.com -400vv.com -400web.com -4020.la -40407.com -404886.com -404mzk.com -404wan.com -404youxi.com -405400.com -407wan.com -4080517.com -408399.com -408399.net -40images10.com -40images15.com -40images16.com -40images8.com -40sishi.com -40xk.com -411-hospital.com -41113.com -41188.com -411au.com -413xkyd.com -414500.net -417628.org -4177.com -41818.net -419600.com -41game.com -41gw.com -41huiyi.com -41ms.com -41wan.com -41xt.com -42144.com -422425.xyz -4234cdn.com -42353.com -423down.com -4243.net -425300.co -425yx.com -426.ltd -4275.com -429006.com -42how.com -42trip.com -42verse.shop -42xz.com -43104.com -4311.com -432520.com -435000.com -435200.com -4355.com -43578.com -436400.com -4366.com -4366aa.com -4366ga.com -4366game.com -4366pk.com -4377.com -437zhifu.com -4399-xyx.com -4399.com -4399.net -43999yx.com -4399api.com -4399api.net -4399biule.com -4399data.com -4399dmw.com -4399doc.com -4399er.com -4399hhh.com -4399i.net -4399inc.com -4399j.com -4399mail.com -4399pk.com -4399sj.com -4399swf.com -4399sy.com -4399wanju.com -4399xyx.com -4399youpai.com -4399youxi.com -4399yyy.com -4399zmxy.com -43cv.com -43dj.com -43ns.com -43xs.com -43yl.com -43zhubao.com -4417.com -4444.cc -4444448.com -44460.com -444888qq.com -44552121.com -44749.net -4480.cc -4484.win -44971.com -44983.com -44h.co -44hr.com -44iuno85gr.com -44jj.com -44pq.cc -44vs.com -451057365.xyz -453400.com -453600.net -45451.com -455522.com -45575.com -45592.com -456.net -456jy.com -456ss.com -456tt.com -457.com -4587.com -458kq.com -459.org -45app.com -45fan.com -45inst.com -45io.com -45it.com -45ns.com -45r.com -45te.com -45win.com -45xie.com -45yx.com -461000.net -46412.com -4644440.vip -4658271.com -46644.com -46771313.com -4687794fd9.com -46940.vip -4694393.com -46cdn.vip -46mlsv.com -46ny920931.com -46ps.com -46xs.com -47295.com -4735.com -47365.com -473787.com -4738.com -47473.com -474b.com -4765.com -4779.com -47819.com -47daili.com -47gs.com -47oupy0408.com -47rq.com -47zu.com -480.hk -4805555.com -48455m.com -4846.com -4848360.com -48575.com -48670.vip -4869.cc -487.com -48905.com -48cdn.vip -48hao.net -48log.com -49.com -492288.com -4930.com -49358.com -493601.com -49363.com -4937711.com -495.cc -495495.com -49644913.com -497-img.com -497.com -498.net -499-img.com -499n.com -499youxi.com -49app.com -49ko.com -49ms.net -49pic.com -49r5eoqrd2.com -49vps.com -49xia.com -49you.com -49yu.com -4abb.com -4ading.com -4anet.com -4apx.com -4aqq.com -4c5p021888.com -4ci.cc -4cm.cc -4cnzz.com -4cun.com -4dai.com -4db.com -4do71q84l1.com -4dwan.com -4ee.ee -4eglwkq.com -4everdns.com -4ewriting.com -4f61.com -4f89.com -4fang.net -4ggogo.com -4gh6.com -4glte.org -4gqp.com -4gtoefl.com -4h6s.com -4hgame.com -4hii.net -4hmodel.com -4hpy.com -4inlook.com -4jplus.com -4k123.com -4kbizhi.com -4kdesk.com -4kgood.com -4kgou.com -4kya.com -4l.hk -4lzr.com -4ndwc.com -4pf6hb.com -4pis.com -4pnt.com -4portun.com -4px.com -4pyun.com -4q5q.com -4qx.net -4s4c0dw764.com -4sai.com -4sender.com -4sender.net -4sjob.com -4sscrm.com -4tdf.com -4thetooth.com -4thworkshop.com -4to66.com -4u1mx79nlw.com -4u4v.net -4w8.net -4xiaoshuo.info -4xseo.com -4xx.me -4y4.net -4ye.cc -4yt.net -4yx.com -4zt.com -5-link.com -50-jia.com -500.com -5000.com -50004.com -5000yan.com -50018.com -50027.com -500cache.com -500d.me -500doc.com -500du.com -500fd.com -500gm.com -500hj.com -500px.me -500talk.com -500tb.com -500wan.com -500wancache.com -500zhongcai.com -5011.net -501h.com -501wan.com -5026p06ot6.com -503118.com -50331.net -5033333.com -503error.com -5054399.com -5054399.net -505uu.com -5066.com -506fhq.com -506u5nf5j5.com -50747.com -508hdsys.com -508mallsys.com -508sys.com -50970.com -50bangzh.com -50cnnet.com -50pk.com -50sht.com -50vm.com -50xiao.com -50yc.com -50yu.com -50zi.com -50zw.co -50zw.net -51-cf.com -51-jia.com -51-visa.com -51.am -51.com -51.net -5100.net -510560.com -510erp.com -510hb.com -510xds.com -510you.com -51110.com -51119.com -5117.com -511718.com -5117sell.com -5118.com -5118img.com -5119.net -511m.com -511mv.com -511wan.com -511wh.com -511wx.com -511yj.com -5120.com -5120bb.com -51230.com -51269017.com -51298888.com -512test.com -512wx.com -512youxi.com -5132.com -513337.com -5137.cc -51386.com -5138zhuan.com -513zp.com -513zz.com -514193.com -514200.com -5144wan.com -51508.com -51511.com -515158.com -5151888.xyz -5151app.com -5151sc.com -5153.com -51555.net -51569.com -5156lunwen.com -5156rcw.com -5156xz.com -51589.com -5158wan.com -515app.com -515car.com -515fa.com -515ppt.com -51643.com -51656582.com -51658042.com -51661182.com -5166ys.com -516edu.com -516ly.com -516lyw.com -5170d.com -5173.com -5173cdn.com -51766.com -5177cq.com -517best.com -517cdn.com -517dv.com -517ee.com -517gf.com -517hotel.com -517huwai.com -517idc.com -517japan.com -517job.com -517la.com -517la.net -517lppz.com -517mh.net -517ming.com -517mr.com -517na.com -517office.com -517sc.com -517tez.com -517xc.com -51802.com -5184.com -5184pass.com -5185.cc -51864.com -51870.com -5187g.com -5188.com -518doc.com -518h48fwg6.com -518yp.com -51969.com -51985.net -5199.cc -5199.com -5199yx.com -51a.co -51aimei.com -51aiwan.com -51app.com -51art.com -51ask.org -51asm.com -51asp.net -51aspx.com -51auto.com -51autocar.net -51autogo.com -51awifi.com -51azure.cloud -51b2b.com -51babybuy.com -51baigong.com -51banban.com -51banka.net -51baocan.com -51baoshui.com -51bbcy.com -51bbmm.com -51bbo.com -51besttea.com -51bi.com -51biaoqing.com -51bidlive.com -51bike.com -51biz.com -51bjrc.com -51bmb.com -51bokao.com -51bonli.com -51book.com -51boshi.net -51bras.com -51bsi.com -51bushou.com -51buy.com -51bxg.com -51bzi.com -51caiyou.com -51callcenter.com -51callu.net -51camel.com -51caocao.net -51ccd.com -51ccdn.com -51cck.com -51ccn.com -51cdn.com -51cdngo.com -51cfm.com -51cg.com -51chang.com -51changdu.com -51changdu.xyz -51changxie.com -51chaoban.com -51chaoshang.com -51chost.com -51chouqian.com -51chuanpiao.com -51chuli.com -51cir.com -51cjyy.com -51ckjr.com -51clc.com -51cmm.com -51cnhr.com -51cocoa.com -51code.com -51coma.com -51comp.com -51company.com -51cosmo.com -51cpm.com -51credit.com -51csr.com -51cto.com -51cube.com -51cunzheng.com -51cxsoft.com -51czapp.com -51dai.com -51daifu.com -51daima.com -51daka.com -51dangpu.com -51daxueedu.com -51dc.com -51dcgg.com -51dcw.com -51device.com -51dfc.com -51diangu.com -51diantang.com -51diaocha.com -51din.com -51dingxiao.com -51ditu.com -51diyring.com -51dmq.com -51dns.com -51docs.com -51dojoy.com -51dpub.com -51drv.com -51dszn.com -51dugou.com -51dz.com -51dzrc.com -51dzt.com -51dzw.com -51ean.com -51ean.xin -51easymaster.com -51ebo.com -51ebooks.com -51eduline.com -51eim.com -51ejz.com -51ekt.com -51ele.net -51emin.com -51emo.com -51en.com -51epei.com -51eshop.com -51etong.com -51etr.com -51f.com -51facai.com -51fangan.com -51fangfu.com -51fanli.com -51fanli.net -51fbpay.com -51fdc.com -51feibao.com -51feitu.com -51feiyu.com -51fiber.net -51finace.com -51findwork.com -51fire.xyz -51fl.com -51fpg.com -51fsw.com -51fubei.com -51fucai.com -51fund.com -51fxkj.com -51fxzq.com -51fytx.com -51g3.com -51g3.net -51g4.com -51gaifang.com -51gamecard.com -51ganjie.com -51gaoji.com -51gaoxiao.com -51garlic.com -51gdrc.com -51gh.net -51give.org -51gjie.com -51gjj.com -51golife.com -51gonggui.com -51goods.vip -51gouke.com -51gowan.com -51gox.com -51gran.com -51grb.com -51grfy.com -51growup.com -51gszr.com -51guanhuai.com -51guoji.com -51gzgk.com -51h.co -51h5.com -51hailang.com -51hanghai.com -51hangkong.com -51haojob.com -51hbjob.com -51hchc.com -51hcw.com -51hei.com -51hejia.com -51hgtg.com -51hhjy.com -51hicard.com -51hika.com -51hjk.com -51hlife.com -51hlife.net -51homemoney.com -51hosting.com -51hostonline.com -51houniao.com -51hr.com -51huaji.com -51huanhuan.com -51hunningtu.com -51huoyou.com -51hwzy.com -51ibm.com -51idc.com -51ideal.com -51ifind.com -51ifonts.com -51ima.com -51img1.com -51img2.com -51img3.com -51img5.com -51img6.com -51img7.com -51img9.com -51imo.com -51ipc.com -51ischool.com -51itapp.com -51itstudy.com -51iwifi.com -51ixuejiao.com -51jb.com -51jiabo.com -51jiameng.com -51jianxie.com -51jiaoxi.com -51jiecai.com -51jiemeng.com -51jingying.com -51jinkang.com -51jishu.com -51jiuhuo.com -51job.com -51jobapp.com -51jobcdn.com -51jobdns.com -51js.com -51jt.com -51jucaimi.com -51juhe.com -51jujibao.com -51julebu.com -51junde.com -51junshi.com -51kanmanhua.com -51kanong.com -51kaola.net -51kaxun.com -51kehui.com -51kf100.com -51kids.com -51kik.com -51kim.com -51kshen.com -51kt.com -51kuaizhuan.com -51kupin.com -51kywang.com -51la.ink -51labour.com -51laibei.com -51laiqiang.com -51laizhe.com -51langtu.com -51laohe.com -51ldb.com -51ldzx.com -51lepai.com -51lesheng.com -51lg.com -51lingji.com -51liucheng.com -51losangeles.com -51lstt.com -51lucy.com -51lxrc.com -51lzr.com -51mag.com -51maiquan.com -51marryyou.com -51mch.com -51mdd.com -51mdq.com -51meeting.com -51meigu.com -51meiliao.com -51meishu.com -51miaoxin.com -51microshop.com -51miduoduo.com -51miit.com -51mingyan.net -51minsheng.com -51miz.com -51mmt.com -51mnq.com -51mo.com -51mochu.com -51mockup.com -51mokao.com -51mole.com -51moot.net -51mpa.net -51mrp.com -51msc.com -51mta.com -51nearby.com -51newsapp.com -51niux.com -51nod.com -51nwt.com -51offer.com -51open.net -51opone.com -51ops.com -51p.co -51panhuo.com -51papers.com -51passion.com -51peptide.com -51pgzs.com -51photo.vip -51php.com -51piao.com -51piaohua.com -51pibu.com -51pigai.com -51ping.com -51pinwei.com -51pla.com -51pocket.com -51pocket.net -51poll.com -51pos.com -51pot.com -51poweron.com -51pptmoban.com -51psj.com -51puer.com -51qc.com -51qc.net -51qianduan.com -51qianguo.com -51qianvisa.com -51qicheng.com -51qingjiao.com -51qinxue.com -51qixing.net -51qqt.com -51qtg.com -51qub.com -51qudao888.com -51qumi.com -51quzhe.com -51race.com -51rc.com -51read.site -51recovery.com -51relaw.com -51rencai.com -51render.com -51renpin.com -51rich.net -51rong.com -51room.com -51rp.com -51rry.com -51rumo.com -51rxzc.com -51rz.org -51sai.com -51sanhu.com -51sao.net -51school.com -51scw.net -51sdj.com -51sdx.com -51search.net -51seer.com -51select.com -51self.com -51selling.com -51sgg.cc -51share.net -51shashiji.com -51shebao.com -51shengxue.com -51sheyuan.com -51shizhi.com -51shop.ink -51shoubei.com -51shoufei.net -51shoushi.com -51shubiao.com -51shuobo.com -51shyc.com -51signing.com -51sjht.com -51sjm.com -51sjsj.com -51sjyx.com -51sole.com -51soulou.com -51speeds.com -51spjx.com -51ssl.com -51ste.com -51sucaiyuan.com -51suitui.com -51sutong.com -51sytx.com -51szhk.com -51talk.com -51talkenglish.com -51tanbao.com -51tao.com -51taonan.com -51taoshi.com -51taowei.com -51taoyang.com -51tas.com -51tb.me -51test.net -51testing.com -51testing.net -51testing.org -51tgb.com -51tiancai.com -51tiangou.com -51tie.com -51tietu.net -51tijian.com -51tingyi.com -51tiqianle.com -51tjhr.com -51togic.com -51tonglu.com -51tools.info -51touch.com -51toufang.com -51tour.com -51touxiang.com -51tra.com -51tracking.com -51trust.com -51tuiyi.com -51tunhuo.com -51tv.com -51tv.net -51tvbao.com -51tvrom.com -51txapp.com -51tys.com -51tyty.com -51tz.com -51u.co -51uc.com -51ukf.com -51uyi.com -51vhost.net -51vimeo.com -51vip.biz -51vv.com -51vv.net -51vv2.com -51w.co -51wangdai.com -51wangming.com -51wangpi.com -51wanquan.com -51wanxue.com -51wcad.com -51wcity.com -51web.com -51weblove.com -51websec.com -51weihu.com -51weishi.com -51weitao.net -51wendang.com -51wf.com -51wincai.com -51windows.net -51wj.com -51wjy.com -51wnl-cq.com -51wnl.com -51world.win -51wp.com -51wtp.com -51wxjz.com -51wydj.com -51wyfl.com -51wzg.com -51wzxz.com -51xbx.com -51xcr.com -51xcrc.com -51xiancheng.com -51xianwan.com -51xiaolu.com -51xingjy.com -51xinhu.com -51xinyuan.com -51xly.com -51xnj.com -51xuanmu.com -51xuanxiao.com -51xuanzhu.com -51xue8.com -51xuediannao.com -51xuetang.com -51xuetongxin.com -51xuexiaoyi.com -51xxsp.com -51y5.com -51yabei.com -51yajk.com -51yanwang.com -51yey.com -51yhdai.com -51yhgj.com -51yidun.com -51yilu.com -51ying.net -51yip.com -51ykb.com -51ym.me -51ymxc.com -51ynedu.com -51yonggao.com -51you.com -51youdian.com -51yougo.com -51youpin.com -51youth.com -51ys.com -51ytg.com -51yuansu.com -51yuepin.com -51yueqian.com -51yugou.com -51yund.com -51yundong.me -51ywx.com -51yxcyy.com -51yxky.com -51yxwz.com -51zan.com -51zd.net -51zghbh.com -51zhangdan.com -51zhantai.com -51zheduoduo.com -51zhi.com -51zhishang.com -51zhituwang.com -51zhizhao.com -51zhucai.com -51zixiu.com -51zjedu.com -51zjxm.com -51zmt.net -51znt.com -51znyx.com -51zr.com -51zsb.net -51zsjc.com -51ztzj.com -51zwd.com -51zx.com -51zxw.net -51zywl.com -51zyzy.com -51zzl.com -51zzyjs.com -52-ic.com -520.com -520.net -5200tv.com -520101.com -520520520520520.com -520730.com -520740.com -520810.xyz -52091w.com -520cc.com -520cfc.com -520chs.com -520code.net -520diandu.com -520gexing.com -520hello.com -520hhht.com -520homo.com -520hspfb.com -520im.com -520it.com -520lbl.com -520link.com -520love520.com -520lpy.com -520mingmei.com -520mojing.com -520ok.net -520qr.net -520switch.com -520touxiang.com -520txtba.com -520way.com -520xiazai.com -520xp.com -520xy8.com -520yidui.com -520zc.com -520zg.net -5210601.com -52112.com -5211413.com -5211game.com -52177.com -521dayu.com -521g.com -521led.com -521logo.com -521qw.com -521szlx.com -521u.com -521up.com -521watch.com -521xunlei.com -52237377.com -522de.com -522gg.com -523333.com -52372.com -5238333.com -52393.com -523touzi.com -52419.net -524399game.com -525.life -525069.com -5251yx.com -5252b.com -5253.com -5258.net -5258da.com -525zb.com -526183.com -526266.com -526537.xyz -52676.com -526net.com -527100.com -52733999.com -5277.com -527fgame.com -527ice.com -527meeting.com -527ss.com -528045.com -5281.net -52841819.com -528500.com -528529.com -52892.com -528day.com -52969.com -52ai.com -52ali88.com -52alipay.com -52aoteman.com -52appok.com -52article.com -52asus.com -52audio.com -52bar.com -52bishe.com -52bjd.com -52bji.com -52bjy.com -52blog.net -52bluetooth.com -52bus.com -52bwg.com -52by.com -52caiyuan.com -52car.net -52ce.com -52ch.net -52cha.com -52che.com -52cik.com -52ckd.com -52click.net -52cmajor.com -52cnp.com -52cnw.net -52code.store -52codes.net -52cv.com -52da.com -52dangong.com -52debug.net -52design.com -52desk.com -52dian.com -52dianbo.com -52digua.com -52dmtp.com -52doc.com -52dsy.com -52dtv.com -52dus.com -52duzhe.com -52dy.tv -52dyy.com -52dzxy.com -52edns.com -52edy.com -52enku.com -52erhu.com -52eshu.com -52etf.site -52fangzi.com -52fanxing.com -52feijuba.com -52fzwg.com -52gaoge.com -52gaoxiao.com -52gg.com -52ggd.com -52gongju.net -52grz.com -52guixi.com -52guzhuang.com -52gvim.com -52hardware.com -52hb.com -52hbl.com -52hejia.com -52help.net -52hotel.net -52hrtt.com -52hrttpic.com -52huaqiao.com -52hwl.com -52hxw.com -52hyjs.com -52ig.net -52im.net -52investing.com -52inwet.com -52itstyle.vip -52jdyy.com -52jianpan.com -52jiaoshi.com -52jiaozhou.com -52jiawei.com -52jingsai.com -52jinhu.com -52jisu.com -52jj.net -52jrjy.com -52js8.com -52jscn.com -52jubensha.com -52juqingba.com -52jxrc.com -52jxt.com -52kan.vip -52kanxiaoshuo.com -52kd.com -52kejian.com -52kfly.com -52leho.com -52liaoshen.com -52liezheng.com -52life.cc -52linglong.com -52lion.com -52luohu.com -52lvyou.com -52m.co -52mac.com -52magic.net -52maicong.com -52mba.com -52meirong.com -52mengdong.com -52met.com -52mhw.com -52miji.com -52mip.com -52ml.net -52mqbiao.com -52mtc.com -52muban.com -52muyou.com -52mvp.com -52myqq.com -52nail.com -52nantong.net -52niuka.com -52njl.com -52nyg.com -52pcfree.com -52photo.com -52pht.com -52pi.com -52pi.net -52pictu.com -52pk.com -52pk.net -52pkvr.com -52playgame.com -52pojie.com -52post.com -52pt.site -52qixiang.com -52qj.com -52qmct.com -52qqba.com -52qudao.com -52queji.com -52qumao.com -52qupu.com -52ra3.com -52ranwen.net -52rd.com -52rd.net -52rental.com -52rsjy.com -52ruodian.com -52samsung.com -52shanghe.com -52shangou.com -52shehua.com -52shici.com -52shihu.com -52shipping.com -52shuw.cc -52shuxue.com -52solution.com -52songshu.com -52souluo.com -52souxue.com -52suda.com -52survey.com -52svip.cc -52svn.com -52swine.com -52t1.com -52tc.co -52tc.info -52tesla.com -52tgfc.com -52tian.net -52tiny.com -52tong.com -52toolbox.com -52toys.com -52tps.com -52tt.com -52tup.com -52tzs.com -52udl.com -52vps.com -52w.co -52wana.com -52wanh5.cc -52wenku.com -52wlw.com -52wmb.com -52wower.com -52wubi.com -52xcyx.com -52xianbao.com -52xiaoshuowang.com -52xie.com -52xitong.com -52xiuxian.com -52xsj.com -52xuexi.net -52xydl.com -52xz.com -52yawa.com -52ybcj.com -52yh.com -52yitian.com -52ykjob.com -52youbian.com -52youju.com -52youpiao.com -52youtu.com -52yq.com -52yushi.com -52yuwan.com -52ywan.com -52ywp.com -52yxyx.com -52yyxk.com -52z.com -52zhaopin.com -52zhifu.com -52zixue.com -52zjkj.com -52zx.cc -52zx.net -52zxw.com -52zy.com -5306.com -5308999.com -531314.com -53155.vip -531pool.com -532106.com -532588.com -533.com -53326.com -5334.com -5338.org -533y.com -53431.com -5345.com -53471.com -535fs.com -535v.com -5366.com -5367.com -5368111.com -537300.com -53797.vip -537a.com -537images13.com -537images20.com -537images22.com -537images41.com -537images42.com -537images45.com -537images47.com -538618.com -53920.net -5395.com -539831.vip -53ai.com -53chewu.com -53dns.com -53dns.net -53dns.org -53ee.com -53info.com -53iq.com -53miji.com -53nic.com -53r.com -53shop.com -53shubiao.com -53site.com -53wan.com -53wy.com -53xjd.com -53yu.com -53zaixian.com -53zw.net -54.com -540734621.xyz -54114.com -54268.com -5433.com -54391.com -5442.com -545c.com -546709.cc -5499.com -5499ok.com -54ak.com -54banana.com -54benniao.com -54doctor.net -54doctors.net -54dr.com -54hcz.com -54heb.com -54im.com -54jkw.com -54job.com -54ks.com -54lol.com -54maimai.com -54md.com -54op.com -54pictu.com -54qj.com -54traveler.com -54tup.com -54watch.com -54xiaoshuo.com -54young.com -54youshi.com -54yt.net -54yuqing.com -55.cc -55.com -5500w.com -550400.com -550416.com -5508.net -5509.cc -5510928.com -551144.com -55188.com -5525game.com -553356.com -55344.com -554030cc.com -554488.com -5548.net -55555.ink -55555.io -55555432.com -55555558.com -555bb999ww.com -555edu.net -555tg6s98w9d8sw.com -555yst.com -5566.net -5567.me -556z.com -557.net -55706.com -55749.net -5577.com -558.com -5588.tv -5588txt.com -558idc.com -559.cc -55935.vip -5599.com -5599.net -55bbs.com -55dai.com -55dian.com -55doc.com -55duanzi.com -55dushu.com -55e5.com -55g.cc -55haitao.com -55hike.com -55hl.com -55hl.net -55i8.com -55idc.com -55it.com -55jisu.com -55kantu.com -55kk.net -55la.com -55r5.com -55shantao.com -55tour.com -55tuan.com -55y.cc -55y5.com -55zhoucheng.com -55zs.com -56.com -560.im -56015.com -560e.com -560wf.com -5611.com -56114.com -56135.com -56156.com -5618.co -5629.com -56360.com -564.cc -5648.cc -56506666.com -5654.com -565656.com -56597.vip -566job.com -56711.com -5676.com -567909.xyz -567idc.com -568.com -5684.com -5684t.net -56851.net -56885.net -569.com -5694.com -56a.com -56ads.com -56beijing.org -56bid.com -56c.co -56care.com -56che.com -56cheng.com -56cheng.vip -56china.com -56clte.org -56dagong.com -56dichan.com -56dq.com -56dr.com -56dr.net -56dt.com -56dz.com -56ggb.com -56gk.com -56hb.com -56home.org -56idc.com -56img.com -56img.net -56imgs.com -56jg.com -56join.com -56kad.com -56laile.com -56linked.com -56md.com -56ml.com -56mp.com -56nb6oo06g.com -56products.com -56qq.com -56shangpu.com -56show.com -56shuku.org -56sing.com -56steel.com -56tchr.com -56tim.com -56tj.com -56tv.org -56uu.com -56xiniao.com -56ye.net -56yun.com -56zhibo.com -57.net -57023.com -571400.net -571xz.com -57273vy9x0.com -57357.vip -5755.com -576.com -57608.com -57616.com -57665.com -57676.com -576tv.com -57781.vip -57781057.com -577job.com -57821.com -57875.vip -578965.com -579idc.com -57auto.com -57bm.com -57class.net -57dp.com -57go.com -57mail.com -57px.com -57qy.com -57sh.com -57tbs.com -57tc.net -57tibet.com -57tuan.com -57us.com -57uu.com -57www.com -57yy.site -57zhe.com -58.com -5800.com -580114.com -580168.com -580590.com -580ban.com -580dns.com -580eda.net -580jz.net -580k.com -580tequan.com -58188.com -58199.com -582116.com -58232.vip -582hr.com -583316.com -583go.com -5858.com -5858xs.com -58611.net -58620888.com -5866.com -5867yh.com -586jz.com -587.cc -587image.com -5884.com -5888.tv -588art.com -588ku.com -588tao.com -588z.com -58921.com -5898yun.com -58abb.com -58antenna.com -58auv.com -58bh.com -58buy.com -58cgg.com -58chaiyou.com -58che.com -58cloud.com -58coin.com -58corp.com -58dadi.com -58daojia.com -58demo.com -58display.com -58dns.me -58dns.org -58eventer.com -58fkb.com -58food.com -58game.com -58ganji-corp.com -58ganji.com -58ghost.com -58hua.com -58ib.com -58insure.com -58iwan.com -58izl.com -58jb.com -58jixie.com -58jmw.com -58kad.com -58kuaipai.com -58kuku.com -58lingshi.com -58lovepet.com -58meeting.com -58mhg.com -58moto.com -58peilian.com -58pic.com -58pxe.com -58q.org -58q8.com -58qz.com -58shangban.com -58supin.com -58trz.com -58ubk.com -58uxd.com -58wan.com -58wangwei.com -58wanwan.com -58wuji.com -58wzd.com -58xinghuo.com -58xinrui.com -58xs.com -58xs.la -58xueche.com -58xuexi.com -58yaoji.com -58yiji.com -58youtui.com -58youxi.com -58yuesao.com -58z.net -59.com -5909.net -590m.com -59120.com -591237.com -59139.com -59168.net -59178.com -5918656.com -5918dyw.com -591918.com -591con.com -591hx.com -591master.com -591moto.com -591moto.net -591mrzx.com -591syd.com -591wsh.com -591wy.com -591yhw.com -592163.com -5923d.com -592zn.com -59370.com -5945i.com -595.ag -595.bet -595.cc -59519.com -595818.com -5959.vip -59598.com -595dlxzbanone.com -595image.vip -595led.com -596fc.com -597.com -597guilin.com -597mm.com -597rcw.com -59852.vip -59888888.xyz -599.com -5999.tv -59b2b.com -59baike.com -59dun.com -59ec5453559f0.streamlock.net -59hi.com -59iedu.com -59iwh.com -59jt.com -59med.com -59ni.com -59pk.net -59rj.com -59store.com -59w.net -59wanmei.com -59wj.com -59yx.com -5a8.org -5aaa.com -5acbd.com -5adanci.com -5adanhao.com -5ag.net -5aivideo.com -5aixia.com -5aiyoo.com -5ajob.com -5any.com -5aq.net -5auto.net -5axxw.com -5baike.com -5ber.com -5bite.com -5biying.com -5bjm.com -5c3639aa99149.streamlock.net -5c84i.net -5ccic.com -5cda.com -5ce.com -5ceimg.com -5cgo.com -5cpod.com -5d.ink -5d2ede2.com -5d6d.com -5d6d.net -5dao.cc -5dashi.com -5ddd.com -5dfp.com -5dfsd2.com -5dgbgv941b.com -5dgz.com -5ding.com -5dmail.net -5dplay.net -5ds.com -5earena.com -5earenacdn.com -5eplay.com -5eplaycdn.com -5er0.com -5etz.com -5ewin.com -5fen.com -5fo.org -5fun.com -5fwan.com -5g-smart.com -5gcdnx.com -5gimos.com -5gjoy.com -5guanjianci.com -5gwan.com -5gxsd.com -5gxt.com -5gy.com -5gzm.net -5h.com -5had0w.com -5hoom.com -5i.com -5i366.com -5i591.com -5i5aj.com -5i5j.com -5i5t.com -5i65.com -5i9u.com -5iag.com -5iag.net -5iape.com -5ibear.com -5ibug.net -5icbs.com -5ich.net -5ichecker.com -5ichong.com -5icool.com -5idc.com -5idev.com -5idhl.com -5idream.net -5iec.com -5iecity.com -5iexpress.com -5ifapiao.com -5ifit.com -5iflying.com -5ifund.com -5igcc.com -5igcw.com -5iggci.com -5igupiao.com -5igzw.com -5ihuish.com -5iidea.com -5ijk.net -5ikang.com -5iliao.com -5ilog.com -5ilr.com -5ilrc.com -5iluying.com -5imeishi.com -5imomo.com -5imusic.com -5imx.com -5imxbbs.com -5iops.com -5ipatent.com -5ipkwan.com -5isanguo.com -5isohu.com -5iucn.com -5iweix.com -5iximai.com -5ixuexiwang.com -5iyoule.com -5iyq.com -5iyuyan.com -5izzy.com -5jingcai.com -5jinzhishu.com -5jjdw.com -5jjx.net -5jli.com -5jue.com -5jwl.com -5jxp.com -5k.work -5k58.com -5k5m.com -5ka30l5885.com -5kaixin.net -5kbox.com -5kcrm.com -5kcrm.net -5kda.com -5khouse.com -5kmw.com -5kwuke.com -5lanren.com -5lu.com -5lux.com -5m5m5m.com -5mapk.com -5mu.com -5nd.com -5nexus.com -5nnj.com -5ooq.com -5opzl.com -5opzl.net -5pao.com -5pb.net -5pk.com -5plus1.net -5q.com -5qwan.com -5qzone.net -5r1.net -5radar.com -5rc.com -5read.com -5rfh44h5.cc -5ring.com -5ritt.com -5rs.me -5s4f.com -5s5j.com -5s886.com -5seals.com -5see.com -5sem.com -5sha.com -5shubook.com -5snow.com -5sw.com -5tangs.com -5teacher.com -5th.zone -5thhospital.com -5thspace.net -5tjps9c62j.com -5tmobi.com -5tmovice.com -5tscm.com -5u18.com -5u3d.com -5u5u5u5u.com -5uchina.com -5uec9e3sj2.com -5umao.com -5upm.com -5usport.com -5uu8.com -5uyk.com -5v13.com -5w123.com -5w5.com -5w52.com -5w5w.com -5waihui.com -5wanpk.com -5web.site -5wx.org -5wxw.com -5x54.com -5xcg.com -5xiaobo.com -5xini.com -5xmjm.com -5xyouse.com -5y6s.com -5yang.cc -5ydj.com -5yhua.org -5ykj.com -5you.cc -5you.com -5youchou.com -5zai.com -5zd.com -5zg.com -5zhr.com -5zls.com -5zw.com -6-china.com -6-u.com -6.mms.vlog.xuite.net -600064.com -600083.com -600086.com -6000f6l4n8.com -6000feet.com -600146.net -600200.com -600208.net -600216.com -6002255.com -600280.com -600282.net -600496.com -600576.com -6006.xin -600689.com -600711.com -600822sh.com -600895.com -600yj.com -601book.com -602.com -602img.com -603027.com -603966.com -603ee.com -6046.net -605-zy.com -60593.com -605dns.com -605zy.co -60606161.com -6066888.com -6073168.com -607images15.com -607images16.com -607images2.com -607images36.com -607images40.com -608.vip -6080d.com -60986.com -60dj.com -60kan.com -60mil.com -60nm.com -60oa.com -60qc.com -60wr.com -60yp.com -61.com -610115.com -610213.net -61029.com -6104.tv -6112.com -611qk.com -611res.com -612345.com -612459.com -6153.cc -61611.net -6163.com -6164.com -61658.com -6168511.com -616pic.com -616wan.com -617617.net -6186.com -6187wo.com -6188.net -6188cnc.com -618bg.com -618cj.com -618day.com -618hr.com -618ky.com -618tech.com -618waihui.com -61916.com -61916.net -61baobao.com -61bb.com -61bbw.com -61cloud.net -61diy.com -61draw.com -61ertong.com -61gequ.com -61hd.net -61hr.com -61ic.com -61info.com -61k.com -61kezhan.com -61mc.com -61ok.com -61psy.com -61sheji.com -61sou.com -61tg.com -61xs.com -62115.com -62126tt.com -62212366.com -6222251.com -624down.com -62669.com -626x.com -628.com -62923.vip -629973.com -62dns.com -62game.com -62l.net -62wy.com -6300.net -630book.cc -630book.co -630book.com -630read.com -630zw.org -631r.xyz -63243.com -632news.com -6333.tv -634.ag -634.cc -634d.com -634image.com -634image.vip -6360.com -6373.com -637600.com -6383.com -638300.com -63860.vip -639311.com -63cj.com -63fl.com -63pe.com -63u.net -63yx.com -63yy.com -640640.com -641.com -642online.com -64365.com -645250.net -6453.net -64538.net -645w.com -646000.com -6463.com -64644444.com -64783333.com -648sy.com -64ba.com -64dns.com -64foot.com -64gua.com -64ma.com -64mv.com -64oak78y99.com -64pay.com -64ptd74095.com -6501111.com -65119.com -651700.com -654320.com -6543210.com -654321wan.com -655u.com -655yx.com -65601111.com -656126.com -65650000.com -65656564.com -656gate.com -658.com -65875.com -659595.com -65993zubo26633.com -65box.com -65liuxue.com -65mhxy.com -6600.org -660378.com -66083797.com -660pp.com -66123123.com -66152.com -66168.net -6617.com -66173yx.com -662city.com -662p.com -66301cc.com -663661.com -6636yy.com -66378.com -66388.net -663jx.com -66446200.com -66460.com -6655.com -6655.la -66580.com -6660333.com -666127.xyz -666291.xyz -6665.com -666532.xyz -666546.xyz -666548.xyz -6666519.net -66666.host -666666.host -6666ppt.com -6666sa.com -6666xsw.com -6668dns.com -666gps.com -666idc.com -666kuaishou.com -666kuaishou.net -666pic.com -666post.com -666scly.com -666shuwu.com -666wan.com -666wan.net -666wx.cc -666xinxin.com -66701288.com -667744.com -667777.cc -6677cq.com -66825.com -6686.com -6688.com -668app.com -668cdn.cc -668cdn.xyz -668lw.com -668map.com -668wan.com -66930909.com -669322.com -6695.com -66988.tv -669pic.com -669play.com -669ye.com -669zw.com -66call.com -66d6.com -66ds.net -66good.com -66han.com -66huigo.com -66ika.com -66in.net -66jiedai.com -66l.cc -66laws.com -66mi.com -66mobi.com -66money.com -66mz8.com -66n.co -66nao.com -66nh.com -66park.net -66perfect.com -66play.com -66rjz.com -66rom.com -66rou.com -66rpg.com -66ruian.com -66shouyou.com -66sj.com -66sy.com -66team.com -66to.net -66ui.com -66wc.com -66web.com -66weiyou.com -66wmw.com -66wz.com -66xue.com -66y.com -66you.com -66zhang.com -66zhizu.com -66zhuang.com -67.com -67017.com -6711img.com -671992tc08.com -67623.com -676z.com -677.com -677.vip -6771112.com -678119.com -6786666.com -6787.com -67876.com -67888.com -6788888.net -6789che.com -6789g.com -6789sm.com -678cn.com -678edu.net -678ie.com -678py.com -678vr.com -67az.com -67cha.com -67it.com -67joy.com -67mo.com -67tool.com -67wanwan.com -67wx.com -67y.com -67yes.com -68.com -68.gy -68.vip -680.com -68120120.com -681314.com -6816.com -682.com -68211.com -6822.com -6832123.com -6844.com -68606060.com -68659061.com -6868shop.com -6868yx.com -68716871.com -68792999.com -6888.tv -688dns.com -688wz.net -68955.com -68978.net -6899wan.com -68apk.com -68bbq.com -68china.net -68design.net -68ecshop.com -68gainian.com -68h5.com -68hanchen.com -68hlw.com -68hr.com -68jcw.com -68ke.com -68mall.com -68play.com -68sign.com -68team.com -68u.co -68web.net -68websoft.com -68zhan.net -69090.com -6917.com -69260.com -692657.com -6934.net -693975.com -69478.com -695157.com -695175.com -69525.com -695275.com -695828.com -695ljg.com -696157.com -69698689.com -69853.net -698wan.com -69916666.com -699333.xyz -69981.com -699g.com -699h5.com -699pic.com -69cy.net -69hr.com -69mok.com -69shu.org -69shuba.cc -69tianqi.com -69xiu.com -69yc.com -69ys.com -69zw.com -6a.com -6a8a.com -6aas.com -6adj.com -6an8.com -6api.net -6apt.com -6b3b.com -6bbk.com -6bdns.com -6c6c.com -6cit.com -6cmap.com -6cnzz.com -6d4d5.com -6d4g.com -6d7d.com -6dan.com -6dbx.com -6dcg.com -6diy.com -6ds.me -6du.in -6duoyu.com -6eat.com -6edigital.com -6fast.com -6fcsj.com -6g5fd1a.com -6gh4.com -6ght.com -6glz.com -6gz6h1ze8r.com -6hezb.com -6hgame.com -6hudong.com -6huo.com -6hwan.com -6ict.com -6ie6.com -6ifang.com -6juzi.com -6k11.com -6k6g.com -6k9k.com -6ke.com -6kw.com -6kxz.com -6l6.site -6laohu.com -6li.com -6lk.net -6ll.com -6lrt.com -6ls.cc -6m5m.com -6miu.com -6miu.net -6my575.com -6niu.com -6nm6.com -6our.com -6p7q8c3oa4.com -6pen.art -6pifa.net -6pingm.com -6puppy.xyz -6r8c86z4jh.icu -6ren.com -6rencn.com -6renyou.com -6rooms.com -6s4qki.com -6s54.com -6sfg.com -6sq.net -6t.com -6t12.com -6tcc.com -6tennis.com -6thhosp.com -6tiantian.com -6tie.com -6tktrd.com -6tt.com -6tu.com -6twrte12ft.com -6u9muvn94m.com -6uudy.com -6v.com -6v6.work -6vdyg.com -6wan.com -6wtx.com -6wwww.com -6wz.co -6x.studio -6x69f31vso.com -6xcdn.com -6xd.com -6xigema.com -6xiu.com -6xw.com -6yoo.com -6young.site -6yso.com -6yxk.com -6yxs.com -6yyy7.com -6z6z.com -6za0l6fjl0.com -6ze.net -6ziz.com -6zu.com -6zy37f4df2.com -7-11bj.com -7-che.com -7-meeting.com -7-mi.net -7-vk.com -7-wx.com -70.cc -70.net -700618.com -70098.com -700chat.com -700kan.cc -700kan.com -700live.com -700megs.com -700mh.com -701.com -703804.com -70392.com -70524.com -706net.com -707598.xyz -7080edu.com -70822.com -7089899.com -7089dd.com -7089gg.com -70cq.com -70dir.com -70gm27345d.com -70jj.com -70ka.com -70pf2fj3sd.com -70ppt.com -70soft.com -70ym.com -70yx.com -71.am.com -71.net -7114.com -7116.com -7116dns.com -711hospital.com -711pr.com -7120.com -712100.com -71360.com -7139.com -71390.com -714.com -715083.com -715288.com -715300.com -7163.com -71683.com -71714.com -7172737.com -7176.com -717c.com -717down.com -71908.com -7192.com -719400.com -71acg.com -71acg.net -71baomu.com -71baomu.net -71big.net -71caigou.com -71dm.com -71e.com -71edge.com -71edge.net -71edge.work -71elink.com -71go.com -71k.com -71lady.com -71p.net -71tao.com -71tech.com -71txt.com -71wl.com -71wx.net -71xe.com -71xk.com -72.com -72017.net -720582.com -720health.com -720static.com -720think.com -720ui.com -720yes.com -720yun.com -720yuntu.com -7210.com -7211.com -72177.com -7217kf2961.com -72287o.xyz -7230.com -7239ll.net -724pride.com -724pridecryogenics.com -724pridetech.com -726p.com -7273.com -7280.com -7298.com -72byte.com -72ce.com -72crm.com -72crm.net -72crm.org -72dj.com -72dns.com -72dns.net -72e.net -72en.com -72g.com -72gu.com -72h6hn4r3e.com -72home.com -72kjmb.com -72la.com -72max.com -72qq.com -72r.net -72swk.com -72wenhua.com -72whys.com -72xit.com -72xuan.com -72y.co -72yce.com -72yun.com -72zhan.com -731.tv -73110010.com -73232yx.com -732732.com -734969.com -7360.cc -737.com -737698.xyz -73789.com -738888.xyz -7399.com -73bc.com -73bt.com -73card.com -73so.com -73zw8.com -74.com -7415.com -7428.net -743388.com -743forever.com -744zy.com -745998.xyz -7474.com -7477.com -747wan.com -74955.net -74966.net -74977.net -74cms.com -74dns.com -74hao.com -75.team -75111.com -75111.net -75184.com -75271.com -7534w8m16e.com -75367.com -75510010.com -756u.com -7574.com -75757.com -757dy.com -7580.ltd -75982.com -75g.co -75ll.com -75n474.com -75pk.com -75team.com -75ww.com -75xn.com -76065.com -7618.com -761a.com -7633sqw.com -7651.com -766.com -7663.com -76676.com -76681f9610f175c6.com -766app.com -766er.com -766test.com -766z.com -767qkdj34u.com -767stock.com -76868.com -7688.net -76963.com -769car.com -76ab.com -76baobao.com -76bb.com -76dongdong.com -76ju.com -76mz.com -76pay.com -76pf.com -76y.com -76zu.com -77005163.xyz -770539.com -7711.com -77119159.com -771633.com -77169.com -77169.net -7717wan.com -7722wx.com -7723.com -7723img.com -7724.com -7724yx.com -7725.com -772it.com -77304y.com -77313.com -7735.net -7744wan.com -77521.com -77545.com -7756.org -775jia.net -776577.com -7766.info -7766.org -77745.com -777524.com -7777733.com -777bb555ww.com -777biubiu.com -777e.store -777eee888eee.com -777haoka.com -777lala.com -777moban.com -777sy.com -777xx888kk.com -777yh.am -7788.com -7788js.com -7789.com -778buy.com -7790.com -77991.com -7799520.com -779wan.com -77bh.com -77bike.com -77bx.com -77cr0ip236.com -77dd23.com -77de.com -77dushu.com -77dyy.net -77ebooks.com -77eye.com -77fanwen.com -77gog.com -77hd.com -77hudong.com -77itv.com -77l.com -77lux.com -77music.com -77nn.net -77nt.com -77nt.info -77piano.com -77pin.net -77shu.com -77shuku.la -77shw.com -77socks.com -77tianqi.com -77vcd.com -77xmd.com -77yx.com -77zhangh.com -77zhanghao.com -77zn.com -78.link -781203.com -782e2u6m99.com -78302.com -78654321.com -7881.com -7888.com -788899.com -788v.com -7890.net -78901.net -789238.com -7899.cc -789hi.com -789hsw.com -78bar.com -78dian.com -78diy.com -78dm.net -78ee.com -78fz.com -78gk.com -78h34.com -78hr.com -78md.com -78oa.com -78os.com -78plat.com -78tp.com -78v.com -78yx.net -793360.com -793688.com -79432.com -7979u.com -797sun.com -798com.com -798edu.com -798tiyu.com -798ydh.com -798zb.tv -799.net -7999.tv -79999.net -799job.com -79abc.com -79jr.com -79tao.com -79yougame.com -79yx.com -7a.cm -7a31jmf.com -7a8k.com -7ahr.com -7analytics.com -7b2.com -7bip9h1k5s.com -7c.com -7caiyun.com -7capp.com -7ccj.com -7chacha.com -7cname.com -7cnv.com -7cv.com -7cxk.com -7cyn.com -7d5y.com -7didc.com -7do.net -7down.com -7down.net -7dsw.com -7e.hk -7east.com -7ed.net -7edown.com -7ee.com -7eo8cc932r.com -7fei.com -7fgame.com -7flowers.com -7forz.com -7fresh.com -7glb.com -7gongzhu.net -7grandcross.com -7gugu.com -7gz.com -7h1fg6b6kd.com -7hcn.com -7head.icu -7help.net -7ho.com -7hon.com -7hua.com -7huang.org -7icp.com -7ipr.com -7its.com -7jia.com -7jia2.com -7jiaqi.com -7jjjj.com -7jk.com -7juju.com -7k35.com -7k7k.com -7k8k.com -7ka.co -7kk.com -7kla.com -7kla.net -7ko.com -7kww.net -7littlemen.com -7livq.app -7lk.com -7luohu.com -7lw.com -7mah2.com -7mo.cc -7moor-fs2.com -7moor-zx.com -7moor.com -7msj.com -7mx.com -7mz3a.com -7nepal.com -7net.cc -7oh.net -7pa.com -7paiqun.com -7piq.com -7po.com -7pzzv.us -7q5.com -7qile.com -7quw.com -7r7z.com -7rdao.com -7road.com -7road.net -7ronggame.com -7runto.com -7rz37dp998.com -7sef.com -7sfashion.com -7sodu.net -7souti.com -7sown.com -7soyo.com -7su.com -7syc.com -7t9.com -7tapp.com -7tenet.net -7tgame.com -7tnt.com -7tou.com -7tqy.com -7tui.net -7ugl.com -7usa.net -7v6.net -7vd7.com -7vk.com -7vyou.com -7wan.com -7wate.com -7wee.com -7wenta.com -7wenyi.com -7wnews.com -7wsh.com -7wsh.net -7wx3675l72.com -7x24cc.com -7x688.com -7xdown.com -7xiuxing.com -7xm.net -7xz.com -7y5.net -7y7.com -7yc.com -7yigame.com -7youxi.com -7yuki.com -7yun.com -7yun.org -7yundns.com -7yz.com -7yzone.com -7zgame.com -7zhan.com -7zhou.com -7zkj.com -7zm.com -7zz6.com -7zzy.com -8-008.com -80-go.com -80.hk -80000.cc -800423.com -800535.com -8006506.com -8006511.com -8006tu.com -800713.com -800820.net -8008202191.com -8008205555.com -80088886.com -8009900800.com -800app.com -800bamboo.com -800best.com -800best.net -800bestapi.com -800bestapp.com -800bestex.com -800book.net -800buy.com -800cdn.com -800du.com -800hr.com -800jcw.com -800li.net -800lie.com -800lj.com -800mei.net -800pharm.com -800pifa.com -800tu.com -800tuan.com -800tzw.com -800vod.com -800wen.com -800xiaoshuo.com -800xs.net -800you.com -800youhuo.com -80166.com -802203.com -80351.com -805481.com -80585.com -805m.com -807.com -80800.vip -8080bl.com -8080i.com -8081.net -8082audio.com -80899999.com -808xs.com -8090.com -8090.pk -809090.xyz -8090app.com -8090cdn.com -8090mt.com -8090st.com -8090vision.com -8090yx.com -8090yxs.com -80982.org -80baicai.biz -80bi.com -80cz.net -80data.net -80day.com -80den.com -80dongli.com -80host.com -80kongjian.com -80kuku.com -80lou.com -80paper.com -80s.im -80shihua.com -80sjy.net -80srz.com -80test.com -80txt.cc -80txt.com -80txt.la -80vps.com -80wifi.cc -80x.co -80xg.com -80xs.la -80zw.info -810840.com -811sisp.com -81257.com -81265.com -81265.net -812813.com -8130088.com -81312.com -814168.com -815.pub -8158.com -815ybw.com -81629.com -81663344.com -81677.com -816798.net -8169.com -817398.com -8175835ccc.com -81761.com -818.com -81813.com -8181xw.com -8181zx.com -81835.com -8188.cc -818cq.com -818it.com -818long.com -818ps.com -818tu.com -818u.com -818watch.com -81988888.com -81999.org -81999999.com -81art.com -81book.com -81comdns.com -81ek.com -81gfchina.com -81guofang.com -81hongshi.com -81it.com -81kx.com -81lcd.com -81man.com -81pan.com -81tech.com -81tt.net -81xy.com -81zhongwenx.com -81zw.com -81zw.la -8203app.com -82137777.com -82158.com -82250856.com -822644.com -8228.tv -82335966.com -8246.net -8264.com -82676666.com -826pc.com -826wan.com -8276n.com -828385vip.com -82859.com -8289880.com -828g.com -828i.com -82920.com -82987977.com -82flex.com -82ip.com -82ky.com -82l.net -82pk.com -83133.com -83133.vip -83152222.com -8325.com -8329607.com -833006.net -8336.com -833k5u23mb.com -83480900.com -835444.cc -835images21.com -835images28.com -835images32.com -835images38.com -835images48.com -835images55.com -835images61.com -835images73.com -835images76.com -835images83.com -83661111.net -83666.com -83753751.com -8379888.com -8383.vip -838413.com -838dz.com -83934.com -83990567.com -83edu.net -83h87d.com -83iiq501o2.com -83kxs.com -83mo7n9giq.com -83x.cc -84.com -84.vc -84008.com -8421.com -84308.com -84399.com -84460yhh7t.com -844wan.com -84519.com -84560262.xyz -84684.net -8477.com -848.com -848.tv -84fk.com -84ju.com -84ke.com -84ktv.com -84ny.com -84zcb.com -850500.com -850718.xyz -8521.org -85229666.com -85253000.com -85384.com -853lab.com -854255.com -8558.org -85657777.com -85679999.com -857yx.com -857zb1.tv -85814.com -85880234.com -858game.com -85jk.com -85kf.com -85wp.com -85xt.com -86-import.com -860029.com -86030.bid -860527.com -860598.com -86079898.com -861718.com -86175.com -861817.com -86215.com -86262.com -863535.com -863soft.com -86516edu.com -865211.com -86586222.com -86590.com -86656.net -866ds.com -8671099.com -8673h.com -867867jh.com -8682.cc -8684.com -8686c.com -8688g.com -86933.com -869d.com -869v.com -86amsdy.com -86bus.com -86crk.com -86ditu.com -86dk.com -86eh.com -86eye.com -86fis.com -86fsp.com -86game.com -86gc.net -86hcdnsuv.com -86hh.com -86hk.vip -86hr.com -86huoche.com -86jg.com -86joy.com -86kang.com -86kl.com -86kongqi.com -86lawyer.com -86mai.com -86mama.com -86mdo.com -86nb.com -86office.com -86pla.com -86pm25.com -86ps.com -86ps.net -86rexian.com -86sb.com -86tec.com -86tree.com -86ty.com -86uuu.com -86wind.com -86wol.com -86xq.com -86y.org -86yqy.com -870.com -870818.com -870q.com -87111111.com -87130000.com -87131.vip -87161.vip -87188718.com -872.cc -872872.com -87654321.xyz -8767.com -876web.com -8770000.com -8775.com -87753.net -877771.xyz -8779.com -87794560.com -87870.com -87872277.com -878998.net -8799.com -87g.com -87money.com -87pk.com -87vr.com -87yy.com -88-z.com -88.com -880.net -8800.org -880022.com -8801.net -880303.xyz -880331.net -88077777.com -88090.com -880sy.com -880you.com -88106.com -88116008.com -8811777.com -8821.com -8825.com -88303887.com -8831.app -8831398.com -88321268.com -88360.com -8838sl.com -883dai.com -884358.com -8844.com -88453392.com -8848.com -8848phone.com -885.com -8850006.com -885210.net -88582.com -8860.net -8864.com -8866.org -886623.com -8866886688.com -8868.com -886882.app -8868a16.app -8868vip130.app -886966.com -886abc.com -886vps.com -88765.com -887777.com -887w.com -888-8.com -8880666.com -888132.com -888484.xyz -888608.xyz -88880809.com -88887777.com -8888800000.com -8889997777.com -888abc333abc.com -888ban.com -888bb111ww.com -888bb888ww.com -888chem.com -888eee777eee.com -888jiagong.com -888pic.com -888ppt.com -888rj.com -888s.net -888twt.com -888xx666kk.com -8890.com -8890tu.com -8896.com -88966.net -8899.net -88995799.com -8899yyy.vip -88bank.com -88bx.com -88caijing.com -88cdn.com -88dushu.com -88fang.com -88gogo.com -88h3.com -88hom.com -88ht.com -88icon.com -88ipa.com -88k.site -88koo.com -88la.cc -88la.la -88lan.com -88laser.com -88lmtupian.com -88lot.com -88meishi.com -88mf.com -88ming.net -88order.com -88pets.com -88sup.com -88sus.com -88tang.com -88tph.com -88ttv.com -88xiaoshuo.com -88xr.org -88y5.com -88ysg.com -88zha.com -88zjzy.com -89006006.com -8910.io -89178.com -892qipai.com -89303.com -89469.com -89538777.com -89609335.com -8961zx.com -896qipai.com -898.travel -8989118.com -8989jt.com -8999.cc -89dj.com -89doc.com -89ds.com -89qw.com -89uu.com -8a.hk -8ah.cc -8aza.com -8b2.net -8bb.com -8bcd9.com -8bo.com -8btc-ops.com -8btc.com -8btm.com -8cname.com -8cnet.com -8dei.com -8dexpress.com -8dn.com -8dol.com -8dou.com -8dt.com -8dudata.com -8dus.com -8dwww.com -8e8z.com -8europe.com -8faa7.com -8fe.com -8fenxiang.com -8ft6h20ivn.com -8ggq.com -8gl.com -8gn2i0i5fc.com -8gov.com -8gui.com -8gyu.com -8h15725mm7.com -8hgame.com -8hsleep.com -8hy7q32i4q.com -8i8b.com -8jdns.net -8jiaoye.com -8jie8.com -8jxn.com -8jzw.cc -8k5lu58221.com -8k7k.com -8kana.com -8kjl34x2gj08.com -8kkcny.click -8kmm.com -8kwebs.com -8kzjuqu.com -8kzw.com -8l8e.com -8lag.com -8lhx.com -8liuxing.com -8lj.cc -8llp.com -8lun.com -8m8t.com -8mcn.com -8mhh.com -8mi.tech -8minzk.com -8miu.com -8miu.net -8mkt.com -8moom.com -8mpaoche.com -8ms.xyz -8n2.com -8n6n.com -8njy.com -8o9o.com -8pig.com -8pingce.com -8pu.com -8qwe5.com -8qzy.com -8rlq38736p.com -8rn4u.com -8rs8i.com -8s123.com -8shop.cc -8so.net -8t.cx -8tennis.com -8tgh.com -8tool.club -8tupian.com -8tupian.net -8u18.com -8u58.com -8u7q5l9gox.com -8ug.icu -8uid.com -8uyx.com -8wan.com -8win.com -8win.net -8wiu.com -8wq.com -8wss.com -8wym.com -8x6x.com -8xs.org -8xz8.com -8yao2hds35sv.com -8ydsp.com -8ym8.com -8ytech.com -8yx.com -8z.net -8zhuayu.cc -8ziben.com -8zntx.com -8zy.com -9-xin.com -9-zhuce.com -90.cc -900.la -900.vc -9000wy.com -900112.com -900501.xyz -900cha.com -900php.com -900ppt.com -900yi.com -90123.com -9018.net -90576.com -90686.com -906you.com -9090cdndns.com -90ao.com -90c6.com -90dao.com -90edu.com -90ers.com -90ko.net -90kuai.net -90lhd.com -90qh.com -90sheji.com -90sjimg.com -90tank.com -90vm.com -90wmoyu.com -90yang.com -90yk.com -90zm.net -91-box.com -91.com -91.plus -9100.ink -9105.cc -91084.com -910app.com -910play.com -911.vip -9111.tv -91118.com -91160.com -9118fu.com -911zy.com -912355.com -912366.com -9125flying.com -912688.com -912hf.com -912k.com -912yx.com -91300.com -9133.com -9136.com -91360.com -91378.com -913vr.com -913you.com -915.tv -9154wan.com -91558.com -915658.com -91583.com -915d.tv -916360.net -9166yx.com -916m.com -917.com -9170.com -917st.com -9186.com -9188.com -918canyin.com -918dxs.com -918ka.cc -918rc.com -919.com -9191mr.com -9191net.com -9191steel.com -9191zx.com -9193.com -91985.com -9199.com -919watch.com -91ac.com -91act.com -91ajs.com -91all.net -91anjian.com -91art.net -91baby.com -91boshi.net -91boshuo.com -91bushou.com -91carnet.com -91cdkey.com -91cha.com -91changxie.com -91chengguo.com -91convert.com -91ctc.com -91cy.app -91cy.cc -91czxs.com -91daizhang.com -91danji.com -91datong.com -91dba.com -91dbb.com -91dbq.com -91ddcc.com -91ddedu.com -91dict.com -91dnso.com -91doujin.com -91dub.com -91duba.com -91duobaoyu.com -91em.com -91es.com -91exam.org -91exiu.com -91facts.com -91fangan.com -91fifa.com -91fyt.com -91game.com -91goodschool.com -91haigui.com -91haiju.com -91haoka.com -91haoke.com -91health.net -91hecheng.com -91hmi.com -91https.com -91huayi.com -91huayi.net -91huifu.com -91huoke.com -91huola.com -91hy.com -91idc.gg -91ifx.com -91ios.com -91ios.fun -91jbz.com -91jf.com -91jiabohui.com -91jiafang.com -91jianguo.com -91jin.com -91jinjindai.com -91jinrong.com -91jinshu.com -91jiujige.com -91jkj.com -91jkys.com -91jlb.com -91jm.com -91jmw.com -91job.com -91join.com -91jtg.com -91k7.com -91kami.com -91kq.com -91kw.net -91laihama.com -91laiz.com -91ld.com -91lda.com -91leju.net -91lewei.com -91listen.com -91lsf.com -91lx.com -91m.co -91maibiao.com -91maths.com -91meitu.com -91miaoshou.com -91muou.icu -91muzhi.com -91ninthpalace.com -91nzh.com -91pandian.com -91pdf.com -91petct.com -91php.com -91post.com -91pusi.com -91q.com -91quce.com -91qycl.com -91rjz.com -91ronghui.com -91ruyu.com -91saishi.com -91sd.com -91sem.cc -91sfdj.com -91short.com -91shouce.com -91smart.net -91soer.com -91soker.com -91sotu.com -91soumu.com -91sph.com -91sst.com -91strategy.com -91student.com -91suan.com -91suke.com -91switch.com -91syun.com -91taoke.com -91ting.net -91tm45tzyb.com -91toolbox.com -91tty.com -91tw.net -91up.com -91vpn.com -91vps.com -91vrchat.com -91vst.com -91waijiao.com -91waitang.com -91wangcai.com -91wangyx.com -91way.com -91weimai.com -91wenmi.com -91wenwen.net -91wllm.com -91wujia.com -91wutong.com -91wzg.com -91xch.com -91xcm.com -91xfw.com -91xiake.com -91xiazai.com -91xinshang.com -91xjcs.com -91xsj.com -91xueshu.com -91xunyou.com -91xxt.com -91xy.com -91y.com -91yao.com -91yinpin.com -91yixun.com -91yk.com -91yong.com -91you.com -91youban.com -91youchai.com -91youxi.com -91yoyo.net -91yu.com -91yuedu.com -91yunxiao.com -91yunying.com -91yxbox.com -91yxl.com -91zhongkao.com -91zhuti.com -91znyx.com -91zxw.com -92.net -920uc.com -921.com -9211.com -9217web.com -92220668.com -92220701.com -925g.com -925ps.com -926kf.com -927927.com -927953.com -927game.com -927jx.com -928.sale -928vbi.com -92913.com -929825.com -92987.com -9299.net -929g.com -929vip.shop -92anycall.com -92ay.com -92bbs.net -92cloud.com -92demo.com -92dp.com -92dpw.com -92dydh.com -92fa.com -92fox.com -92game.net -92gyw.com -92hidc.net -92jzh.com -92kaifa.com -92kk.com -92le.com -92lm.com -92lucky.com -92mp.com -92nas.com -92ni.com -92oz46nne1.com -92scj.com -92shuoshuo.com -92sucai.com -92to.com -92txt.cc -92u93e.com -92wan.com -92wudao.com -92wx.com -92wx.la -92wy.com -92xygame.com -92y.co -92yanqing.com -92yo.com -92zc.com -92zhiqu.com -92zuqu.com -930hh.com -9312.net -93135.com -931931jh.com -933.moe -933332.xyz -934dsw.com -934hd.com -93636.com -936u.com -9377a.com -9377d.com -9377df.com -9377g.com -9377j.com -9377ja.com -9377z.com -93913.com -93966.com -93eu.com -93gaokao.com -93hdw9.com -93jiang.com -93jx.net -93kk.com -93land.com -93lh.com -93njf0.com -93pk.com -93sdk.com -93sem.com -93soso.com -93trf.com -93tyy.com -93wgames.com -93yo.com -93you.com -93zp.com -94001.com -94001.vip -940177.com -940304.xyz -94117.net -941adu.com -941gb.com -942mc.com -944.com -94445.com -9453job.com -945n48.com -9466.com -94831.com -948hj.com -949047l1jr.com -9495.com -94994.com -949949.com -94ad.com -94afx.com -94cb.com -94cto.com -94gan.net -94goo.com -94he38.com -94i5.com -94kuai.com -94mxd.com -94php.com -94q.com -94qy.com -94rmb.com -94rp.com -94te.com -94xy.com -94you.net -94ys.com -95-1.vip -95.com -95001111.com -95007.com -95013.com -95021.com -950901.com -95095.com -95105105.com -95105369.com -95105555.com -95105888.com -95105899.com -9512.net -951280.com -951368.com -95158.com -95169.com -95191.com -95195.com -951dns.com -95262.com -9527cha.com -9527cloud.com -9527dns.com -9527g.com -95303.com -95311.com -953yx.com -95408.com -95447.com -95504.net -95504test.com -95508.com -95516.com -95516.net -95526.mobi -95528.com -9553.com -9557.com -95572.com -95579.com -95580.net -95588.com -95598pay.com -95599.hk -955yes.com -9560.cc -95600.vip -9564.com -9567.com -9574528ue9.com -95779.com -958358.com -9588.com -95890.com -9595111.vip -95a.co -95b.co -95bd.com -95dns.cc -95dushu.com -95dushu.net -95e.co -95en.com -95epay.com -95fenapp.com -95ib.com -95ip.com -95jizhang.com -95k.com -95links.com -95ns.net -95px.com -95shubao.info -95to59.com -95xiu.com -95ye.com -95yijing.com -95zh.com -96005656.com -960123.com -960638.com -96090090.com -96096kp.com -960rc.com -9610.com -9611111.com -96160.cc -96189.com -96189.tv -9618968.com -96192.com -962.net -962007.com -962168.com -962222.net -96225.com -962360.com -962518.com -962600.com -96335.com -96355.com -96369.net -963695.com -963999.com -96459.com -964yx.com -965.one -96528.com -96533.com -965373.com -96558.com -96567.com -96590.net -9663.com -9665.com -966599.com -9665yx.com -9666666.com -9666sr.com -966799.cc -966zlnfjuza4oloh2bk.app -967680.com -96804.com -96811.com -96811.net -96822.com -968309.com -968550.com -9686000.com -96877.net -968816.com -9688896.com -968pk.com -969009.com -969368.com -96966.com -969g.com -96caifu.com -96dp.com -96f2d.com -96flw.com -96hq.com -96kaifa.com -96kb.com -96lh.net -96lou.com -96ni.net -96pk.com -96sdk.com -96sir.com -96weixin.com -96yx.com -96zxue.com -970mhz.com -9718.com -9718game.com -9724.com -97576.com -97616.net -97654.com -97665.com -97775.com -9778.com -977k.com -977pk.com -977zy.com -97866.com -9787.com -978clouds.com -978s.com -97936.com -97973.com -9797ly.com -9799.com -97add.com -97doc.com -97gg.net -97go.com -97jiayou.com -97jindianzi.com -97jz.com -97kid.com -97kks.com -97lp.com -97lpw.com -97lrf0l3xa.com -97ol.com -97rp.com -97rx.com -97ting.com -97ui.com -97uimg.com -97wd.com -97wyw.com -97xdj.net -97zm.com -98.com -98.ma -980512.com -980cje.com -98182.com -98187411.com -9823f7b9o6.com -984g.com -985.so -985211.link -985900.com -985dh.com -985hezi.com -985ks.com -985ks.net -985sy.com -98654.com -987.com -9873.com -9876game.com -9877.com -987app.com -987dns.com -987you.com -98809.com -98892.com -988sl.com -9891.com -989198.com -98cloud.com -98du.com -98ep.com -98eye.com -98k4.com -98kpm.com -98lm.com -98mc.cc -98mp.com -98nice.com -98one.com -98t.la -98t.net -98tang.com -98tsg.com -98w.co -98weixin.com -98xiaoshuo.com -98xz.com -98yl.com -98zhibo.com -98znz.com -98zw.com -99.com -99114.com -99118.com -9911yx.com -99166.com -9917.com -9918.tv -99193.com -991kang.com -991quka.com -9928.tv -9935china-air.com -9939.com -993937.com -99394.com -993h.com -99442.com -99469.com -994t7px765.com -994wan.com -9950air.com -9951.cc -995120.net -99520.love -996.com -996404.xyz -9965dns.com -9966.com -9966.org -9966333.com -9966886699.com -996996.com -996a.com -996box.com -996dns.com -996pic.com -996sdk.com -9973.com -997788.com -998.com -9981ypk.com -9982.com -99844666.com -99887w.com -998jk.com -998jx.com -998law.com -998tool.com -9991.com -999120.net -999125.com -999136.xyz -999178.com -999765.xyz -999777.com -9998.tv -99988866.xyz -99999dns.com -999abc333abc.com -999ask.com -999brain.com -999inandon.com -999mywine.com -999shengqian.com -999tea.com -999welder.com -999wx.com -99aiji.net -99aly.com -99bdf.com -99biaozhun.com -99bill.com -99bo.cc -99box.com -99brand.com -99bs.club -99caiba.com -99cc.com -99cfw.com -99cha.com -99cloud.net -99corley.com -99danji.com -99dingding.com -99down.com -99dushu.com -99dushuzu.com -99dw.com -99eo.com -99eyao.com -99fang.com -99fei.net -99fenlei.com -99fund.com -99fund.org -99haoche.com -99haoling.com -99hdf.com -99hkjf.com -99huodong.xyz -99ielts.com -99inf.com -99inn.cc -99jee.com -99jianzhu.com -99jiasu.com -99jiasu.net -99jrk.com -99kf.com -99kt.com -99ku.cc -99ku.vip -99kypay.com -99lb.net -99leidun.com -99max.me -99mc.com -99meihua.com -99meiju.tv -99mk.info -99mk.la -99mk.net -99mssj.com -99mst.com -99music.net -99n.me -99pdf.com -99ppt.com -99qh.com -99qibang.com -99qimingzi.com -99qumingzi.com -99read.com -99shi.com -99shou.com -99sj.com -99sky.com -99sun.com -99sushe.com -99sy.co -99thz.com -99tianji.com -99tongxuelu.com -99uri.com -99weiqi.com -99wj.com -99wuxian.com -99xr.com -99xueshu.com -99youmeng.com -99ys.com -99yunshi.com -99yx.com -99zihua.com -99zzw.com -9a9m.com -9ailai.com -9aimai.com -9air.com -9amts.com -9aoduo.com -9aola.com -9b11b109-ab3d-4193-ac60-79cc19b3e76d.link -9bianli.com -9bt0.com -9cao9.com -9cb.com -9ccapital.com -9che.com -9chew.com -9clive.com -9conn.net -9d19.com -9damao.com -9damao.net -9day.cc -9db.cc -9dd29.live -9ddm.com -9deli.com -9dfx.com -9dian.info -9dida.net -9dinn.com -9douyu.com -9droom.com -9duw.com -9dwork.com -9ead.com -9earth.com -9eip.com -9ele.com -9etravel.com -9fapi.com -9fav.com -9fbank.com -9fh5.com -9first.com -9flb.com -9fmk.com -9fo.com -9fonecard.com -9fpuhui.com -9fs.com -9fzt.com -9fzt.net -9g.com -9g8g.com -9gg.cc -9ghao.com -9gt.net -9he.com -9hier.com -9host.org -9hou.com -9ht.com -9huadian.net -9i0.com -9i0i.com -9icad.com -9icode.net -9icy.com -9idudu.com -9igcw.com -9ihb.com -9ihome.com -9ijf.com -9ilrc.com -9ilu.com -9imobi.com -9inx.com -9ioldgame.com -9iphp.com -9ishe.com -9ist.com -9iwanwan.com -9iwz.net -9ixf.com -9ixiuxiu.com -9j9y.com -9ji.com -9juewu.com -9jx.com -9k01.com -9k9k.com -9ka.vip -9kcs.com -9kd.com -9khc0iv5n7.com -9kkk.xyz -9kld.com -9kus.com -9laidu.net -9linux.com -9liuda.com -9longe.net -9m7v44974i.com -9man.com -9mayi.com -9miao.com -9mic.com -9nali.com -9newlive.com -9ngames.com -9niu.com -9nj563358x.com -9now.net -9ok.com -9om.com -9omj.com -9one.cc -9open.com -9orange.com -9pinke.com -9qd0wul789.com -9qu.com -9ria.com -9sb.net -9sgx.com -9shadow.com -9shoubiao.com -9skb.com -9skm.com -9sky.com -9sleep.org -9sug.com -9syw.com -9t-tech.com -9taobao.com -9taohao.com -9tax.com -9to.com -9tong.com -9tonglian.com -9tov.com -9u8u.com -9upk.com -9vf.com -9w1an.com -9w9.com -9wee.net -9wuli.com -9wwx.com -9wyy.com -9xdb.com -9xgame.com -9xic.com -9xinli.com -9xiu.com -9xiuzb.com -9xo9.com -9xs.org -9xun.com -9xwang.com -9ya.net -9yao.com -9yaocn.com -9yc.com -9ye.com -9yiban.com -9yjk.com -9you.com -9you.net -9yread.com -9yue.com -9yuntu.com -9yuonline.com -9yz.com -9zas5.com -9zhen.com -9znet.com -9zx.com -a-b.cc -a-du.net -a-isv.org -a-jazz.com -a-liai.com -a-map.co -a-map.link -a-map.vip -a-startech.com -a-sy.com -a-xun.com -a.xttv.top -a0318.com -a0598.com -a0770.com -a0bi.com -a135.net -a166.com -a1789.com -a18.ltd -a1coin.xyz -a1t2w1lzfr.com -a21fs.com -a2dongman.com -a4s6.com -a4size.net -a5.net -a5399.com -a5600.com -a5b.cc -a5idc.com -a5idc.net -a5j.cc -a5lt.com -a5xiazai.com -a5y.net -a632079.me -a6h8.com -a7.com -a700in.ren -a766.com -a789.org -a7nz4.us -a8.com -a8f947.com -a8tg.com -a8u.net -a8z8.com -a9188.com -a963.com -a9market.com -a9vg.com -a9x9.com -aa-lsk.com -aa152.com -aa360.net -aa43z7.com -aa5d.com -aa65535.com -aa6666.com -aa76858896.com -aa77kk.com -aaalawfirm.com -aaalogisticsgroup.com -aaareplicawatch.com -aaayu.com -aaayun.com -aabooo.com -aabqn.com -aacoptics.com -aactp.net -aad5.com -aadcloud.com -aadongman.com -aads-cng.net -aafxw.com -aai07251mu.com -aai07260mu.com -aakss.com -aaltosemi.com -aamets.com -aamev.com -aamgame.com -aamgame.mobi -aamgame.net -aamsmart.com -aamyoe.com -aanroute.net -aap5.com -aaplimg.com -aar.asia -aardio.com -aarkpbkc.com -aaronlam.xyz -aaspt.net -aastartups.com -aatccn.com -aatcmdvi.com -aateda.com -aauc.net -aavisa.com -aawvw.com -aaxinwen.net -aaygw.com -aaym.net -aayu.today -aazao.com -ab-sm.com -ab126.com -ab173.com -ab1989.com -ab365.com -abaa.cc -abacaipu.com -abackup.com -abaizx.com -abang.com -abaoge.com -abatour.com -abbbio.com -abbisko.com -abbkine.com -abbooa.com -abbyschoice.net -abc-ca.com -abc-love.com -abc119.tv -abc12366.com -abc151.com -abc188.com -abc369.net -abc4game.com -abc7722.com -abcache.com -abcbank.shop -abcdao.com -abcdocker.com -abcdv.net -abcerikk8.com -abcfintech.com -abcgonglue.com -abchina.com -abchinalife.com -abcjiaoyu.com -abcjifang.com -abckantu.com -abcleasing.com -abclive2-lh.akamaihd.net -abclogs.com -abcpost.com.au -abcrcw.com -abcs8.com -abcsbank.com -abctime.com -abcve.com -abcxb.com -abcxx.net -abcxyzkk.xyz -abcydia.com -abd007.com -abddn.com -abe-sz.com -abe-tech.com -abedu.net -abercrombie.com -abesmoke.com -abhouses.com -abiaogw.com -abiechina.com -abifsey.com -abitcg.com -abite.com -abiz.com -abkou.com -abl.asia -able-elec.com -ablejeans.com -ablesci.com -ablesky.com -abletive.com -ablman.com -abloz.com -abmjc.com -abnen.com -abnotebook.com -aboatedu.com -aboboo.com -aboilgame.com -aboutcg.com -aboutcg.net -aboutcg.org -aboutgk.com -aboutmy.name -aboutnew.net -aboutyun.com -aboveyunbo.com -abox.plus -abpuvw.com -abreader.com -abslw.com -absoloop.com -absst.com -abtd.net -abtnetworks.com -abtt266.com -abublue.com -abuquant.com -abusi.net -abusky.com -abuyun.com -aby.pub -abykt.com -abyssdawn.com -ac.fun -ac268.com -ac57.com -acabridge.net -acachina.com -academygkusa.com -academypublication.com -acadki.com -acadn.com -acb365.com -acc3.net -acc5.com -accdisplay.com -accelink.com -accessads.net -accessgood.com -accessibility-union.com -accessibility-union.net -accessibility-union.org -accessibilityunion.com -accessibilityunion.net -accessibilityunion.org -accessoft.com -accesspath.com -accgame.com -acclb.com -acclb.net -acconsys.com -accopower.com -account.htcvive.com -accr.cc -accsh.org -acctdns.com -acctdns.net -accu.cc -accuramed.com -accurate-china.com -accurate520.com -accxiaoheihe.com -acdianyuan.com -acdnrvh.com -ace-info.com -ace-pow.com -ace-rubber.com -ace113.com -acejoy.com -acelamicro.com -aceoo.com -acesheep.com -acetace.com -acetaffy.club -acetar.com -acewill.net -acfechina.org -acftu.org -acfun.com -acfun.net -acfun.tv -acfunchina.com -acfunchina.net -acg.gd -acg.tv -acg.xin -acg169.com -acg17.com -acg183.com -acg18s.com -acg4.com -acg6.com -acgdb.com -acgist.com -acglivefan.com -acgmc.com -acgorg.com -acgpic.net -acgpp.net -acgrenwu.com -acgres.com -acgsan.com -acgsky.win -acgtofe.com -acgtubao.com -acguxhda.com -acgvideo.com -acgvr.com -acgzc.com -acgzyj.com -achiming.com -achizi.com -acing.com -acingame.com -acirclea.com -acirno.com -acjw.net -ackjled.com -acloudbaas.com -acloudrender.com -acm.org -acmcoder.com -acmec-e.com -acmemob.com -acmetranslation.com -acmoba.com -acmsearch.com -acmturc.com -acnow.net -aco-musical.com -acoloo.com -acoolread.com -acpf-cn.org -acplay.net -acq42.com -acqiche.com -acqyjg.com -acrel-eem.com -acrel-microgrid.com -acrel-znyf.com -acrossmetals.com -acroview.com -acs.org -acshoes.com -acsrq.com -act-telecom.com -actacams.com -actamath.com -actbbs.com -actcn.net -acthao.com -acthd123.com -actime.net -actions-semi.com -actionsky.com -activate.activation-v2.kaspersky.com -activation-gp.com -activation-v2.kaspersky.com -activeclub.net -activepower.net -activity-dy.com -activity-wbsj.com -activity-zhendingtech.com -activity01.com -activity02.com -activity03.com -activity04.com -activity05.com -activitybyte.com -actoys.com -actoys.net -actranslation.com -actself.me -actuive.com -acuangle.net -acumoxj.com -acwapowercn.com -acwifi.net -acwing.com -acwlkj.com -acxk.net -acxxg.com -acz.asia -ad-cn.net -ad-diamond.com -ad-gone.com -ad-goods.com -ad-squirrel.com -ad-young.com -ad110.com -ad321.cc -ad5.com -ad518.com -ad778.com -ada-post.com -adamahf.com -adamcdn.com -adamcoder.com -adamerck.net -adanachina.com -adapay.tech -adas.com -adbgz.com -adbiding.com -adc-expo.com -adcdn.com -adcomeon.com -adcotechina.com -addaad.com -addchina.com -addgog.com -addimmar168.com -addinghome.com -addnewer.com -addog.vip -addoom.com -addpcn.com -addpv.com -addww.com -addx.live -ade8.com -adeasyx.com -adebang.com -adebibi.com -adeccogroupcn.com -adellock.com -adesk.com -adeskpro.com -adexplain.com -adfaith.com -adfortest.com -adfunlink.com -adfuns.com -adfyt.com -adg-dental.com -adguardprivate.com -adhei.com -adhimalayandi.com -adhubbj.xyz -adhudong.com -adianshi.com -adiexpress.com -adigifactory.com -adiic.com -adinju.com -adipman.net -adjdds.com -adjucai.com -adjuz.com -adjyc.com -adkjpx.com -adl163.com -adl888.com -adlainortye.com -adlefei.com -adlo.net -adluckin.com -adm88888.com -adm999.com -admai.com -admaimai.com -admama.com -admamax.com -admbucket.com -admile.xyz -admin04.com -admin10000.com -admin345.com -admin5.net -admin88.com -admincdn.com -admintony.com -adminxe.com -adminxy.com -admob-cn.com -admobclick.com -admobile.mobi -admonitor.org -admqr.com -admsger.com -admsidea.com -admtvs.com -admunan.com -admxh.com -adnineplus.com -adnrhy.com -adobe-tool.com -adobeae.com -adobeedu.com -adobesc.com -adongyu.com -adoregeek.com -adoutu.com -adparticle.com -adpchina.com -adpfm513.com -adplusx.com -adpsh.com -adqtt.net -adsalecdn.com -adsalecprj.com -adsame.com -adscover.com -adsctl.com -adsfancy.com -adshonor.net -adsjdy.com -adslr.com -adsmogo.com -adsmogo.mobi -adsmogo.net -adssaas.com -adssap.com -adsspr.com -adstarcharm.com -adsue.com -adtaipo.com -adtchrome.com -adtianmai.com -adtime.com -adtmm.com -aduan.cc -adubest.com -aduer.com -adult-stem-cells.com -adunicorn.com -adunioncode.com -aduspot.com -adutou.com -advanced-microsemi.com -advanced-pneumatics.com -advertcn.com -advich.com -advisionhorizon.com -advlion.com -advrtb.com -advuser.com -adwanji.com -adwebcloud.com -adwep.com -adwery.com -adwintech.com -adwke.com -adx.pw -adx666.com -adxflow.com -adxiuqia.com -adxliangmei.com -adxmax.com -adxmq.com -adxqd.com -adxwork.com -adxyun.com -adyoc.com -adyounger.com -adyuedong.com -adzhongdian.com -adzhp.cc -adzhp.net -adzhp.site -adznb.com -adzshd.com -ae1234.com -ae256.com -ae60.com -aebell.com -aebiz.net -aec188.com -aecbattery.com -aecc-mall.com -aecichina.com -aecname.com -aeconomic.com -aecsian.com -aeenergy.com -aeenets.com -aeespace.com -aegcar.com -aegis-env.com -aegisafe.com -aegisx.net -aegonthtf.com -aehyok.com -aeicei.com -aeink.com -aekyungnb.com -aemedia.org -aemoban.com -aeneag.xyz -aeo-cctv.com -aeolustyre.com -aeonbuy.com -aeonmall-china.com -aeonmed.com -aeoto.net -aepku.com -aerchs.com -aerdai.com -aerfaying.com -aero-shenyang.com -aerochina.net -aerocityholding.com -aerofugia.com -aesoftland.com -aestheticbutler.xyz -aesucai.com -aevit.xyz -aexpec.com -af122.com -af36.com -af360.com -afaisouth.com -afang.com -afanti100.com -afarway.com -afca-asia.org -afcec.com -afcfsf.xyz -afcs.dell.com -afdian.com -afdian.net -afdiancdn.com -afdsc.com -afdvr.cc -afdvr.com -afeica.com -afengblog.com -afengsoft.com -afenxi.com -affann.com -affluenze.com -afgame.com -afhao.com -afirstsoft.com -afjk.com -afjob88.com -aflink.com -aflytec.com -afp.adchina.com -afpchinesesports.com -african-styles.com -afriendx.com -afrindex.com -afshanghai.org -afszc.com -aft1v1.com -aft56.com -aftvc.com -afudan.com -afunapp.com -afuvip.com -afzhan.com -ag03.com -ag8.com -agcen.com -agcloudcs.com -agconnect.link -age.tv -age06.com -age6000.com -aged100.com -agedm.app -agefans.com -agel-tech.com -agelocer.com -agenge.com -agenow.com -agentyun.com -agerk.com -aghcdn.com -agi360.xyz -agile-china.com -agileex.com -aginomoto.com -agiquery.com -agiso.com -agitekservice.com -aglory.com -agmos012.com -agoow.com -agora.io -agoralab.co -agpolis.com -agriotcloud.com -agrittex.com -agrochemshow.com -agrodt.com -agrofairs.com -agrosg.com -agrowingchina.com -agstt.com -agtech.ltd -agucn.com -agui.cc -agumd.com -agv-amr.com -agvag.com -agxs.net -ah-inter.com -ah-suuwaa.com -ah-zl.com -ah12333.com -ah163.com -ah163.net -ah3c.com -ah788.com -ah7907.com -ah8.cc -ah9yu.com -ahacpp.com -ahaec.com -ahaiba.com -ahaiba.net -ahalei.com -ahanxun.com -ahaohao.com -ahaoyw.com -ahatjt.com -ahauto.com -ahbagy.org -ahbanker.com -ahbb.cc -ahbbsun.com -ahbbtv.com -ahbrt.com -ahbsxh.com -ahbxgwy.com -ahbys.com -ahbzgs.com -ahbztv.com -ahbzxnykj.com -ahbzyy.com -ahc.ink -ahcaijing.com -ahcaw.com -ahceisc.com -ahcfrc.com -ahchanye.com -ahcnb.com -ahcoating.com -ahcsdz.com -ahcyfc.com -ahczqy.com -ahczwater.com -ahd.so -ahdaer.com -ahdahda.com -ahdbsst.com -ahdci.com -ahdf56.com -ahdfjt.com -ahdhf.com -ahdjbh.com -ahdohpiechei.com -ahdsez.com -ahdtpm.com -ahdxj.com -ahdzfp.com -aheading.com -ahetyy.com -ahfda.com -ahfeixi.com -ahfensitong.com -ahfg.net -ahfgb.com -ahfszx.com -ahfytx.com -ahgae.com -ahgkw.org -ahglj.com -ahgssh.com -ahgtyc.com -ahguangbo.com -ahgyrn.com -ahgzedu.com -ahhaige.com -ahhanmi.com -ahhaoze.com -ahhbxh.com -ahhcbiotech.com -ahhdb.com -ahhhjx.com -ahhkedu.com -ahhngsjt.com -ahhnsz.net -ahhome.com -ahhouse.com -ahhsxyy.com -ahhtzx.com -ahhwdp.com -ahhyzn.com -ahhzi.com -ahianzhang.com -ahiib.com -ahinv.com -ahipi.com -ahitv.com -ahjdq.com -ahjgxy.com -ahjiankong.com -ahjinyu.com -ahjixi.com -ahjk.com -ahjk34.com -ahjkjt.com -ahjlcd.com -ahjpgroup.com -ahjsedu.net -ahjsexam.com -ahjszls.com -ahjtxx.com -ahjyec.com -ahjzjy.com -ahjzw.com -ahjzzs.com -ahkds.com -ahkemi.com -ahkende.com -ahkjksw.com -ahkjwx.com -ahkxsoft.com -ahlca.org -ahlcn.com -ahlib.com -ahlife.com -ahlinux.com -ahljnews.com -ahlqgs.com -ahlsm1.com -ahltgroup.com -ahluqiao.com -ahlxb.com -ahlyjt.com -ahlzgd.com -ahmif.com -ahmky.com -ahmwgroup.com -ahnanfang.com -ahnec.com -ahnluh.com -ahnmc.com -ahno-tool.com -ahnxs.com -ahohai.com -ahome365.com -ahomezc.com -ahougn.com -ahpdkj.com -ahphi.com -ahplm.com -ahqmdq.com -ahqxsw.com -ahrbg.com -ahrccp.com -ahrcu.com -ahrcw.com -ahread.com -ahrenji.com -ahrenkun.com -ahrsksw.net -ahrunzi.com -ahs.pub -ahsalt.com -ahscl.com -ahscxyy.com -ahsea.com -ahsfdxrmyy.com -ahshbszyyy.com -ahsj-group.com -ahsjxjy.com -ahsjyxh.com -ahspxh.com -ahsqjt.com -ahssgs.com -ahssnews.com -ahsthzx.com -ahswyz.com -ahsxkyb.com -ahsxscsw.com -ahsyj.com -ahsylsy.com -ahsz.tv -ahszbx.com -ahteacher.com -ahtelit.com -ahtlbyby.com -ahtongyuan.com -ahtrq.com -ahtxyyjt.com -ahtypg.com -ahuano.com -ahubbs.com -ahudows.com -ahuyi.com -ahwater.net -ahwbkf.com -ahweinan.com -ahwjnews.com -ahwjxx.com -ahwmw.com -ahwmyy.com -ahwnqzs.com -ahwnwl.com -ahwwnews.com -ahwwx.com -ahwxcs.com -ahwxhr.com -ahxcyy.com -ahxmgk.com -ahxunbu.com -ahxwkj.com -ahxyol.com -ahydnet.com -ahyessoft.com -ahyijiali.com -ahyiqing.com -ahyouchengedu.com -ahyouth.com -ahyqx.com -ahysxh.com -ahyuning.com -ahyx.cc -ahyx.net -ahyyxh.com -ahyzzx.com -ahzcw.cc -ahzhengjie.com -ahzp.com -ahzs10000.com -ahzssw.com -ahztsh.com -ahzxy.com -ahzyw.com -ai-abc.com -ai-anchor.com -ai-augmented.com -ai-cai.com -ai-cctv.com -ai-classes.com -ai-cool.com -ai-daxue.com -ai-factory.com -ai-indestry.com -ai-qingchang.com -ai-rtc.com -ai-start.com -ai-test.com -ai-thinker.com -ai-vip.net -ai-ways.com -ai.cc -ai012.com -ai0513.com -ai257.com -ai572.com -ai7.com -ai7.org -aiaa.org -aiacfo.org -aiacgn.com -aiagain.com -aiagain.net -aiage.com -aiai6.com -aiaigame.com -aiaigu168.com -aiaitie.com -aialbb.com -aianno.com -aiao8.com -aiaor.com -aiappx.com -aiba.com -aibaimm.com -aibang.com -aibang.run -aibangbaoxian.net -aibanges.com -aibank.com -aibank.link -aibao.com -aibaocloud.com -aibaogao.com -aibaohu.com -aibaov.com -aibaoxian.com -aibase.com -aibiaomei.com -aibiaow.com -aibing.cc -aibll.com -aibo123.com -aiboce.com -aiboco.com -aibookba.com -aibooks.cc -aibreeno.com -aibrm.com -aic707.com -aicai.com -aicaicdn.com -aicailang.com -aicairen.com -aicait.com -aicccloud.com -aicdn.com -aicdn.work -aicdn2.com -aicdn3.com -aicdn4.com -aicdn5.com -aichagu.com -aichaicp.com -aichan.info -aichangbaishan.com -aichaoxing.com -aichat.net -aichat1234.com -aichehome.com -aichi-zhe.com -aichinaw.com -aichunjing.com -aiclicash.com -aicloud.com -aicoauto.com -aicode.cc -aicoinstorge.com -aiconn.com -aicsemi.com -aicsuk.net -aicthink.com -aicu8.com -aicunfu.com -aicunxibao.com -aida64.cc -aida64cn.com -aidabest.com -aidai.com -aidaijia.com -aidaily.com -aidaiz.com -aidalan.com -aidangbao.com -aidanji.com -aidapeid.com -aidaxing.com -aidaxue.com -aidcgroup.net -aidcstore.net -aideep.com -aidenleong.com -aidianji.net -aidiao.com -aidigong.com -aidimedia.com -aidjyun.com -aidlearning.net -aidlux.com -aidoctor.world -aidog.com -aidong-ai.com -aidong.me -aidonghai.com -aidoor.net -aidouzuji.com -aidpaper.com -aidrive.com -aidubuluo.com -aidugame.com -aiduoka.com -aidusk.com -aidusk.org -aiduwenxue.com -aidynamic.com -aidytt.com -aiec-alliance.com -aieco.org -aiecoms.com -aiegde.com -aiegle.com -aiema.com -aiemy.com -aieok.com -aier020.com -aier021.com -aier0431.com -aier0755.com -aier0771.com -aier0775.com -aierchina.com -aierfano.com -aierhb.com -aierhs.com -aierlz.com -aieryk.com -aierzy.com -aievsge.com -aieye8.com -aiezu.com -aifabu.com -aifacelab.com -aifamu.com -aifanfan.com -aifang.com -aifanyi.net -aifcdn.com -aifei.com -aifei.info -aifengjie.com -aifengkeji.com -aifenlei.com -aifont.com -aifoxtech.com -aifu10.com -aifu360.com -aifuturex.com -aifuwus.com -aifuxi.com -aigame.com -aigame100.com -aiganggu.com -aigc-cloud.com -aigc369.com -aigcarena.com -aigccdn.com -aigclsp.com -aigcxm.com -aige010.com -aigei.com -aigewc.com -aigexing.com -aigexing.net -aigo.com -aigobook.com -aigodiy.com -aigou.com -aigrammar.net -aigtek.com -aiguhuishou.com -aiguilai.com -aiguo.tech -aigupiao.com -aihaisi.com -aihala.com -aihanfu.com -aihanfu.net -aihangtian.com -aihao.org -aihecong.com -aihehuo.com -aihelp.net -aihelpcn.net -aihero100.com -aihke.com -aihoge.com -aihotel.com -aihst8.com -aihua1998.com -aihuajia.com -aihuaju.com -aihuau.com -aihuazhou.com -aihubs.net -aihuhua.com -aihuishou.com -aii-alliance.org -aiibii.com -aiig.cc -aiihu.com -aiijournal.com -aiimg.com -aiimooc.com -aiioii.com -aiit.me -aiitec.com -aiiup.com -aiizen.net -aiji66.com -aijiajiankang.com -aijianji.com -aijiatui.com -aijiayou.com -aijingu.com -aijishu.com -aijiuku.com -aijizhang.net -aijuhome.com -aik.com -aikaixin.com -aikaiyuan.com -aikan669.com -aikan8.com -aikanba.cc -aikang.com -aikanggroup.com -aikeapp.com -aikep.com -aiketour.com -aikf.com -aikgmgre.com -aikonchem.com -aikouzi.com -aikucun.com -ail-online.moe -ailaba.com -ailabs.xin -ailai6.com -ailbaba.me -ailemon.net -ailete.com -ailewan.com -aileyun.net -ailiao360.com -ailibang.com -ailibi.com -ailinglei.com -ailingmao.com -ailinux.net -ailinzhou.com -ailipu.com -ailite.com -ailiyun.com -ailom.com -ailongmiao.com -ailuckyboy.com -ailugroup.com -ailuluz.com -ailuntan.com -ailvxing.com -aim-ec.com -aimaker.space -aimatech.com -aimatrix.ai -aimcx.com -aimeas.com -aimei39.com -aimeideni.com -aimeifen.vip -aimeike.tv -aimeilid.com -aimengang.com -aimergroup.com -aimeter.com -aimgroupcn.com -aimicron.com -aimilebc.com -aimin1979.com -aimingmed.com -aimingtai.com -aimipay.net -aimiplay.com -aimo2o.com -aimoge.com -aimoneshoes.com -aimsen.com -aimu-app.com -ainas.cc -ainiapp.com -ainirobot.com -ainiseo.com -ainiu.net -ainixing.com -ainm.cc -ainol.com -ainuoedu.com -ainyi.com -aioclinic.com -aioexpress.com -aiops.com -aioptics.com -aiotoolbox.com -aip-gz.com -aip.net -aip.org -aipage.com -aipai.com -aipaike.com -aipaixt.asia -aipaiyinghua.com -aipark.com -aiparkvip.com -aipay.cloud -aipcc-gz.com -aipedu.net -aipenglai.com -aipgy.com -aiphz.com -aipiaxi.com -aipingxiang.com -aipintuan.com -aipiwu.com -aippt.com -aiprose.com -aipu-waton.com -aipuo.com -aipz.com -aiqfd.com -aiqgy.com -aiqi-pharma.com -aiqiangua.com -aiqianxq.com -aiqibaba.com -aiqicha.com -aiqiche.com -aiqin.com -aiqingyu1314.com -aiqisoft.com -aiqiye.cc -aiqiyi.com -aiqiyicloud-mgmt.com -aiqiyicloud.com -aiqiyicloud.net -aiqiyivip.com -aiqle.com -aiqu.com -aiqu.design -aiquxs.com -aiqygogo.com -air-level.com -air-matters.com -air-matters.io -air-world.com -air.cc -airacm.com -airbft.com -airboo.com -airchangan.com -airchina.com -airchinacargo.com -airchinagroup.com -airchinaim.com -airchinamedia.com -aircom-sh.com -aircourses.com -airdali.com -airdoc.com -airdropin.com -airenche.com -airepay.net -airfex.net -airguilin.com -airimoe.com -airj.website -airjd.com -airkunming.com -airland1966.com -airleaderchina.com -airmart.vip -airmate-china.com -airmb.com -airmobyte.com -airnut.com -airoha.com.tw -airpipetech.com -airportcip.com -airportcn.com -airsavvi.com -airshipads.ru -airspa.net -airstar.com -airstarfinance.net -airtac.com -airtofly.com -airtu.me -airwh.com -airworksoft.com -aisaohuo.com -aisbeijing.com -aise.chat -aisecurius.com -aisee.tv -aiseeking.com -aiseminar.com -aisenseinc.com -aishangba.info -aishangba.org -aishangyangyu.com -aisharenet.com -aishengji.com -aishenhua.com -aishenqi.net -aishuge.cc -aishuge.la -aishukong.com -aishuola.com -aishushu3.com -aisidi.com -aisila.com -aisilipu.com -aisin-sh.com -aisino.com -aisinogd.com -aisinogz.com -aisitool.com -aisixiang.com -aiskr.com -aisky.cc -aiskycn.com -aislharrow.com -aisoio.com -aisojie.com -aisou.club -aisoutv.com -aispeech.com -aispreadtech.com -aistar.site -aistar666.com -aistudio-app.com -aisx.cc -aisy.com -aitangyou.com -aitaotu.com -aitcfw.com -aite.xyz -aitecar.com -aitecc.com -aitechforsafety.com -aitemall.com -aitemple.com -aiterent.com -aitesu.com -aitetech.com -aitiancheng.com -aitielu.com -aiting.com -aitists.com -aititia.com -aitiyu.com -aitkcn.com -aito.auto -aitrans.net -aitransfy.com -aituan.com -aituanche.com -aitutu.cc -aitype.net -aiufida.com -aiutdns.com -aiuxdesign.com -aiuxian.com -aiuxstudio.com -aiv5.cc -aiveola.com -aivivo.com -aiviy.com -aiviysoft.com -aivote.com -aiwaly.com -aiwan4399.com -aiwan91.com -aiwanba.net -aiwatchs.com -aiwebsec.com -aiwei365.net -aiweibang.com -aiweibk.com -aiweline.com -aiwenyi.com -aiworkspace.com -aiwuzhou.com -aiwvegax.com -aiww.com -aixag.com -aixcoder.com -aixiangtan.com -aixiaoduo.com -aixiaoka.net -aixiaola.com -aixiaomedia.com -aixiashu.com -aixiashu.info -aixiashu.net -aixiatxt.com -aixiawx.com -aixiaxs.com -aixiaxsw.com -aixiezuobao.com -aixifan.com -aixigua.com -aixin-ins.com -aixin-life.com -aixin-life.net -aixinhaitun.com -aixinmusic.com -aixinwechat.com -aixinwu.org -aixiu.net -aixiuyingyu.com -aixq.com -aixs.info -aixs.org -aixue.net -aixuebanban.com -aixueche.com -aixuedai.com -aixuejun.com -aixuekku.com -aixuesheng.net -aixuetang.com -aixuexi.com -aixyy.com -aixzu.com -aiya.live -aiya8.com -aiyaapp.com -aiyamax.com -aiyangedu.com -aiyanqing.com -aiyaopai.com -aiyecdn.com -aiyewj.com -aiyewjc.com -aiyichuan.com -aiyidu.com -aiyinghun.com -aiyingli.com -aiyingshi.com -aiyinteli.com -aiyishu.com -aiyisoft.com -aiyjs.com -aiykj.com -aiyo99.com -aiyongaiwan.com -aiyou.com -aiyoumi.com -aiyouxi.com -aiyouzj.com -aiyoweia.com -aiysm.com -aiyuangong.com -aiyue520.com -aiyuke.com -aiyunxiao.com -aiyy.org -aizaoqi.com -aizgtc.com -aizhan.com -aizhanzhe.com -aizhengli.com -aizhet.com -aizhibo.net -aizhishang.com -aizhugong.com -aiziti.net -aizools.com -aizuna.com -aizuopin.com -aizusheng.com -ajbcloud.com -ajbtv.com -ajcass.com -ajcctv.com -ajclass.com -ajedu.com -ajfcxx.com -ajgts.com -ajhchem.com -ajhimalayanqf.com -ajihuo.com -ajinga.com -ajiu.xin -ajiuqian.com -ajkcdn.com -ajkdns2.com -ajkfc.com -ajkimg.com -ajkinclude.com -ajlty.com -ajmide.com -ajpysz.com -ajrcb.com -ajs-app.com -ajs17.com -ajtmy.com -ajuhao.com -ajutwatch.com -ajwang.com -ajxhgy.com -ajyg.com -ajzq.com -ak-medical.net -ak.cc -ak0.tw -ak03220hou.com -ak03230hou.com -ak1ak1.com -ak47ids.com -aka-amd-njpwworld-hls-enlive.akamaized.net -aka700.com -aka700.net -akadns88.net -akadns99.net -akaifa.com -akailibrary.com -akamai.com -akashadata.com -akashic.cc -akaxin.com -akbchina.com -akbe.com -akbing.com -akbkgame.com -akcomemetals.com -akdns.net -akeeps.com -akesobio.com -akey.im -akey.me -akeyun.com -akgjgs.com -akhlwyy.com -akhtm.com -akhy.com -aki-game.com -aki-game.net -aki-game2.com -aki-game2.net -akile.net -akjianding.com -akkogear.com -aklyw.com -akng.net -akniu.com -akoeva.com -akomr.com -akoo0509uis.com -akpig.com -akplayer.com -akppt.net -akptfe.com -akr-developers.com -akru.plus -akscan.com -akspeedy.com -akswjt.com -aksxw.com -aku.pub -akuziti.com -akylq.com -akymmzs.com -al-jin.com -al8l.com -alabmed.com -alaboshuiyan.com -alacun.com -aladdin-assets.com -aladdin-e.com -aladdin-reagent.com -aladdinedu.com -aladdinnet.com -alafy.com -alai.net -alameal.com -alancui.cc -alanqi.com -alanyhq.com -alavr.com -alayanew.com -alayu.com -alayunchina.com -alazv.com -albeche.com -albertaz.com -alc-iot.com -alcatel-home.com -alcatelmobile.com -alcha.com -alcty.com -alcy.cc -aldeee.com -aldgo.com -aldnew.com -aldsd.com -aldtop.com -aldwx.com -aledeco-hk.com -aleenote.com -alenable.com -alertover.com -alevelwx.com -alexhaohao.com -alexinea.com -alexpad.fun -alexyan.cc -alfachemar.com -alfafull.com -alfingfuda.com -algkfd.com -algorithmart.com -alhug.com -alhywj.com -alhzp.com -ali-api-test.net -ali-cdn.com -ali-expo.com -ali-gtm-01.net -ali-gtm-pressure.com -ali-health.com -ali-restore.net -ali-star.com -ali213.com -ali213.net -ali37.net -aliadvance.com -aliajj.com -alialipay.com -alianhome.com -aliapp-inc.com -aliapp.com -aliappcdn.com -alibaba-inc.com -alibaba.cdn.steampipe.steamcontent.com -alibaba.com -alibaba.net -alibabacapital.com -alibabachengdun.com -alibabachengdun.net -alibabacloud.co.in -alibabacloud.com -alibabacloud.com.au -alibabacloud.com.hk -alibabacloud.com.my -alibabacloud.com.sg -alibabacloud.com.tw -alibabacorp.com -alibabadesign-enable.com -alibabadesign.com -alibabadns.com -alibabadoctor.com -alibabafonts.com -alibabafoundation.com -alibabafuturehotel.com -alibabagroup.com -alibabainno.com -alibabaonline.com -alibabapictures.com -alibabaplanet.com -alibabastars.com -alibabatech.org -alibabatechqa.com -alibabaued.com -alibabausercontent.com -alibabawood.com -alibench.com -alibjyun.com -alibjyun.net -alibole.com -alibtc.com -alibtrip.com -alibuybuy.com -alic.com -alicache.com -alicall.com -alicdm.com -alicdn.com -alicdn.net -alicdngslb.com -alicloud.com -alicloudapi-inner.com -alicloudapi.com -alicloudcc.com -alicloudccp.com -alicloudddos.com -alicloudlayer.com -alicloudsec.com -alicloudwaf.com -alicontainer.com -alictf.com -alidata.org -alidayu.com -aliddmall.com -alidns.com -alidns.net -alidz.net -aliedge.com -alienfans.net -aliensidea.com -alientek.com -aliexpress-media.com -aliexpress.com -aliexpress.ru -aliexpress.us -alifabu.com -alifanyi.com -alifenxiao.com -aligames.com -aligaofang.com -aligenie.com -aligfcc.com -aligfddos.com -aligfwaf.com -alighting.com -alihd.net -alihealth.hk -alihealth.net -alihh.com -alihuahua.com -aliimg.com -aliiotapp.com -alijijinhui.org -alijk.com -alikmd.com -alikunlun.com -alikunlun.net -alili.tech -aliliying.com -aliloan.com -aliluya.com -alimamaframe.com -alimaomall.com -alime.ai -alimebot.com -alimei.com -alimmdn.com -alinx.com -alinx.vip -aliog.com -alionexpo.com -alipan.com -alipansou.com -alipay-corp.com -alipay-eco.com -alipay-inc.com -alipay-traffic.com -alipay.com -alipay.hk -alipay.net -alipayauto.com -alipaycs.com -alipaydesign.com -alipaydev.com -alipaydns.com -alipayeshop.com -alipayhk.com -alipaymo.com -alipayobjects.com -alipayplus.com -alipcsec.com -aliplay.com -aliplus.com -alippm.com -aliqiche.com -aliqq.cc -aliresearch-internal.com -aliresearch.com -alirtc.com -alirui.com -alisealing-pre.com -alisealing-sit.com -alisealing-uat.com -alisealing.com -alishine.net -aliso.cc -alisoft.com -alisolarlight.com -alisports.com -alitchina.com -alitelecom.com -alithefox.net -alithon.com -alitianji.com -alitrip.com -alitrip.hk -alittle-tea.com -alittlesoldier.com -aliued.com -aliunicorn.com -aliuv.com -alivcr.com -alivecdn.com -alivv.com -aliway.com -aliwd.com -aliwears.com -aliwork.com -aliwx.net -alixiaomi.com -alixiaoyouhui.com -alixixi.com -alixox.com -alixueyuan.net -aliyiyao.com -aliyizhan.com -aliypc.com -aliyue.net -aliyun-esa.net -aliyun-inc.com -aliyun-iot-share.com -aliyun-znfhq.net -aliyun.com -aliyun.org -aliyun.xin -aliyunbaas.com -aliyunbaike.com -aliyuncc.com -aliyuncdn.com -aliyuncdn.net -aliyunceng.com -aliyuncname.xyz -aliyuncs.com -aliyuncsslb.com -aliyuncsslbintl.com -aliyunddos0002.com -aliyunddos0003.com -aliyunddos0005.com -aliyunddos0006.com -aliyunddos0007.com -aliyunddos0010.com -aliyunddos0011.com -aliyunddos0012.com -aliyunddos0014.com -aliyunddos0015.com -aliyunddos0017.com -aliyunddos0018.com -aliyunddos0019.com -aliyunddos0020.com -aliyunddos0023.com -aliyunddos0024.com -aliyunddos0025.com -aliyunddos0026.com -aliyunddos0027.com -aliyunddos0029.com -aliyunddos0030.com -aliyunddos1001.com -aliyunddos1002.com -aliyunddos1003.com -aliyunddos1004.com -aliyunddos1005.com -aliyunddos1006.com -aliyunddos1007.com -aliyunddos1008.com -aliyunddos1009.com -aliyunddos1010.com -aliyunddos1011.com -aliyunddos1012.com -aliyunddos1013.com -aliyunddos1014.com -aliyunddos1015.com -aliyunddos1016.com -aliyunddos1017.com -aliyunddos1018.com -aliyunddos1019.com -aliyunddos1020.com -aliyunddos1021.com -aliyunddos1022.com -aliyunddos1023.com -aliyunddos1024.com -aliyunddos1025.com -aliyunddos1026.com -aliyunddos1027.com -aliyunddos1028.com -aliyunddos1029.com -aliyunddos1030.com -aliyundrive.cloud -aliyundrive.com -aliyundrive.net -aliyunduncc.com -aliyundunddos.com -aliyundunwaf.com -aliyunedu.net -aliyunfile.com -aliyunfuwuqi.com -aliyunga.com -aliyunga0004.com -aliyunga0005.com -aliyunga0006.com -aliyunga0007.com -aliyunga0008.com -aliyunga0009.com -aliyunga0010.com -aliyunga0011.com -aliyunga0012.com -aliyunga0013.com -aliyunga0014.com -aliyunga0015.com -aliyunga0016.com -aliyunga0017.com -aliyunga0018.com -aliyunga0019.com -aliyunga0020.com -aliyunga0021.com -aliyunga0022.com -aliyunga0023.com -aliyunga0024.com -aliyunga0025.com -aliyunga0026.com -aliyunga0027.com -aliyunga0028.com -aliyunga0029.com -aliyunga0030.com -aliyunga0031.com -aliyunga0032.com -aliyunga0033.com -aliyunga0034.com -aliyunga0035.com -aliyunga0036.com -aliyunga0037.com -aliyunga0038.com -aliyunga0039.com -aliyunga0040.com -aliyunga0041.com -aliyunga0042.com -aliyunga0043.com -aliyunga0044.com -aliyunga0045.com -aliyunga0046.com -aliyunga0047.com -aliyunga0048.com -aliyunga0049.com -aliyunga0050.com -aliyunga860004.com -aliyunga8601.com -aliyunga8602.com -aliyunga8603.com -aliyungf.com -aliyungrtn.com -aliyunhelp.com -aliyunhn.com -aliyunidaas.com -aliyuniot.com -aliyunj.com -aliyunjiasu.cloud -aliyunlive.com -aliyunlivetest.com -aliyunos.com -aliyunparking.com -aliyunpds.com -aliyunqifu.com -aliyunrtc.com -aliyunssl3.com -aliyunvpc.com -aliyunwaf.com -aliyunwaf1.com -aliyunwaf2.com -aliyunwaf3.com -aliyunwaf4.com -aliyunwaf5.com -aliyunx.com -alizhaopin.com -alizhizhu.com -alizila.com -aljazeera-eng-hd-live.hls.adaptive.level3.net -alkpharm.com -alkuyi.com -all-in-data.com -all3c.com -all4seiya.net -allapp.link -allawnfs.com -allawno.com -allawntech.com -allbrightlaw.com -allchips.com -allcitygo.com -allcitysz.net -alldobetter.com -alldragon.com -alleadprint.com -allenmarket.com -allfang.com -allfootballapp.com -allfunnies.com -allgamesky.com -allhistory.com -alliancebrh.com -allianz360.com -allicdata.com -allied-corp.com -alliedrongda.com -allinbots.com -allinfinance.com -allinpay.com -allinpaygx.com -allinpayhb.com -allinpaysz.com -allinso.com -alllandnet.com -alllget.com -alllook.tv -allmaga.net -allmed-china.com -allmei.com -allnow.com -alloyteam.com -allpayx.com -allpku.com -allposs.com -allrace.com -allred.vip -allsafeip.com -allsaintsmusic.com -allschool.com -allschoolcdn.com -allsenseww.com -allshiping.com -allshopwatch.com -allspark-cn.com -allstack.net -allstatics.com -allstor.org -alltechmed.com -alltion-cn.com -alltoall.net -alltobid.com -alltosun.com -alltuu.cc -alltuu.com -allvalue.com -allwellsports.com -allweyes.com -allwin368.com -allwinnertech.com -allwinso.com -allyes.net -allyfurn.com -allystar.com -allyvn.com -alminecn.com -almondoy.com -alnan.com -alnanaluminium.com -alo7.com -aloha-ukulele.com -alonemonkey.com -along96.com -alongsky.com -alookweb.com -alpha-browser.com -alpha-star.org -alphabiopharma.com -alphabole.com -alphassl.com -alphay.com -alrailpha.com -alskbc.com -alsolife.com -alsovalue.com -alszxyy.com -altamob.com -altratek.com -altstory.com -altxw.com -alu-ledprofile.com -aluaa.com -aluminiumchina.com -aluntan.com -alwaysnb.com -alwayzev.com -alwindoor.com -alxw.com -alyisheng.com -alypw.com -alyzq.com -alzls.com -alzscl.com -am-sino.com -am1116.com -am774.com -am810.net -am89.com -amaiche.com -amallb2b.com -amantang.com -amanyi.com -amap.com -amapauto.com -amarsoft.com -amassfreight.com -amasswww.com -amaxchina.com -amayad.com -amazfit.com -amazingsys.com -ambassadorchina.com -amberbj.com -amberedu.com -amberhotelsgroup.com -amberknit.com -ambier.net -ambition-soft.com -ambow.com -amcarebsh.com -amcaresz.com -amcarewl.com -amcfortune.com -amchamchina.org -amcvoyages.com -amd.com -amdlive-ch01.ctnd.com.edgesuite.net -amdlive-ch03-ctnd-com.akamaized.net -amdlive-ch03.ctnd.com.edgesuite.net -amdlive.ctnd.com.edgesuite.net -amdotibet.com -amec-inc.com -amegroups.org -ameisx.com -amemv.com -amemv.net -ameow.xyz -americachineselife.com -amethystum.com -amexpressnetwork.com -ameya360.com -amflower.com -amgbs.com -amgepic.com -amh.sh -amhimalayanet.com -amhl.net -amiao.co -amicc.com -amijiaoyu.com -amindbox.com -aminglinux.com -amishii.com -amishow.com -amiyabot.com -amo-solar.com -amo9.com -amobbs.com -amoe.cc -amonxu.com -amoydxmed.com -amp-intl.com -ampcn.com -amperobots.com -amphenol-auto.com -amphenol-industrial.com -amphenol-jet.com -amplesky.com -amplly.com -ampmake.com -ampxl.com -amqyl.com -ams-aigc.com -ams.org -amsky.cc -amsoveasea.com -amssro.net -amswater.com -amtbbs.org -amtf18.com -amtjt.com -amtron-ic.com -amuletj.com -amuletor.com -amuluze.com -amunion.com -amuren.com -amusic.shop -amyart360.com -amyroutes.com -amysql.com -amyxun.com -amz123.com -amz520.com -amz800.com -amzcaptain.com -amzcfo.com -amzdh.com -amzkeys.com -amzmm.com -amzndns-cn.biz -amzndns-cn.com -amzndns-cn.net -amzqazc.com -an1health.com -an2.net -an68.com -analog.com -analogfoundries.com -analysysdata.com -analytics.strava.com -anan123.vip -anan666.com -anandoor.com -anandzhang.com -ananlighting.com -ananpet.com -ananzu.com -anao.vip -anatuprak.com -anav.com -anbang-life.com -anbanggroup.com -anbaool.com -anbokeji.net -ancbk.com -ancda.com -anchnet.com -ancii.com -ancun.com -anda-cn.com -anda-tech.com -andaike.com -andakc.com -andan.me -andazr.com -andcaifu.com -andemed.com -andertechs.com -andes.tech -andesbrain.com -andeshengtec.com -andfx.net -andgele.com -andhj.com -andpay.me -andreader.com -android-doc.com -android-studio.org -androidesk.com -androidga.com -androidgo.duapp.com -androidinvest.com -androidmi.com -androidmov.com -androidonline.net -androidperformance.com -androidtea.com -andtosi.com -andwi.com -andygcj.com -andyx.net -ane56.com -aneasystone.com -anestcang.com -anetuo.com -anf-z.com -anfan.com -anfangnews.com -anfangzb.com -anfensi.com -anfine-healthcare.com -anfipet.com -angeeks.com -angel-game.net -angel-hospital.com -angel-medical.net -angel-usa.com -angelacon.com -angelarabbit.com -angelcrunch.com -angelhome.org -angeljjangnara.com -angell-studio.com -angelmom.org -angeltranslation.com -angelyeast.com -angelyeast.ru -angelyeast.xyz -angesi16.com -angine.tech -angleebeauty.com -anglo-chinese.com -angogotech.net -angrymailer.com -angrymiao.com -angui.org -anguilasia.com -anguomob.com -angustar.com -angwei.net -anhei2.com -anhei3.net -anheng.com -anhengcloud.com -anheyu.com -anhkgg.com -anhouse.com -anhuaedu.com -anhuanjia.com -anhui-expressway.net -anhui365.net -anhuiaia.com -anhuicta.com -anhuigaokao.com -anhuigwy.org -anhuihr.com -anhuihuayun.com -anhuijszp.com -anhuilife.com -anhuimeijia.com -anhuimobile.com -anhuinews.com -anhuiry.com -anhuisjx.com -anhuisuya.com -anhuiwine.com -anhuizk.com -ani-sh.com -aniccw.net -aniceapp.com -anicoga.com -anictdns.store -anijue.com -animalchina.com -animate.art -animationcritics.com -animebytes.tv -animetamashi.com -animetaste.net -animetorrents.me -anischools.com -anitama.net -aniu.com -aniu.so -aniu.tv -aniworld.tv -anjgas.com -anji-ceva.com -anji-logistics.com -anji-tonghui.com -anji66.net -anjia.com -anjiala.com -anjialaw.com -anjian.com -anjianghu.net -anjiangshi.com -anjiechem.com -anjiecorp.com -anjifood.com -anjilog.com -anjimicro.com -anjismart.com -anjoyfood.com -anjubao.com -anjujituan.com -anjuke.com -anjukestatic.com -ankai.com -ankang.net -ankang06.org -ankangfulu.com -ankangtong.com -ankangwang.com -ankaotong.com -ankebio.com -ankelife.com -ankeni.net -anker-in.com -ankerjiedian.com -ankevip.com -ankeyunda.com -ankianki.com -ankichina.net -ankio.net -ankki.com -ankobot.com -ankogroup.com -ankuai.net -anl-cn.com -anlai.com -anlaiye.com -anlewo.com -anlian.co -anliantest.com -anlibaby.com -anlilaw.com -anlink.com -anlitai.com -anlogic.com -anlu.net -anlu114.com -anlusy.com -anmco8.com -anmeisheng.com -anmo.com -anmobc.com -anmpserver.com -anmumchina.com -ann9.com -annabelz.com -annainj.com -anneijun.com -annelhair.com -annhe.net -anniekids.net -annil.com -annoron.com -annto.com -annualreviews.org -annuoxun.com -anoah.com -anonym-hi.com -anosmcloud.com -anoyi.com -anpig.com -anpu119.com -anpush.com -anpuzx.com -anqingonline.com -anqingwt.com -anqingzhiyun.com -anqn.com -anqu.com -anquan.info -anquanbao.com -anquanjs.com -anquanke.com -anquanone.com -anquanssl.com -anquantong.com -anquanzhao.com -anran233.com -anrangas.com -anranhs.com -anrayer.com -anren.org -anrenmind.com -anrenxmed.com -anrlm.com -anruan.com -anruichina.com -ansendun.com -ansgo.com -anshahouse.com -anshibuff.com -anshiduo.com -anshig.com -anshinko.com -anshism.com -anshunfiber.com -anshunholdinggroup.com -anshuntech.ltd -ansiding.com -ansimeter.com -ansky.com -ansteelgroup.com -ansucai.com -ansuner.com -ansxtech.com -ant-biz.com -ant-cloud.net -ant-financial.com -ant-open.com -anta.com -antaifans.com -antaiib.com -antairui.net -antangbusiness.com -antao.hk -antbuyhot.com -antchina.com -antcloud-miniprogram.com -antcut.com -antdigital.com -antebao.com -antebo.com -antekoptics.net -antespace.com -antewer.com -antfans.com -antfin-inc.com -antfin.com -antfinancial-corp.com -antforecast.com -antfortune.com -antgroup.com -antgv.com -antibanads.com -antibodychina.com -anticheatexpert.com -antilgbt.org -antiquelearn.com -antiy.com -antiy.net -antiycloud.com -antkdir.com -antmoe.com -antom.com -antpcdn.com -antpedia.com -antping.com -antplay888.com -antriver.com -antrol.com -antsdaq.com -antso.com -antsoo.com -antspainter.org -antto.cc -antuan.com -antuan365.com -antuni.com -antuofh.com -antutu.com -antutu.net -antvlive.ab5c6921.cdnviet.com -antvr.com -antwork.link -antzk.com -anw.red -anweilan.com -anweishi.com -anweizhi.com -anwen.cc -anwfm.com -anwha-auto.com -anxia.com -anxiangkeji.net -anxiaoer.com -anxin.com -anxin.link -anxin168.com -anxin360.com -anxin360.net -anxinapk.com -anxinbianmei.com -anxindavisa.com -anxindeli.com -anxinfloor.com -anxinfloors.com -anxinlirong.com -anxinmai.com -anxinssl.com -anxintrust.com -anxinwangdun.com -anxinyisheng.com -anxinzhonghui.com -anxiu.com -anxiw.com -anxjm.com -anxunshihui.com -any123.com -any8.com -anyan.com -anyang100.com -anyangedu.com -anyant.com -anybeen.com -anybox.com -anychem.com -anycoh.com -anycross.com -anycubic.com -anye.xyz -anyelse.com -anyew.com -anyforprint.com -anyforweb.com -anygame.info -anyihua.com -anyimai.com -anyizn.com -anyka.com -anyknew.com -anyline.org -anymcu.com -anymetre.com -anyni.com -anyolife.com -anyong.net -anyoy.com -anyrtc.io -anyrui.win -anysafer.com -anyscdn.com -anyskygame.com -anysql.net -anystandards.com -anytesting.com -anyun100.com -anyunjianzhan.com -anyv.net -anyview.net -anyway.fm -anyway.red -anywlan.com -anywood.com -anyxz.com -anzerclub.com -anzext.com -anzhen.org -anzhengshipin.com -anzhi.com -anzhiguolv.com -anzhisoft.com -anzhitan.com -anzhixun.com -anzhuauto.com -anzhuo.com -anzhuo.me -anzhuoapk.com -anzhuoe.com -anzhuoshouzhuan.com -anzmy.com -anzogame.com -anzow.com -ao-di.com -ao-hua.com -ao3yiqag7zc8za.com -aoao365.com -aoaob.com -aoasign.com -aobacore.com -aobaishi.com -aobanghb.com -aoboor.com -aobosoft.com -aocde.com -aocdn.com -aoch.com -aochengcdn.com -aocslb.com -aocter.net -aodabo.tech -aodaliyaqianzheng.com -aodbw.com -aoddoll.com -aode8.com -aodeline.com -aodeng.cc -aodianyun.com -aodingsy.com -aoecq.com -aoedi.com -aoerdz.com -aoetech.com -aofanxx.com -aofenghuanjing.com -aofenglu.com -aofs.vip -aogocorp.com -aograph.com -aoguan.com -aoguansteel.com -aoguanwns.com -aohaosiyq.com -aohuasports.com -aohuatextiles.com -aojauto.com -aojia-oil.com -aojiahuashare.com -aojiamarly.com -aojian.net -aojian2.net -aojiaostudio.com -aojiyingyu.com -aojiyouxue.com -aojoo.com -aoju.net -aokang.com -aokangsports.com -aolai.com -aolaigo.com -aoligei.site -aolinjy.com -aolinpharma.com -aoliongame.com -aolvyou.com -aolylcd.com -aomao.com -aomeikeji.com -aomygodstatic.com -aonaotu.com -aoni.cc -aoofu.com -aoogee.com -aoohu.com -aoongmob.com -aooooz.com -aopayun.com -aoqiangtc.com -aorankj.com -aoratec.com -aoscdn.com -aoscom.net -aosenm.com -aosens.com -aoseo.com -aoserp.com -aoshine.com -aoshitang.com -aoshite.net -aoshowsh.com -aoshu.com -aosikazyimage.com -aosong.com -aosoo.com -aoswtc.com -aotaidianqi.com -aotchina.com -aotian.com -aoto.com -aotoso.com -aotrip.net -aotuzuche.com -aotxland.com -aoun.ltd -aovud.com -aowei-sh.com -aowei.com -aowenmarketing.com -aoxiang100.com -aoxingrelang.com -aoxintong.com -aoxsb.com -aoy-power.com -aoya-hk.com -aoyanchang.com -aoyangzg.com -aoyanwl.com -aoye.com -aoyige.com -aoyii.com -aoyiluoad.com -aoyor.com -aoyotech.com -aoyou.cc -aoyou.com -aoyou365.com -aoyoulife.com -aoyoux.com -aoyu100.com -aoyuanlives.com -aoyunque.com -aozhanls.com -aozhougoufang.com -ap-china.com -ap1983.com -ap4r.com -ap88.com -ap8888.com -apaas-zone-test.com -apabi.com -apad.pro -apartments-bj.com -apass.com -apayun.com -apbiao.com -apcc2.com -apcdns.com -apcdns.net -apclc.com -apcso.com -apcta.com -apcups.org -apcupse.com -apdcdn.com -apdcdn.net -ape8.com -apearth.com -apecloud.ltd -apecn.com -apecome.com -apehorse.com -apeloa.com -apesk.com -apet.vip -apetdog.com -apevolo.com -apexmic.com -apexquartzstone.com -apextechnik.com -apeyun.com -apfeien.com -apgblogs.com -apgoview.com -aphidic.com -api-forwards.com -api-m.com -api-vod-qcloud.com -api.anythinktech.com -api.crisp.chat -api.so -apiairasia.com -apiandroid.com -apicase.io -apicgate.com -apichina.com -apickup.com -apicloud.com -apifabric.net -apifox.com -apifoxmock.com -apigateway.info -apigwtencent.com -apilyzy.com -apim.work -apimkt.net -apipost.net -apiqecz.com -apira.org -apirc.org -apiseven.com -apispace.com -apistd.com -apitd.net -apiunion.com -apiview.com -apizl.com -apizza.cc -apizza.net -apjingsi.com -apk3.com -apk4399.com -apk8.com -apkbus.com -apkdv.com -apkevery.com -apkhot.com -apkj.com -apkpackagesys.com -apkplug.com -apkrj.com -apkxz.com -apkyx.com -apkzu.com -aplaybox.com -aplnk.com -aplum-inc.com -aplum.com -aplus100.com -apluscap.com -aplusda.org -aplusunion.com -apmarry.com -apmbooth.com -apme-magnetics.com -apmengfan.com -apmgmedical.com -apmsecbg.com -apmvista.com -apnring.com -apodaenvi.com -apollo-platform.com -apollo-share.com -apollo.auto -apollopump.com -apollotop.com -apous.com -apowo.com -apowogame.com -apoyl.com -app-analytics-services.com -app-measurement-cn.com -app-measurement.com -app-router.com -app.so -app001.com -app0772.com -app111.com -app111.org -app1116.app -app168.cc -app17.com -app178.com -app2006.com -app2pixel.com -app86.com -app887.com -appbi.com -appbk.com -appbocai.com -appbsl.com -appbw.com -appbz.info -appchina.com -appchizi.com -appcoo.com -appcool.com -appcpx.com -appcup.com -appdao.com -appdi.com -appdown.info -appdownload.org -appdp.com -appeasou.com -appeeres.com -appfeng.com -appfenxiang.com -appfimo.com -appganhuo.com -appgenuine.com -appgrub.com -appia.vip -appicad.net -appicplay.com -appidfx.com -appifan.com -appinn.com -appkaifa.com -appkefu.com -applausefz.com -applinzi.com -applm.com -applogcdn.com -applogo.net -applon.net -applysquare.com -applysquare.net -appmifile.com -appmiu.com -appnode.com -appol.com -appollochina.com -appotronics.com -appqv.com -approvebook.com -apps121.com -apps5.oingo.com -appscan.io -appsecurity.top -appsflower.com -appsflyer-cn.com -appshike.com -appshop.cc -appsimg.com -appsina.com -appso.com -appsolution.cc -apptao.com -apptaxi.net -apptrackerlink.com -appubang.com -appublisher.com -appurl.cc -appurl.me -appvipshop.com -appweb1.com -appweiyuan.com -appwill.com -appwuhan.com -appwuhan.net -appxzz.com -appyao.com -appying.com -appykt.com -appyouni.com -appzhigong.com -appzhonghua.com -aprche.net -apriltq.com -aprunchuang.com -aps.org -apsdai.com -apsfon.com -apsgo.com -apsoto.com -apspharm.com -aptchina.com -aptchip.com -aptdn.net -aptenon.com -apubond.com -apusic.com -apwuyou.com -apxm.net -aq1taobao.com -aq2y.com -aqara.com -aqawzxeg.com -aqb.so -aqbxcdn9.com -aqbz.org -aqc100.com -aqcmgvxk.com -aqd-tv.com -aqdcdn.com -aqdesk.com -aqdlt.net -aqdstatic.com -aqee.net -aqfen.com -aqgygc.com -aqhospital.com -aqidb.org -aqigxaxv.com -aqioo.com -aqisite.com -aqjx.com -aqjz.net -aqlengqueta.com -aqlife.com -aqniu.com -aqpta.com -aqqcx.com -aqrose.com -aqrsblg.com -aqsc.org -aqsiqauto.com -aqsyssm.com -aqtd.com -aqtowngas.com -aqtwpc.com -aqtwwxemail.com -aqtxt.net -aqua-worth.com -aquabk.com -aquacity-tj.com -aquair-china.com -aquanliang.com -aquanutriera.com -aquanyou.com -aquapipetech.com -aquaterramail.com -aquathlondenice.com -aquaticowatch.com -aquayee.com -aquazhuhai.com -aqueck.com -aqumon.com -aqviwv.com -aqvx8mcr392mv7.com -aqxx.org -aqyqqy.com -aqyun.com -aqyzm.com -aqzpw.com -aqzt.com -aqzyzx.com -ar-max.com -ar0101.com -arabsquash.com -aragexpo.com -araldite2014.com -aranya.cc -arapp.online -aray1981.com -arayzou.com -arbays.com -arc-uds.com -arcas-da.com -arcdmi.com -archaeuscapital.com -archcollege.com -archcookie.com -archcy.com -archermind.com -archeros.com -archgo.com -archgrid.xyz -archi-motive.com -archiant.com -archina.com -archiname.com -archio.pro -archiposition.com -architbang.com -archrd.net -archsummit.com -arco.design -arcsoftai.com -arcstack.club -arcteryx-log.com -arctic007.com -arcticray.com -arctiler.com -arctime.org -ard-china.com -ardmon.com -ardsec.com -areader.com -arebz.com -arefly.com -arenabreakoutcn.com -arerberte.com -areweloongyet.com -arextecn.com -argylehotels.com -arhoo.com -ariacraft.net -arielcosmetic.com -arin-elec.com -arinchina.com -arisastar.com -ark301.com -arkchuxin.com -arkfeng.xyz -arkfwq.com -arkid.cc -arkntools.app -arkoo.com -arkrdigital.com -arkread.com -arksz.com -arliki.com -arlmy.me -arm9.net -arm9home.net -armaf.org -armbbs.net -armchina.com -armdesigner.com -armfly.com -armin.cc -armourtires.com -armsrock.com -armsword.com -armvm.com -armystar.com -arnstbearing.com -arocmag.com -aroseks.com -arowanahome.com -arp.cc -arpbox.com -arpun.com -arqinge.com -arrbid.com -arromaxinc.com -arrow-sh.com -arrow-tower.com -arrowceramic.com -arrowos.net -arrowwardrobe.com -ars-china.com -arswp.com -art-ba-ba.com -art-child.com -art-coding.com -art138.com -art238.com -artacode.com -artaime.com -artbookinchina.com -artcg.design -artcool.com -artcto.com -artdata.net -artebuy.com -artech-graphite.com -artemedhospital.com -arterytek.com -artexamcq.com -artfinace.com -artfoxlive.com -artgogo.com -arthals.ink -arthing.org -arthome163.com -arthubdam.com -arthurchiao.art -arthurpharma.com -articclothes.com -article.cool -artimg.net -artinchip.com -artisan-cloud.com -artisan-tek.com -artistry-club.com -artistrylab.net -artlianhe.com -artlinkart.com -artlnk.com -artmuseumonline.org -artnchina.com -artop-sh.com -artopgroup.com -artopia-group.com -artp.cc -artpangu.com -artpro.com -artpro.vip -artproglobal.com -artrade.com -artrobot.com -artron.net -artronartdata.com -artronimages.com -artrus.net -arts-nj.com -artsbuy.com -artshanghaifair.com -artsoa.com -artverse.work -artvisioncg.com -artwaker.com -artwe.com -artwun.com -artww.com -artxun.com -arvato-ocs.com -arvinhk.com -aryasec.com -as-doll.com -as-hitech.com -as-hls-ww-live.akamaized.net -as.mr -as16.com -as3f.com -as5.com -as66588.com -asa-asia.com -asatiles.com -asbctv.com -asc-events.org -asc-wines.com -ascelibrary.org -ascend-bio.com -ascendgene.com -ascendgz.com -ascenpower.com -ascentawits.com -aschina.org -aschip.com -aschtj.com -asciima.com -asczwa.com -asczxcefsv.com -asd.red -asd868.com -asdbfjoiug.com -asdeshan.com -asdf-bj.net -asdf010.com -asdlkjf.com -asdx.io -asean-china-center.org -aseann.com -aseanparts.com -asemi360.com -asemi99.net -asen-pharm.com -aseoc.com -aseoe.com -asf4asgfrxc.com -asfuwu.com -asfzl.net -asgezhi.com -ashan.org -ashehua.com -ashgdf.com -ashidc.com -ashining.com -ashoucang.com -ashqgpxy.com -ashsilent.com -ashuiai.com -ashvsash.net -asi-midea.com -asia-cdn.com -asia-dns.com -asia-sh.com -asiabt.com -asiaci.com -asiacold.com -asiacool.com -asiacorp.net -asiadvb.net -asiae.com -asiaeap.com -asiaecs.com -asiafactor.com -asiafm.hk -asiafm.net -asiagreenfund.com -asiaidc.net -asiainfo-sec.com -asiainfo.com -asiainfo.org -asiainfodata.com -asiametallurgical.com -asianev.com -asianewsphoto.com -asianmetal.com -asiarobot.net -asiaseiki.com -asiasymbol.com -asiatelco.com -asiayun.com -asiet.net -asifadeaway.com -asilu.com -asim-emc.com -asimi8.com -asit.cc -asjnu.com -askbrisk.com -askci.com -askdd.org -askdiandian.com -askemq.com -asketchup.com -askk.cc -asklib.com -asklink.com -askpanda.cc -askququ.com -asktao.com -asktempo.com -asktug.com -askxt.org -asleyu.com -aslk2018.com -asls.space -aslvyou.com -asm.org -asm64.com -asmasm.com -asme.org -asmlc.com -asmr.gay -asmr.red -asnlab.com -asnlab.org -asnowsz.com -aso.ink -aso100.com -aso114.com -aso120.com -asoasm.com -asp168.com -asp300.com -asp300.net -asp8php.com -aspbc.com -aspcms.com -aspiration-cn.com -aspirationtesting.com -aspire-info.com -aspirecn.com -aspiresun.com -aspnet.tech -aspqypmw.com -aspsky.net -aspx.cc -aspxhome.com -asqhr.com -asqql.com -asr-cn.com -asrmicro.com -assassinscreedcodenamejade.com -assemblydragon.com -asset-us-store.msi.com -asset-vendor-event.msi.com -asset.msi.com -assets-global.viveport.com -assrt.net -assyrb.com -astbbs.com -asterfusion.com -asteriavs.com -astestech.com -astfc.com -asthis.net -astipaint.com -astm.org -astra-biotech.com -astraintel.com -astral-vector.com -astro1.rastream.com -astroai-in.com -astroaio.com -astron.ac -astronergy.com -astropulsion.com -astrostanleystudio.com -asujp.com -asurada.zone -asus-sh.com -asussmart.com -asusw.net -asvm.net -aswetalk.net -asxrpcb.com -asxw.net -asxzcn.com -asyzonline.com -aszhuyuan.com -aszvip.com -at-e.com -at0086.net -at188.com -at317.com -at58.com -at7790s887.com -at78.com -ata-edu.com -ata-test.net -atacchina.com -atanyu.com -atatech.org -atats.shop -atb.so -atbug.com -atc-sh.com -atcc360.com -atchip.com -atcloudbox.com -atcontainer.com -atcpu.com -aterminal.net -atfeng.com -atgbiotechnology.com -atguigu.com -atguigu.org -athaitao.com -athensgamulch.com -athmapp.com -athub.com -atianqi.com -atidesoft.com -atido.com -atimeli.com -ating.info -atjoqgi.com -atk-film.com -atk.pro -atkgear.com -atlab.ai -atlaslovestravel.com -atlhb.com -atlmall.com -atlxm.com -atmbox.com -atmcu.com -atmlimited.com -atmob.com -atob100.com -atobo.com -atollbath.com -atom-hitech.com -atomgit.com -atomgit.net -atomhike-en.com -atomic-art.com -atomlife.net -atomlock.com -atrenew.com -atri.ink -atriptech.com -atrustdns.com -ats6355866.com -atshph.com -atstudy.com -atsws.com -attacker.fit -attainsgroup.com -attendees.link -atticus.vip -attomotion.com -attop.com -attri.mobi -atukjhesk.com -atum-tech.net -atuoyi.com -atwbz.com -atwtech.net -atyomi.com -atyun.com -atyun.net -atzjg.net -atzlinux.com -atzuche.com -auak.com -aube-archi.com -aubemobile.com -aubor-ind.com -aubye.com -aucanlink.com -auchexpo.com -aucnln.com -audan2011.com -audio-gd.com -audio-technica-hz.com -audio160.com -audiobuy.cc -audiocn.com -audiocn.net -audiocn.org -audiofamily.net -audiotop.net -audiowell.com -audiowell.net -audiowellzq.com -audioxj.com -auditcn.com -audlabs.com -audtools.com -augix.me -augsky.com -augurit.com -augustcn.com -auiou.com -aulacn.com -auldey.com -aumantruck.com -aunapi.com -auniontech.com -aunload.com -auoda.net -auok.run -auozzjs.lol -aupu.net -auqscfmk.com -auqsipfm.com -aura-el.com -auroapi.com -aurogon.com -auromcs.com -aurora-jy.com -aurora-oa.com -aurumdriver.vip -aus.cc -ausaview.com -ausbio.com -ausca-oils.com -ausdn.com -aushinelyn.com -aushy.com -ausner.net -ausnutria.com -ausny.com -ausperbio.com -auspous.com -aussino.net -austargroup.com -austarstudy.com -australiaxy.com -ausunpharm.com -authbus.com -authing-inc.co -authing.co -authing.com -auto-ccpit.org -auto-changchun.com -auto-ekontrol.com -auto-expos.com -auto-learning.com -auto-made.com -auto-mooc.com -auto-purify.com -auto-testing.net -auto-union.net -auto-wo.com -auto1768.com -auto18.com -auto318.com -auto328.com -auto510.com -auto6s.com -autoahk.com -autoai.com -autobaidu.com -autobaojun.com -autobit.xyz -autobizreview.com -autocamel.com -autochinashow.org -autochinazh.com -autochips.com -autochongqing.com -autodl.com -autodmp.com -autodnsv1.com -autodnsv1.net -autodwg.com -autoecosystems.com -autoengine.com -autoesd.com -autofull.net -autogslb.com -autohao.com -autohenan.com -autoho.com -autohome.com -autohome.tel -autohr.org -autohunan.com -autoij.com -autoitx.com -autojiaoyi.com -autojingji.com -autojs.org -automall365.com -autonavi.com -autoparts-yoto.com -autopeitao.com -autophagy.net -autoprotect365.com -autoqingdao.com -autosey.com -autoshafa.com -autoshanghai.org -autosmt.net -autostreets.com -autosup.com -autothinker.net -autounicom.com -autovideo.club -autovolke.com -autowelds.com -autowise.ai -autoz.net -autozi.com -auwincmc.com -aux-home.com -auxgroup.com -auy07161km.com -auy07230km.com -auyou.com -av-ic.com -av199.com -av2.me -av269.com -av380.net -avadairy.com -avalon233.com -avanpa.com -avanzacorp.com -avaryholding.com -avatamveda.com -avatarmind.com -avatarmobi.com -avatr.com -avaya.hk -avc-mr.com -avc-ott.com -avdgw.com -avec6ua79dc6.com -avemaria.fun -aves.art -avfline.com -avgh5.com -avgnati.com -avgnatii.com -avgroft.com -aviationsnip.com -avic-acs.com -avic-apc.com -avic.com -avichina.com -avicnews.com -avicsec.com -avicsgt.com -avicui.com -avilive.com -avinex.com -avischina.com -avivaqueen.com -avl-hitec.com -avlinsight.com -avlsec.com -avlyun.com -avlyun.net -avlyun.org -avnpc.com -avoscloud.com -avp76.com -avp76.net -avpic.xyz -avptec.com -avq360.com -avrvi.com -avstar4.com -avt-cn.com -avtechcn.com -avtt830.com -avuejs.com -avyeld.com -aw-ol.com -aw.cc -aw61duk.com -awaker.net -awaliwa.com -awc618.com -awcloud.com -awcn.cc -awehunt.com -awemeughun.com -awemeuglang.com -awemeugsoul.com -awemeugwave.com -awesome-hd.me -awfggc.com -awhouse.art -awi-intl.com -awinic.com -awmote.com -aword.net -awotuan.com -awoyun.com -awsamazonlab.com -awsdns-cn-00.com -awsdns-cn-00.net -awsdns-cn-01.biz -awsdns-cn-01.net -awsdns-cn-02.biz -awsdns-cn-02.net -awsdns-cn-03.biz -awsdns-cn-04.net -awsdns-cn-05.biz -awsdns-cn-05.net -awsdns-cn-06.com -awsdns-cn-06.net -awsdns-cn-07.biz -awsdns-cn-07.com -awsdns-cn-07.net -awsdns-cn-09.biz -awsdns-cn-09.com -awsdns-cn-09.net -awsdns-cn-10.com -awsdns-cn-11.biz -awsdns-cn-11.com -awsdns-cn-12.biz -awsdns-cn-12.net -awsdns-cn-14.biz -awsdns-cn-14.com -awsdns-cn-15.net -awsdns-cn-16.biz -awsdns-cn-17.biz -awsdns-cn-17.com -awsdns-cn-17.net -awsdns-cn-18.biz -awsdns-cn-18.net -awsdns-cn-19.biz -awsdns-cn-19.net -awsdns-cn-20.biz -awsdns-cn-20.com -awsdns-cn-20.net -awsdns-cn-21.biz -awsdns-cn-21.net -awsdns-cn-22.com -awsdns-cn-22.net -awsdns-cn-23.com -awsdns-cn-24.biz -awsdns-cn-24.com -awsdns-cn-24.net -awsdns-cn-25.com -awsdns-cn-25.net -awsdns-cn-26.com -awsdns-cn-27.biz -awsdns-cn-27.com -awsdns-cn-28.biz -awsdns-cn-28.net -awsdns-cn-29.biz -awsdns-cn-31.net -awsdns-cn-33.net -awsdns-cn-34.com -awsdns-cn-35.biz -awsdns-cn-35.net -awsdns-cn-36.biz -awsdns-cn-36.com -awsdns-cn-36.net -awsdns-cn-37.biz -awsdns-cn-37.com -awsdns-cn-37.net -awsdns-cn-38.net -awsdns-cn-39.biz -awsdns-cn-39.com -awsdns-cn-39.net -awsdns-cn-40.biz -awsdns-cn-40.com -awsdns-cn-40.net -awsdns-cn-41.biz -awsdns-cn-41.com -awsdns-cn-41.net -awsdns-cn-42.biz -awsdns-cn-42.com -awsdns-cn-43.biz -awsdns-cn-44.com -awsdns-cn-44.net -awsdns-cn-45.biz -awsdns-cn-45.com -awsdns-cn-45.net -awsdns-cn-46.biz -awsdns-cn-46.com -awsdns-cn-46.net -awsdns-cn-47.biz -awsdns-cn-47.com -awsdns-cn-47.net -awsdns-cn-48.biz -awsdns-cn-48.com -awsdns-cn-48.net -awsdns-cn-49.biz -awsdns-cn-50.biz -awsdns-cn-50.net -awsdns-cn-51.biz -awsdns-cn-51.com -awsdns-cn-52.biz -awsdns-cn-52.com -awsdns-cn-52.net -awsdns-cn-53.com -awsdns-cn-54.biz -awsdns-cn-54.net -awsdns-cn-55.biz -awsdns-cn-55.com -awsdns-cn-55.net -awsdns-cn-56.biz -awsdns-cn-56.net -awsdns-cn-57.com -awsdns-cn-58.biz -awsdns-cn-58.com -awsdns-cn-58.net -awsdns-cn-59.biz -awsdns-cn-59.net -awsdns-cn-60.biz -awsdns-cn-60.com -awsdns-cn-60.net -awsdns-cn-61.biz -awsdns-cn-62.biz -awsdns-cn-62.com -awsdns-cn-62.net -awsdns-cn-63.biz -awsdns-cn-63.net -awsdns-vip.com -awsok.com -awsonamazon.com -awspaas.com -awspony.com -awstar.net -awtmt.com -awuming.com -awx1.com -awyerwu.com -awyx.xyz -ax196.com -ax2nc4.ren -ax8dm212f0.com -axa123.com -axatp.com -axbsec.com -axbur.com -axcadsf.cfd -axcf.com -axentbath.com -axera-tech.com -axfys.com -axhimalayancc.com -axhjfobr.shop -axhub.im -axiang.com -axiaofu.com -axiaoxin.com -axic6906.com -axilone-shunhua.com -axinsur.com -axisfluid.com -axjm-ex.com -axjsw.com -axjx.com -axmro.com -axmw.com -axnsc.com -axq66.com -axqqq.com -axqswm.net -axs8.com -axshuyuan.com -axuer.com -axuexiw.com -axunyou.com -axure.us -axureshop.com -axureux.com -axxsw.org -axybio.com -axyxt.com -axzchou.com -ay-china.com -ay-health.com -ay001.com -ay001.net -ay2fy.com -ay57.com -ay5y.com -ay99.net -ayalm.com -ayatuan.com -aybwg.org -aycav.com -aycgu.com -aychfy.com -ayctgy.com -aydaojia.com -aye.ink -ayeucefm.com -ayfdc.com -ayfy.com -ayfyfy.com -ayguge.com -ayhmjy.com -ayhuowan.com -ayhyxg.com -ayi800.com -ayibang.com -ayidada.com -ayijx.com -ayilaile.com -ayilian.com -ayjewelry.com -ayjs.net -aykj.net -ayklgas.com -aymym.com -aynchem.com -ayoushu.com -ayqy.net -ayrbs.com -ayrc.cc -ayrc.net -ayrmt.com -ayrq.com -aysbxxh.com -ayshq.com -aysjhod.xyz -aysjyjjh.com -ayudasalud.com -ayump.com -ayunlian.com -ayuren.com -ayuyun.com -ayw.ink -ayxz.com -ayzzxx.com -az009.com -azad.asia -azbingxin.com -azbq.org -azchcdna.com -azchcdnb.com -azchcdnc.com -azchcdnd.com -azchcdne.com -azchcdnf.com -azchcdng.com -azchcdnh.com -azchcdni.com -azchcdnj.com -azchcdnk.com -azchcdnl.com -azchcdnm.com -azchcdnn.com -azchcdno.com -azchcdnp.com -azchcdnq.com -azchcdnr.com -azchcdns.com -azetac.com -azf010.com -azhimalayanvh.com -azhituo.com -azhubaby.com -azinbate.info -azjy88.com -azmcode.com -azmtszpk.com -azonete.com -azooo.com -azoyacdn.com -azoyagroup.com -azp315.com -azpdl.com -azpdl.net -azt365.com -azure-wave.com -azure.cc -azureflying.com -azuremigrate.download.prss.microsoft.com -azuremigratetest.download.prss.microsoft.com -azurestackhub.download.prss.microsoft.com -azurestackhubuat.download.prss.microsoft.com -azuretouch.net -azurew.com -azureyun.com -azxdiy.com -azy288.com -azycjd.com -azyfy.com -azz.net -azzdm.com -b-chem.com -b-cro.com -b-eurochina.com -b-fairy.com -b-k-automation.com -b-raymedia.com -b01.net -b08.com -b1bj.com -b1cjcgy8s2.com -b1n.net -b1qg.com -b23.tv -b29gj.com -b2b-builder.com -b2b.biz -b2b123.com -b2b168.com -b2b168.net -b2b168.org -b2b3.com -b2b6.com -b2b818.com -b2bdq.com -b2bgo.com -b2bic.com -b2bkk.com -b2bname.com -b2bvip.com -b2bvip.net -b2byao.com -b2c.biz -b2cedu.com -b2clouds.com -b2jiaxiao.com -b2q.com -b2star.com -b3inside.com -b3log.org -b3logfile.com -b555b.com -b55weik1d4.com -b5b6.com -b5csgo.plus -b5esports.me -b5m.com -b5nngc6zmt.com -b612.me -b612.net -b612kaji.com -b6522.com -b7av.com -b7l.cc -b8kk.com -b8yx.com -b9ad.com -ba-li.com -ba1400.com -ba7jcm.live -baacloud32.com -baalchina.net -baaniarts.com -baba-blog.com -bababian.com -bababus.com -babady.com -babai.cc -babaicai.com -babaike.com -babaimi.com -baballs.com -babao.com -babapi.com -babaxiong.com -babedy.com -babeijiu.com -babeword.com -babifood.com -babiguoguo.com -babolchina.com -baboshan.com -babsoft.net -babuxiang2005.com -baby-bus.com -baby-joy.com -baby577.com -baby611.com -baby7blog.com -baby868.com -babybus.com -babybus.org -babycdn.com -babymoro.com -babymozart.cc -babyqiming.com -babytree.com -babytreeimg.com -bacaizi.com -bacaola.com -bacaoo.com -bacaosh.com -bacic5i5j.com -backaudio.com -backdata.net -backendman.com -backmany.com -backupdesktopcloud.com -bacninhlocalguide.com -bacocis.com -bacts.com -bacyfzjt.com -badambiz.com -badazhou.com -bademeiji.com -badmintoncn.com -badmintone.com -badong.net -badouxueyuan.com -badu.com -badudns.cc -baduziyuan.com -badwe.com -baeapps.com -baertt.com -baetyl.tech -bafangjuhe.com -bafangwy.com -bag198.com -bagb2b.com -bagevent.com -bags163.com -bagsnet.com -bagstory.net -bagtree.com -baguichong.com -baguilingyun.com -bagxs.com -bahealpharma.com -bahecloud.com -bahens.com -bahepark.com -bahsegel1220.com -bai.com -bai29.xyz -baian-group.com -baiao.com -baibaipei.com -baibaoyun.com -baibianyishu.com -baibm.com -baibo8.com -baibomedia.com -baibu.com -baic-group.com -baicai.com -baicaijie09.com -baicaio.com -baicaiyouxuan.com -baicaolu.net -baicaosoft.com -baiccapital.com -baiccl.com -baicdnx.com -baicells.com -baicfc.com -baichanghui.com -baicheng.com -baichengtax.com -baichengyuehua.com -baichuan-ai.com -baichuan.tech -baichuanhd.com -baichuanhudong.com -baichuannet.vip -baichuanweb.com -baicizhan.com -baicizhan.org -baiclouds.com -baicmotor.com -baicmotorsales.com -baicrx.com -baicuoa.com -baidajob.com -baidao.com -baideled.com -baidenafu.com -baidesz.com -baidevalve.com -baideye.com -baidiapp.com -baidinet.com -baidu-bank.com -baidu-cdn.com -baidu-cdn.net -baidu-int.com -baidu-itm.com -baidu-mgame.com -baidu-nj.com -baidu-tech.com -baidu-wenxue.com -baidu.cc -baidu.com -baidu.com.hk -baidu.hk -baidu.mobi -baidu.to -baidu120.cc -baidu123.com -baiduads.com -baiduapp.com -baidubaidubaidu.net -baidubce.com -baidubcr.com -baidubos.com -baiducloudapi.com -baiducontent.com -baidudaquan.com -baidudw.com -baidufe.com -baidufree.com -baiduhtml5.com -baiduhui.com -baidulook.com -baiduor.com -baidupan.com -baidupcs.com -baidupcs.net -baidupeixun.com -baidusmartapps.com -baidusx.cc -baidusx.com -baidutab.com -baidutieba.com -baidutt.com -baiduux.com -baiduwaf.com -baiduwebgame.com -baiduwpan.com -baiduxiaodai.com -baiduxiaoshuo.com -baiduyangguang.org -baiduyun.com -baiduyun.wiki -baiduyuncdn.com -baiduyuncdn.net -baiduyundns.com -baiduyundns.net -baiduyunsousou.com -baiduyunwaf.com -baiduzjn.com -baieryk.com -baifae.com -baifang.in -baifangdianqi.com -baifangzh.com -baifeiyue.com -baifubao.com -baigebao.com -baigebg.com -baigehuidi.com -baigeseo.com -baigo.net -baigolf.com -baigongbao.com -baigougou.com -baigouwanggong.com -baiguitang.com -baihangbao.com -baihangdai.com -baihaocha.com -baihe.com -baiheee.com -baihelove.com -baihemedical.com -baihemob.com -baihezi.com -baihong.com -baihongsoft.com -baihuayan.com -baihui.com -baihui.live -baihui168.com -baihuibio.com -baihuillq.com -baihuiyaoye.com -baiila.com -baiinfo.com -baijia.com -baijiacloud.com -baijiahulian.com -baijiantest.com -baijiasheping.com -baijiaxingwang.com -baijiayun.com -baijiayuncdn.com -baijiegroup.com -baijiexiu.com -baijii.com -baijincdn.com -baijingapp.com -baijiudl.com -baijob.com -baijunjz.com -baijunyao.com -baijus.net -baijuyi.com -baikaigroup.com -baikalasia.com -baikalminer.com -baikalyq.com -baikangyun.com -baike.com -baike76.com -baikecs.com -baiked.com -baikehuanjing.com -baikemy.com -baikemy.net -baikeshiji.com -baikeshijie.com -baikevod.com -baikewenda.com -baikexueshe.com -baikezh.com -bailb.com -bailepin.com -bailiaijia.com -bailiangroup.com -bailiann.com -bailiban.com -bailiguangmang.com -bailing.online -bailing88.com -bailingdanci.com -bailingjk.net -bailinsi.net -bailitech.com -bailitools.com -bailitop.com -bailucloud.com -bailvanquan.xyz -baima.com -baimao-expo.com -baimao.com -baimaohui.net -baimatech.com -baimda.com -baimei.com -baimeidashu.com -baimiaoapp.com -baimin.com -baina.com -bainaben.com -bainaruibusiness.com -baineng.cc -bainmedical.net -bainus.com -baiousen.com -baiozhuntuixing.com -baipin.pw -baipu365.com -baiqian.com -baiqiangart.com -baiqiangyl.com -baiqianxin.com -baiqiaogame.com -baiqishi.com -baiqiso.com -baiqiyaoye.com -baiquefahuasi.com -bairoe.com -baironginc.com -bairuitech.com -baisainuo.com -baise.cc -baise123.vip -baise1314.com -baisecn.com -baiselife.com -baiselyw.com -baiseshiyu.com -baiseylj.com -baiseyun.com -baisha.com -baishan-cloud.com -baishan-cloud.net -baishan-gateway.com -baishan.com -baishancdnx.com -baishancdnx.net -baishancdnx.top -baishancloud.com -baishancloud.org -baishandnsx.com -baishandnsx.net -baishandnsx.top -baishangeek.com -baishanyun.com -baishicha.com -baishimeipai.com -baishinetwork.com -baishishuju.com -baishixi.xyz -baishuku.la -baishulou.net -baishunet.com -baishuyun.com -baishuzhai.cc -baishuzhai.com -baisihan.com -baisiterzh.com -baisiweiting.com -baisu.cc -baisu.com -baisuizhixiang.com -baitahe.net -baitaihuge.com -baitanheichang.com -baitdu.com -baite666.com -baithu.com -baitianinfo.com -baitiao.com -baitomould.com -baitongplastics.com -baitongwang.com -baitu.com -baituibao.com -baiu.com -baiven.com -baiwandz.com -baiwang.com -baiwangjs.com -baiwen100.com -baiwenbao.com -baiwujt.com -baiwulin.com -baiwushi168.com -baiwutong.com -baixiangfood.com -baixiangnews.com -baixiaosheng.net -baixiaoxs.com -baixihuang.com -baixing.com -baixing.net -baixingjob.com -baixingyllh.com -baixiong.info -baixiu.org -baiyang.com -baiyangseo.com -baiyaohy.com -baiycap.net -baiye5.com -baiyewang.com -baiyi.shop -baiyi181.com -baiyiba.com -baiyikc.com -baiying.com -baiyinggd.com -baiyintouzi.com -baiyishequ.com -baiyizg.com -baiyjk.com -baiyou100.com -baiyu.tech -baiyujingfeng.com -baiyumedia.com -baiyun-hotel.com -baiyunairport.com -baiyunholding.com -baiyunhuojia.com -baiyunmh.com -baiyunpump.com -baiyunxitong.com -baiyyy.com -baizengtech.com -baizhan.net -baizhanke.com -baizhanlive.com -baizhiedu.com -baizhouniao.com -baizlink.com -bajasaechina.com -bajie1.com -bajiebofang.com -bajiexinxi.net -bajintech.com -baka.im -baka.plus -bakaxl.com -bakbitionb.com -bakclass.com -bakingerp.com -baklib.com -bakpower.com -bakshifen.com -bakstotre.com -bala.cc -balance-net.com -balancer-sh.com -baldc.com -baldor-tech.com -baletu.com -balifafa.com -balift.com -balihe.com -balijieji.com -balimtoy.com -balingtxt.com -ballgametime.com -ballpure.com -balltv.cc -baltamatica.com -baltamatica.net -bama-supercon.com -bamaiwo.com -bamalifelong.com -bamaol.cc -bamaol.com -bamashenspring.com -bamatea.com -bamaying.com -bambooolab.com -bambu-lab.com -bambulab.com -bamengame.com -bamensq.com -bamenzhushou.com -bamuwu.com -bamuyu.com -bananafather.com -bananain.com -bananalighter.com -bananau.com -bananaumbrella.com -bananaunder.com -banbang.com -banbanjia8.com -banbao22.com -banbijiang.com -bancai.com -bancheng08.fun -banchengyun.com -banchuan.net -banciyuan.me -bandao.com -bandaoapp.com -bandari.net -bandayun.com -bandcevent.com -bandcoder.com -bandeyu.com -bandianli.com -bandoristation.com -bandvr.com -banfubbs.com -bangandi.com -bangbang.com -bangbang93.com -bangbanghuoyun.com -bangbendi.com -bangboss.com -bangbuy.com -bangcaiwu.com -bangcheng0769.com -bangchengchem.com -bangcle.com -bangcn.com -bangdao-tech.com -banggeen.com -banggo.com -banghaiwai.com -bangivf.com -bangjiantong.com -bangjigroup.com -bangju.net -bangkaixin.com -bangkao.com -bangkaow.com -bangkebao.com -bangkehui.com -banglianai.com -bangmai.com -bangninji.com -bangnixia.com -bangnizexiao.com -bangongtuku.com -bangongyi.com -bangongziyuan.com -bangqi66.com -bangqike.com -bangqu.com -bangrong.com -bangsee.com -bangshouwang.com -bangtaixcl.com -bangthink.com -bangtukj.com -banguanjiabc.com -bangwo8.com -bangwo8.net -bangwoting.com -bangxuetang.com -bangyike.com -bangzechem.com -bangzhuta.com -banji001.com -banjia1680.com -banjiajia.com -banjiekuaiji.com -banjing.com -banjixiaoguanjia.com -banjuanshu.com -banjunxingkeji.com -bank-139.com -bank-of-china.com -bank-of-tianjin.com -bankalliance.net -bankcomm.com -bankcomm.com.au -bankcomm.com.mo -bankcomm.com.tw -bankcz.com -bankgz.com -bankhr.com -bankksw.com -banklilv.com -bankofbbg.com -bankofchangsha.com -bankofchina.com -bankofdl.com -bankofshanghai.com -bankofshanghai.net -bankofsv.com -bankoftianjin.com -bankoftieling.com -bankofvolc.com -bankofyk.com -banksteel.com -bankyellowriver.com -banlikanban.com -banma.com -banmaaike.com -banmacdn.com -banmadayuwen.com -banmaedu.com -banmaerp.com -banmagushi.com -banmajsq.com -banmajz.net -banmasiwei.com -banmasrf.com -banmasusuan.com -banmayingyu.com -banmi.mobi -bannei.com -banner668.com.hk -banqumusic.com -bansha.com -banshangong.com -banshier.com -bantangapp.com -bantangbuy.com -bantouyan.com -banwagong.men -banwagongcn.com -banwagongzw.com -banwo365.com -banwoo.net -banwoyo.net -banwugongsi.com -banxiaomazaojiao.com -banxiayue.com -banye.tech -banyiyi.com -banyuetan.org -banyuetanapp.com -banyuetanedu.com -banyuetanxcx.com -banyunjuhe.com -banzhe.xyz -banzhuti.com -banzou.name -banzouzhizuo.com -bao-fang.com -bao-hulu.com -bao12333.com -bao21.com -bao265.com -bao315.com -bao369.com -baoanchina.com -baob123.com -baobanli.com -baobao001.com -baobao88.com -baobaobang.com -baobaoqiming.site -baobaoshu.com -baobei360.com -baobeicang.com -baobeigezi.com -baobeihr.com -baobeihuijia.com -baobeio.com -baobeita.com -baobeituan.com -baobeiy.com -baobianli.net -baocdn.com -baochaojianghu.com -baochunyiran.com -baocps.com -baocuicoin.com -baodan100.com -baodan360.com -baodaohealth.com -baodaren.net -baodery.com -baodian.com -baodigs.com -baodu.com -baoduys.com -baofeng.com -baofeng.la -baofeng.mobi -baofeng.net -baofeng365.com -baofengtuandui.com -baofengtv.com -baofon.com -baofoo.com -baofoo.net -baofu.art -baofu.com -baofu.info -baofull.com -baofumuye.com -baogang.info -baogao.com -baogao.store -baogaobox.com -baogaoku.com -baogaoting.com -baogaozhiku.com -baoge.net -baogebei.com -baoguangtai.com -baoguogroup.com -baohanghr.com -baohebao.com -baohongbao.net -baohua-pec.com -baohuagroup.com -baohuatravel.com -baohuaxia.com -baohuiming.net -baoimg.net -baoinsurance.com -baoji-marathon.com -baoji3g.com -baojia.com -baojiagaiye.com -baojian.com -baojiazhijia.com -baojiegy.com -baojijob.com -baojinews.com -baojinling.com -baojule.com -baojun.net -baojunev.com -baokan.tv -baokang.com -baokanhuicui.com -baokao.net -baokaodaxue.com -baoku.com -baokuandi.com -baokutreasury.com -baolansz.com -baoliannet.com -baolijuyuan.org -baolizx.com -baolong.biz -baolong.com -baoltx.com -baolu.store -baomaxs.com -baomei.tv -baomi.com -baomi365.com -baomidou.com -baomihua.com -baoming.com -baoming.work -baomingge.com -baomitu.com -baomtx.com -baoneng.com -baoqin.com -baoqingvip.com -baoruan.com -baoruisi.com -baosen.com -baoshangj.com -baoshe.net -baoshe01.com -baoshengcable.com -baoshengele.com -baoshenggroup.com -baoshuanglong.com -baoshuiguoji.com -baoshuiguoji.net -baoshuo.ren -baosight.com -baosteel.com -baosteel.info -baosteelpackaging.com -baostock.com -baotadns.com -baotaiclad.com -baotaikonggu.com -baotang5.com -baotime.com -baotoo.com -baotoulawyer.com -baotounews.com -baotoushizx.com -baotuba.com -baotuo.cc -baowu.com -baowuenergy.com -baowugroup.com -baoxian.com -baoxian72.com -baoxianhai.com -baoxianjie.net -baoxianqi.com -baoxianshichang.com -baoxiaobar.com -baoxiaohe.com -baoxiaoke.com -baoxinchewang.com -baoxingmuye.com -baoxinleasing.com -baoxins.com -baoxinwen.com -baoxiu.com -baoxiu.net -baoxuexi.com -baoxuexiedu.com -baoyagroup.com -baoyang1.com -baoyang888.com -baoyegroup.com -baoyehb.com -baoyejs.com -baoying.com -baoyizn.com -baoyt.com -baoyuanchem.com -baoyueai.com -baoyuekj.com -baoyuncm.com -baoyung.com -baoyuntong.com -baoz.net -baozang.com -baozengzhang.com -baozhenart.com -baozheng.cc -baozhenlu.com -baozhilin.com -baozhuang.biz -baozhuangren.com -baozi.fun -baozi178.com -baozijishu.com -baozipu.com -baozou.com -baozoudi.com -baozoumanhua.com -baozugongkeji.com -baozun.com -baozy.com -bapengpc.com -baping.com -baqi28.com -baqiu.com -barjiang.com -barlosi.com -barman.vip -baron-bj.com -baronyhotels.com -baronzhang.com -barretlee.com -bartymedical.com -basechem.org -basecity.com -based-edu.com -baseopendev.com -basequan.com -basestonedata.com -bashan.com -bashigao.com -bashuhuapai.com -bashuku.com -basiccat.org -basicfinder.com -basischina.com -bastcn.com -basunlighting.com -bat-sz.com -batengtiyu1.com -batian.net -batman.plus -batmanit.com -batmsg.com -batplay.com -battery-cert.com -battery-expo.com -battery8.com -batterydir.com -batterykey.com -battle-fsd.com -battlecare.net -battleofballs.com -batupian.net -baufortune.com -bauschlombchina.com -bawagon.com -bawanglongbengye.com -bawjxt.net -bawu.net -baxiami.com -baxichina.com -baxisuye.com -baydn.com -baye.tech -bayee.cc -bayinh.com -baykee.net -baynoe.com -bayucar.com -bayuche.com -bayuegua.com -bayueju.com -bayunhome.com -bayuxuexiao.net -bayzedhealthcare.com -bazaarjewelrychina.com -bazai.com -bazhan.com -bazhepu.com -bazhong.com -bazhongol.com -bazhua.me -bazhuay.com -bazhuayu.cc -bazhuayu.com -bazhuayukeji.com -bazi.cloud -bazi.run -bazi.xin -bazi5.com -baziguwen.com -bazizeri.com -bb-game.com -bb-hy.com -bb-pco.com -bb06.com -bb39977653.com -bbanp.com -bbaod.com -bbaqw.com -bbb1415.com -bbbaaa.com -bbbao.com -bbbb.com -bbbcdns.com -bbbmq.com -bbbtgo.com -bbcagroup.com -bbcayy.com -bbchin.com -bbctop.cc -bbctop.com -bbdj.com -bbdservice.com -bbdup.com -bbecpsc.com -bbef-tech.com -bbef.com -bbeshop.com -bbez.com -bbfkjkh.com -bbfoxgame.com -bbfstore.com -bbfytsn.com -bbgdex.com -bbgsite.com -bbguangcai.com -bbhou.com -bbicn.com -bbioo.com -bbj.icu -bbk.com -bbk000.com -bbkantu.com -bbkys.com -bblcdn.com -bblmw.com -bblops.com -bblskj.com -bbmuwwxyk.com -bbmy.net -bbobo.com -bbonfire.com -bbosu.com -bbpph.com -bbpu.com -bbqcdn.com -bbqe.com -bbqk.com -bbqk.net -bbqming.com -bbqpitnorthpark.com -bbqseo.com -bbqwhg.com -bbrmedia.com -bbrtv.com -bbs-alsontech.com -bbs-go.com -bbs0415.com -bbs0551.com -bbs1x.net -bbscloud.com -bbsds.com -bbsls.net -bbsmc.net -bbsnet.com -bbstv.clouducs.com -bbsufida.com -bbsut.com -bbsxp.com -bbszjj.com -bbtang.info -bbtcaster.com -bbteapress.com -bbtengfeizaixian.com -bbthy.net -bbtkid.com -bbtpress.com -bbtree.com -bbtwatch.com -bbugifts.com -bbunion.com -bbw-portnet.com -bbwcec.com -bbwcq.com -bbwfish.com -bbwgw.com -bbwhy.com -bbwict.com -bbwoils.com -bbwotc.com -bbwport.com -bbwport.net -bbwrc.com -bbwse.com -bbwunisco.com -bbxarq.com -bbxinwen.com -bbxinwen.net -bbxstjx.com -bbydsol.com -bbyyw.com -bbzhh.com -bbzhi.com -bbzhsw.com -bbzxky.fun -bc150.com -bc966.com -bcactc.com -bcb5.com -bcbjjy.com -bcbksbx.com -bcbpm.com -bcbvi.com -bccastle.com -bccn.net -bccnsoft.com -bccoder.com -bccv.com -bcdaren.com -bcdnx.com -bcdy.net -bce-cdn.com -bce-cdn.net -bceapp.com -bcebos.com -bcedns.com -bcedns.net -bcedocument.com -bcegc.com -bcehost.com -bcehosts.com -bceidaas.com -bceimg.com -bcelive.com -bcevod.com -bcewaf.com -bcfmglobal.com -bcfy188.com -bcgf.cc -bcghotel.com -bchdemo.site -bchlkj.com -bchrt.com -bcisz.org -bcitb.com -bcjjzd.com -bcjkcloud.com -bcjmk.com -bcjp.net -bcjy6.com -bclcraft.com -bcmcdn.com -bcmonomial.xyz -bcn.cc -bcpcn.com -bcpgame.com -bcpharma.com -bcplab.com -bcpmdata.com -bcreat.com -bcrjl.com -bcrmtzx.com -bcryo.com -bcsfoong.com -bcshipgo.com -bcsloong.com -bcsytv.com -bctdtx.com -bctest.com -bctts.com -bcty365.com -bcvbw.com -bcvdmovie.com -bcwangluo.net -bcxgame.com -bcxgps.com -bcxww.com -bcy.net -bcyimg.com -bcysh.com -bczcdn.com -bczs.net -bczyyy.com -bd-caict.com -bd-gti.com -bd-jd.com -bd-union.com -bd001.net -bd689.com -bd7kzs.site -bdactivity.com -bdaenviro.com -bdajob.com -bdall.com -bdapark.com -bdatu.com -bdbae.com -bdc-rays.com -bdcb.cc -bdcgz.com -bdchangtujs.com -bdchina.com -bdcloudapi.com -bdclouddns.com -bdcn-media.com -bddhospital.com -bddlm.com -bdebid.com -bdeceimg.com -bdegnine.com -bdf2.com -bdfczx.com -bdfmj.com -bdfmkj.com -bdfyy999.com -bdfzcd.net -bdfzkyy.com -bdg-brain.com -bdgamelive.com -bdgp.cc -bdgqx.com -bdgslb.com -bdgw.cc -bdhdtv.com -bdhengding.com -bdhhg.com -bdhhome.com -bdhulanwang.com -bdimg.com -bdinfo.net -bdispatch.com -bdispatch.net -bdjz.vip -bdkyr.com -bdlcqjw.com -bdmozon.com -bdmyandex.com -bdns-api-test.net -bdns-boe.com -bdns-boe.net -bdns-gtm-01.net -bdns-gtm-pressure.com -bdns-restore.net -bdns-test.com -bdns-test.net -bdo-dahua.com -bdpan.com -bdpnt.com -bdppe.net -bdqn027.com -bdqn666.com -bdqnwh.com -bdqyw.com -bds-cn.com -bds666.com -bdsagslb.com -bdsagslbtest.com -bdsana.com -bdsd.design -bdsgx.com -bdshengce.com -bdshuang.com -bdsimg.com -bdsj.net -bdspacetime.com -bdstar.com -bdstatic.cc -bdstatic.com -bdsye.com -bdsytime.com -bdszh.vip -bdtianchang.com -bdtic.com -bdtjrcv.com -bdtm.net -bdtsc.com -bduapp.com -bdurl.net -bdvending.com -bdwater.com -bdwhyscjh.com -bdwkxz.com -bdwm.net -bdwork.com -bdxc.com -bdxdgs.com -bdxiguaimg.com -bdxigualive.com -bdxiguastatic.com -bdxiguavod.com -bdxpa.com -bdxx.net -bdxyykj.com -bdxyz.com -bdycdn.com -bdycdn.net -bdydns.com -bdydns.net -bdyhhb.com -bdylzbyy.com -bdymkt.com -bdysc.com -bdysite.com -bdysites.com -bdyz.xyz -bdzhipin.com -bdzjdsagslb.com -be-xx.com -be1775.com -be90.com -beacons.gcp.gvt2.com -beacons.gvt2.com -beacons2.gvt2.com -beacons3.gvt2.com -beadwallet.com -beamweldingmachine.com -beancomm.com -beantechyun.com -bear20.com -bearead.com -beargoo.com -bearingclub.com -bearrental.com -bearyboard.com -bearychat.com -beastush.com -beasure.com -beatbeatone.com -beats-digital.com -beatsbydre.com -beaucare.org -beautifulbank.com -beautifullinux.com -beautifulzzzz.com -beaverbio.com -bebhmongb.com -bechangedt.com -becker-china.com -beckwai.com -beckyroom.com -becod.com -becomingcelia.com -becominggroup.com -becukwai.com -bedtimepoem.com -beduu.com -bee-core.com -bee-net.com -bee-station.com -bee3d.com -beebeepop.com -beebeeto.com -beecook.com -beedancing.com -beeeeego.com -beeflower-cn.com -beegoedu.com -beejoygames.com -beelink.com -beep365.com -beeplay123.com -beeshow.tv -beespal.com -beestor.com -beeui.com -beeweart.com -befar.com -begcl.com -begeel.com -begindcc.com -bego.cc -begoto.com -begowin.com -behake.com -behao.net -behaviac.com -behr.com -behrenswatches.com -behrenswatches.shop -bei1688.com -beianw.com -beibaobang.com -beibaozq.com -beibei.com -beibenkc.com -beicaiyuan.com -beicdn.com -beichende.com -beicity.com -beidasoft.com -beidd.com -beidian.com -beidisi.com -beidoou.com -beidou.org -beidou66.com -beidouchong.com -beidouedu.net -beidouone.com -beidousafety.org -beidouxingxueche.com -beiduolab.com -beierbio.com -beierchina.net -beierjin.net -beieryouxi.com -beifa.com -beifang.net -beifangfoshifen.com -beifangjiaoyu.com -beifeng.com -beifuni.com -beigangyouxuan.com -beigonggroup.com -beiguorc.com -beihai365.com -beihai97.com -beihaidc.com -beihaigame.com -beihailihe.com -beihaimayi.com -beihaiqiuzhi.com -beihaireexpo.com -beihaiting.com -beihaiwuyeguanli.com -beihaiwz.com -beihan.net -beihansoft.com -beihaobao.com -beihuasoft.com -beihuo.net -beiing.net -beijianggzn.com -beijin100.com -beijing-air.com -beijing-chopard.com -beijing-girardperregaux.com -beijing-halfmarathon.com -beijing-hmo.com -beijing-hualian.com -beijing-kids.com -beijing-lipin.com -beijing-marathon.com -beijing-office.com -beijing-time.org -beijing-tokyo.com -beijing101.com -beijing120.com -beijing518.com -beijingaierfei.com -beijingapt.com -beijingbang.com -beijingbaomu.com -beijingbio.tech -beijingcenterforthearts.com -beijingcustoms.com -beijingfenxiangkeji.com -beijingfire.com -beijingfojiao.com -beijinggobroadhospital.com -beijingguoyitang.com -beijinghopemedcare.com -beijinghuafu.com -beijinghuiyizhongxin.com -beijinglandbridge.com -beijingnongjiayuan.com -beijingnorthstar.com -beijingrc.com -beijingrc.net -beijingrenyi.com -beijingsanchi.com -beijingtaixie.com -beijingtoon.com -beijingtrucks.com -beijingwatch.com -beijingxiantour.com -beijingxinzhuoyue.com -beijingyouxi.com -beijingyuanxin.com -beijingzc.com -beijingzoo.com -beijinxuetang.com -beijiu.ink -beijzc.com -beikeba.com -beikeiot.com -beikeread.com -beikongyun.com -beilayl.com -beileike.com -beileimaoedu.com -beiletoys.com -beilewh.com -beilianjd.com -beilile.com -beilin.ltd -beilinbox.com -beiliufuyang.com -beimai.com -beimeigoufang.com -beimeihongfeng.com -beimeizhijia.com -beimeizhiying.com -beinglab.com -beingmate.com -beipenggroup.com -beipy.com -beiqujy.com -beirangroup.com -beiren-tech.com -beiren.cc -beiren.com -beironsign.com -beirunjie.com -beise.com -beisen.com -beisenapp.com -beisencloud.com -beisencorp.com -beisenpaas.com -beisenyl.com -beismei.com -beitaguoguo.com -beitaichufang.com -beitao8.com -beitown.com -beitre.com -beiwaibest.com -beiwaiclass.com -beiwaiguoji.com -beiwaionline.com -beiwaiqingshao.com -beiwo.com -beiww.com -beixibaobao.com -beixingmh.com -beiyijt.com -beiyinqi.com -beiyiskjc.com -beiyongzhan.com -beiyuwangxiao.com -beizengtech.com -beizhua.com -beiziman.com -bej9.com -bejirog.com -bejson.com -bekko.com -belarusvisacenter.com -belfone.com -belgiumvisacenterd.com -beliefbiomed.com -beliefy.com -belimked.com -belle8.com -belletrip.com -bellinlaser.com -belllan.com -belloai.com -beloj.com -belray-coffee.com -beltandroadforum.org -beltxman.com -bemanicn.com -bemfa.com -bemhome.com -benbenlong.com -benber-tech.com -benber.com -benbun.com -bencaopu.com -bendan.website -bendi5.com -bendibao.com -bendijin.net -bendis.cc -bendiso.com -bendiw.cc -bendizhidao.com -benduo.net -benewake.com -benfuip.com -bengbufan.com -bengbukx.com -bengden.com -bengfa.biz -benghuai.com -bengku.com -bengou.com -bengrong.com -bengtie.com -bengyechina.com -bengzhanc.com -benhs.com -beniao.com -benjamin.fun -benkejieye.com -benkua.com -benlai.com -benlailife.com -benlaisy.com -benling-sh.com -benliuxinwen.com -benlizu.com -benlkjc.com -benlong.vip -benma.com -benmi.com -benmu-health.com -bennybu.fun -benqhospital.com -benqmedicalcenter.com -benqmedicalcentersz.com -bensewang.com -benshouji.com -bensiea.com -benweitang.com -benweng.com -benxiang.com -benxiaoqu.com -benyh.com -benyouhui.com -benyuannet.com -benzhb.com -benzhibbs.com -benzhiwangluo.com -benztto.com -beodesj.com -beony.com -beook.com -bepal.pro -bepurestandards.com -bequ6.com -bequ6.org -bequgew.com -bequgexs.com -bequgezw.com -bequw.com -bequwx.org -berchina.com -berens-china.com -berfen.com -bergerda.com -berlin8.org -berlinchan.com -berlinix.com -bernouly.com -berrydigi.com -berrygenomics.com -bersella-ai.cc -bersilion.com -bertadata.com -berui.com -berylbot.com -bes.ren -besbranding.com -bescar.com -beschannels.com -bescity.com -bescloud.com -besclouds.com -bescn.com -besg-bee.com -besget.com -beshtech.com -besile.com -besino.com -besonchina.com -bessystem.com -best-display.com -best-inc.com -best-intl-school.com -best-lookstone.com -best1.com -best198.com -best66.me -best73.com -bestadprof.com -bestapp.wiki -bestarzx.com -bestatic.com -bestb2b.com -bestbeibao.com -bestblower.com -bestbrocciu.com -bestcdn.vip -bestcem.com -bestchoiceco.com -bestcloudcdn.com -bestclouddns.com -bestcood.com -bestcovered.com -bestcrossborder.com -bestdataclub.com -bestdo.com -bestdon.net -bestdosas.com -bestechnic.com -bestedm.net -besteduchina.com -bester-cn.com -bestexpresser.com -bestfood517.com -bestfuturevip.com -bestgo.com -besthairextensions.com -besthub.tech -besticity.com -bestincapi.com -bestincapp.com -bestjy.net -bestkids.net -bestlee.net -bestlosslessmusic.com -bestmate.net -bestmoban.com -bestomro.com -bestone.com -bestone.vip -bestopview.com -bestpay.net -bestpeng.com -bestqliang.com -bestraylaser.com -bestreplicheitalia.com -bestrhy.com -bestsdwan.com -bestshinhwa.com -bestsign.info -bestsign.tech -bestsignuniversal.com -bestsrc.com -beststeel-sh.com -bestsungas.com -bestsuppliers.com -bestswifter.com -besttrav.com -bestugali.com -bestv6.com -bestvcdn.com -bestvcdn.net -bestviewstock.com -bestvist.com -bestwa.com -bestwatch.cc -bestwatchaaa.com -bestwaysh.com -bestwehotel.com -bestweshop.com -bestwesternfelicityshenzhen.com -bestzone.org -bestzumo.com -bet007.com -bet2268.com -bet8.cm -betaband.net -betadance.net -betaenv.com -betaflare.com -betaidc.com -betamao.me -betaquantity.com -betasmart.tech -betavolt.tech -betawm.com -betazixun.com -betcctv.com -betely.com -bethh777.com -betop-cn.com -betop365.com -betophall.com -bettapharma.com -bettbio.com -better-cn.com -better365.com -betterclyde.com -betteredu.net -betteryeah.com -beuyinm.com -beva.com -bevol.com -bewellbio.com -bewg.net -bewgnn.com -beyebe.com -beyondbit.com -beyondcomparepro.com -beyondfund.com -beyondh.com -beyonditsm.com -beyonds.com -beyondsungroup.com -beyoner.net -beyotime.com -bezbzsyf.com -bf-jxqc.com -bf-z.com -bf-zhengzhou.com -bf35.com -bf99.com -bfcdnbf.com -bfcdnrd.com -bfcdnsc.com -bfchayuan.com -bfcmovie.com -bfdcloud.com -bfe-networks.com -bfe-networks.net -bffengshi.com -bffyun.com -bffzb.com -bfgho.com -bfhmj.com -bfhmq.com -bfhzmj.com -bfikuncdn.com -bfimg.com -bfjr.com -bfjxmajiang.com -bfjxmj.com -bfklyhuan.com -bflschayuan.com -bfnbgame.com -bfningbo.com -bfqh.com -bfqifu.com -bfqqsg.com -bfqtchayuan.com -bfqzmyq.com -bfscoc.com -bfsea.xyz -bfsmy.com -bfssj.com -bfsu-artery.net -bfsutw.com -bfsxmj.com -bft-robot.com -bftq.com -bftv.com -bfvvs.com -bfw.wiki -bfxiuxianqipai.com -bfypq.com -bfyx.com -bfyx.net -bfzhan.com -bfzzmj.com -bg.v4.a.dl.ws.microsoft.com -bg4.v4.a.dl.ws.microsoft.com -bg45.com -bg7ywl.com -bgbfds.com -bgbk.org -bgbluesky.com -bgccn.com -bgctv.com -bgdeco.com -bgdzsw.com -bgfl.net -bggd.com -bghc.net -bghgw.com -bghmj.com -bgi-graphene.com -bgi.com -bgic.com -bgici.com -bgigc.com -bgjbq.com -bgk100.com -bgkj.pro -bgl88.com -bglmzm.com -bgmfans.com -bgnyl.com -bgosp.com -bgrdh.com -bgri.com -bgrimm.com -bgrwgglz.com -bgs123.com -bgsdk.net -bgsdyz.com -bgsyb.com -bgteach.com -bgtwater.com -bgucu.com -bgv888.com -bgvalve.com -bgwcsz.com -bgwl.net -bgwxc.com -bgxcl.com -bgxu.com -bgyfhh.com -bgyfhyx.com -bgyhotel.com -bgyhotels.com -bgypc.com -bgypsc.com -bgyshop.com -bgyvfs.net -bgzchina.com -bgzx365.com -bh-lay.com -bh-mangrove.com -bh-med.com -bh-xhhd.com -bh.sb -bh1t.com -bh3.com -bh5.com -bh568.com -bh8cg18i96.com -bh8sel.com -bhabb.com -bhccn.com -bhcd.net -bhcgky.com -bhcpu.com -bhcyhotel.com -bhcyts.cc -bhcyy.com -bhczxx.com -bhdata.com -bhdl520.com -bhdns.com -bhdxfsyy.com -bhdyjs.com -bhecard.com -bheyy.com -bhfc.net -bhfeiyang.com -bhfz114.com -bhghy.com -bhgjjy.com -bhgmarketplace.com -bhgroups.com -bhgsb.com -bhhfsc.com -bhhospital.com -bhhsx.com -bhhthl.com -bhhzjt.com -bhidi.com -bhjcsc.com -bhjinghao.com -bhjjj360.com -bhjuxian.com -bhkyxy.com -bhlib.com -bhlietu.com -bhlqjt.com -bhlyw.net -bhnet.net -bhnge.com -bhnsh.com -bhpcc.com -bhpiano.com -bhpiston.com -bhqd6688.com -bhqzyy.com -bhrencai.com -bhrssp.com -bhsanfan.com -bhsbdcdjzx.com -bhseed.com -bhsence.com -bhsgnk.com -bhshtksp.com -bhshunhui.com -bhshyy.com -bhsr.com -bhszyyy.com -bhtv.cc -bhuitong.com -bhuvgy.com -bhwzdnweys.com -bhxww.com -bhxx.net -bhxxpt.com -bhxz.net -bhybskq.com -bhyby.com -bhyintan.com -bhyueda.com -bhzck.club -bhzck.xyz -bhzd88.com -bhzdzx.net -bhzhu203.com -bhzp.net -bhzpw.com -bhzw.com -bhzyxy.net -bi-ci.com -bi4sight.com -bi5u.com -bi8brp.com -bian-fengwei.com -bianbao.net -biancheng.net -biancui.com -biandangroup.com -biandiantong.com -biandouyun.com -biandown.com -bianews.com -bianfeng.com -bianfengkuailai.com -bianhaiyun.com -bianjianzen.com -bianjiebao.com -bianjiqi.net -bianjiyi.com -bianju.me -bianlifeng.com -bianlun.net -bianmachaxun.com -bianminwang.com -bianpingyou.com -bianquchina.com -biantaishuo.com -biantongzixun.com -bianwa.com -bianwanjia.com -bianyifang.com -bianyuandaigou.com -bianzhia.com -bianzhile.com -bianzhirensheng.com -biao12.com -biaobaini.com -biaoceo.com -biaoda.me -biaodan.info -biaodan100.com -biaodiancloud.com -biaodiandichan.com -biaodianfu.com -biaofaw.com -biaoge.com -biaoge.me -biaohs.com -biaoju01.com -biaomi.com -biaopan8.com -biaopeibao.com -biaoqing.com -biaoqing888.com -biaoqingjia.com -biaoqingwen.com -biaoshixinyi.com -biaoshula.com -biaosucdn.com -biaotianxia.com -biaotuan.com -biaotukeji.com -biaoyi.com -biaozhaozhao.com -biaozhiku.com -biaozhun.org -biaozhun8.com -biaozhuns.com -bibaodao.com -bibenet.com -bibibi.net -bibigpt.co -bibiku.com -bible.vip -bicido.com -bicobrand.com -bicoin.info -bicomoptics.com -bicpaedu.com -bicredit.xin -bicv.com -bicyc.com -bid-view.com -bidchance.com -bidemi.com -bidepharm.com -bidepharmatech.com -bidgojp.com -bidianbao.com -bidianer.com -bidingxing.com -bidizhaobiao.com -bidns.net -bidtoolads.com -biduo.cc -biduobao.com -biduoxs.com -biduwenxue.com -bidwhy.com -bie-plc.com -biec.com -biechila.com -biede.com -biedoul.com -biekanle.com -biema.com -biept.com -bieshu.com -bietongfeng.com -bieyangapp.com -bieyelighting.com -bifabu.com -bifengxia.com -bifiv.com -biftsce.com -big-bit.com -big-shanghai.com -bigaaa.net -bigaka.com -bigan.net -bigbaicai.com -bigbangux.com -bigbenmeng.com -bigbigai.com -bigbigsun.com -bigbigwon.com -bigbigwork.com -bigbrosci.com -bigcat.com -bigcloud.click -bigda.com -bigdata-expo.org -bigdata.ren -bigdatacq.com -bigdatasafe.org -bigdatastudy.net -bigdatawuhan.com -bigddg.com -bige0.com -bigecko.com -bigehudong.com -bigemao.com -bigemap.com -bigerdata.com -bigerwall.com -bigeshuju.com -bigesj.com -bigeyes.com -biggerlens.com -biggeryun.com -bigherdsman.com -bightbc.com -bigjpg.com -bigniu.com -bignox.com -bigo.sg -bigo.tv -bigogm.com -bigoledog.com -bigolive.tv -bigops.com -bigplayers.com -bigpt8.com -bigqiao.com -bigquant.com -bigrnet.com -bigtide.com -biguiyuan.net -biguo100.com -biguolunwen.com -biguotk.com -bigwayseo.com -bigwh.com -bigwinepot.com -bigwww.com -bigxiao.com -bigyulin.com -bigzhong.com -bihe0832.com -bihongbo.com -bihoo.com -bihu.com -bihuatuku.net -bihubao.com -bihuoji.com -biikan.com -biioii.com -biji.com -biji13.com -bijiago.com -bijiagou.com -bijianzw.com -bijiao.org -bijiasso.com -bijiatu.com -bijienetworks.com -bijingdi.com -bijirim.com -bijixia.net -bijsc.com -bikeceo.com -bikecool.com -bikehome.cc -bikehome.net -biketo.com -biketour-giant.com -biking-m.com -bilalipay.com -bilandtech.com -bilezu.com -bilfinance.com -biliapi.com -biliapi.net -bilibil.com -bilibili.cc -bilibili.co -bilibili.com -bilibili.li -bilibili.net -bilibili.tv -bilibili996.com -bilibiligame.co -bilibiligame.net -bilibilihelper.com -bilibilipay.com -bilicdn1.com -bilicdn2.com -bilicdn3.com -bilicdn4.com -bilicdn5.com -bilicomic.com -bilicomics.com -biligame.co -biligame.com -biligame.net -biligo.com -biligx.com -bilihot.com -biliimg.com -biliintl.co -biliintl.com -bilimanga.net -bilinl.com -bilinovel.com -biliplus.com -biliui.com -bilive.com -bilivideo.com -bilivideo.net -biliyu.com -bill-jc.com -billchn.com -billionaireboard.com -billionbottle.com -billionconnect.com -billionseo.com -billowlink.com -billu.cc -billwang.net -bilnn.com -bim-times.com -bimant.com -bimawen.com -bimface.com -bimfmchina.com -bimhuite.com -bimige.net -bimiwu.com -bimjoy.com -bimsa.net -binancezh.kim -binancezh.link -binary-semi.com -binaryai.net -binaryai.tech -binbinbiji.com -binbinyl.com -bincailiuxue.com -binfang.com -binfenniao.com -binfenquzu.com -binfenshikong.com -binfenyeke.com -binfenyingyu.com -binfenzhilv.com -bing400.com -bingchenvacuum.com -bingd.com -bingdian01.com -bingdoc.com -bingdou.site -bingfan.com -bingganqy.com -binggo.com -bingguner.com -binghelengmei.com -bingjo.com -bingjun.cc -binglai.net -binglanggu.com -binglanphoto.com -binglianhuajianzhan.com -bingliekeji.com -binglixue.com -bingninglaowu.com -bingo321.com -bingocinemas.com -bingoenglish.com -bingolink.biz -bingosci.com -bingqipu.net -bingquan.com -bingsin.com -bingtuannet.com -binguo.me -bingyan.net -bingyandianqi.com -bingyongjin.vip -bingyuanhb.com -bingzunkeji.com -binhaiinv.com -binhaiwater.com -binhangtech.com -binjie.fun -binjie.site -binligzj.com -binliwatch.com -binmt.cc -binmtplus.com -binnong.com -binpang.me -binqsoft.com -binstream.live -binuoniu.com -binxin.com -binzc.com -binzhi.com -binzhikeji.com -binzhouw.com -binzz.com -bio-dxzf.com -bio-equip.com -bio-fount.com -bio-fuyang.com -bio-info-trainee.com -bio-island.com -bio-protocol.org -bio-review.com -bio1000.com -bio360.net -bio4p.com -biobiopha.com -biobw.org -biocause.com -biocellcharger.com -bioceltech.com -biochemsafebuy.com -biocloud.net -biocome.com -biocompounds.com -biodiscover.com -biodiscover.net -biodx.com -bioeast.com -biogeeker.com -biogo.net -biogot.com -bioguoke.com -biohf.com -biohong.com -biohuaxing.com -biohyalux.com -biohymn.com -bioinfo-scrounger.com -biokangtai.com -biokerun.com -bioktech.com -biolab.xyz -bioligo.com -biolihe.com -biome-expo.com -biomedicchina.com -biominhai.com -bionav.cc -bionovapharma.com -bioon.com -bioon.net -biorule.com -bioscenepharma.com -biosci-cq.com -bioscienceres.com -bioshineking.com -biosmelt.com -biosrepair.com -biosschina.com -biostar-pharm.com -biostatistic.net -biosune.com -biotanon.com -biotecan.com -biotech-meds.com -biotechina.com -biotechwell.com -biothink.tech -bioustar.com -biovector.net -biovip.com -bioway-pku.com -bioxtime.com -bipaihang.com -bipvcn.com -biqg8.com -biqiao.net -biqige.cc -biqiuge.com -biqu.ge -biqu6.com -biquan8.com -biqubao.com -biqubao10.com -biqubu.com -biqudu.com -biqudu.tv -biqufu.com -biqugao.cc -biquge.info -biquge.la -biquge123.com -biquge8.com -biquge9.cc -biquge99.cc -biqugeg.com -biqugena.com -biquges.com -biqugesk.org -biqugex.com -biqugexs.com -biqugexs.la -biqugexsapp.com -biqugexsw.com -biqugezw.us -biqugo.net -biqugu.cc -biqukai.com -biqukan.com -biquke.com -biquke.la -biquke.me -biquku.la -biqukun.com -biqukun.la -biquluo.com -biqupai.com -biqusa.com -biqushu.com -biqusk.com -biqusoso.com -biquw.com -biquw.info -biquw.la -biquwo.com -biquwo.net -biquwx.la -biquxs.com -biquyue.com -biquzw.info -biqwo.com -biransign.com -bird.art -bird4d.com -birdback.org -birdol.com -birdotech.com -birdwork.com -birentech.com -bisairi.com -bisenaccess.com -bisenet.com -bisenpark.com -bisgz.com -bishen.ink -bishengoffice.com -bishengyuan.com -bisheziliao.com -bishijie.com -bishuiwan.com -bisjigang.com -bison-technologies.com -bisonglighting.com -bisonscm.com -bisp.com -bistream.net -bitahub.com -bitauto.com -bitautoimg.com -bitautotech.com -bitbe.at -bitbrowser.net -bitcar.com -bitcellulose.com -bitcron.com -bitdefender-cn.com -biteabc.com -bitech-automotive-wuhu.com -bitecoin.com -biteedu.com -bitekou.com -bitell.com -bitenn.com -bitett.com -bitfish.cc -bitgo.cc -bitgo.net -bitguai.com -bithosts.net -bitiful.com -bitiful.net -bitjd.com -bitjia.com -bitky.cc -bitlib.cc -bitmain.vip -bitmingw.com -bitmoe.com -bitol.net -bitongtech.com -bitonloop.com -bitosscdn.com -bitqiu.com -bitscn.com -bitsde.com -bitse.com -bituq.com -bitvh.com -bitzsoft.com -biubiu.tv -biubiu001.com -biuged.com -biulie.com -biusoft.com -biwaihui.com -biwuke.com -bixiaxs.net -bixingxing.com -bixishang.com -bixu.cc -bixu.me -bixuecrm.com -bixueke.com -biya.ltd -biyabi.com -biyan8.com -biyangwang.com -biyao.com -biye.net -biyehome.net -biyele.com -biyelunwenjiance.com -biyequna.com -biyequnar.com -biyezheng8.com -biyi.net -biyidc.com -biyingniao.com -biyinjishi.com -biyong007.com -biyork.com -biyou.tech -biyouxue.com -biyuandi.com -biyuansh.com -biyuanshuiwu.com -biyuwu.cc -biyuzg.com -biz-abroad.com -biz-east.com -biz-email.net -biz178.com -biz72.com -bizatmobile.com -bizcent.com -bizchallenge.net -bizcharts.net -bizcn-test.com -bizcn.com -bizcn.net -bizcn666.com -bizconfstreaming.com -bizhi360.com -bizhi88.com -bizhigq.com -bizhimiao.com -bizhiquan.com -bizhiwang.com -bizhixia.com -bizhizj.com -bizhizu.com -bizhongchou.com -bizmoto.com -biznewscn.com -bizopsmall.com -bizpai.com -bizsmooth.com -bizsmooth.org -bizsn.com -bizsofts.com -bizvane.com -bj-big.com -bj-brother.com -bj-brsf.com -bj-bts.com -bj-byjz.com -bj-cronda.com -bj-dahon.com -bj-dsmzyy.com -bj-fm.com -bj-fxh.com -bj-git.com -bj-hengdeli.com -bj-ipcf.org -bj-jzgg.com -bj-klws.com -bj-kpn.com -bj-nego.com -bj-pr.com -bj-px.com -bj-sea.com -bj-syc.com -bj-sydc.com -bj-tencentclb.cloud -bj-tencentclb.com -bj-tencentclb.net -bj-tencentclb.work -bj-tongchuang.com -bj-tvart.com -bj-tygy.com -bj-win.com -bj-wjh.com -bj-yt.com -bj-zkhb.com -bj-zywh.com -bj003.com -bj0yx.com -bj1.api.bing.com -bj1000e.com -bj148.org -bj159zx.com -bj1777.com -bj17z.com -bj2scmm.com -bj315.org -bj35.com -bj360.com -bj42195.com -bj51.org -bj520.com -bj597.com -bj5i5j.com -bj7z.com -bj80.com -bj918.com -bj96007.com -bjadks.com -bjadmix.com -bjadn.net -bjagro.com -bjaja.com -bjango.com -bjanjili.com -bjartmuseum.com -bjatv.com -bjbaidianfeng.com -bjbalb.com -bjbaodao.net -bjbb.com -bjbeichen.com -bjbeifangjx.com -bjbfdt.com -bjbkwy.com -bjblackhole.com -bjbna.com -bjbpi.com -bjbrew.com -bjbtfu.com -bjbus.com -bjbywx.com -bjbzc.com -bjbzszxy.com -bjc-ent.com -bjcae.com -bjcag.com -bjcancer.org -bjcankao.com -bjcapital.com -bjcatzgroup.com -bjcdc.org -bjcdomain.com -bjceis.com -bjcgtrain.com -bjchengjiu.com -bjchishengkeji.com -bjchunxin.com -bjcjl.net -bjcjyt.com -bjckkj.com -bjclover.com -bjcls.net -bjcma.com -bjcoco.com -bjcomic.net -bjcomm.com -bjcomparison.com -bjconrad.com -bjcontinent.com -bjcorona.com -bjcpjzhyxh.com -bjcrg.com -bjcsfx.com -bjcshy.com -bjcsyg.com -bjcta.net -bjcxdf.com -bjcycg.com -bjcyhui.com -bjcyjt.com -bjcymt.com -bjcymyy.com -bjcyzg.com -bjd-mc.com -bjdcfy.com -bjdclib.com -bjddtm.com -bjdfrw.com -bjdfxj.com -bjdhwy.com -bjdiaoyu.com -bjdjc.com -bjdllti.com -bjdongxin.com -bjdp2p.com -bjdragon.com -bjdrxy.com -bjdsppa.com -bjdth.com -bjdw.org -bjdwl.net -bjdxfsxx.com -bjdxzxy.com -bjdyhsy.com -bjdyyc.com -bjeasycom.com -bjebc.com -bjeesa.org -bjef.com -bjei.com -bjent.org -bjepea.com -bjesg.com -bjesound.com -bjewaytek.com -bjexmail.com -bjexx.com -bjfc.cc -bjflc.com -bjfmart.com -bjfpw.com -bjfqy.com -bjfriendshiphotel.com -bjfsali.com -bjfzst.com -bjgas.com -bjgasgh.com -bjgastx.com -bjgcl.com -bjgdkn.com -bjgdzx.com -bjgfa.com -bjggk.com -bjggxh.com -bjgjjcapital.com -bjgjjmxy.com -bjgjtjk.com -bjgk.com -bjglxf.com -bjglxt.com -bjgongteng.com -bjgongyu.com -bjgoodwill.com -bjgree.net -bjgujibaohu.com -bjgumu.com -bjguodu.com -bjgxs.com -bjgymq.com -bjgyzjw.com -bjgyzs.com -bjgzc.com -bjhaiguang.com -bjhaijixing.com -bjhanlin.com -bjhdcp.com -bjhdhm.com -bjhdnet.com -bjhdrx.com -bjhee.com -bjhengchi.com -bjhengjia.net -bjhenson.com -bjherbest.com -bjhgbjgs.com -bjhlgw.com -bjhmcm.com -bjhmyq.com -bjhouse.com -bjhrha.com -bjhsyk.com -bjhsyuntai.com -bjhszp.com -bjhtlckj.com -bjhtzsgs.com -bjhuaxin.com -bjhuiqi.net -bjhuizhu.com -bjhwbr.com -bjhwtx.com -bjhwxy.com -bjhxqh.com -bjhxzlyy.com -bjhytjxjg.com -bjhzkq.com -bjhzzs.com -bjiab.com -bjiae.net -bjiaep.com -bjicpark.com -bjicrm.com -bjidc.net -bjidit.com -bjinfobank.com -bjipwqzx.com -bjitic.com -bjiwex.com -bjjbbayy.com -bjjbls.com -bjjchf.com -bjjdwx.com -bjjfsd.com -bjjgyy.com -bjjhhft.com -bjjhhn.com -bjjhsw.com -bjjihui.com -bjjingdong.com -bjjinl.com -bjjinming.com -bjjinsong.com -bjjiuhe.com -bjjizhun.com -bjjjst.com -bjjk66.com -bjjkglxh.org -bjjkw.net -bjjmzh.com -bjjnrl.com -bjjnzf.com -bjjqe.com -bjjqzyy.com -bjjr-tencentclb.cloud -bjjr-tencentclb.com -bjjr-tencentclb.net -bjjr-tencentclb.work -bjjsj.com -bjjsschool.net -bjjstyyzzyy.com -bjjsyy.com -bjjszyyy.com -bjjtat.com -bjjubao.org -bjjuli.com -bjjzjt.com -bjjzjxhyxh.com -bjjzsc.com -bjjzzpt.com -bjk30.com -bjkaihua.com -bjkaihua.net -bjkcsj.com -bjkdhy.com -bjkdvm.com -bjkeyscin.com -bjkgedu.com -bjkqj.com -bjkqyx.com -bjkrtwl.com -bjkswy.com -bjktaz.com -bjktwe.com -bjkxgroup.com -bjl777.com -bjlacc.com -bjlangbo.com -bjlanqiao.com -bjlaodongfa.com -bjlaw995.com -bjlcs-tech.com -bjlevsoft.com -bjlg.com -bjlkhd.net -bjllsy.com -bjlmg.com -bjlongview.com -bjlot.com -bjltsj.com -bjltwp.com -bjltxk.com -bjlyjszx.com -bjlysy001.com -bjlyw.com -bjmailqq.com -bjmama.com -bjmama.net -bjmamiai.com -bjmania.com -bjmda.com -bjmeikao.com -bjmerson.com -bjmjm.com -bjmslp.com -bjmti.com -bjmts.net -bjmxkn.com -bjmxxh.com -bjmylike.com -bjmzdx.org -bjmzw.com -bjn2ms.net -bjnai.net -bjnaxl.com -bjnhsw.com -bjnja.com -bjnkzx.com -bjnsr.com -bjnxgbyy.com -bjota.com -bjp321.com -bjpag.com -bjpcyd.com -bjpfh.com -bjpifu.com -bjpinweixuan.com -bjpmhyxh.com -bjpowernode.com -bjppa.com -bjpryk.com -bjqcjdcj.com -bjqh.org -bjqhgjj.com -bjqichezl.com -bjqingyang.com -bjqlg.com -bjqtbase.com -bjqtfifthbase.com -bjqtforthbase.com -bjqtsecbase.com -bjqtthirdbase.com -bjqtti.com -bjqyjjlb.com -bjqykc.com -bjqzhd.com -bjraee.com -bjrc.com -bjrcb.com -bjrdhx.com -bjretech.com -bjreview.com -bjrjgj.com -bjrjtdkj.com -bjrjyy.com -bjrlzyw.com -bjrock.com -bjrqjt.com -bjrtcdn.com -bjrtjt.com -bjrun.com -bjrussia-art.com -bjrwdx.com -bjry.com -bjsasc.com -bjsava.com -bjsbnet.com -bjscfl.com -bjscszh.com -bjscyxh.com -bjsdcm.net -bjsdeyy.com -bjsdfz.com -bjsdgroup.com -bjsdr.org -bjsfdr.com -bjsfrj.com -bjsftzxyjhyy.com -bjsgzgs.com -bjshaet.com -bjshdjy.com -bjsheng.com -bjshgzzxh.com -bjshowinfilm.com -bjsiasun.com -bjsinglewindow.com -bjsj5.com -bjsjac.com -bjsjds.com -bjsjgyy.com -bjsjsch12333.com -bjsjstxyy.com -bjsjsyly.com -bjsjwl.com -bjskjzs.com -bjsoho.com -bjsound.com -bjsoyo.com -bjsptf.com -bjspw.com -bjsrc.com -bjsrmyy.com -bjsryc.com -bjsskdn.com -bjstcc.com -bjstjy.com -bjsubway.cc -bjsubway.com -bjsuewin.com -bjsxdgzc.com -bjsxjt.com -bjsxt.com -bjsydq.com -bjsyhy.org -bjsyqw.com -bjsytv.com -bjsyzy.com -bjszhd.net -bjszlsjt.com -bjtaihua.com -bjtcf.com -bjtcy.com -bjtdhkj.com -bjtelecom.net -bjtieke.com -bjtitle.com -bjtjhn.com -bjtjw.net -bjtjzx.com -bjtkyy.com -bjtmjr.com -bjtndao.org -bjtobacco.com -bjtonghui.com -bjtongjian.com -bjtopli.com -bjtqcy.com -bjtradestar.com -bjtth.org -bjttsf.com -bjtvnews.com -bjtxc.com -bjtysj.com -bjtyzh.org -bjtzfy.com -bjtzzg.com -bju-flo.com -bjucd.com -bjun.tech -bjunionstar.net -bjuri.com -bjvps.net -bjvtc.com -bjweizhifu.com -bjwenchen.com -bjwenyu.com -bjwftd.com -bjwfz.com -bjwhds.com -bjwhmedia.com -bjwig.com -bjwkhotel.com -bjwkzl.com -bjwpjs.com -bjwqxh.com -bjwt.com -bjwwhc.com -bjwyseo.com -bjxa.com -bjxbja.com -bjxchjxx.com -bjxcloud.com -bjxcsy.net -bjxdfk.com -bjxf315.com -bjxhly.com -bjximei.com -bjxingma.com -bjxingzheng.com -bjxinku.com -bjxinyou.com -bjxjyy666.com -bjxjzyy.com -bjxku.com -bjxtjmsb.com -bjxtkj.com -bjxueche.net -bjxwcq.com -bjxwx.com -bjxx.vip -bjxx8.com -bjxxw.com -bjxyjf.com -bjxyjy.com -bjxzlou.com -bjxzxw.com -bjyah.com -bjyald.com -bjycwa.com -bjycxh.com -bjyczb.com -bjydzy.com -bjyestar.com -bjyhjt.net -bjyhwy.com -bjyingge.com -bjyingyun.com -bjyirui.com -bjyizhimei.com -bjylhyxh.com -bjyme.com -bjyn.com -bjyouth.net -bjyoxr.com -bjypw.com -bjyqsj.com -bjysxh.com -bjysyunsheng.com -bjyszb.com -bjythd.com -bjyuantong.com -bjyubing.com -bjyueshenzj.com -bjyujinxiang.com -bjywt.com -bjyxl.com -bjyyb.net -bjyyun.com -bjyzfjj.com -bjzalaw.com -bjzaxy.com -bjzbb.com -bjzbkj.com -bjzcha.com -bjzcth.com -bjzg.com -bjzgh.org -bjzgh12351.org -bjzghd.com -bjzhaxikj.net -bjzhiborui.com -bjzhishi.com -bjzhongyi.com -bjzhsx.com -bjzkgc.com -bjzkgr.com -bjzkhs.com -bjzklk.com -bjzklp.com -bjzmdlsxs.com -bjzmkm.com -bjzmqj.com -bjznkq.net -bjznnt.com -bjzph.com -bjzqw.com -bjzrzc.com -bjzs.cc -bjzs114.com -bjzsxccm.com -bjzunlaotang.com -bjzwbc.com -bjzwhz.com -bjzwx.com -bjzwzx.com -bjzxcp.com -bjzxsf.net -bjzy360.com -bjzybaoan.com -bjzybc.com -bjzyjt.com -bjzyrxgs.com -bjzysx.com -bjzzcb.com -bjzzdb.com -bjzzrx.com -bjzzschool.com -bk-cdn.com -bk-cdn01.com -bk3r.com -bk41.net -bk5u.com -bkapigw.com -bkapps.com -bkbyxa.com -bkcipbewruo.com -bkcloud.cc -bkclouds.cc -bkcode.net -bkdou.com -bkeconomy.com -bkiije.com -bkill.com -bkill.net -bkjia.com -bkjk-inc.com -bkjk.com -bkjk123.com -bkjpress.com -bkjsemi.com -bkkchina.com -bkn.cc -bkneng.com -bknzdh.com -bkpcn.com -bkqq.com -bkrgame.com -bkscc.com -bktencent.com -bktsj.com -bkuax.com -bkweek.com -bkzzy.com -bl.com -bl0757.com -bl91.com -black-unique.com -blackberry.com -blackbirdsport.com -blackdir.com -blackdragon.com -blackeep.com -blackh4t.org -blackint3.com -blackluxury.com -blackshark.com -blackswancake.com -blackxl.org -blazefire.com -blazefire.net -blazor.zone -blbl.online -blbx.com -blctsy.com -bld365.com -bldimg.com -bldlive.com -bldpharm.com -bldybbb.com -bldz.com -bldzlsb.com -bleege.com -blemall.com -blendercn.org -blessedbin.com -blestech.com -blgl8.com -blgxhn.com -blhdazhe.com -bliao.com -blibao.com -blibee.com -blibee.net -blicube.com -blimage.com -bliner.me -bling.link -blingabc.com -blinghour.com -blingoffice.com -blissmall.net -blizzardcn.com -blju.com -blksails.net -bllsbz.com -blm.net -blmpb.com -blockchain.hk -blockchain123.com -blockchainlabs.org -blockmeta.com -blockob.com -blocrepresents.com -blog.htc.com -blog.htcvive.com -blog120.com -blogcdn-dns.net -blogchina.com -blogchina.org -blogchinese.com -blogcn.co -blogfeng.com -bloggern.com -bloghub.fun -blogjava.net -blogofmusic.com -blogou.com -blogqun.com -blogturn.com -blogways.net -blogwe.com -blogxuan.com -bloom-powder.com -bloomage.com -bloomagebiotech.com -bloomgamer.com -bloomtoursvip.com -bloqp.com -blossomwed.com -bloves.com -blovestorm.com -blowawards.com -blowing-mould.com -blowmoldmachines.com -blpack.com -blpwz.com -blqx.com -blqy.com -blr206.com -blshthb.com -blskye.com -blsw.cc -blsweda.com -blsx.com -blszhifa.com -blszyy.com -bltang.cc -bltyyls.com -bltzw.com -blue-city.com -blue-skylandscape.com -blue-zero.com -blue0123.com -bluearchive-cn.com -bluebeebox.com -bluebellls.com -bluebirdme.com -blueboxasia.com -bluebridge-amc.com -bluebullcn.com -bluecardpay.com -bluecardsoft.com -bluecardsoft.net -bluecatyun.com -bluecefa.com -bluecity.com -blued.com -bluedgames.com -bluedhealth.com -bluedimg.com -bluedon.com -bluedoorindex.com -bluedotcc.com -bluefite.com -bluefocus.com -bluefocusgroup.com -blueglass.vip -bluegogo.com -bluegoon.com -bluehn.com -blueidea.com -bluek.org -bluelettercn.org -bluelightfuse.com -bluelive.me -bluenotechina.com -blueocean-china.net -blueplus.cc -bluepoch.com -bluesdream.com -blueseaict.com -bluesharkinfo.com -blueshow.net -blueskykong.com -blueskyschool.net -blueskystudy.com -blueskyxn.com -blueslc.tech -bluesoleil.com -bluestep.cc -bluetime.com -bluetowngroup.com -bluetrum.com -bluewhaleremote.com -bluezz.net -blurdev.com -blw.moe -blwire.com -blxfc.com -blxs.info -blxs.la -blycctv.com -blyun.com -blzddist1-a.akamaihd.net -blzls.xyz -blzpw.net -blzsjx.com -bm-inv.com -bm-mc.com -bm001.com -bm0392.com -bm369.net -bm50ue2uwnj7.com -bm8.tv -bmbios.com -bmbn100.com -bmbqwater.com -bmc-medical.com -bmcedu.net -bmcx.com -bmdbr.com -bmdxcx.com -bme-assemble.com -bme-clock.com -bme-grow.com -bme-introduce.com -bme-invite.com -bme-mp.com -bme-wx.com -bmeicn.com -bmema.org -bmeol.com -bmfsm.com -bmh1958.com -bmimage.com -bmj.com -bmjet.com -bmjzkj.com -bml365.com -bmlink.com -bmlxkj.com -bmm-assemble.com -bmm-clock.com -bmm-grow.com -bmm-introduce.com -bmm-invite.com -bmm-mp.com -bmm-wx.com -bmmsteel.com -bmob.site -bmobapp.com -bmobcloud.com -bmobpay.com -bmoook.com -bmp.ovh -bmpj.net -bmrtech.com -bmrtjt.com -bms16.com -bmser.com -bmshow.com -bmtrip.com -bmw8033.com -bmwallpaper.com -bmwnc.com -bmxinfang.com -bmzxw.com -bn21.com -bnacg.com -bnbba.com -bnbcamp.com -bnblogs.cc -bnbtrip.com -bnc66.com -bnchina.com -bncp.xyz -bncwork.com -bncyh.com -bndsfc.com -bnhelm.com -bnhshiguan.com -bnjyks.com -bnncn.com -bnnd.net -bnnnk.com -bnocode.com -bntyh.com -bnup.com -bnupg.com -bnwin.com -bnxf.online -bnysq.com -bnyy.com -bnzone.com -bo-blog.com -bo0s.com -bo56.com -boadge.com -boai.com -boai120.com -boaigx.com -boaihospital.com -boairl.com -boaiswgs.com -boanits.com -boaoforum.org -boaovm.com -bob-cardif.com -bob-leasing.com -bob.com -bobaow.com -bobbns.com -bobcare.com -bobcfc.com -bobcoder.cc -bobdirectbank.com -bobdog.com -boblog.com -bobmao.com -bobo2008.com -bobo91.com -bobobird.com -bobohome.store -bobopic.com -boboyq.com -bobswatchstore.com -bobtranslate.com -boc-leasing.com -bocai.life -bocaicms.com -bocaiwawa.com -bocamchina.com -bocaviation.com -boccfc.cc -boce.com -boce003.com -bocep2c.com -bocetest.com -bocfullertonbank.com -bocgi.com -bocgins.com -bochengmed.com -bochk.com -bochkonline.com -bochyun.com -bocichina.com -bocifco.com -bocifunds.com -bocigroup.com -bociim.com -bocim.com -bocins.com -bocohz.com -bocomcc.com -bocommleasing.com -bocommlife.com -bocommtrust.com -bocondalian.com -bocsolution.com -bodaedu.net -bodahu.com -bodatek.net -bodchan.com -bode-e.com -bodestone.com -bodiantrading.com -boditechgx.com -bodoai.com -bodocn.com -bodu.com -boduhappiness.com -bodyguard007.com -boe.com -boendejc.com -boerchina.com -boerzg.com -bof98.com -bofangw.com -bofengkj.com -bofyou.com -bog.ac -bogaochem.com -bogokj.com -boguanpaimai.com -bogute.com -boguub.com -bohaiadx.com -bohaigs.com -bohaileasing.com -bohailife.net -bohaishibei.com -bohaisports.com -bohaiyun.com -bohaoclub.com -bohe.com -bohejiasuqi.com -bohewangluo.com -bohu.co -bohua.com -bohuanchina.com -bohuangchina.com -bohuasanhe.com -bohui-tech.com -bohuigk.com -bohuihe.com -bohuitalent.com -boilerinfo.net -boill.com -boincdn.live -boiots.com -bojianger.com -bojiaojituan.com -bojicdmo.com -bojie.bid -bojolight.com -bojoy.net -bojun-import.com -boka.vc -bokaishi.com -bokao2o.com -boke.com -boke.one -boke.pw -boke112.com -boke8.net -bokecc.com -bokecs.net -bokee.com -bokee.net -bokesoft.com -bokesoftware.com -bokexia.com -bokeyz.com -boktour.com -bokunwatch.com -bolaa.com -bolan.net -bolaninfo.com -bolanjr.com -boldseas.com -bole-china.com -bole.com -bole.name -bole766.com -bolead.com -boledir.com -bolegs.com -bolehu.net -bolei99.com -boleihg.com -bolejiang.com -bolejiaoxue.com -bolelink.com -bolexiaozhao.com -bolin1688.com -bolink.club -bolken.com -bolo.me -bolo.video -bolongxm.com -bolq.com -boltp.com -boluogouwu.com -boluomee.com -boluomeet.com -boluomi01.com -boluoyun.com -boluoyunyu.com -boluozaixian.com -bom.ai -bom2buy.com -bomanair.com -bomeeting.net -bomin-china.com -bominelec.com -boming-sc.com -bomman.com -bomyg.com -bon-top.com -bon-wine.com -bonan.vip -bonbonbongame.com -bond120.com -bond520.com -bondent.com -bondlady.com -boneboat.com -bonepuppy.com -bonestgattiwatch.com -bonfite.com -bongm.com -bongmi.com -bongv.com -bongwell.com -boningad.xyz -bonkee.net -bonree.com -boobooke.com -boodo.com -booea.com -booen.co -booeoo.com -boohee.com -book118.com -book1993.com -bookabc.net -bookapka.com -bookask.com -bookdao.com -bookdown.net -bookedu.com -bookersea.com -bookfedex.com -bookfeel.com -booking001.com -bookingtee.com -bookinlife.net -booknest.net -bookof.com -bookqi.com -books51.com -bookschina.com -booksgoo.com -bookshadow.com -bookshi.com -bookshoptw.com -bookshuku.com -booksky.cc -bookskys.com -booksn.com -booksos.net -booktxt.com -booktxt.net -bookuu.com -bookxnote.com -boolan.com -boolaw.com -boole-tech.com -boolv.com -boomallha.com -boonew.com -boonoo.net -boooba.com -boooming.com -boooog.net -booop.net -boopwater.com -boosj.com -boost77.com -boostsolar.com -boosyi.com -bootmb.com -bootstrapmb.com -booyu-import.com -booz88.com -bopai.com -bopaisemi.com -bopinquwei.online -bopuyun.com -boqianpvm.com -boqii.com -boqiicdn.com -boqugew.com -boracaybestdeals.com -borain.com -borcci.com -borderlessbd.com -borenhospital.com -borlonclan.com -born-tw.com -born123.com -borninsummer.com -boroyf.com -borpor.com -borscon.com -borui-group.com -borui1001.com -boruipinggu.com -boruiqin.com -boruisx.com -boruixun.com -boruiyanjiu.com -borun-sun.com -boruntong.com -boryou.com -bos.xin -boscuser.com -bosdsoft.com -boseclub.com -boseip.com -bosen-fuji.com -bosenrui.com -bosera.com -bosera.com.hk -boshgame.com -boshi.tv -boshihoujob.com -boshijob.com -boshika.com -boshixitong.com -boshungame.com -bosi12315.com -bosibest.com -bosidata.com -bosideng.com -bosideng.me -bosideng.net -bosigame.com -bosikj.com -boslon.com -bosmaa.com -bosmarter.com -bosmia.com -bosomchina.com -bosondata.net -bosong.online -bosonnlp.com -bosonshop.com -boss-young.com -bosscdn.com -bossco.cc -bosscome.com -bossgoo.com -bossgy.com -bosshr.com -bossincom.com -bosszhipin.com -bostonis.org -bosunman.com -botaogroup.com -botaoo.com -botaopac.com -botemotor.com -botnet.cc -botny.com -botocard.com -boton-tech.com -botongr.com -botorange.com -botsfy.com -botslab.com -bottlekj.com -bouffalolab.com -bountech.com -bountyteam.com -boway.com -boweifeng.com -bowerp.com -bowok.com -bowu66.com -bowuzhi.fm -box-anchor.com -box-z.com -box3.fun -boxdouyin.com -boxgu.com -boxiaole.com -boxilink.com -boxisign.com -boxuegu.com -boxueio.com -boxui.com -boxunyt.com -boxxcam.com -boxz.com -boy-toy.net -boya300.com -boyaa.com -boyaapoker.com -boyaastar.com -boyaceo.com -boyais.com -boyamedia.com -boyamicro.com -boyaobang.com -boyasoftware.com -boyaxun.com -boydwang.com -boyi.co -boyikang.com -boying360.com -boyingsj.com -boyinhotel.com -boyishu.me -boylondonchina.com -boyoucy.com -boyouquan.com -boysky.com -boyuan-pharma.com -boyuan.com -boyuan.net -boyuanchemical.com -boyuanjiaxin.com -boyue.com -boyuecasting.com -boyuemobile.com -boyuesh.com -boyunso.com -boyuntu.com -boyuonline.com -bozhong.com -bozifs.com -bp1w.com -bpaykwai.com -bpec.com -bpgjuice.net -bplslb.com -bpltm.com -bpmlt.com -bpmuseum.com -bppan.com -bpqwxsh.com -bpsemi.com -bpteach.com -bpxxfw.com -bpxxvo.com -bq04.com -bqfy.com -bqg8.cc -bqg8.la -bqgwap.com -bqgwu.net -bqgxsw.com -bqjeep212.com -bqlcev.com -bqpoint.com -bqq8.com -bqqpx.com -bqrdh.com -bqsnn.com -bqtalk.com -bqteng.com -bqu123.com -bqyhb.com -br-cn.com -br737.com -bra-cdche.com -brabus-china.com -bragood.com -brain1981.com -brainmed.com -brainqaf.com -brand-isv.com -brand24k.com -brand4x4.com -brandcn.com -brandpano.com -brandsitejp.com -brandvista.com -brasaude.com -brasilcn.com -bravognss.com -brazzaleqingdao.com -brcpower.com -bre-line56.com -bre-linex.com -breadtrip.com -breathfilm.com -breenomeet.cc -breeze-chem.com -brentron.com -brewbeerwiki.org -brewersmix.com -brick4.com -brickmachinery.net -bricktou.com -bricsgo.com -bridge-image.com -bridgee.net -bridgelawfirm.com -brighost.com -bright-gene.com -bright-trend.com -bright21cn.com -brightdairy.com -brightdecolighting.com -brightfood.com -brightliao.com -brightmeat.com -brilliance-auto.com -brilliant-optoelectronics.com -bringbuys.com -bringspring.com -brire.com -britesemi.com -brlinked.com -brlmed.com -brmnq.com -brmyx.com -broad-ocean.com -broad.com -broad.org -broadair.net -broadbio.com -broadcasthe.net -broadcom-wuxi.com -broadex-tech.com -broadon.net -broadskytech.com -broadview-auto.com -bronzesoft.com -broqiang.com -brosmed.com -brother-bsh.com -brother-cn.net -brother-movie.com -brotherchem.com -browserleaks.com -browurl.com -brpcb.com -brsiee.com -brsnzp.com -brtbeacon.com -brtbeacon.net -brtn.org -brtpawn.com -brttc.com -brtvcloud.com -brunoxu.com -brxjzp.com -brxtal.com -bryzq.com -bs-56.com -bs-dolfin.net -bs-lab.com -bs-marathon.com -bs-yc.com -bs008.com -bs2005.com -bsagit.com -bsbgjj.com -bsbkjt.com -bsbydd.com -bscabank.com -bsccdn.com -bsccdn.net -bscdns.com -bscea.org -bscedge.com -bscgslb.com -bsclink.com -bscomc.com -bscsjsn.com -bscstorage.com -bscstorage.net -bsctg.com -bscxypx.com -bsd-lifescience.com -bsd4fz.com -bsdcdsy.com -bsdexp.com -bsdfyyls.com -bsdongxin.com -bsdt1688.com -bsehk.com -bseqp.com -bserc.com -bsgcnc.com -bsgoal.com -bsgsgl.com -bsgslb.com -bsgz.com -bsh-safety.com -bsh-tech.com -bsh.com -bshare.com -bshark.com -bshdmotor.com -bshgem.com -bshmzx.com -bshsrl.com -bshu.com -bsida.com -bsidu.com -bsitcn.com -bsjhlx.com -bsjyjt.com -bskrt.com -bskuav.com -bslongyin.com -bsmatrix.com -bsmjdjzx.com -bsmy.cc -bsnljt.com -bspapp.com -bsping.com -bsquant.com -bsrczpw.com -bsrmyy.com -bsrse.com -bssfy.com -bssgnkyy.com -bssyjqrmyy.com -bst-lab.com -bstatic.com -bstatics.com -bstbattery.com -bstchemical.com -bsteel.net -bstgjg777.com -bstinfo.com -bstj.com -bstjiaoyu.com -bstjt.com -bstzcs.com -bsurl.cc -bswtan.com -bswxw.com -bsxhly.com -bsxiaoshuo.com -bsxldl.com -bsxyzsdec.com -bsybx.com -bsydns.com -bsydns.net -bsyjrb.com -bsyjt.com -bsyxx.com -bsyyjt.com -bsz666.com -bszhly.com -bszxtl.com -bszyqc.com -bt-audio.com -bt-club.com -bt6.club -bt66.org -bt66.tv -btaxwy.com -btb8.com -btbat.com -btbctex.com -btc-precisionmedical.com -btc114.com -btc38.com -btc789.com -btcbbs.com -btcbca.com -btcbtc.tech -btcc886.com -btccjt.com -btcfans.com -btcha.com -btclass.net -btcside.com -btcsos.com -btcwatch.com -btcxue.com -btd56.com -btdad.live -btdad17.xyz -btdair.com -btdog.com -btdos.com -btdy.com -btechina.com -btei6pis99.com -btgame.com -btgcjs.com -btgdt.com -btgljt.com -btgtravel.com -bth.vip -bthhotels.com -bthlt.com -bthome.com -bthuifu.com -bthxjd.com -bthyhb.com -btiii.com -btime.com -btjhcc.com -btjtfz.com -btjy.net -btjzgc.com -btl-cn.com -btltl.com -btmayi.cc -btmeiju.com -btnotes.com -btophr.com -btorange.com -btosolar.com -btp-pharm.com -btpig.com -btplay.net -btpxbf.com -btrbdf.com -btropdi.xyz -btsemi.com -btshidai.com -btspreads.com -btsteel.com -btten.com -bttiantang.cc -bttiantang.com -btttg.com -bttzy.com -btv.org -btvcd.net -btvcloud.com -btwater.com -btwmw.net -btwoa.com -btwob.net -btxintong.com -btydjxc.com -btyhkj.com -btyijiaxueyuan.com -btytgj.com -btzbjt.com -btzgamepkg.com -btzhcc.com -btzthb.com -btzyc.com -buaaer.com -bubaigei.com -bubalusplus.com -bubbb.com -bubugao.com -bubuko.com -bubuol.com -bubuying.net -bubuyouqian.com -bubuzheng.com -bubuzou.com -bucg.com -bucg6.com -buchang.com -buchaq.com -buchina.net -bucid.com -buckydrop.com -bucuo100.com -bucuoba.com -budao.com -budao24.com -budhano.com -budiankj.com -budikeji.com -buding.tv -budingmore.com -budingscan.com -budiot.com -budou.com -budui.com -buduobaobao.com -bueryx.com -bufan.com -buff8.com -buffaloex.com -buffst.com -bufpay.com -bughz.com -bugjump.net -bugku.com -bugnull.com -bugscan.net -bugscaner.com -bugu120.com -bugua.com -buguangdeng.com -bugukj.com -bugutime.com -bugxia.com -buhuangziben.com -buhuyo.com -buickcare.net -buidea.com -build-decor.com -build.microsoft.com -build9s.io -builddecor.org -buildface.com -buildhr.com -building9s.io -buildjob.net -buildnewapp.com -buildwaterexpo.com -buka365.com -buke999.com -bukesiyi8.com -bukeyi.net -bulaisi.com -bulaoge.net -bulapingc.com -bulbsquare.com -bulejie.com -bullcome.com -bullmachinery.com -bullvet.net -buluanmai.com -bululusexdoll.com -bumenkeji.com -bumiu.com -bundor.com -bundpic.com -bundsummit.org -bungba.com -bunze.com -buread.com -burgud.com -burnelltek.com -burningvocabulary.com -burongyi.com -bus365.com -bus6e.com -bus84.com -busbaoche.com -bushangban.com -bushi123.com -busilinq.com -businessconnectchina.com -businesssaga.com -businessweekchina.com -busionline.com -busituzi.com -busnc.com -bustoprint.com -bustruckexpo.com -but7.com -butair.com -butao.com -butel.com -butian.net -butiao.com -butjx.com -butongshe.com -butonly.com -butterapis.com -button-nt.com -buxia.net -buxian8.com -buxiuga.com -buxiugangban.net -buy-bar.com -buy-copi888.com -buy-copys888.com -buy0596.com -buyanshufa.com -buyaocha.com -buycoor.com -buydeem.com -buydouke.com -buyfine.net -buyhot.vip -buyi9.com -buyiju.com -buyjingxi.com -buyjk.com -buylabel.com -buyoudao.com -buysun.net -buysweet.com -buyu1314.com -buyueyuyun.com -buyun.co -buzao.net -buzhi.com -buzhibushi.com -bvfcdn.com -bvfcdn2.com -bvgv.com -bvmc.cc -bvseo.com -bw1006.com -bw30yun.com -bw40.net -bw8848.com -bwae.org -bwangel.me -bwave.cc -bwbeer.com -bwbot.org -bwchinese.com -bwcj.com -bwcjxt.com -bwda.net -bwell-tec.com -bweyi.com -bwfapiao.com -bwfhmall.com -bwgrt.com -bwhero.com -bwhgsb.com -bwie.net -bwjf.com -bwlc.net -bwmelon.com -bwoer.com -bwokai.com -bwpx.com -bwsm.org -bwsoft.net -bwtlab.com -bwton.com -bwuqy594.com -bwxsj.com -bwxxw.com -bwzhcs.com -bx0byte.com -bx169.com -bx1k.com -bx24k.com -bxbest.net -bxcc.vip -bxd365.com -bxdaka.com -bxdlkj.com -bxfish360.net -bxgcb.com -bxgdl.com -bxgdunhua.com -bxgkzy.com -bxgmmw.com -bxgshengwang.com -bxgt.com -bxgycfsb.com -bxhaibao.com -bxjob.net -bxjyxx.net -bxkejian.com -bxktv.com -bxldz.com -bxltw.com -bxmd51.com -bxnfsy.com -bxnjmj.com -bxpedia.com -bxr.im -bxrfund.com -bxshopya.com -bxshscc.xyz -bxwatch.com -bxwljt.com -bxwst.com -bxwx.cc -bxwx.io -bxwx.tv -bxxhtsw.com -bxxy.com -bxxyysc.com -bxyuer.com -bxzc123.com -bxzczx.com -bxzhiku.com -bxzwapp.com -bxzxw.com -by-health.com -by-leasing.com -by56.com -by6.app -by6sx.com -by899.com -byai.com -byair.cc -bybieyang.com -bybily.com -byboai.com -bybon.com -bybutter.com -byc168.com -byclean.net -byd.auto -byd.com -bydauto.com -bydfbj.com -bydglobal.com -bydhaiyang.com -bydit.com -bydmax.com -bydoceanauto.com -bydpcic.com -bydq.com -bydsfy.com -bydyhos.com -byefy.com -byf.com -byfen.com -byfen.net -byfunds.com -bygamesdk.com -bygpu.com -bygqlsj.xyz -byguitar.com -bygw.net -byhao.net -byhiv.com -byhlds.com -byhlds.net -byhua.com -byi.pw -byjd.com -byjgxx.com -bykjad.com -bykszb.com -bylw.com -bylwcc.com -bylwjc.com -bymygf.com -bymz.net -bynesyy.com -bynezyy.com -bynmc.com -bynonco.com -bynrnews.com -bynsyh.com -byodonline.com -bypanghu.xyz -bypbn.com -bypos.net -byqsc.net -byqzw.com -byr-navi.com -byr.cc -byr.wiki -byread.com -byrhkj.com -bys120.com -bysb.net -byshf.com -byshjg.com -byshr.com -bysocket.com -byspharm.com -bystack.com -bystatic.com -bysxfz.com -byszc.com -bytapp.com -bytcm.com -byte-dns.com -byte-dns.net -byte-edge.com -byte-edgeworker.com -byte-gslb.com -byte-test.com -byte-test.net -byte-ticket.com -byte.online -byte00.com -byte00.net -byte000.com -byte008.com -byte7bw.net -byteac.com -byteacct.com -byteacctimg.com -byteactivity.com -byteactivity11.com -byteactivity12.com -byteactivity13.com -byteactivity14.com -byteactivity15.com -byteactivity16.com -byteadverts.com -byteapi.com -byteapk.com -bytecdn.com -bytecdn.net -bytecdntp.com -bytecho.net -bytecimg.com -bytecloud.com -byted-dast.com -byted-edu.com -byted-static.com -byted-ug.com -byted.org -bytedance-boe.net -bytedance.com -bytedance.net -bytedance.org -bytedanceapi.com -bytedancehermestest.com -bytedanceoss.net -bytedancevod.com -bytedcdn.com -bytedeliver.com -bytedgames.com -bytedns.com -bytedns.net -bytedns1.com -bytedns2.com -bytedns3.com -bytedns4.com -bytedns5.com -bytedns6.com -bytedns7.com -bytednsdoc.com -bytedsocial.com -byteedu.com -byteeffecttos.com -bytefae.com -bytefast.net -bytefcdn.com -bytefcdnrd.com -bytegecko.com -bytegeckoext.com -bytegle.site -bytegle.tech -bytegoofy.com -bytegqpo.net -bytegrowth.com -bytegslb.com -bytehwm.com -byteics.com -byteics.net -byteimg.com -byteimgc.com -byteinspire.com -byteintl.net -byteisland.com -bytelb.com -bytelb.net -bytelb000.net -bytell.net -bytemaimg.com -bytemastatic.com -bytemedi.com -bytemelody.com -bytenew.com -bytenewst.com -byteoc.com -byteorg.com -byteorge.com -byteox.com -byteq5k.com -byteq8u.net -bytescm.com -bytesfield.com -bytesim.com -bytesmanager.com -bytesslb.net -bytesus.com -bytesyscdn.com -bytetcc.com -bytetech.info -bytetos.com -bytetraffic.net -bytetstatic.com -bytetstatic.net -byteug.com -bytevalk.com -bytevcloudapi.com -bytevcloudvod.com -bytevdn-boe.com -bytevdn.com -bytewars.cc -bytewebservice.com -byteww.com -bytexns.com -bytexns.net -bytexopen.com -bytexservice.com -bytezhi.com -bythealthy.com -bythewayer.com -bytianshankd.com -byts.com -bytter.com -bytzjt.com -byvast.com -byw.lol -byxrmyy.net -byxsnzg.com -byxtzn.com -byxue.com -byxx.com -byxy.com -byyapp.com -byyc.net -byydkj.net -byyfy.net -byytfy.com -byzhihuo.com -byzjbyq.com -byzkj.com -byzoro.com -byzp.com -byzsyy.com -byzt.net -byzxy.com -bz-e.com -bz01.com -bz55.com -bz889.com -bzbgr.com -bzbs.net -bzbyzk.com -bzchaxun.com -bzcjw.com -bzcm.net -bzcm88.com -bzcw8.com -bzd6688.com -bzddrive.com -bzfar.com -bzfpms.com -bzfwq.com -bzfwy.com -bzfwzs.com -bzfxb.com -bzfxw.com -bzgd.com -bzglyfjq.com -bzgwl.com -bzhou.cc -bzhslyj.com -bzjsjt.com -bzjulihg.com -bzjw.com -bzkad.com -bzko.com -bzlxzl.com -bzmfxz.com -bzmhm.com -bzname.com -bznews.org -bzonl.com -bzqmz.com -bzrb.net -bzrqfd.com -bzrtdl.com -bzsanguo.com -bzsanyuan.com -bzsb.info -bzsoso.com -bzszxyy.com -bzszyjx.com -bzszyy.com -bzszyy123.com -bzt120.com -bztdxxl.com -bzvtc.com -bzwater.com -bzwz.com -bzwzw.com -bzxinwen.com -bzxz.net -bzxzk.net -bzy.net -bzy2015.com -bzzpw.com -bzzxq.com -c-119.com -c-3.moe -c-abc.site -c-ame.com -c-banner.com -c-c.com -c-canyin.com -c-china.com -c-cpp.com -c-ctrip.com -c-discover.com -c-estbon.com -c-fehong.com -c-fol.net -c-jet.com -c-lodop.com -c-markaudio.com -c-nin.com -c-ps.net -c-rst.com -c-snd.com -c-sz.com -c-t.work -c-thme.com -c-vcc.com -c-wms.com -c-yl.com -c.admob.com -c.pki.goog -c052kzyp55.com -c0f1lk250w.com -c114.net -c133.com -c1a0.com -c1a2.com -c1a3.com -c1ass.com -c1channel.com -c1el.com -c1km1.com -c1km4.com -c1s.com -c2ax1yu599.com -c2h4.org -c360dn.com -c3acg.com -c3crm.com -c3pool.org -c3x.me -c4006.com -c4008.com -c400c.cc -c4d.com -c4d.live -c4datc.com -c4dcn.com -c4dco.com -c4dpro.com -c4dsky.com -c4hcdn.com -c4sy726by8.com -c4ys.com -c4yx.com -c50forum.com -c54sauo3y85m2g.com -c5game.com -c5iot.com -c631dlc0br.com -c6c.com -c6n708.ren -c72a775z36.com -c77c.com -c7878.com -c7c8.com -c833.com -c8uixr96iv79.com -c9018.com -c919.sbs -c969.com -c9cc.com -ca-aicc.com -ca-sme.org -ca-smefs.com -ca-tencentclb.cloud -ca-tencentclb.com -ca-tencentclb.net -ca-tencentclb.work -ca001.com -ca002.com -ca003.com -ca163.net -ca168.com -ca315.com -ca39.com -ca800.com -ca9ce6rv872ce1.com -caa86.org -caaa-spacechina.com -caaad.com -caacbook.com -caacchina.org -caacsri.com -caagei.com -caagov.com -caakee.com -caaladi.com -caanb.com -caapa.org -caasai.com -caasbuy.com -caasse.com -caayee.com -cabbagebox.com -cabbeen.com -cabc-online.com -cabee.org -cabhr.com -cabinetbuy.com -cableabc.com -cabletiegun.com -cabling-system.com -cabplink.com -cabr-fire.com -cac-citc.com -cacakp.com -cacfo.com -cacfo.net -cache4ever.com -cache666.com -cachekit.com -cachemoment.com -cachiyeung.com -cackui.com -cacpp.com -cacre.org -cacs-summit.com -cacsec.com -cacter.com -cactifans.com -cactmc.com -cad1688.com -cad2688.com -cad5.com -cad8.net -cad888.com -cada.cc -caddcc.com -cadenzayueqi.com -cadforex.com -cadict.net -cadmon.net -cadreg.com -cadrolift.com -cadzhuan.com -cadzj.com -cadzxw.com -caecc.com -caeda-cxrh.com -caeerr.com -caeete.net -caefa.org -caein.com -caeri-te.com -caes.store -caexpo.com -caexpo.org -cafachine.com -cafagame.com -cafamuseum.org -caffci.org -cagentle.com -cagetest.com -cageystone.com -cagoe.com -cahkms.org -cai-ba.com -cai110.com -cai21.xyz -cai58t.com -cai8.net -cai88.com -caiacn.com -caiair.com -caian.net -caibangzi.com -caibaojian.com -caibaopay.com -caibaotao.com -caibeike.com -caibihui.com -caibowen.net -caicao.net -caidan2.com -caidao1.com -caidao8.com -caidaocloud.com -caidian.com -caidian365.com -caidianqu.com -caiens.com -caifei.net -caifengprinting.com -caifu.com -caifu500.net -caifupai.com -caifuxingketang.com -caifuxingmingxue.com -caifuzhongwen.com -caigaowang.com -caigeqiu.vip -caigou2003.com -caigou365.com -caigoubao.cc -caigoutong.net -caiguayun.com -caiguu.com -caih.com -caihanlin.com -caihcloud.com -caihcom.com -caihdata.com -caiheht.com -caihong.com -caihong5g.com -caihong8888.com -caihongbashi.net -caihongche.com -caihongduoduo.com -caihongjia.com -caihongjianzhan.com -caihongmeng.com -caihongqi.com -caihongsheying.com -caihongto.com -caihongx.com -caihoo.com -caihuapak.com -caihuicloud.com -caihuoxia.com -caiips.com -caij100.com -caijing365.com -caijingche.com -caijingmobile.com -caijingnews.net -caijingwu.com -caijinyuan.com -caijiruanjian.com -caijj.com -caike.com -caiku.cc -caiku.com -caikuai91.com -caikuaitoutiao.com -caikuo.com -cailele.com -cailianpress.com -cailiao.com -cailiaoniu.com -cailiaoren.com -cailutong.com -caimai.cc -caimaiba.com -caimei365.com -caimitech.com -caimogu.cc -caimogu.net -caimomo.com -cainachina.com -caing.com -cainiao-inc.com -cainiao-inc.net -cainiao.com -cainiaobaoka.com -cainiaocc.com -cainiaojc.com -cainiaojiaocheng.com -cainiaoxueyuan.com -cainiaoya.com -cainiaoyizhan.com -cainongnet.com -cainuan365.com -caipiaogu.com -caipintu.com -caipopo.com -caipucaipu.com -caiqizhe.com -cairenhui.com -cairongquan.com -cairot.com -cairuijun.com -caisan.io -caishen.ai -caishenpo.com -caishuiedu.com -caisixiang.com -caistc.com -caistv.com -cait.com -cait1981.com -caitaimg2.com -caitaw.com -caitun.com -caituyou.com -caiu8.com -caiweiming.com -caiwennews.com -caiwu51.com -caiwuchina.com -caixin.com -caixinfoundation.org -caixinmedia.com -caixinonline.com -caiyicloud.com -caiyiduo.com -caiyu.com -caiyuemedical.com -caiyun.com -caiyunai.com -caiyunapp.com -caiyuncdn.com -caiyunhub.com -caiyunyi.com -caizhaowang.com -caizhihr.com -caj11.com -cake400.com -cake6.com -calatopia.com -calawei.com -calb-tech.com -calccn.com -calculusdata.com -caldigit.net -caledoniancable.com -calendar520.com -calgoncarbon-china.com -cali-light.com -callbei.com -callcenter88.com -callergen.com -callmekeji.com -callmysoft.com -callrui.com -caloinfo.com -calorietech.com -calt.com -calterah.com -calvinneo.com -camartsphotography.com -cambm.com -cambodiafang.com -cambricon.com -cambridge.org -camc.cc -camcap.us -camcard.com -camce-rc.com -camdihg.com -came-online.org -camera360.com -cameraunion.net -camhen.com -camilliar.com -camir.org -camnpr.com -camoryapps.com -campanilechina.com -campari1987.com -campbicycle.com -campgreenbox.com -campingcn.com -campiu.com -campus-app.net -campuschina.org -campushoy.com -campusphere.net -campusplus.com -camreizuxphd.com -camscanner.com -camsnetec.com -camyu.net -can-dao.com -can-gas.com -can-lead.com -can.tv -cana.space -canaan-creative.com -canaanmt.com -canadaae.net -canalmuseum.net -canasy.com -canature.com -canbaojin.com -cancda.net -cancer361.com -candiabiotech.com -candou.com -candybook.com -candyhaw.com -candylab.net -candypay.com -candystars.net -canet.com -canevent.com -canfire.net -cang-jia.net -cang.com -cangdu.org -cangfengzhe.com -canghaiip.com -canghaimachine.com -canglanghospital.com -cangmang.xyz -cangoonline.com -cangowin.com -cangpie.com -cangqiang.com -cangqiongkanshu.com -cangshui.net -cangshutun.com -cangxiaoer.com -cangxitianli.com -cangya.com -cangzhouhd.com -canhighcenter.com -canhot.net -caniculab.com -canidc.com -canjio.com -cankao100.com -cankaoshouce.com -cankaoxiaoxi.com -cankaoxx.com -canlanjy.com -canonpumps.com -canpdu.com -canpoint.net -canpopo.com -canrill.com -cansee.net -cansemitech.com -cansine.com -cantoge.com -cantonbio.com -cantonde.com -cantonfairad.com -cantontower.com -canvcan.com -canway.net -canwayit.com -canwaysoft.com -canxingmedia.com -canyin.cc -canyin.com -canyin168.com -canyin2017.com -canyin375.com -canyin88.com -canyincha.com -canyinzixun.com -canyouchina.com -canyousoftware.com -canyuanzs.com -caoanhospital.com -caobao.com -caocaobusiness.cc -caocaocustomer.cc -caocaoglobal.com -caocaojourney.cc -caocaokeji.net -caocaomarketing.cc -caocaomedia.cc -caocaoproduct.cc -caocaopromotion.cc -caocaoservice.cc -caocaosx.com -caocaotravel.cc -caocaotrip.cc -caocaotrip.com -caochai.com -caochai.net -caochen.net -caogen.com -caogenb2b.com -caogong.org -caohai.com -caohaifeng.com -caohejing.com -caohua.com -caoke.net -caoliao.net -caomall.net -caomei.wiki -caomeipai.com -caomeishuma.com -caomeixz10.xyz -caoniang.com -caonmp.com -caos-china.org -caoshiyabo.com -caotama.com -caotianmiao.com -caotu66.com -caovan.com -caoxianfc.com -caoxie.com -caoxudong.info -caoyudong.com -capablist.com -capatue.com -capellahotelsanya.com -capitalcloud.net -capitaleco-pro.com -capitalip.org -capitalonline.net -capitaltoday.com -capjoy.com -cappdr.org -capsuleshanghai.com -captain-cro.com -capturetheflag.fun -capvision.com -capwhale.com -caqzlsgs.com -car-metaverse.com -car0575.com -car2sharechina.com -car369.com -car388.com -carapk.com -carben.me -carbinpower.com -carbonbiking.com -carbononegroup.com -carbonscn.com -carbonxprogram.com -carcav.com -carcdn.com -cardaudio.com -cardbaobao.com -cardcmb.com -cardcn.com -cardinfolink.com -cardlan.com -cardlogroup.com -cardniu.com -cardniudai.com -cardqu.com -cardyang.com -care110.com -caredear.com -careduka.com -careerchina.com -careerexe.com -careerintlinc.com -careerqihang.com -careersky.org -careked.com -carelifefood.com -carertec.com -careuc.com -carezb.com -cargai.com -cargeer.com -cargo001.com -cargodiscovery.com -cargofee.com -cargosmart.com -caribgalaxy.com -carimg.com -carisen.com -carivisa.com -carking001.com -carlinkin.com -carmov.com -carmucn.com -carnegiebj.com -carnoc.com -carodpiano.com -carp56.com -carpoly.com -carrotchou.blog -carrotchou.com -carry6.com -carry6.net -carrydj.com -cars001.com -carschina.com -carsmp3.com -cart-med.com -cartech8.com -carthane.com -cartimen.com -cartoonwin.com -carutoo.com -carxinwen.com -carxoo.com -caryoud.com -carzd.com -carzone365.com -carzyuncle.com -cas.org -cas01.com -casarocinante.com -casarte.com -casbin.com -casbin.org -casboc.com -cascadepharm.com -casctcp.com -casdoor.com -casdoor.org -case-platformhealth.com -case91.com -casear.net -casece.org -casemic.com -cashbackok.com -cashbus.com -cashcatads.com -cashtoutiao.com -cashwaytech.com -casia.com -casibase.com -casic-addsino.com -casic-t.com -casic.com -casic304.com -casic3s.com -casicloud.com -casicyber.com -caslease.com -casmeit.com -casmita.com -casmn.com -casnb.com -casp.hk -caspte.com -casqy.com -casszzy.com -cast.news98.com.tw -cast.uforadio.com.tw -castbd.com -castelu.com -castiron-bathtub.com -castlepeakhospital.moe -castyum.com -casvino.com -casvisor.com -casvm.com -casystar.com -casyueda.com -cat-cn.com -cat898.com -catalike.com -catalyst-loading.com -catcat321.com -catchingdoll.com -catchyrime.com -catdggga.com -catering-shizuoka.com -catfish-cms.com -catguo.com -cathassist.org -cathayagroup.com -catia-china.com -catic-dde.com -caticgz.com -caticol.com -catjc.com -catl.com -cato-chem.com -cato-travel.com -catofes.com -cattsoft.com -cattsp.com -catugbio.com -cature.com -catus.xyz -catuscdn.xyz -catv.net -catv114.com -catweiqi.com -catyun.cc -caua1988.com -caua99.com -caup.net -caupd.com -caupdbj.com -cauvet.com -cav-ad.com -cavca.org -cawae.net -caxa.com -caxx.net -cayzlh.com -cazpw.com -cazx.net -cb-h.com -cbaleague.com -cbbn.net -cbca.net -cbcechina.com -cbcgroup.net -cbcie.com -cbcloud123.com -cbcsnote.com -cbcuri.com -cbd-china.com -cbd0512.com -cbd263.com -cbdcn.com -cbdio.com -cbdstest.download.prss.microsoft.com -cbdz13.com -cbe21.com -cbea.com -cbec365.com -cbecok.com -cbecx.com -cbeeexpo.com -cbes21.com -cbex.com -cbfau.com -cbgcloud.com -cbhb.biz -cbi360.net -cbiachina.com -cbiao.com -cbice.com -cbiec.com -cbiec.net -cbigame.com -cbinews.com -cbismb.com -cbitft.com -cbivisa.com -cbj1998.com -cbjq.com -cbjuice.com -cbjy520.com -cbjzw.org -cbmexpo.com -cbmf.org -cbminfo.com -cbmsci.com -cbmwz.net -cbn.me -cbndata.com -cbndata.org -cbnri.org -cbnweek.com -cboad.com -cbquan.com -cbsbearing.com -cbsnewshd-lh.akamaihd.net -cbsrc.com -cbtgc.com -cbtimer.com -cburi.com -cbvac.com -cbvvt.com -cbvx8.com -cbxs.net -cby.me -cbzr.com -cc-airshow.com -cc-honor.com -cc-image.com -cc-pharming.com -cc-q.com -cc-uavia.com -cc.co -cc0808.com -cc11bh.com -cc1588.com -cc55k.com -cc707.com -cc7m.com -cc8.cc -cc86.com -cc8z.com -cca135.com -ccabchina.com -ccai.cc -ccall.cc -ccamc.co -ccaon.com -ccapbook.com -ccapedu.com -ccartd.com -ccarting.com -ccasn.com -ccasy.com -ccatcloud.com -ccatnet.com -ccawz.com -ccb.com -ccbcos.com -ccbec-shenzhen.com -ccbecexpo.com -ccbflift.com -ccbft.com -ccbfund.com -ccbfutures.com -ccbhome.net -ccbiam.com -ccbintl.com.hk -ccbleasing.com -ccbnd.com -ccbookfair.com -ccbpcn.com -ccbpension.com -ccbride.com -ccbseoul.com -ccbxt.com -ccc-ch.com -ccc-chn.com -cccamtop.com -cccbs.net -cccc-capital.com -cccc-sdc.com -cccc-sjer.com -cccc58.com -cccc8cccccc.cc -cccclc-gd.com -cccclc.com -ccccoe.cc -ccccoe.com -ccccsg.com -cccdun.com -cccdzxw.com -cccf-cloud.com -cccitu.com -cccity.cc -cccking.com -ccckq.com -cccm-em120.com -cccmat.com -cccmii.com -cccmtf.com -cccnec.com -cccovvv.com -cccpan.com -cccppp.com -cccrx.org -cccsql.com -ccctspm.org -cccwaf.com -cccwww.com -cccyun.cc -ccd86.com -ccdma.org -ccdol.com -cce-china.com -ccea.pro -cceato.com -ccebbs.com -ccedia.com -ccedisp.com -ccedpw.com -ccedtu.com -ccee.com -cceea.net -cceep.com -ccement.com -ccen.net -ccepc.com -cces2006.org -ccesda.com -ccets.com -ccfddl.com -ccfeb.com -ccflow.org -ccfourth.com -ccfta.com -ccgaa.com -ccgdc.com -ccgff.com -ccgfie.com -ccggd.com -ccgim.com -ccgjbus.com -ccgogogo.com -ccgoyi.com -ccgs120.net -ccgslb.com -ccgslb.net -ccgxk.com -cchaosheng.com -cchc-hyd.com -cchccc.com -cchcch.com -cchengr.com -cchezhan.com -cchfound.org -cchlgame.com -cchorse.com -cchorse.net -cchoubo.com -cchpu.com -cci-intervention.com -ccia-cleaning.org -ccia.xin -cciaiot.org -cciatv.com -ccic-8.com -ccic-auto.com -ccic-lab.com -ccic-set.com -ccic.com -ccic2.com -cciccloud.com -ccice.com -ccicgd.com -ccicgx.com -ccicsd.com -ccidcom.com -ccidconsulting.com -cciddata.com -cciddesign.com -ccidedu.com -ccidexpo.com -ccidgroup.com -ccidnet.com -ccidreport.com -ccidsmart.com -ccidthinktank.com -ccidwise.com -cciea.com -ccieh3c.com -ccifc.org -ccig.com -ccigchina.com -ccinchina.com -ccip.ren -ccipp.org -ccit360.com -ccita.net -ccitimes.com -cciup.com -ccj88.com -ccjec.com -ccjhdljs.com -ccjkwjjedu.com -ccjoo.com -ccjoy.com -ccjoyland.com -ccjs120.com -ccjt.com -ccjt.net -ccjxcn.com -ccjytv.com -ccjzzj.com -cckefu1.com -cckefu3.com -cckggroup.com -ccknbc.cc -cckyedu.com -cclawer.com -cclawnet.com -cclbook.com -cclcn.com -ccle5.com -ccler.com -cclexpo.com -cclgpx.com -cclimg.com -cclinux.org -cclndx.com -cclolcc.com -cclqme.xyz -ccluster.net -cclyun.com -ccm-1.com -ccm-hardware.com -ccm99.com -ccmama.com -ccmcgc.com -ccmdl.adobe.com -ccmdls.adobe.com -ccme.cc -ccmfcm.com -ccmicroera.com -ccmn.net -ccmodel.com -ccmw.net -ccn360.com -ccnbdh.com -ccnee.com -ccnew.com -ccngx.com -ccnovel.com -ccnovo.com -ccnpic.com -ccnt.com -ccoalnews.com -ccoaonline.com -ccoco.vip -ccode.cc -ccoi.ren -cconn.cc -ccoop.net -ccoopg.com -ccops.net -ccopyright.com -ccostm.com -ccotcm.com -ccoymc.com -ccp3060.com -ccpaie.com -ccpc.io -ccpc360.com -ccpgssd.com -ccpit-academy.org -ccpit-sichuan.org -ccpit-sx.org -ccpit-tga.org -ccpit.org -ccpitbj.org -ccpitbm.org -ccpitbuild.org -ccpitcq.org -ccpitecc.com -ccpitfujian.org -ccpitgs.com -ccpitgx.org -ccpithebei.com -ccpithn.org -ccpitjinan.org -ccpitjs.org -ccpitlight.org -ccpitln.org -ccpitnb.org -ccpitsd.com -ccpittex.com -ccpittj.org -ccpitxiamen.org -ccpitxian.org -ccplay.cc -ccplay.com -ccpnt.org -ccpo.cc -ccpod.com -ccprec.com -ccproxy.com -ccps56.com -ccqctg.com -ccqf.com -ccqg.com -ccqtgb.com -ccqtm.com -ccqyj.com -ccrate.cc -ccrc.com -ccrfmed.com -ccrgt.com -ccrici.com -ccrjk.com -ccrjkf.com -ccrjw.com -ccsacacasfdghh.com -ccschangsha.com -ccscrbyy.com -ccsedqrmyy.com -ccsfuchan.com -ccskqyy.com -ccsngqyy.com -ccsnpower.com -ccsp365.com -ccssmm.com -ccst.cc -ccsuu.com -ccswuhan.com -ccsx.net -ccsxlyy.com -cct-g.com -cct-lab.com -cct-solar.com -cct365.net -cctalent.com -cctalk.com -cctalk.net -cctash.com -cctaw.com -cctbn.com -cctc.cc -cctcce.com -cctcct.com -cctcdn.com -cctek.com -cctheze.com -cctime.com -cction.com -cctlife.com -cctmt.com -cctocloud.com -cctpgm.com -cctpress.com -cctry.com -cctsz.com -cctu.org -cctv-19.com -cctv-caijing.com -cctv-peiyin.com -cctv-star.com -cctv.com -cctv0002.com -cctv13cctv13.com -cctv18.com -cctv4g.com -cctv5bo.com -cctv5zhibo.com -cctvcdn.net -cctvcj.com -cctvctpc.com -cctvdyt.com -cctvfendou.com -cctvfinance.com -cctvjingji.com -cctvmall.com -cctvpic.com -cctvplus.com -cctvsdyxl.com -cctvse.net -cctvweishi.com -cctvxftx365.com -cctw.cc -cctx123.com -cctypx.com -cctzz.net -ccughc.net -ccutchi.com -ccv160.com -ccv168.com -ccview.net -ccvui.com -ccwcw.com -ccwcyw.com -ccwifi.cc -ccwl.net -ccwonline.com -ccwonline.net -ccwork.com -ccwow.cc -ccwqtv.com -ccwto.net -ccxcn.com -ccxcredit.com -ccxhfk.com -ccxjd.com -ccybeta.cc -ccydkj.com -ccygmy.com -ccyia.com -ccynice.com -ccyts.com -ccyunmai.com -ccyyxx.com -cczjyy.com -cczk.com -cczkdmkj.com -cczq.com -cczq.net -cczxyjhyy.com -cd-auto.net -cd-cxh.com -cd-estt.com -cd-hk.net -cd-hss.com -cd-kc.com -cd-motorshow.com -cd-ox.com -cd-pa.com -cd-psychologist.com -cd-rail.com -cd-sd.com -cd-tencentclb.cloud -cd-tencentclb.com -cd-tencentclb.net -cd-tencentclb.work -cd-wx.com -cd-wx.net -cd-zc.com -cd120.com -cd12371.com -cd1958.com -cd20.net -cd2120.com -cd23f.com -cd3120.com -cd37wan.com -cd3hospital.com -cd42195.com -cd58.com -cd6.com -cd7yy.com -cdabon.com -cdacz.com -cdadata.com -cdadsj.com -cdairport.com -cdajcx.com -cdajzp.com -cdamdi.com -cdanet.org -cdangel.com -cdapex.com -cdaten.com -cdb-leasing.com -cdbaidu.com -cdbdsec.com -cdbfb.net -cdbokon.com -cdborz.com -cdbsdyk.com -cdbsfund.com -cdcbj.com -cdcbn.com -cdcc.ink -cdccic.com -cdccpit.org -cdcea.org -cdcgames.net -cdchjyy.com -cdchuandong.com -cdcitypark.com -cdcoslm.com -cdcxhl.com -cdcyts.com -cddayun.com -cddc56.com -cddengji.com -cddgg.com -cddgg.net -cddjip.com -cddlhx.com -cddlkj.net -cddq120.com -cddscj.com -cddsgk.com -cddtz.com -cde-os.com -cdeaa.com -cdedu.com -cdeledu.com -cdenvironment.com -cdfanmu.com -cdfcjg.com -cdfcn.com -cdfeimi.com -cdfer.com -cdfgsanya.com -cdfhnms.com -cdfinger.com -cdfmembers.com -cdfortis.com -cdfsunrise.com -cdfuwuqi.com -cdgas.com -cdgdad.com -cdgdp.com -cdggq.com -cdggzy.com -cdgjbus.com -cdgmgd.com -cdgoufang.com -cdgowell.com -cdgql.com -cdgrf.com -cdgtw.net -cdgxfz.com -cdgxsyzx.com -cdgxxy.net -cdh3c.com -cdhaiguang.com -cdhfund.com -cdhglsc.com -cdhgr.com -cdhjsw.com -cdhke.com -cdhkxy.com -cdhld.com -cdhr.net -cdhsgb.com -cdhtgroup.com -cdhtgs.com -cdhtrq.com -cdhuaying.com -cdhxdq.com -cdii-leasing.com -cdirs.com -cditv.tv -cdjcow.com -cdjfwy.com -cdjhqczl.com -cdjiaoan.com -cdjingfeng.com -cdjituan.com -cdjnrc.com -cdjsjlxh.com -cdjsjx.com -cdjtzhtc.com -cdjxjy.com -cdjzso.com -cdjzw.com -cdjzzg.com -cdkeynogap.com -cdkf.com -cdkjbg.com -cdkjw.org -cdks.run -cdkyfc.com -cdlaobing.com -cdlbmy.com -cdlbyl.com -cdlchd.com -cdlgp.com -cdliangwang.com -cdlingsou.com -cdlinux.net -cdlsym.com -cdlvbao.com -cdlxqn.com -cdmaria.com -cdmcaac.com -cdmddyf.com -cdmfund.org -cdmgiml.com -cdmhwh.com -cdmjwater.com -cdms-china.com -cdn-build.com -cdn-build.net -cdn-cba.com -cdn-cdn.net -cdn-dodo.com -cdn-gw-dv.net -cdn-hotels.com -cdn-speed.com -cdn-static.farfetch-contents.com -cdn-uc.cc -cdn-v.com -cdn-videos.akamaized.net -cdn.ampproject.org -cdn.angruo.com -cdn.fun -cdn.globalsigncdn.com.cdn.cloudflare.net -cdn.hkdtmb.com -cdn.ist -cdn.jetbrains.com -cdn.lilyemby.com -cdn.marketplaceimages.windowsphone.com -cdn.samsung.com -cdn.shanghai.nyu.edu -cdn.show -cdn.vin -cdn.zampdsp.com -cdn08.com -cdn1.vip -cdn1008.com -cdn1218.com -cdn16.com -cdn20.com -cdn20.info -cdn20.org -cdn2000.com -cdn2020.com -cdn30.com -cdn30.info -cdn30.org -cdn3344.com -cdn35.com -cdn365gnlc.vip -cdn365lc.vip -cdn40.com -cdn50.com -cdn56.com -cdn60.com -cdn86.com -cdn86.net -cdn90.com -cdn90.net -cdn90.org -cdn99.com -cdnb.net -cdnbbb.net -cdnbuild.com -cdnbuild.net -cdnbye.com -cdnc.org -cdncache.com -cdncache.net -cdncdncdn.com -cdncenter.com -cdncg.com -cdnchatgpt.com -cdnchushou.com -cdncl.net -cdnclouds.net -cdnczydwl.com -cdnddd.com -cdnddd.net -cdndm.com -cdndm5.com -cdndm5.net -cdndns.vip -cdndns1.com -cdndns2.com -cdndns2.net -cdndo.com -cdndoctor.com -cdndu.com -cdnet110.com -cdnetdns.net -cdnetgdns.com -cdnetworks.net -cdnexus.com -cdnf.cc -cdnff.com -cdngia.com -cdngot.com -cdngslb.com -cdngslb8.com -cdngtm.com -cdnhhh.net -cdnhub.net -cdnhwc1.com -cdnhwc10.com -cdnhwc2.com -cdnhwc3.com -cdnhwc4.com -cdnhwc5.com -cdnhwc6.com -cdnhwc7.com -cdnhwc8.com -cdnhwc9.com -cdnhwcajk17.com -cdnhwcatq08.com -cdnhwcbni108.com -cdnhwcbqs106.com -cdnhwcbzj102.com -cdnhwcchh18.com -cdnhwccmz121.com -cdnhwcead111.com -cdnhwcedi10.com -cdnhwcedt124.com -cdnhwcggk22.com -cdnhwcgnc118.com -cdnhwcgqa21.com -cdnhwchcg02.com -cdnhwcibv122.com -cdnhwcick110.com -cdnhwcjlg112.com -cdnhwcjog12.com -cdnhwcjsb120.com -cdnhwckfz116.com -cdnhwckon103.com -cdnhwcljk104.com -cdnhwcllh11.com -cdnhwclxu105.com -cdnhwclxw05.com -cdnhwcoem01.com -cdnhwcohm19.com -cdnhwcoph123.com -cdnhwcprh113.com -cdnhwcpsd13.com -cdnhwcqgw115.com -cdnhwcqir15.com -cdnhwcqve117.com -cdnhwcqwg14.com -cdnhwctnm107.com -cdnhwctxz24.com -cdnhwcuim119.com -cdnhwcupf06.com -cdnhwcurq03.com -cdnhwcvix16.com -cdnhwcxcy07.com -cdnhwczba04.com -cdnhwczjt20.com -cdnhwczks109.com -cdnhwczmn114.com -cdnhwczth23.com -cdnhwcztu09.com -cdnhwczxh101.com -cdnidc.net -cdnjs8888.com -cdnjson.com -cdnjtzy.com -cdnkxy.com -cdnle.com -cdnle.net -cdnlinkcloud.com -cdnlinking.com -cdnmama.com -cdnmg.com -cdnok.com -cdnoutcheck.com -cdnpe.com -cdnqttdispatcher01.com -cdnsvc.com -cdntip.com -cdntipbak.com -cdntips.com -cdntips.net -cdntxt.com -cdnudns.com -cdnunion.com -cdnvp.com -cdnvpn.net -cdnvue.com -cdnwaf.net -cdnyoyun.com -cdnyt69.com -cdnyyds999.com -cdoers.com -cdpgroupltd.com -cdqcnt.com -cdqcp.com -cdqcw.net -cdqcxy.com -cdqczx.com -cdqmw.net -cdqph.com -cdqsng.com -cdqss.com -cdqszz.com -cdqz.net -cdqzcz.com -cdrbs.net -cdrcb.com -cdren.com -cdren.net -cdrich.com -cdrjob.com -cdronghai.com -cdrqxh.com -cdrsigc.com -cdrtvu.com -cdruzhu.com -cds-seal.com -cdsb.com -cdsb.mobi -cdscdscdn.com -cdsenfa.com -cdsgsz.com -cdshangceng.com -cdshishi.net -cdshx.com -cdsixun.com -cdsjjy.com -cdsjtech.com -cdskdxyy.com -cdsledu.net -cdslsxh.com -cdslsxh.org -cdsme.com -cdsns.com -cdsnzx.com -cdspace.net -cdsslz.net -cdsuns.com -cdswjs.com -cdswx.net -cdsxdd.com -cdsxlc.com -cdt-ec.com -cdt-md.com -cdt-re.com -cdtianda.com -cdtkdw.com -cdtlev.com -cdtlxx.net -cdtnrq.com -cdtszn.net -cdtyxx999.com -cdtz.net -cduncname.com -cdvcloud.com -cdvisor.com -cdwulian.com -cdxdyy.com -cdxrdz.com -cdxsxbx.com -cdxw.net -cdxwcx.com -cdxwxy.com -cdxydb.com -cdydlx.com -cdyee.com -cdyestar.com -cdyfy.com -cdygdq.com -cdyj56.com -cdylzx.net -cdynt.com -cdyou.net -cdyrjygs.com -cdysxx.com -cdysxy.com -cdyushun.com -cdyywz.com -cdyzhotel.com -cdzdgw.com -cdzgh.com -cdzgzs.com -cdzhsj.com -cdzhuoyu.com -cdzimo.com -cdzixun.net -cdzjryb.com -cdzk.com -cdzk.net -cdzk.org -cdzls.net -cdzongtian.com -cdzp8.com -cdzrjdgc.com -cdzs.org -cdzuche.com -cdzvan.com -cdzxy.com -cdzzhn.com -ce-air.com -ce04.com -ce2293.com -ceacq.com -ceair.com -ceairdutyfree.com -ceairgroup.com -ceaj.org -ceamg.com -ceawgez.com -ceba.tech -cebbank.com -cebcn.com -cebike.com -ceblease.com -cebpubservice.com -cebu.vip -cecb2b.com -cecbh.com -cecc-cx.com -ceccen.com -cecdc.com -cece-mall.com -cece.com -cece.la -cecesat.com -cecewu.com -cecgw.com -cecgx.com -cechoice.com -cecisp.com -cecloud.com -cecloudcs.com -cecmath.com -cecom.cc -ceconline.com -ceconlinebbs.com -cecport.cc -cecport.com -cecxtal.com -ceda-fluid.com -cedachina.org -cedarhd.com -cediy.com -cedock.com -ceeger.com -ceegpower.com -ceeia.com -ceeji.net -ceepower.com -ceepsp.com -ceeunion.com -cef114.com -ceggd.com -cehiy.com -cehome.com -cehuan.com -cehuashen.com -cehui8.com -cei1958.com -ceiaec.org -ceibs.edu -ceibsonline.com -ceic.com -ceice.org -ceicloud.com -ceicsz.net -ceiea.com -ceigd.com -ceinettgt.com -ceitcl.com -cekeis.com -cekid.com -celebpalace.com -celebritywallpapershq.com -celgenpharm.com -celhr.com -celiang.net -celinlawyers.com -celiss.com -cell-gene.com -cell-origin.com -cellcook.com -cellixsoft.com -cellocation.com -cellprobio.com -cellprotek.com -cells-net.com -cells-net.net -cellwise-semi.com -celucasn.com -celwk.com -cemat-asia.com -cematsh.com -cement365.com -cementren.com -cemho.com -cemni.com -cemodule.com -cemsurveys.com -cemsurveys.net -cemyun.com -cen-li.com -cenano-china.com -cenbel.com -cenbest.com -cenboomh.com -cencimeter.com -cencs.com -cendes-arch.com -cengceng.chat -cengcloud.net -ceniiat.com -cenjiasu.com -cenkersz.com -cenn.com -cennjt.com -cenray-ic.com -censh.com -centainfo.com -centaland.com -centanet.com -centauriglobal.com -centbrowser.net -centec.com -cententcymbals.com -centerm.com -centit.com -centong.com -centos.bz -centralchina.com -centralsolomon.com -centrechina.com -centricsoftwarechina.com -centrincloud.com -centrixlink.com -centrmus.com -centroidtec.com -centrostuditaliani.com -century-cn.com -century21cn.com -centurycreation.com -centuryenglish.com -centurystar.net -centurytrip.com -cenuan.com -cenvan.net -cenvandns.com -cenwan.com -cenwaymaterials.com -cenwor.com -cenwoy.com -cenxilm.com -cenxinews.com -cenya.com -ceobiao.com -ceoeo.com -ceoim.com -ceolaws.net -ceolearn.com -ceook.com -ceotx.com -ceowww.com -ceoxq.com -cepark.com -cepea.com -cepeta.com -cepin.com -ceping.com -ceping365.com -cepmh.com -ceppea.net -ceppedu.com -ceprei.com -ceprei.org -cer.net -ceracdn.net -ceradir.com -cerambath.org -ceramicschina.com -ceramsoc.com -cercg.com -cere.cc -cerestools.com -cernet.com -cernet.net -cernet2.net -cersign.com -cersp.com -ces-transaction.com -cese2.com -cesfn.com -cesfutures.com -ceshanmi.com -ceshi.com -ceshi112.com -ceshigo.com -ceshigu.com -ceshiren.com -cesinet.com -cesipc.com -cesko-dl.com -cespc.com -cesu.net -cetc33.com -cetc52.com -cetc55.com -cetccloud.com -cetceg.com -cetcio.com -cetcmotor.com -cetcssi.com -cetgps.com -cethik.com -cetkmh.com -cetzig.com -ceultimate.com -ceve-market.org -cevsn.com -cewud.com -ceydz.com -ceyice.net -ceyige.com -cezhu.net -cf-china.info -cf-ns.com -cf-ns.net -cf-ns.site -cf-ns.tech -cf115.com -cf69.com -cfachina.org -cfanlost.com -cfbond.com -cfc365.com -cfca-c.org -cfccd.com -cfcf1958.com -cfchem.com -cfchi.com -cfchint.com -cfcpn.com -cfd-china.com -cfd163.com -cfdp.org -cfdwater.com -cfecq.com -cfedu.net -cfei.net -cfej.net -cfeks.com -cffote.com -cfgbj.com -cfgfr.com -cfgjwl.com -cfgpu.com -cfgyp.com -cfhfz.com -cfhi.com -cfhpc.org -cfhuodong.cc -cfhuodong.com -cfido.com -cfiec.net -cfimg.com -cfishsoft.com -cfjbqc.com -cfjqr.com -cfjzyxh.com -cfkjgx.com -cflab.net -cfldcn.com -cflm.com -cflpla.com -cfluid.com -cfm119.com -cfmcc.com -cfmeutencent.com -cfmmc.com -cfmna-tencent.com -cfmogu.com -cfmoto.com -cfmseatencent.com -cfnotes.com -cfogc.com -cfogc.net -cfrlr.com -cfsbcn.com -cfscar.com -cfsggjt.com -cfsino.com -cfss.cc -cfsuper.com -cftcredit.com -cftea.com -cftecgroup.com -cftest7.com -cftest8.com -cftsupport.com -cftzqinzhou.com -cfucn.com -cfunctions.com -cfund108.com -cfuture.shop -cfvvv.com -cfxydefsyy.com -cfxyfsyy.com -cfxyjy.com -cfyedu.com -cfyy.cc -cfyygf.com -cfyzs.com -cfzpw.com -cfzq.com -cfztq.com -cg-ku.com -cg-orz.com -cg-schools.com -cg009.com -cg100iii.com -cg1993.com -cg3da.com -cg98.com -cg99.com -cgacar.com -cgadmob.com -cgahz.com -cgames.com -cgangs.com -cgboo.com -cgbtek.com -cgcable.com -cgcss.com -cgdbia.com -cgdeuvip.com -cgdg.com -cgdown.com -cgebio.com -cgebook.com -cgeinc.com -cgejournal.com -cger.com -cgguy.com -cggygs.com -cghhospital.org -cghospital.com -cgiia.com -cgiumuo.xyz -cgjoy.com -cgjoy.net -cgke.com -cgkjvip.com -cgksw.com -cgktudr.xyz -cglw.com -cglzw.net -cgmama.com -cgmantou.com -cgmao.com -cgmcc.net -cgmodel.com -cgmol.com -cgmxw.com -cgnei.com -cgnjy.com -cgnmc.com -cgnne.com -cgntv-glive.ofsdelivery.net -cgoec-tencentclb.cloud -cgoec-tencentclb.com -cgoec-tencentclb.net -cgoec-tencentclb.work -cgonet.com -cgowater.com -cgown.com -cgpbatech.com -cgplayer.com -cgplusplus.com -cgreentown.com -cgris.net -cgrpark.com -cgrzzl.com -cgsec.com -cgsfusion.com -cgsoft.net -cgtblog.com -cgtn.com -cgtsg.com -cgtsj.com -cgtsj.org -cgtyhk.com -cgtz.com -cguardian.com -cgufo.com -cguiw.com -cgutech.com -cgvoo.com -cgwang.com -cgwenjian.com -cgwic.com -cgws.com -cgxcig.net -cgxdm.com -cgxia.com -cgxlzdm.com -cgxm.net -cgylke.com -cgylw.com -cgyou.com -cgyouxi.com -cgyu.com -cgzair.com -cgzj.com -cgzy.net -cgzyw.com -ch-auto.com -ch-chip.com -ch-gk.com -ch-guerrant.com -ch-tools.com -ch-water.com -ch.com -ch028.net -ch12333.com -ch6k5zd77f.com -ch9888.com -ch999.com -ch999img.com -cha-china.org -cha-tm.com -cha127.com -cha138.com -chaba123.com -chabansheng.com -chabeichong.com -chacd.com -chacewang.com -chacha.com -chachaba.com -chachawenshu.com -chache-cn.com -chache808.com -chacheku.com -chachengji.com -chachexian.com -chacihai.com -chacuo.net -chadianhua.net -chadoc.com -chaej.com -chafanhou.com -chafei.net -chagee.com -chaguan.center -chahua.org -chahui.com -chahuo.com -chaic.com -chaichefang.com -chaiderl.com -chaiding.com -chaidongpower.com -chaihezi.com -chaijing.com -chaimage.com -chain.cc -chain56.com -chaincar.com -chaincatcher.com -chaindd.com -chainedbox.com -chainhd.com -chainknow.com -chainnode.com -chainpharm.com -chainsql.net -chaint.net -chainwinlaw.com -chaiqian88.com -chaishiguan.com -chaitin.com -chaizz.com -chajiage.com -chajian5.com -chajiandaquan.com -chajianxw.com -chajiayuan.com -chajie.com -chajn.org -chakahao.com -chakahui.com -chakonghao.com -chakuaizhao.com -chalaili.com -chalangautozone.com -chalaoshi.de -chalcochem.com -chalieco.com -challenge-21c.com -challenge-design.com -chalwin.com -chamcfae.com -chamei.com -chameiwang.com -chamfond.com -chamiji.com -champconsult.com -champion-ic.com -championasia.hk -championmkt.com -championunion.com -champsely.com -chan.ink -chancel.ltd -chandao.net -chandashi.com -chandi.biz -chandixiu.com -chanfine.com -chang-xiang.com -changan.biz -changan120.net -changancap.com -changanfunds.com -changanren.com -changantaihe.com -changba-ktv.com -changba.com -changbaapi.com -changbaapp.com -changbaimg.com -changbalive.com -changbiyuan.com -changchun-ccpit.com -changchunmarathon.com -changchunwater.com -changda.life -changdaore.com -changdunovel.com -changergroup.com -changfa.com -changfaproperties.com -changfaqifu.com -changfengpacking.com -changfengsteeltube.com -changfon.com -changhaigfrp.com -changhe-suzuki.com -changhe.com -changhe.tech -changheauto.com -changhedayun.com -changheng88.com -changhong-network.com -changhong.com -changhongit.com -changhongnetwork.net -changhu12333.com -changhualaw.com -changhuist.com -changingie.com -changingtek.com -changjiangdata.com -changjiangjin.com -changjiangtimes.com -changjianxy.com -changjingtong.com -changjiulogistics.com -changjiuqiche.com -changker.com -changkezhe.com -changlipeixun.com -changliuabc.com -changloong.com -changloong.net -changmengyun.com -changning.net -changpingquzhongxiyijieheyiyuan.com -changpu3d.com -changqingshu.net -changqu.cc -changshabdc.com -changshang.com -changshaship.com -changshatong.com -changshazrkj.com -changshengmobi.com -changshengshangye.com -changshengyiliao.com -changshiban.com -changshizu.com -changshouchemgroup.com -changshu-marathon.com -changshunhuojia.com -changtong2800.com -changtounet.com -changtubus.com -changuanjia.com -changwang.com -changwankeji.com -changx.com -changxianchem.com -changxiao.co -changxiaow.com -changxie.com -changxingyun.com -changxuew.com -changyan.com -changyegroup.com -changyifan.com -changyin-lab.com -changying.com -changyizu.com -changyonggame.com -changyou.com -changyoyo.com -changyuangroup.com -changyudz.com -changyushengwu.com -changzhinews.com -chanjet.com -chanjue.net -chanluntan.com -chanmama.com -channelbeyond.com -channellive.leshantv.net -channingsun.bid -chanpay.com -chanpin100.com -chanpindashi.com -chansemt.com -chanshi.vip -chanway.net -chanwind.com -chanxuan.com -chanxuehezuo.com -chanzhi.org -chao-cn.com -chao-fan.com -chaoan.chaoantv.com -chaoart.com -chaobohui.com -chaodamould.com -chaodavalves.com -chaodu123.com -chaofan.com -chaofanlin.com -chaofanshuma.com -chaofantian.com -chaogejiaoyu.com -chaogu1688.com -chaohuatech.com -chaohuishou.com -chaoji.com -chaojibiaodan.com -chaojibiaoge.com -chaojibuy.com -chaojicdn.com -chaojifan.com -chaojihetong.com -chaojiping.homes -chaojituzi.net -chaojiying.com -chaojiyun.com -chaokaixin.net -chaolady.com -chaolean.com -chaoliangkj.com -chaoliuguan.com -chaolongbus.com -chaoluoluo.com -chaonanclub.com -chaonanrc.com -chaonei.com -chaopaiyizu.com -chaopx.com -chaoren.com -chaoschina.com -chaosec.com -chaoshanren.com -chaoshen.cc -chaoshengboliuliangji.com -chaoshengxin.com -chaoshi168.com -chaosqh.com -chaosw.com -chaov.com -chaowanjoy.com -chaoweb.com -chaowei-machine.com -chaoxibiao.net -chaoxin.com -chaoxing.cc -chaoxing.com -chaoxingv.com -chaoyang.com -chaoyi996.com -chaoyinjiu.com -chaoyuesd.com -chaozhenht.com -chaozhoudaily.com -chaozhouyin.com -chaozuo.com -chapangzhan.com -chapaofan.com -chaping.tv -chappell1811.com -char123.com -charcaius.com -charge-mobile.com -chargedot.com -chargerlab.com -chargerlink.com -chariotpharm.com -charlinserver.online -charllena.com -charlsdata.com -charmdeer.com -charmingglobe.com -charmkeytextile.com -charmsunfund.com -chartboost-china.com -chaseyanyu.net -chashebao.com -chashudi.com -chat778.com -chatairc.com -chatanywhere.tech -chatartpro.com -chateaustarriver.com -chatglm.site -chatgptboke.com -chatgpter.com -chatm.com -chatmindai.net -chatnos.com -chatqp.net -chatvgx.com -chatyygpt.com -chawo.com -chaxiaohao.com -chaxiaow.com -chaxinyu.net -chaxun.biz -chaxunchina.com -chaxunfapiao.com -chaxunjiao.com -chayanfamily.com -chayangge.com -chaye.com -chayeo.com -chayiba.com -chayu.com -chayueshebao.com -chayuqing.com -chaz.fun -chazhengla.com -chazidian.com -chaziyu.com -chazuo.com -chazuo.net -chazuowang.com -chbcnet.com -chbdunt.com -chblt.com -chbml.com -chbpp.com -chce-expo.com -chcedo.com -chceg.com -chcmu.com -chcnav.com -chcoin.com -chcompass.com -chcontrol.com -chcpay.com -chda.net -chdajob.com -chdelphin.com -chdies.com -chdmc.com -chdqyy.com -chdtp.com -chdyou.net -che-shijie.com -che-youhui.com -che.com -che0.com -che101.com -che127.com -che168.com -che168.net -che2.com -che300.com -che314.com -che6che5.com -che777.com -cheaa.com -cheaa.org -cheaca.org -cheapdoma.com -cheaphost.me -cheapreplicawatch.com -cheapviagraws.com -cheapyou.com -cheari.com -cheasa.org -cheatmaker.org -chebaba.com -chebada.com -chebaipishu.com -chebianjie.com -chebianjie.net -chebiao.cc -chebiao.net -chebrake.com -checar.mobi -chechakj.com -chechaoxue.com -checheng.com -chechong.com -chechuan.com -checi.org -check.cc -checkaigc.com -checkip.pw -checkmath.net -checkoo.com -checkpass.net -checkzeit.com -checkzoo.com -checom.net -chediandian.com -chedongxi.com -cheduo.com -cheegu.com -cheerfun.dev -cheerjoy.com -cheersee.com -cheersofa.com -cheerspublishing.com -cheersson.com -cheertech.ltd -cheetahfun.com -cheetahgames.com -cheetahgo.net -cheetahmobile.com -chefafa.com -chefugao.com -cheguo.com -chegva.com -chehang168.com -chehejia.com -chehui.com -chejianding.com -chejingjie.com -chekuaipai.com -chelajanitorial.com -chelangauto.com -chelifang.com -chelink.com -chellex.com -chelun.com -chem-stone.com -chem17.com -chem234.com -chem31.com -chem36.com -chem365.net -chem366.com -chem960.com -chem99.com -chemalink.net -chemao.com -chembeango.com -chembible.com -chembk.com -chemcd.com -chemchina.com -chemcp.com -chemcyber.com -chemdodgen.com -chemdrug.com -chememall.com -chemfish.com -chemgogo.com -chemi-tech.com -chemicalbook.com -chemicalreagent.com -chemingpian.com -chemm.com -chemmade.com -chemmerce.com -chemmuseum.com -chemnet.com -chemourscg.com -chempacific-china.com -chemptc.com -chemrc.com -chemsrc.com -chemtour.com -chemwells.com -chemwith.com -chemyouth.com -chemyq.com -chen-design.com -chen.fun -chenag.com -chenall.net -chenapp.com -chenbo.info -chenduaomei.com -chener.net -chenfan.info -cheng-sen.com -cheng.xin -chengaizixun.com -chengan-web.com -chengan.tech -chengbanggroup.com -chengcai.net -chengchuanren.com -chengde-jz.com -chengdebank.com -chengdegj.com -chengdegroup.com -chengdewater.com -chengdu-expat.com -chengduair.cc -chengduair.com -chengdubao.com -chengdufanyi.com -chengdun.com -chengdurail.com -chengduzhishang.com -chengduzhouming.com -chengegeya.com -chenger0711.com -chengezhao.com -chengfankj.com -chengfeilong.com -chengfengboli.com -chengfengerlai.com -chenggnet.com -chenggongguiji.com -chenghai.cc -chenghct.com -chenghen.com -chenghua888.com -chenghuijituan.com -chenghuiqian.xyz -chengji-inc.com -chengjianjituan.com -chengjing.com -chengjinholdinggroup.com -chengkao365.com -chenglang.net -chenglangyun.com -chenglil.com -chenglin.name -chenglinpak.com -chenglispv.com -chengliwang.com -chengloongcishan.org -chenglou.net -chengmei.games -chengmeiyouxuan.com -chengpeiquan.com -chengrang.com -chengrengaokaobaoming.com -chengrenjiaoyu1.com -chengruide.com -chengshan.com -chengshidingxiang.com -chengshiguanjia.com -chengshijun.com -chengshu.com -chengsmart.com -chengtaijiaju.com -chengtay.com -chengtianxiajy.com -chengtiexinxi.com -chengtongjz.com -chengtu.com -chenguangnetwork.com -chengw.com -chengwei.com -chengweitx.com -chengxiangqian.com -chengxiangzhineng.com -chengxiaoliu.com -chengxingjicj.com -chengxinyouxuan.com -chengxuan.com -chengyangyang.com -chengye-capital.com -chengyitex.com -chengyouyun.com -chengyuanwenquan.com -chengyucidian.net -chengyun.com -chengyuwan.com -chengyuxi.com -chengzhaoxi.xyz -chengzhinj.com -chengzhongmugu.ltd -chengzijianzhan.com -chengzivr.com -chenhe.cc -chenhr.com -chenhuangxun.com -chenhui.org -chenjia.me -chenjiehua.me -chenjinghealth.com -chenjt.com -chenkeiot.com -chenksoft.com -chenlb.com -chenlianfu.com -chenliangroup.com -chenlinux.com -chenlinzuwu.com -chenlong.com -chenmingpaper.com -chenmomo.com -chenmozz.cc -chennianyoupin.com -chenpe.com -chenplus.com -chenpon.com -chenpot.com -chenroot.com -chenruixuan.com -chenruo.net -chens.life -chenshipin.com -chensuyang.com -chenty.com -chenva.com -chenwenwl.com -chenxiao.cc -chenxin99.com -chenxinghb.com -chenxingweb.com -chenxisoft.com -chenxm.cc -chenxuehu.com -chenxuhou.com -chenxunyun.com -cheny.org -chenyang.com -chenyanghg.com -chenyea.com -chenyifaer67373.com -chenyistyle.com -chenyongqi.com -chenyou123.com -chenyu.me -chenyudong.com -chenyuemz.com -chenyuwulian.com -chenyyds.com -chenzao.com -chenzhicheng.com -chenzhongkj.com -chenzhongtech.com -cheonhyeong.com -cheoo.com -cheoz.com -cherentec.com -cheriexsky.love -cherry-ai.com -chervonauto.com -chervongroup.com -cheryholding.com -cheryjaguarlandrover.com -cherylalopes.com -cherymanuals.com -cheshenghuo.com -cheshi-img.com -cheshi.com -cheshi111.com -cheshi18.com -cheshijie.com -cheshipin.com -cheshirex.com -cheshizh.com -chesicc.com -chesicc.net -chesir.com -chesir.net -chestercharles.com -chesthospital.com -chesudi.com -chetan.com -chetiansi.com -chetodeng.com -chetuanwang.net -chetuobang.com -chetx.com -chetxia.com -chetxt.com -chevip.com -chevlen.com -cheweiguanjia.com -chewen.com -chewulin.com -chexian9.com -chexiancha.com -chexiang.com -chexianinfo.com -chexiaoliang.net -chexinmeng.com -chexiu.com -chextx.com -chexun.com -chexun.net -cheyaoshi.com -cheyian.com -cheyipai.com -cheyishang.com -cheyisou.com -cheyou123.com -cheyuan.com -cheyun.com -cheyuu.com -chezhanri.com -chezhibao.com -chezhubidu.com -chezhutech.com -chezhuzhinan.com -chezizhu.com -chezvi.com -chfsmartad.com -chgcw.com -chghouse.org -chgi.net -chgie.com -chglmp.com -chgreenway.com -chgry.com -chgzfls.com -chhqtest.com -chhua.com -chhuc.org -chhw.com -chhzm.com -chi2ko.com -chi588.com -chi86.com -chianbaohan.com -chibanting.com -chichuang.com -chickfrp.com -chiconysquare.com -chicopharm.com -chida.org -chidafeiji.com -chidaolian.com -chidaoni.com -chidaoni.net -chidaotv.com -chidd.net -chidowl.com -chidudata.com -chidutech.com -chiefmore.com -chiefpharma.com -chieftin.org -chietom.com -chihao.com -chihe.so -chihealbio.com -chiheba.com -chiheshan.com -chihkao.com -chihm.com -chiji-h5.com -chiji.app -childjia.com -childlib.org -childrentheatre.org -chileaf.com -chili3d.com -chillyroom.com -chilwee.com -chimboon.com -chimbusco.com -chimelong.com -chimezi.com -chimoph.com -chin-fine.com -china-10.com -china-3.com -china-315.com -china-ah.com -china-anhe.com -china-asahi.com -china-aseanbis.com -china-audit.com -china-autotech.com -china-b.com -china-baiyun.com -china-bdh.com -china-bee.com -china-bicycle.com -china-biding.com -china-bluestar.com -china-bme.com -china-borun.com -china-boya.com -china-caihua.com -china-cale.com -china-capsule.com -china-cas.org -china-cba.net -china-cbn.com -china-cbs.com -china-ccc.org -china-ccie.com -china-ccii.com -china-ccw.com -china-cdig.com -china-cdt.com -china-ceco.com -china-ced.com -china-ceec-cooperation.com -china-cet.com -china-cfa.org -china-chair.com -china-channel.com -china-chca.org -china-chigo.com -china-cicc.org -china-citytour.com -china-clearing.com -china-cloud.com -china-cmca.org -china-cnic.com -china-co.com -china-coc.org -china-consulate.org -china-core.com -china-cotton.org -china-cpu.co -china-cpu.com -china-cri.com -china-csm.org -china-cssc.org -china-cycle.com -china-denox.com -china-designer.com -china-dingjie.com -china-drama.com -china-drm.net -china-dt.com -china-dtv.com -china-eaea.com -china-ecee.com -china-eia.com -china-embassy.org -china-engine.net -china-entercom.com -china-enterprise.com -china-epa.com -china-erzhong.com -china-fangyuan.com -china-fei.com -china-feininger.com -china-fire.com -china-fishery.com -china-flash.com -china-flower.com -china-futian.com -china-g.com -china-galaxy-inv.com -china-gehang.com -china-genius.com -china-gg.com -china-giant.com -china-gnd.com -china-goffen.com -china-gold.com -china-goldcard.com -china-greenfund.com -china-greenlighting.com -china-gwy.com -china-hechang.com -china-hengyuan.com -china-hhsj.com -china-highway.com -china-holiday.com -china-hongfei.com -china-house.com -china-hp.com -china-hrg.com -china-htdl.com -china-huamin.com -china-huazhou.com -china-hulong.com -china-hushan.com -china-hxzb.com -china-hzd.com -china-iace.com -china-ida.com -china-inse.com -china-invests.net -china-ipif.com -china-isotope.com -china-j.com -china-jianan.com -china-jinlong.com -china-jit.com -china-jm.org -china-jxcf.com -china-kaidiwt.com -china-kaihua.com -china-kaoshi.com -china-key.com -china-khgroup.com -china-kids-expo.com -china-kids-fair.com -china-kingmold.com -china-knobs.com -china-lantu.com -china-latv.com -china-lawoffice.com -china-led.net -china-light-guides.com -china-lithium.com -china-liye.com -china-logistics.com -china-longgong.com -china-lottery.net -china-lsh.com -china-m2m.com -china-mcc.com -china-mile.com -china-moutai.com -china-mt.org -china-mx.net -china-nengyuan.com -china-nlp.com -china-nns.com -china-norbin.com -china-npa.org -china-nsftz.com -china-obgyn.net -china-office-solutions.com -china-orientgroup.com -china-oulu.com -china-pa.org -china-packcon.com -china-payments.com -china-pcba.com -china-pengye.com -china-pharmacy.com -china-pinyuan.com -china-planet.com -china-pub.com -china-qiao.com -china-qjbz.org -china-radiology.com -china-re.net -china-refrigerants.com -china-ric.com -china-riscv.com -china-russia.org -china-sand.com -china-sce.com -china-sea.net -china-season.com -china-security.com -china-see.com -china-seeq.com -china-sfc.com -china-shancun.com -china-shimo.com -china-shjyx.com -china-shufan.com -china-shugaung.net -china-sites.com -china-slate.com -china-smartech.com -china-sorsa.org -china-soyea.com -china-spirulina.net -china-springs.com -china-sss.com -china-stainless.com -china-sunshine.com -china-sz.com -china-thk.com -china-tin.com -china-tisense.com -china-tje.com -china-tongyu.com -china-topplus.com -china-tops.com -china-tower.com -china-toy-edu.org -china-toy-expo.com -china-train.net -china-tsac.com -china-uju.com -china-up.com -china-valve.com -china-vcom.com -china-vision.org -china-vn.com -china-vo.org -china-wanlin.com -china-warping.com -china-waste.com -china-weldnet.com -china-whwaterexpo.com -china-ws.org -china-wss.com -china-xb.com -china-xcsy.com -china-xian.com -china-xiba.com -china-xiuzheng.com -china-xzgec.com -china-xzkg.com -china-yaguang.com -china-yansheng.com -china-yd.com -china-yiang.com -china-yida.com -china-yinda.com -china-yintai.com -china-yongfeng.com -china-yt-expo.com -china-yuanfang.com -china-yuli.com -china-yxt.com -china-zbycg.com -china-zeiss.com -china-zhongda.net -china-zikao.com -china-zjj.net -china-zrg.com -china-zysj.com -china.com -china.mintel.com -china000799.com -china001.com -china12345.net -china12365.com -china124.com -china17.net -china1baogao.com -china1f.com -china2000.org -china3-15.com -china30s.com -china35.com -china356.com -china3gpp.com -china4a.org -china5e.com -china60.com -china6688.com -china724.com -china777.org -china918.org -china95.com -china95.net -china95.xyz -china9y.com -chinaab.com -chinaacc.com -chinaacme.net -chinaacryl.com -chinaadec.com -chinaadren.com -chinaadvance.com -chinaaeri.com -chinaaet.com -chinaagrisci.com -chinaags.net -chinaagv.com -chinaahth.com -chinaairer.com -chinaamc.com -chinaant.com -chinaant.net -chinaarabcf.org -chinaaris.com -chinaartificialstone.com -chinaasaservice.com -chinaasc.org -chinaaseanenv.org -chinaaseanfertilizer.com -chinaasic.com -chinaath.com -chinaautoms.com -chinaautosupplier.com -chinaave.org -chinaaviationdaily.com -chinab4c.com -chinababy365.com -chinabac.com -chinabaike.com -chinabaiker.com -chinabancai.com -chinabaoan.com -chinabaogao.com -chinabaokan.com -chinabashan.com -chinabattery.org -chinabbtravel.com -chinabdh.com -chinabeego.com -chinabeer.net -chinabencaogangmu.com -chinabenson.com -chinabesteasy.com -chinabeston.com -chinabeverage.org -chinabgao.com -chinabge.com -chinabid315.com -chinabidding.cc -chinabidding.com -chinabiddingzb.com -chinabigdata.com -chinabigwin.com -chinabike.net -chinabim.com -chinabird.org -chinablackcat.com -chinablowers.com -chinabmi.com -chinabn.org -chinabooktrading.com -chinaboyun.com -chinabreed.com -chinabrightstone.com -chinabsb.com -chinabuildingcentre.com -chinabulk.com -chinabus.info -chinabuses.com -chinabuy1002.com -chinabxwx.com -chinabym.com -chinabyte.com -chinabzp.com -chinac.com -chinac3.com -chinacable.com -chinacace.org -chinacache.com -chinacache.net -chinacacm.org -chinacaj.net -chinacamel.com -chinacapac.com -chinacapg.com -chinacarbide.com -chinacars.com -chinacasa.org -chinacatel.com -chinacba.org -chinaccia.com -chinaccm.com -chinaccsi.com -chinacct.org -chinacdc.com -chinacdl.com -chinacdnb2b.com -chinacelacforum.org -chinacenn.com -chinacentrifuge.com -chinaceot.com -chinaceotv.com -chinacfa.com -chinacfi.net -chinacfo.net -chinacft.org -chinacge.com -chinachangbo.com -chinachangfang.com -chinachant.com -chinachaoyang.com -chinacharityfederation.org -chinachemnet.com -chinachild.org -chinachina.net -chinachugui.com -chinachuntian.com -chinacib.com -chinacid.org -chinacie.org -chinacil.com -chinacir.com -chinacity.net -chinacitywater.org -chinacld.com -chinaclean.org -chinacleanexpo.com -chinacljt.com -chinacma.org -chinacmo.com -chinacoal.com -chinacoatingnet.com -chinacoffee.vip -chinacomix.com -chinaconch.com -chinacondiment.com -chinaconsulatesf.org -chinaconsun.com -chinaconveyor.com -chinacordblood.org -chinacosco.com -chinacourt.org -chinacpda.com -chinacpda.org -chinacqme.com -chinacqpgx.com -chinacqsb.com -chinacraa.org -chinacrane.net -chinacrankshaft.com -chinacreator.com -chinacrops.org -chinacrosspoint.com -chinacrt.com -chinacses.org -chinacsf.com -chinactv.com -chinaculture.org -chinacustomsdata.com -chinacxjs.org -chinacyx.com -chinadachi.com -chinadafen.com -chinadafeng.com -chinadaily.net -chinadailyglobal.com -chinadais.net -chinadaja.com -chinadance.com -chinadart.com -chinadas.net -chinadatapay.com -chinadatatrading.com -chinadbs.com -chinaddn.com -chinaddos.com -chinadds.net -chinadentalshow.com -chinadep.com -chinadewei.com -chinadforce.com -chinadianji.com -chinadianming.com -chinadidao.com -chinadipl.com -chinadjba.com -chinadkec.com -chinadmoz.org -chinadns.com -chinadns.org -chinadongchu.com -chinadougong.com -chinadra.com -chinadrtv.com -chinadrum.net -chinadsl.net -chinaduo.com -chinadyt.com -chinadz.com -chinadzfp.com -chinadzyl.com -chinae.net -chinaeastlaw.com -chinaebizal.com -chinaebr.com -chinaecnet.com -chinaeda.org -chinaedu.com -chinaedu.net -chinaedunet.com -chinaedunewsw.com -chinaefu.net -chinaega.com -chinaehs.net -chinaeia.org -chinaeinet.com -chinaeinv.com -chinaejiao.com -chinaembassy.at -chinaepoxy.com -chinaepu.com -chinaequity.net -chinaerdos.com -chinaerospace.com -chinaesf.net -chinaeshare.com -chinaesm.com -chinaet.net -chinaev100.com -chinaeve.com -chinaexam.org -chinaexpo365.com -chinaexpressair.com -chinafa.org -chinafangxing.com -chinafarad.com -chinafarming.com -chinafashionbao.com -chinafasten.com -chinafastpcb.com -chinafbdq.com -chinafcx.com -chinafeiting.com -chinafert-gov.com -chinaffmpeg.com -chinafga.org -chinafiber.com -chinafic.org -chinafilm.com -chinafilmhy.com -chinafilms.net -chinafinancenet.com -chinafinanceonline.com -chinafininfo.com -chinafishtv.com -chinafix.com -chinaflashmarket.com -chinaflier.com -chinafolklore.org -chinafoma.com -chinafoodj.com -chinafoodsltd.com -chinaforklift.com -chinafpd.net -chinafph.com -chinafpma.org -chinafranchiseexpo.com -chinafruitime.com -chinafsl.com -chinaftat.org -chinafuda.com -chinafudaoban.com -chinafumao.com -chinafxd.com -chinafxkj.com -chinag.pro -chinagames.net -chinagayles.com -chinagb.net -chinagb.org -chinagba.com -chinagcl.com -chinagdda.com -chinagdn.com -chinaghwl.com -chinagiftsfair.com -chinaglassnet.com -chinagoldcoin.net -chinagoldgroup.com -chinagongcheng.com -chinagoods.com -chinagosun.com -chinagp.net -chinagpay.com -chinagps.cc -chinagrandauto.com -chinagrandinc.com -chinagrazia.com -chinagreenbio.com -chinagreentown.com -chinagrid.net -chinagrowthcapital.com -chinagslb.com -chinagslb.net -chinagsrc.com -chinagungho.org -chinaguohuan.com -chinaguyao.com -chinagwy.com -chinagwy.net -chinagwy.org -chinagwyw.org -chinagzn.com -chinahacker.com -chinahaixun.com -chinaham.com -chinahanang.com -chinahao.com -chinahaochuan.com -chinaharp.com -chinahazelnut.com -chinahbj.com -chinahbjob.com -chinahengying.com -chinahho.com -chinahhxh.com -chinahighnew.com -chinahightech.com -chinahighto.com -chinahighway.com -chinahiron.com -chinahiron.ltd -chinahiyou.com -chinahj.club -chinahkidc.net -chinahky.com -chinahnjs.com -chinahongdu.net -chinahonghui.net -chinahongying.com -chinahorologe.com -chinahorse.org -chinahosesupply.com -chinahotelgz.com -chinahpa.org -chinahqjjw.com -chinahr.com -chinahrd.net -chinahrhq.com -chinahrt.com -chinahsdp.com -chinahte.com -chinahtz.com -chinahualai.com -chinahuashan.com -chinahuaxicun.com -chinahuaxue.com -chinahuben.com -chinahudong.com -chinahugong.com -chinahuizhanjie.com -chinahumo.com -chinahvacr.com -chinahw.net -chinahylq.com -chinahyyj.com -chinahzkj.com -chinaiat.com -chinaiatb.org -chinaidcnet.com -chinaidcnet.net -chinaido.com -chinaidr.com -chinaief.net -chinaielts.org -chinaiern.com -chinaiia.org -chinaiiss.org -chinainfoseek.com -chinainout.com -chinainput.net -chinainsbrokers.com -chinaiol.com -chinaiprlaw.com -chinairn.com -chinairport.net -chinait.vip -chinaitcapital.com -chinaitlab.com -chinaiut.com -chinajan.com -chinajcz.com -chinajeweler.com -chinajfj.com -chinajienuo.com -chinajierda.com -chinajinguo.com -chinajinlong.com -chinajinsheng.com -chinajinzhan.com -chinajinzhou.com -chinajiuquan.com -chinajj.org -chinajjz.com -chinajnhb.com -chinajoiner.net -chinajorson.net -chinajoy.net -chinajs120.com -chinajsc.com -chinajsjmxh.com -chinajsxx.com -chinajungong.com -chinajuva.com -chinajyhj.com -chinajyjxh.com -chinajyxdh.com -chinajyy.net -chinajzqc.com -chinakab.com -chinakangping.com -chinakangyue.com -chinakaoyan.com -chinakeon.com -chinakewei.com -chinakidville.com -chinakiln.net -chinakingho.com -chinakingland.com -chinakingo.com -chinakinzo.com -chinaklb.com -chinakong.com -chinakongzi.org -chinakqn.com -chinakshx.com -chinaksi.com -chinakuangshi.com -chinakyzl.com -chinalabexpo.com -chinalabs.com -chinalahigh.com -chinalancoo.com -chinalandpress.com -chinalanhua.com -chinalao.com -chinalaobao.com -chinalawbook.com -chinalawedu.com -chinalawinfo.com -chinalawyer.co -chinalawyeryn.com -chinaleather.com -chinaleather.org -chinaledger.com -chinalep.org -chinalibs.net -chinalicensing.org -chinalicensingexpo.com -chinalifang.com -chinalims.net -chinalingshan.com -chinalink.tv -chinalions.com -chinaliriver.com -chinalive.com -chinaliyou.com -chinalm.org -chinalonghu.com -chinalowcarb.com -chinalpharm.com -chinalsjt.com -chinalubricant.com -chinalulutong.com -chinalure.com -chinalushan.com -chinaluxury.net -chinalww.com -chinalxnet.com -chinamadas.com -chinamae.com -chinamags.org -chinamani.com -chinamaohong.com -chinamap.com -chinamaven.com -chinambn.com -chinamca.com -chinamcache.com -chinamcloud.com -chinamea.org -chinameat.net -chinamedicinej.com -chinamendu.com -chinamenwang.com -chinamerger.com -chinametro.net -chinameyer.com -chinamie.org -chinamingyan.net -chinamining.com -chinamission.be -chinamissun.com -chinamobile.com -chinamobiledevice.com -chinamobileltd.com -chinamost.net -chinamotian.com -chinamsa.org -chinamssp.com -chinamuscle.org -chinamusical.net -chinamwh.com -chinamworld.com -chinamypp.com -chinananda.com -chinananyang.com -chinanbb.com -chinanet-sh.com -chinanet.cc -chinanet88.com -chinanetcenter.com -chinanetidc.com -chinanetsun-dns.com -chinanetsun.com -chinanev.net -chinaneweast.com -chinanewera.com -chinanewkey.com -chinanews.com -chinanim.com -chinaningbo.com -chinanmi.com -chinanrb.com -chinanums.com -chinanwa.com -chinaobp.com -chinaoceanwide.com -chinaoct.com -chinaoly.com -chinaomp.com -chinaonebuild.com -chinaonstreetparking.com -chinaonward.net -chinaopc.org -chinaopen.com -chinaopticsvalley.com -chinaore.com -chinaorff.com -chinaorff.org -chinaorganicchem.com -chinaorientgroup.com -chinaott.com -chinaott.net -chinapag.com -chinapandi.com -chinapanocean.com -chinapantheum.com -chinapantom.com -chinapaper.net -chinaparking.org -chinapastel.com -chinapay.com -chinapayhongkong.com -chinapbw.com -chinapcd.com -chinape168.com -chinapearlk.com -chinapeier.com -chinapelletizer.com -chinapeople.com -chinapet.com -chinapet.net -chinapharm.net -chinaphper.com -chinapilotage.org -chinapipe.net -chinapiston.com -chinaplasonline.com -chinaplat.com -chinapm.org -chinapnr.com -chinaportrait.org -chinaports.com -chinapost-life.com -chinapoto.com -chinapower.org -chinapowerbi.com -chinapp.com -chinapp.net -chinapsy.com -chinapubmed.net -chinapuleather.com -chinapusirui.com -chinaqcb.com -chinaqfc.com -chinaqi.net -chinaqigong.com -chinaqikan.com -chinaqingtian.com -chinaqipeihui.com -chinaqjydxh.com -chinaql.org -chinaqoe.net -chinaquickpcb.com -chinaqunsheng.com -chinaqw.com -chinaray-oled.com -chinarayying.com -chinarca.com -chinardr.com -chinardr.net -chinaredstar.com -chinaredsun.com -chinareform.net -chinaren.com -chinarenzhi.com -chinaresin.com -chinarespiratory.org -chinarjw.com -chinarta.com -chinartlaw.com -chinaruiji.com -chinarun.com -chinarunau.com -chinarzfh.com -chinasaat.com -chinasalestore.com -chinasanbai.com -chinasanc.com -chinasantian.com -chinasareview.com -chinasatcom.com -chinasbm-eet.com -chinasbm.com -chinasciencejournal.com -chinascope.com -chinascopefinancial.com -chinascpjy.com -chinascrap.com -chinascsoft.com -chinasecuritization.org -chinaseed114.com -chinasexq.com -chinasg.com -chinashadt.com -chinashenglu.com -chinashengmao.com -chinashj.com -chinashop.cc -chinashpp.com -chinashunyi.com -chinasia.org -chinasie.com -chinasigma.com -chinasiia.com -chinasilk.com -chinasilkmuseum.com -chinasilver.hk -chinasinew.com -chinasinging.com -chinasiwei.com -chinaslc.com -chinasmartpay.com -chinasmcc.com -chinasmp.com -chinasnow.net -chinasnto.com -chinasnw.com -chinaso.com -chinasoftbank.com -chinasofti.com -chinasoftinc.com -chinasoftosg.com -chinasooa.com -chinasoushang.com -chinaspringtown.com -chinasrg.com -chinasrif.com -chinassbc.com -chinassl.com -chinassl.net -chinasspp.com -chinastarlogistics.com -chinastationeryfair.com -chinasti.com -chinastoneforest.com -chinasufa.com -chinasunglow.com -chinasuntree.com -chinasupercloud.com -chinasuperwool.com -chinaswa.org -chinaswim.com -chinaswimmer.com -chinasws.com -chinasydw.org -chinaszma.com -chinataa.org -chinatai.com -chinatairun.com -chinataitan.com -chinataiwan.org -chinatalent.org -chinatalentgroup.com -chinatat.com -chinatechie.com -chinatechie.net -chinatechinsights.com -chinatelecom-h.com -chinatelecom.com.hk -chinatelecom.com.mo -chinatelecomglobal.com -chinatelecomhk.com -chinatelecomiot.com -chinatelling.com -chinatet.com -chinatex.com -chinatex.net -chinatex.org -chinatg.com -chinathinksbig.com -chinatianyin.com -chinatibetnews.com -chinaticket.com -chinatikfans.com -chinatimber.org -chinatimes.cc -chinatiner.com -chinatiredealer.com -chinatla.com -chinatle.com -chinatlzm.com -chinatmco.com -chinatongjia.com -chinatopbrands.net -chinatoplon.com -chinatourguide.com -chinatpm.com -chinatpm.net -chinatrace.org -chinatranslation.net -chinatravel.net -chinatravelacademy.com -chinatraveldepot.com -chinatruck.org -chinatrucks.com -chinatsi.com -chinatsp.com -chinatt.com -chinattas.com -chinattl.com -chinatungsten.com -chinatupai.com -chinatv-net.com -chinatyco.com -chinatypical.com -chinau.cc -chinaufo.com -chinaui.com -chinauidesign.com -chinauma.com -chinaums.com -chinaun.net -chinaunicom-a.com -chinaunicom.com -chinaunicom.com.hk -chinaunicomglobal.com -chinaunionpay.com -chinaunionpay.net -chinauniversalasset.com -chinaunix.com -chinaunix.net -chinaunix.org -chinauo.com -chinauos.com -chinauos.net -chinaups.com -chinaus.com -chinauwei.com -chinava.net -chinavalin.com -chinavas.com -chinavcpe.com -chinavfx.net -chinavid.com -chinavideo.org -chinavideos.net -chinaviewstone.com -chinaviolin.net -chinavipsoft.com -chinavisual.com -chinavivers.com -chinaviwon.com -chinavr.net -chinawanbang.com -chinawanda.com -chinawanlitrans.com -chinawatchnet.com -chinawaterexpo.com -chinawatertech.com -chinawch.com -chinawebber.com -chinawebmap.com -chinaweiyu.com -chinaweizheng.com -chinawepon.com -chinawerewolf.com -chinawie.com -chinawindnews.com -chinawinjoy.com -chinawiserv.com -chinawitmedia.com -chinawr.net -chinaws.net -chinawssdxh.com -chinawudang.com -chinawulong.com -chinawutong.com -chinawutong.net -chinawuyuan.com -chinawxfoundry.com -chinaxiaokang.com -chinaxidian.com -chinaxinge.com -chinaxingye.com -chinaxinhuaair.com -chinaxinport.com -chinaxintu.com -chinaxinzhi.com -chinaxiuqi.com -chinaxiv.com -chinaxiv.net -chinaxiv.org -chinaxpp.com -chinaxq.com -chinaxqf.com -chinaxuchuan.com -chinaxuehang.com -chinaxueqian.com -chinaxwcb.com -chinaxy.com -chinaxzrc.com -chinayacht.org -chinayadea.com -chinayanghe.com -chinayanming.com -chinayaojiang.com -chinayarn.com -chinaybx.com -chinaygj.com -chinayigui.com -chinayikangyaoye.com -chinayinyi.com -chinayis.com -chinayishuhua.com -chinaymc.com -chinayms.com -chinayongfa.com -chinayoubang.com -chinayounao.com -chinays.com -chinayuanwang.com -chinayucai.com -chinayulin.com -chinayunlang.com -chinayuns.com -chinayuqiu.com -chinayyhg.com -chinayyjx.com -chinaz.com -chinaz.net -chinazbd.com -chinazbj.com -chinazh.net -chinazhifu.com -chinazhijiang.com -chinazhz.com -chinazikao.com -chinazipper.org -chinazjgc.com -chinazjph.com -chinazjy.com -chinazkjc.com -chinazmhb.com -chinaznj.com -chinazns.com -chinaznyj.com -chinazov.com -chinazsgroup.com -chinaztg.com -chinazwds.com -chinazxjc.com -chinazxt.com -chinazy.org -chinca.org -chindices.com -chine-info.com -chinee.com -chinemiss.com -chinese-no1.com -chinese-tea-store.com -chinese315.org -chineseacc.com -chineseafs.org -chineseall.com -chinesechip.com -chinesecio.com -chineseconsulate.org -chineseembassy.org -chinesehongker.com -chinesejk.com -chinesejy.com -chineselaw.com -chineselighting.org -chinesemale.com -chinesemedical.net -chinesemeter.com -chinesemooc.org -chinesemoocs.org -chinesepaper-cut.com -chineserose.com -chinesetown.net -chingan.com -chingkun.com -chingli.com -chingmi.com -chinjpd.com -chinlingo.com -chinrt.com -chinsc.com -chint.com -chint.net -chintanneng.com -chintautomation.com -chintautoparts.com -chintcable.com -chintim.com -chinulture.com -chip37.com -chipcoo.com -chipcreation.com -chipdance.com -chipdebug.com -chipeasy.com -chiphell.com -chiphometek.com -chiplayout.net -chipmanufacturing.org -chiponeic.com -chipown.com -chippacking.com -chipsbank.com -chipsec.com -chipsgo.com -chipsir.com -chipup.com -chipwing.com -chipyun.com -chiralquest.com -chisage.com -chisai.tech -chisc.net -chiser.cc -chishine3d.com -chishoes.com -chitic.com -chitu.com -chitudexiaozhi.com -chitus.com -chivast.com -chivox.com -chivoxapp.com -chiway-repton.com -chiwayedu.com -chiwayind.com -chiwigogo.com -chixia.com -chixm.com -chixuyun.com -chiyanjiasu.com -chiyekeji.com -chiyifen.com -chiyufeng.com -chizao.com -chizhou.cc -chizhoubus.com -chizhouchacha.com -chizhouhospital.com -chizhoujob.com -chizhouren.com -chiznews.com -chj-care.com -chjchina.com -chjgg.com -chjiye.com -chjsj.com -chjso.com -chjyw.org -chkee.com -chkschool.com -chlingkong.com -chlmfm.com -chlmiao.com -chloe99.com -chlxj.com -chmc.cc -chmecc.org -chmed.net -chmgames.com -chmia.org -chmod0777kk.com -chmti.com -chn-cstc.com -chn-das.com -chn0769.com -chn112.com -chn168.com -chnart.com -chnau99999.com -chnbook.org -chnboxing.com -chnchi.com -chncia.org -chncomic.com -chncon.com -chncopper.com -chncpa.org -chncwds.com -chndaqi.com -chndeli.com -chndesign.com -chndoi.com -chndoi.net -chndoi.org -chnews.net -chnfi.com -chnfund.com -chngalaxy.com -chngc.net -chngsl.com -chnhouseware.com -chnjet.com -chnlanker.com -chnmed.com -chnmodel.com -chnmus.net -chnmusic.org -chnpac.com -chnpec.com -chnppmuseum.com -chnpush.com -chnqiang.com -chnqifeng.com -chnqsedu.com -chnrailway.com -chnroad.com -chnso.com -chnsuv.com -chntel.com -chnxw.com -chocei.com -chofei.com -chofn.com -chofn.net -chofn.org -chofnipr.com -choiceform.com -chomixbiotech.com -chong4.net -chongbuluo.com -chongchi.com -chongdawang.com -chongdeedu.com -chongdiantou.com -chongdk.net -chongdugou.net -chongfabianli.com -chongguanglawfirm.com -chongjisyj.com -chongjiyashiji.com -chongkongwang999.com -chongmingzhuce.com -chongnengjihua.com -chongqingbbs.com -chongqingdongjin.com -chongqingkh.com -chongqingrenpin.com -chongqingyoupin.com -chongqu.com -chongso.com -chongsoft.com -chongwenwen.com -chongwu.cc -chongwudian.com -chongwujiaoyi.com -chongwunet.com -chongya.vip -chongyejia.com -chongyike.com -chongyitang.org -chongyunpowu.com -chongzhi.com -chongzuo.club -chonka.com -chontdoled.com -chonton.com -choosepickhere.com -choositon.com -chooway.com -chopetto.com -chosign.com -choubag.com -chouchoujiang.com -chouchoumao.com -choujue.net -choukang.com -choupangxia.com -chouqu.com -chouti.com -choututech.com -chowtaiseng.com -choyri.com -chplayer.com -chq360.com -chrent.com -chrice.net -chrieschina.com -christophero.xyz -chrmn.com -chroad.com -chrome64.com -chrome666.com -chromecj.com -chromedownloads.net -chromefor.com -chromegw.com -chromeliulanqi.com -chromezj.com -chronusartcenter.org -chrstatic.com -chs.pub -chs5e.com -chsbs.com -chsdl.com -chsdpharma.com -chsgw.com -chshcms.com -chshsaas.com -chsmarttv.com -chsndt.org -chspra.com -chspv.com -chste.com -chszzy.com -chtcmotor.com -chtf.com -chtfund.com -chtgc.com -chtjf.com -chtmxp.com -chtpe.com -chtwm.com -chu-ying.com -chu0.com -chu110.com -chu21.com -chu58.com -chua.pro -chuairan.com -chuaizhe.com -chualamdimsum.com -chuan-s.com -chuanbojiang.com -chuanboyi.com -chuandaizc.com -chuandasolar.com -chuandong.com -chuang-fan.com -chuang-pin.com -chuangansou.com -chuangcache.com -chuangcdn.com -chuangchangnet.com -chuangchenwangluo.com -chuangcifang.com -chuangdaxx.com -chuangduyouyue.com -chuangen.com -chuangfeixin.com -chuanggallery.com -chuanghe.net -chuanghui-cn.com -chuangji2009.com -chuangjiangx.com -chuangjie.com -chuangjing.com -chuangkem.com -chuangkeup.com -chuangkit.com -chuanglan.com -chuangli.net -chuanglian.net -chuanglinggame.com -chuangliukeji.com -chuangluo.com -chuangmaoshanghai.com -chuangmei8.com -chuangongsi.com -chuangqiweilaijy.com -chuangseo.com -chuangshiwl.com -chuangshiyuli.com -chuangtie.com -chuangtoo.com -chuangx.org -chuangxin.com -chuangxinapi.com -chuangxinbateng.com -chuangxinoa.com -chuangxuan.xyz -chuangyebaba.com -chuangyehai.com -chuangyejia.com -chuangyetv.com -chuangyijisu.com -chuangyimao.com -chuangyiqifu.com -chuangyisai.com -chuangyiwh.com -chuangyouqi.com -chuangyuan.ltd -chuangyuejoy.com -chuangzaoshi.com -chuangzuoniu.com -chuanhai.net -chuanhuan.com -chuanjiaoban.com -chuanke.com -chuanloo.com -chuanmeixing.com -chuannan.net -chuanpuyun.com -chuanqi.com -chuanqiart.com -chuanqibbs.com -chuanshanqundao.com -chuansong.me -chuansongme.com -chuantangjitrade.com -chuantec.com -chuantiegroup.com -chuantu88.com -chuanxincao.net -chuanye.com -chuanyifu.com -chuanyinet.com -chuanying365.com -chuanying520.com -chuanyuanbang.com -chuanyuapp.com -chuanyunge.com -chuanzhen.com -chuapp.com -chuasu.com -chuban.cc -chubanyun.me -chubaohui.com -chucheng.wiki -chuchujie.com -chuchur.com -chufaba.me -chufw.com -chuge8.com -chugou360.com -chuguo.tech -chuguo78.com -chuguohao.com -chuguoqu.com -chuhai-club.com -chuhai.group -chuhaige.com -chuhailiqi.com -chuimg.com -chuinet.com -chuisax.com -chuishen.xyz -chuixue.com -chuiyue.com -chujian.xyz -chujing-electric.com -chujingapp.com -chujuan.net -chujunkeji.com -chukong-inc.com -chukonggame.com -chukou1.com -chukouplus.com -chuleg.com -chumenwenwen.com -chun-wang.com -chun-xiang.com -chunbo.com -chunboimg.com -chundi.com -chundi.org -chunengauto.com -chunfengapp.com -chunfengxing.com -chungkwong.cc -chunhaijx.com -chunhingplasticbags.com -chunhuinongye.com -chunjiangvalve.com -chunjingban.net -chunlan.com -chunliangpai.com -chunliao.net -chunloo.com -chunmen.com -chunmi.com -chunqiuhong.com -chunsheng.com -chunshuitang.com -chunshuizhijia.com -chunsuns.com -chuntaoyisheng.com -chuntsuan.com -chunxing-group.com -chunxuanmao.com -chunxudianqi.com -chunyanhui.com -chunyiscdk.com -chunyu.me -chunyu.mobi -chunyuyisheng.com -chunzuo.com -chuolitech.com -chuquan.me -churenjixie.com -churuisy.com -chusan.com -chusenscm.com -chuseo.com -chushan.com -chushang027.com -chushihome.com -chushiji.com -chushixiu.com -chushou.tv -chushu.org -chushu123.com -chutianlaser.com -chutianzhinu.com -chuxindata.com -chuxinglibu.com -chuxingpay.com -chuxingyouhui.com -chuxinhd.com -chuxinhudong.com -chuxinvip.com -chuxueyun.com -chuyaer.com -chuyigao.com -chuyu.me -chuzhaobiao.com -chvacuum.com -chvoice.com -chw818.com -chwang.com -chwedu.com -chwlsq.com -chxchips.com -chxent.com -chxin-oil.com -chxyl.com -chxyq.com -chyitech.com -chysoft.net -chyw.pub -chyxx.com -chyyyygl.com -chz.cc -chzhkeji.com -chzhsw.com -chzhw.com -chzpw.com -chzsks.com -chzwater.com -chzybj.com -ci-cn.com -ci-du.com -ci-ele.com -ci-xing.com -ci123.com -ci800.com -ciaie.com -ciallo.cc -ciaoca.com -ciapst.org -ciaxkzxy.com -cibaike.com -cibawl.com -cibfintech.com -cibia.org -cibn-intl.com -cibn.cc -cibn.com -cibnlive.com -cibnott.net -cibntv.net -cibnvst.com -ciboedu.org -cibonet.com -cibresearch.com -cibuser.com -cic-js.com -cicadayun.com -cicaf.com -cicba.net -cicc.com -ciccfund.com -cicconline.com -ciccphoto.com -ciccwargame.com -ciccwm.com -ciceme.com -cicfexpo.com -cicg.tech -ciciec.com -cicihappy.com -cicilisp.com -cicmag.com -cicnn.com -cicoe.net -cicphoto.com -cict.com -cidf.net -cidi.ai -cidianbao.com -cidiancn.com -cidianso.com -cidipp.com -cidschina.com -ciduw.com -cie-lgr.com -cieaast.com -ciec-expo.com -ciec.com -ciect.com -ciecte.com -ciecworld.com -ciedata.com -cieet.com -ciepe.com -cietac-hb.org -cietac-sc.org -cietac.org -ciezn.com -cifa-china.com -cifalshanghai.org -cifco.net -ciff-gz.com -cifm.com -cifnews.com -cifoo.com -ciftis.org -cig-cq.com -cigadesign.com -cigarambassador.com -cigh.com -cignacmb-ipmi.com -cignacmb.com -cignacmbamc.com -cignacmbuser.com -cigtech.com -ciguang.com -cih-index.com -cihai123.com -cihexpo.com -cihua.net -ciiccq.com -ciicgat.com -ciichr.com -ciicjs.com -ciicsh.com -ciidoo.com -ciie.org -ciif-expo.com -ciiip.com -ciiplat.com -cijiasu.com -cijiyun.com -cikelink.com -cilgroup.org -ciliba.life -cilin.org -cilishenqi.cc -cilishiye.com -cilogo.com -cim2025.net -cimamotor.com -cimc-tianda.com -cimc.com -cimccity.com -cimcdlem.com -cimcjm.com -cimclogistics.com -cimcreefertrailer.com -cimcvehiclesgroup.com -cimen.club -cimic.com -cimicgroup.com -cimictiles.com -ciming-bj.com -ciming-sh.com -ciming.com -cimingaoya.com -cimingbj.com -cimingsy.com -cimsic.com -cimtshow.com -cinacom.net -cinasoft.com -cindaflc.com -cindasc.com -cindasoft.com -cinehello.com -cingta.com -ciniao.me -cinic.com -cinsee.com -cinsos.com -cio114.com -cio360.net -cioage.com -ciomp-cggc.com -ciopharma.com -ciotimes.com -ciotour.com -ciou.com -cioxom-top.com -cip.cc -cipgtrans.com -cipherupcloud.com -ciplawyer.com -cippe.net -ciprun.com -cipscom.com -cipukj.com -cipunited.com -circday.com -circleharmonyhealth.com -circlelog.com -circuitboardchips.com -cirmall.com -cirrowings.com -cirs-ck.com -cirs-group.com -cirs-reach.com -cirscn.com -cisbeijing.com -ciscon.org -cisdish.com -cisgz.com -cisia.org -cismef.com -cisskwt.com -cistds.org -cistsports.com -cisuntech.com -cit168.com -citahub.com -citaq.com -citeaexample.com -citegalleries.com -citexpo.org -citgc.com -citiais.com -citic-wealth.com -citic.com -citicbank.com -citicbankuser.com -citiccapital.com -citiccard.com -citicdameng.com -citicenvirotech.com -citicfunds.com -citicguoanbn.com -citichmc.com -citiciam.com -citicifh.com -citicleasing.com -citicnetworks.com -citics.com -citics.com.hk -citicsf.com -citicsinfo.com -citicsteel.com -citie-gd.com -citiraise.com -citisa.org -citiz.net -citizenmech.com -citreport.com -cits-jl.com -cits-sz.net -citsbj.com -citscq.com -citscsc.com -citsgbt.com -citsgs.com -citsguilin.com -citshq.com -citsp.net -citsqd.net -citssh.com -citswx.com -citsxa.com -citsyn.com -citszz.com -citvc.com -city12580.com -city199.com -city8.com -city8090.com -citybrain.com -citygf.com -cityhui.com -cityhuitech.com -citylinker.com -cityoncenter.com -cityos.com -citypaly.com -citys114.com -citysbs.com -citysz.net -citytogo.com -cityup.org -citywy.com -ciunofor.com -civicswarm.com -civigas.com -civilness.com -civiw.com -ciweek.com -ciweekforum.com -ciweekly.com -ciwei.net -ciweimao.com -ciweishixi.com -ciweiyuedui.com -ciwong.com -ciwong.net -ciwork.net -cixcomputing.com -cixibank.com -cixiedu.net -cixtech.com -cixuanfuw.com -ciyagroup.com -ciyew.com -ciyitech.com -ciyocon.com -ciyoga.org -ciyuan.men -ciyuanji.com -ciyuans.com -ciyun.link -ciyynodegroup.cyou -cizip.com -cj0515.com -cj120.com -cj5bs.com -cj5bs.net -cjaljs.com -cjasen.com -cjavapy.com -cjbeng.com -cjbjedu.com -cjccb.com -cjchina.net -cjcn.com -cjcnn.com -cjdcw.com -cjdg.com -cjdropshipping.com -cjdsp.com -cjeduw.com -cjftb.com -cjhospital.com -cjhxfund.com -cjhydrogen.com -cjia.com -cjiahome.com -cjienc.com -cjiit.com -cjitri.com -cjjd01.com -cjjd02.com -cjjd03.com -cjjd04.com -cjjd05.com -cjjd06.com -cjjd07.com -cjjd08.com -cjjd09.com -cjjd10.com -cjjd11.com -cjjd12.com -cjjd13.com -cjjd14.com -cjjd15.com -cjjd16.com -cjjd17.com -cjjd18.com -cjjd19.com -cjjd20.com -cjjhb.com -cjjhk.com -cjjjs.com -cjjnff.com -cjjygr.com -cjk3d.net -cjkhd.com -cjkihgroup.com -cjkjks.com -cjkt.com -cjkz.com -cjlap.com -cjlulu.com -cjm.so -cjmit.com -cjmr.org -cjmx.com -cjmxhedu.com -cjn.com -cjnas.com -cjnis.com -cjol.com -cjrcsc.com -cjs-lwh.love -cjsc.com -cjsgegs.com -cjshipin.net -cjsic.com -cjslcg.com -cjspd.com -cjsy.net -cjsyedu.com -cjsyyhsyzx.com -cjtl.com -cjtmsp.com -cjtouzi.com -cjveg.com -cjwcjyy.com -cjwlb.com -cjww.com -cjx2.com -cjxqjt.com -cjxz.com -cjycode.com -cjys.net -cjyun.org -cjyy6789.com -cjyyw.com -cjzcb.com -cjzcgl.com -cjzsy.com -cjzww.com -cjzx.net -cjzzc.com -ck0771.com -ck100.com -ck180.net -ck586.com -ck830.com -ck921.com -ckair.com -ckan.tv -ckd-mbd.com -ckd.im -ckd.so -ckd8.com -ckdzb.com -ckefu.com -ckernel.org -ckeyan17.com -ckeyan17.net -ckeyedu.com -ckfxx.com -ckia.org -ckimg.com -ckj100.com -ckj1000.com -ckjr001.com -ckjryy.com -ckpharm.com -ckplayer.com -ckqjyjq.xyz -cksct.com -cksic.com -cksschool.com -cksx.org -cktqeiau.com -cktshare.com -ckuai.com -ckvmrtfg.com -ckweax9zn5.com -ckxx.net -ckzcc.com -ckzhaoyaojing.com -ckzhijiaedu.com -cl-acg.com -cl-kongtiao.com -cl-power.com -cl0438.com -cl0579.com -cl2009.com -cl868.com -clady.cc -clam-itc.com -clamc.com -clamptek.com -clangcn.com -clanzx.net -claritywallpaper.com -clarivate.com -clashroyaleapp.com -classa-z.com -classcms.com -classic023.com -classinpaas.com -classix-unlimited.co.uk -classmateer.com -classpassincn.com -classpod.com -classpodcdn.com -claviercn.com -clawchat.com -clayidols.com -clb6.net -clboss.com -clbu.club -clbug.com -clbz666.com -clcgq.com -clcindex.com -clclibrary.com -clcoolyun.com -clcs.cc -clcwwyj.com -clcz.com -cldfsv.com -cldisk.com -clean-cn.com -cleandfd.com -cleanupsys.com -clear-sz.com -clear888.com -clearaki.com -clearcrane.com -cleargrass.com -clearmediatech.com -clearofchina.com -clearsky360.com -clevercn.net -cleveroom.com -clewm.net -clfcgc.com -clfdked.icu -clfile.com -clfzsn.com -clgcxs.com -clgslc.com -clhimalayanxx.com -clhqcyx.com -cli.im -clianjie.com -clickfuntech.com -clicksdiy.com -clickserve.cc-dt.com -clicksun.net -clickwifi.net -clidone.com -client.amplifi.com -client51.com -clientperipherals.dell.com -clifford-hospital.org -cliffordtrading.com -cliim.com -cliim.net -clijc.com -climedic.com -clinbrain.com -clink-lists.com -clivia.fun -clj178.com -cljport.com -cljtscd.com -cljtw8.com -cljtwr.com -cljtzycw.com -clk1.top -clled.com -cllk.net -clloz.com -clmpg.com -clngaa.com -cloopen.com -cloopen.net -cloopm.com -closertb.site -clothes178.com -clothjob.com -clothr.com -clotliu.com -clouclip.com -cloud-beijing.com -cloud-control.top -cloud-dahua.com -cloud-dns.net -cloud-frame.com -cloud-hebi.com -cloud-hub.co -cloud-industry-delivery.site -cloud-link.com -cloud-links.net -cloud-neofussvr.sslcs.cdngc.net -cloud-ningbo.com -cloud-ordos.com -cloud-rtc.com -cloud-rtc.net -cloud-scdn-ns.net -cloud-scdn-ns.tech -cloud-scdn.com -cloud-shenzhen.com -cloud-shiyan.com -cloud-sun.com -cloud-wuhan.com -cloud-xian.com -cloud-xm.com -cloud-zhaoqing.com -cloud-zhongwei.com -cloud21cn.com -cloud301.net -cloud56.net -cloud887325.com -clouda.com -cloudacc1.com -cloudacc1.net -cloudajs.org -cloudangelfunds.com -cloudanqing.com -cloudappl.com -cloudbaoshan.com -cloudbase.net -cloudbeibei.com -cloudbility.com -cloudbinzhou.com -cloudbool.com -cloudcachetci.com -cloudcc.com -cloudcdn.net -cloudcdns.com -cloudcdns.net -cloudcdnvip.com -cloudcflare.com -cloudchangde.com -cloudchangsha.com -cloudchangzhou.com -cloudchaozhou.com -cloudchengde.com -cloudchengdu.com -cloudchinese.com -cloudchuzhou.com -cloudcross.com -cloudcsp.com -cloudczs.com -clouddalian.com -clouddatong.com -clouddcs.com -clouddiffuse.xyz -clouddig.com -clouddn.com -clouddongying.com -clouddream.net -cloudencent.com -cloudflare-cn.com -cloudflare.fun -cloudflareanycast.net -cloudflarecn.net -cloudflareglobal.net -cloudflareinsights-cn.com -cloudflareip.com -cloudflareperf.com -cloudflareprod.com -cloudflarestaging.com -cloudflarestoragegw.com -cloudfoshan.com -cloudfront-cn.net -cloudfuqing.com -cloudganzhou.com -cloudgap.net -cloudgfw.com -cloudgfw.net -cloudgoing.com -cloudguangzhou.com -cloudguarding.com -cloudgx.net -cloudhaidong.com -cloudhefei.com -cloudhengshui.com -cloudhin.com -cloudhlo.com -cloudhost.link -cloudhua.com -cloudhuaihua.com -cloudhuizhou.com -cloudhvacr.com -cloudidaas.com -cloudinnov.com -cloudinward.com -cloudiplc.com -cloudjinan.com -cloudjinchang.com -cloudjingzhou.com -cloudjining.com -cloudjiujiang.com -cloudkirin.com -cloudkunming.com -cloudleshan.com -cloudlijiang.com -cloudlishui.com -cloudluohe.com -cloudluoyang.com -cloudlvs.com -cloudmarket-apigw.com -cloudmaster.hk -cloudmeishan.com -cloudmes.io -cloudminds.com -cloudmob.vip -cloudmob.xyz -cloudmountainproducts.com -cloudnanan.com -cloudnanjing.com -cloudnanning.com -cloudnantong.com -cloudnapps.com -cloudnet.world -cloudnetb2b.com -cloudouc.com -cloudp.cc -cloudpense.com -cloudpnr.com -cloudquanzhou.com -cloudrmt.com -cloudroom.com -clouds1000.com -cloudsanya.com -cloudsation.com -cloudsec1.com -cloudsec1.net -cloudsee.com -cloudsee.net -cloudseeplus.com -cloudseetech.com -cloudserver01.com -cloudses.com -cloudsgis.com -cloudshanghai.com -cloudshaoyang.com -cloudshenfuxingqu.com -cloudsigma.com -cloudsiping.com -cloudsite.vip -cloudskysec.com -cloudstencent.com -cloudstudio-app.net -cloudstudio.club -cloudstudio.net -cloudstudio.run -cloudstudio.work -cloudsuqian.com -cloudswift.cloud -cloudtalkers.com -cloudtangshan.com -cloudtencents.com -cloudtianjin.com -cloudtomicro.com -cloudtongchuan.com -cloudtongliang.com -cloudtopo.com -cloudtrans.com -cloudtui.com -cloudv.cdnetworks.com -cloudvast.com -cloudvdn.com -cloudvogue.com -cloudvse.com -cloudwalk.com -cloudweinan.com -cloudwise.ai -cloudwise.com -cloudxiangtan.com -cloudxianyou.com -cloudxining.com -cloudxns.com -cloudxns.net -cloudyanan.com -cloudyancheng.com -cloudyantai.com -cloudyee.com -cloudyinchuan.com -cloudyo.net -cloudyouku.com -cloudytrace.com -cloudytrace.org -cloudyueyang.com -cloudyuncheng.com -cloudyuxi.com -cloudzhongshan.com -cloudzhuhai.com -clown8.com -clpcdn.com -clpga.org -clqccy.com -clqcgsgw.com -clqctxc.com -clqrmyy.com -clroi.com -cls-a.com -cls-c.com -cls.cc -clsa.com -clsbhs.com -clsgd.com -clshanghai.com -clsj.com -clsshare.com -clssn.com -clssnews.com -clsz-group.com -clto.cc -cltt.org -club-pc.com -clubcarev.com -clubhy.com -clubweixin.samsung.com -cluerich.com -clwhk.com -clx360.com -clxlb.com -clxsbj.com -clxsczx.com -clyiyuan.com -clz.me -clzd.com -clzd.fun -clzqm.com -clzqxp.com -clzt.com -clzyqche.com -cm-health.com -cm-inv.com -cm-iov.com -cm-worklink.com -cm.fancyapi.com -cm.ipinyou.com -cm233.com -cm3721.com -cm442.com -cmacredit.org -cmaif.com -cmaifz.com -cmakaoj.com -cmandroid.com -cmanuf.com -cmastd.com -cmb-leasing.com -cmbajia.com -cmbchina.biz -cmbchina.com -cmbchina.net -cmbchinawm.com -cmbi.com.hk -cmbimg.com -cmbuat.com -cmbwinglungbank.com -cmbwlb.com -cmbyc.com -cmca-view.com -cmcc.in -cmccb2b.com -cmcconenet.com -cmccsim.com -cmcgd.com -cmcha.org -cmcink.com -cmcloud.org -cmclound.com -cmcm.com -cmcmadmin.com -cmcmapp.com -cmcmcdn.com -cmcmcmai.com -cmcmiot.com -cmcmpc.com -cmcmsecurity.com -cmcmserv.com -cmcmtrans.com -cmco-cn.com -cmcrcw.com -cmct.tv -cmct22.com -cmctea.net -cmd.tw -cmd5.com -cmd5.la -cmd5.org -cmd8.com -cmda-ccs.com -cmda.net -cmdcxls.com -cmdns.xyz -cmdpe.com -cmdschool.org -cmdsir.com -cmdw.vip -cme-am.com -cme-cq.com -cme021.com -cmea-crtc.com -cmec.com -cmechina.net -cmedia360.com -cmedns.com -cmeii.com -cmejob.com -cmenergyshipping.com -cmer-ningbo.com -cmer.com -cmerdi.com -cmersz.com -cmes.org -cmf.biz -cmf.ltd -cmfchina.com -cmfish.com -cmfspay.com -cmft.com -cmfu.com -cmfwiper.com -cmgadx.com -cmgame.com -cmgchengdu.com -cmgdb.com -cmge.com -cmgemooc.com -cmgn.cc -cmgos.com -cmgrasp.com -cmhello.com -cmhijs.com -cmia.info -cmic.site -cmicapm.com -cmidc.net -cming.com -cmiotcd.com -cmiyu.com -cmjz.net -cmlog.com -cmltzz.com -cmmaap.com -cmmchn.com -cmmim.com -cmnetech.com -cmnxt.com -cmo2o.com -cmoc.com -cmodel.com -cmodes.com -cmol.com -cmpay.com -cmpe360.com -cmpedu.com -cmpo1914.com -cmr-co.com -cmread.com -cmreltd.com -cmri.cc -cmrid.com -cms1924.org -cms258.com -cmschina.com -cmscmc.org -cmseasy.cc -cmsfg.com -cmsjournal.net -cmsk1979.com -cmskchp.com -cmskcrm.com -cmsta.org -cmstop.com -cmstp.com -cmswin.com -cmt1993.com -cmt7.com -cmtauto.com -cmtdi.com -cmtopdr.com -cmtrq.com -cmtv1.com -cmu1h.com -cmudental.com -cmugx.com -cmuliang.com -cmviking.com -cmvtc.com -cmwb.com -cmwin.com -cmxrcw.com -cmykjx.net -cmypsc.com -cmys.cc -cmyunerp.com -cmyynet.com -cmzd.com -cmzi.com -cmzj.net -cmzyk.com -cn-5.com -cn-ab.com -cn-aci.com -cn-bldc.com -cn-bowei.com -cn-boxing.com -cn-c114.net -cn-caa.com -cn-cav.com -cn-cddc.com -cn-cdn1.skymansion.net -cn-ceramic.com -cn-cg.com -cn-chenguang.com -cn-chx.com -cn-comfort.com -cn-cr.com -cn-elite.com -cn-em.com -cn-ferment.com -cn-food.net -cn-ghtube.com -cn-goldeneagle.com -cn-hbs.com -cn-healthcare.com -cn-healthclass.com -cn-heipa.com -cn-huaguang.com -cn-huar.com -cn-hw.net -cn-immunotech.com -cn-kanghong.com -cn-lance.net -cn-lcd.com -cn-lingte.com -cn-lq.net -cn-mingda.com -cn-msedge.net -cn-mw.com -cn-natural.com -cn-only.com -cn-psy.com -cn-railway.net -cn-rcqc.com -cn-roofexpert.com -cn-saigew.com -cn-school.com -cn-sdf.com -cn-shine.com -cn-soft.com -cn-tf.com -cn-tom.com -cn-truck.com -cn-unitech.com -cn-vending.com -cn-visa.com -cn-weida.com -cn-wisely.com -cn-witmed.com -cn-xsl.com -cn-zhentai.com -cn-zhongrui.com -cn.bing.com -cn.bing.net -cn.download.nvidia.com -cn.eset.com -cn.mm.bing.net -cn.net -cn.online.standardchartered.com -cn.pool.ntp.org -cn.sc.com -cn.vc -cn.widevine.com -cn.windowssearch.com -cn0-6.com -cn006.com -cn010w.com -cn0434.com -cn0577.net -cn0713.com -cn0851.com -cn0917.com -cn11185.com -cn12365.org -cn156.com -cn168.com -cn18k.com -cn2030.com -cn22.net -cn2che.com -cn2rv.com -cn314.com -cn357.com -cn360cn.com -cn365a.com -cn365c.com -cn365d.com -cn365e.com -cn3wm.com -cn486.com -cn49.com -cn4e.com -cn51.com -cn5135.com -cn6szx.com -cn8118.com -cn88.net -cn880.com -cn939.com -cn99.com -cnaaa.com -cnaaa.net -cnaaa6.com -cnaaa7.com -cnaaa8.com -cnaaa9.com -cnaai.com -cnaca.org -cnacg.cc -cnacgc.com -cnaction.com -cnad.com -cnaf.com -cnafc.org -cnagcoin.com -cnaidc.com -cnaifm.com -cnaio.net -cnaiplus.com -cnair.com -cnaja.com -cnal.com -cnalu.com -cnambition.com -cname-cdn.com -cname-syd.com -cname123.net -cname88.com -cnamegslb.com -cnameip.xyz -cnamexingzuoy.com -cnamico.com -cnanzhi.com -cnaomeng.com -cnatom.com -cnats.com -cnautofinance.com -cnautonews.com -cnautotool.com -cnb.cool -cnb.run -cnb.space -cnbabylon.com -cnball.net -cnbang.net -cnbaosi.com -cnbaowen.net -cnbct.org -cnbeinuo.com -cnbeta.com -cnbetacdn.com -cnbfjt.com -cnbian.com -cnbidding.com -cnbio.net -cnbiocell.com -cnbis.com -cnbis.org -cnbizmedia.com -cnbjx.com -cnbksy.com -cnbkw.com -cnblogs.com -cnblogs.vip -cnblower.com -cnbm-njks.com -cnbmltd.com -cnbmtech.com -cnbmys.com -cnbnl.com -cnboat.com -cnbonly.com -cnbooking.net -cnbooks.org -cnbp.net -cnbrass.com -cnbsm.com -cnbugs.com -cnbuses.com -cnbysc.com -cnbzol.com -cnbzs.com -cnc-bga-oca.com -cnc-gd.net -cnc-school.com -cnca.net -cncad.net -cncaifu.com -cncame.com -cncanghai.com -cncapital.net -cncbinternational.com -cncbpc.com -cncc.bingj.com -cnccac.com -cnccchina.com -cnccdn.com -cnccea.com -cncdh2.com -cncdn.com -cncdnx.com -cncdomain.com -cncecci.com -cncecsci.com -cncecyc.com -cncfans.com -cncflux.com -cncgdns.com -cncgdns.net -cncgw.org -cnchainnet.com -cnchangyi.com -cnchaowei.com -cnchemmy.com -cncheng.com -cnchezhan.com -cnchospital.com -cnchu.com -cncico.com -cncjichuang.com -cncjishu.com -cncjj.com -cncjmjg.com -cnclead.com -cncljt.com -cncloud.com -cncma.org -cncmrn.com -cncms.com -cncmun.com -cncn.com -cncn.net -cncnbd.com -cncncn.com -cncnet.net -cncnki.com -cncolour.com -cncompute.com -cncoolm.com -cncopter.com -cncosmic.com -cncotton.com -cncourt.org -cncovs.com -cncqcloud.com -cncqcy.com -cncqsw.com -cncqti.com -cncr-it.com -cncrk.com -cncrony.com -cncruise.com -cncrypt.com -cncsen.com -cncsj.net -cncsparetools.com -cnction.com -cnctrip.com -cncwkj.com -cncxjyu.com -cnczjy.com -cndailu.com -cndao.com -cndata.com -cndatacom.com -cndbl.com -cndc-pl.com -cndcpta.com -cndds.com -cndelong.com -cndesign.com -cndesk.com -cndezhong.com -cndf.net -cndfdt.com -cndfele.com -cndfilm.com -cndhl.com -cndhotels.com -cndi-bj.com -cndi.com -cndids.com -cndingli.com -cndingxi.com -cndits.com -cndl.vip -cndledu.com -cndmaterial.com -cndns.com -cndns5.com -cndnscn.com -cndoct.com -cndog.net -cndongrun.com -cndongxiao.com -cndongya.com -cndoornet.com -cndoors.com -cndqjc.com -cndrealty.com -cndsnet.com -cndss.net -cndtour.com -cndw.com -cndy.org -cndzh.com -cndzq.com -cndzys.com -cne-motor.com -cne-om.com -cne.com -cnean.com -cnecc.com -cnechc.com -cnecport.com -cnedulaw.net -cneeex.com -cnegood.com -cnegov.com -cnegov.org -cnelc.com -cnelecom.net -cnelite.org -cneln.net -cnemb.com -cnena.com -cneol-dns.net -cneonl.com -cnep001.com -cnepaper.com -cnepaper.net -cnepub.com -cnerlang.com -cnetea.net -cnetec.com -cnetsec.com -cnevi.com -cnexp.net -cnexpo.com -cnexps.com -cneyoo.com -cnezsoft.com -cnfanews.com -cnfantasia.com -cnfarasia.com -cnfashion.net -cnfca.com -cnfce.net -cnfcyy.com -cnfczn.com -cnfczy.com -cnfeat.com -cnfeol.com -cnfeol.net -cnfg.cc -cnfia.com -cnfiberhome.com -cnfin.com -cnfina.com -cnfirst.net -cnfish.com -cnfisher.com -cnfjwz.com -cnfla.com -cnflyinghorse.com -cnfol.com -cnfolimg.com -cnfood.com -cnforever.com -cnforex.com -cnfosale.com -cnfpc.com -cnfpia.org -cnfpzz.com -cnfq.com -cnfrag.com -cnfrey.com -cnfrp.com -cnfrp.net -cnfruit.com -cnfth.com -cnfuhuaqi.com -cnfuyin.org -cnfxc.com -cnfxj.org -cnfyyj.com -cnfzflw.com -cngal.org -cnganen.com -cngaosu.com -cngaoxiu.com -cngb.org -cngba.com -cngbdl.com -cngbol.net -cngdhl.com -cngin.com -cngjtx.com -cngma.com -cngold.org -cngoldres.com -cngolf.tv -cngongfu.com -cngrain.com -cngreatop.com -cngreenfield.com -cngsda.net -cngsf.com -cngslb.com -cngslb.net -cnguangxing.com -cnguibao.com -cnguibie.com -cngulu.com -cngwv.com -cngwzj.com -cngxbj.com -cngxjy.com -cngxsmj.com -cngyff.com -cngyi.com -cnh5.net -cnhacker.com -cnhaifan.com -cnhalo.net -cnhanjia.com -cnhantide.com -cnhanxing.com -cnhaomen.com -cnhaoshengyi.com -cnhbql.com -cnhbstock.com -cnhbtc.com -cnhcb.com -cnhd.com -cnheader.com -cnhemiao.com -cnhenda.com -cnhengkai.com -cnhhgjx.com -cnhhl.com -cnhiger.com -cnhiker.com -cnhis.cc -cnhis.com -cnhli.com -cnhls.com -cnhlsxe.com -cnhnb.com -cnhongke.org -cnhonker.com -cnhow.net -cnhqt.com -cnhsjz.com -cnhsw.net -cnhszx.com -cnhuafag.com -cnhuafas.com -cnhuanya.com -cnhubei.com -cnhuoche.com -cnhvacrnet.com -cnhwjt.com -cnhyc.com -cnhyjt.com -cnhyky.com -cnhzsc.com -cnhzz.com -cniao5.com -cnibx.com -cniceberg.com -cnicif.com -cnielts.com -cniiib.com -cnimg.elex.com -cnimporter.com -cninfo.net -cninj.com -cninnovatel.com -cninsure.net -cninternetdownloadmanager.com -cnios.net -cnipa-gd.com -cnipa-hb.com -cnipa-pesc.com -cnipa-sc.com -cnipa-tj.com -cnipai.com -cnipr.com -cnirtrade.com -cnispgroup.com -cnit-research.com -cnitblog.com -cniteyes.com -cniti.com -cnitom.com -cnitpm.com -cnitv.net -cnix.cc -cnjccrusher.com -cnjdz.net -cnjecc.com -cnjf.com -cnjffb.com -cnjfsilk.com -cnjgtec.com -cnjhyg.com -cnjiajun.com -cnjiali.com -cnjiaolian.com -cnjingchu.com -cnjingtong.com -cnjingyigroup.com -cnjiuze.com -cnjiwang.com -cnjj.com -cnjjwb.com -cnjkzxw.com -cnjlc.com -cnjnsb.com -cnjob.com -cnjournals.com -cnjournals.net -cnjournals.org -cnjp-exp.com -cnjpetr.org -cnjpw.net -cnjrna.com -cnjsdz.com -cnjsun.com -cnjunhe.com -cnjunnet.com -cnjunzilan.com -cnjurry.com -cnjurui.com -cnjxl.com -cnjxol.com -cnjyky.com -cnjyw.net -cnjzb.com -cnjzgroup.com -cnk8.com -cnkaile.com -cnkang.com -cnkanshu.com -cnkefa.com -cnkeg.com -cnkesai.com -cnkeyboard.com -cnkgraph.com -cnkh.com -cnki.net -cnki.vip -cnkicheck.info -cnkidoi.com -cnkidoi.net -cnkidoi.org -cnkinect.com -cnkingjoy.com -cnkis.net -cnkivip.net -cnkix.com -cnkizw.com -cnklog.com -cnkly.com -cnknowledge.com -cnkosun.com -cnkpgs.com -cnkuai.com -cnky.net -cnkyz.com -cnlampholder.com -cnlandport.com -cnlang.org -cnlanhui.com -cnlanling.com -cnlaunch.com -cnlaw.net -cnlawweb.net -cnlcg.com -cnldedu.com -cnldzc.com -cnledw.com -cnlianjie.com -cnliequan.com -cnlight.com -cnlightnet.com -cnlinka.com -cnlishuai.com -cnlist.com -cnlist.org -cnlive.com -cnliveimg.com -cnljxh.com -cnlng.com -cnlongkou.net -cnlot.net -cnlso.com -cnluan.com -cnlubadd.com -cnluolun.com -cnlushan.com -cnlwg.com -cnmagtec.com -cnmanhua.com -cnmansi.com -cnmarathon.net -cnmarinefan.com -cnmattson.com -cnmcl.net -cnmdy.com -cnmec.biz -cnmeiwei.com -cnmf.net -cnmhg.com -cnmia.org -cnmie.com -cnmill.com -cnmineqs.net -cnminiorange.com -cnmjcn.com -cnmjcn.cyou -cnmjcn.net -cnmjin.net -cnmla.com -cnmmsc.org -cnmo.com -cnmobile.net -cnmods.net -cnmods.org -cnmoershu.com -cnmooc.org -cnmp3.com -cnmsl.net -cnmsn.com -cnmsn.net -cnmstl.net -cnmtpt.com -cnmuseum.com -cnmysoft.com -cnn100.com -cnnaihuo.com -cnnb.com -cnnbfdc.com -cnnbsa.com -cnncbhy.com -cnncguilin.com -cnndns.com -cnnetsec.com -cnneweragx.com -cnnfootballclub.com -cnnic.net -cnnice.com -cnnmol.com -cnnorge.com -cnnorip.org -cnnosolar.com -cnnot.com -cnnpz.com -cnns.net -cnntzr.com -cnnuo.com -cnnx.net -cnod.net -cnoddt.com -cnoic.com -cnoil.com -cnolnic.com -cnolnic.net -cnolnic.org -cnonjx.com -cnonline.org -cnoocengineering.com -cnoocltd.com -cnool.net -cnopendata.com -cnops.xyz -cnoptec.com -cnosr.com -cnoswiki.com -cnoutdoor.com -cnovirt.com -cnovtec-chamber.com -cnpaf.net -cnpaiwei.com -cnpaiwo.com -cnpanda.net -cnparking.org -cnpatent.com -cnpatrickstar.com -cnpcbidding.com -cnpcgas.com -cnpcmall.com -cnpdccutter.com -cnpenjing.com -cnpereading.com -cnpfjt.com -cnpghouse.com -cnpgjt.com -cnphar.net -cnpharm.com -cnphotec.com -cnphotos.net -cnpickleball.com -cnpickups.com -cnpicl.com -cnpiecgb.com -cnpiecsb.com -cnpkm.com -cnpl-ltl.com -cnplanetary.com -cnplugins.com -cnpmjs.org -cnpoli.com -cnponer.com -cnpot.com -cnpou.com -cnpoultry.com -cnpowdernet.com -cnpowdertech.com -cnpp100.com -cnppa.org -cnpressphoto.com -cnprofit.com -cnprs.com -cnpsec.com -cnpubc.com -cnpubg.com -cnpv.com -cnpxyy.com -cnpython.com -cnqc.com -cnqcc.com -cnqd.net -cnqiang.com -cnqichun.com -cnqifeng88.com -cnqjw.com -cnqr.org -cnquanjing.com -cnqwt.com -cnradio.com -cnraksmart.com -cnrancher.com -cnrceo.com -cnrcloudfm.com -cnrdm.com -cnrdn.com -cnreagent.com -cnree.com -cnrencai.com -cnrepair.com -cnrepark.com -cnrft.com -cnrhwq.com -cnricc.com -cnrih.com -cnrj45.com -cnrmall.com -cnrmc.com -cnrmobile.com -cnrotech.com -cnrouter.com -cnrsj.com -cnrubbermachinery.com -cnrunda.com -cnrunlin.com -cnrust.com -cnrv.io -cns.hk -cnsaes.org -cnsal.com -cnsanf.com -cnsantech.com -cnsav.com -cnsb.org -cnsbjy.com -cnsc8.com -cnsce.net -cnscee.com -cnsciedu.com -cnscn.com -cnscnet.com -cnscore.com -cnsdb.com -cnsdjxw.com -cnseay.com -cnseeq.com -cnsesan.com -cnsetsail.com -cnsfk.com -cnshende.com -cnshexinji.com -cnshippingdev.com -cnshiri.com -cnshjy.com -cnshuizu.com -cnshzm.com -cnside.com -cnsihai.com -cnsikao.com -cnsilkworm.com -cnsimeng.com -cnsimin.com -cnsiwu.com -cnskg.com -cnskyit.com -cnsleep.org -cnslpa.com -cnsnpj.com -cnsnvc.com -cnso.org -cnsoc.org -cnsoe.com -cnsoftbei.com -cnsoftnews.com -cnsolarwind.com -cnsolomo.com -cnsorl.com -cnspeed.com -cnsphoto.com -cnsrack.com -cnssr.org -cnssssl.com -cnste.org -cnstock.com -cnsudong.com -cnsug.com -cnsun.net -cnsunbird.com -cnsundin.com -cnsuning.com -cnsuv.com -cnsuzi.com -cnswds.com -cnswy.net -cnsynews.com -cnsz.org -cnszjlt.com -cnszxw.com -cnszyzz.com -cnta.com -cntagore.com -cntaijiquan.com -cntaiping.com -cntally.com -cntan.net -cntangka.com -cntapp.com -cntaz.com -cntc.com -cntech.com -cnten.com -cnteno.com -cntexjob.com -cntexnet.com -cntgol.com -cntheory.com -cnthinkers.com -cntjq.net -cntle.com -cntlfs.com -cntofu.com -cntopgear.com -cntoplead.com -cntour365.com -cntplus.com -cntrades.com -cntranslators.com -cntries.com -cntronics.com -cntslawfirm.com -cntuw.com -cntv.com -cntvan.com -cntwg.com -cntyjt.com -cntywhcm.com -cnu.cc -cnuninet.net -cnuozu.com -cnur.com -cnuschool.org -cnutcon.com -cnuuu.com -cnvcs.com -cnvf.com -cnvfq.com -cnvn.net -cnvps.com -cnvtech.com -cnwa.com -cnwaci.com -cnwaishi.com -cnwaking.com -cnwansun.com -cnwaternews.com -cnwb.net -cnwbwb.com -cnwear.com -cnweblog.com -cnwebshow.com -cnweiju.com -cnweiming.com -cnweisou.com -cnwest.com -cnwhc.com -cnwindows.com -cnwinenews.com -cnwood-ipp.org -cnwsgj.com -cnwtn.com -cnwutong.com -cnww1985.com -cnww9.com -cnwxw.com -cnwzd.com -cnwzhd.com -cnxcjt.com -cnxclm.com -cnxct.com -cnxds.com -cnxdw.com -cnxfans.com -cnxhacker.com -cnxhyp.com -cnxiangyan.com -cnxiantao.com -cnxianzai.com -cnxiaobai.com -cnxiaoyuan.com -cnxibu.com -cnxieku.com -cnxile.com -cnxincai.com -cnxingoplastics.com -cnxishui.net -cnxk.com -cnxklm.com -cnxmxf.com -cnxnmy.com -cnxos.com -cnxox.com -cnxulong.com -cnxunren.com -cnxuntu.com -cnxyk.com -cnxzm.com -cnyada.net -cnyanglao.com -cnyce.com -cnydgroup.com -cnyeig.com -cnyings.com -cnyipu.com -cnyixun.com -cnyouhao.com -cnypa.org -cnys.com -cnytgy.com -cnyw.net -cnywinfo.com -cnyydj.com -cnzcn.net -cnzdfm.com -cnzdhg.com -cnzgc.com -cnzgcec.com -cnzhanting.com -cnzhanzhang.com -cnzhengmu.com -cnzhepai.com -cnzhhy.com -cnzhiyuanhui.com -cnzhjk.com -cnzhongcha.com -cnzhongzhuan.com -cnzici.com -cnzjdd.com -cnzjj.com -cnzjol.com -cnzkzg.com -cnzmzy.com -cnznfy.com -cnzps.com -cnzrc.com -cnzscx.com -cnzskj.com -cnzsqh.com -cnzsrf.com -cnzsyz.com -cnzweal.com -cnzxsoft.com -cnzxwh.com -cnzy56.com -cnzyao.com -cnzzla.com -cnzznz.com -co-effort.com -co-farming.com -co-inclusion.org -co-mall.net -co-mens.com -co-plant.com -co-sail.com -co-trust.com -co188.com -co188cdn.com -co1in.me -coach-edu.com -coach-japanese.com -coahr.net -coalcloud.net -coalstudy.com -coantec.com -coaoo.com -coastalcitycinema.com -coatingol.com -coatu.com -cobenet.com -cobetterfiltration.com -cobioer.com -coboak.com -cobuy.net -cobvgroup.com -cocas.cc -cocfan.com -cochemist.com -cochicon.com -cocia.org -coco413.com -cocoachina.com -cocodiy.com -cocogoat.work -cocohealthcare.com -cocololo.com -coconuet.com -cocoon-data.com -cocophp.com -cocoren.com -cocos.com -cocos.org -cocos2d-x.org -cocos2d.org -cocos2dx.net -cocosgame.net -cocostudio.org -cocozq.com -cocss.com -codante.org -code-abc.com -code-by.org -code369.com -code666.com -code84.com -codeachange.com -codeages.work -codeaha.com -codebaoku.com -codebe.org -codebuddy.info -codebuddy.net -codebuddy.pro -codebuddy.work -codebus.net -codebye.com -codechina.net -codecomeon.com -codedefault.com -codeeeee.com -codeflying.net -codeforge.com -codehy.com -codeidc.com -codeios.com -codekenan.icu -codekissyoung.com -codekk.com -codelife.cc -codemart.com -codenews.cc -codepku.com -codeplayer.vip -codeplaygames.com -codeprj.com -codepub.com -coder.work -coder100.com -coder4.com -coder55.com -coderbee.net -coderclock.com -codercto.com -coderhuo.tech -coderli.com -codernav.com -coderplanets.com -coderprepares.com -codersec.net -codersrc.com -coderyuan.com -coderzh.com -codes51.com -codesdq.com -codesocang.com -codesoft.hk -codess.cc -codewd.com -codeweblog.com -codeweixin.com -codewoody.com -codex-watch.com -codezh.com -codezyw.com -codigoscript.com -coding-io.com -coding-newsletter.com -coding-pages.com -coding.love -coding.me -coding.net -coding3min.com -codingapp.com -codingchangeworld.com -codingcorp.net -codingdao.com -codingke.com -codingsky.com -codingwhy.com -codingyang.com -codj.net -codm.com -codming.com -codmwest.com -codoon.com -codooncdn.com -coelmont.com -coeusssyp.com -cofco-capital.com -cofco-trust.com -cofco.com -cofcoet.com -cofcofuturesintl.com -cofcoko.com -cofcosp.com -cofcotrading.com -cofeed.com -coffee-hdl.com -coffee-iot.com -coffee-script.org -coffee08.com -coffeecdn.com -coffeejp.com -coffeeofchina.com -coffeeteaimagazine.com -cofferxm.com -cofile.net -cofly.com -cofool.com -cofortest.com -cogcpa.org -cogdelschool.com -cogertn2.com -cogitosoft.com -cognizepower.com -cogobuy.com -cogolinks.com -cogonline.com -cogskl.com -cohim.com -cohl.com -cohuatech.com -coicjs.org -coilmx.com -coin007.com -coin163.com -coinabc.com -coinall.live -coinall.ltd -coincsd.com -coindog.com -coinglass.com -coinnice.com -coinrobotics.com -coins-carnival.com -coinsky.com -coinvs.com -coinyue.com -cokll.com -cokutau.com -colahotpot.com -colasmart.com -coldextrusion.com -coldfunction.com -coldlake1.com -coldlar.com -coli688.com -colineapp.com -colinker.com -colipu.com -collaborate.download.prss.microsoft.com -collaborateppe.download.prss.microsoft.com -collect-med.com -college-ing.com -colly-pink.com -collycn.com -colobu.com -colocess.com -color-measure.com -color365.com -colorbird.com -colorfulclouds.net -colorfulltech.net -colorimeter.com -coloros.com -coloros.net -colortechchina.com -colorv.com -coloryr.com -colosseo7143.xyz -colourlife.com -columbia-china.com -columbia-kaiyuan.com -columbia-wuxi.com -com-hs-hkdy.com -com.fi -com.mp -com.tv -com4loves.com -comac.cc -comake.online -combestlogistics.com -combiosz.com -combocn.com -combofin.com -combomen.com -combosm.com -combpm.com -combss.com -comdeep.com -come-bio.com -comebond.com -comebt.com -comefilm.com -comeken.com -comeorg.com -comestuff.com -comet.cc -cometagame.com -comeyes.com -comflowy.com -comfylink.com -comiai.com -comic520.com -comicdd.com -comicer.com -comicfans.net -comicv.com -comicyu.com -comiis.com -cominbio.com -comingchina.com -comlan.com -comlbs.com -commchina.net -communicatte.com -comnergy.com -comocloud.net -compal.com -companydns.com -compassedu.hk -compevt.com -compgoo.com -complant.com -complexstudio.net -componentcn.com -composolder.com -compoundsemiconductorchina.net -comprame.com -computeinit.com -computer26.com -comra.org -comsazms.com -comsenz.com -comseoer.com -comsharp.com -comway-mro.com -comweixin.com -comwin-sh.com -con-star.com -con.sh -con3c.com -conan06.com -conantoptical.com -conbagroup.com -conchdate.com -conchdesktop.com -conco-esd.com -concordiashanghai.org -concordmedical.com -concox.net -concretehr.com -conda-group.com -condorchina.com -conele.com -conergas.net -conew.com -conextweb.com -confluxrpc.com -conghua.com -congmiqq.com -congrongfund.com -congtoo.com -congtoukaishi.com -congwuku.com -congyicn.com -congzao.com -congzhi.com -conhagroup.com -conlerpharm.com -conodmedical.com -conoha.vip -conpak.com -conpak.com.hk -conshow.com -conslive.com -consmation.com -console-integration.cdnetworks.com -console.cdnetworks.com -constao.com -constar-gd.com -constgroup.com -content4ads.com -contentchina.com -contentstore.htcvive.com -controlinai.com -conuo.com -convertlab.com -convoypayments.com -cony-tech.com -conyedit.com -conyli.cc -coo1read.com -coobar.com -coobos.com -cooboys.com -cooc-china.com -coocaa.com -coocare.com -coocent.net -coodesker.com -coodir.com -coodove.com -coofandy.com -coofans.com -cooffee.net -cooh5.com -coohua.com -cooioo.com -cookcai.com -cookerweb.com -cookicut.com -cookie4you.com -cookiezhong.com -cool-admin.com -cool-de.com -cool-play.com -cool80.com -coolact.net -coolaf.com -coolapk.com -coolapkmarket.com -coolapkmarket.net -coolaw.com -coolban.com -coolbcloud.com -coolbuy.com -coolcar.cc -coolccloud.com -coolcode.org -coolcode.tech -coolcou.com -cooldock.com -cooldu.com -cooleasy.net -coolecho.net -coolecloud.com -coolexe.com -coolfd.com -coolgaga.com -coolgamebox.com -coolgua.net -coolight.cool -coolkaba.com -coolkit.cc -coolkk.net -coolku.cc -coollf.com -coolmitech.com -coolnull.com -coolook.org -coolool.com -coolpad.com -coolping.com -coolqi.com -coolsdream.com -coolshark.com -coolsite.vip -coolsite360.com -coolsphoto.com -cooltechsh.com -cooltuku.com -cooluc.com -coolwarmsy.com -coolwei.com -coolxcloud.com -coolxigua.com -coolyun.com -coolzcloud.com -coomix.net -coomo99.com -coomodel.com -coonote.com -cooole.com -coooolfan.com -coooz.com -coopcc.com -cooperningbo.com -coordsx.com -cootek.com -cootekos.com -cootekservice.com -coovee.com -coovee.net -coowor.com -cooyun.com -cop.cdnetworks.com -copl.com.hk -copperalliance.asia -copperhome.net -copyedu.com -copyfuture.com -copythelink.com -copywatchstyle.com -cor-games.com -coralset.com -corari.com -core-biopharma.com -corebai.com -coreesports.net -corehalo.com -coremakingsolutions.com -corerain.com -corex-design.com -corgichina.com -corlercar888.com -coros.com -corp-email.com -corp.cc -corpallies.com -corpautohome.com -corpease.net -corpize.com -corpring.com -coryes.com -corys.fun -cos-beauty.com -cos-show.com -cos126.com -cosbuluo.com -coschat.com -cosco-logisticsqd.com -cosco.com -coscon.com -coscoshipping.com -coscoshippingenergy.com -cosdnsresolve-wxzf.com -cosdnsresolve.com -cosedm.com -cosen.net -coshelper.com -coshin.com -coship.com -cosinedu.com -cosineg.com -cosize.com -cosjiang.com -coslinic.com -cosmileonly.com -cosmo-lady.com -cosmoplat.com -cosmoschem.com -cosmosource.com -cosmx.com -cosoar.com -cosofteck.com -cosplay8.com -cosplayla.com -costku.com -costuan.com -cosunter.com -cosxu.com -cosyjoy.com -cosz.com -cotek-robotics.com -cotong.com -cotticoffee.com -cottonchina.org -cotv.tv -counect.com -couns.com -couplefish.com -couponover.info -couqiao.net -courage-magnet.com -coursegraph.com -cousz-gd.com -covcec.com -coverweb.cc -covinda.com -covoart.com -covtv.com -cowarobot.com -cowcs.com -cowealth.com -cowellhealth.com -cowinfo.com -cowlevel.net -cowrycare.com -cowtransfer.com -coyigroup.com -coyis.com -coyotebio-lab.com -coyuk.com -coyuns.net -coz9uiesr5zv6.com -cozdyez2ap.com -coze.site -cozonenet.com -cp-keji.com -cp0556.com -cp121.com -cp365.org -cpa51.com -cpaddress.com -cpaed.org -cpajia.com -cpakg.com -cpass.com -cpbao.com -cpcaauto.com -cpcadata.com -cpcccac.com -cpcell.com -cpcep.com -cpcni.net -cpcphone.com -cpcw.com -cpdad.com -cpdaily.com -cpdasoft.com -cpdhd.com -cpdyj.com -cpe-fund.com -cpecc.net -cpeccgx.net -cpema.org -cpeol.net -cpepgc.com -cpfia.org -cpg-motor.com -cphfgg.com -cphiic.com -cphoto.net -cphoto.org -cphu.org -cpiano.com -cpiaoju.com -cpiccdn.com -cpicfiber.com -cpicfunds.com -cpidi.com -cpihualai.com -cpitsh.org -cpixe.com -cpjltx.com -cplamc.com -cplotus.com -cpm1000.com -cpmiao.net -cpmrc.org -cpo.xyz -cpo2o.com -cpolar.com -cpolive.com -cpooo.com -cposchool.com -cpp-prog.com -cpp114.com -cpp32.com -cppb-wg.com -cppblog.com -cppc123.com -cppcns.com -cppdebug.com -cppfoto.com -cpph.com -cppinfo.com -cpplay.com -cppoly.com -cpppf.org -cppszw.com -cpqrmyy.com -cpro.baidustatic.com -cproton.com -cps1688.com -cps800.com -cpsbeijing.org -cpse.com -cpsenglish.com -cpt-world.com -cpt123.com -cptae.com -cptc56.com -cptn.tv -cptv2018.com -cpu114.com -cpu668.com -cpu7.com -cpubbs.com -cpudj.com -cpuh2.com -cpury.com -cpuxn.com -cpvatgkx.com -cpwlx.com -cpwnews.com -cpwzb.com -cpzls.com -cpzst.com -cpzyrj.com -cq-cable.com -cq-city.com -cq-ct.com -cq-ct.tech -cq-eatge.com -cq-gyw.com -cq-md.com -cq-ns.com -cq-pf.com -cq-qqcg.com -cq-rongjia.com -cq-sound.com -cq-spring.com -cq-tencentclb.cloud -cq-tencentclb.com -cq-tencentclb.net -cq-tencentclb.work -cq-wnl.com -cq-yj.com -cq-yt.com -cq168.com -cq315house.com -cq3a.com -cq5135.com -cq556.com -cq6.com -cq69.com -cq6969.com -cq8.com -cq96868.com -cq9yuan.com -cqaaa.com -cqace.com -cqaflopack.com -cqai.vip -cqaihua.com -cqaky.com -cqallcure.com -cqange.com -cqangel.com -cqanmei.com -cqapg.com -cqaso.com -cqatec.com -cqbafumen.com -cqbayy.com -cqbbzyy.com -cqbdfeng.com -cqbfc.com -cqbm2007.com -cqbnedu.com -cqbnjsjt.com -cqbnrc.com -cqbntv.com -cqbode.com -cqbondrite.com -cqbosai.com -cqbshyy.com -cqbwjc.net -cqbys.com -cqc-ts.com -cqc.so -cqcartest.com -cqcasin.com -cqcatr.com -cqcb.com -cqcbank.com -cqcbd-jbc.com -cqcbl.com -cqccci.com -cqccn.com -cqccsic.com -cqcdbs.com -cqcdc.org -cqcdxl.com -cqcfe.com -cqchinabase.com -cqchuangjing.com -cqcico.com -cqcig.com -cqciig.com -cqcitymedia.com -cqcjnj.com -cqcjxx.com -cqcklib.com -cqcmi.com -cqcmxy.com -cqcoal.com -cqcp.net -cqcpt.com -cqcrane.com -cqcrossmobil.com -cqcsic.com -cqcssk120.com -cqcsskyy.com -cqcy.com -cqcyhuagong.com -cqcyxyxh.com -cqczx.com -cqdahan.com -cqdai.com -cqdailynews.com -cqdaming.com -cqdashun.com -cqdayou.com -cqdc.com -cqdcg.com -cqdcgj.com -cqddpaint.com -cqddyl.com -cqddzx.com -cqdent.com -cqdggs.com -cqdianxin.com -cqdic.com -cqdingqi.com -cqdingyan.com -cqdj.cc -cqdjzyy.com -cqdkj.com -cqdky.com -cqdongnanhospital.com -cqdongyang.com -cqdpt.com -cqdting.com -cqduoliu.com -cqdzw.com -cqe.cc -cqeca.org -cqedo.com -cqedu.online -cqeec.com -cqelyy.com -cqem.net -cqemme.com -cqenergy.com -cqest.com -cqetcvip.com -cqeyeyy.com -cqfdcxy.com -cqfesco.com -cqfic.com -cqfind.com -cqfire.com -cqfjly.com -cqflct.com -cqfmbank.com -cqfus.com -cqfuyou.com -cqfygzfw.com -cqgaoke.com -cqgc.com -cqgdcy.com -cqgdkf.com -cqgearbox.com -cqgewerv.com -cqggwx.com -cqggx.com -cqggzy.com -cqgh.org -cqgj.net -cqglcj.com -cqglion.com -cqgmfw.com -cqgnhg.com -cqgrain.com -cqgreat.com -cqgsdb.com -cqgtjt.com -cqguangren.com -cqguangrong.com -cqguli.com -cqguohua.com -cqguorui.com -cqgwy.org -cqgwzx.com -cqgxjscy.com -cqgxqsmartedu.com -cqgyjsxy.com -cqgyjt.com -cqgymsxx.com -cqgyzone.com -cqgz.com -cqgzdlgc.com -cqgzf.net -cqh2o.com -cqhac.com -cqhansa.com -cqhaofeng.com -cqhasin.com -cqhbcy.net -cqhbzh.com -cqhejuda.com -cqhengbogroup.com -cqhengding.com -cqhengr.com -cqhewin.com -cqhhm.com -cqhimalayanky.com -cqhjj.com -cqhjjt.com -cqhjyzl.com -cqhkcdns.com -cqhkyy.com -cqhma.com -cqhnbsb.com -cqhncd.com -cqhongshuangda.com -cqhouse.net -cqhrjd.com -cqhsjs.com -cqhtu.com -cqhushan.com -cqhwr.com -cqhwzs.com -cqhxdbj666.com -cqhxeye.com -cqhxf.com -cqhxfk.com -cqhxgf.com -cqhxyy.com -cqhxzz.net -cqhyd.com -cqhydraulic.com -cqhyjtss.com -cqhyky.com -cqhylab.com -cqhyyy120.com -cqhz510.com -cqhzjy.com -cqiic.com -cqiivc.com -cqindex.com -cqink.com -cqinstinct.com -cqioe.com -cqios.com -cqiot.cc -cqipa.com -cqipc.net -cqirobot.com -cqiss.com -cqit.com -cqiter.com -cqiti.com -cqitic.com -cqivc.com -cqjat.com -cqjbrc.com -cqjchg.com -cqjdc.com -cqjdgc.com -cqjdgyx.com -cqjdjczx.com -cqjet.com -cqjgx.com -cqjhfk.com -cqjhgczx.com -cqjhsy.com -cqjhtxy.com -cqjiangxue.com -cqjiaxian.com -cqjieli.com -cqjiexun.com -cqjingyu.com -cqjizhi.com -cqjj.net -cqjjnet.com -cqjkhb.com -cqjlyy.net -cqjnjs.com -cqjnkgjt.com -cqjnw.org -cqjob.com -cqjpyg.com -cqjsaq.com -cqjsd.com -cqjtedu.com -cqjtsn.com -cqjunan.com -cqjx.net -cqjxw.net -cqjy.com -cqjyfcyy.com -cqjyhuida.com -cqjyn.com -cqjyxh.com -cqjzxy.com -cqjzy.com -cqkangshan.com -cqkaogu.com -cqkbjd.com -cqkcyy.com -cqkdtui1.com -cqkeguan.com -cqkejufu.com -cqkepu.com -cqkerui.com -cqkexun.com -cqkeye.com -cqkfb.com -cqkhjt.cc -cqkjb.com -cqkjwx.com -cqkjzyxy.com -cqknls.com -cqkqinfo.com -cqkqjt.com -cqkundian.com -cqkx.com -cqkxhospital.com -cqkytech.com -cqkytq.com -cqlaifu.com -cqlandtower.com -cqlba.com -cqlbjg.com -cqld.com -cqlfn.com -cqlhyy.com -cqlibo.com -cqlilan.com -cqlincom.com -cqlinrui.com -cqliving.com -cqljhr.com -cqljjrjd.com -cqljjt.com -cqljmjs.com -cqljzp.com -cqlkuav.com -cqllfood.com -cqlonghoo.com -cqloway.com -cqlp.com -cqlpa.com -cqlummy.com -cqlxzjzx.com -cqlyckj.com -cqlydc.com -cqlys.com -cqlyy.com -cqlzz.com -cqmaika.com -cqmama.net -cqmanzhong.com -cqmarathon.com -cqmas.com -cqmbkq.com -cqmbyy.com -cqmcu.com -cqmeidoing.com -cqmeiyuan.com -cqmiaoa.com -cqminghua.com -cqmlmh.com -cqmmgo.com -cqmmjt.com -cqmpf.com -cqmsdq.com -cqmstech.com -cqmtek.com -cqmtswkj.com -cqmva.com -cqmw.com -cqmylike.com -cqmzj.com -cqnc.cc -cqncnews.com -cqndl.com -cqnetcn.com -cqnews.net -cqnhn.com -cqnht.com -cqnkhz4j8nmhqp.com -cqnongzi.com -cqntdq.com -cqnurse.com -cqnx.com -cqnydb.com -cqooc.com -cqpac.com -cqpartek.com -cqpbx.com -cqpearlriver.com -cqpeidu.com -cqpeixin.com -cqpet120.com -cqpfjt.com -cqpfmz.com -cqph.com -cqphar.com -cqpix.com -cqpost.com -cqpump.com -cqpwt.com -cqpwy.com -cqpwz.com -cqpx.cc -cqpzjc.com -cqqcjzsj.com -cqqgsafe.com -cqqgx.com -cqqianggu.com -cqqiujing.com -cqqiyi.com -cqqjyy.com -cqqnb.net -cqqnjt.com -cqqp.com -cqqsys.com -cqqsyy.com -cqqttk.com -cqqxxny.com -cqrafk.com -cqrailway.com -cqranxie.com -cqrc.net -cqrcb.com -cqrcdsc.com -cqrcfl.com -cqrfym.com -cqrig.com -cqrksw.com -cqrm.com -cqrmb.com -cqrmrq.com -cqrqdx.com -cqrwys.com -cqryxfp.com -cqs-hm.com -cqsaea.com -cqsamr.com -cqscmy.net -cqsdei.com -cqsdzy.com -cqsfqcpj.com -cqsfybjy.com -cqsgczjxx.org -cqshenou.com -cqshic.com -cqship.com -cqshipping.com -cqshoucheng.com -cqshrq.com -cqshulan.com -cqshyzx.com -cqsifang.com -cqsj365.com -cqsjb.com -cqsjbc.com -cqsjky.com -cqsjnzx.com -cqsjsyy.com -cqslhjx.com -cqslim.com -cqslim.net -cqsms.net -cqsoft.org -cqsongshan.com -cqspx.com -cqsq.com -cqssgf.com -cqssxwsxx.com -cqstgxy.com -cqstjt.com -cqstjzx.com -cqstudents.com -cqsuoqi.com -cqswah.com -cqswjjx.com -cqswxcy.com -cqsx.net -cqsxdb.com -cqsxedu.com -cqsxhb.com -cqsxjsj.com -cqsxrj.com -cqsxsl.com -cqsyjq.com -cqsyjz.com -cqsymj.com -cqsyz.com -cqszfy.com -cqsznyy.com -cqsztech.com -cqszyy.com -cqszyyhyxh.com -cqszzs.com -cqt-top.com -cqtalent.com -cqtally.co -cqtally.com -cqtanlaoda.com -cqtaotan.com -cqtbyy.com -cqtctech.com -cqtea.com -cqtfjs.com -cqtiantai.com -cqtieba.com -cqtits.com -cqtkjj.com -cqtkyy.com -cqtl.org -cqtlskj.com -cqtn.com -cqtnfs.com -cqtns.com -cqtqzx.com -cqtrans.com -cqtransit.com -cqtrend.com -cqtresearch.com -cqtrvl.com -cqttech.com -cqtuoda.com -cqtxyy.com -cqtyanglao.com -cqtynpx.com -cquae.com -cquc.net -cqud.net -cqudp.com -cqukf.com -cqulit.com -cquni.com -cqvantai.com -cqvavo.com -cqvcet.com -cqvip.com -cqvip.vip -cqvist.net -cqw.cc -cqwanli.com -cqwanshang.com -cqwater.net -cqwbdq.com -cqwdlwl.com -cqweh.com -cqwenbo.com -cqwest.com -cqwin.com -cqwlg.com -cqwlzz.com -cqwsnews.net -cqwsrmyy.com -cqwszjs.com -cqwtqc.com -cqwtqx.com -cqwulong.net -cqwuxi.com -cqwxnews.net -cqwzax.com -cqwzwh.com -cqwzwl.com -cqxayl.com -cqxcx.net -cqxdfpr.com -cqxdjgxx.com -cqxdnzyy.com -cqxdyy.com -cqxfxh.com -cqxh120.com -cqxhdc.com -cqxhyz.com -cqxianfeng.com -cqxiheng.com -cqxinge.com -cqxingyun.com -cqxinhua.com -cqxinshuo.com -cqxitou.com -cqxj-hospital.com -cqxjr.net -cqxm-group.com -cqxnyy.com -cqxpxt.com -cqxqz.com -cqxshs.com -cqxsxt.com -cqxszx.net -cqxtcx.com -cqxwdb.com -cqxwtx.com -cqxxly.net -cqxxt.com -cqxyfl.com -cqxygf.com -cqxyjc.com -cqxzxy.com -cqybhr.com -cqybxl.com -cqyc.com -cqyc.net -cqycqzyy.com -cqydgz.com -cqydxy.com -cqyestar.com -cqyfjs.com -cqyfkgjt.com -cqyfsk.com -cqygfm.com -cqyhpx.com -cqyhss.com -cqyhyq.com -cqyingang.com -cqyisen.com -cqyixiao.com -cqyljgxx.com -cqym120.com -cqynzz.com -cqyongfeng.com -cqyouloft.com -cqyqjz.com -cqysgyy.com -cqysp.com -cqysxx.com -cqysxy.com -cqyti.com -cqytjt.com -cqytsw.com -cqytu.com -cqytyk.com -cqyu.com -cqyuanjing.com -cqyuhong.com -cqyunshi.com -cqyuxing.com -cqyuzhoujx.com -cqyx999.com -cqyxlx.com -cqyxzz.com -cqyygz.com -cqyyjc.com -cqyysx.com -cqyyzy.com -cqyznews.com -cqzbcg.com -cqzcjw.com -cqzct.com -cqzdrl.com -cqzgl.com -cqzgzdh.com -cqzhihaolaw.com -cqzhongxingyuan.com -cqzhqyjt.com -cqzikao.com -cqzike.com -cqzk.net -cqzkjs.com -cqzls.com -cqzoan.com -cqzq6.com -cqzql.com -cqzrsh.com -cqzskj.com -cqzuxia.com -cqzww.com -cqzxrmyy.com -cqzxwx.com -cqzxzlyy.com -cqzyktqxxh.com -cqzymj.com -cqzyx.net -cqzyzs.com -cqzz.net -cqzzcd.com -cr-artisan.com -cr-cts.com -cr-expo.com -cr-leasing.com -cr-newenergy.com -cr-power.com -cr11gcsgd.com -cr11gee.com -cr15g.com -cr173.com -cr175.com -cr18g.com -cr19gj.com -cr20g.com -cr6868.com -cr8gc.com -crabchina.com -craer.com -craftcontact.com -craftsb2b.com -craim.net -crandom.com -crane-china.cc -crane-net.com -cranewh.com -crash.work -cravatar.com -crazepony.com -crazybig.fun -crazyenglish.com -crazyflasher.com -crazyming.com -crazymoneys.com -crazyones.world -crazyphper.com -crazypm.com -crazyrtc.com -crazywong.com -crbbg.com -crbc.com -crbeverage.com -crbiopharm.com -crc-bj.com -crc.com.hk -crc.hk -crc81.com -crcapm.com -crcb966888.com -crcccl.com -crccfl.com -crccig.com -crcctc.com -crcebg.com -crcegsd.com -crcement.com -crcgas.com -crchi.com -crclogistics.com -crcrfsp.com -crcsz.com -crct.com -crctrust.com -crdyf.com -cre.net -cread.com -creality.com -crealitycloud.com -creatby.com -createcdigital.com -createw.com -createwf.com -creati5.com -creation-bj.com -creationventure.com -creative-micro.com -creativityeco.com -creator-sh.com -creatreme.com -creatunion.com -creavidia.com -crec4.com -crec4mc.com -crecexpo.com -crecg-jt.com -crecg.com -crecgi.com -crechan.com -crecohe.com -crecshif.com -crectgroup.com -crecu.com -cred.com -credibleglass.com -credit100.com -creditcn.com -credithc.com -creditrepairjournal.com -creditsailing.com -creditzuji.com -creegc.com -creflux.net -creia.net -creo-support.com -crep-led.com -crepcrep.com -creplus.net -crestv.com -cret-bio.com -crewchina.net -crewcn.com -crfchina.com -crfsdi.com -crgdpharm.com -crgecent.com -crggcn.com -crgkxl.com -crgy.com -crhealthcare.com.hk -cri-grandera.com -cri-on.com -criankara.com -criarabic.com -criberlin.com -cribsas.com -cric.com -cric2009.com -cricbigdata.com -cricchina.com -crieasyfm.com -crienglish.com -criezfm.com -crifan.org -crifst.com -crilondon.com -crimoon.net -crimoscow.com -crinductance.com -crinihaochina.com -cririo.com -criseoul.com -crisydney.com -critokyo.com -criwashington.com -crjfw.com -crl.globalsign.net -crl.kaspersky.com -crl.pki.goog -crlf0710.com -crlg.com -crlintex.com -crls.pki.goog -crm.cc -crm1001.com -crmch.com -crmclick.com -crmeb.com -crmeb.net -crmicro.com -crmip.com -crmyy.com -crnews.net -crodigy.com -crodigynat.com -croot.com -croplifechina.org -cross-border-public.com -cross-zone.com -crossborderlion.com -crossingstar.com -crossingstarstudio.com -crossmo.com -crosswaycn.com -crov.com -crown-chain.com -crowndth.com -crowya.com -crpaas.com -crpcg.com -crpharm.com -crracelve.com -crrcgc.cc -crrjz.com -crs811.com -crsc.cc -crscm.com -crsky.com -crsn168.com -crtc-hr.com -crtdri.com -crtg.com -crtrcloud.com -crtrust.com -crtyhr.com -crucg.com -cruelcoding.com -crukings.com -crvc.com -crvic.org -crwnt.com -crx4.com -crxdl.com -crxsoso.com -cry33.com -crysound.com -crystalcg.com -crystaledu.com -crystalskeleton.com -cryuantafund.com -cs-air.com -cs-airport.com -cs-cjl.com -cs-cydq.com -cs-eval.com -cs-jinwei.com -cs-pos.com -cs-video.com -cs-xf.com -cs0799.com -cs090.com -cs12333.com -cs2-aipn.com -cs27.com -cs2c.com -cs2ccloud.com -cs30.net -cs451.com -cs48.com -cs528.com -cs53.com -cs6zhong.com -csadec.com -csair.com -csairdutyfree.com -csairholiday.com -csairshop.com -csapa.org -csarw.org -csaspx.com -csau.com -csbes.com -csbme.org -csbtv.com -csbyjy.com -csc100.com -csc108.com -csc86.com -cscac.net -cscan.co -cscatv.com -cscdf.org -cscec.com -cscec1b-bj.com -cscec1b.net -cscec7b.com -cscec81.com -cscec8bud.com -cscecbjadi.com -cscecparking.com -csci.hk -cscjedu.com -csclc.com -cscmgg.com -csct-china.com -cscxsemi.com -csd568.com -csdc.info -csdczx.com -csdeshang.com -csdewater.com -csdh.com -csdhe.com -csdhxx.com -csdiy.wiki -csdk.com -csdn.com -csdn.net -csdyjs.net -csdyx.com -cse-bidding.com -csea1991.org -csea767.com -csebank.com -csec-tencentclb.cloud -csec-tencentclb.com -csec-tencentclb.net -csec-tencentclb.work -csemc.com -cseptc.net -cserveriip.com -cserwen.com -cseve.com -csflgg.com -csfounder.com -csfreezer.com -csftyy.com -csfudu.com -csfybjy.com -csgasgroup.com -csgcjxxh.com -csgcyy.com -csgdjtxy.com -csgfjc.com -csghy.com -csgjhzzx.com -csgjjgxx.com -csgjjt.com -csgkjt.com -csgocn.net -csgongshui.com -csgpc.org -csgwexpo.com -csgxyl.com -cshaodu.com -csharpkit.com -cshbl.com -cshbxy.com -cshcp.com -cshijian.com -cshixi.com -cshltx.com -cshnac.com -cshnkj.com -cshrzc.com -cshslf.com -cshst.com -cshuanyu.com -cshufanyi.com -cshxdc.com -cshxschool.com -cshypg.com -cshyqx.com -cshzywkj.com -csiamd.com -csic-711.com -csic612.com -csic6801.com -csic76.com -csicmakers.com -csicpl.com -csictec.net -csiea.net -csig158.com -csiic.com -csilp.com -csimcc.com -csisolar.com -csj-stcloud.com -csjcs.com -csjdeveloper.com -csjgwy.com -csjiexin.com -csjitian.com -csjkjs.com -csjkjt.com -csjmould.com -csjmzy.com -csjqfz.com -csjsdz.com -csjtys.net -csjtz.com -csjunwei.com -csjvision.com -csjwang.com -cskaoyan.com -cskefu.com -cskjgc.com -cskliz.com -cskrl.com -csksoft.net -cskx.com -cskxjk.com -cslbbs.net -cslfans.com -cslgfd.com -cslkjt.com -cslou.com -csluye.com -cslxzx.com -cslyrc.com -csmadik.com -csmall.com -csmama.net -csmar.com -csmbcx.com -csmc-cloud.com -csmedlab.com -csmh-semi.com -csmjzs.com -csmscon.com -csmxh.com -csmzxy.com -csnbgsh.com -csnhjyxx.com -csnhszjy.com -csnhw.com -csnzxl.com -csoly.com -csomdmyxy.com -csomick.com -cspasz.org -cspbj.com -cspcbaike.com -cspda.net -cspengyuan.com -cspiii.com -cspmk.com -cspplaza.com -cspro.org -cspruc.com -csptia.org -csqc.cc -csqnews.com -csqsg.com -csrcare.com -csrcbank.com -csrcsc.com -csrda.com -csrenliu.com -csres.com -csrgm.com -csrlzyw.com -csrunhe.com -css-js.com -css3er.com -css6.com -css88.com -cssaaa.com -cssbe.com -cssbkj.com -cssbyy.com -cssccq.com -csscia.com -csscmall.com -cssdsyy.com -csseplastic.com -cssf.cc -cssf.com -cssf.net -cssforest.org -cssfybjy.com -cssg-ahi.com -csshenda.com -csshenyu.com -csshjdxh.com -csshuobo.com -cssjzy.com -csslcloud.net -cssmagic.net -cssmoban.com -cssqt.com -cssthxx.com -csstoday.net -cssuez.com -cssywgy.com -csszone.net -cst119.com -cst6.com -cstccloud.org -cstcloud.net -cstcq.com -cstech.ltd -csteelnews.com -cstexun.com -csthxx.com -cstianye.com -cstimer.net -csto.com -cstonepharma.com -cstong.net -cstparking.com -cstriker1407.info -cstuotian.net -cstxgz.com -csuboy.com -csuct.com -csudgroup.com -csuedu.com -csundec.com -csunews.com -csur.fun -csvii.com -csvw.com -csw333.com -cswamp.com -cswef.org -csweigou.com -csweiwei.com -cswqvzh.com -cswszy.com -csxbank.com -csxdf.com -csxiangfeng.com -csxingfutemple.org -csxingya.com -csxinhua.com -csxinshun.com -csxinxu.com -csxjedu.com -csxjzx.com -csxsjc.com -csxsrcw.com -csxww.com -csy17.com -csyamei.com -csyestar.com -csykgs.com -csylxy.com -csylzx.net -csyrtcs.com -csysgz.com -csytv.com -csyunkj.com -csyuwei.com -cszec.com -cszhgjzx.com -cszhjt.com -cszhonghui.com -cszhxf119.com -cszit.com -cszjgj.com -cszjzx.com -cszkzn.com -cszlgs.com -cszn120.com -cszpra.com -cszsjy.com -cszsths.com -csztv.com -cszuxing.com -cszx.com -cszyedu.com -cszyjsxx.com -cszykt.com -ct-cdm.com -ct-emall.com -ct-laser.com -ct-parking.com -ct108.com -ct52.com -cta613.org -ctaca.com -ctags.net -ctalive.com -ctans.com -ctaoci.com -ctaweb.org -ctb50.com -ctbcdn.com -ctbcleasing.com -ctbjia888.com -ctbpsp.com -ctbyq.net -ctc-ctc.com -ctc-zj.com -ctc.lol -ctc100.com -ctcai.com -ctcdn.com -ctcdn.net -ctcdn.org -ctcdnov.net -ctce8.com -ctcefive.com -ctcloudmeeting.com -ctcmo.com -ctcnj.net -ctcnn.com -ctcnpa.com -ctcontents.com -ctcsci.com -ctcsz.com -ctcwri.org -ctcxzgs.com -ctdatacare.com -ctdcdn.com -ctdcn.com -ctdisk.com -ctdns.net -ctdns.org -ctdsb.com -ctdsb.net -ctdzsk.com -ctea-ctea.org -cteaw.com -cteb.com -ctecdcs.com -ctech-alpha.com -cteic.com -ctex.org -ctexcel.ca -ctexcel.com -ctexcel.com.hk -ctexcel.fr -ctexcel.us -ctexw.com -ctfhub.com -ctfile.com -ctfile.net -ctfmall.com -ctfo.com -ctftools.com -ctfund.com -ctgapp.com -ctgcdn.com -ctghealthy.com -ctghr.com -ctghro.com -ctgia.com -ctgne.com -cthcdn.com -cthcdn.net -cthgjx.com -cthh9mnv.com -cthhmu.com -cthj-co.com -cthuwork.com -cthuwork.net -cthy.com -cti-cert.com -ctibet.com -ctic-lab.com -ctic-labs.com -ctiea.com -ctiforum.com -ctiku.com -ctils.com -ctimall.com -ctime.com -ctiot.info -ctipckcx.com -ctis-cn.com -ctjin.com -ctjituan.com -ctjl.net -ctjsoft.com -ctkon.com -ctkq.com -ctlcdn.com -ctlcdn.net -ctlife.tv -ctma.net -ctmcdn.com -ctmcdn.net -ctmcq.com -ctmgid.com -ctmon.com -ctmwow.com -ctn1986.com -ctnma.com -ctntech.com -ctnyypt.com -ctnz.net -ctocio.com -ctoclub.com -ctongonline.com -ctoutiao.com -ctovcdn.com -ctpdd.com -ctrcw.net -ctrender.com -ctrip-ttd.hk -ctrip.co.id -ctrip.co.kr -ctrip.co.th -ctrip.com -ctrip.com.hk -ctrip.my -ctrip.sg -ctripbiz.com -ctripbuy.hk -ctripc.com -ctripgslb.com -ctripgslb.net -ctripins.com -ctripqa.com -ctripteam.com -cts010.com -ctsbw.com -ctsec.com -ctsfreight.com -ctsgx.com -ctshk.com -ctsho.com -ctsitravel.com -ctsmed.com -ctsscs.com -ctssd.com -ctsto.com -ctszh.com -ctszs.com -cttbj.com -cttgd.com -cttip.org -cttms.com -cttq.com -cttsd.com -cttv.co -ctuaa.com -ctvpost.com -ctvwx.com -ctwx.net -ctwxc.com -ctxcdn.com -ctxcdn.net -ctxcpa.com -ctxirang.com -cty9.com -ctycdn.com -ctycdn.net -ctycdn.org -ctyny.com -ctyo.com -ctyun.net -ctyun.online -ctyuncdn.com -ctyuncdn.net -ctyuninner.com -ctyunwaf.com -ctyunwaf1.com -ctzb.com -ctzcdn.com -ctzcdn.net -ctzg.com -cu-air.com -cu5gaia.com -cuaa.net -cuahmap.com -cuav.net -cubavcenter.com -cubead.com -cubegoal.com -cubejoy.com -cubespace.city -cubicise.com -cubie.cc -cubing.com -cubox.pro -cucdc.com -cuchost.com -cucldk.com -cuctv.com -cueber.com -cuebzzy.com -cuelog.com -cufeyk.com -cugala.com -cuggw.com -cugroup.com -cugstore.com -cuhnj.com -cui1000.com -cuihuan.net -cuijiahua.com -cuilai.com -cuiniaoedu.com -cuiniuhui.com -cuiqingcai.com -cuiru123.com -cuiruo.com -cuirushi.com -cuiuc.com -cuiv.com -cuixingreen.com -cuixueshe.com -cuiyongjian.com -cuiyouxuan.com -cujs.com -cuketest.com -cul-studies.com -culaiwan.com -culdata.com -culia.org -culturemagasin.com -cumboly.com -cumen.fun -cummins-cq.com -cumtenn.com -cumulon.com -cunan.com -cuncunle.com -cuncwg.com -cunfang.com -cunhao.net -cunnar.com -cunshao.com -cunyoulu.com -cunzhen.vip -cunzj.com -cuobiezi.net -cuodiao.com -cuonc.com -cuopen.net -cuour-edu.com -cuour.com -cuour.org -cuoxin.com -cupdapp.com -cupdata.com -cupddns.com -cupddns.net -cupdns.com -cupfox.com -cupinn.com -cuplayer.com -cuplayer.net -cupmcn.com -cuppot.com -curlc.com -current.vc -curtisasia.com -cusdvs.com -cusdvs.net -custeel.com -customization-cdn.dell.com -customizedfasteners.com -customsapp.com -custouch.com -custpref.com -cutemidi.com -cuteng.com -cutepet-hk.com -cutieshop153.com -cutowallpaper.com -cutv.com -cuuhn.com -cuumo.com -cux.cc -cuz.cx -cuzz.site -cvc898cvc.com -cvchina.info -cvchome.com -cvcri.com -cvftc.net -cvicse.com -cvicseks.com -cvillazc.com -cvmart.net -cvmassageocs.com -cvn-china.com -cvoit.com -cvonet.com -cvoon.com -cvpyqih.com -cvrobot.net -cvtapi.com -cvte.com -cvtestatic.com -cvtoutiao.com -cvtvcn.com -cwag.com -cwbaike.com -cwbgp.space -cwbpsi.com -cwcec.com -cwdma.org -cwdtf.com -cwems.com -cwestc.com -cweun.org -cwewater.com -cwfls.com -cwgarnet.com -cwgsdl.com -cwhnh.com -cwiaj.com -cwitxoakk98d.com -cwjedu.com -cwjt.com -cwlchina.com -cwliupaotea.com -cwmcs.com -cwmtn.com -cwmzyyy.com -cwouzcmp.com -cwq.com -cwst.net -cwtc.com -cwun.org -cwxzx.com -cwyan.com -cwz12123.com -cwzdgroup.com -cwzww.com -cx-smarthome.com -cx.cc -cx001.com -cx312.com -cx368.com -cx580.com -cx930.net -cxacg.com -cxas.com -cxaxdfsbw.com -cxbbattery.com -cxbiji.com -cxbio.com -cxbsx.com -cxbz958.com -cxc233.com -cxcc.me -cxcentury.com -cxcijiedu.com -cxcyds.com -cxd-auto.com -cxdm-tech.com -cxdqkj.com -cxdz2000.com -cxf1999.com -cxfccs.com -cxfuwu.com -cxgame.net -cxgaugrv.com -cxgeo.com -cxgj56.com -cxglmc.com -cxglys.com -cxgw.com -cxh99.com -cxhan.com -cxhl365.net -cxhr.com -cxhuoyun.com -cxhyy.com -cxic.com -cximg.com -cxisc.com -cxjrh.com -cxjt.net -cxju.com -cxkfwn.com -cxkjjy.com -cxkyz.com -cxlyzj.com -cxmld.com -cxmoe.com -cxmt.com -cxmtc.net -cxnyjt.com -cxnykjy.com -cxory.com -cxpharm.com -cxqex.com -cxql.net -cxqqk.com -cxrczpw.com -cxsdszx.com -cxsm.com -cxsteel.com -cxstgc.com -cxsw3d.com -cxta.com -cxthhhhh.com -cxtld.com -cxtrip.cc -cxtuku.com -cxumol.com -cxvlog.com -cxw.com -cxwl.com -cxwyf.net -cxxjs.com -cxxtv.com -cxy521.com -cxy61.com -cxy7.com -cxybattery.com -cxycsx.vip -cxydh.xyz -cxydw.net -cxyfjd.com -cxylfc.com -cxylx.com -cxyob.com -cxytiandi.com -cxyule.com -cxyxiaowu.com -cxyxwl.com -cxyyls.com -cxyym.com -cxz.com -cxzg.com -cxzntc.com -cxzuqiu.com -cxzw.com -cxzyjt.com -cy-cdn.com -cy-coo.com -cy-credit.com -cy-email.com -cy-isp.com -cy-isp.net -cy-jg.com -cy-jm.com -cy-mmm.com -cy-pharm.com -cy-scm.com -cy-ymtw.com -cy.com -cy2009.com -cy365.com -cy580.com -cy88.com -cyagen.com -cyalarm.com -cyanhillcapital.com -cyanpeach.com -cyb-bot.com -cyb800.com -cybaojian.com -cyberspace.com -cybertogether.net -cyberway-china.net -cybstar.com -cybtc.com -cyc2018.xyz -cychaiqian.com -cyclemixcn.com -cyclewell.com -cyclingchina.net -cyclone-robotics.com -cyclonemoto.com -cycnet.com -cycoo.com -cyctapp.com -cyd5918.com -cydiaa.com -cydiakk.com -cydow.com -cyegushi.com -cyfeng.com -cyfengchao.com -cyflscb.com -cyfyydyfy.com -cygbdst.com -cygia.com -cygs.com -cygse.com -cyhazyy.com -cyhlwhb.com -cyhlwmt.com -cyhm.com -cyhone.com -cyht168.com -cyhx98.com -cyicts.com -cyida.com -cyie.com -cyikao.com -cyimking.com -cyjcloud.com -cyjhfm.com -cyjiasu.com -cyjjw.net -cyjlighting.com -cyjoycity.com -cyjsh.com -cyjysb.com -cyjyxxw.com -cyjzzd.com -cyk-cable.com -cyktqdrp.com -cylaowu.com -cylh.com -cylink.bond -cylong.com -cymcgs.com -cynee.net -cynovan.com -cyo.cc -cyol.com -cyol.net -cyou-inc.com -cyoupic.com -cypatent.com -cypharma.com -cyphouse.com -cypmedia.com -cypresstel.com -cyprestar.com -cyqyfyxh.com -cyr168.com -cyruc.com -cyrx.com -cys.world -cysq.com -cystool.com -cyswkj.com -cyswxa.com -cysy-cn.com -cysygroup.com -cyszxyy.com -cyt369.com -cytcard.com -cytoniche.com -cytosinlab.com -cyts.com -cytsdl.com -cytslinkage.com -cytsls.com -cytsonline.com -cytstibet.com -cytuig.com -cyuandao.com -cyudun.net -cyuew.com -cyuntech.com -cyuyin.com -cyvalve.com -cywetc.com -cywl.org -cywlxy.com -cywyjj.com -cyxh.org -cyxigua.com -cyxny.net -cyxshop.com -cyy18.com -cyyangqiguan.com -cyycdn.com -cyyo.vip -cyypscl.com -cyyself.name -cyyvip.com -cyzl.com -cyzm.net -cyzs97.com -cyzwb.com -cyzywl.com -cyzzzz.com -cz-toshiba.com -cz-yk.com -cz121.com -cz128.com -cz88.net -cz89.com -czb365.com -czbanbantong.com -czbank.com -czbcpaint.com -czbq.net -czbtv.com -czbx18.com -czcarbon.com -czcdt.com -czcgewater.com -czchuanlin.com -czchyz.com -czcia.com -czcid.com -czclzc.com -czcqly.com -czctech.com -czdaiwei.com -czddbearing.com -czdingming.com -czdlj.com -czdqyy.com -czdrbz.com -czdsfy.com -czduxinban.com -czdyrmyy.com -czech-visacenter.com -czedu.com -czepb.com -czey.com -czfangshuo.com -czfcdp.com -czfcw.com -czfdc.com -czfesco-mg.com -czfhdmls.com -czfph.com -czgcsb.com -czgd.tv -czgdgs.net -czgdly.com -czgjj.com -czgjj.net -czgmjsj.com -czgongzuo.com -czgtjt.com -czguangfu.org -czhaobiao.com -czhbgx.com -czhjs.com -czhmjx.com -czhtff.com -czhuayuansuye.com -czie.net -czifi.org -czinfo.net -czitc.com -czjake.com -czjdgz.com -czjdjt.com -czjdu.com -czjfa.com -czjiangteng.com -czjilijia.com -czjju.com -czjlsb.com -czjoel.com -czjpw.com -czjsy.com -czjyzx.net -czkbdq.net -czkctl.com -czkingdee.com -czlgj.com -czlingke.com -czlkgy.com -czlsgz.com -czlskj.com -czlxgc.net -czmarathon.net -czmc.com -czmh.com -czmstt.com -czmw.com -czmypx.com -cznengshuo.com -cznewcom.com -czolgame.com -czongyi.com -czopen.com -czpbxc.com -czpoly.com -czpv.net -czqingzhifeng.com -czqqkj.com -czrcw.com -czrjh.com -czrmyy.com -czrsymt.com -czsafjx.com -czsbtjx.com -czsfy.com -czsldy.com -czsmk.com -czsrc.com -czsrmyy.com -czsshb.com -czstx.net -czswdx.com -cztaojiu.com -cztour.com -cztrjs.com -cztv.cc -cztv.com -cztv.tv -cztvcdn.com -cztvcloud.com -cztzkg.com -czur.com -czvv.net -czwie.com -czws.com -czwsg5.com -czwxbyq.com -czwxtz.com -czxiu.com -czxixi.com -czxixigu.com -czxr.net -czxthmls.com -czxuexi.com -czxxp.com -czxxw.com -czxy.com -czyabo.com -czybjz.com -czyefy.com -czyfxd.com -czyl.cc -czyongfeng.com -czypcb.com -czyuxing.com -czyxba.com -czzqp.com -czzsw.com -czzy-edu.com -czzyc.com -czzyvideo.com -czzzbwg.com -d-controls.com -d-ctrip.com -d-d.design -d-heaven.com -d-innovation.com -d-long.com -d-robotics.cc -d-stars.net -d-techs.com -d-wolves.com -d.cg -d.design -d00.net -d03jd.com -d10a.com -d11a.com -d163.net -d17.cc -d1cm.com -d1com.com -d1cy.com -d1dengju.com -d1dytt.com -d1ev.com -d1ld.com -d1lx.com -d1miao.com -d1mm.com -d1net.com -d1rcw.com -d1sm.net -d1xf.net -d1xn.com -d1xny.com -d1y.cc -d22a.com -d2core.com -d2film.com -d2kdi2ss.com -d2scdn.com -d2shost.com -d2ty.com -d2ziran.com -d37hw752kt.com -d3ch.com -d3cn.net -d3eurostreet.com -d3f.com -d3games.com -d3iz9md.com -d3tt.com -d3zone.com -d4000.com -d4z1onkegyrs5.cloudfront.net -d58.net -d5h.net -d5power.com -d5render.com -d5xs.net -d65d6.com -d777.com -d7vg.com -d7w.net -d80438960.com -d8th.com -d99net.net -d9af5a60.edmonst.net -d9j8.com -d9js.com -d9k99.com -d9ym.com -da-mai.com -da-qian.com -da-quan.net -da.anythinktech.com -da01.com -da3h.com -da88.net -daanbar.com -daanche.com -daangene.com -daanjiexi.com -daanwang.com -daanwo.com -daanxi.com -daas-auto.com -daba.com -dabai4.com -dabaicai.org -dabaidaojia.com -dabaise.com -dabangong.com -dabangsoft.com -dabanke.com -dabao123.com -dabaoge.host -dabapiao.com -dabaqian.com -dabeiduo.com -dabiaoji.info -dabiaojituan.com -dabieshu.com -dabin69.com -dabingseo.com -dabjy.com -daboluo.net -dabusi.com -dacai.com -dacang.ltd -dacankao.com -dacankao.net -dacaomei.com -dacbiotech.com -daccc.com -daccf.com -dachanet.com -dachao.com -dachaokn.com -dachengbiochemical.com -dachengge.com -dachenglaw.com -dachengsh.com -dachengshuiwu.com -dachengzi.net -dachkj.com -dachuanchina.com -dachuizichan.com -dachun.tv -dachushicai.com -dacidian.net -dada114.net -dada360.com -dadaabc.com -dadagame.com -dadagem.xyz -dadajiasu.com -dadajuan.com -dadaogroup.com -dadaojiayuan.com -dadaqipai.com -dadasasa.com -dadasou.com -dadayou.com -dadclab.com -daddybaby.com -daddymami.net -daddysweety.com -dadeedu.com -dadetong.com -dadicinema.com -dadighost.com -dadikid.net -dadisalt.com -dadiwang.com -dadiyimao.com -dadongwu.com -dadou.com -daduoduo.com -daduofa.com -dadushixiecheng.com -daerzhu.com -daeshin-china.com -daf-rs.com -dafaji.com -dafang24.com -dafangtour.net -dafangya.com -dafanshu.com -dafaun.com -dafenghk.com -dafenghk.net -dafmgroup.com -dafork.com -dafosi.org -dagangcheng.com -dagongcredit.com -dagongnet.com -dagongtech.com -daguan.com -daguangnews.com -dagufood.com -daguiot.com -daguipc.com -dagun.net -daguzhe.com -dagyujt.com -dahainan.com -dahaiwater.com -dahaiyang.com -dahan-sports.com -dahanghaiol.com -dahangroup.com -dahangsky.com -dahangzhou.com -dahantc.com -dahanyinbang.com -dahanyu.com -dahao-dahao.com -dahaoexpo.com -daheapp.com -dahecube.com -dahei.com -daheng-image.com -daheng-imaging.com -daheng-imavision.com -dahengit.com -dahepiao.com -dahetest.com -dahongba.net -dahongtec.com -dahongtool.com -dahouduan.com -dahua-cpa.com -dahua-ferrules.com -dahuaab.com -dahuabloc.com -dahuaddns.com -dahuagong.com -dahualan.com -dahuap2p.com -dahuap2pcloud.com -dahuasurvey.com -dahuatech.com -dahuawang.com -dahuhg.com -dahuifuwu.com -dahuodong.com -dai-shi.com -dai361.com -daiaotech.com -daiban0571.com -daibanke.com -daibi.com -daibor.com -daicelchina.com -daichuqu.com -daicuo.cc -daicuo.net -daidaicp.com -daidaipu.com -daidongxi.com -daief.tech -daigege.com -daigou.com -daigraphia.com -daihaobiao.com -daihing.com -daijuchuang.net -daijun.com -daikandq.com -daikuan.com -daili321.com -dailianmama.com -dailianqun.com -dailiantong.com -dailianzj.com -dailiba.com -dailijizhang.cc -dailiweishang.com -dailugou.com -dailygn.com -dailyhongkong.net -dailyqd.com -daimafans.com -daimagongfang.com -daimami.com -daimawang.com -daimay.com -daimg.com -dainiter.com -dairao.net -daishangqian.com -daishanmarathon.com -daishu.com -daishucha.com -daishujiankang.com -daishutijian.com -daisyfin.com -daita.red -daittotrade.com -daivc.com -daiwofly.com -daiwoqu.com -daixiaji.net -daixiaobao.com -daixiaomi.com -daixiaorui.com -daixiehyl.com -daiyanbao.com -daiyanmama.com -daiyinzi.com -daizitouxiang.com -dajan.com -dajiabao.com -dajiachou.com -dajiadou6.com -dajiadu8.com -dajiaka.com -dajialaikan.com -dajialawyer.com -dajianet.com -dajiang365.com -dajiangcp.com -dajiangsai.org -dajiangtai.com -dajianhui.com -dajianyouju.com -dajiashequ.com -dajiashuo.com -dajiazhao.com -dajiazhongyi.com -dajiazulin.com -dajibacdn.com -dajibapass.com -dajie.com -dajieimg.com -dajilin.com -dajinan.com -dajingdiao.com -dajingmed.com -dajixie.com -dajke.com -dajudeng.com -dajuntech.com -dajuyuan.net -daka.net -dakage.com -dakahr.com -dakamao8.com -dakangchem.com -dakangmedical.com -dakao100.com -dakao8.com -dakao8.net -dakapath.com -dakaruanwen.com -dakasi.com -dakedakedu.com -dakejie.com -dakekj.com -dakele.com -dakw.xyz -dalaba.com -dalaizhou.com -dalanyouxi.com -dalao.net -dalaosz.com -daleigroup.com -dalelingtea.com -dali-group.com -dalian-chuanpiao.com -dalianair-china.com -dalianbus.com -daliancs.com -dalianiso.com -dalianjiaojing.com -dalianshengmi.com -daliansky.net -daliantyre.com -dalianwater.com -dalianxianting.com -daliaolaser.com -daliapp.net -dalidaily.com -dalidm.com -dalifa.com -daliha.com -dalipan.com -dalisanta.com -dalongkeji.com -dalongyun.com -daltonbio.com -dalu.net -daluma.com -daluo.com -daluom.com -daluwang.net -daluxinxi.com -dalvhe.com -dalvlaw.com -dalyfeds.com -damai.com -damaicheng.com -damaimed.com -damao.city -damatu1.com -damddos.com -dameisheng.com -dameiweb.com -dameng.com -damiercapital.com -damijing.com -damingweb.com -damiw.com -damixs.biz -damndigital.com -damodel.com -damonroller.com -damostar.com -damotu.com -damoyang.com -damuchong.com -damuite.com -dan-my.com -dan-sing.com -dan8gui.com -danaicha.com -danale.com -danaqsy.com -danatlas.com -danbagui.com -danbaodan.com -dance365.com -danceinchina.org -dancf.com -danchuangglobal.com -dancihu.com -dancingcg.com -dancizhan.com -dandaiqh.com -dandan818.com -dandandao.com -dandang.org -dandanhou.net -dandanjiang.tv -dandanman.com -dandanplay.com -dandanplayer.com -dandantang.com -dandanvoice.com -dandanz.com -dandanzan.com -dandanzkw.com -danding.com -danding.fun -dandinghuayi.com -dandongbank.com -dandou.com -danews.cc -dang-jian.com -dang3.com -dangaocn.com -dangaoss.com -dangbei.com -dangbei.net -dangbeiprojector.com -dangbiao.com -dangcdn.com -dangdaiyiyao.com -dangdang.com -dangdj.com -dangguai.com -danghongyun.com -danghuan.com -dangjian.com -dangjianwang.com -dangjinguiping.com -dangpu.com -dangtianle.com -dangwan.com -dangzhang.com -dangzhi.com -dangzhi.net -dangzhu.net -dangzhuntianqi.com -danhao51.com -danhaowang.org -danhuaer.com -danhuangyun.com -daniao.org -danilelxp.com -daningcenter.com -daningdaning.com -daningtv.com -daniopack.com -daniuguwang.com -daniuit.com -daniujiaoyu.com -daniushiwan.com -daniuwangxiao.com -danji100.com -danji6.com -danji8.com -danji9.com -danjiang.com -danjuanapp.com -danjuanfunds.com -danjuantaxi.com -danjuantec.com -danke.com -dankegongyu.com -dankexiaoyuan.com -danlan.org -danlancare.com -danlanlove.com -danlingfuyou.com -danlirencomedy.com -danlu.net -danmaku.live -danmaku.tv -danmakupie.com -danmi.com -danming-ic.com -danmo.com -danmofun.com -danmoshui.com -danmu.com -danniao.com -danotest.com -danpin.com -danqi.com -danten.org -danteng.me -dantengge.org -dantin.com -dantins.com -dantuvc.com -danxia.com -danxin.net -danyang.com -danzhaoedu.com -danzhaowang.com -danzhou8.com -dao-fu.com -dao123.com -dao3.fun -dao42.com -dao50.com -daoapp.io -daoapp.me -daoboime.com -daochen.com -daocloud.io -daocloudapp.com -daodao.com -daodaojizhang.com -daodaozz.com -daodejing.org -daodian100.com -daodianfu.com -daodoc.com -daododo.com -daoduoduo.com -daofengdj.com -daoguo.com -daohang198.com -daohang4.com -daohang88.com -daohangtx.com -daohu123.com -daohui.net -daohuo.shop -daoiqi.com -daoisms.org -daojia-inc.com -daojia.com -daojiale.com -daojialianmeng.com -daojishiqi.com -daokers.com -daokeyuedu.com -daokoudai.com -daomengad.com -daomengren.com -daomicfo.com -daomuol.com -daonong.com -daopei.net -daopub.com -daoqin.net -daoran.tv -daoru.in -daoruimi.com -daoscript.org -daoshui.com -daotin.com -daotour.com -daotudashi.com -daovay.com -daovoice.io -daoxiangcun.com -daoxila.com -daoxila.net -daoyu.fun -daoyu.me -daoyu8.com -daoyumiao.com -daozhao.com -dapai8.com -dapan.com -dapei.cc -dapenggangguanchang.com -dapenti.com -dapingshidai.com -dapiniu.com -dappdiscover.com -dapustor.com -daqi.com -daqiao.host -daqiguanli.com -daqihui.com -daqing8080.com -daqiso.com -daqizhong.com -daqo.com -daqqd.com -daqsoft.com -daquan.com -daquan.la -daquangroup.com -daquncnc.com -daraz.lk -daraz.pk -darczpw.com -dare-auto.com -darehui.com -daren.today -darenfund.com -darenjiazu.com -darensky.com -dareu.com -darewayhealth.com -darkmi.com -darknight.games -darmao.com -darongcheng.com -darryring.com -dartchina.com -dartou.com -dartsearch-cn.net -dartzon.com -daruan.com -darwinlearns.com -dasctf.com -dasfbio.com -dasfjd.com -dashanghaizhuce.com -dashangu.com -dashen520.com -dashen8.com -dashengji.com -dashengpan.com -dashengzuji.com -dashenquan.com -dashentv.com -dashenw.com -dashgame.com -dashi518.com -dashigame.com -dashikou.com -dashisx.com -dashitech.com -dashiyou.com -dashu.com -dashubaba.com -dashuju123.com -dasiyingyu.com -dasong108.com -dasoujia.com -dassm.com -dasuan110.com -dasuanwang.com -dasung.com -dasungtech.com -dat881.com -data-speaker.com -data380.com -data4h.com -data5u.com -data86.com -data86.net -data985.com -dataarobotics.com -datacanvas.com -datacname.com -datacomo.com -datacvg.com -datadragon.net -dataduoduo.com -dataesb.com -dataeye.com -datafun.vip -datag.vip -datagear.tech -datagrand.com -datahubtrack.com -datahuif.com -dataie.com -dataing.com -datang.com -datang.net -datangnxp.com -datangseed.com -datangweishi.com -datangyouxi-inc.com -datangyouxia.com -datangyouxib.com -datangyouxic.com -datangyouxie.com -datangzww.com -dataodu.com -dataoke.com -datarelab.com -datarj.com -datasecurity.htcsense.com -datasheet.hk -datasheet5.com -datastoragesummit.com -datatang.com -datatech-info.com -datatist.com -datatocn.com -datatool.vip -datauseful.com -dataxcrm.com -datayes.com -datazt.com -datealive.com -datebao.com -datepj.com -datesdata.com -datia-inspect.com -datianmen.com -datk.anythinktech.com -datong.info -datongjianshe.com -datongtaxi.com -datuc.com -daugres.com -dauteen.com -dav01.com -davdian.com -davidlovezoe.club -davincimotor.com -davinfo.com -davost.com -davycloud.com -dawangling.com -dawawa.com -daweiai.com -daweijita.com -daweisoft.com -daweiyishu.com -dawenbo.com -dawenling.com -dawenming.com -dawensk.com -dawenxue.net -dawenxue.org -dawnarc.com -dawndiy.com -dawnjs.com -dawnlab.me -dawnled.net -dawntech.net -dawuhanapp.com -dawurencai.com -dawuyu.com -dawx.com -dawx.net -daxfix.com -daxia.com -daxiang91.com -daxianghuyu.com -daxiangkeji.com -daxianglingke.com -daxianglink.com -daxiangqun.net -daxiangshouche.com -daxianzuji.com -daxicn.com -daxiit.com -daxiongxueyixue.com -daxishi.com -daxitouzi.com -daxue52.com -daxuecidian.com -daxuecn.com -daxueit.com -daxuejiayou.com -daxuelu.com -daxuepc.com -daxuesoutijiang.com -daxuetian.com -daxuewang.com -dayaguqin.com -dayainfo.com -dayang.group -dayangjt.com -dayangliangyou.com -dayangmotorcycle.com -dayangmuye.com -dayangshop.com -dayangsz.com -dayanmei.com -dayanyanglao.com -dayanzai.me -dayapress.com -dayayu.com -daydao.com -dayday.plus -daydaymap.com -daydays.com -daydaytest.com -daydayup123.com -daydx.com -daye.hk -dayee.com -dayehome.com -dayesmart.com -dayezheng.com -dayhao.com -dayhellohotel.com -dayhr.com -dayi100.com -dayichang.com -dayifund.org -dayihangqing.com -dayila.net -dayima.com -dayin.com -dayin.la -dayin8.com -dayinhu.com -dayinjiqudong.com -dayinmao.com -dayinpai.com -dayinpiano.com -dayirc.com -dayishengwu.com -dayitea.com -dayiwater.com -dayong.name -dayoo.com -dayrui.com -dayscamera.com -daysou.com -dayspringpharma.com -dayss.com -daysview.com -daytokens.com -dayu-group.com -dayu-valve.com -dayu.com -dayu.work -dayuanqy.com -dayuansouti.com -dayuanzong.com -dayucdn.com -dayucdntip.com -dayue.com -dayue8.com -dayugame.net -dayugf.com -dayugslb.com -dayukaoshi.com -dayukeji.com -dayulego.com -dayulegobak.com -dayungroup.com -dayuntongzhou.com -dayup.org -dayustudy.com -dayutukun.com -dayuzy.com -daza168.com -dazhangfang.com -dazhangqiu.com -dazhe5.com -dazheda.com -dazhengtop.com -dazhenzimiao.com -dazhewa.com -dazhicorp.com -dazhistudy.com -dazhitech.com -dazhixue.com -dazhong-valve.com -dazhong.com -dazhongbanben.com -dazhonghr.com -dazhongkanche.com -dazhoumzj.com -dazhoushan.com -dazhouwater.com -dazhu1988.com -dazhuangwang.com -dazhuangyan.com -dazibo.com -dazidazi.com -dazijia.com -dazizhuanqian.net -dazoread.com -dazpin.com -daztoutiao.com -dazuhang.com -dazui.com -dazuichazi.com -dazzle-fashion.com -db-cache.com -db.ci -db162.com -db9w.com -db9x.com -dbank.com -dbankcdn.com -dbankcdn.ru -dbankcloud.asia -dbankcloud.com -dbankcloud.eu -dbankcloud.ru -dbankedge.asia -dbankedge.net -dbanote.com -dbaobao.com -dbatmb.com -dbbqb.com -dbc2000.net -dbcdh.com -dbcsq.com -dbdna.com -dbgeek.org -dbh123.net -dbjsjt.com -dbkan.com -dbkuaizi.com -dblgf.com -dbljj.com -dbmailserver.com -dbmall.com -dbmeta.net -dbnuo.com -dbpan.com -dbparking.com -dbqf.xyz -dbqgg.com -dbs724.com -dbscar.com -dbshop.net -dbss360.com -dbtclub.com -dbyun.net -dbzy5.com -dc-cn.com -dc0792.com -dc568.com -dc625.com -dcarapi.com -dcarimg.com -dcarlive.com -dcarstatic.com -dcarvod.com -dcatgame.com -dcb-group.com -dcb123.com -dcccji.com -dcdapp.com -dcdkjx.com -dcdnx.com -dcement.com -dcf365.com -dcg.microsoft.com -dcg123.com -dcgqt.com -dcgsi.com -dcgstd.com -dchotel.net -dcic-china.com -dcits.com -dckgjt.com -dckj19.com -dckygroup.com -dcloud.io -dcloud.xin -dcloudlive.com -dcloudlive.net -dclouds.cloud -dcloudsp.com -dcloudsp.net -dcloudstc.com -dcloudstc.net -dcloudvod.com -dcloudvod.net -dclygroup.com -dcmagcn.com -dcmk17.com -dcn01.ps4.update.playstation.net -dcn01.ps5.update.playstation.net -dcpc.com -dcpfb.com -dcqsq.com -dcsapi.com -dcshow.com -dcsjw.com -dcsme.org -dcsq.com -dct-cloud.com -dcutp.com -dcwucu.com -dcxnews.com -dcxx.vip -dcxzmxa.com -dcybkj.com -dcyiyao.com -dcyjc.com -dcyz.com -dczcsc.com -dczkj.com -dczy168.com -dd-advisor.com -dd-gz.com -dd-img.com -dd.ci -dd.ma -dd001.net -dd01.com -dd0415.net -dd128.com -dd2007.com -dd208.com -dd369.com -dd373.com -dd4.com -dd666mir.com -ddadaal.me -ddahr.net -ddbiquge.cc -ddbiquge.com -ddbiu.com -ddcdn.com -ddcheshi.com -ddchong.com -ddcits.com -ddcsjw.com -ddcwl.com -ddd-china.com -dddazhe.com -ddddns.net -ddddocr.com -ddddyres.com -dddfe.com -dddgong.com -dddja.com -dddki.com -dddwan.com -dde-desktop.org -ddedush.com -ddfans.com -ddfchina.com -ddfzb.com -ddguanhuai.com -ddhly.com -ddhy.com -ddiaas.com -ddianle.com -ddimg.mobi -ddimg.net -dding.net -ddiqbh.com -ddj123.com -ddjjzz.com -ddjk.com -ddjs-cn.com -ddjsyx.com -ddkanqiu.cc -ddkanqiu.net -ddkanqiu.vip -ddkanqu.com -ddkids.com -ddkt365.com -ddky.com -ddle.cc -ddlequ.com -ddmap.com -ddmer.com -ddmogo.com -ddna.xyz -ddnddn.com -ddnspod.com -ddnsto.com -ddnx.com -ddong.com -ddonplan.com -ddooo.com -ddoor.net -ddos.com -ddosc.com -ddosendns.com -ddosjq.xyz -ddove.com -ddpai.com -ddpoc.com -ddqcw.com -dds.dell.com -ddsaas.com -ddsiojf.xyz -ddsk.la -ddsm.com -ddstarapp.com -ddsy.com -ddtk.vip -ddtsg.com -ddtugame.com -ddtxgame.com -ddun.com -ddunyun.com -ddurl.to -dduser.mobi -dduwork.com -ddvaj.com -ddweilai.com -ddwgame.com -ddwhm.com -ddwjs.com -ddxhx.com -ddxhyl.com -ddxq.mobi -ddxsku.com -ddxstxt8.com -ddyjapp.com -ddyqh.com -ddyun.com -ddyun123.com -ddyylczz.com -ddyylczzs.com -ddz.com -ddzf.cc -ddzhj.com -ddzl.net -ddzls.net -ddzn.tech -ddznzj.com -ddztv.com -ddzui.com -ddzuqin.com -ddzuwu.com -de-ele.com -de-moe.org -de-tencentclb.cloud -de-tencentclb.com -de-tencentclb.net -de-tencentclb.work -de0.cc -de1000.com -de123.net -de1919.com -de56.com -deaconhousewuxi.com -deadnine.com -deafchina.com -deahu.com -dealsbank.com -dealsmake.com -deansys.com -dear520dear.com -dearda.com -dearedu.com -dearisland.com -deartree.com -dearxuan.com -deasun.com -deathearth.com -deau-cable.com -debao.com -debao123.com -debaochina.com -deben.me -debug.moe -debugdump.com -debugo.com -debuycn.com -decansmd.com -decard.com -decent-china.com -decentcapital.com -decerp.cc -dechang-chem.com -dechingroup.com -dechlogi.com -dechong.site -dechua.com -declous.com -decohome.cc -decoration.ltd -decorcn.com -decwhy.com -deczh.com -dede-zj.com -dede168.com -dedeadmin.com -dedebiz.com -dedecms.com -dedecms8.com -dedecmsmuban.com -dedecmsplus.com -dedeeims.com -dedegg.com -dedejs.com -dedemao.com -dedesos.com -dedezhuji.com -deebio.com -deeceal.com -deehon.com -deemos.com -deep-os.com -deep56.com -deepblog.net -deepcloudsdp.com -deepcoin.red -deepcool.com -deepepg.com -deepermobile.com -deepfast.com -deepin-ai.com -deepin.com -deepin.io -deepin.org -deepinghost.com -deepinmind.com -deepinos.org -deepinout.com -deepinstall.com -deepleaper.com -deeplearn.me -deepms.net -deepoon.com -deeprouter.org -deepseapioneer.com -deepseek.com -deepseeksvc.com -deepsheet.net -deeptechchina.com -deeptrain.net -deeptrip.com -deepvinci.tech -deepvps.com -deer-express.com -deerex.com -deerfieldbch.com -deerhappy.com -deerjet.com -deerma.com -deernice.com -deexchina.com -defair.online -defcoding.com -defineabc.com -defoen.com -defofy.com -defoile.com -defuv.com -defvul.com -degitec-jiangyin.com -deguoguanjia.com -dehe99.com -deheheng.com -deheng.com -dehengclinic.com -dehenglaw.com -dehsm.com -dehua.net -dehuaca.com -dehuigroup.com -dehuisk.com -dehuiyuan.com -deifgs.com -deikuo.com -dejiart.com -dejiplaza.com -dekeego.com -dekekc.com -dekls.com -dekonglife.com -dektw.com -dekuncn.com -dekunyy.com -dekyy.com -del.pub -delaiyun.cloud -delanauto.com -dele.com -deli-tools.com -delib2b.com -delibao.com -delicloud.com -delilegal.com -delin-sh.com -delingkeji.com -delinklab.com -delipu.cc -delishi.com -deliworld.com -delixi-electric.com -delixi.com -delixidrive.com -deliyun.com -dell-alw.com -dell-brand.com -dell027.com -dellecs.com -dellemc-solution.com -dellenglish.com -dellfuwuqi.com -dellhpibm.com -dellzj.com -delong-group.com -delonggou.com -delonix.group -delovabio.com -delphi-connect.com -delphijiaocheng.com -deltaverse.net -delun-group.com -delunyk.com -deluxewatchbox.com -deluxworld.com -deluya.com -demage.com -demanmedical.com -demark-jgkj.com -demaxmedical.com -demingzi.com -demix.cc -demixc.com -demizhongbao.com -demlution.com -demo1024.com -demo8.com -demodashi.com -demogic.com -demon.tw -demonlee.tech -demososo.com -denachina.com -denaircompressor.com -deng88.com -denganliang.com -dengbaogonggao.com -dengbi8.com -dengbiao.com -dengdingsheng.com -dengfengwater.com -dengguobi.com -denghao.org -denghaoxuan.com -denghuo.com -dengkanwen.com -dengmoe.com -dengni.org -dengta120.com -dengtabao.com -dengtacj.com -dengtadaka.com -dengxiaolong.com -dengxiaopingnet.com -dengxstudio.com -deniulor.com -denon-proaudio.com -denopark.com -denson168.com -dentistshow.com -denverokie.com -denza.cloud -denzacloud.com -deosen.com -deosin.com -dep-star.com -depailed.com -depamu.com -dependdns.com -dephir.com -deppon.com -depthlink.com -depuchem.com -deqingbank.com -dercase.com -derekchou.com -derenbs.com -derlook.com -derucci.com -derun-env.com -derunbao.com -derunss.com -deruxi.com -derzh.com -des8.com -desano.com -desay.com -desaysv.com -deserts.io -deshaus.com -desheng-edu.com -desheng-school.com -desheng.net -deshengdachem.com -deshenghonglan.com -deshengzj.com -deshicheng.com -design-engine.org -design006.com -designjiaoshi.com -designkit.com -designmoma.com -designshidai.com -designsketchskill.com -designuuu.com -designwithlove.org -designyunasai.com -desk-site.com -deskcar.com -deskcity.com -deskcity.org -deskguanjia.com -deskpool.com -desktop-calculator.com -desktopcal.com -deskwc.com -desnerboats.com -desoonproduct.com -destoon.com -desunpv.com -desuntech.com -detailroi.com -detion.com -detonfan.com -detonger.com -detu.com -dev-dh.com -dev59.com -devashen.com -devask.net -devblogs.microsoft.com -devclub.cc -devedu.net -developer.htcvive.com -developer.microsoft.com -developer.vive.com -developers.pub -developwechat.com -developweixin.com -develpress.com -devemi.com -devework.com -devexel-tech.com -devexel.com -devexpresscn.com -devicewell.com -devio.org -devops-dev.com -devotiongroup.com -devourad.com -devpss.com -devsapp.net -devsiki.com -devskyr.com -devtang.com -devui.design -devweixin.com -devzeng.com -deweier.com -deweisi.net -dewmobile.net -dewu-inc.com -dewu-inner.com -dewu-inner.net -dewu.co -dewu.com -dewu.net -dewucdn.com -dewuhd.com -dewuhui.com -dewumall.com -dewuyouhui.com -dewx.net -dexejhyxh.com -dexi009.com -dexian.mobi -dexingroup.com -dexingrv.com -dexinhr.com -dexinmobi.com -dexinquan.com -dexinrq.com -dexinsg.com -dexiya.com -dextercai.com -dexuee.com -dexueedu.com -dexunyun.com -dexxg.com -deyangbk.com -deyatech.com -deyayk.com -deyecloud.com -deyeehome.com -deyerchem.com -deyi.com -deyi.net -deyicc.com -deyijijin.org -deyiso.com -deyle-electric.com -deyouec.com -deyoulife.com -deyuan.fun -deyuantextile.com -deyun.fun -dezhanyigou.com -dezhongmobi.com -dezhoudaily.com -dezhoulawyer.com -dezhuyun.com -df-1912.com -df-college.com -df-gd.com -df-nissanfc.com -df-nissanfl.com -df0535.com -df33.com -df81.com -df9377.com -df962388.com -dfcfs.com -dfcfw.com -dfcms.net -dfcx-bj.com -dfdaily.com -dfdd-toubiaole.com -dfdinsin.com -dfdtt.com -dfedu.com -dfev.net -dffcw.net -dfgiso.com -dfgsb.com -dfgsz.com -dfham.com -dfhon.com -dfhr.com -dfhrc.com -dfhy888.com -dfig0.com -dfine.tech -dfjc999.com -dfjyun.com -dfkhgj.com -dfkj.cc -dflmtc.com -dflzm.com -dflzmxs.com -dfmc.com -dfmcastrol.com -dfmingya.com -dfnzhp.com -dfpost.com -dfpz.net -dfqcmy.com -dfqy.com -dfratings.com -dfrcb.com -dfrlyy.com -dfs168.com -dfs800.com -dfshurufa.com -dfshw.com -dfshysw.com -dfsjsoft.com -dfsmw.com -dfsouth.com -dfss-club.com -dfstw.com -dfsyjm.com -dftcdq.com -dftryy.com -dftyyls.com -dftzcgs.com -dftzj.com -dfwl.net -dfwlg.com -dfxq.com -dfxqc.com -dfxwdc.com -dfxy.net -dfxyw.com -dfy027.com -dfyanyi.com -dfyapp.com -dfyl-luxgen.com -dfynet.com -dfyoo.com -dfysgs.com -dfysscy.com -dfysw.net -dfyuan.com -dfyyc.com -dfyzx.com -dfzbsh.com -dfzk.com -dfzmzyc.com -dfzxvip.com -dfzyxy.net -dg-360lhx.com -dg-dns.com -dg-dx.com -dg-hanxin.com -dg-mall.com -dg-niuniu.com -dg-paas.com -dg-tcm.com -dg11185.com -dg121.com -dg456.com -dg688.com -dgaefi.org -dgaiia.com -dgbaineng.com -dgbgw.com -dgbia.com -dgbyxny.com -dgbzy.com -dgcct.com -dgchenghe.com -dgcia.com -dgcpkl.com -dgddh.xyz -dgdq1688.com -dgdqw.com -dgdydd.com -dgegbj.com -dgeia.com -dgg.net -dggcyy.com -dggdk.com -dgggs.com -dgghy.com -dggjqw.com -dggjyy.com -dggosungroup.com -dggq.com -dggxxh.com -dggywx.com -dghgzm.com -dghjt.com -dghobo17.com -dghonggao.net -dghqmotor.com -dghuafuli.com -dginfo.com -dgjijiagong668.com -dgjiuqi.com -dgjoy.co -dgjwsy.com -dgjx.net -dgjxmk.com -dgjy.net -dgk2n.com -dgkj888.com -dglpool.com -dglvc.com -dglyjx.com -dglyyun.com -dglzd.com -dgmama.net -dgn.cc -dgndf.com -dgnekon.com -dgnet.net -dgnkj.com -dgobch.com -dgod.net -dgouyijiance.com -dgovp.com -dgpenghao.com -dgphospital.com -dgpp.com -dgprj.com -dgpump86.com -dgqczz.com -dgqianguan.com -dgqjj.com -dgqzxx.net -dgrbcj.com -dgrcw.com -dgrsa.org -dgruizhi.com -dgs-td2.com -dgsbtjx.com -dgsfweb.com -dgshifeng.com -dgshunjin.com -dgsltx.com -dgsme.org -dgspk.com -dgswhg.com -dgsztyy.com -dgt-factory.com -dgtianbao.xin -dgtle.com -dgtn1718.org -dgtpcj.com -dgtungwah.com -dgtuoyue.com -dgtzjt.com -dgw888.com -dgweierwj.com -dgweitian.com -dgwia.com -dgwlhj.com -dgwtrl.com -dgxbjg.com -dgxinde.net -dgxue.com -dgxxz.com -dgxzxjj.com -dgyanda.com -dgyejia.com -dgyhsb.com -dgyian.com -dgyibiao.com -dgykz.com -dgylec.com -dgyq-water.com -dgysdx.com -dgytdz.com -dgyuanyi.com -dgyw.cc -dgzaixing.com -dgzcsy.net -dgzhihongjx.com -dgzhisen.com -dgzj.com -dgzp.com -dgzx.net -dgzz1.com -dh.cx -dh01.com -dh0580.com -dh08126.net -dh33660.com -dh3t.com -dh5a.com -dh5idnf.com -dh7373.com -dh7999.com -dh818.com -dh883.com -dh9191.com -dh978.com -dhaitun.com -dhasgf.com -dhb.hk -dhb168.com -dhboy.com -dhbs86.com -dhchain.com -dhcooker.com -dhdly.com -dhgfhgsfg.com -dhgsqjcnd.com -dhgsqjcnj.com -dhgsqjcnm.com -dhguanye.com -dhgz.com -dhh-gz.com -dhhqfw.com -dhidcw.com -dhimavision.com -dhj3413.com -dhjt.com -dhkm.vip -dhkq120.com -dhkqmz.com -dhkqyy.com -dhmeri.com -dhmsnyy.com -dhppa.com -dhqfz.com -dhqtech.com -dhrcbank.com -dhrest.com -dhrest2.com -dhs-sports.com -dhsrmyy.com -dhszyy.net -dht5867.com -dhtest.com -dhtopology.com -dhtv.tv -dhuili.com -dhvisiontech.com -dhw-wiremesh.com -dhw22.com -dhwooden.com -dhxx.com -dhyct.com -dhyjaqa.com -dhyz.net -dhzfgm.com -dhznib.com -di1k.com -di28nl.com -di3ke.com -di7cn.net -di88.net -diablohu.com -diact.com -diaidi.com -diaigame.com -dialoguechinefrance.com -diamondfavour.net -diamondfsd.com -dian-ai.com -dian-stable.com -dian.so -dian123.com -dian234.com -dian5.com -dian68.net -dianadating.com -dianapp.com -dianbaobao.com -dianbb.com -dianbio.com -dianbo.org -dianbobao.com -dianbucuo.com -diancang.xyz -dianchacha.com -dianchizhijia.com -dianchouapp.com -diandanbao.com -diandao.org -diandaxia.com -diandeng.tech -diandian.com -diandian.net -diandianchong.com -diandianmeijia.com -diandiannuo.com -diandianqi.com -diandianshu.com -diandianwaimai.com -diandianys.com -diandianzhe.com -diandianzu.com -diandong.com -diandongche.biz -dianfanyingyu.com -dianfengcms.com -dianfuji.com -diangan.org -diangeapp.com -diangong8.com -diangongbao.com -diangongjiang.com -diangongwu.com -diangudoors.com -dianhen.com -dianhong.com -dianhou.com -dianji007.com -dianjian.net -dianjianggame.com -dianjiangrcw.com -dianjiangxin.cc -dianjihr.com -dianjin123.com -dianjinghu.com -dianjingzhe.com -dianjipinpai.com -dianjiqi.com -diankeji.com -dianlanbao.com -dianlanyibiao.com -dianli.com -dianli08.com -dianli100.com -dianlinet.com -dianlut.com -dianlut.net -dianmi365.com -dianmircloud.com -diannaoban.com -diannaodiy.net -diannaoxianka.com -dianopen.com -dianou.com -dianpifa.com -dianping.com -dianpingba.com -dianpushuo.com -dianqikaiguan.com -dianqiweixiu.net -dianqizazhi.com -dianqugame.com -dianranart.com -dianremo1688.com -dianrong.com -dianru.net -dians.net -diansan.com -dianshanchina.com -dianshang.com -dianshangmulu.com -dianshangyi.com -dianshi.com -dianshiba.net -dianshige.com -dianshihome.com -dianshijia.com -dianshu119.com -diansu-cdn.net -diantads.com -diantangzuyi.com -diantonghudong.com -diantoushi.com -diantui.net -dianwanhezi.com -dianwannan.com -dianwanshidai.com -dianwantu.com -dianwo98.com -dianwoba.com -dianwoda.com -dianwolf.com -dianwoyou.com -dianxian.net -dianxian8.com -dianxiandianlanchang.com -dianxiao2.com -dianxiaobao.net -dianxiaomi.com -dianxin.net -dianxinnews.com -dianxinos.com -dianyacloud.com -dianyingshow.com -dianyingwenxue.com -dianyong123.com -dianyongqi.com -dianyuan.com -dianzhanggui.net -dianzhangzhipin.com -dianzheli.com -dianzhenkeji.com -dianzhentan.com -dianzhi.com -dianzhong.com -dianzi6.com -dianziaihaozhe.com -dianzihetong.net -dianzixuexi.com -dianzizhao.com -diaoben.com -diaochapai.com -diaochapai.net -diaochatong.com -diaocn.com -diaocnc.com -diaoding.biz -diaojiang.com -diaokeji.net -diaosaas.com -diaosi.net -diaosiweb.net -diaosu20.com -diaosu9.com -diaosu98.com -diaosunet.com -diaosuoju.net -diaox2.com -diaoy.com -diaoyan001.com -diaoyou.com -diaoyoupai.com -diaoyu.com -diaoyu123.com -diaoyu365.com -diaoyuren.com -diaoyuwang.com -diaoyuweng.com -diary365.net -diaxue.com -diazha.com -dibaifang.com -dibang18.com -dibangshou.com -dibaotong.com -dibchina.com -dibcn.com -diboot.com -dibunet.com -dic123.com -dicastal.com -dichan.com -dichan.net -dichanlao.com -dichanren.com -dichanw.com -dichedai.com -dicila-china.com -dicom365.com -dictall.com -dida110.com -dida365.com -didabds.com -didacar.com -didachuxing.com -didamall.com -didao.com -didaoshidai.com -didapaper.com -didapinche.com -didatravel.com -didatxt.com -didctf.com -dideu.com -didi-food.com -didi-trip.com -didi.xin -didialift.com -didiapp.com -didiaustralia.blog -didibuluo.com -didichuxing.com -dididadidi.com -dididapiao.com -dididi88.com -didiglobal.com -didimobility.co.jp -didimobility.com -didiopenapi.com -didipai.com -didiqiche.com -didishijie.com -didispace.com -didistatic.com -diditaxi.com -didiwuxian.com -didixk.com -didiyun.com -didiyun.org -didiyunapi.com -diducoder.com -diebian.net -dieclock.com -diemoe.net -diemz.com -dieniao.com -dieqiu.com -diershoubing.com -dietfd.com -diexuan.net -diexun.com -dieyanli.com -difanapp.com -difersports.com -diffir.com -diffusefuture.com -diffusenetwork.com -dig-gy.com -digcredit.com -digeeker.com -digi-wo.com -digigd.com -digihail.com -digihuman.com -digiic.com -digiinfr.com -digimons.net -digirepub.com -digisky.com -digit3ds.com -digital-hangzhou.com -digital-ren.com -digitalchina.com -digitalcloudshield.com -digitalcnzz.com -digitalcq.com -digitaldrew.net -digitaling.com -digitaljx.com -digitalmanu.com -digitalvolvo.com -digitalwuhan.com -digitalwuhan.net -digitalyili.com -digitclouds.com -digitguangdong.com -digitimetech.com -digitlink.net -digitser.net -digitwater.com -digiwin.com -digiwoods.com -digiwork.com -digod.com -digoexpress.com -digsur.com -digu.com -digu.plus -digu365.com -digua.com -diguage.com -diguazu.com -dihaobedding.com -dihaopipe.com -dihaowa.com -dihuaikeji.com -diiqu.com -dijianggroup.com -dijingchao.com -dijiuban.com -dikalon.com -dikeqc.com -dili360.com -dili365.com -dilidili.com -diliy.com -dima-industry.com -dimei88.com -dimeng.vip -dimensi-9.com -dimensionalzone.com -dimenspace.com -dimocap.com -dimolabel.com -dimsmary.tech -dimtown.com -dinais.com -dinarspeculator.com -dindin.com -ding-chuang.com -ding-liang.com -dingbang99.com -dingcaicai.com -dingcooltech.com -dingdachuxing.com -dingdandao.com -dingdangchem.com -dingdanggj.com -dingdangjia.net -dingdangnao.com -dingdanxia.com -dingdatech.com -dingdd.com -dingdean.com -dingdi.com -dingdian001.com -dingdiange.org -dingdiann.com -dingdiann.net -dingdiansk.com -dingdianxs.la -dingdianzw.com -dingding.com -dingding.xin -dingdingdan.com -dingdingdoctor.com -dingdingkaike.com -dingdingtingche.com -dingdingzn.com -dingdone.com -dingdongcloud.com -dingdongebusiness.com -dingdongmao.com -dingdongxiaoqu.com -dingdx.com -dingefactory.com -dingertai.com -dingfubang.com -dinggebaojian.com -dinggou.org -dinggu.net -dinghaiec.com -dinghantech.com -dinghengjc.com -dinghu.com -dinghuakuai.com -dinghuaren.com -dinghui.org -dinghuo123.com -dinghuo365.com -dinghuoche.com -dinghuovip.com -dingjijiudian.com -dingjiwangluo.com -dingkeji.com -dinglia.com -dingliangame.com -dinglianhuanbao.com -dinglicom.com -dinglipin.net -dinglongchem.com -dinglongjx.com -dinglutang.com -dingoa.com -dingqiao.cc -dingqiaoks.com -dingqibao.com -dingqidong.com -dingqingyun.com -dingrongxd.com -dingrtc.com -dingruxin.com -dingsheng.com -dingso.com -dingtalent.com -dingtalk.com -dingtalk.net -dingtalkapps.com -dingtalkcloud.com -dingtangzqx.com -dingteam.com -dingtoo.com -dingwei.link -dingweilishi.com -dingwenacademy.com -dingxiang-inc.com -dingxikeji.com -dingxinwen.com -dingxiushipin.com -dingxutonghui.com -dingyang.com -dingyanqf.com -dingyantec.com -dingyao17.com -dingyue-ele.com -dingyueads.com -dingzhijl.com -dingzhoudaily.com -dingzhourencai.com -diningcity.asia -dinju.com -dinpay.com -dinsense.com -dinyocasa.com -dinzd.com -diodecy.com -dioenglish.com -diomasce.com -dionly.com -diopic.net -dious-f.com -dipephoto.com -dipont.com -dippstar.com -diqiuw.com -diqua.com -dir001.com -dir28.com -directui.com -dis9.net -discountedkwatch.com -discourse-studies.com -discoversources.com -discoveryriflescope.com -discuz.chat -discuz.com -discuz.net -discuz.org -discuz.vip -discuzfans.net -discuzlab.com -disenjn.com -dishanhuanbao.com -dishen.com -dishuge.com -dishuizhijia.com -disimy.com -dislux.com -dislytegame.com -dismall.com -distantmeaning.com -distinctclinic.com -ditai.fun -ditan.com -ditan360.com -ditian-tech.com -ditianshanhe.com -ditiefuli.com -ditiezu.com -ditiezu.net -ditu.live.com -dituhui.com -dituw.net -dituwuyou.com -dituyi.com -diugai.com -diuta.com -diuut.com -divcss5.com -divepai.com -diving-fish.com -divizg.com -diwork.com -diwuyuan.com -dixinkj.com -dixintong.com -diy10.com -diyahz.com -diyamh.com -diybcq.com -diydiymall.com -diygogogo.com -diygw.com -diyhi.com -diyibox.com -diyicai.com -diyidan.com -diyidan.net -diyidanhao.com -diyiedu.com -diyifanwen.com -diyifanwen.net -diyigaokao.com -diyihuifu.com -diyiliuxue.com -diyinews.com -diyishijian.com -diyixiazai.com -diyixin.com -diyiyou.com -diyiyt.com -diyiyunshi.com -diyiziti.com -diyleyuan.com -diymianmo.com -diymysite.com -diynova.com -diyosl.com -diypda.com -diyring.cc -diyyh.com -diyzhen.com -dizalpharma.com -dizgslb.com -dizh.net -dizhimei.com -dizhu.org -dizhuche.com -diziguiwang.com -dizishu.com -dizzylab.net -dj-dj.net -dj.net -dj.tc -dj10.com -dj134.com -dj16.com -dj175.com -dj193.com -dj63.com -dj89.com -dj92.cc -dj92cc.com -dj96.com -dj97.com -dj99.com -djbh.net -djbhjg.net -djbx.com -djc8888.com -djcc.com -djcp099.com -djcscs.com -djcx.cc -djdjapp.com -djdkk.com -djdsh.com -djduoduo.com -djdyqn.com -djec.net -djeconomic.com -djf.com -djf313.com -djfensi.com -djfrj.com -djgy.com -djhxn.com -dji.com -dji.ink -dji.net -djiang.net -djiavip.com -djicdn.com -djiits.com -djiops.com -djiservice.org -djjgj.com -djjlseo.com -djjw.com -djjyzly.com -djkgongshui.com -djkhgy2.com -djkk.com -djkpai.com -djksh.com -djksq.com -djkxl.com -djlmvip.com -djlsoft.net -djm-bj.com -djmillison.com -djrhf0.com -djsh5.com -djstechpc.com -djstg.com -djtpf.com -djtpt.com -djtt.com -djttw.com -djtz.net -dju8.com -djunf.com -djuu.com -djwcp.com -djwjsj.com -djxcable.com -djxww.com -djy517.com -djye.com -djyg.shop -djyinyue.com -djyjob.com -djymjsw.com -djyule.com -djzhj.com -djznj.com -djzr88.com -djzyg.com -dk-lexus.com -dk517.com -dk8s.com -dkashop.com -dkcloudlive.com -dkdangle.com -dkdgroup.com -dkdsfrwety.xyz -dkewl.com -dkfinancing.com -dkgyw.com -dkhg23.com -dkhs.com -dkjiaoyang.com -dkjmy.com -dkjmyq.com -dklogs.net -dkmol.net -dknsankf.com -dkntgc.com -dksgames.com -dkskcloud.com -dktzjt.com -dku51.com -dky.cc -dkybpc.com -dkzt.com -dkzx.net -dl-hf.com -dl-hr.com -dl-kg.com -dl-meitu.com -dl-rc.com -dl.delivery.mp.microsoft.com -dl.dell.com -dl0728.com -dl23zx.com -dl2link.com -dl321.net -dl56.net -dl8z.com -dlairport.com -dlbaohuang.com -dlbbdk.com -dlbbs.com -dlbh.net -dlbiotech.com -dlcaic.com -dlcsos.com -dld56.com -dldlsw.com -dldm.com -dledu.com -dler.cloud -dlfederal.com -dlfeyljt.com -dlfy-metalparts.com -dlg-expo.com -dlgouji.com -dlgslb.net -dlgwbn.com -dlgxbl.com -dlhaibaobio.com -dlhope.com -dlhospital.com -dlhuayang.com -dlhwjq.com -dljczb.com -dljdy.com -dljianbing.com -dljierui.com -dljishou.com -dljlxx.com -dljrw.com -dljs.net -dljsjt.com -dlkldz.com -dlkykycc55.com -dllawyers.org -dllzj.com -dlmeasure.com -dlmianshuiche.com -dlmonita.com -dlmyzf.com -dlmzk.com -dlnel.com -dlnel.org -dlnyzb.com -dlonng.com -dlosri.com -dlphoschem.com -dlpuwan.com -dlqcgz.com -dlrkb.com -dls88.com -dlsccn.com -dlsgs.com -dlshian.com -dlsjyy.com -dlsqb.com -dlssa.com -dlsstax.com -dlsunworld.com -dlszywz.com -dlteacher.com -dltm.net -dltobacco.com -dltubu.com -dlvalve.com -dlw-lighting.com -dlw360.com -dlw666.com -dlwang.vip -dlwjdh.com -dlwmkj.com -dlwx369.com -dlxgjy.com -dlxk.com -dlxmicro.com -dlxww.com -dly56.com -dlyy365.com -dlzb.com -dlzbxx.com -dlzj.net -dlzs-audio.com -dlztb.com -dlzxyy.com -dlzyc.com -dm-hr.net -dm004.net -dm0775.com -dm176.com -dm21.com -dm300.com -dm456.co -dm5.com -dm591.com -dm5u.com -dm67.com -dm9.com -dmacg.net -dmaking.com -dmaku.com -dmall.com -dmallcdn.com -dmallovo.com -dmaow.com -dmb168.com -dmbcdn.com -dmcdn.com -dmd968.com -dmdaili.com -dmeg88.com -dmeiti.com -dmeiti.net -dmeng.net -dmgapp.com -dmgeek.com -dmggb.com -dmgpark.com -dmguo.com -dmgyta.com -dmgytb.com -dmhlj.com -dmhmusic.com -dmhy.com -dmicrobe.com -dmiug.com -dmjk120.com -dmjnb.com -dmjvip.com -dmm.ink -dmmaterial.com -dmooo.com -dmpans.com -dmpdmp.com -dmpdsp.com -dmplugin.net -dmqhyadmin.com -dmqst.com -dmqwl.com -dmread.com -dmrta.com -dms365.com -dmssc.net -dmtemp.com -dmtg.com -dmtgy.com -dmu-1.com -dmvideo.mobi -dmvideo.net -dmvideo.org -dmvvv.com -dmxs.net -dmyouxi.com -dmyy.cc -dmzfa.com -dmzgame.com -dmzj.com -dmzlcn.com -dmzx.com -dmzzbjb.net -dmzzkz.com -dn.com -dn23.com -dn580.com -dn8188.com -dnake-park.com -dnatupu.com -dnbbn.com -dnbbs.com -dnbiz.com -dncable.com -dndc.cloud -dnettvbox.com -dnfziliao.com -dngswin7.com -dngz.net -dnhcc.com -dningbo.com -dnion.com -dnjd.com -dnjsb.com -dnlunwen.com -dnmall.com -dnmcn.com -dnnunion.com -dnole.com -dnparking.com -dnpz.net -dnqc.com -dnrenfang.com -dns-diy.com -dns-dns.net -dns-sky.com -dns-url.com -dns-waf.com -dns.com -dns.la -dns.pub -dns002.com -dns0755.net -dns100.net -dns110.com -dns123.net -dns12345.com -dns200.net -dns2008.com -dns2023.com -dns567.com -dns6132.com -dns666.com -dns6868.com -dns800.com -dnsabc.com -dnsany.com -dnsapi12.com -dnsbbzj.com -dnsbubu.com -dnsce.com -dnscnc.com -dnsdaquan.com -dnsddos.com -dnsdizhi.com -dnse0.com -dnse0.net -dnse1.com -dnse1.net -dnse2.com -dnse2.net -dnse3.com -dnse3.net -dnse4.com -dnse4.net -dnse5.com -dnse5.net -dnse6.com -dnse6.net -dnse7.com -dnse7.net -dnse8.com -dnse8.net -dnse9.com -dnse9.net -dnsfamily.com -dnsfast.online -dnsff.com -dnsfox.net -dnsgtm.com -dnsguest.com -dnsgulf.net -dnsh6666.com -dnsidentity.com -dnsinside.net -dnsip.com -dnsip.net -dnsis.net -dnsjia.com -dnsjiasu001.com -dnslin.com -dnsmeasurement.com -dnsmsn.com -dnsng.net -dnsns5.com -dnsns6.com -dnsnut.com -dnsnw.com -dnso.fun -dnsoe1.com -dnsoe2.com -dnsoe3.com -dnsoe4.com -dnsoe5.com -dnsoe6.com -dnsoray.net -dnsour.com -dnspai.com -dnspig.com -dnspod.com -dnspod.mobi -dnspod.net -dnspod.org -dnspodh.com -dnspood.net -dnsppdd.com -dnspro.icu -dnsrw.com -dnss.vip -dnssec-poison.xyz -dnssina.com -dnstest.vip -dnstx88.cc -dnsurl.net -dnsv1.com -dnsv1.net -dnsv2.com -dnsv2.net -dnsv20.com -dnsv3.com -dnsv3.net -dnsv4.com -dnsv4.net -dnsv5.com -dnsv5.net -dnsv8.net -dnsvcache.com -dnsvhost.com -dnsvip1.net -dnsw7777.com -dnswa.com -dnswhk.com -dnswind.net -dnsx9.cc -dnsxdp.com -dnsxv1.com -dnsxv1.net -dnsxv2.com -dnsxv2.net -dnsxv3.com -dnsxv3.net -dnsxv4.com -dnsxv4.net -dnsxv5.com -dnsxv5.net -dnsy8888.com -dnsyy.net -dnszftp.com -dnszh.com -dnszw.com -dnurse.com -dnv-group.com -dnw.icu -dnwxwww.com -dnxtc.net -dnxttech.com -dny123.com -dny8.com -dnyyjcw.com -dnyywl.com -dnzh.org -dnzhuti.com -dnzjds.com -dnzp.com -do-won.com -do123.net -do1618.com -do1999.com -do35.com -doabit.com -doata.net -dobe-game.com -dobechina.com -dobest.com -dobosc.com -dobunkan.com -doc163.com -doc361.net -doc88.com -doccamera.com -docer.com -docexcel.net -docin.com -docin.net -dockerinfo.net -dockerone.com -dockerproxy.com -dockone.io -dockx.app -doclass.com -docn.net -docodgroup.com -docoi.cc -docpe.com -docs.cdnetworks.com -docs.microsoft.com -docschina.org -docshare.org -docsj.com -docsmall.com -docsou.com -doctor-network.com -doctorbridge.com -doctorcom.com -doctorkickstart.com -doctorscrap.com -doctoryou.ai -docuarea.org -documents.cdnetworks.com -docx88.com -docxz.com -doczj.com -dodjoy.com -dodo.link -dodo8.com -dodobook.net -dodoca.com -dodoeasy.com -dodoedu.com -dodoh5.com -dodonecq.com -dodonew.com -dodovip.com -doducity.com -doercn.com -doergob.com -doerhr.com -doerjob.com -doffry.com -dofolong.com -dog-e-clothing.com -dogain.com -doganinsaatemlak.com -dogecast.com -dogecdn.com -dogecloud.com -dogedns.com -dogedoge.com -dogevideo.com -dogfight360.com -dogfuzhu.com -doghun.com -doglg.com -dogmr.com -dogwhere.com -dogyun.com -doh.plus -doh.pub -dohai.com -dohia.com -dohuo.com -doii.cc -doingv.com -doit.am -doitim.com -doiua.com -doki8.com -dolcn.com -dolfincdnx.com -dolfincdnx.net -dolfincdnx.top -dolfindns.net -dolfindnsx.com -dolfindnsx.net -dolfindnsx.top -dolgma.com -dolike.com -doll-leaves.com -doll-zone.com -dollun.com -dolovely.net -dolphin-browser.com -dolphin-global.com -dolphin.com -dolphincube.com -dolphinphp.com -dom-3d.net -domabio.com -domaingz.com -domaintescil.com -domesticmedia.cc -domesticmedia.co -domesticmedia.com -domesticmedia.net -domesticmedia.tv -domesticmediagame.co -domesticmediagame.net -domesticmediapay.com -domilight.com -dominoh.com -domob-inc.com -domob.org -domobcdn.com -domobnetwork.com -domor.net -domp4.cc -domp4.net -dondonwenda.com -done-home.com -donews.com -dong-shou.com -dong-xu.com -dong10.com -dongaigc.com -dongannews.com -dongao.com -dongaoacc.com -dongaocloud.com -dongba.com -dongbao-cn.com -dongbao120.com -dongbaoshengwu.com -dongbd.com -dongbeishifandaxue.com -dongbing.wiki -dongboauto.com -dongbochem.com -dongbosy.com -dongbucaijing.com -dongcai.net -dongcaibao.com -dongcaibaoxian.com -dongcaijijin.com -dongchali.net -dongchecha.com -dongchedi.com -dongchediapp.com -dongchehui.net -dongcheng120.com -dongchenghotels.com -dongcheyun.com -dongchuangipr.com -dongchuanmin.com -dongdao.net -dongdianqiu.com -dongdongaijia.com -dongdongliu.com -dongdongmai.com -dongdongwenda.com -dongdongzu.com -dongeejiao.com -dongfahouse.com -dongfang-heater.com -dongfang-sisal.com -dongfang-wh.com -dongfang.com -dongfang77.com -dongfangfuli.com -dongfanglicaishi.com -dongfangnews.com -dongfangnuojin.com -dongfangqb.com -dongfangtech.net -dongfangzi.cafe -dongfeng-honda-ur-v.com -dongfeng-honda.com -dongfeng-nissan.com -dongfeng-robot.com -dongfeng.net -dongfengem.com -dongfengtc.com -dongfengtrucks.com -dongfou.com -dongfund.com -donggaoshiye.com -dongge.com -dongguanguoyao.com -dongguantoday.com -donghaidl.com -donghaifunds.com -donghaileasing.com -donghailighter.com -donghaotest.com -donghetea.com -donghongzx.com -donghuangshanquan.com -donghugroup.com -donghui.tech -donghuihospital.com -donghulvdao.com -donghushequ.com -dongjian.cc -dongjiao.cc -dongjiaoapp.com -dongjiaotn.com -dongjiax.com -dongjin-cn.com -dongjinyu.com -dongjueonline.com -dongjujituan.com -dongjun.cc -dongjungroup.com -dongjunhui.com -dongkafei.com -dongkelun.com -dongkouren.com -donglaishun.com -donglangroup.com -dongli720.com -donglidianji.com -donglin.org -donglinchem.com -donglingying.cc -donglinkeji.com -donglishuzhai.net -donglivillage.com -dongliw.com -donglizhixin.com -donglongfm.com -dongman.la -dongman520.com -dongmanwang.com -dongmanxingkong.com -dongmanzx.com -dongmiban.com -dongmk.com -dongnanmaifeng.com -dongnanshan.com -dongnanwangjia.com -dongni100.com -dongniao.net -dongnienglish.com -dongniyingyu.com -dongpeng.net -dongpengjieju.com -dongpingren.com -dongputech.com -dongqiang.com -dongqiniqin.com -dongqiudi.com -dongqiudi.net -dongri.com -dongricn.com -dongrv.com -dongsentire.com -dongsenzs.com -dongshengdasha.com -dongshiju.com -dongshou.com -dongshunxinxi.com -dongsport.com -dongtai588.com -dongtaijt.com -dongteng.cc -dongting.com -dongtu.com -dongua.com -dongwm.com -dongxi.net -dongxingkonggu.com -dongxingnet.com -dongxong.com -dongxu.com -dongyanggas.com -dongyanggh.com -dongyangmotor.com -dongyao.ren -dongyaods.com -dongyaowuliu.com -dongyewenhua.com -dongyimg.com -dongyin.com -dongyin.net -dongyixiang.com -dongyoutu.com -dongyuansl.com -dongyuetruck.com -dongyun.biz -dongyun01.com -dongzee.com -dongzhougroup.com -dongzhuandi.com -dongzhuoyao.com -dongzsec.com -donhonet.net -doniv.net -donlim.com -donnor.com -donoo.net -donper.com -dontfar.com -donvv.com -doodoobird.com -doofull.com -doohe.com -dooioo.com -dookay.com -dooland.com -doonsec.com -dooo.cc -doooor.com -doooor.net -door-expo.com -dooready.com -doorhr.com -doorqr.com -doorzo.app -doorzo.net -doosunggroup.com -doov5g.com -dooya.com -dopic.net -dopo-online.net -dopoil.com -dopool.com -dora-control.cdnetworks.com -dora-family.com -dorapp.com -dorcen.com -dorgean.com -dorole.com -dorpule.com -dorrr.com -doseeing.com -doserv.com -doservice.com -doshome.com -dosilicon.com -dosk.win -dosnap.com -dospy.com -dossav.com -dossen.com -dostor.com -dosxs.com -dot.pub -dota09.com -dota2rpg.com -dota2v.com -dotaindex.com -dotamax.com -dotcpp.com -dotdotnews.com -doteck.com -dotgate.com -dothantech.com -doticloud.com -dotty-china.com -dotwe.org -dou.bz -dou.li -dou.top -dou6.cc -doubaijiu.com -douban.com -douban.fm -doubanio.com -doubao.com -doubaocdn.com -doubaozhidao.com -doubean.com -doubilm.com -doubimeizhi.com -doublearrow.net -doubleclick-cn.net -doubleclick.net -doublecoinholdings.com -doubleeagle-group.com -doublestarmingren.com -doublewin123.com -doublleclinic.com -doubo03.com -douboshi.net -douc.cc -doucang.com -doucanlk.xyz -doucehua.com -douchacha.com -douco.com -doudang.com -doudehui.com -doudeke.com -doudier.com -doudou.com -doudou.fun -doudou.in -doudou1217.com -doudouad.com -doudoubird.com -doudouditu.com -doufan.tv -doufm.net -dougong.net -dougongyun.com -douguo.com -douguo.net -douhao.com -douhaomei.com -douhua.net -douhuameiquan.com -douhuameiquan.net -douhuawenxue.com -douhuaxiongmao.com -douhuibuy.com -douhuomall.com -doujis.com -doukantv.com -doukeji.com -doukou.com -doulaicha.com -doulaidu.cc -doulaidu8.cc -doule-ref.com -douleyun.net -doulongyun.com -doumenqu.com -doumi.com -doumiip.com -doumistatic.com -doumobsix.site -douniwan.org -doupai.cc -doupay.com -doupocangqiong1.com -douqi.com -douqq.com -doushen.com -doushisan.com -dousonvalve.com -doutian.me -doutianshequ.com -doutub.com -doutuimao.net -doutukeji.com -doutushe.com -douwanweb.com -douxiangtao.com -douxie.com -douya2.com -douyabo.com -douyacun.com -douyadaili.com -douyar.com -douyin.com -douyin766.com -douyinact.com -douyinact.net -douyincdn.com -douyinclips.com -douyincloud.net -douyincloud.run -douyinec.com -douyinfe.com -douyingequ.com -douyinhanyu.com -douyinliving.com -douyinmusicclips.com -douyinmusicpromotion.com -douyinmusicvideo.com -douyinpay.com -douyinpic.com -douyinshortvideo.com -douyinstatic.com -douyinvideo.net -douyinvod.click -douyinvod.com -douyinxs.com -douyongtuan.com -douyou100.com -douyu.com -douyu.tv -douyuex.com -douyuscdn.com -douyushepin.com -douyutv.com -douzaimai.com -douzi.com -douzihuyu.com -douzijiasu.com -dovechina.com -dovepay.com -dovesky.com -dovov.com -dowater.com -dowebok.com -doweidu.com -dowell-health.com -dowhere.com -down123.cc -down123.me -down199.com -down568.com -down6.com -downabc.com -downbei.com -downcc.com -downcodes.com -downfi.com -downg.com -downhand.com -downjoy.com -downke.com -downkr.com -downkuai.com -download-cn.msi.com -download.jetbrains.com -download.microsoft.com -download.qatp1.net -download.visualstudio.microsoft.com -downloads.ltd -downok.com -downos.com -downpp.com -downqa.com -downsave.com -downwn.com -downxia.com -downxing.com -downxy.com -downyi.com -downza.com -dowv.com -dowway.com -dowyuan.com -doxo.fun -doxue.com -doxygen.io -doyeah.com -doyee.com -doyoimg.com -doyonoc.com -doyoo.net -doyoudo.com -doyouhike.net -dozview.com -dp.tech -dp168.com -dp2u.com -dpanel.cc -dpangzi.com -dpcafc.com -dpcq1.net -dpcyjt.com -dpdfsd.com -dpdp.net -dper.com -dpfile.com -dpgz.com -dpifloor.com -dpin100.com -dpkyz.com -dplor.com -dplord.com -dplslab.com -dpma.cc -dpn.net -dpqct.com -dpsoidf.com -dptech.com -dptechnology.net -dptel.com -dpurat.com -dpw.pub -dpwl.net -dpxkjw.com -dpxq.com -dpy8.com -dq123.com -dq247.com -dq3c.com -dq800.com -dq99.net -dqccc.cc -dqccc.com -dqcccc.com -dqdaily.com -dqdbrc.com -dqdg.cc -dqdgame.com -dqdm.com -dqf14u8573.com -dqguo.com -dqhsrq.com -dqhui.com -dqhyxh.com -dqiis.com -dqjob88.com -dqlaketour.com -dqlnyy.com -dqntv.com -dqntwl.com -dqoooo.com -dqpi.net -dqpkb.com -dqpu.com -dqrailing.com -dqshdj.com -dqshjt.com -dqsjt.com -dqsldz.com -dqsq.net -dqsy.net -dqtzdt.com -dqyadong.net -dqycw.com -dqyfapiao.com -dqyouqi.com -dqyq.com -dqzboy.com -dqzrrq.com -dqzsteel.com -dr-bj.com -dr-jm.com -dr-ku.com -dr009.com -draftstatic.com -drageasy.com -dragon-chem.com -dragon-download.msi.com -dragon-guide.net -dragon-hotel.com -dragonarea.com -dragonballcn.com -dragonest.com -dragonfgame.com -dragonfly.fun -dragonlab.org -dragonlcm.com -dragonnewsru.com -dragonsea-china.com -dragonseagroup.com -dragonspringwater.com -dragontrail.com -dragontsc.com -dragonwell-jdk.io -dragonyq.com -drakeet.com -dramx.com -drartisan.com -drasy.net -drawyoo.com -drbdp.com -drcact.com -drcbank.com -drcg8.com -drclvs.com -drcnetdns.com -drcuiyutao.com -dream-loft.com -dream-marathon.com -dream.ren -dream211.com -dreamad.mobi -dreamavatar.com -dreambig.work -dreamcast.hk -dreamchasercapital.com -dreame.tech -dreamershop.com -dreamkite.net -dreammeta.net -dreamo100.com -dreampiggy.com -dreams-travel.com -dreamshell.cc -dreamspark.download.prss.microsoft.com -dreamsparkuat.download.prss.microsoft.com -drearry.com -dreawer.com -dressmeup-hk.com -drgou.com -drice.cc -drinkmagazine.asia -drinkpoem.com -drip.im -dripcar.com -driver114.com -driverchina.com -driverdevelop.com -drivergenius.com -driverzeng.com -driverzj.com -drivethelife.com -drjou.cc -drjy6688.com -drlai.com -drli.group -drlmeng.com -drm-lic-dom.net -drm-x.com -drmaml.com -drmsoft.net -drockart.com -droi.com -droiapps.com -droiseewd.com -droitstock.com -droiyou.com -dropsec.xyz -drouma.com -drp321.com -drpika.com -drry.site -drscrewdriver.com -drscrm.com -drsmilehealth.com -drsrp.com -drstour.com -drsxy.com -drtyf.com -drugadmin.com -drugfuture.com -druggcp.net -drughk.com -druid.vip -drupalla.com -drupalproject.org -drv.tw -drvceo.com -drvi.net -drvsky.com -drxexpo.com -ds-360.com -ds-lg.com -ds028.com -ds123456.com -ds5f.com -dsary.com -dsb.ink -dsbaike.com -dsblog.net -dscbs.com -dscq.com -dsdbxg.com -dsdod.com -dsdyf.com -dseman.com -dser.com -dsfdy.com -dsfjh.vip -dsfpz.com -dsfuse.com -dsfzcz.com -dsfzh.com -dsgaokao.com -dshigao.com -dshltech.com -dshrc.com -dsilicone.com -dsjt.com -dskb.co -dskj-ops.com -dsktjt.com -dskystudio.com -dslbuy.com -dslr120.com -dslrpark.com -dslt.tech -dslvts.com -dslwk.com -dslyy.com -dsm888.com -dsmxp.com -dsmyiyuan.com -dsmzyy.com -dsmzyy120.com -dsn300.com -dsnpz.com -dsnzyy120.com -dsook.com -dspga.com -dspgo.com -dspmt.com -dspwhy.com -dsq.com -dsqzls.com -dsqzxyy.com -dsrepark.com -dss.hk -dsspinfo.com -dsssp.com -dsstudio.tech -dssz.com -dst.gov.mo -dstcar.com -dstfsbc.com -dstguanwang.com -dsti.net -dsw6.com -dswjcms.com -dswljt.com -dswmt.com -dswql.com -dswqw2025.com -dswx.cc -dswzxh.com -dsx2020.com -dsxliuxue.com -dsxys.pro -dsyqt.com -dsyun.com -dsz.cc -dt-paint.com -dt-stor.com -dt123.net -dt830.com -dtao.com -dtcj.com -dtcms.net -dtcoalmine.com -dtcxw.com -dtdcjt.net -dtdream.com -dtdxcw.com -dtechcn.com -dtfjw.com -dthgdq.com -dthr.com -dtidc.com -dtime.com -dtjh-bj.com -dtjhgs.com -dtlpt.com -dtlqg.com -dtlty.com -dtmbw.com -dtmiller.com -dtmuban.com -dtnews.net -dtrcb.com -dtrcw.net -dts007.com -dtssyy.com -dtstack.com -dtstatic.com -dtston.com -dttc-icp.com -dttt.net -dtuosh.com -dtuyun.com -dtwave.com -dtxww.com -dtxxjq.com -dtysky.moe -dtyunxi.com -dtyzg.com -dtzj.com -du-hope.com -du-xiaomai.com -du7.com -du8.com -du8.ltd -dualaid.com -dualspace.com -dualspacetech.com -duan.red -duangks.com -duanju.com -duanju.fun -duanjuzi.com -duanlonggang.com -duanmale.com -duanmeiwen.com -duanqu.com -duanrong.com -duanshipin.vip -duanshu.com -duantian.com -duanwdm.com -duanwenxue.com -duanwenxue8.com -duanxb.com -duanxiansen.com -duanxianxia.com -duanxin.com -duanxin520.com -duanxindao.com -duanzaixian.vip -duanzao001.com -duanzikuaizui.com -duanziya.com -duapp-preview.com -duapp.net -duasrdwb.com -duba.com -duba.net -dubairen.com -dubao123.com -dubbing.tech -dubbo.io -duble.live -dubola.com -dubprince.com -dubyc.com -ducafecat.com -ducafecat.tech -ducar.cc -duchina.com -duckycn.com -duckyset.com -dudong.com -dudongsheji.com -duduaa.com -dudubashi.com -dududm.com -dudujb.com -duduji.com -dudujuzi.com -dudutalk.com -duduwo.com -duelcn.com -dugrqnn.xyz -duguying.net -duhao.net -duhaobao.net -dui.ai -duia.com -duiai.com -duibiao.com -duibiao.org -duibimao.com -duiduihuishou.com -duiduilian.com -duiduipengds.com -duijie666.com -duikuang.com -duimg.com -duimin.com -duiopen.com -duipu.com -duishu.com -duitang.com -duitangwang.com -duitianhe.com -duiyou360.com -duiz.net -duizhuang.com -dujiabieshu.com -dujin.org -dujixiao.com -dujiza.com -dujun.io -dukang.com -dukechiang.com -duketop1.com -dukharo.com -dukku.com -dukuai.com -dule.cc -dulesocks.com -duliangaotu.com -dulife.com -dulifei.com -dulightapp.com -dullong.com -dullr.com -dulwich.org -dumall.com -dumanhua.com -dumasoftware.com -dumi0898.com -dumpapp.com -dun.la -dun555.com -dun599.com -dunan.net -dunanac.com -dunankeji.com -dunbaigo.com -dundianwang.com -dungeon-server.com -dungkarime.com -dunhuang-yueqi.com -dunhuang.com -dunhuangtour.com -dunjiaodu.com -dunkhome.com -dunstanhardcastle.com -dunsuan.com -dunwang.com -dunzhiwang.com -duoao.com -duobeiyun.net -duobiyi.com -duocaish.com -duocaitou.com -duocengban.org -duochang.cc -duodaa.com -duodanke.com -duodele.com -duodian.com -duodiwan.com -duoduo.link -duoduo123.com -duoduo365.com -duoduobang365.com -duoduocdn.com -duoduocm.com -duoduodashi.com -duoduoipo.com -duoduopan.com -duoduoshipin.vip -duoduoyin.com -duoduoyoucai.com -duoduoyouli888.com -duoduoyuncai.com -duoduozb.com -duodutek.com -duoduwang.com -duoerpharmacy.com -duofriend.com -duofugroup.com -duogouhui.com -duohuanbao.com -duohui.co -duoic.com -duokaima.com -duokaiwang.com -duokaiya.com -duokaiyun.com -duokan.com -duokanbox.com -duoke.com -duoke.net -duokebao.net -duokebo.com -duoku.com -duolabao.com -duolabaocdn.com -duoladayin.com -duolahua.com -duolaika.com -duolaima.com -duolapiao.com -duolatom.com -duolayunwang.com -duole.com -duolebaohuang.com -duolebh.com -duolebo.com -duolegame.com -duolegd.com -duolegj.com -duolegouji.com -duolemahjong.com -duolemajiang.com -duolemao.com -duolepdk.com -duolephz.com -duolesj.com -duolesk.com -duolexing.com -duolexq.com -duoliheng.com -duoliucui.com -duoluodeyu.com -duomeng.fun -duomeng.net -duomeng.org -duomi.com -duomian-static.com -duomian.com -duomiao.pro -duomicheng.com -duominuo.com -duomiyou.com -duomni.com -duomo3205.xyz -duomu.hk -duomu.tv -duonvlangceo.com -duopaiad.com -duopao.com -duopei.cc -duopei.xyz -duopingka.com -duoqu.com -duorenwei.com -duorou.com -duorou.me -duorou42.com -duosai.com -duose.com -duosenfashion.com -duoshan.com -duoshitong.com -duoshoubang.com -duoshuo.com -duososo.com -duost.com -duotai.net -duotaoli.com -duotegame.com -duoteyx.com -duotin.com -duotoupiao.com -duotuscdn.com -duowan.com -duowanns.com -duoweijt.com -duoweisoft.com -duowenlvshi.com -duoxinqi.com -duoxue.com -duoyewu.com -duoyi.com -duoying.com -duoyinsu.com -duoyoumi.com -duozhi.com -duozhishidai.com -duozhuayu.com -duozhuayu.net -duoziwang.com -dup2.org -dupingzu.com -duplo-shandong.com -dur9.com -dure365.com -duread8.com -durkcell.com -durkeesox.net -durkflex.net -durongjie.com -dusaiphoto.com -dusao.vip -dusays.com -dusdn.com -dusdn.net -dushaofei.com -dushewang.com -dushi118.com -dushicn.com -dushifen.com -dushiliren.net -dushiquan.net -dushu.com -dushu.io -dushu263.com -dushu365.com -dushu369.com -dushu66.com -dushubus.com -dushudaren.com -dustess.com -dustglobal.com -dusulang.com -dute.me -dutenews.com -dutyfreeyun.com -dutype.com -duuchin.com -duunion.com -duwenxue.com -duwenz.com -duwenzhang.com -duxiaomai.net -duxiaoman-int.com -duxiaoman.com -duxiaomanfintech.com -duxiaomanfund.com -duxiaomantech.com -duxiu.com -duxuetang.com -duyandb.com -duyao001.com -duyaonet.com -duyixing.com -duyunfk.com -duyunshi.com -duzelong.com -duzhe.com -duzhoumo.com -dv37.com -dv58.com -dvagent.com -dvbbs.net -dvbcn.com -dvbei.com -dvd2017.com.tw -dvdc100.com -dvidc.com -dvkors.com -dvmama.com -dvmission.com -dvr163.com -dvrdydns.com -dvsadive.com -dvvvs.com -dw-microbiology.com -dw2.co -dw4.co -dwbxg.com -dwdds.com -dwforging.com -dwgbj.com -dwgszc.com -dwgwatch.com -dwhhd.com -dwhub.net -dwidc.com -dwinput.com -dwion.com -dwjkgl.com -dwjpwf.com -dwjxz.com -dwmoniqi.com -dwntme.com -dwoke.com -dwq.com -dwrh.net -dwsedu.com -dwsgases.com -dwstatic.com -dwstock.com -dwt.life -dww11.com -dwwin.com -dwxyamaha.com -dwywood.com -dwywooden.com -dwz.lc -dwzjd.com -dx-job.com -dx-marine.com -dx-tech.com -dx00.net -dx10000.com -dx2008.com -dx286.com -dx86.com -dxbei.com -dxclinics.com -dxda.com -dxdl1688.com -dxdlw.com -dxe520.com -dxecs.com -dxf6.com -dxfbk.com -dxfblog.com -dxgg.co -dxguanxian.org -dxhuafu.net -dxinzf.com -dxjs.com -dxjt2013.com -dxlfile.com -dxm-cdn.com -dxm-int.com -dxm-yibai.com -dxmjinr.com -dxmjuhe.com -dxmlcf.com -dxmlcfintech.com -dxmpay.com -dxmstatic.com -dxmwx.com -dxmyqh.com -dxncyy.com -dxnky.com -dxnt.com -dxnwyjw.com -dxper.net -dxqck.com -dxqjg.com -dxqyy.com -dxr.com -dxrc.com -dxs8.com -dxsaxw.com -dxsbb.com -dxsclass.com -dxsdb.com -dxsdermyy.com -dxshtb.com -dxsk.com -dxsng.com -dxsport.com -dxsrmyy.com -dxsvr.com -dxszx.com -dxton.com -dxtradedata.com -dxtyy.com -dxuexi.com -dxwei.com -dxwfgg.com -dxxxfl.com -dxy.com -dxy.me -dxy.net -dxyan.org -dxyb.com -dxycdn.com -dxyer.com -dxyff.com -dxys.pro -dxyykj.com -dxzanzhu.com -dxzhz.com -dxzk88.com -dxzq.net -dxztc.com -dxzw.com -dxzx.com -dxzy163.com -dy-bus.com -dy-hospital.com -dy120.net -dy163.cc -dy172.com -dy1905.net -dy2018.com -dy2066.com -dy3j.com -dy558.com -dyaobo2029.com -dybeta.com -dycar.net -dyccb.net -dycdn.com -dycic.net -dycjy.com -dycloud.run -dycloudbk.com -dycmyl.com -dycnchem.com -dycom365.com -dycyw.com -dydata.io -dydt.net -dydytt.com -dye-ol.com -dyechina.com -dyedu.net -dyemp.com -dyets-cn.com -dyfc.net -dyfm200.com -dyg-hec.com -dygf.com -dygmotor.com -dygod.org -dygyjs.com -dygzs.com -dyhculture.com -dyhengli.com -dyhgames.com -dyhjw.com -dyhongshun.com -dyhuidong.com -dyhxgame.com -dyjqd.com -dyjqlrj.com -dyjs.com -dyjw.info -dyjxjt.com -dyjxsj.com -dyjymy.com -dykszx.com -dykz66.com -dylc.com -dyls.app -dyly.com -dylyghm.com -dymatic.com -dymexhealthcare.com -dyml.net -dymusictape.com -dymusicvideo.com -dynabook-dbh.com -dynavolt.net -dynguyeniq.com -dyonr.com -dypf8.com -dyqc.com -dyqh.info -dyqm888.com -dyrbw.com -dyrcb.net -dyrmt.com -dyrs.cc -dyrtg.com -dysday.com -dysgydlc.com -dyshf.com -dyshortvideo.com -dysj.com -dysji.com -dyspcdntip.com -dysswjt.com -dythmy.com -dytmgm.com -dytss.com -dytt2028.cc -dytt789.com -dytt7899.com -dytt8.com -dytt8.net -dytt89.com -dyvideotape.com -dywcc.com -dywuyuan.com -dywxs.com -dywzx.com -dyxldjy.com -dyxsdwm.com -dyxtw.com -dyxuexin.com -dyxw.com -dyxz.la -dyxzyy.com -dyys.com -dyysdhv.xyz -dyysoft.net -dyyy120.com -dyzdx.com -dyzpw.com -dyzs163.com -dyzsart.com -dyzxw.org -dz-ailive.com -dz-ic.net -dz-x.net -dz-z.com -dz.tt -dz000.com -dz0566.com -dz11.com -dz137.com -dz169.com -dz169.net -dz19.net -dz1982.com -dz211.com -dz31hao.com -dz88.com -dz98.com -dzabosn.com -dzbarcode.com -dzbchina.com -dzbdq.com -dzblo.com -dzboligang.com -dzbxk.com -dzcch.com -dzcj.tv -dzcjw.com -dzcmedu.com -dzcnc.com -dzcolor.com -dzcrcgas.com -dzdesign.cc -dzdiy.com -dzdu.com -dzdvip.com -dzdxs.net -dzdzzd.com -dzelec.com -dzemotor.com -dzfang.com -dzfc.com -dzfjsm.com -dzfwjd.com -dzglsb.net -dzgxq.com -dzh.link -dzhlive.com -dzhope.com -dzhqexpo.com -dziuu.com -dzjc.com -dzjkw.net -dzjob.net -dzkbw.com -dzkx.org -dzlaa.com -dzlems.net -dzljy.com -dzllzg.com -dzlndygh.com -dzmachines.com -dzmhospital.com -dzng.com -dzoptics.com -dzp.tv -dzpc.net -dzpezp.com -dzpk.com -dzpklite.com -dzpknews.com -dzqrmyy.com -dzqu.com -dzqxj.com -dzr120.com -dzrbs.com -dzrcd.com -dzronghui.com -dzrsteel.com -dzs2004.com -dzsaas.com -dzsaascdn.com -dzsc.com -dzsdg.com -dzsg.com -dzsjgroup.com -dzsjtjt.com -dzsm.com -dzspzx.com -dzsrcw.com -dzszlsyxgs.com -dztester.com -dztugongbu.net -dztv.tv -dztz168.com -dzvv.com -dzw3.com -dzwad.com -dzwebs.net -dzwindows.com -dzwork.net -dzwww.com -dzwww.net -dzwy.com -dzxsw.net -dzxw.net -dzxxzy.com -dzxzh.com -dzy.link -dzybk.com -dzyqc.com -dzyule.com -dzyysb.com -dzyzj.com -dzz.cc -dzzcgs.com -dzzgsw.com -dzzoffice.com -dzzui.com -dzzy88.com -dzzyisp.com -e-10031.com -e-adcon.com -e-ande.com -e-bidding.org -e-buychina.com -e-byte.com -e-cbest.com -e-celap.com -e-chinalife.com -e-ciie.com -e-cloudstore.com -e-cookies.net -e-cspc.com -e-cuc.com -e-czt.com -e-elitech.com -e-eway.com -e-fangtong.com -e-flyinc.com -e-fong.com -e-ging.com -e-ging.net -e-giordano.com -e-gooo.com -e-guofu.com -e-hongw.com -e-hqins.com -e-huaxue.com -e-icco.com -e-jitp-dom.com -e-jitp-dom.net -e-jitp-glo.com -e-jitp-glo.net -e-jjj.com -e-jlt.com -e-kawai.com -e-kays.com -e-length.com -e-lining.com -e-mallchina.com -e-nci.com -e-nebula.com -e-net.hk -e-onekey.com -e-peilian.com -e-picclife.com -e-pointchina.com -e-power.vip -e-pxn.com -e-qdpm.com -e-readbook.com -e-ruikd.com -e-seenet.com -e-sleb.com -e-sscard.com -e-tecsun.com -e-tiller.com -e-tui.net -e-ufnb.com -e-uniongroup.com -e-vaulting.com -e-xina.com -e0453.com -e0514.com -e0575.com -e0734.com -e0838.com -e1.vdowowza.vip.hk1.tvb.com -e12345.com -e1288.com -e1299.com -e12e.com -e1617.com -e1988.com -e1evh0lp4n.com -e213155.com -e21cn.com -e22a.com -e23dns.net -e24c.com -e253.com -e2capp.com -e2edesign.com -e2esoft.com -e2say.com -e360e.com -e365mall.com -e3861.com -e3j.co -e3ol.com -e4008.com -e53w.com -e5413.com -e5865f69dee0.xyz -e5hc.com -e5n.com -e5sj.com -e5tech.com -e600.com -e656gps.com -e65u.com -e68cname.com -e6gps.com -e763.com -e7890.com -e7cn.net -e7e6.net -e7e7e7.com -e7flash.com -e7lang.com -e7wan.com -e7wei.com -e7z.net -e836g.com -e84p8174c7.com -e88u.com -e890.com -e9797.com -e9898.com -e99999.com -e9x51y8t91.com -ea-china.com -ea-retina.com -ea-xing.com -ea2cn-dev-outlet.dell.com -ea2cn-prod-outlet.dell.com -ea2cn-staging-outlet.dell.com -ea360.com -ea3w.com -eabax.com -eachnet.com -eachsee.com -eachtravel.com -eachwave.com -eadianqi.com -eaeacn.com -eaecis.com -eafifaonline2.com -eagle-sight.com -eaglebgm.com -eaglebrandgroup.com -eagleceramics.com -eaglecoin.com -eaglejt.com -eaglemale.com -eaglenos.com -eagleyun.com -eagllwin.com -eagonxc.com -eaibot.com -eaka365.com -eal-ceair.com -eallcn.com -eallerp.com -eamn.net -eanfang.com -eanmed.com -eap2.net -eapchina.net -ear0.com -eardatek.com -earlytrip.fun -earth-science.net -earth2037.com -earthdq.com -earthedu.com -earthstar-cloud.com -earture.org -easck.com -eascs.com -easea.net -easebar.net -easecation.net -easeconvert.com -easefun.info -easeheal.com -easemob.com -easerun.com -easesale.com -easeslb.com -easetuner.com -easeus.com -easeyedelivery.com -eashu.com -easi-tech.com -easilysend.com -easipass.com -easipay.net -easitcn.com -easiu.com -easonad.com -east-regis.com -east.net -east263.com -eastall.com -eastar-group.com -eastbest.com -eastbuy.com -eastchinafair.com -eastcmc.com -eastcom-group.com -eastcom-sw.com -eastcom.com -eastcom.site -eastcompeace.com -eastcoms.com -eastday.com -eastdesign.net -eastdrama.com -eastdushi.com -easteat.com -eastecloud.com -eastecp.com -eastelsoft.com -eastent.com -eastern-tek.com -easternalong.com -easternpose.com -eastforever.com -eastfu.com -easthc.com -easthome.com -eastib.com -easticloud.com -eastjl.com -eastjq.com -eastled.com -eastlen.com -eastlending.com -eastmab.com -eastmannplastics.com -eastmarathon.com -eastmoney.com -eastmoneyfutures.com -eastmoneyloans.com -eastmoneysec.com -eastobacco.com -eastpharm.com -eastpump.com -eastshanghaifair.com -eastsilver.com -eastsoo.com -eastspacelight.com -eaststarbio.com -easttone.com -eastunion.net -eastups.com -eastwin-zc.com -eastwinn.com -eastwudpharma.com -eastyule.com -easu.net -easugar.com -easy-all.net -easy-china.com -easy-dotnet.com -easy-eai.com -easy-ent.com -easy-h5.com -easy-linkholiday.com -easy-mock.com -easy-signing.com -easy163.net -easy2world.com -easy361.com -easy888.com -easyar.com -easyarvr.com -easyball.net -easybug.org -easyclean.fun -easydarwin.org -easyder.com -easydo.work -easydoc.net -easyeda.com -easyfang.com -easyfapiao.com -easyfunfun.com -easygame2021.com -easygametime.com -easygovm.com -easyhaitao.com -easyhin.com -easyidc.com -easylabplus.com -easyliao.net -easylinkin.com -easylinkin.net -easymorse.com -easymule.com -easynet.vip -easypakk.com -easypayx.com -easyrecovery.cc -easyrecovery.net -easyrecoverycn.com -easyscholar.cc -easysensor.net -easysofthome.com -easyswoole.com -easytifen.com -easytimetv.com -easytite.com -easytocn.com -easytogophuket.com -easytouch-manager.com -easytouch.com -easytrip.com -easyv.cloud -easywza.com -easyya.com -easyzw.com -eating8.com -eaton-samc.com -eatonbusbar.com -eatuo.com -eavic.com -eawh.com -eaydu.com -eayh.com -eaymusic.com -eayou.com -eayuan.com -eayyou.com -eazypharm.com -eazytec-cloud.com -eb-ind.com -eb80.com -ebadu.net -ebaidutv.com -ebaifo.com -ebaina.com -ebaixing.com -ebama.net -ebancom.com -ebangchina.com -ebanma.com -ebanshu.net -ebaodai.com -ebaoquan.org -ebaotech.com -ebasset.com -ebchina.com -ebchinaintl.com -ebchinatech.com -ebdan.net -ebdoor.com -ebfcn.com -ebfkc.com -ebfortune.com -ebgic.com -ebibi.com -ebico.com -ebidbid.com -ebidding.com -ebigear.com -ebiobuy.com -ebiomall.com -ebiotrade.com -ebioweb.com -ebjfinance.com -ebjservice.com -eblockschina.com -ebls-group.com -ebnew.com -ebocert.com -ebookmen.com -ebopark.com -eboxmaker.com -ebpftravel.com -ebptp.com -ebrun.com -ebscn-am.com -ebscn.com -ebscohost.com -ebseek.com -ebsfw.com -ebt.group -ebtang.com -ebtrust.com -ebuckler.com -ebullienceconsultancy.com -ebumbrella.com -ebuy16.com -ebuy1718.com -ebways.com -ebyte.com -ec-ae.com -ec-cloudtech.com -ec-founder.com -ec-sz.com -ec-world.com -ec.com -ec07yxgd11.com -ec233.com -ec3s.com -ec51.com -ec8j.com -ecadi.com -ecaidian.com -ecaihr.com -ecamzone.cc -ecanmed.com -ecapp.org -ecaptechnology.com -ecaray.com -ecare365.com -ecarechina.com -ecartoon.net -ecarxgroup.com -ecbcamp.com -ecboo.com -ecbos.com -ecbuy.net -eccang.com -eccc-china.com -eccdnx.com -eccn.com -eccnmall.com -ecco-market.com -eccpos.com -ecdag.net -ecdnx.com -ecduo.com -ece-global.com -eceibs.com -eceibs.net -eceibs20.com -ecej.com -ecer.com -ecerdns.com -ecerimg.com -ecf-gov.com -ecgci.com -ecgoods.com -ecgtool.com -echanceyun.com -echangye.com -echao8.com -echargenet.com -echarpile.com -echatsoft.com -echead.com -echemsrc.com -echepiao.com -echiele.com -echinacareers.com -echinacities.com -echinagov.com -echinatobacco.com -echo-isoftstone.com -echo188.com -echoing.tech -echoteen.com -echu-cable.com -echuaren.com -echunlan.com -echuzhou.com -eci-everconn.com -eciawards.org -ecice06.com -ecigdaily.com -ecinnovations.com -ecitic.com -ecitic.net -eciticcfc.com -ecjobhome.com -ecjson.com -eckgxbfa.com -eckwai.com -ecloud-gdu.com -ecloud.hk -ecmc-nj.com -ecmoban.com -ecmould.com -ecnpl.net -ecnu.net -ecnuas.com -ecnudec.com -eco-seavol.com -eco-system.xyz -ecoalchina.com -ecocn.org -ecodreamers.com -ecoh-china.com -ecoland-plan.com -ecoliving168.com -ecolovo.com -ecom-lightapp.com -ecomanbiotech.com -ecombdapi.com -ecombdimg.com -ecombdpage.com -ecombdstatic.com -ecombdvod.com -ecomoter.com -econtactsplus.com -ecool.site -ecoplastech.com -ecoprint.tech -ecorr.org -ecotourgroup.com -ecouser.net -ecovacs.com -ecovacsgroup.com -ecowrd.com -ecp-cloud.com -ecp-cloud.net -ecphk.com -ecplf.com -ecppn.com -ecpsrplus.com -ecqd.com -ecqun.com -ecr-global.com -ecrrc.com -ecs6.com -ecsage.net -ecscoupon.com -ecscpu.com -ecshop.com -ecshop123.com -ecsits.com -ecspartner.com -ecsponline.com -ecsxs.com -ectdno.com -ectencent.com -ectnno.com -ectnno.org -ectrip.com -ecukwai.com -ecustmde.com -ecv360.com -ecvv.com -ecwan77.net -ecydm.com -ecyti.com -ecyzm.com -eczuafam.com -ed-textile.com -ed21.cc -ed2k.vip -ed2kers.com -ed2kk.com -eda-china.com -eda1024.com -eda2.com -eda365.com -eda365.net -edaboss.com -edadoc.com -edagit.com -edai.com -edaibo.com -edaili.com -edaixi.com -edaizhijia.com -edajob.com -edaocha.com -edata100.com -edatahome.com -edatop.com -edawiki.com -edaxiang.com -edazhang.com -edb-tech.com -edcba.com -edcdfg.com -edcfda.com -eddic.net -eddingpharm.com -eddycjy.com -ede35.com -ededian.com -edefang.net -edengjiang.com -edesson.com -edfni.xyz -edge-byted.com -edge.music-choice-play-chaina1.top.comcast.net -edgefn.net -edgegslb.com -edgekey88.net -edgemec.com -edgeone-ai-dev.com -edgeone-ai.com -edgeone-browser-rendering-dev.com -edgeone-browser-rendering.com -edgeone.ai -edgeone.app -edgeone.cool -edgeone.run -edgeone.site -edgeonedl1.com -edgeonedl1.net -edgeonedy1.com -edgeonedy1.net -edgeonestic1.com -edgeonestic1.net -edgeonetcp1.com -edgeonetcp1.net -edgeonev1.com -edgeonev1.net -edgeonev2.com -edgeonev2.net -edgeonev3.com -edgeonev3.net -edgeonev4.com -edgeonev4.net -edgeonev5.com -edgeonev5.net -edgeonevod1.com -edgeonevod1.net -edgep.net -edgesrv.com -edgetls.xyz -edhic.com -edi198.com -edianda.com -edianshang.com -ediantec.com -edianyun.com -edianzu.com -ediaoyu.com -edifier.com -edimob.com -edingzhuan.com -edirect.asia -edisec.net -editorjianying.com -editsprings.com -edk24.com -edlcaster.com -edmcn.net -edmseller.com -edns.com -edojia.com -edong.com -edongeejiao.com -edongli.net -edongyun.com -edoou.com -edowning.net -edozx.com -edqgk.com -edragongame.com -edrawsoft.com -edream-tech.com -edsionte.com -edspay.com -edt2017.com -edt2018.com -edtsoft.com -edty.com -edu-cj.com -edu-edu.com -edu-nw.com -edu03.com -edu0851.com -edu1488.com -edu24o1.com -edu24ol.com -edu4399.com -edu510.com -edu5a.com -edu63.com -edu777.com -edu84.com -edu84.net -edu88.com -eduaaf.com -eduaiplat.com -eduapaashwc.com -eduardoam.com -eduartisan.com -educg.net -educhn.net -educoder.net -edudc.net -edudigital123.com -eduease.com -eduego.com -eduei.com -eduglobal.com -eduglobalchina.com -eduhuoshi.com -edui.fun -eduic-sh.com -eduiso.com -edujia.com -edujianshe.com -edujiaoyu.com -edukuang.com -edulawonline.com -edulivevideo.com -edumail.pub -edumine.net -edumq.com -eduour.com -edupm.com -edurck.com -edushi.com -edusoho.com -edusoho.net -edusy.net -edutao.com -edutime.net -edutrackconsult.com -edutxw.com -eduu.com -eduuu.com -eduwenzheng.com -eduwest.com -eduwo.com -eduwx.com -edux.design -eduxcxportal.com -eduxiji.net -eduydt.com -eduyf.com -eduyo.com -eduzb.com -eduzhai.net -eduzhi.com -eduzhixin.com -eduzs.net -edwiv.com -edxmy.cc -ee-nav.com -ee123.net -ee1234.com -ee68.com -ee99.net -eeban.com -eebbk.com -eebbk.net -eebest.com -eeboard.com -eechina.com -eecn.cc -eecnt.com -eecourse.com -eecso.com -eedevice.com -eedns.com -eedzvv.com -eee-eee.com -eee4.com -eeeam.com -eeedri.com -eeedu.net -eeeen.com -eeeetop.com -eeeff.com -eeekkk.com -eeeknow.com -eeeqi.net -eees.cc -eeetb.com -eefans.com -eefcdn.com -eeff.net -eefocus.com -eefung.com -eegem.com -eehk.net -eehu.com -eei168.com -eeio99.com -eeioe.com -eeju.com -eelly.com -eema.info -eenzo.com -eeook.com -eeparking.com -eepw.com -eeqiu.com -eeskill.com -eeso.net -eestar.com -eeswa.com -eetoday.com -eetop.com -eetopic.com -eetrend.com -eetrust.com -eeuetqbv.shop -eevision.com -eeworld.com -eeworm.com -eexiaoshuo.com -eeyd.com -eeyxs.com -eeyys.com -eezml.com -ef-cdn.com -ef360.com -ef360.net -efala.net -efang.tv -efangwang.com -efapiao.com -efasco.com -efashionchina.com -efashioncloud.com -efchina.org -efe.cc -efengqing.com -efesco.com -eff-soft.com -effapp.com -efficient.hk -effood.net -efglobal-gy.com -efivestar.com -efl-tech.com -eflagcomm.com -efly.cc -eflybird.com -eflycloud.com -eflydns.net -efmac.net -efnchina.com -eforclub.com -efotile.com -efount.com -efoxconn.com -efpp.com -eftdlqi.com -eftime.com -efucms.com -efueloil.com -efuin.com -efunchina.com -efuncn.com -efunent.com -efunq.com -efusc.com -efwh.com -efy-tech.com -efzhou.com -efzzs.com -egainnews.com -egbt.net -egcmedia.com -egeel.com -egfb2221.com -eggbnk.com -eggrj.com -eghimalayanak.com -egjqgs.com -ego-robotics.com -egoint.com -egongzheng.com -egood995.com -egoonet.com -egotops.com -egou68.com -egouz.com -egovsum.com -egpctiz.com -egpharm.com -egqkxzd.com -egreatworld.com -egret-labs.org -egret.com -egridconsulting.com -egrowads.com -egsea.com -egshuyuan.com -egsssy.com -egt365.com -egu365.com -eguangjie.com -eguantao.com -eguqwhvg.com -egwealth.hk -egxlx.com -ehafo.com -ehaier.com -ehaini.com -ehaiwang.com -ehang.com -ehanglian.com -ehangtian.com -ehaohai.com -ehaoyao.com -ehaoyao.us -ehclglobal.com -ehealthcareforum.com -ehecd.com -ehedco.com -ehejun.com -ehengjian.com -eheren.com -ehetech.com -eheyin.com -ehijoy.com -ehinvest.hk -ehnasia.com -ehnchina.com -ehome-env.com -ehome5.com -ehome8.com -ehomeclouds.com -ehomeday.com -ehouse411.com -ehousechina.com -ehowbuy.com -ehowbuy.net -ehrel.com -ehschina.com -ehsy.com -ehtcn.com -ehualu.com -ehuarun.com -ehuatai.com -ehuataifund.com -ehub.net -ehui.net -ehuijing.com -ehujia.com -ehuoke.com -ehuoyan.com -ehuoyun.com -ehutu.com -ehuyao.com -ehuzhu.com -ei6nd.com -eia-data.com -eia543.com -eiacloud.com -eiafans.com -eiccmall.com -eickaopei.com -eicodesign.com -eicourse.com -eicp.net -eicp.vip -eicuhq.xyz -eiczz.com -eid-sft.com -eidcenter.com -eidlink.com -eidtokencloud.com -eifini.com -eightbridge.com -eightedu.com -eigpay.com -eihtfire.com -eiicn.com -eiisys.com -eiixx.com -eijiucq.com -eilieili.cc -eimoney.com -einfo-tech.com -eingdong.com -einkcn.com -einsteintiles.com -eintone.com -eiot.com -eisoo.com -ejamad.com -ejc56.com -ejcms.com -ejcop.com -ejdrone.com -ejdyin.com -ejectu.com -ejecx.com -ejee.com -ejeegroup.com -ejhimalayanje.com -ejia7.net -ejiacn.com -ejianlong.com -ejianmedia.com -ejiawang.cc -ejiayou.com -ejiayu.com -ejie.me -ejiecheng.com -ejinshan.net -ejion.net -ejmrh.com -ejomoo.com -ejoy.com -ejoy365.com -ejoy365hk.com -ejrfood.com -ejsoon.win -ejtieyi.com -ejtsyc.com -eju.com -ejudata.com -ejuhome.com -ejustcn.com -ejy365.com -ek-edu.com -ek1ng.com -ekaidian.com -ekan001.com -ekang99.com -ekangji.com -ekaobang.com -ekaoyan.com -ekaoyan365.com -ekclubinternational.com -ekecdn.com -ekewy.com -ekimmigration.com -eking-tech.com -ekingair.com -ekingtopwood.com -ekmic873o6vkza.com -ekoooo.com -eks0451.com -eksoi7mwa4fa27.com -ekuaibao.com -ekumao.com -ekumb.com -ekuzy.com -ekwangs.com -ekweixin.com -ekwing.com -ekxx.net -elabinfo.com -elabpic.com -elaiter.com -elane.com -elangchina.com -elanking.com -elanp.com -elanso.com -elanw.com -elascloud.com -elawoffice.net -elbmodel.com -eldamu.com -eldawa.com -ele.me -ele.to -ele001.com -ele12.com -elec100.com -elecfans.com -elecfans.net -elecinfo.com -elecrystal.com -elecshop.com -elecspn.com -eleduck.com -elefang.com -elefirst.com -elegant-prosper.com -elelx.com -eleme.io -elemecdn.com -element3ds.com -elementfresh.com -elenet.me -elephant-base.com -elephantrobotics.com -eleui.net -elevator-expo.com -elex-tech.net -elexcon.com -elextec.com -elfartworld.com -elfinbook.com -elfjs.com -elht.com -elian5.com -elianhong.com -elianmeng.vip -eliansy.com -elianwiz.com -eliaoxuke.com -elicht.com -elikeme.com -elikeme.net -elimautism.org -eling.me -elingka.com -elingyun.com -elinzy.com -elita.work -elitecrm.com -elitenexusgroup.com -elitesland.com -elitetie.com -elitimes.com -eliwang.com -elkpi.com -ellassay.com -ellechina.com -ellemen.com -elleschool.com -elliotxing.com -elmerlxy.com -elmerzhang.com -eloancn.com -elong-edm.com -elong.com -elong.net -elongai.com -elonghotel.com -elongshine.com -elongstatic.com -elongtrip.com -elontest.com -eloonggame.com -eloongsun.com -elpcon.com -elpland.com -elpont.net -elpsky.com -els001.com -elsker.com -elsz5.xyz -eltmall.com -eltt.org -eltws.com -eluxiu.com -eluying.com -elvgufen.com -elvshi.com -elvxing.net -elxk.com -elysia.beauty -em86.net -emai.com -email.fund -emaileds.com -emailflame.com -emailuo.com -emailxqq.com -emak.hk -emakerzone.com -emall001.com -emao.com -emao.net -emaozi.com -emapgis.com -emas-poc.com -ematong.com -emaup.com -emax.cc -embcom.net -embed-cloudstudio.net -embed.cc -embedfire.com -embedhq.org -embedmcu.com -embedsky.com -embedtrain.org -embedu.org -embedunion.com -embedway.com -embest-tech.com -embryform.com -embryochina.com -embsky.com -emby.men -embyvip.org -emcbj.com -emcdir.com -emcsosin.com -emdoor.com -emea.cdnetworks.com -emed.cc -emeiju.com -emeixian.com -emeixs.com -emengju.com -emeok.com -emepu.com -emerald.com -emeratech.com -emergencyexit.xyz -emfuture.com -emilechouriet.com -emin123.com -eminsheng.com -emjianshen.com -emjob.com -emlinix.com -emlog.net -emmmn.com -emodor.com -emohe.com -emoi-cncdn.bing.com -emoji6.com -emojimobile.com -emoriko.com -emotibot.com -emotofine.com -emots.cc -empornium.me -emqx.cloud -emqx.com -emqx.net -emr-volces.com -ems-audio.com -ems517.com -emsec.hk -emsepc.com -emshost.com -emshua.com -emsym.com -emtana.com -emtcm.com -emtronix.com -emtx.com -emu999.net -emuban.com -emuch.net -emuchong.com -emugif.com -emui.com -emui.tech -emuia.com -emulatedlab.com -emumax.com -emupic.com -emushroom.net -emwan.com -emyard.com -emzexzfp.com -en.tm -en51.com -en5static.com -en8848.com -en998.com -enacdn.biz -enacdn.info -enacdn.net -enaiter.com -ename.com -ename.net -enantiotech.com -enbamaoyi.com -enbrands.com -encthinking.com -enderbbs.fun -enderuixm.com -endianpp.com -endovastec.com -endowa-auto.com -endress.store -endurance-shinmaywa.com -enec.net -enelcn.com -energy-greenland.com -energy-root.com -energy-zj.com -energychina.press -energyhz.com -enerpat.net -enet16.com -enet16.net -enet360.com -enet369.com -enetedu.com -enfi.vip -enflame-tech.com -enfodesk.com -enforever.com -eng24.com -engeniustec.com -engeyuan.com -engineeringvillage.com -engley.com -englibrary.com -english163.com -englishdict.cc -englishmasterclub.com -englishtimes.cc -engloncar.com -engpx.com -engr-z.com -enguo.com -engz.net -engzai.com -enianteam.com -enicn.com -eniu.com -enjerr.com -enjlink.com -enjoy.link -enjoy1992.com -enjoy3c.com -enjoycare.com -enjoydiy.com -enjoyfe.com -enjoyglobal.net -enjoying3d.com -enjoykorea.net -enjoymeet.com -enjoynowapp.com -enjoyor.net -enjoyyue.com -enjoyz.com -enketu.com -enkichen.com -enkj.com -enkris.com -enlaide.com -enlightent.com -enlistsecurely.com -enmonster.com -enmotech.com -enmuo.com -enn-ng.com -ennenergy.com -ennew.com -ennewpower.com -ennews.com -ennmt.com -ennobay.com -ennocad.com -ennovabio.com -ennpet.com -ennpower.com -ennresearch.com -enovatemotors.com -enoya.com -enpapers.com -enpht.com -enpower-sd.com -enpowermicro.com -enproscm.com -enqoo.com -enread.com -enricgroup-sh.com -enrlb.com -enroo.com -enroobbs.com -enruida.com -enruigroup.com -enrz.com -ens4.com -enshide.com -enshijob.com -ensignworld.com -enstylement.com -ent001.com -ent120.com -entengll.com -enterdesk.com -enterdesk.net -entive.com -entstudy.com -entts.com -enunix.com -enuomachinery.net -envi-ch.com -envisioncn.com -enwing-tech.com -enxicled.com -enyamusical.com -enzj.com -eo-edgefunctions.com -eo-edgefunctions1.com -eo-edgefunctions2.com -eo-edgefunctions3.com -eo-edgefunctions4.com -eo-edgefunctions5.com -eo-edgefunctions6.com -eo-edgefunctions7.com -eo-edgefunctions8.com -eo-edgefunctions9.com -eo-preview.com -eo-shieldspace.com -eo-vod.com -eo-vod1.com -eo-vod2.com -eo-vod3.com -eo-vod4.com -eo-vod5.com -eo-vpcgw.com -eoacc2.com -eoacme-dev.com -eoacme0.com -eoacme1.com -eoacme2.com -eoacme3.com -eoaluminium.com -eoaoo.com -eoeandroid.com -eoemarket.com -eoemarket.net -eoffcn.com -eofreqctrl.com -eofreqctrlbk.com -eogamewechat.com -eoivisa.com -eojofdrzei4.com -eolce.com -eolink.com -eolinker.com -eomgames.net -eomoo.com -eomoy.com -eonlytech.com -eonun.com -eoof.net -eoofoo.com -eooioo.com -eoopoo.com -eooqoo.com -eoouoo.com -eoovoo.com -eoriver.com -eorygadw.com -eorzea.moe -eosantpool.com -eoss-hj.com -eovod.com -ep-china.net -ep-zl.com -ep12.com -ep365.com -epaas.net -epaiclub.com -epailive.com -epalfish.com -epandian.com -epanshi.com -epassway.com -epay.com -epaynfc.com -epbiao.com -epchina.com -epcnn.com -epcservicio.com -epcsw.com -epd3.com -epday.com -epeaksport.com -epeimall.com -epeo.net -epermarket.com -epesr.com -epet.com -epetbar.com -epetpet.com -epexpo-asia.com -epfrontier.com -epg-power.com -ephen.me -ephua.com -epian1.com -epiaogo.com -epibiotek.com -epicgamesspot.com -epichust.com -epinautomation.com -epinduo.com -epinga.com -epinhoo.com -epinv.com -epinzu.com -epjike.com -epjob88.com -epkey.com -eplove.com -epluspvy.com -epnnel.com -epoos.com -eportyun.com -eprcw.com -eprezi.com -eps-tigermed.com -epsea.com -epshw.com -epstsoft.com -eptchina.com -eptsz.com -epub360.com -epubit.com -epweike.com -epwitkey.com -epwk.com -epzcw.com -epzwxs.com -eq321.com -eqding.com -eqh5.com -eqicha.com -eqidi.com -eqie.com -eqifa.com -eqigou.com -eqingdan.com -eqixiu.com -eqiyingxiao.com -eqlky.com -eqmis.com -eqmobi.com -eqnvip.com -eqoavtbu.com -equalocean.com -equdong.net -equipmentimes.com -eqxiu.com -eqxiu.mobi -eqxiul.com -eqxiuzhan.com -eqyn.com -er07.com -er8gmvwi54p5x1.com -eraclean.com -eraedu.com -eral.com -eran123.com -eranet-dns.com -eranet.com -eranqi.com -erapp.run -erbadu.com -erbingimg.com -ercc.cc -ercfh.com -ercoabv.com -erda.cloud -erdaicms.com -erdangame.xyz -erdangjiade.com -erddv.com -erdiamond.com -erdianzhang.com -erdong.site -erdosedu.com -erdosrcb.com -erdossysw.com -erelcn.com -erentalcarpro.com -ereter.com -ereuiib.com -erfang-ic.com -erg3r.com -ergcb.com -ergecdn.com -ergedd.com -ergediandian.com -ergeduoduo.com -ergengtech.com -ergengtv.com -ergouzi.fun -ergvx.com -erhua.cc -erhuyou.com -eric-bot.com -ericdeng.net -erichfund.com -eriqua.com -erji.com -erji.hk -erji.net -erjianglin.com -erjiren.com -erk8.com -erke.com -erkuai.com -erldoc.com -erlo.vip -erlou.com -ermain.com -ermao.com -ermao.live -ermeiti.com -ermiao.com -ernaonet.com -ernest.me -ernxzc.com -eroacg.com -erongdu.com -erp321.com -erp321.net -erpang.cc -erpingge.com -erpwd.com -erro.life -ersantian.com -ershicimi.com -ersjk.com -ersoso.com -ersuo.com -ert.icu -ert7.com -ertmineq.com -ertongkongjian.com -ertongtuku.com -ertoutiao.com -ertzxc.com -erun.cloud -erun360.com -erw.cc -erxin360.com -erxitong.com -erya100.com -eryajf.net -eryanet.com -eryi.org -eryyutu.com -erzzz.com -es-soccer.com -es100.com -es2q.com -es86.com -es9e.com -esa2000.com -esafenet.com -esandcloud.com -esavip.com -esbedu.com -esbook.cc -esc.show -escdn.com -escjy.com -esclt.net -esdaxiagu.com -esde.cc -esdhm.net -esdxcg.com -esemseo.com -esenagro.com -esensoft.com -esfimg.com -esgforum.com -esgz.com -eshangle.com -eshare.cc -esheep.com -eshenlin.com -eshimin.com -eshine-logistics.com -eshiyun.info -eshop-switch.com -eshopb2c.com -eshow365.com -eshufa.com -eshuizong.com -eshukan.com -eshzp.com -esilk.net -esinidc.com -esipark.com -esjlf.com -esjson.com -esk365.com -eskedu.com -eskimall.com -eskysky.com -eslosity.com -eslygroup.com -esm8u7oe9ci5.com -esmartwave.com -esnai.com -esnai.net -esni.tech -esnpc.com -esoboy.com -esoho.org -eson.org -esoo.org -esoogle.com -esou.biz -esoua.com -esound.vip -esouou.com -esp8266.com -espeedpost.com -esplus.club -espnlol.com -esports-console.com -esportsreg.com -espressif.com -esr.com -essaystar.com -essbjs.com -essca.com -essclick.com -essemi.com -essencefund.com -esseniot.com -essent-tech.com -ession.com -essjj.com -esstglobal.com -essurl.com -esswye.com -essxp.com -essyy.com -estandonhotel.com -esteellink.com -estelchina.com -estonegroup.com -estory365.com -estrongs.com -esttools.com -estudychinese.com -estun.com -esudai.com -esugimoto.com -esun21.com -esun88.com -esune.com -esunny.com -esunresin.com -esurging.com -eswin.com -eswincomputing.com -eswlnk.com -eswxj.com -eswzx.com -esxlt.com -eszmall.com -esztsg.org -esztyg.com -eszwdx.com -eszyb.com -et-api.com -et-cdn.com -et-fine.com -et001.com -et59.com -etagri.com -etang.com -etao.com -etaog.com -etaswisswatch.com -etbet.com -etccenter.com -etccenters.com -etcchebao.com -etcgsx.com -etchcb.com -etcsd.com -etcsx.com -etczs.net -etczx.com -etelux.com -eternalsys.com -eterngroup.com -etescape.com -etest8.com -eteste.com -etf.group -etf88.com -etfcjz.com -etfiber.net -etg56.com -ethainan.com -ethan.pub -ethercap.com -etian365.com -etiantian.com -etiantian.net -etimeusa.com -etiv.me -etjournals.com -etjy.com -etlong.com -etmoc.com -etmtoy.com -etmwanju.com -etocrm.com -etolies.com -etomlink.com -eton-tech.com -etonetech.com -etonfood.com -etong.com -etongchem.com -etongguan.com -etonjx.com -etonkidd.com -etonkids.com -etool.cc -etoote.com -etoote.net -etoplive.com -etoprun.com -etoptour.com -etoubao.com -etoujie.com -etowncapital.com -etownestate.com -etpass.com -etplat.com -etpowers.com -etrack01.com -etrack02.com -etrack03.com -etrack04.com -etrack05.com -etrack07.com -etrack08.com -etradegx.com -etransfar.com -etranshare.com -etrasemi.com -etrd.org -etrol.com -etrump.net -ets100.com -etsc-tech.com -etsingshan.com -etsoon.com -etsstar.com -ett-cn.com -ett.cc -ettabiotech.com -ettbl.org -ettdns.com -ettdns.net -ettdnsv.com -ettdnsv.net -ettinn.com -ettshop.com -etu6.com -etuan.com -etuan123.com -etudu.com -etuogroup.com -etuoyi.com -etuschool.org -etwgzkce.com -etxcs.com -etycx.com -etyy.com -etyyy.com -etz927.com -etzj.net -etzqw.com -etzzy.com -eu4cn.com -eub-inc.com -euci-software.com -eucure.com -eudic.net -euejia.com -eueui.com -eufc.org -euforums.com -euhhob.com -eui.cc -euibe.com -euino.com -eulike.com -eulixos.com -eumt.com -eur-go.com -eurasia.edu -euratao.com -eureka.name -eurkon.com -euroasia-p.com -eurochinesedaily.com -eurofinscn.com -europapa.com -europe.com.hk -europewatch.com -europewatch.com.hk -eursell.com -eusercenter.com -eushophq.com -eusoftbank.com -euwan.com -euzw.net -ev123.com -ev123.net -ev3ds.com -ev98.com -eva-group.com -eva001.com -evacellbio.com -evan.xin -evancg.com -evanway.net -evask360.com -evcar.com -evcard.com -evcard.vip -evcrrc.com -evdays.com -evdo.vip -eve.moe -evebattery.com -evefashion.com -evening.me -eventown.com -events.pub -eveqbow.xyz -ever9527.com -everbox.net -everbright.com -everbright21.com -everbrightlaw.com -everbrightphotonics.com -evercarecn.com -everdns.com -everdrawing.com -evereasycom.com -everedit.net -everet.org -evergrande.com -evergrandeauto.com -evergrandeservice.com -evergrandespring.com -evergreen-plastics.com -everichgroup.com -everisker.com -everknight.net -everlight-space.com -evernakedcake.com -everrobot.com -eversino.com -everspry.com -everstar.xyz -everstray.com -eversun-chn.com -everybodygame.com -everybodysuo.com -everychina.com -everydo.com -everyinch.net -everyonejun.com -everyouthtech.com -evestemptation.com -evewan.com -evfchina.com -evget.com -evgezphv.com -evhui.com -evideostb.com -evileyesaint.com -evilleaker.com -evinchina.com -evisa99.com -evisionics.com -evisugo.com -evketang.com -evkworld.net -evlightpro.com -evlook.com -evmam-tbrat.com -evobserver.com -evoc.com -evocqd.com -evotrue.com -evpartner.com -evpowergroup.com -evtcn.com -evv1.com -evzhidao.com -evzs.com -ew-wirestripping.com -ew80.com -ew80.net -ew80yun.com -ew9z.com -ewaga.com -ewang.com -ewaninfo.com -ewarecomputer.com -ewaterchina.com -ewatt.com -ewceo.com -ewdcloud.com -ewebeditor.net -ewebsoft.com -ewecha.com -ewei.com -eweiqi.com -eweirong.com -eweis.com -ewemt.com -ewen.co -ewenyan.com -ewhnzmqncm7.com -ewidecloud.com -ewidewater.com -ewidewater.net -ewie.net -ewin007.com -ewinshine.com -ewinshocks.com -ewoka.com -ewomail.com -eworksglobal.com -eworldship.com -ewpeinfo.com -ewqcxz.com -ewsaas.com -ewsdxc.com -ewstudy.com -ewt360.com -ewteacher.com -ewtp.com -ewtp.org -ewu.cc -ewuzhen.com -ewzqsyuc.link -ex-silver.com -ex-starch.com -ex360.com -exact-ic.com -exam100.net -exam58.com -exam76.com -exam8.com -examcoo.com -examda.com -examebook.com -examk.com -exampx.com -examw.com -exands.com -exaphotons.com -exaprofit.com -exasic.com -exbaotuan.com -exbapp.com -exbot.net -exc-resin.com -exc118.com -excake.com -excalibur.link -excarepharm.com -excbio.com -excean.com -exceedconn.com -excegroup.com -excegroupur.com -excel8.com -excel880.com -excelcn.com -excelhome.net -excellbio.com -excellencegroupfoundation.com -excelpharma.com -excelpx.com -excm.net -exd.design -exdoll.com -exeedcars.com -exexm.com -exezhanqun.com -exfree.com -exgpykzm.com -exhera.com -exia.xyz -exiaoba.com -exinee.com -exingbao.com -exiqu.com -exllog.com -exmailgz.com -exmailqq.com -exmay.com -exmetis.com -exmoo.com -exmrw.com -exnpk.com -exntech.com -exo-mk.com -exound.com -exp99.com -expba.com -expdns.net -expec-tech.com -expin.site -expingworld.com -expiredns.net -expirenotification.com -expirepausedns.com -expku.com -explinks.com -explorehainan.com -expo-china.com -expo-nb.com -expocemat.com -expodmc.com -expoeye.net -expohsp.com -expolifestyle.com -exponingbo.com -expoon.com -expoooo.com -expoquan.com -expotu.com -expowindow.com -expozh.com -expressboo.com -expresscompanynetwork.com -expreview.com -exprun.com -expsky.com -exquisite-automotive.com -exsvc.net -ext2fsd.com -extech-sh.com -externalcoop.com -extfans.com -extqq.com -extron-tech.com -extscreen.com -extstars.com -exuanfang.cc -exuanpin.com -exuanshi.com -exuekt.com -exueshi.com -exuezhe.com -exyws.org -ey100.com -ey3g.com -ey99.com -eyacn.com -eyangfan.com -eyangguang.com -eyangzhen.com -eyao168.com -eyaobei.com -eyaodev.xyz -eyar.com -eyasglobal.com -eyasgloble.com -eyatv.com -eybond.com -eybook.com -eycfhb.com -eycms.net -eydata.net -eydns.com -eye023.com -eye024.com -eye025.com -eye027.com -eye0510.com -eye0515.com -eye0561.com -eye0712.com -eye0731.com -eye0746.com -eye0770.com -eye0771.com -eye0773.com -eye0774.com -eye0775.com -eye0776.com -eye0777.com -eye0779.com -eyeabc.com -eyee.com -eyeofcloud.com -eyeofcloud.net -eyepetizer.net -eyesar.com -eyeshenzhen.com -eyeso.net -eyhsj.com -eyili.com -eyingchuang.com -eyingyubao.com -eyiwu.com -eyoodns.com -eyoogo.com -eyou.com -eyou.net -eyoubaidu.com -eyoucms.com -eyouct.com -eyoumb.com -eyoungindustry.com -eyourbusiness.com -eyouwx.com -eyprint.com -eyspwkg.com -eyuangong.com -eyuconnect.com -eyugame.com -eyunidc.com -eyunker.com -eyunzhu.com -eyuyan.com -eyuyan.la -eyuyao.com -eyuzhu.com -eywedu.com -eywedu.net -eywedu.org -eyy168.com -eyy8.vip -eyyyye.com -eyz.ink -eyzeafp.com -ez-leaf.com -ez01.com -ezagoo.com -ezaiai.com -ezca.org -ezchip.tech -ezcname.com -ezcpt.com -ezcun.com -ezdnscenter.com -ezeeship.com -ezeroshop.com -ezfuns.com -ezhangdan.com -ezhangu.com -ezhayan.com -ezhicai.com -ezhijiantuoluo.com -ezhijiao.com -ezhiwan.com -ezhou.com -ezhousetech.com -ezhu.com -ezhuchina.com -ezhun.com -ezhupei.com -ezindie.com -eziot.com -ezjhw.com -ezlippi.com -ezliushao.com -ezloo.com -eznowdns.com -eznowdns.net -ezone-h5.com -ezonsport.com -ezpro.pro -ezreal.cool -ezrent.hk -ezrpro.com -ezsuperfans.com -eztcn.com -eztest.org -eztvnet.com -ezucoo.com -ezviz.com -ezwan.com -ezwanjia.com -ezwise.com -ezyotkp.com -ezzls.com -ezzxw.com -f-0.cc -f-biology.com -f-dou.com -f-insight.com -f-stack.org -f.cx -f008.com -f0580.com -f0758.com -f09qgja1.com -f1-shanghai.com -f11w.com -f130.com -f139.com -f1943w.com -f1c.lol -f1zd.com -f24hls-i.akamaihd.net -f26.cc -f2time.com -f315.cc -f32365.com -f3322.net -f3322.org -f41g.com -f52o04oylrbmfw.com -f537.com -f5432.com -f54321.com -f5cs.com -f5gh.com -f5sd.com -f5yx.com -f61a.com -f61b.com -f64532081.com -f6yc.com -f7777.net -f7chinavip.com -f7yuncdn.com -f8fm.com -fa-part.com -fa-today.com -fa-tojoin.com -faakee.com -faanw.com -faayoo.com -fabang.com -fabao365.com -fabaofoundation.com -fabaogou.com -fabiao.com -fabiaoqing.com -fabigbig.com -fabpo.com -fabu.io -fabu114.com -faburuanwen.com -fabuzhushou.com -facaishiyi.com -facaishu.com -facang.com -facash.com -face-plus-plus.com -face100.net -face2ai.com -faceboer.com -facebookol.com -facebooksx.com -facecloud.net -facedic.com -faceface2.com -facehufu.com -faceid.com -facejoking.com -facephoto.com -faceplusplus.com -facernt.com -faceu.com -faceu.mobi -faceu.net -faceui.com -faceunity.com -fachcloud.com -facri.com -factchina.com -factj.com -factube.com -fadada.com -fadesky.com -fadfunds.com -fadior.cc -fadoudou.com -fadoushi.com -fadsc.com -fadsfasd.asia -fadui.com -fafa9.com -fafacn.com -fafaku.com -fafawang.com -fafeng.com -fafuli.com -fagaoshi.com -fageka.com -fagua.net -faguowenhua.com -fahai.com -fahuolianmeng.com -faidev.cc -faidns.com -faieduusr.com -faihdusr.com -faimallusr.com -faioo.com -faipod.com -fair-guard.com -fair1688.com -fairguard.net -fairguard.tech -fairhr.com -fairkwa.com -fairplaycloud.com -fairso.com -fairygui.com -fairysen.com -fairysoft.net -fairysoftware.com -fairytest.com -faiscm.com -faisco.com -faisys.com -faiusr.com -faiusrd.com -faiww.com -fajiayun.com -fajihao.com -fakamiao.com -fakamiao.shop -fakeloc.cc -fakeluxurywatches.com -faku-airport.net -falconnet.app -falconsending.com -falcontalent.com -faloo.com -famascro.com -fameile.net -fameirui.com -famen163.com -famenbaike.com -famens.com -famens.vip -famensi.com -famicn.com -family-marathon.com -familyincloud.com -familykoloro.com -familylifemag.com -familyzuji.com -faminuo.com -famiyou.com -famobiotech.com -famousoffice.com -famoustone.com -famulei.com -fan-lun.com -fan-md.com -fan-tastic.fun -fan-xun.com -fan88.com -fanai.com -fanbook.mobi -fancl-vip.com -fancyecommerce.com -fandcode.com -fandengds.com -fandian.com -fandiankeji.com -fandongxi.com -fane8.com -fanerkongjian.com -fanfannet.com -fanfou.com -fang-te.com -fang-zhou.com -fang.com -fang.xin -fang24k.com -fang33.com -fang668.com -fang91.com -fang99.cc -fang99.com -fangbei.org -fangcang.com -fangcece.com -fangchan.com -fangche.net -fangchengbao.com -fangchengbaoapp.com -fangchengganglvxingshe.com -fangchip.com -fangcloud.com -fangcunshan.xyz -fangda-specialsteels.com -fangda.com -fangdacarbon.com -fangdaijisuanqi.com -fangdaquan.com -fangdd.com -fangdichanceo.com -fangdonggroup.com -fangdr.com -fangdudu.com -fangfa.net -fanggeek.com -fangguan6.com -fanghenet.com -fangheng.com -fanghua120.com -fanghuafu.com -fanghuihui.com -fangjia.com -fangjiadp.com -fangjinsuo.com -fangkeduo.net -fangkewang.com -fangko.com -fangkuai.com -fangkuai.link -fangkuaiwang.com -fangkuaiyi.com -fanglb.com -fangle.com -fangliju.com -fanglimei.com -fanglinad.com -fanglitong.com -fangma.com -fangming.com -fango8.com -fangpaiwang.com -fangqk.com -fangrun.com -fangshanzi.com -fangsheji.com -fangshengaxle.com -fangsi.net -fangstar.com -fangtan007.com -fangtangtv.com -fangte.com -fangtian.net -fangtong.com -fangtx.com -fangwei315.com -fangweima.com -fangwuzaixian.com -fangxfang.com -fangxian.org -fangxiaobao.net -fangxiaoer.com -fangxin.com -fangxinbao.com -fangxinbiao.com -fangxinmai.com -fangxinzhuomian.com -fangyanzazhi.com -fangyb.com -fangyi.com -fangyiai.com -fangyou.com -fangyouquan.com -fangyouw.com -fangyuan-group.com -fangyuan365.com -fangyuanhp.com -fangyuannew1zycdn.cc -fangyunlin.com -fangzd.com -fangzew.com -fangzhengip.com -fangzhengshufa.com -fangzhenxiu.com -fangzhipeng.com -fangzhouad.com -fangzhoukonggu.com -fangzhoulawyer.com -fangzhouqihang.com -fangzhoushidai.com -fangzhouyanglao.com -fangzongguan.com -fanhai-hk.com -fanhaib.com -fanhaic.com -fanhangame.ltd -fanhaoyue.com -fanhar.com -fanhonghua.net -fanhougame.com -fanhuaholdings.com -fanhuan.com -fanhuan.org -fanhuishou.com -fanin.cc -faniuwenda.com -fanjianhome.com -fanjinyan.com -fanjunyang.zone -fankebang.com -fankhome.com -fankuweb.com -fanli.com -fanli001.net -fanlibei.com -fanlicome.com -fanlihe.com -fanlihi.com -fanlihotels.com -fanlitou.com -fanlv.fun -fanmeilantian.com -fanmimi.com -fanmingming.com -fanmugua.net -fannaojiputi.com -fanooo.com -fanpaijidian.com -fanpanjidain.com -fanpusoft.com -fanqiang.com -fanqianzhushou.com -fanqie.im -fanqiecopyright.com -fanqiejiang.net -fanqienovel.com -fanqieopen.com -fanqieopenpic.com -fanqieopenstatic.com -fanqieopenvod.com -fanqier.com -fanqiesdk.com -fanqiesdkpic.com -fanqiesdkstatic.com -fanqiesdkvod.com -fanqietianqi.com -fanqievv.com -fanqiewin10.com -fanqiexitong.com -fanquanwang.com -fanruan.com -fanruanclub.com -fanryes.com -fans35.com -fans8.com -fanshicekong.com -fanshigang.com -fanshui.net -fansiji.com -fansimg.com -fansjoy.net -fansobattery.com -fansoon.com -fansx.com -fansyes.com -fantablade.com -fantaiai.com -fantaicdn.net -fantaitech.com -fantanggame.com -fantasticbin.com -fantatech.com -fantawild.com -fante.com -fantibody.com -fantnet.com -fantong.com -fantsida.com -fanttec.com -fantuan.hk -fanuc666.com -fanuchdf.com -fanw8.com -fanwantianyu.com -fanwe.com -fanwen118.com -fanwenbaike.com -fanwenq.com -fanwenzhan.com -fanwubi.org -fanxian.com -fanxiang.com -fanxianw.com -fanxiaojian.com -fanxing.com -fanxingliveshow.com -fanxingshidaitech.com -fanxuefei.com -fany-eda.com -fany-online.com -fanyantao.com -fanyeda.com -fanyedu.com -fanyi.com -fanyi1234.com -fanyiba.net -fanyibase.com -fanyigou.com -fanyigou.net -fanyijia.com -fanyiqi.net -fanyishang.com -fanyitec.com -fanyouvip.com -fanyu.com -fanyu.work -fanyuip.com -fanzehua.com -fanzhidu.com -fanzhiyang.com -fapharm.com -fapiao.com -fapiao365.com -fapiaobang.com -fapselc.com -faqianjia.com -faqingtie.com -faqiren.com -far-china.com -far123.com -far800.com -faraconix.com -faradayfuturecn.com -faradynamics.com -fareastcontainers.com -farenhui.com -farennews.com -farerdak.com -farfir.com -farisl.com -farmasino.com -farmkd.com -farmsec.com -farsee2.com -farsightdev.com -fas-bee.com -fasensor.com -fash1043.cloudycdn.services -fashaoyou.net -fashengba.com -fashilawfirm.com -fashionszshow.com -fashiontrenddigest.com -fashuounion.com -fasionchan.com -fast-eyes.com -fast-heat-cartridge-heaters.com -fast.im -fast666ioceywit93h8a.com -fastadmin.net -fastbuild.run -fastcdn.com -fastchina.net -fastdo.cc -fastener-cn.net -fastener.cc -fastgz.com -fastidea.cc -fastidea.me -fastindexs.com -fastliii.com -fastmirror.net -fastmirror.org -fastmis.com -fastmock.site -fastmovie88.com -fastmyna.com -faston56.com -fastonetech.com -fastoper.com -fastposter.net -fastreportcn.com -fastsdwan.com -fastsoc.com -fastsoso.cc -faststatics.com -fastx-ai.com -fat-tail.com -fat999.com -fatangmedia.com -fatbobman.com -fateadm.com -fatedier.com -fateqi.com -fatfreader.com -fatherai.com -fatiao.pro -fatieku.com -fatier.com -fatoan.com -fatvg.com -faussefrance.com -faussemontrerolex.com -favang.com -favdeb.com -favopen.com -favorites.ren -faw-benteng.com -faw-vw.com -faw.com -fawan.com -faway.com -fawmc.com -fawsoft.com -fawulu.com -fawuzaixian.com -faxdns.com -faxdns.net -faxianjingpin.com -faxianla.com -faxianlaw.com -faxianpindao.com -faxingbao.com -faxingchina.com -faxingcn.com -faxingsj.com -faxingzhan.com -faxiufang.com -faxuan.net -faxy-tech.com -fayfans.com -fayifa.com -fayimen.com -fayiyi.com -fayufaguo.com -fazhijx.com -fazz.fun -fb56.com -fbaichuan.com -fbank.com -fbatop.com -fbflex.com -fbjsgf.com -fbkjapp.com -fbku.com -fblife.com -fblsj.com -fbnxb.com -fbook.net -fbpaas.com -fbsjedu.com -fbuy365.com -fbxslw.com -fbyvalve.com -fc-aliyun.xyz -fc-smartglobal.xyz -fc0531.com -fc0633.com -fc571.com -fc62.com -fc811.com -fc858.com -fcachinagsdp.com -fcai.com -fcapp.run -fcb16888.com -fcbox.com -fcboxmall.com -fcbs999.com -fcbsgroup.com -fcbu.com -fcchbj.com -fccs.com -fccscar.com -fcczp.com -fcg01.com -fcg0770.com -fcgasj.com -fcgby.com -fcgcgs.com -fcgdawanmatou.com -fcgfcjy.com -fcgfzjy.com -fcggsj.com -fcghbxx.com -fcghfnm.com -fcgjhsp.com -fcglib.com -fcgmaple.com -fcgsaps.com -fcgsnews.com -fcgstzjt.com -fcguoan.com -fcgxt.com -fcgzjchy.com -fcgzph.com -fcgzrkq.com -fcgzrzyqxyj.com -fchospital.com -fcjjdbsc.com -fcjjt.com -fcjob.net -fcjob88.com -fcjtaobao.com -fcjuxian.com -fckpw.com -fclassroom.com -fcldaf.com -fcljt.com -fcln.net -fclouddns.net -fcloudpaas.com -fcnes.com -fcnode.net -fcpawn.com -fcpiao.com -fcpowerup.com -fcqjc.com -fcrc114.com -fcs.dell.com -fcs1.com -fcsc.com -fcsccz.com -fcsdzly.xyz -fcseiko.com -fcstor.com -fcsubcn.cc -fctaiwan.com -fcvvip.com -fcw0633.com -fcw6.com -fcwei.com -fcwr8.com -fcwyglyxgs.com -fcxxh.org -fcxzb.com -fcz.ink -fcz360.com -fczhongwang.com -fczlpt.com -fczlsc.com -fczst.com -fczx.com -fd-capital.com -fd-trust.com -fd-yy.com -fd-zj.com -fdbatt.com -fdc0746.com -fdcjj.org -fdcyun.com -fdczbstatic.com -fdddf.com -fdeent.org -fdeer.com -fdevops.com -fdfhtl.com -fdgearbox.com -fdh6up750n.com -fdjskf.com -fdjzu.com -fdkfloor.com -fdkm88.com -fdlbeckwai.com -fdleckwai.com -fdlt.net -fdmhmm.com -fdooo.com -fdqc.com -fdren.com -fdrobot.com -fdtsgs.com -fdttgroup.com -fdx-fund.com -fdxww.com -fdxxjs.com -fdzcxy.com -fdzq.com -fdzyy.com -fdzzjs.com -fe-cable.com -fe2x.cc -fe520.com -feadi.com -feanton.com -feapp.net -featchina.com -fecc.cc -fecify.com -fecmall.com -fecn.net -fecshop.com -fedlearner.net -fedte.cc -feeair.com -feeclouds.com -feedcoop.net -feedcoopapi.com -feedsp.com -feedss.com -feeeco.com -feehi.com -feejii.com -feekr.com -feel-bar.com -feelcars.com -feelchat.net -feelec.net -feelnowtrip.com -feelsoar.com -feemoo.com -feemoo.vip -feepan.com -feesing.com -feeyan.com -feeye.com -feeyeah.com -feeyo.com -feeyun.com -fegine.com -feheadline.com -fehelper.com -fehorizon.com -fei580.com -feiair.com -feiauto.com -feibajiasu.com -feibaokeji.com -feiben-starter.com -feibians.com -feibing.tech -feibisi.com -feibisi.org -feibit.com -feibo.com -feichangrice.com -feichicloud.com -feichong.net -feicool.com -feicui168.com -feicui99.com -feicuishuo.com -feicuiwuyu.com -feida-china.net -feidacrusher.com -feidaep.com -feidagroup.com -feidaoboke.com -feidavalve.com -feidazuanji.com -feidee.com -feidee.net -feidi.com -feidiao.com -feidou.com -feie.work -feierlaiedu.com -feiersmart.com -feifandesign.com -feifanindustry.com -feifantxt.com -feifantxt.net -feifanwangg.com -feifdx.com -feifei.com -feifeiboke.com -feifeishijie.com -feifeixitong.com -feifeiziyuan.com -feifustudio.com -feigang.net -feige.ee -feigeblog.com -feigo.fun -feihe.com -feihe168.com -feiheair.com -feihengip.com -feihongtec.com -feihu.me -feihua.com -feihuadns.com -feihuo.com -feihutaoke.com -feijing88.com -feijipan.com -feijiu.net -feijiuzs.com -feijix.com -feijs.com -feikework.com -feikongbao.com -feiku.com -feikua.net -feiliao.com -feilihua.com -feiliks.com -feiliu.com -feilixi888.com -feilu.cc -feilvway.com -feimalv.com -feimao666.com -feimaoweb.com -feimaoyun.com -feimawaiqin.com -feimayun.com -feimogames.com -feimooo.com -feimosheji.com -feimoustex.net -feinews.com -feiniao.name -feiniaomy.com -feiniaowangluo.com -feiniu.com -feinno.com -feiphp.com -feipin.com -feipin.net -feipinzhan.com -feipr.com -feiq18.com -feirar.com -feiruikeji.com -feisaidi.com -feisan.net -feishu-3rd-party-services.com -feishu-boe.net -feishu-pre.net -feishu.net -feishuapp-cdn.net -feishuapp.com -feishucdn.com -feishudoc.com -feishuhuiyi.com -feishuimg-boe.com -feishuimg-pre.com -feishuimg.com -feishukacdn.com -feishumeetings.com -feishuoffice.com -feishuopenplatformrecord.com -feishupkg.com -feishuvc.com -feishuwx.net -feishuzw.net -feisiplus.com -feistech.com -feisu.com -feisuwx.org -feisuxs.com -feisuzhibo.com -feitaomall.com -feitengsoft.com -feitent.com -feitianwu7.com -feitsui.com -feituo126.com -feiwan.net -feiwentianxia.com -feixian.cc -feixiansoft.com -feixiaoqiu.com -feixiong.tv -feixue666.com -feixuege.com -feixueteam.net -feiyang.com -feiyang.hk -feiyang233.club -feiyang971.com -feiyangholiday.com -feiyangjm.com -feiyangstar.com -feiyiblog.com -feiyin2016.com -feiying-china.com -feiyit.com -feiyouyun.com -feiyu.com -feiyuapi.com -feiyue.online -feiyueconglin.com -feiyuhu.com -feiyun.cc -feiyunjs.com -feiyunxiazai.com -feiyuteam.com -feizan.com -feizhaojun.com -feizhiyi.com -feizhu.com -feizhuke.com -feizhupan.com -feizhuqwq.com -feizutrip.com -feizw.net -felicitysolar.com -feling.net -felink.com -felix021.com -felo-ev.com -femrice.com -fen360.com -fenbaner.net -fenbei.com -fenbeijinfu.com -fenbeitong.com -fenbi.com -fenbike.com -fenbilantian.com -fenbu.net -fenby.com -fencescn.com -fenchuan8.com -fenda.com -fendytech.com -fenfen.com -fenfenriji.com -fenfentang.com -fenfenwz.com -fenfenyu.com -fenfenzh.cc -feng-du.com -feng.com -feng.pub -feng1.com -fengakj.com -fengaomedical.com -fengba888.com -fengbangleasing.com -fengbao.com -fengbaowo.com -fengbohan.com -fengbolive.com -fengcaijiaju.com -fengchaoyuan.com -fengche.us -fengchengroup.com -fengchizixun.com -fengchuanba.com -fengchui.cc -fengchusheng.com -fengcms.com -fengcx.com -fengdu.com -fengdu365.com -fengdufrp.com -fengduqi.com -fengduxiaoshuo.com -fengedu.com -fengeek.com -fengei.com -fengeini.com -fengex.com -fengfeng.cc -fenggangzulin.com -fenggongliangrenju.com -fenggouhui.com -fenghaibin.com -fenghenever.com -fenghong.tech -fenghua001.com -fenghuangcanyin.com -fenghuangxs.com -fenghui-motor.com -fenghuidongman.com -fenghuo.cc -fenghuoyunji.com -fengimg.com -fengj.com -fengji.me -fengji.net -fengjiawang.net -fengjierc.com -fengjing.com -fengjinggroup.com -fengjinketang.com -fengjr.com -fengjx.com -fengkeji.com -fengkongbao.com -fengkuangzaoren.com -fengkui.net -fengli.com -fengli.su -fengliankeji.com -fenglichem.com -fenglingroup.com -fenglinjiu.com -fenglinlab.com -fenglu-alu.com -fengmaniu.com -fengmaniutouch.com -fengmap.com -fengmeng.net -fengmios.com -fengnayun.com -fengniao.com -fengniaohd.com -fengniaojianzhan.com -fengone.com -fengpintech.com -fengread.com -fengse.com -fengshangroup.com -fengshangweekly.com -fengshankeji.com -fengshi8888.com -fengshigroup.com -fengsung.com -fengsutb.com -fengtai.tv -fengtalk.com -fengtao365.com -fengtaochanglai.com -fengtianz.com -fengtingsmart.com -fengtupic.com -fengwanyx.com -fengwatch.com -fengwenyi.com -fengwo.com -fengwohao.com -fengwusp.com -fengxb.com -fengxian110.com -fengxianrc.com -fengxianwater.com -fengxiaotx.com -fengxing007.com -fengxinglihua.com -fengxuan.co -fengyan.cc -fengyang.fun -fengyeholding.com -fengyitong.name -fengyuangufen.com -fengyuncad.com -fengyuncx.com -fengyunlu.com -fengyunmusic.net -fengyunpdf.com -fengyushan.com -fengzegroup.com -fengzhan.vip -fengzhangame.net -fengzhao.net -fengzigame.com -fengzusw.com -fenha.net -fenhong123.com -fenhuo360.com -fenixmall.com -fenjiji.net -fenjj.com -fenke.com -fenking.club -fenlei168.com -fenlei265.com -fenleidao.com -fenleihu.com -fenlekeji.com -fenliu.net -fenmach.com -fenmitech.com -fennessy.hk -fenqile.com -fenqix.com -fenqubiao.com -fens.me -fensaas.com -fensebook.com -fenshua123.com -fensishenghuo.com -fentorsolar.com -fenxi.cc -fenxi.com -fenxi.org -fenxiangdashi.com -fenxianglife.com -fenxiti.com -fenxm.com -fenxmi.com -fenxuekeji.com -fenyu.net -fenyucn.com -fenzhi.com -fenzhi.net -fenzijr.com -feotech.com -fequan.com -ferlie.net -ferlytc.com -ferqwo.sbs -ferro-alloys.com -fescoadecco.com -fescoadeccochongqing.com -fescoadeccozhejiang.com -fescogroup.com -fescoguangdong.com -fescojinan.com -feso.tech -festaint.com -fetion-portal.com -fetiononline.com -fetionpic.com -fettesgz.com -feucnp.com -feverales.com -feverassets.net -fevermi.com -fevte.com -feydj.com -feyer-tc.com -ff14.cloud -ff54.ink -ff63.com -ffalcon.com -ffan.com -ffasp.com -ffbook.cc -ffbuddy.com -ffcell.com -ffdbj.com -ffeeii.com -ffepower.com -fffont.com -ffhome.com -ffis.me -ffj.cc -ffl.icu -ffls-edu.com -ffmomola.com -ffnmu.com -ffpedia.com -ffpw1688.com -ffquan.com -ffreeslott.com -ffsgame.com -ffsky.com -fftcc.com -fftub.com -ffxivhuntcn.com -ffy.com -ffzww.com -fg.cc -fg114.com -fgba.net -fgcndigital.com -fgeekcloud.com -fgfed.com -fggyw.com -fghi34.com -fgidna.com -fgkj.cc -fglt.net -fgnwct.com -fgo.wiki -fgowiki.com -fgtxnews.com -fgvisa.net -fh01.com -fh1551.com -fh21.com -fh21static.com -fh77.net -fh86.com -fh888.com -fhaircut.com -fhb971.com -fhclm.com -fhcomp.com -fhd001.com -fheb-four.com -fheb-six.com -fhfxys.com -fhgame.com -fhgjds.com -fhguotai.com -fhl05161ps.com -fhldns.com -fhldns.net -fhlmotor.com -fhlun.com -fhmion.com -fhmooc.com -fhmv.com -fhonest.com -fhoverseas.com -fhrlw.com -fhsfilm.com -fht360.com -fhtao.com -fhtj.com -fhtlw.com -fhtre.com -fhwlgs.com -fhwzx.com -fhycedu.com -fhycs.com -fhyx.com -fhyx.hk -fhzggame.com -fhzl.co -fi-play.com -fi0.cc -fi11.com -fi7.cc -fi94.com -fia-china.com -fibercrops.com -fiberglasschina.com -fiberhome.com -fiberhomegroup.com -fibocom.com -fibodata.com -fibrlink.net -ficochina.net -ficowshen.com -fiehff.com -fieldcommunicator.net -fifa666.com -fifaschool.com -fifedu.com -fifsky.com -figure-it.com -fiifh.com -fiil.com -fiinote.com -fiio.com -fiio.net -filcochina.com -file.mb.leshantv.net -filediag.com -filez.com -filfox.info -fillersmart.com -fillseo.com -film-yuelongchina.com -fily.fun -fim34s.com -fimky.com -fimmu.com -fin-shine.com -finaleden.com -finaltheory.me -finance365.com -financetcloud.com -financeun.com -financialdatamining.com -financialstreetforum.com -finchina.com -finclip.com -finderweb.net -findhro.com -findic.com -findic.kr -findic.tw -findic.us -findlawimg.com -findlinked.com -findmyfun.xyz -findmyrepair.com -findoout.com -findshu.net -findxk.com -findxz.com -findyou.xin -findzd.com -finebey.com -finebi.com -fineex.com -fineforming.com -fineheads.com -fineidc.com -fineimmu.com -finelybook.com -finer2.com -finereport.com -finereporthelp.com -fineset.com -finetooling.com -finetopix.com -fineui.com -finewatchcare.com -fineway.com -finewyx.com -fineyoga.com -finezb.com -fingard.com -finger-cnc.com -finger66.com -fingerflyapp.com -fingerjoys.com -fingerstylechina.com -fingertc.com -fingu.com -fingu.net -finjetchemical.com -finndy.com -finogeeks.com -finovo.com -finshell-cib.com -fintechinchina.com -fintechquan.com -finupfriends.com -finupgroup.com -finzfin.com -finzjr.com -fiocco-group.com -fir.im -fir.vip -firadio.net -fire233.com -fire2333.com -fire24h.com -firebirdprint.com -firebit.com -firedata119.com -fireemblem.net -fireemulator.com -fireflyacg.com -firegz.com -firepx.com -firerock.tech -firetry.com -firevale.com -firhq.com -firm-lithium.com -first-panel.com -first-swg.com -firstarpc.com -firstdrs.com -firstfood-cn.com -firstgw.com -firstlinkapp.com -firstmetcs.net -firstonesource.com -firstp2p.com -firstproduction.net -firstpvm.com -firsunbioscience.com -firwinds.site -fiscan007.com -fish2bird.com -fish3000.com -fishcn.com -fisherac.com -fisherv.com -fishfay.com -fishfd.com -fishflying.net -fishin2boat.com -fishing-sh.com -fishing-sinkers.com -fishingjoy.com -fishingmarkets.com -fishings.biz -fishlee.net -fishmobi.com -fishros.com -fishs.com -fishtui.com -fishyoung.com -fit-start.co -fit120.net -fit2cloud.com -fitgroup.com -fitit100.com -fitoneapp.com -fittentech.com -fittingcn.com -fiu07021kl.com -fiu07040kl.com -fiui.org -fivecakes.com -fivedo.net -fiveplus.com -fivestarsolar.com -fivision-tech.com -fix666.com -fixdown.com -fixhdd.org -fixmath.com -fixsub.net -fiyta.com -fj-atfz.com -fj-ba.com -fj-cc.com -fj-eprint.com -fj-jima.com -fj-kn.com -fj10010.com -fj133165.com -fj173.net -fj2000.com -fj3c.net -fj888.com -fj96336.com -fj987.com -fjbcjt.com -fjbdex.com -fjber.com -fjbgwl.com -fjbiopharma.com -fjbk.org -fjbyjs.com -fjc001.com -fjce.com -fjcee.com -fjcgxc.com -fjcid.com -fjcoop.com -fjcqjy.com -fjcredit.com -fjctw.net -fjctyz.net -fjcyl.com -fjcyl.org -fjdaily.com -fjdaze.com -fjdc.xyz -fjdf.vip -fjdfxy.com -fjdh.com -fjdkjt.com -fjdygljt.com -fjdzmy.com -fjeca.com -fjejjt.com -fjepn.com -fjetc.com -fjeverone.com -fjfgroup.com -fjfhsteel.com -fjfoxiang.com -fjfs.net -fjfxjt.com -fjfzsx.com -fjgczjxh.com -fjgdwl.com -fjgkedu.com -fjgsgl.com -fjgtfood.com -fjguanyue.com -fjgwy.org -fjhaizu.com -fjhcw.com -fjhospital.com -fjhps.com -fjhrjt.com -fjhsjg.com -fjhssy.com -fjhuayagroup.com -fjhxbank.com -fjhxcaee.com -fjhxvc.com -fjii.com -fjjcjy.com -fjjcled.com -fjjianxin.com -fjjnsn.com -fjjoyz.com -fjjsp01.com -fjjszg.com -fjjyt.net -fjjyxy.com -fjjzjt.com -fjkdxh.com -fjkqyy.com -fjlawyers.net -fjlb.com -fjlcjs.com -fjlcjt.com -fjleixin.com -fjlg.com -fjlh.com -fjlib.net -fjllsn.com -fjlstz.net -fjlszbc.com -fjly.com -fjlygroup.com -fjlyrmyy.com -fjlyzls.com -fjlzy.com -fjmap.net -fjmego.com -fjmh.com -fjmlh.com -fjmotor.net -fjmstc.com -fjmzw.com -fjndqx.com -fjndwb.com -fjnet.com -fjnhjt.com -fjotic.com -fjpca.com -fjpcz.com -fjpicc.com -fjpit.com -fjpta.com -fjptdy.com -fjptyz.com -fjptzs.com -fjptzx.com -fjptzyt.com -fjqfkg.com -fjqionghai.com -fjqjsw.com -fjrclh.com -fjrcw.com -fjrmyy.com -fjrtv.net -fjsafxh.com -fjsalt.com -fjsanheng.com -fjsdn.com -fjsdsrmyy.com -fjsdxy.com -fjsdzj.com -fjsen.com -fjsenda.com -fjsfa.org -fjsfjyl.com -fjsfy.com -fjshgx.com -fjshjy.net -fjsj.com -fjsjkyy.com -fjsmjj.com -fjssjt.com -fjstfc.com -fjstjt.com -fjstmgcjzhyxh.com -fjsxqy.com -fjsxyqygl.com -fjsyyhyxh.com -fjszx.com -fjtd-logistics.com -fjtelecom.com -fjtianya.com -fjtp.net -fjtv.net -fjtzlt.com -fjvs.org -fjwanan.com -fjwjgs.com -fjwr.xyz -fjwxj.com -fjwzjt.com -fjxfgroup.com -fjxhfx.com -fjxhyw.com -fjxhyy.com -fjxiehe.com -fjxn.com -fjxsxx.com -fjxwx.com -fjxxal.com -fjybyjjysos.com -fjyc8.com -fjycedu.com -fjycw.com -fjydnews.com -fjyfjsjt.com -fjyklc.com -fjyunba.com -fjyxdm.com -fjyxgl.com -fjyy.org -fjyyjt.com -fjzbgf.com -fjzikao.net -fjzixun.com -fjzol.com -fjzx.org -fjzyxx.com -fjzzct.com -fk100.com -fkask.net -fkblog.org -fkcaijing.com -fkdex.com -fkdmg.com -fkdxg.com -fkeduwxxcx.com -fkgou.com -fkguolu.com -fkhdactive.com -fkhdview.com -fkhongdan.com -fklhb.com -fklngy.com -fktool.com -fkw.com -fkw100.com -fkwapi.com -fkwatchtw.com -fkyuer.com -fkyun.com -fkyxt.com -fl-game.net -fl0632.com -fl160.com -fl168.com -fl365.com -fl5.co -fl580.com -flacc.com -flagchem.com -flairmicro.com -flamecdn.com -flamesky.org -flamingcold.com -flan1688.com -flaredup.com -flash8.net -flash8f.com -flashcat.cloud -flashgame163.com -flashgene.com -flashkrypton.com -flashmemoryworld.com -flashv8.com -flashwar.com -flashwolfcn.com -flashxsport.com -flatsh.com -flawcache.com -flclb.com -flduo.com -fle078.com -flebm.com -fleeper.com -fleetlogd.com -fleety.com -flexifont.com -fleyun.com -flfc5999.com -flgame.net -flhimalayandn.com -fliggy.com -fliggy.hk -flightroutes24.com -flikfill.com -flintos.com -flip.fun -fliplus.com -flleasing.com -flmgr.net -flml.cc -floatcamellia.com -floatingislandapps.com -floatmaze.com -flockypet.com -flomoapp.com -floorb2b.com -florentiavillage.com -flourish-fs.com -flowchemchina.com -flower188.com -flower33.com -flowerknows.co -flowever.net -flowinnglobal.com -flowlbkj.com -flowportal.com -flowtechgd.com -flowtechsh.com -flpsz.com -flpwb.com -flqrmyy.com -flrcw.com -flsrp.com -fltau.com -fltcsb.com -fltrp.com -fluke-ig.com -flumatic.com -flutterchina.club -flv.drs.tv.yatv.tv -flvcd.com -flvlog.com -flvpw.com -flvsp.com -flvurl.net -flwatertech.com -flxc.net -flxdns.com -flxzz.com -fly-exp.com -fly139.com -fly160.com -fly1999.com -fly2lan.cc -fly3949.com -fly63.com -fly84.com -fly998.com -flyadx.com -flyai.com -flyancctv.com -flycc.net -flyco.com -flycua.com -flydigi.com -flyenglish.com -flyert.com -flyertea.com -flyertrip.com -flyfishx.com -flyfunny.com -flygo.net -flygon.net -flyhand.com -flyine.net -flyingeffect.com -flyme.com -flyme.net -flymeauto.com -flymeos.com -flymeyun.com -flyml.net -flymobi.biz -flymodem.net -flymopaper.com -flysand.com -flysheeep.com -flytcloud.com -flytexpress.com -flyy.fun -flyzyblog.net -flzc.com -flzhan.com -fm-uivs.com -fm058.com -fm0754.com -fm0758.com -fm086.com -fm120.com -fm365.com -fm3838.com -fm4399.com -fm520.com -fm875.com -fm901.cityfm.tw -fm918.net -fm929.cityfm.tw -fm960.net -fm971.cityfm.tw -fm983.cityfm.tw -fmbimg.com -fmc123.com -fmcoprc.gov.mo -fmd360.com -fmetro.net -fmi33.com -fminers.com -fmjmm.com -fmkefu.com -fmkpharm.com -fmmob.com -fmscm.com -fmsdlb.com -fmsh.com -fmssrc.com -fmswift.net -fmtmed.com -fmtt6.xyz -fmwei.com -fmwhahaha.com -fmy90.com -fmyunlv.com -fn-mart.com -fn-tech.com -fn.com -fn010.com -fnconn.com -fnedge.net -fnetlink.com -fnf-foods.com -fnfcutlery.com -fnhealth.com -fnji.com -fnji.net -fnjiasu.com -fnjs.cc -fnjsq.com -fnkq.com -fnkslift.com -fnkvision.com -fnmobi.com -fnnas.com -fnnsh.com -fnnspa.com -fnos.net -fnrcw.com -fnrczp.com -fnsbqvz.com -fnscore.com -fntbp.com -fnwlzz.com -fnxzyy.com -fnyes.com -fnysb.com -fob123.com -fob580.com -fobaoyou.com -fobbusinessforum.com -fobcentury.com -fobmy.com -fobshanghai.com -focaj.com -focalbrand.com -focalhot.com -focc.cc -fochot.com -focigc.com -focobio.com -focofish.com -foctek.com -focus-efc.com -focus-eloan.com -focus-fusion.com -focuschina.com -focusight.net -focussend.com -focustock.com -fodaba.com -fodexin.com -fodian.net -fodizi.com -fodizi.net -fodlab.com -fodonline.com -fofa.info -fofa.so -fofcn.tech -fofen.com -fofstudio.net -fofuai.com -fogcloud.io -foguanghui.org -fohohr.com -foidn.com -foisongroup.com -fojiaonet.com -fojiaoyongpin.com -fokstone.com -foldur.com -folidaymall.com -folij9nry5cxy8.com -followsteel.com -folou.com -foneplatform.com -fonfu.app -fonian.com -fonsview.com -font.im -font6.com -fontgoods.com -fontke.com -fontong.com -fontoohotels.com -fontowns.com -fontsfile.com -fontshow.com -fontvip.com -fontyi.com -fonye.com -foodaily.com -foodbk.com -foodciexpo.com -foodex360.com -foodjx.com -foodkz.com -foodmate.net -foodqs.com -foods1.com -foodsc.net -foodspace.net -foodspjm.com -foodszs.com -foodu14.com -foofish.net -fooher.com -foojoo.com -fookunion.com -fookwood.com -fookyik.com -fooleap.org -foomx.com -foooooot.com -foosheng.com -footballdown.com -footbig.com -footseen.com -foovoo.com -fooww.com -foqian.com -for-she.com -for512.com -for68.com -forbeschina.com -forbetty.com -forbuyers.com -forceclouds.com -forcecreat.com -forcemz.net -forcger.com -forcloudcdn.com -ford.com -fordgo.com -forecam.com -foreignapi.com -foreignserver.com -foremostgroup.com -forenose.com -forerunnercollege.com -foreseahealth.com -foresealife.com -foreseamall.com -foresightfund.com -foresl.com -forestfood.com -forestmusicnanjing.com -forestpolice.net -forestpolice.org -forevernine.com -foreveross.com -foreweld.com -forface3d.com -forgame.com -forindata.com -forkeji.com -forkliftnet.com -forlinx.com -form-create.com -formessengers.com -formingcn.com -formssi.com -formtalk.net -fornature.com -forrealbio.com -forrelaxing.com -forshine.net -forsol.net -forsou.com -forthxu.com -fortiortech.com -fortrustpower.com -fortune-co.com -fortunebs.net -fortunehair.com -fortunepdc.com -fortunevc.com -forwardgroup.com -forwe.store -forwell-parking.com -foryone.com -foryou56.com -foryouge.com -foryougroup.com -forys-at.com -fos.cc -foscam.com -foshanaosibo.com -foshanmuseum.com -foshannews.com -foshannews.net -foshanplus.com -foshanpower.com -foshion.com -fossic.org -fosss.org -fosstea.com -fosun-uhi.com -fosun.com -fosunhealth.com -fosunholiday.com -fosunmetal.com -fosunpharma.com -fosunwanbang.com -fotile.com -fotileglobal.com -fotilestyle.com -fotomore.com -fotoplace.cc -fotosay.com -fototuan.com -foturn.com -fou.net -foumobile.com -founder.com -founder.net -founderaipu.com -founderbn.com -founderchip.com -foundereagle.com -founderff.com -founderfu.com -founderic.com -founderinternational.com -founderit.com -founderpcb.com -founderpod.com -foundersc.com -foundertech.com -foundertype.com -founpad.com -four-faith.com -fourco-inc.com -fourfaithwater.com -fovmy.com -fow.ink -fowep.com -fox-studio.net -fox008.com -foxconn.com -foxconnmall.com -foxera.com -foxirj.com -foxmail.com -foxphp.com -foxqq.com -foxtable.com -foxuc.com -foxugame.com -foxwaf.com -foxwho.com -foxwq.com -foxzld.com -foyuan.net -fozhidaoxs.cc -fozl.sg -fpaixfl.com -fpc-nb.com -fpccn.com -fpcn.net -fpdclub.net -fpdisplay.com -fpdvision.com -fpe-china.com -fpg.com.tw -fpga-china.com -fpgabbs.com -fpgakey.com -fpgaw.com -fphis.com -fphs.cc -fphs5.com -fpi-inc.com -fpliu.com -fpoll.net -fpsace.com -fpsjk.com -fpstt.com -fpwap.com -fpxz.net -fpyy120.com -fq688.com -fqapps.com -fqfilm.com -fqghj.net -fqgyljt.com -fqhospital.com -fqis.xin -fqjob.net -fqlook.com -fqnovel-op.com -fqnovel.com -fqnovelim.com -fqnovelop.com -fqnovelpic.com -fqnovelstatic.com -fqnovelvod.com -fqpai.com -fqrsw.com -fqworld.org -fqxdw.com -fqxs.org -fqxsw.cc -fr-trading.com -fr0528.art -fr2007.com -fractal-technology.com -fraeco.com -fraee.com -fragpunk.com -fragrance.ink -frainfo.com -framemaker.com -franceqz.com -francissoung.com -franckfw.com -francochinois.com -frankenman.group -frankyrobot.com -franzsandner.com -fraproperty.com -frdic.com -fread.com -fredamd.com -free-863.com -free-api.com -free-doctor.com -free-e.net -free-img.com -free9.net -freebuf.com -freebz.net -freecomm.net -freedgo.com -freedirlist.com -freedom2021.vip -freedomscm.com -freedoonline.com -freefrp.net -freegeeker.com -freehpcg.com -freeidea.win -freejishu.com -freekaobo.com -freekaoyan.com -freekeyan.com -freelycode.com -freelynb.com -freelynet.com -freemancn.com -freemindworld.com -freemoban.com -freemudgame.com -freemypay.com -freeoa.net -freeovp.com -freeqingnovel.com -freeshoppingchina.com -freessl.org -freestman.com -freestyle666.com -freetech.com.hk -freetiku.com -freeuid.com -freevm.com -freewhale.net -freeydch.com -freeyun.com -freezhw.com -freezl.net -frefloya.com -frensworkz.com -freqchina.com -fresh-ideas.cc -freshfresh.com -freshhema.com -freshippo.com -freshippomarket.com -freshnewsnet.com -frhelper.com -friendeye.com -friends-exchange.com -friends8.com -friendship-match.com -frigate-cn.video -fright-tattoo.com -frigidpine.com -fringe-zero.com -frisobaby.com -frlawyer.com -frler.com -froglesson.com -frombyte.com -fromgeek.com -fromshandong.com -fromwiz.com -frontierbiotech.com -frontjs.com -frontopbd.com -frontpharm.com -frontstreetcoffee.com -frontwize.com -frost-s.com -frostchina.com -frostwell.cc -frostwell.net -frostwing98.com -frp-act.com -frp-air.com -frp-all.com -frp-any.com -frp-arm.com -frp-bag.com -frp-bar.com -frp-bid.com -frp-box.com -frp-boy.com -frp-bus.com -frp-china.net -frp-dad.com -frp-dog.com -frp-egg.com -frp-end.com -frp-era.com -frp-fan.com -frp-fee.com -frp-fog.com -frp-fox.com -frp-fun.com -frp-gap.com -frp-gas.com -frp-gym.com -frp-hat.com -frp-hen.com -frp-hip.com -frp-hub.com -frp-ice.com -frp-jar.com -frp-key.com -frp-kit.com -frp-lab.com -frp-leg.com -frp-mad.com -frp-mix.com -frp-mom.com -frp-net.com -frp-now.com -frp-nut.com -frp-off.com -frp-oil.com -frp-one.com -frp-own.com -frp-pen.com -frp-put.com -frp-rib.com -frp-rug.com -frp-run.com -frp-say.com -frp-sea.com -frp-shy.com -frp-six.com -frp-ski.com -frp-sun.com -frp-tag.com -frpapp.com -frt.ltd -frtgraphite.com -fruitday.com -frysb.com -frytea.com -frzmh.com -fs-ade.com -fs-bus.com -fs-czx.com -fs-eliza.com -fs-qiyun.com -fs-yld.net -fs.microsoft.com -fs0757.com -fs121.com -fs1982.com -fs31.com -fs58.com -fs7000.com -fsabwy.com -fsaii.com -fsbankonline.com -fsbldjd.com -fsbqgd.com -fsccjy.com -fsccyy.com -fschems.com -fschico.com -fscinda.com -fscjfm.com -fscjkj.net -fscm.tech -fscmjt.com -fscsps.com -fsdxzhpt.com -fsecity.com -fseig.com -fseport.com -fsesa.com -fsfsfz.com -fsfund.com -fsfy.com -fsgas.com -fsgbly.com -fsgcw.com -fsgechao.com -fsggb.com -fsgplus.com -fsgzhg.com -fshczf.com -fshd.com -fshh1688.com -fshj118.com -fshones.com -fshpharm.com -fshsfl.com -fshsl.com -fshuiren.com -fshyschool.net -fshzg.com -fsigc.com -fsight.ai -fsightai.com -fsilon.com -fsjgchina.com -fsjgw.com -fsjinlan.com -fsjinma.com -fsjoy.com -fsjrl.com -fsjsdtc.com -fsjx.org -fsjy.net -fsky.pro -fskzpw.com -fslgz.com -fslinker.com -fsllq.com -fslsg.com -fsltsmhjq.com -fslyx.com -fsmama.com -fsmcled.com -fsmeeting.com -fsmi818.com -fsoet.com -fsohu.com -fsoptronics.com -fsou.com -fsoufsou.com -fspage.com -fspcdn.com -fspinqiu.com -fspits.com -fspride.com -fspt.net -fspublic.com -fsruibin.com -fssdbjyy.com -fssdlhyxh.com -fsspc.com -fssptjj.com -fsstone.com -fsswsxh.com -fst-pipe.net -fstaoci.com -fstcb.com -fstgs.com -fsthr.com -fstrhb.com -fstvgo.com -fsukj.com -fswater.com -fswateraso.net -fswchina.com -fswk.com -fsxchina.com -fsxinquan.com -fsxsj.net -fsxzygz.com -fsy6.com -fsyanhe.com -fsygroup.com -fsyhlz.com -fsylr.com -fsyq.net -fsysyy.com -fsytss.com -fsyule.net -fsyuncai.com -fsyxg.com -fsyy.net -fsyyy.com -fszhihuiyan.com -fszhiko.com -fszyjx.com -ft.tech -ft12.com -ft22.com -ft98.com -fta.dell.com -ftaapj.dell.com -ftaemea.dell.com -ftaro.com -ftasitapj.dell.com -ftbj.net -ftcoaster.com -ftcwifi.com -ftd.nz -ftdevice.com -ftesop.com -ftfast.com -ftfund.com -ftfx.ink -fthformal.com -fthgz.com -fthimalayandb.com -ftium4.com -ftlcloud.com -ftls.xyz -ftlzghz.com -ftmespro.com -ftnwater.com -ftoc.com -ftourcn.com -ftown.com -ftp.pet -ftsafe.com -ftsfund.com -ftswcc.com -fttrs.com -ftuan.com -ftwafer.com -ftxad.com -ftxft.com -ftxgame.com -ftxia.com -ftxsoccer.com -ftylw.com -ftzbq.com -ftzn.net -ftzx.com -fu-guan.com -fu-rui.com -fu2zu.com -fu57.com -fu62.vip -fuanna.com -fubabafumama.com -fubangauctions.com -fubaochem.com -fubaofei.com -fubonchina.com -fubonplastic.com -fuca-china.com -fucantec.com -fuchaipower.com -fuchen33.com -fuchengshicai.com -fuchuangyu.com -fucol.club -fuczx.com -fuda.com -fuda120.com -fudaguangzhou.com -fudahospital.com -fudaiapp.com -fudajishu.com -fudajn.com -fudakang.com -fudancell.com -fudanglp.com -fudanmed.com -fudanpress.com -fudasafe.com -fudayiyao.com -fudian-bank.com -fudongdong.com -fudu167.com -fudubao.com -fuduwang.com -fuduxiao.com -fuduxuexiao.com -fuedf.org -fuel-lab.com -fuelcellchina.com -fuermu.com -fufeng-group.com -fufuidc.com -fufuok.com -fugary.com -fuguangchina.com -fuguangwater.com -fuguantang.com -fuhai360.com -fuhancapital.com -fuhanziben.com -fuhaoku.com -fuhefu.com -fuheng.org -fuhouyin.com -fuhuibao.club -fui.im -fuiou.com -fuioupay.com -fujfu.com -fujiabin.com -fujianbenz.com -fujiangames.com -fujianguofu.com -fujianmei.com -fujianrc.com -fujiansme.com -fujianyinruan.com -fujinguo.com -fujinjiazheng.com -fujinotrade.com -fujutec.com -fuka.cc -fukangjixie.com -fukangqipai.com -fukangyuanyanglao.com -fukexie.com -fulanka.com -fulantv.com -fulengen.com -fuliansheng.com -fuliao.com -fuliaotech.com -fuliba.com -fulicat.com -fulimin.org -fulin.org -fuling.com -fulinpm.com -fulinsujiao.com -fulinxiuxian.com -fuliquan.com -fulishemusic.com -fulitec.com -fuliti.com -fuliw.net -full-way.com -fullde.com -fullhan.com -fullics.com -fulllinks.com -fullluckcalendar.com -fullsemitech.com -fullstack.love -fulltruckalliance.com -fulou.life -fultree.com -fulu.com -fulykong.com -fuma-carbide.com -fumake.com -fumaofawu.com -fumi.com -fumiaoyinpin.com -fumin.com -fumu.com -fumubang.com -fumuhui.com -fun.tv -fun2ex.com -fun4go.com -funcdn.com -funcrea.com -functionads.com -functionaltextilesshanghai.com -functioncool.com -functiongraph.run -fund001.com -fundebug.com -fundebug.net -fundegroup.com -fundog.cc -fundrive.com -fundxy.com -funenc.com -funengscm.com -funeralchain.com -funfungolf.com -fungichina.com -fungj.com -funhillmedia.com -funhillrm.com -funi.com -funi365.com -funik.com -funinput.com -funiutang.net -funjsq.com -funletu.com -funliving.com -funnet.net -funnycore.com -funnycorelive.com -funnyplaying.com -funnysphere.com -funpaer.com -funplay66.com -funqipai.com -funsens.com -funshareamusement.com -funshion.com -funshion.net -funshion.tv -funshipin.com -funtouchos.com -funtoygame.com -funvba.com -funwear.com -funxun.com -funyard-hotels.com -funzm.com -fupanwang.com -fupin832.com -furagon.com -furama-beihai.com -furderdriving.com -furenchina.com -furenkeji.com -furielec.com -furongedu.com -furrychina.com -furuijiaju.vip -furuise.com -fusaide.com -fusheng-group.com -fushengal.com -fushibao.com -fushite.com -fusiling.com -fusion-inte.com -fusion.design -fusionappl.com -fusure.com -fusureum.com -futa.eu -futaike.net -futang.org -fute.com -futianlvshi.com -futongquartz.com -futu5.com -futuau.com -futuesop.com -futufin.com -futuhn.com -futuniuniu.com -futunn.com -future-sh.com -futureengineer.org -futurejuzhen.vip -futurenetlab.com -futureprize.org -futurescontest.com -futustatic.com -fututools.com -fututrade.com -fututrustee.com -fuwa.org -fuwahgroup.com -fuwai.com -fuwaliuxue.com -fuwei.com -fuweifilms.com -fuweivision.com -fuweiwang.com -fuweizn.com -fuwit.com -fuwj.com -fuwo.com -fuwu7.com -fuwuce.com -fuwucms.com -fuwuqinet.com -fuwuqu.com -fuxila.com -fuxinbank.com -fuxinews.com -fuxinghf.com -fuxingtech.com -fuxingwang.com -fuxuanji-jp.com -fuxunpay.com -fuyang.com -fuyang.net -fuyangbio.com -fuyangjituan.com -fuyangtv.com -fuyaogroup.com -fuyaozb.com -fuyaozhubao.com -fuyingdai.com -fuyingkeji.com -fuyingyanke.com -fuyiou.com -fuyiwang.net -fuyou.online -fuyou888.com -fuyoubank.com -fuyougame.com -fuyoukache.com -fuyuan5.com -fuyuan6.com -fuyuanweb.com -fuyuehotels.com -fuyunbj.com -fuyuncc.com -fuyuncun.com -fuyunjiasu.com -fuyuzhe.com -fuzadu.com -fuzamei.com -fuzeetech.com -fuzegame.com -fuzfu.net -fuzhenghos.com -fuzhhc.com -fuzhimao.com -fuzhoufashi.com -fuzhuangwang.com -fuzhugo.com -fuziche.com -fvfvxs.com -fview.com -fvo2o.com -fvti.com -fw-12365.com -fw365.online -fw4.co -fw4.me -fwbsjnakjabdname.com -fwcfwg.com -fwcranes.com -fwcx315.com -fwdq.com -fwdqw.com -fwfly.com -fwhzxxgbyy.com -fwljmwf.com -fwlxtc.com -fwqbdn.com -fwqlt.com -fwqtg.net -fws-china.com -fwtoys.com -fwvv.net -fwwevez.xyz -fwxgx.com -fx-plc.com -fx120.net -fx168api.com -fx168news.com -fx168vip.com -fx3q.com -fx678.com -fx678.net -fx678img.com -fx678red.com -fx696.com -fx898.com -fxbaogao.com -fxcdev.com -fxclass.net -fxcsxb.com -fxcw.com -fxdp.com -fxe0898.com -fxeyee.com -fxeyetips.com -fxfbx.com -fxfcw.com -fxfcyy.com -fxgjwy.com -fxgz8.com -fxhaoke.com -fxian.org -fxiaoke.com -fxingw.com -fxjia.shop -fxkedu.com -fxkjnj.com -fxl1950.com -fxlbb.com -fxlbl.com -fxltsbl.com -fxm.so -fxo2opt.com -fxpai.com -fxpan.com -fxpharm.com -fxrcw.net -fxsh.com -fxsou.com -fxsw.net -fxt365.com -fxtrip.com -fxtrips.com -fxw.la -fxwe.com -fxxww.net -fxxz.com -fxyf99.com -fxzb.vip -fxzhj.com -fxzhjapp.com -fxzygc.com -fy-connect.com -fy-data.com -fy-game.com -fy-mold.com -fy027.com -fy169.net -fy1938.com -fy2d.com -fy35.com -fy65.com -fyaaz.org -fyab.net -fyage.com -fyak.net -fyal.net -fyan.net -fyapi.net -fyat.net -fyau.net -fyaw.net -fybiji.com -fybj.net -fybjsd.com -fyblogs.com -fybxw.com -fycpu.com -fycrcgas.com -fyddj.com -fyddjys.com -fydeos.com -fydvtu.com -fyec.net -fyeds.com -fyeds0.com -fyeds1.com -fyeds2.com -fyeds3.com -fyeds4.com -fyeds5.com -fyeds6.com -fyeds7.com -fyeds8.com -fyeds9.com -fyedu.net -fyeedu.net -fyfch.com -fygame.com -fygdrs.com -fygi.com -fygift.com -fygjyljt.com -fygmbc.com -fygroup.com -fygsoft.com -fyigou.com -fyjsz.net -fyjzyxh.com -fylcg.com -fyleasing.com -fyluo.com -fymaduoji.com -fymall0.com -fymall1.com -fymall2.com -fymall3.com -fymall4.com -fymall5.com -fymall6.com -fymall7.com -fymall8.com -fymall9.com -fymallqa0.com -fymallqa1.com -fymallqa2.com -fymallqa3.com -fymallqa4.com -fymallqa5.com -fymallqa6.com -fymallqa7.com -fymallqa8.com -fymallqa9.com -fynas.com -fynb.net -fynews.net -fypage.com -fypt.net -fyqyjt.com -fyrc.net -fyrcbk.com -fyrexian.com -fyrmyy.com -fyrqgs.com -fyrwzz.com -fyscs.com -fysfzk.com -fysip.com -fysoft3.com -fysyy.com -fytcw.com -fythbkj.com -fytire.com -fytschool.com -fytxonline.com -fytz.net -fyuanpack.com -fyun.cc -fyun.org -fyvart.com -fywip.com -fywx.cc -fyxhlink.com -fyxtzc.com -fyxxcl.com -fyxxwb.com -fyxz.com -fyydnz.cc -fyynlx.com -fyyy.com -fyzku.com -fyzls.com -fyzp.net -fz-aefi.com -fz-energy.com -fz-gf.com -fz0752.com -fz222.com -fz2sc.com -fz597.com -fzahw.com -fzaqjy.com -fzbbk.com -fzbdcj.com -fzbidding.com -fzbingo.com -fzbm.com -fzccpit.org -fzcollege.org -fzcpos.com -fzcrg.com -fzcyjh.com -fzddg.com -fzdmag.com -fzdzyun.com -fzec-tencentclb.cloud -fzec-tencentclb.com -fzec-tencentclb.net -fzec-tencentclb.work -fzele.com -fzengine.com -fzentertainment.com -fzetyy.com -fzfhg.com -fzfinancing.com -fzfrp.com -fzfu.com -fzfzjx.com -fzg360.com -fzghy.com -fzgolden.com -fzhlkx.com -fzhqzx.net -fzhzxh.com -fzithome.com -fzjdct.com -fzjingzhou.com -fzjxr.com -fzjxw.com -fzkjg.com -fzl7.com -fzlawyers.net -fzlbar.com -fzlean.com -fzlft.com -fzlizhi.net -fzlol.com -fzmama.net -fzmetro.net -fzmtr.com -fzn.cc -fzport.com -fzqywater.com -fzrsrc.com -fzsdtkq.com -fzsdyyy.com -fzslyy.com -fzswgc.com -fzswjt.com -fzswyc.com -fzsybj.com -fzthinking.com -fzvcolco.com -fzwater.com -fzwcn.com -fzwhzn.com -fzwqq.com -fzwtqx.com -fzwtxx.com -fzwxxcx.com -fzxiaomange.com -fzxm.com -fzyfan.com -fzyfs.net -fzyun.net -fzyvis.com -fzyz.net -fzzhaobiao.com -fzzhtc.com -fzzhuoyi.com -fzzixun.com -fzzpw.net -fzzqcdn.com -g-biomed.com -g-bits.com -g-cores.com -g-film.com -g-hi.com -g-medon.com -g-proxy.com -g-spin.com -g-tar.com -g-var.com -g00gle.vip -g052m43e2ghn.com -g1080.com -g12345.com -g12e.com -g12e.org -g188.net -g1d.net -g1yx.com -g2.link -g20chn.org -g2h3.com -g2us.com -g2work.com -g32365.com -g3d.org -g3img.com -g3user.com -g3voip.com -g3wei.com -g4weixin.com -g55m94b1za.com -g59p.com -g5h4.com -g5kj.com -g66667777.com -g768r.com -g77775555.com -g80mx.com -g88885555.com -g88886666.com -g8hh.com -g983.com -g9china.com -ga-me.com -ga-zn.com -ga002.com -gaaamee.com -gaapqcloud.com -gaaptest.com -gac-capital.com -gac-nio.com -gacfca.com -gacfcasales.com -gacfiatauto.com -gachn.com -gaclib.net -gacmotor.com -gacrnd.com -gacsofinco.com -gadlee.com -gae-pro.com -gaeadata.com -gaeamobile-inc.net -gaeamobile.net -gaetausohyei.com -gafata.com -gafei.com -gafencuchina.com -gagacafe.com -gagaga.icu -gagaga.tech -gagahi.com -gagaslklxjasdkafj.com -gai.net -gaiabiohx.com -gaiamount.com -gaiaworkforce.com -gaibang365.com -gaibar.com -gaibieshu.net -gaicas.com -gainchip.com -gainda.net -gaineng.net -gainet.com -gaini.net -gainscha.com -gaintop.com -gairuo.com -gaisen.ltd -gaishichina.com -gaishitongshu.com -gaitu.com -gaituba.com -gaitubao.com -gaituya.com -gaixingchang.com -gaixue.com -gaiyadajidali.com -gaiyazhanlan.com -gaizhui.com -gajerseys.com -gajsk.com -gala-v.com -galacticfunkmilitia.com -galaxix.com -galaxy-geely.com -galaxy-immi.com -galaxyasset.com -galaxycarepair.com -galaxyfont.com -galaxyinfo.com -galaxymagnets.com -galaxyoversea.com -galileo.work -galsun.com -galudisu.info -galvincdn.com -gamder.cc -gamdream.com -game-as.com -game-client.com -game-props.com -game-reign.com -game10000.com -game112233.com -game123.space -game12315.com -game13.com -game2.com -game234.com -game332.com -game3vs7novel.com -game499.com -game5.com -game5399.com -game773.com -game798.com -game80s.com -game900.com -game9012.com -game95.cc -gameabc.com -gameabc2.com -gameabc2.net -gameapida.com -gameapp.club -gamebaike.com -gamebar.com -gamebean.com -gamebean.net -gamebee.net -gamebonfire.com -gamebto.com -gamecat.fun -gamecatstudio.com -gamecomb.com -gamed9.com -gamedachen.com -gamedo.org -gameducky.com -gameegg.com -gameexp.com -gamefang.com -gamefeile.com -gamefm.com -gamegamept.com -gamege.com -gameggg.com -gamegocenter.com -gamegocenter.net -gamehaopu.com -gamehome.tv -gameinns.com -gameitop.com -gamejym.com -gamekee.com -gamekezhan.com -gamekuaishou.com -gamelet.games -gameley.com -gameloop.com -gameloop.fun -gamemale.com -gamemcu.com -gamemei.com -gamenow.club -gameol.com -gamepf.com -gamepingce.com -gamer520.net -gamerboom.com -gameres.com -gamerhome.com -gamerhome.net -gamermake.com -gamersky.com -gamersky.net -gamerstorm.com -gamesh.com -gameshr.com -gamesifu.com -gametanzi.com -gametaptap.com -gametdd.com -gametea.com -gametea.net -gamethk.com -gamett.net -gameviewer.com -gameweibo.com -gamewifi.net -gamewower.com -gamexdd.com -gamexhb.com -gamexun.com -gameyiming.com -gameyisi.com -gameyj.com -gamfe.com -gammabicycle.com -gammatimes.com -gamutsoft.com -gamux.org -gamxex.com -gan-ren.com -gandi.net -ganduee.com -gangbao365.com -gangbogroup.com -gangduotech.com -ganggangguoji.com -ganggg.com -gangguan8.com -gangguana.com -ganghaowang.com -gangjiajieli.com -gangpaibao.com -gangqinpu.com -gangqinxiansheng.com -gangshenglian.com -gangtise.com -gangyu.org -gangyuan.com -ganhao.vip -ganhuoche.com -ganji.com -ganjiangrc.com -ganjiangvpn.com -ganjiazheng.com -ganjin.com -ganjistatic1.com -ganjistatic2.com -gank-studio.com -gank.io -gankang.com -gankao.com -gankaomao.com -gankaosheng.com -gankgames.com -gankh5.com -ganlj.com -ganlongjt.com -ganlv.net -ganlv.org -ganlvji.com -ganniu.com -ganode.org -ganqi.com -ganqi.net -ganqing10.com -gansha.co -ganso.net -gansuairport.com -gansumuseum.com -gansuyouxi.com -gantanhao.com -gantanhao.vip -gantong.net -ganwan.com -ganxb2.com -ganxi.com -ganxianw.com -ganxianzhi.win -ganxinet.com -ganyeah.com -ganyu.com -ganyu.org -ganyu8.net -ganyurc.com -ganzhe.com -ganzhishi.com -ganzhong.net -ganzitv.com -gao-shou.com -gao.bo -gao.com -gao7.com -gao7gao8.com -gaoan.net -gaobei.com -gaobiao.xyz -gaobohealthcare-sh.com -gaocangyun.com -gaoce.cc -gaocegege.com -gaochun.info -gaoda8.com -gaodage.com -gaodangbiao.com -gaode.com -gaodilicai.com -gaodimed.com -gaoding.com -gaoduanqianzheng.com -gaodugj.com -gaoduguoji.com -gaodun.com -gaodunwangxiao.com -gaofacable.com -gaofangcache.com -gaofangm.com -gaofangz.com -gaofans.com -gaofeie.com -gaofen.com -gaofenplatform.com -gaofenzi.org -gaofushuai.com -gaogpress.com -gaogulou.com -gaohaipeng.com -gaohangip.com -gaoheconsult.com -gaohr.com -gaohuasec.com -gaoimg.com -gaojer.com -gaoji.ren -gaojie.com -gaojihealth.com -gaojima.com -gaojipro.com -gaojitui.com -gaojiua.com -gaokao.com -gaokao365.com -gaokao789.com -gaokaobaoming.com -gaokaohelp.com -gaokaomeishu.com -gaokaopai.com -gaokaoq.com -gaokaozhiku.com -gaokaozhitongche.com -gaokeny.com -gaokin.com -gaokowl.com -gaokw.com -gaokzx.com -gaolian.com -gaoligroup.com -gaolihanjie.com -gaolouimg.com -gaomeif.com -gaomeluo.com -gaominews.com -gaomon.net -gaopaiwood.com -gaopeng.com -gaopin.tech -gaopinimages.com -gaopost.com -gaoqidian.com -gaoqingdianshi.com -gaoqinghua.com -gaoqingpai.com -gaoqiwenda.com -gaoqixhb.com -gaoqixie.com -gaore.com -gaosafe.com -gaosan.com -gaoseng.com -gaoshou.me -gaoshouvr.com -gaoshouyou.com -gaosiedu.com -gaosivip.com -gaosouyi.com -gaosu.com -gaosudu.com -gaotang.cc -gaotangwang.com -gaotie.net -gaotieshike.com -gaotu006.club -gaotu007.club -gaotu100.com -gaotu11.com -gaotuxueyuan.com -gaowoip.com -gaoxiaobang.com -gaoxiaodashi.com -gaoxiaoit.com -gaoxiaojob.com -gaoxiaoo.com -gaoxiaozp.com -gaoxin123.com -gaoxincarbon.com -gaoxinedu.com -gaoxinedu.net -gaoxinjy.com -gaoxitech.com -gaoyawang.com -gaoyizaixian.com -gaoyoujob.com -gaozhaiedu.com -gaozhentang.com -gaozhidazhuan.com -gaozhongwuli.com -gaozhouba.com -gaozi365.com -gap.hk -gapitech.com -gapssoe.com -gaqcloud.com -gaqcloud.net -gaqcloud1.com -gaqcloud2.com -gaqcloudbackup.com -gaqcloudbackup.net -gara.cc -garden-aquarium.com -gardencn.com -gardenhotel.com -gardenhotelshanghai.com -garleden.com -garmin.com -garmuri.com -garnoc.com -garnor.com -garphy.com -garply.com -garyee.com -gas-analyzers.com -gas-scrubber.com -gas-turbine-parts.com -gas775.com -gas800.com -gasfw.com -gasgoo.com -gasgood.com -gashr.com -gashw.com -gaspeedup.com -gaspim.com -gasshow.com -gastank-china.com -gastronomy.gov.mo -gaszx.com -gate-dhgames.com -gateface.com -gateweb3.cc -gateweb3.io -gather-dns.com -gatymciu.com -gaugan.com -gaush.com -gautomator.com -gavill.com -gavindesign.com -gavinzh.com -gaxgame.com -gaxrmyy.com -gayotv.net -gayzyhh.com -gazellegames.net -gazemd.com -gazx.org -gb324.com -gb55009.com -gb5842.com -gbacd.com -gbase8a.com -gbasebi.com -gbasig.com -gbdex.com -gbdz.net -gbeca.org -gbffchina.com -gbgba.com -gbgcn.com -gbhome.com -gbiac.net -gbicdn.com -gbicom.com -gbictc.com -gblhgk.com -gbma.org -gbofd.com -gbox.pub -gbox.run -gboxchina.com -gbphar.com -gbpjam.com -gbrgz.com -gbsrobot.com -gbstape.com -gbt88.com -gbtranswins.com -gbvh.com -gbw114.com -gbxgateway-dev.dell.com -gbxgateway.dell.com -gc-zb.com -gc0771.com -gc1616.com -gc39.com -gc73.com -gc91.com -gcable.tv -gccdn.net -gccgz.com -gcchina.com -gccmgw.com -gccrcw.com -gcdcrs.com -gcgd.net -gcgzjt.com -gchao.com -gchbs.com -gchhotels.com -gci-china.com -gcihotel.net -gciig.com -gcimg.net -gcjc.com -gcjgxx.com -gcjlkj.com -gcjr.com -gcjy.info -gckychina.com -gcl-et.com -gcl-perovskite.com -gcl-power.com -gcld.net -gclhgc.com -gcloudcs.com -gcloudcstest.com -gcloudcstestonly.com -gclouddolphin.com -gcloudgbs.com -gcloudsdk.com -gcloudsvcs.com -gcmc.cc -gcok.com -gcomtechnology.com -gcopt.com -gcoreinc.com -gcores.com -gcpok.com -gcpunion.org -gcs66.com -gcscmp.com -gcstorage.com -gctianshanxh.com -gctong.com -gctwds.com -gctzsh.com -gcwdp.com -gcwduoduo.com -gcwith.com -gcykj.com -gcyts.com -gcyy08.com -gczyg.com -gd-chenxing.com -gd-chuangfu.com -gd-dl.com -gd-esa.com -gd-haijing.com -gd-hcsj.com -gd-hongyuegroup.com -gd-hskj.com -gd-hstech.com -gd-huadi.com -gd-id.com -gd-jinzhanggui.com -gd-jxjy.com -gd-kexin.com -gd-linux.com -gd-linux.org -gd-ls.com -gd-lt.com -gd-realfaith.com -gd-shenhua.com -gd-tianchen.com -gd-tianyue.com -gd-wanxi.com -gd-weisi.com -gd-xrsd.com -gd-yishuo.com -gd1580.com -gd165.com -gd2000.org -gd2h.com -gd32.com -gd32mcu.com -gd3n.com -gd56114.com -gd563.com -gd9d.com -gda086.com -gdaa.ltd -gdadjs.com -gdadri.com -gdaep.com -gdahua.com -gdaia.net -gdairport.com -gdanano.com -gdandun.com -gdapi.net -gdarcu.net -gdase.com -gdass.org -gdatacube.net -gdatc.net -gdbailin.com -gdbainengbao.com -gdbaishun.net -gdbbk.com -gdbhnk.com -gdbicyclexh.com -gdbidding.com -gdbita.com -gdbljd.com -gdbmh.com -gdbsjd.com -gdbzkz.com -gdbzkz.org -gdcaa.com -gdcaia.com -gdcaward.com -gdcayyebh.com -gdccaa.com -gdcci.com -gdccus.org -gdcdsh.com -gdceg.com -gdcgkg.com -gdchanbo.com -gdchess.com -gdchjt.com -gdcia.org -gdcic.net -gdcjrhcjh.com -gdcjtd.com -gdcjxx.com -gdcndq.com -gdcocodemer.com -gdcoop.com -gdcopper.com -gdcordblood.org -gdcost.com -gdcow.com -gdcreate.com -gdcsgj.com -gdctaa.com -gdctcd.com -gdctdb.com -gdctpark.com -gdcts.com -gdctsvisa.com -gdctsy.com -gdcvi.net -gdcxc2c.com -gdcxxy.net -gdcygp.com -gdcyl.org -gdczedu.net -gdczkj.com -gdczyy.com -gddata.net -gddci.com -gddcjt.com -gddcm.com -gddelux.com -gddeqing.com -gddfpaper.com -gddfund.com -gddg.cc -gddhn.com -gddianchuang.com -gddidg.com -gddikasi.com -gddingxin.com -gddjauto.com -gddlaaa.com -gddlkj.com -gddmsmc.com -gddqfs.com -gddqfs.net -gddrcgzjt.com -gddsjt.com -gddtop.com -gddyhb168.com -gddysl.com -gddz0769.com -gde.cc -gdeams.com -gdebidding.com -gdecn.com -gdedia.com -gdedu123.com -gdeeia.com -gdefair.com -gdeia.com -gdems.com -gdepi.com -gdevops.com -gdfanhua.com -gdfcjz.com -gdfeiyang.com -gdfenxiao.com -gdfgq.club -gdfplaza.com -gdfs.com -gdfshx.com -gdfuji.com -gdfushefanghuxiehui.com -gdfzsy.com -gdgajt.com -gdganhua.com -gdgassoc.com -gdgczb.com -gdggkf.com -gdghg.com -gdgkfn.com -gdgkty.com -gdgowe.com -gdgpc.net -gdgrsw.com -gdguangdong.com -gdguozhi.com -gdgwyw.com -gdgxxbw.com -gdgzhengzhou.com -gdgzrb.com -gdhairun.com -gdhaoma.com -gdhbsh.com -gdhchina.com -gdhcsh.com -gdhdbxg.com -gdhdgc.com -gdhengdian.com -gdhfjt.com -gdhfkg.com -gdhhgroup.com -gdhhjs.net -gdhhotels.com -gdhjtz.com -gdhjzs.com -gdhla.com -gdhmgc.com -gdhongsha.com -gdhpwx.com -gdhqzy.com -gdhsbid.com -gdhtcm.com -gdhuana.com -gdhuaxun.net -gdhuaya.com -gdhwater.com -gdhwgf.com -gdhwjl.com -gdhxgf.com -gdhylhh.com -gdhzsb.com -gdi5ap2ikn.com -gdida.org -gdie.com -gdinfo.net -gdinin.com -gdinm.com -gdinsa.org -gdinsight.com -gdipa.org -gdippa.com -gdiso.com -gdj-tech.com -gdjdxh.com -gdjdxy.com -gdjhh.com -gdjiabao.com -gdjinge.com -gdjinguan.net -gdjingyin.com -gdjinzong.com -gdjiutu.com -gdjktk.com -gdjky.com -gdjlfood.com -gdjlxh.org -gdjly.com -gdjs120.com -gdjshd.com -gdjsxh.com -gdjugong.com -gdjuhan.com -gdjuntai.com -gdjxjy.com -gdjxzs.com -gdjydg.com -gdjysteel.com -gdjyw.com -gdjyyy.com -gdkailin.com -gdkcsj.com -gdkepler.com -gdkingma.com -gdkjb.com -gdkjk56.com -gdkjw.com -gdkjzy.net -gdks168.com -gdkszx.com -gdktzx.com -gdkxpcb.com -gdkyhj.com -gdkz88.com -gdlaoan.com -gdldzx.net -gdlgsw.com -gdlgxy.com -gdlighting.com -gdlii.com -gdlinefly.com -gdlingjie.net -gdlins.com -gdliontech.com -gdlkjt.com -gdlmetc.com -gdlnpumps.com -gdlsgz.com -gdlswl.com -gdly-motor.com -gdlz.com -gdmagam.com -gdmain.com -gdmhjjt.com -gdmia.com -gdminda.com -gdmm.com -gdmoa.org -gdmschina.com -gdmtjt.com -gdmuah.com -gdmusah.com -gdmuseum.com -gdmzh.com -gdmztv.com -gdnanbo.com -gdnbdaqi.com -gdnd2016.com -gdnengyuan.com -gdneptunus.com -gdnewmedia.cc -gdnfu.com -gdnfzb.com -gdnhci.com -gdnin.com -gdniubang.com -gdnjuae.com -gdnybank.com -gdnyjt.com -gdofun.com -gdoip.com -gdojbk.com -gdokpackaging.com -gdolai.com -gdomall.com -gdou.com -gdpace.com -gdpdd.com -gdpengquan.com -gdpia.com -gdpingzheng.com -gdprm.com -gdprm.net -gdpysc.com -gdqcxcl.com -gdqianliang.com -gdqianyou.com -gdqlxh.com -gdquannong.com -gdqxjt.com -gdqynews.com -gdrc.com -gdrc360.com -gdrc365.com -gdrcu.com -gdrdcy.com -gdrfyy.com -gdronggang.com -gdroro.com -gdrqj.org -gdrsrc.com -gdruien.com -gdruisheng.com -gdrxyy.com -gdrxzx.com -gdryc.com -gds-huanbaogroup.com -gds-services.com -gds8j.com -gdsa.com -gdsaipu.com -gdsalt.com -gdsanlian.com -gdsanling.com -gdsbaxh.com -gdscse.net -gdsday.com -gdsdays.com -gdsdkg.com -gdsdwan.com -gdsdyy.com -gdsflbs.com -gdsfpharma.com -gdsfsgl.com -gdsgd.com -gdsgj.com -gdsgjgxh.com -gdshcm.com -gdshe.org -gdshunna.net -gdshuojin.com -gdsia.net -gdsjqr.com -gdsjx.com -gdsjxjy.com -gdskfz.com -gdskills.com -gdskin.com -gdslrobot.com -gdslwl.com -gdsme.org -gdsoftpark.com -gdsports.net -gdsqyg.com -gdsrcw.com -gdssie.com -gdsspt.net -gdsstl.com -gdst.cc -gdstc.group -gdstie.com -gdstlab.com -gdsugar.com -gdsunfly.com -gdsunhot.com -gdsunli.com -gdsuxie.com -gdswgc.com -gdswine.com -gdswkj668.com -gdsxgd.com -gdsxgf.com -gdsytech.com -gdsyy.org -gdsyzxsz.com -gdszjgdj.org -gdszkw.com -gdszsl.com -gdszxh.com -gdtadx.com -gdtaihao.com -gdtap.com -gdtc.cc -gdtcyy.com -gdtengen.com -gdtengnan.com -gdtex.com -gdtextbook.com -gdtianrun.com -gdtianshanoa.com -gdtichy.com -gdton.com -gdtongda.com -gdtongjiang.com -gdtongyi.com -gdtravel.com -gdtri.com -gdtstream.com -gdttaph.com -gdttc.com -gdttdj.com -gdtu.org -gdtx56.com -gdtykj.net -gdtz888.com -gdtzb.com -gdu-tech.com -gduaee.com -gdunis.com -gdupi.com -gdus.cc -gdutbbs.com -gdveren.com -gdvolunteer.net -gdwanlv.com -gdwanshun.com -gdwbyq.com -gdwca.com -gdwczb.com -gdweilaisw.com -gdwha.org -gdwia.com -gdwlcloud.com -gdwld.com -gdwlife.com -gdwsa.com -gdwse.com -gdwsrc.net -gdww.com -gdwxyf.com -gdwz.com -gdxdf.com -gdxdpg.com -gdxdy.com -gdxfl.com -gdxindun.com -gdxinqiang168.com -gdxinxiang.com -gdxise.com -gdxjzx.org -gdxmsx.com -gdxscode.com -gdxsn.com -gdxueyin.com -gdxy.vip -gdxych.com -gdybkjjt.com -gdyd.com -gdydgj.com -gdydzb.com -gdyeb.com -gdygsk.com -gdyhgn.com -gdyhsp.com -gdyiyou.com -gdykhb.net -gdylhp.com -gdyngl.com -gdyouyes.com -gdypt.com -gdyqxc.com -gdyslyh.org -gdysnk.com -gdysxh.com -gdytc.com -gdytxh.com -gdyuanshun.com -gdyuasa.com -gdyuegou.com -gdyuhi.com -gdyunxiao.com -gdyunyin.net -gdyxc.com -gdyyjgxh.com -gdyyyy.net -gdz.co -gdzbha.com -gdzcjt.net -gdzd-motor.com -gdzdbidding.com -gdzgjl.com -gdzgy.com -gdzhcx.com -gdzhenxing.com -gdzhiding.com -gdzhig.com -gdzhonghua.com -gdzhongpeng.com -gdzhongshan.com -gdzjdl.com -gdzjqy.com -gdzp.org -gdzrlj.com -gdzs2018.cc -gdzs2018.vip -gdzskj.tech -gdzsxx.com -gdzszt.com -gdztbz.com -gdzuoxie.com -gdzxgj.com -gdzxmm.com -gdzy5413.com -gdzygroup.com -gdzygy.com -gdzyinvest.com -gdzyjnw.com -gdzz114.com -gdzzjc.com -gdzzw.net -gdzzz.com -ge-garden.net -ge100.com -ge3rge43r6.com -geality.com -geapu.com -gear5.me -gearbbs.net -gearfront.net -gearkr.com -gearpharma.com -gearsnet.com -geautos.com -gebaiwan.com -gebchina.com -gebertech.com -gebilaoshi.com -gebinlong.com -gebiqu.com -gec123.com -geci123.com -gecimi.com -gecpc.com -gedi2099.com -gedou8.com -gedoumi.com -gedu.org -geeboo.com -geebook.com -geedai.com -geedu.com -geeetech.com -geeeu.com -geegain.com -geehy.com -geejing.com -geek-docs.com -geek-papa.com -geek-share.com -geek32.com -geekbang.com -geekbang.org -geekbangtech.com -geekcar.com -geekcar.net -geekclo.com -geekdata.com -geekdaxue.co -geekdive.com -geekefu.com -geekercloud.com -geekerconsulting.com -geekerhua.com -geekfans.com -geekiron.com -geeklab.work -geeklei.com -geekluo.com -geekmaker.com -geekman.vip -geeknev.com -geekpark.net -geekpwn.com -geekpwn.org -geeksblog.cc -geeksman.com -geektcp.com -geektutu.com -geeku.net -geekwom.com -geekxia.com -geekxue.com -geekzhao.me -geekzl.com -geelevel.com -geely-auto-gtm.com -geely-motors.com -geely-test.com -geely.com -geely.com.qa -geely.pe -geelyauto.com.hk -geelycv.com -geelydesign.com -geelyholding.com -geelylaos.com -geelyminiprogram.com -geelyph.com -geelysc.com -geelyswedenholdings.com -geement.com -geeqee.com -geermunews.com -geermurmt.com -geeseteam.com -geesic.com -geespace.com -geetest.com -geevisit.com -geewaza.com -geexek.com -geezn.com -gegame.site -gegedao.com -gegejia.com -gegeyingshi.com -gehaowu.com -gehope.com -gehua.com -gehua.net -gei-journal.com -gei.pw -gei6.com -geicloud.com -geihuasuan.com -geihui.com -geilicdn.com -geilijiasu.com -geilijiasu.net -geiliwx.com -geimian.com -geiniwan.com -geisnic.com -geizan.cc -gelaha.com -gelicang.net -geline.net -gelinya.com -geliqi.net -gellec.com -gelonghui.com -gelu.me -gelufu.com -gem-soft.com -gemac-cn.com -gembotech.com -gemchina.com -gemdale.com -gemei.com -gemelai.com -gemii.cc -gemini-galaxy.com -gemini530.net -gemjz.com -gemled-tech.com -gempharmatech.com -gempoll.com -gemuedu.com -genchim.com -gendan5.com -gendantong.com -gendone.com -genegeo.com -geneliunx.com -genelotus.com -genepharma.com -general-power.com -generalfushi.com -generalichina.com -generaltouch.com -generalwatertech.com -genergy-technology.com -genericfixer.com -generosbio.com -genesis-rock.com -geneskies.com -genetalks.com -genevoyager.com -geneway-bio.com -geneworldcn.com -genfleet.com -gengchuangz.com -gengfuwang.com -genghai.com -gengius.com -gengleyuan.com -gengls.org -gengnie.com -gengsan.com -gengshangpin.com -gengstar.com -gengzhongbang.com -genhousebio.com -geni4s.com -genial.vip -geniatech.com -genie-robot.com -geniusafc.com -geniuscn.com -geniusite.com -genmiao.com -genobank.org -genomeditech.com -genrace.com -genscript.com -gensee.com -genshinimpact.com -genshinimpact.moe -genshuixue.com -genstars.com -gentco.com -gentechchina.com -gentize.com -genudite.com -genuine-bio.com -genuway.com -genvict.com -genway.net -geo-compass.com -geo.kaspersky.com -geo2k.com -geoai.com -geoforcechip.com -geogsci.com -geoharbour.com -geohey.com -geoidc.com -geolong.com -geometryauto.com -geons.host -georginaarmadas.com -geosheen.com -geospatialsmart.com -geovisearth.com -gepcc.com -gephb.com -gepresearch.com -gepubbs.com -geren-jianli.com -gerenjianli.com -gerenshuoming.com -gerhard-china.com -germmc.com -geruihuate.com -geruishuiwu.com -geruisi-bio.com -gerzz.com -gesanghua.org -gescosteel.com -gescs.com -gesedna.com -gesedna.net -gesep.com -geshitong.net -geshui.com -geshui100.com -geshui99.com -geshuiba.com -gestagpu.com -gesuo.com -geswl.com -get-shell.com -get.vip -get233.com -getbs.com -getcai.com -getconnectplus.com -getddhospi.com -getehu.com -getelighting.com -getfeishu.com -getgetai.com -gethover.com -getiis.com -getiot.tech -getkwai.com -getlema.com -getmarkman.com -getpm.com -getquicker.net -getrebuild.com -getsays.com -getsetgadget.com -getsurfboard.com -gettopacoustic.com -getu.fun -getui.vip -getvidi.co -gewala.com -gewara.com -gewei-wh.com -gewei.com -geweng.com -gewu.vc -gewuer.com -gewuzhixiang.com -gexiao.me -gexiaocloud.com -gexinda.com -gexing.com -gexing.me -gexings.com -gexingshuo.com -gexingzipai.com -gexiong.com -geyawatch.com -geyevalve.com -geyo.com -geyoukj.com -gezida.com -gezila.com -gezipu8.net -gezivisa.com -gf-cloud.com -gf-funds.com -gf-metals.com -gf-nj.com -gf.app -gf.cc -gf139.com -gf1579.com -gf7979cn.com -gfan.com -gfanstore.com -gfbk.net -gfbzb.com -gfbzb.net -gfcdn.xyz -gfcity.com -gfcname.com -gfcvisa.com -gfd178.com -gfdj99665.com -gfdns.net -gfdsa.net -gfdwsx.com -gfedu.com -gfedu.net -gffirm.com -gffwq.com -gfglb.com -gfh82.com -gfhealthcare.com -gfjl.org -gflad.com -gflt.net -gflz.com -gfmpv.com -gfnormal00ab.com -gfnormal00ac.com -gfnormal00ad.com -gfnormal00ae.com -gfnormal00af.com -gfnormal00ag.com -gfnormal00ai.com -gfnormal00al.com -gfnormal00am.com -gfnormal00ao.com -gfnormal00ap.com -gfnormal00aq.com -gfnormal00ar.com -gfnormal00as.com -gfnormal00at.com -gfnormal01aa.com -gfnormal01ab.com -gfnormal01ac.com -gfnormal01ad.com -gfnormal01af.com -gfnormal01ag.com -gfnormal01ah.com -gfnormal01ak.com -gfnormal01al.com -gfnormal01am.com -gfnormal01an.com -gfnormal01ao.com -gfnormal01ap.com -gfnormal01aq.com -gfnormal01ar.com -gfnormal01as.com -gfnormal01at.com -gfnormal02aa.com -gfnormal02ab.com -gfnormal02ac.com -gfnormal02ad.com -gfnormal02ae.com -gfnormal02af.com -gfnormal02ag.com -gfnormal02ah.com -gfnormal02ai.com -gfnormal02aj.com -gfnormal02ak.com -gfnormal02al.com -gfnormal02am.com -gfnormal02an.com -gfnormal02ao.com -gfnormal02ap.com -gfnormal02aq.com -gfnormal02ar.com -gfnormal02as.com -gfnormal02at.com -gfnormal03aa.com -gfnormal03ab.com -gfnormal03ac.com -gfnormal03ad.com -gfnormal03ae.com -gfnormal03af.com -gfnormal03ag.com -gfnormal03ah.com -gfnormal03ai.com -gfnormal03aj.com -gfnormal03ak.com -gfnormal03al.com -gfnormal03am.com -gfnormal03an.com -gfnormal03ao.com -gfnormal03ap.com -gfnormal03aq.com -gfnormal03ar.com -gfnormal03as.com -gfnormal03at.com -gfnormal04aa.com -gfnormal04ab.com -gfnormal04ac.com -gfnormal04ad.com -gfnormal04ae.com -gfnormal04af.com -gfnormal04ag.com -gfnormal04ah.com -gfnormal04ai.com -gfnormal04aj.com -gfnormal04ak.com -gfnormal04al.com -gfnormal04am.com -gfnormal04an.com -gfnormal04ao.com -gfnormal04ap.com -gfnormal04aq.com -gfnormal04ar.com -gfnormal04as.com -gfnormal04at.com -gfnormal05aa.com -gfnormal05ab.com -gfnormal05ac.com -gfnormal05ad.com -gfnormal05ae.com -gfnormal05af.com -gfnormal05ag.com -gfnormal05ah.com -gfnormal05ai.com -gfnormal05aj.com -gfnormal05ak.com -gfnormal05al.com -gfnormal05am.com -gfnormal05an.com -gfnormal05ao.com -gfnormal05ap.com -gfnormal05aq.com -gfnormal05ar.com -gfnormal05as.com -gfnormal05at.com -gfnormal06aa.com -gfnormal06ab.com -gfnormal06ac.com -gfnormal06ad.com -gfnormal06ae.com -gfnormal06af.com -gfnormal06ag.com -gfnormal06ah.com -gfnormal06ai.com -gfnormal06aj.com -gfnormal06ak.com -gfnormal06al.com -gfnormal06am.com -gfnormal06an.com -gfnormal06ao.com -gfnormal06ap.com -gfnormal06aq.com -gfnormal06ar.com -gfnormal06as.com -gfnormal06at.com -gfnormal07aa.com -gfnormal07ab.com -gfnormal07ac.com -gfnormal07ad.com -gfnormal07af.com -gfnormal07ag.com -gfnormal07ah.com -gfnormal07ai.com -gfnormal07aj.com -gfnormal07ak.com -gfnormal07al.com -gfnormal07am.com -gfnormal07an.com -gfnormal07ao.com -gfnormal07ap.com -gfnormal07aq.com -gfnormal07ar.com -gfnormal07as.com -gfnormal07at.com -gfnormal08aa.com -gfnormal08ab.com -gfnormal08ac.com -gfnormal08ad.com -gfnormal08ae.com -gfnormal08af.com -gfnormal08ag.com -gfnormal08ah.com -gfnormal08ai.com -gfnormal08aj.com -gfnormal08ak.com -gfnormal08al.com -gfnormal08am.com -gfnormal08an.com -gfnormal08ao.com -gfnormal08ap.com -gfnormal08aq.com -gfnormal08ar.com -gfnormal08as.com -gfnormal08at.com -gfnormal09aa.com -gfnormal09ab.com -gfnormal09ac.com -gfnormal09ad.com -gfnormal09ae.com -gfnormal09af.com -gfnormal09ag.com -gfnormal09ah.com -gfnormal09ai.com -gfnormal09aj.com -gfnormal09ak.com -gfnormal09al.com -gfnormal09am.com -gfnormal09an.com -gfnormal09ao.com -gfnormal09ap.com -gfnormal09aq.com -gfnormal09ar.com -gfnormal09as.com -gfnormal09at.com -gforward.org -gfoxsoft.net -gfren.org -gfrtrttweet.com -gfslgy.com -gfsz.net -gftiec.com -gfttek.com -gftuan.com -gfun.me -gfund.com -gfvip00aa.com -gfvip00ab.com -gfvip00ac.com -gfvip00ad.com -gfvip00ae.com -gfvip00af.com -gfvip00ag.com -gfvip00ah.com -gfvip00ai.com -gfvip00aj.com -gfvip00ak.com -gfvip00al.com -gfvip00am.com -gfvip00an.com -gfvip00ao.com -gfvip00ap.com -gfvip00aq.com -gfvip00ar.com -gfvip00as.com -gfvip00at.com -gfvip01aa.com -gfvip01ab.com -gfvip01ac.com -gfvip01ad.com -gfvip01ae.com -gfvip01af.com -gfvip01ag.com -gfvip01ah.com -gfvip01ak.com -gfvip01al.com -gfvip01am.com -gfvip01an.com -gfvip01ao.com -gfvip01ap.com -gfvip01aq.com -gfvip01ar.com -gfvip01as.com -gfvip01at.com -gfvip02aa.com -gfvip02ab.com -gfvip02ac.com -gfvip02ad.com -gfvip02ae.com -gfvip02af.com -gfvip02ag.com -gfvip02ah.com -gfvip02ai.com -gfvip02aj.com -gfvip02ak.com -gfvip02al.com -gfvip02am.com -gfvip02an.com -gfvip02ao.com -gfvip02ap.com -gfvip02aq.com -gfvip02ar.com -gfvip02as.com -gfvip02at.com -gfvip03aa.com -gfvip03ab.com -gfvip03ac.com -gfvip03ad.com -gfvip03ae.com -gfvip03af.com -gfvip03ag.com -gfvip03ah.com -gfvip03ai.com -gfvip03aj.com -gfvip03ak.com -gfvip03al.com -gfvip03am.com -gfvip03an.com -gfvip03ao.com -gfvip03ap.com -gfvip03aq.com -gfvip03ar.com -gfvip03as.com -gfvip03at.com -gfvip04aa.com -gfvip04ab.com -gfvip04ac.com -gfvip04ad.com -gfvip04ae.com -gfvip04af.com -gfvip04ag.com -gfvip04ah.com -gfvip04ai.com -gfvip04aj.com -gfvip04ak.com -gfvip04al.com -gfvip04am.com -gfvip04an.com -gfvip04ao.com -gfvip04ap.com -gfvip04aq.com -gfvip04ar.com -gfvip04as.com -gfvip04at.com -gfvip05aa.com -gfvip05ab.com -gfvip05ac.com -gfvip05ad.com -gfvip05ae.com -gfvip05af.com -gfvip05ag.com -gfvip05ah.com -gfvip05ai.com -gfvip05aj.com -gfvip05ak.com -gfvip05al.com -gfvip05am.com -gfvip05an.com -gfvip05ao.com -gfvip05ap.com -gfvip05aq.com -gfvip05ar.com -gfvip05as.com -gfvip05at.com -gfvip06aa.com -gfvip06ac.com -gfvip06ad.com -gfvip06ae.com -gfvip06ag.com -gfvip06ah.com -gfvip06ai.com -gfvip06aj.com -gfvip06ak.com -gfvip06am.com -gfvip06an.com -gfvip06ao.com -gfvip06ap.com -gfvip06aq.com -gfvip06ar.com -gfvip06as.com -gfvip06at.com -gfvip07aa.com -gfvip07ab.com -gfvip07ac.com -gfvip07ad.com -gfvip07ae.com -gfvip07af.com -gfvip07ag.com -gfvip07ah.com -gfvip07ai.com -gfvip07aj.com -gfvip07ak.com -gfvip07al.com -gfvip07am.com -gfvip07an.com -gfvip07ao.com -gfvip07ap.com -gfvip07aq.com -gfvip07ar.com -gfvip07as.com -gfvip07at.com -gfvip08aa.com -gfvip08ab.com -gfvip08ac.com -gfvip08ad.com -gfvip08ae.com -gfvip08ag.com -gfvip08ah.com -gfvip08ai.com -gfvip08aj.com -gfvip08ak.com -gfvip08al.com -gfvip08am.com -gfvip08an.com -gfvip08ao.com -gfvip08ap.com -gfvip08aq.com -gfvip08ar.com -gfvip08at.com -gfxaa.com -gfxcamp.com -gfxtr1.com -gfxy.com -gfyseed.com -gfzihua.com -gfzj.us -gg-lb.com -gg-led.com -gg122.net -gg1994.com -ggac.net -ggaiyan.com -ggas.com -ggbamy.com -ggbanfu.com -ggbondtech.com -ggbygx.com -ggcimbar.com -ggcj.com -ggcx.com -ggcykf.com -ggdata.com -ggecc.com -ggecgc.com -ggemo.com -ggeye.com -ggfsfy.com -ggfswy.com -ggg42.com -ggg868.com -gggcn.com -gggfyl.com -gggggi.com -ggghny.com -gggjs.com -gggqa.com -gggrp.com -gggua.com -gggzhi.com -gggzpw.com -gghb.cloud -gghcgg.com -gghosp.net -gghs.info -gghualong.com -gghx120.com -gghy.org -gginto.com -ggjcpm.com -ggjpay.com -ggjrw.com -ggjstz.com -ggjszp.com -ggjt.com -ggjtfw.com -ggksw.com -ggkuai.com -ggl.com -gglenglish.com -gglkw.net -gglmg.com -ggmlechi.com -ggmm55.com -ggmsw.com -ggnqmy.com -ggo.net -ggoplay.com -ggowan.com -ggqule.com -ggqunshanmuye.com -ggqx.com -ggrcw.com -ggren.net -ggrsmy.com -ggrsrc.com -ggsfcw.com -ggshfmy.com -ggshmy.com -ggslxs.com -ggsq.cc -ggtime.com -ggtjx.com -ggtqw.com -ggttvc.com -ggunk1tn.com -ggwan.com -ggwan.net -ggweijie.com -ggwlxx.com -ggwxmuye.com -ggwzpf120.com -ggxarq.com -ggxdsmzx.com -ggxhx.com -ggxiaolinmy.com -ggxinzhitaimy.com -ggxjhk.com -ggxsjz.com -ggxue.com -ggxx.net -ggy.net -ggy775.com -ggyouyu.com -ggysc.com -ggysfw.com -ggytc.com -ggyx666.com -ggyy100.com -ggzbbj.com -ggzc.net -ggzgc.com -ggzha.com -ggzhaf.com -ggzs.me -ggzuhao.com -ggzx.net -gh-fm.com -gh-reagent.com -gh-shipping.com -gh8s.com -ghatg.com -ghboke.com -ghbxrj.com -ghc168.com -ghcec.com -ghcis.com -ghcxzb.com -ghddi.org -ghdoor.com -ghed119.com -ghedu.com -ghgglobal.com -ghglzx.com -ghgy.com -ghhyjc.com -ghibliwiki.org -ghitcsh.com -ghitest.com -ghjbh123.com -ghlawyer.net -ghlearning.com -ghlshb.com -ghlykj.com -ghmba.com -ghmcchina.com -ghmd448.com -ghmisnet.com -gho5.com -ghoffice.com -ghost-him.com -ghost008.com -ghost11.com -ghost32.net -ghost64.com -ghostchu.com -ghostoact.com -ghostsf.com -ghostwin7.net -ghostwin7win8.com -ghostxp2.com -ghostxpsp3.net -ghostxx.com -ghoxz.com -ghparking.com -ghpepower.com -ghproxy.com -ghproxy.link -ghpy3333.com -ghpym.com -ghrepower.com -ghrlib.com -ghs.net -ghschool.com -ghsd16888.com -ghsense.com -ghsmc.com -ghsmpwalmart.com -ght-china.com -ght120.com -ghtech.com -ghtianshancn.com -ghtt.net -ghturbine.com -ghtzgs.com -ghwgame.com -ghxi.com -ghxsw.com -ghyg.com -ghyhjsw.com -ghyl888.com -ghzhushou.com -ghzs.com -ghzs666.com -giabbs.com -giaimg.com -gialen.com -giant-china.com -giant-cycling-lifestyle.com -giantaircompressor.com -giantcdn.com -giantet.com -giantgd.com -giantkone.com -giao.me -gibcp.com -gicasa.com -giccoo.com -gicfg.com -gicp.net -gidepay.com -giecds.com -giexya.com -gif5.net -giffox.com -gifhome.com -gifshow.com -giftatdw.com -giftattoday.com -giftres.com -giftsbeijing.com -gifu-pr.com -giga-da.com -giga-science.com -gigaget.com -gigbl.com -gigpayroll.com -gihg.com -gihiji.com -giho.com -giihg.com -giikin.com -giiktop.com -giiso.com -gijsq.com -gildata.com -gilieye.com -giltbridge.com -giltworld.com -gimcyun.com -gimhoy.com -gimmgimm.com -gimoo.net -gimsh.com -ginde.com -ginfon.com -gingerbreadstudio.cc -gingyan.com -ginlong.com -ginshio.org -ginwa.com -gio07231rp.com -gioccc.com -gionee.com -gionee.net -gioneemobile.net -gioner.com -giordano.com -giorgiomorandihotels.com -giraff3.com -girdear.net -girl13.com -girls-frontline.com -girlsfighters.com -girlsheaven-job.net -girlw.net -giscafer.com -giserdqy.com -gissaas.com -gissinggroup.com -gissky.net -gistc.com -git-repo.info -git-star.com -gitcafe.ink -gitclone.com -gitcode.com -gitcode.host -gitcode.net -gitee.com -gitee.io -githang.com -github-zh.com -github.site -githubim.com -gitinn.com -gitiu.com -gitlib.com -gitmirror.com -gitnoteapp.com -gitom.com -gitpp.com -gitsea.com -gitshell.com -gitv.tv -gityuan.com -gityx.com -giveda.com -giyu8.com -gizaworks.com -gizwits.com -gj62.com -gjbaek.ren -gjcars.com -gjceshi9.com -gjcha.com -gjcoil.com -gjcweb.com -gjcxgs.com -gjdk100.com -gjds.vip -gjdwzp.com -gjfmxd.com -gjgzpw.com -gjhgroup.com -gjhl.com -gjj.cc -gjjcxw.com -gjjiaxiao.com -gjjnhb.com -gjjsbz.com -gjkdwl.com -gjl15.com -gjlease.com -gjmbwxpt.com -gjmbwxzx.com -gjmrk.com -gjnlyd.com -gjpdh.com -gjrwls.com -gjsc.info -gjsj.com -gjsun.com -gjtmu.com -gjtool.com -gjtt.net -gjw.com -gjw123.com -gjwl123.com -gjwlyy.com -gjxh.org -gjxx.com -gjxzq.com -gjydz.com -gjyfish.com -gjyuxiang.com -gjyys.com -gjzfw.com -gjzy.com -gk-cn.com -gk-net.com -gk-z.com -gk.ink -gk.link -gk100.com -gk114.com -gk99.com -gkcyc.com -gkczgs.com -gkczp.com -gkfb.com -gkgzj.com -gkhxtc.com -gki88.com -gkjzy.com -gkket.com -gkkxd.com -gklx.net -gkmao.com -gkmems.com -gkmhq.com -gkmotor.com -gkong.com -gkoo.net -gkoudai.com -gkqcw.com -gkqxfsl.xyz -gkrpgtee.com -gkshanghai.com -gkshuju.com -gktianshanjd.com -gkwo.net -gkxd.com -gkxs.com -gkxx.com -gkyly.com -gkzhan.com -gkzj.com -gkzj.net -gkzpfw.com -gkzppt.com -gkzq.mobi -gkzqxc.com -gkzxw.com -gkzy.com -gkzy100.com -gkzyb.com -gkzzd.com -gkzzy.com -gl-data.com -gl-mes.com -gl-qf.com -gl-uav.com -gl-zj.com -gl102.com -gl114.net -gl170.com -gl17u.com -gl18.com -gl258.com -gl2mt.com -glab.online -gladcc.com -gladdigit.com -glafamily.com -glamever.com -glamourred.com -glamourtrains.com -glanimaltrade.com -glanu.com -glaproject.com -glasercom.com -glass-ciac.com -glassbottleproducer.com -glasseasy.com -glassmicro.com -glavo.site -glaway.com -glawyer.net -glb3.com -glb4.com -glb6.com -glbaishen.com -glbdns.com -glblkq.com -glby118.com -glbyhotel.com -glbyjdjt.com -glcablesy.com -glcanyin.net -glcape.com -glcct.com -glcht.com -glchunchao.com -glchuyun.com -glcits.com -glclcsy.com -glcszy.com -gldaewoo.com -gldjc.com -gleasy.com -glecan.com -glelec.com -gleyy.com -glface.com -glfangzhen.com -glfdfcyy.com -glflyy.com -glfpii.com -glfund.com -glfyjg.com -glgangyu.com -glgcsj.com -glgda.com -glgdst.com -glgeneng.com -glggh.com -glgh.org -glghy.com -glgnmt.com -glgoo.com -glgoo.net -glgoo.org -glgsoft.com -glgst.com -glgtzc.com -glgyzn.com -glgzlq.com -glhcjs.com -glhckj.com -glhclv-kool.com -glhdq.com -glhfmy.com -glhfsy.com -glhmmr.com -glhnkj.com -glhospital.com -glhrzx.com -glhsylqx.com -glhtpcb.com -glhuade.com -glhuashi.com -glhuayue.com -glhycy.com -glhygjlxs.com -glhzhotel.com -glhzzx.com -glicon.design -glifegame.com -glinfo.com -glinkmedia.com -glinksure.com -gljcss.com -gljdjt.com -gljiatianxia.com -gljiayu.com -gljieli.com -gljinbao.com -gljinfeng.com -gljinhui.com -gljinjiabg.com -gljinshan.com -gljiqing.com -gljkfhq.com -gljkzg.com -gljlw.com -gljshy.com -gljshz.com -gljsjl.com -gljtkg.com -gljtxjy.com -gljygd.com -gljykj.com -gljyrj.com -gljzgs.com -glk7.com -glkgjt.com -glkths.com -gllcit.com -gllfyy.com -glljsh.com -glljy.com -gllshan.com -gllstz.com -glltjx.com -glludiyan.com -gllue.com -gllue.me -gllue.net -gllxsb.com -gllycs.com -glmama.com -glmapper.com -glmayo.com -glmbc.com -glmingke.com -glmmodels.com -glncn.com -glnewstar.com -gloamingtechnology.com -global-dba.com -global-download.acer.com -global-harbor.com -global-idc.net -global-jf.com -global-ks-cdn.com -global-leader.com -global-otc.com -global-scsl.com -global-tio2.com -global56.com -globalaccentchinese.com -globalauthorid.com -globalbaike.com -globalbuy.cc -globalchangan.com -globalcho.com -globaletrust.com -globalharborec.com -globalhardwares.com -globalimporter.net -globaliot-summit.com -globalizex.com -globalmil.com -globalnevs.com -globalpingbao.com -globalscanner.com -globalsigncdn.com -globalslb.net -globalso.com -globalso.site -globalsources.com -globalsourcingbiz.com -globalstech.com -globalston.com -globaltenpay.com -globaltradecoo.com -globalvisa888.com -globalx-nest.com -globebill.com -globecancer.com -globeedu.com -globrand.com -globusevents.com -glodon.com -glofang.com -gloraledu.com -gloriahotels.com -gloriamedia.com -glorygarment.com -glorysoft.com -gloryview.com -glorze.com -glosellers.com -glosku.com -glosspp.com -glowapp.fun -glowapp.vip -glpenhui.com -glplyf.com -glqh.com -glqshb.com -glquanji.com -glrcjob.com -glrcw.com -glreading.com -glredu.com -glriverside.com -glrmyy.com -glruixin.com -glsanhua.com -glsdhnt.com -glseed.com -glsgmr.com -glshimg.com -glsjf.com -glsmy024.com -glssgolf.com -glsstm.com -glsxdlkj.com -glsxhz.com -glsxr.com -glsyjd.com -glsyjgs.com -glsytzjt.com -glt365.com -gltop.com -gltsg.com -gltvs.com -gltx.tech -gltzjt.com -gluebon.com -glumes.com -glvroc.com -glvs.com -glwangcheng.com -glwuhong.com -glwxw.net -glwyhd.com -glxcc.net -glxcjt.com -glxd.com -glxhzs.com -glxiaoyaohu.com -glxinhu.com -glxkbz.com -glxsyx.vip -glxwdb.com -glxxjx.com -glxyjx.com -glxyrn.com -glyhjc.com -glyhy.com -glyjk.com -glylgg.com -glyltl.com -glyndwrsway.com -glyphara.com -glyslydjq.com -glyummy.com -glyuxing.com -glyxc.com -glyxjtgc.com -glz8.com -glzcqy.com -glzdgx.com -glzeasun.com -glzfst.com -glzh-szzx.site -glzhcyy.com -glzhealth.com -glzip.com -glzizhu.com -glzj88.com -glzmn.com -glzon.com -glzrflx.com -glzsjc.com -glzthz.com -glztj.com -glzx.net -glzyjt.com -glzzjy.com -gm-scm.com -gm016.com -gm193.com -gm3.win -gm35.com -gm3studio.com -gm825.com -gm825.net -gm86.com -gm88.com -gm99game.net -gmacsaic.com -gmacsaic.net -gmallbio.com -gmanhua.com -gmatg.com -gmaxbiopharm.com -gmbbs.net -gmbuluo.com -gmcc.net -gmcinnov.com -gmcmonline.com -gmdeng.com -gmdt9b.com -gmdun.com -gmecn.com -gmed.cc -gmedata.com -gmeditech.com -gmedtech.com -gmem.cc -gmeri.com -gmerit.com -gmertc.com -gmfc.cc -gmfintl.com -gmg.so -gmgc.info -gmgitc.com -gmhub.com -gmhuijin.com -gmhysj.com -gmi1001.com -gmilesquan.com -gmiot.net -gmjk.com -gmm01.com -gmmicro.com -gmmsj.com -gmmtcc.com -gmoe.cc -gmoj.net -gmonline-all.com -gmpanel.com -gmpbj.com -gmqd.com -gmquickapp.com -gmrmyy.com -gmsec.net -gmsolid.com -gmssl.org -gmsyun.com -gmt-china.org -gmt-cn.com -gmtacoa.com -gmtv.cc -gmtzy.com -gmugmu.com -gmw.com -gmwiki.com -gmxmym.ren -gmya.net -gmyihua.com -gmylj.com -gmz88.com -gmzhushou.com -gmzi.com -gmzm.org -gmzp.net -gmzx.com -gn168.com -gn301.xyz -gnber.com -gncebest88.com -gndaily.com -gndown.com -gneec.com -gneec3.com -gneec4.com -gneec5.com -gneec7.com -gneeccloud.com -gneedu.com -gnehr.com -gnete.com -gnetis.com -gnetpg.com -gng92.com -gngnk.com -gnhome.com -gnhpc.com -gnice-it.com -gnict.com -gninstruments.com -gnitif.com -gnlearn.com -gnmxjj.com -gnnzfw.com -gnrcbank.com -gnrnye.com -gnrtv.com -gnssinfo.com -gnssopenlab.org -gnt8.com -gnvip.net -gnway.cc -gnway.com -gnway.org -gnzad.com -gnzrk.com -go-admin.com -go-behind.one -go-gddq.com -go-goal.com -go.cc -go007.com -go108.com -go1314.com -go2aaron.com -go2eu.com -go2map.com -go2yd.com -go300.com -go5kvsiay5wx.com -goalchina.net -goalhi.com -goalmapapp.com -goalonez.site -goapk.com -gobanma.com -gobasearcher.com -gobelike.net -gobivc.com -gobroadhealthcare-sh.com -gobroadhealthcare.com -gobyd.com -gocarjourney.com -gocashback.com -gocchina.com -gocdn.cc -gocea.net -goceshi.com -gochego.com -goclee.com -gocn.vip -godaily.org -godasai.com -godbiao.com -godblessrail.com -godblessyuan.com -goddelivery.com -goddessxzns.com -godele.com -godgy.xyz -godic.net -godida.com -godo.pub -godoor.com -godotcn.com -godsendcn.com -godsheepteam.com -godsignal.com -godweiyang.com -godwolf.com -goeasy.io -goelia1995.com -goepe.com -goertek.com -goetheslz.com -gofarqzyy.com -goforandroid.com -goframe.org -gofreeplay.com -gofrp.org -gog-cdn-fastly.gog.com -gog-cdn.akamaized.net -gogalaxy.gog-statics.com -gogbuy.com -gogo.so -gogo123.com -gogo123.net -gogoauc.com -gogocn.com -gogofly.com -gogokid.com -gogolinux.com -gogooffer.com -gogoqq.com -gogoup.com -goherbalfood.com -gohighfund.com -goho.co -gohoedu.com -gohomesafe.org -gohomesh.com -gohong.com -going-link.com -gojiaju.com -gojira.net -gokaigai.com -goke.com -gokols.com -gokuai.com -golang8.com -golangapi.com -golanger.com -golangroadmap.com -golangw.com -golaravel.com -gold-dragon-castings.com -gold-seagull.com -gold-v.com -gold58.com -gold678.com -goldav.net -golday666.com -golday999.com -golday9999.com -goldbj.com -goldbox.vip -golden-bamboo.com -golden-book.com -golden-infor.com -golden-soft.com -golden-spri.com -golden3t.net -goldenad.net -goldenbeechina.com -goldenear.club -goldenexpogroup.com -goldengreengolf.com -goldenhighway-chem.com -goldenholiday.com -goldenhome.cc -goldening.com -goldenken.com -goldenladies.com -goldenname.com -goldenseaair.com -goldentec.com -goldenthroat.com -goldentom.com -goldfoil.com -goldgov.com -goldgrid.com -goldhoe.com -goldksoft.com -goldlion-china.com -goldlion-info.com -goldmadon.com -goldmantis.com -goldmarkrealestate.com -goldmt.net -goldstone-group.com -goldstone-investment.com -goldstonepack.com -goldsunchn.com -goldsunmachinery.com -goldsupplier.com -goldvole.com -goldwaterhk.com -goldwind.com -golenpower.com -golfvv.com -golink.com -golinkapi.com -golinkcn.com -golinkgroup.com -golinksworld.com -golive-tv.com -golivetv.tv -goluckcity.com -goluckyvip.com -golue.com -gomaeps.com -gomanlift.com -gomeart.com -gomecloud.com -gomegj.com -gomeholdings.com -gomehome.com -gomeplus.com -gomo.com -gomocdn.com -gomvyxvm.com -gona-semi.com -goneoffone.com -gonever.com -gong-xin.com -gong123.com -gongao.net -gongbaike.com -gongbi.net -gongbiaoku.com -gongboshi.com -gongcdn.com -gongchang.com -gongcheng168.com -gongchengbing.com -gongchengjn.com -gongchou.com -gongchu.com -gongfubb.com -gongfudou.com -gongji58.com -gongjiao.com -gongjiao160.com -gongjiaomi.com -gongjiyun.com -gongju.com -gongju5.com -gongjux.com -gongkaohub.com -gongkaoleida.com -gongkaowo.com -gongkong.com -gongkong001.com -gongkongbpo.com -gongkongedu.com -gongkongjia.com -gongkongke.com -gongkongmall.com -gongkongsaas.com -gonglchuangl.net -gonglf.com -gonglve.net -gongmo1688.com -gongmutang.com -gongnou.com -gongpin.net -gongpingjia.com -gongqiu.biz -gongshang120.com -gongshiku.com -gongsibao.com -gongsijiaoyi.com -gongsizhang.com -gongsizhijia.com -gongsizhuce.club -gongwuxing.com -gongxiangcj.com -gongxiao8.com -gongxiaodaji.com -gongxuanwang.com -gongxueyun.com -gongye360.com -gongyefengshan.com -gongyeku.com -gongyelian.com -gongyeyun.com -gongyeyunwang.com -gongyi.la -gongyi.net -gongyi.xin -gongyichuangyi.net -gongyicn.org -gongyidaily.com -gongying405.com -gongyingshang.biz -gongyingshi.com -gongyipuhui.com -gongyishibao.com -gongyou.com -gongyouhui.com -gongyoumishu.com -gongzhao.net -gongzhao.work -gongzhou.com -gongzhou.net -gongzhun.com -gongzicp.com -gongzufudinzu.com -gongzuobaogao.xyz -gongzuoshouji.net -gongzuoyun.org -gonsun.com -gonvvama.net -gonxt.com -gonyn.com -goo17.com -gooagoo.com -gooann.com -goobai.com -goobye.net -goocar.net -good-display.com -good-expo.com -good-import.com -good.cc -good1230.com -good321.net -good519.com -goodacc.net -goodally.hk -goodao.net -goodapk.com -goodbaby.com -goodbabygroup.com -goodbaike.com -goodcang.com -goodcloud.xyz -gooddr.com -gooddu.com -goode-china.com -goodealwigs.com -goodeeis.com -goodera8.com -goodesocket.com -goodfamily.cc -goodfamily.com -goodgongshi.com -goodgoodhack.com -goodgupiao.com -goodid.com -goodix.com -goodjd.com -goodjili.com -goodjob100.com -goodk88.com -goodkejian.com -goodlcm.com -goodlift.net -goodluckcalendar.com -goodmorening.com -goodnic.net -goododo.com -goodonecn.com -goodprogrammer.org -goodqq.net -goodrain.com -goodread.com -goodschool.world -goodsid.com -goodsku.com -goodstudydayup.com -goodtea.cc -goodtech.live -goodtp.com -goodwe.com -goodwillcis.com -goodwillresource.com -goodwyee.com -goodyoungtea.com -goofish.com -googoc.com -googol-power.com -googolpark.com -googvv.com -goolemall.com -goolink.org -goome.net -goomj.com -goonemei.com -gooo8.com -goooc.net -gooogua.com -gooooal.com -gooood.hk -goootech.com -goootu.com -goopush2025.com -gooray.com -goosai.com -goosail.com -gooseeker.com -gootho.com -gootoai.com -goowine.com -gooxi.com -gooyo.com -goozp.com -gopedu.com -gopeed.com -goplaycn.com -goproxy.io -gopuu.com -gorebuy.com -goregxa.com -gorichox.com -gorouter.info -gorse.com -gortune.com -gosailgis.com -goselling.com -goshijia.com -goshopjp.com -gosinoic.com -goskygroup.com -gosonly.com -gospelwin.com -gost-pct.com -gosun.com -gosun.ltd -gosuncdn.com -gosuncdn.net -gosuncn.com -gosunm.com -got001.com -got002.com -gotechcn.com -gotechina.com -goten.com -gothe3.com -goto-game.com -goto-game.mobi -goto-game.net -goto-game.org -gotobath.com -gotocdn.com -gotocoding.com -gotodn.com -gotofreight.com -gotohui.com -gotohz.com -gotohzrb.com -gotoip.net -gotoip1.com -gotoip11.com -gotoip2.com -gotoip3.com -gotoip4.com -gotoip88.com -gotokeep.com -gotolink.net -gotonav.com -gotonets.com -gotopsoft.com -gotostudyroom.com -gotoubi.com -gotozhuan.com -gotran.com -gotvg.com -gou.com -goubrand.com -gouchezj.com -goufang.com -goufw.com -gougoujp.com -gouguoyin.com -gouhai.com -gouhao.com -gouhaowang.com -gouhuasuan.shop -goujianwu.com -goukk.com -goukuai.com -goulegu.com -goulew.com -goulong.com -goumee.com -goumin.com -goupautomation.com -goupsec.com -goupuzi.com -gourmet114.com -goushh.com -gouso.com -gousu.com -goutanzi.com -gouwanmei.com -gouwo.com -gouwu3.com -gouwudang.com -gouwuke.com -gouwule.com -gouwuyu.com -gouyoukeji.com -gov-static.tech -govagroup.com -govfz.com -govisionox.net -govjc.com -govmade.com -govqcloud.com -govuln.com -gowan8.com -goweb1.cc -goweb2.net -goweb3.net -goweike.net -gowinamc.com -gowincms.com -gowinlease.com -gowlc.net -gowmo.com -gowonganinn.com -goww.net -goxytrbz.com -goyihu.com -goyoo.com -gozap.com -gozongroup.com -gozyq.com -gp-tm.com -gp1903.com -gp1907.com -gp241.com -gp259.com -gp451.com -gp51.com -gp88888.com -gp891.com -gpai.net -gpall.net -gpautobid.com -gpb-hls.streamguys1.com -gpbbs.net -gpbeta.com -gpboke.com -gpbtravel.com -gpcang.com -gpcqjy.com -gpd.hk -gpdi.com -gper.club -gpfang.net -gpl-express.com -gplayspace.com -gplqdb.com -gplus-lab.com -gpmii.net -gpmro.com -gpmycez.com -gpnewtech.com -gpowersoft.com -gppapp.com -gpqnrc.com -gps009.net -gps010.net -gps123.org -gps16888.com -gpsbao.com -gpsgx.net -gpslook.net -gpsonextra.net -gpsoo.net -gpsov.com -gpspw.net -gpsrcw.com -gpsspg.com -gpstool.com -gpsuu.com -gpszlsc.com -gpticket.org -gptkong.com -gpubgm.com -gpuez.com -gpuztrvt.com -gpxiv5kew4mvk.com -gpxxz.com -gpxygpfx.com -gpxz.com -gpxzw.com -gpyck.com -gpydxl.com -gq-rose.com -gq60.com -gqbmt.com -gqget.com -gqgkj.com -gqhmt.com -gqjd.net -gqjtgs.com -gqjx.net -gqk.tv -gqprgkr.com -gqpyh.com -gqqsm.com -gqsj.cc -gqsoso.com -gqsyk.com -gqsym.com -gqt168.com -gqxtq.com -gqzewmsk8yma18.com -gr-hospital.com -gr3xuaov74khb.com -gra-moissanitesorg.com -grab4k.com -grablan.com -grabsun.com -grace2015.site -gracece.com -graceelectron.com -gracelaser.com -gracg.com -gradaimmi.com -gradgroup.com -gradgroup.net -graduallylift.com -grafytek.com -grainedu.com -grainstorage.net -grand-tec.com -grandcitytours.com -granddongshan.com -grandee-elevator.com -grandelazio.com -grandhopebio.com -grandinsight.com -grandioes.com -grandkol.com -grandlisboa.com -grandlisboapalace.com -grandloong.com -grandomics.com -grandordesign.com -grandpharm.com -grandqueen.com -grandskylightgardenshenzhen.com -grandskylightshenzhenguanlan.com -grandwaylaw.com -grapchina.org -graphene.tv -graphmovie.com -graphmovies.com -grass98.com -grassmoon.net -graueneko.xyz -gravity-engine.com -grcbank.com -grchina.com -grcwzx.com -great-future.com -greatagroup.com -greatbit.com -greatesting.com -greathink.com -greatld.com -greatoo.com -greatopensource.com -greatops.net -greatopt.com -greatpowercn.com -greatran.com -greatroma.com -greatsk.com -greatsoftman.com -greatsolid.com -greatssp.com -greatstargroup.com -greatstartools.com -greatwallmusic.com -greatwuyi.com -gredmedic.com -gree-jd.com -gree.com -greebox.com -greedc.com -greedongaohotel.com -greefinance.com -greejt.com -green-cpc.com -green-holdings.com -green-sh.com -green12306.com -greencharm.com -greenchengjian.com -greencompute.org -greendh.com -greenism.net -greenits.net -greenlandcn.com -greenlandsc.com -greenpine.cc -greenswolf.com -greentomail.com -greentownchina.com -greenvalleypharma.com -greenwater.cc -greenwaychina.org -greenwicher.com -greenwood-park.com -greenxf.com -greenxiazai.com -greepi.com -greeyun.com -grender.com -greplay.com -grescw.com -gretf.com -greyli.com -greywolfcdn.net -greywolffast.com -greywolfns.com -grfexpo.com -grfyw.com -grg2013.com -grgaoren.com -grgbanking.com -grgreecv.com -grgroup.cc -grgsecurity.com -grgtest.com -grgvision.com -grgyintong.com -grid2048.com -gridsum.com -gridy.com -grikin.com -grinm.com -grirem.com -gritgen.com -gritpharma.com -grjzjt.com -grksc.com -grmxdy.com -grnuo.com -groad.net -gronhi.com -groovymedicine.com -grouk.com -groundsun.com -group-purchasing.com -group-spl.com -group-wenyuan.com -groupfangyuan.com -grouphx.com -groupjh.com -groupjx.com -grouplus.com -groupshenxi.com -growatt.com -growful.com -growth.ai.srv -growthbox.net -grpindex.com -grria.net -grs-syphu.com -grspet.com -grstz.com -grt-china.com -grtrelay.com -grtsports.com -grumplesgroup.com -gruntjs.net -gruposeimex.com -gruppal.com -grxxw.com -gryltop.com -gryphline.com -gryu.net -gryw666.com -grzmz.com -grzq.com -gs-cdn.com -gs090.com -gs12122.com -gs14.com -gs1cn.org -gs2.ww.prod.dl.playstation.net -gs2012.com -gs5000.com -gs6699.com -gsadds.com -gsafc.com -gsafety.com -gsaxns.com -gsbankchina.com -gsbankmall.com -gscaishui.com -gscblog.com -gscdn.pub -gschaos.club -gscidc.net -gsdk.tv -gsdpw.com -gsdswz.com -gsdtfx.com -gsdyjsgs.com -gseen.com -gsensebot.com -gsfilter.net -gsflcp.com -gsfrj.com -gsfybjy.com -gsfycloud.com -gsfzb.com -gsgltz.com -gsgs10086.com -gsgundam.com -gshangju.com -gshmhotels.com -gshmzs.com -gshopper.com -gshqqcx.shop -gshrgroup.com -gsi24.com -gsicpa.net -gsidy.com -gsjb.com -gsjkjt.com -gsjqtv.com -gsjt-cn.com -gsjt56.com -gsjtky.com -gskaiwei.com -gskfzxyy.com -gskjpt.com -gsktraining.com -gskwai.com -gsl.cc -gslbauto.com -gslbdns.com -gslbdns.net -gslmw.net -gslnjyjt.com -gsmpers.com -gsmuban.com -gsnhcg.com -gsnytz.com -gspaceteam.com -gspst.com -gspt.com -gspxonline.com -gsqstudio.com -gsrc.com -gsrcb.net -gsrcu.com -gsrcw.com -gsrecv.com -gsrl.net -gsrwfyy.com -gss56.com -gssag.com -gssbh.com -gsseo.net -gssey.com -gsshylsh.com -gssjyxrmyy.com -gsskyst.com -gssltxrmyy.com -gsslxh.com -gsstargroup.com -gsstic.com -gsstock.com -gsstsdgs.com -gsswtz.com -gst-china.net -gst.prod.dl.playstation.net -gstarcad.com -gstatic-cn.com -gsthq.com -gstonegames.com -gstsz.com -gstzyyy.com -gsuus.com -gswjxjzx.com -gswljt.com -gswz.com -gsx009.com -gsxb.net -gsxcdn.com -gsxetc.com -gsxgw.com -gsxservice.com -gsxtj.com -gsydxzyy.com -gsysportwear.com -gsyth.com -gsyxjyw.com -gsyygh.com -gszhaopin.com -gszlyy.com -gszph.com -gszq.com -gszsc.com -gszybw.com -gszyi.com -gszytcm.com -gszyy.com -gt-generator.com -gt-oil.com -gt-semi.com -gt47xc.com -gt520.com -gtac.cc -gtadata.com -gtajl.com -gtan.com -gtanhao.com -gtaos.com -gtarcade.com -gtarsc.com -gtastart.com -gtaxqh.com -gtbrowser.com -gtc-power.com -gtcedu.com -gtcfla.net -gtcfzp.com -gtcim.com -gtd-china.com -gtder.club -gtdgc.com -gtdlife.com -gtdreamlife.com -gtdsc.com -gter.net -gtetern.com -gtfund.com -gtg56.com -gtgqw.com -gtgres.com -gtht.com -gthzc.com -gti56.com -gtibee.com -gtig-esen.com -gtig.com -gtiggm.com -gtimg.com -gtinno.com -gtja-allianz.com -gtja.com -gtjadev.com -gtjaqh.com -gtjazg.com -gtjgzt.com -gtjiaoyu.com -gtjt.com -gtk-china.com -gtkl.net -gtlggy.com -gtlrxt.com -gtm-a1b2.com -gtm-a1b3.com -gtm-a1b4.com -gtm-a1b5.com -gtm-a1b6.com -gtm-a1b7.com -gtm-a1b8.com -gtm-a1b9.com -gtm-a2b2.com -gtm-a2b3.com -gtm-a2b4.com -gtm-a2b5.com -gtm-a2b6.com -gtm-a2b7.com -gtm-a2b8.com -gtm-a2b9.com -gtm-a3b1.com -gtm-a3b3.com -gtm-a3b4.com -gtm-a3b5.com -gtm-a3b6.com -gtm-a3b7.com -gtm-a3b8.com -gtm-a3b9.com -gtm-a4b1.com -gtm-a4b2.com -gtm-a4b3.com -gtm-a4b4.com -gtm-a4b5.com -gtm-a4b6.com -gtm-a4b7.com -gtm-a4b8.com -gtm-a4b9.com -gtm-a5b1.com -gtm-a5b2.com -gtm-a5b3.com -gtm-a5b4.com -gtm-a5b5.com -gtm-a6b1.com -gtm-a6b2.com -gtm-a6b3.com -gtm-a6b4.com -gtm-citycloud.com -gtm-host.com -gtm-i1d1.com -gtm-i1d2.com -gtm-i1d6.com -gtm-i1d7.com -gtm-i1d8.com -gtm-i1d9.com -gtm-i2d3.com -gtm-i2d4.com -gtm-i2d6.com -gtm-i2d8.com -gtm-i2d9.com -gtm-we.com -gtm.oasisfeng.com -gtm.pub -gtmlufax.com -gtmsh.com -gtn9.com -gtobal.com -gtphotonics.com -gtpso.com -gtqzg.com -gtradedata.com -gtrukxeo.com -gts.work -gtshebei.com -gtsnzp.com -gttctech.com -gttxidc.com -gtuanb.com -gtuu.com -gtwrmdxo.com -gtx-sh.com -gtxf.com -gtxh.com -gtxp2.com -gtycn.net -gtyztpt.com -gtzlw.com -gtzszy.com -gtzxhk.com -gtzxsg.com -gtzy123.com -gu166.com -gu360.com -gua123.com -guabu.com -guaguay.com -guahao-inc.com -guahao.com -guahao114.com -guahaoe.com -guahaowang.com -guaiguai.com -guaihou.com -guaiku.com -guaileicp.com -guaili.org -guailuo.com -guailuzi.com -guaixun.com -guajibao.club -guajibao.me -guajibaola.com -guakaoba.com -guan-shi.com -guan.com -guan5.com -guanaitong.com -guance.com -guanchangnongmu.com -guanchao.site -guanchiad.com -guancibaoku.com -guandan.com -guandan.mobi -guandan888.com -guandang.net -guandata.com -guandianle.com -guang-yuan.com -guang.com -guangbali.com -guangbao-uni.com -guangbo.net -guangbogroup.com -guangcimh.com -guangdamr.com -guangdauser.com -guangdianyun.tv -guangdiu.com -guangdong-hotel.com -guangdong1039.com -guangdonggames.com -guangdonglianxing.com -guangdonglong.com -guangdongrc.com -guangdongtianxi.com -guangdongwater.com -guangdongyunchen.com -guangdv.com -guangfan.com -guangfeng.com -guangfulingyuan.com -guanggao.com -guanghan-marathon.com -guanghe.tv -guanghuayigou.com -guanghui.com -guangjie5u.com -guangjieba.com -guangjiela.com -guangjinghb.com -guangjipharm.com -guangjiubusiness.com -guangjiucompany.com -guangju123.com -guangjuke.com -guangka.com -guangkatf.com -guangli88.com -guanglikou.com -guanglilvyuan.com -guanglingroup.com -guanglongsoft.com -guangming.com -guangmintou.com -guangnengquan.com -guangraoluntan.com -guangruijixie.com -guangsai.cc -guangshaxy.com -guangshenghang.com -guangsuan.com -guangsuss.com -guangte-ne.com -guangtuikeji.com -guanguigroup.com -guanguser.com -guangwaifu.com -guangwei.com -guangxi910.com -guangxibiaoxie.com -guangxicarbon.com -guangxichunhui.com -guangxigames.com -guangxiguozhi.com -guangxihaihui.com -guangxihongji.com -guangxijiazhi.com -guangxijinhang.com -guangxilindakejimeiliyaoshang.com -guangxilonghua.com -guangxima.com -guangximinhang.com -guangxinengyuan.com -guangxipubeihuaheng.com -guangxircw.com -guangxishangfu.com -guangxishuizhiyangzhigongsi.com -guangxisichujiadao.com -guangxixinchan.com -guangxixinyan.com -guangxixinyuwanzixun.com -guangxiyijie.com -guangxizbq.com -guangxizhonghui.com -guangxizhutingqi.com -guangya-group.com -guangyi.net -guangyinghj.com -guangyuancare.com -guangyuangroup.com -guangyuanjt.com -guangyuanmarathon.com -guangyuhb.com -guangyv.com -guangzhitui.com -guangzhou-logistics.com -guangzhou-marathon.com -guangzhouamc.com -guangzhoudazhong.com -guangzhougy.com -guangzhouxiehe.com -guangzhouyibo.com -guangzhouyizheng.com -guangzhouzaiyu.com -guangzjiaq.com -guanhaiwei.com -guanhaobio.com -guanhejx.com -guanhou.com -guanhuaju.com -guanjiajf.com -guanjunjg.com -guankou.net -guankuimjg.com -guanlannet.com -guanli360.com -guanlixi.com -guanliyun.com -guanmeikj.com -guannews.com -guanngxu.com -guanpark.com -guanpindiaosu.com -guanquanapp.com -guanrenjiaoyu.com -guanshanbaodian.com -guanshang1998.com -guanshangyu.cc -guanshenggz.com -guansong.com -guansre.com -guantao.com -guanting.com -guanvip8.com -guanwang.cc -guanwang.com -guanwangbao.com -guanwangdaquan.com -guanwangshijie.com -guanwangyun.com -guanwuxiaoer.com -guanxf.com -guanxian.org -guanxiaokai.com -guanxingyun.com -guanxintec.com -guanxxg.com -guanyezipper.com -guanyierp.com -guanyinshan.com -guanyiyun.com -guanzhongrc.com -guanzhu.mobi -guanzhulian.com -guanzhunet.com -guanziheng.com -guapaijia.com -guardease.com -guardrailchina.com -guatedu.com -guatuwang.com -guazhuan.com -guazi-apps.com -guazi.com -guazi.net -guazipai.com -guazistatic.com -guazixs.com -guba.com -guba163.com -gubaike.com -gubo.org -gucciblog.net -guccistar.com -gucheng.com -guchengnews.com -guchengxiangye.com -gucn.com -gucun.info -gucunpark.net -guczkbdq.com -gudeapp.com -gudemanage.com -gudianwenxue.com -gufengmh9.com -gufenxueshu.net -gug66.com -gugeanzhuangqi.com -gugeapps.net -gugexs.com -gugezg.com -gugong.net -gugu.fun -gugu5.com -gugu6.com -gugud.com -gugudang.com -guguread.com -gugushuzi.com -guguyu.com -guguyun.com -guguyuyin.com -guguzhu.com -guhai66.com -guhantai.com -guhei.net -guheshuyuan.com -guhuozaiol.com -gui333.com -gui66.com -guibi.com -guicaiyun.com -guichanghj.com -guichuideng.com -guichuxing.com -guidechem.com -guideir.com -guideofsh.com -guiderank-app.com -guifan.cc -guifancha.com -guifanku.com -guifeng.net -guifun.com -guigang688.com -guigu.org -guigushi2.com -guihaikj.com -guihejr.com -guihua.com -guihuangfood.com -guihuayun.com -guiji.com -guijingchina.com -guijinshu.com -guijitech.com -guijob.com -guikai888.com -guikangmaterials.com -guikuan.com -guilinaohu.com -guilincyjt.com -guilinhd.com -guilinhengda.com -guilinihg.com -guilinjiaqi.com -guilinjizhuangxiang.com -guilinlife.com -guilinlv.com -guilinoutdoor.com -guilinpharma.com -guilinruntai.com -guilinsongyu.com -guilintianhu.com -guilintravel.com -guilinzhiyuan.com -guiluohuang.com -guimamuye.com -guimengjob.com -guimengning.com -guimengshangeng.com -guinsoft.com -guipeibao.com -guipin.com -guiqingkeji.com -guiqv.com -guirong.com -guiscn.com -guishangtong.com -guishanhotel.com -guishequ.com -guisteel.com -guitan.com -guitang.com -guitang.fun -guitarq.com -guitongmy.com -guitu18.com -guiwang.org -guiweilian.com -guixiaozi.com -guixue.com -guiyangmarathon.com -guiyingclub.net -guiyuhuanbao.com -guiyuntai.com -guizeco.com -guizheng.net -guizhenghe.com -guizhenwei.com -guizhougames.com -guizhougas.com -guizhoushengyang.com -guizhutanglao.com -guj6.com -gujianba.com -gujing.com -gujinshici.com -gujiushu.com -gujiyx.com -gukaculture.com -gukaifu.com -gukaihu.com -gukun.com -gulandscape.com -guliem.com -gulinglong.com -gulinrongmei.com -gullmap.com -gulltour.com -gulongbbs.com -gulove.com -gulu.tv -gulu001.com -gulugj.com -gululu.com -guluyou.com -gumade.com -gumang.com -gumaor.com -gumeng.net -gumiji.com -gumingnc.com -gumo.pro -gumodels.com -gumpmall.com -gundambattle.com -gunshitech.com -gunsuo.com -guo-kai.com -guo7.com -guo98.com -guoanaz.com -guoanclub.com -guoanele.com -guoanqi.com -guoanwine.com -guoaoqiyuan.com -guobaihui.com -guobaoyou.com -guobiao99.com -guobiaotest.com -guobin120.com -guoboshi.com -guocaipps.com -guocaiqinghai.com -guocar.com -guochaos.com -guocool.com -guocuijingju.com -guodahulian.com -guodashi.com -guodatzjt.com -guodegang.org -guodi.net -guodingnet.com -guodongbaohe.com -guodongtech.com -guodongtechnology.com -guodouw.com -guodu.com -guodu.hk -guodushidai.com -guofanglab.com -guofen.com -guofenchaxun.com -guofenchaxun.net -guofeng.com -guofenkong.com -guoguangmold.com -guoguo-app.com -guoguojie.com -guohanlawfirm.com -guohaokeji.com -guohongxin.com -guohu360.com -guohua88.com -guohuapharm.com -guohuarf.com -guohuayule.com -guoing.com -guoji.biz -guoji.pro -guojiang.tv -guojianglive.com -guojiayikao.com -guojiayixuekaoshi.com -guojiazhiyezige.com -guojidaigou.com -guojiexpress.com -guojijinjia.com -guojimami.com -guojing-tech.com -guojiseka.com -guojiwuye.com -guojixiao.com -guojixuexiao.net -guojixuexiao.org -guojiyujiaxueyuanzongbu.com -guojizhanlanhui.com -guojj.com -guojusoft.com -guokang.com -guoketest.com -guokeyun.com -guokongqixie.com -guokr.com -guokr.io -guokr.net -guoku.com -guolaiwanba.com -guolan.com -guolannewmaterial.com -guole.fun -guoli.com -guolianchem.com -guolianglab.org -guolin.tech -guolisec.com -guolong365.com -guolongplastic.com -guoluonews.com -guolv.com -guolv.net -guomai.cc -guomaoreducer.com -guomeijiayuanxiaoxue.com -guomeikuaidi.com -guomiaokeji.com -guomin999.com -guominpension.com -guomu.com -guoocang.com -guopeiwang.com -guopika.com -guoping123.com -guopop.tech -guoqi.org -guoqi365.com -guoqinwang.com -guorentao.com -guorongfei.com -guoruijx.com -guoshengtech.com -guoshi.com -guoshusir.com -guosujt.com -guotaijsh.com -guotailiangyou.com -guotangauto.com -guotongglobal.com -guoturen.com -guotv.com -guowai.org -guoweijt.com -guoweistem.com -guoweitong.com -guowuwushu.com -guoxiehao.com -guoxikonggu.com -guoxinbj.com -guoxinlanqiao.com -guoxinmac.com -guoxinqh.com -guoxintek.com -guoxue.com -guoxue123.com -guoxuedashi.com -guoxuemeng.com -guoxuemi.com -guoxuwang.com -guoyang.cc -guoyangtech.com -guoyc.online -guoyi360.com -guoyice.com -guoyihuake.com -guoyitang.org -guoyu.com -guoyue.games -guoyuegroup.com -guoyuejituan.com -guoyunjc.com -guoyusec.com -guoyutec.com -guozaoke.com -guozeyu.com -guozh.net -guozhangroup.com -guozhanjiaoyu.com -guozhen.net -guozhenyi.com -guozhivip.com -guozhuan.com -guozhuangxincai.com -guozi.org -guoziyx.com -gupang.com -gupaoedu.com -gupei.com -gupen.com -gupiao135.com -gupiao168.com -gupiao8.com -gupiaoq.com -gupiaowajue.com -gupowang.com -gupt.net -gupuu.com -gupzs.com -guqiankun.com -guqiu.com -guqu.net -gurukeji.com -gushengwang.com -gushequ.com -gushi.ci -gushi.com -gushi160.com -gushi365.com -gushiai.com -gushici.com -gushicimingju.com -gushidaquan.cc -gushidi.com -gushiji.cc -gushiju.net -gushiwen.org -gusspro.com -gusucaishui.com -gusuwang.com -guteke.com -gutlighting.com -gutou.com -gutousoft.com -gutx.org -guwan.com -guwantj.com -guweimin.com -guwendao.net -guwenxs.com -guwenxuexi.com -guwu121.com -guxiang.com -guxunw.com -guyizisha.com -guyuehe.com -guyuehome.com -guyuenglish.com -guyungame.com -guzhang.com -guzhangting.com -guzhenm.com -guzhongtrade.com -guzuci.com -guzwiayz.com -gvcr9zaemdzh.com -gvg-redsun.com -gvi-tech.com -gvlocalization.com -gvmocpc.com -gvoiceplat.com -gvt2-cn.com -gvwyuik.com -gvzen.com -gw-ec.com -gw.craft.moe -gw4.cc -gw66.vip -gwacoe.com -gwamcc.com -gwauto.com -gwbfc.com -gwblighting.com -gwc.net -gwcdncloud.com -gwdang.com -gwdqsb.com -gwdzkj.com -gweike.com -gwell.cc -gwetech.com -gwfls.com -gwfx.net -gwgl168.com -gwgsc.com -gwi.cc -gwidc.com -gwin-cn.com -gwinbody.com -gwjakzzx.com -gwjinan.com -gwkvepgc.com -gwm-global.com -gwmapp-h.com -gwmfc.com -gwmmarathon.com -gwmsoft.com -gwnsxx.com -gwnz.com -gworg.com -gwozai.com -gwpdi.com -gwpp.net -gwpstools.com -gwrcw.com -gwsdns.com -gwtt.com -gwwg.com -gwxeda.com -gwy.com -gwyclass.com -gwyoo.com -gwyou.com -gwypxw.com -gwysydw.com -gwyzk.com -gwyzwb.com -gwzft.com -gwzhinan.com -gwzwfw.com -gwzyxh.com -gx-antai.com -gx-aozhan.com -gx-auto.com -gx-biosensor.com -gx-ds.net -gx-etrans.com -gx-hengyuan.com -gx-hm.com -gx-lc.com -gx-newmedia.com -gx-royalpartners.com -gx-stbd.com -gx-wl.com -gx-xc.com -gx-xjyx.com -gx-yidaiyilu.com -gx-zy.com -gx10010.com -gx121.com -gx12333.net -gx12580.net -gx163.com -gx1g.com -gx3j.net -gx4485.com -gx5127.com -gx516.com -gx51766.com -gx5f.com -gx79.com -gx81jxzl.com -gx966888.com -gxaas.net -gxabd.net -gxacjs.com -gxacto.com -gxadt.com -gxadwh.com -gxaedu.com -gxahjy.com -gxaids.com -gxairlines.com -gxaist.com -gxaixier.com -gxalt.com -gxanchen.com -gxankao.com -gxantu.com -gxany.com -gxaoma.com -gxar.com -gxarl.com -gxasjc.com -gxasjn.com -gxawjmy.com -gxaxjy.com -gxaxpc.com -gxayn.com -gxb.io -gxbaichen.com -gxbaidu.net -gxbaidutg.com -gxbaifugch.com -gxbaikuang.com -gxbaixun.com -gxbakj.com -gxbaozhiyue.com -gxbasic.com -gxbbwsw.com -gxbbwyl.com -gxbcf.com -gxbcgjg.com -gxbcjc.com -gxbckj.com -gxbdcx.com -gxbdtx.com -gxbeiente.com -gxbenxin.com -gxbest.xyz -gxbeyy.com -gxbf.net -gxbgdl.com -gxbgtf.com -gxbhgas.com -gxbhjg.com -gxbhlg.com -gxbhly.net -gxbian.com -gxbiandao.com -gxbidding.com -gxbihongkeji.com -gxbinhai.com -gxbiyang.com -gxblfs.com -gxbltz.com -gxbml.com -gxbmmy.com -gxbngs.com -gxbochi.com -gxboning.com -gxbotlan.com -gxbqba.com -gxbqkj.com -gxbr668.com -gxbre.com -gxbrm.com -gxbs.net -gxbscbh.com -gxbsfj.com -gxbsky.com -gxbsnx.com -gxbssyy.com -gxbstlxx.com -gxbsyjsw.com -gxbtjt.com -gxbtka.com -gxbtnz.com -gxbtsc.com -gxbtsy.com -gxbtxc.com -gxbygs.com -gxbyjxc.com -gxbykj.com -gxbyrcb.com -gxbys.com -gxbyw.com -gxbyx.com -gxbzjx.com -gxcae.com -gxcaining.com -gxcaiyiduo.com -gxcampus.com -gxcards.com -gxcareer.com -gxcast.com -gxcatv.com -gxcbjs.com -gxcbljt.com -gxccblg.com -gxccedu.com -gxccjt.com -gxcd.pw -gxcdc.com -gxceg.com -gxcei.com -gxcerc.com -gxcexxzx.com -gxcfjx.com -gxcgmf.com -gxcgzh.com -gxch168.com -gxchanghe.com -gxchangjiangpn-jinnuo.com -gxchbf.com -gxchem.com -gxchengjian.com -gxchengmei.com -gxchengyun.com -gxchlrf.com -gxchr.com -gxchuanghua.com -gxchuanlan.com -gxchuen.com -gxchunmao.com -gxchuxin.com -gxcic.net -gxcimc.com -gxcj.cc -gxcj.net -gxcjcl.com -gxcjgt.cc -gxcjn.com -gxcjtc.com -gxclkj.com -gxclzz.com -gxcmgr.com -gxcmicc.com -gxcncec.com -gxcnjx.com -gxcodemaker.com -gxcors.com -gxcounty.com -gxcpa.com -gxcq188.com -gxcqm.com -gxcr.cc -gxcrcw.com -gxcrh.net -gxcrhj.com -gxcrjm.com -gxcro.com -gxcrzxgs.com -gxcschem.com -gxcscm.com -gxcsfc.com -gxcskj.com -gxcsmed.com -gxcsmx.com -gxcsqj.com -gxcsycj.com -gxcsypm.com -gxcszm.com -gxctc.net -gxctd.com -gxcthb.com -gxcti.com -gxctzb.com -gxcuiping.com -gxcvuedu.com -gxcw.com -gxcxhb.com -gxcxxny.com -gxcxyx.com -gxcyaq.com -gxcyhjt168.com -gxcyzs.com -gxcz88.com -gxczm.com -gxcznews.com -gxcznews.net -gxczrc.com -gxdadu.com -gxdairy.com -gxdajin.com -gxdajixiong.com -gxdake.com -gxdanbao.com -gxdangan.com -gxdansi.com -gxdanzo.com -gxdaos.com -gxdaosheng.com -gxdbdl.com -gxdbxrmyy.com -gxdco.net -gxdcwh.com -gxddcs.com -gxddtz.com -gxddzl.com -gxdegas.com -gxdetdq.com -gxdfjt.com -gxdfzx.com -gxdhgy.com -gxdhhb.com -gxdhyy.com -gxdiba.com -gxdicai.com -gxdig.com -gxdingyi.com -gxdingyu.com -gxdkjmy.com -gxdkyr.net -gxdljz.com -gxdltech.com -gxdlxy.com -gxdlzl.com -gxdmds.com -gxdmsq.com -gxdmtrade.com -gxdmw.com -gxdna.com -gxdnu.com -gxdong.com -gxdongce.com -gxdongfangshi.com -gxdonghong.com -gxdongkai.com -gxdoulaibo.com -gxdqtg.com -gxdrh.com -gxds1.com -gxdse.com -gxdslyy.com -gxdslyyls.com -gxdsoms.com -gxdsxf.com -gxdsyl.com -gxdtchem.com -gxdtiot.com -gxdtjl.com -gxdtsc.com -gxdunhuang.com -gxdunshen.com -gxduomeishi.com -gxduyi.com -gxdx5.com -gxdxbj.com -gxdxcredit.com -gxdxdt.com -gxdxjs.com -gxdxlk.com -gxdxlxs.com -gxdycpa.com -gxdygs.com -gxdygx.com -gxdyxjd.com -gxdyyj.com -gxea.com -gxeaq.com -gxecard.com -gxecm.com -gxeduyun.net -gxegoo.com -gxehy.com -gxeits.com -gxej.net -gxelang.com -gxenews.com -gxeph.com -gxept.com -gxeqjx.com -gxeqx.com -gxer.net -gxeszx.com -gxevc.com -gxewa.com -gxfag.com -gxfaj.com -gxfanghu.com -gxfanlian.com -gxfanlu.com -gxfanxing.com -gxfanyayoga.com -gxfcq.com -gxfcw.com -gxfengjie.com -gxfenglei.com -gxfengxingjq.com -gxffjt.com -gxfhjs.com -gxfhny.com -gxfhxx.com -gxfi.net -gxfigroup.com -gxfin.com -gxfinfr.com -gxfjly.com -gxflm.com -gxflpg.com -gxfls.com -gxflzx.com -gxfm.net -gxfmmy.com -gxfnt.com -gxforestry.com -gxfrhb.com -gxfsms.com -gxfssy.com -gxfsty.com -gxfswl.com -gxfsxrmyy.com -gxfsyljt.com -gxftu.org -gxfushun.com -gxfusui.com -gxfuxue.com -gxfuyuan.com -gxfxhjwy.com -gxfxly.com -gxfxm.com -gxfxwh.com -gxfxzb.com -gxfybj.com -gxfygp.com -gxfysteel.com -gxfyzx.com -gxfzf.com -gxfzjt.com -gxfzkkj.com -gxfzpg.com -gxfzyjs.com -gxg1978.com -gxgaia.com -gxgangji.com -gxgangxin.com -gxgangyuan.com -gxganhua.com -gxgaoling.com -gxgaotong.com -gxgaoyao.com -gxgaoyou.com -gxgaty.com -gxgba.com -gxgbdb.com -gxgbkj.com -gxgbx.com -gxgcedu.com -gxgcfscl.com -gxgcjs.com -gxgczxjt.com -gxgd192.com -gxgdbg.com -gxgdhg.com -gxgdlsp.com -gxgdpg.com -gxgdyy.com -gxgdyz.com -gxgeek.com -gxgentle.com -gxgf.net -gxgfsh.com -gxggcmc.com -gxggdq.com -gxggfhsmy.com -gxgghx.com -gxggm.com -gxggmy.com -gxggryjy.com -gxghfs.com -gxghjt.com -gxghpg.com -gxghyysc.com -gxghzh.com -gxgj.com -gxgjgc.com -gxgjgg.com -gxgjh.com -gxgjjl.com -gxgjjt.com -gxgjny.com -gxgjzy.com -gxgkcat.com -gxgkzzr.com -gxgl588.com -gxglft.com -gxglgcjs.com -gxglhd.com -gxglhx.com -gxgljhgc.com -gxgljy.com -gxglkg.com -gxglnykj.com -gxglory.com -gxglyl.com -gxglys.com -gxglzj.com -gxglzs.com -gxgm.net -gxgmgc.com -gxgmjhc.com -gxgmtx.com -gxgndxdl.com -gxgoldpool.com -gxgongyinglian.com -gxgoodfirst.com -gxgov.net -gxgp123.com -gxgpo.com -gxgpzhtc.com -gxgqdz.com -gxgqsn.com -gxgrasp.com -gxgree.com -gxgrtech.com -gxgryy.com -gxgsgl.com -gxgsgs.com -gxgshb.com -gxgswlhy.com -gxgsxy.com -gxgsyy.com -gxgszb.com -gxgtdg.com -gxgtdl.com -gxgtghy.com -gxgttt.com -gxgtxny.com -gxgtzb.com -gxgtzx.com -gxguanghui.com -gxguangxin.com -gxguangyi.com -gxguantai.com -gxguanyu.com -gxguerte.com -gxguicheng.com -gxguijiu.com -gxguimei.com -gxguiping.com -gxguiren.com -gxguirun.com -gxguite.com -gxguixing.com -gxguiyang.com -gxguizhiyuan.com -gxguoda.com -gxguoen.com -gxguojian.com -gxguojingjiuye.com -gxguoyang.com -gxguyu.com -gxgwmb.com -gxgwuxe.com -gxgwyw.org -gxgxjc.com -gxgxncplm.com -gxgxun.com -gxgyfy.com -gxgyh.com -gxgymsxx.com -gxgyrq.com -gxgyyclc.com -gxgyyy.com -gxgzlm.com -gxgztyy.com -gxgzy.com -gxgzzn.com -gxhaibao.com -gxhalw.com -gxhanhe.com -gxhanlin.com -gxhaojian.com -gxhaorun.com -gxhaozhi.com -gxharui.com -gxhb8.com -gxhbcyxh.com -gxhbedu.com -gxhbs.com -gxhc120.com -gxhc18.com -gxhc365.com -gxhcht.com -gxhclw.com -gxhcmr.com -gxhcnf.com -gxhcwy.com -gxhcyk.com -gxhczx.com -gxhdaf.com -gxhddj.com -gxhddq.com -gxhdsy.com -gxhealth.xin -gxheda.com -gxhefei.com -gxheguan.com -gxhengda.com -gxheyumaoyi.com -gxhezhixin.com -gxhfba.com -gxhfdl.com -gxhfdqsb.com -gxhfyy.com -gxhg.net -gxhghg.com -gxhgjm.com -gxhgkj.com -gxhgx.net -gxhgzb.com -gxhgzc.com -gxhh.com -gxhhgc.com -gxhhgs.com -gxhhhb.com -gxhhig.com -gxhhjk.com -gxhhjt.net -gxhhmed.com -gxhhzsjt.com -gxhigreen.com -gxhis.net -gxhjbw.com -gxhjjt.net -gxhjky.com -gxhjly.com -gxhjsh.com -gxhjsz.com -gxhjwy.com -gxhjzbcyy.com -gxhjzx.com -gxhkd.com -gxhkdq.com -gxhkdyf.com -gxhkgy.com -gxhkjc.com -gxhkjt.com -gxhl.com -gxhlc.com -gxhljx.com -gxhlun.com -gxhlx.net -gxhly168.com -gxhmba.com -gxhmcm.com -gxhmdjt.com -gxhnyt.com -gxholy.com -gxhongchuan.com -gxhonggang.com -gxhongning.com -gxhongshimuye.com -gxhongyunsi.com -gxhongzh.com -gxhope.org -gxhospital.com -gxhouse.com -gxhovi.com -gxhpxrmyy.com -gxhqh.com -gxhqjy.com -gxhqtest.com -gxhqwh.com -gxhqxmgl.com -gxhrcjz.com -gxhrkj.com -gxhsba.com -gxhsjgs.com -gxhsltd.com -gxhsry.com -gxhsshj.com -gxhsshjzl.com -gxhstars.com -gxhsxcl.com -gxhsxxkj.com -gxhsykj.com -gxhszb.com -gxhtjx.com -gxhtl.com -gxhtpc.com -gxhtte.com -gxhuabao.com -gxhuachi.com -gxhuachuang.com -gxhuadu.com -gxhuaen.com -gxhuahui.com -gxhuanbaojt.com -gxhuapei.com -gxhuaqu.com -gxhuar.com -gxhuaxing.com -gxhuaxintech.com -gxhui.com -gxhuicuibencao.com -gxhuifa.com -gxhuihuang.com -gxhuiji.com -gxhuijvtong.com -gxhuiming.com -gxhuitong.com -gxhuiwanger.com -gxhuolong.com -gxhxbook.com -gxhxgg.com -gxhxgroup.com -gxhxh.com -gxhxysgs.com -gxhxyyjt.com -gxhxzyh.com -gxhyart.com -gxhydq.com -gxhyey.com -gxhygg.com -gxhyhs.com -gxhykglass.com -gxhyq.com -gxhyscl.com -gxhysm.com -gxhyww.com -gxhyxf.com -gxhyxt.com -gxhyz168.com -gxhyzixun.com -gxhyzx.net -gxhzgjyy.com -gxhzjsgc.com -gxhzkj.com -gxhzsbwg.com -gxhzsqyg.com -gxhztqt.com -gxhzxk.com -gxhzxw.com -gxhzyd.com -gxi.ink -gxiang.org -gxibvc.net -gxic.club -gxic.net -gxicc.net -gxicpa.com -gxidc.com -gxidi.com -gxind.com -gxinf.com -gxinfo.org -gxinfotec.com -gxipo.net -gxjajc.com -gxjaw.com -gxjbhb.com -gxjbk.com -gxjbyy.com -gxjcbf.com -gxjccj.com -gxjch.com -gxjckc.com -gxjcqt.com -gxjcxcl.com -gxjcxy.com -gxjcy.com -gxjcys.com -gxjczlsb.com -gxjdcb.com -gxjdgc.com -gxjdgczx.com -gxjdgyxx.com -gxjdxs.com -gxjeyy.com -gxjf99.com -gxjfdz.com -gxjfx.com -gxjg199.com -gxjgdj.com -gxjgea.com -gxjghy.com -gxjgjjc.com -gxjgjstzjt.com -gxjgjt.com -gxjgyj.com -gxjgyjgs.com -gxjgzcb.com -gxjgzppc.com -gxjhcj.com -gxjhgczx.com -gxjhgd.com -gxjhgs.com -gxjhjcw.com -gxjhjdsb.com -gxjhjs.com -gxjhky.com -gxjhsj.com -gxjhtea.com -gxjhygs.com -gxjhzj.com -gxjiahua.com -gxjiangyong.com -gxjianhong.com -gxjianlan.com -gxjianrong.com -gxjianyi.com -gxjiaohang.com -gxjiasheng.com -gxjiatai.com -gxjichang.com -gxjiebai.com -gxjiefeng.com -gxjien.com -gxjigeng.com -gxjigeyuan.com -gxjihu.com -gxjinan.com -gxjingsheng.com -gxjinhai.com -gxjinhuiauto.com -gxjinjiang.com -gxjinsu.com -gxjinsui.com -gxjintu.com -gxjirui.com -gxjiufa.com -gxjiuxincpa.com -gxjiuyi.com -gxjiuyi99.com -gxjixu.com -gxjiyong.com -gxjiyu.com -gxjjb.com -gxjjfds.com -gxjjfjt.com -gxjjgy.com -gxjjh.com -gxjjyb.com -gxjkamc.com -gxjkhj.com -gxjkjg.com -gxjkjyjc.com -gxjkwy.com -gxjl99.com -gxjla.com -gxjlbw.com -gxjljz.com -gxjlkj.com -gxjlnm.com -gxjlrc.com -gxjlsc.com -gxjm.vip -gxjmggs.com -gxjmxx.com -gxjmxy.com -gxjmzg.com -gxjnbgzx.com -gxjowy.com -gxjpfs.com -gxjpjs.com -gxjpjy.com -gxjptw.com -gxjqgs.com -gxjqt.com -gxjqyy.com -gxjrxy.com -gxjrzl.com -gxjs.net -gxjsd56.com -gxjsfs.com -gxjshu.com -gxjsstjt.com -gxjstkj.com -gxjsws.com -gxjsxny.com -gxjsxszn.com -gxjt.net -gxjt001.com -gxjtaq.com -gxjtjx.com -gxjtkyy.com -gxjtpg.com -gxjtsa.com -gxjtscm.com -gxjtsjy.com -gxjttz.com -gxjttzjt.com -gxjtyab.com -gxjtysxx.com -gxjtzb.com -gxjuancheng.com -gxjub.com -gxjugu.com -gxjuhw.com -gxjunan.com -gxjunding.com -gxjunhe.com -gxjunliang.com -gxjxcloud.com -gxjxsy.com -gxjxwh.com -gxjxzx.net -gxjycjsb.com -gxjyfdc.com -gxjyfkj.com -gxjygljt.com -gxjyh.store -gxjyhb.com -gxjyjs168.com -gxjyjt.com -gxjyjz.com -gxjyxxw.com -gxjyy.com -gxjyzl.com -gxjyzyw.com -gxjz123.com -gxjzcy.com -gxjzdt.com -gxjzht.com -gxjzhxd.com -gxjzj-hotel.com -gxjzj.com -gxjzjc.com -gxjzjl.com -gxjznet.com -gxjzw12315.com -gxjzy.com -gxjzzbdl.com -gxkaifan.com -gxkangtian.com -gxkaoba.com -gxkcjc.com -gxkcmy119.com -gxkdefy.com -gxkdjc.com -gxkdjd.com -gxkdjsq.com -gxkefei.com -gxkehong.com -gxkelite.com -gxkesui.com -gxkfl.com -gxkfy.com -gxkhjt.com -gxkhkj.com -gxkhn.com -gxkhxxcl.com -gxkiwi.com -gxkjd.com -gxkjdns.com -gxkjdsj.com -gxkjec.com -gxkjhb.com -gxkjjt.com -gxkjl.com -gxkjs.com -gxkjzy.com -gxkl.com -gxkld.com -gxklyy.com -gxkmkny.com -gxkongshan.com -gxkorbel.com -gxkqjt.com -gxkqty.com -gxkrqz.com -gxkrui.com -gxkrx.com -gxkrzc.com -gxksdl.com -gxksdt.com -gxksjx.net -gxksxf.com -gxktdl.com -gxktzk.com -gxktzx.com -gxkunzhen.com -gxkxy.net -gxkyjc.com -gxkyxy.com -gxkzxx.com -gxlanbowang.com -gxlanco.com -gxlancogroup.com -gxlanlian.com -gxlansheng.com -gxlbang.com -gxlbbwg.com -gxlbgf.com -gxlbgz.com -gxlbi.com -gxlbsjfh.com -gxlbzszy.com -gxlcclean.com -gxlcgy.com -gxlcjsjt.com -gxlclsyf.com -gxlcpp.com -gxlcwater.com -gxlcxs.com -gxld168.com -gxlddq.com -gxldgjgpj.com -gxldjs.com -gxldled.com -gxldpc.com -gxldzn.com -gxlecheng.com -gxlek.com -gxlelin.com -gxlfzl.com -gxlgwl.com -gxlgxx.com -gxlh168.com -gxlhcx.com -gxlhgjg.com -gxlhhb.com -gxlhjc.com -gxlhxn.com -gxlianci.com -gxliangjian.com -gxliangla.com -gxlianguan.com -gxliangyun.com -gxlianye.com -gxlianying.com -gxlib.com -gxlihua.com -gxlimu.com -gxlinfeng.com -gxliri.com -gxlituo.com -gxliuhang.com -gxliuqiaojidian.com -gxlixin.com -gxliyugs.com -gxljgc.com -gxljh.com -gxljjt.com -gxljjz.com -gxljxs.com -gxlk.net -gxlke.com -gxlkjy.com -gxlkl.net -gxllcb.com -gxllsw888.com -gxllxl.com -gxlmjt.com -gxlmzs.com -gxlongfa.com -gxlonsen.com -gxlove.vip -gxlqgcy.com -gxlqjs.com -gxlqkg.com -gxlqsd.com -gxlryl.com -gxlscf.com -gxlsfy.com -gxlsfz.com -gxlsnm.com -gxlstc.com -gxlswhg.com -gxltbaoan.com -gxlteng.com -gxltgjg.com -gxltjj.com -gxltm.com -gxltmyjt.com -gxltzy.com -gxluhai.com -gxlulian.com -gxluogui.com -gxluyun.com -gxlvjian.com -gxlvtong.com -gxlvwang.com -gxlwdsslgy.com -gxlwlc.com -gxlwt.com -gxlxgg.com -gxlxs2008.com -gxlxs2008.net -gxlxsn.com -gxlxxl.com -gxlxyun.com -gxly66.com -gxlyb.com -gxlycq.com -gxlycs.com -gxlycwb.com -gxlycyxh.com -gxlyghy.com -gxlygyl.com -gxlyhbkj.com -gxlyjt.com -gxlzbbw.com -gxlzck.com -gxlzdyc.com -gxlzgcc.com -gxlzgdjt.com -gxlzhm.com -gxlzlk.com -gxlzpc.com -gxlzsh.com -gxlzsmk.com -gxlztz.com -gxlzwl.com -gxlzxrmyy.com -gxlzxt.com -gxlzzc.com -gxlzzh.net -gxma123.com -gxmacc.com -gxmailu.com -gxmanyy.com -gxmaocai.com -gxmbh.com -gxmbs.com -gxmdgroup.com -gxmdjt.com -gxmeiao.com -gxmeiduo.com -gxmeike.com -gxmetalking.com -gxmggg.com -gxmiao.com -gxmiaoshu.com -gxminglian.com -gxmingshi.com -gxmj.org -gxmjyy.com -gxmjzs.com -gxmk.net -gxmlba.com -gxmlyjy.com -gxmmhgs.com -gxmmkt.com -gxmoking.com -gxmqhb.com -gxmscbs.com -gxmsg.com -gxmsgy.com -gxmtzn1658.com -gxmuch.com -gxmuwmfy.com -gxmuyfy.com -gxmuzi.com -gxmxc.com -gxmxin.com -gxmyjc.com -gxmykj.com -gxmylink.com -gxmytzsn.com -gxmzb.net -gxmzcl.com -gxmzjwy.com -gxmzkj.com -gxmzly.com -gxmznzs.com -gxnantong.com -gxnapd.com -gxnas.com -gxnbjc.com -gxnccq.com -gxncgd.com -gxnctzjt.com -gxndcxswyxgs.com -gxnddq.com -gxndgg.com -gxnewen.com -gxnfxny.com -gxnfyk.com -gxnhjk.com -gxnjqj.com -gxnjsy.com -gxnjy.com -gxnjzj.com -gxnk.com -gxnkjgnc.com -gxnkxjry.com -gxnkyy.com -gxnkyy.net -gxnmkj.com -gxnmzj.com -gxnncj.com -gxnnclt.com -gxnndghb.com -gxnnedu.com -gxnnfx.com -gxnnhexiexinli.com -gxnnhhdzkjyxgs.com -gxnnip.com -gxnnjn.com -gxnnjqgg.com -gxnnjw.com -gxnnkfzx.com -gxnnks.com -gxnnlsz.com -gxnnlyd.com -gxnnmudz.com -gxnnncp.com -gxnnsdyy.com -gxnnsmfbl.com -gxnnsy.com -gxnntfx.com -gxnnthch.com -gxnntn.com -gxnnws.com -gxnnxny.com -gxnnybskq.com -gxnnyihui.com -gxnnyxjx.com -gxnnzj.com -gxnongmu.com -gxnpzbx.com -gxnsjt.com -gxntjz.com -gxnumba.com -gxnun.net -gxnwjt.com -gxnxdb.com -gxnxgd.com -gxnydq.com -gxnymt.com -gxnzjz.com -gxnzzy.com -gxoc168.com -gxoem.com -gxok.com -gxosjc.com -gxota.com -gxota.net -gxoulian.com -gxouwen.com -gxp.cc -gxp2.com -gxpanda.com -gxpangbo.com -gxpbs.com -gxpeh.com -gxpfyy.com -gxpgfood.com -gxpgft.com -gxpggj.com -gxpghj.com -gxphc.com -gxphd.com -gxphj.com -gxpingen.com -gxpinn.com -gxpjzs.com -gxpljt.com -gxpnzp.com -gxpost.com -gxppw.com -gxptids.com -gxptkc.com -gxptyy.com -gxpu.com -gxpuning.com -gxpuyi.com -gxpxdj.com -gxpykj.com -gxqcjs.com -gxqcw.com -gxqddfxf.com -gxqdkj.com -gxqfjzzs.com -gxqgjx.com -gxqgps.com -gxqhcm.com -gxqhjc.com -gxqhtec.com -gxqianhan.com -gxqianrong.com -gxqianshuo.com -gxqianyuan.com -gxqiba.com -gxqihu.com -gxqihuan.com -gxqingchang.com -gxqintang.com -gxqiyang.com -gxqiyuan.com -gxqkcm.com -gxqljt.com -gxqllc.com -gxqmk.com -gxqnjc.com -gxqqxcl.com -gxqrhb.com -gxqrjy.com -gxqrkj.com -gxqs.org -gxqszl.com -gxqtgroup.com -gxqtszxc.com -gxqyjy.com -gxqykj.com -gxqymc.com -gxqymy.com -gxqzdx.com -gxqzez.com -gxqzfz.com -gxqzk.com -gxqzrc.com -gxqzrm.com -gxqztv.com -gxqztz.net -gxqzxjh.com -gxqzxw.com -gxqzxyd.com -gxqzyz.com -gxqzzy.com -gxrasafety.com -gxrayhome.com -gxrc.com -gxrcda.com -gxrcgs.com -gxrcosta.com -gxrcpx.com -gxrcw.com -gxrcyj.com -gxrczc.com -gxrczc.net -gxrdgroup.com -gxrdjy.com -gxrenheng.com -gxrfys.com -gxrgjd.com -gxrgwl.com -gxrhdl.com -gxrijia.com -gxrjf.com -gxrjyy.com -gxrkyy.com -gxrmzs.com -gxrnzb.com -gxroad.com -gxrongpin.com -gxrongwang.com -gxrqsjhz.com -gxrsjc.com -gxrskyy.com -gxrsmllab.com -gxrtbtc.com -gxruiheng.com -gxruipai.com -gxruizhen.com -gxrunteng.com -gxrxdt.com -gxrxsy.com -gxrxsyjz.com -gxrygc.com -gxrzd.com -gxrzgczx.com -gxsad.net -gxsag.com -gxsailian.com -gxsanchuan.com -gxsanleng.com -gxsanli.com -gxsanyo.com -gxsbcj.com -gxsbfdc.com -gxsbzz.com -gxsc88.com -gxscbxg.com -gxsccl.com -gxscjn.com -gxscjx.com -gxsckj.net -gxscq.com -gxscse.com -gxscsw.com -gxscyg.com -gxsd.net -gxsdem.com -gxsdpx.com -gxsdy.com -gxseal.com -gxsejy.com -gxsell.com -gxsenge.net -gxsenhao.com -gxsenzhou.com -gxsfcm.com -gxsfht.com -gxsfjd.com -gxsgcgpt.com -gxsgip.com -gxsgys.com -gxshangbeng.com -gxshangjia.com -gxshanglong.com -gxshangyou.com -gxshanyixing.com -gxshbs.com -gxshck.com -gxshdl.com -gxshebei.com -gxshenglu.com -gxshengwei.com -gxshenyi.com -gxshgk.com -gxshile.com -gxshiteng.com -gxshixinde.com -gxshizhi.com -gxshjy.com -gxshjz.com -gxshny.com -gxshoufeng.com -gxshouji.com -gxshtf.com -gxshua.com -gxshuairun.com -gxshudao.com -gxshuibao.com -gxshuixie.com -gxshunxiu.com -gxshxc.com -gxshxf.com -gxshxlpx.com -gxshyy.com -gxshz01.com -gxshzyzs.com -gxsika.com -gxsilk.com -gxsjc.com -gxsjgs.com -gxsjmilk.com -gxsjmy.com -gxsjsd.com -gxsjtz.com -gxsjwh.com -gxskf.com -gxsksw.com -gxsksy.com -gxsl.com -gxslbj.com -gxslcc.com -gxslyj.com -gxslyy.com -gxsme.net -gxsmkt.com -gxsngc.com -gxsntp.com -gxsnzw.com -gxspas.com -gxspri.com -gxsrkj.com -gxsrtz.com -gxsrwl.com -gxsrxlzxyxzrgs.com -gxssmg.com -gxssrs.com -gxstarship.com -gxstd.com -gxsthb.com -gxsthnt.com -gxstkw.com -gxstzx.com -gxsubat.com -gxsuda.com -gxsunwin.com -gxsut.com -gxsuyun.com -gxswgd.com -gxswsw.com -gxswzps.com -gxsxbj.com -gxsxhw.com -gxsy.org -gxsycpa.com -gxsydg.com -gxsygg.com -gxsyh.com -gxsyzs.com -gxszf.net -gxszgp.com -gxszjf.com -gxszjk.com -gxszyy.com -gxtagrm.com -gxtaiping.com -gxtaishi.com -gxtaiyinuo.com -gxtalc.com -gxtangmi.com -gxtcdpp.com -gxtckj.com -gxtcq.com -gxtcsys.com -gxtdg.com -gxtenger.com -gxtengsong.com -gxtesjy.com -gxtf108.com -gxtfgg.com -gxtfmy.com -gxtfxx.com -gxthcpa.com -gxthxxkj.com -gxthyy.com -gxtianlan.com -gxtianmiao.com -gxtianpin.com -gxticket.com -gxtizi.com -gxtjddc.com -gxtjksj.com -gxtjsnzg.com -gxtk.com -gxtkzx.com -gxtlgd.com -gxtljnhb.com -gxtltzjt.com -gxtmh.com -gxtmhzx.com -gxtmrs.com -gxtmsy.com -gxtodo.com -gxtonghui.com -gxtongji.com -gxtongtai.com -gxtongzhu.com -gxtopart.com -gxtp2021.com -gxtrwhy.com -gxtskq.com -gxtslr.com -gxttcc.com -gxttjs.com -gxttjt.com -gxtuanyuan.com -gxtuipin.com -gxtuliao.com -gxtuoen.com -gxtuoyi.com -gxtuscity.com -gxtxjk.com -gxtxpec.com -gxty.com -gxty.ltd -gxtydt.com -gxtydzqy.com -gxtyjc.com -gxtykj.com -gxtyw.com -gxtywj.com -gxtyymxcgs.com -gxtzh.net -gxtznn.com -gxtzpx.com -gxtztech.com -gxucreate.com -gxue.net -gxufl.com -gxufz.com -gxuit.com -gxumi.com -gxupdi.com -gxups.com -gxuzf.com -gxvideo.net -gxvolardda.com -gxwanchao.com -gxwanchuan.com -gxwanchun.com -gxwbl.com -gxwcll.com -gxwcwl.com -gxwdgg.com -gxwdjt.com -gxwdtech.com -gxweibo.net -gxweipeng.com -gxweite.com -gxwellsun.com -gxwenlian.com -gxwenyutech.com -gxwgdq.com -gxwgjf.com -gxwhsy.com -gxwhwy.com -gxwjkj.com -gxwjs.com -gxwjwswkj118.com -gxwjxl.com -gxwjxsbcj.com -gxwjyllh.com -gxwkhb.com -gxwkxcl.com -gxwmj168.com -gxwmpco.com -gxwofi.com -gxwogan.com -gxwohua.com -gxwoqi.com -gxwqwh.com -gxwskq.com -gxwsxt.com -gxwtai.com -gxwtba.com -gxwtrlzy.com -gxwtt.com -gxwtzy.com -gxwudun.com -gxwuyan.com -gxwuzi.com -gxwx.com -gxwxbjsy.com -gxwxjy.com -gxwxjz.com -gxwxtyn.com -gxwzgroup.com -gxwzhh.co -gxwzj.com -gxwzjt.com -gxwzjx.com -gxwzlhh.com -gxwzsz.com -gxwztv.com -gxwzxhyq.com -gxwzyl.com -gxxbx.com -gxxbysy.com -gxxbzm.com -gxxdbp.com -gxxdit.com -gxxdpc.com -gxxdzx.com -gxxfbfg.com -gxxfgg.com -gxxfky.com -gxxfsl.com -gxxfz.com -gxxgg.com -gxxgle.com -gxxgpower.com -gxxgrj.com -gxxgty.com -gxxh58.com -gxxhb.com -gxxhgj.com -gxxhgroup.com -gxxhgs.com -gxxhn.com -gxxhsd.com -gxxhtax.com -gxxhtsj.com -gxxhtx.com -gxxhtzp.com -gxxhz.com -gxxhzp.com -gxxiangxing.com -gxxiangyi88.com -gxxiaofu.com -gxxiaolong.net -gxxielang.com -gxxijiang.com -gxxilin.com -gxxin.com -gxxinchai.com -gxxingfu.com -gxxingxing.com -gxxingyao.com -gxxinhui.com -gxxinrui.net -gxxinxiang.com -gxxinye.com -gxxinyi.com -gxxinzhihai.com -gxxiyuanep.com -gxxjchem.com -gxxjcz.com -gxxjry.com -gxxjsy.com -gxxkai.com -gxxkgs.com -gxxkhj.com -gxxkslgy.com -gxxldl.com -gxxlhkj.com -gxxlk.com -gxxlkj.com -gxxls.com -gxxlyc.com -gxxlzxs.com -gxxlzyc.com -gxxmglzx.com -gxxmjjs.com -gxxmyjs.com -gxxndz.com -gxxpgd.com -gxxqsm.com -gxxrf.com -gxxrwl.com -gxxrxmgl.com -gxxrzb.com -gxxstz.com -gxxsy.com -gxxszx.com -gxxszy.net -gxxtlq.com -gxxtzg.com -gxxundongtech.com -gxxuyang.com -gxxw.com -gxxwjs.net -gxxy.online -gxxydhb.com -gxxyh.net -gxxyhwhcb.com -gxxyrbc.com -gxxyybc.com -gxxyydl.com -gxxyzx.com -gxxzbjy.com -gxxzbzh.com -gxxzlx.com -gxxztcm.com -gxxzwd.com -gxyaan.tech -gxyali.com -gxyanggong.com -gxyasuoji.com -gxybsw.com -gxybyy.com -gxyc.net -gxycjy.com -gxycwh.com -gxycwy.com -gxycykj.com -gxycysw.com -gxyd.com -gxydbg.com -gxydbgjj.com -gxyddyf.com -gxydeye.com -gxydfs.com -gxydh.com -gxydn.com -gxydsc.com -gxydspm.com -gxydtaxi.com -gxydxf.com -gxyefang.com -gxyesf.com -gxyete.com -gxyfck.com -gxyfkj.com -gxyfm.com -gxyfxc.com -gxyglw.com -gxygys.com -gxyhdq.com -gxyhgcjcxxw.com -gxyhjgjt.com -gxyhjt.com -gxyhkaolin.com -gxyhmy.net -gxyhtz.com -gxyhxx.com -gxyicheng.com -gxyidao.com -gxyide.com -gxyih.com -gxyingchuang.com -gxyingdi.com -gxyinglun.com -gxyingyue.com -gxyinniyuan.com -gxyintian.com -gxyinyulanyingguigang.com -gxyixin.com -gxyiz.com -gxyj.com -gxyjcy.com -gxyjdc.com -gxyjhb.com -gxyjjz.com -gxyjmc.com -gxyjzx.com -gxykjd.com -gxylct.com -gxyldfyy.com -gxylgyx.com -gxylink.com -gxyljf.com -gxyllc.com -gxylms.com -gxylnews.com -gxyls.com -gxylsjsp.com -gxylswkj.com -gxympay.com -gxynjx.com -gxynlts.com -gxyoj.com -gxyongjiehb.com -gxyongsheng.com -gxyongzhitai.com -gxyos.com -gxypdc.com -gxypjy.com -gxypnh.com -gxyqjc.com -gxysbt.com -gxysbz.com -gxysccsh.com -gxyskz.com -gxyslkj.com -gxysqj.com -gxyss.com -gxytdyf.com -gxytgc.com -gxytk.com -gxytsy.com -gxytzx.com -gxyuanan.com -gxyuanfeng.com -gxyuansheng.com -gxyuanyun.com -gxyuchuan.com -gxyunhua.com -gxyunsen.com -gxyunsheng.com -gxyunxiang.com -gxyuqiaoshiye.com -gxyushengwenhua.com -gxyushuo.com -gxyuyun.com -gxyx168.com -gxyx1688.com -gxyxdl.com -gxyxjt.com -gxyxlx.com -gxyxsh.com -gxyxtkj.com -gxyxyy.com -gxyy.net -gxyykj.com -gxyyun.com -gxyyyc.com -gxyyzwy.com -gxyz120.com -gxyzems.com -gxyzh.com -gxyzhhb.com -gxyzjc.com -gxyzrmyy.com -gxyzt.com -gxyzxf119.com -gxyzyy.com -gxzanwen.com -gxzbfm.com -gxzbkj.com -gxzbzh.com -gxzc888.com -gxzcab.com -gxzcfd.com -gxzchz.com -gxzcjh.com -gxzckj.com -gxzclq.com -gxzcpsw.com -gxzcs.com -gxzdsj.com -gxzdyg.com -gxzecai.com -gxzepu.com -gxzero.com -gxzfjg.com -gxzfnz.com -gxzfqj.com -gxzfzx.com -gxzfzy.com -gxzgdl.com -gxzghsp.com -gxzgsy.com -gxzgt.com -gxzgtz.com -gxzh.ltd -gxzh666.com -gxzhdq.com -gxzhenghua.com -gxzhenhang.com -gxzhentao.com -gxzhgz.com -gxzhicui.com -gxzhihui.com -gxzhisai.com -gxzhixing.com -gxzhiyuanxing.com -gxzhizhi.com -gxzhjj.com -gxzhkj.com -gxzhlw.com -gxzhnm.com -gxzhongshui.com -gxzhongta.com -gxzhongzhai.com -gxzhp.com -gxzhpm.com -gxzhshxx.com -gxzhunchengbg.com -gxzhzb.com -gxzhzy.com -gxziheng.com -gxzj-metal.com -gxzjjs.com -gxzjjtgs.com -gxzjy.com -gxzkl.com -gxzky.com -gxzkzs.com -gxzlcs.com -gxzldt.com -gxzljt.com -gxzljx.net -gxzlnm.com -gxzls.com -gxzlsb.net -gxzm.vip -gxzmjg.com -gxzmlm.com -gxzmrl.com -gxzmtech.com -gxzmzz.com -gxznym.com -gxzongjun.com -gxzoxn.com -gxzpjx.com -gxzpw.org -gxzrdk.com -gxzrjc.com -gxzrxf.com -gxzscloud.com -gxzsgl.com -gxzsjzsj.com -gxzslfz.com -gxzsnm.com -gxzspg.com -gxzssmart.com -gxzstsg.com -gxzstzjtgs.com -gxzsyy.com -gxzszw.com -gxzt.com -gxzt148.com -gxzt99.com -gxztbf.com -gxztzs.com -gxzunx.com -gxzuojiang.com -gxzwhw.com -gxzwjt.com -gxzwxx.com -gxzxgl.com -gxzxht.com -gxzxmy.net -gxzxrh.com -gxzy.com -gxzydl.com -gxzyfs.com -gxzygygs.com -gxzyhb.com -gxzyjl.com -gxzyjsgc.com -gxzyky.com -gxzymodel.com -gxzypg.com -gxzyt.net -gxzytx.com -gxzyxysy.com -gxzyyt.com -gxzyzb.com -gxzzcpa.com -gxzzd.com -gxzztkj.com -gxzzxin.com -gy-ggy.com -gy120.net -gy1688led.com -gy2025.com -gy328.com -gy3y.com -gy794c.com -gy7n.com -gy818.com -gyaqyy.com -gyb086.com -gybcq.com -gybsn.com -gybyscy.com -gycharm.com -gycode.com -gydfsy.com -gydongli.com -gyedu.net -gyersf.com -gyfensuiji.com -gyfwyy.com -gyfyy.com -gygmhs.com -gyhapp.com -gyhb68.com -gyhdsj.com -gyhht.com -gyhimalayanul.com -gyhj.org -gyhm.cc -gyidc.net -gyii.com -gyip.net -gyjc88.com -gyjdgs.com -gyjiangyuan.com -gyjs.net -gykgcqtm.com -gykggz.com -gykghb.com -gykgsx.com -gykqyy.com -gylcxo.xyz -gyljc.com -gylwgjsyxx.com -gylwyy.com -gylxq.com -gym0boy.com -gymama.com -gymbo-online.com -gymsj.com -gymxbl.com -gymy.cc -gyncb.net -gynsh.net -gynyzp.com -gyouapp.com -gypmsl.com -gypserver.com -gypump.com -gypzkat.com -gyqcw.com -gyqqd.com -gyqrmyy.com -gyr.cc -gyrcw.com -gyrmyy.com -gyrqfd.com -gyrsy.com -gyscw.com -gysdzy.com -gyseals.com -gyshwl.online -gysk.com -gysou.com -gysq.org -gysrmyy.com -gystarch.com -gystars.com -gystatic.com -gystc.com -gyswzys.com -gytcwb.com -gytsg.net -gytxnc.com -gytzkg.com -gyuancdn.com -gyurt.com -gywlhypt.com -gywxedu.com -gywygl.com -gyxdkjdl.com -gyxtyy.com -gyxuan.com -gyxww.net -gyxx.com -gyxx365.com -gyyb.com -gyycc.com -gyypw.com -gyyuli.com -gyyywcpx.com -gyzdh.com -gyzdkq.com -gyzfbz.net -gyzhtc.com -gyzsgd.com -gz-begreen.com -gz-best.com -gz-chantou.com -gz-chengkao.com -gz-cjjl.com -gz-cmc.com -gz-cube.com -gz-ejoy.com -gz-goam.com -gz-gree.com -gz-haohushan.com -gz-hipower.com -gz-huayuan.com -gz-hz.com -gz-julong.com -gz-junan.com -gz-lodihair.com -gz-ltjx.com -gz-mrt.com -gz-notary.com -gz-shanguang.com -gz-spi.com -gz-tencentclb.cloud -gz-tencentclb.com -gz-tencentclb.net -gz-tencentclb.work -gz-wx.com -gz-xinghe.com -gz-xinyu.com -gz-xt.com -gz-zhongshang.com -gz.com -gz007.net -gz0668.com -gz111.com -gz121.com -gz12301.com -gz162.com -gz1hua.com -gz300.com -gz304.com -gz360.com -gz4399.com -gz4u.net -gz528.com -gz583.com -gz91.com -gzac.org -gzanquan.com -gzap.net -gzaptech.net -gzasp.net -gzate.com -gzautojet.com -gzbaozhilin.com -gzbawei.com -gzbeaton.com -gzbic.com -gzbiogene.com -gzbl.com -gzblssly.com -gzboji.com -gzbookcenter.com -gzbt020.com -gzbus.com -gzbxyy120.com -gzbycq.com -gzbyyy.com -gzbzsport.com -gzbzx.net -gzcablec.com -gzcancer.com -gzcars.net -gzccb.com -gzccigroup.com -gzccvs.com -gzceia.com -gzch120.com -gzch12333.com -gzchangke.com -gzchangzhe.com -gzchenggeng.com -gzchj.net -gzchts.com -gzchuanghe.com -gzchupai.com -gzci.net -gzcihui.com -gzcjjs.com -gzcmer.com -gzcmjl.com -gzcn.net -gzcots.com -gzcppa.com -gzcqs.com -gzcrdzbk.com -gzcsgs.com -gzcsjg.com -gzcxhd.com -gzcxlm.org -gzcycling.com -gzczjd.com -gzdahyxh.com -gzdai.com -gzdaily.com -gzdangaopeixun.com -gzdaochen.com -gzdaqi.com -gzdata.net -gzdayue.com -gzdbx.com -gzdcsmt.com -gzdensity.com -gzdi.com -gzdia.com -gzdingan.com -gzdingjie.com -gzdingyu.com -gzdingyue.com -gzdingyun.com -gzdisheng.com -gzdjy.org -gzdli.com -gzdqyy.com -gzdryy.com -gzdsw.com -gzdtg.com -gzduguo.com -gzdysx.com -gzebpubservice.com -gzedu.com -gzeic.com -gzenxx.com -gzeryun.com -gzexpo.com -gzfc.net -gzfenda.com -gzfengmao.com -gzfezx.com -gzfgxh.com -gzfi.com -gzfin.com -gzfirst.com -gzfisher.com -gzfk01.com -gzfodak.com -gzforge.com -gzfpa.net -gzfqyy.com -gzfrldz.com -gzfsnet.com -gzfuk.net -gzgajy.com -gzgas.com -gzgayy.com -gzgccs.com -gzgccxkj.com -gzgcg.com -gzgdkq.com -gzgdwl.com -gzgelandi.com -gzghic.com -gzghyy.com -gzgj.net -gzgjcm.com -gzgjxny.com -gzglgcjt.com -gzgljx.com -gzgmjcx.com -gzgongsizhuce.com -gzguangjia.com -gzguidian.com -gzgx020.com -gzgxysjx.com -gzgyetc.com -gzh6.com -gzhaigu.com -gzhakj.com -gzhand.com -gzhangcha.com -gzhatao.com -gzhbchy.com -gzhc365.com -gzhclw.com -gzhcpcb.com -gzhd.net -gzhd56.com -gzhdcs.com -gzhe.net -gzhengdian.com -gzhengdou.com -gzhfschool.com -gzhifi.com -gzhkl.com -gzhkzyyy.com -gzhm.com -gzhntec.com -gzhornet.com -gzhotelgroup.com -gzhpaier.com -gzhpgroup.com -gzhphb.com -gzhpyy.com -gzhpzz.net -gzhrsa.org -gzhsh.com -gzhstars.net -gzhtdz.com -gzhtinfo.com -gzhttp.com -gzhuake.cc -gzhuamei.net -gzhuayan.com -gzhuiwan.com -gzhuiyk.com -gzhuiyun.com -gzhwgg.com -gzhwsp.com -gzhx04.com -gzhx09.com -gzhx10.com -gzhxaq.com -gzhxyyhos.com -gzhygk.com -gzhysy.com -gzhzcj.com -gzidc.com -gziec.net -gzitvs.com -gzitwm.net -gzj568.com -gzjbjx.com -gzjbwm.com -gzjc2016.com -gzjeeseng.com -gzjgpy.com -gzjhotel.com -gzjiada.com -gzjiaw.com -gzjiehun.com -gzjiema.com -gzjingsha.com -gzjinsong.com -gzjiunuo.com -gzjizhong.com -gzjk120.com -gzjkfk.com -gzjkfund.com -gzjkjl.com -gzjkqh.com -gzjkyljt.com -gzjlp.com -gzjlwl.com -gzjlwy.com -gzjlxh.com -gzjmyy.com -gzjob.net -gzjpad.com -gzjqd.com -gzjrkg.com -gzjs020.com -gzjsxh.com -gzjt.cc -gzjtch.com -gzjtjx.com -gzjtjy.com -gzjtxh.com -gzjtxx.net -gzjtzy.net -gzjunbo.net -gzjunyu.com -gzjuqi.com -gzjvcom.com -gzjxchem.com -gzjykj.com -gzjyme.com -gzjyypt.com -gzjz-auto.com -gzjzc.com -gzkaiheng.com -gzkaiyue.com -gzkangyuan.com -gzkcsj.com -gzkcsjw.com -gzking.com -gzkint.com -gzkmbg.com -gzkofa.com -gzktm.com -gzkunmao.com -gzkydzyyy.com -gzkz88.com -gzlarc.com -gzlawyer.org -gzlex.com -gzlgsyxx.com -gzli.com -gzliancun.com -gzlib.org -gzlig.com -gzlight.com -gzliyuanhb.com -gzljsl.com -gzlnholdings.com -gzlsgy.com -gzlt.net -gzlujiao.com -gzlushun56.com -gzlutong.com -gzluxlife.com -gzlwrc.com -gzlwycft-tencentclb.cloud -gzlwycft-tencentclb.com -gzlwycft-tencentclb.net -gzlwycft-tencentclb.work -gzlyhlawyer.com -gzlz307.com -gzlzfm.com -gzm1.com -gzmama.com -gzmath.com -gzmc668.com -gzmcg.com -gzmcgjcpt.com -gzmediaclick.com -gzmedri.com -gzmeichang.com -gzmiden.com -gzminjia.com -gzmiyuan.com -gzmlfcyy.com -gzmofa.com -gzmould.com -gzmpc.com -gzmri.com -gzmstech.com -gzmtr.com -gzmtrticket.com -gzmylike.com -gzmzedu.com -gznaturn.com -gznbsyy.com -gzncstudios.com -gznemo.com -gznf.net -gznftz.com -gzngn.com -gznict.com -gznotes.com -gznw.com -gznxbank.com -gznyjj.com -gznypfk.com -gzocl.com -gzomick.com -gzopen-tencentclb.cloud -gzopen-tencentclb.com -gzopen-tencentclb.net -gzopen-tencentclb.work -gzoyrr.com -gzpaco.com -gzpeite.com -gzpeiyou.com -gzpfs.com -gzpg.net -gzpgroup.com -gzpgs.com -gzph.net -gzpma.com -gzpoint.com -gzpotent.com -gzppa.org -gzprg.com -gzprobig.com -gzpy120.net -gzpydlc.com -gzpyxz.net -gzqbd.com -gzqiche.com -gzqixun-tech.com -gzqljxd.com -gzqsts.com -gzqunsheng.com -gzqygl.com -gzqz.com -gzrand.com -gzrandr.com -gzrch.com -gzrcqf.com -gzrecruit.com -gzredpine.com -gzrh.com -gzrishun.com -gzrkt.com -gzrobot.com -gzrobots.com -gzrqhyxh.com -gzrrj.com -gzrskh.com -gzrsksxxw.com -gzrtnet.com -gzrycl.com -gzsaf.com -gzsbdq.com -gzscbio.com -gzschknyy.com -gzscjrh.com -gzsdwrmyy.com -gzselon.com -gzsenergy.com -gzsenzheng.com -gzsewage.com -gzsg.org -gzsgczb.com -gzshaudio.com -gzsheraton.com -gzshiran.com -gzshuangbao.com -gzshuimh.com -gzshujuhui.com -gzshyk.com -gzsiyuan.com -gzsj.live -gzsjgxcl.com -gzsjjs.com -gzsjyzx.com -gzsjzzsxh.com -gzskysoil.com -gzslyy.com -gzsonic.com -gzsouth.com -gzspm.com -gzspring.com -gzspt.com -gzsq.com -gzsqkfyy.com -gzsqmxx.com -gzsrmyy.com -gzsrunda.com -gzssjfs.com -gzssltzinc.com -gzssnzx.com -gzssyyy.com -gzstarship.com -gzsttc.com -gzstv.com -gzstw.com -gzstyq.com -gzsu.net -gzsuic.com -gzsuike.com -gzsums.net -gzsunny.com -gzsw168.com -gzswgf.com -gzswjs.com -gzsxds.com -gzsyyxh.com -gzszfgjj.com -gzszgas.com -gzszgyjt.com -gzszjl.com -gzszsj.com -gzszyy.com -gztaiyou.com -gztalx.com -gztamude.com -gztcdj.com -gztcm3.com -gztea.vip -gzteacher.com -gztextiles.com -gztfgame.com -gzthfy.com -gzthrc.com -gztig.com -gztime.cc -gztit.com -gztlgc.com -gztopkt.com -gztoptour.com -gztotem.com -gztowngas.com -gztrseo.com -gztszl.com -gzttjt.com -gztv.com -gztvu.com -gztwkadokawa.com -gztxcw.com -gztxedu.com -gztxfood.com -gztyjx.com -gztyre.com -gztyyedu.com -gztz.org -gztz120.com -gzu521.net -gzuc.net -gzuci.com -gzucm-yhyy.com -gzuni.com -gzupdc.com -gzv6.com -gzvstc.net -gzw.net -gzwanbao.com -gzwanju.com -gzwanzhou.com -gzwarriortech.com -gzwaterinvest.com -gzwatersupply.com -gzwcfjd.com -gzwcit.com -gzwcjs.com -gzweicai.com -gzweix.com -gzwhir.com -gzwjnt.com -gzwlcyjt.com -gzwonbo.com -gzwrit.com -gzwrjt.com -gzwshd.com -gzwswjc.com -gzwtqx.com -gzwxzf-tencentclb.cloud -gzwxzf-tencentclb.com -gzwxzf-tencentclb.net -gzwxzf-tencentclb.work -gzwynet.com -gzwzhw.com -gzxdd.com -gzxdf.com -gzxdzlyy.com -gzxf35.com -gzxhcbfx.com -gzxhce.com -gzxhhs.net -gzxianc.com -gzxiaoban.com -gzxict.com -gzxijiu.com -gzxinfo.com -gzxjgc.com -gzxrsqj.com -gzxswh.com -gzxsyy.com -gzxszf.com -gzxue.com -gzxulang.com -gzxwtjy.com -gzxxm.com -gzxxtiyu.com -gzxy.net -gzxyh.com -gzxyprint.com -gzxzjy.com -gzyajs.com -gzyangai.com -gzybao.com -gzycdy.com -gzych.vip -gzycsjgs.com -gzyct.com -gzydnewmaterial.com -gzydong.com -gzydwh.com -gzyfjsjt.com -gzyflw.com -gzyhg.vip -gzyiagu.com -gzyilongprinting.com -gzyitsy.com -gzylhyzx.com -gzyouai.com -gzyowin.com -gzyqtlxs.com -gzyqwl.net -gzysnkyy.com -gzytgf.com -gzyucai.com -gzyucai.net -gzyxedu.net -gzyxls.com -gzyxtech.com -gzyycg.com -gzyyjt.net -gzyyma.com -gzyytj.com -gzyywz.net -gzyz699.com -gzzarts.com -gzzbdl.com -gzzc-logistics.com -gzzcs.com -gzzdgg.com -gzzdkg.com -gzzdqy.net -gzzfrl.com -gzzgresin.com -gzzhanmei.com -gzzhitu.com -gzzhixin.com -gzzhrong.com -gzzjgf.com -gzzjtx.com -gzzkjc.net -gzzkzj.com -gzzkzsw.com -gzzldq.com -gzzlfw.com -gzzliot.com -gzzmedu.com -gzzoc.com -gzzongsi.com -gzzoo.com -gzzqy.net -gzzrdc007.com -gzzulin.com -gzzwis.com -gzzx.cc -h-ceo.com -h-college.com -h-diode.com -h-heguo.com -h-partners.com -h-shgroup.com -h-ui.net -h-world.com -h-zl.net -h0588.com -h0591.com -h0758.net -h12.net -h12345.com -h128.com -h13.mobi -h14z.com -h2-bank.com -h2fc.net -h2gl.com -h2o-china.com -h2os.com -h2vm.com -h2weilai.com -h389.com -h3c.com -h3c.com.hk -h3cfuwuqi.com -h3dns.net -h3ue2s.com -h3wog.com -h3yun.com -h4088.com -h4k5.com -h4sud3rr4pmu.com -h5-share.com -h5-x.com -h5-yes.com -h5.net -h51h.com -h554.com -h55u.com -h576.com -h5abc.com -h5anli.com -h5app.com -h5avu.com -h5cn.com -h5data.com -h5designer.com -h5ds.com -h5eco.com -h5faner.com -h5gamecdn.club -h5gd.com -h5gdsvip.com -h5gdvip.com -h5in.net -h5jun.com -h5king.com -h5kuai.com -h5ky.com -h5le.com -h5ma.com -h5mc.com -h5mgd.com -h5mo.com -h5mota.com -h5mugeda.com -h5no1.com -h5pack.com -h5po.com -h5shuo.com -h5taotao.com -h5tpl.com -h5uc.com -h5util.com -h5video.shop -h5wap.com -h5war.com -h5youxi.com -h5yunban.com -h5zhifu.com -h61889.com -h6969.com -h6app.com -h6room.com -h6ru.net -h7ec.com -h7fpuyk8.com -h803w.com -h863.com -h99998888.com -h99999999.com -ha-airport.com -ha47.net -ha95158.com -ha97.com -haawking.com -habadog.com -habbygames.com -habctv.com -habwjc.com -hach-hanna.com -hachicnc.com -hacjkq.com -hack0nair.me -hack50.com -hack520.com -hack58.com -hack6.com -hack99.com -hackav.com -hacker5t2ohub.com -hackerav.com -hackernews.cc -hackhome.com -hackhp.com -hackhw.com -hacking-linux.com -hackinn.com -hackjie.com -hacknical.com -hackp.com -hackpascal.net -hackrf.net -hackroad.com -hackyh.com -hacori.com -hacpai.com -haczjob.com -hadax.com -hadewu.com -hadobi.com -hadsky.com -haers.com -haersgroup.com -haeye.net -hafei.com -hafuyoufk.com -hagaozhong.com -hagibis.com -haguan.com -haguworld.com -haha168.com -haha33.com -haha360.com -haha365.com -haha9911.com -hahack.com -hahaertong.com -hahait.com -hahajing.com -hahasou.com -hahasz.com -hahaurl.com -hahawen.com -hahayouxi.com -hahazhao.com -hahon.com -hahour.com -hai-jiang.com -hai.pet -hai360.com -haianbank.com -haianbm.com -haianedu.net -haianw.com -haianyaoye.com -haianzhuangshi.com -haibao.com -haibaobaoxian.com -haibaofoods.com -haibaoptech.com -haibaoyl.com -haibaoyouxi.com -haibeinews.com -haibeishangmao.com -haibian.com -haibowh.com -haiboyi.com -haica.cc -haicent.com -haichangchina.com -haichangoceanpark.com -haichen-logistics.com -haichuang3d.com -haichufang.com -haici.com -haicj.com -haicnh.com -haicoder.net -haidaibao.com -haidaike.com -haidaoteam.com -haidaotrip.com -haidaozhu.com -haidegroup.com -haidian-marathon.com -haidii.com -haidilao.com -haidilao.net -haidilao.us -haidubooks.com -haidutouzi.net -haier-ioc.com -haier.com -haier.hk -haier.net -haiercash.com -haierfinancial.com -haiermoney.com -haiershequ.com -haiershui.com -haiersmarthomes.com -haierubic.com -haieruplus.com -haifangbest.com -haifanwu.com -haifuhospital.com -haige.com -haigeek.com -haigeer.com -haigehome.com -haigoose.com -haigouyan.com -haigugroup.com -haigui001.com -haihepharma.com -haihetour.com -haihuainternational.com -haihub.co -haihuishou.com -haiintelligent.com -haijia.org -haijianchuxing.com -haijianstock.com -haijiaonet.com -haijiaoshi.com -haijiasu.com -haijizq.com -haijob.com -haijt.com -haijudoc.com -haijunda.com -haikegroup.com -haikejin.com -haikele.com -haikeoutdoor.com -haiketrip.com -haikouvw.com -haikouwater.com -hailanchem.com -hailanggroup.com -hailea.com -hailiang.com -hailiangbio.com -hailiangedu.com -hailiangip.com -hailiangstock.com -hailiangxinxi.com -hailichemical.com -hailidoctor.com -haililiang.com -hailin.com -hailongfoods.com -hailouw.com -hailunpiano.com -hailuoai.com -hailuowu.com -haima.com -haima.me -haima001.com -haimacloud.com -haimaiyun.com -haiman.io -haimaoji.com -haimawan.com -haimeng01.com -haimi.com -haimian.com -haimin.net -haimini.com -haimosic.com -haina.com -haina.net -hainajc.com -hainan.com -hainan.net -hainan0898.net -hainanairlines.com -hainancom.com -hainancp.com -hainandc.com -hainanfp.com -hainanfz.com -hainanjiuzi.com -hainanjk.com -hainanlawyer.org -hainanlecheng.com -hainanruiyuan.com -hainanwangdai.com -hainanyouxi.com -hainanyumu.com -hainanzuojia.com -hainawater.com -hainayun.net -hainiaowo.com -hainic.com -haining.com -haining.tv -hainingnews.net -hainiubl.com -hainiugo.com -hainiuxy.com -hainuotech.com -haipal.com -haipengtoy.com -haipinggroup.com -haipuzhiwu.com -haiqianghm.com -haiqingyanyu.com -haiqisoft.com -haiqq.com -haiqu.vip -hair43.com -hair8.net -hairbobo.com -hairboxonline.com -hairenren.com -hairongsw.com -hairuichem.com -hairuituo.com -hairunce.com -hairunmedia.com -hairunpictures.com -hairxmf.com -hairycrabs.com -haisco.com -haisenyouxi8.com -haishengfrp.com -haishensl.com -haishiyiliao.com -haishui.cc -haishun.com -haishunpackaging.com -haishuokj.com -haishuu.com -haisongta.com -haita.io -haitaibrowser.com -haitaichina.com -haitakuajing.com -haitangmm.com -haitangw.cc -haitangw.net -haitao.co -haitaohub.com -haitaoj.com -haitaolab.com -haitaoqq.com -haitaotong.com -haitaozu.org -haitian-food.com -haitian-group.com -haitian.com -haitiangroup.com -haitianhome.com -haitianpm.com -haitianshuiwu.com -haitl.com -haitong.com -haitongjiaoyu.com -haitou.cc -haitou360.com -haitoujia.com -haituie.com -haitunshenghuo.com -haitunvoice.com -haitunwallet.com -haitunzhibo.com -haitunzhidao.com -haitunzixi.com -haituoqi.com -haitutech.com -haiwaicat.com -haiwaichongzhi.com -haiwaihuafei.com -haiwaimoney.com -haiwaioo.com -haiwaiyou.com -haiwaiyoujia.com -haiwangbuyu.com -haiwanxinxi.com -haiwd.com -haiwei-tech.com -haiweili.com -haiwell.com -haiwen-law.com -haiwenky.com -haiwu.com -haixiachina.com -haixiahuagong.com -haixiangkuajing.com -haixin.com -haixin5.com -haixindichan.com -haixinews.com -haixing6.com -haixingbangfu.com -haixingcloud.com -haixinhui.com -haixinpatent.com -haixiulive.com -haixiumv.com -haixiutv.com -haixiuvv.com -haixuan.com -haixue.com -haixuemeili.com -haixuyun.com -haiyang-group.com -haiyang.net -haiyi701.com -haiyiai.tech -haiyingmt.com -haiyingshuju.com -haiyisoft-gz.com -haiyisoft.com -haiymobi.com -haiyong.site -haiyuangabion.com -haiyuangabiou.com -haiyuetechltd.com -haiyun.me -haizhanweb.com -haizhenzhu.com -haizhikj.com -haizhlink.com -haizhoumo.com -haizhu.vip -haizhuyx.com -haizitong.com -haiziwang.com -haizol.com -hajt-cn.com -haju.com -hajw.com -hajzhyxh.com -hakaimg.com -hakchina.com -hakczz.com -hakfqyy.com -hakonespring.com -halade.com -halcyonz.com -halead.com -halfrost.com -halfsug.com -haligame.com -halihali9.com -halixun.com -haljl.com -halloar.com -hallofix.com -halobear.com -halomobi.com -halsplastics.com -haluan2u.com -haluoha.com -haluolinks.com -halvie.com -ham.xin -hamdl.com -hamedal.com -haminol.com -hammypuff.com -hamu.site -hanabi-live.com -hanamichi.wiki -hanas.com -hanascitygas.com -hanbi.live -hanbige.com -hanboshi.com -hanbridge.org -hanchacha.com -hanchao9999.com -hancibao.com -hancloud.com -hanclouds.com -hand-china.com -handanhuizhong.com -handanjob.com -handanyz.com -handcn.com -handday.com -handelic.com -handelsen.com -handern.com -handisele.com -handone.com -handongkj.com -handongruanjian.com -handpk.com -handsfree.work -handu.com -handuyishe.com -handyfriendship.com -hanergy.com -hanex.cc -hanfakg.com -hanfan.cc -hanfei.net -hanfeiyl.com -hanfugong.com -hanganxian.com -hangbohaorun.com -hangcha-forklift.com -hangchow.org -hangdagroup.com -hangdaowangluo.com -hangdaxinli.com -hangdianzhizao.com -hangduhc.com -hangf.com -hangfkj.com -hanggao.net -hangge.com -hanghaimeng.com -hanghang.com -hanghangcha.com -hanghangohye.com -hangjia-tech.com -hangjianet.com -hangjiayun.com -hangjizulin.com -hangkong.com -hangkongxx.com -hanglorygroup.com -hangmaquan.com -hangongjk.com -hangpai.org -hangpu-topsys.com -hangruntech.com -hangshitech.com -hangsi-bio.com -hangtianride.com -hangtu-china.com -hangtunggroup.com -hanguangbaihuo.com -hanguu.com -hangw.com -hangwei-media.com -hangxinyiqi.xin -hangxun100.com -hangyan.co -hangyang.com -hangyecloud.com -hangzhiqiao.com -hangzhouboiler.com -hangzhoueda.com -hangzhouexpo.com -hangzhoufujikura.com -hangzhoujizhang.com -hangzhoujx.com -hangzhouleili.com -hangzhouluohu.com -hangzhoumengfa.com -hangzhouqisheng.com -hangzhousports.com -hangzhoutianqi114.com -hangzhouweifeng.com -hangzhouyiyao.com -hangzhouyq.com -hangzhouzehe.com -hanhai.net -hanhaiqikan.com -hanhanfx.com -hanhe-cable.com -hanhongchina.com -hanhoo.com -hanhua.com -hanhuatin.com -hanihanrf.com -hanjea.com -hanjianbing.org -hanjiaying.com -hanjie.biz -hanjjl.com -hanju-tv.org -hanjuejituan.com -hanjutv.com -hankaiacademy.com -hankaikeji.com -hankchina.com -hanke1688.com -hankeer.org -hankemaoyi.com -hanking.com -hankinggroup.com -hankunlaw.com -hanlei.org -hanlin-tech.net -hanlin.com -hanlin.press -hanlindong.com -hanlinedu.com -hanlinzhijia.com -hanlka.com -hanlongpiju.com -hanlunjx.com -hanmaa.com -hanmads.com -hanmaidj.com -hanmaker.com -hanmeilin.com -hanmembrane.com -hanmozhai.com -hanniulaser.com -hannor.com -hannto.com -hanon.cc -hanpian.tv -hanpokou.com -hanpupharm.com -hanqigroup.com -hanqinghb.com -hanqunfeng.com -hanrunbt.com -hans-ad.com -hansaoxinxi.xyz -hanschen.site -hansenexpo.com -hansetile.com -hanshinkiki-xuzhou.com -hansholdings.com -hanshow.com -hansight.com -hanslaser.com -hanslaser.net -hansme.com -hansong-china.com -hanspower.com -hanspub.org -hansrobot.com -hanstong.com -hansuku.com -hansunic.com -hanswine.net -hant.cc -hantang59.com -hantangxintong.com -hantangzy.com -hantecables.com -hantele.com -hanterry.com -hantev.com -hantinghotels.com -hantongrc.com -hantongsteel.com -hanvitools.com -hanvon.com -hanvonmfrs.com -hanvontouch.com -hanwa-ch.com -hanweb.com -hanwei1234.com -hanweimetal.com -hanwenzhongyi.com -hanximeng.com -hanxinsheng.com -hanxuew.com -hanyanggroup.com -hanyangmoto.com -hanyanseed.com -hanyaohuanbao.com -hanyi.com -hanyi.studio -hanyipo.com -hanyou.com -hanyougame.com -hanyouwang.com -hanyu.me -hanyuansh.com -hanyudi.com -hanyuguoxue.com -hanyulaoshi.com -hanyutai.com -hanyuwatch.com -hanyya.com -hanzhesh.com -hanzhong123.com -hanzhonggas.com -hanzhoulaser.com -hanzify.org -hanziguan.com -hao-shangliang.com -hao.ac -hao.gg -hao.ink -hao0517.com -hao0724.com -hao0770.com -hao120.cc -hao123-hao123.com -hao123.com -hao123.com.sg -hao123.net -hao123.ph -hao12306.com -hao123img.com -hao123n.com -hao1358.com -hao136.com -hao163.com -hao184.com -hao1cm.com -hao22.com -hao222.net -hao2345.com -hao24.com -hao245.com -hao251.com -hao268.com -hao280.com -hao315.cc -hao315.com -hao353.com -hao360.com -hao394.com -hao3gp.com -hao5.net -hao528.com -hao568.com -hao6.com -hao695.com -hao7188.com -hao753.com -hao76.com -hao774.com -hao86.com -hao9669.com -haoad.org -haoamc.com -haoayi.xyz -haobangni.com -haobangscm.com -haobtc.com -haocaa.com -haocai.com -haocaiqi.net -haocang.com -haochang.tv -haochangyou.com -haoche1.com -haoche51.com -haochedai.com -haocheedai.com -haochehui.com -haochengda.net -haochenmo.cc -haochi123.com -haochijixie.com -haochimei.com -haochu.com -haochuguo.com -haocw.com -haodai.com -haodanku.com -haodaquan.com -haodekuai.com -haodevps.com -haodewap.com -haodewap.net -haodf.com -haodf.org -haodiany.com -haodiaoyu.com -haodingdan.com -haodisoft.com -haodiy.net -haodns123.cc -haodns999.cc -haodongdong.com -haodou.com -haodro.com -haoduck.com -haoduhe.com -haoduo.vip -haoduobao6.com -haoduofangs.com -haoduojiaju.com -haoduojie.com -haoduorou.net -haoe123.com -haoejia.com -haoeyou.com -haofabiao.com -haofakeji.com -haofan005.com -haofang.net -haofang007.com -haofang5.com -haofangkankan.com -haofangyu999.com -haofeng-group.com -haofenshu.com -haofenxiao.net -haofly.net -haofs.com -haofz.com -haoge500.com -haogedu.com -haogj8.com -haogongzhang.com -haohaizi.com -haohan-data.com -haohanfw.com -haohanguo.com -haohanju.com -haohanjx.com -haohanpower.tech -haohanstar.com -haohao8888.com -haohaotuan.com -haohaowan.com -haohaoxiuche.com -haohaoxz.com -haohaoyx.com -haohaozhu.com -haohead.com -haohexinxing.com -haoht123.com -haohuan.com -haohuanjiao.com -haohuoa.com -haohuoyuan.com -haohxs.com -haointl.com -haoinvest.com -haoji.me -haojiao.cc -haojiao.net -haojiaolian.com -haojing.org -haojit.com -haojixie.cc -haojixiong.com -haoju5.com -haojue.com -haojue163.com -haojushe.com -haoka88.com -haokale.com -haokan.com -haokan5.com -haokanbu.com -haokanqq.com -haokanzhan.com -haokebang.net -haokebio.com -haokecheng.com -haokejie.com -haokeyun.vip -haokoo.com -haoku.net -haokuaiya.com -haolaba.com -haolangtech.com -haolaoshi.tv -haolawyer.com -haole.com -haoled9999.com -haolexiang.com -haolidayiliao.com -haolietou.com -haolifa.com -haolike.com -haoliners.net -haoling.cc -haolints.com -haoliv.com -haolizi.net -haolongsci.com -haolvbt.com -haolyy.com -haoma.com -haoma123.com -haomagujia.com -haomai.net -haomaikeji.com -haomaishe.com -haomaishou.com -haomaitong.com -haomaizhizao.com -haomaku.com -haomei-alu.com -haomenke.com -haomifi.com -haomingguan.com -haommn.com -haomo-tech.com -haomove.com -haomzl.com -haonames.com -haonic.com -haoniu1.com -haonongzi.com -haooyuan.com -haopeixun.com -haopianyi.com -haoqdl.com -haoqiao.com -haoqihb.com -haoqikan.com -haoqiutiyu.com -haoqixingstem.com -haoqu.net -haoqu99.com -haoqun.vip -haoranbio.com -haorantech.com -haorc.com -haoread.com -haoreagent.com -haorencai.net -haorooms.com -haoruanmao.com -haoruo.com -haosd.com -haoseals.com -haosedaohang.com -haosenchina.com -haoservice.com -haosf.com -haosf.net -haoshangqi.com -haoshanxi.com -haosheng168.com -haoshengmall.com -haoshenqi.com -haoshici.com -haoshifamen.com -haoshipin123.com -haoshiqi.net -haoshsh.com -haoshuaji.com -haoshudi.com -haoshunjia.com -haoshunjx.com -haoshuntm.com -haoshuo.com -haoshuyou.net -haoshuyun.com -haositone.com -haosix.com -haoso.com -haosooo.com -haosou.com -haosou.net -haosou123.com -haosou360.com -haoss.vip -haost.com -haostay.com -haosulu.com -haote.com -haotengly.com -haotgame.com -haotianhuyu.com -haotihui.com -haotijin.com -haoting.com -haotm.com -haotonggg.com -haotoufa.com -haotougao.com -haotougu.com -haotoys.com -haott.com -haotu3.com -haotui.com -haotyn.com -haouc.com -haowa.com -haowaicaijing.com -haowallpaper.com -haowandeni.com -haowang.shop -haowangjiaohospital.com -haowangpu.com -haowanma.info -haowanok.com -haowanyou.com -haowen100.com -haowenbo.com -haowenshi.com -haowu.com -haowu.link -haowuguo.com -haowusong.com -haowuyunji.com -haoxg.net -haoxiana.com -haoxiangmachine.com -haoxiangyundong.com -haoxiaoguo.net -haoxingchen.com -haoxingcn.com -haoxingroup.com -haoxinpinggu.com -haoxintaikj.com -haoxipu.com -haoxitong.com -haoxiu.net -haoxiyou.com -haoxue.com -haoxue360.com -haoxueche.com -haoxuee.com -haoxyx.com -haoyangmao18.com -haoyao.com -haoyao163.com -haoyaofs.com -haoyaogo.com -haoychuang.com -haoyetaoci.com -haoyintong123.com -haoyisheng.com -haoyishu.com -haoyong.cc -haoyou666.com -haoyouidc.com -haoyouqian.com -haoyouxi.cc -haoyouyinxiang.com -haoyouyuan520.com -haoyuanxiao.com -haoyue.com -haoyue28.com -haoyuepu.com -haoyun.life -haoyun13.com -haoyun56.com -haoyunbb.com -haoyunlaisz.com -haoyunlawyer.com -haoyunma.com -haoyuntech.com -haoyunwuyou.com -haoyusw.com -haozai120.com -haozaishop.com -haozhai.com -haozhanhui.com -haozhebao.com -haozhexie.com -haozhihs.com -haozhougroup.com -haozhuan.vip -haozhuji.net -haozi.net -haozi.xyz -haozip.com -haozjj.com -haozke.com -haozongjie.com -haozu.com -haozuojia.com -hapco-cn.com -hapg-hitachi.com -hapi123.net -hapids.com -hapierxia.com -hapingapp.com -hapipixia.com -hapiyixia.com -hapjs.org -haplat.net -happi123.com -happigo.com -happiness9999.com -happy-ti.com -happy88.com -happycodeboy.com -happydino.com -happyelements.com -happyeo.com -happyev.com -happyhlddz.com -happyjuzi.com -happykb.com -happykey6.com -happylivelife.com -happymmall.com -happynic.com -happypingpang.com -happyplaygame.net -happysky.org -happystudy.cc -happytimenet.com -happyvalley.link -happywalk.net -happyya.com -haqu.com -haquan.cc -harbin-electric.com -harbin123.com -harborhousehome.com -hardcc.com -hardcoresir.net -hardkr.com -hardspell.com -hardware114.com -hareonsolar.com -hariogame.com -harj120.com -harmay.com -harmight.com -harmony-et.com -harmony3.com -harmony4s.com -harmonyos.com -harmonywatch.com -harmyy.com -harog.net -harpost.com -harpping.com -harryhorsemedia.com -harrynull.tech -harrypottermagicawakened.com -harseen.com -harsom.com -hart-worldwide.com -harvestcm.com -harvesthanger.com -harvestpawn.com -harworld.com -harzone.com -hasaf.com -hasbyk.com -hasco-group.com -hasea.com -hasee.com -hasee.net -hasen-cn.com -hashyrmyy.com -hasivo.com -haskqyy.com -hasoltd.com -haspig.com -hassbian.com -hassfull.com -hasstatic.com -hastenpharma.com -hasuhasu.com -hatanggame.com -hatangqp.com -hatangyx.com -hatelifu.club -hatfav.com -hatjedu.com -hatlonely.com -hatoem.com -hatro.cc -hatter.ink -haval-global.com -have.ink -havefun.im -havevisa.com -havewo.com -hawagame.com -hawanyx.com -hawbel.com -haweigroup.com -hawjob.com -hawjwl.com -hawkaoe.net -hawkeye.fun -hawkfilter.com -hawkhai.com -hawtaimotor.com -haxdjx.com -haxm.com -haxwx.cc -hayao.com -hayaoym.com -hayeen.com -hayge.com -haygo.com -hayi.cc -hayseen.com -hazp.net -hazpw.org -hazq.com -hb-163.com -hb-ecloud.com -hb-gjj.com -hb-green.com -hb-hengda.com -hb-jn.com -hb-ly.com -hb-sx.net -hb-water.com -hb-ws.com -hb-xydq.com -hb-young.com -hb0561.com -hb0771.com -hb10000.com -hb10000sale.com -hb1000kv.com -hb110.cc -hb12333.com -hb191.com -hb2h.com -hb30.com -hb3rm.com -hb500.com -hb96369.com -hb96568.com -hbaas.com -hbaec.com -hbafa.com -hbafxh.org -hbahyy.com -hbairport.com -hbanbao.com -hbapia.vip -hbasstu.net -hbbaidu.com -hbbfyfy.com -hbbidcloud.com -hbbidding.com -hbblxb.com -hbblxk.com -hbbmjd.com -hbbnqy.com -hbbrgd.com -hbbst99.com -hbbsw.vip -hbbutler.com -hbbwg.net -hbbxpx.com -hbbyb.com -hbbzyys.org -hbca110.com -hbcbly.com -hbccp.org -hbccpit.org -hbcdc.com -hbcdyz.com -hbcg.cc -hbchen.com -hbchufeng.com -hbcjh.net -hbcjkcfwjt.com -hbcjlq.com -hbcjw.com -hbcjxx.com -hbclgg.com -hbcljyc.com -hbclqcw.com -hbcoal.com -hbcof.com -hbcofco.com -hbcourt.org -hbct-wiremesh.com -hbctgs.com -hbcthotels.com -hbctic.com -hbctjk.com -hbctjt.com -hbcwt.com -hbcxpm.com -hbcyclub.com -hbcydlqc.com -hbcyyy.com -hbdangyang.com -hbdckj.com -hbddjt.com -hbddrn.com -hbdefon.com -hbdfmlw.com -hbdhy.com -hbdjcc.com -hbdjk.com -hbdmia.com -hbdschem.com -hbdssb.com -hbdtjqj.com -hbdx-kdyy.com -hbdzcg.com -hbdzky.com -hbdzxx.com -hbeda.org -hbedky.com -hbeducloud.com -hbeeia.com -hbekt.com -hbema.net -hbepec.com -hbewq.com -hbfesco.com -hbfie.org -hbfintech.com -hbfootball.com -hbfoundry.org -hbfqyjt.com -hbfsh.com -hbfy.com -hbfybj.com -hbfyhb.com -hbfzb.com -hbg66.club -hbgajg.com -hbgbdst.com -hbgcxj.com -hbgdsfy.com -hbgdwl.com -hbgis.org -hbgj-3.com -hbgj.com -hbgk.net -hbglky.com -hbglobal.com -hbgr.net -hbgrb.net -hbgroups.com -hbgsetc.com -hbgswl.com -hbgwy.org -hbgydxw.com -hbgzfx.com -hbgzh.com -hbha027.com -hbhaolinju.com -hbhcdn.com -hbhcgt.com -hbhdhd.com -hbhjrzzl.com -hbhm.net -hbhml.com -hbhmxx.com -hbhongrunxwy.com -hbhqzyc.com -hbhtcm.com -hbhtgroup.com -hbhtxx.com -hbhuamei.com -hbhuipu.com -hbhxbb.com -hbhxgroup.com -hbhyychem.com -hbhz.net -hbiclqc.com -hbicpa.org -hbidc.net -hbifeng.com -hbinitiate.com -hbipdc.com -hbisco.com -hbisv.com -hbitg.com -hbjbjt.net -hbjcgjg.com -hbjcgy.com -hbjcxy.com -hbjdxt.com -hbjgwl.com -hbjhc.com -hbjhkfcyy.com -hbjhpx.com -hbjia.net -hbjieshi.com -hbjinnong.com -hbjinshenglan.com -hbjir.com -hbjjrb.com -hbjk114.com -hbjkjt.com -hbjmcjjt.com -hbjmyljs.com -hbjob88.com -hbjomay.com -hbjpim.com -hbjsinfo.com -hbjsxg.com -hbjtfwxh.com -hbjtjsjt.com -hbjttz.com -hbjtwljtyxgs.com -hbjtwlpt.com -hbjtzb.com -hbjubao.com -hbjxad.com -hbjxjy.org -hbjxjyw.com -hbjxym.com -hbjy.net -hbjyjmzg.com -hbjzgw.com -hbjzx.com -hbjzxh.com -hbjzzx.com -hbkggroup.com -hbkgy.com -hbkj-sic.com -hbklsl.com -hbkqw.com -hbksw.com -hbky.com -hbkyby.com -hbkzw.com -hblbjg.com -hblccy.com -hblds.com -hbldwx.com -hblhfrp.com -hblhnykj.com -hbliti.com -hblq.com -hblszzyy.com -hbltyh.com -hbltzb.com -hbltzx.com -hblxxx.com -hblynk.com -hbm360.com -hbmajiang.com -hbmchina.com -hbmes.com -hbmingjie.com -hbmmtt.com -hbn68.com -hbnews.net -hbnewsoft.com -hbneww.com -hbnfxm.com -hbnholdings.com -hbnxb.net -hbnyfzjt.com -hbnz.net -hbomick.com -hbooker.com -hboxs.com -hbpangu.net -hbpch.com -hbpengxi.com -hbpic5.com -hbpictures.com -hbppa.org -hbpryy.com -hbptzsbw.com -hbpukang.com -hbpvc.com -hbpx.net -hbqcxy.com -hbqingteng.com -hbqmys.com -hbqndc.com -hbqtgg.com -hbqydz.com -hbqyxy.com -hbr-caijing.com -hbrbmedia.com -hbrc.com -hbrchina.org -hbrchinese.org -hbrcxcl.com -hbrd.net -hbrdt.com -hbrebond.com -hbrfxh.com -hbriso.com -hbrmhospital.com -hbrsks.co -hbrsks.net -hbrsksw.com -hbruiao.com -hbruicai.com -hbrunfeng.com -hbrunlin.com -hbryzx.net -hbrzkj.com -hbs-nd.com -hbscd.com -hbsczx.com -hbsczzxy.com -hbsdenterprise.com -hbsfdx.com -hbsfedu.com -hbsfjtgs.com -hbsgsq.com -hbshanhe.com -hbshengbangwl.com -hbshgzx.com -hbshichang.com -hbshls.com -hbshunda.com -hbsia.org -hbsjym.com -hbsjzyxh.com -hbskw.com -hbslft.com -hbslndx.com -hbslxzx.com -hbsmservice.com -hbsmtxh.com -hbsmwljt.com -hbsql.com -hbsrjt.com -hbsrjyy.com -hbssfw.com -hbssttz.com -hbsszx.com -hbstars.com -hbsti.com -hbstoo.com -hbsunlink.com -hbswjt.com -hbswkj.com -hbswmyyxgs.com -hbsxkyy.com -hbsxly.com -hbsxwljt.com -hbsxzjw.com -hbsygw.com -hbsz120.com -hbszbykj.com -hbszfw.com -hbszjsjt.com -hbszlcc.com -hbszsv.com -hbsztv.com -hbszxyjhyy.com -hbszzk.com -hbszzx.com -hbtcmu.com -hbtcw.com -hbtea.com -hbtengniu.com -hbtjryp.com -hbtlh.com -hbtljg.com -hbtmjt.com -hbtobacco.com -hbtqzx.com -hbtvc.com -hbtycp.com -hbtycyjt.com -hbtyxh.com -hbun.net -hbvtc.net -hbwanhao.com -hbwanrun.com -hbweid.com -hbwenchang.com -hbwh.net -hbwhcyw.com -hbwhcyxh.com -hbwhexpo.com -hbwhjj.com -hbwjs.com -hbwljm.com -hbwlykt.com -hbwsrc.net -hbwuxue.com -hbwuye.com -hbww.org -hbxcw.com -hbxdf.com -hbxgzls.com -hbxhfc.com -hbxhxkj.com -hbxinfadi.com -hbxingchi.com -hbxmcy.com -hbxot.com -hbxtzx.com -hbxtzy.com -hbxxy.com -hbxyjob.com -hbxytc.com -hbyangyuan.com -hbyczk.com -hbydsg.com -hbydsy.com -hbyh0561.com -hbyhfcyy.com -hbyidu.com -hbyisen.com -hbyjfs.com -hbylgov.com -hbyljf.com -hbylzx.com -hbynet.net -hbyouyunyouke.com -hbyoyo.com -hbyqtl.com -hbysfhm.com -hbyt56.com -hbyuanhao.com -hbyunxi.net -hbyunyang.net -hbyybwff.com -hbyysw.com -hbzaxh.com -hbzbw.com -hbzcpg.com -hbzgjx.com -hbzh.net -hbzhan.com -hbzhjxzz.com -hbzhonghai.com -hbzjjk.com -hbzjrx.com -hbzjzb.com -hbzknet.com -hbzkw.com -hbzkzxw.com -hbzm.cc -hbzmw.com -hbzncz.com -hbzqzx.com -hbzsb.com -hbzst.com -hbzszy.net -hbztn.com -hbzuojia.com -hbzyjsjt.com -hbzzzzw.com -hc-byq.com -hc-cdn.com -hc-overseas.com -hc-ph.com -hc-software.com -hc-sre.com -hc-testing.com -hc01.com -hc121.com -hc12306.com -hc23.com -hc360.com -hc376.com -hc39.com -hc3yy.com -hc6756.com -hc699.com -hc79.com -hc943.com -hcaj.com -hcazb.com -hcbbs.com -hcbuy.com -hcbyq.com -hcc11.com -hcccia.com -hcciot.com -hcclhealthcare.com -hccoeutg.com -hccpcba.com -hcdamai.com -hcdiy.com -hcdyhr.com -hceia.com -hcepay.com -hcfac888.com -hcfc168.com -hcftyy.com -hcgaokong.com -hcglzj.com -hcgroup.com -hcgtravels.com -hch518.com -hchbblg.com -hchbsb.com -hchezhu.com -hchina.com -hchlidc.com -hchliot.com -hchongren.com -hcicloud.com -hcinfo.tech -hcj1952.com -hcjt.cc -hckg.com -hclonely.com -hclouder.com -hcmiraefund.com -hcmofen.com -hcnaimo.com -hcpharm.com -hcqixinhb.com -hcqxbj.com -hcrlm.com -hcschengtou.com -hcsd123.com -hcsdhgjzx.com -hcsemitek.com -hcshangwu.com -hcsilk.com -hcsjddc.com -hcsound.com -hcswgx.com -hcsyjt.com -hct-test.com -hctxf.org -hcty.com -hcvac.com -hcwebsite.com -hcwh.ltd -hcwhjd.com -hcwiki.com -hcx123.com -hcx99.com -hcxcw.com -hcxfjq.com -hcxwdb.com -hcxxy.com -hcxy6.com -hcyacg.com -hcydit.com -hcyea.com -hcykt.com -hcypzy.com -hczc.com -hczfgjj.com -hczl.com -hczm1.com -hczm2.com -hczq.com -hczr.com -hczs.com -hczsbj.com -hczshb.com -hczxmr.com -hczyw.com -hd-dwr.com -hd-english.com -hd-english.net -hd-mw.com -hd-tvb.com -hd-u.com -hd.gg -hd027.com -hd123.com -hd123.net -hd12333.com -hd199.com -hd199.net -hd2h.com -hd3p.com -hd88.cc -hd8y.com -hdabc.com -hdanc.com -hdanheng.com -hdarea.club -hdavchina.com -hdb.com -hdbaichuan.com -hdbgjt.com -hdbits.org -hdbp.com -hdbus.net -hdbz.net -hdchina.org -hdcmct.org -hdcms.net -hdcolorant.com -hdcy123.com -hdd-group.com -hddata.net -hddgood.com -hddid.com -hddlion.com -hddolby.com -hddznet.com -hdeexpo.com -hdeso.com -hdfax.com -hdfimg.com -hdfybjy.com -hdgetters.com -hdh.im -hdhjtz.com -hdhome.org -hdhosp.com -hdhospital.com -hdhui.com -hditec.com -hdj.me -hdjad.com -hdjingwei.com -hdjt.net -hdjwj.com -hdjxpx.com -hdkcsjxh.com -hdks.net -hdksjp.com -hdkwa.com -hdkylin.work -hdl-watch.com -hdlcdns.com -hdlchina.com -hdletv.com -hdlogo.com -hdlstage.com -hdlsxh.com -hdltest.com -hdlzmdb.com -hdmiaoc.com -hdmnw.com -hdmooncake.com -hdmryy.com -hdmtv168.com -hdmv.org -hdnd01.com -hdnychina.com -hdp88.com -hdph.com -hdpyqa.com -hdpyqc.com -hdpyqd.com -hdpyqf.com -hdrcw.com -hdsay.net -hdschina.com -hdschools.org -hdsdyyy.com -hdslb.com -hdslb.net -hdslb.org -hdsmgw.com -hdtgtm.com -hdtonghe.com -hdtyre.com -hduofen.com -hdurl.me -hdw99.com -hdwbcloud.com -hdwbsaas.com -hdwebpyqa.com -hdwebpyqc.com -hdwebpyqe.com -hdwjc.com -hdwtpay.com -hdwzz.com -hdxing.net -hdxweb.com -hdxxg.com -hdxxw.com -hdxynet.com -hdyanke.com -hdyouxi.com -hdyu.com -hdyujiu.com -hdyxgame.com -hdyxi.com -hdyy95.com -hdyzsw.com -hdzbgs.com -hdzc.com -hdzc.net -hdzcwlian.com -hdzp.com -hdzp.net -hdzuoye.com -hdzxyy.com -he-edu.com -he-ku.com -he-one.com -he17.com -he1j.com -he29.com -heacn.net -head-way.com -headconsultant.com -header.cc -heading123.com -headingfilter.com -headphoneclub.com -headscm.com -heag.com -healforce.com -healrna.com -health-china.com -healthan.net -healthbbs.net -healthcareol.net -healthcareyun.com -healthcn.com -healthgv.com -healthjd.com -healthr.com -healthybaike.com -healthych.com -healthydigitallife.com -healzentx.com -heanyo.com -hearfly.com -hearstchina.com -heart-game.com -heartide.com -heartinsti.com -heartxin.com -heating-sh.com -heatingtrace.com -heavenlywind.cc -heavenonearthhealingalternatives.com -hebangdianzi.com -hebbank.com -hebbc.org -hebbr.com -hebca.com -hebcar.com -hebecc.com -hebeeb.com -hebei.cm -hebeibiaoqing.com -hebeieb.com -hebeifanlin.com -hebeifc.com -hebeifeimeng.com -hebeigwy.org -hebeihazhi.com -hebeihualang.com -hebeijd.com -hebeijia.com -hebeijiaxin.com -hebeilyxh.com -hebeiminglan.com -hebeimutian.com -hebeinongzi.com -hebeisaixin.com -hebeishuangning.com -hebeisia.com -hebeitongtai.com -hebeiwl.net -hebeiwulian.com -hebeixk.com -hebeiyouxi.com -hebeizuqiu.net -heben-eng.com -hebetextile.com -hebgcdy.com -hebgsetc.com -hebgtjt.com -hebi99.com -hebiia.org -hebimalasong.com -hebinhospital.com -hebisf.com -hebitv.com -hebiw.com -hebjxw.com -hebjy.com -hebkjs.com -hebl.name -hebmj.com -hebmusic.com -hebngc.com -hebnx.com -hebolaw.com -hebooming.com -hebotc.com -hebpi.com -hebpolicycube.com -hebradio.com -hebsg.net -hebshanggu.com -hebtig.com -hebtv.com -hebwlfdc.com -hebxakj.com -hebxxt.com -hebxyjt.com -hebyjxh.com -hebzd.com -hebzhy.com -hebzljx.com -hec-al.com -hec-changjiang.com -hecai360.com -hecaijing.com -hecdn.com -hecdn.net -hechangquan.com -hechangshipin.com -hechangtech.com -hechengbb.com -hechengeco.com -hechiguotou.com -hechijinxin.com -hechuang.info -hechuangxinxi.xyz -hechuann.com -heclife.com -heclouds.com -hecoe.com -hecpharm.com -hedaoapp.com -hedaozi.com -hedasudi.com -hedaweb.com -hedgehogbio.com -hedgehogrock.com -hedongli.com -hedpump.com -hedu.net -heduibu.com -heduismart.com -hedysx.com -heec.com -heeeeeh.com -heeeepin.com -heemoney.com -heenee.com -heepay.com -heerit.com -hefagear.com -hefei.cc -hefeifc.com -hefeilaws.com -hefeimarathon.com -heflc.com -hefls.net -hefunoodles.com -hegii.com -hegouvip.com -hegsryjq.com -hehagame.com -hehang.net -hehecam.com -hehecamera.com -hehejin.com -hehesheng.com -heheshouyou.com -hehesy.com -hehewan.com -heheyx.com -hehooo.com -hehouse.com -hehuapei.com -hei.red -heibai.net -heibai.org -heibaicao.com -heibaige.com -heibailianmeng.com -heibaimeng.com -heibaixiaoyuan.com -heibandongcha.com -heibanwa.mobi -heibaow.com -heibaowuliu.com -heibian.com -heicha.com -heicheng51.com -heidaotxt1.com -heidaren.com -heidiankeji.com -heigaga.com -heightindustry.com -heiguang.com -heiguang.net -heiha.net -heihei.com -heiheiyuyin.com -heihekeji.com -heijiao.net -heijiaovip.com -heike07.com -heilanhome.com -heilei.com -heilifun.com -heilongjianggames.com -heiluo.com -heima.com -heima010.com -heimabao.com -heimac.net -heimadao.com -heimadata.com -heimai666.com -heimajijin.com -heimalanshi.com -heimaoseo.org -heimaoseojishu.com -heimaoshe.com -heimaying.com -heimeiai.com -heimeng.net -heimizhou.com -heiniubao.com -heiniufeiye.com -heinote.com -heinw.com -heirenlei.com -heisha.net -heishao.net -heishenhua.com -heishou.org -heistbeer.com -heitao.com -heitao2014.com -heitaosan.com -heitiane123.com -heitu.com -heitukeji.com -heiwahospital.com -heiwangke.net -heixi.com -heiyan.com -heiyan.org -heiyange.com -heiyanimg.com -heiying.cc -heiyu.cc -heiyu.space -heiyunxitong.com -heizhushoes.com -hejia-china.com -hejiang.com -hejiangroup.com -hejiantech.com -hejichip.com -hejicut.com -hejin588.com -hejiu2016.com -hejujk.com -hejun.com -hejxf.com -heketai.com -hekouxin.com -heku.org -hel168.com -helensbar.com -heliang.cc -helianhealth.com -helianwap.com -helichina.com -heliforklift.com -helight.info -helijia.com -helingqi.com -helipay.com -helishun.com -helitzc.com -heliuyan.com -hello-fpga.com -hello-inc.com -hello1010.com -hellobanma.com -hellobike.com -hellobiye.com -hellocq.com -hellocq.net -hellodive.com -hellof1.com -helloflask.com -hellogame.net -hellogithub.com -hellogitlab.com -helloglobal.com -hellogslb.com -hellohnb.com -hellohuohu.com -helloimg.com -helloinstruments.com -hellojava.com -hellokid.com -hellokidvip.com -hellololi.com -hellomeowlab.com -hellomida.com -hellonitrack.com -hellopcb.com -hellorf.com -hellostreetcat.com -hellotalk8.com -hellotw.com -hellotyping.com -helloweba.com -helloweba.net -hellowebfont.com -hellowgame.com -helloworld.net -helloxjn.com -helloxkb.com -helloyao.com -helmicro.com -helmtower.com -helnon.com -helo11.com -helohub.com -help-w.com -helpmeng.com -helpmepick.net -helps.live -helpson.com -helpton.com -helptousa.com -helpweixin.com -helunyun.com -heluowenhua.net -helywin.com -hema.ren -hema.wiki -hemahuashi.com -hemaish.com -hemajs.com -hemamax.com -hemanc.com -hemanzi.com -hemaos.com -hemaread.com -hemaxiaofen.com -hemayouxi.com -hemayouxi.net -hemayun.com -hemayx.com -hemeiauto.com -hemetal.com -hempelgroup.com -hen360.com -henai.com -henaiwan.com -henan100.com -henanart.com -henanbojin.com -henance.com -henancme.net -henanfucai.com -henangames.com -henaninfo.com -henanjianling.com -henanjiqiren.com -henanjubao.com -henanrc.com -henansha.com -henanshengtang.com -henansyj.com -henanxinjiang.com -henanyikayi.com -henanyixue.com -henanzhida.com -henanzsb.com -henau.net -henbt.com -hencin.com -hencoder.com -hendera.com -henduofang.com -heng-f.com -heng98.com -hengan-instruments.com -hengansl.com -hengaodebj.com -hengbao.com -hengbaochuju.com -hengbinzl.com -hengbogroup.com -hengchangda.com -hengdafilm.com -hengdafuji.com -hengdawenbo.com -hengdaxincai.com -hengdayun.com -hengdeegroup.com -hengdian.com -hengdianfilm.com -hengdianworld.com -hengdrive.com -hengdulaw.com -hengfang.com -hengfasd.com -hengfengtires.com -hengfujz.com -henggufood.com -henghe-group.com -henghe666.com -henghengmao.com -henghongjixie.com -hengjiafish.net -hengjianyy.com -hengjiatouzi.com -hengjiecdn.com -hengjiu-pt.com -hengjixiaofang.com -hengkun.com -hengli.com -hengliguoji.com -henglihotels.com -henglonggroup.com -hengqian.com -hengqifeng.com -hengqijy.com -hengqikuaiji.com -hengqinmarathon.com -hengrui.com -hengruisensor.com -hengshan01.com -hengshanpharm.com -hengshengpark.com -hengshuilaobaigan.net -hengshuiyake.com -hengtai-law.com -hengtaiboyuan.com -hengtiansoft.com -hengtianyun.com -hengtonggf.com -hengtonggroup.com -hengtonglog.com -hengtongzhineng.com -hengxiangtaji.com -hengxinjinshu.com -hengxinyongli.com -hengxucapital.com -hengxueedu.com -hengyagongshui.com -hengyan.com -hengyankeji.com -hengyemould.com -hengyi.com -hengyimining.com -hengyishihua.com -hengyoux.com -hengyuansilk.com -hengyuanzn.com -hengyudata.com -hengyuefund.com -hengyulighting.com -henha.com -henhaoji.com -henku.com -henkuai.com -henkung.com -henlius.com -henluoli.com -henmimang.com -henningchem.com -henovcom.com -henrayglass.com -henri.ren -hensctai.com -hensgroup.com -henzan.com -henzanapp.com -hepalink.com -hepan.com -hepan.org -hepartshome.com -hepatox.org -hepingdao.net -hepmall.com -hepost.com -hepu123.com -hepurc.com -hepuwang.com -hepuweilai.com -hepuxw.com -heqingloong.com -hercity.com -hercules-logistics.com -hercules-micro.com -herdacdn.com -herdar.com -herdcloud.com -herdpcdn.com -herdsric.com -here120.com -here325.com -herecdn.com -heredlift.com -herenit.com -herllamo-med.com -herllamo.com -hermod1.com -hero-geek.com -hero.com -herocoming.com -heroesports.com -herogame.com -herohr.net -heroic-ltd.com -heroje.com -heroone.com -herosanctuary.com -heroskate.com -herostart.com -heroworld.net -herrel.com -herrywatch.com -herstime.com -herta.space -herton.net -hertzhu.com -heryipharma.com -heshanghuitong.com -heshdity.com -heshecasa.com -heshimilk.com -heshui.com -heshuyun.com -hesiyivr.com -heson10.com -hesongwang.com -hesppe.com -hessianhealth.com -hestudio.net -heta.tech -hetaigroup.net -hetaixin.com -hetao101.com -hetaoa.com -hetaoapis.com -hetaobiancheng.com -hetaocdn.com -hetaodaxue.com -hetaointernal.com -hetaolin.com -hetaousercontent.com -hetaoxingqiu.com -hetianlab.com -hetianyu.cc -hetongamp.com -hetunzu.com -hetusoft.com -heu8.com -heungkong.com -heuvan.com -hewaner.com -hewascreen.com -heweather.com -heweather.net -hewebgl.com -heweifurniture.com -hewukeji.com -hexaamc.com -hexagonsemi.com -hexchip.com -hexdo.com -hexgears.com -hexi-electric.com -hexian.ltd -hexianbbs.com -hexiangroup.com -hexianrc.com -hexiaoxiang.com -hexicomtech.com -hexie.cc -hexieshaanxi.com -hexilai.com -hexin-puleather.com -hexinchemical.com -hexindai.com -hexinli.org -hexinwanjia.com -hexiny.com -hexinyu.com -hexmeet.com -hexsen.com -hextower.com -hexun.com -hexun.com.tw -hexuncaizhi.com -hexuu.com -heyang.cc -heyang365.com -heycan.com -heycloudy.co -heycode.com -heycomrades.com -heycross.com -heycsm.com -heydayinfo.com -heygears.com -heyi.com -heyiguangye.com -heyiguoyuan.com -heyimiao.com -heyingcn.com -heyingedu.com -heyinshiliu.com -heyix.com -heymeo.net -heymeowfm.com -heymore.com -heyou51.com -heyplus.com -heyria.com -heytap.com -heytapcloud.com -heytapcs.com -heytapdownload.com -heytapimage.com -heytapmobi.com -heytapugc.com -heytea-co.com -heytea.com -heythings-iot.com -heytime.com -heyuanstone.com -heyuanxw.com -heyuhongfang.com -heyun100.com -heyunnet.com -heywhale.com -heywoodsminiprogram.com -heyyo.com -hez70.com -heze.cc -hezebus.com -hezegd.com -hezejob.com -hezejtjt.com -hezelawyers.org -hezepharm.com -hezeribao.com -hezeswjt.com -hezhidongli.com -hezhong-china.com -hezhongyihua.com -hezhouhuatong.com -hezhoujcy.com -hezi.com -hezibook.com -hezijia.com -hezimi.com -hezongyy.com -hf-alu.com -hf-aw.com -hf-iflysse.com -hf0779.com -hf10000.com -hf12345.vip -hf168.net -hf365.com -hf777.com -hf960.com -hfabiao.com -hfairport.com -hfanss.com -hfbaogao.com -hfbaozi.com -hfbcjt.com -hfbeta.com -hfbtv.com -hfbz.com -hfcentury.com -hfchosp.com -hfchzyy120.com -hfcsbc.com -hfdaoyuan.com -hfdsgs.com -hfeec-tencentclb.cloud -hfeec-tencentclb.com -hfeec-tencentclb.net -hfeec-tencentclb.work -hffhgc.com -hffhq.com -hffoil.com -hffund.com -hffy.com -hfgcxx.com -hfgdjt.com -hfgip.com -hfgjj.com -hfgxbus.com -hfhm.com -hfhouse.com -hfhuamei.com -hfhwbgyp.com -hfi-health.com -hfish.net -hfjnxh.com -hfjscn.com -hfjsj.com -hfjtjt.com -hfjxwz.com -hfjzzsxh.com -hfkeheng.com -hfkenfan.com -hfkjsd.com -hfkktt.com -hfksmdl.com -hflbysm.com -hfleda.net -hflengku.com -hflp88.com -hflube.com -hfly.net -hflz.com -hfmama.com -hfmdzx.com -hfmoney.com -hfmt.net -hfmxs.com -hfnuola.com -hfoj.net -hfplg.com -hfpx.cc -hfqgmagnet.com -hfqinhang.com -hfray.com -hfrc.net -hfrcbc.com -hfrsggff.com -hfsava.com -hfshec.com -hfsia.com -hfsid.com -hfspxh.com -hfssw.com -hfsszgcxh.com -hfswcz.com -hft-sz.com -hftfund.com -hfthink.com -hftogo.com -hftsoft.com -hftx-jt.com -hfw.cc -hfx.net -hfxczj.com -hfyestar.com -hfykd.com -hfykt.com -hfyouqi.com -hfyt365.com -hfyuqin.com -hfyyhyxh.com -hfyylcy.com -hfzfzlw.com -hfzhengxu.com -hfzjxh.com -hfzkgw.com -hfzls.com -hfzssw.com -hg-automation.com -hg-capacitor.com -hg-daigou.com -hg-valves.com -hg1218.com -hg12333.com -hg2693.com -hg5177.com -hg568.com -hg8880.org -hg9895.com -hga994.com -hgaas.com -hgcapsule.com -hgcha.com -hgchess.com -hgcitech.com -hgepc.com -hgfdrf.com -hghngroup.com -hghsd.com -hgicreate.com -hgimage.com -hgitv.com -hgj.com -hgj668.com -hgjart.com -hgjl.net -hgjob.com -hgk-group.com -hglaser.com -hgmai.com -hgmri.com -hgnc.net -hgo06070uyi.com -hgo06071uyi.com -hgo06080uyi.com -hgo06081uyi.com -hgo06090uyi.com -hgo06091uyi.com -hgo06101uyi.com -hgo06111uyi.com -hgobox.com -hgoqi.com -hgptech.com -hgqizhong.com -hgqrx.com -hgs001.com -hgscn.com -hgsfy.com -hgsj.com -hgskjc.com -hgskyray.com -hgsyiyuan.com -hgszyyy.com -hguduo.com -hgvalve.com -hgxxgz.com -hgxxgz.net -hgyrnk.com -hgyys.com -hgzcjt.com -hgzk.com -hgzkb.com -hgzrt.com -hgzxgz.com -hgzxgz.net -hgzxzc.com -hgzyxy.com -hh-gltd.com -hh-honghu.com -hh-jt.com -hh-medic.com -hh-pcbs.com -hh-pmp.com -hh-post.com -hh.global -hh010.com -hh88hh.com -hhaqpx.com -hhax.org -hhbraider.com -hhbwff.com -hhchampion.com -hhchsw.com -hhcjjy.com -hhclby.com -hhcn.com -hhcx-led.com -hhcyt.com -hhczy.com -hhdglm.com -hhdjc.com -hhdna.net -hhfdjz.com -hhfxw.com -hhglys.com -hhh.tm -hhh233.net -hhh800.com -hhh885.com -hhhg258.com -hhhji.com -hhhkpb.com -hhhoo.com -hhhppp.com -hhhstz.com -hhhtfdj.com -hhhtfin.com -hhhtscf.com -hhhtyg.com -hhitgroup.com -hhjctest.com -hhjgqh.com -hhjsyxh.com -hhjtcn.com -hhju.com -hhjy.net -hhk365.com -hhkaobo.com -hhkin.com -hhking.com -hhkmls.com -hhl1916.com -hhlwchem.com -hhmage.com -hhmajiang.com -hhmanhua.net -hhnykg.com -hhnynews.com -hho-hawater.com -hhojs.com -hholy.com -hhozw.com -hhpcbs.com -hhpj.net -hhpmzp.com -hhrcard.com -hhrcw.com -hhrdc.com -hhrsks.com -hhsilk.com -hhsw6688hxcdn.com -hhtmm.com -hhtravel.com -hhtravel.com.tw -hhtv.cc -hhup.com -hhuubb.com -hhuubb.net -hhuus.com -hhvv.com -hhwenjian.com -hhwindowmesh.com -hhwl88.com -hhxfqc.com -hhxnycl.com -hhxnyqc.com -hhy0.com -hhycdk.com -hhygame.com -hhygames.com -hhytm.com -hhyungu.com -hhyy.com -hhyy100.com -hhzls.com -hhzm88.com -hhzyjng.com -hi-54.com -hi-books.com -hi-cloud.net -hi-davids.com -hi-gtd.com -hi-lead.com -hi-linux.com -hi-mantech.com -hi-roy.com -hi-sm.com -hi-spider.com -hi-techspring.com -hi-trend.com -hi0755.net -hi138.com -hi169.net -hi1718.com -hi2000.com -hi2000.net -hi772.com -hiaiabc.com -hiao.com -hiapk.com -hiascend.com -hiascend.net -hiavr.com -hibace.com -hibace.net -hibbw.net -hibea.com -hibelarus.com -hibgm.com -hibixin.com -hibogroup.com -hibor.net -hibor.org -hibt.net -hibtc.org -hibusiness.com -hibuzz.net -hiby.cd -hiby.com -hibymusic.com -hic.cloud -hicamelia.com -hiccupx.xyz -hicdma.com -hiceon.com -hichain.com -hicheng.net -hichina.com -hichina.net -hichipharm.com -hichips.com -hicitech.com -hiclc.com -hicling.com -hicloud.com -hicnhm.com -hicomp.com -hiconey.com -hiconics-zn.com -hiconics.com -hicoo.net -hicosmo.com -hicp.net -hicsharp.com -hicss.net -hiczp.com -hid98ys.com -hidery.com -hidesigncloud.com -hiditie.com -hidna.net -hidreamai.com -hidva.com -hiechangzhou.com -hiecheimaetu.com -hiencode.com -hienshi.com -hiersun-hdp.com -hiersun-ido.com -hiesquire.com -hifangjia.com -hifar.net -hifengli.com -hifi168.com -hificat.com -hifidig.com -hifidiy.net -hifime.net -hifiok.com -hifishuo.com -hifiveai.com -hifkw.com -hifkw.xin -hifleet.com -hifly.mobi -hifly.tv -hifortune.net -hifpga.com -hifreud.com -hifuntv.com -hifuture.com -higer.com -higeshi.com -higgmm.net -high-genius.com -high20-playback.com -high21-playback.com -high22-playback.com -high24-playback.com -high25-playback.com -highdigitizing.com -highfaststudio.com -highfel.com -highfundcorp.com -highgo.com -highhope.com -highleveltrans.com -highlightoptics.com -highlionceramic.com -highlm.com -highly.cc -highsharp.com -highstar.com -hightac.com -hightopo.com -highwayguitar.com -higoldgroup.net -higon.com -higoshipping.com -higrand.com -higuchi.xyz -hihan.cc -hiheartgo.com -hihell.com -hihocoder.com -hihonor.com -hihonorcdn.com -hihonorcloud.com -hihope.org -hii-go.com -hiido.net -hiigame.net -hiiibrand.com -hiiyun.com -hijackorg.net -hijiangxi.com -hijiaoshi.com -hijin.vip -hijoys.com -hik-cloud.com -hik-express.com -hik-park.com -hikailink.com -hikari-ch.com -hikauto.com -hikcreate.com -hikemobile.com -hikerfans.com -hikihj.com -hikinginternational.com -hikiot.com -hiklife.com -hikmall.com -hikoon.com -hikops.com -hikparking.com -hikrobotics.com -hiksemitech.com -hikstor.com -hikstorage.com -hikunpeng.com -hikunpeng.net -hikvision-jl.com -hikvision.com -hikvisionauto.com -hikyun.com -hilantu.com -hilau.com -hilbcd.com -hile-bio.com -hileap.com -hilemic.com -hilfv.com -hiliad.com -hiliwi.com -hilllei.com -hillstonenet.com -hillyton.com -hilo8.com -hiloletswin.com -hilonggroup.com -hiloong.com -hilqq.com -hiluluke.com -hima.auto -himado.com -himaker.com -himalaya.com -himalaya.cool -himanufacture.com -himarking.com -himawari-japan.com -himehear.com -himeidian.com -himengyou.com -himetoo.com -himile.com -himin.com -himmpat.com -himoral.com -himorale.com -himorfei.com -hin.cool -hinabian.com -hinabiotech.com -hinavi.net -hindiabp-lh.akamaihd.net -hinocn.com -hinotravel.com -hinpy.com -hintsnet.com -hiofd.com -hiosu.com -hioug.com -hiparking.com -hipcam.net -hipcapi.com -hiphi.com -hiphop8.com -hiphotonics.com -hipiao.com -hipole.com -hippoanimation.com -hippter.com -hipu.com -hiputian.com -hirain.com -hirata-cn.com -hirata-hts.com -hirede.com -hiregex.com -hiregistry.com -hireye.com -hirige.com -hirisemed.com -hirisun.com -hiroop.com -hirosspac.com -hirossz.com -hirtk.com -hirunsport.com -his.sh -hisaka-china.com -hisavana.com -hiscene.com -hisdnoc.com -hisense-home.com -hisense-plaza.com -hisense-syxs.com -hisense.com -hisensehitachi.com -hisensekf.com -hisern.com -hishouhui.com -hisilicon.com -hisiphp.com -hislota.com -hismarttv.com -hisoar.com -hisoft.com -hisofts.com -hisonracking.com -historychina.net -hisugar.com -hisunplas.com -hisupplier.com -hit180.com -hitachi-helc.com -hitalk.com -hitalkers.com -hitao.com -hitbot.cc -hitctf.com -hite.me -hitechfrp.com -hiteksoft.com -hitergas.com -hitevision-solution.com -hitevision-solutions.com -hitevision.com -hitgk.com -hitnology.com -hitnslab.net -hitoor.com -hitouch.com -hitoupiao.com -hitour2005.com -hitozumi.com -hitpound.com -hitqs.com -hitrip.info -hitsame.com -hitui.com -hitv.com -hiusers.com -hiveshared.com -hiveview.com -hivi.com -hivictor.net -hiwafer.com -hiwaysemi.com -hiwbb.com -hiwechats.com -hiweixiu.com -hiwelcom.com -hiwiyi.com -hiworld.com -hiwuhuan.com -hixgo.com -hixianchang.com -hixiaoe.com -hixiaoman.com -hixuexiao.net -hiyd.com -hiyongche.com -hiyouib.com -hiyouqu.com -hiyun.site -hiyun.tv -hizaoan.com -hizg.org -hizh.net -hizhecheng.com -hizj.net -hizom.com -hizyw.com -hizyy.com -hj-bits.com -hj-dog.com -hj-ienergy.com -hj-mail.com -hj-pack.com -hj01.com -hj110.com -hj1951.com -hjapi.com -hjasiancenter.com -hjbbs.com -hjbxw.com -hjcadc.com -hjchee.com -hjcjifen.com -hjckjt.com -hjclass.com -hjcm.net -hjcpl.com -hjd111.shop -hjd123.com -hjdhdduekcdie.com -hjdict.com -hjdns.com -hjdns.net -hjdshop.cc -hjdzn.com -hjenglish.com -hjg365.com -hjgcd.com -hjgrp.com -hjgtjt.com -hjhrcloud.com -hjido.com -hjiesuan.com -hjinternationalhotel.com -hjiuye.com -hjjg.com -hjjh.com -hjjt.net -hjjunhua.com -hjkhjkl.com -hjkklj.com -hjksjx.com -hjlrw.com -hjlw.com -hjmarathon.com -hjmtzb.com -hjpcc.com -hjpp.net -hjr-exchange.com -hjren.com -hjsj.com -hjtag.com -hjunkel.com -hjw169.com -hjw68.com -hjwsky.com -hjwsxzz.com -hjwxcps.com -hjxcl.com -hjxhg.com -hjxry.com -hjxsjx.com -hjxtv.com -hjy1314.com -hjyanxue.com -hjyc.com -hjygame.com -hjyl.org -hjyyjt.com -hjz4.com -hjz518.com -hjzlg.com -hjzzcl.com -hk-island.hk -hk-jztzjt.com -hk-sz.com -hk-tencentclb.cloud -hk-tencentclb.com -hk-tencentclb.net -hk-tencentclb.work -hk-titan.com -hk-vstart.com -hk-xin.com -hk.uy -hk0523.com -hk603.hk -hk8668.com -hkaco.com -hkaima.com -hkance.com -hkance.xyz -hkanews.com -hkaohua.com -hkbchina.com -hkca.club -hkcd.com -hkcgart.com -hkcna.hk -hkcoalition.com -hkcpr.com -hkctgbus.com -hkcts.com -hkctshotels.com -hkctsmembers.com -hkcwdc.com -hkd82.com -hkdfc.com -hkdfgroup.com -hkdqgroup.com -hkdzxs.com -hkexpressworld.com -hkfc.hk -hkfcchina.com -hkfdi.com -hkfe.hk -hkfljt.com -hkg3g299r4.com -hkgcloudcs.com -hkgcr.com -hkgj07.com -hkgjcz.com -hkglink.xyz -hkgol.com -hkgsw.com -hkgtedu.com -hkgwater.com -hkhdsyxx.com -hkinsu.com -hkjinxin.com -hkjnn.com -hkjsrent.com -hkklock.com -hkkuaiyixiu.com -hklego.com -hklmoto.com -hklmxcx.com -hklsqc.com -hkm168.com -hkmedtime.com -hkmeinian.com -hkmipo.com -hkmjd.com -hknbc.com -hknet-inc.com -hkoke.com -hkpep.com -hkproperty.com -hkqbh.com -hkroyal.com -hkrsoft.com -hksc888.com -hkscxh.com -hkserversolution.com -hkslg520.com -hkstv.tv -hkt4.com -hktheone.com -hktidg.com -hku-szh.org -hkvisen.com -hkwb.net -hkwzig.com -hkxbjt.com -hkxen.com -hky360.com -hkyukai.vip -hkyxfgs.com -hkyykq.com -hkzlcm.com -hl-bandao.com -hl-brushes.com -hl-epay.com -hl-hengsheng.com -hl95.com -hl95001.com -hlapi.com -hlashop.com -hlb2020.com -hlbcks.com -hlbe365.com -hlbeixiu.com -hlbeixiu.net -hlblz.com -hlbn.cc -hlbryy.com -hlcdn.cc -hlchsw.com -hlcm.net -hlcode.net -hld558.com -hldbtv.com -hldedu.com -hldfcom.com -hldgajjzd.com -hldgp.com -hldhouse.com -hldhuanbao.com -hldjob.com -hldjz8.com -hldmzg.com -hldnews.com -hldszxyy.com -hlduanjian.com -hledu.net -hlej.com -hletong.com -hlexp.com -hlgad.com -hlgcj.com -hlgdata.com -hlgnet.com -hlgnet.net -hlh.com -hlhfjt.com -hlhjapp.com -hlhmf.com -hlhqdj.com -hlhs.cc -hlhyc.com -hljcqjy.com -hljdata.net -hljgvc.com -hljgwy.net -hljgzkj.com -hljhgckj.com -hljiasen.com -hljjjb.com -hljjkfp.com -hljjytkj.com -hljpm.com -hljpost.com -hljradio.com -hljrcc.com -hljsdm.com -hljsph.com -hljszjxhw.com -hljtchina.com -hljtcm.com -hljtv.com -hljtx.com -hljucm.net -hljxgs.com -hljyestar.com -hljyqnj.com -hljyushi.com -hljzc.net -hljzl.icu -hlkd.pro -hlkkwl.com -hlkncse.com -hlktech.com -hlkznsb.com -hllinks.com -hllives.com -hlmmold.com -hlnhw.com -hlnmg.com -hlnpic.com -hlnpm.com -hlo-trade.com -hloong.com -hlpolice.com -hlpretty.net -hlqiaojia.com -hlqxj.com -hlread.com -hls-1.wamu.org -hls-video01.cdnvideo.ru -hls.cdn.ua -hls.kqed.org -hls.qguiyang.com -hls.qxtv0763.com -hls.wlrn.mobi -hlsdq.com -hlsimu.com -hltmsp.com -hltx.net -hlupr.com -hlvitamin.com -hlw1588.com -hlwarp.com -hlwidc.com -hlwjnm.com -hlwwhy.com -hlxky.com -hlxstipark.com -hlxsykd.com -hlxsz.com -hlxy.com -hlybar.com -hlyds.com -hlyiq.com -hlytec.com -hlyy8.com -hlyykp.com -hlzaojia.com -hlzq.com -hlzqgs.com -hlzzkj.com -hm-3223.net -hm-optics.com -hm025.com -hm120.com -hm152n.com -hm163.net -hm16888.net -hm169.com -hm588.com -hm5988.com -hmadgz.com -hmarathon.com -hmbzfjt.com -hmchina.com -hmcl.net -hmdx.net -hmedu.com -hmeili.com -hmf-china.com -hmfxw.com -hmgbtv.com -hmgj.com -hmgreat.com -hminvestment.com -hmj666.com -hmjblog.com -hmjc.org -hmlan.com -hmlcar.com -hmltec.com -hmly666.cc -hmmachine.com -hmmryk.com -hmnst.com -hmoe.link -hmplay.com -hmqg.com -hmqjsb.com -hmrczp.com -hmrsrc.com -hmsemi.com -hmszkj.com -hmtgo.com -hmting.com -hmtnew.com -hmtrhf.com -hmus.net -hmwdj.com -hmwzjs.com -hmx-led.com -hmx3556y0o.com -hmxixie.com -hmxw.com -hmxx.net -hmyzs.com -hmz.com -hmz8.com -hmzhtc.cc -hmzhtc.com -hmzixin.com -hmzjzx.com -hmzs.net -hmzx163.com -hn-binglang.com -hn-cbec.com -hn-hwqjxh.com -hn-medical.com -hn-xqlhw.com -hn0746.com -hn165.com -hn96520.com -hn9mu.com -hnacargo.com -hnacgs.com -hnaec.com -hnaec.org -hnaee.com -hnafxh.com -hnagroup.com -hnagroup.net -hnainfrastructure.com -hnair.com -hnair.net -hnaiya.com -hnamdi.com -hnangel.com -hnanqi.com -hnapay.com -hnasatc.com -hnaues.com -hnbaili.net -hnbemc.com -hnbidding.com -hnbits.com -hnblc.com -hnbljy.com -hnblly.com -hnbntv.com -hnbrush.com -hnbsq.com -hnbtcy.com -hnccpit.org -hnceg.com -hncfa.com -hncgkgjt.com -hnchaosu.com -hnchemtech.com -hnchuangxiangkj.com -hncj.com -hncloud.com -hncmsx.com -hncnedu.com -hncost.com -hncourt.org -hncpu.com -hncreate.com -hncsart.com -hncsmtr.com -hncsvod.com -hnct56.com -hnctw.com -hnctxy.com -hncu.net -hncwc.com -hncxwater.com -hncytxly.com -hncyzx.com -hndbsp.com -hndca.com -hndcyg.com -hndec.com -hndeguang.com -hndfbg.com -hndfsrmyy.com -hndgxh.com -hndhsyjt.com -hndlhx.com -hndlks.com -hndmtjc.com -hndnews.com -hndpf.org -hndpx.com -hnds88.com -hndscg.com -hndsyy.com -hndt.com -hndxzte.com -hndybus.com -hndysx.com -hndzxh.com -hnechz.com -hnedition.com -hnedutv.com -hnerkang.com -hnetn.com -hnetyy.net -hnfa.org -hnfapiao.com -hnfcis.com -hnfcjr.com -hnfck.com -hnfdx.com -hnfjz.com -hnfles.com -hnfudu.com -hnfyqmj.com -hnfysg.com -hngajs.com -hngangjiegou.com -hngbjy.com -hngbw.com -hngdkg.com -hngh.org -hnghzl.com -hngjj.net -hngjx.com -hngks.com -hngoldcorp.com -hngpmall.com -hngqjc.com -hngs.net -hngscloud.com -hngsetc.com -hngtrust.com -hngwg.com -hngwkj.net -hngwmt.com -hngwy.org -hngwyw.org -hngwzk.com -hngx.net -hngyms.com -hnh.cc -hnhaofang.com -hnhbyxdq.com -hnhcrn.com -hnhdxd.com -hnhflqgc.com -hnhfxd.com -hnhho.com -hnhj.net -hnhjjx.com -hnhlpp.com -hnhnled.com -hnhp.com -hnhsjt.com -hnht56.com -hnhtdg.com -hnhw.com -hnhwly.com -hnhxin.com -hnhxs.com -hnhxxk.com -hnhyfm.com -hnhylx.com -hnhyrc.com -hnhyt.com -hniec.org -hniic.com -hnijunhai.com -hninsure.com -hnisca.org -hniso.net -hnisvc.com -hnjbwh.com -hnjcly.com -hnjg.com -hnjiabao.com -hnjing.com -hnjing.net -hnjinmaizi.com -hnjkjn.com -hnjkw.net -hnjme.com -hnjmsk.com -hnjshzy.com -hnjsrcw.com -hnjtcl.com -hnjttz.com -hnjudarhr.com -hnjuhuo.com -hnjyyz.com -hnjzy.org -hnkcjt.com -hnks.com -hnksgf.com -hnktgame.com -hnktzz.com -hnkxy.com -hnkygas.com -hnkzy.com -hnlantian.com -hnlat.com -hnlawyer.org -hnlbdl.com -hnleisu.com -hnlens.com -hnliangku.com -hnlipu.com -hnlis.com -hnlshm.com -hnlxq.com -hnlzhd.com -hnlzw.net -hnmangshan.com -hnmcymy.com -hnmdtv.com -hnmfbw.com -hnmgjr.com -hnming.com -hnmjyy.com -hnmks.com -hnmlqianpan.com -hnmqtt.com -hnmrffm888.com -hnmsg.com -hnmsw.com -hnmudi.com -hnmuseum.com -hnmyjt.com -hnmzmy.com -hnnanshang.com -hnnbwdiaosu.com -hnnews.cc -hnnhyy.com -hnninglian.com -hnnkyy.com -hnnx.com -hnnxs.com -hnnyrzzl.com -hnnzwhyy.com -hnoak.com -hnoceanrace.com -hnoexpo.com -hnofc.com -hnoscar.com -hnpdig.com -hnpfw.com -hnpic.com -hnplanedu.com -hnpm.cc -hnpolice.com -hnpta.com -hnptschool.net -hnpwholesale.com.au -hnqczy.com -hnqfseed.com -hnqinshi.com -hnqlhj.com -hnqljj.com -hnqljt.com -hnqnw.com -hnquxing.com -hnquyou.com -hnqz.net -hnradio.com -hnrcjl.com -hnrcjob.com -hnrcsc.com -hnrcsc.net -hnrczpw.com -hnredcross.com -hnrich.net -hnrmb.com -hnrmtjg.com -hnrmzy.com -hnrpc.com -hnrsks.com -hnrszhjc.com -hnryly.com -hns4j.com -hns5j.com -hnsbxl.com -hnsd2fz.com -hnsdfz.org -hnsdzjy.com -hnsdzsrmyy.com -hnsfdc.com -hnsfjy.net -hnsggzy.com -hnsghsljt.com -hnsgkb.com -hnshengben.com -hnshqfz.com -hnshuntian.com -hnshyzx.com -hnsiia.com -hnsilane.com -hnsite.cc -hnsiwei.com -hnsjgroup.com -hnsjlh.com -hnsjrd.com -hnsktc.com -hnskxy.com -hnsky.net -hnslsdxy.com -hnslshyxh.com -hnslxh.com -hnslytz.com -hnsnnews.com -hnsoftedu.com -hnsong.net -hnsqtg.com -hnsrmyy.com -hnsrmyy.net -hnssjn.com -hnssyxx.com -hnst.org -hnstandards.com -hnster.com -hnstguolu.net -hnstjsjt.com -hnswljt.com -hnswsjy.com -hnswxy.com -hnsyda.com -hnsygroup.com -hnsyhj.com -hnsyhm.com -hnsyu.net -hnsyyq.com -hnsyzls.com -hnsyzxyy.com -hnszn.com -hnszyxy.com -hntba.com -hntbpm.com -hntchq.com -hntcm.com -hntcmc.net -hnteacher.net -hntele.com -hnthrq.com -hntiannuo.net -hntianyue.com -hntic.com -hnticai.com -hntican.com -hntkg1.com -hntky.com -hntlxh.com -hntncdn.com -hntobacco.com -hntqb.com -hntv.tv -hntxcd.com -hntxxy.com -hntzyy.com -hnubbs.com -hnucc.com -hnukai.com -hnwanglong.com -hnwbxx.com -hnwca.com -hnwcl.com -hnwczx.com -hnwd.com -hnwdhk.com -hnwhjy.com -hnwisecom.com -hnwlcm.com -hnwlxh.com -hnwlxh.net -hnwlycg.com -hnwsbz.com -hnwtqx.com -hnwtv.com -hnwwsjzx.com -hnwxw.net -hnwyxx.com -hnwz8.com -hnwzinfo.com -hnxdf.com -hnxfpfb.com -hnxggas.com -hnxhdn.com -hnxhnews.com -hnxhyl.com -hnxingda.com -hnxljkj.com -hnxmht.com -hnxtkg.com -hnxttv.com -hnxunch.com -hnxuntang.com -hnxxc.com -hnxxyz.com -hnxzctec.com -hnyanglao.com -hnyaoshan.com -hnyaosi.com -hnydf.net -hnydgl.com -hnyesf.com -hnyfkj.com -hnyichang.com -hnyingfang.com -hnyinhan.com -hnyixiao.com -hnyl.xyz -hnysfww.com -hnytgt.com -hnyuanhong.com -hnyuanyou.com -hnyuedu.com -hnyunji.com -hnyunsutong.com -hnyunzhiyi.com -hnyuyuhui.com -hnyydg.com -hnyygroup.com -hnyyws.com -hnyyxj.com -hnyyyfsyy.com -hnyyyz.com -hnyzfwlkj.com -hnyzzy.com -hnzdjsj.com -hnzfcgxh.com -hnzfgjj.com -hnzhangkun.com -hnzhaobiao.com -hnzhijiang.com -hnzhongzhuan.com -hnzhouyi.com -hnzhy.com -hnzjgdkj.com -hnzjip.com -hnzjj.com -hnzjyl.com -hnzkclouds.com -hnzkhbsb.com -hnzlyy.com -hnzm.vip -hnzoc.com -hnzose.com -hnzqw.com -hnzrsc.com -hnzsbw.com -hnzsxh.com -hnztb.org -hnztdq.com -hnztfs.com -hnztqzjx.com -hnzxyy.com -hnzycfc.com -hnzyfy.com -hnzywh.xyz -hnzyxckj.com -hnzyydx.com -hnzyzx.com -hnzzjob.com -hnzzlh.com -hnzzms.com -hnzzrc.com -hoau.net -hobalab.com -hobby-eagle.net -hobbyboss.com -hobosgroup.com -hocheymed.com -hochitech.com -hocode.com -hocodo.com -hodgen-china.com -hodiasflavor.com -hodo170.com -hodoop.com -hoehub.com -hofcc.com -hogacn.com -hogasky.com -hogesoft.com -hoghu.com -hogon17.com -hoho123.com -hoho666.com -hohode.com -hoilon.com -hoing.net -hojonn.com -hok5v5.com -hokai.com -hokori.online -hokparts.com -hold168.com -holder-pharm.com -holdhr.com -holdsteel.com -holdtwo.com -holichip.com -holike.com -holiland.com -holine.com -holkx.com -holleykingkong.com -hollischuang.com -hollisterco.com -hollwingroup.com -hollycrm.com -hollysource.com -hollysys.com -hollyuc.com -hollywant.com -holmesbio.com -holmesian.org -holoalpha.com -holsauto.com -holteksupport.com -holyfunny.com -holymalls.com -holyxiongan.com -home0311.com -home0538.com -home0668.com -home133.com -home178.com -home898.com -homearch.com -homearch.shop -homearch.store -homearch.vip -homeartschina.com -homebaseradiators.com -homebehind.com -homecdn.com -homed.me -homedgroup.com -homedo.com -homeindus.com -homeinframes.com -homeinmists.com -homeinns.com -homeintour.com -homekeji.com -homeking365.com -homekingcdn.com -homekoo.com -homekoocdn.com -homelandhotel.com -homelandol.com -homesir110.com -hometex114.com -hometexjoin.com -hometexnet.com -hometol.com -homey-household.com -homeyao.com -homhow.com -hommk.com -homolo.com -homolo.net -homsoboard.com -homsuncap.com -homylogistics.com -homyu.com -honaenergy.com -honbro.com -honchmedia.com -honco88.com -honda-sundiro.com -honder.com -hondugroup.com -honestmc.com -honestread.com -honesty-environ.com -honf.net -hong-lawfirm.com -hong-shun.com -hongbao.com -hongbao.sh -hongbao.show -hongbaoli.com -hongbeibang.com -hongbeicn.com -hongbizi.org -hongbo-group.com -hongbo-sh.com -hongbo100.com -hongboluo.com -hongcesys.com -hongchangpawn.com -hongchisw.com -hongchuangholding.com -hongda-steeltube.com -hongda.me -hongdaishu.com -hongdamach.com -hongdatec.com -hongdaym.com -hongdefund.com -hongdian.com -hongdianfund.com -hongdongpumps.com -hongdou.com -hongdoufm.com -hongdoulive.com -hongen.com -hongfasi.net -hongfengye.com -hongfuloi.com -hongganshebei.net -hongguogame.com -hongguoyouxi.com -honghaibengye.com -honghailt.com -honghaish.com -honghe-tech.com -hongheiku.com -honghu-muffler.com -honghuajz.com -honghuotai.com -honghusaas.com -honghusoft.com -hongjia138.com -hongjiang.info -hongjibp.com -hongjiejia.com -hongjigroupsz.com -hongjin2.com -hongjing-wh.com -hongjing.com -hongjing3.com -hongjingedu.com -hongjinleather.com -hongkang-life.com -hongkegd.com -hongkeyun.com -hongkongairlines.com -hongkonganran.com -hongkongmeixie.com -hongku.com -hongkun-tech.com -hongkunjinfu.com -honglan123.com -honglans.com -honglimfg.com -honglimingbiao.com -honglipai.net -honglumedia.com -hongm.com -hongmaoshiye.com -hongmeiti.com -hongmeiti.net -hongmen.cc -hongmen.com -hongmingbus.com -hongmo.xyz -hongmoka.com -hongmu.com -hongniang.com -hongniuzyimage.com -hongpai.com -hongpig.com -hongqi.tv -hongqiangmjg.com -hongqiaochina.com -hongqipharma.com -hongqipress.com -hongrenyiyuan.com -hongrida.com -hongrinongye.com -hongrizi.com -hongru.com -hongruihuanjing.com -hongruike.com -hongsanban.com -hongsat.com -hongsegs.com -hongsejiqing.com -hongsenlin.com -hongshan.com -hongshang-led.com -hongsheng-group.com -hongsheng.shop -hongshi88.com -hongshigroup.com -hongshipaint.com -hongshizi.org -hongshn.xyz -hongshu.com -hongshunet.com -hongshunth.com -hongshuxiao.com -hongsong.club -hongsong.info -hongsungifts.com -hongta.com -hongtaijixie.com -hongtair.com -hongtaiscp.com -hongtaiwy.com -hongtastock.com -hongtelecom.com -hongtong588.com -hongtongtube.com -hongttel.com -hongtu.net -hongtu56.com -hongtucad.com -hongtunetwork.com -hongvv.com -hongwenfeh.com -hongwu.com -hongwuhuan.com -hongxiangzaixian.com -hongxiaolong.com -hongxinglin.com -hongxingshangye.com -hongxingzhonggong.com -hongxingzn.com -hongxiu.cc -hongxiu.com -hongxiu158.com -hongyan-e.com -hongyan.info -hongyangsoft.com -hongyangxiezi.com -hongyanhr.com -hongyanjin.com -hongyanliren.com -hongyans.com -hongyantruck.com -hongyaomall.com -hongyawang.com -hongyejixie.com -hongyewuyang.com -hongyi5.com -hongyikun.com -hongyimarine.com -hongyimro.com -hongyirong.com -hongyu-qi.com -hongyuanpharm.com -hongyuanqh.com -hongyue.com -hongyuejiu.com -hongyugroup.com -hongyugz.com -hongyumedical.com -hongyunduo.com -hongyuntx.com -hongyunvren.com -hongyuzps.com -hongze.net -hongze365.com -hongzerc.com -hongzetai.com -hongzhengchem.com -hongzhentextile.com -hongzhigongzuowang.com -hongzhoukan.com -hongzhuangyuan.com -hongzhuojituan.com -honhan.ltd -honkaiimpact3.com -honkaistarrail.com -honkonlaser.com -honlyu.com -honor.com -honorfair.com -honorfile.com -honorofkings.com -honpc.com -honpery.com -honsea.com -honson-china.com -honsonch.com -honstarmemory.com -honsuntec.com -honyanwl.com -honycapital.com -honyfunds.com -honyone.com -honyuan.net -hooan.net -hoodinn.com -hoodong.com -hooenergy.com -hooh5.com -hookan.com -hoolai.com -hoolaigames.com -hoolee8.com -hoolinks.com -hoolo.tv -hoonup.com -hoop-archi.com -hoopchina.com -hoopugames.net -hoosho.com -hooshun.com -hoosuntec.com -hooya.hk -hooyagroup.com -hooyoo.com -hope-bridge.com -hope-m.com -hopebank.com -hopebeauty.com -hopebiol.com -hopebook.net -hopechart.com -hopecool.com -hopeda.com -hopegoocdn.com -hopehook.com -hopemedinc.com -hopenoah.com -hoperun.com -hopes-tech.com -hopetrip.com.hk -hopexr.com -hophingfood.com -hopoot.com -hopsontong.com -horace-liu.com -horain.net -horan.cc -horchips.com -hori-gz.com -hori3d.com -horibaprecision.com -horigames.com -horion.com -horionsw.com -horizon-china.com -horizon.ai -horizon.auto -horizon.cc -horizonfuelcell.com -horizonlawyers.com -horizonrcg.com -horizonsanya.com -horju.com -horn-yacht.com -hornetcorn.com -horosama.com -horou.com -horphoto.com -horsechinaone.com -horti-expo2019.com -hortor-comic.com -hortor.net -hortor002.com -hortor005.com -hortor020.com -hortorgames.com -horwathhtl-cn.com -hosane.com -hoscogroup.com -hosgs.com -hoshinesilicon.com -hoshiroko.com -hoshungrp.com -hosjoy.com -hoslen-sh.com -hosn168.com -hosno7.com -hosonglass.com -hosory.com -hosowin.com -hospit.net -hospital-cqjs.com -hospital-cqmu.com -hospital2.com -hospitalkg.com -hospitalshy.com -hospitalstar.com -hospite.com -host888.net -hostacc.net -hostacc1.com -hostacc2.com -hostadm.net -hostbbs.net -hostbuf.com -hostdie.com -hostgw.net -hostidc.net -hostkvm.com -hostloc.me -hostmonit.com -hostoexp.com -hostxen.com -hot0755.com -hotalk.com -hotata.com -hotborn.com -hotchenghong.com -hotdb.com -hoteamsoft.com -hoteastday.com -hotel-ochsen-hardheim.com -hotelbaijin.com -hotelcis.com -hotelgg.com -hoteljianguo.com -hotelpanpacific.com -hotelsjianguo.com -hotelvi.com -hotelyunos.com -hotent.com -hotent.xyz -hotgamehl.com -hotgopark.com -hotiis.com -hotkey123.com -hotkidclub.com -hotking.com -hotlcd.com -hotlinegames-jp.net -hotnewx.com -hotone.com -hotoneaudio.com -hotoos.com -hotpotstq.com -hotpub.com -hotread.com -hotsales.net -hotsnow.club -hotsoonapp.com -hotsoonapp.net -hotsoonvideo.com -hotsoonvideo.net -hotsoonzb.com -hotsoonzb.net -hotssp.com -hotstoday.com -hottechsemi.com -hottui.com -hotwatchsreplica.com -hotwind.net -hotwindbox.com -hotwon.com -hotxf.com -hotyihao.com -hou5.com -houcaller.com -houdao.com -houdao.net -houdask.com -houdewl.com -houdy.com -houfaka.com -houfangyiyao.com -houge.com -houhoucn.com -houjia.cc -houjiji.com -houjt.com -houkai.com -houkuanshop.com -houlangsports.com -houmoai.com -houngfuh.com -houniaohao.com -houniaotrip.com -houniaoyc.com -houpukeji.com -houqinbao.com -houqun.net -houquner.com -hourt-cert.com -hourui-arch.net -house086.com -house178.com -house365.com -house5.net -house510.com -house86.com -houseimg.com -houshaoan.com -housoo.com -houwenfei.com -houwuedu.com -houxue.com -houyicaiji.com -houyuantuan.com -houzhibo.com -houzhiwang.com -houzi8.com -hovfree.com -howbuy.com -howeipharm.com -howelllighting.com -howellsto.com -howjoin.com -howlapm.com -howmay.com -howsci.com -howtoing.com -howxm.com -howyouinternational.com -howzhi.com -hoxing.com -hoxue.com -hoyakeji.com -hoyatod.com -hoyi-tech.com -hoyibox.xyz -hoyip.com -hoyo.link -hozest.com -hozin.com -hozonauto.com -hp-marathon.com -hp.com -hp123.com -hp888.com -hpbgb.com -hpblog.net -hpc.cloud -hpccake.com -hpccube.com -hpculturegroup.com -hpearx.com -hpeft.com -hpepea.com -hpgamestream.com -hpglw.com -hpgzf.com -hph123.com -hphwa.com -hpicorp.net -hpigc.com -hpjd.com -hplyy.com -hpmicro.com -hpnfjx.com -hpoi.net -hprt.com -hprx.com -hps-sh.com -hpstore-china.com -hpstore.cc -hptea.com -hpv112.com -hpwin.com -hpwjs.com -hpwu.com -hpwxc.com -hpyiqi.com -hpyk.com -hpzhatu.com -hq-mart.com -hq-minerals.com -hq0564.com -hq114.net -hq88.com -hqbd.com -hqbnb.com -hqbsh.com -hqbuy.com -hqbuycdn.com -hqc-china.com -hqcanyin.com -hqcg1984.com -hqchip.com -hqcr.com -hqdlsn.com -hqdoc.com -hqdoor.com -hqengroup.com -hqepay.com -hqew.com -hqew.net -hqewimg.com -hqfastner.com -hqgjzz.com -hqgq.com -hqhb.com -hqhl.net -hqhop.com -hqhospital.com -hqhot.com -hqhtfl.com -hqidi.com -hqis.org -hqiye.com -hqjcjj.com -hqjy.com -hqls.com -hqpcb.com -hqps.com -hqqt.com -hqresearch.org -hqrvs.com -hqsec.com -hqsgw.com -hqshuaimi.com -hqsmartcloud.com -hqsoft.cc -hqswuye.com -hqthw.com -hqtong.com -hqts.com -hqubbs.com -hquu.net -hqvchina.com -hqwhw.com -hqwx.com -hqxlad.com -hqyc.com -hqygyg.com -hqyj.com -hqyjng.com -hqyjsuccess.com -hqyl.com -hqys.net -hqyt.net -hqytgyh.com -hqyun.com -hqyxjy.com -hqyzx.com -hqzhou.com -hr-channel.com -hr-mp.com -hr-self.com -hr-welink.com -hr002.com -hr025.com -hr0571.com -hr0660.com -hr0715.com -hr0752.com -hr0753.com -hr0766.com -hr0915.com -hr1000.com -hr10000.com -hr135.com -hr2002.com -hr2003.com -hr2trainer.com -hr33.com -hr369.com -hr3ds.com -hr448.com -hr510.com -hr5156.com -hr558.net -hr668.com -hr730.com -hr763.com -hr78.net -hr9000.com -hr987.com -hrayw.com -hrb-dg.com -hrbanlv.com -hrbaodian.com -hrbar.com -hrbbcf.com -hrbbleasing.com -hrbeduy.com -hrbehkj.com -hrbesd.com -hrbj.net -hrbjianchewang.com -hrbjishunbanjia.com -hrbjunxin.com -hrbmama.com -hrbmilan.com -hrbpattern.com -hrbpolarland.com -hrbpt.com -hrbshuiwu.com -hrbswx.com -hrbtv.net -hrbuyu.com -hrbyafeng.com -hrbzdty.com -hrbzhsd.com -hrbzyy.com -hrcf168.com -hrcfc.com -hrcwelink.com -hrday.com -hrddqc.com -href.lu -hrenh.com -hrexam.com -hrfc.net -hrflc.com -hrfoods.com -hrgsmz.com -hrgxyy.com -hrhuiyi.com -hrhy365.com -hrintl.com.hk -hrjkjt.com -hrloo.com -hrm100.com -hrmarket.net -hrmtgroup.com -hro-cosmetics.com -hroot.co -hroot.com -hrpackage.com -hrrsj.com -hrs100.com -hrsalon.org -hrsay.com -hrsee.com -hrsel.com -hrsoft-china.com -hrsteelpipe.com -hrtechchina.com -hrtfin.com -hrtn.net -hrtx.com -hruikang.com -hrvouge.com -hrwuu.com -hrxiongan.com -hrxz.com -hrzy.cc -hs-bianma.com -hs-biopharm.com -hs-defense.com -hs-fe.com -hs-outlets.com -hs-sz.com -hs.net -hs10000.com -hs13z.net -hs2z.net -hs326.com -hs499.com -hs5g.com -hs65.com -hs85.com -hsakyy.com -hsay.com -hsayi.com -hsbank.cc -hsbbs.com -hsbdc.com -hsbianma.com -hscarbonfibre.com -hscbw.com -hscc.com -hscfjt.com -hschina.net -hscn.com -hscode.net -hscode123.com -hsdbg.com -hsdcw.com -hsddyy.com -hsdfzp.com -hsdjxh.org -hsdjz.com -hseda.com -hsehome.com -hsehome.org -hsez.net -hsfh56.com -hsfund.com -hsfyyy.com -hsfzexsg.com -hsfzxjy.site -hsg2oi3c.com -hsgf.net -hsgjj.com -hsgjysj.com -hshan.com -hshdyw.com -hshhlj.com -hshj.cc -hshl360.com -hshsjy.com -hshsxkj.com -hshton.com -hshuiyi.com -hsjk.com -hsjkaoyan.com -hsjpgzx.com -hsjrhy.com -hsjt1983.com -hsjy.com -hsjy.net -hskehong.com -hskgchina.com -hskun.com -hsleu.com -hslid.net -hslight.net -hslvshan.com -hslxhl.com -hsm-intl.com -hsmap.com -hsmdb.com -hsmob.com -hsmrt.com -hsnewsnet.com -hsoow.com -hspeletizadora.com -hspharm.com -hspm.net -hspress.net -hsqh.net -hsqhfunds.com -hsqhospital.com -hsqjfw.com -hsqt888.com -hsqyy.com -hsrc.tv -hsrcw.com -hsrexpo.com -hsrjtk.com -hsrtd.club -hssdk.com -hssdtest.com -hssenglish.com -hssjyj.com -hsskyy.com -hsslab.com -hssrc.com -hssyy.com -hsszfx.com -hst.com -hst1966.net -hstars.net -hstbroker.com -hstczkj.com -hstd.com -hstong.com -hstpizza.com -hstspace.com -hstypay.com -hstyre.com -hsufuchifoods.com -hsuyeung.com -hswatersupply.com -hsweb.me -hswell.com -hswkzy.com -hswmb.com -hswyvz.com -hswzyh.com -hswzyj.com -hsx99.com -hsxedu.com -hsxjjs.com -hsxt.com -hsxt.net -hsy188.com -hsyaguanjg.com -hsyanyi.com -hsybyh.com -hsyk023.com -hsysupply.com -hsyuntai.com -hsyunyi.com -hsyyf.me -hsyymusic.com -hsyzg.net -hszk.org -hszq6.com -hszq8.com -hszsb.org -hszsfz.com -hszsz.com -hsztbzx.com -hszw.org -hszxlzx.com -hszy8.com -hszyy8.com -hszzsyzx.net -hszzzx.net -ht-cao.com -ht-chem.com -ht-med.com -ht-motor.com -ht-rc.com -ht-saae.com -ht-tech.com -ht-valve.com -ht0775.com -ht1832.com -ht88.com -ht9.com -htai51.com -htaizhou.com -htanwang.com -htaocloud.com -htback.com -htbmsc.com -htc-media.com -htcases.com -htcee.com -htcis.net -htcrrc.com -htcui.com -htcxfund.com -htcxms.com -htd2000.com -htdata.com -htdtire.com -htdxcl.com -hteacher.net -htech360.com -hteos.com -htexam.com -htexam.net -htfcn.com -htffund.com -htfilter.com -htfoxit.com -htfpartner.com -htfutures.com -htg520.com -htgjjl.com -htgkdz.com -htguosheng.com -htgwf.com -hth.com -hti-instrument.com -htidc.com -htimgs.com -htinfor.com -htinns.com -htinnsjm.com -htinv.com -htjinju.com -htjob.net -htjs.net -htjsq.com -htjsq.mobi -htkaoyan.com -htknow.com -htky365.com -html5-app.com -html5china.com -html5code.net -html5dw.com -html5mark.com -html5plus.org -html5train.com -html5tricks.com -htmlai.com -htmleaf.com -htmlsucai.com -htmycn.com -htnice.com -htong.com -htoo.vip -htood.com -htool.com -htqjy.com -htqyy.com -htrip.biz -hts-auto.com -htsamc.com -htsc.com -htsec.com -htsec.net -htsham.com -htsjj.com -htslauto.com -htsprings.com -htsubsea.com -httdsj.com -htths.com -httingshu.com -httpcanary.com -httpcn.com -httpdvb.slave.ttcatv.tv -httpsok.com -httpssl.com -htucloud.com -htudata.com -htudns.com -hturl.cc -htv123.com -htvaas.com -htwcq.com -htwed.com -htwx.net -htx.cc -htxgcw.com -htxgssb.com -htxrc.com -htxxpx.com -htxy.net -htycs.com -htyduck.com -htyhm.com -htyou.com -htys.cc -htys123.com -htyssdf.com -htyswzzgw.com -htyunwang.com -htzdj.com -htzdznjs.com -htzhgd.com -htzipr.com -hu.com -hua-chips.com -hua-lan.com -hua-yong.com -hua.com -hua1000.com -hua168.com -hua5.com -huaaiangel.com -huaan-cpa.com -huaao-trust.com -huaaojiaoyu.com -huaaoranqi.com -huaaosoft.com -huaaotech.com -huaat.com -huabaike.com -huaban.com -huaban.net -huabanimg.com -huabanpro.com -huabbao.com -huabeicw.com -huabian.com -huabianyl.com -huabke.com -huabo.net -huabocam.com -huabokeji.com -huabot.com -huabuqi.com -huacai-tech.com -huacai.com -huacaijia.com -huacaobk.com -huacaole.com -huacemedia.com -huachang-alu.com -huachengenjoy.com -huachengjx.com -huachenholdings.com -huachenit.com -huachenyuanyang.com -huachuangroup.net -huaco908.com -huacolor.com -huacooling.com -huada120.com -huadabz.com -huadachem.com -huadalvmei.com -huadan.com -huadehyd.com -huaderack.com -huadian360.com -huadiansc.com -huadie.com -huadihealth.com -huadiplan.com -huadonghospital.com -huadongmedia.com -huadongtrack.com -huadream.com -huaduanbio.com -huadun315.com -huaduocai.net -huaease.net -huaeda.com -huaer.cc -huaerzi.store -huafaceg.com -huafagroup.com -huafaih.com -huafajituan.com -huafang.com -huafangdichan.com -huafasports.com -huafatech.com -huafeimould.com -huafeng-al.com -huafeng.com -huafengaw.com -huafens.com -huafer.cc -huafu.com -huagolf.com -huagongkaoyan.com -huagujs.com -huaguoshan.com -huaguoyuan.com -huagupai.com -huahai-gz.com -huahaibiochem.com -huahaige.com -huahaijiaju.com -huahaipharm.com -huahanart.com -huahanbook.com -huahao.com -huahengbio.com -huahengrobot.com -huahengsk.com -huahong-group.com -huahonggk.com -huahongjt.com -huahtc.com -huahua777.com -huahuacaocao.com -huahuamaoyi.com -huahuan.com -huahuihealth.com -huahuizhineng.com -huahuo.com -huai.gg -huaian.com -huaiangj.com -huaiansgyy.com -huaibaobei.com -huaibei.com -huaibeihosp.com -huaicai.cc -huaien.com -huaigang.com -huaihai.tv -huaihaixiang.com -huaijiufu.com -huaimg.com -huaimi.com -huain.com -huainanhy.com -huainannet.com -huainanren.net -huainet.com -huairen588.com -huairougreatwallmarathon.com -huairtv.com -huairui59.com -huaitao.vip -huaixin88.com -huaiyangnews.com -huaji.com -huaji.store -huajia.cc -huajiakeji.com -huajialishe.com -huajian-al.com -huajiangai.com -huajiankang.com -huajianmed.com -huajiantong.com -huajiao.com -huajiaow.com -huajiaowu.com -huajicnc.com -huajieai.com -huajifen.com -huajin100.com -huajinct.com -huajing-inf.com -huajingsec.com -huajuanma.com -huajuanyun.com -huajuhotel.com -huajx.com -huakaifilter.com -huake-weixin.com -huakewang.com -huakeyun.com -huakpower.com -hualady.com -hualaikeji.com -hualaiyun.com -hualala.com -hualan-tech.com -hualanbio.com -hualay.net -hualet.org -hualewl.net -hualiandie.com -hualiandressing.com -hualianmining.com -hualiantv.com -hualianxin.com -hualing-pm.com -hualingjiangong.com -hualiuniversity.com -hualong-sz.com -hualongholding.com -hualongxiang.com -hualu5.com -hualumedia.com -hualuwood.com -hualv.com -hualvtu.com -huaman.pub -huamanlou.cc -huamanlou.com -huamao.com -huamaobook.com -huamaorice.com -huamaoshuo.com -huamedicine.com -huameili.net -huameiyuezi.com -huamengxiaoshuo.com -huami.com -huaming.site -huamou.com -huamu.com -huamuwo.com -huan-tai.com -huan.tv -huananauctionctf.com -huananyiyao.com -huananzhi.com -huanbao.com -huanbaoscx.com -huanbearing.com -huanbeieloan.com -huanbeiloan.com -huanbeipic.com -huandie.com -huandonglg.com -huane.net -huanenet.com -huanergy.com -huanfeng580.com -huang-jerryc.com -huang-jiang.com -huangbaoche.com -huangbaoquan.com -huangbowei.com -huangchujunyulong.com -huangchun.net -huangdao.in -huangdao.net -huangdc.com -huangea.com -huangfusl.net -huanggangmarathon.com -huanggao.net -huanggaole.com -huangguanluo.com -huangh.com -huanghaicollege.com -huanghanlian.com -huanghegongshui.com -huanghehr.com -huanghelou.cc -huanghepiao.com -huanghuacheng.com -huangjiemin.com -huangjihuang.com -huangka.com -huangkong.net -huanglei.me -huangli.com -huangli8.com -huangliangbo.com -huanglong.com -huangma.com -huangqi1688.com -huangshaotian.com -huangshimarathon.com -huangwei.me -huangwei.pro -huangxin.dev -huangxinwei.com -huangyao.work -huangye.net -huangye51.com -huangye88.com -huangye88.net -huangyixiaoshuo.com -huangyuehe.com -huangyuhui.net -huangyunkun.com -huangzz.xyz -huanhaoba.com -huanhuanhuishou.com -huanhuanxin.com -huanhuba.com -huanidc.com -huanju.net -huanjutang.com -huanjuyun.com -huankkk.com -huanle.com -huanle800.com -huanlecdn.com -huanlefish.com -huanleguang.com -huanletang.com -huanlewan.net -huanlezhuan.com -huanlingpharm.com -huanlingxiuxian.com -huanlj.com -huanmusic.com -huanong1688.com -huanongdao.com -huanpeng.com -huanpingge.com -huanq.com -huanqiu-ltd.com -huanqiu.com -huanqiu.org -huanqiu56.com -huanqiuauto.com -huanqiuchuguo.com -huanqiujiemi.com -huanqiukexue.com -huanqiumil.com -huanqiutape.com -huanqiuw.com -huanqiuyimin.com -huanqu-tec.com -huanqunquan.com -huansengifts.com -huanshoulv.com -huante.com -huantest.com -huanting.cc -huantour.com -huanuomenye.com -huanwen.com -huanwenwen.com -huanxi.com -huanxia.com -huanxiangji.com -huanximedia.com -huanxinchem.com -huanxinfluoro.com -huanxing1904.com -huanxingedu.com -huanxio.com -huanxiongdd.com -huanxiyl.com -huanyatour.com -huanyingzq.com -huanyouji.com -huanyuantech.com -huanyudns.com -huanyule.com -huanyumid.com -huanyutv.com -huanzhu101.com -huanzhucv.com -huaoe.com -huaon.com -huaougas.com -huapai.com -huapiaoer.com -huapiaoliang.com -huapinwang.com -huapontshengchem.com -huaqiaobang.com -huaqidigital.com -huaqin.com -huaqinchi.com -huaqingkeji.net -huaqingtax.com -huaqiu.com -huaraytech.com -huaren-scm.com -huarenyingyu.com -huarenyizhan.com -huari-furniture.com -huari.com -huaroem.com -huarongdao.com -huarongled.com -huarui1952.com -huaruiaero.com -huaruicom.com -huaruidns.com -huaruisales.com -huas.co -huash.com -huashangcbbtv.com -huashangedu.com -huashanglawyer.com -huashangtop.com -huashanxin.com -huashen-edu.com -huashen-group.com -huashen6.com -huasheng-automation.com -huasheng100.com -huashengchn.com -huashengdaili.com -huashenghaoche.com -huashengjia100.com -huashengls.com -huashengshiyan.com -huashengtoutiao.com -huashi-sh.com -huashi.cc -huashi6.com -huashichang.com -huashidongman.com -huashijie.art -huashilm.com -huashipharmacymtalionlineybpay.com -huashitong.net -huashphoto.com -huashui.com -huashuitax.com -huashunxinan.net -huasimtour.com -huasiwood.com -huasongwang.com -huasu.net -huasuankeji.com -huasuhui.com -huasuokeji.com -huasyun.com -huatai-elec.com -huatai-pb.com -huatai.com -huatai1993.com -huataiyc.com -huatan365.com -huatans.com -huatec.com -huatech.net -huategas.com -huatengsci.com -huati.cc -huatian-hotel.com -huatian.net -huatianxiangsu.com -huatong-logistics.com -huatongcloud.com -huatu.com -huatugz.com -huatuo007.com -huatuowenda.com -huatuoyf.com -huaue.com -huavisa.com -huawan.com -huawangzhixun.com -huawanyun.com -huawe.com -huawei-3com.com -huawei.asia -huawei.com -huawei.eu -huawei.ru -huaweiacad.com -huaweiapaas.com -huaweiapi.com -huaweicloud-dns.com -huaweicloud-dns.net -huaweicloud-dns.org -huaweicloud-idme.com -huaweicloud-koophone.com -huaweicloud-smn.com -huaweicloud-smn.net -huaweicloud.com -huaweicloudapis.com -huaweicloudlive.com -huaweicloudsite.com -huaweicloudwaf.com -huaweidevice.com -huaweidun.com -huaweielab.com -huaweifile.com -huaweiief.com -huaweiita.com -huaweils.com -huaweimall.com -huaweimarine.com -huaweimarketplace.com -huaweimossel.com -huaweioneaccess.com -huaweirtc.com -huaweisafedns.com -huaweishop.net -huaweisoft.com -huaweisre.com -huaweistatic.com -huaweiuniversity.com -huaweiyun.com -huaweizdl.com -huawenwin.com -huawo-wear.com -huawote.com -huaxi.net -huaxi100.com -huaxia.com -huaxia77.com -huaxiabeidou.com -huaxiaeye.com -huaxiaf.com -huaxiagg.com -huaxiajianyan.com -huaxiald.com -huaxialiangzi.com -huaxiangdiao.com -huaxianpai.com -huaxianzhaopin.com -huaxiao5.com -huaxiaobaokeji.com -huaxiapawn.com -huaxiashiwen.com -huaxiasz.com -huaxiataike.com -huaxiazi.com -huaxin303.com -huaxinbaojie.com -huaxincem.com -huaxing.com -huaxingas.com -huaxingchem.com -huaxinhz.com -huaxinorthop.com -huaxinpark.com -huaxiong.com -huaxirc.com -huaxj.net -huaxuezoo.com -huaxumag.com -huaxunbaili.com -huaxunholdings.com -huayang.net -huayanghui.net -huayangsolar.com -huayanwater.com -huayaocc.com -huayaody.com -huaye.com -huayi-faucet.com -huayicn.com -huayidiaosu.com -huayielec.com -huayijiahe.com -huayilawfirm.com -huayilighting.com -huayimedia.com -huayiming.com -huayin114.com -huayingglass.com -huayingrc.com -huayingsc.com -huayinhealth.com -huayinjapan.com -huayinlab.com -huayinyiliao.com -huayitaitech.com -huayitongkeji.com -huayitongtai.com -huayiweibo.com -huayiwork.com -huayiyuan.com -huayou.com -huayoumengze.com -huayoutianyu.com -huayuan-print.com -huayuanlcd.com -huayuchaxiang.com -huayue119.com -huayueivf.com -huayufilter.com -huayug.com -huayuhua.com -huayulandmarkhotel.com -huayun.com -huayunfl.com -huayuzj.com -huazhangautomation.com -huazhanggroup.com -huazhanwire.com -huazhen-gs.com -huazhen2008.com -huazhen2008.net -huazhengcaiwu.com -huazhengwuye.com -huazhenjiaoyu.com -huazhiedu.com -huazhiweilai.com -huazhixingchina.com -huazhongcar.com -huazhongcnc.com -huazhongtimes.com -huazhu.com -huazhuanapp.com -huazhucorp.com -huazirc.com -hubamdi.com -hubashihuo.com -hubcyts.com -hubei88.com -hubeiamc.com -hubeibbs.net -hubeibidding.com -hubeichengji.com -hubeici.com -hubeidaily.net -hubeifc.com -hubeifurui.com -hubeigongfu.com -hubeihome.net -hubeiip.com -hubeijingjunf.com -hubeikj.com -hubeinet.com -hubeipbx.com -hubeiport.com -hubeiqiche.org -hubeiwsd.com -hubeixuekao.com -hubeiyanjiusheng.com -hubeiyongtai.com -hubeizhengao.com -hubiao168.com -hubing.online -hubsound.com -hubstudio.vip -hubulab.com -hubwd.com -hubwiz.com -huc08.com -hucais.com -hucdn.com -huceg.com -huceo.com -huchaowei.com -hucheng100.com -huchihuchi.com -hudai.com -hudong.com -hudong100.com -hudong100.net -hudong100.org -hudongad.com -hudongba.com -hudongcdn.com -hudongkejian.com -hudongku.net -hudun.com -hudunsoft.com -huduntech.com -huelead.com -huenhuenfood.com -hufangkeji.com -hufangyun.com -hufe.cc -hufqekp.com -hugane.com -hugcar.com -hugd.com -hugecdn168.com -hugecore.net -hugeland.com -hugetall.com -hugong-js.com -hugong.com -huhaha.net -huhanba.com -huhaoyang.com -huhexian.com -huhoo.com -huhoo.net -huhua.net -huhuang.net -huhudi.com -huhuguanjia.com -huhui-sh.com -huhustory.com -huhutian.com -huhutong315.com -huhuxiong.com -hui-ben.com -hui-chao.com -hui.net -hui10.com -hui10.net -hui100.com -hui43.com -hui800.com -hui800.net -huians.com -huibag.com -huibiao-group.com -huibiaoinfo.com -huibo.com -huibojob.com -huiboparking.com -huiborobot.com -huicaishui.net -huiche.com -huiche100.com -huicheimg.com -huichenghuijia.com -huichengip.com -huichengy.com -huichewang.com -huichongduo.com -huichuangjialife.com -huichuangzhanlan.com -huicx7.com -huida18.com -huidabbs.com -huidafrp.com -huidagroup.com -huidan.net -huidang.com -huidaocaishui.com -huidaqg.com -huidawanan.com -huidazhe.vip -huiddo.com -huide-medical.com -huiderui.com -huideyecai.com -huidian.net -huidiantech.com -huidu.com -huidu.net -huidu001.com -huiduogang.com -huiemall.com -huierming.com -huierp.com -huifachina.com -huifacms.com -huifayun.com -huifeng-zj.com -huifengtools.com -huifengxinxi.com -huifengzhuzao.com -huifenqi.com -huifu.com -huifudashi.com -huifusihai.com -huifutz.com -huifuzhinan.com -huigaiji.com -huigao-magnetics.com -huigezi.org -huiguanwang.com -huiguiyong.com -huih110.com -huihaha.com -huihaicenter.com -huihaicn.com -huihaiyiyao.com -huihe56.com -huihefz.com -huihengmedical.com -huihestone.com -huihezx.com -huihua365.com -huihua8.com -huihuaren.com -huii.cc -huiidea.com -huiji.wiki -huijiame.com -huijian-land.com -huijiangroup.com -huijiaoyun.com -huijiazhileng.com -huijidata.com -huijie.shop -huijiegroup.com -huijiewei.com -huijimall.com -huijing.org -huijinggroup.com -huijinshang.com -huijinwater.com -huijistatic.com -huijitrans.com -huijiwiki.com -huiju.cool -huijucn.com -huikao8.com -huikex.com -huikundz.com -huila88.com -huilaimi.com -huilan-online.com -huilan.com -huilanyujia.com -huiliangapp.com -huilianyi.com -huililong.com -huilintyre.com -huilinwang.com -huilitc.com -huiliu.net -huiliubao.com -huilm.com -huilog.com -huilongsen.com -huilongtech.com -huilunbio.com -huilv8.com -huilvbiao.com -huilvwang.com -huilvyankuang.com -huilw.com -huilyn.com -huimaiche.com -huimaihs.com -huiman.net -huimei.net -huimeijiaozi.com -huimeisports.com -huimeiyp.com -huimeizr.com -huimengchem.com -huimengya.com -huimiaokeji.com -huimin111.com -huimincz.com -huimingcn.com -huimingjia.com -huimwang.com -huinaimei.com -huing.net -huinkj.net -huion.com -huiqia.net -huiqianfan.com -huiqibaike.com -huiqiyidiantong.com -huiqiyu.com -huiqk.com -huiqudsp.com -huiqunchina.com -huiquzu.com -huirde.com -huirenshenbao.com -huirenyy.com -huiris.com -huiruanzhuang.com -huirui-tech.com -huirui1688.com -huisem.com -huisencapital.com -huisenky.com -huishandairy.com -huishangbao.com -huishangol.com -huishantech.com -huisheng.fm -huishengaudio.com -huishenghuo.ink -huishengqianzhushou.com -huishida.com -huishou1680.com -huishoubao.com -huishoubaojiadan.com -huishouigbt.com -huishoujie.com -huishoujiuwu.com -huishoushang.com -huishouyx.com -huishuaka.com -huishuirencai.com -huishuitech.com -huisituo.com -huisj.com -huisky.com -huisou.com -huisports.com -huisuanzhang.com -huisucn.com -huisuoping.com -huitao.net -huitaoche.com -huitaoyouhui.com -huitengpipe.com -huitongqingsuan.com -huitoubj.com -huitouche.com -huitoukefood.com -huitouyan.com -huitouyu.com -huitouzi.com -huitu.com -huitu.tech -huitu8.com -huitun.com -huiurl.com -huivo.com -huiwang.net -huiweikeji.com -huiwenda.com -huiwww.com -huixianginvest.com -huixiangtiandi.com -huixiaoer.com -huixiaoer.net -huixineducation.com -huixinggroup.com -huixingsoft.com -huixinli.com -huixinyiyuan.com -huixinyt.com -huixinyun.com -huixuanjiasu.com -huixueba.net -huiyan315.com -huiyangranqi.com -huiyankan.com -huiyaohuyu.com -huiybb.com -huiyda.com -huiyelaw.com -huiyi365.net -huiyi8.com -huiyi9e.com -huiyiabc.com -huiyiai.net -huiyicq.net -huiyihealth.com -huiyijh.com -huiyinxun.com -huiyizhuo.com -huiyou.com -huiyou027.com -huiyouhotels.com -huiyuandao.com -huiyuanjia.net -huiyuansoft.com -huiyuantang.com -huiyuanyy.com -huiyucn.com -huiyuehz.com -huiyumedia.com -huiyutools.com -huize.com -huizecdn.com -huizhaofang.com -huizhek.com -huizhengmachinery.com -huizhiguanghua.com -huizhihuyu.com -huizhijiaxun.com -huizhilin.com -huizhilin.net -huizhimob.com -huizhioptech.com -huizhou-marathon.com -huizhouf.com -huiziyuan.net -huizone.com -huizuche.com -huizucloud.com -huizuoyuezi.com -huizustore.com -hujia.org -hujiang.com -hujianggroup.com -hujibbs.com -hujingnb.com -huke88.com -hukeck.com -hukecs.com -hukecwx.com -hukefjb.com -hukehyh.com -hukelc.com -hukenb.com -hukesxm.com -hukewq.com -hukexyy.com -hukou021.com -hukou365.com -hukuangroup.com -hulai.com -hulianfang.com -hulianmaibo.com -hulianwangchuangye.com -hulinhong.com -hulixin.com -huliyx.com -huluboshi.com -huludz.com -huluer.com -huluip.com -huluip.tech -huluo.com -hulusaas.com -hulusi.com -hulutrip.com -huluwa.cc -huluwa365.com -huluwa8.com -huluxia.com -huluxia.net -huluzc.com -humaiyouxi.com -humanplustech.com -humanrights-china.org -humanwellcaps.com -humanwellhb.com -humaotec.com -humblit.com -humengyun.com -humensec.com -huming.com -hummcars.com -humpline.com -hunaen.com -hunan-changda.com -hunan-huasheng.com -hunan100km.com -hunanbestall.com -hunancatv.com -hunaneu.com -hunangaozhi.com -hunangy.com -hunanhaihong.com -hunaniptv.com -hunanjz.com -hunanpea.com -hunantv.com -hunanxingxin.com -hunanyuneng.com -hunanzp.com -hunanzy.com -hunau.net -hunbei.com -hunbei1.com -hunbei2.com -hunbei3.com -hunbei4.com -hunbei5.com -hunbohui.info -hunbys.com -hunche.net -hunchun123.com -hundredcent.com -hundsun.com -hundun.net -hundx.com -hunger-valley.com -hunli100.com -hunlian100.com -hunlihu.com -hunlihu1.com -hunlihunli.com -hunliji.com -hunlimama.com -hunlimao.com -hunmiao.com -hunsh.net -huntchance.com -huntermailfocus.com -hunteron.com -huntic.com -huntkey.com -huntkeydiy.com -huntsbot.com -hunuo.com -hunyinyiyuan.com -huoas.com -huoban.com -huobanbot.com -huobanhuyu.com -huobanimg.com -huobanjs.com -huobanmall.com -huobanniu.com -huobaowang.com -huobaoweishang.com -huobaoyx.com -huobi.io -huocai.com -huochai.cc -huochai.mobi -huochaihy.com -huoche.com -huoche.net -huoche.wiki -huocheba.com -huocheci.com -huochehuan.com -huochepiao.com -huochepiao.net -huocheso.com -huocms.com -huodao.hk -huodong.org -huodong.store -huodong5.com -huodonghui.net -huodongjia.com -huodongju.com -huodongpro.com -huodongshu.com -huodongwang.com -huodongxing.com -huodongzhongguo.com -huoduan.com -huofar.com -huofutp.com -huogongdian.com -huohao8.com -huohoo.com -huohuacdn.com -huohuahudong.com -huohudun.com -huohuo.com -huoideas.com -huoji.com -huojiaba.com -huojitui.com -huoju365.com -huokebao.net -huokeying.com -huokeyuan.com -huolala.co -huolala.work -huole.com -huolea.com -huoli.com -huolieniao.com -huolieyun.com -huolinhe.com -huolishaonianwang.com -huolug.com -huomakeji.com -huomao.com -huomaotv.com -huomaqun.com -huoming.com -huomujin.com -huonan.net -huonao.com -huoniuniu.com -huopinyuan.com -huopu.com -huoqibao.com -huoqiuw.com -huosdk.com -huoshan.cc -huoshan.club -huoshan.com -huoshancdn.com -huoshangroup.com -huoshanimg.com -huoshanlive.com -huoshanparty.com -huoshanstatic.com -huoshante8.com -huoshanvideo.net -huoshanvod.com -huoshanxiaoshipin.net -huoshanzhibo.com -huoshanzhibo.net -huoshanzhufang.com -huoshen.com -huoshen99.com -huoshi.shop -huosu.com -huowan.com -huowanes.com -huoxiaoyi.com -huoxing.com -huoxing24.com -huoxingyu.com -huoxingzi.com -huoxun.com -huoyan.com -huoyan.io -huoyanio.com -huoyantu.com -huoyanyunying.com -huoyfish.com -huoying.com -huoyuan.mobi -huoyugame.com -huoyuyan.com -huoziyin.com -hupan.com -hupanedu.com -hupanoled.com -hupo.com -hupo.tv -hupozhidao.com -hupu.com -hupu.gg -hupu.io -hupucdn.com -hupujrs.com -hupun.com -hur05100kns.com -hur05111kns.com -hur05120kns.com -hurom.vip -hurricane618.me -hurricanechip.com -hurun.net -hurys.com -husadw.com -husenji.com -hushangcaifu.com -husini.net -husiyang.com -hust-laser.com -hust-snde.com -hust-wuxi.com -hust.cc -hust.online -hustcad.com -hustlife.com -hustlzp.com -hustmei.com -hustnews.com -hustoj.com -hustonline.net -hustp.com -hustsofc.tech -hustunique.com -hustwenhua.net -hustxb.com -hustyy.com -husubao.com -hutaojie.com -hutaolinight.com -hutegy.com -hutew.com -hutong-school.com -hutong360.com -hutongcdn.com -hutoufeng.net -hutui9.com -hutuii.com -hutusi.com -huuhoo.com -huuing.com -huwaibbs.com -huwaizb.com -huwatech.club -huway.com -huweihuang.com -huweishen.com -huwi8.com -hux6.com -huxianwang.com -huxiaofan.com -huxiaoshi.com -huxiji999.com -huxijizhongguo.com -huxingroup.com -huxishiye.com -huxiu.com -huxiu.link -huxiucdn.com -huya.com -huyajs.com -huyall.com -huyanapp.com -huyanbao.com -huyanjie.com -huyaos.com -huyaruanwen.com -huyatvns.com -huyayue.com -huyn.com -huyouxiong.com -huyueidc.com -huyuekj.com -huyuncdn.com -huyuning.com -huyuxx.com -huzhan.com -huzhang.com -huzhao1.com -huzheng.org -huzhongxin.com -huzhoumj.com -huzhoumuseum.com -huzicaotang.com -huzwater.com -hvacstar.com -hvchan.com -hvcnitl.com -hvcxo.com -hvdiy.com -hvread.com -hvsgqlo.xyz -hvtong.com -hw-ai.com -hw-go.net -hw-supply.com -hw-tm.com -hw100k.com -hw3static.com -hw555.com -hw99.com -hwactive.com -hwad.net -hwagain.com -hwait.com -hwangda.com -hwanw.com -hwaq.cc -hwashi.com -hwasmart.com -hwastro.com -hwasunpharma.com -hwatson.com -hwbanaa.com -hwbaoan.com -hwbim.com -hwbs.org -hwbz.net -hwccpc.com -hwcdnsre.com -hwcloudlive.com -hwclouds-dns.com -hwclouds-dns.net -hwclouds.com -hwclouds.mobi -hwclouds.net -hwclouds.org -hwcloudsite.com -hwcloudvis.com -hwclzq.com -hwcpb.com -hwcrazy.com -hwehs.com -hweimall.com -hweventgrid.com -hwfcw.com -hwgis.com -hwhidc.com -hwht.com -hwj.com -hwjianmo.com -hwjm-mold.com -hwjyw.com -hwlchain.com -hwlifting.com -hwlpz.com -hwocloud.com -hwoled.com -hworld.com -hwpan.com -hwrecruit.com -hwshu.com -hwsupplychain.com -hwtelcloud.com -hwtrip.com -hwtzdl.com -hwwt2.com -hwwt8.com -hwxc.com -hwxda.com -hwxfc.com -hwxjp.com -hwxnet.com -hwxuanliuqi.com -hwyton.com -hwyxxx.com -hwzn.com -hwzuku.com -hwzyjt.com -hx-parking.com -hx-qt.com -hx-r.com -hx008.com -hx008.net -hx110.com -hx1h.com -hx2car.com -hx2cars.com -hx36.net -hx416.com -hx5658.com -hx818.com -hx8886.com -hx95.com -hx99.net -hxacc.com -hxage.com -hxbdf120.com -hxbdxled.com -hxbl.com -hxbsth.com -hxbus.net -hxc-power.com -hxccc.org -hxcd.net -hxcdn.net -hxchem.net -hxclouds.com -hxcsbj.com -hxct.com -hxct.ltd -hxd56.com -hxdec.com -hxdi.com -hxdkfp.com -hxdkj88.com -hxdrisk.com -hxdsbgg.com -hxdspa.com -hxdtekf.com -hxen.com -hxepawn.com -hxf111.com -hxfilm.com -hxfjw.com -hxfy888.com -hxfzzx.com -hxgame.net -hxgqw.com -hxgro.com -hxgroup.com -hxgs.com -hxgs.net -hxgwott.com -hxhaoyu.com -hxhost.com -hxhssw.com -hxiangjia.com -hxing.com -hxinq.com -hxjbh.com -hxjhcloud.com -hxjinqiao.com -hxjiot.com -hxjiqi.com -hxjnyy.com -hxjsjkj.com -hxjstech.com -hxjwang.com -hxjxs.com -hxjxsw.com -hxkba.com -hxkfh.com -hxkgjt.com -hxkj.cc -hxkj.vip -hxkq.net -hxkq.org -hxkqyxzz.net -hxland.com -hxlbc.com -hxlbd.com -hxledu.com -hxlhjt.com -hxljjt.com -hxlot.com -hxlsw.com -hxltcj.com -hxlxx.com -hxm5.com -hxmeishi.com -hxmlyy.com -hxmryy.com -hxnews.com -hxnk.com -hxny.com -hxnygx.com -hxpdd.com -hxposuiji.com -hxq123456.com -hxqc.com -hxqc.mobi -hxqcgf.com -hxqcjt.com -hxqgczx.com -hxqnj.org -hxqtedu.com -hxr100.com -hxrc.com -hxsd.com -hxsd.tv -hxseal.com -hxsec.com -hxsjjt.com -hxsmart.com -hxsme.org -hxspjt.com -hxssyy.com -hxstrive.com -hxsts.com -hxsyjt.net -hxt5.com -hxtk.com -hxtrip.com -hxtxxw.com -hxtzgroup.com -hxwglm.com -hxwzhs.com -hxx.net -hxxkw.org -hxxl6.com -hxyd.cc -hxydup.com -hxyjw.com -hxys.com -hxytea.com -hxytw.com -hxyxt.com -hxyyw.com -hxz.ink -hxzlsgs.com -hy-china.com -hy-express.com -hy-f.com -hy-la.com -hy-lamp.com -hy-titan.com -hy-tp.com -hy-zr.com -hy01888.com -hy05190134.com -hy120.com -hy123.com -hy1234567.com -hy163.com -hy1862.com -hy2046.com -hy345.com -hy4.cc -hy628.com -hy8881.com -hy9698.com -hy9905.com -hyagrochem.com -hyagv.com -hyahm.com -hyaimed.com -hyakkaryouran.date -hyb2b.com -hybase.com -hybbs.net -hybbtree.com -hybssy.com -hyc.com -hyccw.com -hycdn.com -hycet.com -hycfw.com -hycgy.com -hyckjic.com -hycn.com -hydarts.com -hydbest.com -hyddd.com -hydesolar.com -hydst.com -hydun.com -hydz999.com -hydzfp.com -hydzswyxgs.com -hyec.com -hyedu.com -hyexpo.com -hyext.com -hyey.com -hyeycg.com -hyflc.com -hyfutures.com -hyfxbj.com -hygdbq.com -hyggfx.com -hygkit.com -hygmgroup.com -hygoldcup.com -hygxbgd.com -hygy361.com -hyham.com -hyhcdn.com -hyhdtg.com -hyhhgroup.com -hyhjzc.com -hyhl66.com -hyhospital.com -hyhqjt.com -hyhro.com -hyhscm.com -hyht.fun -hyhuo.com -hyhxt.net -hyhy.cc -hyhyn.com -hyilp.com -hyimmi.com -hyipchina.com -hyj999.com -hyjgxx.com -hyjhgy.com -hyjnpx.com -hyjxmx.com -hykang.com -hykcsoft.com -hykiln.com -hykj.cc -hyl1.tv -hylanda.com -hylandslaw.com -hylicreate.com -hylik.net -hylname.com -hymake.com -hymall.net -hymater.com -hymcu.com -hymicrofiber.com -hymicrosystem.com -hymjy.net -hymson.com -hynet.co -hynetek.com -hynews.net -hyngj.com -hynixic.com -hynpay.com -hynyw.com -hyocr.com -hyouda.com -hyp-arch.com -hypefolio.com -hypefolio.net -hyper.sh -hypercachenet.com -hypercachenode.com -hypergryph.com -hypergryph.net -hypersilicon.com -hyperstrong.com -hyphencargo.com -hyplc.com -hypnotherapyforeverybody.com -hyppmm.com -hyptec.com -hypyimei.com -hyqcw.com -hyqdxcl.com -hyrainbow.com -hysbz.com -hysec.com -hyseim.com -hyshengnian.org -hyshi.net -hysound.com -hysteeltube.com -hyswcn.com -hyswjt.net -hysyyl.com -hysz.net -hyt01.com -hyt368.com -hytbj.com -hytcshare.com -hytd.com -hytera.com -hytxhd.com -hytzqb.com -hyun.cc -hyundai-chhm.com -hyundai-hmtc.com -hyuuhit.com -hywater.net -hywaternet.com -hywh1999.com -hywjjz.com -hywx.com -hyx1927.com -hyxiang888.xyz -hyxrmt.com -hyxt.com -hyy99.com -hyyf.net -hyyl.net -hyyoa.com -hyypjs.com -hyyun.com -hyyykj.net -hyyyy.net -hyyzy.com -hyzc.com -hyzc.net -hyzcservice.com -hyzenhospital.com -hyzhcdn.com -hyznjs.com -hyzqxsb.com -hyzui.com -hz-alw.com -hz-bdqn.com -hz-ch.com -hz-delixi.com -hz-emc.com -hz-etest.com -hz-expo.com -hz-gaoke.com -hz-gn.com -hz-hospital.com -hz-jsyg.com -hz-kedi.com -hz-moon.com -hz-pharm.com -hz-polar.com -hz-spring.net -hz-tire.com -hz-tt.com -hz-winone.com -hz-xiaofei.com -hz-xin.com -hz-zhuce.com -hz-zq.com -hz2jx.com -hz2y.com -hz3201.com -hz3ds.com -hz3y.com -hz66.com -hz6z.com -hz7hospital.com -hz8z.net -hz9hospital.com -hzabjt.com -hzaee.com -hzahy.com -hzaiguojiang.com -hzairport.com -hzajjt.com -hzallina.com -hzamcare.com -hzaoz.com -hzapu.com -hzapuqi.com -hzaygb.com -hzazh.com -hzbcdp.com -hzbcxg.com -hzbh.com -hzbhjy.com -hzbhsh.com -hzbianqing.com -hzbianqu.com -hzbike.com -hzbjwy.com -hzbk.net -hzbojin.com -hzbomed.com -hzbook.com -hzboxing.com -hzboxuan.com -hzbpm.com -hzbx.com -hzc.com -hzcables.com -hzcbparking.com -hzcbs.com -hzccb.net -hzcctech.com -hzcd120.com -hzcda.com -hzcdhcyy.com -hzcdycyy.com -hzcdyyhc.com -hzcdyyyc.com -hzcekong.com -hzch.org -hzchaoxiang.com -hzchengdun.com -hzchengdun.net -hzchgj.com -hzcjtz.com -hzcmc.com -hzcmdq.com -hzcnc.com -hzcollege.com -hzcopyright.com -hzcourse.com -hzctjs.com -hzctkj.com -hzctxh.com -hzcy.com -hzczjt.com -hzdajiangdong.com -hzdare.com -hzddwk.com -hzdelian.com -hzdely.com -hzdgjc.com -hzdjr.com -hzdjy.com -hzdledu.com -hzdlrj.com -hzdmpower.com -hzdongyu.com -hzdq.com -hzdsrmyy.com -hzdtv.tv -hzdx.com -hzebang.com -hzec-tencentclb.cloud -hzec-tencentclb.com -hzec-tencentclb.net -hzec-tencentclb.work -hzecsemir.com -hzeeec.com -hzeg.com -hzelec.com -hzepd.com -hzeyun.com -hzfc.cc -hzfc365.com -hzfeat.com -hzfeiyao.com -hzfesco.com -hzfj.com -hzfllbj.com -hzfolo.com -hzfpay.com -hzfstz.com -hzfucai.net -hzfuturehos.com -hzfwq.com -hzfzxh.com -hzgcec.com -hzgcgl.com -hzggfw.com -hzgh.org -hzgjj.com -hzglsb.com -hzgmwl.com -hzgolong.com -hzgoyuan.com -hzgrow.com -hzgrys.net -hzgthb.com -hzguode.com -hzguojiao.com -hzgwzn.com -hzgxr.com -hzgymd.com -hzgzsoft.com -hzh0775.com -hzh1.com -hzhadx.com -hzhanbo.com -hzhchj.com -hzhcia.com -hzhcloud.com -hzhebei.com -hzhehua.com -hzhehui.com -hzhengding.com -hzhengshang.com -hzhengtong.com -hzhf.com -hzhfdc.com -hzhfzx.com -hzhike.com -hzhisoft.com -hzhkai.com -hzhl666.com -hzhlcc.com -hzhlgzx.net -hzhlpt.com -hzhltec.com -hzhm888.com -hzhnano.com -hzhnzdh.com -hzhongou.com -hzhqdj.com -hzhqqz.com -hzhr.com -hzhssy.com -hzhstb.com -hzhtlh.com -hzhuning.com -hzhuti.com -hzhx.com -hzhxfy88888.com -hzhxsy.com -hzhy163.com -hzhyqp.com -hziam.com -hzimc.com -hzinfo.com -hzins.com -hzins.net -hzj7.com -hzjbzg.com -hzjcbg.com -hzjcp.com -hzjcqczl.com -hzjcxh.com -hzjdi.net -hzjiaro.com -hzjiaxiao.com -hzjie7.com -hzjingxian.com -hzjinlu.com -hzjiuyimo.com -hzjizhun.com -hzjlcs.com -hzjljt.com -hzjmjl.com -hzjndz.com -hzjqhy.com -hzjsjl.com -hzjtfw.com -hzjtgcjt.com -hzjtjl.com -hzjtjypt.com -hzjunglepay.com -hzjuzhi.com -hzjxapp.com -hzjxhy.com -hzjxj.com -hzjxmd.com -hzjyks.net -hzjynet.com -hzjywl.net -hzjzjc.com -hzjzmed.com -hzjzxh.com -hzkaiming.com -hzkangji.com -hzkayo.com -hzkcck.com -hzkemengda.com -hzkesheng.com -hzkjcyy.com -hzkjgf.com -hzkjn.com -hzkln.com -hzklyy.com -hzkqyyjt.com -hzkszx.com -hzlange.com -hzlawyer.net -hzlczx.com -hzleaper.com -hzleshun.com -hzlgzs.net -hzliangdong.com -hzlingxing.com -hzljlyy.com -hzlp.com -hzlqgroup.com -hzlrbiotech.com -hzlrhb.com -hzlug.org -hzlyhs.com -hzmama.net -hzman.net -hzmansheng.com -hzmantu.com -hzmba.com -hzmcd.com -hzmctech.com -hzmdch.com -hzmdcnc.com -hzmeizhuo.com -hzmest.com -hzmetro.com -hzmgdj.com -hzmixc.com -hzmkdq.com -hzmobius.com -hzmogo.com -hzmrcar.com -hzmsholding.com -hzmt001.com -hzmtg.com -hzmtjx.com -hzmxkj.net -hzmygg.com -hzmylike.com -hzncc.com -hznet.tv -hznetwk.com -hznewface.com -hznews.com -hznkg.com -hznrkj.com -hznsh.com -hzntjt.com -hznzcn.com -hzok.net -hzorganicchem.com -hzou.net -hzpcs.com -hzpgc.com -hzpswy.com -hzpzs.net -hzqfy.com -hzqiuxue.com -hzqj.com -hzqjdz.net -hzqlpt.com -hzqsn.com -hzqszl.com -hzqvod.com -hzqx.com -hzqxbg.com -hzqyhydrogen.com -hzr1.com -hzragine.com -hzranqu.com -hzrc.com -hzrczx.net -hzrdjt.com -hzredream.com -hzrib.com -hzriyue.com -hzrjjg.com -hzrjkf.com -hzrjmy.com -hzrlciec.com -hzrlhy.com -hzrobam.com -hzrqgf.com -hzrsl.com -hzrxsoft.com -hzs2sc.com -hzs360.com -hzsaifang.com -hzsanjiaomao.com -hzsaso.com -hzsbysj.com -hzsbz.com -hzsco.com -hzscxsj.com -hzsdjzgs.com -hzsdlrmyy.com -hzsdyfzfxxx.com -hzseedcorp.com -hzsgjj.com -hzsh666.com -hzshanjie.com -hzshantai.com -hzshengjia.com -hzshudian.com -hzshuren.com -hzshw.com -hzsjnxh.org -hzslgf.com -hzslgzx.com -hzsmbio.com -hzsnowcom.com -hzsource.com -hzsp.com -hzspeed.com -hzsports.net -hzsqhb.com -hzsqsmart.com -hzsswjt.com -hzstad.com -hzstad88.com -hzstar.com -hzstarshuaier.com -hzsteel.com -hzstlzxyy.com -hzsun.com -hzsunup.com -hzswmotor.com -hzswysyy.com -hzszls.com -hzszyyy.com -hzt2006.com -hztbc.com -hztchj.com -hztcm.net -hztdjt.com -hzteaexpo.com -hztek.com -hzthinker.net -hztianchuang.com -hztianlang.com -hztiger.com -hztssy.com -hztuoliang.com -hztvmg.com -hztx.com -hztygd.com -hztzkj.net -hzvillas.com -hzvtc.net -hzwan.com -hzwatch.com -hzwaye.com -hzweiheng.com -hzwentou.com -hzwer.com -hzwf.link -hzwgc.com -hzwindpower.com -hzwlt.com -hzwluo.com -hzwmhp.com -hzwmw.com -hzwomenmarathon.com -hzwotu.com -hzwqscl.com -hzwsa.com -hzwsjyjt.com -hzwtech.com -hzwyx.net -hzxbcs.com -hzxddt.com -hzxded.com -hzxdfpr.com -hzxdship.com -hzxiangbin.com -hzxiangshang.com -hzxiaoya.com -hzxinglong-ip.com -hzxiyuege.com -hzxqf.com -hzxsjgxx.com -hzxsjtzt.com -hzxuanming.com -hzxuhong.com -hzxy888.com -hzxyns.com -hzxywlkj.com -hzyanglao.com -hzyaohao.com -hzyapu.com -hzyb.com -hzyestar.com -hzyhjg.com -hzyhzp.com -hzyidc.com -hzyjd.com -hzyllh.com -hzylpco.com -hzyn888.com -hzyoka.com -hzyoumai.com -hzyoushu.com -hzyqys.com -hzyread.com -hzyuejie.com -hzyuewan.com -hzywinf.com -hzyxart.com -hzyxuart.com -hzyye.com -hzyys.com -hzyz.net -hzyzhp.com -hzyzxx.net -hzzbco.com -hzzckg.com -hzzfxx.com -hzzh.com -hzzhaobiao.com -hzzhhd.com -hzzhileng.com -hzzhiwei.com -hzzhjs.com -hzzhonggang.net -hzzhonghao.com -hzzhuode.com -hzzhyl.com -hzzhzm.com -hzzjjsgc.com -hzzjzk.com -hzzkj.net -hzzp.com -hzzqzc.com -hzzrmc.com -hzzsfs.com -hzzsxh.com -hzztkj.com -hzzuyin.com -hzzx365.com -hzzxyjhyy.com -hzzxyy.com -hzzzpt.com -i-27.name -i-520.net -i-bei.com -i-bigdatas.net -i-click.com -i-conference.org -i-excellence.com -i-f.work -i-fanr.com -i-firefly.com -i-haitao.com -i-hifi.com -i-lewan.com -i-lu.cc -i-m.dev -i-manji.com -i-markit.com -i-md.com -i-miguo.com -i-mock.com -i-modec.com -i-mofang.com -i-morefun.com -i-mylab.com -i-neeq.com -i-now.com -i-oranges.com -i-same.com -i-sensjs.com -i-shu.com -i-shunxi.com -i-size.com -i-swimmer.com -i-tetris.com -i-tongfang.com -i-vista.org -i-weichuan.com -i-xiaohaibao.com -i-xinnuo.com -i-xoron.com -i-z-e.com -i.dell.com -i.ipinyou.com -i.pki.goog -i007.vip -i027.com -i0349.com -i0469.com -i0597.com -i0734.com -i0746.com -i075.com -i0766.com -i0898.org -i11r.com -i121.net -i1608.com -i16949.com -i171.com -i1758.com -i1766.com -i1r.cc -i2863.com -i2abc.com -i2eas.com -i2finance.net -i2ya.com -i360mall.com -i369.com -i3839.com -i3abox.com -i3ciebwk6ixfb.com -i3done.com -i3dpworld.com -i3geek.com -i3gt.com -i3smot.com -i3vsoft.com -i3yuan.com -i3z.cc -i4px.com -i4t.com -i51game.com -i52tt.com -i5399.com -i56r.com -i588ku.com -i5a6.com -i5i6.net -i5p.com -i5tea.com -i66wan.com -i6879.com -i72.com -i77p94y6yi.com -i7car.com -i7fh.com -i7gg.com -i7ol.com -i7play.com -i7txt.cc -i8956.com -i8i8i8.com -i8tq.com -i91pv.com -i987.com -i9978.net -i9dhjx.ru -i9mr.com -i9rht.com -i9star.com -ia-shenzhen.com -iacstar.com -iaddata.com -iadmob.com -iadmore.com -iadtracker.com -iaeac.org -iagefans.com -iai-robot.com -iaion.com -iaitao.com -iaixue.com -iajl.org -ialicdn.com -ialloc.com -iamabio.com -iambocai.com -iameduwork.com -iamfisher.net -iamips.com -iamle.com -iamlintao.com -iamlm.com -iamshuaidi.com -iamsujie.com -iamtxt.com -iamvloger.com -iamvlogger.com -iamxcb.com -iamxiaoming.net -iamxk.com -ianbaby.com -iandun.com -ianvisa.com -ianxing.com -iaocwbk.com -iaoligame.com -iaoyou.com -iaozi.com -iaozu.com -iape-js.com -iapijy.com -iapkk.com -iapolo.com -iappad.com -iappdaily.com -iapprank.com -iapps.im -iappsafe.com -iappsign.com -iappstoday.com -iapptry.com -iarlejz.com -iars-wuhan.com -iask-media.com -iask.com -iask.in -iaskbus.com -iaskgo.com -iaskhot.com -iasmr.cc -iat-auto.com -iautodaily.com -iautodraw.com -iautopress.com -iavira.com -iaviva.com -iavlife.com -iaxure.com -iazhi.com -ib-china.com -ibaba88.com -ibabyjoy.com -ibadboy.net -ibailve.com -ibaiqiu.com -ibaitiao.com -ibaizhu.com -ibanana.club -ibanbu.com -ibanggo.com -ibangkf.com -ibangquan.com -ibangtiao.com -ibanma.net -ibanquan.com -ibantang.com -ibanyu.com -ibaobay.com -ibaoji.cc -ibaoji.com -ibaossl.com -ibaotu.com -ibaoxiu.net -ibaralioho.com -ibashu.net -ibayapp.com -ibb2b.com -ibbwhat.com -ibcet.org -ibczy.com -ibdxiguaimg.com -ibdxigualive.com -ibdxiguastatic.com -ibdxiguavod.com -ibeidiao.com -ibeifeng.com -ibeiig.com -ibenxi.com -ibestapp.com -ibestfanli.com -ibeta.me -ibianma.com -ibicn.com -ibidian.com -ibiji.com -ibingniao.com -ibiquge.info -ibiquge.la -ibiquge.net -ibiquges.com -ibiquges.info -ibiquke.com -ibiquku.la -ibiquxs.info -ibiquxs.net -ibiquzw.info -ibireme.com -ibituo.com -ibixiaxs.com -ibkcn.com -ibkstore.com -ibl520.com -iblimg.com -iblog.ren -ibloger.net -iblue.com -iblue.me -ibluefrog.com -ibluesocial.com -iblwl.com -ibm-dns.com -ibmcampus.com -ibmfwqdl.com -ibmhz.com -ibmnb.com -ibmwclub.com -ibobscs.com -ibodao.com -ibodyhome.com -iboohee.com -ibook8.com -ibookba.com -ibooker.cc -ibookstar.com -ibooloo.com -ibornclinic.com -ibossay.com -ibox.art -iboxpay.com -ibreader.com -ibreeno.com -ibribery.com -ibrilife.com -ibroadlink.com -ibruce.info -ibscdn.com -ibtsat.com -ibucm.com -ibuick.com -ibuscloud.com -ibuscloud.net -ibuychem.com -ibw.cc -ibx8.com -ibytedapm.com -ic-captain.com -ic-king.com -ic-ldo.com -ic-leasing.com -ic-mag.com -ic-valley.com -ic2china.com -ic37.com -ic71.com -ic72.com -ic98.com -ic9cube.com -ica-alliance.org -icaew-china.com -icafe28.net -icafe8.com -icafe8.net -icai.vip -icaidao.com -icaifu.com -icaile.com -icall.me -ican-x.com -ican365.net -icandata.com -icaneasy.com -icangshu111.com -icantrans.com -icanvideo.com -icarbonx.com -icardfinancial.com -icaredbd.com -icasiso.com -icastlewar.com -icax.org -icbc-at.com -icbc-axa.com -icbc-cz.com -icbc-ltd.com -icbc-uk.com -icbc-us.com -icbc.ae -icbc.be -icbc.co.id -icbc.co.jp -icbc.co.kr -icbc.co.nl -icbc.com.au -icbc.com.es -icbc.com.kh -icbc.com.kw -icbc.com.la -icbc.com.mm -icbc.com.mo -icbc.com.mx -icbc.com.pe -icbc.com.pk -icbc.com.qa -icbc.com.sg -icbc.com.vn -icbc.de -icbc.eu -icbc.jp -icbc.lu -icbcalmaty.kz -icbcamg.com -icbcasia.com -icbcbr.com.br -icbci.com.hk -icbcina.com -icbcindia.com -icbcit.com -icbcleasing.com -icbclondon.com -icbcme.ae -icbcmoscow.ru -icbcmy.com -icbcnz.com -icbcpanama.com -icbcparis.fr -icbcpl.com -icbcstandard.com -icbcstandardbank.com -icbcstandardresources.com -icbcstandardsecurities.com -icbcswiss.com -icbcthai.com -icbcwallet.com -icbeexpo.com -icbkfs.com -icbkus.com -icbuy.com -icc.link -icc365.com -iccchina.com -iccessh.org -iccgame.com -iccgame.net -icchaoren.com -iccidchaxun.com -iccircle.com -iccsz.com -iccvlog.com -icdeal.com -icdemi.com -icdmall.com -icdn2.com -icdream.com -icdt-conf.com -ice.work -ice1000.org -ice138.com -iceasy.com -icebear.me -icebound.cc -icecast-ruvr.cdnvideo.ru -icecloud-car.com -icedropper.com -iceflowsoft.com -icefoxgame.com -icehotisland.com -iceinto.com -icekylin.online -icemle.org -icentown.com -icepie.net -iceread.com -iceriverbj.com -icesimba.com -icesofts.com -icetorrent.org -icevirtuallibrary.com -icevpn.org -icewingcc.com -icewoo.com -icfans.com -icfcc.com -icfgblog.com -icfqs.com -icfusions.com -icg.cc -icgbl.org -icgoo.net -icgu.com -ich8.com -ichacha.com -ichanfeng.com -ichang8.com -ichangtou.com -ichangyan.com -ichanyu.com -ichaoshangyue.com -ichaotao.com -ichaotu.com -ichat800.com -ichatcn.com -ichdata.com -icheese.net -ichehome.com -ichemsafe.com -ichenfu.com -ichengli.com -ichengsi.com -ichengyun.net -ichennan.com -icheruby.net -icheshi.com -ichezhan.com -ichhlj.com -ichika.cc -ichinaceo.com -ichinaenergy.com -ichong123.com -ichongdao.com -ichtcm.com -ichuanglan.com -ichuangye.com -ichuanyi.com -ichuguang.com -ichunqiu.com -ichunt.com -ichzh.com -iciba.com -iciba.net -icicicic.com -icignacmb.com -icinfo.net -icirculation.com -icitizens.net -icitymobile.com -icixun.com -iciyuan.com -icjs.ink -ickeep.com -icketang.com -ickey.cc -ickimg.com -iclabcn.com -iclicash.com -iclickstatic.com -icliexpo.com -icljt.com -icloud-power.com -icloudcity.com -icloudgslb.com -icloudnative.io -icloudnews.net -iclouds.work -icloudv6.com -icloudwaf.com -icmaxgroup.com -icme14.org -icminer.com -icmomo.com -icmp.link -icmsdev.com -icnal.com -icnano-tech.com -icncpc.com -icnjob.com -icnkr.com -icntv.tv -icntvcdn.com -ico-deli.com -icoat.cc -icoc.bz -icoc.in -icoc.me -icoc.vc -icodelogic.com -icoderobot.com -icofchina.com -icolor8.com -icomuimi.com -iconntech.com -icoolby.com -icoonal.xyz -icoou.com -icoremail.net -icos8.com -icosky.com -icostapp.com -icosz.com -icot.com -icourse163.com -icourse163.org -icourses163.com -icourses163.org -icourt.cc -icp.red -icp100.net -icp21.com -icpapi.com -icpcdn.com -icpcw.com -icpdaili.com -icpdf.com -icpeexpo.com -icpenguin.com -icpenguin.net -icphu.com -icpisp.net -icpkuaiban.net -icplishi.com -icqmwrhm.com -ics-sec.com -ics.design -icshanghai.com -icsisia.com -icslx.com -icsoc.net -icson.com -icspec.com -icsprout.com -icstreet.com -icsuns.com -icswb.com -ict18.com -ict361.com -ict88.com -ictbda.com -ictcsr.org -ictdns.cloud -ictdns.fun -ictdns.icu -ictdns.store -ictdns.tech -ictehi.com -ictest8.com -ictlce.com -ictown.com -ictp-ap.org -ictpaas.com -ictun.com -ictuniv.com -iculture.cc -icustomslawyer.com -icv-ip.com -icvcs.com -icver.com -icvip.com -icxbk.com -icxinli.com -icy-capital.com -icytown.com -icyuyan.net -icz.com -iczhiku.com -iczoom.com -id-bear.com -id-photo-verify.com -id4r.com -id4r.net -id57.com -ida-a.org -idaasksyun.com -idachu.com -idacn.org -idadt.com -idailycar.com -idaima.com -idangyang.com -idanpianji.com -idaocao.com -idaotuo.com -idatacube.com -idataforces.com -idatage.com -idatagx.com -idataway.com -idatawz.com -idayer.com -idbhost.com -idc-icp.com -idc-status.com -idc002.com -idc021.com -idc027.net -idc029.com -idc123.com -idc129.com -idc1680.com -idc180.com -idc218.com -idc31.com -idc35.com -idc4.com -idc400.com -idc45.com -idc789.com -idc917.com -idcay.com -idcbdy.com -idcbest.com -idcbest.hk -idccenter.net -idcchacha.com -idccom.net -idccun.com -idcd.com -idcdoc.com -idceb.com -idcfengye.com -idcgcloudcs.com -idchz.com -idchz.net -idcicp.com -idcicpdns.com -idcjf.com -idckx.com -idcloudbase.com -idcmz.com -idcoffer.com -idcpu.com -idcquan.com -idcsec.com -idcser.com -idcsh.com -idcsmart.com -idcsp.com -idcspy.com -idcspy.net -idcss.com -idctalk.com -idctq.com -idcug.com -idcum.net -idcun.com -idcvendor.com -idcvip.net -idcwn.com -idcwp.com -idcys.com -idcyunwei.org -idczone.net -idd1.com -ideabody.com -ideacarbon.org -ideacms.net -ideacreated.com -ideaflow.pro -ideagou.com -ideaintellij.com -idealbags.com -idealcontrol.com -idealdeposition.com -idealeer.com -idealideapromos.com -idealjj.com -idealshanghai.com -ideanote.cc -ideapool.tv -ideappt.com -idearhanyu.com -ideasr.com -ideassoft.com -ideation.love -ideazhao.com -ideepin.com -ideerled.com -idejian.com -idejian.net -iden123.com -idepu.org -idesktopcal.com -idevbase.com -idevz.org -idgeeks.net -idgou.com -idgvc.com -idianchou.com -idianfa.com -idiankj.com -idianshijia.com -idiaoyan.com -idigi.net -idlegog.com -idloves.com -idmzj.com -idnscloud.com -ido-love.com -ido512.com -idoacg.com -idocbank.com -idocv.com -idodb.com -idol001.com -idolmoba.com -idom.me -idong.ren -idongde.com -idongdong.com -idongniu.com -idonguapi.com -idongzhi.com -idooshu.com -idosend.com -idotools.com -idoupiao.com -idouqu.com -idourl.com -idouyinliving.com -idouyinpic.com -idouyinstatic.com -idouyinvod.com -idouzi.com -idoyun.com -idqqimg.com -idreamsky.com -idreamsoft.com -idrools.com -idrwl.com -idscn.net -idshi.com -idsky.net -idsoo.com -idspub.net -idss.shop -idsuipai.com -idtcdn.com -idtechwh.com -idu9.com -iduba.com -iduiying.com -idukaqi.com -iduochong.com -iduodou.com -iduokan.net -iduomi.cc -idux-vw.com -idwzs.com -idwzx.com -idx365.com -ie13.com -ie515.com -ie525.com -ie57.com -ie815.com -ie915.com -ie935.com -ieasn.com -ieasou.com -ieasy123.com -ieasyclick.net -ieasytech.com -ieasytest.net -ieayoio.com -iecdn.com -iecidc.com -iecity.com -iecnews.com -iecnu.com -iecool.com -iecworld.com -ieduchina.com -ieduglobe.com -ieechina.com -ieee-jas.net -ieee.org -ieeepower.com -ieeewifi.com -ieepa.org -ieevchina.com -iefang.com -iefans.net -ieffect.cc -ieforever.com -iefrd.com -iefxz.com -iegcom.com -iegourl.com -ieh-hz.com -iehou.com -ieisystem.com -iejiu.com -ieliulanqi.net -ieltsabc.com -ieltsonlinetests.com -iemailforce.com -iemblog.com -iemnet.xyz -iemouepk.com -ienglish.store -ienjoys.com -ienjoys.mobi -iepcn.com -iepose.com -ieppcn.com -ieqkypcq.com -ierze.com -iesdouyin.com -iesdouyin.net -ieshs.com -ieshs.net -ieshuodong.net -ieshuoshan.com -ieshuoshan.net -iessay100.com -ietdata.com -ietheivaicai.com -ietheme.com -ietrcd.com -ievision.com -iewb.net -iewie.org -iewoai.com -iewzx.com -iex-group.com -iexpress123.com -iexx.com -ieyecloud.com -iezuo.com -if1f.com -ifabao.com -ifabiao.com -ifaclub.com -ifanbei.com -ifangarden.com -ifangka.com -ifanpu.com -ifanr.com -ifanr.in -ifanrcloud.com -ifanrprod.com -ifanrprod.net -ifanrusercontent.com -ifanrx.com -ifareast.com -ifatrabbit.com -ifaxin.com -ifaxin.org -ifconfig.cc -ifcresidence.com -ifdian.net -ifdoo.com -ifedge.com -ifeehei.xyz -ifeilian.com -ifeimo.com -ifeng.com -ifengcdn.com -ifengcu.com -ifenghui.com -ifengimg.com -ifengli.com -ifenglian.com -ifenglife.com -ifengmap.com -ifengo.com -ifengpai.com -ifengqun.com -ifenguo.com -ifengweekly.com -ifengwoo.com -ifengyin.com -ifensi.com -ifenxi.com -ifenxiang.cc -ifere.com -ifeve.com -iffline.com -ifindever.com -ifintechnews.com -ifireeye.com -ifireflygame.com -ifish7.com -ifitbox.com -ifjing.com -ifjqq.com -ifkeji.com -ifkz256x3p.com -iflix.com -iflow.work -iflowercity.com -iflyadx.com -iflyaiedu.com -iflyauto-solution.com -iflydatahub.com -iflydocs.com -iflygse.com -iflyhealth.com -iflying.com -iflyink.com -iflyiot.com -iflynote.com -iflyread.com -iflyrec.com -iflyresearch.com -iflysec.com -iflytek.com -iflytekin.com -iflytektstd.com -iflytoy.com -ifmtech.com -ifnews.com -ifnfn.com -ifonelab.net -ifonts.com -iforce-ad.com -iforce-media.com -ifoxfactory.com -ifoxhui.com -ifqcihp.com -ifread.com -ifreecdn.com -ifreecomm.com -ifreedom.icu -ifreedom001.com -ifreetalk.com -ifreeurl.com -ifresh.mobi -ifromvr.com -ifscity.com -ifseclabs.com -ifshot.com -ifundstore.com -ifunmac.com -ifutest.com -ifutureworks.com -ifxtx.com -ifzxs.cc -ifzzw.com -igaichong.com -igame007.com -igame58.com -igamecj.com -igandan.com -iganggu.com -igao7.com -igaoda.com -igaokaopai.com -igaosheng.com -igarwin.com -igbill.com -igdzc.com -igea-un.org -igeak.com -igeciku.com -igeekbar.com -igeekys.com -igeidao.com -igelou.com -igenetech.com -igengmei.com -igeshui.com -igetget.com -igetmall.net -igevin.info -igimu.com -igkbroker.com -iglda.com -iglqh.com -igo180.com -igo52.com -igocctv.com -igome.com -igomkt.com -igoodgame.com -igooma.com -igou.com -igoyx.com -igps123.com -igpsport.com -igptex.com -igreatdream.com -igrs.org -igta.vip -igtm-a101.com -igtm-b101.com -igtm-c101.com -igtm-d101.com -igtm-e101.com -igtm-meeting-tencent.com -igtm-yuanbao.com -igtm.pub -iguaka.com -iguangdiu.com -iguanyu.com -iguazutraffic.xyz -iguder.com -iguitar.me -iguizao.com -iguming.net -igumo.cc -iguoguo.net -iguopin.com -iguoplay.com -iguowan.com -iguoyin.com -iguxuan.com -igwfmc.com -igwzx.com -igxbaidu.net -igxzm.com -ihacksoft.com -ihaier.com -ihailanjiang.net -ihaima.com -ihaique.net -ihaitiao.com -ihaiu.com -ihaiyan.com -ihanbridge.com -ihanghai.com -ihanhua.com -ihani.tv -ihansen.org -ihanshi.com -ihaohaoxuexi.com -ihaoma.icu -ihaoqu.com -ihaoxi.com -ihaozhuo.com -ihappy.vip -ihappystudio.com -ihappystudio.net -ihasl.com -ihdt.tv -ihdty.com -ihealthcoming.com -ihei5.com -iheima.com -iheima.net -ihello.cc -ihelpy.net -ihemuu.com -ihenda.com -ihengheng.com -ihepa.com -ihggccampaign.com -ihicon.com -ihigee.com -ihint.me -ihisce.com -ihitui.com -ihitun.com -ihkk.net -ihlimtv.com -ihmch.com -ihnhr.com -ihoey.com -ihomefnt.com -ihomesoft.net -ihongde.com -ihongma.com -ihongmeng.tech -ihongpan.com -ihonker.com -ihotchip.com -ihou.com -ihourglass.club -ihowguide.com -ihqfo.org -ihr360.com -ihrscloud.com -ihst8.com -ihstatic.com -ihtcboy.com -ihtmlcss.com -ihuaben.com -ihuan.me -ihuang.org -ihuanling.com -ihuanque.com -ihuayou.com -ihuazhan.net -ihuge.net -ihui.com -ihuidian.com -ihuigo.com -ihuipao.com -ihuisida.net -ihuman.com -ihumand.com -ihuntto.com -ihuoli.com -ihuoqiu.com -ihuoshanimg.com -ihuoshanlive.com -ihuoshanstatic.com -ihuoshanvod.com -ihuoyan.com -ihupo.com -ihush.com -ihuyi.com -ihwrm.com -ihx.cc -ihxlife.com -ihying.cc -ihykb.com -ihypnus.com -ihypo.net -ihytv.com -ihzzy.com -ii.td -ii010.com -ii090.com -ii35.com -ii77.com -iianews.com -iiaq.net -iiast.com -iibechina.com -iibq.com -iicall.com -iicats.com -iicha.com -iicheese.com -iicp.net -iicz.cc -iidns.com -iidx.fun -iieii.com -iiesz.com -iieye.cc -iii80.com -iiiaaa.com -iiiddd.com -iiiib.com -iiiimg.com -iiijk.com -iiiview.net -iikuzhan.com -iikx.com -iinhotel.com -iinorii.com -iiolink.com -iiong.com -iipcloud.com -iipiano.com -iirii.com -iirpwigs.com -iis7.com -iis7.net -iis8.com -iischool.com -iisfree2.com -iisp.com -iispbdy.com -iissbbs.com -iissnan.com -iitang.com -iitcp.com -iithz.com -iitol.com -iituku.com -iivd.net -iivey.com -iiwoo.com -iiycy.com -iiyi.com -iiyiyi.com -ijatv.com -ijh.cc -ijheng.com -ijia120.com -ijia360.com -ijiandao.com -ijiangyin.com -ijianji.com -ijiaoxue.net -ijiatv.com -ijicai.com -ijie.com -ijiebao.com -ijiedian.com -ijiela.com -ijindun.com -ijingdi.com -ijinshan.com -ijinzhuan.com -ijishu.cc -ijiwei.com -ijiwen.com -ijizhi.com -ijjnews.com -ijkxt.com -ijml.net -ijnqc.com -ijovo.com -ijq.tv -ijsi.org -ijson.com -ijsp.net -ijt611.com -ijuanshi.com -ijuer.com -ijuhepay.com -ijunhai.com -ijunxun.com -ijuzhong.com -ijxuitr.com -ijycnd.com -ijzhang.com -ik123.com -ik3cloud.com -ikafan.com -ikahe.com -ikaixun.com -ikaka.com -ikanchai.com -ikang.com -ikanoo.com -ikantu365.com -ikaolaa.com -ikaowu.com -ikaros.run -ikb.vc -ikcd.net -ikcest.org -ikck.com -ikcrm.com -ikcw.com -ikdmjx.com -ike-global.com -ikebukuro777.org -ikeled.com -ikemeng.com -ikepu.com -ikgambwqeqnv.com -ikhimalayaniq.com -ikj123.com -ikj168.com -ikjds.com -ikjtao.com -ikjxc.com -ikjzd.com -ikmoo.com -ikmt.net -ikncn.com -ikonfx.com -ikongjian.com -ikongjun.com -ikonke.com -ikoori.com -ikozn.com -ikqtcbva.com -iksea.com -ikuai8-wifi.com -ikuai8.com -ikuaicai.com -ikuaimi.com -ikuaiyue.com -ikuajing.com -ikuayou.com -ikuju.com -ikunac.com -ikuncdnfb.com -ikunpay.com -ikupan.me -ikvoaxzw.com -ikx.me -ikyy.cc -ikzybf.com -ilab-x.com -ilabilab.com -ilaisa.com -ilaitui.com -ilangqu.com -ilanni.com -ilanx0.net -ilanyao.com -ilanzou.com -ilaoyou.com -ilaozhu.com -ilaw13.com -ilaw66.com -ilawpress.com -ilazycat.com -ilcweloc.com -ileadsun.com -ileapcloud.com -ileci.com -ileedarson.com -ileehoo.com -ileju.com -ileopard.com -ileshua.com -iletou.com -ilewan.com -iliangcang.com -ilianwo.com -ilianyue.com -ilibrand.com -ilidubj.net -ilifesmart.com -ilikecp.com -ilikemanga.com -ilingdai.com -ilinki.net -ilinkmall.com -ilinkone.com -ilinksure.com -ilinuxkernel.com -ilinyi.net -ilishi.net -ilivehouse.com -ilixiangguo.com -iliyu.com -illl.xyz -ilmgq.com -ilohas.com -iloli.bid -iloli.xin -ilongre.com -ilongterm.com -ilonhoo.com -iloveanan.com -ilovechao.com -ilovefishc.com -ilovey.live -ilovezuan.com -ilovezz.com -ilsungf.com -iluckysf.net -iluezhi.com -ilufan.com -iluhang.com -ilustrepro.com -iluvatar.ai -iluvatar.com -ilux.ai -ilvxing.com -ilxdh.com -ilxtx.com -ilydjk.com -ilz.me -im-cc.com -im-ch.com -im.ci -im286.com -im286.net -im2maker.com -im323.com -im577.com -im5i.com -im9.com -imaccn.com -imachina.com -imaegoo.com -image-tech.vip -imageaccelerate.com -imageedu.com -imagefuture101.com -imagehub.cc -imagelol.com -imageoss.com -imageplusplus.com -imageplusplus.net -imagepy.org -imagerjt.com -images-amazon.com -images-cache.com -images-cn-8.ssl-images-amazon.com -images-cn.ssl-images-amazon.com -images.samsung.com -imagestoryai.com -imagetotxt.com -imagiclouds.com -imaginde.com -imagineadtech.com -imahui.com -imaibo.net -imaijia.com -imaitu.com -imalljoy.com -imallvip.com -imalun.com -imandarin.net -imangodoc.com -imanke.com -imao2.com -imaojiang.com -imarketchina.com -imarkr.com -imaschina.com -imatlas.com -imayitxt.com -imbackr.com -imbeiyu.com -imblog.in -imbtk.com -imcapptest.com -imcart.com -imcclinics.com -imcec.org -imchinese.net -imcn.me -imcome.net -imcoming.com -imconlinereg.com -imcq.net -imd-marketing.com -imdadui.com -imdmedical.com -imdo.co -imdodo.com -imdst.com -imedao.com -imedcloudimage.com -imedera.com -imedicalai.com -imedlab.net -imedp.com -imeete.com -imeete.net -imeete1.com -imeete2.com -imeete3.com -imeete4.com -imeeton.com -imefuture.com -imeidb.com -imeihei.com -imeimama.com -imeiren.com -imeirongyi.com -imeishike.com -imeitools.com -imeitou.com -imelai.com -imeme.tv -imetacloud.com -imeyahair.com -imf.org -imfirewall.com -imfooww.com -img-space.com -img-sys.com -img.beauty -img.ink -img.net -img.run -img.samsungapps.com -img.vin -img001.com -img005.com -img168.net -img16888.com -img4399.com -img4me.com -img898.com -imgbed.link -imgcdc.com -imgchr.com -imgcook.com -imgdd.cc -imgdianying.com -imgdianyingoss.com -imge.cc -imgeek.net -imgeek.org -imgets.com -imgii.com -imgkr.com -imglefeng.com -imglink.win -imgmarket.net -imgmg.com -imgo.tv -imgs.ovh -imgscdn.com -imgse.com -imgsha.com -imgsina.com -imgsohu.com -imgtex.com -imgtg.com -imgurl.org -imgyzzy.com -imgzy360.com -imhan.com -imhdr.com -imhuchao.com -imiaomeng.com -imibaby.net -imibao.com -imicome.com -imifun.com -imigu.com -imiker.com -imile-inc.com -imile.com -imitui.com -imixpark.com -imjiayin.com -imkero.net -imkevinyang.com -imlaidian.com -imlazy.ink -imlb2c.com -imlianai.com -imlianpu.com -imliuyi.com -imlizhi.com -immeee.com -immfast.com -immi520.com -immiexpo.com -immiknow.com -immivip.com -immomo.com -immomogame.com -immotors.com -immune-path.com -immusician.com -immviragroup.com -imnerd.org -imnight.com -imnks.com -imobile-ent.com -imoe.me -imoe.tech -imoeer.com -imoemh.com -imofan.com -imoffice.com -imok.net -imok.run -imoke.org -imol.cc -imolive.tv -imomoe.com -imoo.com -imooc.com -imoocc.com -imoonfm.com -imop.com -imopan.com -imosi.com -imotao.com -imotion.group -imoto.love -imou.com -imovideo.ru -imp3.net -impcochina.com -imperfectionstudio.com -imperial-vision.com -imperialsprings.com -imperialspringsforum.org -impk.cc -impnails.com -importingtochina.com -improve-ai.com -improve-medical.com -impta.com -imqianduan.com -imqq.com -imqq.net -imquzan.com -imrfresh.com -imrobotic.com -imscv.com -imsharecenter.com -imshu.cc -imshusheng.com -imsilkroad.com -imsinoexpo.com -imsle.com -imsun.net -imsyy.com -imtaweb.net -imtics.com -imtuan.com -imty.com -imtyimages.vip -imudgame.com -imugeda.com -imuke.com -imummybiz.com -imusicking.com -imvictor.tech -imvtc.com -imwaco.com -imwallet.com -imweb.io -imweia.com -imwexpo.com -imwork.net -imwukong.com -imwzh.com -imx365.net -imxh.com -imxiaomai.com -imxingzhe.com -imxpan.com -imycdn.com -imycloud.com -imydns.net -imyfone.club -imyike.com -imyouxin.com -imys.net -imyshare.com -imyuedu.com -imyushu.com -imzego.com -imzhanghao.com -imzhongxin.com -imzhuomo.com -imzudian.com -imzy.ink -in-driving.com -in-en.com -in-freight.com -in-int.com -in-tencentclb.cloud -in-tencentclb.com -in-tencentclb.net -in-tencentclb.work -in.th -in001.com -in66.com -in800.com -in853.com -in955.com -inabr.com -inaink.com -inanguapi.com -inbeing.net -inbilin.com -inbooker.com -inboyu.com -inc365.com -incake.net -incensechina.com -inch.red -inchitech.com -incker.com -incloudexpo.com -incomperlite.com -incomrecycle.com -incopat.com -increasedct.com -incsg.com -inctrip.com -ind-map.com -ind4.net -ind9ed.com -indetek-lab.com -indexea.com -indexedu.com -indexedu.net -indexfor.fun -indexmob.com -indics.com -indielight.net -indienova.com -indier.com -indigobeijing.com -indmi.com -indochinatraveladvisor.com -indogiga.com -indonesia-daily.com -indubd.com -industrybamboo.com -industryillusion.com -induta.com -inekoxia.com -inengyuan.com -inesa-it.com -inesa.com -inetech.fun -inetmaster.net -inewhope.com -inewoffice.com -inewskeji.com -inexbot.com -infarts.net -inferoey.com -infertilitybridge.com -infimotion.com -infineon-autoeco.com -infini-ai.com -infinisign.com -infiniteborders3kingdoms.com -infinitescript.com -infinity8ball.com -infinitynewtab.com -infinitytab.com -info-insur.com -info-monitor.com -info-onesky.com -info.cc -info10.com -info110.com -info35.com -infobidding.com -infobigdata.com -infocloud.cc -infocomm-journal.com -infoeach.com -infohand.net -infohpc.com -infoier.com -infoldgames.com -infomorning.com -infong.net -infoobs.com -infoq.com -infoqstatic.com -inforbus.com -inforeenviro.com -inforguard.net -informrack.com -inforsec.org -infosoft.cc -infovc.com -infoview.com -infowuxi.com -infoxgame.com -infoxiao.com -inframe.mobi -inftab.com -infuseku.xyz -infyniclick.com -infzm.com -ing10bbs.com -ingageapp.com -ingags.com -ingaoyt.biz -ingcore.com -ingdan.com -ingeek.com -ingenic.com -ingkee.com -ingping.com -ingping.net -ingzhong.com -inhalpharma.com -inhdd.com -inhe.com -inhe365.com -inheweb.com -inhuawei.com -ini5.com -inibiru.com -inicoapp.com -inidc.net -ininin.com -initaj.com -initcc.com -initff.com -initialview.com -initjj.com -initkk.com -initnn.com -initpp.com -initqq.com -initroot.com -initrr.com -inittt.com -inituu.com -initvv.com -initxb.com -initxx.com -initzz.com -inja.com -injectionmachine.com -injoinic.com -ink4you.com -inkankan.com -inkcc.net -inkcn.com -inke.com -inke.tv -inkeygo.com -inkonlife.com -inkonote.com -inktok.com -inkuai.com -inkwai.com -inlandschool.com -inlaylink.com -inlighting.org -inlishui.com -inliuzhou.com -inluckcalendar.com -inmeng.net -inmuu.com -inmyshow.com -innatek.com -innity-asia.com -innnnnn.com -inno3d.cc -innobm.com -innocn.com -innocomn.com -innodealing.com -innofidei.com -innogenpharm.com -innohere.com -innojoy.com -innolcon.com -innomd.org -innomddesign.com -innopack97.com -innoplayfun.com -innopro.cc -innos.com -innotechx.com -innotek-co.com -innotron.com -innov-xsystem.com -innovagt.com -innovane.com -innovatedigital.com -innovationmetal.com -innoventbio.com -innoveronline.com -innovidcn.com -innovisgroup.com -innovmedicine.com -innvitor.com -ino3w.com -inoherb.com -inoneh5.com -inong.net -inoteexpress.com -inovance-automotive.com -inovogen.com -inovppg.com -inovpu.com -inpla.net -inplayable.com -inputmore.com -inq7.net -inqan.com -inrice.com -inrice.zone -inrugao.com -ins110.com -insagee.com -insarticle.com -inshion.com -inshotapp.com -insigma-elec.com -insistence.tech -insmoin.com -insnail.com -insneu.com -insnex.com -insome.com -inspeed.biz -inspirecloud.com -inspmobi.com -inspur.com -inspurcloudoss.com -inspuronline.com -inspurpower.com -insta360.com -instafogging.com -installgreat.com -instome.com -insulators-china.com -insun-china.com -inswindow.com -insxz.com -insytone.com -int-agri.com -int2018.com -int800.com -intaek.com -intdmp.com -intecheye.com -intecol-10iwc.com -intedc.com -integrity-funds.com -intekey.com -intel-space.com -intelcupid.com -intelligen.ltd -intelligence-electricity.net -intelligentmanufactory.com -intelvisioncn.com -intencent.com -inter-credit.net -inter-rock.com -inter1908.net -interactivebrokers.hk -interchinawater.com -interface003.com -intergreat.com -international-gfe.nvidia.com -internationalbrand.net -internbird.com -internetke.com -internettrademark.com -intertid.com -interval.im -intimerent.com -intlgame.com -intlqydd.info -intlscdn.com -intltencentcos.com -intmedic.com -intmes.com -intohard.com -intomod.com -intopet.com -intostarry.com -intovfx.com -intowz.com -intozgc.com -intple.com -intramirror.com -intsavi.com -intseamultiply.com -intsig.com -intsig.net -intvolunteer.com -intwho.com -inuobi.com -inuorui.com -inuu6.com -inuyasha.love -inverter.so -invescogreatwall.com -invest-data.com -investassistant.com -investbjdx.com -investgohn.com -investgx.com -investoday.net -investorscn.com -investstkitts.org -invocean.com -invoee.com -invzible.com -inwaishe.com -inwatch.cc -inwuoo.com -inxedu.com -inxni.com -inyota.com -inzone-auto.com -inzotek.com -ioa365.com -ioage.com -ioasaas.com -iocrest.com -ioe-times.com -iofange.com -ioffershow.com -ioffice100.com -iofomo.com -ioigamer.net -ioikypzw.com -ioiosafe.com -ioiox.com -ioiox.net -ioioz.com -iok.la -iol8.com -ioms.cc -ionchi.com -ioncol.com -ioneball.com -ionewu.com -iongentherapeutics.com -iooeoo.com -iooqoo.com -ioozu.com -iop.org -iopenhec.com -iophthalmology.net -iopiopl.com -ioppo.net -iorca.net -iornnl.xyz -ios-auto.net -ios114.com -ios222.com -ios98.com -iosask.com -ioser.fun -iosfengwo.com -ioshacker.net -iosi.vip -iosre.com -iosrxwy.com -ioswg.com -iosyyds.com -ioszc.com -ioszn.com -iot-cas.com -iot-dc.com -iot-tencent.com -iot.moe -iot0.net -iot1001.com -iot101.com -iot688.com -iotachem.com -iotbay.com -iotfair.net -iotku.com -iotmag.com -iotmore.com -iotmrvr.com -iotpai.com -iotrix.net -iotronic.tech -iotrouter.com -iots.vip -iotsafe.net -iotshifang.com -iotweixin.com -iotwrt.com -iotxing.com -iotxx.com -iotyeas.com -iotyes.com -iouluo.com -ioxray.com -ioxunyun.com -ip-cdn.com -ip-guard.net -ip-soc.com -ip.istatmenus.app -ip.la -ip008.com -ip138.com -ip159.com -ip181.com -ip192.com -ip33.com -ip3366.net -ip518.com -ip66.com -ip66.net -ip669.com -ip77.net -ip87.com -ip938.com -ipackbynewstep.com -ipadown.com -ipadump.com -ipadview.com -ipaiban.com -ipail.com -ipalfish.com -ipalmap.com -ipampas.com -ipanda.com -ipanda.net -ipandao.com -ipandata.com -ipangcai.com -ipanocloud.com -ipanta.com -ipaobuji.com -ipaochaxun.com -ipaomi.com -ipaotuan.com -ipapark.com -ipason.com -ipay.so -ipaylinks.com -ipbaohe.com -ipcelou.com -ipcfun.com -ipchaxun.com -ipchaxun.net -ipcmen.com -ipcodm.com -ipcorecatalog.com -ipctest.com -ipcwifi.com -ipdaili.com -ipdatacloud.com -ipddz.com -ipdfmaster.com -ipdftool.com -ipdodo.com -ipdsms.com -ipduoduo.cc -ipduoduo.com -ipdz.me -ipease.net -ipehr.com -ipeijiu.com -ipengchen.com -ipengtai.com -ipengtao.com -iperson.xyz -ipetct.com -ipexp.com -ipfeibiao.com -ipfen.com -ipfsbit.com -ipgoal.com -ipguishu.com -iphonediule.com -ipidea.io -ipidea.net -ipin.com -ipinba.com -ipingke.com -ipingyao.com -ipip.net -ipjingling.com -ipjisuanqi.com -ipktv.com -ipku.com -iplascloud.com -iplay11g.com -iplay365.com -iplaypy.com -iplaysoft.com -iplcn.com -iplusmed.com -ipmay.com -ipmi.cc -ipmoniqi.com -ipmost.com -ipmotionmc.com -ipmph.com -ipo.hk -ipo.la -ipo1688.com -ipo3.com -ipoceo.com -iposeidongame.com -ipostalcode.com -ipple.net -ipplus360.com -ippsport.com -ippzone.com -ipqcrhf.com -ipr007.com -ipr114.net -ipr123.com -iprabc.com -iprchn.com -iprdaily.com -iprdp.net -ipresst.com -iproyal.co -iprtop.com -iprub.com -iprun.com -ips.com -ips8.com -ipsebe.com -ipshu.com -ipshudi.com -ipsmap.com -ipssh.net -iptalent.com -iptrm.com -ipts.com -iptvlm.com -iptvzj.com -ipuer.com -ipuu.net -ipv4.host -ipv4dns.com -ipv6-only.com -ipv6dns.com -ipv6radar.com -ipv6testingcenter.com -ipwuji.com -ipyy.com -iq.com -iq123.com -iq33.com -iqalliance.org -iqbuud.lol -iqbxq.com -iqcrj.com -iqdedu.com -iqdii.com -iqdnet.com -iqhmh.com -iqianggou.com -iqianjin.com -iqianyue.com -iqianzhan.com -iqiaowai.com -iqidian.com -iqihang.com -iqilu.com -iqilun.com -iqimengkj.com -iqinbao.com -iqingguo.com -iqingren.com -iqingua.com -iqingyi.com -iqinshuo.com -iqinzhou.com -iqishu.la -iqiyi.com -iqiyi.demo.uwp -iqiyiedge.com -iqiyiedge.net -iqiyih5.com -iqiyipic.com -iqmie.com -iqnew.com -iqoo.com -iqr.cc -iqtianshanmw.com -iquanba.com -iquanben.net -iquanfen.com -iquanpai.com -iquanwai.com -iquaveizeeru.com -ique.com -iquegui.com -iquhuo.com -iquickfish.com -iqujing.com -iqunix.com -iqunix.store -iqupdate.com -iqxbf.com -iqxedu.com -irain.in -irainone.com -iranmahanair.com -iranshao.com -iraoping.com -irbsh.com -irc-risk.com -ircmnr.com -ireader.com -ireader.live -ireader.mobi -ireadercity.com -ireaderm.com -ireaderm.net -ireadweek.com -ireadyit.com -irealbest.com -irealcare.com -irealtech.com -irecyclingtimes.com -iredwhale.com -ireeda-tech.com -irelandvisacenter.com -iremaker.com -iremax.hk -iremax.net -iresarch.com -iresearchad.com -iresearchchina.com -irest.tv -irestapp.com -irexy.com -iridescent.ink -irisdt.com -irisdt.net -irisgw.com -irisgw.net -irising.me -irlianmeng.com -irmleader.com -irober.com -irobotbox.com -irockbunny.com -iroing.com -ironfishchina.com -irongbei.com -ironghui.com -irootech.com -irort.com -irouteros.com -irrichina.com -irskj.com -irsnp.com -irtouch.com -iruanmi.com -iruanshi.com -iruidian.com -iruixing.com -irukou.com -irunner.mobi -iryoucai.com -is-programmer.com -is36.com -is404.com -isa-hsse.com -isa1751.com -isagzfls.com -isagzlw.com -isagzlwis.com -isagzlws.com -isagzsc.com -isagzth.com -isahome.net -isaieg.com -isamanhua.com -isapt.com -isawhis.com -isawhs.com -isawuhan.com -isay365.com -isay365.hk -isay365.net -isay365.org -isayabc.com -isbdai.org -iscanchina.com -isd.com -isdox.com -isdpp.com -iseacat.com -iseafood.shop -isealsuite.com -isecsp.com -iseedog.com -iseekids.com -isellerpal.com -isenruan.com -iseoku.com -isf.ink -isfashion.com -isfdz.com -isfirst.net -isgo.com -ish168.com -ishaanxi.com -ishaibiao.com -ishala.com -ishang.net -ishanghome.com -ishangman.com -ishangtong.com -ishangu.com -ishanjian.com -ishansong.com -ishaohuang.com -isharebest.com -isharepc.com -isheely.com -isheji.com -isheji5.com -ishell.cc -ishenbao.com -ishengxue.com -ishenping.com -ishenyou.com -ishijing.com -ishipoffshore.com -ishouhong.com -ishoujizhuan.com -ishouka.com -ishouping.com -ishowchina.com -ishowx.com -ishubao.org -ishugui.com -ishuhui.net -ishuirong.com -ishuiyun.com -ishumei.com -ishuocha.com -ishuqi.com -ishuqi.net -ishuquge.com -ishuquge.la -ishuquge.org -ishuw.com -isi-gf.com -isiabio.com -isign.ren -isigqno.com -isigu.com -isilent.me -isilicontech.com -isiluke.net -isiluke.org -isilvermaterials.com -isimcere.com -isinosig.com -isixiang.com -isixue.com -isjike.com -iskpay.com -iskryou.com -isky000.com -iskyjoy.com -iskyone.com -iskysoft.com -islandren.com -isli.cc -islide.cc -isluo.com -ismartgo.com -ismarthealth.com -ismartware.com -ismdeep.com -isme.pub -ismisv.com -ismx8.com -isnnapp.com -isnsz.com -iso-est.com -iso-iso9000.com -iso2004.com -iso37001rz.com -iso9001rz.com -isobar.tech -isocgw.net -isoftstone.com -isogx.com -isolves.com -isong520.com -isongcontrol.com -isoqh.com -isorange.com -isorenzheng.org -isosh.com -isotoo.com -isoucai.com -isoudy.com -isoyes.com -isoying.com -isoyu.com -isozhijia.com -isp.cx -ispcache.net -ispecial.xyz -ispqcloud.com -isrcb.com -isres.com -iss-ms.com -isscloud.com -issconline.com -issedu365.com -issjj.com -issks.com -ist-zl.com -istcw.com -istoreos.com -istpei.com -istrongcloud.com -istrongcloud.net -istylepdf.com -isuanyun.com -isudaji.com -isuike.com -isummi.com -isun.org -isunon.com -isunton.com -isurecloud.net -isuzhou.me -isv-tech.com -isvee.com -isvjcloud.com -isvjd.com -isvup.com -iswbm.com -isweek.com -iswifting.com -iswweb.com -isxtv.com -isyour.love -it-bound.com -it-hr.net -it007.com -it0772.net -it120.cc -it163.com -it165.net -it168.com -it2021.com -it2168.com -it224.com -it322.com -it376.com -it399.com -it478.com -it525.com -it528.com -it578.com -it610.com -it666.com -it689.com -it707.com -it7t.com -it8.com -it8g.com -it918.com -it985.com -it9g.com -ita-alliance.com -itab.link -itacademy.download.prss.microsoft.com -itacademyuat.download.prss.microsoft.com -itaconicacid.com -itaic.org -itailai.com -itaiping.com -itakeeasy.com -itakutf.com -italentclc.com -italyvisacenterd.com -itamt.com -itangbole.com -itangyuan.com -itanlian.com -itany.com -itany.org -itanzi.com -itao.com -itaoke.org -itaokecms.com -itaored.com -itaotuo.com -itasci.com -itav-gz.com -itayao.com -itbaizhan.com -itbegin.com -itblw.com -itboth.com -itbour.com -itboy.net -itbug.shop -itbulo.com -itbulu.com -itbuy.com -itbyte.net -itc.vip -itcdlf.com -itceo.com -itchaguan.com -itcm.com -itcn.cc -itcodemonkey.com -itcpn.net -itczh.com -itdabao.com -itdai.com -itdayang.com -itddo2page.com -itdevnow.com -itdks.com -itdog-dns.com -itdog.com -itdog.plus -itdoisp.com -itdoor.net -itdos.com -itdos.net -itdp-china.org -iteam-dress.com -iteblog.com -itechate.com -itedou.com -iteer.net -itek-training.com -itelecloud.com -itensoft.com -iter168.com -itest.info -itetc.org -itexamprep.com -iteye.com -itfanr.cc -itfaster.com -itfeed.com -itfenghui.com -itfly.net -itfsw.com -itfw5.com -itgd.net -itgeeker.net -itgege.com -itgemini.net -itgochina.com -itgoodboy.com -itgsa.com -itgzsfxx.com -ithard.com -itheat.com -itheima.com -itheima.net -ithenticatecn.com -ithey.com -ithlj.com -ithome.com -ithome.net -ithor.com -ithor.net -ithothub.com -ithov.com -ithuangw.com -itiankong.com -itiankong.net -itianliao.com -itiexue.net -itigergrowth.com -itigergrowtha.com -itigerup.com -itilxf.com -itilzj.com -itimotor.com -itingwa.com -itit.io -itjoy.net -itjspx.com -itjuzi.com -itkuku.com -itlic.com -itlog.vip -itlu.org -itlz.net -itma.org -itmakes.com -itmanager.club -itmanbu.com -itmind.net -itmoocs.com -itmop.com -itmuch.com -itmuke.com -itmyhome.com -itnavs.com -itnb.cc -itnec.org -itnihao.com -itnxs.com -itoec.org -itoegd.com -itogame.com -itoka.com -itokit.com -itokoo.com -itongcheng.cc -itonghui.com -itonglian.com -itongzhi.com -itopcoupon.com -itopers.com -itophis.com -itopplay.com -itopsdk.com -itotii.com -itouchchina.com -itougu.com -itoumi.com -itoutiao.co -itoutiaoimg.com -itoutiaoliving.com -itoutiaostatic.com -itoutiaovod.com -itower-soft.com -itoyfx.com -itpon.com -itpow.com -itptg.com -itpub.net -itpux.com -itpwd.com -itqaq.com -itrace.cc -itrackstar.com -itredu.com -itrid.com -itrip.com -itripsh.com -itrolexshop.com -itruelife.com -itruke.com -itrus.com -itruscloud.com -itrusign.com -itry.com -its114.com -itsapu.com -itsdz.com -itshai.com -itshubao.com -itsiwei.com -itsk.com -itslaw.com -itsmephoto.net -itsoku.com -itsto.com -itsun.com -itsvse.com -ittellyou.com -ittft.com -ittime.com -itto100.com -ittribalwo.com -ituad.com -ituchong.com -ituite.com -ituopeng.com -iturco.com -itutu.tv -ituu.net -ituun.com -ituut.com -itv.video -itvcn.com -itvssp.com -itwanger.com -itwlw.com -itwork.club -itwsms.com -itxe.net -itxia.club -itxp365.com -itxst.com -itxtbook.com -itxueyuan.com -ityears.com -ityg.com -itying.com -ityizu.com -itylq.com -ityouknow.com -ityxb.com -itzhai.com -itzhengshu.com -itzhimei.com -itzhp.com -itziy.com -itzjj.com -itzm.com -itzmx.com -itzmx.net -iu18.com -iu95522.com -iuban.com -iucars.com -iucdn.com -iuctrip.com -iufida.com -iuhtg8.com -iuinns.com -iuiu.site -iujkegbpo.xyz -iujkm.com -iuktb.com -iumemo.com -iuni.com -iunv.com -iuoooo.com -iuplus.com -iusersurvey.com -iusertracker.com -iusmob.com -iuynfg.com -iv06.com -iv2i.com -iva-schmetz.com -ivali.com -ivaoqph.com -ivban.com -ivcheng.com -ivdchina.org -ivdys.com -ivemusic.net -iventoy.com -iverycloud.com -ivfchina.net -ivfdhc.com -ivfuture.com -ivideostar.com -iviewui.com -ivinkon.com -ivipi.com -ivips.site -ivistang.com -ivixivi.com -ivknow.com -ivolces.com -ivqamtkr.com -ivrwan.com -ivsky.com -ivtfx.com -ivu4e.com -ivvajob.com -ivweb.io -ivwen.com -ivxiaoyuan.com -ivy-school.org -ivybaby.me -ivydad.com -ivykit.com -ivypha.com -ivypub.org -ivyschools.com -ivysci.com -ivysun.net -ivywing.me -iwala.net -iwan4399.com -iwan78.com -iwanbei.com -iwanboy.com -iwangding.com -iwangnan.com -iwanoutdoor.com -iwanshow.com -iwanws.com -iwapan.com -iwatani-gz.com -iwatch365.com -iwatertech.com -iway-tech.com -iwcoo.com -iwebad.com -iwebchoice.com -iwecan.net -iwecxafv.com -iweek.ly -iweekapi.com -iweidu.net -iweixiu120.com -iweju.com -iwellen.com -iwen1.com -iwenan.com -iwencai.com -iwenchuan.com -iwenson.com -iwewin.net -iwgame.com -iwhalecloud.com -iwhqmk.com -iwhr.com -iwhr.org -iwiki.com -iwin10.net -iwingchina.com -iwiscloud.com -iwishwed.com -iwithu.net -iwjw.com -iwmmob.com -iwncomm.com -iwooji.com -iwopop.com -iwordnet.com -iwordshow.com -iwosai.com -iwpai.com -iwshang.com -iwte-expo.com -iwteexpo.com -iwuchen.com -iwurexs.info -iwurexs.net -iwurexs.org -iwuyou189.com -iwwwwwi.com -iwxapi.com -iwyvi.com -iwzbz.com -iwztc.com -iwzwh.com -iwzwy.com -ix-edu.com -ixbk.fun -ixbk.net -ixbren.net -ixdc.org -ixdzs.com -ixfc.net -ixgvideo.com -ixianlai.com -ixiaochengxu.cc -ixiaoma.com -ixiatxt.com -ixiede.com -ixigua.com -ixiguapi.com -ixiguavideo.com -ixilou.com -iximo.com -ixingfei.com -ixinglu.com -ixingmei.com -ixingpan.com -ixingyan.com -ixinqing.com -ixintu.com -ixinwei.com -ixinwenjie.com -ixinwu.com -ixinyou.com -ixiqi.com -ixiumei.com -ixiunv.com -ixiupet.com -ixiway.com -ixizang.com -ixmu.net -ixpsge.com -ixs.la -ixsz.com -ixuanquge.com -ixuanshu.net -ixuenong.com -ixueshu.com -ixueyi.com -ixueyi.net -ixunke.com -ixxzx.com -ixy68.com -ixywy.com -ixzgkzps.com -ixzzcgl.com -iy-cd.com -iy51.com -iyamusic.com -iyangxi.com -iyaou.com -iyatt.com -iyawoqu.com -iyaxi.com -iyaxin.com -iyaya.com -iyaya.info -iyb.tm -iybtv.com -iycsky.com -iydsj.com -iydu.net -iyeeda.com -iyemao.cc -iyenei.com -iyeren.com -iyiji.com -iyincaishijiao.com -iyingdi.com -iyingji.com -iyint.com -iyiou.com -iyiqi.com -iyishengyuan.com -iyitu.com -iyiyu.com -iymark.com -iyocloud.com -iyoimar.com -iyong.com -iyongpdf.com -iyooread.com -iyoou.com -iyoubo.com -iyoucai.com -iyoudui.com -iyouhun.com -iyoujia.com -iyoujiao.net -iyoule.com -iyouman.com -iyouqian.com -iyouxia.com -iyouxin.com -iyouxun.com -iyruan.com -iysj.com -iytc.net -iytcdn.com -iyuan.ltd -iyuanpei.cc -iyue.pub -iyuedan.com -iyuedian.com -iyuezhang.net -iyun.com -iyunbao.com -iyunbiao.com -iyunche.com -iyunmai.com -iyunmu.com -iyunnan.travel -iyunshu.com -iyunv.com -iyunxh.com -iyunxiao.com -iyunyue.com -iyunzk.com -iyuren.com -iyuxiyang.com -iyxing.com -iyxku.com -iyyin.com -iyz168.com -izacholsm.com -izaodao.com -izazamall.com -izb.pub -izdatatech.com -izenith.co -izestchina.com -izetvetv.com -izgfu.com -izhailong.com -izhanchi.com -izhangan.com -izhangchu.com -izhangheng.com -izhaohe.com -izhaoo.com -izhaowo.com -izhenxin.com -izhihuicheng.net -izhihuo.com -izhikang.com -izhiliao.com -izhiqun.com -izhishi.com -izhixiu.com -izhuanfa.com -izhuce.com -izhuose.com -izhuyue.com -izihun.com -iziyo.com -izjj.com -izmzg.com -izobrt.com -izpan.com -izpec.com -izqdn.com -izstz.com -izsvip.com -izt8.com -iztigcpk.com -izto.com -iztwp.com -iztzq.com -izuche.com -izuchebao.com -izuchecdn.com -izuciw.com -izuichun.com -izuiyou.com -izumicn.com -izywang.com -izyz.org -izz.cc -j-dun.com -j-gsexpress.com -j-h-k.com -j-smu.com -j-techcnc.com -j-test.com -j-ui.com -j03og.app -j0g0.com -j1998.com -j2ee.cc -j2up.com -j3cx.com -j4lpr.com -j5.cc -j5757.com -j5k6.com -j66.net -j6n29.com -j881p924q2.com -j8j9.com -j95a.com -j99h8.com -j9pic.com -ja-cloud.com -jaadee.com -jaadee.net -jabizb.com -jabpark.com -jabrehoo.com -jacheng.com -jackeylea.com -jackon.me -jackxiang.com -jacky-blog.com -jackyang.me -jackytong.com -jackyyf.com -jackzhu.com -jacoll.com -jacxw.com -jade-home.com -jadeclass.com -jademond.net -jadetowerccrc.com -jadewd.com -jadyf.com -jaeapp.com -jaecdn.com -jaedu.com -jaeger-hello.com -jaeosc.com -jaf-china.com -jafeney.com -jafie.org -jafron.com -jafronclub.com -jafroninternational.com -jagjj.com -jaguar-guangdong.com -jaifang.com -jaja123.com -jajjd.com -jaka.com -jakabiotech.com -jakeai.com -jakehu.me -jakobzhao.online -jalorsoft.com -jamalube.net -jamanetwork.com -jamcz.com -jamidol.com -jamms.org -jammyfm.com -jampotgames.com -janbao.net -jandan.com -jandan.net -jane7.com -janezhang.com -janezt.com -jangho.com -janpn.com -janrain.biz -janrainservices.com -jansonco.com -japanhr.com -japansoufun.com -jarczpw.com -jarencai.com -jarhu.com -jarods.org -jarvisw.com -jasangroup.com -jasminer.com -jasolar.com -jason-z.com -jason5.xyz -jasongj.com -jasongzy.com -jasonsemicon.com -jasonwatches.com -jasonzk.com -jasperxu.com -jasuoenergy.net -jatcochina.com -java-er.com -java.com -java1234.com -java2000.net -java3z.com -javaboy.org -javacui.com -javaer.xyz -javaeye.com -javamilk.org -javanav.com -javascriptcn.com -javatang.com -javawind.net -javaxxz.com -javazhiyin.com -javazx.com -javbuy.xyz -javier.io -jawouue.com -jaxcx.com -jay.tg -jaya.cc -jayce.icu -jayfc.com -jayfu.tk -jayjw.com -jayxhj.com -jaz581.com -jazlxs.com -jazzyear.com -jb100.com -jb1000.com -jb51.com -jb51.net -jbaier023.com -jbaobao.com -jbb.one -jbbzcorp.com -jbcz.tv -jbddoors.com -jbdhome.com -jbdown.com -jbedu.net -jbelf.com -jbepharm.com -jbers.com -jbiev.com -jbjc.org -jbjdgroup.com -jbjw.net -jbknx.com -jblogistics.com -jbote.com -jbpmhk.com -jbpzs.com -jbryun.com -jbs-kj.com -jbsmartcity.com -jbsx88.com -jbt.ink -jbtlj.com -jbtxy.net -jbwave.com -jbwtm.com -jbxy.com -jbyy120.com -jbzj.com -jbzpw.com -jbzwread.com -jbzyk.com -jbzyw.com -jc-ai.com -jc-dl.net -jc-hr.com -jc-pcba.com -jc-saas.com -jc0531.com -jc170.com -jc315.com -jc35.com -jc56.com -jc808.com -jc85.com -jc88.net -jc899.com -jca-china.org -jcancer.org -jcashore.com -jcbjbcak.com -jcbmt.com -jcbq.net -jccchina.com -jcceram.com -jccinema.com -jccjtwl.com -jccmn.com -jccpay.com -jccsoc.com -jccug.com -jcdd.com -jcebid.com -jcecom.com -jcedu.org -jcetglobal.com -jcex.com -jcf94.com -jcgcn.com -jcgcw.com -jcgjb.com -jchat.io -jchl.com -jchla.com -jchunuo.com -jchxmc.com -jcjjwx.com -jcjmhj.com -jckjsc.com -jcku.com -jclab.net -jclegend.com -jcloud-cache.com -jcloud-cache.net -jcloud-cdn.com -jcloud-live.com -jcloud-oss.com -jcloud.com -jcloudcache.com -jcloudcache.net -jcloudcs.com -jclouddn.com -jclouddns.com -jclouddns.net -jcloudec.com -jcloudedge.com -jcloudedge.net -jcloudgslb.com -jcloudgslb.net -jcloudimg.com -jcloudimg.net -jcloudlb.com -jcloudlb.net -jcloudlive.com -jcloudlv.com -jcloudoss.com -jcloudresolve.com -jcloudresolve.net -jcloudss.com -jcloudstatic.com -jcloudstatic.net -jcloudvideo.com -jcloudvideo.net -jcloudwaf.com -jcloudwaftest.com -jcloudwaftest.net -jclps.com -jcmeh.com -jcmob.net -jcnano.com -jcnk120.com -jcno.net -jcodecraeer.com -jcpeixun.com -jcpesz.com -jcqzw.com -jcrb.com -jcrcw.com -jcrgyy.com -jcscp.org -jcsfs.com -jcsjt.com -jcsrsj.com -jcssolar.com -jcsy66.com -jcszhtc.com -jctmj.net -jctrans-shantou.com -jctrans.com -jcvba.com -jcwgk.com -jcwgo.com -jcwiki.net -jcwjdg.com -jcwljt.com -jcwxiao.com -jcxzlsgs.com -jcyad.com -jcyai.com -jcyes.com -jcys120.com -jcys12366.com -jcyspt.com -jcyx2019.com -jcyxds.com -jczb.vip -jczc.vip -jczh100.com -jczhijia.com -jczhiyao.com -jcznzb.com -jd-88.com -jd-app.com -jd-bbs.com -jd-credit.com -jd-df.com -jd-ex.com -jd-ex.net -jd-fm.com -jd-hospital.com -jd-link.com -jd-zd.com -jd.co -jd.co.th -jd.com -jd.hk -jd.id -jd.ru -jd.shop -jd0817.com -jd100.com -jd120.com -jd123.vip -jd360.hk -jd37.com -jd5.com -jdair.net -jdallianz.com -jdapi.com -jdb-food.com -jdb-ware.com -jdb100.com -jdbbs.com -jdbbx.com -jdbchina.com -jdbhw.com -jdbjba.com -jdbox.xyz -jdbpcb.com -jdburl.com -jdbusiness.com -jdcache.com -jdcaipu.com -jdcapital.com -jdcdn.com -jdcloud-api.com -jdcloud-api.net -jdcloud-edu.com -jdcloud-elite.com -jdcloud-elive.com -jdcloud-livebuy.com -jdcloud-mail.com -jdcloud-openapi.com -jdcloud-oss.com -jdcloud-scdn.net -jdcloud-scdn.tech -jdcloud-scdndns.com -jdcloud-yd.com -jdcloud.com -jdcloudai.solutions -jdcloudcache.com -jdcloudcache.net -jdcloudcdn.com -jdcloudcdn.net -jdcloudcs.com -jdclouddns.com -jdclouddns.net -jdcloudedge.com -jdcloudedge.net -jdcloudlb.com -jdcloudlb.net -jdcloudlive.com -jdcloudlive.net -jdcloudnaming.net -jdcloudresolve.com -jdcloudresolve.net -jdcloudshop.com -jdcloudsite.com -jdcloudstatic.com -jdcloudstatic.net -jdcloudstatus.com -jdcloudstatus.net -jdcloudvideo.com -jdcloudvideo.net -jdcloudwaf.com -jdcmmc.com -jdcmoly.com -jdcontent.com -jdcq.net -jdcsww.com -jdctky.com -jdd-global.com -jdd-hub.com -jddaojia.shop -jddapeigou.com -jdddata.com -jddglobal.com -jddj.com -jddmoto.com -jddtv.com -jddyl.com -jdedu.net -jdemall.com -jdface.com -jdfair.com -jdfcloud.com -jdfeijing.com -jdfinance.com -jdfjx.com -jdfmgt.com -jdfryl.com -jdfschool.com -jdfw1.com -jdfybjy.com -jdfzm.com -jdgogo.com -jdgslb.com -jdgslb.net -jdgzf.net -jdh.com -jdh.healthcare -jdhmediajd.com -jdhospital.com -jdhuafeng.com -jdhyplay.com -jdianfei.com -jdindustry.com -jdis.org -jdiy.club -jdjgq.com -jdjingmai.com -jdjinrong.com -jdjob88.com -jdjrdns.com -jdjt.com -jdjygold.com -jdkcb.com -jdkjxy.com -jdl.com -jdl8.com -jdlgw.com -jdlhb.com -jdlhpt.com -jdlingyu.com -jdmwk.com -jdmy.com -jdnews.net -jdon.com -jdpay.com -jdpaydns.com -jdplay.com -jdpta.com -jdpz44.com -jdreader.net -jdrns.com -jdrpr.com -jdrq.net -jds-china.com -jdsafe.com -jdsha.com -jdsjy.com -jdsmartkf.com -jdsry.com -jdss.cc -jdsyjc.com -jdt-precision.com -jdtiot.com -jdtjy.com -jdtxgc.com -jdunion.com -jdv794.vip -jdvisa.com -jdw001.com -jdw2.com -jdwdc.com -jdweixiao.com -jdwgame.com -jdwl.com -jdwmfj.com -jdworldwide.com -jdwxwz.com -jdwxzp.com -jdx.com -jdxc.net -jdxfw.com -jdxlt.com -jdxs.com -jdxsr.com -jdxyydf.com -jdxzz.com -jdy.com -jdycdn.com -jdydevelop.com -jdyfy.com -jdylb.com -jdyou.com -jdypf.com -jdyyeb.com -jdzdeyy.com -jdzeduyun.com -jdzj.com -jdzjw.com -jdzkw.com -jdzmc.com -jdzol.com -jdzol.net -jdzrcw.com -jdzs.com -jdzwang.com -jeacar.com -jean.cd -jeanphy.online -jeanssalon.com -jeanswest.com -jeawin.com -jeawincdn.com -jechobio.com -jectronic.com -jedi-games.com -jedoo.com -jee-cn.com -jeeanlean.com -jeecg.com -jeecg.org -jeecms.com -jeee.ltd -jeejen.com -jeepay.com -jeepay.vip -jeeplus.org -jeequan.com -jeerun.com -jeesci.com -jeeseen.com -jeesite.com -jeewong.com -jeeyaa.com -jeeyee.com -jeeyor.com -jefen.com -jeffdingzone.com -jeffjade.com -jeffreyitstudio.com -jeflon.com -jegotrip.com -jehudf.com -jekeen.com -jelleybrown.com -jellow.club -jellow.site -jellymoo.com -jellythink.com -jemincare.com -jemoic.com -jenno-cn.com -jenomc.com -jeom.org -jeongen.com -jeoshi.com -jepekale.com -jereh-gas.com -jereh-network.com -jereh.com -jerei.com -jeremycn.com -jerpx.com -jerryzou.com -jescard.com -jesdatools.com -jesie.org -jesiro.com -jesoncom.com -jesselauristonlivermore.com -jesselivermore.com -jestq.com -jet-ego.com -jet-logistics.com -jet-ok.com -jetechtool.com -jetgroup-cn.com -jetgroup-nb.com -jethoo.com -jethro.fun -jetionservice.com -jetlogistic.com -jetmobo.com -jetneed.com -jetsum.com -jetsum.net -jeulover.com -jeuronghotels.com -jevolpu.com -jewellery.gold -jewellworld.com -jewelryseeds.com -jewelryshanghai.com -jexus.org -jeyi.com -jeywatch.com -jf-biaotw.com -jf-motor.com -jf-r.com -jf1898.com -jf1969.com -jf258.com -jf900.com -jf9p.com -jfagroup.com -jfbcb.com -jfbuilding.com -jfchinese.com -jfcjt.com -jfcoo.com -jfdaily.com -jfedu.net -jfgjwl.com -jfgou.com -jfh.com -jfhzfsn.com -jfinal.com -jfinfo.com -jfj3419.com -jfjt.cc -jflparking.com -jflswl.com -jfpal.com -jfq.com -jfrcq.com -jfrogchina.com -jfrschool.com -jfsc.com -jfshare.com -jfstatic.com -jftech.com -jftianshancn.com -jfwb.com -jfwypay.com -jfxiaopaoqi.com -jfydgame.com -jfyf.cc -jfyiyao.com -jfyskw.com -jfz.com -jfzhcx.com -jfzhiyao.com -jg058.com -jg1060.com -jg1994.com -jg91.com -jgcarbide.com -jgchat.net -jgcjjt.com -jgdq.org -jgdun.com -jgdx.com -jgew3d.com -jgfarm.com -jgg.hk -jgg09.com -jggame.net -jghstar.com -jgjapp.com -jgjsoft.com -jglh.com -jglm.cc -jgs-ds.com -jgscct.com -jgsdaily.com -jgsemicon.com -jgstour.com -jgsxfw.com -jgtc315.com -jguanjia.com -jgums.com -jguo.com -jgxb120.com -jgxzy.com -jgy.com -jgyljt.com -jgyun.net -jgzx.org -jgzyw.com -jh-dzcl.com -jh-sh.com -jh-trace.com -jh-uav.com -jh0516.com -jh3737.com -jh3j.com -jh597.com -jh5l.com -jh8k.com -jh96095.com -jhak.com -jhaoyou.com -jhbee.com -jhcb.net -jhcfz.com -jhcheku.com -jhcms.com -jhconba.com -jhctbank.com -jhddsz.com -jhdmro.com -jhdpower.com -jhdxjk.com -jhenten.com -jhfl.com -jhforever.com -jhfsata.com -jhgolfcarts.com -jhgroup525.com -jhgtgb.com -jhgykt.com -jhhospital.com -jhhygl.com -jhi.cc -jhjt.xyz -jhjunda.com -jhjy.net -jhkao.com -jhkuajing.com -jhltsl.com -jhm2012.com -jhmnew.com -jhmwo.com -jhnsh.com -jhnsyh.com -jhonge.net -jhonse.com -jhotel-shanghai.com -jhpm.cc -jhqrmyy.com -jhqshfly.com -jhrcbank.com -jhrcsc.com -jhrcw.com -jhsairport.com -jhsc201ddd211svds.com -jhscl.net -jhscm.com -jhscrm.com -jhsddjd.com -jhsjttz.com -jhspa6.com -jhszyy.com -jhtmsf.com -jhtong.net -jhu.edu -jhuishou.com -jhvsr.com -jhwaimai.com -jhwdp.com -jhwvjjw.com -jhxcms.com -jhxjd.com -jhxl.org -jhxms.com -jhxrmyy.com -jhxzlsgs.com -jhydns01.com -jhydns05.com -jhygame.com -jhyhf.com -jhyongyou.com -jhypcy.com -jhytech.com -jhyusqo.com -jhyz.net -jhzdhjt.com -jhzhizao.com -jhzhkj.com -jhzhuji.com -jhzoo.com -ji-pai.com -ji-zhun.com -ji.ci -ji7.com -jia.com -jia12.com -jia300.com -jia360.com -jia400.com -jia86.cc -jiaads.com -jiaaohuanbao.com -jiaapps.com -jiaas.com -jiabaiwang.net -jiabangcnc.com -jiabaoyuanlin.com -jiabasha.com -jiaben.com -jiaboojc.com -jiacai001.com -jiacaitc.com -jiachangshichutieqi.com -jiacheng88.com -jiachong.com -jiadafoods.com -jiadapaper.com -jiadeqy.com -jiadingjiaxiao.com -jiadingqiang.com -jiadounet.com -jiadule.com -jiaduobao.ru -jiae.com -jiaenderen.com -jiaenhospital.com -jiafang168.com -jiafenqi.com -jiafu68.com -jiafuda.com -jiagedan.com -jiagela.com -jiagle.com -jiagoo.com -jiagoo.net -jiagouyun.com -jiaguanlaw.com -jiaguboshi.com -jiaguhome.com -jiagulun.com -jiagumen.com -jiagumima.com -jiaguowenhua.com -jiaguwenxf.com -jiahecare.com -jiaheu.com -jiahewushe.com -jiahua-sz.com -jiahuacinema.com -jiahuaming.com -jiahui.com -jiahuism.com -jiain.net -jiaji.com -jiaji28.net -jiajia-china.com -jiajia.tv -jiajiagroup.com -jiajiakt.com -jiajiangcake.com -jiajiao114.com -jiajiao400.com -jiajiaoban.com -jiajimao.com -jiajingink.com -jiajiyp.com -jiaju.cc -jiaju.com -jiajuimg.com -jiajuketang.com -jiajumi.com -jiajurenwu.com -jiajuservice.com -jiajuwo.com -jiajuxialiang.org -jiajuzhuliu.com -jiakao.com -jiakaobaodian.com -jiakaodashi.com -jiakaokemuyi.com -jiakelai.com -jiakexs.com -jialanling.com -jialaxin.cc -jialebao.cc -jialecc.com -jialei168.com -jialez.com -jialiangad.com -jialianzg.com -jialinep.com -jialiwood.com -jialiyoukuang8.com -jialongsports.com -jialvzc.com -jiamei123.com -jiameidental.com -jiameigj.com -jiameng.com -jiamengbang.net -jiamengfei.com -jiamens.com -jiami110.com -jiamiantech.com -jiaminghi.com -jiamingwenhua.com -jiamisoft.com -jian-jie.com -jian.net -jian27.com -jianada-qianzheng.com -jianae.com -jianai.love -jianai360.com -jianavi.com -jianbaizhan.com -jianbangchem.com -jianbaolife.com -jianbihua.com -jianbihua.org -jianbihua360.com -jianbing.com -jiancai.com -jiancaijia.com -jiancaik.com -jiancenj.com -jiancent.com -jiancepaper.com -jianchacha.com -jianchiapp.com -jianchihu.net -jianchuangwang.com -jiandaima.com -jiandan.net -jiandantianqi.com -jiandanxinli.com -jiandaopay.com -jiandaoyun.com -jiandati.com -jiandiao.com -jianeryi.com -jianfc.com -jianfei.com -jianfei.net -jianfeiba.com -jianfeibaike.com -jianfeidaren.com -jianfengstudio.com -jiang11.com -jiang7.com -jiangbeijituan.com -jiangbeimach.com -jiangbeishuicheng.com -jiangbeiyiyuan.com -jiangbeiyiyuan.net -jiangchaochina.com -jiangcp.com -jiangduoduo.com -jianggesh.com -jiangguimei.asia -jiangguo.net -jianghaiqu.net -jianghaosm.com -jianghehuagong.com -jianghuamem.com -jianghui.xyz -jiangidea.com -jiangjiaolong.com -jiangjiuren.com -jiangjizhong.com -jiangkk.com -jianglinminingindustry.com -jiangmama.net -jiangmike.com -jiangmin.com -jiangnan-group.com -jiangongdata.com -jiangongw.com -jiangpaipinpai.com -jiangpinjiangxin.com -jiangqiaomuye.com -jiangque.com -jiangruyi.com -jiangshankeji.com -jiangshanlihong.com -jiangshi.org -jiangshi99.com -jiangsudanzhao.com -jiangsuedu.net -jiangsufilm.com -jiangsufootball.org -jiangsugqt.org -jiangsugwy.org -jiangsukj.com -jiangsulvhe.com -jiangsumobile.com -jiangsurc.com -jiangsurhi.com -jiangsusx.com -jiangsuzhongpin.com -jiangtai.com -jiangtuoedu.com -jianguo.tv -jianguopuzi.com -jianguoyun.com -jiangweishan.com -jiangxiatech.com -jiangxinkeji.club -jiangxiol.com -jiangxirc.com -jiangxiwater.com -jiangxiwuliu.com -jiangxueqiao.com -jiangyan.tv -jiangyous.com -jiangyoushang.com -jiangyu.org -jiangzheba.com -jiangzidushu.com -jiangzikanshu.com -jiangziyuedu.com -jiangzuoku.net -jianhangcaifu.com -jianhaobao.com -jianhuagroup.com -jianhuasheng.com -jianhuavalve.com -jianhucheng.com -jianhui.org -jianhuw.com -jianianle.com -jianjian.tv -jianjiaobuluo.com -jianjutec.com -jiankang123.net -jiankang13.com -jiankanghebei.com -jiankangsn.com -jiankangyouyi.com -jianke-fangzhou.com -jianke.cc -jianke.com -jianke.net -jiankong.com -jiankunchina.com -jianlc.com -jianlc.net -jianli-sky.com -jianli.com -jianli88.com -jianliao.com -jianliben.com -jianliduo.com -jianlisheji.com -jianliw.com -jianlixiu.com -jianliyuan.com -jianloubao.com -jianlow.com -jianlu365.com -jianmaidi.com -jianmao.net -jianmeicao.com -jianmeng.net -jianmite.com -jianmuhub.com -jianniang.com -jianpaimeiye.com -jianpeicn.com -jianpian.info -jianpu.net -jianpu6.com -jianpu8.com -jianpu99.net -jianpuku.com -jianq.com -jianqiaochina.com -jianqimao.com -jianqiyl.com -jianran360.com -jianshe99.com -jiansheku.com -jianshen8.com -jianshenmi.com -jianshiduo.com -jianshihui.net -jianshionline.com -jianshu.com -jianshu.io -jianshu.tech -jianshuapi.com -jianshukeji.com -jiansuji001.com -jiansujihm.com -jiantaokj.com -jiantuku.com -jianwang360.com -jianweidata.com -jianweitv.com -jianwenapp.com -jianwulian.com -jianxi-materials.com -jianxinchemical.com -jianxinyun.com -jianxiyasi.com -jianyanjia.com -jianyechina.com -jianyefans.com -jianyewx.com -jianying.com -jianyixinli.com -jianyu360.com -jianyujiasu.com -jianyuweb.com -jianyv.com -jianzeppt.com -jianzhan110.com -jianzhan580.com -jianzhanbao.net -jianzhangongsi.com -jianzhe.com -jianzhi8.com -jianzhian.com -jianzhiba.net -jianzhibao.com -jianzhidaxue.com -jianzhidou.com -jianzhikeji.com -jianzhikeji.net -jianzhimao.com -jianzhiwangzhan.com -jianzhiweike.net -jianzhiyixin.com -jianzhong-edu.com -jianzhusheying.com -jiao15.com -jiaoben.net -jiaobu365.com -jiaobuser.com -jiaochengzhijia.com -jiaoda306.com -jiaodian.pub -jiaodj.com -jiaodong.net -jiaodonghr.com -jiaofei123.com -jiaohuilian.com -jiaohusheji.net -jiaojiang.com -jiaokaitech.com -jiaoko.com -jiaoliuqu.com -jiaomai.com -jiaonan.net -jiaonan.tv -jiaonizuocai.com -jiaoping.com -jiaoqiuqingxi.net -jiaoshirencai.com -jiaoshizan.com -jiaoshizhaopin.net -jiaoshizhuye.com -jiaoshoubang.com -jiaoshouhuayuan.com -jiaotu.men -jiaow.com -jiaoya.com -jiaoyf.com -jiaoyibao.com -jiaoyimao.com -jiaoyin.com -jiaoyixia.com -jiaoyizhu.com -jiaoyu361.com -jiaoyu400.com -jiaoyuangroup.com -jiaoyudao.com -jiaoyumao.com -jiaoyundiandongmen.com -jiaoyunw.com -jiaoyuwo.com -jiaoyuzhan.net -jiaozhou.net -jiapin.com -jiapu.tv -jiapuvip.com -jiaqiangban.com -jiaqianglian.com -jiaqing900.com -jiaren.org -jiarendress.com -jiarenrecycle.com -jiarenvip.com -jiarenzs.com -jiaruitec.com -jiasale.com -jiashejianyan.com -jiashengguangdian.com -jiashida5618.com -jiashiguoji168.com -jiashuangkuaizi.com -jiashuba.com -jiashule.com -jiasou.cc -jiass.cc -jiasu.work -jiasubook.com -jiasucai.com -jiasuhui.com -jiasule.com -jiasule.net -jiasule.org -jiasulian.com -jiatejijin.com -jiatengflycdn.com -jiatianxiazhuangshi.com -jiatongyitu.com -jiatop.com -jiatuhui.com -jiatui.com -jiatushuke.com -jiatx.com -jiawei.com -jiawei.xin -jiawentrans.com -jiawin.com -jiawonongye.com -jiawutech.com -jiawuzhanzheng.org -jiawuzi.com -jiaxianggame.com -jiaxianghudong.com -jiaxiangxm.com -jiaxiao.pub -jiaxiao100.com -jiaxiaozhijia.com -jiaxiaozhilian.com -jiaxichina.net -jiaxincloud.com -jiaxingren.com -jiaxinkg.com -jiaxinxuetang.com -jiaxiweb.com -jiaxuanwl.com -jiaxuejiyin.com -jiaxun.com -jiay.press -jiayans.net -jiayaw.com -jiayi56.com -jiayin618.com -jiayougo.com -jiayoujsq.com -jiayouxueba.com -jiayu.net -jiayu.yoga -jiayuan-ev.com -jiayuan-law.com -jiayuan.com -jiayuanzhang.com -jiayudata.com -jiayue.tech -jiayuehua.com -jiayuhongwedding.com -jiayusx.com -jiazaishanghai.com -jiazhao.com -jiazhao7.com -jiazhaoba.com -jiazhi.online -jiazhichem.com -jiazhoulvke.com -jiazhuang.com -jiazhuang6.com -jiazile.com -jiazuo.cc -jibai.com -jibao.online -jibencaozuo.com -jibi.net -jibing57.com -jibite.fun -jicaibao.com -jicaifund.com -jicaixinke.com -jice.io -jichangbus.com -jichangdaba.com -jiche.com -jicheng.net -jichengzao.net -jichuangke.com -jiclip.com -jicnj.com -jicon.net -jicyun.com -jidacheng.com -jidaihome.com -jidanpu.com -jidantuoshebei.com -jide.com -jidekan.com -jideos.com -jidi.com -jidian.im -jidiancdn.com -jidianwang.com -jidivr.com -jidiw.com -jidouauto.com -jidubook.com -jidujiao.com -jidujiasu.com -jieanjiaotong.com -jiebai.com -jiebanchuyou.com -jiebaodz.com -jiebaogroup.com -jiebide.xin -jiecang.com -jiecangtubemotors.com -jiechengcehui.com -jiechengcloud.com -jiechikeji.com -jiechuang.com -jiedaibao.gs -jiediankeji.com -jiefadg.com -jiefanglinli.net -jiefu.com -jiefu.net -jiefuku.com -jiegames.com -jiege.pro -jiegeng.com -jiegon.com -jiehua-chem.com -jiehua.com -jiehualv.com -jiehuapharma.com -jiehuigroup.com -jiehun021.com -jiehun027.com -jiejichengshi.com -jiejing.fun -jiekenmould.com -jiekon.com -jiekou.ltd -jielaigroup.com -jielibj.com -jieligo.net -jielijs.com -jieling.net -jielong-printing.com -jielong.co -jielong.com -jielongcorp.com -jielongdaquan.com -jielongguanjia.com -jiemaiyang.com -jiemeng.cc -jiemeng.tw -jiemeng8.com -jiement.com -jiemian.com -jiemin.com -jiemo.net -jiemodui.com -jiemoselect.com -jienyl.com -jiepai.net -jiepaids.com -jiepei.com -jieqi.com -jieqian.co -jieqibg.com -jieqinwang.com -jierengz.com -jieri2.com -jierili.com -jieruchaosheng.com -jiese.org -jiesen365.com -jieshangwei.com -jieshengit.com -jieshimt8.com -jieshitong.com -jieshu.me -jieshui8.com -jieshuitech.com -jieshuwang.com -jietu365.com -jietuhb.com -jietuosh.com -jietusoft.com -jieweijt.com -jiewen.run -jiexi.net -jiexing.cc -jiexitz.com -jiexiuyiyuan.com -jiexunyun.net -jieyang.la -jieyanri.com -jieyigroup.net -jieyitong.net -jieyou.com -jieyou.pro -jieyougame.com -jieyoulai888.com -jieyue.net -jieyuechina.com -jieyuechina.net -jifang360.com -jifang365.com -jifang369.com -jifenapp.com -jifencity.com -jifenfu.net -jifengkj.com -jifengyun.com -jifenh.com -jifenyi.com -jifenyouhuidui.com -jifenzhi.com -jifugk.com -jifulei.com -jigao616.com -jigaojituan.com -jigecili.com -jiguangdaili.com -jiguangdanci.com -jiguanglan.com -jiguo.com -jihai8.com -jihaoba.com -jihegui.com -jihex.com -jihexian.com -jiheyun.com -jihisy.com -jihot.com -jihuachina.com -jihuadyes.com -jihuanshe.com -jihubear.com -jihui88.com -jihujiasuqi.com -jihulab.com -jihuoma.com -jihuoniao.com -jihuoyx.com -jiiaa.com -jiimore.com -jijia.com -jijiaerp.com -jijiagames.com -jijiang5.com -jijiangep.com -jijianzhineng.com -jijiaoyu.com -jijidi.com -jijie168.com -jijigugu.club -jijijijin.com -jijing.site -jijinhao.com -jijitec.com -jijiyouxuan.com -jijuduo.com -jikabao.com -jikaicai.com -jike.city -jike.com -jike.info -jike800.com -jikecdn.com -jikedata.com -jikedingyue.com -jikedog.com -jikefan.com -jikegou.net -jikeiot.cloud -jikejiang.com -jikejiazhuang.com -jikejishu.com -jikeq.com -jiketuchuang.com -jikewan.com -jikexiaojiang.com -jikexiu.com -jikexueyuan.com -jikipedia.com -jikstatic.com -jilaihuyu.com -jilailawyer.com -jilaoshi.com -jiletaotao.com -jili20.com -jiliguala.com -jilingames.com -jilingwy.org -jilinmarathon.com -jilinshuiwu.com -jilinwula.com -jilinxiangyun.com -jiliyun.com -jilongsw.com -jilu.info -jiluchengshi.com -jiluer.com -jilulijob.com -jilvfaka.com -jimagroup.com -jimakj.com -jimay.com -jimei-cn.com -jimeisilk.com -jimeng.com -jimeng.mobi -jimetec.com -jimi168.com -jimicn.com -jimifashion.com -jimihu.com -jimilier.com -jimingbao.com -jimistore.com -jimjordanlivinglyrics.com -jimmoo.com -jimoedu.net -jimu.com -jimubox.com -jimuc.com -jimucake.com -jimujiazx.com -jimuyk.com -jin-huang.net -jin-wang.net -jin-xiang.com -jin-xin.com -jin10.com -jin10x.com -jinan-marathon.com -jinan7.com -jinanfu.net -jinanguanggao.com -jinanhualian.com -jinankingyue.com -jinanxww.com -jinbaiteng.com -jinbangedu.com -jinbaobeiqiming.com -jinbaoidc.com -jinbaonet.com -jinbi-an.com -jinbiaochi.com -jinbiaohui.com -jinbiaojv.com -jinbifun.com -jinbilianmeng.com -jinbitou.net -jinbondt.com -jincaicaiwu.com -jincao.com -jincaocw.com -jincdn.com -jincece.com -jinchanggps.com -jinchanqunale.com -jincheng56dl.com -jinchengdingjs.com -jinchengmf.com -jinchengpharm.com -jinchuang.org -jinchuanrmt.com -jinchutou.com -jincin.com -jindaixx.com -jindanlicai.com -jindaoshangwu.com -jindati.com -jinde-logistics.com -jindianweb.com -jindianyishi.com -jindidata.com -jindidq.com -jinding.cc -jindingfm.com -jindongsoft.com -jindoushiqi.com -jinducw.com -jindun007.net -jindunfan.com -jindunkeji.com -jinduoduo.net -jinengtisheng.com -jinenrunze.com -jinergy.com -jinerkang.com -jinfan-keji.com -jinfanda.com -jinfangka.com -jinfengcx.com -jinfengpaint.com -jinfengwine.com -jinfh.net -jinfuzi.com -jing-tong.com -jing-xian.com -jingangfuhui.com -jingangjing.com -jingangjing.net -jingankerrycentre.com -jingansicbd.com -jingbantong.com -jingbo.net -jingbotech.com -jingc.com -jingcai360.net -jingcaipaint.com -jingcaituijian.com -jingch.net -jingchang.tv -jingchengban.com -jingchengwl.com -jingchi.net -jingchuhao.com -jingchurc.com -jingdajiance.com -jingdaka.com -jingdapcb.com -jingdata.com -jingdeyx.com -jingdianju.com -jingdianlaoge.com -jingdianxitong.com -jingdiao.com -jingdigital.com -jingdong.com -jingdongdaili.com -jingdongjinrong.com -jingdongyouxuan.com -jingdudai.com -jingdukaoyan.com -jingdw.com -jingge.com -jinggeng.net -jinggon.com -jinggong-auto.com -jinggongvalve.com -jingguan.ai -jinggui.com -jinghaishop.com -jinghangapps.com -jingheiot.com -jinghesh.net -jinghonggroup.com -jinghongmedical.com -jinghongsh.com -jinghua.com -jinghuans.com -jinghuaqimo.com -jinghudianqi.com -jinghuitang.com -jingjia.net -jingjia.org -jingjia6.com -jingjiamicro.com -jingjiang.com -jingjiasc.com -jingjiawang.com -jingjiayl.com -jingjidaokan.com -jingjie360.com -jingjiezhileng.com -jingjitech.com -jingjiu.com -jingju.com -jingjuok.com -jingjusc.com -jingkaiyuan.com -jingkan.net -jingkaowang.com -jingkebio.com -jingkeleici.com -jingkeyiqi.com -jingkids.com -jingkunagro.com -jinglawyer.com -jinglian88.com -jingliangad.com -jingling.group -jinglingbaoai.com -jinglingbiaozhu.com -jinglingshuju.com -jinglou8.com -jingluemall.com -jingluole.com -jingme.net -jingmedicine.com -jingmeiti.com -jingmen.com -jingmiguangliangg.com -jingmiliangju.com -jingnei.net -jingnengpower.com -jingoal.com -jingos.com -jingpai.com -jingpaidang.com -jingpaihao.com -jingpainet.com -jingpinhui.com -jingpinke.com -jingpt.com -jingqizhitongche.com -jingqueyun.com -jingrongshuan.com -jingruigroup.com -jingsailian.com -jingsh.com -jingshanbus.com -jingshibang.com -jingshibianhuren.com -jingshicd.com -jingshifang.net -jingshistudy.com -jingshizyy.com -jingshun-wl.com -jingshzh.com -jingsocial.com -jingtai-group.com -jingtang.xyz -jingtanggame.com -jingtao58.com -jingtuitui.com -jingtum.com -jingua168.com -jinguanauto.com -jingugroup.net -jinguilvyou.com -jingutrust.com -jingvo.com -jingwacenter.com -jingwah.com -jingwei.link -jingweizhichuang.com -jingwuhui.com -jingwxcx.com -jingxi.com -jingxi.net -jingxiang.work -jingxianglawfirm.com -jingxinad.com -jingxinclass.com -jingyakt.com -jingyanben.com -jingyanbus.com -jingyangzhijia.com -jingyanlib.com -jingyanshu.com -jingyeco.com -jingyeqian.com -jingyi186.com -jingyimetal.com -jingyinb.com -jingyingshenghua.com -jingyingyicheng.com -jingyitech.com -jingyiyiyao.com -jingyougz.com -jingytech.com -jingyuan.com -jingyuelaw.com -jingyuetang.com -jingyunos.com -jingyunyilian.com -jingyuweike.com -jingyuxiaoban.com -jingyuyun.com -jingzhengu.com -jingzhi5.com -jingzhouxw.com -jingzhu-bio.com -jingzhusz.com -jingzong.org -jinhaigroup.com -jinhaihujingqu.com -jinhaisujiao.com -jinhe-energy.com -jinheamc.com -jinher.com -jinheshiye.com -jinhevip.com -jinhongchina.com -jinhonggroup.com -jinhongnl.com -jinhu.me -jinhuapp.com -jinhuatv.com -jinhuawatch.com -jinhuazhe.com -jinhuo.net -jinhusns.com -jinhutour.com -jinianbi.com -jiniance8.com -jinianri.com -jining.com -jiningcoal.com -jiningjj.com -jiniu.work -jiniutech.com -jinjia.com -jinjiang-group.com -jinjiang.com -jinjiang.tv -jinjianghotels.com -jinjianginns.com -jinjiangwater.com -jinjiaomh.com -jinjie.tech -jinjiedu.com -jinjieshengwu.com -jinkaijia.com -jinkan.org -jinkanghospital.com -jinkaoedu.com -jinke.com -jinkedatex.com -jinkeholdings.com -jinkejoy.com -jinkex.com -jinkezhexin.com -jinkongauto.com -jinkopower.com -jinkosolar.com -jinkoubaodian.com -jinkoucaigou.com -jinku.com -jinkunlaw.com -jinlaiba.com -jinlaijinwang.com -jinlangbo.com -jinlanqihua.com -jinlanzuan.com -jinletx.com -jinlianchu.com -jinling.com -jinlingholdings.com -jinlinghotel.com -jinlinghotels.com -jinlingjiajiao.com -jinliniuan.com -jinlishenghuo.com -jinliufu.net -jinliyang.net -jinliyu.cc -jinlonggeishui.com -jinluowater.net -jinluzl.com -jinlvkeji.com -jinlyb.com -jinma-int.com -jinmabrand.com -jinmajia.com -jinmalvyou.com -jinmao-ti.com -jinmao88.com -jinmaodigital.com -jinmaofoundry.com -jinmaopartners.com -jinmaowy.com -jinmaozs.com -jinmeiji.com -jinmenrc.com -jinmi.com -jinming.net -jinmixuetang.com -jinmogame.com -jinmuinfo.com -jinnong.cc -jinpacs.com -jinpai365.com -jinpanlab.com -jinpengecologyhotel.com -jinpin.xyz -jinpu.com -jinpupvc.com -jinqi2023.com -jinqiang.online -jinqiangjc.com -jinqianguan.com -jinqianma.com -jinqiaojob.com -jinqiaopu.com -jinqiexia.com -jinqigroup.com -jinqijian.com -jinqingdz.com -jinqiunc.com -jinqiuzhu.com -jinquanpharm.com -jinqunla.com -jinr.com -jinri.red -jinridiaoyu.com -jinriguanzhu.cc -jinrilife.com -jinriningxiang.com -jinrirm.com -jinrishici.com -jinritemai-inc.com -jinritemai.com -jinritoutiao.com -jinriwushi.com -jinrixing.cc -jinrongbaguanv.com -jinrongchaoshi.com -jinrongdianli.com -jinronghu.com -jinrongren.net -jinrui-tech.com -jinruimedical.com -jinruism.com -jinrunsoft.com -jins-cn.com -jinse.com -jinsebook.com -jinsehuaqin.com -jinsenforestry.com -jinsha120.com -jinshacapital.com -jinshakemei.com -jinshanapi.com -jinshandaolu.com -jinshangdai.cc -jinshangdai.com -jinshangji.com -jinshanglawfirm.com -jinshangroup.net -jinshangtechnology.com -jinshanju.com -jinshanmz.com -jinshare.com -jinshasitemuseum.com -jinshengceramics.com -jinshengtang.net -jinsheyi.com -jinshi-nj.com -jinshier66.com -jinshileasing.com -jinshisoft.com -jinshitan.com -jinshixun.com -jinshmgw.com -jinshuai.com -jinshuangding.com -jinshuiyuncai.com -jinshuju.co -jinshuju.com -jinshuju.cool -jinshuju.net -jinshuju.org -jinshujuapp.com -jinshujucdn.com -jinshujufiles.com -jinshuluoshui.com -jinshun.com -jinshuschool.com -jinshutuan.com -jinsiwei.com -jintajx.com -jintanwang.com -jintdev.com -jintelisi.com -jinti.com -jintianjihao.com -jintiankansha.me -jintone.com -jintouep.com -jintouwangdai.com -jintuituiapp88.com -jinwaimai.com -jinweitec.com -jinwucdn.com -jinxiang114.com -jinxianglian.net -jinxidao.com -jinxinqh.com -jinxiu266.com -jinxuliang.com -jinxun.cc -jinyaco.com -jinyafu.com -jinyawei.com -jinyici.com -jinyidun.com -jinyindao.com -jinying.com -jinyinghotels.com -jinyingimage.com -jinyongwang.com -jinyoukai.com -jinyuan.pro -jinyuanbiochem.com -jinyuancopper.com -jinyuangejiaju.com -jinyuanlight.com -jinyuesc.com -jinyunal.com -jinyunjob.com -jinyunweb.com -jinyuzd.cc -jinzhao.me -jinzheled.com -jinzhengjt.com -jinzhidagl.com -jinzhijiance.com -jinzhongbus.com -jinzhou315.com -jinzhou360.com -jinzhoubank.com -jinzhougroup.com -jinzhucaifu.com -jinzhuoqy.com -jinzjy.com -jinzunjy.com -jioluo.com -jiongcun.com -jiongji.com -jiongtoutiao.com -jiongxiao.com -jiongyaya.com -jiont.com -jionz.com -jiou.me -jiouyun.com -jipd.com -jiping.site -jipinsoft.com -jipinwww.com -jiqid.com -jiqie.com -jiqimao.com -jiqirenku.com -jiqish.com -jiqizhixin.com -jiqrxx.com -jiqw.com -jirehhz.com -jirengu.com -jirenqi.com -jiri10.com -jiri28.com -jirong.com -jirongyunke.net -jirou.com -jisapower.com -jisec.com -jisheyun.com -jishi3.com -jishicloud.com -jishicn.com -jishigou.net -jishigu.com -jishirili.com -jishitailai.com -jishiyuboke.com -jishubai.com -jishuchi.com -jishukong.com -jishulink.com -jishuoshuo.com -jishusongshu.com -jishux.com -jishuzf.com -jisi17.com -jisikaer.com -jissbon.com -jisu-cnd.com -jisu1688.com -jisuanke.com -jisuanla.com -jisuanzt.com -jisuapi.com -jisuchou.com -jisuim.com -jisuimage.com -jisuimg.com -jisujie.com -jisukandian.com -jisunton.com -jisuoffice.com -jisupdf.com -jisupdfeditor.com -jisupdftoword.com -jisupe.com -jisuqiang.com -jisuqiang.net -jisutodo.com -jisutp.com -jisuts.com -jisutui.vip -jisuwebapp.com -jisuwz.com -jisuxia.com -jisuye.com -jisuyilaixingpiyan.com -jisuziyuanbf.com -jisuzyv.com -jita.fun -jita.im -jita5.com -jitaba.net -jitabang.com -jitadaren.com -jitadog.com -jitailian.com -jitaivalve.com -jitangcn.com -jitao.tech -jitapai.com -jitapu.com -jitapuji.com -jitashe.org -jitavip.com -jitetech.com -jitgame.com -jitianhz.com -jitriroad.com -jittbang.com -jitu5.com -jitucdn.com -jitukaisuo.com -jituofuture.com -jituotech.com -jituwang.com -jiu-b.com -jiuaidu.com -jiuaizhihe.com -jiuanchem.com -jiuanyy.com -jiub.net -jiubaju.com -jiubawan.com -jiucaicaijing.com -jiucaigongshe.com -jiucaishuo.com -jiuce.com -jiuchenglaw.com -jiuchet.shop -jiuchutong.com -jiucool.org -jiudafu.com -jiudaifu.com -jiudianjiu.com -jiudianrong.com -jiudianyongpin.com -jiudingcapital.com -jiudinggroup.com -jiudingref.com -jiufengsuye.com -jiugang.com -jiugangbid.com -jiuguijiu000799.com -jiuhantang365.com -jiuhengmake.com -jiuhewj.com -jiuhongwang.com -jiuhua0566.com -jiuhuaiwenxue.com -jiuhuang.com -jiuhuashan.cc -jiuhuishou.com -jiuishizanjin.com -jiujiange.com -jiujiangjx.com -jiujipos.com -jiujiuhuyu.com -jiujiuyunhui.com -jiujiuzu.com -jiujun.net -jiujunqifu.com -jiukaicable.com -jiuku.com -jiuligroup.com -jiulku.com -jiull.com -jiulong120.com -jiulve.com -jiumaojiu.com -jiumaster.com -jiumei.com -jiumei168.com -jiumei8.com -jiumeisheng.com -jiumentongbu.com -jiunile.com -jiuniok.com -jiupaicom.com -jiupainews.com -jiupaipay.com -jiuq.com -jiuqianwan.group -jiuqianwanjituan.com -jiuqijz.com -jiuquan.cc -jiuqucloud.com -jiuquhe.com -jiurichem.com -jiurong.com -jiuruigroup.com -jius.net -jiusanedu.com -jiuse.cloud -jiuse2.cloud -jiuse3.cloud -jiushengas.com -jiushiadx.com -jiushigong.com -jiushixing.com -jiushoubiao.com -jiushui.tv -jiusi.com -jiusi.net -jiusibz.com -jiusihengyuan.com -jiusili.com -jiusitm.com -jiusko.com -jiusongjiankang.com -jiutaigroup.com -jiutian.net -jiutong100.com -jiutongqu.com -jiutu.net -jiutw.com -jiuwa.net -jiuwan.com -jiuwang.shop -jiuwanshan.net -jiuwei.net -jiuweick.com -jiuweige.com -jiuxian.com -jiuxianfeng.com -jiuxiaobao.vip -jiuxihuan.net -jiuxinban.com -jiuxing.com -jiuxing818.com -jiuxingtang.online -jiuxinsolar.com -jiuxu.com -jiuxusb.com -jiuyan.info -jiuyanchuanmei.com -jiuyang.com -jiuyangongshe.com -jiuyaowangluo.com -jiuyejia.com -jiuyew.com -jiuyezhinan.com -jiuyf.com -jiuyi120.com -jiuyiwenhe.com -jiuyue919.com -jiuyuehuyu.com -jiuyuu.com -jiuzg.com -jiuzhai.com -jiuzhaigou-china.com -jiuzhang.com -jiuzheng.com -jiuzhenge.com -jiuzhilan.com -jiuzhinews.com -jiuzhoupharma.com -jiuzhouzb.com -jiuzhuanzhuan.com -jiuzungame.com -jiway.net -jiweichengzhu.com -jiweixin168.com -jiwu.com -jiwucdn.com -jiwudai.com -jixiang-ht.com -jixiang-tech.com -jixiang800.com -jixiangjili.com -jixiangnh.com -jixiangyou.com -jixianku.com -jixiao100.com -jixiaoedu.com -jixie100.net -jixie5.com -jixie5188.com -jixiecun.com -jixiehonghong.com -jixiejiaoyu.com -jixieshi.com -jixieshigong.com -jixiew360.com -jixiewz.com -jixinbbd.com -jixinet.com -jixixx.com -jixuanw.com -jixueedu.com -jixuninfo.com -jixunjsq.com -jixunlyq.com -jiyaogroup.com -jiyi.art -jiyi.biz -jiyi.top -jiyida-logistics.com -jiyifa.com -jiyikj.com -jiyili.net -jiyin-tech.com -jiyin2020.com -jiyixcx.com -jiyou-tech.com -jiyoujia.com -jiyouwang.com -jiyuantour.com -jiyue-auto.com -jiyuncn.com -jiyunhudong.com -jiyunhudong.net -jiyuntang.com -jiyusi.com -jizbmedia.com -jizhan.com -jizhangla.com -jizhaotang.com -jizhazha.com -jizhiba.com -jizhida.com -jizhihd.com -jizhihezi.com -jizhimobi.com -jizhiyouke.com -jizhouyoupin.com -jizhuba.com -jizhuomi.com -jizhutaoke.com -jiziyy.com -jizustore.com -jj-1918.com -jj-inn.com -jj00.com -jj0833.com -jj20.com -jj59.com -jj831.com -jj99.icu -jjbang.com -jjbank.net -jjbbs.com -jjbctv.com -jjbdns.com -jjbearings.com -jjbhn.com -jjbisai.com -jjblogs.com -jjbnews.xyz -jjbzhx.com -jjcbw.com -jjccb.com -jjcclt.com -jjcdn.com -jjcoffetel.cc -jjcoffetels.com -jjcpe.com -jjcs66.com -jjcto.com -jjdd.com -jjdede.com -jjdqshy.com -jjecn.com -jjedu.com -jjedu.net -jjeglobal.com -jjfinder.com -jjfuzu.com -jjg630.com -jjgsxc.com -jjh11.com -jjhb.com -jjhgame.com -jjhgamedns.com -jjhh.com -jjhlkqn.com -jjhuifu.com -jjhuolang.com -jjhuoyan.com -jjidc.com -jjiehao.com -jjinfo.com -jjisp.com -jjj555.com -jjjaaa.com -jjjcjt.com -jjjkj.com -jjkeq.com -jjkjnet.com -jjkk.org -jjkucunxie.com -jjldbk.com -jjldxz.com -jjledu.net -jjlgbj.com -jjlhbs.com -jjlvu.com -jjlysh.com -jjmatch.com -jjmfc.com -jjmh.com -jjmkids.com -jjmmw.com -jjnshop.com -jjnz.com -jjonline.org -jjqj.net -jjr.vip -jjrc.net -jjrw.com -jjsedu.org -jjshome.com -jjsip.com -jjtang.com -jjtianshangi.com -jjtonline.com -jjtravel.com -jjttjx.com -jjwdz.com -jjwli.com -jjwsx.com -jjwxc.com -jjwxc.net -jjwxc.org -jjxxk.com -jjxyls.com -jjy118.com -jjycw.net -jjygym.com -jjypyz.com -jjys188.com -jjyz.net -jjyz360.com -jjzc168.com -jjzdm.com -jjzfgjj.com -jjzls.com -jjzyy.com -jk-bms.com -jk-px.com -jk.com -jk126.com -jk13.net -jk169.net -jk2h.com -jk37du.com -jk3a.com -jk51.com -jk725.com -jk90.com -jkangbao.com -jkapi.com -jkb7.com -jkbexp.com -jkbl.com -jkc8.com -jkchemical.com -jkcn365.com -jkcorkpads.com -jkcsjd.com -jkd.com -jkd360.com -jkdsz.com -jkelec.com -jkh-ym.com -jkhapp.com -jkhcfz.com -jkhds872.com -jkhealth.vip -jkimg.net -jkjiekuan.com -jkjoinns.com -jkjzt.com -jkkefv.com -jkl6.com -jkllbd.com -jklsjm.com -jknanotech.com -jkouu.com -jkpan.cc -jkpj.com -jkqdl.com -jkqingman.com -jkrcw.net -jksdhgu.com -jkt-tencentclb.cloud -jkt-tencentclb.com -jkt-tencentclb.net -jkt-tencentclb.work -jktcom.com -jktong.com -jktower.com -jkuntp.com -jkwatch99.com -jkwshk.tv -jkx.cc -jkxds.net -jkxedu.com -jkximg.com -jkxw168.com -jkyc.com -jkydt.com -jkypeg.com -jkyule.com -jkzhilu.com -jkzl.com -jkzn365.com -jl-er.com -jl-jssk.com -jl0435.com -jl0775.com -jl1mall.com -jl465.com -jl519.com -jl54.org -jl7y.com -jladi.com -jlafw.com -jlairports.com -jlakes.org -jlandmeditech.com -jlaod.com -jlaoj.com -jlaqjdjt.com -jlbhtc.com -jlbjcs.com -jlbkjt.com -jlbry.com -jlc-3dp.com -jlc-bbs.com -jlc-cad.com -jlc-cam.com -jlc-cnc.com -jlc-code.com -jlc-dfm.com -jlc-drm.com -jlc-ecad.com -jlc-erp.com -jlc-fpc.com -jlc-gw.com -jlc-jh.com -jlc-layout.com -jlc-pcb.com -jlc-smt.com -jlc-zh.com -jlc.com -jlcar.net -jlcca.com -jlccad.com -jlccam.com -jlccnc.com -jlccpit.com -jlcdfm.com -jlcecad.com -jlceda.com -jlcerp.com -jlcfa.com -jlcmc.com -jlcops.com -jlcsj.com -jlcsmt.com -jldjam.com -jldpvc.com -jlfba.com -jlg66.com -jlgf.com -jlginyo.com -jlgjjt.com -jlguorui.com -jlguowen.com -jlgxmob.com -jlgyjj.com -jlhc.com -jlhdq.com -jlhnw.com -jlhs.net -jlhtcm.com -jlhxjt.com -jlhzyanxue.com -jlinh.com -jljcxy.com -jljcz.com -jljgdj.org -jljnkj.com -jljob88.com -jljzzs.com -jlkfapp.com -jlkgj.com -jlkj.cc -jlkjgroup.com -jllihua.com -jllyzxyy.com -jlmhk.com -jlmhw.com -jlmuban.com -jlnku.com -jlnls.com -jlonline.com -jlpay.com -jlq.com -jlqsugar.com -jlriza.com -jlrtvu.com -jlsdesyxx.com -jlsdwj.com -jlsdzgckcy.com -jlsebhyy.com -jlsegx.com -jlsemi.com -jlsfcyy.com -jlsgjt.com -jlsjsjlhgczxxh.com -jlsjsxxw.com -jlsports.com -jlspr.com -jlsqwyy.com -jlsrc.com -jlsrmyy.net -jlstt.com -jlsw.cc -jlswansen.com -jlsyqzyy.com -jlszlyy.com -jlt01.com -jltchina.com -jltq.com -jltrq.com -jltu.net -jlty56.com -jltzgfgs.com -jlwater.com -jlwlw.com -jlxfw.com -jlxhyy.com -jlxtxny.com -jlylwater.com -jlyr2.com -jlysgjzx.com -jlystatic.com -jlytzk.com -jlzhongdong.com -jlzkb.com -jlzsoft.com -jlzyz.com -jm-gallium.com -jm-machines.com -jm-talents.com -jm1ph.com -jm2046.com -jm233333.com -jm3f.com -jm3q.com -jmads.net -jmbao.com -jmbbs.com -jmbon.com -jmbus.net -jmch12333.com -jmchn.com -jmd-china.com -jmd-leatherbag.com -jmdedu.com -jmdna.com -jmdns.com -jmed.com -jmeii.com -jmeizs.com -jmev.com -jmgle.com -jmglg.com -jmgo.com -jmgsgs.com -jmhaofa.com -jmhapp.com -jmhd8.com -jmhs.net -jmi365.com -jmj-pharma.com -jmj.cc -jmj1995.com -jmjc.tech -jmjxc.com -jmjzy.com -jmkj.com -jmkjmob5.xyz -jmkx.com -jmkxjt.com -jmlanguan.com -jmlfood.com -jmmsn.com -jmmuseum.com -jmnk300.com -jmonline.org -jmp-cn.com -jmp.gd -jmqy.com -jmqyjt.com -jmrb.com -jmrcw.com -jmsqw.com -jmstatic.com -jmstation.com -jmsxsw.com -jmt-bio.com -jmtnt.com -jmtsg.com -jmwater.com -jmwww.net -jmxckj.com -jmxiangyi.com -jmxlmc.com -jmxw.net -jmycapacitor.com -jmycbus.com -jmyleather.com -jmyna.net -jmyqsl.com -jmzcgs.com -jmzgo.com -jmzhangfu.com -jmzns.com -jn-bank.com -jn-cits.com -jn001.com -jn123456.com -jn1535.com -jn172.com -jn720.com -jn80.com -jnadi.net -jnairport.com -jnbaibo.com -jnbank.cc -jnbbbyy.com -jnbctv.com -jnbosai.com -jnbuscard.com -jncarw.com -jncec.com -jncfcj.com -jncfjt.com -jncgzl.com -jnchsd.com -jncjjt.com -jncjsgroup.com -jncncq.com -jncyx.com -jndfzt.com -jndssd.com -jndvisa.com -jndwyy.com -jndzx.com -jnec-tencentclb.cloud -jnec-tencentclb.com -jnec-tencentclb.net -jnec-tencentclb.work -jnesc.com -jnexpert.com -jnfx.com -jnfxny.com -jngaobo.com -jngcxy.com -jnghm.com -jngjj.net -jngl.net -jnhb.com -jnhi.com -jnhongyun9.com -jnhouse.com -jnhwjt.com -jnhxzc.com -jnhyyy.com -jnhzxx.com -jnjfwzhs.com -jnjingxin.com -jnjj.com -jnjpkj.com -jnjszl.com -jnkason.com -jnky.com -jnlab.com -jnlc.com -jnlgzs.com -jnltwy.com -jnmama.com -jnmc.com -jnmnls0531.com -jnnc.com -jnnews.tv -jnoec.com -jnpfsoft.com -jnpjyy.com -jnqzyy.com -jnrain.com -jnreli.com -jnrmyy.com -jnruilun.com -jnryc.com -jns168.com -jnshijia.com -jnshu.com -jnsjzyxh.com -jnskqyy.com -jnslyy.com -jnsmjt.com -jnsms.com -jnstdc.com -jnszhqyy.com -jntcg.com -jntig.com -jntinchina.com -jntyhl.com -jnubio.com -jnw.cc -jnwb.net -jnwenlian.com -jnwinner.com -jnxdgs.com -jnxtzdh.com -jnxydefsxx.com -jnyczx.com -jnydgm.com -jnyng.com -jnyyjt.com -jnzcsyj.com -jnzhuoxin.com -jnzjzx.net -jnzl.com -jnzongchi.com -jnzwgzs.com -jnzx.cc -jnzycw.com -job-sky.com -job006.com -job0575.net -job0663.com -job0722.com -job0728.com -job0768.com -job088.com -job0917.com -job10000.com -job1001.com -job11580.com -job120.com -job168.com -job1998.com -job225.com -job2299.com -job250.com -job263.com -job36.com -job510.com -job5156.com -job5588.com -job5678.com -job592.com -job788.com -job88.com -job910.com -job9151.com -job916.com -jobbaidu.com -jobbole.com -jobcdp.com -jobch263.com -jobcn.com -jobczrc.com -jobeast.com -jobef.com -jobgojob.com -jobhb.com -jobhuaibei.com -jobi5.com -jobidc.com -jobinhe.net -jobjm.com -jobjy.com -jobloser.com -jobosoft.vip -jobpin.com -jobsalon.net -jobsdigg.com -jobsitechina.com -jobsun.com -jobtiku.com -jobtong.com -jobui.com -jobuy.com -jobvvv.com -jobxinpg.com -jobyp.com -jocat.com -jocgreatwall.com -jocite.com -joclabor.net -jocltd.com -joctech.com -jocund-gift.com -jodoll.com -joe92.com -joessem.com -johhan.com -johnlz.com -johnmedia.com -johogames.com -johome.com -johouse.com -joiest.com -joinchitchat.com -joindata.net -joineonlux.com -joinf.com -joiningss.com -joinkchem.com -joinpay.com -joinquant.com -joinsen.com -joinsuns.com -joint-harvest.com -jointas.com -jointech-cn.com -jointekbusiness.com -jointforce.com -jointown.com -joinusad.com -joinval.com -joinway.com -joinwaylawfirm.com -joinwee.com -jojo000.vip -jojoread.com -jojoreading.com -joke66.com -jokecommunity.com -jokecommunity.net -joker.li -jolimark.com -jollerge.com -jollylifelhq.com -joloplay.com -jomocdn.net -jomodns.com -jomodns.net -jomoxc.com -jomoxd.com -jongtay.com -jonhuu.com -jonllen.com -jonln.com -jonny.vip -jonrmal.com -jonsbo.com -jonvie.com -jooancloud.com -joobot.com -jooioo.com -joojcc.com -joojtech.com -joojzz.com -joomla.work -joomobx.com -joooz.com -joowhee.com -joox.com -jooyacn.com -jooyoo.net -jooyuu.com -joozone.com -joqoo.com -josen.net -josephcz.xyz -joshreso.com -joshua317.com -jotop.com -jotop.net -jotrin.com -jouav.com -jouder.com -joudou.com -joulwatt.com -journalmc.com -journeyui.com -jourserv.com -jouypub.com -jovcloud.com -jovetech.com -jovision.com -jovisionai.com -jovmall.com -jowto.com -joy-air.com -joy-nb.com -joy110.com -joy147.com -joy5151.com -joya-electric.com -joyact.com -joyami.com -joyanglab.com -joyapi.com -joyargroup.com -joybuy.com -joybuy.es -joycity.mobi -joydin.com -joyes.com -joyfire.net -joyforce.com -joygames.com -joyglory.com -joyglue.com -joyhc.com -joyi.com -joyinchem.com -joying.com -joyingbox.com -joyingtrip.com -joyinpharma.com -joyintour.com -joyinvleah.com -joyj.com -joylawyer.com -joymeng.com -joyncleon.com -joynext.com -joyochem.com -joyocosmetics.com -joyoget.com -joyoucnc.com -joyoung.com -joyours2019.com -joyowo.com -joyplus.tv -joyshebao.com -joyslink.com -joyson.com -joyssl.com -joystay.net -joysung.com -joysunsh.com -joytest.org -joytourvip.com -joytrav.com -joytraveller.com -joytunescn.com -joytype.com -joyu.com -joyuai.com -joyugas.com -joyulf.com -joyware.com -joywellsemi.com -joywii.net -joywok.com -joyworkshop.com -joyy.com -joyyan.com -joyyang.com -joyyinc.com -joyyued.com -jozne.com -jp-daigou.com -jp-moco.com -jp-tencentclb.cloud -jp-tencentclb.com -jp-tencentclb.net -jp-tencentclb.work -jp.com -jp.run -jp0663.com -jp95.com -jpbeta.net -jpcec.com -jpchinapress.com -jpcoalboss.com -jpcq666666.com -jpddc.com -jpedo.com -jpeen.com -jperation.com -jpfmor.com -jpg.cm -jpghd.com -jpgjzzs.com -jpgreat7.com -jphot.net -jpisp.com -jpjc315.com -jpkankan.com -jpkix.com -jpmetro.com -jpmorganchina.com -jpmsg.com -jpnettech.com -jpnlink.xyz -jpopsuki.eu -jprtyun.com -jpsdk.com -jpseek.com -jpshuntong.com -jpsmile.com -jpspecsz.com -jpsto.com -jptab.com -jpthome.com -jptoe.com -jpts.sinovision.net -jpvat.com -jpwb.cc -jpwb.net -jpwind.com -jpwindow.com -jpwky.com -jpwxapp.com -jpxm.com -jpxue.com -jpxww.com -jpyoo.com -jpyssc.com -jpzx.net -jpzy01.com -jq-school.com -jq22.com -jq33.com -jqbar.com -jqcool.net -jqdzw.com -jqgc.com -jqhtml.com -jqkgjt.com -jqlv.com -jqnbp.com -jqncp.com -jqpress.com -jqr.com -jqr5.com -jqrc.net -jqrc88.com -jqrkc.com -jqsite.com -jqsmm.com -jqtxxedk.com -jquan.ink -jquee.com -jquery123.com -jqueryfuns.com -jquerywidget.com -jqwater.com -jqwwq.com -jqyljt.com -jqyou.com -jqzhuangshi.com -jqzjop.com -jqzplat.com -jqzw.com -jr-mjg.com -jr-soft.com -jr123.com -jr18.com -jr2019.com -jravity.com -jrbiopharma.com -jrbobbin.com -jrc-tech.com -jrdaimao.com -jrexam.com -jrfcg.com -jrgang.com -jrgaofu.com -jrhot.com -jrj.com -jrjiekuan.com -jrjingshan.com -jrjr.com -jrlady.com -jrlm81.com -jrlxym.com -jrmf360.com -jrmianban.com -jrnba.cc -jrntv.com -jrpengze.com -jrqiwen.com -jrqzw.net -jrsncn.com -jrss.com -jrszw.com -jrteck.com -jrtgroup.net -jrtx.site -jrwenku.com -jrxtp.com -jrxzj.com -jryccm.com -jryghq.com -jrysdq.com -jryssj.com -jryzt.com -jrzj.com -jrzp.com -js-aeg.com -js-aerfa.com -js-cct.com -js-cxjt.com -js-dw.com -js-emap.com -js-exp.com -js-gear.com -js-gojo.com -js-haiyao.com -js-jiatai.com -js-jinhua.com -js-jwt.com -js-leader.com -js-lottery.com -js-paper.com -js-powerstone.com -js-rongzheng.com -js-seeker.com -js-shenghang.com -js-talents.com -js-weilong.com -js-xny.com -js-ym.com -js-zk.com -js.design -js04999.com -js0573.com -js118114.com -js165.com -js178.com -js3.org -js3n.com -js7xc.com -js811.com -js9499.com -js96008.com -js96777.com -jsadkg.com -jsaeit.com -jsaes.com -jsafc.net -jsahj.com -jsanbo.com -jsaopa.com -jsape.com -jsarchi.com -jsartcentre.org -jsase.com -jsatcm.com -jsb-syleasing.com -jsbaidu.com -jsballs.com -jsbank.org -jsbc.com -jsbcfl.com -jsbeiyang.com -jsbestop.com -jsbexam.com -jsbfgg.com -jsbgj.com -jsblj.com -jsboxbbs.com -jsbsxh.com -jsbzwh.com -jscba.org -jsccn.com -jscdn.ink -jscdwlw.com -jsceb.com -jscelltech.com -jsceou.com -jschahua.com -jschanglong.com -jschangshou.com -jsche.net -jschunxing.com -jschy.com -jscj-elec.com -jscj.com -jsckw.org -jsclearing.com -jscmjt.com -jscnc.net -jscncg.com -jscndata.com -jscnnet.com -jsconi.com -jsconnect.com -jscrg.com -jscsbz.com -jscsdr.com -jscsfc.com -jscssimg.com -jscts.com -jscz55.com -jsd-jasper.com -jsd.cc -jsd2021.com -jsdagua.com -jsdas.com -jsdcly.com -jsddbs.com -jsddhjt.com -jsddz.net -jsdebang.com -jsdehui.com -jsdesign1.com -jsdesoft.com -jsdgb.com -jsdghfw.com -jsdhjssyjt.com -jsdjwood.com -jsdkdzw.com -jsdljn.com -jsdmirror.com -jsdonglai.com -jsdrc.com -jsdsad.com -jsduopin.net -jsdyyt.com -jsdz16.com -jsdzb.com -jsdzgc.com -jsdzlm.com -jseconomy.com -jsedu114.com -jseduinfo.com -jseea.com -jseepub.com -jsehealth.com -jsendian.com -jsenews.com -jseoptics.com -jsep.com -jsepa.com -jser.io -jsessh.com -jsexpressway.com -jsfish.net -jsfj.net -jsfls.com -jsfmly.com -jsfof.com -jsform.com -jsform3.com -jsfqhwsb.com -jsfreiburg.net -jsft.com -jsfw8.com -jsfwpt.com -jsfxw.com -jsfycdn3.com -jsfyjt.com -jsfywater.com -jsfyxh.net -jsgbds.com -jsgc.com -jsgc168.com -jsgcbank.com -jsgcjyw.com -jsgclaw.com -jsgdsb.com -jsgerrard.com -jsggwhy.com -jsgh.org -jsghfw.com -jsgho.com -jsgho.net -jsghx.com -jsgian.com -jsgjksl.com -jsgjl.net -jsgkw.org -jsgogogo.com -jsgoldenbridge.com -jsgongwei.com -jsgpa.com -jsgrb.com -jsgssb.com -jsgsyy.com -jsguohua.com -jsguolv.com -jsgwyw.org -jsgx.net -jsgxgf.com -jsgyrcb.com -jsgzgz.com -jsh.com -jshaipeng.com -jshaite.com -jshaman.com -jshanchao.com -jshaorungroup.com -jsharer.com -jshasy.com -jshazz.com -jshbank.com -jshcsoft.com -jshcxn.com -jshdata.com -jshddx.com -jshdwh.com -jshealth.com -jshemc.com -jshfgroup.com -jshgfm.com -jshggroup.com -jshgyb.com -jshhjkjt.com -jshhqc.com -jshhzssj.com -jshj.org -jshkht.com -jshlfd.com -jshmrcb.com -jshnh.com -jshqjt.com -jshr.net -jshrconsult.com -jshrtfl.com -jshsoft.com -jsht88.net -jshtcm.com -jshtjt88.com -jshtocean.com -jshtsteel.com -jshuachen.com -jshuafu.com -jshuana.com -jshuanya.com -jshuaxiagroup.com -jshuaxicun.com -jshwyy.com -jshy.com -jshy1688.com -jshyhotel.com -jshykg.com -jshysj.com -jshytec.com -jshywl.net -jshyzh.com -jshyzh.net -jshzfzjt.com -jshzzx.com -jsi.cc -jsifa.org -jsinnopharm.com -jsiport.com -jsirfe.com -jsjajt.com -jsjcjx.com -jsjclykz.com -jsjd.cc -jsjdgy.com -jsjdjt.com -jsjdrcb.com -jsjdzf.com -jsjeda.com -jsjffj.com -jsjfz.com -jsjgbxg.com -jsjgtz.com -jsjhtz.com -jsjiami.com -jsjianli.com -jsjianye.net -jsjinfu.com -jsjinghui.com -jsjinqi.com -jsjiuda.com -jsjj120.com -jsjjedu.com -jsjjy.com -jsjkx.com -jsjky.com -jsjkzx.com -jsjljg.com -jsjljy.com -jsjnsw.com -jsjnw.org -jsjrtzjt.com -jsjs.cc -jsjs1982.com -jsjsgroup.com -jsjskgjt.com -jsjszgz.com -jsjtxx.com -jsjunma.com -jsjwkg.com -jsjxh03.com -jsjyrcb.com -jsjyyz.com -jsjzd.com -jsk365.com -jskale.com -jskchem.com -jskhfm.com -jskjcms.com -jskjgc.com -jskjgroup.com -jsklcy.com -jskly.com -jskoso.com -jskpcg.org -jskuajing.com -jskunquan.com -jskwt.com -jskxjl.com -jslcjt.com -jsldweb.com -jsldxcl.com -jslegal.com -jslhgroup.com -jslhjg.com -jslida.net -jslife.net -jslijiang.com -jslink.com -jslmarathon.com -jslottery.com -jslpk.com -jslszz.com -jsltgcjt.com -jslvzhigu.com -jsly001.com -jslyjc.com -jslysp.com -jsmda.org -jsmfk.com -jsmian.com -jsmjys.com -jsmkyy.com -jsmo.xin -jsmodeling.com -jsmolfa.com -jsmrmf.com -jsmsg.com -jsmxgs.com -jsmxw.com -jsnaier.com -jsnewexpo.com -jsningyi.com -jsnjck.com -jsnjjg.com -jsnkmy.com -jsnol.com -jsnovel.com -jsntg.com -jsntgas.com -jsnx.net -jsnxs.com -jsnydefy.com -jsnydsfy.com -jsnzhb.com -jsocr.com -jsomick.com -jsonin.com -jsososo.com -jsp158.com -jspaint.com -jspang.com -jspatch.com -jspcgjg.com -jspcinc.com -jspdg.com -jspeople.com -jspesz.com -jsph.net -jsphjr.com -jsphp.net -jsplayground.net -jspoh.com -jspp.com -jspwc.com -jspxcms.com -jsq886.com -jsqcyjsq.com -jsqdsx.com -jsqiuying.com -jsqlawer.com -jsqn.org -jsqstg.com -jsqt.com -jsr.cc -jsrail.com -jsrc.com -jsrcsc.com -jsrcu.com -jsrdgg.com -jsrdsw.com -jsrea.com -jsrenshi.com -jsrgjy.net -jsrhzh.com -jsright.com -jsrongjin.com -jsrpebh.com -jsrrcb.com -jsrsks.com -jsrsrc.com -jsruifeng.net -jsruiyin.com -jsrun.net -jsrun.pro -jsrxjt.com -jsrzzl.org -jss52018.com -jssaikang.com -jssalt.com -jssbaoxian.com -jssbjt.com -jssc.cc -jssczxh.com -jssdezyy.com -jssdh.com -jssem.com -jssfgl.com -jssfx.com -jssfzg.com -jssgjjt.com -jssgjs.com -jsshasczzyy.com -jsshfcw.com -jsshhzx.com -jsshichuang.com -jsshmzx.com -jsshow.net -jsshrzx.com -jsshuangxin.com -jsshuntai.com -jssia.org -jssihuan.com -jssjchyxh.com -jssjiu.com -jssjrfw.com -jssjxgyw.com -jssks.com -jssling.com -jssltz.com -jssnrcb.com -jssoar.com -jssqwx.com -jsssha.com -jsssrj.com -jsssy.com -jsstgs.com -jsstt.com -jsstyt.com -jssunhui.com -jssunlord.com -jssutong.com -jssuty.com -jssuwei.com -jsswordshop.com -jssyj.com -jssytc.com -jssyyy.net -jstcm.com -jstedu.com -jstex.com -jstextile.com -jstfdz.com -jsthinktank.com -jsthjsgc.com -jsti.com -jstianniao.com -jstide.com -jstigd.com -jstjjs.com -jstlcyy.com -jstlgn.com -jstljs.com -jstor.org -jstore.site -jstoys.net -jstsks.com -jstti.com -jstucdn.com -jstv.com -jstve.org -jstxb.com -jstxdm.com -jstxrcb.net -jstxry.com -jsty.com -jstyaz.com -jstygroup.com -jstyjzsg.com -jstywl.com -jstzhospital.com -jstzjy.net -jstzloveyuebao.com -jstzrcb.com -jstzzg.net -jsuc.com -jsuedc.net -jsuhuzhi.com -jsure.com -jsurehealth.com -jsw118.com -jsw988.com -jswater.net -jswb.com -jswcc.com -jswch.net -jswebcall.com -jsweiqi.com -jsweixiu.com -jswel.com -jswenguang.com -jswenjin.com -jswfgroup.com -jswjkj.net -jswmw.com -jswonderful.com -jswrhjkj.com -jswspocapi.com -jswsxx.com -jswtc.net -jswukong.com -jswuyang.com -jswwl.com -jswx-ej.com -jswxhy.com -jswxjx.com -jswxmax.com -jswyglw.com -jswyjt.com -jswyw.com -jswzjt.com -jsxbxcl.com -jsxcra.com -jsxcx.com -jsxdf.com -jsxdyh.com -jsxfedu.com -jsxggx.com -jsxgjt.com -jsxhkg.com -jsxhljt.com -jsxhrcb.com -jsxht.com -jsxhw.org -jsxhy.net -jsxiangtanzi.com -jsxiaoguo.com -jsxiaoshi.com -jsxiechang.com -jsxihu.com -jsxinfeng.com -jsxinfly.com -jsxionghuojxzz.com -jsxlhb.com -jsxmw.com -jsxpbc.com -jsxq.com -jsxtsw.com -jsxxzh.com -jsxy.biz -jsxyfy.com -jsxyjt.com -jsxzgjzx.com -jsxzkingdee.com -jsxzty.com -jsybjt.com -jsybjz.com -jsyc-marathon.com -jsycmc.com -jsycport.com -jsycsy.com -jsyczls.com -jsyd139.com -jsydns15.com -jsyes123.com -jsyf88.com -jsyfxcl.com -jsyghw.com -jsyhkf.com -jsyhxl.com -jsyinba.com -jsyixin.com -jsyjjt.com -jsyks.com -jsyks.net -jsyksw.com -jsyljz.com -jsymjt.com -jsyongbao.com -jsypj.com -jsypyg.com -jsysafe.com -jsysedu.com -jsysxx.net -jsyt.group -jsytsw.com -jsyun.cc -jsyunhao.com -jsywjt.com -jsyxep.com -jsyxh.org -jsyxrcb.com -jsyypump.com -jsyzht.com -jsz120.com -jszbtb.com -jszca.com -jszcqy.com -jszdlssws.com -jszf.org -jszfy.com -jszg.org -jszhaobiao.com -jszhiping.com -jszhjsjtgs.com -jszhongci.com -jszhongte.com -jszjcg.com -jszjgg.net -jszjgroup.com -jszjrqrd.com -jszjscl.com -jszjsx.com -jszjw.com -jszjxh.com -jszjzf.com -jszkrz.com -jszks.com -jszlgjg.com -jszlyy.com -jszmly.com -jszn.ink -jsznstny.com -jszpw.net -jszs-group.com -jszs.com -jszsgroup.cc -jszwpx.com -jszxsw.com -jszygp.com -jszygs.com -jszyjsjt.com -jszyyguoji.com -jszzks.com -jszzxjhk.com -jt-ele.com -jt-it.com -jt000.com -jt111.com -jt120.com -jt26wzz.com -jt56w.com -jt62.com -jt91.com -jta-travel.org -jtamac.com -jtamc.com -jtbole.com -jtbtech.com -jtcjd.com -jtcopper.com -jtexpress.com -jtfcg.com -jtfengtou.com -jtfulfillment.com -jtg2g.com -jtggame.com -jtgloble.com -jtgzfw.com -jthcsx.com -jtj-kr.com -jtjiaoyu.com -jtjms-ae.com -jtjms-br.com -jtjms-eg.com -jtjms-mx.com -jtjms-sa.com -jtjob.net -jtjr99.com -jtjt.info -jtjyfw.net -jtkjbike.com -jtktkj.com -jtlculture.com -jtlfans.com -jtlw.com -jtlzj.net -jtlzx.com -jtm-food.com -jtm.pub -jtmedical.com -jtmsmls.com -jtn.com -jtnlk.com -jtnsh.com -jto8.com -jtpipeline.com -jtrauto.com -jtrobots.com -jtso.net -jtsp98.com -jttv.net -jttzsy.com -jtv123.com -jtwmall.com -jtxa.net -jtxmtxy.com -jtxys8.com -jtyjy.com -jtystz.com -jtyxh.com -jtzjedu.com -jtzyjt.com -ju1212.com -ju51.com -ju53.com -juaiyou.com -juanbao.com -juangua.com -juanpi.com -juanyunkeji.com -juaq.com -jubaihuijia.com -jubaiye.com -jubaozang.com -juben108.com -juben98.com -juc365.com -jucaiw.com -jucanw.com -jucelin.com -jucheng01.net -juchengvi.com -juchuangbio.com -juchuangfushi.com -jucool.com -jucuiwangluo.com -judajia.com -judehahh.tech -judns.com -judong-1.com -judouapp.com -juduoping.com -jue.so -juebankongjian.com -juecan.com -juedui100.com -jueduilingyu.com -juefeng.com -juehuo.com -juejinchain.com -juejinqifu.com -juemei.com -juemuren4449.com -jueqijy.com -juequling.com -juerguea.com -juewei.com -juexiang.com -juexiaotime.com -juexinw.com -jueywo.com -jufa-composite.com -jufa.vip -jufaanli.com -jufair.com -jufeng313.com -jufengcap.com -jufengcompany.com -jufenginfo.com -jufengshang.com -jufengwuxi.com -jufoinfo.com -jugezi.com -jugongdan.com -juguang.com -juguifu.com -juhaihui.com -juhangye.com -juhaokan.org -juhaokanya.com -juhaom.cc -juhaom.com -juhe.com -juhe5.com -juhebang.com -juhepen.com -juheweb.com -juhomai.com -juhome.net -juhuasuan.com -juhui581.com -juhuicloud.com -juhuiwan.com -juhuiwan.net -jui.org -juiceevapes.com -juicefs.com -juij.fun -juiju.com -juj66.com -juji123.com -jujianggcz.com -jujiangkk.com -jujiangktz.com -jujiaobaby.com -jujiaonet.com -jujias.com -jujie.com -jujienet.com -jujin8.com -jujinpcb.com -jujinwater.com -jujoy.com -jujumao.com -jukan.net -juke200.com -jukebao.com -jukejia.com -juketai.net -jukeyouxuan.com -jukuu.com -julaibao.com -julang88.com -julanggroup.com -julanhp.com -julanling.com -julebu.co -julecn.com -julefun.com -juli-china.com -juliandianqi.com -juliang8.com -juliangcili.com -julianghttp.com -juliangip.com -juliangyinqing.com -juliangyinqing.net -julifenti.com -juligroup.com -julihuang.com -julink.net -julisjj.com -julive.com -juliym.com -juliyuemeng.com -julong.cc -julongchina.com -julonggr.com -juluape.com -julycn.com -julydate.com -julyedu.com -julysong.com -jumanhua.com -jumanlou.com -jumbo-wpc.com -jumbot.net -jumdfd.com -jumei.com -jumeinet.com -jumengco.com -jumengren.com -jumengtbs.net -jumi-cdn.com -jumi.com -jumi18.com -jumin.cc -juming-xz.com -juming.com -jumingwang.com -jumo2.icu -jumold.com -jumore.com -jump-center.com -jump-game.com -jump301.com -jumpjumpcat.com -jumple.com -jumppo.com -jumpserver.org -jumpstar-tech.com -jumpvg.com -jumpw.com -jumpwgame.com -jumpwo.com -jumsz.com -jumwayholdings.com -jun-hai.com -jun.la -jun4.com -junahotels.com -junankeji.com -junanres.com -junanshengwu.com -junao147.com -junaotiyu.com -junce.com -juncyun.com -jundacheng.com -jundaobaoan.com -jundui.net -jundushan.com -junengdingli.com -juneyao.com -juneyaoair.com -juneyaoairlines.com -junezx.com -junfalipin.com -jungewang.com -junhaocn.com -junhe.com -junhegroup.com -junhunxiaoshuo.com -juniontech.com -junjing.net -junjingsuodao.com -junjue888.com -junka.com -junkai.net -junlanhotels-hp.com -junlebaoruye.com -junlee.net -junli.net -junlian.me -junlinsz.com -junlongtech.com -junmoseo.com -junnanhao.com -junong360.com -junpengtouzhi.xyz -junph.com -junpin.com -junpin360.com -junpinclub.com -junpinghui.com -junpinhui.com -junpinmall.com -junpinzhi.com -junqing360.com -junrunrenli.com -junsaozg.com -junshanggame.com -junshencm.com -junshi.com -junshi881.com -junshidao.com -junshifuxin.com -junshijia.com -junshijidi.com -junshipharma.com -junshis.com -junshishu.com -junshitt.com -juntec.com -juntu.com -junwu262.com -junxinmed.com -junyao.tech -junyi-auto.com -junyimeng.com -junying.com -junyisj.com -junyouxuan.com -junyudns.com -junyuewl.com -junyushop.com -junzehb.com -junzhenggroup.com -junzhi.com -junzhiboke.com -junzhuan.com -junziboxue.com -junzimen.com -junziqian.com -junziyize.com -juooo.com -jupiterlauncher.com -jupup.com -juqi.com -juqianwh.com -juqibike.com -juqingla.com -juqk.net -juquanquanapp.com -jurcc.net -juren.com -jurenqi.com -jurilisheng.com -jurongfangchan.com -jurongrencai.com -jurp.net -jusdasr.com -juseey.com -jusen2008.com -jushen.co -jushequ.net -jushequan.com -jushewang.com -jushi.com -jushigj.com -jushihui.com -jushiwangedu.com -jushri.com -jushtong.com -jushuitan-inc.com -jushuitan.com -jushuitan.net -jushuo.com -jusiot.com -jusoucn.com -jussevent.com -jusssports.com -jusssportsvenue.com -jusstickets.com -jussyun.com -just-plain.fun -just4coding.com -just4fun.site -just998.com -justalkcloud.com -justar-cn.com -justbbs0.com -justbilt.com -justbon.com -justep.com -justering.com -justinbot.com -justjavac.com -justmyblog.net -justpodmedia.com -justsy.com -justtop.com -justwe.site -jutao.com -jutean.com -jutengjiqi.com -jutingshop.com -jutone.com -jutongbao.online -jutubao.com -jutuike.com -jutuilian.com -juvefans.com -juwa.net -juwan.com -juwang.com -juwangmedia.com -juwanhezi.com -juwanshe.com -juwed.com -juweixin.com -juwuxian.com -juxia.com -juxian.com -juxiang3d.com -juxieyun.com -juxiiangyou.com -juxin.tv -juxingj.com -juxinguanjian.com -juxinhuizhi.com -juxuan.net -juxuecms.com -juxuewen.com -juyang-chem.com -juyanwenjuan.com -juyebwg.com -juyingele.com -juyingonline.com -juyisuliao.com -juyoubao.com -juyoukuaisong.net -juyouqu.com -juyoutang.com -juyoutv.cc -juyouxi.com -juyouxuan.vip -juyuan.com -juyuewang.net -juyun.tv -juyutube.com -juyuweb.net -juzhen.com -juzhen.io -juzhentech.com -juzhenyun.org -juzhi720.com -juzhiliang.com -juzhiyuan.com -juzhongjoy.com -juzicon.com -juzicy.com -juzifenqi.com -juzijiudian.com -juzikong.com -juzilicai.com -juzimi.cc -juzioo.com -juziseo.com -juziss.com -juzistore.com -juzisy.com -juzitou.com -juzix.io -juzizhoutou.net -juzone.cc -juzui.com -juzzi-ec.com -jv07.com -jvbhotel.com -jvcxp.com -jvdebao.com -jvgnwn.sbs -jvmai.com -jvniubi.com -jvpin.vip -jvrong.com -jvshangwang.com -jvshi.net -jvtianshanuu.com -jvyou.net -jw100.net -jw1588.com -jwappgc.com -jwautoparts.com -jwbf.online -jwbl.com -jwchicago.com -jwdili.com -jwedit.net -jwetech.com -jwfun.com -jwgb.net -jwgf.com -jwick-switch.com -jwipc.com -jwkj.site -jwl100.com -jwsaas.com -jwsem.com -jwshy.com -jwsm123.com -jwtherapeutics.com -jwview.com -jwwey.com -jwygou.com -jwyun.net -jwzhn.com -jwzykg.com -jx-189.com -jx-amc.com -jx-bank.com -jx09.com -jx116114.com -jx139.com -jx163-cname.com -jx163.com -jx188.com -jx3box.com -jx3mogu.com -jx3pve.com -jx3yymj.com -jx4.com -jx530.com -jx878.com -jxage.com -jxairport.com -jxausoft.com -jxawe.org -jxbhwl.com -jxbinhong.com -jxbond.com -jxbscbd.com -jxbx.cc -jxc4.com -jxcar.com -jxcat.com -jxcb.net -jxcc.com -jxccb.com -jxcdkjfz.com -jxcfs.com -jxch12333.com -jxchaguan.com -jxcsedu.com -jxcua.com -jxdcnc.com -jxdcost.com -jxdcw.com -jxdhhbhg.com -jxdiguo.com -jxdinfo.com -jxdlzy.com -jxdx.com -jxdxxt.com -jxdyf.com -jxdyyy.com -jxdzx.com -jxeca.com -jxedgroup.com -jxedt.com -jxedu.net -jxeduyun.com -jxenglish.com -jxep.net -jxetv.com -jxexpressway.com -jxey.com -jxfeng.com -jxfls.com -jxfrjs.com -jxfxky.com -jxg1.com -jxg866.com -jxga.com -jxgazx.com -jxgcxy.net -jxgdhb.com -jxgdw.com -jxgis.com -jxgs.cc -jxgtzxc.com -jxgwy.org -jxgztv.com -jxh2000.net -jxheming.com -jxhesyy.com -jxhjxy.com -jxhmjx.com -jxhmxxjs.com -jxhswhcb.com -jxhuahang.com -jxhxmed.com -jxhyxx.com -jxiaolan.com -jxic.com -jximage.com -jxjatv.com -jxjdgy.com -jxjee.com -jxjia.net -jxjianwei.com -jxjktzjt.com -jxjmzc.com -jxjob.net -jxjrw.com -jxjt666.com -jxjuwentech.com -jxjx6.com -jxjywater.com -jxkeda.com -jxkjzb.com -jxkp.com -jxksw.net -jxlgjd.com -jxln.com -jxlog.istreamsche.com -jxlong.com -jxlpjt.com -jxlsxy.com -jxlvs.com -jxlwgame.com -jxlygo.com -jxmhp.com -jxmj.com -jxmlkd.com -jxmrfire.com -jxmy18.com -jxncyy.com -jxndxuebao.com -jxnjy.com -jxnongjiayuan.com -jxnxs.com -jxnyc.net -jxpdf.com -jxphone.com -jxpp.com -jxpta.com -jxqcw.com -jxqy.city -jxqyfw.com -jxrays.com -jxrcgame.com -jxrcw.cc -jxrcw.com -jxrczp.com -jxrjxh.com -jxrmtzx.com -jxropan.com -jxrqgs.com -jxrqhy.com -jxrsrc.com -jxrtv.com -jxrtvu.com -jxsdfz.com -jxsedu.com -jxsenyang.com -jxsfjzsh.com -jxsg.com -jxshangyou.com -jxshyzhx.com -jxsilkpark.com -jxsj-vtech.com -jxsj2sy.com -jxsjgjt.com -jxsjxh.com -jxsjypt.com -jxslsyy.com -jxsltz.com -jxslyw.com -jxsrfdc.com -jxsrjt.com -jxsrra.com -jxssjx.com -jxssjy.com -jxstm.com -jxsuji.com -jxswjt.com -jxswskj.com -jxswzjx.com -jxsxdp.com -jxsxdz.com -jxszsj.com -jxszxyjhyy.com -jxszyy.com -jxt1314.com -jxt189.com -jxtcxh.com -jxteacher.com -jxtech.net -jxthz.net -jxtransfer.com -jxtutechan.com -jxtvbbs.com -jxtvnet.tv -jxtvshop.com -jxtwkj.com -jxtxzzw.com -jxtyzx.org -jxtzw.com -jxunicom.com -jxveg.org -jxw12328.com -jxwan.com -jxwmanage.com -jxwmsj.com -jxwxai.com -jxwz.net -jxx7.com -jxxdf.com -jxxdxy.com -jxxhdn.com -jxxhsd.com -jxxnyqc.com -jxxs.net -jxycqy.com -jxyczs.com -jxydt.com -jxygroup.com -jxyhys.com -jxyige.com -jxyjxy.com -jxyqw.com -jxysedu.com -jxysyz.com -jxytech.com -jxyuannan.com -jxyuging.com -jxyushan.com -jxyy.net -jxzbx.com -jxzeto.com -jxzikao.net -jxzl.cc -jxzxtec.com -jxzyx.com -jy-leasing.com -jy-mach.com -jy-sz.net -jy.cc -jy0604.com -jy0832.com -jy163.net -jy1991.com -jy339.com -jy391.com -jy510.com -jy6d.com -jyacg.com -jyacht.com -jyaochi.com -jyarton.com -jybase.net -jyblife.com -jyboo.com -jycbank.com -jycinema.com -jycloudgslb.com -jycloudgslb.net -jydc.com -jydj.net -jydoc.com -jydonghu.com -jydtu.com -jyebank.com -jyebfz.com -jyecc.com -jyeoo.com -jyeoo.net -jyfcyy.com -jyfprinting.com -jyfund.com -jyfwyun.com -jyg-lighting.com -jygch.com -jygjsq.com -jyglass.net -jygo.cc -jygpu.com -jygsdyrmyy.com -jyguagua.com -jygyl.com -jygz.com -jygz.org -jyh.com -jyhcd.com -jyhmz.com -jyhome.com -jyhwcl.com -jyhyfintax.com -jyhzsc.com -jyimg.com -jyinns.com -jyip.net -jyjhkj.com -jyjjc.com -jyjk.com -jyjxtech.com -jykm88.com -jykss.com -jykuaidi.com -jyl88.com -jylight.cc -jylink.com -jyltx.com -jylw.com -jylxbc.com -jymhb.com -jymredu.com -jynews.net -jynongye.com -jynyrc.com -jyoptical.com -jypc.org -jypecdn3.com -jypipes.com -jypmm.com -jyqcw.com -jyqingfeng.com -jyqxz2015.com -jyrcjl.com -jyrcw.com -jyrczp.com -jyrlzy.com -jyrmtzx.com -jyrmyy.com -jyrq.net -jyry.com -jys0755.com -jys6z.com -jysbcj.com -jysd.com -jysedu.com -jyseeds.com -jyshare.com -jyshoubao.com -jysld.com -jysmtech.com -jysper.net -jysq.net -jysrc369.com -jyss.com -jyss.net -jysteels.com -jysu.com -jysyyey.com -jysyzk.com -jysyzx.net -jytaier.com -jytcdq.com -jytech.info -jytek.com -jytjsgyp.com -jytmachinery.com -jytrump.com -jytwp.com -jyubbs.com -jywanrun.com -jywfgg.com -jywlcm.com -jywmgs.com -jywxq.com -jyxdyzx.com -jyykyy.com -jyyun.com -jyzb01.com -jyzc.com -jyzhongg.com -jyzmd.com -jyzz666.com -jyzzdq.com -jyzzx.com -jz-hy.com -jz-ins.com -jz-job.com -jz-marathon.com -jz0045.com -jz08.com -jz100.com -jz177.com -jz182.com -jz26666.com -jz36666.com -jz5u.com -jz6.com -jz6868.com -jz68888.com -jzb.com -jzbar.net -jzbdc.com -jzbull.com -jzcbank.com -jzchou.com -jzcmfw.com -jzcxptm.com -jzda001.com -jzdd.com -jzdlgroup.com -jzdwh.com -jzedu24.com -jzerp.com -jzfz.net -jzg12315.com -jzgc-school.com -jzgchy.com -jzgcjsysjzz.com -jzgczz.com -jzgede.com -jzggzy.com -jzgjbus.com -jzgjj.com -jzhfz.com -jzhkr.com -jzhlgg.com -jzhospital.com -jzhuishou.com -jzhx.net -jzhy5.com -jzj2009.com -jzj9999.com -jzjgift.com -jzjt.com -jzking.com -jzkjjt.com -jzlt100.com -jzmbti.com -jzmjtjn.xyz -jzmlzy.com -jzmob.com -jzmsmj.com -jzmt.net -jznygf.com -jznyjt.com -jzongguan.com -jzpat.com -jzptt.com -jzpu.com -jzpx.net -jzqe.com -jzqlyptall.com -jzrb.com -jzrc.net -jzrsks.com -jzsbs.com -jzsbxxh.com -jzsc.net -jzsc8.com -jzsec.com -jzsf.com -jzsgzmhjyxgs.com -jzsjyksy.com -jzsos.com -jzsousuo.com -jzsszyjzx.com -jzsxinyudianqi.com -jzsyy.com -jzszdq.com -jzszzx.com -jztey.com -jztsjx.com -jztvnews.com -jztvxmt.com -jztweb.com -jzty.com -jztylxx.com -jztzw.net -jzwcom.com -jzwl66.com -jzwxfrp.com -jzx.com -jzxian.com -jzxjcf.com -jzxs.com -jzygczx.com -jzyqyb.com -jzyqzypg.com -jzyx.com -jzzfyw.com -jzzhw.com -jzzls.com -jzzx.com -jzzypt.com -k-boxing.com -k-dyn.com -k-kbox.com -k-res.net -k0898.com -k0rz3n.com -k12.vip -k12china.com -k12kc.com -k12zx.com -k165.com -k166.org -k1u.com -k1wave.com -k22.xyz -k2os.com -k3072.com -k366.com -k369.com -k382.com -k3cdn.com -k3yes.com -k518.com -k5n.com -k61.org -k623.pics -k6uk.com -k73.com -k780.com -k7h.lol -k8.com -k8008.com -k8azeicxy4idx.com -k8k8k8.com -k8ser.com -k8smeetup.com -k8stech.net -k913.com -ka20.com -kaaass.net -kaadas.com -kaayou.com -kaayou.net -kaayun.com -kaba365.com -kabapay.com -kabasiji.com -kabitu.com -kaboy.net -kabu1.com -kachecn.com -kachengnet.com -kacheren.com -kacper.fun -kada.com -kada163.com -kadang.com -kaduoduohk.com -kaeryun.com -kafangtech.com -kafeng.com -kagirl.net -kah8.com -kahaozhushou.com -kahuodong.com -kai-lun.net -kai-ying.com -kaiba315.com -kaibanglaw.com -kaiboer.com -kaichejiqiao.com -kaichengschool.com -kaicn.com -kaidanbao.com -kaidany.com -kaidapack.com -kaidechem.com -kaidianbang.com -kaidicloud.com -kaidydrilling.com -kaierda.com -kaifabang.com -kaifae.com -kaifage.com -kaifakuai.com -kaifama.com -kaifamei.com -kaifangkecheng.com -kaifapiao.com -kaifaxhl.com -kaifaxueyuan.com -kaifayun.com -kaifu.com -kaifu1.com -kaifubiao.com -kaifubiao123.com -kaigao.com -kaige68.com -kaigongyi.com -kaiguo.com -kaihei.co -kaihu51.com -kaihuaeva.com -kaihuia.com -kaijia-smt.com -kaijia.com -kaijiage.com -kaijiejinrong.com -kaijieunion.com -kaijiudian.net -kaikeba.com -kailang17.com -kaili-group.com -kailinchem.com -kailing.pub -kailinjt.com -kailitech.com -kaimanhua.com -kaimen360.com -kaimg.com -kaimitech.com -kaipai.com -kaipanla.com -kaipuyun.com -kaipuyun.net -kaiqiancq.com -kaiqiu.cc -kaiqsz.com -kaiquan.com -kairui.tech -kairunjinshu.com -kaisacst.com -kaisagroup.com -kaisahotel.com -kaisalong.com -kaishan-pv.com -kaishancomp.com -kaishangroup.com -kaishigo.com -kaishikan.com -kaishuhezi.com -kaishujia.com -kaishustory.com -kaitai668.com -kaitaibh.com -kaitaishotblasting.com -kaitaku.xyz -kaiteer17.com -kaitianad.com -kaitiancloud.com -kaiting.cc -kaiwenda.com -kaiweneducation.com -kaiwind.com -kaixia.com -kaixin.com -kaixin00.com -kaixin001.com -kaixin100.com -kaixinbao.com -kaixindou.net -kaixinguopiao.com -kaixinguopiaowu.net -kaixinhui.com -kaixinhui.net -kaixinit.com -kaixinlu.com -kaixinvv9.com -kaixinzuqin.com -kaixue.io -kaiyanapp.com -kaiygame.com -kaiyi.cool -kaiyihome.com -kaiyinedu.com -kaiyuan.me -kaiyuanbusiness.com -kaiyuancn.com -kaiyuangroup.cc -kaiyuanhospital.com -kaiyuanhotels.com -kaiyuanweilaikeji.com -kaiyuedoors.com -kaiyueyun.com -kaiyun.com -kaiyun.net -kaiyun360.com -kaiyunwu.net -kaizhan.com -kajicam.com -kajishou.com -kaka.com -kaka996.com -kakacl.net -kakalili.com -kakamobi.com -kakappt.com -kakashuzi.net -kakatx.com -kakayigui.com -kakayuy.net -kaken-china.com -kaku-scdn.com -kaku.tv -kakucloud.com -kalading.com -kalamitsibeach.com -kalazan.com -kalcaddle.com -kaleesh.com -kalefans.com -kalegou.com -kalifang.com -kaliorg.com -kalugaqueen.com -kaluli.com -kamaqc.com -kameng98.com -kamenwang.com -kamfat.net -kami.vip -kami5.com -kamidox.com -kamisamak.com -kammtown.com -kamoasia.com -kamopos.com -kamtao.com -kamwu.com -kan.cc -kan0512.com -kan3721.com -kanbaobei.com -kanbing.net -kanbox.com -kanchao.com -kanchuan.com -kandao.com -kandaoni.com -kandedongguan.com -kandegang.net -kandehotelhuizhou.com -kandian.com -kandian.net -kandian.tv -kandian5.com -kandianbao.com -kandianshi.com -kandianzixun.com -kandzww.com -kanfangjilu.com -kanfeidie.com -kang-li.com -kang-zhuo.com -kang7.com -kangai8.com -kangame.tv -kangangchang.com -kangantu.com -kangbaifoundation.com -kangbatv.com -kangbeijia.com -kangbidz.com -kangbixing.com -kangchun.com -kangdacolorful.com -kangdaep.com -kangdajiuzhou.com -kangdalawyers.com -kangdamed.net -kangdexin.com -kangdns.com -kangehao.com -kangepian.com -kangerfugroup.com -kangfenhui.com -kangfenmao.com -kanggui.com -kanghe.com -kanghu.net -kanghuash.com -kanghuayun.com -kanghui.com -kanghuicy.com -kanghuwang.com -kangjiachildcare.com -kangjian.com -kangjian888.com -kangjiezx.net -kangkang.com -kanglaohui.com -kangle.net -kanglepharm.com -kanglisha.com -kangnai.com -kangpeining.com -kangpugroup.com -kangq.com -kangqiao-sh.com -kangre.com -kangrunpharm.com -kangshuai.biz -kangsibeauty.com -kangtaiwang.com -kangting.com -kangtor.com -kangufen.com -kanguo.com -kanguowai.com -kangxi55wlsf.com -kangxiang.com -kangxidi.com -kangxin.com -kangyang51.com -kangyiqiye.com -kangyuntang.com -kangze.com -kangzhi.com -kangzhiqiao.com -kanimg.com -kaniuquan.com -kanixiaoxia.com -kanjia.com -kanjian.com -kanjianlishi.com -kanjianxinli.com -kankan.com -kankan.run -kankan365.cc -kankancity.com -kankanews.com -kankanlive.com -kankanmi.com -kankannews.com -kankanpiao.com -kankantu.com -kankanyn.com -kankanyulewang.com -kankanzhijian.com -kanketv.com -kankezw.com -kankun-smartplug.com -kanman.com -kanmeinv.com -kanniao.com -kanong.com -kanongyun.com -kanqibao.com -kanqiye.com -kanqq.com -kanqu.com -kanrang.com -kanrang.net -kansdk.com -kansea.com -kanshangjie.com -kanshijie.cc -kanshu.com -kanshu5.net -kanshu58.cc -kanshuge.com -kanshuhai.com -kanshushi.com -kansp.com -kantao.net -kantianqi.net -kantop.net -kantsuu.com -kantu.com -kanwuye.com -kanwz.net -kanxue.com -kanyaji.com -kanyijie.com -kanyixue.com -kanyouxi.com -kanyouxi.tv -kanyun.com -kanzhekou.com -kanzhun.com -kanzuixian.com -kao100.com -kao750.com -kao8.cc -kao910.com -kaoaa.com -kaobeitu.com -kaochong.com -kaochongqing.com -kaodaojy.com -kaodongli.com -kaoersi.com -kaogua.com -kaoguobao.com -kaojiaoshi.com -kaojionline.com -kaojuan.com -kaola.com -kaola.com.hk -kaola100.com -kaolacam.net -kaolacdn.com -kaolafm.com -kaolafm.net -kaolawenku.com -kaom.net -kaomeiyuan.com -kaonaw.com -kaonun.com -kaopenhs.com -kaopu001.com -kaopubao.com -kaopubao.net -kaopujinfu.com -kaopuyun.com -kaopuyun.net -kaoqin.com -kaoqintong.net -kaoqinyi.com -kaoruo.com -kaoshenzazhi.com -kaoshi110.com -kaoshi110.net -kaoshi365.com -kaoshi86.com -kaoshibao.com -kaoshibb.com -kaoshidian.com -kaoshixing.com -kaoshizixun.com -kaosite.com -kaostedu.com -kaotipai.com -kaowana.com -kaowang.com -kaowx.com -kaoyan.com -kaoyan.org -kaoyan1v1.com -kaoyanbox.net -kaoyancas.com -kaoyancas.net -kaoyango.com -kaoyanjun.com -kaoyanking.com -kaoyanmiji.com -kaoyansiji.com -kaoyanwin.com -kaoyaya.com -kaozc.com -kaozh.com -kaozhiye.com -kap666.com -kapokshenzhen.com -kaquanbao.com -karatetrend.com -karger.com -kargocard.com -karl-led.com -karlzhou.com -karrytech.com -kartlover.com -kascend.com -kashangwl.com -kashen.com -kashen8.com -kashengauto.com -kasitesoft.com -kaslyju.com -kaspersky-labs.com -kasscloud.com -kataliya.net -kate-kanebo.net -katongji.com -katvr.com -katyusha.net -kava-auto.com -kavaparts.com -kaven.xyz -kavience.com -kawahdinosaur.com -kawasakijp.com -kawata-group.com -kawoka.com -kayajiuhui.com -kayhanfamily.com -kayipgroup.com -kayougame.com -kaytrip.com -kaytune.com -kazakcnr.com -kazhifu.com -kazithai.com -kazl.com -kb.com -kb54.com -kb9.com -kbans.com -kbao123.com -kbcdn.com -kbcmw.com -kbcool.com -kbdfans.com -kbgogo.com -kbgok.com -kbiao.me -kbiquge8.com -kbjcn.com -kbkyy.com -kbl-jf.com -kblcdn.com -kblin.com -kbmlifesci.com -kbn-zhejiang.com -kbnhp.com -kbnqy.com -kbobo.com -kbrightlaw.com -kbscd.net -kbscloud.com -kbsml.com -kbspheres.com -kbtingdu.com -kbyun.com -kc-keycool.com -kc0011.net -kc87.com -kcbebank.com -kccidc.com -kccn.net -kcdn0.com -kcdnvip.com -kcfei.com -kchance.com -kchezhan.com -kchile.com -kchuhai.com -kci-gz.com -kciptv.com -kcjpharma.com -kcjyyjzzs.com -kcloudidc.com -kcm120.com -kcmice.com -kcouxp.com -kcqcjt.com -kcrcb.com -kcrea.cc -kcrw.streamguys1.com -kctgov.com -kctzgroup.com -kcwiki.org -kcyuri.com -kczhaosheng.com -kczjlb.com -kd010.com -kd100.com -kd120.com -kd128.com -kd315.com -kd58.com -kd69.vip -kd9000.com -kdadj.com -kdaec.com -kdatacenter.com -kdatu.com -kdcloud.com -kdclub.net -kdcnu.com -kdefu.com -kdf.ink -kdgcsoft.com -kdhj-edu.net -kdige.com -kdkefu.com -kdkh.com -kdlgs.com -kdmedic.com -kdnet.net -kdniao.com -kdpt.net -kdr163.com -kdrmd.com -kdroid.club -kds100.com -kdslife.com -kdt.im -kdued.com -kdweibo.com -kdzs.com -kdzwy.com -kdzxedu.com -ke-chuang.com -ke.com -ke51.com -ke6.com -ke6payux9q4pih.com -ke82.com -ke86.com -ke8u.com -keai.icu -keaidian.com -keaiq.com -kean1688.com -keanrui.com -keaopt.com -keba.host -kebango.com -kebenku.com -kebi.biz -kebide.com -kebingzao.com -kebitpiano.com -keboyunxiao.com -kebvalves.com -keceyun.com -kechengbiao.net -kechengkeli.com -kechuang.org -kechuangai.com -kechuangfu.com -keda-digital.com -keda-group.com -keda-u.com -keda.com -keda.fun -kedabai.com -kedacom.com -kedaifu.com -kedang.net -kedanm.com -kedaotech.com -kede-auto.com -kede.com -kedefamen.com -kedi.cc -kedian-tech.com -kedianduo.com -kedidairy.com -kedou.com -keduxinxi.com -kedwyz.com -keede.com -keejuu.com -keen-dental.com -keenbow.com -keenonrobot.com -keensky.com -keep.com -keep999.com -keepc.com -keepcdn.com -keepchen.com -keeper.work -keepfightinghxz.xyz -keepfrds.com -keepke.com -keepmobi.com -keepnight.com -keepsoft.net -keepyoga.com -keerdapower.com -keerqinmuseum.com -keerworld.com -keetalks.com -keewin.com -keey.sh -kefeijn.com -kefenxi.com -kefoo.com -kefu01.com -kefutoutiao.com -kefuzu.com -kege.com -kehanedu.com -kehaohao.com -kehou.com -kehu51.com -kehuaapp.com -kehuan-upward.com -kehuda.com -kehuzhichi.com -kehuzhichi.net -keil345.com -keinsci.com -keithbo.com -keji100.net -kejian.design -kejianx.com -kejibear.net -kejicut.com -kejids.com -kejihai.com -kejijie.net -kejik.com -kejilie.com -kejimeixue.com -kejingyuan.com -kejinlianmeng.com -kejinshou.com -kejiqi.com -kejishou.net -kejitai.com -kejitechangsheng.com -kejitian.com -kejiwang.cc -kejudati.com -kekaku.com -kekaoxing.com -kekaoyun.com -keke.moe -keke289.com -kekebaby.com -kekedj.com -kekegold.com -kekenet.com -kekeniu.com -kekeshici.com -kekexueba.com -kekeyuyin.com -kekkyy.com -kekoku.com -keky.org -keladuoww.com -keladuoyy.com -kelaisz.com -kelanjt.com -kelankqs.com -keldamedical.com -kele55.com -kele8.com -kelehuyu.com -keleqiu.com -kelete.com -keliangtek.com -kelibiao.com -kelikt.com -kelimotor.com -kelinpower.com -kelinsoft.com -kelon.com -kelong-chemical.com -kelong-powder.com -kelongding.com -keloop.com -kelorlink.com -kelphome.com -kelu.org -kelun.com -keluokelie.com -keluyjs.com -kema66.com -kemaicrm.com -keman.com -kemavip.com -kemiaotai.com -kemicro.com -kemike888.com -kemov.com -ken-tools.com -ken.io -kename.com -kenaqz.com -kenbotong.com -kendingde.com -kendryte.com -keneng.org -kenflo.com -kenfor.com -kenfor.net -kengatoki.com -kengdie.com -kengdodo.com -kengic.com -kengwan.com -keniu.com -keniub.com -keniuxy.com -kenjichai.com -kenjieer.com -kenkapacking.com -kenpai.com -kenpains.com -kenshu.cc -kenshuhu.com -kensuntec.com -kentier.com -kentxxq.com -kenuonet.com -kenweini.com -kenxon.com -kenzochina.com -keoaeic.org -keouaxbw.com -keovo.net -kepusky.com -keputech.com -keqiaojob.com -kequcps.com -ker58.com -kercan.net -kercoras.com -kerisom.com -kerlala.com -kernel-sh.com -kernel.cc -kernelfood.com -kernelmed.com -kernelnote.com -kerneltravel.net -kerntech-asp.com -kerric-china.com -kerryeas.com -kerryparkside.com -keruibell.com -keruigroup.com -keruiiai.com -keruilai.com -keruilait.com -keruisifan.com -keruknowledge.com -kerun2010.com -kerundegroup.net -kerust.com -keruyun.com -keruyun.net -kery-pharm.com -kerysoft.com -kesci.com -kesheng.com -keshenwei.com -keshizhongguo.com -kesion.com -kesiyunlai.com -kesonco.com -kesong.co -kesong520.com -kesonic.com -ketangpai.com -ketechdigital.com -ketingkeji.com -ketingzhuangxiu.com -kevinems.com -kevinjiang.info -kevinlq.com -kevke.com -kewu.cc -kewucool.com -kexianggroup.com -kexin001.com -kexinbiotech.com -kexincpa.com -kexing100.com -kexingchem.com -kexinggy.com -kexinhaoma.org -kexinshe.com -kexinyun.org -kexu.com -kexue.com -kexue.fm -kexuezixunzzs.com -kexuna.com -key-iot.com -keyboardancer.com -keyboardingonline.net -keycom-ip.com -keydak.com -keydatas.com -keyde.com -keyfc.net -keygotech.com -keyibao.com -keyigroup.com -keyingchem.com -keyipump.com -keylol.com -keymantek.com -keymedbio.com -keymoe.com -keyoo.com -keyoou.com -keyray-hk.com -keytherapharma.com -keyto168.com -keytoix.vip -keyu66.com -keyuanpharma.com -keyubio.com -keyuejiazheng.com -keyueng.com -keyunchaxun.com -keyunidc.com -keyunlaser.com -keyunsoft.com -kezehb.com -kezhaozhao.com -kezhi.tech -kf.ai -kf155yy.com -kf5.com -kf911.com -kf9977.com -kfadx.tech -kfang.xin -kfb126.com -kfb163.com -kfcbest.com -kfcdn.com -kfchiheng.com -kfcjrl.com -kfdcc.com -kffone.com -kfganquan.com -kfhome.com -kfhty.com -kfj.cc -kfjd.com -kfjyd.com -kfjyjt.com -kflhgs.com -kfmanager.com -kfqizhongji.com -kfsddj.com -kfvcca.com -kfw001.com -kfyg.xyz -kfzdh.com -kfzhinan.com -kfzimg.com -kfzls.com -kg-power.com -kg.com -kghbcn.com -kgimg.com -kgipr.com -kgnmkj.com -kgogame.com -kgrestrg.com -kgzyy.com -kh-zx.com -kh84.com -khdatasolutions.com -khdyly.com -khfwedu.com -khhospital.com -khidi.com -khly.com -khlysc.com -khmhvlw.com -khnhw.com -khotyn.com -khqihuo.com -khruiming.com -khs1994.com -khworidtour.com -khysct.com -ki-pa.com -kiaic.com -kiana.love -kiapmyf.xyz -kibinggroup.com -kicontech.com -kid17.com -kiddopal.com -kidikidi.net -kidsccshow.com -kidscoding8.com -kidsdown.com -kidseq.net -kidsfoto.net -kidspsy.com -kidsthomas.com -kidsyun.com -kidulte.com -kidulty.com -kiiik.com -kiijoy.com -kiinii.com -kiiyi.com -kijifept.com -kikiwon.com -kikoplay.fun -kikusuitape.com -kikuu.com -kilamanbo.com -kililife.com -killdb.com -kilo1kw.com -kiloai.com -kimberley-technology.com -kimderlite.com -kimi.com -kimi.pub -kimiss.com -kimiss.net -kimiter.com -kimleo.net -kimqi.net -kimsom.com -kimxz.com -kina.cc -kinbull.com -kindechem.com -kindlelib.com -kindobest.com -kindsoft.net -king-capital.com -king-rain.com -king-strong.com -kingandkey.com -kingandwood.com -kingarad.com -kingbank.com -kingboritape.com -kingborn.org -kingbos.com -kingbrother.com -kingcheergame.com -kingcloud.com -kingcloudad.com -kingclouddns.com -kingcms.com -kingdaychina.com -kingdee-soft.com -kingdee.com -kingdee.com.tw -kingdee.org -kingdeemall.com -kingdeestar.com -kingdeeyun.com -kingdeezx.com -kingdelgc.com -kingdom-ceramic.com -kingdomfishing.com -kingdomsolar.net -kingdraw.com -kingdun.net -kingexplorer.com -kingfu-china.com -kingfulai.com -kinggoo.com -kinggrid.com -kinghelm.net -kinghomechina.com -kingidc.net -kinginfo.com -kingjee-tech.com -kingjee.com -kingjin-sh.com -kingkaid.com -kingland119.com -kingleen.net -kingliton.com -kinglory.com -kinglymotor.com -kinglyuan.com -kingmagic.co -kingmagnet.com -kingmb.com -kingmylab.com -kingnare.com -kingnet.com -kingnetdc.com -kingnettech.com -kingoit.com -kingosoft.com -kingpower-cn.com -kingray-tech.com -kingreader.com -kingrein.com -kingroot.net -kings3d.com -kingsemi.com -kingsley-cq.com -kingslicer.com -kingsmen-gc.com -kingsoft-office-service.com -kingsoft.com -kingsoft.net -kingsoftstore.com -kingsrich.com -kingst.org -kingstarmedical.com -kingstartech.com -kingston.group -kingstronbio.com -kingsunedu.com -kingsungmedical.com -kingsunpower.com -kingsunsoft.com -kingtaifook.com -kingtroldata.com -kingtysin.com -kingview.com -kingwisoft.com -kingyield.com -kingyon.com -kingyork.com -kingzom.com -kinhom.com -kinhoo.com -kinlong.com -kinpan.com -kinpn.com -kinpoway.com -kinqee.com -kinsec.com -kinte-ind.com -kintiger.com -kintn.com -kintowe.com -kinval.com -kinwong.com -kinzhan.com -kinzoncap.com -kiomodesign.com -kira.cool -kirakuapp.com -kirgen.com -kiriko-china.com -kirin-tech.com -kirincloud.net -kirinmach.com -kirinvm.com -kirkcloud.com -kiscoca.com -kisdee.com -kisence.com -kisilicon.com -kisops.com -kiss998.com -kisskisso.com -kissyj.com -kissyui.com -kiswo.com -kit-lee.me -kitic.net -kitiu.com -kitking.com -kitontech.com -kitstown.com -kituin.fun -kivend.net -kivo.wiki -kiwa-tech.com -kiwenlau.com -kiwifarms.net -kiwifarms.st -kiwimoore.com -kiwisec.com -kiyuu.club -kj-ic.com -kj-pcb.com -kj021.com -kj1d.com -kj2100.com -kj3.com -kj400.com -kj521.com -kjb2c.com -kjcdn.com -kjchina.com -kjchuang.com -kjcity.com -kjcmxx.com -kjcxpp.com -kjcyfz.com -kjdb.org -kjdsnews.com -kjdvsg.com -kjeport.com -kjfns.com -kjgcl.com -kjghyjy.com -kjhaoyun.com -kjimg.com -kjingbao.com -kjiuye.com -kjjcrm.com -kjjl100.com -kjjxjy.com -kjjxl.com -kjjzm.com -kjkd.com -kjkp.com -kjks.net -kjkxun.com -kjlww.com -kjmofang.com -kjmte.com -kjmti.com -kjpmconsulting.com -kjr365.com -kjrs365.com -kjsdh6.com -kjson.com -kjsv.com -kjt.com -kjtbao.com -kjtianshanxu.com -kjtong.com -kjtpay.com -kjutf-uejfncpo72u.com -kjw.cc -kjwlxt.com -kjwugx.com -kjycx.com -kjyicdn.com -kjykcdn.com -kjyun123.com -kjzhan.com -kjzj.com -kjzx.net -kjzxtk.com -kjzz.streamguys1.com -kk-china.com -kk1.vip -kk169.com -kk18.com -kk1bie336689.com -kk30.com -kk30.net -kk3g.net -kkabc.com -kkapp.com -kkcache.net -kkcapture.com -kkcdn.net -kkcha.com -kkcharge.com -kkcoo.com -kkdaxue.com -kkddosdns.com -kkdgroup.com -kkdict.com -kkdnsv1.com -kkdownload.com -kkdzpt.com -kkeji.com -kkfesw.com -kkffdns.com -kkfw.net -kkgithub.com -kkguan.com -kkgwy.com -kkh-global.com -kkhaitao.com -kkid.vip -kkidc.com -kkj2.com -kkjiaofei.com -kkjs.tech -kkk5.com -kkkwww.com -kkkxj.com -kklishi.com -kklxj.com -kkmar.com -kkmh.com -kkmicro.com -kkmop.com -kkong.vip -kkrb.net -kksmg.com -kksofts.com -kkt.com -kktian.com -kktijian.com -kktv1.com -kktv5.com -kktv8.com -kkuryat.com -kkuu.com -kkwafdns.com -kkwan.cc -kkx.net -kkx999.com -kkxnb.com -kkxxiazai.com -kkyoo.com -kkyp.shop -kkyuedu.com -kkzhan.com -kkzj.com -kkzs.io -kkzycdn.com -kl1l5.com -kl321.com -kl688.com -klandk.com -klbn100.com -klbyjt.com -klchemicals.net -klclear.com -klcsb.com -kldhq.com -klgkm.com -klhpw.com -klhuyan.com -klianfa.com -klicen.com -klingai.com -klinlee.com -klisedu.com -kliwu.com -kljiyou.com -kljtc.com -kllife.com -klmnf.com -klmy118114.com -klmybbs.com -klmymarathon.com -klmyssn.com -klner.com -klniu.com -klpbbs.com -klqcb.com -klqy.com -kltgt.com -kltjn.com -kltong.com -kltpump.com -klub11.com -klv5qu.com -klvtu.com -klwxq.com -klx-tech.com -klxksci.com -klxsw.com -klxuexi.com -klyang.com -klzhlogistics.com -km.com -km10z.net -km169.net -km18.net -km1818.com -km28.com -km5858.com -km8z.net -kmail.com -kmaoxx.com -kmapp.net -kmbbs.com -kmbdqn.com -kmcha.com -kmcits.com -kmcits0716.com -kmcsg.com -kmcxedu.com -kmcxg.com -kmcz365.com -kmd8888.com -kmdctz.com -kmdcwt.com -kmdn.net -kmdns.net -kmeecc.com -kmeila.com -kmeitu.com -kmf.com -kmfengli.com -kmg-jd.com -kmgdgs.com -kmguolv.com -kmgybsr.com -kmhpc.net -kmhwtz.com -kmjt.net -kmlcl.com -kmlhh.com -kmljexb.xyz -kmljk.com -kmmama.com -kmmdkj.com -kmoe0.com -kmplayercn.com -kmpwgxzy.com -kmqcwx.com -kmqsaq.com -kmread.com -kmrfidtag.com -kmrijie.com -kmron.com -kms.pub -kmsfybjy.com -kmssgd.com -kmsz.net -kmszy.com -kmteruite.com -kmthy.com -kmtlbj.com -kmtlfckyy.com -kmtrh.org -kmtxzs.com -kmvtc.net -kmvxwedy.com -kmw.cc -kmw.com -kmwatersupply.com -kmway.com -kmwx.net -kmxkh.com -kmxyj.com -kmy100.com -kmyanyou.com -kmyestar.com -kmykt.com -kmyzzx.com -kmzp.com -kmzscc.com -kmzx.com -kmzx.org -kn-light.com -kn-nanjing.com -kn0sky.com -kn120.com -knbmotor.com -knewbi.com -knewone.com -knewsmart.com -knfeco.com -knight-un.com -knightedge.com -knightli.com -kninebox.com -knj-nanjing.com -knn-nj.com -knnnd.com -knockdream.com -knotesapp.com -know-act.com -know88.com -knowapartments.com -knowfashionstyle.com -knowhowedu.com -knowingclouds.com -knowingcloudvip.com -knowingyun.com -knowlink-assets.com -knownpcb.com -knownsec.com -knowsafe.com -knowsurface.com -knowyourself.cc -knoya.com -knscq.com -knsheng.com -knsyxw.com -knt-nj.com -kntc.win -kntn.tech -knvps.com -knxchina.org -knzlcq.com -ko0.com -koagzrxt.com -koal.com -koalacam.net -koalareading.com -koalasolo.com -koba8.com -kobeandkdshoes.com -kobelco-zh.com -kobox.tv -kocla.com -kodcloud.com -koderover.com -kodmp.com -koenli.com -kof-kol.club -kofficemart.com -kofuf.com -kofunion.net -kogfc.net -kohergroup.com -koiclub.net -koikreative.com -koinocn.com -koioawq.com -kojtech.com -kok.plus -kolarmy888.com -kolcc.com -kole8.com -kolemay.com -kolleracademy.com -kolrank.com -kolstore.com -kolyun.com -komect.com -kometo.com -konami.cc -koncoo.com -konekomoe.com -konfan.net -kongao.com -kongapi.com -kongbugushi.com -kongdao.com -kongduan.com -kongfz.com -kongge.com -kongjianjia.com -kongjibusiness.com -kongjie.com -kongjieshijie.com -kongjitang.com -kongjun.com -kongkangroup.com -konglei.com -konglonggu.com -kongming-inc.com -kongqinengrebeng.com -kongquecheng.com -kongqueyuzd.cc -kongrong.com -kongtiao163.com -kongtiao365.com -kongwu2022.com -kongzhi.net -kongzhiji.com -kongzhong.com -konka.com -konkamobile.com -konkasnow.com -konkek2.com -konlan.com -konotaku.com -kooaoo.com -koobai.com -koobeemobile.com -koobone.com -koocdn.com -kooci.net -koodi98.com -koofang.com -koofun.com -koogua.com -kook.vip -kookong.com -koolcenter.com -kooldns.com -koolearn.com -koolproxy.com -koolyun.com -koomao.com -koopass.com -koorun.com -kooshui.com -kooteam.com -koovin.com -kooxoo.com -kopebe.com -kopisee.com -kopitokein.com -kopiurerolex.com -koplayer.com -kopperchem.com -koreabt.com -koreaxin.com -koreaxing.com -korirl.com -kormee.com -kornsweets.com -koronsoft.com -korosensei.com -korqqr1l13.com -korrun.com -kortatb.com -kortrong.com -kotaqkew.com -kotei-info.com -kotek.tel -kotoo.com -kotoyoshi.com -koubei.com -koubeikc.com -koucai.com -kouchouwang.net -koudai.com -koudai8.com -koudaigou.net -koudaili.com -koudaionline.com -koudaionline.net -koudaitiku.com -koudaitong.com -koudashijie.com -kouer.com -kouer.net -kouhao8.com -koukao.net -koukao.org -kouke5.com -koukoutu.com -koukuko.com -koumakan.cc -kouqiangba.com -koushare.com -kouss.com -kouxin.com -kouxin.net -kouyijia.com -kouyu100.com -kouzi.com -kovemoto.com -kowa-dental.com -kowa103.com -kowloonhospital.com -koyuki.cc -kpblw.com -kpbs-wowza.streamguys1.com -kpbyd.com -kpdhk.com -kpfans.com -kpfcw.com -kpfqg.com -kphm88.com -kphwchem.com -kpjushi.com -kpkpw.com -kplanet.vip -kpmqg.com -kpoll.net -kppcsem.com -kprepublic.com -kpt5.com -kptour.com -kpwcmb.com -kpxmsbtw.com -kpyy239.com -kpyy258.com -kpzip.com -kpzip.net -kpzpw.com -kpzs.com -kpzuan.com -kq-cnmia.com -kq36.com -kq39.com -kq520.net -kq7.com -kq81.com -kq88.com -kqalevel.com -kqapi.com -kqgeo.com -kqgyl.com -kqj123.com -kqjtj.com -kqjtj.net -kqlink.com -kqmmm.com -kqopg.app -kqpgstxx.com -kqqy.com -kqw.com -kqwh231122.com -kqwlxxjs.com -kqzlzx.com -kqzp.net -kr-cell.com -kr-tencentclb.cloud -kr-tencentclb.com -kr-tencentclb.net -kr-tencentclb.work -kr.com -kr126.com -krahag.com -krbk.com -krd168.com -krdrama.com -krenzheng.com -kridol.com -krioqxi.com -kriszhang.com -krones-group.com -krones.com -krpano.tech -krqcitie.com -krszf.com -krtdl.com -krxz.com -krzb.net -krzwymfr.com -krzzjn.com -ks-cdn.com -ks-cdn1.com -ks-cdnv6.com -ks-fag.com -ks-live.com -ks-spring.com -ks-terminals.com -ks-wg.com -ks1688.com -ks321.com -ks365.org -ks51.com -ks5u.com -ksair.com.tw -ksapisrv.com -ksbao.cc -ksbao.com -ksbbs.com -ksbm.com -ksc-test.com -kscac.com -kscbigdata.cloud -kscbpkf.com -kscdns.com -kschuangku.com -kscloudapi.com -ksco.cc -kscord.com -ksdedu.com -ksdhgy.com -ksdown.com -ksecit.com -ksedt.com -kseibitools.com -ksense.com -ksfang.com -ksgnr.com -kshahn.com -kshaoteng.com -kshfgf.com -kshjn.com -kshot.com -kshot.net -kshtxf.com -kshuwx.com -kshwtj.com -ksjgs.com -ksjhaoka.com -ksjhp.com -ksjxgs.com -kslccb.com -kslyt.com -ksmend.com -ksmiai.com -ksmingl.com -ksmjmj.com -ksmmed.com -ksmobile.com -ksmobile.net -ksmq5a9kxzmr.com -ksn-cinfo.geoksn.kaspersky.com -ksn-crypto-wifiplus.geoksn.kaspersky.com -ksn-dc1-cert.geoksn.kaspersky.com -ksn-dc1-file.geoksn.kaspersky.com -ksn-dc1.geoksn.kaspersky.com -ksn-file.geoksn.kaspersky.com -ksn-info.geoksn.kaspersky.com -ksn-kas.geoksn.kaspersky.com -ksn-mdr.geoksn.kaspersky.com -ksn-tcert.geoksn.kaspersky.com -ksn-url.geoksn.kaspersky.com -ksn-verdict.geoksn.kaspersky.com -ksndsa.com -ksnows.com -ksoapp.com -ksokay.com -ksops.com -ksord.com -ksosoft.com -kspays.com -kspeeder.com -kspkg.com -ksrc001.com -ksren.com -ksrenfan.com -ksria.com -ksrmtzx.com -ksrmyy.org -ksruanjian.com -kss4.com -kssip.msi.com -kssjkj.com -ksslxh.com -kst-cn.com -kst100.com -kst365.com -kstao.com -kstengcai.com -kstnjscl.com -kstore.space -kstore.vip -kstv.com -ksupdate.com -ksust.com -kswcd.com -kswxjnjs.com -ksxfgc.com -ksxianda.com -ksydns.com -ksydx.com -ksyiqiwan.com -ksyll.com -ksyna.com -ksyun.com -ksyun.net -ksyunad.com -ksyuncdn-k1.com -ksyuncdn-k2.com -ksyuncdn.com -ksyuncdnv6.com -ksyuncs.com -ksyungslb.com -ksyungslb2.com -ksyunv5.com -ksyunv6.com -ksyunv7.com -ksyunwaf.com -ksyxmc.com -kszhuanjia.com -kszlzz.com -kszpw.com -kszxzsxh.com -kt007.com -kt10000.com -kt286.com -kt40.com -kt5u.com -ktallong.com -ktang1.com -ktazg.com -ktbiao.com -ktc-med.com -ktcomposite.com -ktctjt.com -ktcupdate.com -ktfdsb.com -ktgzdmw.com -kting.info -ktkt.com -ktlshu.vip -ktlstbg.com -ktmap.com -ktmv.com -ktmwan.net -ktovztie.com -ktplay.com -ktrcn.com -ktrlight.com -ktstny.com -ktswjt.com -ktt-automation.com -ktu56.com -ktuner.store -ktv.com -ktvc8.com -ktvdaren.com -ktvme.com -ktvsky.com -ktwap.net -ktxuexi.com -ktyunlianjie.com -ku25.com -ku33a.net -ku6.net -ku6cdn.com -ku6img.com -ku6vms.com -ku82.com -ku90.com -ku968.com -ku987.com -kua365.com -kuaaa.com -kuabaobao.com -kuadu.com -kuafuai.net -kuai-fei.com -kuai-ying.com -kuai.ma -kuai65.com -kuai666aa8e43gomqhzeg.com -kuai666bj7tu65rkdz82.com -kuai666bjeve6ks43qyw4vc8.com -kuai666bjs3gsymi6v4h5pz.com -kuai666e9rqs5wumk7at3.com -kuai666gki3osg54rx7a.com -kuai666gkq3semv1r34.com -kuai666i4rmp7c5i16hb.com -kuai666kysktrxmwici27.com -kuai666m6vgmorxw77vb5.com -kuai666ogv754urmpb4.com -kuai666trqtauks5ht6x.com -kuai666vs5aq9o3ytdgp.com -kuai7.com -kuai8.com -kuaiads.com -kuaiapps.com -kuaibaobei.com -kuaibiao2000.com -kuaicad.com -kuaicha365.com -kuaicha888.com -kuaichala.com -kuaichale.com -kuaidadi.com -kuaidaili.com -kuaidi.com -kuaidi100.com -kuaidi321.com -kuaidihe.com -kuaidihelp.com -kuaidihome.com -kuaidilab.com -kuaidim.com -kuaidizs.com -kuaiduizuoye.com -kuaiduwen.com -kuaiex.com -kuaifaka.com -kuaifaka.net -kuaifan.shop -kuaifawu.com -kuaifeng.com -kuaifuinfo.com -kuaigames.com -kuaigeng.com -kuaigou.co -kuaiguohui.com -kuaih5.com -kuaihaodai.com -kuaihecaishui.com -kuaihou.com -kuaihuoyun.com -kuaihz.com -kuaiji.com -kuaiji.so -kuaiji521.com -kuaiji66.com -kuaijianji.com -kuaijilunwen.com -kuaijinniu.com -kuaijipeixunlg.com -kuaijishizi.com -kuaijisishu.com -kuaijitong.com -kuaijizheng365.com -kuaikan.ink -kuaikanad.com -kuaikanmanhua.com -kuaikao.com -kuaikaoti.com -kuaikuaicloud.com -kuaila.com -kuailails.com -kuailaiwz.com -kuaile-u.com -kuaile8.com -kuaile800.com -kuailedo.com -kuailekaishi.com -kuailelunwen.com -kuailepipixia.com -kuailetongyao.com -kuailexs.com -kuailexue.com -kuailezu.com -kuailiyu.com -kuailiyu.net -kuailon.com -kuailvzaixian.com -kuaimai.com -kuaimi.com -kuaimi.net -kuaiming.com -kuaipandata.com -kuaipao.run -kuaipao8.com -kuaipianer.com -kuaipiyun.com -kuaipng.com -kuaiqi.net -kuaiqikan.com -kuaiqin.com -kuaiqushuiyin.com -kuairen88.com -kuaisee.com -kuaishangkf.com -kuaishebao.com -kuaishiedu.com -kuaishou.com -kuaishouapp.com -kuaishouapp.net -kuaishouapps.com -kuaishouba.com -kuaishougroup.com -kuaishoupay.com -kuaishuru.net -kuaisu.com -kuaisushu-cnd.com -kuaisuyun.com -kuaitijian.com -kuaitu.cc -kuaitu666.com -kuaitui365.com -kuaiwan.com -kuaiwenyun.com -kuaixiazai.com -kuaixue.com -kuaiyan.com -kuaiyankanshu.org -kuaiyiad.com -kuaiyilicai.com -kuaiyingxiao88.com -kuaiyingyong.vip -kuaiyizu.net -kuaiyong.com -kuaiyoujia.com -kuaiyouxi.com -kuaiyu.com -kuaiyuepu.com -kuaiyugo.com -kuaiyunds.com -kuaizhan.com -kuaizhang.com -kuaizhaogong.com -kuaizhe.com -kuaizhihui.com -kuaizhou123.com -kuaizi.co -kuaizitech.net -kuaizupu.com -kuaizy.com -kuajing.com -kuajing.hk -kuajing84.com -kuajingketang.cc -kuajingmaihuo.com -kuajingnet.com -kuajingvs.com -kuajingx.com -kuajingyan.com -kuajingyang.com -kuajingzhushou.com -kuajinzhifu.com -kuakao.com -kuakao.net -kuake8.com -kuaming.com -kuandaige.com -kuanfans.com -kuanff.com -kuanfutong.com -kuang-chi.com -kuang-chi.org -kuangchan.biz -kuangdacn.com -kuangdi.com -kuangjijia.com -kuangjiwan.com -kuangming.com -kuangshitech.com -kuangshun.com -kuangstudy.com -kuangxiangit.com -kuangyeyuan.com -kuangyi.com -kuangyuantrade.com -kuanhuacheng.com -kuanye.net -kuark.com -kuashou.com -kuashuonk.com -kuayuegroup.com -kubercloud.com -kubesre.xyz -kubey.cc -kubikeji.com -kuboluo.com -kuche.com -kuchechina.com -kuchuan.com -kucunguanli.online -kudapp.com -kudianvip.com -kudiaoyu.com -kudingyu.com -kudns.com -kudou.org -kuems.com -kufangwuyou.com -kufaxian.com -kufei.com -kuge.cc -kugoo.com -kugou.com -kugou.la -kugou.net -kugouaudio.com -kugouipv6.com -kugoukid.com -kugouliveshow.com -kugouringtone.com -kugousenior.com -kugoustore.com -kugouvoice.com -kugouyouth.com -kuguanyi.com -kugz.com -kuhao360.com -kuhii.com -kuhimalayandp.com -kuicc.com -kuigkj.com -kuihe.com -kuihuakeji.com -kuihuayaoye.com -kuihuo.com -kuike.ltd -kuiniuca.com -kuishiba.com -kujiale.com -kujiang.com -kujiang.net -kuka-xj.com -kuka001.com -kukagroup.com -kukahome.com -kukankeji.com -kukasofa.com -kuke.com -kuke99.com -kukecloud.com -kukseo.com -kuku123.com -kukuda.net -kukulv.com -kukupig.com -kukushouhou.com -kukushow.com -kukushu.com -kukuspeak.com -kukuw.com -kukuxiu.com -kuledushu.com -kuleiman.com -kulekeji.com -kulemi.com -kulengvps.com -kuletco.com -kuli.ren -kuliwang.net -kuloumao.com -kuman.com -kumanju.com -kumao.vip -kumao2018.com -kumaoyun.com -kumeiwp.com -kumhosunny.com -kumi.com -kumiao.com -kumiao.tv -kumiao.vip -kumifeng.com -kun-pharm.com -kun66.xyz -kunchuang.com -kunduo.com -kungfucloud.com -kungfuenglish.com -kunguankeji.com -kunguanyx.net -kunjuke.com -kunkkawu.com -kunkundev.com -kunkunyu.com -kunlexf.com -kunlunaq.com -kunlunar.com -kunlunca.com -kunluncan.com -kunlunce.com -kunlundns.com -kunlunea.com -kunlungem.com -kunlunger.com -kunlungr.com -kunlunhuf.com -kunlunjk.com -kunlunjue.com -kunlunjyk.com -kunlunle.com -kunlunli.com -kunlunno.com -kunlunpi.com -kunlunra.com -kunlunsa.com -kunlunsc.com -kunlunsl.com -kunlunso.com -kunlunta.com -kunlunvi.com -kunlunwe.com -kunlunxin.com -kunlunyb.com -kunmingbc.com -kunmingguolv.net -kunmingkanghui.com -kunnabeila.com -kunpengkg.com -kunpengtn.com -kunpo.cc -kunruijs.com -kunst-x.com -kuntaihotel.com -kuntin.com -kunyamedical.com -kuo-yi.com -kuobuy.com -kuocaicdn.com -kuocaidns.com -kuocaitm.net -kuocaiyun.com -kuoo8.com -kuosanyun.com -kuosheng.com -kuosheng.net -kuotu.com -kuozhan.net -kupaisky.com -kupan.cc -kupao.com -kuqin.com -kuraboshanghai.com -kureader.com -kurobbs.com -kurogame-service.com -kurogame-service.xyz -kurogame.com -kurogame.net -kurogame.xyz -kurogames-ads.com -kurogames-global.com -kurogames.com -kurokingdom.com -kuroko.info -kurtizanki-spb.com -kurz-sh.com -kusdk.com -kusen888.com -kushe.net -kushouwang.net -kushuzw.com -kusnc17.com -kuso.xyz -kusouji.com -kut-hls.streamguys1.com -kut3974vc.com -kutianxia.com -kutianxia.net -kutinai.com -kutj.com -kutongji.com -kutuan.com -kuuke.com -kuvun.com -kuwan8.com -kuwanapp.com -kuwanbang.com -kuwanjitar.com -kuwen.net -kuwuu.com -kuwwz.com -kuxi100.com -kuxiaoji.com -kuxiaomiao.com -kuxiaomiao.net -kuxiaoshuo.com -kuxiaozhu.com -kuxiuktv.com -kuxueedu.com -kuy8.com -kuyh.com -kuyibu.com -kuyin123.com -kuyinxiu.com -kuyinxiuxiu.com -kuyinyun.com -kuyiso.com -kuyiyun.com -kuyoo.com -kuyouyun.com -kuyumall.com -kuyunbo.club -kuzhange.com -kuzhazha.com -kuzhengame.com -kuzu.com -kv-kva.com -kv6om4zs5i47.com -kvamerfx.com -kvenjoy.com -kviso.com -kvogues.com -kvov.com -kvps85.com -kvrmicit.com -kw007.com -kwai-group.com -kwai-pro.com -kwai.com -kwai.net -kwai.xyz -kwai666.com -kwaiadapp.com -kwaiads.com -kwaibusiness.com -kwaicdn.com -kwaicdnx.com -kwaie65eu4gvs1943.com -kwaiekow98icxsp7fz.com -kwaiesovc9xgzfcmt.com -kwaigobuy.com -kwaigroup.com -kwailai.com -kwailala.com -kwailbs.com -kwailine.com -kwailocallife.com -kwailocation.com -kwairga8upiycbiv.com -kwairia4qs5e76v52z.com -kwairpoewaum3s9z41.com -kwairr9aw56vso581r.com -kwairtc.com -kwaisczway7r4tz7m8.com -kwaiselfcdn.com -kwaishop.com -kwaishouapp.com -kwaishouapp.net -kwaitalk.com -kwaitv.com -kwaiww7t3qi8x217.com -kwaixiaodian.com -kwaiying.com -kwaiymx64war5a7f.com -kwaizt.com -kwangfeng.com -kwggroupholdings.com -kwimgs.com -kwinbon.com -kwise-log.com -kwkf.com -kwmu-flash.streamguys1.com -kwniu.com -kwong-tech.com -kws123.com -kwt56.com -kwtgs.com -kwtzn.com -kwudor.com -kwwblcj.com -kwx.gd -kwxcj.com -kwxjh.net -kwxpobrw.com -kx-turbo.com -kx001.com -kx139.com -kx1978.com -kx1d.com -kx778.com -kx7p.com -kxapps.com -kxb100.com -kxbox.com -kxccjjt.com -kxceping.com -kxcq.com -kxdaili.com -kxdao.com -kxdao.org -kxdpm.com -kxdw.com -kxiaoshuo77.com -kxinyk.com -kxji.com -kxjlzx.com -kxjsys.com -kxkzrcke.com -kxl100.com -kxlc.com -kxll.com -kxload.com -kxmas.com -kxmrg.com -kxow.com -kxparking.com -kxphy.com -kxq520.com -kxqo2ev.com -kxscience.com -kxstykrgx8z3.com -kxt.com -kxtjt.com -kxtoo.com -kxtry.com -kxtseal.net -kxtui.com -kxtwz.com -kxue.com -kxwell.com -kxx2.com -kxxsc.com -kxxxl.com -kxyyf.com -ky-express.com -ky.cc -ky.live -ky393834.com -ky5yx.com -ky6yx.com -ky7yx.com -ky958.com -kybapp.com -kybapp.net -kybcrm.com -kybimg.com -kyboye.com -kybyun.com -kych5.com -kydbp.com -kydev.net -kydzfl.com -kye-erp.com -kye.vip -kyec.cc -kyedu.cc -kyemall.com -kyfey.com -kygroup.ltd -kygso.com -kyhtech.com -kyhyxy.com -kyjlhz.com -kyjxy.com -kyk.cc -kykjgroup.com -kylc.com -kyleduo.com -kyligence.io -kylin-os.com -kylinlot.com -kylinmobi.com -kylinos.com -kylinpet.com -kylpharm.com -kymjs.com -kyo.hk -kyoceraconnect.com -kyppt.com -kyrcw.com -kysjhx.com -kyslb.com -kysnxt.com -kysygs.com -kytijian.com -kyubwsx1g5.com -kyuedu.com -kyv5.com -kyw4y0s.com -kywiremesh.com -kyxdloan.com -kyxh.com -kyxsw.org -kyy6.com -kyzhpt.com -kyzs.com -kyzyj.com -kz.cc -kz321.com -kz8yx.com -kzcpm.com -kzgui.com -kzk1.com -kzmyhome.com -kzrcw.com -kzread.com -kzrqicae.com -kztsjj.com -kzwr.com -kzwx.net -kzyzz.com -l-zb.com -l069.com -l0v0.com -l1yu.com -l2cn.com -l2h.site -l2t7.cc -l2z4l.net -l3gt9.com -l68.net -l799vk4qe2.com -l7audiolab.com -l85r.com -l99.com -la-bbs.net -la-chinata.hk -la-mo.com -la-technology.com -la31.com -laawoo.com -lab-bst.com -lab-easttitan.com -lab-rm.com -lab-z.com -labaoxian.com -labbang.com -labbase.net -labbuy.net -label-printing-factory.com -labgogo.com -labi.com -labisart.com -labixiao.xin -labno3.com -labpyx.com -labuladong.online -labview.help -labxing.com -labzj.com -lacaoshi.com -lacesar.com -lackeeden.com -lacngs.com -lacocrea.com -ladiyoga.com -ladjzs.com -lady361.com -lady75.com -lady8844.com -ladybirdedu.com -ladydaily.com -ladyhua.com -ladyol.com -ladyw.com -ladyw.net -laecloud.com -laey.net -laf.run -lafaso.com -lafayettewines.com -lafy.org -lafybjy.com -lagou.com -lagouevents.com -lagoujobs.com -laguaba.com -laguke.com -lahuashanbx.com -lahuolaozao.com -lai-ai.com -laianbbs.com -laiba.shop -laibafu.com -laibeiparking.com -laibokeji.com -laibot.com -laichon.com -laichou.com -laichuanfeng.com -laicodecor.com -laidacai.com -laidazi.com -laidingba.com -laidudu.com -laifen.net -laifeng.com -laifeng.net -laifenqi.com -laifu.net -laigame7.net -laigaokao.com -laigong.com -laihua.com -laijiawen.com -laijishaofang.com -laijuba.com -laikan.com -laikanxia.com -laikanxing.com -laikanxs.com -laike.net -laikeerp.com -laiketui.com -lailaieshop.com -lailaihui.com -lailibai.com -lailin.xyz -lailinzhihui.com -lailook.net -laima-tech.com -laimaidi.com -lainzy.net -laipei.net -laiqi.net -laiqm.com -laiqukankan.com -laiqy.com -laird-tek.com -laisai.com -laishui.info -laisizuji.com -laisj.com -laitelaide.com -laituia.com -laituijian.net -laiwang.com -laiwo.com -laiwu.net -laiwuyizhong.com -laixi.com -laixiangzuji.com -laixindianzi.com -laixiu.cc -laixiukeji.com -laixs.com -laixueedu.com -laixuexi.cc -laiyagushi.com -laiye.com -laiyifen.com -laiyincat.com -laiyouhui.net -laiyouxi.com -laiytech.com -laiyu.com -laizee.com -laizhouba.com -laizhouba.net -laizhoujob.com -laizi.net -lajoson.com -lakala.com -lakecn.com -lakeregionfitness.com -lakwdian.com -lalaba.com -lalaedu.com -lalavision.com -lalawaimai.com -lalkk.com -lamahui.com -lamaison-arting.com -lamall.com -lambda.hk -lamborlogistics.com -lameixs.com -lamiu.com -lamost.org -lamoton.com -lampbi.com -lampouomo.com -lamsg.net -lamuba.com -lamyu.com -lan-bridge.com -lan-lin.com -lan-ning.com -lan1001.com -lanall.com -lanapartments.com -lanbenjia.com -lanbing510.info -lanbinimall.com -lanbts.com -lanbula.com -lancdn.com -lancecity.net -lancern.xyz -lanchenglv.com -lanchuanhuanbao.com -lancn.net -lancome-beauty.com -lancong.net -lanconvey.com -lancunwater.com -lancygroup.com -land136.com -landa-solenoid.com -landai.com -landaiwood.com -landasky.com -landbond.com -landbridge.com -landchina.com -landed.cc -landhonor.com -landi.com -landian.vip -landian.xyz -landiannews.com -landing-med.com -landingbj.com -landintheair.com -landitrip.com -landizs.com -landjs.com -landmedium.com -landong.com -landraco.com -landray.com -landroads.com -landscape.vip -landspace.com -landtu.com -landui.com -landuicdn.com -landuncn.com -landunxiaofang.com -landwind.com -landzestate.com -landzg.com -landzy.com -lanecn.com -lanfanapp.com -lanfc.com -lanfcw.com -lanfeicastle.com -lanfeitech.com -lanfeiwine.com -lanfeng.net -lanfucai.com -lanfucaijing.com -lanfw.com -lang8.net -langan-group.com -langao.com -langchao.com -langchaosh.com -langchi.com -langduqi.com -langemedtech.com -langfang.com -langfang12345.com -langfangfc.com -langfly.com -langgine.com -langhao-medical-platform.com -langhuansoft.net -langjian.work -langkaiwenhua.com -langkawipower.com -langke.com -langke.tv -langkoo.com -langlangjiajiao.com -langlangy.com -langlib.com -langlive.com -langmanzg.com -langqing.club -langren001.com -langren8.com -langrencard.com -langrenclub.com -langrensha.net -langruiyun.com -langsajiasi.com -langsong.site -langtao.cc -langtaojin.com -langtongpos.com -languageclass.cc -languang.com -languershiton.com -langukeji.com -langwei.net -langxi.org -langxi.xyz -langxingys.com -langxiyuyou.com -langzezs.com -lanh.love -lanhanba.net -lanhao.name -lanhu.com -lanhuajituan.com -lanhuapp.com -lanhuasoft.com -lanhuhu.com -lanhui.com -lanin.tech -lanindex.com -lanjie100.com -lanjie520.com -lanjingads.com -lanjinger.com -lanjingerp.com -lanjingfm.com -lanjingmembrane.com -lanjings.com -lanjingtmt.com -lanjingzf.com -lankecloud.com -lankeji.com -lanlanlife.com -lanlanwork.com -lanlinghospital.com -lanlingtuliao.com -lanlv.com -lanmaiedu.com -lanmao.com -lanmaokeji.com -lanmaos.com -lanmicloud.com -lanmit.com -lanniuh.com -lanniuyun.com -lanohotel.com -lanosso.com -lanou3g.com -lanovamedicines.com -lanpiankeji.com -lanpuele.com -lanpv.com -lanpw.com -lanpye.com -lanqb.com -lanqi.com -lanqibing.com -lanqingkeji.com -lanqiudi.com -lanrar.com -lanree.com -lanreelh.com -lanrenbijia.com -lanrenclub.com -lanrenexcel.com -lanrenmb.com -lanrents.com -lanrentuku.com -lanrenzhaofang.com -lanrenzhijia.com -lanrenzhoumo.com -lanruitech.com -lansancn.com -lanscn.com -lansedir.com -lansedongli.com -lanshan.com -lanshanae.com -lanshanweb.com -lanshauk.com -lanshenniao.com -lanshizi.com -lanshou.net -lansors.com -lansscl.com -lansun-pumps.com -lansurcn.com -lantaochina.com -lantiangufen.com -lantianyu.net -lantinglou.com -lantumap.com -lantushiji.com -lanuss.com -lanvote.com -lanwa.net -lanwei.org -lanwoncloudfilm.com -lanwuzhe.com -lanxinbase.com -lanxincn.com -lanxincomputing.com -lanxing123.com -lanxiniu.com -lanxiongsports.com -lanxixiaowu.com -lanxum.com -lanying.site -lanyingwang.com -lanyu.net -lanyue.com -lanyun.net -lanyunbrand.com -lanyunbusiness.com -lanyuncloud.com -lanyuncms.com -lanyunone.com -lanyus.com -lanyusf.com -lanzchina.com -lanzhouvw.com -lanzhuwh.com -lanzn.com -lanzog.com -lanzong6.com -lanzou.com -lanzoub.com -lanzouc.com -lanzoue.com -lanzouf.com -lanzoug.com -lanzouh.com -lanzoui.com -lanzouj.com -lanzouk.com -lanzoul.com -lanzoum.com -lanzouo.com -lanzoup.com -lanzouq.com -lanzous.com -lanzout.com -lanzouu.com -lanzouv.com -lanzouw.com -lanzoux.com -lanzouy.com -lanzov.com -lanzun.net -lanzv.com -lao.si -laobaicai.net -laobaigan-hs.com -laoban100.com -laobandq.com -laobanfa.com -laobangban.com -laobanmail.com -laobi.icu -laobinggun.com -laobingmi.com -laobuxie.com -laocen.com -laodao.cc -laodaoyun.com -laodong.me -laodong66.com -laodongfa.com -laodublog.com -laoduo.net -laoduzhe.com -laoevisa.gov.la -laofengwei.com -laofu.online -laofuzhou.net -laoge.xyz -laogongju.com -laogongshuo.com -laogu.cc -laogu.com -laohaoren.com -laohu.com -laohu8.com -laohuabao.com -laohuangli.net -laohucaijing.com -laohuyun.com -laojiuxitong.com -laojuhui.com -laoke.com -laolai.com -laolaishou.com -laolaomiyou.com -laoliang.net -laoliboke.com -laolieren.com -laolieren.shop -laolishi.cc -laoliuceping.com -laoma.cc -laomaoniu.com -laomaotao.org -laomaotaopan.com -laomatou.com -laomo.me -laomoe.com -laomu.net -laomuji.club -laonanren.cc -laonian100.com -laoniushuju.com -laoqiange.club -laoqianzhuang.com -laoren.com -laosiji.com -laosunit.com -laotiaomao.com -laowalens.com -laowangappxy.xyz -laowuxx.com -laoxiangji.com -laoxianhui.com -laoxiezi.com -laoxuean.com -laoxuehost.com -laoxuehost.net -laoxuezhuji.com -laoy.net -laoyancheng.com -laoyaoba.com -laoyi0773.com -laoyoujiaju.com -laoyouyun.com -laoyouzhibo.com -laoyuanji.com -laoyuegou.com -laoyuge.com -laozhaopian5.com -laozicloud.com -laozu.com -laozuo.org -lapc.cc -lapin365.com -laplace-semi.com -lapulace.com -laravel-admin.org -laravelacademy.org -larenla.com -large.net -lark-passport-qa-sg.net -larkapp.com -larkcloud.com -larkcloud.net -larkfn.com -larkmeetings.com -larkoffice.com -larkofficeapp-boe.com -larkofficeapp-pre.com -larkofficeapp.com -larkofficeboe.com -larkofficecdn.com -larkofficeimg.com -larkofficepkg.com -larkofficepre.com -larkroad.com -larkrooms.com -larksuite-pre.com -larksuite.com -larksuite.com.ttdns1.com -larksuite.com.ttdns2.com -larksuitecdn.com -larksuiteimg-boe.com -larksuiteimg-pre.com -larksuiteimg.com -larkvc.com -larkworld.com -larmace.com -larryms.com -larscheng.com -larsonlimited.com -laruence.com -lasashengdi.com -laschina.org -lascn.net -laserfair.com -laserjg.com -lashou.com -lasji.net -lasmasas.com -last2win.com -lastdream.net -lastline.tech -lategege.com -latepost.com -latexeasy.com -latexstudio.net -latin100.com -latinhui.com -latitudeda.com -lattebank.com -lattecake.com -lattefinance.com -lattice.vip -laungee.com -laurelfilms.com -lauyoo.com -lavago.com -lavandehotels.com -lavapm.com -lavaradio.com -lavdrzv.xyz -law-lib.com -law-star.com -law-wei.com -law01.net -law6888.com -lawasst.com -lawaxi.net -lawbang.com -lawbridge.org -lawbus.net -lawen.org -lawen2.org -lawh.fun -lawinfochina.com -lawipcompass.com -lawke.com -lawlawing.com -lawlh1688.com -lawlingyun.com -lawnewscn.com -lawparks.com -lawrencetsui.com -lawsdata.com -lawtimeimg.com -lawugu.com -lawxin.com -lawxp.com -lawyee.com -lawyee.net -lawyee.org -lawyer-wangjiawei.com -lawyer186.com -lawyerbridge.com -lawyermr.com -lawyerpass.com -lawyershanghai.net -lax-pro.com -laxarq.com -laxmok.com -layaair.com -layabox.com -layinfo.com -layleen.com -laymauchina.com -layoutad.com -laysky.com -layui.com -layuicdn.com -layz.net -lazada.co.id -lazada.co.th -lazada.com -lazada.com.my -lazada.com.ph -lazada.sg -lazada.vn -lazcdn.com -laze.cc -lazyaudio.com -lazybios.com -lazycat.cloud -lazycatmicroserver.com -lazycomposer.com -lazydim.com -lazymap.com -lazyren.com -lazystones.com -lb-yz.com -lb.streaming.sk -lb0398.com -lb5.com -lb54hon504ke.com -lbbb.cc -lbbee.com -lbbniu.com -lbctjt.com -lbctrl.com -lbd-group.com -lbd99.com -lbddd.com -lbdj.com -lbedu.com -lbesec.com -lbexps.com -lbf123.com -lbgold.com -lbgoo.com -lbgttc.com -lbhdbl.com -lbhgle.com -lbinin.com -lbjljc.com -lbjn.cc -lbjsfz.com -lbjtjt.com -lbkaiguan.com -lbkrs.com -lbmobi.com -lbrencai.com -lbsdermyy.com -lbsdmy.com -lbsrmyy.com -lbswjt.com -lbszx.com -lbtek.com -lbu.cc -lbv1.com -lbwbw.com -lbx777.com -lbx777.net -lbxcn.com -lbxcrmyy.com -lbxdrugs.com -lbxdyfgx.com -lbxjkyf.com -lbycwx.com -lbyeyaji.com -lbyq.com -lbysgz.com -lbzuo.com -lc-cn-e1-shared.com -lc-cn-n1-ayaqc.com -lc-cn-n1-npxfk.com -lc-cn-n1-shared.com -lc-cn-n1-thovg.com -lc-led.net -lc-news.com -lc-rc.com -lc044.love -lc1001.com -lc123.net -lc1618.com -lc365.net -lc787.com -lcang.com -lcatgame.com -lcayun.com -lcbdf.net -lcboai.com -lcbtv.com -lccareer.com -lccdn.net -lcchem.com -lcchgg.com -lccmw.com -lccyy.com -lccz.com -lcddjm.com -lcdhome.net -lcdtz.com -lcdushi.com -lcdwiki.com -lcdzsww.com -lcenn.com -lcfby.com -lcfcw.com -lcfgjs.com -lcfile.com -lcftech.com -lcfw.co -lcgdbzz.org -lcgjcj.com -lcgod.com -lchot.com -lchzzs.com -lcisb.com -lciuyou.com -lcjh.com -lcjrfg.com -lcjxj.com -lcjyg.com -lckeshun.com -lckfb.com -lckiss.com -lcloudcdn.com -lcmack.com -lcmhbl.com -lcmpn.com -lcnichia.com -lcofjp.com -lcofo.com -lcoss.com -lcouncil.com -lcpdu.com -lcpumps.com -lcqixing.com -lcqjsjxxx.com -lcqwdz.com -lcrc.ltd -lcrcbank.com -lcrq.net -lcsepu.com -lcsgxjt.com -lcslhgg.com -lcsrmyy.com -lcsrw.com -lcsssg.com -lcsyzp.com -lctech-inc.com -lctsggzz.com -lcux.net -lcwl.net -lcxtgs.com -lcxwfc.com -lcxzyy.com -lcycgg.com -lcyff.com -lcyhdl.com -lcyidc.com -lcyinsu.com -lcykgg.com -lcyp.net -lcyrny.com -lcysc.com -lcywhx.com -lcyyfj.com -lcyzh.com -lczbgc.com -lczbqxn.com -lczm.com -lczq.com -lczyjsxx.com -lczyun.com -lczyy.com -ld-pd.com -ld-powder.com -ld0766.com -ld12366.com -ld173.com -ld246.com -ldaq2005.com -ldbj.com -ldbmcs.com -ldd.me -lddengine.com -lddgo.net -ldfdcw.com -ldgjj.com -ldgslb.com -ldhrd.com -ldhxbj.com -ldhy.click -ldj-edujy.com -ldjt-china.com -ldkftz.com -ldkj-zs.com -ldkqyy.com -ldmap.net -ldmnq.com -ldoooo.com -ldqxn.com -ldrcw.com -ldseals.com -ldshijie.com -ldshj.com -ldsink.com -ldtdn.com -ldtec.com -ldteq.com -ldwxiao.com -ldxiang.com -ldycdn.com -ldydh.com -ldygo.com -ldyz365.com -ldzcgs.com -ldzxyy.com -le-feng.com -le-wan.com -le.com -le365.cc -le4.com -le5le.com -le8.com -le855.com -le890.com -leacol.com -leadal.com -leadal.net -leadamc.com -leadbbs.com -leadclimb.org -leadcoretech.com -leadding.com -leaddo.com -leader-e.com -leader609.com -leader755.com -leaderhero.com -leaderlawyer.com -leadernano.com -leaderobot.com -leadervc.com -leadge.com -leading-chem.com -leadingpharm.com -leadintelligent.com -leadlan.com -leadleo.com -leadmanbio.com -leadmap.net -leadmedpharm.com -leadmicro.com -leadmoad.com -leado-pharma.com -leadong.com -leadrd.com -leadrive.com -leadshiptech.com -leadstong.com -leadvc.com -leadvsion.com -leadway-china.com -leadwaytk.com -leadyo.com -leadzees.com -leaferjs.com -leaforbook.com -leaftools.net -leafword.com -leagcard.com -leagpoint.com -leagsoft.com -leaguesun.com -leakeyun.com -lean.ren -leangoo.com -leanote.com -leansoftx.com -leanwind.com -leanyon.com -leap-pc.com -leapahead.vip -leapfive.com -leaping.games -leapmie.com -leapmmw.com -leapmotor.com -learn-quantum.com -learn.microsoft.com -learndiary.com -learnfuture.com -learningsj.com -learnku.com -learsun.com -leatherhr.com -leautolink.com -leavescn.com -leawin.com -leayin.com -leb-china.com -lebanban.com -lebang.com -lebang.net -lebi2.com -lebilp.com -lebinwl.com -lebocode.com -lebome.com -lebopark.com -leboweb.com -lecai.com -lecai08.com -lecake.com -lechain.com -lechange.com -lechangxia.cc -leche.com -lechebang.com -lecheng18.com -lechengdz.com -lechengyunfu.com -lechinepay.com -lechuangzhe.com -lecloud.com -lecloudapi.com -lecloudapis.com -lecoinfrancais.org -lecomposites.com -lecong56.com -leconiot.com -lecoo.com -lecreperoyaloak.com -lecu8.com -lecuntao.com -led-zulin.com -led661.com -ledanji.com -ledcax.com -ledchina-sh.com -ledctl.com -lede.com -ledguhon.com -ledhyzm.com -ledianyun.com -lediaocha.com -ledmary.com -ledo.com -ledouwan.com -ledouya.com -ledsdk.com -ledth.com -ledtoplight.net -ledu.com -ledu365.com -leduimg.com -lee-tieguo.com -leeaon.com -leeco.com -leefanmr.com -leehon.com -leelen.com -leeleo.vip -leenzee.com -leenzhu.com -leeon.me -leesdog.space -leeshen.net -leesoar.com -leesou.com -leetcode-cn.com -leetcodechina.com -leetro.com -leeuu.com -leevol.com -leevy.net -leewiart.com -lefang365.com -lefanglj.com -lefeng.com -leffercode.com -leftfm.com -leftlady.com -leftshadow.com -leftso.com -lefu8.com -lefuzuwu.com -legalsiri.com -legend-si.com -legendsec.com -legendsemi.com -legendtkl.com -legion.com.hk -legou456.com -legowechat.com -legu.cc -legu168.com -leguyu.com -leha.com -lehaitv.com -lehe.com -lehecai.com -lehibay.com -lehihi.com -leho.com -lehu.host -lehuadisplay.com -lehuipay.com -lehuiso.com -lei001.com -leiaomold.com -leibei.cc -leiboyiqi.com -leidacj.com -leidianip.com -leifengshi120.com -leigod.com -leihetg.com -leihuo.net -leijue.net -leijun.com -leike.cc -leikeji.com -leilei3dprinter.com -leileiluoluo.com -leilong158.com -leimengjixie.com -leimi.com -leimingtech.com -leimingtelab.com -leimudata.com -leiniao.com -leiniao365.com -leining-shield.com -leiouxiong.com -leiphone.com -leishen-lidar.com -leishencloud.com -leishenhuyu.com -leishenlaser.com -leishouwin.cc -leisoon.com -leisu.com -leisu123.com -leisuapi.com -leisurelypanda.com -leitaibio.com -leitaigongsi.com -leiting.com -leitingcn.com -leitingjunshi.com -leitool.com -leiue.com -leixiaofeng.net -leixinbuild.com -leixue.com -leiyunge.com -leiyunge.net -lejiachao.com -lejian.com -lejiao.tv -lejiaolexue.com -lejiaotech.com -lejiashu.com -lejj.com -leju.com -lejucaijing.com -lejunwl.com -lekan.com -lekannews.com -lekazc.com -lekevr.com -lekoukou.com -lektec.com -lekuya.com -lelaer.com -lelai.com -lele-lezhong.com -lelecdn.com -leleda.com -leledp.com -lelehuyu.com -leleju.com -leleketang.com -lelelala.net -lelepyq.com -leletv.com -leletv.net -lelinly.com -lelongpp.com -lemai.com -lemaker.com -lemall.com -lemedu.com -lemeitu.com -lemeng.center -lemengcloud.com -lemengfun.com -lemicp.com -lemiwan.com -lemiyigou.com -lemo360.com -lemobar.com -lemoes.com -lemonban.com -lemonnovel.com -lemonpiggy.com -lemonplus.asia -lemonsay.com -lemonttt.com -lemonvp.com -lemonyd.com -lemote.com -lempstack.com -lemurbrowser.com -len.ink -lenauth.com -lenbenelectric.com -lenciel.com -lendy520.com -lenfocus.com -lengcat.com -lengdou.net -lenget.com -lenglengyu.com -lengliwh.com -lenglv.com -lengshuiji.org -lengxiaohua.com -lengxiaohua.net -lengyankj.com -lengzzz.com -leniugame.com -leniy.org -lenmy.com -lenogo.com -lenosoft.net -lenovator.com -lenovo.com -lenovo.com.cdn.cloudflare.net -lenovo.net -lenovocloudos.com -lenovoconnect.com -lenovoeservice.com -lenovofile.com -lenovogame.com -lenovohci.com -lenovohuishang.com -lenovoimage.com -lenovomm.com -lenovomobile.com -lenovonetapp.com -lenovonowgo.com -lenovopoc.com -lenovoprinter.com -lenovoprinter.net -lenovots.com -lenovouat.com -lenovows.com -lenovozdl.com -lenschine.com -lensuo.com -lenwoo.com -lenzhao.com -leoao-inc.com -leoao.com -leocode.net -leogd.com -leolin86.com -leonblog.net -leoogo.com -leopardtale.com -leopump.com -leozwang.com -lepaicm.com -lepanshoping.com -lepiaoyun.com -leptv.com -lepumedical.com -leqi.us -leqian.com -leqiaobh.com -leqiaobhyy.com -leqiku.com -leqiuba.com -lequ.com -lequanip.com -lequgo.com -lequji.com -lequz.com -lequzh.com -lercar.com -lergao.com -lergle.com -lerist.dev -lers168.com -lers168.net -lersang.com -lertao.com -lerye.com -lesejie.com -leshangzs.com -leshangzx.com -leshanvc.com -leshare.work -leshi123.com -leshiguang.com -leshow.com -leshuatech.com -leshuazf.com -leshuwu.com -lesimao.net -lesjob.com -lesjulo.com -leslie-cheung.com -lesofn.com -lesonccl.com -lesoon.com -lesou.net -lespark.us -lesports.com -less-bug.com -less-more.net -lesscode.work -lesso.com -lestcg.com -letabc.com -letang666.com -letaoedu.com -letaoren.com -letbonchina.com -leter.io -letfind.com -letianbiji.com -letianshanec.com -letim-auto.com -letinet.com -leting.io -letoour.com -letotur.com -letou8.com -letoursport.com -letright.com -letrychina.com -lets-study.com -letschuhai.com -letsebuy.com -letsfilm.org -letsgaga.com -letsinno.com -letssepub.com -letsvisa.com -lettercloud.net -letuinet.com -letuixiaokefu.com -leturich.org -letushu.com -letv.com -letv8.com -letvapp.net -letvcdn.com -letvcloud.com -letvimg.com -letvlb.com -letvlive.com -letvstore.com -letwind.com -letwx.com -letyo.com -leuok.com -levc.com -levcauto.com -levect.com -level8cases.com -levelinfinite.com -levenx.com -lewaimai.com -lewang.ltd -lewangame.net -lewawa.com -lewbin.com -lewen.la -lewenba.cc -lewenlou.la -lewenn.com -lewenqu.com -lewenss.com -lewenxsw.com -lewifi.com -lex.download.prss.microsoft.com -lexar.com -lexed.org -lexiaigame.com -lexiang-app.com -lexiang-asset.com -lexiang-asset.net -lexiang-ops.com -lexiangla.com -lexiangla.net -lexiangzuji.com -lexin.com -lexin001.com -lexinchina.com -lexpq.com -lexuat.download.prss.microsoft.com -lexue-cloud.com -lexue.com -lexueying.com -lexun.com -lexun.net -lexuntimes.com -leya920.com -leyaep.com -leyan.com -leyantech.com -leyaoyao.com -leyaoyao.org -leyard.com -leybc.com -leyi007.com -leyifan.com -leying.com -leying365.com -leyingtt.com -leyishandong.com -leyixue.com -leyonb.com -leyoo.com -leyoujia.com -leyu.com -leyuanhr.com -leyue100.com -leyuglobal.com -leyun001.com -leyun365.com -leyuncn.com -leyungame.com -leyunge.com -leyuxyz.com -leyuz.com -lezai.com -lezai.org -lezhao.com -lezhi.com -lezhi99.com -lezhibo.com -lezhiot.com -lezhiyun.com -lezhuan168.com -lezhuan365.com -lezhuanwang.net -lezhudai.com -lezhufenqi.com -lezhun.com -lezi.com -lezuan.net -lezuan11.com -lezuan9.com -lezuocai.com -lf126.net -lf127.net -lfan.net -lfang.com -lfbxw.com -lfcharge.com -lfcmw.com -lfdjex.com -lfex.com -lffloor.com -lfggzz.com -lfhacks.com -lfhospital.net -lfhygl.com -lficanton.com -lfjsly.com -lfjx88.com -lfkjgh.com -lfksqzj.com -lfmxc.com -lfppt.com -lfqysm.com -lfrczp.com -lfszk.com -lftdzd.com -lfungame.com -lfwin.com -lfx20.com -lfxww.com -lfywood.com -lfyx.ink -lfyzjck.com -lfzhaopin.com -lg-lg.com -lg-pump.com -lg1024.com -lg198.com -lg5.co -lg5.com -lgbzj.com -lgcdz.com -lgctshanghai.com -lgcx.com -lgdisplayproduct.com -lgdxtech.com -lgexam.com -lgfdcw.com -lgfzgroup.com -lghd111.com -lghlncl.com -lgimg.com -lgimic.com -lglmf.com -lglmf.net -lgmi.com -lgo100.com -lgpic.com -lgpj.net -lgpm.com -lgrcbank.com -lgshouyou.com -lgtzkg.com -lguohe.com -lgvf.com -lgwy.net -lgxly.com -lgyanglao.com -lgyszl.com -lgyudiao.com -lgyzyy.com -lgzowo.com -lgzzu.com -lh-ep.com -lh-lx.com -lh.link -lh168.net -lh17.net -lh36524.com -lh75.com -lhasa.icu -lhave.com -lhbbj.com -lhbgchina.com -lhconst.com -lhcreditevaluation.com -lhcy168.com -lhdbgs.com -lhdeer.com -lhdown.com -lhdxz.com -lhenet.net -lhey.com -lhgcxx.com -lhguomy.xyz -lhgz.net -lhh.la -lhhy.net -lhihg.com -lhjdfs.com -lhjol.com -lhjws.com -lhjy.net -lhjyw.vip -lhjyy.com -lhjzlw.com -lhkaye.com -lhkgs.com -lhl.zone -lhl7.com -lhmj.com -lhmp.cc -lhp-cdn-game.online -lhp-cdn-update.online -lhpharma.com -lhratings.com -lhrbszb.com -lhs-arts.org -lhs11.com -lhs99.com -lhsdjxy.com -lhsoso.com -lhszyxx.com -lhulan.com -lhwill.com -lhwytj.com -lhxhwl.com -lhyc3888.com -lhyiliao.com -lhytgroup.com -lhzq.com -li-ca.com -li-ning.com -li-on.com -li-world.com -li-yuan.com -li.auto -li63.com -li91.com -liageren.com -lian-ou.com -lianaibiji.com -lianaixingwei.com -lianaiyx.com -lianbei66.com -lianchuang.com -lianchuanghj.com -liancsoft.com -lianda.fun -liandaomobi.com -liandaquan.com -liande.cc -lianfawy.com -lianfengqy.com -lianfengwh.com -liang520.com -liangc.com -liangchan.net -liangchanba.com -liangduapp.com -liangduiban.com -lianggao.com -lianghuadashi.com -liangjan.com -liangjiangbashu.com -liangjianghu.com -liangjiangroup.com -liangjiangwuye.com -liangjihui.com -liangjiu.shop -liangka.vip -liangkun.net -liangle.com -lianglimi.com -lianglunshijie.com -liangnuo.com -liangpinbiji.com -liangqikeji.com -liangrisheng.com -liangrunbio.com -liangshunet.com -liangtian-tech.com -lianguowang.com -liangwanjianshe.com -liangwei.cc -liangxinyao.com -liangye-xo.xyz -liangyi.com -liangyi360.com -liangyiyy.com -liangyuan.com -liangzhishu.com -liangziheikeji.com -lianhaikeji.com -lianhanghao.com -lianhaokeji.com -lianhejiaju.com -lianhengkj.com -lianhengtec.com -lianhepaimai.com -lianhuangroup.com -lianjia.com -lianjianode.xyz -lianjianxsw.com -lianjiasm.com -lianjie.in -lianjiezhe.com -lianjingdq.com -lianjixia.com -liankaa.com -liankebio.com -liankenet.com -lianku.xin -liankuaiche.com -lianli168.com -lianlian.com -lianlianlvyou.com -lianlianpay-inc.com -lianlianpay.com -lianliantao.net -lianliantaoshop.com -lianlianz.com -lianlife.com -lianliwork.com -lianluo.com -lianmeng.la -lianmeng.link -lianmenhu.com -lianmishu.com -lianni.com -lianok.com -lianouyiyuan.com -lianpingroup.com -lianpunet.com -lianqi.net -lianqigong.com -liansaipiao.com -lianshang.com -lianshijie.com -lianshun.cc -liansn.com -liansuo.com -liantianhong.com -liantongcar.com -liantu.com -liantuobank.com -liantuofu.com -lianty.com -lianwen.com -lianwifi.com -lianwo8.com -lianwwl.com -lianxianjia.com -lianxinapp.com -lianxinkj.com -lianyi.com -lianyins.com -lianyiwater.com -lianyuannongye.com -lianyungangforum.org -lianzhixiu.com -lianzhong.com -lianzhongyun.com -lianzhoupc.com -lianzhuli.com -lianzifang.com -liao1.com -liao98.com -liaobagua.com -liaocheng.cc -liaochuo.com -liaode.com.tw -liaogu.com -liaogx.com -liaoing.com -liaoji.com -liaojiu.net -liaokong.com -liaoliao.com -liaoningmoduo.com -liaoningpharm.com -liaosam.com -liaotiantu.com -liaowei.net -liaoworking.com -liaoxiwenhua.com -liaoxuefeng.com -liaoyuanchats.com -liaoyuanedu.org -liaozhai.tv -lib520.com -liba.com -liba88.com -libaclub.com -libai.com -libaidns.com -libaishuo.com -libao007.com -libaopay.com -libawall.com -liberlive-music.com -libertynlp.com -libforest.com -libguides.com -libinx.com -libiotech.com -libisky.com -liblib.art -liblib.cloud -libmk.com -libomarathon.com -libreofficechina.org -libsou.com -libssh.com -libsys.net -libtop.com -libvideo.com -lic-bcbc.com -lic-slf-dom.com -lic-slf-dom.net -licai.com -licai18.com -licaie.com -licaifan.com -licaigc.com -licaike.com -licaiker.com -licaimofang.com -licaishouyi.com -licaixu.com -licaiyaoye.com -licancan.com -licaoz.com -licat.com -licc.tech -lichangtai.com -lichangtao.com -lichangwen.net -lichee.pro -lichenglove.com -lichengwu.net -lichenjy.com -lichimedicine.com -lichiwei.com -lichong.work -lichuang.ren -licic.net -lickeji.com -lickscreen.com -licomsh.com -licqi.com -lida100.com -lidakang.com -lidamicron.com -lidar360.com -lideapower.com -lidebiotech.com -lidepower.com -lidg-fueltank.com -lidianchizu.com -lidianren.com -lidihuo.com -liding.me -lidodo.com -lidoooo.com -lidu6.com -lidw.com -lie.icu -liebao.live -liebaoh5.com -liebaoidc.com -liebaopay.com -liebiao.com -liebigwatch.com -liebo.com -liechan.com -liedaoshou.com -lieguo.com -lieguozhi.com -liehunwang.com -liehuo.net -liehuosoft.com -liejin99.com -lieju.com -lieketao.com -lielema.com -liemingwang.com -lienew.com -liepin.com -liepin8.com -liepincc.com -lierda.com -lierfang.com -liermusic.com -liesauer.net -lieshi.net -lieshuku.com -lietou-edm.com -lietou-static.com -lietou.com -lietou007.com -lietuwang.com -liewen.cc -liewen.la -liexing-ai.com -liexing.com -liexiulive.com -lieyingjt.com -lieyou.com -lieyouqi.com -lieyuncapital.com -lieyunpro.com -lieyunwang.com -liezhe.com -liezhun.com -lif8.com -lifan.com -lifebook.red -lifediary.shop -lifeeu.com -lifegc.com -lifegreenmedical.com -lifeng.in -lifengshoe.com -lifeofguangzhou.com -lifesense.com -lifetimecables.com -lifetm.com -lifetmt.com -lifetmt.net -lifetmt.org -lifeup.vip -lifevc.com -lifevccdn.com -lifeweeker.com -lifeyk.com -lifeyn.net -lifezb.com -liffmp.com -lifo-fj.com -lifotronic.com -lifox.net -lifrog.com -lifushop.com -lifves.com -lify.vip -ligehuanbao.com -ligendpower.com -ligetz.com -lighos.com -light-cos.com -light-player.com -light3moon.com -lightalk.com -lightalk.me -lightblue.net -lightbox.games -lighte-tech.com -lightgx.com -lighthg.com -lighting-china.net -lightingchina.com -lightinit.com -lightky.com -lightlygame.com -lightonus.com -lightpassport.com -lightspeed-dc.com -lightspeed-lic.com -lightspeed-og.com -lightstrade.com -lightxi.com -lightyy.com -ligonggong.com -liguanchina.com -liguangtaogroup.com -liguosong.com -lih-invest.com -lihang-expo.com -lihaoshuyuan.com -liheiat.xyz -liheng1688.com -lihengjh.com -lihetong.com -lihong.net -lihongcctv.com -lihtao.com -lihua.com -lihuadicn.com -lihuadonghua.com -lihuamuye.com -lihuashouji.com -lihuasoft.net -lihui.net -lihuia.com -lihun66.com -liigou.com -lijiabaijc.com -lijiabrasstube.com -lijiajia.com -lijiajia.net -lijiangbooks.com -lijiangcun.com -lijiangriver.com -lijiejiaju.com -lijigang.com -lijinghua.club -lijingquan.net -lijinxincai.com -lijinzhang.com -lijishi.com -lijizhong.com -lijjj.com -likamao.com -likangwei.com -like.video -like996.icu -likeaboat2023.com -likeacg.com -likebuy.com -likecha.com -likechuxing.com -likecs.com -likee.video -likeface.com -likefar.com -likefont.com -likeji.net -likejianzhan.com -likelic.com -likepoems.com -likeshare-tech.com -likeshuo.com -liketm.com -liketry.com -likewed.com -liking.site -likingfit.com -likuli.com -likuso.com -lilacbbs.com -lilaigroup.com -lilanz.com -lili.cc -liliangji.com -lilinwei.com -lilishare.com -lilisi.com -lilith.com -lilithgame.com -lilithgames.com -lilosrv.com -lilvb.com -lilygo.cc -lilysamericandiner.com -limabaoxian.com -limaoqiu.com -limebenifit.com -limeiltd.com -limian.com -limiku.com -liminglight.com -limingtech.com -liminjie714.com -liminwang.com -limit-animation.com -limless.com -linakesi.com -linancity.com -linaoyiqi.com -linban.com -linchangyu.com -linchuangsy.com -lincoc.com -lindapatent.com -linde-china.com -lindmik.com -lindybag.com -line-gate.com -linearbuyic.com -linearmotor.net -lineartracklight.com -linecg.com -lineget.site -linekong.com -linelayout.com -linestartech.com -linewell.com -linewow.com -linfan.com -linfeicloud.com -linfen365.com -linfeng.tech -linfenwater.net -ling-shi.com -lingangholding.com -lingangic.com -lingaoren.com -lingbao-e.com -lingboxauto.com -lingceu.com -lingd.com -lingdi.net -lingdianksw.com -lingdong.net -lingdongweilai.com -lingdongwuliu.com -lingdu.love -lingduan-sh.com -lingduohome.com -lingduzuji.com -lingdz.com -lingfengyun.com -lingganjia.com -linggao.vip -linggu.com -linghanggroup.com -linghit.com -linghitai.com -linghonggroup.com -linghua-logistics.com -linghuidzsw.com -lingji666.com -lingjiaocheng.com -lingjing.com -lingjiptai.com -lingjoin.com -lingjuad.com -lingjumobile.com -lingkaba.com -lingkebang.com -lingkou.com -lingkou.xyz -lingkuyun.com -lingla.com -linglingkaimen.com -linglingmo.site -linglong.dev -linglong.space -linglongart.com -linglonglife.com -linglongtech.com -lingmao.tech -lingmeijie.com -lingmeng888.com -lingmovie.com -lingnanpass.com -lingo-ace.com -lingodeer.net -lingosail.com -lingostarcdn.com -lingowhale.com -lingphone.net -lingquanb.com -lingqumall.com -lingrengame.com -lingrn.com -lingruipc.com -lingruofeng.com -lingshangkaihua.com -lingshangmeien.com -lingshenxl.com -lingshi.com -lingshimiyu.com -lingshou.com -lingshoujia.com -lingshulian.com -lingshunlab.com -lingsky.com -lingsoul.com -lingti.com -lingtiao.com -lingtingmusic.com -lingtings.com -lingtong.info -lingtool.com -lingtu.com -lingtuan.com -lingumob.com -linguoguang.com -lingw.net -lingwe.com -lingwh.com -lingwu66.com -lingxi360.com -lingxianfund.com -lingxicloud.com -lingxigames.com -lingxing.com -lingxingcai.com -lingxingkj.com -lingxiuwenlv.com -lingxmall.com -lingy.cc -lingyanghuyu.com -lingyi.org -lingyihanhua.com -lingyiitech.com -lingyiliebian.com -lingyinsi.com -lingyinsi.org -lingyiwanwu.com -lingyuan.design -lingyue-digital.com -lingyuecloud.com -lingyuedianzi.com -lingyuint.com -lingyun.com -lingyun.net -lingyun5.com -lingyuncw.com -lingyunip.com -lingyunquan.com -lingyuok.com -lingzhanwenhua.com -lingzhilab.com -lingzhitech.com -lingzhtech.com -linhaigroup.com -linhaiwangdai.com -linhao.net -linhuatz.com -linhuiba.com -lining.com -lining0806.com -linjia.me -linjieapp.com -linjin.net -linjunlong.com -link-ai.tech -link-nemo.com -link-trans.com -link27.com -link2lib.com -link2shops.com -link3.cc -linkadsapi.com -linkbook.tech -linkbroad.com -linkbux.com -linkchant.com -linkchina.hk -linkcubecloud.net -linkdesign.tech -linkdialy.com -linkeabc.com -linkease.com -linked-f.com -linked-reality.com -linkedbyx.com -linkedhope.com -linkedin-event.com -linkedkeeper.com -linkedme.cc -linkedsee.com -linker.cc -linkernetworks.com -linkeye.net -linkfinancier.com -linkflowtech.com -linkfox.com -linkfruits.com -linkfunny.com -linkgou.com -linkh5.com -linkh5.xyz -linkheer.com -linkiebuy.com -linkingcloud.com -linkingme.com -linkist.net -linknewideas.com -linkoing.com -linkolder.com -linkon.me -linkontek.com -linkpai.com -linkpro.tech -linkr.com -linkrall-trk.com -linkresearcher.com -links-china.com -linksdao.com -linksfield.net -linksgood.com -linkshop.com -linksoon.net -linkstars.com -linkstec.com -linksunet.com -linktech.hk -linktom.com -linktom.net -linktree.vip -linktt.com -linkunbin.com -linkunjc.com -linkvfx.com -linkwebll.com -linli580.com -linlikuaipao.com -linliyz.com -linlongnewmaterials.com -linlongyun.com -linlongyx.com -linmi.cc -linmujianghome.com -linni.com -linnsea.com -linnxin.com -linnyou.com -linouo.com -linovel.net -linovelib.com -linoya.com -linpx.com -linqujob.com -linqumarathon.com -linruanwangluo.com -lins-bros.com -linshang.com -linshi.cc -linshigong.com -linshimuye.com -linshiyongling.com -linsn.com -linstitute.net -lint2.com -lintai.tech -lintaicnc.com -lintcode.com -lintec-china.com -lintey.com -lintongrc.com -lintonpharm.com -lintui.com -linuo-paradigma.com -linuo.com -linuopv.com -linuoshi.com -linuottc.com -linux-code.com -linux-ren.org -linux.zone -linux178.com -linux265.com -linux5.net -linuxba.com -linuxbaike.com -linuxbaodian.com -linuxboy.net -linuxcool.com -linuxde.net -linuxdiyf.com -linuxdot.net -linuxea.com -linuxeden.com -linuxeye.com -linuxfly.org -linuxgogo.com -linuxidc.com -linuxidc.net -linuxjoy.com -linuxmi.com -linuxpanda.tech -linuxpk.com -linuxprobe.com -linuxsir.com -linuxso.com -linuxtone.org -linuxyunwei.com -linuxyw.com -linwushuang.fun -linx-info.com -linyafeng.com -linyang.com -linyekexue.net -linyi.net -linyibus.net -linyiren.com -linyizhizhiyuan.com -linyouquan.net -linyufan.com -linzhou.store -linzhuotech.com -linzhuxin.com -linzihy.com -lion1ou.tech -lionaka.com -lionit.net -lionkingsoft.com -lionmobo.com -lionmobo.net -lionsgx.com -lipian.com -lipiji.com -lipilianghang.com -lipin.com -lipin51.com -lipind.com -lipinduihuan.com -lipro.com -lipro.net -lipu.net -lipuhome.com -lipush.com -lipuxixi.com -liqinet.com -liqinyi.com -liquan.com -liqucn.com -liquidnetwork.com -liqun.org -liqun.vip -liquncommercialgroup.com -liqungroup.com -liqunshop.com -liqwei.com -lirenliye.com -liriansu.com -liriji.com -lirui.name -lis99.com -lisdn.com -lisenergy.com -lisheng.gold -lishengstone.com -lishi-test.com -lishi6.com -lishi7.com -lishibk.com -lishichunqiu.com -lishicloud.com -lishiip.com -lishiming.net -lishimingren.com -lishixiaozhi.com -lishixinzhi.com -lishizhishi.com -lishuhang.me -lishuhao.ltd -lishui.com -lishuichayuan.com -lisigroup.com -lisihouseware.com -lisizhang.com -lisp123.com -lissgx.com -listary.net -listarypro.com -listeneer.com -listeningo.com -listenpa.com -listentide.com -listentoworld.com -listenvod.com -listno1.com -listong.com -lisure.com -lisz.me -litangkj.com -litaow.com -litaparking.com -litchon.com -lite-miniprogram-1.com -lite-miniprogram-5.com -litecdncname.com -litecoin.ink -litecoin.ren -litefeel.com -litemob.net -liteng-industry.com -lithomaterial.com -lithub.cc -litian268.com -litianchina.com -liticool.club -litilala.site -litilala.xyz -lititop.group -litiww.mobi -litofu.com -litongsupply.com -litongtech.com -litosim.com -litpo.com -litree.com -litten.me -little-star.love -little-sun.com -littleboy.net -littlehero.xyz -littleqiu.net -littleroost.net -littlesheep.com -littlesix.mobi -littlesproutsdk.com -littleswan.com -lituo666.com -liu-he.com -liu-kevin.com -liu16.com -liubaocha.com -liucao.vip -liuchengguanli.com -liuchengtu.com -liuchengtu.net -liuchenkeji.com -liuchuo.net -liudanking.com -liudaoxiang.com -liudatxt.com -liudatxt.org -liudayadan.com -liudian6.com -liudon.com -liudon.org -liudu.com -liufanggroup.com -liugejava.com -liugezhou.online -liugj.com -liugm.com -liugong.com -liugongac.com -liugongam.com -liugonggroup.com -liuguofeng.com -liuhaolin.com -liuhubang.com -liujiagd.com -liujiajia.me -liujian666.com -liujiangblog.com -liujiaoyidai.com -liujijun.com -liujinkai.com -liujto.com -liujunworld.com -liujy.com -liukai.net -liukebao.com -liulan.net -liulanqi.com -liulanqi.net -liulantao.com -liulian.com -liulianga.com -liuliangcanmou.com -liuliangdada.com -liulianggo.com -liuliangguo.com -liuliangka.pro -liulianglf.com -liuliangmima.vip -liuliangzu.com -liulianqi123.com -liulin.cc -liulishuo.com -liulishuo.work -liuliushe.net -liulixuexiao.com -liulj.com -liulv.net -liumapp.com -liumeinet.com -liumuzulin.com -liumx.com -liunian.info -liunianbanxia.com -liunn.com -liupuzhuo.net -liuqh.icu -liurq.com -liushen.fun -liushidong.com -liushuishiyin.com -liusibo.com -liusteel.com -liusu-kyimm.com -liusu.me -liusuping.com -liuts.com -liuweihotel.com -liuwo.com -liuxianan.com -liuxianjt.com -liuxiaoer.com -liuxiaofan.com -liuxing.com -liuxingw.com -liuxinli.com -liuxuchao.com -liuxue.com -liuxue114.com -liuxue360.com -liuxue86.com -liuxuegang.site -liuxuehr.com -liuxuekw.com -liuxueshijie.com -liuxuesmd.com -liuxuetown.com -liuxuewind.com -liuxueyun.com -liuxuezx.com -liuxx.com -liuyang.com -liuyangfcw.com -liuyangjob.com -liuyanzhao.com -liuyifei.cc -liuyiguo.com -liuyimin4.com -liuyixiang.com -liuyua.xyz -liuyunflow.com -liuyunliumeng.com -liuyuntian.com -liuzaoqi.com -liuzhihang.com -liuzhixiang.com -liuzhiyugzs.com -liuzhosoft.com -liuzhoufushan.com -liuzhoukaichuang.com -liuzhourm.com -liuzhousteel.com -liuzhuni.com -liuziyoudu.com -liuzongyang.com -liuzy88.com -livanauto.com -live-350k.streamingfast.net -live-echotv.cdnvideo.ru -live-era.com -live-helps.com -live-voip.com -live.hnzzzzzdst.com -live.lxzc.net -live.ntdimg.com -live.qinyangtv.com -live.sccxtv.com -live.sichuanmianning.com -live.streamingfast.net -live.tvbaoji.com -live.ugratv.cdnvideo.ru -live.zhihuizq.com -live02.rfi.fr -live1.jcbctv.com -live123.cc -live2.ntdimg.com -live800.com -liveanevia.mncnow.id -liveapp.ink -livecdn.fptplay.net -livecdnh2.tvanywhere.ae -livecdnstatic.com -livechina.com -livecourse.com -livehwc4.com -liveinau.com -livejh.com -liveme.com -livemediav.com -livemook.com -livenmall.com -livesone.net -livesupport24x7.com -liveuc.net -liveupdate-cn.msi.com -liveupdate.msi.com -livevideostack.com -living.ai -livnj.com -livotre.com -liwai.com -liwanggui.com -liwanght.com -liweiauto.com -liweicar.com -liweijia.com -liweijituan.com -liweiliang.com -liwenzhou.com -liwi.cc -liwinon.com -liwojx.com -liwoxiao.com -liwucheng.com -liwucun.com -liwumaoapp.com -liwushuo.com -liwuzhi.art -lixcx.com -lixfaf.com -lixiaedu.com -lixiang.com -lixiangcaifu.com -lixianghuanbao.com -lixiangoa.com -lixiangshu.net -lixianhezi.com -lixianhua.com -lixiaocrm.com -lixiaolu.org -lixiaoskb.com -lixiaoyun.com -lixiaozhe.com -lixinapp.com -lixinger.com -lixingyong.com -lixinpharm.com -lixuan360.com -lixueba.com -lixueduan.com -lixuejiang.com -liyan365.com -liyang1.com -liyangbit.com -liyanggroup.com -liyangic.com -liyangrc.com -liyangtuopan.com -liyanmobi.com -liyaochao.com -liyegroup.com -liyi99.com -liyinewmaterial.com -liyingfei.com -liyinka.com -liyjx.net -liyu8.com -liyuan1999.com -liyuan99.com -liyuan99.vip -liyuanchun.net -liyuanheng.com -liyuanhospital.com -liyuanresort.com -liyuansz.com -liyugang.com -liyujn.com -liyunde.com -liyunkm.com -liyunshuwu.com -liyuplay.com -liyx.fun -liyx.net -lizaike.com -lizhehaozhongyi.com -lizhenauto.com -lizhenglai.com -lizhenwang.com -lizhi.com -lizhi.fm -lizhi.io -lizhi.shop -lizhi110.com -lizhifilm.com -lizhifm.com -lizhiinc.com -lizhijitang.com -lizhilive.com -lizhiqi.com -lizhiqiang.name -lizhiqp.com -lizhiweike.com -lizhongyi.com -lizhujue98.com -lizi.com -lizihang.com -lizikeji.vip -lizilaw.com -liziqiche.com -lizitongxue.com -liziwu.net -liziyuan.com -lizq.host -lj-audio.com -lj-bank.com -lj168.com -ljbao.net -ljbbj.com -ljcdn.com -ljclz.work -ljflavor.com -ljh.cool -ljhjgc.com -ljhjny.com -ljhks.com -ljhks.net -ljia.com -ljia.net -ljimg.com -ljjcyy.com -ljjlb.net -ljjq.com -ljjyjt.com -ljjyw.com -ljk.cc -ljkangyang.com -ljlcd.com -ljlj.cc -ljlmdns.com -ljlqw.com -ljmeng.site -ljmyy120.com -ljqhju.com -ljqxjjhbc.com -ljrbw.com -ljs.fun -ljsdk.com -ljsy2017.com -ljsz.xyz -ljtx.com -ljw113.com -ljwebs.com -ljwit.com -ljwlz.com -ljxqzy.com -ljxww.com -ljy365.com -ljz-talentapt.com -ljzfin.com -lk-jd.com -lk0355.com -lk361.com -lk366.com -lkalpos.com -lkcash.com -lkcgyl.com -lkchemical.com -lkcoffee.com -lke.hk -lkfan.com -lkg888.com -lkgame.com -lkgk.net -lkgshq.com -lkhaowu.com -lkjujm.com -lkkbrand.com -lkkcdn.com -lkkdesign.com -lkker.com -lkkued.com -lkme.cc -lkong.com -lkong.net -lkpc.com -lkqihang.com -lkshu.com -lksmarttech.com -lkssite.vip -lkszj.info -lktz.net -lkuaiy.com -lkyhosp.com -lkyljt.com -lkyou.com -ll-hao123.com -ll1024.com -llang.net -llaoyou.com -llcat.tech -lldlf.com -llever.com -llewan.com -llgjx.com -llgkm.com -llguangli.com -llguangli30.com -llhlkftzjt.com -llidc.com -llinkslaw.com -lljgame.com -lljsq.net -lljyx.com -llkk.cc -llku.com -lllcn.com -llllx7.com -lllomh.com -lllpv.com -llmtrend.com -llmworld.net -llongwill.com -llqsq.com -llrj.net -llrsz.com -lls.moe -llsapp.com -llscdn.com -llskjt.com -llsops.com -llsserver.com -llssite.com -llsttapp.com -llsun.com -lltoken.com -lltskb.com -llumar-cn.com -llwx.net -llx168.com -llxj119.com -llxx.cc -llxzl.com -llxzu.com -llyj.net -llyweb.com -llyy.org -llyyx.com -llzg.com -llzxedu.net -lm263.com -lm335.com -lm9999.com -lmacc.com -lmanmo.com -lmanucell.com -lmbct.com -lmbest.com -lmbhfsgfjs.com -lmdk01.com -lmdouble.com -lmengcity.com -lmjd2.app -lmjtgs.com -lmjx.net -lmjzd.com -lmkggf.com -lmkzx.com -lmlc.com -lmlq.com -lmm8.com -lmnano.com -lmnsaas.com -lmonkey.com -lmparcel.com -lmqt.com -lms.pub -lmschina.net -lmscp.com -lmsdjskfn.com -lmtutou.com -lmtw.com -lmu5.com -lmwlhh.com -lmwljz.com -lmwmm.com -lmylgs.com -lmzt.com -ln-map.com -ln-rc.com -ln525.com -lnairport.com -lnamphp.com -lnast.net -lnbaiyun.com -lnbdsc.com -lnbybc.com -lnbyy.net -lncbp.com -lncct.com -lncjxy.com -lncldapi.com -lncmcc.com -lncmxy.com -lncnw.com -lnddhxq.com -lndhdx.com -lndnw.com -lndwkj.com -lndxpt3.com -lndxptssl.com -lneab.com -lnemci.com -lnenergy.net -lnes.net -lnest.com -lnfdcxh.org -lnfssy.com -lnfzb.com -lngche.com -lngwy.org -lnhddq.com -lnhotels.com -lnhygy.com -lnicc-dl.com -lnicp.com -lninfo.com -lnjfyc.com -lnjmlnykjfzyxzrgs.com -lnjpedu.com -lnjzxy.com -lnkdjt.com -lnlawyers.net -lnlc2.net -lnlc3.net -lnldsw.com -lnlib.net -lnlon-zdh.com -lnlotto.com -lnmtc.com -lnmu3h.com -lnnoo.com -lnok.net -lnpatcm.com -lnpenger.com -lnphar.com -lnpjw.com -lnqwe.com -lnrbxmt.com -lnrcu.com -lnrsks.com -lnsenhai.com -lnsent.com -lnsgczb.com -lnsqxj.xyz -lnsrmyy.com -lnsslhyxh.com -lnsyzx.com -lnszyjt.com -lntenghui.com -lntvu.com -lntycp.com -lnvipsoft.com -lnwish.com -lnwoo.com -lnxmt.com -lnxysf.com -lnyahui.com -lnydjt.com -lnyxcj.com -lnyyzyxy.com -lnzcj.com -lnzhongka.com -lnzhqy.com -lnzikao.com -lnzsks.com -lnzy-edu.com -lnzzpf.com -lo97.com -loac.cc -loadingbay.com -loansliml.com -local-ip.online -localizecdn.com -localxcafe.com -locatran.com -locez.com -locimg.com -lockchat.app -lockfans.com -lockin.com -lockinchina.com -locklauncher.com -lockscreenimg.com -locnavi.com -locojoy.com -locoy.com -locoyposter.com -locren.com -loctek.com -locvps.com -locvps.net -lodashjs.com -loexu.com -loftcn.com -lofter.com -loftshine.com -lofu.net -log-research.com -log77.com -logacg.com -logclub.com -logi.im -logi100.com -logicdsp.com -login.cdnetworks.com -logiseasy.com -logisteed-sc.com -logistics-ea.com -logisticstech.com -logo-emblem.com -logo123.net -logo2008.net -logo888.com -logo9.net -logoaa.com -logobiaozhi.com -logodao.com -logodashi.com -logohhh.com -logoly.pro -logoqq.com -logory.com -logoshe.com -logosheji.com -logosj.com -logovps.com -logowk.com -logozhizuowang.com -logwing.com -logwirecloud.com -lohaa.com -lohalink.com -lohand.com -lohasor.com -lohjs.com -lohkahhotels.com -loho88.com -lohu.info -loioo.com -loj.ac -loji.com -loke123.com -lokenchem.com -lokyi.name -lol99.com -lolaroseglobal.com -lolbuku.com -loldan.com -loldk.com -lolgo.net -loli.by -loli.cloud -loli.ee -loli.net -loliapi.com -lolicon.team -loliloli.moe -loliloli.net -lolimoe.cc -lolitawardrobe.com -loljy.com -lolkeng.com -lollipopo.com -lolmax.com -lolmf.com -lolmz.com -lolphp.com -loltmall.com -lolxy.com -lolyculture.net -lomge.com -lomoment.com -lomon.com -lomowo.com -loncent.com -loncin.com -loncinindustries.com -londerful.com -londonermacaoresort.com -lonelystar.org -lonery.com -lonfoor.com -long-horn.com -long-photo.com -long-term.net -long.ge -long5.com -long7.com -longanlaw.com -longau.com -longbenren.com -longbridgeapp.com -longbridgehk.com -longcai.com -longcai027.com -longchangjixiekeji.com -longcheer.com -longchunbajiao.com -longclouds.com -longcore.com -longdameishi.com -longdaoyun.com -longde.com -longdear.com -longdear.net -longdezhu.com -longdian.com -longdiandianli.com -longduwang.com -longease.net -longfanshipping.com -longfengmarathon.com -longfor.com -longfu360.com -longguanjia.so -longhan.cc -longhoo.net -longhorn-auto.com -longhu.net -longhua.net -longhuafilm.com -longhufengyun.com -longhuiren.com -longhuquan.com -longhuvip.com -longi.com -longigroup.com -longjcun.com -longjiazuo.com -longjisteel.com -longjisz.com -longjitour.com -longjoy.net -longjunjiayuan.com -longk.com -longkui.site -longkunjituan.com -longkuntech.com -longlijituan.com -longlingas.com -longliqicom.com -longluo.me -longlycn.com -longmaosoft.com -longmarchspace.com -longmaywuliu.com -longmeicn.com -longmen-pharma.com -longmen.net -longmenedutech.com -longmeng.com -longmenshuju.com -longming.com -longmingdns.com -longnanke.com -longo.ltd -longoo.com -longood.com -longpokeji.com -longquan-baojian.com -longquecdn.com -longre.com -longrich.com -longsailing.net -longsan.com -longshanchemical.com -longshangrc.com -longsheng.com -longsheng988.com -longshine.com -longsok.com -longsto.com -longstonechina.com -longsunhd.com -longsys.com -longtaifoods.com -longtask.com -longtec.com -longtugame.com -longtuojixie.com -longu.com -longwangshipin.com -longwaycabinet.com -longwenedu.com -longwiki.org -longwin.org -longwintoys.com -longwisedata.com -longwisepr.com -longwx.com -longxi-tech.net -longxia.com -longxianwen.net -longxinglong.com -longxingweilai.com -longxinli.com -longxintec.com -longxuan.ren -longyanbus.com -longyar.com -longygo.com -longyi-uav.com -longyin.net -longyinok.com -longyistudio.com -longyiyy.com -longyu.cc -longyucq.com -longyuedu.com -longyuegs.com -longyusheng.org -longyutec.com -longzhou.cc -longzhu.com -longzhu.tv -longzhudagroup.com -longzhulive.com -lonhcloud.net -lonleaf.com -lonlife.org -lonmedcn.com -lonsoon.com -lontengsteel.com -lontiumsemi.com -lontrue.com -lonyon.com -loocall.com -loocode.com -loodd.com -looeen.com -looeo.com -looeoo.com -loogoo.com -loohuo.com -looioo.com -look8.com -lookae.com -lookao.com -lookbaby.com -lookbravo.com -lookchem.com -lookgame.com -looking-car.com -lookr.cc -looktm.com -looktmt.com -lookvin.com -loome.net -loonapp.com -loong3d.com -loongdriving.com -loongnix.com -loongnix.org -loongon.com -loongshine.com -loongsin.com -loongson.org -loongsonclub.com -loongtravel.com -loongxy.com -loonlog.com -looooker.com -loooooong.com -looquan.com -loorin.com -loovee.com -looyuoms.com -looyush.com -lopetech.net -lopmall.com -lopss.com -lopwon.com -lordabbettchina.com -lorefree.com -lorhf.com -lorienk.com -loring.xyz -lorzeal-zj.com -losergogogo.com -lossyou.com -lostdeer.xyz -lostphp.com -lostsakura.com -lot-ml.com -lotevision.com -lotianshangx.com -lotlab.org -lotour.com -lotour.net -lotpc.com -lotpen.com -lotsmv.com -lottery-sports.com -lotusair.net -lotusdata.com -lotusfr.com -lotut.com -loubobooo.com -louding.com -loudseas.com -louge.ltd -louislivi.com -loukky.com -loulanwang.com -loupan.com -louruo.com -loushi.com -lousj.com -lousw.com -louyue.com -lovcuty.com -love-freedom.com -love-math-edu.com -love.tv -love21cn.com -love3721.com -love5201314.net -love5209420.com -love85g.com -loveabc.net -lovean.com -loveapp.com -lovebizhi.com -lovedword.com -loveforvenus.com -lovefree.cc -lovehaimi.com -lovehhy.net -lovehifi.com -loveifgames.com -loveinhere.com -loveinhtw.com -lovejavascript.com -lovejia.win -lovelacelee.com -lovelezu.com -lovelian.com -loveliao.com -lovellacountry.com -lovelyping.com -lovelytooth.com -lovemojito.com -lovengame.com -loveniwed.com -loveota.com -loveota.net -lovepd.com -loverdoor.com -lovesec.com -loveshang.com -lovesoo.org -lovestu.com -lovetan.net -loveteemo.com -loveu.life -loveuav.com -lovev.com -lovewith.me -lovgiin.com -lovingedmond.com -lovol.com -lovology.com -loxpo.com -loxue.com -loyalvalleycapital.com -loyar.com -loyi.net -loyo.cc -loystnetwork.com -lp.fyi -lp023.com -lp025.com -lp91.com -lpaec.com -lpcheng.com -lpcues.com -lpd8888.com -lpetl.com -lpgjkd.com -lph119.com -lpllol.com -lpou.online -lppz.com -lppzimg.com -lpq1688.com -lprcx.com -lprogram.site -lpsckf.com -lpsign88.com -lpspt.com -lpswz.com -lpszstv.com -lptiyu.com -lpxinjuhui.com -lpxinke.com -lpxt.com -lpzine.com -lq168.com -lq5u.com -lqaafgq.com -lqabr.com -lqalm.com -lqbby.com -lqbj.com -lqbj66.com -lqfeather.com -lqhualang.com -lqjob88.com -lqjt.com -lqjyw.net -lqlst.com -lqpos.vip -lqqm.com -lqrcb.com -lqsbcl.net -lqschool.net -lqsilicon.com -lqtzjy.com -lqwang.com -lqxcl.com -lqxshop.com -lqxyljt.com -lqyaopin.com -lqyfsx.com -lqyqjt.com -lqzh.me -lqzp.com -lqzwdj.com -lqzwsqy.com -lr-amm.com -lr-link.com -lr8888.com -lrc99.com -lrcb.net -lrceu.com -lrcku.com -lrdcq.com -lrhold.net -lricn.com -lrist.com -lrkdzx.com -lrkj.net -lrlz.com -lrmation.com -lrnya.com -lrs001.com -lrscloud2.com -lrscloud3.com -lrt-tech.com -lrts.me -lrvin.com -ls-doll.com -ls-gb.com -ls-hospital.com -ls.link -ls0358.com -ls0513.com -ls102.com -ls1935.com -ls520.net -ls605.com -ls666.com -lsbankchina.com -lsbchina.com -lsbin.com -lsbj365.com -lsbtly.com -lsccb.com -lscstz.com -lscsw168.com -lsdfood.com -lsdjwl.com -lsdzk.com -lserp.com -lsfcj.com -lsfvideo.com -lsfwpt.com -lsfyw.net -lsgenius.com -lsgqys.com -lsgrandtheatre.com -lsgw.com -lsgwebmall.com -lsgzn.com -lsh-cat.com -lshdw.cc -lshfreda.com -lshitv.com -lshou.com -lshzj.com -lsij3km.com -lsit.net -lsjgcx.com -lsjiancai.com -lsjkj.com -lsjlp8.com -lsjnwxly.com -lsjo.com -lsjrcdn.com -lsjtjs.com -lsjxck.com -lsjxww.com -lskejisoft.com -lskem.com -lskj1993.com -lskjkf.com -lskong.com -lsldjyw.com -lslfs.com -lslgzn.com -lslihai.com -lsmaps.com -lsmtjy.com -lsmzt.cc -lsnm.com -lsoos.com -lspjy.com -lsplayer.com -lsqcjjt.com -lsqedu.com -lsqmx.com -lsqpay.com -lsqqy.com -lsqv.com -lsqx.com -lsqy398.com -lsrbs.net -lsrfzy.com -lsrmyy.com -lssdexternal.com -lssggzy.com -lssjt.com -lsswjt.com -lsszgh.com -lst1000.com -lstazl.com -lstest.com -lstt-app.com -lsttapp.com -lsttappmoney.com -lsttapppro.com -lsttappspace.com -lsttappweb.com -lsttappworks.com -lsttmoney.com -lsttnews.com -lsttonline.com -lsttpro.com -lsttrich.com -lsttweb.com -lsttworks.com -lstx.vip -lsun.net -lsuoled.com -lsup.net -lswfw.com -lswgy.com -lswld.com -lswqw.com -lsxnm.com -lsxrmtzx.com -lsxuantong.com -lsxxkj.net -lsyart.com -lsyhh.com -lsys2002.com -lszi.net -lszj.com -lszjy.com -lszjyj.com -lsznk.com -lsznkyy.com -lszp.cc -lszyy.net -lszzg.com -lt-edu.net -lt-info.net -lt-shanghai.com -lt-tree.com -lt-uv.com -lt3c.com -lt7293333.com -ltaaa.com -ltaaa.net -ltao.com -ltd.com -ltdcdn.com -ltdspot.com -ltesting.net -ltfwzs.com -ltggc.com -ltggzy.com -ltgtm.com -lth.xyz -lthqdl.com -ltidc.com -ltimg.net -ltjczx.com -ltjianhe.com -ltkgjt.com -ltkqjt.com -ltl5210.com -ltld.net -ltly.so -ltnic.com -ltoit.com -ltp-cloud.com -ltp.ai -ltplighting.com -ltpower.net -ltsbbs.com -ltsc.vip -ltsf.com -ltsj2005.com -ltski.com -ltswxy.com -lttconn.com -lttmgc.com -lttvip.com -ltwkw.com -ltwy.com -ltxbbs.com -ltxjob.com -ltxsw.co -ltxxgcxx.com -ltxys.com -lty.fun -ltyears.com -ltzsjt.com -ltzxw.com -ltzz666.com -lu.com -lu0.com -lu17996.com -lu35.com -lua.ren -lua99.com -luan.ma -luan163.com -luaninfo.com -luanren.com -luanup.com -luanwater.com -luanxian114.com -luanzhougucheng.com -luastudio.net -luatos.com -luba360.com -luban-furniture.com -lubandata.com -lubanjianye.com -lubanlebiao.com -lubanner.com -lubanpm.com -lubanshop.com -lubanso.com -lubansoft.com -lubanu.com -lubaocar.com -lubeichem.com -lubiao.com -lubotv.com -luboyun.com -luchengas.com -luchentech.com -luchenwater.com -luchuang.com -luciaz.me -lucifer.ren -lucifr.com -luck-number.com -luckao.com -luckeeinc.com -luckforcalendar.com -luckincalendar.com -luckincdn.com -luckincoffee.co -luckincoffee.com -luckincoffeecdn.com -lucklnk.com -luckmail.net -luckup.cc -lucky286.com -lucky8k.com -luckyair.net -luckychipsmaster.com -luckycoffee.com -luckyop.com -luckysf.net -luckyxp.net -lucode.net -luctonchongqing.com -luctoncq.com -luctonshanghai.com -ludaocn.com -ludaopei-bjyz.com -ludashi.com -ludashicdn.com -ludashisafe.com -ludayq.com -ludedc.com -ludengtyn.com -ludeqi.com -ludiban.com -ludongyy.com -ludosuperstar.com -ludou.org -ludown.com -ludoworld.net -ludu319.com -lueasygi.com -luebin.com -luedian.com -luenmei.com -lueqiu.com -luexpo.com -lueyue.com -luezhi.com -lufahouse.com -lufangjia.com -lufaxcdn.com -lufengwuliu.net -lufengzhe.com -lufff.com -luffy.cc -luffycity.com -lufunds.com -lugangsoft.com -lugick.com -lugong.net -lugouqiaojiu.com -luguisc.com -luhai.net -luhaioil.com -luhao198.com -luhaoche.com -luhe.net -luhehospital.com -luhu.co -luhua.cc -luhuadong.com -luhuiwl.com -lujiaming.com -lujiandairy.com -lujianxin.com -lujiazuiforum.org -lujingtao.com -lujiya.com -lujun9972.win -lukachen.com -lukafei.com -lukechina.com -lukiwod.org -lukiya.com -lukou.com -lukuanart.com -lul8.com -lula.fun -lulala.com -lulaoshi.info -luliang.org -lulinux.com -lulisteel.com -lulubei.com -lulufind.com -luluhong.com -luluju.com -lum114.com -lumai.net -lumanman1688.com -lumen-chip.com -lumiai.com -lumin.tech -lumingtec.com -lumiunited.com -lumosfun.com -lunalotus.online -lunannews.com -lunar2013.com -lundao.pub -luneng.com -lungai.com -lunhuaxiei.com -lunkuokeji.com -lunlunapp.com -lunwenf.com -lunwengo.net -lunwenlib.com -lunwenstudy.com -lunwentong.com -lunwenxiazai.com -lunzima.net -luobo020.com -luobo360.com -luobotou.org -luobowin8.com -luoboxia.com -luochen.com -luochenyl.com -luochenzhimu.com -luodian.com -luodw.cc -luoergai.com -luofan.net -luofk.xyz -luoganpump.com -luogu.org -luohanacademy.com -luohanyu.cc -luohuedu.net -luojiaci.net -luojiadeyi.com -luojiji.com -luojilab.com -luojiweiye.com -luokuang.com -luolai.com -luolai.tech -luolaoguai.com -luolatu.com -luoli.net -luoluoluoluo.xyz -luomanxincai.com -luomanyueqi.com -luomapan.com -luomor.com -luoniushan.com -luoo.net -luoohu.com -luooqi.com -luopan.com -luoqiu.us -luoqiuzw.com -luori.net -luoshendao.com -luoshu.com -luoshuanchangjia.com -luosi.com -luosifen888.com -luosika.com -luosimao.com -luosoft.com -luotiannews.com -luotianyi.vc -luotuo101.com -luotuobang.net -luotuoshop.net -luowandianzi.com -luowave.com -luoxiang.com -luoxiangcheliang.com -luoxiaozi.com -luoxinyaoye.com -luoxudong.com -luoxue.com -luoyangdx.com -luoyangkeji.com -luoyangmalasong.com -luoyechenfei.com -luoying66.com -luoyingsh.com -luoyuanhang.com -luozhiyun.com -luozhongxu.com -luozongle.com -lup2p.com -lupaworld.com -luping.com -luqidong.com -lure123.com -lurefans.com -lurelogs.com -lurenshuwx.com -lurun68.com -lusen.com -luseng.cc -lush-mount.com -lushancn.com -lushangroups.com -lushaojun.com -lushifu.net -lushu.com -lusongsong.com -luspet.com -lussac.net -luster3ds.com -lustervision.com -lustre-pharma.com -lusun.com -lusure-pharma.com -luszy.com -lutao.com -luteng888.com -lutongda.com -lutonggroup.com -lutongnet.com -luv66.com -luwei.me -luweiwater.com -luxe.cc -luxe.co -luxemon.com -luxenixa.com -luxiangba.com -luxiangdong.com -luxiangwu.net -luxiaoche.com -luxichemical.com -luxiwang.com -luxshare-ict.com -luxtarget.com -luxuanart.com -luxuqing.com -luxury-ceramics.com -luxury2008.com -luxurybrandmall.com -luxurychina.org -luxurymany.com -luxuryshopwatch.com -luxvisions-inno.com -luyanghui.com -luyanhui.com -luyaodz.com -luye-pharm.com -luye.com -luyecanyin.com -luyihr.com -luyijiaoyu.com -luyinla.com -luyinzhushou.com -luyitong.com -luyor.net -luyouqi.com -luyouwang.com -luyouwang.net -luyouxia.com -luyusheji.com -luyusoft.com -luz-image.com -luzewangluo.com -luzexi.com -luzhonggonglu.com -luzhou.net -luzhoufood.com -luzhouok.com -lv74.com -lv96.com -lvanol.com -lvbad.com -lvban365.com -lvbang.tech -lvbangdanbao.com -lvbeijingtour.com -lvbenma.com -lvbitte.com -lvbogas.com -lvcai.biz -lvcchong.com -lvchanghuanbao.com -lvchayun.com -lvchehui.com -lvcheng.com -lvchengba.com -lvchicar.com -lvd.cc -lvdawei.com -lvdhb.com -lvdingjia.com -lvdishandong.com -lvdongip.com -lvdoutang.com -lvdxs.com -lve-china.com -lvfang.cc -lvfangwang.net -lvfapiao.com -lvgangss.com -lvgou.com -lvgset.com -lvguo.net -lvjhx.com -lvjiaoya121.com -lvjieplus.com -lvjinsuo.com -lvjitangbao.com -lvjiwang.com -lvjuelaw.com -lvjuf.com -lvjunzx.com -lvkcn.com -lvke.wiki -lvkhouse.com -lvkun.site -lvlian5.com -lvluowang.com -lvlvlvyou.com -lvmae.com -lvmall.com.tw -lvmama.com -lvmenglvye.com -lvmifo.com -lvmotou.com -lvmushan.com -lvneng.com -lvnengliang.com -lvpai114.com -lvpin100.com -lvpu-chem.com -lvqingqichangjia.com -lvrdn.com -lvren.com -lvruanhome.com -lvsan.com -lvsanxia.com -lvse.com -lvsenbao.com -lvsetxt.com -lvsexitong.com -lvshidaxia.com -lvshiguan.com -lvshiminglu.com -lvshou.com -lvshou.net -lvshunmuseum.org -lvsiport.com -lvsongguo.com -lvtds.com -lvtingzs.com -lvtu100.com -lvtudiandian.com -lvtuwa.com -lvwan.com -lvwang.com -lvwenhan.com -lvwmb.com -lvxiaoer.net -lvxing.net -lvxunlaw.com -lvyahoo.com.tw -lvye.com -lvye.org -lvyestudy.com -lvyetong.com -lvyidoor.com -lvyinba.com -lvyinbar.com -lvyou168.net -lvyou521.com -lvyoubei.com -lvyouf.com -lvyoukan.com -lvyounong.com -lvyouw.net -lvysz.com -lvyuanjj.com -lvyuanpam.com -lvyuetravel.com -lvzeep.com -lvzheng.com -lvzhuwang.com -lw0591.com -lw0634.net -lw5188.com -lw54.com -lwccc.net -lwcj.com -lwd3699.com -lwdjc.com -lwebapp.com -lwfengji.net -lwfmzh.com -lwgsw.com -lwguitar.com -lwhouse.com -lwinst.com -lwjhql.com -lwjl.com -lwjt.net -lwjy.net -lwlm.com -lwlocks.com -lwlt.net -lwlzy.com -lwnews.net -lwons.com -lwork.com -lwrcb.com -lwshanghai.org -lwshuku.info -lwsy.org -lwtylqx.com -lwurl.to -lwwandong.com -lwxgds.com -lwxs.com -lwxstxt.com -lwzls.com -lx.cok.elexapp.com -lx.pub -lx.run -lx138.com -lx3.cok.elexapp.com -lx598.com -lxapk.com -lxbbt.com -lxbio.net -lxbtrip.com -lxccl.com -lxcdns.com -lxcvc.com -lxdas.com -lxdfs.com -lxdms.com -lxdns.com -lxdns.info -lxdns.net -lxdns.org -lxdp.net -lxdus.com -lxdvs.com -lxdvs.info -lxdvs.org -lxdvsss.com -lxdws.com -lxf.me -lxg2016.com -lxgcf.com -lxhg.com -lxhkair.com -lxhro.com -lxhuwai.com -lxhuwai.net -lxhz-avionics.com -lxi.me -lxjapp.com -lxjcjg.com -lxjiasu.com -lxkj.info -lxkj.site -lxlinux.net -lxns.net -lxny.vip -lxrcsc.com -lxsales.com -lxsec.com -lxsk.com -lxtianhu.com -lxtuig77.com -lxtuyoo.com -lxtuyoogame.com -lxtuyou.com -lxway.com -lxway.net -lxwlcn.com -lxxarq.com -lxxdyzx.com -lxxm.com -lxyai.com -lxybaike.com -lxydoor.com -lxyedu.com -lxyes.com -lxyjxsb.com -lxykjsz.com -lxyl539.com -lxyl954.com -lxyllawfirm.com -lxyswl.com -lxzjjt.com -lxzrmyy.com -lxzwedu.com -ly-eps.com -ly-jz.com -ly-qiche.com -ly-sky.com -ly.com -ly1by1.com -ly200-cdn.com -ly200.com -ly2y.com -ly321.com -ly333.com -ly39zx.com -ly522.com -ly6s.com -ly93.cc -lyagyd.com -lyancafe.com -lyangchuanbo.com -lyauto.com -lybdfqh.com -lybol.com -lybtmy.com -lybus.com -lybybz.com -lycdw.com -lycheer.net -lyckw.com -lycs-arc.com -lycua.com -lyd-china.com -lyd6688.com -lydaas.com -lydaas.net -lydass.net -lydezx.net -lydfyy.com -lydhb888.com -lydpjx.com -lydsy.com -lyduanzao.com -lydyyy.com -lyecs.com -lyenet.org -lyf.com -lyfangc.com -lyfc.com -lyfc001.com -lyfff.com -lyfsgy.com -lyfz.net -lyg.live -lyg001.com -lyg01.net -lyg1.com -lyg12371.com -lyg321.com -lyg800.com -lygcec.com -lygchkq.com -lygcjjt.com -lygcsyy.com -lygdfrcb.com -lygend.com -lygent.com -lygfdc.com -lygfish.com -lygfybj.com -lyggm.com -lyggmyk.com -lyghi.com -lyghs.net -lyghtyy.com -lygjdf.com -lygjkw.com -lygjkwljt.com -lygjtjt.com -lygjtkgjt.com -lygktj.com -lygl.net -lygmedia.com -lygnews.com -lygou.cc -lygrc.net -lygsgt.com -lygshjd.com -lygshlxh.com -lygxwmarathon.com -lygxwxqrmyy.com -lygyyjt.com -lygyyw.com -lyh8888.com -lyhb88.com -lyhendry.com -lyhero.com -lyhkh.com -lyhomestayinn.com -lyhuadu.com -lyhx.net -lyia.org -lyihub.com -lyilife.com -lyjiuzhou.com -lyjksw.com -lyjob.net -lyjunshi.com -lyjwatch.com -lyjy.net -lyjyfw.net -lyjyjt.com -lyjys.com -lylangchao.com -lyldhg.com -lylend.com -lylhkq.com -lylme.com -lylxjxc.com -lymarathon.com -lymmasu.xyz -lymy1684.com -lynkco-test.com -lynkco.com -lynlzqy.com -lynne.ink -lyobs.com -lyou123.com -lyouoa.com -lypb.com -lypd.com -lypdl.com -lypower.com -lyps.net -lypyxx.com -lyqckyzz.com -lyqgm.com -lyqlm.com -lyquanshunmall.com -lyrc.cc -lyrcw.com -lyreqiqiu.com -lyric-robot.com -lyrics.run -lysafety.com -lyscjc.com -lyshangdu.com -lyshark.com -lyshenglu.com -lyshgs.com -lysk.net -lysksw.com -lyskx.net -lyslsw.com -lysq.com -lysqzs.com -lysswjt.com -lysteel.com -lyswjt.com -lysxtv.com -lysy360.com -lysyzx.com -lyszls.com -lyszxyy.com -lythw.com -lytoufang.com -lytpw.com -lytq.com -lytuanxue.com -lyuncloud.com -lyunle.com -lyunweb.com -lyunx.com -lyvnee.com -lywenlv.com -lywf.me -lywhxy.com -lywtpx.com -lywww.com -lywxww.com -lyxinhua.com -lyxltv.com -lyxsjmm.com -lyxybzd.com -lyxyxx.com -lyy99.com -lyyapp.com -lyyfny.com -lyyg.com -lyyzedu.com -lyz810.com -lyzaix.com -lyzb.com -lyzb33.app -lyzfgjj.com -lyzggs.com -lyzhanlang.com -lyzlzz.com -lyzp100.com -lyzyxy.com -lz-qs.com -lz-redeem.com -lz-risun.com -lz-veoliawater.com -lz12328.com -lz310.com -lz520.net -lzabcd.com -lzahzn.com -lzailin.com -lzane.com -lzaotw.com -lzarays.com -lzb.im -lzbank.com -lzbaosteel.com -lzbcjt.com -lzbhmy.com -lzc369.com -lzcasting.com -lzcbnews.com -lzccb.com -lzcf.net -lzcgty.com -lzchcnc.com -lzchenhui.com -lzchjs.com -lzcits.com -lzcrjs.com -lzctbyq.com -lzcyjt.com -lzdchotel.com -lzdcic.com -lzdd.com -lzdfxj.com -lzdjjd.com -lzdql.com -lzdsmy.com -lzdsqcysgs.com -lzdsyy.com -lzdxb888.com -lzdxdyyy.com -lzdymy.com -lzdyyy.com -lzepoch.com -lzetyy.com -lzeweb.com -lzfcjys.com -lzfdjt.com -lzfjq.com -lzfqty.com -lzfssp2007.com -lzftah.com -lzfyhgm.com -lzfzct.com -lzgas.com -lzgbdst.com -lzgd.net -lzghmy.com -lzgjcxkj.com -lzgjschool.com -lzgkyq.com -lzgm.com -lzgps.com -lzgryy.com -lzhanghai.com -lzhaoteng.com -lzhdtk.com -lzhean.com -lzhf.com -lzhhuinong.com -lzhjuszs.com -lzhl.online -lzhmmr.com -lzhongdian.com -lzhpo.com -lzhrobot.com -lzhszhyy.com -lzhtwl.com -lzhuali.com -lzhuinong.com -lzhygame.com -lzhyjd.com -lzihospital.com -lziig.com -lzimall.com -lzimc.com -lzjchina.com -lzjcm.com -lzjd.com -lzjiajuw.com -lzjianlong.com -lzjiechuang.com -lzjingda.com -lzjldj.com -lzjoy.com -lzjuhu.com -lzjyy.com -lzkajc.com -lzkczy.com -lzkjedu.com -lzklkqyy.com -lzknpco.com -lzkojj.com -lzky.com -lzl98.com -lzlatc.com -lzlcba.com -lzlgyy.com -lzlhpq.com -lzlj.com -lzljc.com -lzljmall.com -lzlmyyl.com -lzlqc.com -lzlrxx.com -lzlsl.com -lzlsy.com -lzltong.com -lzltool.com -lzlxylsf.com -lzlygs.com -lzmachine.net -lzmaoliu.com -lzmbhj.com -lzmckq.com -lzmei.com -lzmljdzx.com -lzmoyin.com -lzmun.com -lzmy123.com -lznbjz.com -lznetease.com -lznrlmxh.com -lzoam.com -lzolm.com -lzorient.com -lzpfei.com -lzpmia.com -lzppt.com -lzprocess.com -lzqjjx.com -lzqjsm.com -lzqqpcts.com -lzqxjx.com -lzranqi.com -lzrfc.com -lzrfhg.com -lzrimd.com -lzrkjx.com -lzrmzx.com -lzro.net -lzrq.com -lzry.com -lzsajzl.com -lzsansong.com -lzsb.org -lzsey.com -lzseygs.com -lzseyy.com -lzsfdq.com -lzsfy.com -lzsgmf.com -lzsjhjx.com -lzskqyy.com -lzskx.com -lzslgcj.com -lzslong.com -lzsmedia.com -lzsmxzy.com -lzspf.com -lzsq.net -lzsrsj.com -lzsunspot.com -lzswmsj.com -lztb.com -lztdzy.com -lzteli.com -lztlcyxx.com -lztvnet.com -lztx123.com -lztxw.com -lztzgroup.com -lzweidaoyou.com -lzwg.com -lzwi.fun -lzwls.com -lzwnjd.com -lzwopu.com -lzwsgs.com -lzwx.com -lzxbook.com -lzxder.xyz -lzxfmc.com -lzxinjiu.com -lzxinwenwang.com -lzxishaj.com -lzxjet.com -lzxlgg.com -lzxnqt.com -lzxqlgwl.com -lzxqm.com -lzxqsmwl.com -lzxqswjt.com -lzxrmtzx.com -lzxrmyy.com -lzxy.com -lzyd.com -lzydby.com -lzyec.com -lzyfoods.net -lzygpm.com -lzyhcy.com -lzyhdyf.com -lzyhjg.com -lzyisheng.com -lzyizhu.com -lzylkf.com -lzylqc.com -lzyoushang.com -lzyrwz.com -lzytbl.com -lzyts.com -lzyuantong.com -lzyun.vip -lzyxfs.com -lzyxsoft.net -lzyyy.com -lzyz.fun -lzyz.org -lzyzbz.com -lzyzx.net -lzyzxzyy.com -lzzcloud.net -lzzf.com -lzzg365.com -lzzgljj.com -lzzhdq.com -lzzhhq.com -lzzhongke.com -lzzkzs.com -lzzl.net -lzzlsoft.com -lzznbyq.com -lzzrgas.com -lzzy.net -lzzyy.com -m-edu.com -m-finder.com -m-hero.com -m-rainbow.com -m-team.cc -m.567it.com -m.travelzoo.com -m1.run -m123.com -m1315.com -m176.net -m186.net -m188.com -m1905.com -m1938.com -m1ok.com -m1page.com -m1world.com -m1xia.com -m2ez.com -m2mlib.com -m2mzy.com -m2time.net -m3-cloud.com -m3guo.com -m3kaiye.com -m3mk7nyo17.com -m3u8.channel.luzhoubs.com -m3u8.channel.yatv.tv -m3u8.file.leshantv.net -m3u8.lschannel.yatv.tv -m3u8.mschannel.yatv.tv -m3u8.smchannel.yatv.tv -m3u8.ycchannel.yatv.tv -m3u8.yjchannel.yatv.tv -m448.com -m4vmsozi62ifz.com -m5bn.com -m5m6x0vh.com -m5stack.com -m6.run -m6tza3ip7x8zr1.com -m7686d7aw5.com -m7hwocyo67.com -m8.com -m818.com -m9.run -m937.com -m999.com -m9c7ayme59tp.com -ma-china.com -ma.run -ma3office.com -ma3you.com -ma5000.com -maa.plus -maanhui.com -maasdk.com -maavigi.xyz -mabangerp.com -mabaozhuyun.com -mabibook.com -mabiji.com -mabotech.com -mac169.com -mac189.com -mac69.com -mac89.com -macabc.com -macaobusinessnews.com -macaotourism.gov.mo -macapp8.com -macappbox.com -macat.vip -macaucentral.com -macauchenguangji.com -macaumonthly.net -macauo2o.com -macaupass.com -maccms.site -maccmsbox.com -maccura.com -macdaxue.com -macgene.com -macgood.com -machaojin.com -machenike.com -machine-information.com -machine-jh.com -machine-visions.com -machine35.com -machinery4stone.com -machloop.cc -machloop.com -machloop.net -machmall.com -machunjie.com -macjb.com -mackentan.com -mackext.com -macmao.com -macmicst.com -macocn.com -macoshome.com -macpeers.com -macrolake.com -macroprocess.com -macrosan.com -macrosilicon.com -macrounion.com -macrowing.com -macrozheng.com -macrr.com -macs.vip -macsc.com -macsem.com -macshuo.com -macsky.net -macsz.com -macv.com -macw.com -macxf.com -macxin.com -macxz.com -macz.com -maczd.com -maczhi.com -maczj.com -maczl.com -madaicaifu.com -madailicai.com -madajiefood.com -madaomall.com -madboxi.com -madefuns.com -madeinchinastone.com -madewei.com -madiancan.com -madio.net -madisonboom.com -madissonline.com -madmalls.com -madouvip.com -madouym.com -madsam.work -madsrevolution.net -maemo.cc -maerdancdn.com -mafa.tech -mafadns.com -mafengs.com -mafengwo.com -mafengwo.net -mafengwoo.com -maff.com -mag10000.com -magadanryba.com -magaoedu.com -magcloud.net -magecorn.com -magedu.com -magentochina.org -magewell.com -magfx-jbkk.com -magi.com -magic-school.com -magich5page.com -magicleaders.com -magicneko.com -magicnetmall.com -magics-ad.com -magics.plus -magictavern.com -magicw3.com -magicwatchface.com -magicwinmail.com -magireco.moe -magma.ink -magnotel.com -magook.com -magpiepharma.com -magtechjournal.com -maguang.net -magvision.com -mahailushu.com -mahjongai.com -mahjongai.net -mahjongcup.com -mahjongcup.net -mahoupao.com -mahua.com -mahuatalk.com -mai.com -mai.tn -maianhao.com -maibaapp.com -maibaihuo.com -maibangbang.net -maibaokeji.com -maibuymai.com -maichawang.com -maiche.com -maiche168.com -maicheme.com -maichuang.net -maicro.com -maicuole.com -maidang.cool -maidangao.com -maidelong.com -maidengju.net -maideyi.com -maidiancy.com -maidige.com -maiditu.com -maidong100.com -maidongxi.com -maidou.com -maidouke.com -maidrom.net -maiduo.com -maie.name -maifjb.com -maigoo.com -maihaoche.com -maihaojiu.com -maihaome.com -maihaowan.com -maihaoyou.com -maihengqi.com -maihuominiapps.com -maihuwai.com -maijia.com -maijiakan.com -maijiaw.com -maijiazhichi.com -maijichuang.net -maijiemedia.com -maikami.vip -maikongjian.com -maikr.com -mail163.com -mail4399.com -maila88.com -mailbusinfo.com -maileds.com -mailehudong.com -mailejifen.com -mailetian.com -mailianou.com -mailiku.com -mailixing.com -mailizc.com -mailpanda.com -mailshanguo.com -mailyun.net -maimaibao.com -maimaiche.com -maimaidx.cc -maimaigongkong.com -maimaimaiw.com -maimemo.com -maimemostatus.com -maimiaotech.com -mainaer.com -maine1688.com -mainlandip.com -mainlandmed.com -mainone.com -mainshe.com -maintao.com -mainwww.com -mainyou.com -maipu.com -maiqun.vip -maiqunwang.com -mairoot.com -mairuancn.com -maisanqi.com -maiscrm.com -maiseed.com -maishebei.com -maishitv.com -maishou88.com -maishoumm.com -maisry.net -maissn.com -maisu.vip -maisucai.com -maisui1.com -maitao.com -maitaowang.com -maitegao.com -maitewang.com -maitix.com -maitix.net -maitu.cc -maituan.com -maitube.com -maiuspharma.com -maiwe.com -maiweikj.com -maixhub.com -maixiaba.com -maixiang.net -maixiaodao.com -maixinxin.com -maiya91.com -maiyadi.com -maiyanju.com -maiyaole.com -maiyayk.com -maiyuesoft.com -maiyuren.com -maizer.pw -maizhi.com -maizhixiu.com -maizhuanbao.com -maiziedu.com -maizigm.com -maizipo.com -maizuo.com -majia99.com -majiamen.com -majiang520.com -majilive.com -major-epoch.com -majorbio.com -majorsec.com -majsoul.com -maka.im -maka.mobi -makaevent.com -makaidong.com -makaiqian.com -make-w0rld-static.club -makeapp.co -makeblock.com -makecn.net -makedie.me -makeeu.com -makefang.com -makefont.com -makelie.com -makelove.la -makenv.com -makeoptim.com -makepic.net -makepolo.com -makepolo.net -makerbio.com -makeronly.com -makeronsite.com -maketion.com -makeweiyuan.com -making.link -mala123.com -malabeibei.com -malagis.com -malait.com -malajikuai.com -malata.com -malaysia-mdac.com -maldiveszh.com -maldun.com -malei.net -males120.com -malifenlawyer.com -malifuke.org -malimalihome.net -malingguzhai.com -maliquankai.com -maliuliu.com -mall-builder.com -mall.com -mallchina.net -mallchina.org -mallcoo.net -mallhaha.com -mallocfree.com -mallshow.net -mallstaroa.com -mallzhe.com -mallzto.com -malmam.com -malong.com -malsmiles.com -maltm.com -mama100.com -mamacn.com -mamahao.com -mamahuo.com -mamayz.com -mambasms.com -mambike.com -mamcharge.com -mamecn.com -mamicode.com -mamilist.com -mamioo.com -mamoe.net -mamsh.org -mamumall.com -man6.org -managershare.com -manamana.net -manben.com -manboker.com -manbu.cc -manchengpiaoxiang.com -manco-logistics.com -manction.com -mandao-tech.com -mandarinedu.org -mandarinhouse.com -mandarinmorning.net -mandashu.com -mande-car.com -mandian.com -mandiankan.com -mandnsv1.com -mandnsv1.net -mandudu.com -manduhu.com -manew.com -manewvr.com -manfen.net -manfen5.com -manfenyufa.com -manfred-auto.com -manfrottoclub.com -mangafuna.site -mangafuna.xyz -manganesenanhai.com -mangg.com -mangguo.com -mangguo168.com -mangguonews.com -mangjianghuole.com -mangocity.com -mangoebike.com -mangoent.com -mangoerp.com -mangogame.com -mangolm.com -mangomob.net -mangoru.site -mangpielb.com -mangren.com -mangrovetek.com -mangrovetreeresort.com -mangtian.com -mangtuhuyu.com -manguo42.com -mangxia.com -mangxuewang.com -mangzhongbrand.com -mangzitian.com -mangzx.com -manhinggroup.com -manhua1.com -manhua365.com -manhua8.net -manhuacheng.com -manhuadaohang.com -manhualang.com -manhuang.org -manhuapi.com -manhuatai.com -manhuayang.com -manjiwang.com -mankebao.com -mankewenxue.cc -manlaxy.com -manli.ltd -manlinggame.com -manlinwood.com -manluoni.com -manluotuo.com -manmanapp.com -manmanbuy.com -manmango.com -manmankan.com -manmanzou.com -manmeilp.com -manmeng168.com -manmu.net -mannian.com -manniu.cc -manogk.com -manongdao.com -manonggu.com -manongjc.com -manosp.com -manpianyi.com -manpowergrc.com -manrong.win -manshaoco.com -manshijian.com -mantachina.com -mantangc.com -mantewei.com -mantianfei.net -mantusy.com -manulife-sinochem.com -manwahholdings.com -manxiu-law.com -manyacan.com -manylaw.com -manyoo.net -manyoujing.net -manyoukeji2024.com -manyoumao.com -manyupay.com -manzhai.net -manzhan.com -manzu365.com -manzuo.com -manzuocaipu.com -manzx.com -mao-shen.com -mao.fan -mao35.com -maobob123.com -maobotv.com -maobugames.com -maodou.com -maodouapp.com -maodouketang.com -maoercdn.com -maoflag.net -maogang.com -maogepingbeauty.com -maogepingedu.com -maogp.com -maogua.com -maogumaogu.com -maogx.win -maoha.com -maohongdz.com -maojiaoque.com -maojiuxs.com -maokangbio.com -maoken.com -maoln.com -maolog.com -maomao365.com -maomaoche.com -maomaoxue.com -maomaoyuanma.com -maomijiaoyi.com -maomilingyang.com -maomob.com -maomp.com -maomp.icu -maono.com -maopaoya.com -maopuyouxi.com -maoqitian.com -maoqiumail.com -maoshanger.com -maotao.net -maotiangroup.com -maotuan.net -maotuying.com -maowotao.com -maoxia007.com -maoxiangai.com -maoxinhang.com -maoxinquan.net -maoxiongtv.com -maoyachen.com -maoyan.com -maoyanqing.com -maoye-smd.com -maoyi.biz -maoyidi.com -maoyigu.com -maoyingaipu.com -maoyisw.com -maoyiwang.com -maoyouxi.com -maoyun.com -maoyun.tv -maoyuncloud.com -maozhishi.com -maozhuar.com -maozhuashow.com -map-tencent.com -map17.com -map456.com -map456.net -mapabc.com -mapbar.com -mapeng.net -mapfarm.com -mapgis.com -mapgx.com -maphuan.com -mapks.com -maple-game.com -maple.ren -maplecheck.tech -maplef.net -mapmapping.com -mappn.com -maproelec.com -maptalks.com -mapvq.com -maqingbo.com -maqingxi.com -maqinnews.com -mararun.com -marathonbm.com -marathonchangsha.com -marazziguide.com -marchinfo.com -marco-bj.com -marcopolochina.com -mariedalgar.com -marine-dancer.com -marinedancer.com -marioall.com -marioin.com -mariowap.com -marisfrolg.com -maritime-dg.com -markdown.xyz -markdream.com -markedboat.com -marketingconv.com -marketingforce.com -markfairwhale.com -markiapp.com -markji.com -markjour.com -markmall.com -markmiao.com -marknum.com -markorchem.com -markorhome.com -marksmile.com -marljoy.com -marmot-cloud.com -maro6.com -marry5.com -mars-block.com -marshal-ceramics.com -marshotspot.com -marssenger.com -marstor.com -marstv.com -martech365.com -martin8023.com -martincl2.me -martinlofts.com -marto.cc -marvelunlimitedresources.com -maryek.net -marykaycn.com -mas10010.com -mas300275.com -masastack.com -mascaw.com -masdjy.com -maseek.com -masej.com -maseven.com -masff.com -masgjjt.com -masgw.com -mashang98.com -mashangfangxin.com -mashangfl.com -mashangmai.com -mashangshijie.com -mashangxue123.com -mashigaoyao.com -mashiro.me -mashrabiya-screen.com -masiao.com -masikkk.com -masjfc.com -masjinquan.com -maslink.com -maslong.com -mason-led.com -mason-optics.com -maspiece.com -masqhboat.com -mass-evo.com -massage-hospital.com -massclouds.com -masscrunch.com -massestech.com -masszxyy.com -masteam.com -master-home.com -mastercardnucc.com -masterchefworks.com -masterfy.com -mastergo.com -masterkongchef.com -masterlab.vip -masterofsoccer.com -mastersay.com -mastersim123.com -mastodonhub.com -mastudio.org -mastv.cc -mastvnet.com -masyi.com -masyunrui.com -mat-rev.com -mat-test.com -matao.com -matchboxnetwork.com -matchsaas.com -matchupexpo.com -matchvs.com -mate.vip -mateair.com -mater-rep.com -material.istreamsche.com -matfron.com -math168.com -mathartsys.com -mathchina.com -mathcn.com -mathfan.com -mathleague.hk -mathoe.com -mathpretty.com -mati.hk -matistyle.com -matlabsky.com -matoaudio.com -matocloud.com -matongxue.com -matpool.com -matpool.net -matrix-chem.com -matrix-net.tech -matrixchuang.com -matrixerse.com -matrixscrm.com -matrixsens.com -matsubayashi-op.com -matsuri.icu -matsuri.site -matt33.com -mattressmachinery.net -mauu.me -mawei.live -mawentao.com -mawhome.com -max-c.com -maxamchina.com -maxd.cloud -maxdo.net -maxfinesthair.com -maxfor-tool.com -maxgamehub.com -maxgj.net -maxhub.com -maxhub.vip -maxiang.info -maxiang.io -maxiaobang.com -maximajt.com -maximfiber.com -maxing128.com -maxinovel.com -maxio-tech.com -maxitas.com -maxjia.com -maxket.com -maxlu.net -maxmindpharma.com -maxng.cc -maxok.com -maxonc.com -maxonesemi.com -maxonesoft.com -maxowen.com -maxpda.com -maxqiu.com -maxreader.la -maxreader.net -maxscend.com -maxsewing.com -maxspeedgf.com -maxtop.online -maxuscloud.com -maxviewrealty.com -maxway-logistics.com -maxwealthfund.com -maxwi.com -maxxipoint.com -may.ltd -maya09.com -maya777.com -mayabot.com -mayahuashi.com -mayanchina.com -mayatu.com -maybe2016.com -maycpay.com -maycur.com -maydeal.com -maydo.group -mayerse.com -mayi.com -mayiangel.com -mayicms.com -mayihr.com -mayiic.com -mayikt.vip -mayima.net -mayishebao.com -mayishoubei.com -mayitek.com -mayitxt.com -mayiui.com -mayiw.com -mayiwenku.com -mayiwsk.com -mayiyx.com -mayizhuanlan.com -maylandresort.com -maylove2333.com -mayora-sh.com -mayshijia.com -maysun.net -mayswind.net -mayunbj.com -maywant.com -maywonenergy.com -mazakii.com -mazc.org -mazey.net -mazhan.com -mazhen.tech -mazhizuo.com -mazhuren.com -mazida.com -mb-go.com -mb2p.com -mb5u.com -mba518.com -mbabao.com -mbachina.com -mbadashi.com -mbadbaedu.com -mbajs.com -mbajyz.com -mbalib.com -mbanggo.com -mbatrip.com -mbazl.com -mbazsw.com -mbb0760.com -mbb180.com -mbbrowser.com -mbbs.cc -mbcloud.com -mbd.pub -mbdkjsw.com -mbestway.com -mbg06290pg.com -mbg06301pg.com -mbgo.com -mbian.com -mbiaohui.com -mbigfish.com -mbimc.com -mbinary.xyz -mbiosh.com -mbksh.com -mblaudio.com -mbldbb.com -mblog.club -mblu.com -mbo-china.com -mbokee.com -mbs.download.prss.microsoft.com -mbsifu.com -mbti16cc.com -mbwxzx.hk -mbysrobot.com -mbzhu.net -mc-biolab.com -mc-ccpit.com -mc-dj.com -mc-f.com -mc-test.com -mc-user.com -mc-xborder.com -mc.cc -mc520.com -mc91.com -mc9y.net -mcake.com -mcbaas.work -mcbang.com -mcbao.com -mcbbs.co -mcbbs.jp -mcbbs.net -mcbeam.pro -mcc0.com -mcc460.pub.3gppnetwork.org -mccbim.com -mccchina.com -mcchina.com -mccshhospital.com -mcd.cc -mcdchina.net -mcdemo.show -mcdsusan.com -mcdvisa.com -mcearnmore.com -mcecy.com -mceebbs.com -mcfound.net -mcfun.tv -mcfxw.com -mcgsjt.com -mchanmai.com -mchat.com -mchifi.com -mchim.net -mchose.pro -mchost.guru -mchpk.com -mchweb.net -mchxx.net -mcidc.net -mcit.tech -mcjd.net -mckuai.com -mcloudvr.com -mcmap.cc -mcmarkets.com -mcmaster-asia.com -mcmqyc.com -mcmsmp.com -mcmssc.com -mcmtek.com -mcmusic.hk -mcnav.net -mcneko.com -mcnjigou.com -mcobj.com -mcohmygod.com -mcoo.cc -mcooks.com -mcool.com -mcpemaster.com -mcpmaid.com -mcq93.app -mcqy.net -mcsafebox.com -mcsgis.com -mcshuo.com -mctcn.com -mcu-home.com -mcue.cc -mcufan.com -mcuisp.com -mcusky.com -mcuzj.com -mcuzone.com -mcuzx.net -mcw99.com -mcwell66.com -mcwizrd.com -mcwshop.com -mcx666.com -mcxzs.com -mcyhfl.com -mcypls.com -mcyz.com -mczhihui.com -mczwlt.net -mczyz.com -mczz.net -md-hmjt.com -md-pms.com -md5ma.com -md6v3pq.com -mdapp.tv -mdbchina.com -mdbimg.com -mdclub.org -mdddg.com -mddj.com -mddlsa.com -mdeasydiagnosis.com -mdeer.com -mdex.co -mdex.com -mdfkyiyuan.com -mdfors.com -mdhky.com -mditie.com -mdjgjjt.com -mdkj1.com -mdl.ink -mdlf.xyz -mdm.plus -mdmccq.com -mdmmm.com -mdmt.com -mdnice.com -mdouvip.com -mdouwz.com -mdpda.com -mdpetrotech.com -mdrmyy.com -mdsin.com -mdsmos.com -mdsyzx.com -mdtu.com -mdupc.com -mdvdns.com -mdwyservice.com -mdxs.com -mdy-edu.com -mdybk.com -mdydt.net -mdymedical.com -mdyseducation.org -mdyuepai.com -mdzgjx.com -mdzx.net -me-city.com -me-game.com -me-tencent.com -me.com -me1.ltd -me360.com -me361.com -me4399.com -meadin.com -meaningfulcloud.com -meanwell.cc -meathill.com -meb.com -mebhaoya.com -mebo.com -mebtf.com -mebyk.com -mechanic10.xyz -mechatim.com -mechina.org -mechr.com -mechrevo.com -mecoxlane.com -mecru.com -mecsz.com -mecue.cc -med-123.com -med-linket.com -med-water.com -med123.com -med126.com -med139.com -med66.com -meda.cc -medbotsurgical.com -medcaren.com -medcmz.com -meddatas.com -medebound.com -medejob.com -medeming.com -media.fantv.hk -media.joycorp.co.kr -media.paperclipclub.net -media.trrtv.com -mediaprima.rastream.com -mediastory.cc -mediatek.com -mediavorous.com -mediaxinan.com -medical-union.com -medicalqc.com -medicexam.net -mediecogroup.com -medifinit.com -medilinkthera.com -medinoah.com -mediparksh.com -meditrustbroker.com -meditrusthealth.com -mediumvis.com -medixcloud.com -medkaoyan.net -medlander.com -medlinkchina.com -medlinker.com -medlinker.net -medme.net -medmeeting.org -mednovogroup.com -medrc.net -medreading.com -medris-china.com -medscrm.com -medstarcorp.com -medsuture.com -medtimes-hk.com -medtion.com -medwant.com -meecec.com -meegobeta.com -meegoe.com -meekdai.com -meeket.com -meeshow.com -meet-in-shanghai.net -meet99.com -meetbf.com -meetfave.com -meethall.com -meethome.com -meeting.so -meeting666.com -meetingmeet.com -meetingrj.com -meetlawyer.com -meetsite.com -meetsocial.com -meetsoho.com -meetuvip.com -meetwhale.com -meetxian.com -meetyoumuseum.com -meetzoom.net -mefcl.com -mefenglife.com -mefenlife.com -megaemoji.com -megaer.com -megagamelog.com -megagenchina.com -megahugo.net -megalithwatch.com -megarobo.com -megawords.cc -megcup.com -megmeet-welding.com -megobike.com -megou8.com -meguo.com -meguri.app -meguri.moe -megvii-inc.com -megvii.com -meheco.com -mehecointl.com -mei-shu.com -mei-shu.net -mei.com -mei1.com -mei1.info -meia.me -meianclean.com -meianjuwang.com -meiaoju.com -meiba.com -meibaiwu.com -meibanla.com -meibaohome.com -meibei.com -meibg.com -meibgroup.com -meican.com -meicanstatic.com -meichen.cc -meichengchongdian.com -meichenindustry.com -meichibao.com -meichuanchuan.com -meichuanmei.com -meichunmed.com -meici.com -meida.com -meidaifu.com -meidanylon.com -meidaogg.com -meidaojia.com -meide-casting.com -meidebi.com -meidecloud.com -meideng.net -meidepump.net -meidongauto.com -meidunyipin.com -meidusacloud.com -meierbei.com -meifang.com -meifang8.com -meifangquan.com -meifazhan.com -meifengli.com -meigeinc.com -meigongyun.com -meiguanjia.net -meiguiauto.com -meiguiwxw.com -meiguo-qianzheng.com -meiguogouwu.com -meiguoxiaoxue.com -meiguoxq.com -meigushe.com -meih5.net -meiheups.com -meihouyun.com -meihu99.com -meihua.info -meihuainfo.com -meihuapacking.com -meihuboyue.com -meihudong.com -meihutong.com -meiji-icecream.com -meijia51.com -meijiadaren.com -meijiaedu.com -meijiandaojia.com -meijianpin.com -meijiashang.com -meijiavip.com -meijiebijia.com -meijieclub.com -meijiedaka.com -meijiehang.com -meijiehezi.com -meijieku.com -meijiequan.com -meijieu.com -meijiexia.com -meijieyizhan.com -meijiezaixian.com -meijiezaixian.net -meijipharma.net -meijipower.com -meijiu.com -meijubo.com -meijufans.com -meijuniao.net -meijuq.com -meijust.com -meijutime.com -meika360.com -meikai1979.com -meikanguo.com -meikankeji.com -meikao.com -meikeda.net -meikevideo.com -meikongte.com -meikr.com -meiktv.com -meiku123.com -meilandianzi.com -meilanrilan.com -meilaoshi.com -meili-inc.com -meili-oh.com -meili43.com -meilichengren.com -meilidongnanya.com -meiligaosu.com -meilijia.com -meilijian.com -meiling.com -meilishuo.com -meilishuo.net -meilisite.com -meiliworks.com -meiljiaqi.com -meilunmeijia.com -meilvtong.com -meimedical.com -meimeidu.com -meimeifa.com -meimeiriji.com -meimeiyouxin.com -meimianjiafang.com -meiming8.com -meimingbao.net -meimingteng.com -meimingxuan.com -meinali.com -meinenggas.com -meinenggou.com -meinv.com -meiobrand.com -meionetech.com -meip0.me -meip4.me -meipai.com -meipaixiu.com -meipeng518.com -meipian.me -meipian2.com -meipingmeiwu.com -meipuapp.com -meipvip.net -meiqiausercontent.com -meiqinedu.com -meiquankongjian.com -meirenchong.com -meirijinrong.com -meiritv.net -meirixz.com -meiriyiwen.com -meirong.net -meirongchuang.com -meirongshanghai.com -meishai.com -meishanjob.com -meishanren.com -meishe-app.com -meisheapp.com -meishesdk.com -meishi.cc -meishi13.com -meishichina.com -meishiffx.online -meishij.net -meishijr.com -meishilife.com -meishiqin.com -meishischool.com -meishiwangluo.com -meishizuofa.com -meishow.com -meishu.com -meishubao.com -meishunet.com -meishutuku.com -meisilin.com -meisubq.com -meisupic.com -meitangdehulu.com -meitanjianghu.com -meitanwang.com -meite.com -meitegou.com -meitianhui.com -meitianzuche.com -meitie.com -meitifagao.com -meitong-tech.com -meitq.com -meitu-int.com -meitu-mobile.com -meitu.com -meitu.net -meituaccount.com -meituan.com -meituan.net -meitubase.com -meitubeauty.com -meitubf.com -meitubox.com -meitucam.com -meitucamera.com -meitucoffee.com -meitudashi.com -meitudata.com -meituduoduo.com -meitufamily.com -meitufans.com -meitugif.com -meituhezi.com -meituhuahua.com -meituinside.com -meitukankan.com -meitukiss.com -meitumail.com -meitumob.com -meitumobile.com -meitumv.com -meitun.com -meituncdn.com -meituo.shop -meitupaipai.com -meitupic.com -meitupingzi.com -meituriji.com -meiturom.com -meitushijie.com -meitushop.com -meitushouji.com -meitusiyu.com -meitusnap.com -meitustatic.com -meitustore.com -meitutaotao.com -meitutg.com -meitutietie.com -meituxiangji.com -meituxiaopu.com -meituxiu.com -meituxiuxiu.com -meituyidong.com -meituyuan.com -meituyun.com -meiwafuying.com -meiwanshop.com -meiweibf.com -meiweigroup.com -meiweis.com -meiweisha.net -meiweishudan.com -meiwpkpu.com -meiwulist.com -meixin.com -meixincdn.com -meixinl.com -meixiong5.com -meiya.com -meiyaapp.com -meiyacup.com -meiyan.chat -meiyan.com -meiyan.tech -meiyanstatic.com -meiyatour.com -meiye.art -meiyedana.com -meiyi.ai -meiyixia.com -meiyixinrui.com -meiyou.com -meiyue.com -meiyujt.net -meiyuko.com -meiyuwang.com -meizhan.com -meizhandian.com -meizhanggui.cc -meizhi-cn.com -meizhou.com -meizhou.net -meizhuang.com -meizhuangbk.com -meizitu.net -meizu.com -meizu.com.hk -meizu.net -meizuapi.com -mejorrelojes.com -mejxw.com -meke8.com -mekedoo.com -meldingcloud.com -melizhi.com -mellowgroups.com -melon-eptc.com -melon.cdnetworks.com -melon.icu -melotgroup.com -memblaze.com -memechen.com -memewan.com -memeyin.com -memeyule.com -memfiredb.com -memorieslab.com -memoryhere.com -memoverflow.com -mems.me -memsconsulting.com -memseminar.com -memsensing.com -memsflex.com -memsic.com -memuplay.com -memuu.com -memyy.com -men.ci -menchuang.biz -menchuang58.com -menci.xyz -mendale.com -menducn.com -meng-model.com -meng2u.com -meng3.com -meng800.com -mengaite.com -mengarchitects.com -mengat.com -mengbige.com -mengchongzu.com -mengdian.com -mengdie.com -mengdoc.com -mengdoctor.com -mengdodo.com -mengensha.com -mengfm.com -menggang.com -menggaole.com -menghuimengtu.com -menghunli.com -mengjiagames.com -mengjianjiemeng.com -mengkang.net -menglan.com -menglechong.com -menglegame.com -menglu.com -mengmayw.com -mengmei.org -mengniang.tv -mengniuarla.com -mengniuir.com -mengou.net -mengqingpo.com -mengqiuju.com -mengsang.com -mengso.com -mengte.online -mengtian.com -mengtuiapp.com -mengvlog.com -mengxi.com -mengxiang.com -mengxiangeka.com -mengxintianxia.com -mengxyz.com -mengya.com -mengyanggroup.com -mengyin.cc -mengyou.org -mengzhou.com -mengzhuangxiu.com -mengzuji.com -menhu.io -menksoft.com -menpad.com -menpiao.com -menpiaotuangou.com -menqiu.com -menshiny.com -mentamob.com -mentorsc.com -mentrends.com -menu-static.gog-statics.com -menubarx.app -menwee.com -menww.com -menwww.com -menxue.com -menyuannews.com -meovse.com -meow.plus -meowcat.org -mepai.me -mepcec.com -mepoem.com -meppon.com -merach.com -mercedes-benzarena.com -merchaincargo.com -mercitime.com -mereith.com -mergeek.com -merklechina.com -merkpd.com -merlinmedicine.com -mero-db.com -merries-china.com -merroint.com -merryhome.com -mescroll.com -meshiot.com -mesince.com -mesnac.com -mesonart.com -mesou.net -mesowe.com -mesresearch.com -messecloud.com -met169.com -meta-stone.com -meta-verse.co -meta-xuantan.com -meta.law -metacd.com -metal-min.com -metal-tube.com -metal.com -metalchina.com -metalrevolution.com -metalsinfo.com -metalyoung.com -metaoptronics.com -metaplanet3023.com -metasecurities.com -metastonecorp.com -metastudioxr.com -metastudy.vip -metasyun.com -metatrader4.com -metatrader5.com -metatube.pro -metavatar.cc -metawalle.com -metax-tech.com -metayuanjing.com -metcn.com -meten.com -meteni.com -metenk12.com -meteric.com -metersbonwe.com -metin520.com -metispharma.com -metnews.net -metong.com -metools.info -metro-3d.com -metroer.com -metrofastpass.com -metropolohotels.com -metroshield.com -metrowatch.net -metstr.com -metword.co -meu95otw4967t.com -meuicat.com -meutu.com -mevionchina.com -mew.fun -mewchan.com -mewx.art -mexingroup.com -mexontec.net -mexxum.com -meyet.net -meyoufreight.com -meyum1688.com -mezamca.com -mezhiyu.com -mezw.com -mf-y.com -mf08s.com -mf1288.com -mf999.com -mfbrjc.com -mfbuluo.com -mfcad.com -mfcad.net -mfcpx.com -mfcteda.com -mfcyun.com -mfdl666.com -mfdns.com -mfdzqj.com -mfexcel.com -mfg-magnets.com -mfgchn.com -mfhcd.com -mfinetech.com -mfisp.com -mfjl.wiki -mfjxcn.com -mfk.com -mflady.com -mfniu.com -mfpad.com -mfpay.net -mfqqx.com -mfqyw.com -mfsj1908.com -mftianshanam.com -mftvideo.com -mfunz.com -mfwxpay.com -mfxlawyer.com -mfzl.net -mfzxcs.com -mg-cdn.com -mg-pen.com -mg21.com -mg3721.com -mgaqehzm.com -mgcan.com -mgcmehzt.com -mgd5.com -mgdq.net -mgdzz.com -mgenbio.com -mgenware.com -mgff.com -mgfty.com -mgfy88.com -mggtech.vip -mgh2-lab.com -mgjianshe.com -mgkj.vip -mgkjht.com -mgl9.com -mglhx.com -mglip.com -mgm255.com -mgmgrandsanya.com -mgmovie.net -mgmusic.vip -mgnav.com -mgobe-webattle.com -mgongkong.com -mgplay.com.tw -mgryekby.com -mgsdk.com -mgse.info -mgslb.com -mgslb.net -mgslb.org -mgsp.fun -mgtv.com -mgtv2025.com -mgugaklive.nowcdn.co.kr -mgw999.com -mgwxw.com -mgxf.com -mgxzsy.com -mgygs.com -mgys.cc -mgyxw.net -mgyyw.com -mgzf.com -mgzxzs.com -mh-rjgb.com -mh160.cc -mh456.com -mh51.com -mh9.cc -mhacn.com -mhacn.net -mhaoma.com -mhbras.com -mhcharging.com -mhealth100.com -mhfotos.com -mhhf.com -mhhf.net -mhi-ac.com -mhinele.com -mhito.net -mhkami.com -mhnzww.com -mhome.com -mhotels.design -mhpdf.com -mhpin.com -mhrooz.xyz -mhskso.sbs -mht.la -mht.tw -mhtclub.com -mhtes.com -mhtyd.com -mhtzjt.com -mhv2.net -mhw315.com -mhwck.com -mhwh168.com -mhwmm.com -mhwy2.com -mhxk.com -mhxzhkl.com -mhystatic.com -mhyun.net -mhzd.cc -mhzd.net -mi-ae.com -mi-ae.net -mi-cache.com -mi-cdn.com -mi-customer.com -mi-dong.com -mi-dun.com -mi-fds.com -mi-fds.net -mi-idc.com -mi-img.com -mi-img1.com -mi-img2.com -mi-img3.com -mi-img4.com -mi-img5.com -mi-static.com -mi.com -mi0.cc -mia.com -miaibox.com -mian520.com -mianbao.com -miancp.com -miandanbx.com -mianfeiic.com -mianfeiquming.com -mianfeiwendang.com -mianfeiwucan.org -mianfeiziti.com -mianhuatang.cc -mianhuatang.la -mianjue.com -miankousucai.com -mianmoi.com -mianshiya.com -mianshui365.com -mianwai.com -mianyangauto.com -mianyanghuida.com -mianyaojsj.com -mianyazulin.com -mianzhouhotel.com -miao-lang.com -miao15777790078.com -miaobe.com -miaobige.com -miaobolive.com -miaoche.com -miaocode.com -miaodiyun.com -miaodongbar.com -miaogongzi.cc -miaogongzi.net -miaohuiyanyi.com -miaojibrand.com -miaokaikeji.com -miaokaiyun.com -miaokan.com -miaokan100.com -miaolaoshi.com -miaolianyunapp.com -miaolingbio.com -miaomaicar.com -miaomiaolock.com -miaomiaowork.com -miaomiaoxue.com -miaomiaoz.com -miaomiaozhe.com -miaomiaozhua.com -miaomu.com -miaomuzhan.com -miaoo.me -miaopai.com -miaoqutimes.com -miaosha.com -miaoshou.cc -miaoshou.com -miaoshou.net -miaoshoucdn.com -miaoshufang.com -miaoshuwu.com -miaoshuzhai.net -miaoso.com -miaostreet.com -miaov.com -miaovps.com -miaoweijianfei.com -miaowenhk.com -miaowlabs.com -miaowutech.com -miaoxiazai.com -miaoyanai.com -miaoyin.pw -miaoyun.link -miaozanba.com -miaozao.com -miaozhan.com -miaozhun.com -miaozhunjing.net -miaozuo.com -miawycxs.com -miaxis.com -miaxis.net -mibao.com -mibaoxian.com -mibei.com -mibokids.com -mic-s.com -micai.com -micai315.com -micaihu.net -micaiying.com -micamika.com -micang.com -micblo.com -mice-gz.org -micecn.com -michaelapp.com -michoi.com -michong.com -michplay.com -miclle.com -mico.io -micode.net -micoe.com -micro-bee.com -micro-bridge.com -micro-game-client.com -micro-x.net -microaiav.com -microbeee.com -microbell.com -microbt.com -microcai.org -microcardio.com -microchampion.com -microdiag.com -microdreams.com -microesim.com -microfotos.com -microfountain.com -microlz.com -micronetpay.com -microrui.net -microsate.com -microsoftsa.com -microstarsoft.com -microstern.com -microsword.net -microtrading.com -microvcard.com -microvirt.com -microvoip.com -microwear.com -microwoo.com -microwu.com -microxiang.com -microyan.com -microzuji.com -mictormedical.com -micu.hk -micw.com -micyjz.com -mid-link.net -midaapi.com -midadata.com -midainc.com -midanyi.com -midasbuy.com -midea-buy.com -midea-group.com -midea-hotwater.com -midea.com -midea.com.tr -mideabiomedical.com -mideadc.com -mideaepay.com -mideaepayuat.com -mideav.com -mideazy.com -midecopharm.com -midi-cn.com -midian.com -midiclouds.com -midicn.com -midifan.com -midingdong.com -midita.com -midiyinyue.com -midlele.com -midonglab.com -midongtech.com -midongtech.xyz -midu.com -miduiedu.com -midukanshu.com -midureader.com -midust.com -midway.run -mieco.net -miecod.com -mieevents.com -miemie.la -miercn.com -mieseng.com -mifan365.com -mifangba.com -mifanli.com -mifanlicdn.com -mifei.com -mifeng.plus -mifengchengshi.com -mifengv.com -mifengvv.com -mifengxiuchang.com -mifengzd.com -mifengzhibo.com -mifenlife.com -mifispark.com -mifjhgq.xyz -mifpay.com -mifwl.com -migames.com -migelab.com -miglioriorologi.com -migood.net -migu.store -migucloud.com -migufm.com -migufun.com -migugk.com -migugu.com -miguku.com -migumaotrip.com -migutv.com -miguvideo.com -miguyu.com -mihanw.com -mihayo.com -mihayou.com -mihopacking.com -mihoyo.com -mihoyocg.com -mihoyocloud.com -mihoyogift.com -mihoyomall.com -mihua.net -mihuachat.com -mihuangame.com -mihuashi.com -mihuatown.com -mihui365.com -mihulu.com -mihuwa.com -miicp.com -miidc.com -miidii.tech -miidim.com -miiee.com -miiiw.com -miiiw.net -miinaa.com -miinsurtech.com -miit-icdc.org -miit-kjcg.com -mij.cc -mijewelries.com -mijia.tech -mijian360.com -mijiannet.com -mijiayou.com -mijiayoupin.com -mijisou.com -mijwed.com -mika123.com -mike-x.com -mikeauth.com -mikechen.cc -mikecrm.com -mikemessiha.com -mikeoperfect.com -mikesent-awareness-02.com -mikesent-awareness-04.com -mikesent.net -mikeyouxi.com -mikge.com -mikika.com -miko007.com -mikoshu.me -miku.ink -miku01.cc -mikuac.com -mikublog.com -mikucdn.com -mikuclub.fun -mikudm.com -milan.com -milan520.com -milanshishang.com -milanvip.com -milchips.com -mileage.vip -milegj1.com -milejia.com -milemovie.com -mileshub.net -mileweb.com -milianshe.com -miliantech.com -miliao.com -milido.vip -milihua.com -milike.com -milimao.com -milimili.tv -miliol.com -miliol.org -milipictures.com -militadowatch.com -miliyo.com -milkjpg.com -milliant.com -milliway-ic.com -millnovel.com -milnews.com -milo-star.com -miloktv.com -miloli.info -milsay.com -milu.com -milubtyx.com -milusybt.com -milvtong.com -milvzn.com -milyf.com -mimangfei.com -mimayun.com -mimi123.vip -mimi518.com -mimidi.com -mimimeu.com -mimiteng.com -mimixiaoke.com -mimiyc.net -mimo51.com -mimomim.com -mimoprint.com -mimouse.net -mimvp.com -minapp.com -mincdn.com -mincoder.com -mind-home.net -mindai.com -mindcherish.com -mindcontroles.com -mindechem.com -mindmanagerchina.com -mindmm.com -mindpin.com -mindray.com -mindshow.fun -mindstore.io -mindsun.com -mindway-sz.com -minebbs.com -minecraftxz.com -minecraftzw.com -minegoods.com -minei.com -mineplugin.org -mineraltown.net -minerfun.com -minerhome.com -minewtech.com -minfengtianfu.com -minfufa.com -ming-med.com -ming-men.com -minganmed.com -mingbianji.com -mingbiao001.com -mingbiaohao.com -mingcalc.com -mingchao.com -mingchaoonline.com -mingchaoyouxi.com -mingchu.co -mingci.org -mingcihospital.com -mingcloud.net -mingczh.com -mingdanwang.com -mingdao.com -mingdao.net -mingdao8.com -mingdaocloud.com -mingdazhongxue.com -mingdejx.com -mingdongman.com -mingdutech.com -mingechina.com -mingfengtang.com -mingfucdn.com -mingfucloud.com -mingfudns.com -mingfuyun.com -minghaoshangwu.com -minghecloud.com -mingheng-group.com -mingheyaoye.com -mingheyiyao.com -minghezhi.com -minghuatang.com -minghuaxinda.com -minghuishijia.com -mingin.com -mingjiachina.com -mingjian.com -mingjian365.com -mingjian365.net -mingjignfang.com -mingjinglu.com -mingjiudu.com -mingjuyoupin.com -mingkj.com -minglian.com -minglunlaw.com -mingmen-tech.com -mingpian.biz -mingpian.net -mingqi.co -mingqian666.com -mingqu.xyz -mingr.com -mingren888.com -mingricctv.com -mingrsoft.com -mingshi100.com -mingshi100.net -mingshi51.com -mingshi58.com -mingshiedu.com -mingshisanling.com -mingsoft.net -mingstar.net -mingtaimed.com -mingtaokeji.com -mingtejia.com -mingtian.com -mingtou.com -mingxigu.com -mingxingku.com -mingxinglai.com -mingxuan.store -mingya.mobi -mingyang100.com -mingyangyinhe.com -mingyannet.com -mingyantong.com -mingyaohui.com -mingyaoruci.com -mingyaweb.com -mingyi.com -mingyihui.net -mingyou360.com -mingyu-porcelain.com -mingyuanfund.com -mingyuanmuye.com -mingyuanyun.com -mingzhi-tech.com -mingzhucable.com -mingzhujs.com -mingzhuoedu.com -mingzhuxiaoshuo.com -mingzihui.com -minhang.cc -minhangshi.com -minhow.com -mini-audio.com -mini-banana.com -mini-ease.com -mini-program-acc.com -miniadx.com -miniaixue.com -miniapida.com -miniapp360.com -miniappss.com -minibai.com -minibg.com -miniblink.net -minidaxue.com -minidso.com -minieye.cc -minieye.tech -minigameam.com -minigui.com -minigui.org -minihaowan.com -miniluck.com -minimaituan.com -minimax.chat -minimaxi.com -mining120.com -mininglamp.com -minip-service.com -minipacs.com -miniprogramadmin.com -minirizhi.com -minisforum.com -minishops.co -miniso-au.com -miniso.com -minisoyo.com -ministudy.com -minitiao.com -miniui.com -minixiazai.com -miniyounger.com -minjichem.com -minkave.com -minking.cc -minleai.com -minli.com -minmetals.com -minor-tech.com -minovapharma.com -minpayment.com -minqiao.com -minra.com -minretail.com -minshangjie.com -minshengec.com -minshengjob.com -minshenglife.com -minshop.com -minstrans.com -mintaibank.com -mintake.com -mintaylor.com -mintimate.cc -mintmuse.com -mintrust.com -mints-id.com -minunix.com -minxing365.com -minxiwang.com -minxue.net -minyukji.com -minyunit.cool -minz.press -minzu56.net -miooku.com -miospay.com -miot-spec.org -miotech.com -mipa.fun -mipacc.com -mipahui.com -mipangwang.com -mipay.com -mipay.net -mipcdn.com -mipengine.com -mipengine.org -mipkj.com -miplus.cloud -mippaper.com -mipplan.com -mipplan.org -mipuo.com -mipush.com -miqixuan.net -miquapp.com -mir4399.com -mir6.com -miracdn.com -miraclelaser.com -miracleplus.com -miraclevision.com -miraclevision.net -miracomotor.com -miratama.com -miravia.es -miredian.com -mirgaga.net -miri.site -mirmzhy.com -mirreal.net -mirrorcast.tv -mirrorchyan.com -misaka.center -misall.com -miscd.com -mishang.com -mishangkeji.com -mishuhome.com -misiai.com -misintlschool.com -miso-lab.com -mispos.cc -misrm.com -misrm.net -missevan.com -missfresh.net -misshachina.com -misshcl.com -missionhillschina.com -missjia.net -missku.com -misslele.com -misstar.com -missyuan.net -misuland.com -misunly.com -mitalk.com -mitang.com -mitangtuan.com -mitao.bar -mitaoping.com -mitaowu.com -mitay.net -miteno.com -mitertec.com -mitesi.com -mitotoo.com -mitpgxvm.com -mitsubishielectric-mesh.com -mitsuha.space -mitsuiplastics-shanghai.com -mittrchina.com -mituancm.com -mituyuedu.com -mitvos.com -mitvos.net -miued.com -miui.com -miuiver.com -miulab.com -miusi.co -miuss.icu -miutour.com -miutrip.com -miwaimao.com -miwap.com -miwifi.com -miwuad.com -miwuzhentan.com -mix-planet.com -mix.moe -mixbao.com -mixcapp.com -mixcm.com -mixdesk.net -mixdo.net -mixian88.com -mixiaojin.com -mixin.cc -mixinshe.com -mixiong.tv -mixkr.com -mixmind.com -mixpwr.com -mixrnb.com -mixueedu.com -mixvvideo.com -miyabaobei.com -miyaboke.com -miyachat.com -miyanlife.com -miyapay.com -miyateam.com -miyatech.com -miyilink.com -miyoushe.com -miyouu.com -miyuangz.com -miyun-ecomarathon.com -miyun.com -miyun360.com -miyuncms.com -mizhai.com -mizhe.com -mizhiji.com -mizhimedia.com -mizhionline.com -mizhizbf.vip -mizhuan.me -mizone.cc -mizuda.com -mizuki2.com -mj110.net -mj365.club -mj365.site -mj365.vip -mj567.com -mj85.com -mjasoft.com -mjatm.com -mjcec.com -mjceo.com -mjecu.com -mjgxsc.com -mjgysm.com -mjh5.com -mjia.cc -mjjcn.com -mjjq.com -mjlong.com -mjlsh.com -mjmjm.com -mjoys.com -mjqishi.com -mjt288.com -mjtcsb.com -mjtd.com -mjtom.com -mjttt.com -mjxhgdl.com -mjxpay.com -mjyg.com -mjylbj.com -mjyun.com -mjyx.com -mjyxkf.com -mjzcnd.com -mjzhcl.com -mjzj.com -mjzq.net -mk-yiliao.com -mk169.com -mk2048.com -mk5.xyz -mkaq.org -mkb0898.com -mkdata.top -mkf.com -mki7rxcwmfe7c.com -mkjump.com -mkkcn.com -mklimg.com -mklist.com -mkmchina.com -mkn666.com -mkpum.com -mkpush.com -mkqh.com -mkqst.com -mkrobot.org -mkrviu.sbs -mkshell.com -mkstone.club -mksucai.com -mktcreator.com -mktdatatech.com -mktoys.com -mktzb.com -mktzr.com -mkvcn.com -mkwhat.com -mkzcdn.com -mkzhan.com -mkzhan.net -mkzhou.com -mkzoo.com -ml-kq.com -mlabc.com -mlairport.com -mlbaikew.com -mlc.cc -mldgoing.com -mlexpo.com -mlfjnp.com -mlfkc.net -mlgj.com -mlgxw.org -mlhimalayanxt.com -mlhld.com -mlibaba.com -mliev.com -mlink.tv -mlinkapp.com -mlinks.cc -mlinks.co -mlito.com -mlj122.com -mlj125.com -mlj130.com -mlj162.com -mlj194.com -mlj36.com -mlj93.com -mljydoors.com -mlkmba.com -mllj.net -mlmcms.com -mlmtz.com -mlnk.me -mlnsoft.net -mlocso.com -mlog.club -mlogcn.com -mlrcn.com -mlrlzy.com -mlrzsj.com -mlsbmw.com -mlsh.net -mlsub.net -mlszp.com -mlt.pub -mltrans.net -mlunwen.com -mlwanwan.com -mlwdpx.com -mlwed.com -mlwplus.com -mlwu.net -mlxks.com -mlycdn.com -mlychee.com -mlyfc.net -mlyfcyy.com -mlyns.com -mlyx.com -mlzs2008.com -mm-sh.com -mm.com -mm111.net -mm131.kim -mm1357.com -mm138.com -mm2hservices.com -mm3yy.com -mm8mm8.com -mmall.com -mmaqa.com -mmarket.com -mmarket6.com -mmatch.tech -mmbang.com -mmbang.info -mmbang.net -mmbao.com -mmbest.com -mmbjq.com -mmbread.com -mmc-data.com -mmcl.net -mmcloud.com -mmcos.com -mmdtt.com -mmegg.com -mmfad.com -mmfj.com -mmgl.net -mmgo.com -mmgogo.com -mmgoodcar.com -mmhygame.com -mmi-shanghai.com -mmia.com -mmim8.com -mmj.vip -mmjbh.com -mmjynet.com -mmjzxh.com -mmlessin.com -mmllllasjd.com -mmmglobalgroup.com -mmmmmmm.com -mmmnote.com -mmmrz.com -mmmtech.com -mmods.site -mmogg.net -mmoist.com -mmonly.cc -mmosite.com -mmqidian.com -mmrcw.com -mms591.com -mmsase.com -mmsccn.com -mmscoo.com -mmsfw.com -mmsk.com -mmt3000.com -mmtch.com -mmtx.net -mmuaa.com -mmww.com -mmxchina.com -mmxiaowu.com -mmxmmx.com -mmyj.com -mmyxshop.com -mmyz.net -mmzcn.com -mmzh.com -mmzj.com -mn-soft.com -mnancheng.com -mnbvbqw.com -mnbvdfg.com -mnbvtgv.com -mndqlib.net -mnengine.com -mnihyc.com -mnjj.group -mnpc.net -mnwww.com -mo-co.com -mo298.com -mo2g.com -mo7.cc -mo9.com -moa06181ju.com -moa06211ju.com -moa06240ju.com -moa06250ju.com -moage.com -mob55.com -mobai.sbs -mobaibox.com -moban.com -mobanhao.com -mobanjing.com -mobanku.com -mobanlane.com -mobanma.com -mobantiankong.com -mobantu.com -mobanwang.com -mobanyun.com -mobao.online -mobaoo.net -mobartsgame.com -mobawan.com -mobayx.com -mobcells.com -mobcent.com -mobcloud.mobi -mobdna.com -mobeehome.com -mobgroupbuy.com -mobhui.com -mobiapp.cloud -mobibao.com -mobibrw.com -mobike.com -mobile.ccdntech.com -mobileanjian.com -mobilebone.org -mobilegamebase.com -mobilegamecdn.com -mobilelegends.com -mobilemgr-global.com -mobilemgr-global.net -mobileppp.com -mobiletrain.org -mobileztgame.com -mobispeaker.com -mobjz.com -mobkeeper.com -mobking.biz -moblazer.com -mobmore.com -mobo168.com -moboage.com -moboplayer.com -mobotap.com -mobring.co -mobrtb.com -mobsurl.com -mobtou.com -mobvoi.com -mobwan.com -mocache.com -mocafilm.com -mocartoon.com -mochafengbao.com -mochai.store -mochateam.com -mochi.website -mochiwang.com -mochouu.com -moci6.com -mockingbot.com -mockuai.com -mocn.cc -moco-mall.com -mocusez.site -mocuz.com -modao.cc -modao.com -modao.io -modaogz.com -modashi.net -modb.cc -modb.pro -modelarts-infer.com -modelarts-maas.com -modelevel.com -modelltd.com -modelones.com -modelscope.net -modelwhale.com -modeng178.com -modengtianshi.com -modernavenue.com -moderner.com -moderno2.com -modernsky.com -modernweekly.com -modevol.com -modian.com -modianverse.com -modooplay.com -modouwangluo.com -modstart.com -modujx11.com -modujx13.com -modujx14.com -modujx15.com -modujx16.com -moduyun.com -modxz.com -moe-box.com -moe.im -moe.so -moe.tips -moe.xin -moe123.com -moe123.org -moe321.com -moeblog.vip -moeclub.org -moedot.net -moeelf.com -moefactory.com -moefantasy.com -moefou.org -moegirl.tw -moehot.com -moehu.org -moehui.com -moeid.com -moejp.com -moeking.me -moeli123.com -moemiao.net -moerlong.com -moetu.club -moetu.org -moetuji.com -moeub.com -moeworld.tech -moex.ink -moeyuuko.com -moeyy.xyz -moezx.cc -mofacdnode.com -mofadns.online -mofahou.com -mofang.com -mofang.jp -mofangchuxing.com -mofangge.com -mofanghr.com -mofangshe.com -mofangwang.com -mofangyu.com -mofanodes.com -mofashi.ltd -mofavideo.com -mofazhu.com -moffettai.com -mofile.com -mofishgames.com -mofoun.com -mofunenglish.com -mogao.com -mogecloud.com -mogecloud.net -mogengyun.com -mogengyun.net -mogezhouyi.com -mogher.com -mogoedit.com -mogohd.com -mogojob.com -mogoo.com -mogoroom.com -mogu.com -mogu.io -mogua.co -mogucdn.com -moguding.net -moguf.com -moguilianrencdn.com -mogujia.com -mogujie.com -mogujie.org -mogujielive.com -mogumiao.com -mogutong.com -moguv.com -moguvet.com -moguyun.com -moh.cc -moh7.com -mohangkeji.net -mohjdvh.com -mohou.com -mohu.org -mohuishou.com -moihu.com -moimg.net -moith.com -moji.com -moji001.com -moji002.com -mojicb.com -mojicdn.com -mojichina.com -mojichina.net -mojidict.com -mojidoc.com -mojie.app -mojie.co -mojie.kim -mojieai.com -mojitest.com -mojitok-c.com -mojocube.com -mojusteel.com -mojy.xyz -mok8uptsmk19.com -mokahr.com -mokamrp.com -mokatyper.com -mokayuedu.com -moke.com -mokeyjay.com -moko.cc -mokxing.com -molbase.com -molbase.net -molcoo.com -moldinginductor.com -moldnano.com -moleecel.com -molefitting.com -molegu.com -molerose.com -molesdn.com -molibaike.com -molihe.cc -molihua.net -molihuadami.com -molilian.com -molilier.com -molimoli.tech -moliplayer.com -molipy.com -moliqiji.com -molishe.com -molixiangce.com -mollervilla.com -molwater.com -molygoo.com -mom001.com -moma-hz.com -mombuybuy.com -moment.fun -momentad.com -momentcake.com -momhui.com -momishi.com -mommygf.com -momo35.com -momoapk.com -momobako.com -momocdn.com -momoda8.com -momooyo.com -momotn.com -momoyu.cc -momoyu.com -momoyuyouxi.com -momzs.com -monadyneed.com -monaite.com -monarch-sw.com -moneak.com -monengu.com -monengugame.com -moneydata.hk -monfetch.com -mongac.com -monhun.fun -monidai.com -monidata.com -monitoring.qpdp1.net -monkeylsp.com -monknow.com -monolink.net -monph.com -monsterlin.com -montage-tech.com -monternet.com -montnets.com -montres8.com -monv.com -monxin.com -moocollege.com -mooctest.net -moodmoon.com -moodoon.com -moof87.com -mooiee.com -moojing.com -moojnn.com -moolsun.com -moomoo.com -moomooequity.com -moomootrustee.com -moomv.com -moon-insight.com -moonbasa.com -moonbio.com -moonbitlang.com -moonbt.com -mooncell.wiki -moonfly.net -moongood.com -mooninbox.com -moonjer.com -moonlian.com -moonsec.com -moonsees.com -moonstatistics.com -moonton.com -moontonapp.com -moontontech.net -moonvy.com -moonvy.cool -moooc.cc -mooooc.com -mooool.com -mooore.net -moooyu.com -moore.ren -moore8.com -moorecat.com -mooreelite.com -mooreiot.com -moorext.com -moowo.com -mooyuu.com -mooyy.com -mop.com -mopaas.com -mopair-erm.net -mopcn.com -mopei8.com -moper.me -moper.net -mopicer.com -mopin.cc -mopo.com -mopoint.com -mopsky.com -mopxz.com -moqie.com -moqiehome.com -moqifei.com -moqikaka.com -moqilin.net -moqing.com -moqingtk.com -moqipobing.com -moqiwanba.com -moqu8.com -moquseo.com -moraex.com -morange.shop -mordernstone.com -morechinese.cc -moreck.com -moredian.com -morefood.com -morefreegame.com -morefun-philippines.com -morefunstudio.com -moregy.com -moreless.io -morelink.net -moremeat.com -morequick.net -moresing.com -morestep.com -morethan.tv -moretickets.com -morevfx.com -morewis.com -morewiscloud.com -morganstanleyhuaxin.com -morgendesign.com -morihei.net -morilady.com -morketing.com -morketinglearn.com -morketingsummit.com -morlab.com -morning.work -morningcore.com -morninghan.com -morninginn.com -morningwhistle.com -morong-elec.com -morstar.net -moschat.com -moseacg.com -moseeker.com -mosesenglish.com -mosgcj.com -moshanghotel.com -moshanghua.net -mosheng520.com -moshengliang.com -moshike.com -moshou.com -moshua.net -mosoga.net -mossimo.net -mossle.com -mostch.com -mostmob.com -mostsd.com -mosuzi.com -motanku.com -motel168.com -motherchildren.com -motic-electric.com -motie.com -motieimg.com -motiezw.com -motilive.com -motimaster.com -motimo.com -motisky.com -moto-one.com.hk -moto8.com -moto8.net -motomatu.com -motooy.com -motor-comm.com -motormade.com -motowoo.com -motuo2.com -mou.ge -mougor.com -mouldbbs.com -mouldnews.com -moulem.com -moumi.com -mounriver.com -mountor.net -mounui.com -moushei.com -mousycoder.com -mout.me -moutaichina.com -mova-tech.com -movcam.com -movebroad.com -movelaser.com -movesky.net -movie.mcas.jp -movie365.tv -moviemore.com -moviereviewtoday.com -movit-tech.com -mowan123.com -moweather.com -mowgz.com -mowowo.com -moxfive.xyz -moxiai.com -moxian.com -moxiaoying.com -moxidongman.com -moxin.me -moxing.net -moxingbk.com -moxingfans.com -moxingyun.com -moxiu.com -moxiu.net -moxuangenet.com -moxz.net -moyangmoyang.com -moyann.com -moyoyo.com -moypk.com -moyubuluo.com -moyude.ren -moyugroup.com -moyunteng.com -moz8.com -mozartsemi.com -mozhan.com -mozheanquan.com -mozhedun.com -mozhenhau.com -mozichina.com -mozigu.net -mozillaonline.com -mozillazg.com -moziqing.com -mozouyan.com -mp.cc -mp17.com -mp333player.com -mp4ba.com -mp4cn.com -mpaascloud.com -mpacc.cc -mpacc.com -mpacc.net -mpackchina.com -mpaidata.com -mpass.club -mpbza.com -mpcloudapp.com -mpdn.fun -mpdsj.com -mpg.de -mph11.com -mphdx.com -mpiano.com -mplus.tech -mpmc-china.com -mpnbenefits.download.prss.microsoft.com -mpnbenefitsrtl.download.prss.microsoft.com -mpnbenefitsrtluat.download.prss.microsoft.com -mpoa.vip -mpopkart.com -mps.live -mpserverless.com -mpsoft.net -mpxiaomi.net -mpxx.net -mpyit.com -mqant.com -mqc168.com -mqcoffee.com -mqhospital.com -mqikan.com -mqmgroup.com -mqqurl.com -mqqy.com -mqrouter.com -mqsyr.com -mqttdkx.vip -mqttx.app -mquan.net -mquanquan.com -mqxpyy.com -mqxww.com -mqyu.com -mqzoneapp.com -mr-ping.com -mr77.com -mr91.com -mrbanana.com -mrbird.cc -mrbook114.com -mrcrm.com -mrcywang.com -mrdede.com -mrdoc.fun -mrdoc.pro -mrdooku.com -mrduan.com -mrenbaike.com -mrentea.com -mrgaocloud.com -mrhallacg.com -mrhe.net -mrhs.cc -mrjeke.com -mrjiang.com -mrjjxw.com -mrlian.club -mrlika.com -mrmfsc.ltd -mro365.com -mro9.com -mroall.com -mrobao.com -mrpyq.com -mrqf.com -mrqoxfvs.com -mrqxs.com -mrrvendor.com -mrsdgg.com -mrsingsing.com -mrsjzt.com -mrsta.com -mrtoss03.com -mrts.com -mru-taste.com -mrutaste.com -mrvcdn.com -mrwish.net -mrxiao.net -mrxwlb.com -mryunwei.com -mryys.com -mrzhenggang.com -ms08067.com -ms211.com -ms315.com -ms6666111.com -ms7caryw5i48t.com -msanjia.com -msbank.com -mscbsc.com -mscdntrip.com -mscodecloud.com -msd-facing.com -msddp.com -msdkpass.com -msdn.download.prss.microsoft.com -msdn.hk -msdnwogaosuni.com -msdnxitong.com -msdpmarathon.com -msdprc.com -msdprod-ad.download.prss.microsoft.com -msfpay.com -msftonlinelab.com -msgamego.com -msgcarry.com -msgtjj.com -msh2020.com -mshandong.com -mshao.com -mshare.cc -mshareservices.com -mshchina.com -mshg2019.com -mshishang.com -mshot.com -mshouyou.com -mshw.net -mshxw.com -msits.com -msjingmi.com -msjpay.com -msjy123.com -mskoo.com -mslmc.net -msltbio.com -mslzk.com -msm.moe -msmartlife.com -msmbjp.com -msndvr.com -msny.cc -msolok.com -mspace.cc -mspacecd.com -mspharm.com -msproduct.download.prss.microsoft.com -msstatic.com -mst-jc.com -mst2018.com -mstatik.com -mstchina.com -mstxx.com -msudz.com -msunland.com -msweekly.com -msxf.com -msxf.net -msxh.com -msxt.com -msxxg.com -msy5.com -msyc.cc -msyidai.com -msyos.com -msysk.com -mszdld.com -mszdld.net -mszlyoozo.com -mszmapp.com -mszq.com -mszsx.com -mszxyh.com -mt-bbs.com -mt-viki.com -mt-wire.com -mt180.com -mt22q4s3w5.com -mt3.com -mt77.com -mt888vip.com -mtab.cc -mtadvert.com -mtadx.com -mtaokj.com -mtavip.com -mtblj.com -mtchome.com -mtcn.net -mtcnsoft.com -mtcsys.com -mtcx99.com -mtcxsw.com -mtcxx.com -mtcyz.com -mtdpai.com -mtdpgame.com -mtdz.com -mte-shenzhen.com -mtedu.com -mtex.work -mtfpos.com -mtgchina.com -mtgmcim.com -mthlyp.com -mthreads.com -mti100.com -mtiancity.com -mtianshitong.com -mtide.net -mtime.com -mtimg.net -mting.info -mtitest.com -mtizt.com -mtjiangsu.com -mtk.com.tw -mtk114.com -mtkdy.com -mtketang.com -mtkpacker.com -mtksj.com -mtm.mo -mtmos.com -mtmss.com -mtmssdn.com -mtmssdn0.com -mtmt.tech -mtmyg.com -mtmyw.com -mtnets.com -mtnets.net -mtoou.info -mtrmart.com -mtschina.com -mtsjgf.com -mtspark.com -mttlab.com -mttsq.com -mtty.com -mtv123.com -mtvip.cc -mtw.so -mtwine.com -mtwl.net -mtxgx.com -mtxshop.com -mtxyx.com -mtxzs.com -mtyun.com -mtzcjy.com -mtzqb.com -mtzscp.com -mtzuichen.com -mu69.com -muaedge.com -muaing.com -mubanjianli.com -mubanwan.com -mubixueyuan.com -mubon.net -mubu.com -mubucm.com -mucaipin.com -mucanzhe.com -mucf.cc -mucfc.com -much001.com -muchangqing.com -muchcloud.com -muchong.com -muchunkang.com -mudanauto.com -mudgj.com -mudiaotx.com -mudongguang.com -mudotarot.com -mudu.com -mudu.tv -muduhs.com -mufengyue.com -muftc.com -muge.info -mugeda.com -muguang.me -muguayuan.com -muhai.net -muhan.co -muhan.ltd -muhoujiemi.com -muhuo.chat -muidar.com -muimg.com -muin.cc -muinsoft.com -mujiangquan.com -mujihotel-beijing.com -mujin.net -mujj.us -mujoy.sg -mukenano.com -mukewang.com -mukongyun.com -mukool.com -mulangbrand.com -mulanlake.com -mulazim.com -mulightapp.com -mulinsen.com -mulinyun.com -multi-parking.com -multiconceptslink.com -multilingual-volc.com -multimodalmatch.com -mulunspring.com -mumayi.com -mumbuy365.com -mumingfang.com -mumunv.com -mumuplayer.com -mumuxili.com -muncard.com -mundane.ink -muniao.com -munling.com -munue.com -muomou.com -muouso.fun -mupao.com -mupceet.com -muqianyun.com -muquan.com -muquan.net -murata-china.com -murdermysterypa.com -murl.tv -murongtech.com -murphysec.com -murphyyi.com -muryi.net -muse.ltd -muselab-tech.com -musenxi.com -muser168.com -museradio.net -musestudio.net -musetransfer.com -mushafa.net -music4x.com -musicchina-expo.com -musiccia.com -musicd.cc -musicdu.com -musicedu8.com -musiceol.com -musicgw.com -musicheng.com -musikid.com -musiness.vip -muslimwww.com -mussgirl.store -mustangbattery.com -mustbull.com -mustelanivalis.com -mustups.net -musyder.com -mutean.com -mutian.net -mutianyugreatwall.com -mutieffect.com -mutouxb.com -mutouyu.com -mutualhunter.com -muwai.com -muwaifanzhiliao.com -muwenxi.com -mux5.com -muxia.fun -muxin.fun -muxiulin.com -muyangkuaibao.com -muyee.com -muyer.com -muyeseed.com -muyewx.com -muyidc.com -muyingjie.com -muyingzhijia.com -muyuanfoods.com -muyuanpharm.com -muyuanwuliu.com -muyuekj0.com -muyuge.net -muyun.work -muyunsoft.com -muzhi.us -muzhibot.com -muzhicao.com -muzhifm.com -muzhigame.com -muzhiwan.com -muzhun.com -muziang.com -muzijie.com -muzisoft.com -muziyueqiu.com -muzuhui.com -mvashanghai.org -mvhere.com -mvmaster.com -mvoicer.com -mvopri5ac153.com -mvorgexv.com -mvote.net -mvpdj.com -mvpmeta.com -mvpmob.com -mvprpg.com -mvpsky.com -mvs-intel.com -mvtianshanlr.com -mvwchina.com -mvyxws.com -mw.com -mw1950.com -mwadx.com -mwave.tech -mwcdns.com -mwclg.com -mwcloudcdn.com -mwcloudcdn.info -mwcname.com -mweda.com -mwemp.com -mwjournalchina.com -mwkj.net -mwquicio.com -mwrf.net -mwrfabc.com -mwstore.com -mwtee.com -mwtg.vip -mww.so -mwyzhcdn.com -mwzhtc.com -mx-china.net -mx-fm.com -mx-industry.com -mx-xz.com -mx007.com -mx175.com -mx3g.com -mxarts.com -mxbc.com -mxbc.net -mxbiao.com -mxchip.com -mxddp.com -mxde.com -mxdia.com -mxdjzj.com -mxdmf.com -mxdpark-gs.com -mxdraw.com -mxdraw3d.com -mxdx.net -mxeosbvt.com -mxew.com -mxflutter.com -mxfy.com -mxgogo.com -mxguan.com -mxhaitao.com -mxhichina.com -mxifund.com -mxitres.com -mxjd.com -mxjtedu.com -mxjyxx.com -mxk.cc -mxkjai.com -mxklchina.com -mxmem.com -mxnavi.com -mxnxs.com -mxnzp.com -mxomo.com -mxpharm.com -mxqe.com -mxria.com -mxsyzen.com -mxtcn.com -mxtronics.com -mxun.com -mxw3.com -mxweiqi.com -mxwz.com -mxxjh.com -mxyinghang.com -mxyn.com -mxzgame.com -mxzx123.net -mxzzzs.com -my-cpaas.com -my-imcloud.com -my-le.com -my-ndns.com -my-qcloud.com -my-summit.com -my-tcloud.com -my.st.com -my0511.com -my0511.net -my0513.com -my0534.com -my0538.com -my0551.com -my0832.com -my089.com -my120.org -my147.com -my1616.net -my22.art -my22.fun -my22.info -my2852.com -my2space.com -my2w.com -my399.com -my3w.com -my4399.com -my510.com -my51y.com -my5v.com -my68.com -my7v.com -my88316666.com -my9166.com -my91app.com -my91game.net -my9527.com -my97.net -myagric.com -myaijarvis.com -myaiwecom.com -myalicdn.com -myalirtc.com -myallvalue.com -myanjian.com -myanmarembassy.com -myanonamouse.net -myapp.com -myapp.ltd -myappdl1.com -myappdl1.net -myappdl2.com -myappdl2.net -myaqsh.com -myarena7.com -myarowanas.com -myauth.us -mybaby100.com -mybabya.com -mybarrefitness.com -mybdqn.com -mybj.com -mybjx.net -mybosc.com -myboyan.com -mybu.net -mybwallet.com -mybxg.com -mycaidan.com -mycaigou.com -mycaijing.com -mycar168.com -mycar58.com -mycaraok.com -mycarbar.com -mycardgame.net -mychery.com -mychery.net -mychinaevent.com -mychinaunicom.com -mychuguan.com -mychunyan.net -myckjr.com -mycloudstudy.com -myclub2.com -mycnc.org -mycodes.net -mycollect.net -mycolorcity.com -mycolorway.com -mycoov.com -mycos.cc -mycos.com -mycos.net -mycos.org -mycospxk.com -mycosresearch.net -mycoss.com -mycoss.net -mycoss.org -mycplife.com -mycqgc.com -mycreate.net -mycyjg.com -mydadui.com -mydao.net -mydatetime.info -mydcis.net -mydcyj.com -mydeal.asia -mydeershow.com -mydf.net -mydical.com -mydidadi.com -mydigi.net -mydigit.net -mydigitex.com -mydnns.com -mydns114.net -mydns8.com -mydnser.com -mydnspod.net -mydnsw.com -mydoc.io -mydoc123.com -mydor.com -mydown.com -mydrivers.com -mydyt.com -myecer.com -myechannel.com -myechinese.com -myeclipsecn.com -myekp.net -myelasticsearch.com -myeriri.com -myex.cc -myezdns.com -myfans.cc -myfdmg.com -myfhospital.com -myfrfr.com -myfun7.com -myfund.com -myfushun.com -mygame66.com -mygame82.com -mygame88.com -mygisdel.com -mygjp.com -mygobatv.com -mygolbs.com -myguancha.com -mygymchina.com -mygzb.com -myhaowai.com -myhayo.com -myhc.net -myherocn.com -myhexin.com -myhithink.com -myhjw.vip -myhkw.com -myhl-china315.com -myhm.org -myhomeok.com -myhongzuan.com -myhopu.com -myhostadmin.net -myhscodes.com -myhuaweicloud-custom.com -myhuaweicloud-date.com -myhuaweicloud-koodrive.com -myhuaweicloud-obs.com -myhuaweicloud.com -myhuilv.com -myhuizhan.com -myhwcdn.com -myhwcloudlive.com -myhwclouds.com -myhwclouds.net -myhxy.com -myidc.club -myider.com -myie.me -myie9.com -myilibrary.com -myimis.com -myip.la -myiplay.com -myir-tech.com -myirtech.com -myitit.com -myityun.com -myjh.net -myjianzhu.com -myjiedian.com -myjob.com -myjob500.com -myjoy777.com -myjujing.com -myk3.com -mykarry.com -mykd.cc -mykeeta.com -mykeeta.net -mykqyy.com -mykscdn.com -mykuaidi.com -mykuaiji.com -mylbabao.com -mylguoji.com -mylhh.com -mylibs.org -mylightsite.com -mylike.cc -mylike.com -mylike120.com -mylikesz.com -mylikeyk.com -mylinkapp.hk -mylitboy.com -myliwu.net -mylotushealth.com -mylovehome.com -mylsfw.com -myluohan.com -mym001.com -mym195.com -mymaitian.com -mymanhua.com -mymaudio.com -mymember.ltd -mymetal.net -mymhotel.com -myminapp.com -mymlsoft.com -mymofun.com -mymoive.com -mymova.com -mymuwu.net -mynatapp.cc -mynb8.com -mynee.com -myo.ink -myoas.com -myoas.net -myodatech.com -myoed.com -myoldtime.com -myopenwrt.org -myoppo.com -myorbita.net -myottad.com -myouhua.com -myouth.net -myp17.com -myp2pch.net -mypaas.com -myparallelstory.com -mypcrun.com -mypethome.com -mypharma.com -mypian.com -mypiao.com -mypiaojia.com -mypitaya.com -mypity.com -mypiwik.com -mypm.net -myprad.com -mypscloud.com -mypsy365.com -mypx.org -myqcloud.com -myqcloud.net -myqee.com -myqqdd.com -myqqjd.com -myr9.com -myra2.com -myrb.net -myreadcloud.com -myreadme.com -myrice.com -myrightone.com -myroome.com -myrqjt.com -myrtx.com -myrunners.com -mysbaojie.com -mysecretrainbow.com -mysemlife.com -myseot.com -myshipjob.com -myshopex.com -myshoptago.com -myshow360.net -myshow800.com -myshown.com -mysinamail.com -mysipo.com -mysiteres.com -mysm888.com -mysmth.net -mysongktv.com -mysore-yoga.com -myspain.org -mysql360.com -mysqlab.net -mysqlpub.com -myssl.com -mystao.com -mystarch.com -mysteel.com -mysteel.net -mysteelcdn.com -mysteelcms.com -mysticalcard.com -mysubmail.com -mysupa.com -mysuperdns.com -mysvw.com -myt126.com -mytaizhou.net -mytaofun.com -mytencentes.com -mythbird.com -mythcall.com -mythcare.com -mythidea.com -mythroad.net -mythsman.com -mythware.com -mythware.net -mytianchang.com -mytijian.com -mytju.com -mytokenapi.com -mytokenpocket.vip -mytoptown.com -mytqwpe.com -mytrix.me -mytt.com -mytv365.com -mytvgame.com -mytxly.com -myuall.com -myubbs.com -myuclass.com -myun.tv -myunke.com -myunlu.com -myusmile.online -myvipsalon.com -myvs.download.prss.microsoft.com -myvsoncloud.com -mywakao.com -mywayboo.net -mywaymeta.com -myweb888.com -myweimai.com -mywhh.com -mywinch.com -mywirebox.com -mywll.com -mywood.cc -myworld6.com -myxxts.club -myxxts.com -myxycjh.com -myxypt.com -myyerrol.xyz -myyishu.com -myyjs.com -myyoudao.com -myypark.com -myyx618.com -myyx915.com -myyzd.com -myzaker.com -myzfw.com -myzhenai.com -myzhengyuan.com -myzhidao.com -myzhiniu.com -myzte.com -myztxyy.com -myzxsx.com -myzxyy.com -myzyy.com -myzyzy.com -mz186.com -mz52.com -mz6.net -mz99.com -mzbei.com -mzbkw.com -mzboss.com -mzdscm.com -mzeyes.com -mzfanyi.vip -mzfile.com -mzfpay.com -mzfsm.com -mzfxw.com -mzgroup.vip -mzgtuan.com -mzh.ren -mzhb.com -mzhen.com -mzhfm.com -mzhu8.com -mzhujia.com -mzihen.com -mzjiacheng.com -mzjinyan.com -mzjzs.com -mzklg.com -mzksgmex.com -mzli.club -mzlwxw.com -mzlx88.com -mzlxcl.com -mzmjyy.com -mznnyud.com -mznznj.com -mzone.site -mzqbt.com -mzrcw.com -mzread.com -mzres.com -mzrmyy.com -mzsdsyy.com -mzsemi.com -mzsky.cc -mzsmn.com -mzsrmyy.com -mzssysmyxgs.com -mzstatic.com -mzsvn.com -mztgame.com -mztspa.com -mzty.com -mztzzx.com -mzuimg.net -mzwu.com -mzxstar.com -mzy0.com -mzyege.com -mzyfz.com -mzyispmc.com -mzyjfcn.com -mzyoudao.com -mzyun.ren -mzyunyin.com -mzyz.com -mzzhgcc.com -mzzjw.com -mzzyk.com -n-bros.net -n0808.com -n0vadesktop.com -n12345.com -n13.club -n18.rcs.revma.com -n1b.com -n2017.com -n21.cc -n21ce.com -n283nser4cjz.com -n3sd.com -n459.com -n5w.com -n63.com -n802.com -n8soft.com -n9z.net -na.ci -naaln.com -nabluemedia.com -naboyi.com -nac88.com -nachuan.com -nacuiwei.com -nadianshi.com -nadioutdoor.com -nadu8.com -naec-cn.com -naeeo.com -naeraxitang.com -nagagame.net -nagain.com -nagar-setu.com -nagcloudcs.com -nagekuai.com -nagezan.net -nahuayuan.com -nahuiyi.com -nahuo.com -nahuo8.com -nahuo9.com -naibabiji.com -naibago.com -naicha99.com -naichabiao.com -naideceas.com -naifei.pro -naifeistation.com -naifenzhiku.com -naijian.net -nail-auto.com -nails7.com -naimal.com -naimei.com -naipan.com -naiping.net -naisuanbeng.com -naitang.com -naitta.com -naiveadmin.com -naiveblue.com -naiwch.com -naixi.com -naixi.org -naixuecha.com -naiyouxuexi.com -najingtech.com -najyj.net -najyw.net -nakedsail.com -nakeli-biotech.com -nakevip.com -naknor.com -nakong.com -nalanchuanmei.com -nalanxi.com -nalati.com -nalichi.com -name2012.com -name321.net -nameidi.com -namejin.com -namepre.com -nameserver.fit -namesilodns.com -nami.com -namibox.com -namichong.com -namihair.com -namipan.com -namiso.com -namisoft.com -namitiyu.com -namkwonglog.com -namoc.org -nan-cable.com -nan1688.com -nanbeige.com -nanbeijt.com -nanbeilaboratory.com -nanbeiyou.com -nanbeiyu.shop -nanbushenghuo.com -nancalelectric.com -nancc.com -nancharencai.com -nanchigroup.com -nanchu.com -nanchunhz.com -nandaauto.com -nandasoft-its.com -nandasoft.com -nandiu.com -nandu.com -nandufoundation.org -nanerjia.com -nanfang-pump.com -nanfangfood.com -nanfen.com -nanfu.com -nanguache.com -nanguakexue.biz -nanguakexue.com -nangualin.com -nanguaxia.vip -nanguowl.com -nangxia.com -nanhaibank.com -nanhaicorp.com -nanhaisw.com -nanhaitoday.com -nanhexinxi.com -nanhua.net -nanhuafunds.com -nanhuangic.com -nanhuazaobao.net -nanhufund.com -nanhujianshe.com -nanhunnvjia.com -nanhuwang.com -nanjbjjt.com -nanjet.com -nanjianggroup.com -nanjiaogroup.com -nanjing-pharma.com -nanjing-reagent.com -nanjing.com -nanjingboiler.com -nanjingbtkt.com -nanjingbyby.com -nanjingchenxi.com -nanjingelectric.com -nanjinggaopeng.com -nanjinghuihe.com -nanjinghuojia.net -nanjingludeng.com -nanjingtianqi114.com -nanjingttym.com -nanjingxinxu.com -nanjingyinuo.com -nanjix.net -nanjixiong.com -nankaimba.org -nanlangshengwu.com -nanlew.com -nanlingwater.com -nanlingzr.com -nanlong.com -nanmodesign.com -nanning-marathon.com -nanninginfo.com -nanningmhw.com -nanningmuseum.com -nanningnongjiao.com -nanningrcw.com -nanningtech.com -nanningxiaoou.com -nanningyouhua.com -nanningyuexing.com -nannjlnk.com -nano-zero.com -nanobody-biolab.com -nanochrom.com -nanoeast.net -nanoer.net -nanoinglobal.com -nanojanus.com -nanomicro.com -nanomotions.com -nanomxenes.com -nanosic.com -nanpowan.com -nanpu.vip -nanpua.com -nanputuo.com -nanqi.org -nanqiangbusiness.com -nanrentu.cc -nanrenwa.com -nanrenwo.net -nanrenzhi.com -nanshanfuzi.net -nanshanlvyou.com -nanshanski.com -nanshiw.com -nanss.com -nantaihu.com -nantong-hst.com -nantongfeixu.com -nantonghua.net -nantoujituan.com -nanvi.com -nanxi.me -nanxiang.info -nanxingmac.com -nanxinwang.com -nanxueqx.com -nanxunfb.com -nanyangcable.com -nanyangdianlan.com -nanyangpt.com -nanyangzb.com -nanyinwealth.com -nanyuecloud.com -nanyuenews.com -nanyuetong.com -nanzhougroup.com -naobaocun.com -naobiao.com -naoda.net -naoffer.com -naokor.com -naokr.com -naominet.live -naono.cc -naosiling.com -naozhong.net -napengzn.com -napiantian.com -naqing-tech.com -naquan.com -naquan.org -naradafoundation.org -naradahotels.com -naradapower.com -narcissoshotel.com -naris-china.com -narkii.com -narochina.com -naruto.red -narwal.com -narwaltech.com -nas-ya.com -nascrew.com -nase.tech -nasfreight.com -nasge.com -nasgetinfo.com -nashwork.com -nasinet.com -naslab.club -nastcorp.com -nasyeo.com -nasyun.com -nat123.com -natachem.com -natapp.cc -natapp1.cc -natapp4.cc -natappfree.cc -natbbs.com -natconn.com -natergy.com -natertech.com -natfrp.com -natgmj.com -nationalchip.com -nationalee.com -nationsky.com -nationstech.com -natnps.com -nattest-china.com -naturali.io -naturaltfc.com -naturalvision.org -nature-museum.net -nature.com -natureholisticwellness.com -naturesvariety-china.com -natywish.com -nauac.com -naupd.com -nav-cn.com -navchina.com -navgnss.com -navigastar.com -navimentum.com -navinfo.com -naxcx.com -naxiaozhu.com -naxide.com -nayatec.com -nayei.com -nayuansu.com -nazarstudios.com -nazhidj.com -nazhilong.com -nazo.fun -nb-bailing.com -nb-jf.com -nb-jiale.com -nb-medicalsystem.com -nb160.com -nb591.com -nba.com -nba98k.com -nbabm.com -nbahero.com -nbahi.com -nbaidai.com -nbakan8.com -nball.cc -nbamyl.com -nbaoke.com -nbappliance.com -nbaqmq.com -nbaqsj.com -nbaqx.com -nbaxiaoshuo.com -nbbiao.com -nbbjack.com -nbbuxiutie.com -nbcbd.com -nbcentre.com -nbchao.com -nbchen.com -nbcqjy.org -nbcsgo.com -nbctg.com -nbcyts.com -nbdavid.com -nbdeli.com -nbdeli.net -nbdeyy.com -nbdisco.com -nbdkj.com -nbdpress.com -nbdyf.com -nbdyyy.com -nbegame.com -nbegame.net -nbelec.com -nbenl.com -nbfeyy.com -nbfkgs.com -nbfox.com -nbgdjt.com -nbginnovations.com -nbgj.net -nbgjwl.com -nbgodo.com -nbgong.com -nbgree.com -nbgy.com -nbhailan.com -nbhao.org -nbhechang.com -nbhhgroup.com -nbhky.com -nbhuke.com -nbhxmr.com -nbhysj.com -nbidifund.com -nbimer.com -nbit6d.com -nbjcae.com -nbjcds.com -nbjingyong.com -nbjisi.com -nbjit.com -nbjlw.com -nbjnw.com -nbjoyo.com -nbjttz.com -nbjzjn.com -nbjzzsw.com -nbkaisheng.com -nbkc-rp.com -nbkdl.com -nbkjcx.com -nbkqyy.com -nblhlyy.com -nblhwy.com -nblilong.com -nblongzhan.com -nblwhb.com -nblyhy.com -nbmai.com -nbmedicalsystem.com -nbmiao.com -nbmidun.com -nbmotive.com -nbmpzs.com -nbmylike.com -nbmyy.com -nbmzyl.com -nbnnn.xyz -nbocc.com -nbosco.com -nbpmia.com -nbpolytheatre.com -nbqixing.com -nbqwrc.com -nbrawwater.com -nbrcg.com -nbrcgg.com -nbrcw.com -nbren.net -nbrj.com -nbrlzy.com -nbruili.com -nbscxh.com -nbsdjyy.com -nbsfgy.com -nbshunjian.com -nbshuoxue.com -nbshzwyy.com -nbsijian.com -nbslkg.com -nbslxh.com -nbsmjt.com -nbsp99.com -nbsqbank.com -nbsti.net -nbstjt.com -nbstrans.com -nbsz.com -nbszgd.com -nbt.ren -nbtlwl.com -nbtobacco.com -nbttbn.com -nbtzjd.com -nbtzsh.com -nbuci.com -nbudp.com -nbunicom.com -nbuser.com -nbvps.net -nbwaf.net -nbwan.net -nbwbw.com -nbweldingtorch.com -nbwelldon.com -nbwetc.com -nbwhg.com -nbwskj666.com -nbxdjt.com -nbxiaoshi.net -nbxry.com -nbxsjg.com -nbxsrc.com -nbyang.com -nbyeda.com -nbyjrf.com -nbyouth.com -nbyyz.com -nbyzyy.com -nbzhongxin.com -nbzhuzhai.com -nbzjpc.com -nbzsq.com -nbzxgj.com -nbzyenergy.com -nc-bio.com -nc189.net -nc530.com -ncarzone.com -ncawzs.com -ncboo.com -ncbuct.com -ncc-cma.net -nccqj.com -ncderuida.com -ncdxbbs.com -ncepujournal.com -ncfcsa.org -ncfgroup.com -ncfimg.com -ncfjj.com -ncfwx.com -ncfz.com -ncgprq.com -nch-bg.com -nchq.cc -nchtech.com -nchycw.com -ncidbj.com -nciyuan.com -ncjrailway.com -nclqq.com -ncmbio.com -ncmem.com -ncmtkj.com -ncmtr.com -ncnynl.com -ncogvki.xyz -ncore.cc -ncpa-classic.com -ncpc.biz -ncpqh.com -ncpssd.org -ncq8.com -ncqiche.com -ncsdyyy.com -ncshxd.com -ncsjhf.com -ncsxy.com -ncsyco.com -nctry.com -nctvcloud.com -nctzsj.com -ncu.me -ncvt.net -ncvtmi.com -ncwsxh.org -ncwsxx.com -ncxhrc.com -ncxinshou.com -ncxuw.com -ncyrqs.com -ncyscb.com -ncyunqi.com -nczfgjj.com -nczfj.com -nczsks.com -nczxst.com -nczxwl.com -nczy.com -nd15.com -nd56.com -nd597.com -ndapp.com -ndbzteck.com -ndcimgs.com -ndcjl.com -ndcpp.com -ndcppx.com -ndcyx.com -nddaily.com -nddnrm.com -nddst.com -ndfdc.com -ndgchina.com -ndgf.net -ndgzy.com -ndhx.net -ndhys.com -ndiip.com -ndj520.com -ndjtwl.com -ndkhn.com -ndkybio.com -ndmh.com -ndoo.net -ndpharm.com -ndsad.com -ndsbbs.com -ndscsoft.com -ndser.net -ndsyy.com -ndszgb.com -nduoa.com -nduoshousi.com -nduotuan.com -ndxlj.com -ndyt.com -ndzfl.com -ndzls.net -ndzsx.com -ne01.com -ne21.com -ne365.com -ne56.com -neapme.com -nearcharge.com -neardi.com -nearsnet.com -nease.net -neashow.com -neat-reader.com -neatifyapp.com -nebulogy.com -neccsh.com -necgokr2-724.acs.wecandeo.com -necool.com -nedfon.co -nedigitals.com -neeca.net -neefood.com -neegle.net -neeinn.com -neep.shop -neeq.cc -neets.cc -neeu.com -neffkb.com -nei-mao.com -nei.tm -neigou.com -neihan.net -neihancommunity.com -neihancommunity.net -neihandiantai.com -neihanfly.com -neihang.net -neihanshequ.com -neimaowang.com -neimenggugames.com -neisha.cc -neitui.com -neituixiaowangzi.com -neixiong8.net -neko.pub -nekoarch.cc -nelkshuhe.com -nellit.info -nellit.net -nellit.xyz -nelson-textiles.com -nelumbosp.com -nengapp.com -nengdarack.com -nenggeimall.com -nenghaoidc.com -nengqiang.com -nengrui.com -nengshida.com -nengshouwangluo.com -nengyuanxx.com -nenufm.com -nenup.com -nenzei.com -neo-yiming.com -neo.org -neo1989.net -neoap.com -neobiochina.com -neoease.com -neoease.org -neofaith.net -neofussvr.sslcs.cdngc.net -neohytung.com -neojos.com -neolee.com -neolix.net -neomodulus.com -neoremind.com -neoscholar.com -neoschool.com -neosey.com -neoyon.com -nep-logistics.com -neptcn.com -neptunus.com -neqtahotelshanghai.com -nercdtv.org -nercel.com -nerin.com -nero-cn.com -nerocats.com -nerochat.com -nerve-corp.com -nervepotato.com -nes-auto.com -nesbbs.com -nesoso.com -nesox.com -nespressochina.com -nestgene.com -nestlechinese.com -nesyouxi.net -net-add.com -net-measure.net -net-rope.com -net-sharp.com -net-swift.com -net-times.net -net0516.com -net111.info -net130.com -net199.com -net2345.net -net263.com -net767.com -netac.com -netandtv.com -netat.net -netbian.com -netbooo.com -netchina100.com -netcoc.com -netconst.com -netcoretec.com -netcute.com -netded.com -netdzb.com -netease-inc.com -netease.com -netease.im -neteasegame.com -neteasegame.net -neteasegames.com -neteasegames.net -netentsec.com -netesee.com -netgamecar.com -netge.com -netherlandvcenter.com -nethonghe.com -netianshannu.com -netiler.com -netinfi.com -netinfi.net -netingcn.com -netitest.com -netkao.com -netman123.com -netnoease.com -netor.net -netpi.me -netpoint25.com -netposa.com -netqd.com -netsmell.com -netspreading.com -netstatic.net -netsun.com -netswise.com -netsyq.com -nettvpro.live -netvp.net -network-hk.com -networkesl.com -networklo.com -netzonesoft.com -netzz.net -neu-reality.com -neucrack.com -neuedu.com -neunn.com -neupaas.com -neuqsoft.com -neuroxiv.com -neuroxiv.net -neusemi.com -neusncp.com -neusoft.com -neusoftmedical.com -neutrontek.com -neux.studio -nevadaheladosjujuy.com -nevem.com -new-elegance.com -new-mobi.com -new-thread.com -new0633.com -new1cloud.com -new253.com -new669.com -new7.com -newacademic.net -newaigou.com -newaircloud.com -newamigo.net -newamstar.com -newansha.com -newaq.com -newasp.com -newasp.net -newayz.com -newbakers.com -newbandeng.com -newbanker.com -newbd.com -newbeaconhotels.com -newbeebook.com -newbeebox.com -newbook8.com -newcapec.net -newcentral.com -newcentury-edu.com -newcger.com -newchainbase.com -newchieve.com -newchinalife.com -newcitygz.com -newclasses.org -newclouddenfender.com -newcoder.com -newcosemi.com -newdao.net -newday.me -newdreamgroup.com -newdroid.net -newdruginfo.com -newdu.com -newdun.com -newe.tv -newelementchina.com -newer2001.com -newevcar.com -neweyezs.com -newft.com -newglp.com -newgscloud.com -newharbour.net -newhb.com -newhbdoor.com -newhopbattery.com -newhopeagri.com -newhopegroup.com -newhqnotary.com -newhtml.net -newhua.com -newikou.com -newistock.com -newjg.com -newkunhua.com -newland-edu.com -newlandaidc.com -newlandcomputer.com -newlandnpt.com -newlesson.com -newlifex.com -newlink.com -newlixon.com -newlongbj.com -newlongma.com -newluobo.com -newmaker.com -newman.mobi -newmargin.com -newmorehot.com -newnanbao.com -newnewle.com -newniu.com -newoasis.cc -newoo.com -neworiental.org -nework360.com -neworldedu.org -newposture.vip -newqjsteel.com -newrathon.com -newrizon.com -news18a.com -newsapp01.com -newsccn.com -newscctv.net -newseasoft.com -newsgd.com -newsgu.com -newshengwei.com -newshs.com -newsighting.com -newsing.com -newskj.com -newskj.org -newskyunion.com -newsletter-cn.com -newsletter-nespresso.com -newslqy.com -newsmth.com -newsmth.net -newsmy-car.com -newsmy.com -newsmyshop.com -newsn.net -newspluse.com -newssc.net -newssc.org -newstarpress.com -newstartsoft.com -newstjk.com -newsungroup.com -newsungroup.net -newsv5.com -newsxc.com -newsxcar.com -newsxy.com -newsyc.com -newszjk.com -newtab123.com -newtalentaward.com -newtimeai.com -newtimevalve.com -newtonghua.com -newtop100.com -newtouch-elec.com -newtouch.com -newtranx.com -newtrip.com -newume.com -newupbank.com -newvfx.com -newvisionvc.com -newvr.com -newwatchesale.com -newxing.com -newxitong.com -newxue.com -newyanshamall.com -newyifagroup.com -newyishi.com -newyorkluxurywatch.com -newyoton.com -newyx.net -newzealandvscenter.com -newzgc.com -newzhizao.com -newzhongyuan.com -nexmoe.com -nexon.to -next-bei.com -next-playground.com -nextclass.club -nextclass.com -nextday.im -nextech-x.com -nextjoy.com -nexto2o.com -nextpcb.com -nextplayground.com -nextriskcontrol.com -nextrt.com -nextstudios.com -nexttao.com -nextvid.net -nextworkshop.net -nextyu.com -nexus-holding.com -nexus.dell.com -nexusedgeio.com -nexushd.org -neyetwatcher.com -neytap.com -nezhu.com -neznanskyphoto.com -nf-ref.com -nf.video -nf108.com -nf56.com -nfc315.com -nfcic.com -nfcmag.com -nfcreader.net -nfcs-med.com -nfcs-medical.com -nfdx.net -nffq.net -nffund.com -nfgjhr.com -nfksjkfs.com -nflchina.com -nflsxl.com -nfmedia.com -nfmrtfv.com -nfnews.com -nfoservers.com -nfpeople.com -nfqbyp.com -nfs-china.com -nfschina.com -nfsyx.com -nftrr.com -nfvalve.com -nfwl168.com -nfxsy.com -nfyeya.com -nfyny.com -nfyun.vip -nfyy.com -nfyyzcfy.com -nfzhouyi.com -nfzmy.com -nfzzh.com -ng-alain.com -ng021.com -nga.wiki -ngaa.info -ngaa.shop -ngaa.top -ngaacdn.com -ngaacdn.net -ngaagslb.com -ngaagslb.net -ngabbs.com -ngacn.cc -ngacn.com -ngarihealth.com -ngbbs.com -ngc-marine.com -ngcgears.com -ngctransmission.com -ngcz.tv -ngedu.net -ngfcyy.com -ngh6.com -nghmesc.com -ngicer.com -nginstar.net -ngjjtg.com -ngkjjt.com -ngksz.com -ngmap.com -ngmyt.com -ngngf.com -ngnice.com -ngnlink.net -ngo.com -ngotcmszh.com -ngread.com -ngrok.cc -ngs1685.com -ngswgs.com -ngtravelercn.com -ngty556.com -ngwxw.com -ngxn.com -ngzyxx.com -nh.com -nh2h.com -nh56.com -nhaidu.com -nhaidu.net -nhcec.com -nhcilab.com -nhcsw.com -nhd-mart.com -nhdacrw.xyz -nhdia.com -nhdmd.com -nhfyyy.com -nhganggeban.com -nhhongyi.com -nhjjlt.com -nhkaiyang.com -nhkw-zh-hlscomp.akamaized.net -nhkwlive-xjp.akamaized.net -nhlq.com -nhmuni.com -nhnexpo.com -nhnst.com -nhooo.com -nhrca.org -nhren.com -nhspd.com -nhwa-group.com -nhxz.com -nhygkj.com -nhzb.com -nhzhaopin.com -nhzj.com -nhzs.com -ni8.com -ni93.com -nianchu.net -nianhuawan.com -niankawang.com -nianlingjisuanqi.com -nianlun010.com -niannz.com -nianqin.cc -nianqin123.com -nianshao.me -niansir.com -niao95.com -niaobulashi.com -niaocms.com -niaogebiji.com -niaola.com -niaoquan.fun -niaosuangao.online -niaowoclub.com -niaoyun.com -niba.com -nibaguai.com -nibaku.com -nibj.com -nibomu.com -nic.ren -nic.xin -nicaicheng.com -nicaifu.com -nicaifu.net -nice-app.com -nice-china.com -nice1688.com -nicebing.com -nicebooker.com -nicecdn.com -nicefilm.com -niceguo.com -niceinno.com -niceios.com -niceisp.com -nicekid.com -niceloo.com -nicenergy.com -nicesnow.com -nicetheme.xyz -nicetuan.net -nicewatch.cc -niceyea.com -nicezhuanye.com -nichuanbo.com -nickbussok.com -nicksxs.com -nicky1605.com -nicolaszhao.com -niconiconi.cc -nicosu.com -nicot-motor.com -nicotine.vip -nics365.com -nicsbuy.com -nicwind.com -nidecms.com -nidiandaojia.com -nie.io -nieapps.com -niegobrand.com -niegoweb.com -nielsenccdata.tv -nies.org -niexiaotao.com -nieyou.com -nifdc.com -nifengz.com -nightanddaythegame.com -nightcity.pub -nightmare.press -nihao.net -nihaoafrica.org -nihaodd.com -nihaotv.net -nihaotw.com -nihaowang.com -nihil.cc -nihonngo.site -niiam.com -niiceda.com -niiddm.com -niimbot.com -niiwoo.com -nikanpian.com -nike-inc.com.tw -nike.host -nikefans.com -niketracking.com -nikke-de.com -nikke-fr.com -nikke-global.com -nikke-sea.com -nikkisoft.com -nikkiup2u2.com -nikkon-china.com -nilai.com -nileloan.com -nim-lang-cn.org -nimitzvac.com -nimolife.com -nimotion.com -nimzx.com -nindeli.com -nine-rivers.com -ninebot-link.com -ninebot.com -nineplaying.com -nineroad.com -ninesix.cc -ninestargroup.com -ninestarmall.com -ninetylab.com -nineya.com -ning0370.com -ningban.com -ningbo-airport.com -ningbocat.com -ningboenlighten.com -ningboexport.com -ningbofy.com -ningborunner.com -ningbotianxia.com -ningbotm.net -ningbowater.com -ningdo.com -ningdong.com -ninghao.net -ninghuoban.com -ningidc.com -ningkangyuan.com -ningkekeji.com -ninglutech.com -ningma.com -ningmengdou.com -ningmengyun.com -ningshing.com -ningtingche.com -ningto.com -nington.com -ningxi.com -ningxiacaijing.com -ningxiagames.com -ningxiahuangheyun.com -ningxingxing.com -ningzhe.net -ningzhi.net -ningzhishidai.com -ningzhitec.com -ninjacn.com -ninjadq.com -ninomiya.store -nint.com -nintaus.com -ninthpalace360.com -nio.com -nioapis.com -niozhr.com -niparts.com -nipei.com -nipic.com -nipponcore.com -nis.stream.publicradio.org -nischina.org -nishuoa.com -nissmi.com -nitaitag.com -nittoseiki-cn.com -nitutu.com -niu-tu.com -niu.com -niua.com -niuacc.com -niuap.com -niubalun.com -niubb.net -niubibsn.com -niubilai.com -niubilety.com -niubixia.com -niubo.cc -niuboli.com -niucache.com -niucdn.com -niuche.com -niuclass.net -niucodata.com -niudai120.com -niudashu.com -niudie.cc -niufang.net -niufun.com -niug8.com -niugame.net -niugp.com -niuguwang.com -niuhuagong.com -niujinniu.com -niukk.com -niuming147.com -niunai.com -niuniu-dns.com -niuniufund.com -niuniutui.com -niupiano.com -niupianwang.com -niupinhui.com -niupu.com -niuqia.com -niurenqushi.com -niuschools.com -niushe.com -niushield.online -niushoushan.net -niutech.com -niutk.com -niutoushe.com -niutrans.com -niuwatch.com -niuwk.com -niuxiaoer.net -niuxyun.com -niuyou5.com -niuyuan.com -niuza.com -niuzhigongzuo.com -niuzhu.com -niuzhuan-test.com -nivtc.com -niwangwang.com -niwodai.com -niwodai.net -niwoxuexi.com -nixi.win -nixin99.com -nixingtao.com -nixwang.com -niyingseo.com -nizhan888.com -nizi88.com -nizkeyboard.com -nj-anruitai.com -nj-bl.com -nj-bw.com -nj-chishun.com -nj-control.com -nj-deli.com -nj-dhl.com -nj-gw.com -nj-halfmarathon.com -nj-hr.com -nj-huaqiang.com -nj-hust.com -nj-jp.com -nj-jy.com -nj-kejin.com -nj-kk.com -nj-maici.com -nj-nanhuai.com -nj-newhope.com -nj-qiyiguo.net -nj-reagent.com -nj-ss.com -nj-tencentclb.cloud -nj-tencentclb.com -nj-tencentclb.net -nj-tencentclb.work -nj-test.com -nj-tongrentang.com -nj-tops.com -nj-tq.com -nj-xyzs.com -nj-zhengze.com -nj-zhongbo.com -nj-zj.com -nj0827.net -nj12320.org -nj127.com -nj13z.net -nj1937.org -nj29jt.net -nj303yy.com -nj63.com -nj87.com -njabsw.net -njaces.com -njacme.com -njajjt.com -njajt.com -njaline.com -njanmu.com -njaolian.com -njaoti.com -njatl.com -njavc.com -njbaisou.com -njbaoxun.com -njbdhb.com -njbestway.com -njbhec.com -njbhhb.net -njbiaochen.com -njbj888.com -njbnw.com -njbpvi.org -njbsby.com -njbtkt.com -njbx.com -njbytyq.com -njc100.com -njcangong.com -njcaringmedical.com -njcatv.net -njcbcmjt.com -njccwei.com -njcdata.com -njcedu.com -njcgs.com -njchanke.com -njchengyi.com -njchina.com -njcitygas.com -njcjby.com -njcjszyy.com -njcjzz.com -njcky.com -njcl-gear.com -njclwlkj.com -njcmotor.com -njcmsj.com -njcnmc.com -njcomptech.com -njctcm.com -njcttq.com -njcw.com -njcwlk.com -njcxj.com -njcyt99.com -njd1.com -njdapaidang.com -njdatang.com -njdewo.com -njdftl.com -njdfwb.com -njdfzg.com -njdianyong.com -njdiip.com -njdndz.com -njdnjt.com -njdq-ld.com -njdqgytg.com -njdtyx.com -njdzjcyq.com -njdzn.com -njeport.com -njfdyy.com -njfjkj.com -njfk.net -njfkdq.com -njfklngl.com -njflt.com -njfmz.com -njforge.com -njfuruisi.com -njfybjy.com -njfzad.com -njfzdc.com -njfzjc.com -njfzm.net -njgaokai.com -njgb.com -njgcct.com -njgcyy.com -njgdbus.com -njgdhb.com -njgdjg.com -njgdmm.com -njgean.com -njggk.com -njgh.org -njghes.com -njghgf.com -njgjj.com -njgjngq.com -njgjsj.com -njgjyy.com -njgljy.com -njglobalielts.com -njglsx.com -njglyy.com -njgn.com -njgreen.net -njgsmach.com -njguangkui.com -njgulan.com -njguochu.com -njguotong.com -njguoxuan.com -njgy.net -njgyjx.com -njgzm.com -njhanrui.com -njhbyl.com -njhctest.com -njhcyq.com -njhd025.com -njhddl.com -njhdzy.com -njhengda.com -njhengyou.com -njheyang.com -njhgame.com -njhightech.com -njhipower.com -njhjgs.com -njhjyy.com -njhkyq.com -njhmmr.com -njhnzx.com -njhonest.com -njhongfa.com -njhonghu.com -njhongya.com -njhoutai.com -njhrjt.com -njhsjt.com -njhszoo.com -njhtg.com -njhtjt.com -njhuachuang.com -njhuatian.com -njhuatong.com -njhuazhu.com -njhunyan.com -njhxnpx.com -njhxzx.com -njhy-elec.com -njhy-tech.com -njhzypiano.com -njiabe.com -njiairport.com -njianzhan.com -njibhu.com -njibmfwq.com -njicg.com -njicia.com -njiec.com -njiig.com -njimi.com -njjbsc.com -njjcbio.com -njjdzl.com -njjgfckyy.com -njjgjs.com -njjgzlgl.com -njjhjt.com -njjht.com -njjiancai.com -njjianguo.com -njjiantian.com -njjienuo.com -njjifei.com -njjknkyy.com -njjn.com -njjnrc.com -njjnwzyy.com -njjnzc.com -njjrc.com -njjrkj.com -njjspzx.com -njjst.com -njjsxy.com -njjsyy.com -njjtjl.com -njjttt.com -njjtxx.org -njjundong.com -njjunpu.com -njjuntong.com -njjwkj.com -njjxtz.com -njjz.net -njjzsensor.com -njjzyxh.com -njkaifeng.com -njkaiguan.com -njkcsj.com -njkeeryq.com -njkefayuan.com -njkerun.com -njkeystone.com -njkhhb.com -njkhly.com -njkilter.com -njklclear.com -njkongte.com -njkoopan.com -njkpdz.com -njkq.net -njkskn.com -njkzgjj.com -njl114.com -njlanwu.com -njletop.com -njlg56.com -njlhzn.com -njlianyang.com -njlietou.com -njlike.com -njlingyun.com -njliterature.org -njlizhuo.com -njljhy.com -njljjy.com -njljscl.com -njlkjc.com -njlndl.com -njlofty.com -njlonsen.com -njloyalty.net -njlrxx.com -njlsw.com -njltxx.com -njluye.com -njlyc.com -njlyjt.com -njlzsx.net -njmama.com -njmapp.com -njmatx.com -njmbwxzx.com -njmdzx.net -njmeisai.com -njmes.org -njmjs.com -njmjzn.com -njmkt.com -njml120.com -njmlxy.com -njmoon.com -njmsdk.com -njmuseum.com -njmuseumadmin.com -njmwwl.com -njnanlin.com -njnanmu.com -njnaws.com -njndgl.com -njnemin.com -njnewgreen.com -njnfwl.com -njnhsx.net -njnhyx.net -njnii.com -njningyi.com -njnkxt.com -njnkzz.com -njnpfl.com -njntdj.com -njnwyy.com -njnysoft.com -njnzrs.com -njodu.com -njouman.com -njpeptide.com -njpkwater.com -njpkzyy.com -njpmp.com -njpuao.com -njpud.com -njpujiang.com -njqchyxh.com -njqhjy.net -njqifu.com -njqihong.com -njqinghai.com -njqixiashan.com -njqxrc.com -njrbjd.com -njrealway.com -njrgrj.com -njrjt.com -njrmzx.com -njrnk.com -njrs119.com -njrsks.net -njrsxh.com -njruipu.com -njruisen.com -njrunk.com -njrzkj.com -njsadz.com -njsanhui.com -njsdjt.com -njsdyy.com -njsech.com -njsech.net -njsenwo.com -njservo.com -njsfyb.com -njshengde.com -njshenglue.com -njshsh.com -njshsw.com -njsimba.com -njsjz.com -njskxlyy.com -njskxlyy.net -njslaq.com -njslawyers.org -njsljy.com -njsme.com -njsmz.com -njspkj.com -njspkrmyy.com -njsqxqyy.com -njsrsyxx.com -njsspeek.com -njstht.com -njstia.com -njstudy.com -njstx.net -njstzbxxx.com -njsujing.com -njsunchem.com -njsunlord.com -njsunshine.com -njswgs.com -njswkj.com -njsxbw.com -njsxfxh.com -njsyue.com -njsyxy.com -njszxyy.com -njszy.com -njtaihong.com -njtapery.com -njtechsafety.com -njteyun.com -njtgdq.com -njthgy.com -njthsp.com -njtjyq.com -njtlzdh.com -njtn.com -njtobacco.com -njtoyo.com -njtqw.com -njtrabon.com -njtransplant.com -njtrh.com -njtrq.com -njtst.com -njuchem.com -njued.com -njuoe.com -njupco.com -njust.pub -njuup.com -njuwh.com -njvcare.com -njvkd.com -njw88.com -njwbjj.com -njwcjx.com -njwds.com -njweixiao.com -njweiyi6.com -njwmbj.com -njwpdi.com -njwqqx.com -njwrr.com -njwsp.com -njwtm.com -njwtqx.com -njwuhe.com -njwww.net -njwx.com -njwz.net -njwzjsw.com -njxax.com -njxcj.com -njxfcft-tencentclb.cloud -njxfcft-tencentclb.com -njxfcft-tencentclb.net -njxfcft-tencentclb.work -njxiaochi.com -njxizebio.com -njxjjsjt.com -njxkyy.net -njxlhd.com -njxlxx.com -njxnjt.com -njxsmz.com -njxty.com -njxueyun.com -njxushang.com -njxwyl.com -njxxrc.com -njxyyy.com -njxzwh.com -njyafeng.com -njyaoze.com -njycwy.com -njydky.com -njyec.com -njyhhj.com -njyhznkj.com -njyjglxh.com -njyjxh.com -njyjzz.com -njyouwin.com -njypk.com -njyqhj.com -njyqmj.com -njyspharma.com -njysw.com -njytian.com -njytyy.com -njyuanlang.com -njyule.club -njyulong.com -njyuyuan.com -njyxdq.com -njyy.com -njyy.name -njyydl.com -njyyhyxh.com -njyysf.net -njyz.net -njyzdl.com -njyzgz.com -njyzmj.com -njzb.net -njzb.org -njzdhotel.com -njzdyq.com -njzdyy.com -njzec.com -njzefeng.com -njzfy.com -njzhengluan.com -njzhengyuan.com -njzhituo.com -njzhongtuo.com -njzhsw.com -njzhuce.com -njzhzx.net -njzikao.com -njzj.net -njzjamc.com -njzkwiot.com -njzkyy.com -njzqzs.com -njzrdq.com -njzsgroup.com -njzxgy.com -njzxxyy.com -njzychemical.com -njzztyl.com -nk-sh.com -nk8686.com -nkf-pharma.com -nkiec.com -nkjy.com -nkshw.com -nkuytzv.com -nkygty.com -nkzy.com -nlark.com -nlbgt.com -nlecloud.com -nlhszc.com -nliniz.com -nlinkline.com -nlktj.com -nlogn.art -nlpjob.com -nls1853.com -nlsc.group -nlscan.com -nlteck.com -nlttms.com -nlww168.com -nlxn.com -nlypx.com -nlyzzzxrmyy.com -nlzpw.com -nlzpy.com -nm178.net -nm8yx.com -nmb-bj.com -nmbcp.com -nmbfxy.com -nmboat.com -nmbxd1.com -nmbyh.com -nmcoo.com -nmcpo.com -nmet168.com -nmgbaiju.com -nmgchina.cc -nmgczx.com -nmgd.com -nmgfood.net -nmgfrank.com -nmgfy.com -nmggwy.org -nmggyy.com -nmghhjt.com -nmghtszkj.com -nmgjdxy.com -nmgjkmc.com -nmgjtjt.com -nmgjxjy.com -nmgjyzh.com -nmgjzyxh.com -nmglabs.com -nmglawyer.com -nmgmarathon.com -nmgmzys.com -nmgonline.com -nmgrsksw.com -nmgswkj.com -nmgswtz.com -nmgup.com -nmgwhly.com -nmgwxgs.com -nmgyjszx.com -nmimi.com -nmjtzy.com -nmjyl.com -nmkjxy.com -nmliao.cc -nmlpa.com -nmod.net -nmpfkj.com -nmrdata.com -nmrxw.com -nmsl.gs -nmslwsnd.com -nmt2.com -nmtyxy.com -nmufh.com -nmvps.com -nmwbk.com -nmweidian.com -nmxc.ltd -nmxxprt.com -nmzh.net -nn-jinlun.com -nn-tct.com -nn.com -nn12333.com -nn1yy.com -nn1zx.com -nn2fy.com -nn2yy.com -nn3yy.com -nn4yy.com -nn4z.com -nn5itt.com -nn5yy.com -nn6yy.com -nn6zx.com -nn7yy.com -nn8yy.com -nn9yy.com -nnairport.com -nnanyang.com -nnayd.com -nnbainian.com -nnbanrui.com -nnbbrn.com -nnbdfyy.com -nnbnutritionchina.com -nnboao.com -nnboyi.com -nnbsjyk.com -nnbtl.com -nnbupin.com -nnbyg.com -nncbre.com -nncc626.com -nncg1688.com -nnch.net -nnchuangliang.com -nnchyy.com -nncj.com -nncjnkyy.com -nncjyy.com -nncjzc.com -nnclgs.com -nncnjh.com -nnctjt.com -nnctzcfz.com -nncwsoft.com -nncxjh.cc -nncydyf.com -nncytz.com -nndache.com -nndascom.com -nndayuan.com -nnddssaaddeeyy.com -nnddxd.com -nndegas.com -nndims.com -nndj168.com -nndjg.com -nndjxcl.com -nndsj.co -nndssk.com -nnduyi.com -nndya.com -nndylm.com -nndz3xu7.com -nnedqp.com -nnedu.com -nnewn.com -nnfae.com -nnfcetyy.com -nnfcxx.com -nnfdys.com -nnflkyz.com -nnflzyyy.com -nnfrp.com -nnfsw.com -nnfwwb.com -nnfwzl.com -nngadt.com -nngdjt.com -nngeo.com -nnggzxc.com -nngj.com -nngjj.com -nngjjx.com -nnglbj.com -nnglhm.net -nngljc888.com -nngreenscm.com -nngrhj.com -nngtbw.com -nnguphoto.com -nngxqscy.com -nngyds.com -nnhaidong.com -nnhaoyuan.com -nnhbsl.com -nnhccc.com -nnhccl.com -nnhcszc.com -nnhdzc.com -nnhengfu.com -nnhh8.com -nnhhhbgs.com -nnhkdz.com -nnhlgx.com -nnhltz.com -nnhmcj.com -nnhongbei.com -nnhpbbs.com -nnhqcy.com -nnhqjd.com -nnhrsip.com -nnhtsy.com -nnhuaxin.com -nnhuaxiong.com -nnhuishi.com -nnhwxh.com -nnhxgg.com -nnhxwygs.com -nnhytyy.com -nnhzkj888.com -nnhzt.com -nnicv.com -nnipaas.com -nnippsp.com -nnit30.com -nnjajt.com -nnjajt.xyz -nnjdgl.com -nnjgsd.com -nnjht.com -nnjhwy.com -nnjiangmei.com -nnjieshuo.com -nnjingchu.com -nnjingda.com -nnjingyuan.com -nnjioko.com -nnjiuji.com -nnjiuzhidu.com -nnjj120.com -nnjjk.com -nnjjtgs.com -nnjkjzs.com -nnjkwy.com -nnjl.com -nnjmskj.com -nnjnwg.com -nnjr.co -nnjsdsoft.com -nnjsgy.com -nnjsypx.com -nnjsza.com -nnjszlsb.com -nnjt.com -nnjthx.com -nnjtjt.com -nnjtkt.com -nnjtyq.com -nnjuheli.com -nnjunliang.com -nnjxbs.com -nnjy100.com -nnjzd.com -nnjzybl.com -nnkailong.com -nnkcy.com -nnkeerlab.com -nnkeruan.com -nnkeyuan.com -nnkhjq.com -nnkin.com -nnkj77.com -nnkqfs.com -nnkxnz.com -nnlanfang.com -nnlfcm.com -nnlgjt.com -nnlib.com -nnljhb.com -nnljoa.com -nnljsw.com -nnlsbl.com -nnlvdu.com -nnlwoo.com -nnlxart.com -nnlxs.com -nnlyjp.com -nnlzhs.com -nnmama.com -nnmhzc.com -nnminghe.com -nnmingyuanyun.com -nnmjm.com -nnmsjdgs.com -nnmutong.com -nnmwsy.com -nnmyst.com -nnmzbg.com -nnmzfy.com -nnmzof.com -nnmzsj.com -nnn.vip -nnn666.com -nnnen.com -nnnews.net -nnnfsy.com -nnngs.com -nnnntv.com -nnnuo.com -nnpckj.com -nnpma.com -nnpml.com -nnpnzx.com -nnpp.vip -nnqh.net -nnqianfan.com -nnqmjy.com -nnqsk.com -nnrbsoa.com -nnrc.net -nnrfjc.com -nnrig.com -nnrkz.com -nnrongjie.com -nnruixin.com -nnrxzm.com -nnryf.com -nnrzfw.com -nnsanke.com -nnsatai.com -nnsbc.com -nnsc6.com -nnscsy.com -nnsdygs.com -nnsenhong.com -nnsftz.com -nnsg520.com -nnsgx.com -nnshengan.com -nnshenghua.com -nnshzhg.com -nnsirui.com -nnsjcgs.com -nnslx.com -nnslzy.com -nnsmk.com -nnsmy.com -nnsqr.com -nnsrjsnzp.com -nnssyjs.com -nnstbss.com -nnsugar.com -nnsuoyu.com -nnsupeng.com -nnswdx.com -nnsxd.com -nnsygs.com -nnsylq.com -nnsymy.com -nnsynldc.com -nnsynqzyyy.com -nnsz.com -nnszwl.com -nnt0.net -nntaichu.com -nnthink.com -nntlj.com -nntlyy.com -nntobo.com -nnttsoft.com -nntuobang.com -nntxw.com -nntzgz.com -nnups.com -nnwb.com -nnwhg.com -nnwilking.com -nnwitkey.com -nnwk.net -nnwow.com -nnwrxd.com -nnwsgl.com -nnwtgs.com -nnwxtzgs.com -nnwysc.com -nnwytl.com -nnxchda.com -nnxcx.com -nnxczxjt.com -nnxdj.com -nnxfz.com -nnxiehehospital.com -nnxinxiang.com -nnxiyun.com -nnxjtf.com -nnxknkyy.com -nnxl.net -nnxmbh.com -nnxqy.com -nnxsypco.com -nnxt.net -nnxxzl.com -nnybf.com -nnybskq.com -nnych.com -nnydcs.com -nnyfjc.com -nnyfyfy.com -nnyhjc.com -nnyhtx.com -nnyhxl.com -nnyingxuan.com -nnyiya.com -nnyjpco.com -nnykx.com -nnylhz.com -nnynrc.com -nnyongzhou.com -nnysart.com -nnyunying.com -nnyy17.com -nnyypc.com -nnyyq.com -nnyyyy.com -nnzc.net -nnzdbz.com -nnzgh.org -nnzgkj.com -nnzhaoguan.com -nnzhenyukj.com -nnzhnm.com -nnzhuoli.com -nnzjjckj.com -nnzjqc.com -nnzksy.com -nnzkzs.com -nnzljx.com -nnzmyx.com -nnzn1.com -nnzp.com -nnzp.net -nnzp8.com -nnzw168.com -nnzxtx.net -nnzyjob.com -nnzykf.com -no-mad-world.club -no1news.com -no8ms.com -noahedu.com -noaheducation.com -noahgroup.com -noahhealthcare.com -noahpharm.com -noahsnail.com -noahsoft-vn.com -noahteck.com -noahwm.com -noarter.com -nobb.cc -nobel120.com -nobievcharger.com -noblefashion.hk -nobleliftgroup.com -noblove.com -nocang.com -nocare.com -noclyt.com -nocobase.com -nocode-tech.com -nocode.com -nod32jihuoma.com -node-is.green -node1link.xyz -nodefu.net -nodeing.com -nodejs999.com -nodekey.com -nodeme.site -nodepacific.com -nodpcba.com -noeic.com -nohost.pro -nohup.cc -noipto.host -noirphoenix.studio -noizztv.com -nokeeu.com -nokia-sbell.com -nokia.press -nokia88.com -nokparts.com -nokurack.com -nolanchou.com -nolibox.com -nologo.tech -nolovr.com -nomax.vip -nome.com -nomura-nset.com -nomuraoi-sec.com -nonfemet.com -nongbaike.net -nongbaotong.com -nongcun5.com -nongcundating.com -nongfadai.com -nongfuspring.com -nonggan.com -nonghushi.vip -nongji1688.com -nongji1958.com -nongji360.com -nongjiao.com -nongjiaoyun.com -nongjitong.com -nongjx.com -nongkaigufen.com -nongkeyu.com -nongli.com -nongli.net -nonglirili.net -nongmintv.com -nongnet.com -nongpin88.com -nongplay.com -nongshang.com -nongxinyin.com -nongyao001.com -nongye.tv -nongyedns.com -nongyelu.com -nongyemen.com -nongyie.com -nongyu.net -nonobank.com -noobboss.com -noobkrf.com -noobmb.com -noobn6.com -noobofficial.com -noobsb.com -noobshanhe.com -noobtime618.com -noobvip.com -noobwatches.com -noobyard.com -noobyy.com -noobzz.net -noodba.com -noogel.xyz -noontec.com -noops.me -nooshen.com -nootoo.com -nooxion.com -noposion.com -nor-land.com -noratechpharma.com -norchem-pharma.com -nordicic.com -nordicways.com -nordikr.com -nordkete.com -nordonfire.com -nordritools.com -norinco-vehicle.com -norinco.com -norincogroup-ebuy.com -norislam.com -noritzd.com -normanes.com -normar8888.com -normcore.com -normstar.net -norroybioscience.com -norsencn.com -north30degrees.com -northbundforum.com -northdy.com -northernlights.ink -northgun.com -northland-bio.com -northsoar.com -northtexascribs.com -northtimes.com -nosec.org -nosoul99.com -nossmoke.com -nosub.net -nosuchfield.com -nosugar.tech -nosugartech.com -not3.com -notbucai.com -note52.com -notedeep.com -notetao.com -notetech.org -notonlymoon.com -notrisk.com -nouoo.com -nouriz.com -nova-test.com -novaicare.com -novapps.com -novastagepharma.com -novastargame.net -novaxinli.com -novel-supertv.com -novelbio.com -novelfm.com -novelfmpic.com -novelfmstatic.com -novelfmvod.com -novell.me -novelquickapp.com -novelquickapppic.com -novemideas.com -novipnoad.com -novo-auto.com -novo-biotech.com -novocool.com -novocranes.com -novodriv.com -novogene.com -novosns.com -novotelcitygate.com -novotrail.com -novotrails.com -novots.com -novtecgroup.com -novtium.com -now-cn.net -nowapi.com -nowbeta.com -nowchip.com -nowcndns.com -nowcoder.com -nowcoder.net -nowcoder.org -nowec.com -nowhttps.com -nowmsg.com -nowo.com -nowodds.com -nowre.com -nows.fun -nowscore.com -nowtop.net -nowxz.com -noxagile.duapp.com -noxgroup.com -noxnny.com -noxxxx.com -noyes88.com -npbbs.net -npbeta.com -npc233.com -npcka.com -npedi.com -npfls.com -nphoto.net -npi-sh.com -npilasers.com -npjzjx.com -nplusgroup.com -nplusgroup.net -npmmirror.com -npmtrend.com -npoall.com -npodevelopment.org -npoll.net -npp-battery.com -npp.cc -npqx.com -nprc.net -nprnat-i.akamaihd.net -npsdyyy.com -npsel.com -nptpark.com -nptparking.com -nptwedding.com -npub.net -npuxs.com -npxsw.com -npz.com -nq6.com -nqctek.com -nqez.com -nqiief.com -nqjt.com -nqlai.com -nqmoui.com -nqqpp.com -nr-esc.com -nrb.cc -nrbbearing.com -nrdzqwd.com -nrec.com -nrenba.com -nri-beijing.com -nrisc.com -nrmchina.com -nrmtc.com -nrsfh.com -nrsg.net -nruan.com -nrwspt.com -nrzb0.com -ns-china.net -ns1.hk -ns1011.com -ns168.net -ns222s.com -ns365.net -ns5n.com -ns6s6.com -ns8d.com -nsbdjssy.com -nsbeta.info -nsccsc.com -nschctw.com -nscloudwaf.com -nscscc.com -nscscc.org -nsd-at.com -nsdfx.net -nsdic.com -nsdszsyxx.com -nsdt.cloud -nseac.com -nsecsoft.com -nseia.com -nsemii.com -nsfocus-sase.com -nsfocus.com -nsfocus.net -nsforce.net -nsfz.net -nsfzqhkg.net -nsgz.net -nshen.net -nshzpks.com -nsig.com -nsini.com -nsisfans.com -nskfagcn.com -nsknsk.com -nskwj.com -nsm-electrical.com -nsmodel.com -nsmovie.com -nsoad.com -nsqtlcdn.cc -nsqtlcdn.info -nsrcup.com -nsrfww.com -nsrjlb.com -nsrmarine.com -nsseii.com -nsshare.com -nsstream.com -nsswa.org -nstfhg.com -nstggroup.com -nsuci.com -nsuuu.com -nsw58.com -nsw88.com -nsw99.com -nswhj.com -nswscp.com -nswyun.com -nswzs.com -nsxww.com -nsydt.com -nsynu.com -nszmz.com -nszxsyxx.com -nszynd66ggbcx.com -nt.app -nt.cc -nt56.net -nt6y.com -nt7fck19y3.com -ntaow.com -ntc-lft.com -ntc.sh -ntcaac.com -ntcchina.com -ntce.com -ntcfy.com -ntcor.com -ntdingke.com -ntdjk.com -ntdsyy.com -ntdvf.com -ntes53.com -ntes53.net -ntescdn.com -ntesmail.com -ntesunn.com -ntfabu.com -ntfan.com -ntfegd.xyz -ntfhgj.com -ntflk.com -ntfssh.com -nthcl.com -nthfw.com -nthongda.com -nthysp.com -nti56.com -ntiee.com -ntjgjt.com -ntjgpx.com -ntjhbw.com -ntjhzy.com -ntjob88.com -ntjoy.com -ntjsxy.com -ntjymall.com -ntjzyxh.com -ntkfqjy.com -ntlcjd.com -ntlmy.com -ntmlxm.com -ntmyexp.com -ntneuro.org -ntp.felixc.at -ntp123.com -ntpcb.com -ntpcn.com -ntpharma.com -ntptimeserver.com -ntqcct.com -ntqfdq.com -ntrailway.com -ntrc.com -ntrcb.com -ntrun.com -ntsanxin.com -ntservicepack.microsoft.com -ntsgx.com -ntsuye.com -nttui.com -ntwikis.com -ntwzy.com -ntxx.net -ntxz.net -ntyodspt.com -ntyodspt.net -ntyswlkj.com -ntyy888.com -ntzhcs.com -nu1l.com -nu36.vip -nuan.chat -nuan.io -nuan.org -nuancaixs.com -nuancepharma.com -nuandao.com -nuanjiayuan.com -nuannuanapp.com -nuannuanzu.com -nuanpaper.com -nuanque.com -nuanshi100.com -nuantingapp.com -nuantong8.com -nuanyuehanxing.com -nubb.com -nubia.cc -nubia.com -nubia.mobi -nucc.com -nucleisys.com -nuctech.com -nuedc-ti.com -nuedcchina.com -nufans.net -nuhcpf.com -nuhighbio.com -nuist.pro -nulipin.com -nullice.com -nullno.com -num1dns.com -num2020.com -numans.cc -numemory.com -nunaios.com -nuo5.com -nuoan.com -nuobeiliao.com -nuobeirack.com -nuobz.com -nuocdn.com -nuodaguandao.com -nuodefund.com -nuodepharm.com -nuoder.com -nuoerchina.com -nuofanpay.com -nuoguangsh.com -nuohotel.com -nuoji.com -nuoke147.com -nuomi.com -nuomicikoi.com -nuomili.com -nuomiphp.com -nuomisi.com -nuonuo.com -nuoshell.com -nuoshou2023.com -nuosike.com -nuoyahao.com -nuoyasite.com -nuoye.xyz -nuozhan.com -nuozhensh.com -nuptec.com -nuqixi.com -nuqk.com -nurotron.com -nursesky.com -nuszar.xyz -nutdh.com -nutra-max.com -nutriease.com -nutriera.com -nutrilite-farm.com -nutsbp.com -nutspace.com -nutstart.com -nutstore.net -nutstorehq.com -nutzam.com -nuvoltatech.com -nuvoton-m0.com -nuvoton-mcu.com -nuxtv.com -nuxue.com -nuyoahbk.com -nv2118.com -nvans.com -nvcam.net -nvcong.com -nvgate16.nvidia.com -nvhaiz.com -nvhuangmm.com -nvidia-china.com -nvkan.com -nvpuse.com -nvpuwo.com -nvsay.com -nvsheng.com -nvshengjie.com -nvsip.com -nvwu.com -nvyouguoji.com -nvzhanshen.com -nvziwu.com -nw-host.com -nw0898.com -nwbiotec.com -nwct.me -nwdlink.com -nweon.com -nwncd.com -nwshotel.com -nwzg.net -nx-sc.com -nx.cm -nx5.com -nxadmin.com -nxcells.com -nxcrb.com -nxdns.net -nxeduyun.com -nxengine.com -nxez.com -nxgangyi.com -nxgjbyy.com -nxgtjt.com -nxgyzb.com -nxhongshanhe.com -nxin.com -nxist.com -nxit.us -nxlayer2.com -nxls.com -nxly766.com -nxmy.com -nxnba.com -nxnews.net -nxnmedia.com -nxnresearch.com -nxny.com -nxpta.com -nxrmyy.com -nxrrvmy.com -nxrte.com -nxsjgd.com -nxstjt.com -nxsyy.com -nxtf.net -nxtianshangb.com -nxxdns.com -nxxh.net -nxxhr.com -nxxinhaoyuan.com -nxxllt.com -nxxmqy.com -nxxuchang.com -nxxzyimg.com -nxyqs.com -nxyqs.net -nxyxh.net -nxyy.asia -nxzcah.com -nxzhnyyjy.com -nxzwnews.net -ny-yy.com -ny1988.com -ny2000.com -nya.ink -nyaacat.com -nyat.app -nyato.com -nybai.com -nybaidu.net -nybw.net -nyckidsclub.com -nyd7y.com -nydsrrsh.com -nyefy.com -nyfzx.com -nyjvbs.xyz -nylingshang.com -nync.com -nypd520.com -nyrmyy.com -nysenba.com -nysgjgs.com -nyshipyard.com -nyshszh.com -nyshui.com -nysswq.com -nywz.net -nyxg.vip -nyxgs.com -nyxiecheng.com -nyxlzy.com -nyxr-home.com -nyxx365.com -nyxz166.com -nyyfy.com -nyzdjj.com -nyzy.com -nz86.com -nz998.com -nzb555.com -nzbdw.com -nzchina.com -nzcxh.com -nzggroup.com -nzghotel.com -nzhnb.com -nziku.com -nzkd.com -nzlw.com -nzmice.com -nzqyowk.com -nzrlzy.com -nzsensing.com -nzsiteres.com -nzw6.com -nzwgs.com -nzxww.com -nzygyt.com -o--o.win -o-home.com -o-hr.com -o-netcom.com -o-star.cc -o.pki.goog -o0-2.com -o014148q7p.com -o03011aokk.com -o03080aokk.com -o0310o.com -o03121aokk.com -o0o0w.com -o136.com -o2123.com -o2ee.com -o2moment.com -o2o4.com -o2oa.net -o2obill.com -o2ocms.com -o2ocn.com -o2oexpo.com -o2onet.com -o2owhy.com -o2packs.com -o2ting.com -o37o.net -o3ndix.com -o571.com -o5zyk9vu2d.com -o6s.net -o790l1uw6q.com -oa025.com -oa0351.com -oa7day.com -oa8000.com -oa8858.com -oabc.cc -oabg.net -oachee.com -oacrm.com -oact.net -oafocus.net -oahelp.com -oahelp.net -oaimai.com -oait360.com -oak-amc.com -oaloft.com -oaloft.net -oalur.com -oameibang.com -oaooa.com -oaqi.com -oasesalliance.com -oasistry.com -oatenglish.com -oatos.com -oauto.com -oayqwkhg.com -oaz.cc -obagame.com -obai.cc -obaku.com -obatsipilisjos.com -obeishi.com -obesu.com -obetal.com -obins.net -obj.cc -obj23q.com -obj6.com -objccn.io -objcer.com -objcoding.com -obkoro1.com -obolee.com -oborad.com -obowin.com -obrao.com -obsapp.net -obsbot.com -obsidian-display.com -obsworks.com -obtelecom.com -obyee.com -ocahs.com -ocale.net -ocamar.com -ocar.tv -occpay.com -ocd120.com -oceanaircorp.com -oceanbase.com -oceanbites123.com -oceancloudapi.com -oceancus.com -oceandatas.com -oceando.cloud -oceanengine.com -oceanhood.com -oceanol.com -oceanorama.com -oceanpine.net -oceanplayable.com -ocent.net -ocetest.com -ocfess.com -ocft.com -ochirly.com -ocic-static.com -ocici.com -ocideal.com -ocimg.com -oclean.com -oclkj.com -ocn187.com -ocpuritech.com -ocsjs.com -ocsp.pki.goog -ocsp.us.cdnetworks.com -ocssaas.com -oct-asia.com -oct-cts.com -octbay.com -octcommercial.com -octeshow.com -octgulou.com -octholding.com -octhotels.com -octinn.com -octmami.com -octo.fm -octocathub.com -octoparse.com -octopus31.com -octopusgame.com -octre.com -octsszj.com -octsunshine.com -octwuhan.com -oculist.net -ocwms.com -ocwuaibq.com -odaily.news -odalong.com -odao.com -odeasports.com -odict.net -odinichina.com -odinjc.com -odinjilin.com -odinliu.com -odlkj.com -ody8.com -odyzj.com -oealy.com -oeasy.org -oec365.com -oecd-ilibrary.org -oecr.com -oedtech.com -oedun.com -oeebee.com -oeeee.com -oejournal.org -oelove.com -oemao.com -oemhouse.com -oemnew.com -oempromo.com -oemresource.com -oemsoc.download.prss.microsoft.com -oemsocuat.download.prss.microsoft.com -oemssl.cn.cdn.cloudflare.net -oeob.net -oepamvxq.com -oepkgs.net -oepkgs.org -oesell.com -oetsi.com -of3d.com -ofcard.com -ofcms.com -ofdreader.net -ofenka.com -offcn.com -offer-wow.com -offersloc.com -office-cn.net -office-kagu1.com -office-peixun.com -office68.com -office8hour.com -officeaid.com -officeaid02.com -officebai.com -officebay.net -officecdn.microsoft.com -officectrl.com -officemkt.download.prss.microsoft.com -officemktuat.download.prss.microsoft.com -officese.com -officeweb365.com -officezhushou.com -officezy.com -offodd.com -offshoremedia.net -offside.hk -ofgame.net -ofidc.com -ofo.com -ofopp.com -ofpay.com -ofpay365.com -ofuns.com -ofweek.com -ofweek.net -ofyoo.com -ogame3.com -ogaoxiao.com -ogaqcbfi.com -ogccdn.com -ogivzztz.com -ogl-dragon.com -ogsoyxg.com -ogxeidiv.com -oh100.com -oh4k.com -ohaotian.com -ohausyt.com -ohedu.net -ohipic.com -ohltjt.com -ohltk.com -ohohklp.xyz -ohqly.com -ohtly.com -ohtpc.com -ohyee.cc -oi-wiki.com -oi-wiki.org -oi3g.com -oia05041klq.com -oia05050klq.com -oia05051klq.com -oiaqye7985.com -oicat.com -oicp.io -oicp.net -oicp.vip -oicq88.com -oicto.com -oidchina.org -oigcn.com -oigps.com -oiine.com -oiinhand.info -oilchem.net -oilcn.com -oildigital.com -oilepay.com -oilmooc.com -oinbag.com -oincp.com -oinva5yl.com -oioidesign.com -oioiok.com -oioj.net -oishi-tm.com -oiwas.com -oiz611.com -ojcdn.com -ojhdt.com -ojidacp.com -ojkjt.com -ojpal.com -ok-meeting.com -ok-skins.com -ok0415.com -ok06.com -ok096.com -ok123.com -ok126.net -ok1616.com -ok165.com -ok168.com -ok183.com -ok206.com -ok3w.net -ok619.com -ok888883.com -ok9624.com -oka-vip.com -okaapps.com -okad.com -okada-china.com -okadwin.com -okair.net -okaoyan.com -okayapi.com -okaybio.com -okbao.com -okbase.net -okbmf.com -okbuy.com -okcard.com -okcdnns.com -okchang.com -okchexian.com -okcxo.com -okdai.com -okdcc.com -okdd.net -okemu.com -okex.vip -okeycar.com -okfang.com -okfumu.com -okgoes.com -okhimalayanzi.com -okhqb.com -okidc.com -okideaad.com -okii.com -okjc.one -okjike.com -okjk.co -okk123.com -okki.com -okktee.com -oklaapp.com -oklink.com -oklinklink.com -oklpoi.com -okmao.com -okmart.com -okmyapp.com -okng.com -okoer.com -okooo.com -okoooimg.com -okplife.com -okpush.com -okr.com -okrecovery.com -oks.ltd -oksec.net -oksun.com -oksvn.com -oktamall.com -oktjy.com -oktools.xyz -oktranslation.com -oktukids.com -okuer.com -okuma-byjc.com -okvnet.com -okweb.info -okwuyou.com -okxr.com -okyueche.com -ol-cdn.com -ol-img.com -olabo.net -olacio.com -olakeji.com -olami.ai -olatop.com -olatop.net -oldboyedu.com -oldcat.me -oldding.net -oldiron.xyz -oldj.net -oldmanemu.net -oldmantvg.net -oldpan.me -ole-vod.com -olecn.com -oleoad.com -oli-wolong.com -oliannews.com -olidun.com -olinone.com -olipharma.com -oliver.ren -oliveryang.net -ollomall.com -olo4.com -olokitchen.com -oltfm.com -olwsz.com -olxd.com -olymtech.com -olymvax.com -olys88.com -olzz.com -omacloud.com -omarea.com -omarte.com -omaten.com -ombuy.com -omccsh.com -omchain.com -omcube.com -omedsc.com -omeet.cc -omegatravel.net -omegaxyz.com -omen.com -omgaixm.com -omgxy.com -omiaozu.com -omicsclass.com -omicshare.com -omicshare.net -omifanyi.com -omigr.com -ominat.com -omlzx.com -omlzz.com -ommoo.com -omni-pharma.com -omnijoi.com -omnivision-group.com -omnshoes.com -omobi.cc -omooo.com -omooo.net -omos88.com -omowork.com -ompchina.net -ompower.cc -omronmed.com -oms-elevator.com -omsheji.com -omsmy.com -omso2o.com -omycar.cc -omyerp.com -on-sun.com -onaliyun.com -oncanyin.com -onccc.com -oncdp.com -onceai.com -onceoa.com -onche.net -oncity.cc -one-all.com -one-netbook.com -one-punch.win -one.edu.kg -one918.com -onealert.com -oneasp.com -onebash.com -onebiji.com -onebox.site -onebrowser.net -onebuygz.com -onecoder.site -oneconnectft.com -onedi.net -onediankeji.com -onedict.com -onedns.net -oneflys.com -onefoot365.com -onegobrand.com -onegreen.net -onehome.me -onehousesh.com -oneic.com -onein.com -oneinf.com -oneitfarm.com -oneiwff.com -onekey.cc -onekeyghost.com -onekeyrom.com -oneleafchina.com -onelife-love.com -onelinkplus.com -onemtservers.com -onenice.tech -oneniceapp.com -onenoter.com -oneonewrite.com -oneplus.com -oneplus.net -oneplus6666.com -oneplusbbs.com -oneplusmobile.com -onescorpion.com -oneself.icu -oneshao.com -onesight.com -onespacechina.com -onesun-china.com -onething.net -onethingc.com -onethingcloud.com -onethingd.com -onethingn.com -onethingpcs.com -onethingtech.net -onetop.net -onetts.com -oneuedu.com -onev.cat -onevcat.com -oneway.mobi -onewedesign.com -onewo.com -onewos.com -onewsimg.com -onewtech.com -onexinli.com -onexmail.com -onexunge.com -oneyac.com -onezapp.com -onezh.com -onfun.net -ongoalconveying.com -ongoaltech.com -onijiang.com -onishi-cn.com -onixhiend.com -onjobedu.com -onkocares.com -onlady.net -online-cmcc.net -online-edu.org -onlinecn.com -onlineding.com -onlinedown.net -onlinekr.com -onlinenic.net -onlinesjtu.com -onlinexijiang.com -onlly.com -onloon.net -only-memory.com -only-moment.com -only4.work -onlyedu.com -onlyedu.net -onlyeduit.com -onlygamefans.com -onlyidc.com -onlylady.com -onlyling.com -onlyliuxue.com -onlymr.com -onlypat.com -onlyred.net -onlyrobotedu.com -onlyrubberparts.com -onlystem.com -onlywem.com -onnets1.xyz -ono-bbb.com -onochem.com -onsiteclub.com -ontall.com -ontheroadstore.com -onthetrip.com -onthink.com -onwaf.com -onwear.net -onwork.com -onwsw.com -onyealink.com -onyi.net -onyuan.com -onyxcina.com -onyxwater.net -onyy255q8c.com -oo14.com -oo365.com -oobao.net -oocct.com -oocheoo.com -ooclab.com -oodii.com -oofont.com -oogcw.com -oogps.com -oogsy.com -oohdear.com -ooiii.com -oojsq.com -oolap.com -oomake.com -oonne.com -oooccc.com -ooofoo.com -ooogo.com -oooiove.com -ooomm.com -ooooai.com -ooooo.run -oooooooooo213.com -ooopic.com -oopswow.com -oopz.vip -oortgslb.com -oortos.tech -ootu.cc -oouee.com -oouyan.com -oov.cc -ooxoo.net -ooxxc.com -ooyyee.com -op86.net -opadlink.com -opahnet.com -opaidb.com -opal-qt.com -opalhk.com -opark.com -opatseg.com -opcool.com -opdown.com -opectek.com -open-ct.com -open-douyin.com -open-falcon.com -open-falcon.org -open-open.com -open-search.org -open-verify.cc -open.cd -open1024.com -open147.com -open189.net -openaboc.com -openadx.com -openailab.com -openanolis.org -openapp.run -openasic.org -openatom.club -openbayes.com -openbcs.com -opencas.org -opencloudgpt.online -opencloudos.org -opencloudos.tech -opencourt.vip -opendatalab.com -opendns123.com -openedv.com -openerp.hk -openeuler.org -openeuler.sh -openew.com -openfans.org -openfde.com -openfrp.net -opengame0.com -opengcc.org -opengslb.com -openharmonyproject.com -openhippy.com -openinstall.com -openintelliedge.tech -openke.net -openkylin.top -openlanguage.com -openlayers.vip -openlearning.com -openlink.cc -openloong.org -openloongson.org -openluat.com -openmidas.com -openmmlab.com -openmv.cc -openos.org -openqa.com -openrasp.com -openrasp.info -openrasp.net -openrasp.org -openredcloud.com -openrice.com -openrtbadx.com -opensoce.com -opensplendid.com -openssw.com -opentrust.net -openuc.com -openvela.com -openwbs.com -openwrt.ai -openwrt.pro -openxiaoniu.com -openxsea.com -operachina.com -operatorcom.com -opfed.com -opfibre.com -opjmw1.ren -opkjh.com -oplay.net -oplinking.com -oplus.com -oplustrust.com -opmaterial.com -opoefweof-sopoop.com -opp2.com -oppein.com -opplestore.com -oppo.com -oppo.mobi -oppocolor.com -oppocoloros.com -oppodigital.com -oppoer.me -oppofind.com -oppojia.com -oppomobile.com -oppopay.com -opposales.com -opposhop.in -opposhore.com -oppowork.com -opqnext.com -oprtb.com -ops.ci -opsapp.com -opshields.com -opskb.com -opskumu.com -opstatics.com -opstatistics.com -opstool.com -opt-os.com -optbbs.com -opticres.com -opticsjournal.net -optimized-ai.com -optinetchina.com -optiondoma.com -optmv.com -optol.net -optomedic.com -optuk2.com -optzmx.com -opuzswk5tbt25.com -opwill.com -opython.com -oqss.com -or-sun.com -oracle-tencent.com -oracle-tencent.net -oracle-tencent.org -oracle.com -oraev.com -orafl.com -oralpractice.com -orange-ci.net -orange2h.com -orangeapk.com -orangeclk.com -orangelovely.com -orangemum.com -orangenews.hk -orangepi.org -orangesgame.com -orangetage.com -orangevip.com -oraper.com -orasos.com -oray.com -oray.net -oraybox.com -oraycn.com -orayer.com -orayimg.com -orbiepharm.com -orbitmes.com -orcadt.com -orchid-lanhua.com -orchome.com -orcode.com -orcony.com -ordchaos.com -ordedr.com -orderorigin.com -ordinaryroad.tech -ordosbank.com -ordosqyjt.com -ordostonghui.com -orebotech.com -orfactory.com -organo-sz.com -orgcc.com -orggd.com -orgleaf.com -oriemac.com -orient-fund.com -orient-opto.com -orient-safety.com -orientaldata.com -orientalgas.com -orientalpearltower.com -orientalplaza.com -orientalwisdom.com -orientcable.com -orientcasa.com -orientengg.com -orientfoods.net -orientgene.com -orientgolf.com -orientgroup.com -orientpc.com -orientpowertech.com -orientscape.com -orienttextile.com -orienttumor.com -orientzj.com -orientzr.com -orifound.com -orig-download.msi.com -orig-liveupdate.msi.com -origin-a.akamaihd.ne -origin-a.akamaihd.net -originalimg.com -originalkindergarten.com -originalstatic.com -originalvod.com -origincn.com -originlee.com -originoo.com -originpic.com -originsilicon.com -originwater.com -origloria.com -orihard.com -oriphant.com -oritive.com -oriza.com -orjlight.com -orleto.com -orm-compressor.com -orsoon.com -orspr.com -orstatic.com -orsun.cc -ortc.cc -ortmk.com -orvaegao.com -orvibo.com -orz.asia -orz520.com -orz6.com -orzoupri.com -orztip.com -os-easy.com -os-lb.com -os-os.com -os-v.com -os7blue.com -osaaa.com -osakacopyshop.com -osapublishing.org -osase.net -osbean.com -osbkj.com -osbzr.com -osc.cool -oscaches.com -oscarzhoud.com -oschina.com -oschina.io -oschina.net -oscs1024.com -osechina.com -osee-dig.com -oseminfo.com -oserror.com -osf2f.net -osf5xep778.com -osfipin.com -osgchina.org -osgervirtual.com -osgraph.com -osgz.com -oshadan.com -oshield.com -oshome.com -oshoplive.com -oshwhub.com -osicgroup.com -osizx.com -osjiaju.com -osk-clean.com -oskwai.com -oskwai.net -oslaw.net -osm-pearls.com -osmanbio.com -osmundacn.com -osnovacompany.com -oso6.com -osogoo.com -osoos.com -ososn.com -osp.io -ospchina.com -ospod.com -osportsmedia.com -ospp.com -osredm.com -osrelease.download.prss.microsoft.com -oss-cn-beijing-aliyuncs.com -oss.link -ossdshxh.com -osslan.com -osuxrq.com -osvlabs.com -osw3c.com -oswdj.com -oswhy.com -osx.cx -osxxy.com -osyunwei.com -otbmall.com -otc-china.com -otcaumiu.com -otcgd.com -otcms.com -otkglass.com -otm.ink -otms.com -otoeasy.com -otomedream.com -otosaas.com -otp-express.com -otpub.com -otqyzk7mx2t8.com -ott-live.olympicchannel.com -ott4china.com -ottai.com -ottcn.com -ottcn.help -ottffss.net -ottshopping.net -ottssp.com -otype.com -ou163.com -ou99.com -ouapi.com -oubauneereid.com -oubk.com -ouchang.net -ouchengzl.com -ouchgzee.com -oucuibo.com -oudapay.com -oudas.tech -oudianyun.com -oufa-travel.com -oufengblog.com -oufusoft.com -ougei.com -ouhua.info -ouhui.org -ouies88.com -ouj.com -oujiangroup.net -oujistore.com -oukan.online -ouklqd.com -oukyx.com -oulagongshi.com -oulehdtv.com -oulgp.com -ouliwang.com -oulongauto.com -ouluwind.com -oulvnet.com -oumakspt.com -oume.cc -oumengke.com -ouming.com -oumoo.com -ounh.org -ounoe.com -ounuoyq.com -ouo7.com -ouou.com -ouou.icu -ououbet.com -ouougo.com -oup.com -oupaigroup.com -oupeng.com -oupeng9.com -oupengcloud.net -oupula.com -oupuzw.com -our100.net -our360vr.com -ourai.ws -ourail.com -ourats.com -ouravr.com -ourbits.club -ourbloom.com -ourbluecity.com -ourcargo.com -ourcdns.com -ourchem.com -ourcloudsec.com -ourcm.net -ourdian.com -ourdlbs.com -ourdomains.com -ourdvs.com -ourdvs.info -ourdvs.net -ourdvsss.com -ourdvsssvip.com -ourdvsvip.com -ourdxz.com -ourdxz.info -ourdxz.org -oureman.com -ourep.com -ourfdn.com -ourgame.com -ourger.com -ourglb.com -ourglb.net -ourglb0.com -ourglb0.info -ourglb0.net -ourglb0.org -ourglb0vip.com -ourhf.com -ourhlb.com -ourhlb.info -ourhlb.org -ourhy.net -ourjay.com -ourjewel.com -ourjg.com -ourjiangsu.com -ourjs.com -ourjz.com -ourl.co -ourleadchina.com -ourlife365.com -ourltc.com -ourmate.net -ourmis.com -ourpalm.com -ourplat.net -ourplay.net -ourqm.com -ourren.com -oursakura.com -ourschool.cc -oursec1.com -oursec2.com -ourseo.net -oursketch.com -oursmc.com -ourstech.com -ourtour.com -ourunited.com -ourwebat.com -ourwebcdn.com -ourwebcdn.info -ourwebcdn.net -ourwebcdn.org -ourwebcdnvip.com -ourwebhttps.com -ourwebpic.com -ourwebpic.info -ourwebpic.net -ourwebpic.org -ourwebpicvip.com -ouryao.com -ousaikj.com -oushangstyle.com -oushidiban.net -oushinet.com -oushisheng.com -oushivoyages.com -ousweixin.com -outes.com -outfit7.com -outfit7.net -outlets365.com -outletscn.com -outsoo.com -ouvps.com -ouwost.com -ouxiangxiezhen.com -ouyada.com -ouyade.com -ouyanghuasi.net -ouyaoxiazai.com -ouyeel.com -ouyi.date -ouyingyimin.com -ouyizs.com -ouyu158.com -ouzhaorj.com -ouzhou.cc -ouzhougoufang.com -ovalechina.com -ovaqrzcw.com -ovcgegxa.com -ovcreative.com -ovdlb.com -ovdream.com -ove3bi5rpn.com -ovear.info -ovellpump.com -oversea-ks-cdn.com -overseasops.com -overseaspharm.com -overtrue.me -ovglass.com -ovhlb.com -ovhlb.net -ovicnet.com -ovid.com -ovital.com -ovital.net -ovmgc.com -ovopark.com -ovopic.com -ovqq.com -ovrvo.com -ovscdns.com -ovscdns.net -ovtfwn.com -ovuems.com -ovupre.com -ovuwork.com -ovxe.com -owalle.com -oway.mobi -owecn.com -oweidata.com -oweis-tech.com -owent.net -owenzhang.com -owgels.com -owinchina.com -owl-go.com -owlxjz.lol -owo.cab -owocloud.net -owoit.com -owseals.com -owsgo.com -owspace.com -owulia.com -ox5tis8cm7zg82.com -oxbridgedu.org -oxerr.net -oxfordartonline.com -oxfordbibliographies.com -oxfordmusiconline.com -oxfordtdr.com -oxiang.com -oxiaohua.com -oxiranchem.com -oxrm.com -oxygenos.com -oxyry.com -oya365.com -oyalee.com -oyewifi.com -oygnqmj.xyz -oygteapq.com -oym56lm.com -oyohyee.com -oyonyou.com -oyoozo.com -oyospider.com -oyoumo.com -oysd.com -oywtv.com -oyxdwx.com -oyya.com -oyzns.com -ozmvpbhc.com -ozocenter.com -ozonabc.com -ozonbigsell.com -ozoninfo.com -ozouckzr.com -ozsmartbuy.com -ozzyad.com -p-an.com -p-bstarstatic.akamaized.net -p-dragon.com -p-e-china.com -p-er.com -p-i.vip -p-pass.com -p-sig-dom.com -p-sig-dom.net -p.bstarstatic.com -p.cdn.persaas.dell.com -p023.com -p0371.com -p0431.com -p04e.com -p0kc9ym05p.com -p0y.com -p1.com -p12345.com -p24p75149p.com -p2cdn.com -p2hp.com -p2p001.com -p2p178.com -p2pbbs.net -p2pchina.com -p2pcq.com -p2peye.com -p2peye.net -p2psearchers.com -p2ptouhang.com -p2pxing.com -p3-china.com -p33t5y8b97.com -p4pfile.com -p4pp.com -p4ws8zptrrdc6.com -p4wtpoqzihi8v.com -p5w.net -p6air.com -p6sai.com -p7game.com -p80.net -p8games.com -p99998888.com -pa.ci -pa18.com -pa1pa.com -paahu.com -paalermat.com -paascloud.net -paat.com -pabulika.com -pacdn.com -pacebms.com -pacfc.com -pacgatelaw.com -pacicanschool.com -pacificchinaaero.com -pacificimmi.com -pacificphar.com -pacilution.com -packetmania.net -packsky.com -packtom.com -packty.com -pacmantwo.com -pacs-plus.com -pactera.com -padao.org -padasuo.net -padddy.vip -paddlepaddle.org -paddlewaver.com -padh.net -padns.com -padtf.com -pafj.net -pafwl.com -pag.art -pagd.net -pageadmin.net -pagedoo.com -pagescube.com -pageseagle.com -pagetu.com -pahhhf.com -pahx.com -pahys.com -pai.video -paiago.com -paiangmedical.com -paiangstudy.com -paibanxia.com -paibaohy.com -paichen.net -paichi.com -paidai.com -paidui.com -paiduidai.com -paigepian.com -paihang114.com -paihang360.com -paihang8.com -paihb.com -paihotels.cc -paikew.com -paiky.com -paiky.net -pailitao.com -pailixiang.com -paimaprint.com -paiming.net -paintinghere.org -paints.market -paipai.com -paipai123.com -paipaibang.com -paipaiimg.com -paipay.net -paipianbang.com -pairmb.com -paishi.com -paitol.com -paivideo.com -paixiangxian.com -paixin.com -paixueche.net -paiyidan.net -paiyuyy.com -paizhaofanyi.net -paizhe.com -paizi.com -paizi.net -paizia.com -paizin.com -paizishop.com -pajkb.com -pajkdc.com -pajktj.com -pajt.com -pal-fin.com -palace-international.com -palanceli.com -paldq.com -pallasa.com -pally-travel.com -palm-ad.com -palm-h.com -palm.tech -palma-battery.com -palmda.com -palmebook.com -palmeread.com -palmestore.com -palmexpo.com -palmfungames.com -palmjoys.com -palmpay-inc.com -palmpay.com -palmpk.com -palmtrends.com -palmyou.com -paloinino.com -palomachina.com -pamahotel.com -pamica.com -pamss.net -pan-good.com -pan-ics.com -pan-key.com -pan131.com -pan58.com -pan8.net -panabit.com -panaihua.com -panasiashipping.com -panasonic-door.com -panasonicmall.com -panawincn.com -panbaidu.net -panbrake.com -panchinasports.com -panchip.com -panchuang.net -panda-home.com -panda-js-power.com -panda.ren -panda98.com -panda995.xyz -pandabus.cc -pandadairy.com -pandadastudio.com -pandafoundation.org -pandagreen.com -pandahome.org -pandainc.cc -pandaminer.com -pandapaint.net -pandara.xyz -pandaremit.com -pandarzli.com -pandateacher.com -pandatv.com -pandax.wiki -pandolia.net -panduoduo.net -pangbo51.com -pangbu.com -pangcheng.com -pangdago.com -pangdasc.com -pangdawuliu.com -pangdly.com -pangeng.vip -panggugu.com -panghuasheng.com -pangku.com -pangku01.com -pangmao56.com -pangmaovc.com -pangniao.net -pangod.com -pangodsxbj.com -pangoing.com -pangolin-sdk-toutiao-b.com -pangolin-sdk-toutiao.com -pangolin-sdk-toutiao1.com -pangolin-sdk-toutiao2.com -pangolin-sdk-toutiao3.com -pangolin-sdk-toutiao4.com -pangomicro.com -pangqiu.com -pangshare.com -pangshu.com -pangsuan.com -pangu.io -pangubox.com -panguhotel.com -panguidc.com -pangukj.com -pangusheng.com -panguso.com -pangxieke.com -pangyuan.com -panjiayuan.com -panjin.net -panjindamibest.com -panjk.com -panku.cc -pankuaisou.com -panlai.com -panlan.com -panli.com -panlv.net -panmaiquit.com -panmeme.com -pannacloud.com -panocom.com -panoeade.com -panomix.com -panoramastock.com -panothers.com -panpanfood.com -panpanzsw.com -panpass.net -panpay.com -panqiincs.me -panqishu.com -panruikj.com -panshenlian.com -panshi101.com -panshianquan.com -panshihudong.com -panshiminerals.com -panshixk.com -panshiyun.com -panshy.com -pansino-solutions.com -panso.pro -pansoso.com -pansou.com -pansousuo.com -pantherhealthcare.com -pantonechina.com -pantower.com -pantrysbest.com -pantuitui.com -pantum.com -panweizeng.com -panxsoft.com -panyiyun.com -panyouwl.com -panyun.com -panyunkj.com -panyuwater.com -paoao.net -paodoo.com -paojiao.com -paoka.com -paokucloud.com -paolanhuanbao.com -paomo.com -paomochengxingji.com -paopao.com -paopaoche.net -paopaohd.com -paopaosz.com -paopaozd.com -paoshuba.cc -paoshuba.org -paoxue.com -paozhengtong.com -paozw.org -papa21.com -papa91.com -papago.hk -papajohnschina.com -papajohnshanghai.com -papapa.tv -papatya.store -papazw.com -papegames.com -paper-translation.com -paper.tv -paper120.net -paperang.com -paperask.com -paperbert.com -paperbus.com -paperbye.com -paperccb.com -paperclipglobal.com -papercool.com -paperdb.com -papereasy.com -paperge.com -papergod.com -paperinsight.net -paperisok.com -papernew.net -paperok.com -paperonce.org -paperopen.com -paperpass.com -paperpass.org -paperpp.com -paperrater.net -paperright.com -papers.cool -papersay.com -papersee.com -papertime.cc -papertime.shop -papertime.vip -paperweekly.site -paperword.com -paperyy.com -papocket.com -papuanewguineans.com -paquapp.com -parallelsras.com -paratera.com -parawikis.com -parduscycle.com -parentshk.com -paris-girafe.com -parkbees.com -parketech.com -parkicloud.com -parking520.com -parkinginfoweb.com -parkingjet.com -parkingos.club -parkingpda.com -parkingquickly.com -parkingsaas.com -parkingwang.com -parkmecn.com -parkonroad.com -parkshen.com -parkviewgreen.com -parkwaychina.com -parkworld.net -parkyardhotel.com -parsein.com -partinchina.com -partner-group.com -partner.cdnetworks.com -partnerboost.com -party68.com -pascalmorio.com -paschermontre.to -pasertech.com -pashu5.org -pass7.cc -passer-by.com -passfab.com -passfab.tw -passion120.com -passiongroupltd.com -passip.xyz -passthepopcorn.me -passwordkeyboard.com -pat-edu.com -pat-edu.org -patachina.org -patchallin.com -patchew.org -patent9.com -patentguru.com -patexplorer.com -patfun.com -patheagames.com -pathologycn.com -patsev.com -patsnapglobal.com -patv123.com -paul-corp.com -paul.pub -paulzzh.com -pauwaypower.com -pavay.com -pavayjt.com -pavilionshenzhenhotel.com -paxdn.com -paxgl.com -paxhz.com -paxini-robot.net -pay-in.com -pay-lakala.com -pay-ly.com -paybaike.com -paydxm.com -payeco.com -payititi.com -paykwai.com -paylf.com -paympay.com -paynews.net -paypaytech.com -pb89.com -pbc-dcep.com -pbcan.com -pbcedu.net -pbcft.com -pbchizhou.com -pbdpw.com -pbiso.com -pbkrs.com -pblie.com -pbqdhty.com -pbrcw.net -pbsvpn.com -pbtcw.com -pbtlpm.com -pbtsl.com -pbtt.net -pbtxt.com -pbyz.net -pc-120.com -pc-daily.com -pc.wiki -pc02.com -pc028.com -pc120.com -pc15.net -pc168.com -pc18.net -pc186.com -pc34.com -pc360.net -pc51.com -pc520.net -pc521.net -pc5210.com -pc528.net -pc55.com -pc6.com -pc699.com -pc6a.com -pc89.com -pc8h.com -pc9.com -pcapqz.com -pcasl.com -pcauto.com -pcb-hl.com -pcb-membraneswitch.com -pcb3.com -pcb818.com -pcbask.com -pcbba.com -pcbbar.com -pcbbbs.com -pcbdoor.com -pcbeta.com -pcbhunt.com -pcbjob.com -pcbserve.com -pcbsheji.com -pcbtech.net -pcbtime.com -pccm88.com -pccpa.hk -pccppc.com -pcdan.net -pcdn100.com -pcdnhome.com -pcdog.com -pcdrv.com -pcdtg.com -pceggs.com -pceva.net -pcfphs.com -pcfreetime.com -pcgeshi.com -pcgogo.com -pcgta.cc -pch.pub -pchome.com -pchome.net -pchpic.net -pcidv.com -pciiss.com -pcitc.com -pcitech.com -pcjsq.com -pcljl.com -pcmgr-global.com -pcmgr-global.net -pcmoe.net -pcoic.com -pcoof.com -pcoyx.com -pcpc521.com -pcpop.com -pcpresent.com -pcqudong.com -pcr9170.com -pcscedu.com -pcsee.org -pcsfc.com -pcshou.com -pcsjsm.com -pct86.com -pctutu.net -pctvx.com -pcw365.com -pcwcn.com -pcweb3.com -pcwenti.com -pcwgu.com -pcwl.com -pcxitongcheng.com -pcyangguangban.com -pcysy.com -pcz.net -pczhi.com -pd-italent.com -pd-sts.com -pd120.com -pd17.com -pdafans.com -pdai.tech -pdb2.com -pdbeta.com -pdd-fapiao.com -pdd.net -pddcdn.com -pddeu.com -pddglobalhr.com -pddim.com -pddpic.com -pddugc.com -pddxfd.com -pdeepmatrix.com -pdf.la -pdf00.com -pdf1122.com -pdfangchan.com -pdfbianji.com -pdfdo.com -pdffsy.com -pdfjia.com -pdflibr.com -pdfxd.com -pdfzj.com -pdgohome.com -pdgzf.com -pdhr.com -pdidc.com -pdie-expo.com -pdinvestmentgroup.com -pdlib.com -pdlnn.com -pdloscar.com -pdm.tech -pdnob.com -pdosgk.com -pdrcfw.com -pdreading.com -pdreamer.com -pdryx.com -pdscb.com -pdsey.com -pdsgjj.com -pdshouse.com -pdskgb.com -pdswater.com -pdsxww.com -pdszhtl.com -pdty123.com -pduoduo.vip -pdvc.com -pdvisa.com -pdxx.net -pdxxg.com -pdzls.com -pe-exhibition.com -pe.vc -pe898.com -peace-read.com -peacebird.com -peaceboat.net -peacekang.com -peacepetro.com -peacha.net -peacockedu.com -peak-labs.com -peaksport.com -peakyun.cc -peal.cc -pear.hk -pearlinpalm.com -pearvideo.com -peasrch.com -peatour.com -pebellows.com -pec33.com -peccn.com -pechoin.com -pecmgd.com -pecoo.com -pediatrixtherapeutics.com -pediy.com -pedli.com -peekpipai.com -peento.com -peepic.com -peerkennel.com -pegbiocq.com -peidibrand.com -peidu.com -peihao.space -peihu-lyjkgl.com -peihuyi.com -peijiamedical.com -peijian.com -peijian8.net -peikua.com -peilian.com -peiluming.com -peiluyou.com -peipusci.com -peise.net -peisebiao.com -peiwanlu.com -peixianedu.com -peixiang.com -peixinbao.com -peixinkj.com -peixun.net -peixun360.com -peixun5.com -peixune.com -peixunla.com -peixunmatou.com -peixunxue.com -peiyake.com -peiyicha.com -peiyin.net -peiyinge.com -peiyingefiles.com -peiyingo.com -peiyinshenqi.club -peiyinxiu.com -peiyou.com -peiyouwang.com -peiyue.com -peizi.com -pejxjy.com -pekhongyuan.com -peksung.com -pelejs.com -pelorseating.com -pemap.com -pemch.com -penavicoxm.com -pending-renewal-domain.com -pengbaoxuan.com -pengboguandao.com -pengchengenergy.com -pengchenglx.com -pengfei.com -penghh.fun -penging.com -pengke.com -penglei.name -pengliao.com -pengpailaw.com -pengqi.club -pengqian.win -pengrl.com -pengrui-ssj.com -pengshancy.com -pengtuzm.com -penguin-logistics.space -pengxinziyuan.com -pengyaou.com -pengyihotel.com -pengyou.com -pengyou.net -pengyoudewu.com -pengyoukan.com -pengyuanled.com -pengyucpa.com -pengyuwei.net -pengzhihui.xyz -penhuijiqi.com -peninsula-med.com -penjuanus.com -penlingaizao.com -penno-pallet.com -pensunny.com -pentalaser.com -pentaq.com -pentatomic.com -pentiw.com -penyouw.com -penzai.com -penzealcn.com -people-squared.com -people78.com -people78.net -peopleapp.com -peopleart.tv -peopledailyhealth.com -peopledailypress.com -peoplehealthdata.com -peoplekg.com -peoplelamp.com -peoplemooc.com -peoplerail.com -peoplewang.com -peopleyuqing.com -pepresource.com -pepsimeipai.com -pepsitmall.com -peptide-china.com -perfect-input.com -perfect99.com -perfectdiary.com -perfecttradinghk.com -perfectwatchen.com -perfertw.com -perfma.net -peropero.net -peroperogames.com -persagy.com -personabook.net -personpsy.org -perspectivar.com -pescms.com -pesiv.com -pesrmyy.com -pesyun.com -pet-mri.com -pet86.com -petalmail.com -petalmaps.com -petalsdata.com -petctchina.com -petctw.com -peter-zhou.com -peterjxl.com -petersonlian.com -petgugu.com -pethr.com -petilives.com -petkit.com -petkoo.com -petktasia.com -petly.net -petmrchina.com -petmrs.com -petope.com -petpcb.com -petpetin.com -petrexchina.com -petroren.com -petrostaroil.com -petrvet.com -petssky.com -pewax88.com -pewld.com -pewsc.com -pexue.com -pf110.com -pf168.com -pfcexpress.com -pfhoo.com -pfinno.com -pfmmedicalchina.com -pft12301.cc -pftianshanno.com -pfwx.com -pfzhiliao.com -pg-leak.com -pg114.net -pgbee.com -pgc.tv -pgcaststone.com -pgcog.com -pgdz.com -pggho.com -pgidp.com -pgidw.com -pgive.com -pgjcqm.com -pgjxo.com -pgl-world.com -pglstatp-toutiao-b.com -pglstatp-toutiao.com -pgmcatalyst.com -pgos.cc -pgosglobal.com -pgpop.com -pgq.win -pgqcw.com -pgqjz7733.com -pgsql.tech -pgxqw.net -pgxxw.com -pgy6.com -pgyapi.com -pgyer.cc -pgyer.com -pgyer.im -pgyidc.com -pgyy.com -pgyy.vip -pgzs.com -pgzx.net -ph-fc.com -ph365.bond -ph66.com -phaenothera.com -phaetonsemi.com -phalapi.net -phantasy.life -pharbers.com -pharm81.mobi -pharmacn.com -pharmacodia.com -pharmacyyf.com -pharmalego.com -pharmcube.com -pharmengin.com -pharmglass.com -pharmproc.com -pharmzs.com -pharnexcloud.com -pharscin.com -phaser-china.com -phb01.com -phb123.com -phbang.net -phedu.net -phemu.net -phenom-sem.com -phezzan.com -phhongyu.com -phicomm.com -philanthropy.xin -philbay.net -philipswechat.com -philisense.com -philsalgi.net -phirda.com -phirs.com -phjqs.com -phjt.com -phlexing.com -phmacn.com -phnamedns.com -phnixhome.com -phnixpool.com -pho.so -phodal.com -phoemix.net -phoenix-ea.com -phoenixfilters.net -phoenixos.com -phoenixtea.org -phoenixtv.com -phoent.com -phoer.net -phome.net -phone580.com -phonecoolgame.com -phonegap.me -phonegap100.com -phonelinksoft.com -phonertech.com -phonthing.com -phopic.com -phosun.com -photc.com -photo0086.com -photo3050.com -photo889.com -photocnc.com -photocome.com -photohn.com -photoncounts.com -photonpay.com -photops.com -photosks.vip -php-note.com -php-oa.com -php100.com -php168.com -php168.net -php318.com -phpbbchina.com -phpbloger.com -phpchina.com -phpcom.net -phpcomposer.com -phpconchina.com -phpcoo.com -phpddt.com -phpdr.net -phpe.net -phpernote.com -phperservice.com -phperz.com -phpfs.com -phpha.com -phphub.org -phpjiami.com -phpjiayuan.com -phpkaiyuancms.com -phplife.net -phpor.net -phpsong.com -phpspider.org -phpstat.net -phpv.net -phpvar.com -phpvod.com -phpwc.com -phpwc.info -phpweb.net -phpweblog.net -phpwind.com -phpwind.net -phpxs.com -phpyun.com -phsb.com -physicalchina.com -physicalchina.vip -physicalclub.com -physike.com -physoe.com -phyuan.com -phyy.com -phzg.com -pi7.com -piaget-hello.com -pianbar.net -pianbingji.com -piankuai.com -pianohl.com -pianor.com -pianoun.com -pianpian.net -piantou.net -pianyilo.com -pianyit.com -pianyiwan.com -piao.com -piao.tips -piao88.com -piao95.com -piaobing.com -piaobuy.com -piaochong.com -piaocom.com -piaodaren.com -piaode.ren -piaodian.net -piaododo.com -piaodown.com -piaogroup.com -piaohomeinn.com -piaohua.com -piaojubao.com -piaolia.com -piaoliang.com -piaoliusan.com -piaoniu.com -piaoqianqian.com -piaoquantv.com -piaoshen.com -piaotian.org -piaotongyun.com -piaowutong.cc -piaowutong.com -piaoxian.net -piaoxingqiu.com -piaoyi.org -piaoyun.net -piaozhilan.com -piaozone.com -piasy.com -piaviation.com -pic-cname.cc -pic-png.com -pic16.com -pic21.com -pic315.com -pic3733.com -pic720.com -picacgp.com -picatown.com -picbling.com -picc.com -piccamc.com -picchealth.com -piccjs.com -piccpayment.com -picdlb.com -picdns.com -picing.com -pickpikka.com -picooc.com -picosmos.net -picovr.com -picoxr.com -picp.io -picp.net -picsays.com -pictureknow.com -picup.shop -picxiaobai.com -picyourmix.com -picyq.com -pidcn.com -pidoutv.com -pidru.com -piececool.com -pieceofbake.net -pieeco.com -piekee.com -piekee.net -pieshua.com -pifa.bz -pifa333.com -piflogistics.com -pifukezaixian.com -pig4cloud.com -pig66.com -pigai.org -pigcms.com -pighaihe.com -pigji.com -pigmentlc.com -pigonline.org -pigsty.cc -pigv5.com -pigx.vip -pigyun.com -pihitech.com -pihmh.com -piimg.com -piios.com -pikoplay.com -pil0txia.com -pilaipiwang.com -pilidns.com -pilifu.com -pilimeng.com -pimaoji.com -pimax.com -pimei.com -pin-color.net -pin18pin.com -pin2eat.com -pin5i.com -pinan1688.com -pinbaitai.com -pinbaiyan.com -pinbang.com -pinbayun.com -pinble.com -pinble.net -pinchain.com -pinchedashi.com -pinchetang.com -pincn.com -pinda.com -pindu88.com -pinduoduo.com -pinduoduo.net -pinelephant.com -pinestoneasset.com -pinfangw.com -pinfeng.group -pinfun.com -ping-an.net -ping-jia.net -ping-qu.com -ping99.com -pingan.com -pingan.com.hk -pingancdn.com -pinganfang.com -pinganfu.net -pingansilu.org -pinganventures.com -pinganwj.com -pinganyun.com -pinganzhengxin.com -pinganzhengyang.com -pingcap.com -pingce.net -pingchuangyl.com -pingcode.com -pingcode.tech -pingcoo.com -pingdingshan.me -pingdurc.com -pingevip.com -pingfangx.com -pingfanli.com -pingfenbang.com -pinggao.com -pinggaogroup.com -pinggu.com -pinggu.org -pingguobaoxiu.com -pingguodj.com -pingguoid.com -pingguolv.com -pinghe.com -pinghu.tech -pinghui-cn.com -pingjiata.com -pingmudiy.com -pingnanlearning.com -pingnantong.com -pingnuosoft.com -pingpangwang.com -pingpingw.com -pingpingze.com -pingplusplus.com -pingpongx.com -pingpongx.org -pingshu365.com -pingshu8.com -pingshuku.com -pingshuocoal.com -pingshuxiazai.com -pingstart.com -pinguan.com -pinguo.us -pingwest.com -pingxiangzhifa.com -pingxiaow.com -pingxuan123.com -pingxue.net -pingxx.com -pingyin.cc -pingyou.cc -pingzishuo.com -pinhaohuo.com -pinhui001.com -pinidea.co -pinjiago.com -pinjiao.com -pinjiaolian.com -pinjie.cc -pinjieqicai.com -pinjiesj.com -pinkecity.com -pinkehao.com -pinkertech.com -pinkoichina.com -pinkou.com -pinla.com -pinlyu.com -pinmanduo.com -pinmie.com -pinmuch.com -pinocchiowb.com -pinpai-bang.com -pinpai.biz -pinpai1.com -pinpai37.com -pinpaihuoyuan.com -pinpailiu.com -pinpaime.com -pinpointloc.com -pinpopt.site -pinqugongxiangktv.com -pinqukeji.com -pinshu.com -pinsuodesign.com -pintangshi.com -pintechpharma.com -pintreel.com -pintu360.com -pintuan.com -pintuanya.com -pintuer.com -pintuju.com -pintuxiu.net -pinuc.com -pinwaiyi.com -pinweiqifu.com -pinxianghui.com -pinxianghui.net -pinyafang.com -pinyinxiang.com -pinyuan.cc -pinyuew.com -pinzhenglh.com -pinzhi.org -pinzhi365.com -pinzhikeji.net -pinzs.com -pioneer-pharma.com -pioneer-pku.com -pioneerchina.com -pioneerep.com -pioneersci.com -pipa.com -pipacoding.com -pipahealth.com -pipaw.com -pipaw.net -pipedetect.com -pipegg.com -pipgame.com -pipikou.com -pipikun.com -pipilu.com -pipimp3.com -pipipi.net -pipipifa.com -pipishu.com -pipiti.com -pipix.com -pipixiaha.com -pipsemi.com -pipuda.com -piqs.com -piscesys.com -pisx.com -pitayaio.com -piuqiupia.com -pivotacp.com -pivotautomotive.com -pixbe.com -pixcakeai.com -pixcakes.com -pixcheese.com -pixe44lrifted.com -pixelauth.com -pixeldance.com -pixelgame.net -pixepf.sbs -pixiaojiang.com -pixivic.com -pixpark.net -piyaoge.com -piyipiba.com -pj-666.com -pj-road.com -pj.com -pj39800.com -pj57.com -pjbest.com -pjf.name -pjgear.com -pjgjg.com -pjhome.net -pjhubs.com -pjjjw.com -pjjyzx.com -pjlyds.com -pjob.net -pjtime.com -pjtka.com -pk106.com -pk137.com -pk2234.com -pk38.com -pk532.com -pk7o.com -pk995.com -pkbeta.com -pkbff.com -pkbigdata.com -pkcity.com -pkfish.com -pkfj.xyz -pkfun.com -pkgame.com -pkgklk.com -pki.plus -pkm360.com -pkma.cc -pko123.com -pkpmjc.com -pkpmsoft.com -pkpuke.com -pkq.xyz -pksf8.com -pksfc.com -pksky.com -pkslow.com -pkt-cable.com -pku-cele.com -pku-hc.com -pku-hit.com -pku-lvxin.com -pku.tech -pku666.com -pkucare.com -pkucarenjk.com -pkucnooch.com -pkuczuo.com -pkufh.com -pkufi.com -pkugac.com -pkulaw.com -pkulaws.com -pkulb.com -pkuncii.com -pkunn.com -pkuph.com -pkuphqd.com -pkupuzzle.art -pkurc.com -pkusky.com -pkusp.com -pkuszh.com -pkutourism.com -pkuxue.com -pkvs.com -pkwenku.com -pl999.com -plaidc.com -plalzhang.com -planary-yz.com -planckled.com -planetariuminsight.site -planetarylighting.com -planetmeican.com -planpelham.com -plantb2b.com -plantname.xyz -plantnutrifert.org -plantower.com -plas-cn.com -plasdata.com -plastics-machinery-equipment.com -plasway.com -plateno.cc -plateno.com -platenogroup.com -platform-cn.com -platform.dell.com -platinum-traveller.com -platinumchina.com -play-analytics.com -play-cdn10.com -play-cdn11.com -play-cdn13.com -play-cdn14.com -play-cdn16.com -play-cdn19.com -play-cdn20.com -play-cdn7.com -play.craft.moe -play.jinnantv.top -play.scrstv.com -play.sngdxsn.com -play68.com -play700.com -play910.com -play920.com -playbattleaces.com -playcase.com -playchd.com -playcomet.jp -playcool.com -playcrab.com -playdanji.com -playdisorder.com -player.200877926.top -playerinfinite.com -playezu.com -playfifa.com -playgm.cc -playhousemag.com -playlu.com -playorcas.com -playpangu.com -playsm.com -playtai.com -playtai.net -playwonderful.com -playwxgame.com -playyx.com -playzy.com -plb1.com -plbig.com -plc100.com -plc11.com -plcdn.net -plcent.com -plchinese.com -plcjs.com -plcloud.com -plctlab.com -plentypolymer.com -plesk-cn.com -plex2.com -plexpt.com -plfrog.com -plll-fluid.com -plob.org -plopco.com -plottersyservicioshdz.com -plottinglogistics.com -plpwz.com -plsbd.com -plsdeyy.com -plsfybjy.com -pltgd.com -plumcrk.com -pluosi.com -pluralitycn.com -plures.net -plus-chem.com -plus-space.com -plus3gallery.com -plusco-tech.com -plusgantt.com -plusplus7.com -plusplustu.com -plusrtc.com -plutoer.com -plutuspay.com -pluveto.com -plvideo.net -plxao.com -plxfgroup.com -plxww.com -plycd.com -plyh.com -plyhjt.net -plyxiaoche.com -plyygs.com -plyz.net -plzly.com -plzx.net -plzyll.com -pm-china.com -pm-leader.com -pm-summit.org -pm222.com -pm25.com -pm265.com -pm28.com -pm360.com -pmallstore.com -pmcaff.com -pmceo.com -pmcj-group.com -pmcrobot.com -pmd5.com -pmdak.com -pmdaniu.com -pmdled.com -pmdoudou.com -pmdown.com -pmichina.org -pmish-tech.com -pmkiki.com -pmovie.com -pmparkchina.com -pmph.com -pmphai.com -pmphmooc.com -pmptuan.com -pmquanzi.com -pmr66.com -pmsmzyy.com -pmtalk.club -pmtemple.com -pmtown.com -pmway.com -pmx-nanho.com -pmxprecision.com -pmxsd.com -pmyes.com -pmyuanxing.com -pn1waq.com -pnas.org -pnetp.org -pnfang.com -pnfq.com -png.pub -pngbag.com -pngsucai.com -pniao.com -pnol.net -pnst8.com -pntagkyy.com -pntkyy.com -pntryy.com -pnty1688.com -pnwww.com -pnxct.com -pnxseykj.com -pnxyrykj.com -pnzpw.com -po.co -po7ryumvkx34.com -pobaby.net -pobasoft.com -pochanguanliyanjiu.com -pochezu.com -pocketcloud.vip -pocketdigi.com -pocketuni.net -pockpower.com -pocomagnetic.com -pocosite.com -pocsuite.org -podcast.xyz -podfest.tech -podinns.com -podjiasu.org -podunjiasu.com -poem88.com -poemlife.com -poemschina.com -pohaier.com -pohover.com -poikm.com -point-memory.com -poiuytw.com -poizon-inner.com -poizon-inner.net -poizon-support.com -poizon.com -poizon.net -poj.org -pojianyunfu.com -poke203.com -pokemmc.com -pokemon-unitepgame.com -pokemon.vip -pokerbros.net -pokercup.net -pokermate.net -poketb.com -polamus.com -polariton.life -polars.cc -polarxiong.com -polaxiong.com -polayoutu.com -polebrief.com -polingba.com -polo-king.com -poloxue.com -poluosenko.com -poly-gx.com -poly-pm.com -polycd.com -polycent.com -polycinemas.com -polycn.com -polycom-jl.com -polyflowenergy.com -polyhotel.com -polyhotels.com -polyinno.com -polyreymed.com -polytheatre.com -polytheatresz.com -polyv.net -polywuye.com -polyxfb.com -pomears.com -pomeloyun.com -pomoho.com -pondernext.com -ponkong.com -ponley.com -pontite.com -pony.ai -ponyai-cn.com -ponycool.com -ponyfk.com -ponytest.com -ponytestqd.com -ponytestsh.com -ponytestsz.com -poo1.club -pooban.com -pooeoo.com -poofoo.com -pooioo.com -pook.com -pookcdn.com -pooketools.com -poorren.com -pop-bags.com -pop-fashion.com -pop-shoe.com -pop136.com -pop365.com -popcj.com -popcustoms.com -popdg.com -popgo.org -popincdn.com -popkart.tv -popkx.com -poploli.com -popmart.com -popoffices.com -popoho.com -popoim.com -popovivi.com -popoxiu.com -popqiu.com -popsoft.com -popss.biz -popumed.com -popupgrade.com -poputar.com -popziti.com -poration-vac-tech.com -porlockz.com -port-m.com -portalcdn.cdnetworks.com -portcontainer.com -porthebei.com -portjs.com -portjs.net -portjswl.com -portlandgaa.com -portlyg.com -portmansevenstars.com -ports-intl.com -portsgmt.com -porttong.com -portugal-visacenter.com -poru-mro.com -poryf.com -pos58.com -pos580.com -posbar.com -poscerwatch.com -poseidong.com -poseidonqianshui.com -posfree.com -posge.com -posmcc.com -posn.net -pospalit.com -pospos.com -post163.com -post183.net -postarlight.com -posterlabs.com -postgres.fun -postgresqlchina.com -postjson.com -postpony.com -postxin.com -posyn.com -poszjia.com -potalapalace.com -potassiumnitrate-zx.com -potato.gold -potensic.com -potevio.com -potianji.net -potomaccottage.com -potops.com -potplayer.org -potplayercn.com -pouchcontainer.io -pouquiagievu.com -pouser.net -pova-elc.com -power-rail.com -power-sprayer.com -power86.com -power8t.com -powerapp.io -powerbeijing-ec.com -powerbeijing.com -powerbibbs.com -powercdn.com -powerchina-intl.com -powerchinaleasing.com -powerchinanewenergy.com -powerchinashow.com -powerchinayun.com -powerde.com -powereasy.net -powerex1.com -powerflow-tech.com -powerfulchina.com -powerhubei.com -poweric-china.com -powerlandtech.com -powerlaw.ai -powerleadercdn.com -powerleaderidc.com -powerliber.com -powerlong.com -powerlongmuseum.com -powerma.net -powermaxcorp.com -poweron.cc -powerpigs.net -powerpms.com -powerrsoft.com -powerskystudio.com -powerstationofart.com -powerstonetech.com -powertensors.ai -powertradepro.com -powervision.me -powerworldgd.com -powerxene.com -powpegxw.com -powzamedia.com -poxiaowy.com -poxiaoxinxi.com -pozou.com -pp.cc -pp100.com -pp1o.com -pp25.com -pp250.com -pp30.com -pp365.com -pp373.com -pp51.com -pp540.com -pp63.com -pp918.com -pp9l.com -ppad.com -ppaiss.com -ppbizon.com -ppbnchina.com -ppcho.com -ppcn.net -ppcode.com -ppcost.com -ppcwzebv.com -ppdai.com -ppdaicdn.com -ppdaicorp.com -ppdd.com -ppdesk.com -ppdqk.com -ppduck.com -ppdys.vip -ppfeng.com -ppforging.com -ppgallery.com -ppgame.com -ppgg.in -ppgmm.com -ppgslb.com -pphimalayanrt.com -ppia-china.com -ppinfra.com -ppio.cloud -ppio.work -ppj.io -ppjtc.net -ppkankan01.com -ppkao.com -ppkjinc.com -ppkoo.com -pplib.net -pplive.com -pplive.net -pplm1996.com -pplp.info -ppm-htv.com -ppm2.com -ppmake.com -ppmm.org -ppmoney.com -ppnews.vip -ppos.com -ppp.gold -ppparking.net -pppcar.com -pppet.net -pppie.com -pppiii.com -pppnnm.com -pppoevps.com -ppppic.com -ppppoints.com -ppq.me -pprxcdn.com -pps.tv -ppsao.com -ppsimg.com -ppsoftw.com -ppspain.com -ppsport.com -ppstream.com -ppstream.net -ppstv.com -ppstv.net -ppsurl.com -ppsz.net -ppt118.com -ppt20.com -ppt360.com -ppt920.com -pptair.com -pptbest.com -pptboss.com -pptbz.com -pptelf.com -ppter8.com -ppthi-hoo.com -pptianliao.com -pptiyu.com -pptkj.net -pptmall.net -pptmao.com -pptniu.com -pptok.com -pptschool.com -pptsq.com -pptstore.net -pptsupermarket.com -pptui.com -pptutor.com -pptv.com -pptv5.com -pptvdata.com -pptvimg.com -pptvnet.com -pptvyun.com -pptxy.com -ppurl.com -ppvi.net -ppwan.com -ppwang.com -ppwenda.com -ppwfa.com -ppwow.cc -ppwwyyxx.com -ppx520.com -ppxclub.com -ppxhhh.com -ppxiaoshuowang.com -ppximg.com -ppxm.com -ppxmw.com -ppxs.net -ppxstatic.com -ppxsw.co -ppxvod.com -ppxwo.com -ppzhan.com -ppzhilian.com -ppzuche.com -ppzw.com -pqdtcn.com -pqpo.me -pqt-bearing.com -pqtygsfkv.com -pqyhigh.com -pqylow.com -pqymiddle.com -pqyvzr56aceitx.com -pqzhichan.com -pr020.com -pr027.com -pr0771.com -pr1bg.com -pradabao.com -pratic-cnc.com -prayaya.com -prayaya.net -prayaya.org -prcedu.com -prcee.org -prcfe.com -prcvalve.com -precise-test.com -precision-biotech.com -precision-biz.com -preludeid.com -premedglobal.com -premft.com -presenceall.com -pressmine.com -prestodb-china.com -prestolite-bj.com -prettech.com -preyp.net -prfc-cn.com -prfog.com -prhljt.com -pricl.com -primadiagnostic.com -primarychina.com -prime-care.com -prime-semi.com -prime3c.com -primegene.net -primerachina.com -primeton.com -princechem.com -print86.com -printer-china.com -printerwhy.net -printhome.com -printhr.com -printidea.art -printlake.com -privateapi.xyz -privatehd.to -privatess.win -privspace.net -prizesapp.com -prjdrj.com -prkfyy.com -prnewspress.com -pro001.com -pro400.com -proangela.com -proav-china.com -procar.cc -processedmetals.com -processon.com -procetpoeinjector.com -prochembio.com -prociss.com -procivi.net -prod-controlbe.floonet.goog -prod-databe.floonet.goog -prod.databe.floonet.goog -prodcam.cc -prodcutmodel.com -productcard.gog-statics.com -productivity.wiki -proginn.com -programfan.com -programmer.ink -programmercarl.com -programschool.com -progress-cn.com -progressingeography.com -project-oa.com -project-snow.com -project.ai -projectaker.com -projector-jl.com -projector-window.com -projectserval.com -projektenergetika.com -proleantech.com -prolog-int.com -prolto.com -promise-sz.com -promisingedu.com -promptchoose.com -pronax.tech -pronetway.com -proquest.com -proresearch.org -pros-view.com -prositsole.com -prostar-cn.com -protect-file.com -protong.com -protontechcn.com -proup.club -providence-chemicals.com -prowine-shanghai.com -proximabeta.com -proxypass.net -proya-group.com -proya.com -proyy.com -prpracg.com -prs-9hospital.com -prs-motion.com -prsgl.com -prteco.com -prts.wiki -prttech.com -prvchina.com -prwlyy.com -prxxff.com -pryk0755.com -przhushou.com -przwt.com -ps-boat.com -ps123.net -ps12345.com -ps173.com -ps288.com -ps314.com -ps616.com -ps9d.com -psaiwave.com -psald.com -psb888.com -psbc-ubank.com -psbc.com -psc4d.com -pscddos.com -psd.net -psd1403.com -psd8.com -psdee.com -psdiv.com -pse-meti.com -psfjz.com -psiexpo.com -psjia.com -psjxty.com -psjyedu.com -pslkzs.com -psmartcloud.com -psnine.com -psoneart.com -psp99.com -psr-china.com -psrar.com -psrss.com -pstatp.com -pstips.net -pstxg.com -psvalve.com -psy-1.com -psychcn.com -psychspace.com -psylife.com -psysoper.com -psyzg.com -psznh.com -pszwatch.com -pszx.com -pszxw.net -pt-link.com -pt597.com -pt80.net -pt963.com -pt97.com -ptacn.com -ptah-tech.com -ptausercontent.com -ptbchina.com -ptbus.com -ptc-asia.com -ptdsh.com -pterclub.com -ptfdc.com -ptfe-rod.com -ptfish.com -ptfish.org -ptgcn.com -pthceshi.com -pthksw.com -pthxuexi.com -pthxx.com -pthxxw.com -ptimg.org -ptkckj.com -ptkill.com -ptmezkgg.com -ptnrjt.com -ptools.fun -ptorch.com -ptotour.com -ptpcp.com -ptrcw.com -pts-ai-texture.com -pts-testing.com -pts.games -ptshare.org -ptszgh.org -ptteng.com -ptwbs.net -ptweixin.com -ptx123.com -ptxie.com -ptxyrcw.com -ptxz.com -ptyg.com -ptyly.com -ptyoubike.com -ptyqm.com -ptyx.com -pu-bg.com -pu-ling.com -pu1kj.com -pu600.com -pu82.vip -puaas.com -puai999.com -puaihospital.net -puamap.com -puata.info -pubbcsapp.com -pubchn.com -pubg.plus -pubg8x.com -pubghelper.com -pubgkam.com -pubgtool.com -publiccms.com -publicdns.cc -pubmed007.com -pubmedplus.com -pubone.cc -pubtian.com -pubukeji.com -pubwinol.com -pubyun.com -pubyun.net -pubyun.org -pucijiankang.com -pudding.cc -pudetouzi.com -pudie.net -pudijt.com -pudn.com -pudongwater.com -pudutech.com -puduzhai.com -puem.org -puer10000.com -puercn.com -puersai.com -puertea.com -puffergames.com -pugba.com -puh3.com -puhebiopharma.com -puhedesign.com -puhler.com -puhuacapital.com -puhuahui.com -puhuaxincai.com -puidc.com -puiedu.com -puikiuxinyi.com -pujia8.com -pujiaba.com -pujiaziwang.com -pujie.com -pujingjt888.com -pujiugame.com -pukinte.com -pule.com -pulinmed.com -pulisi.com -pulixingfu.com -pullwave.com -pullword.com -pullywood.com -pulogroup.com -pumcderm.net -pumpisok.com -pumpzc.com -punaide.com -punanhospital.com -punchbox.info -pungboo.com -puoke.com -puppetchina.com -puppy888.com -pupu168.com -pupuapi.com -pupufz.com -pupugo.com -pupumall.com -pupumall.net -pupurazzi.com -pupuwang.com -purang.com -purcotton.com -pureage.info -pureh2b.com -purekindfund.com -puremild.com -purenyy.com -puresnake.com -puresys.net -purewhite.io -purified-group.com -puronglong.com -purplehi.com -purplelec.com -purui020.com -puruimachinery.com -pusa123.com -pusa365.com -push-herbchem.com -push2u.com -pushgrid.net -pushi-ngp.com -pushigao.com -pushihao.com -pushiyb.com -pushjoy.com -pushplus.plus -pushthink.com -pushtime.net -pushyzheng.com -pusicapital.com -pusupvc.com -putaoa.com -putaocdn.com -putaogame.com -putaojiu.com -putaotec.com -putclub.com -putdb.com -putdl.com -putian-nst.com -putian508.com -putiandai.com -putitt.com -putonsoft.com -putop.net -puusa.net -puwenlong.com -puworld.com -puwww.com -puxiang.com -puxindesign.com -puxun.co -puyewx.com -puyideshiye.com -puyimed.com -puyuan-electric.com -puzeyf.com -puzzle8.com -puzzles100.com -pv001.com -pv001.net -pv138.com -pv265.com -pvacegurmbz3e.com -pvc-diban.net -pvc123.com -pvcliping.com -pvpin.com -pvz.moe -pw-partners.com -pw1999.com -pw88.com -pwand.com -pwdding.icu -pwithe.com -pwjptdg.xyz -pwjt.com -pwkss.com -pwmat.com -pwmis.com -pwmqr.com -pword.net -pwrd.com -pwrdoverseagame.com -pwrdoverseas.com -pwsannong.com -pwsz.com -pwypx.com -pwypyq.com -px0571.com -px0769.com -px1039.com -px33.com -px5a.com -pxb7.com -pxbgp.com -pxc33.com -pxcn168.com -pxcoex.com -pxdier.net -pxemba.com -pxrczpw.com -pxsfybjy.com -pxsrmyy.com -pxtbhb.com -pxtcm.com -pxtu.com -pxtx.com -pxtzirma.com -pxuiamz.com -pxvps.com -pxwsemi.com -pxx.io -pxykyy.com -pxyuan.com -pxyyjt.com -pxzhbsq.com -pxzj.com -py-axa.com -py1080p.com -py1314.com -py168.com -py2y.com -py3study.com -py94.com -pyadx.com -pyasfunds.com -pybrother.com -pychina.com -pychina.org -pydp888.com -pydvu.com -pyedu.cc -pyeec.com -pyer.net -pyer.site -pyfb001.com -pyhead.com -pyhosp.com -pyjdgj.com -pyjkd.com -pyjt.net -pyker.com -pylonghai.com -pymeng.com -pymh.com -pyneo.com -pyou.com -pyral07m8m.com -pysdsysc.com -pyshszh.com -pysshyy.com -pystar.com -pyt2021.com -pytesgroup.com -python-abc.xyz -python-china.com -python100.com -python51.com -pythonclub.org -pythoner.com -pythonheidong.com -pythonke.com -pythonlion.com -pythonthree.com -pythontip.com -pytk.net -pytool.com -pytorchtutorial.com -pywangqi.com -pyxjiang.com -pyxk.com -pyxrc.com -pyxwapp.com -pyxww.com -pyycz.com -pyynsm.com -pyzhbc.com -pyzls.com -pyzwy.com -pz028.com -pz6.com -pzboy.com -pzcgw.com -pzdf.com -pzds.com -pzfc.com -pzfcw.com -pzhccb.com -pzhdahe.com -pzhedu.com -pzhl.net -pzhol.com -pzhqx.com -pzhqz.com -pzhr.com -pzhwater.com -pzhwyw.com -pzjdimg.com -pzjiadian.com -pzlink.com -pzmls.com -pznews.com -pznrfsy.com -pznsh.com -pzoom.com -pzpu.com -pzrex.com -pzzc.net -pzzx.com -q-alumni.com -q-bakery.com -q-dazzle.com -q-parking.com -q-supreme.com -q.biz -q047.com -q1.com -q1cm.com -q2ak.com -q2cdn.com -q2d.com -q2zy.com -q36f.icu -q49d4486xg.com -q4yvu50kh2.com -q5.com -q6haqi.com -q6u.com -q77777777.com -q78s5.com -q7kyzxq4nj.com -q88b.net -q88c.net -q89850n302.com -qa114.com -qacctv.com -qacn.net -qae3orq9we9t7.com -qaeczbxr.com -qafone.cc -qagpublic.qatp1.net -qahzp.com -qakkan.vip -qalex.com -qamemc.com -qapi.cc -qaqa555.com -qaros.com -qast.com -qaxanyu.com -qaxanyuv6.com -qaxcloudwaf.com -qaxwzws.com -qaynak.com -qazasd.com -qazdsa.com -qazso.com -qaztool.com -qazwobdu.com -qazxsdc.com -qbangmang.com -qbao.cc -qbaobei.com -qbb6.com -qbboss.com -qbd888.com -qbewux.xyz -qbfnp.com -qbgxl.com -qbide.com -qbihui.com -qbiqu.com -qbitai.com -qbj.cc -qbjrxs.com -qbjwater.com -qbox.me -qbox.net -qbtxt.net -qbtzjt.com -qbview.com -qbxs.com -qbxz.com -qbxzywyh.com -qc-hr.com -qc-shanghaipathology.com -qc101.com -qc188.com -qc6.com -qc99.com -qcaipiao.com -qcbaas.com -qcbone.com -qcc.com -qcc.qualcomm.com -qccip.com -qcckyc.com -qccost.com -qccr.com -qccrm.com -qcdne.com -qcdnlog.com -qcdntest.com -qcdntest.net -qcds.com -qcdy.com -qcdyj.com -qcenglish.com -qcers.com -qcers.net -qcgm.net -qcgq168.com -qchcm.com -qches.com -qchouses.com -qchxt.com -qckuaizhi.com -qclc.com -qclivecdn.com -qcloud-edumall.com -qcloud.com -qcloud.la -qcloudapps.com -qcloudcdn.com -qcloudcdnsrc.com -qcloudcjgj.com -qcloudclass.com -qcloudcos.com -qcloudcos.net -qcloudecdn.com -qclouder.com -qcloudestate.com -qcloudgme.com -qcloudgslb.com -qcloudimg.com -qcloudipv6.com -qcloudmail.com -qcloudmarket.com -qcloudns.com -qcloudocdn.com -qcloudoceanus.com -qcloudsmartiot.com -qcloudtcic.com -qcloudteo.com -qcloudtiw.com -qcloudtrip.com -qcloudtt.com -qcloudwaf.com -qcloudwzgj.com -qcloudzygj.com -qcly.love -qcly.xyz -qcmgkids.com -qcmod.xyz -qcmoe.com -qcmrjx.com -qcmuzhi.com -qcoco.com -qconbeijing.com -qconshanghai.com -qcpjjxc.com -qcplay.com -qcq3.com -qcql.com -qcr.cc -qcrencai.com -qcrlvip.com -qcrqll.com -qcsh8.net -qcsj.com -qcstudy.com -qct100.com -qctm.com -qctsw.com -qctx88.com -qcwan.com -qcwh2021.com -qcwhxx.com -qcwlseo.com -qcwp.com -qcwxjs.com -qcwz8.com -qcxrby.com -qcxs.com -qcxzls.com -qcy.com -qcymall.com -qcyoung.com -qcyuns.com -qczb.app -qd-dy.com -qd-metro.com -qd-mls.com -qd-weimob.com -qd.ink -qd0513.com -qd256.com -qd5itt.com -qd8.com -qdac.cc -qdaeon.com -qdaiduo.com -qdaiia.com -qdaily.com -qdairlines.com -qdairport.com -qdauction.com -qdbdsk.com -qdbhuh.com -qdbocweb.com -qdby.com -qdcaijing.com -qdcars.com -qdccb.com -qdccdl.com -qdcloudsolution.com -qdcu.com -qdcykg.com -qdcz.com -qdd.gd -qdd.gg -qdd.la -qddfxfpx.com -qddlchb.com -qddown.com -qddsjx.com -qddsta.com -qdeastsea.net -qdedu.net -qderzhong.net -qdexam.com -qdfik.com -qdfnscy.com -qdfuer.com -qdfuns.com -qdfw.com -qdgaoshanyun.com -qdgjj.com -qdgw.com -qdgxjt.com -qdgxqrc.com -qdhantang.com -qdhengyong.com -qdhetian.net -qdhkhospital.com -qdhmsoft.com -qdhongyunxing.com -qdhonmon.com -qdhr.net -qdhsty.com -qdhualing.com -qdhuaren.com -qdhw.com -qdhwjs.com -qdingnet.com -qdipc.com -qdjimo.com -qdjingchengyiqi.com -qdjjwsjf.com -qdjttzjt.com -qdjunyi.com -qdjxhz.com -qdjyjtdzsw.com -qdkefu.com -qdkelinde.com -qdkingst.com -qdkmjc.com -qdkpdy.com -qdlanrun.com -qdlcl.com -qdlib.net -qdliding.com -qdlinghaiba.com -qdlives.com -qdliye.com -qdlongre.com -qdlpay.com -qdlups.com -qdlvjia.com -qdlyxx.com -qdmama.net -qdmcxh.com -qdmm.com -qdmswx.com -qdnsyh.com -qdnzrmyy.com -qdons.com -qdpdjx.com -qdport.com -qdpr.com -qdqehb.com -qdqiche.com -qdqihang.com -qdqs.com -qdrcsc.com -qdreads.com -qdsay.com -qdsbx.com -qdsdeyljt.com -qdsdyjt.com -qdshebao.com -qdshoufei.com -qdshuiche.com -qdslcs.com -qdsmjxh.com -qdspr.com -qdsrmyy.com -qdsxtkj.com -qdsysj.com -qdtaide.com -qdtech.ai -qdtgood.com -qdthgs.com -qdtianxintai.com -qdtrrh.com -qdtxdzgc.com -qduhwq.com -qdurl.cc -qdwebim.com -qdwenxue.com -qdwpa.com -qdwxnet.com -qdxct.com -qdxfgy.com -qdxgn.com -qdxgysy.com -qdxhd.com -qdxhs.vip -qdxtcw.com -qdycdx.com -qdyijiamei.com -qdyiyi.com -qdyuzhengtang.com -qdyxbyy.com -qdyztang.com -qdzhengkang.com -qdzhv.com -qdzkmj.com -qdzls.com -qdznjt.com -qdzx.net -qdzxyy.com -qdzz.com -qe32.com -qebk.com -qechu.com -qeebike.com -qeecc.com -qeejoo.com -qeeka.com -qeeniao.com -qeerd.com -qefee.com -qegcdn.com -qeoacc.com -qeoacc.net -qeoagphm.com -qeodns.com -qeodns.net -qeopzvgm.com -qeqnet.com -qera.online -qerwsoft.com -qeteshcn.com -qeto.com -qetoken.com -qeyopxb.com -qf-meter.com -qfang.com -qfangimg.com -qfbcs.com -qfbio.com -qfbwcd.xyz -qfcgroup.com -qfclo.com -qfdeng.com -qfdengn.com -qfedu.com -qfeiche.com -qfiee.com -qfihdr.com -qfns1.com -qfpay.com -qfpq.com -qfrost.com -qfrxyl.com -qfsh.com -qfsyj.com -qftouch.com -qfull.com -qfun.com -qfvip.net -qfwl.com -qfxcha.com -qg.net -qg108.com -qg3oed7882.com -qgadmin.qcpp1.net -qgb2b.com -qgbnzb.com -qgbzyzl.com -qgcyjq.org -qgenius.com -qgfund.com -qgggxxw.com -qggj.com -qggzszk.org -qgjzsc.com -qgkjacc.com -qgnvbc.com -qgodb.com -qgpx.com -qgqc.shop -qgqy.com -qgren.com -qgswvza.com -qgsydw.com -qgtql.com -qgvps.com -qgwzjs.com -qgxl.org -qgyksr.com -qgyqshz.com -qgysj.org -qgyyzs.net -qgzb.net -qgzxx.com -qgzzz.com -qh-cdn.com -qh-dl.com -qh-hospital.org -qh-lb.com -qh24.com -qh4321.com -qh6bc.com -qh9y.com -qhangyun.com -qhass.org -qhball.com -qhbtv.com -qhcby.com -qhcdn-lb.com -qhcdn.com -qhch520.com -qhchcb.com -qhclass.com -qhcro.com -qhcswhh.com -qhd-marathon.com -qhd.net -qhdast.com -qhdatongnews.com -qhderwei.com -qhdgjj.com -qhdglc.com -qhdjgyy.com -qhdlcdn.com -qhdnews.com -qhdnxgyy.com -qhdrc.com -qhdren.com -qhduhu.com -qhdvtc.com -qhdxgps.com -qhdxw.com -qhdzyy.com -qhea.com -qhee-ma.com -qhee.com -qhfx.net -qhfzcp.com -qhg7.com -qhgas.com -qhgufen.com -qhholding.com -qhhxnw.com -qhimg.com -qhimgs.com -qhimgs0.com -qhimgs1.com -qhimgs2.com -qhimgs3.com -qhimgs4.com -qhimgs5.com -qhimgs6.com -qhimi.com -qhjyks.com -qhkyfund.com -qhlhfund.com -qhlingwang.com -qhlyou.com -qhm123.com -qhmed.com -qhmgf.com -qhmsg.com -qhnews.com -qhong.net -qhpcc.com -qhpta.com -qhrch.com -qhrcsc.com -qhres.com -qhres2.com -qhrqxh.com -qhsat.com -qhscw.net -qhsdzs.com -qhsetup.com -qhsklw.com -qhsrmyy.com -qhssyy.com -qhstatic.com -qhsxf.net -qhtf-china.com -qhtibetan.com -qhtui.com -qhtycp.com -qhtyzx.com -qhuah.com -qhwmw.com -qhwptyn.com -qhwww.com -qhxcjt.com -qhxzlsgs.com -qhyccd.com -qhyh.com -qhyimin.com -qhylns.com -qhysjt.com -qhytyyvx.com -qhyzzzs.com -qhzpw.com -qi-auto.com -qi-che.com -qi-ju.com -qi-wen.com -qi10.com -qi18.com -qi58.com -qiaijt.com -qiaiju.com -qiaiou.com -qiak.com -qialol.com -qian-gua.com -qian.lu -qianaolawyer.com -qianbao.com -qianbaocard.com -qianbaogroup.com -qianbaohr.com -qianbeibei.shop -qianbi360.com -qianbianapi.com -qianbianma.com -qianbianxiazai.com -qiancangwms.com -qiancha.cc -qianchenglvdong.com -qianchengriben.com -qianchiyun.com -qiancipai.com -qiandai.com -qiandao.com -qiandaoapp.com -qiandaoapp.net -qiandaocdn.com -qiandaohu.cc -qiandaqian.com -qiandaren.com -qiandd.com -qiandeups.com -qianduan.com -qianduanheidong.com -qiandunvpn.com -qianfan.tv -qianfan123.com -qianfan365.com -qianfanwanmu.com -qianfanyun.com -qianfeng.com -qiang100.com -qiangbus.com -qiangchezu.com -qiangchuan.com -qiangfu.xyz -qianggen.com -qianggen.net -qianggou5.com -qiangjin.org -qiangka.com -qianglihuifu.com -qiangmi.com -qiangqiang5.com -qiangren.com -qiangsenhg.com -qiangshengyanhua.com -qiangtou.net -qiangumeitan.com -qiangungun.com -qianguyihao.com -qiangyingjituan.com -qiangyinli.com -qianhai12315.com -qianhaiaiaitie.com -qianhaibs.com -qianhaipower.com -qianhong.com -qianhuajie.com -qianhuanhulian.com -qianhuaweb.com -qianinfo.com -qianjia.com -qianjianggas.com -qianjiangwang.com -qianjiapp.com -qianjiawen.net -qianjiayue.com -qianjing.com -qianjingdesign.com -qianjingkeji.com -qianju.org -qianka.com -qiankoo.com -qiankun6.com -qiankungroup.com -qiankunshopping.com -qiankunxin.com -qianlaiye.com -qianlht.com -qianliao.net -qianliao.tv -qianliaowang.com -qianliht.com -qianliii.com -qianlima.com -qianlimafile.com -qianlimazb.com -qianling.pw -qianlinkj.com -qianlong.com -qianluxiaoshuo.com -qianmaiapp.com -qianmaidao.com -qianmh.com -qianmi.com -qianmingyun.com -qianmiyun.com -qianmoqi.com -qianmoufirm.com -qianmu.org -qiannahotel.com -qianniu.com -qianp.com -qianpailive.com -qianpen.com -qianpin.com -qianqi.net -qianqian.com -qianqiankeji.xyz -qianqiantao.com -qianrengang.com -qianrenge.com -qianrihong.net -qianrong.me -qianselight.com -qianshanren.com -qianshengqian.com -qianshuixing.com -qiansiw.com -qiant.net -qiantangke.com -qiantianchayuan.com -qiantucdn.com -qianuni.com -qianvisa.com -qianwa.com -qianwanku.com -qianwen.com -qianxiangbank.com -qianxibj.net -qianximiye.com -qianxin.com -qianxincdn.com -qianxinet.com -qianxingniwo.com -qianxingwl.com -qianxs.com -qianxuecloud.com -qianxuew.com -qianxueyunke.com -qianxun.com -qianxunclub.com -qianxungroup.com -qianxuntrip.com -qianyan.biz -qianyan001.com -qianyanchefang.com -qianye88.com -qianyierp.com -qianyikeji.com -qianyinedu.com -qianyingzhi.com -qianyuangx.com -qianyuewenhua.xyz -qianyuncare.com -qianyuwang.com -qianzhan.com -qianzhan123.com -qianzhanhl.com -qianzhengbanliliucheng.com -qianzhengdaiban.com -qianzhou.shop -qianzhu8.com -qianzhuvisa.com -qiao-cn.com -qiao88.com -qiaobo.net -qiaobocnc.com -qiaobuqiao.com -qiaobutang.com -qiaoclouds.com -qiaodan.com -qiaofangyun.com -qiaofanxin.com -qiaoh.com -qiaohewei.cc -qiaohu.com -qiaohuapp.com -qiaohumall.com -qiaoji8.com -qiaojiamuxian.com -qiaojiang.tv -qiaolianyimin.com -qiaolishuiwu.com -qiaomaren.com -qiaomi.com -qiaomu.ai -qiaomukeji.com -qiaoshang.org -qiaoshisui.com -qiaoshoujituan.com -qiaosidea.com -qiaotu.com -qiaoxuanhong.com -qiaoxuesi.com -qiaoyi.org -qiaoyinkg.com -qiaoyue66.com -qiaozhuangjia.com -qiaozuji.com -qiaqa.com -qiaqiafood.com -qiawei.com -qibali.com -qibaodwight.org -qibazaixian.com -qibingdaojia.com -qibingwang.com -qibo168.com -qiboleqipai.com -qibosoft.com -qibox.com -qibuge.com -qibuluo.com -qicaispace.com -qicaizulinwang.com -qichacha.co -qichacha.com -qichacha.net -qichamao.com -qichang56.com -qichangqing.com -qichangv.com -qichecailiao.com -qichechaoren.com -qichedaquan.com -qicheedu.com -qichegeyin.com -qichehot.com -qichejingwei.com -qichelian.com -qicheliliang.com -qichemen.com -qichemoxing.net -qichengplus.com -qichepeijian.com -qichepinpai.com -qicheq.com -qichequan.net -qichetansuo.com -qichetong.com -qichewo.com -qichexl.com -qichezhan.net -qichuang.com -qichunfdc.com -qichunzp.com -qicolor.com -qicp.net -qicp.vip -qictools.com -qida100.com -qidaile.com -qideshuiwu.com -qideyun.com -qidi-edu.com -qidian-cos-backup.com -qidian-cos.com -qidian.com -qidian688.com -qidianbox.com -qidianjob.com -qidianla.com -qidianmm.com -qidianpw.com -qidiantu.com -qidianzan.com -qidic.com -qidiqd.com -qidisheng.com -qidiwang.com -qidong.name -qidongcha.com -qidongnews.com -qidongyx.com -qidulp.com -qiduo.net -qie.tv -qiecdn.com -qieerxi.com -qiejingsu.com -qiekao.com -qiekj.com -qieman.com -qiepai.com -qieracing.com -qierge.com -qieta.com -qieyike.com -qieying.com -qieyou.com -qiezibenpao.com -qiezic.com -qiezip.com -qifan1.com -qifandianlansh.com -qifangw.com -qifeiy.com -qifeiye.com -qifeizn.com -qifeng-safety.com -qifeng.com -qifenxiao.com -qifu.me -qifub.com -qifuip.com -qigonggate.com -qigongworld.net -qigousoft.com -qiguagua.com -qigumi.com -qiguo.com -qiguoread.com -qihanbio.com -qihangcrrc.com -qihangw.com -qihaoip.com -qihaxiaoshuo.com -qihejy.com -qihepaimai.com -qihihi.com -qihoo.com -qihoo.net -qihu-lb.com -qihu.com -qihu.org -qihuangpuji.com -qihuangshuyuan.com -qihuangzhishu.com -qihuapi.com -qihucdn.com -qihuiai.com -qihuiwang.com -qihuorumen.com -qii404.me -qiieer.net -qiigame.com -qiivoo.com -qijedu.com -qijee.com -qiji.tech -qijiadianzi.com -qijian99.com -qijianzs.com -qijiapay.com -qijiayoudao.net -qijilvxing.com -qijishow.com -qijishu.com -qijiyun.vip -qijizuopin.com -qijuan.com -qijucn.com -qikan.com -qikanchina.com -qikanmulu.com -qikanvip.com -qikanw.com -qike-cloud.com -qikegu.com -qikekeji.com -qikoo.com -qikouu.com -qikqiak.com -qiku.com -qikuaibao.com -qikucdn.com -qikula.com -qilaijian.com -qilang.net -qilanxiaozhu.co -qilanxiaozhu.net -qilanxiaozhu.vip -qilaoshicaishui.com -qilecms.com -qiliangjia.com -qiliaokj.com -qilindao.com -qiling.org -qilinnet.com -qilinshuixiang.com -qilinxuan.net -qilinyiqi88.com -qilitech.ltd -qiliuxs.com -qilong.com -qilongtan.com -qilongyoule.com -qilu-pharma.com -qiluce.com -qiludb.com -qiluhospital.com -qiluhr.com -qilupaint.com -qiluyidian.mobi -qiluyidian.net -qima-inc.com -qimaiz.com -qimao.com -qimi.com -qimiaosenlin.com -qimiaozhiwu.com -qimila8.com -qiming.tech -qimingcx.com -qimingjiang.com -qimingpian.com -qimingvc.com -qimingventures.com -qimingxing.com -qimingzi.net -qiminzi.com -qimodesign.com -qimser.com -qimu86.com -qin.io -qinbei.com -qinbing.com -qincai.com -qincaigame.com -qinchacha.com -qinchuan.com -qincj.me -qinco.net -qindaohotel.com -qinde.net -qineasy.com -qinengdongfang.com -qiner520.com -qinfenpharm.com -qing-feng.com -qing-shan.com -qing-tian.com -qing.me -qing.su -qing5.com -qingbh.com -qingcache.com -qingcaige.com -qingcdn.com -qingcheng.com -qingchenyu.com -qingchu.com -qingchunbank.com -qingchunlu.com -qingcigame.com -qingclass.com -qingclasscdn.com -qingcloud.com -qingcongxiaoyuan.com -qingcty.com -qingdan.com -qingdao-port.com -qingdao-port.net -qingdaochina.org -qingdaogxt.com -qingdaokohap.com -qingdaolawyer.org -qingdaomaidige.com -qingdaomedia.com -qingdaomeixie.com -qingdaomuseum.com -qingdaonengyuan.com -qingdaonews.com -qingdaoport.net -qingdaoren.com -qingdaoshenghao.com -qingdelan.com -qingdou.net -qingdou.vip -qingdouw.com -qingf001.com -qingfanqie.com -qingfeichina.com -qingfengchuxing.com -qingfengjiaoyu.com -qingflow.com -qingfo.com -qingful.com -qingfuwu.com -qingfuwucdn.com -qingfuwucdn.net -qingge666.com -qinggl.com -qinggonggroup.com -qingguo.com -qinghaigames.com -qinghaihuaer.com -qinghe-sh.com -qinghe.tv -qinghedaxue.com -qinghua2017.com -qinghuan.com -qinghuaonline.com -qinghuaxuezi.com -qinghuo.net -qingicon.com -qingjiaocloud.com -qingju.com -qingkai.net -qingkan.tw -qingkaoyan.com -qingkeji.com -qingkongfy.xyz -qingkuaipdf.com -qingkuajing.com -qingkuw.com -qinglan.info -qinglanbaseunicast.com -qinglanji.com -qinglianfood.com -qingliange.com -qingliangkeji.com -qingliaoapp.com -qinglidashi.com -qinglin.net -qingline.net -qinglingvip.com -qinglinong.com -qinglm.com -qinglue.com -qinglue.net -qinglvpin.com -qingly.ink -qingmail.com -qingmang.me -qingmang.mobi -qingmayun.com -qingmei.me -qingmh.com -qingmo.com -qingmob.com -qingmucdn.com -qingmuit.com -qingmutec.com -qingmuxinli.com -qingnianlvxing.com -qingniantuzhai.com -qingnianwang.com -qingpanduola.com -qingpin.vip -qingping.co -qingqikeji.com -qingqin.com -qingqingmedia.com -qingqj.com -qingqujie.com -qingquyp.com -qingr.com -qingrenw.com -qingruanit.net -qingruyun.com -qingshanpaper.com -qingshigame.com -qingshou.online -qingshow.net -qingshuo.com -qingshuxuetang.com -qingsongcdn.com -qingsongchou.com -qingsongjituan.com -qingsonngxx.com -qingstor.com -qingstorage.com -qingsucai.com -qingtajiao.com -qingtaoke.com -qingteng-inc.com -qingteng168.com -qingtengbc.com -qingtengzhilian.com -qingtian16265.com -qingtiancms.net -qingting.fm -qingting123.com -qingtingfm.com -qingtingip.com -qingtingjh.com -qingtingtrip.com -qinguanjia.com -qingui123.com -qinguoag.com -qingwabs.com -qingwk.com -qingxianrenminyiyuan.com -qingxiaoyun.com -qingxinjs.com -qingxuetang.com -qingxun.com -qingyantek.com -qingyeyun.com -qingyi.com -qingying.net -qingyuangroup.com -qingyuanshihua.com -qingyun-it.com -qingyun.com -qingyuntrip.com -qingyunzu.com -qingzhanshi.com -qingzhicheng.com -qingzhifeng.com -qingzhiwenku.com -qingzhou.biz -qingzhou.ltd -qingzhou.pro -qingzhou5.com -qingzhouip.com -qinheng.com -qinhuaiziyun.com -qiniu-enterprise.com -qiniu-solutions.com -qiniu.co -qiniu.com -qiniu.in -qiniu.io -qiniu.org -qiniu.us -qiniu.work -qiniuapi.com -qiniuapp.com -qiniublob.com -qiniucc.com -qiniucdn.com -qiniucloud.net -qiniucs.com -qiniudn.com -qiniudns.com -qiniudns.net -qiniudns2.com -qiniug.com -qiniuimg.com -qiniuinc.com -qiniuio.com -qiniukodo.com -qiniup.com -qiniupkg.com -qiniuqcdn.com -qiniurs.com -qiniutek.com -qinla.com -qinlake.com -qinlaobo.com -qinlaoke.net -qinlinad.com -qinlinkeji.com -qinms.com -qinnongbank.com -qinpu.com -qinpuwang.com -qinqiang.org -qinqin.com -qinqin.net -qinqingshipin.com -qinqinxiaobao.com -qinqishuhua.org -qinronmedia.com -qinronread.com -qinrun.com -qins.com -qinshantang.com -qinshihu.com -qinsilk.com -qinsmoon.com -qinsuanbazi.com -qinxiand.com -qinxing.xyz -qinxue.com -qinxue100.com -qinxue365.com -qinxuye.me -qinyi.net -qinyuanyang.com -qinyukehuan.com -qinzc.me -qinzhe.com -qinzhou.net -qinzhou360.com -qinzhou8.com -qinzhouit.com -qinzibuy.com -qinzidna.com -qionghaif.com -qionghi.com -qiongming.com -qiow.net -qipai.com -qipai007.com -qipaifan.com -qipamaijia.com -qipayuan.com -qipeipu.com -qipeiren.com -qipeng.com -qipinshangji.com -qiqao.com -qiqi2000.com -qiqiboke.com -qiqids.com -qiqilab.com -qiqipu.com -qiqiuyu.com -qiqiuyun.net -qiqjc.com -qiqu.cc -qiquanwl.com -qiquha.com -qiqumaker.com -qiquw.info -qiquwen.com -qiquyou.com -qire123.com -qirebook.com -qiredy.com -qiremanhua.com -qirui.com -qiruikeji2019.com -qisankeji.com -qisaoba.com -qisbook.com -qishenghuo.com -qishengliang.com -qishiruye.com -qishixitong.com -qishu.vip -qishui.com -qishunbao.com -qishuta.info -qishuta.la -qishuta.net -qishuta.org -qisi.co -qisool.com -qisuya.com -qita.love -qitaifu.com -qitaijiuye.com -qiti88.com -qitian-tech.com -qitianchina.com -qitianpower.com -qitongxq.com -qituowang.com -qiu-ai.com -qiu630.com -qiuball.com -qiubiaoqing.com -qiucinews.com -qiufaqf.com -qiufengblog.com -qiuhua.com -qiujieda.com -qiujuer.net -qiujunya.com -qiukuixinxi.com -qiumei100.com -qiumeiapp.com -qiumibao.com -qiumijia.com -qiumiwu.com -qiupuwang.com -qiuqiusd.com -qiuquan.cc -qiushi.com -qiushibaike.cc -qiushibaike.com -qiushile.com -qiushu.cc -qiushu.info -qiushubang.com -qiushuzw.com -qiutan.com -qiutianaimeili.com -qiutiangear.com -qiuvps.com -qiuweili.com -qiuwen.wiki -qiuwu.net -qiuxian.com -qiuxiao.com -qiuxietang.com -qiuxue360.com -qiuxueshe.com -qiuy.cloud -qiuyewang.com -qiuyexitong.com -qiuyueli.com -qiuzhang.com -qiuzhijiangtang.com -qiuziti.com -qiwang2025.com -qiwangming.com -qiwei.com -qiwenhui.com -qiwenqi.com -qiwenya.com -qiwiotch.com -qixayrvo.com -qixia.ltd -qixiangwang.com -qixigame.com -qixin.com -qixin007.com -qixin18.com -qixin19.com -qixincha.com -qixing123.com -qixingcr.com -qixingquan.com -qixingtang.com -qixinpro.com -qixintian.com -qixinworks.com -qixiu88.com -qixiushouce.com -qixoo.com -qixuan888.com -qixuny.com -qiye.la -qiye163.com -qiye8848.com -qiyeboao.com -qiyedata.net -qiyegongqiu.com -qiyegongqiu.net -qiyeku.com -qiyelipin.com -qiyenet.net -qiyes.com -qiyeshangpu.com -qiyeshangpu.net -qiyesou.com -qiyetong.com -qiyetoupiao.com -qiyeweixin.com -qiyewenhua.net -qiyexxw.com -qiyeyougou.com -qiyeyouxiang.net -qiyi.com -qiyi.video -qiyicc.com -qiyikeji.com -qiyimusic.com -qiyipic.com -qiyiw.com -qiyoubangbang.com -qiyouji.com -qiyoujiage.com -qiyoutuo.com -qiyouwang.com -qiyouworld.com -qiyqh.com -qiytech.com -qiyu-lighting.com -qiyu99.com -qiyuanai.com -qiyuange.com -qiyuanxuetang.net -qiyucloud.com -qiyue.com -qiyuebio.com -qiyuesuo.com -qiyujiasu.com -qiyujoy.com -qiyukf.com -qiyukf.net -qiyuns3.com -qiyuntong.com -qiyutech.tech -qiyutianxia.com -qizhanming.com -qizheplay.com -qizhidao.com -qizhihaotian.com -qizhong166.com -qizhu18.com -qizhuyun.com -qizi.cc -qizuang.com -qizubang.com -qj-group.com -qj-robot.com -qj023.com -qj175.com -qj26.com -qj99.net -qjbchina.com -qjbxw.com -qjcode.com -qjcrcgas.com -qjcz.com -qjdchina.com -qjfy.com -qjhlw.com -qjhm.com -qjia.com -qjiajk.com -qjidea.com -qjimage.com -qjis.com -qjjfin.com -qjjmw.com -qjmotor.com -qjnice.com -qjrc.com -qjren.com -qjsalia.com -qjsalib.com -qjsb88.com -qjslngy.com -qjsmartech.com -qjtjp.com -qjtourism.com -qjwenming.com -qjwh.xyz -qjwhzs.com -qjwjw.com -qjxgold.com -qjystang.com -qjzl.com -qjzyy.com -qk365.com -qkagame.com -qkan.com -qkang.com -qkblh.com -qkcdn.com -qkeke.com -qkhg.com -qking.ink -qkisp.com -qkkj88.com -qkkjbj.com -qkkjd.com -qkl234.com -qknode.com -qknown.com -qktoutiao.com -qkttapp.com -qkua.com -qkvop.com -qkyamkl.com -qkyxzx.com -qkzj.com -ql-cellbank.com -ql-msx.com -ql-spe.com -ql009.com -ql18.mobi -ql1d.com -ql361.com -ql361.shop -ql789.com -qlan99.com -qlbchina.com -qlbg.net -qlbk.com -qlchat.com -qldgd.com -qldz.store -qldzj.com -qledu.net -qlelectrons.com -qlhimalayantm.com -qlidc.com -qlife-lab.com -qlinyun.com -qlippie.com -qlivecdn.com -qlivecloud.com -qlivertc.com -qlivertc2.com -qlivewebrtc.com -qlivewebrtc2.com -qll-times.com -qlmoney.com -qlnonwoven.com -qlotc.net -qlrc.com -qlrc114.com -qls.fun -qls70.com -qlteacher.com -qluu.com -qlwyjy.com -qlxiaozhan.com -qlxyedu.com -qlxzj.com -qlydw.com -qlyjt.com -qlyygl.com -qlyyqd.com -qlzygs.com -qm119.com -qm120.com -qm41.com -qm69.com -qm989.com -qmacro.com -qmail.com -qmancha.com -qmango.com -qmceo.com -qmconfig.com -qmcro.com -qmei.me -qmei.vip -qmeikq.com -qmhd87.com -qmhimalayanpz.com -qmhkids.com -qmht.com -qmht.mobi -qmjianli.com -qmjzdscj.com -qmniu.com -qmoji.mobi -qmoji.net -qmqm.net -qmrms.com -qmrobot.com -qmsea.com -qmsjmfb.com -qmtj.net -qmtjgame.com -qmtmedia.com -qmtv.com -qmvchina.com -qmwtp.com -qmwyy.com -qmxny.com -qmxphoto.com -qmxrmt.com -qmxyc.com -qmyc.ltd -qmyq.com -qmyyl.com -qmz5.com -qmzhibo.com -qmzs.com -qnali.com -qnapcn.com -qnbar.com -qncd.com -qncha.com -qnche.com -qncyw.com -qndb.net -qnfcdn.com -qnfyg.com -qngas.com -qngcjx.com -qnget.com -qngslb.com -qngygf.com -qnhdkj.com -qnhuifu.com -qnjslm.com -qnjyjt.com -qnl1.com -qnlinking.com -qnlj.com -qnmlgb.tech -qnqcdn.com -qnqcdn.net -qnsdk.com -qnssl.com -qnvipmall.com -qnvipxd.com -qnw.cc -qnydns.com -qnydns.net -qnzrmyy.com -qnzyy.com -qolai.com -qooboo.com -qoocc.com -qooioo.com -qookar.com -qookkagames.com -qoros.com -qorosauto.com -qosnet.xyz -qosq.com -qp108.com -qp110.com -qp46.com -qp49.com -qp666.com -qpaimg.com -qpb187.com -qpdca.com -qpdiy.com -qpgame.com -qpgczx.com -qphospital.com -qpjjku.com -qpjylm.com -qpkaifa.com -qplus.com -qplusstatic.com -qpmwg68cre9pci.com -qpoc.com -qpstar.com -qpwater.com -qpxiaoshuo.com -qpz.com -qpzq.net -qq-xmail.com -qq.cc -qq.cn.com -qq.com -qq.design -qq.do -qq.md -qq.net -qq.travel -qq.zone -qq123.xin -qq1398.com -qq163.cc -qq163.com -qq163.net -qq190.com -qq190.net -qq260.com -qq3366.net -qq3xkm64kavh.com -qq499.com -qq5.com -qq52o.me -qq5818.com -qq620.com -qq717.com -qq745.com -qq7c.com -qq933.com -qq999q.com -qq9v.com -qqai.net -qqaiqin.com -qqan.com -qqb.pub -qqba.com -qqbiaoqing.com -qqbibile.com -qqbrowser.mobi -qqbytrans.com -qqcdn.com -qqcfw.net -qqcg.com -qqcjw.com -qqclass.com -qqclock.com -qqcrvpv.com -qqddc.com -qqdiannao.com -qqdiannaoguanjiadl.com -qqdna.com -qqdr.com -qqdzzb.win -qqe2.com -qqeml.com -qqeo.com -qqexmail.net -qqexpert.com -qqfamily.com -qqgameapp.com -qqgamedesign.com -qqgamemall.com -qqgames.com -qqgb.com -qqgd.com -qqgexing.com -qqgexingqianming.com -qqgfw.com -qqgpw.com -qqgx.com -qqgygd.com -qqgyhk.com -qqhangjia.com -qqhaoma.com -qqhaoma.net -qqhbx.com -qqhjy.com -qqhn.net -qqhot.com -qqhrch12333.com -qqhrnews.com -qqhubei.com -qqhwb.com -qqiac.com -qqimage.net -qqimg.net -qqjapan.com -qqje.com -qqjia.com -qqjiyu.com -qqjjsj.com -qqjm.com -qqju.com -qqkj66.com -qqkjj.com -qqkkb.com -qqkrmotors.com -qqku.com -qqkw.com -qqkwsitu.com -qqlivepull.seedata.top -qqmail.com -qqmail.email -qqmapyx.com -qqmc.com -qqmcc.org -qqmda.com -qqmra.com -qqmtc.com -qqmusic.com -qqmusic.store -qqnaozhong.com -qqnn.net -qqopenapp.com -qqor.com -qqpao.com -qqpharm.com -qqpifu.com -qqplusapp.com -qqppt.com -qqq.tv -qqqiyemail.com -qqqiyeyouxiang.com -qqqmmm.com -qqqooo.com -qqrain.com -qqread.com -qqrer.com -qqrizhi.com -qqro.com -qqscb.com -qqservice.mobi -qqsgame.com -qqsgjy.com -qqsgmob.com -qqsgplay.com -qqshidao.com -qqshuoshuo.com -qqsj168.cc -qqsk.com -qqski.com -qqsm.com -qqsort.com -qqspark.com -qqssly.com -qqstudent.com -qqsurvey.net -qqswzx.com -qqt.com -qqteacher.com -qqtest.com -qqtf.com -qqthj.com -qqtjmgg.com -qqtlr.com -qqtouxiangzq.com -qqts.net -qqtu8.cc -qqtu8.com -qqtz.com -qquanquan.com -qqumall.com -qqun.com -qqurl.com -qqwangming6.com -qqwebapp.com -qqwewew.com -qqwiki.com -qqwin.xyz -qqwinner.com -qqwjx.com -qqwmba.net -qqwmly.com -qqwwr.com -qqwxmail.com -qqwys.net -qqxmail.com -qqxs.la -qqxs5200.com -qqxsnew.net -qqxsnew5.com -qqxsw.co -qqxx.net -qqxzb-img.com -qqxzb.com -qqy189.com -qqya.com -qqyewu.com -qqymail.com -qqyn.com -qqyouju.com -qqywf.com -qqyy.com -qqzby.net -qqzfw.com -qqzhi.com -qqzi.net -qqzimu.com -qqzimu.net -qqzl.cc -qqzmly.com -qqzshc.com -qqzyw.com -qqzywang.com -qqzzz.net -qr-batch.com -qr25.com -qrcpu.com -qrfq25sg.xyz -qrgiant.com -qrmanhua.com -qrobot.com -qrprt.com -qrsvm.com -qrtest.com -qrtz.co -qrx.cc -qrzxx.com -qs-jt.net -qs12315.com -qs5.org -qs921.com -qsap-group.com -qsb.browser.miui.srv -qsbank.cc -qsbbs.net -qsbdc.com -qsboy.com -qscharge.com -qschou.com -qsebao.com -qsedu.com -qsedus.com -qseeking.com -qsfcw.com -qsfm.net -qsgx-pt.com -qshang.com -qshealth.com -qsiedu.com -qsiso.com -qsjsjt.com -qsjt.com -qsjxzz.com -qskggf.com -qskj.net -qskretkf.com -qsl.pub -qsmchina.com -qsmis.com -qsmutual.com -qsnctf.com -qsnovel.com -qspfw.com -qspfwadmin.com -qss-lb.com -qssec.com -qstatic.com -qstbg.com -qstcorp.com -qstkizve.com -qstsking.com -qsw.la -qswk.com -qswnet.com -qsxezgai.com -qsxiaoshuo.com -qsxiu.com -qsxuke.com -qsxzls.com -qsyfunds.com -qsyy.net -qszs.com -qszt.com -qszt.net -qt-edu.com -qt.com -qt119.com -qt56yun.com -qt6.com -qt86.com -qtaeixd.com -qtav.org -qtbig.com -qtbtp.com -qtccolor.com -qtck.net -qtcn.org -qtctc.org -qtdebug.com -qtdream.com -qtedu.net -qteng.net -qter.org -qtest8.com -qtgz.cc -qth8.com -qthinker.net -qtke.com -qtkj.love -qtlcdn.com -qtlcdn.net -qtlcdn360.info -qtlcdn360.top -qtlcdn360.xin -qtlcdn360.xyz -qtlcdncn.info -qtlcn.com -qtlcname.com -qtlglb.com -qtlglb.info -qtlgslbcn.com -qtlgslbcn.info -qtlgslbcn.net -qto-pay.com -qtonghua.com -qtool.net -qtqsaadp.com -qtrun.com -qtshe.com -qtshisan.com -qtshu.com -qtshu.la -qtslog.com -qtsyw.com -qtsyzfc.com -qttc.net -qttunion.com -qtu8.com -qtumist.com -qtvnews.com -qtw555.com -qtx.com -qtyd.com -qu2000.com -qu2345.com -qu247.com -qu67.com -qua.com -quaita.com -qualcomm-challenge.com -qualcomm.cn.cdn.cloudflare.net -qualtekgz.com -qualysapi.qatp1.net -qualysguard.qpdp1.net -quan.mx -quan007.com -quan365.com -quanaichina.com -quancang.com -quandashi.com -quanduoduo.com -quanerp.com -quanfangtong.net -quanfangtongvip.com -quanfeng.tech -quanfensi.com -quanfs.com -quanguoban.com -quanguoyoubian.com -quangushi.com -quanhuaoffice.com -quanji.la -quanji.net -quanjiamei.com -quanjiaowang.com -quanjing.com -quanjingke.com -quanjinglian.com -quanjunkeji.com -quanjuwuye.com -quankexia.com -quanlaoda.com -quanlego.com -quanlitu.com -quanlv66.com -quanma51.com -quanmaigo.com -quanmaihuyu.com -quanmama.com -quanmamaimg.com -quanmamaonline.com -quanmeipai.com -quanmin-game.com -quanmin.tv -quanmin110.com -quanminbagua.com -quanminbb.com -quanminfu.com -quanoukeji.com -quanqiuwa.com -quanqiuweishang.com -quanquanapp.net -quanriai.com -quansheng-group.com -quanshi.com -quanshuge.com -quansucloud.com -quantacn.com -quantaoyougou.com -quantil.com -quantilcn.com -quantilcn.net -quantilng.com -quantobio.com -quantongfu.com -quantuantuan.com -quantum-etc.com -quantum-info.com -quantumsc.online -quanup.com -quanwai100.com -quanwiki.com -quanxi.cc -quanxiangyun.com -quanxiankeji.com -quanxiaoha.com -quanyaotong.com -quanyin.xyz -quanyueqk.com -quanyuesc.com -quanzhanketang.com -quanzhi.com -quanzhifu.net -quanzhougastronomy.com -quanziapp.com -quaolai.com -quarkbook.com -quarkers.com -quartzhy.com -quasarchs.com -quazero.com -quba360.com -qubaike.com -qubaobei.com -qubiankeji.com -qucai.com -qucanzhan.com -quce001.com -quceaiqing.com -quchao.net -qucheng.com -quclouds.com -qudaiji.com -qudao168.com -qudaowuyou.com -qudaowuyou04.com -qudayun.com -qudiandi.com -qudingshui.com -qudong.com -qudong51.net -qudong9.com -qudou100.com -qudoula.com -qudushu.com -quduzixun.com -queceng.com -quechao.vip -quechen.com -quectel.com -queenl.com -quefan.com -quegame.com -quegui.run -quehu.com -queji.tw -quenergysemi.com -queniuaa.com -queniuab.com -queniuai.com -queniuak.com -queniual.com -queniuam.com -queniubc.com -queniubd.com -queniubf.com -queniubg.com -queniubh.com -queniubi.com -queniubk.com -queniubl.com -queniubm.com -queniubn.com -queniubq.com -queniubt.com -queniucdn.com -queniucdn.net -queniucf.com -queniucg.com -queniuck.com -queniucl.com -queniucm.com -queniucn.com -queniuco.com -queniucs.com -queniucw.com -queniucx.com -queniucz.com -queniuda.com -queniudd.com -queniude.com -queniudf.com -queniudg.com -queniudl.com -queniudns.com -queniudns.net -queniudo.com -queniudt.com -queniuee.com -queniueg.com -queniueh.com -queniuei.com -queniueq.com -queniuer.com -queniues.com -queniuez.com -queniufa.com -queniufc.com -queniufg.com -queniufi.com -queniufj.com -queniufm.com -queniufr.com -queniufw.com -queniufz.com -queniugd.com -queniugm.com -queniugslb.com -queniugslb.net -queniugt.com -queniugv.com -queniugw.com -queniugz.com -queniuhe.com -queniuhg.com -queniuhl.com -queniuhp.com -queniuhx.com -queniuhy.com -queniuhz.com -queniuib.com -queniuic.com -queniuif.com -queniuig.com -queniuih.com -queniuin.com -queniuiq.com -queniuit.com -queniuiv.com -queniuiy.com -queniuja.com -queniujd.com -queniuje.com -queniujf.com -queniujg.com -queniujq.com -queniujz.com -queniukk.com -queniukq.com -queniukr.com -queniuks.com -queniukt.com -queniukw.com -queniukx.com -queniukz.com -queniulb.com -queniulf.com -queniulg.com -queniuli.com -queniulp.com -queniulr.com -queniuls.com -queniulu.com -queniulv.com -queniulz.com -queniumc.com -queniumd.com -queniumf.com -queniumh.com -queniumn.com -queniumo.com -queniumy.com -queniund.com -queniunh.com -queniuni.com -queniunq.com -queniuns.com -queniuny.com -queniunz.com -queniuod.com -queniuog.com -queniuop.com -queniuos.com -queniuot.com -queniuoy.com -queniupa.com -queniupc.com -queniupe.com -queniupg.com -queniupj.com -queniupl.com -queniupq.com -queniupz.com -queniuqe.com -queniuqj.com -queniuql.com -queniuqm.com -queniuqt.com -queniuqu.com -queniuqy.com -queniuqz.com -queniurc.com -queniurj.com -queniurk.com -queniurq.com -queniuru.com -queniurv.com -queniurx.com -queniusa.com -queniusf.com -queniusg.com -queniush.com -queniusi.com -queniusj.com -queniuso.com -queniusp.com -queniusr.com -queniusv.com -queniusy.com -queniusz.com -queniutc.com -queniute.com -queniutn.com -queniutt.com -queniutx.com -queniutz.com -queniuua.com -queniuuc.com -queniuuf.com -queniuuk.com -queniuum.com -queniuuq.com -queniuus.com -queniuuy.com -queniuvb.com -queniuvc.com -queniuvg.com -queniuvi.com -queniuvk.com -queniuvq.com -queniuvu.com -queniuvx.com -queniuwb.com -queniuwf.com -queniuwh.com -queniuwk.com -queniuwq.com -queniuwx.com -queniuwz.com -queniuxd.com -queniuxe.com -queniuxk.com -queniuxr.com -queniuxx.com -queniuxy.com -queniuxz.com -queniuyb.com -queniuyf.com -queniuyg.com -queniuyk.com -queniuys.com -queniuyu.com -queniuyz.com -queniuza.com -queniuzd.com -queniuzf.com -queniuzh.com -queniuzl.com -queniuzp.com -queniuzu.com -queniuzv.com -queniuzy.com -queniuzz.com -queryrecord.com -quesela.com -queshu.com -questyleaudio.com -questyleshop.com -quexiaoxian.com -queyang.com -qufair.com -qufanpai.com -qufaya.com -qufeisoft.com -qufeizhou.com -qufenqi.com -qufenqian.vip -qufu123.com -qufumarathon.com -qufushi.com -qufutuan.com -qugame.com -quguonet.com -quhaidiao.com -quheqihuo.com -quhua.com -quhuaxue.com -quhuhao.com -quhuichang.net -quhuo.net -quick-global.com -quick-touch.com -quickapi.net -quickbass.com -quickcan.com -quickcep.com -quickddns.com -quickdetection.com -quickingdata.com -quickjoy.com -quicklaser.com -quicklyopen.com -quickpark.cc -quicksdk.com -quicksdk.net -quickswan.com -quicktvui.com -quickwis.com -quilimen.com -quimg.com -quji.com -qujiangyizhong.com -qujianpan.com -qujie365.com -qujingm.com -qujunde.com -quk.cc -qukaa.com -qukan.cc -qukanok.com -qukanshu.com -qukantoutiao.net -qukanvideo.com -quklive.com -qukuai.com -qukuaila.com -qulankeji.com -qulaoshi.com -qule8.com -quledu.net -qulianaiba.com -qulishi.com -quluying.com -qulv.com -qumaihuishou.com -qumaishu.com -qumaiyao.com -qumaw.com -qumifeng.com -quming.com -qumingdashi.com -quminglemei.com -qumitech.com -qun-net.com -qun.hk -qun100.com -qun7.com -quna.com -qunaer.com -qunagai.com -qunale888.com -qunaly.com -qunar.com -qunar.ink -qunarcdn.com -qunarzz.com -qunba.com -qunchi.com -quncrm.com -qunfengjixie.com -qunfenxiang.net -qunhai.net -qunhaohotel.com -qunhaolawfirm.com -qunhei.com -qunhequnhe.com -qunjielong.com -qunke.com -qunkeng.com -qunliao.info -qunligroup.com -qunmi.vip -qunniao.com -qunonnet.com -qunsou.co -qunteng.net -quntengnet.com -quntuishou.com -qunwin.com -qunxiang.club -qunxingcable.com -qunxingvc.com -qunyaninfo.com -qunyingkeji.com -qunzh.com -qunzhuquan.com -qunzou.com -quoffice.com -qupeiyin.com -qupingce.com -quqi.com -quqike.com -quqingting.com -quqiuhun.com -ququabc.com -ququyou.com -quqxphdm.com -qusem.com -qushiw.com -qushixi.net -qushoumiao.com -qushuba.com -qushuba.net -qushuiying.net -qutaiwan.com -qutanme.com -qutao.com -qutaojiao.com -qutecall.com -qutechat.com -qutemessenger.com -qutetalk.com -qutevoice.com -quthing.com -qutianshanav.com -qutingting.com -qutoutiao.net -qutouwang.com -qutu.com -qutuancan.com -qutuiwa.com -qutuly.com -quumibao.com -quumii.com -quvisa.com -quwan.com -quwangming.com -quweiwu.com -quwenqing.com -quwentxw.com -quwj.com -quwm.com -quword.com -quwuxian.com -quxds.com -quxianchang.com -quxiang.work -quxianzhuan.com -quxiaxia.com -quxingdong.com -quxintiaodong.com -quxiu.com -quxuan.com -quyangyizhong.com -quyibao.com -quyinginc.com -quyiyuan.com -quyou.net -quyouhui.net -quyu.net -quyundong.com -quzhiwen.com -quzhuanxiang.com -quzhubao.com -quzwamx.com -quzz88.com -quzzgames.com -qvdv.net -qvip.net -qvkanwen.com -qvlz.com -qvxz.com -qw5599.com -qwbk.cc -qwconnect.top -qwe1e.com -qweather.com -qweather.net -qwebapp.com -qwen.ai -qwenlm.ai -qwerdns.com -qwerhost.com -qwfync.com -qwgg.com -qwgt.com -qwimm.com -qwing.com -qwpo2018.com -qwps.com -qwps.net -qwq.link -qwq.moe -qwq.ren -qwq.trade -qwqfzl.com -qwqk.net -qwqoffice.com -qwrmt.com -qwsy.com -qwwz.com -qx-era.com -qx-kj.com -qx-semi.com -qx.com -qx100.com -qx1000.com -qx10086.net -qx100years.com -qx121.com -qx162.com -qx66.cc -qx818.com -qxad.com -qxbnkj.com -qxbsk.com -qxckjr.com -qxcu.com -qxdaojia.com -qxdcc.com -qxen.com -qxfun.com -qxgcsc.com -qxhospital.com -qxhqxh.com -qxiu.com -qxjeff.com -qxka.com -qxkjjt.com -qxkp.net -qxlib.com -qxllq.com -qxme.com -qxmewmgr.com -qxmugen.com -qxnav.com -qxndt.com -qxnecn.com -qxnic.com -qxnzx.com -qxqing.com -qxqkeak.com -qxqtwmgz.com -qxqxa.com -qxrcw.com -qxsdq.com -qxsfjq.com -qxshucai.com -qxswk.com -qxteacher.com -qxtongcheng.com -qxtour.com -qxtxt.com -qxueyou.com -qxw.cc -qxw18.com -qxwz.com -qxxsjk.com -qxy777.com -qxyjssb.com -qxzc.net -qxzsw.com -qxzxp.com -qy-marathon.com -qy-office.com -qy-polymer.com -qy-qq.com -qy-tencentclb.cloud -qy-tencentclb.com -qy-tencentclb.net -qy-tencentclb.work -qy.com -qy.net -qy266.com -qy57.com -qy6.com -qy7v7nn96e.com -qyaninfo.com -qybc.com -qybhl.com -qyc2008.com -qycn.com -qycn.net -qycn.org -qycname.com -qycylinder.com -qyd-rf.com -qydimg.com -qydqw.com -qydsj.com -qyer.com -qyerstatic.com -qyestar.com -qyfw168.com -qyg12.com -qyg30.com -qyg9.com -qygjyey.com -qyglzz.com -qyhgsb.com -qyhl.vip -qyhr.org -qyhxy365.com -qyiliao.com -qyins.com -qyinter.com -qyjg.com -qyjidianqi.com -qyjks.com -qykh2009.com -qykjedu.com -qymdb.com -qymgc.com -qyous.com -qyrb.com -qyrcbank.com -qyrcrs.com -qyrx.cc -qysbj.com -qysd.net -qysgf.com -qysport.com -qysrmyy.com -qyssgame.com -qysulian.com -qysuliao.com -qyszyyy.com -qyt.com -qyt1902.com -qytdesign.com -qytranslation.com -qytst.com -qytxhy.com -qyunapp.com -qyuner.com -qyuns.net -qywater.net -qywcom.com -qywd.com -qywww.net -qyx888.com -qyxa-tencentclb.cloud -qyxa-tencentclb.com -qyxa-tencentclb.net -qyxa-tencentclb.work -qyxby.com -qyxxpd.com -qyxzfw.com -qyyt.com -qyzba.club -qyzc.net -qyzlgame.com -qyzss.com -qz-jk.com -qz100.com -qz123.com -qz456.com -qz5z.com -qz828.com -qz96811.com -qz97.com -qz97.net -qzair.com -qzbbs.com -qzbgzz.com -qzbhgyl.com -qzbhzy.com -qzbuxi.com -qzbwjx.com -qzccbank.com -qzchuxing.com -qzcia.com -qzcklm.com -qzclfc.com -qzcns.com -qzct.net -qzda.com -qzdatasoft.com -qzdfys.com -qzdswy.com -qzdxcj888.com -qzdyyy.com -qzesx.net -qzeyy.com -qzfwckj.com -qzg123.com -qzgc.net -qzgchj.com -qzgfyy.com -qzgjjp.com -qzgkwy.com -qzhaite.com -qzhlkj.net -qzhmps.com -qzhmyy.com -qzhmzx.com -qzhospital.com -qzhrkj.com -qzhsjc.com -qzhslw.com -qzhuye.com -qzhxshipping.com -qzimg.com -qzj2.com -qzjcd.com -qzjgxx.com -qzjhscl.com -qzjhsd.com -qzjianwo.com -qzjkw.net -qzjy029.com -qzjycc.com -qzjzyy002.com -qzkangfu.com -qzkcw.com -qzkey.com -qzkjyy.com -qzks.com -qzktzc.com -qzlanwei.com -qzld.com -qzldkj.com -qzljjq.com -qzlo.com -qzlwnm.com -qzmayouquan.com -qzmktjt.com -qzmtgs.com -qznovel.com -qznovelpic.com -qznovelstatic.com -qznovelvod.com -qznxt.com -qzone.cc -qzone.com -qzoneapp.com -qzonei.com -qzqcfw.com -qzqcw.com -qzqiye.com -qzqkwl.com -qzqn8.com -qzqstudio.com -qzqxd.com -qzqxw.com -qzrbx.com -qzrc.com -qzrcsc.com -qzrcw.com -qzread.com -qzrencai.com -qzsdkj.com -qzsfy.com -qzsgyxx.com -qzshangwu.com -qzshly.com -qzsmxx.com -qzsqsnhdzx.com -qzssdy.com -qzsx168.com -qzsystem.com -qzsyy.com -qzszyy.com -qzt520.com -qztc.vip -qztingche.com -qztour.com -qztsecurity.com -qztszls.com -qztvxwgj.com -qzwb.com -qzwgw.com -qzww.com -qzxdianzi.com -qzxkeji.com -qzxx.com -qzyckhzx.com -qzynhhmm.com -qzyonyou.com -qzyuchao.com -qzyz.com -qzyzt.com -qzzdtc.com -qzze.com -qzzgdl.com -qzzhedu.com -qzzhonghan.com -qzzhwk.com -qzzjchy.com -qzzn.com -qzzpw.net -qzzres.com -qzzsbx.com -qzzyyy.com -qzzzg.net -r-china.net -r-tms.net -r.bing.com -r12345.com -r147emh.com -r17.com -r1y.com -r2009.com -r220.cc -r2coding.com -r2yx.com -r302.cc -r435.com -r51.net -r5g.cc -r5k.com -r5tao.com -r61lsi5tje.com -r6d7345371.com -r75y8c2628.com -r77777777.com -r79xqa8r7e93.com -r8hr7.net -r9t1.com -ra022.com -ra2ol.com -raas1.com -rabbit1117.com -rabbitbbs.com -rabbitpre.com -rabbitpre.me -rabbitserve.com -rabook.com -rabschina.com -race604.com -racent.com -racetigertiming.com -rachina.org -racing-china.com -racktray.com -racpro.net -racsd.com -racymj.com -radar-ev.com -radiate-electronics.com -radicalmail.net -radida.com -radio1964.com -radio366.com -radiotj.com -radiowar.org -radissoncollection-wuxi.com -radius-america.com -radleybagssaleuk.org -raeblog.com -rafflesmedicalchina.com -ragdgs.com -ragnarokcn.com -rahisystems-cn.com -rahmg168.com -raidc.com -rail-metro.com -rail-stdaily.com -rail-transit.com -railcn.net -rails365.net -railsctc.com -railshj.com -railwaybill.com -railworkschina.com -raina.tech -rainasmoon.com -rainbond.com -rainbowcn.com -rainbowred.com -rainbowsoft.org -rainbutterfly.xyz -rainclassroom.com -raindi.net -raineggplant.com -raingray.com -rainhj.com -rainhz.com -rainlain.com -rainso.com -rainwe.com -rainyun.com -raise-win.com -raisecom.com -raisedsun.com -raisewebdesign.com -raisingsun.xyz -raiyi.com -rajax-inc.com -rajax.me -rajyj.com -rakinda-aidc.com -rakinda-xm.com -rakpqgk.com -rakutabichina.com -ramadaplaza-ovwh.com -ramboplay.com -ramostear.com -rampingup.com -ramventures.com -ramwaybat.com -rancat.im -randengseo.com -randongada.com -randongma.com -randyandtheresa.com -rangercd.com -rangnihaokan.com -rango.fun -rangotec.com -rangti.com -rangxue.com -rangzong.com -ranhou.com -rankaiyx.com -rankingonline.jp -ranknowcn.com -ranliao.biz -ranling.com -ranqibiao.net -rantu.com -ranwen.net -ranwen.org -ranwena.com -ranxi.net -ranyangrent.com -ranzhi.net -ranzhi.org -raobee.com -raoke.net -raoluns.com -raonie.com -raorao.com -rap-pro.com -rapidppt.com -rapoo.com -rapospectre.com -rarbg.to -rarbt.fun -rarcbank.com -rarelit.net -rarone.com -rashanghai.org -rashost.com -raspigeek.com -rastargame.com -rat.dev -rat3c.com -rate2003.com -ratingtoken.net -rationalwh.com -ratogh.com -ratoo.net -rauto.com -ravenna0943.xyz -raverstern.site -rawanfa.com -rawchen.com -raxtone.com -ray-joy.com -ray1988.com -ray8.cc -raycham.com -raychase.net -raycim.com -raycloud.com -raycom-inv.com -raycuslaser.com -raydata-asset.com -raydata-mobile.com -raydata-open.com -raydata-web.com -raydata.cc -raydata.info -raydata.pro -raydataasset.com -raydatamobile.com -raydataopen.com -raydataweb.com -raydonet.com -rayenergytech.com -rayfalling.com -rayfaydata.com -raygame3.com -raygame4.com -rayiantway.com -rayjoy.com -raykite.club -raykite.com -raykite.info -raykite.net -raykite.vip -raykite.xyz -rayli.com -raylink.live -raymage.com -raymx-micro.com -raynext.info -rayoptek.com -rayp.com -rayps.com -rayrjx.com -rayseasc.com -raysgo.com -raysilicon.com -raystek-p.com -raystesting.com -raysync.cloud -raysyun.com -raythonsoft.com -raytine.com -raytoon.net -rayuu.com -rayvision-tech.com -rayvision.com -raywit.com -rayxxzhang.com -razerapi.com -razersynapse.com -razerzone.com -razrlele.com -raztb.com -rb-parking.com -rb400.com -rbi-china.com -rbischina.org -rbkwater.com -rbladycrusaders.com -rbotai.com -rbqq.com -rbtxw.com -rbz1672.com -rbzarts.com -rbzygs.com -rc-ev.com -rc0817.com -rc1001.com -rc114.com -rc120.com -rc168.com -rc3cr.com -rc775.com -rcbc888.com -rcbuying.com -rccaijing.com -rccchina.com -rcche.com -rcdang.com -rcesssc.com -rcfans.com -rcguanli.com -rcgus.com -rchsrc.com -rchudong.com -rcjypx.com -rclbbs.com -rclhome.com -rclolci.com -rclrow.com -rclsemi.com -rcmarble.com -rcmxw.com -rcnep.com -rcolab.com -rcpx.cc -rcss88.com -rcswo.com -rcsxzx.com -rcuts.com -rcwl.net -rcyd.net -rcyjw.com -rcyxdk.com -rcz.cc -rczhuyu.com -rczp.org -rczx.com -rd-cn.com -rd-game.com -rd351.com -rdacs.com -rdadiy.com -rdamicro.com -rdbuy.com -rdcnzz.com -rdcolg.net -rdcv1.com -rdcv1.net -rddesign.cc -rddoc.com -rdedu.net -rdfis.com -rdfybk.com -rdfz.com -rdgcs.com -rdgcw.com -rdgz.org -rdgzxx.net -rdhyw.com -rdidc.com -rdjmgg.com -rdmicro.com -rdnsdb.com -rdplat.com -rdqczl.com -rdqh.com -rdsdk.com -rdsms.net -rdwork.com -rdxmt.com -rdyjs.com -rdzjw.com -rdzs.com -rdzx.net -rdzy.net -re25.vip -reabam.com -reach-ad.com -reach-biology.com -reachace.com -reachauto.com -reachsh.com -reachsurgical.com -reachtone.com -reachwin.net -react-china.org -react.mobi -read678.com -readboy.com -readceo.com -readend.net -readers365.com -readfollow.com -readfree.net -readgps.com -readhb.com -readhr360.com -readhub.me -readke.com -readlevel.com -readlink.com -readlishi.com -readm.tech -readmeok.com -readnos.com -readnovel.com -readpai.com -readpaper.com -readpaul.com -readse.com -readten.net -readu.net -ready4go.com -reai120.com -realape.com -realapp.xin -realbiogroup.com -realcybertron.com -realforcechina.com -realibox.com -realks.com -reallct.com -realliniot.com -realmax-sh.com -realme.com -realme.net -realmebbs.com -realmemobile.com -realmeservice.com -realmofswords.com -realor.net -realsee-cdn.com -realsee.com -realshark.com -realtech-inc.com -realtimecn.com -realtorforce.ca -realxen.com -realyuan.com -reanda.com -reapdaro.com -reardatchina.com -reasonclub.com -rebang.today -rebatesme.com -rebo-group.com -recaptcha-cn.net -recaptcha.net -rechaos.com -rechulishebei.com -recitymedia.com -reckfeng.com -recodeal.com -recolighting.com -reconova.com -recordpharm.com -recovery-soft.com -recovery-transfer.com -recoye.com -recuvachina.com -recycle366.com -red-yellow.net -redacted.ch -redatoms.com -redbaby.com -redbascket.com -redbeeai.com -redcome.com -redcross-hx.com -redcross-sha.org -reddogchina.com -redearth.com -redefine.ltd -redenmc.com -redfcv.com -redflag-linux.com -redflagseed.com -redhome.cc -redhongan.com -redhtc.com -redianduanzi.com -redianmao.com -redianyuansu.com -redianyule.com -redianzixun.com -rediao.com -redidc.com -redirector.bdn.dev -redirector.c.youtubeeducation.com -redirector.gcpcdn.gvt1.com -redirector.gvt1.com -redirector.offline-maps.gvt1.com -redirector.snap.gvt1.com -redirector.xn--ngstr-lra8j.com -redisfans.com -redmagic.com -redmart.com -redmou.com -rednetdns.com -redocn.com -redodopower.com -redoop.com -redou.com -redoufu.com -redox-med.com -redphon.com -redq.cc -redraingame.com -redrcd.com -redream.com -redredsquare.com -redsea888.com -redsh.com -redshu.com -redstarwine.com -redstonewill.com -redsun-nsh.com -redsun-rp.com -redsungd.com -redsungz.com -redtriphome.com -reduxingxuan.com -redyue.com -redyue.org -reed-sinopharm.com -reedoun.com -reeidc.com -reeiss.com -reeji.com -reenoo.com -reenoo.net -reeoo.com -refined-x.com -refineidea.com -refire.com -refond.com -reformdata.org -refresh-bkg.activation-v2.kaspersky.com -reg007.com -regal-marathon.com -regal-raptor.com -regenchem.com -regengbaike.com -regexlab.com -regexr-cn.com -reglogo.net -regltd.com -regtm.com -reguo.com -rehiy.com -rehn.cc -reht.com -rehtt.com -rehuolm.com -rehuwang.com -reibootmac.com -reignwood.com -reilybrand.com -reinness.com -rejesafe.com -rejushe.com -rek8.com -rekong.com -rekonquer.com -rekoo.com -rekoo.net -rela.me -relangbang.com -relangdata.com -relaychina.org -relayx.io -relenger.com -reliabiotech.com -reliangbiao.com -reliao.tv -rellet.com -reloadbuzz.com -relxtech.com -relxyanyou.com -rely87779777.com -remaijie.net -remapcity.com -remax-bj.com -remenxs.cc -remixai.com -remixicon.com -remo-ai.com -remodelife.com -remotcon.mobi -remoteaps.com -remotedu.com -remyhumanhairextension.com -renai-edu.com -renaihospital.com -renaishiyao.com -renaissancehotelhuizhou.com -renaopai.com -renaren.com -renbenai.com -renbenzhihui.com -renbj.com -rencai.biz -rencaijia.com -rencaijob.com -rencheng1991.com -rendajingjiluntan.com -renderbus.com -renderincloud.com -rendeyixue.com -rendiyu.com -rendna.com -rendoc.com -renead.com -renegade-project.org -renelgroup.net -renergy-me.com -renew-cmda.com -renew-cn.com -renfei.net -renfutm.com -renguokeji.com -renhaocw.com -renhe888.com -renhebusiness.com -renhence.com -renhuaicode.com -renji.com -renjian.com -renjiaoshe.com -renjiyiyuan.com -renkky.com -renle.com -renleisheji.com -renlijia.com -renliwo.com -renlu.net -renmaiku.com -renmaitong.com -renminkaiguan.com -renminyixue.com -renny.ren -renping.cc -renren-inc.com -renren-x.com -renren.com -renren.io -renrenbeidiao.com -renrenchaxun.com -renrenche.com -renrencou.com -renrendai.com -renrendoc.com -renrenfinance.com -renrening.com -renrenlun.com -renrenmoney.com -renrenpeizhen.com -renrenshaike.com -renrenshe.com -renrenshipu.com -renrensousuo.com -renrenstudy.com -renrensucai.com -renrentou.com -renrentrack.com -renrenyee.com -renrk.com -renruihr.com -renrunkeji.com -rensa-hanno.com -rensheng123.com -renshikaoshi.net -renshouks.com -rent.work -renwen.com -renwenyishu.com -renwuduo.com -renwuji.com -renwumatou.com -renwuyi.com -renyiwei.com -renzaoshu.com -renzhemao.com -repai.com -repaiapp.com -repair5g.com -repanso.com -repian.com -replays.net -replica.club -replicabest.cc -replicachinawatch.vip -replicahot.cc -replicais.com -replicaluxury.cc -replicareloj.es -replicasale.cc -replicashop.cc -replicasreloj.com -replicasrelojlujo.com -replicaswiss.co -replicaswissclocks.com -replicawatchaaa.cc -replicawatchhot.com -replicawatchshipping.com -replicawatchshop.cc -replicawatchsshop.cc -replicheorologio.com -repliquemontresdeluxe.fr -repliquesuisse.co -repont.com -reportify.cc -reportrc.com -reprogenix.com -reptilesworld.com -reqable.com -reqgvheo.com -rergdfh.com -reseetech.com -resemi.com -reservehemu.com -resheji.com -resistor.today -resnics.com -resnowshop.com -resowolf.com -respect-lab.com -respondaudio.com -respusher.com -resset.com -resturbo.com -resuly.me -retailo2o.com -retalltech.com -retiehe.com -retopon.com -retouchpics.com -return.net -returnc.com -reveetech.com -revefrance.com -revenuads.com -reviosky.com -revolut.ltd -rew65.com -rewnat.xyz -reworlder.com -rewuwang.com -rexcdn.com -rexdf.org -rexinyisheng.com -rexsee.com -rexueqingchun.com -reyinapp.com -rezhanwang.com -rf-bed.com -rf-china.com -rf-link.com -rf.hk -rfaexpo.com -rfc2cn.com -rfchina.com -rfchost.com -rfcmedia.streamguys1.com -rfcreader.com -rfdl88.com -rfeyao.com -rffan.info -rfgjhz.com -rfhhzx.com -rfid-e.com -rfidcardcube.com -rfidfans.com -rfidnfk.com -rfidtech.cc -rfilter.com -rfimonde-lh.akamaihd.net -rfjd.com -rfjq.com -rfk.com -rfmwave.com -rfthunder.com -rfylyp.com -rg-gd.net -rg-marathon.com -rg-pharma.com -rg950.com -rgaxobcs.com -rgb128.com -rgble.com -rgezppvk.com -rgkjyp.com -rgoo.com -rgrcb.com -rgsgnj.com -rgslb.com -rgtjf.com -rgxw.com -rgyh6t.com -rgzbgroup.hk -rgzxraiu.com -rh31.com -rh98.com -rhce.cc -rhcncpa.com -rhcqmu.com -rhctwy.com -rhcyl.com -rheaeco.com -rheemchina.com -rhexe.com -rhhz.net -rhine-inc.com -rhinosgamestwhk.com -rhinoxky.com -rhkj.com -rhky.com -rhnewmaterials.com -rhonghai.com -rhphos.com -rhsj520.com -rhspring.com -rhtimes.com -rhtzjt.com -rhusen03.com -rhwatchcn.com -rhwatches.com -rhyme.cc -rhypw.com -ri-china.com -riande.com -rianico.tech -riaway.com -ribaoapi.com -ribaocdn.com -ribencun.com -ribenguwan.com -ribio.com -ribolia.com -ricebook.com -ricequant.com -riceyun.com -rich-chang.com -rich-fc.com -rich-futures.com -rich-healthcare.com -richardfw.com -richeninfo.com -richhurry.com -richiecn.com -richinfer.net -richkays.com -richlandsfarm.com -richong.com -richseafood.com -richsuntrade.com -richtech123.com -richtechcn.com -richtj.com -ricklj.com -rickyfabrics.com -rickysu.com -ricterz.me -rictos.com -ridgepole.com -riecent.com -rifagroup.com -rifapm.com -rifubao.com -rigen-bio.com -rigerna.com -rigger-micro.com -rightknights.com -rightpaddle.com -rigol.com -rigouwang.com -rigums.xyz -riitao.com -riji001.com -riji100zi.com -rijigu.com -rijiwang.com -rikua.com -rili11.com -rilijingling.com -rilingpec.com -riliri.com -rilvtong.com -rim20.com -rimaiwang.com -rin9.com -ringdoll.com -ringofelysium.com -ringofelysiumonline.com -ringpu.com -rining.com -rinlink.com -rinvay.cc -rinvdh7.xyz -rioalc.com -riogene.com -riolu.lol -riowine.com -ripic.xyz -rippletek.com -riqicha.com -risc-v1.com -riscv-dev.tech -riscv-mcu.com -riscv-summit.com -riscv.club -risde.com -rise99.com -risecenter.com -risechina.org -riselinkedu.com -risen-pharma.com -risencn.com -risenenergy.com -risesoft.net -riseyears.com -risfond.com -rishiqing.com -rishuncn.com -rising-eo.com -risingauto.com -risinggas.com -riskbird.com -riskivy.com -risongtc.com -risuiwd.com -risun.com -riswing.com -ritaichina.com -ritao.hk -ritaojiang.com -ritaomeng.com -ritarpower.com -rivalsa.net -rivergame.net -riverinepm.com -riverlimittech.net -riveryun.com -rivocean.com -riwise.com -rix-dl.com -riya.cc -riyingkj.com -riyuandianzi.com -riyuexing.org -riyuezhuan.com -riyugo.com -riyutool.com -rizbbs.com -rizhao.net -rizhaociming.com -rizhaogongshui.com -rizhaokjg.com -rizhaosteel.com -rizhaoxl.com -rizhili.com -rizhiyi.com -rizhuti.com -rj.link -rj.net -rj668.com -rj889.net -rjaaa.com -rjcopy.com -rjdk.org -rjdownd.com -rjetech.com -rjeye.com -rjfc110.com -rjghome.com -rjh0.com -rjhcsoft.com -rjitxy.com -rjlqq.com -rjoy.com -rjpharm.com -rjpharma.com -rjreducer.com -rjs.com -rjsjmbwx.com -rjsos.com -rjtx.net -rjty.com -rjxzjx.com -rjzxw.com -rk-light.com -rk120.com -rkanr.com -rkaq110.com -rkckth.com -rkdatabase.com -rkddzda.com -rkeji.com -rkgaming.com -rkkgyy.com -rklive888.com -rkrcemei.com -rksec.com -rkvir.com -rkzxhyy.com -rl-consult.com -rlair.net -rljydt.com -rlkj.com -rlkj.net -rlmeijia.com -rlnk.net -rlreader.com -rlsofa.net -rlw27.com -rlydw.com -rlyl.net -rlzdh.com -rlzyxa.com -rm.run -rmall-solution.com -rmb.sh -rmbbk.com -rmbgame.net -rmbgd.com -rmburl.com -rmcteam.org -rmcvqq.sbs -rmejk.com -rmgvx.com -rmhospital.com -rmjiaju.com -rmjtxw.com -rmnof.com -rmny.tech -rmrbwc.com -rmrun.com -rmsznet.com -rmttjkw.com -rmtv24hweblive-lh.akamaihd.net -rmtyun.com -rmwxgame.com -rmxiongan.com -rmysjzx.com -rmzs.net -rmzszp.com -rmzt.com -rmzxb.com -rn-core.com -rn-hswh.com -rnfengwo.com -rngdyy.com -rngmoe.com -rngtest.com -rnhospital.com -rnhy.net -rnmachine.com -rnmgn.net -ro.com -ro50.com -ro8qwpaikd4kx.com -road-group.com -roadhb.com -roadjava.com -roadlady.com -roadoor.com -roadqu.com -roadsignads.com -roadtoempress.com -roadwaygroup.com -roaing.com -robam.com -robei.com -roboeyeai.com -robomaster.com -roboneo.com -roboo.com -robook.com -robopeak.net -roborock.com -robosense.ai -robot-ai.org -robot-china.com -robot301.net -robotech-log.com -roboticsurg301.net -robotime.com -robotkang.cc -robotphoenix.com -robotplaces.com -roboxx.ltd -roc-cnc.com -roca026.com -rocaircraft.com -rocar.net -rochat.tech -rock-chips.com -rockbrain.net -rockdata.net -rockemb.com -rockerfm.com -rocketmq.cloud -rockflow.tech -rockjitui.com -rocklogistic.com -rockontrol.com -rockorca.com -rockrobo.com -rockru.com -rockx.pub -rocky.hk -rockyaero.com -rockyenglish.com -rockyglass.com -roclee.com -rocoswatch.com -roffar.com -roguelike.com -roguelitegames.com -rohm-chip.com -roidmi.com -roii.cc -roiland.com -rojewel.com -rokeyyan.com -rokid.com -rokidcdn.com -rokub.com -rokxyecc.com -roland-china.com -rolipscn.com -rollingstone.net -rollupjs.com -rom100.com -rom333.com -romantic-ltd.com -romantic214.com -romens.cloud -romhui.com -romielf.com -romjd.com -romleyuan.com -romney-lighting.com -romo.tech -romonupark.com -romzhijia.net -romzj.com -ronbaymat.com -roncoo.com -rondygroup.com -rong-data.com -rong-edge.com -rong-rtc.com -rong-sheng.com -rong100.com -rong360.com -ronganjx.com -ronganquan.com -rongba.com -rongbiz.com -rongbiz.net -rongbst.com -rongcfg.com -rongchain.com -rongchangtong.com -rongchaodichan.com -rongcheer.com -rongchenjx.com -rongdasoft.com -rongdatamall.com -rongded.com -rongdeji.com -rongechain.com -ronggangcity.com -ronggongyeya.com -rongguang-sh.com -ronghai.com -ronghedai.com -ronghotels.com -ronghuajixie.com -ronghub.com -ronghuiad.com -ronghuisign.com -rongji.com -rongjiagroup.com -rongkang.com -rongkao.com -rongkeyiyuan.com -rongledz.com -rongmaowl.com -rongmei.net -rongnav.com -rongqu.net -rongroad.com -rongsheng.biz -rongshiedu.com -rongshu.com -rongshuweb.com -rongshuxia.com -rongstone.com -rongtai-arch.com -rongtai-china.com -rongtongworld.com -rongwenest.com -rongwengroup.com -rongxingroup.com -rongxuancast.com -rongyanshe.com -rongyao666.com -rongyaozhiguang.com -rongyi.com -rongyilian.net -rongyimao.com -rongyitechnology.com -rongyizhaofang.com -rongyuechem.com -rongzhitong.com -rongzhongleasing.com -rongzhongloan.com -rongzhougucheng.com -rongzi.com -ronpharm.com -rontgens.com -roobo.com -rooderscooters.com -rooee.com -roof325.com -roogames.com -roongeimahwo.com -roosur.com -root-servers.world -root1111.com -rootcloud.com -rootguide.org -rootintech.com -rootjl.com -rootopen.com -roouoo.com -ropefitting.com -ropinsite.com -ror-game.com -rorotoo.com -ros-lab.com -ros6.com -rosaryshelties.com -rosbox.net -rosdn.com -rose.ren -rosecmsc.com -rosedata.com -rosefinchfund.com -rosepie.com -rosesandgold.fun -rosewin.com -rosin-china.com -rosirs-edu.com -rosmontis.com -rosnas.com -rosoo.net -rosoyp.com -rossoarts.com -rossoarts.net -rossopharm.com -rossroma.com -roswiki.com -roszj.com -rotai.com -rotiyfhp.com -rotom-x.com -rotora-china.com -rotorgroup.com -rouding.com -rouexdmv.com -roujiaosuo.com -roukabz.com -roundexpo.com -roundyule.com -rouruan.com -roushidongwu.com -rousin.com -route78asia.com -router.tw -routerclub.com -routeryun.com -routewize.com -routuan.com -rouxiutang.com -rouzao.com -rouzhitang.com -rowa.com -rowcan.com -rowlib.com -roxinq.com -roxmotor.com -royalsh.net -royalym.com -royole.com -royotech.com -royqh.net -roywang.com -rp-field.com -rp-pet.com -rpa-cn.com -rpaii.com -rpfieldcdn.com -rpg99.com -rpgmoba.com -rpo5156.com -rprnolz.com -rq.run -rqb99.com -rqjtp.com -rqkr.com -rqrcw.com -rqrlxx.com -rquyzhda.com -rqyy.com -rqyz.com -rr-sc.com -rr365.com -rrajz.com -rrb365.com -rrbay.com -rrbjt.com -rrbus.com -rrchem.com -rrcimg.com -rrdtz.com -rrfed.com -rrfmn.com -rrimg.com -rrioo.com -rrjc.com -rrkf.com -rrky.com -rrl360.com -rrlicai.com -rrmj.tv -rrppt.com -rrrdai.com -rrrrdaimao.com -rrrxz.com -rrs.com -rrsurg.com -rrswl.com -rrting.net -rrtoibg.com -rrtv.vip -rrwtp.com -rrxf.online -rrxh5.cc -rrxiu.cc -rrxiu.me -rrxiu.net -rrxiuh5.cc -rrys.tv -rrys2019.com -rrys2020.com -rrysapp.com -rrzsb.com -rrzu.com -rrzuji.com -rrzwl.com -rrzxw.net -rs-xrys.com -rs485.net -rsachina.org -rsc.org -rscazvdbfpbyzqdvpy1m.com -rscazvdbfpbyzqdvpylm.com -rsdcw.com -rsdgd.com -rsdsgy.com -rsdxjd.com -rsdyy.com -rsdznjj.com -rsfang.net -rsfcxq.com -rshao.com -rshaoapp.com -rshdsz.com -rshf88.com -rshjgc.com -rsjq.org -rsjytx.com -rskjx.com -rsl.cc -rslg-china.com -rsm.download.prss.microsoft.com -rsnmxd.com -rsnschina.com -rsplcdcs.com -rspwj.com -rsq111.com -rsrlzysc.com -rss.ink -rsscc.com -rssdtec.com -rssforever.com -rssso.com -rsttest.com -rsty77.com -rsuedu.com -rsun.com -rsw163.com -rswaf.com -rswl.cc -rsxc01.com -rsxmgl.com -rsybattery.com -rsyzs.com -rszfg.com -rszkw.com -rt-blend.com -rt-ics.com -rt-thread.com -rt-thread.io -rt-thread.org -rtacdn-os.com -rtahengtai.com -rtalink.com -rtb5.com -rtbbox.com -rtbpb.com -rtbtmc.com -rtbwave.com -rtc-web.com -rtc-web.io -rtcdeveloper.com -rtdsoft.com -rtf1688.com -rtfcode.com -rtfcpa.com -rtfund.com -rtfzfl.com -rthklive1-lh.akamaihd.net -rthklive2-lh.akamaihd.net -rthpc.com -rti-investor.com -rtjxssj.com -rtmap.com -rtmobi.cc -rtrrx.com -rtsaas.com -rtsac.org -rtsc-gift.com -rtvcdn.com.au -rtxapp.com -rtxonline.com -rtxplugins.com -rtxuc.com -rtyhfg.com -rtyxpt.com -rtyy.com -ru5sq.com -rua93.online -ruan.cloud -ruan8.com -ruancan.com -ruanchaomin.com -ruanduo.com -ruandy.com -ruanfujia.com -ruanjian60.com -ruanjiandown.com -ruanjianwuxian.com -ruanjianya.net -ruanjiesh.com -ruankao.com -ruankaodaren.com -ruankaokao.com -ruanko.com -ruanman.net -ruanmei.com -ruansky.com -ruansky.net -ruantiku.com -ruanwen.la -ruanwen.tv -ruanwengfa.com -ruanwenhui.com -ruanwenkezhan.com -ruanwenlala.com -ruanwenpu.com -ruanwenshijie.com -ruanx.net -ruanyuan.net -ruanyuwang.com -ruazi.com -rubaoo.com -rubbervalley.com -rubinn.com -ruby-china.com -ruby-china.org -rubyconfchina.org -rubyer.me -rubyfoods.com -rucedu.net -ruchee.com -ruchu.club -ruczzy.com -rue123.com -rueiran.com -ruesu.com -rufei.ren -rufengda.com -ruffhousetraining.com -ruffood.com -rufida.com -rugao35.com -rugaobbs.com -ruguoapp.com -ruguojiaoyu.com -ruhaivip.com -ruhnn.com -rui.plus -ruiaiad.com -ruian.com -ruianchayuan.com -ruianfang.com -ruianrz.com -ruiantuan.com -ruibai.com -ruibaigroup.com -ruibangwl.com -ruiccm.com -ruichengmedia.com -ruichun120.com -ruicitijian.com -ruida.org -ruidaedu.com -ruidaen.com -ruidan.com -ruidang.com -ruidaxx.com -ruidengkeji.com -ruideppt.com -ruideppt.net -ruidongcloud.com -ruidroid.xyz -ruienkj.com -ruifang-tech.com -ruifengchemical.com -ruifengdisplay.com -ruifengjk.com -ruifuwatch.com -ruige.com -ruigedf.com -ruigushop.com -ruihaimeifeng.com -ruihaozhanlan.com -ruihengyiliao.com -ruiheyuanny.com -ruihongip.com -ruihuajw.com -ruihuaxinxi.com -ruihuo.com -ruiii.com -ruiinsurance.com -ruijie.com -ruijiehuanbao.com -ruijienetworks.com -ruijiery.com -ruijieyun.com -ruijinginfo.com -ruijinintl.com -ruijinyy.com -ruikangjinshu.com -ruilibi.com -ruilimr.com -ruilinblw.com -ruiniucn.com -ruiniweier.com -ruipai.com -ruipengkeji.com -ruipengpet.com -ruipupharma.com -ruiscz.com -ruisheng.cc -ruishengseal.com -ruisilc.com -ruisizt.com -ruisong.tv -ruit56.com -ruitairt.com -ruite-tec.com -ruitengmaoyi.com -ruitian.com -ruitiancapital.com -ruitianjc.com -ruiuav.com -ruivihome.com -ruiwant.com -ruiwen.com -ruiwenruanjian.com -ruixhz.com -ruixiangbest.com -ruixiangdy.com -ruixin-eht.com -ruixing.cc -ruixueys.com -ruixuncw.com -ruixunidc.com -ruixunidc.net -ruiyang-ra.com -ruiying3d.com -ruiyingkeji.com -ruiyitech.com -ruiyuanchina.com -ruiyuanobserve.com -ruiyun.com -ruiyunit.com -ruize66.com -ruizhi-group.com -ruizhipak.com -ruizhiqi.com -ruizib.com -ruizong-gz.com -rujiazg.com -rujiu.net -rukechina.com -ruketang.com -rukodilla.com -rulandchem.com -rulei.vip -rulejianzhan.com -rumeibox.com -rumodesign.com -rumosky.com -runbaijia.com -runboyun.com -runca.net -runcmd.com -runcobo.com -runcome.com -rundamedical.com -rundapv.com -runde666.net -rundefit.com -rundejy.com -rundeschool.com -runergy.com -runff.com -runforint.com -runfox.com -runfujin.com -runhe.org -runhengfdc.com -runhuayou.biz -runjf.com -runjian.com -runjiapp.com -runkodo.com -runkunoptics.com -runlaijituan.com -runmang.com -runnar.com -runner-corp.com -runnerbar.com -running8.com -runningcheese.com -runninginchina.org -runningman-fan.com -runnoob.com -runnuokeji.com -runoob.com -runpho.com -runqi-nj.com -runqijx.com -runsheng.com -runshenggk.com -runsky.com -runsunedu.net -runtimebj.com -runtimeedu.com -runtimewh.com -runtronic.com -runtuchem.com -runwanxin.com -runwise.co -runwith.cc -runxun.com -runzechuanmei.com -runzefluidsystem.com -runzeyuan.com -runzi.cc -ruochu.com -ruodian360.com -ruofeisinian.com -ruohang.com -ruohuo.net -ruokuai.com -ruonei.com -ruons.com -ruoren.com -ruoshui.com -ruosoft.com -ruoxia.com -ruoyer.com -ruoyi.vip -ruozedata.com -ruozhu.shop -ruqimobility.com -ruralwomengd.org -ruseer.com -rusforest-sh.com -rushan.com -rushb.net -rushi.net -rushihu.com -rushivr.com -rushiwowen.org -rushmail.com -rushui.net -russellluo.com -rustc.cloud -rustfisher.com -rustfs.com -rustvnt.com -ruthout.com -ruthus.com -rutron.net -ruu6373.com -ruubypay.com -ruvar.com -ruvisas.com -ruwen5.org -ruxiaoyi.com -ruyig.com -ruyigou.com -ruyigu.com -ruyile.com -ruyim.com -ruyiqiming.com -ruyishi.com -ruyo.cc -ruyo.net -ruyu.com -ruyuecx.com -ruyuexs.com -ruzong.com -ruzw.com -rv28.com -rv2go.com -rvacvzhru.com -rvcore.com -rvedu.com -rvfdp.com -rvgyckhp.com -rvkol.com -rvmcu.com -rwb66.com -rwd.hk -rwdls.com -rwjiankang.com -rwjtgc.com -rwkv.com -rwrvthca.com -rwtext.com -rwxqfbj.com -rwys.com -rx-copper.com -rx-semi.com -rx4wiug6ec6r.com -rxbj.com -rxftw.com -rxgl.net -rxhospital.com -rxhui.com -rxhysm.com -rxian.com -rxjhbaby.com -rxjt.co -rxkjcn.com -rxljzy.com -rxndt.com -rxshc.com -rxtchp.com -rxwsls.com -rxwsls.net -rxxdny.com -rxyjqz.com -rxykamto.com -rxys.com -rxyushangfw.com -ry0663.com -ry0751.com -ry1116.com -ryanbencapital.com -ryanchem.com -ryansu.tech -rybbaby.com -rybridge.com -rybyurom.com -ryc360.com -rycc.net -ryd-group.com -rydbatt.com -rydermedical.com -rydth5.com -ryeex.com -rygits.com -ryjer.com -ryjiaoyu.com -ryjoin.com -rylfj.com -rylinkworld.com -rymcu.com -rymdh.com -rymooc.com -ryone.net -rypeixun.com -rypenwu.com -rysy9191.com -rytad.com -rytx.com -rytyaofang.com -ryweike.com -ryx.store -ryxiut.com -ryxiut.net -ryxkf.com -ryylkj.com -ryyqh.com -rz-cm.com -rz.com -rz.sb -rz0375.com -rz1158.com -rz520.com -rzaide.com -rzbxgc.com -rzcdc.com -rzcdz2.com -rzfanyi.com -rzfdc.com -rzfyu.com -rzglgc.com -rzhr.com -rzhushou.com -rzhybh.com -rzkj999.com -rzline.com -rzltech.com -rzmeijia.com -rzmoizmk.com -rzok.net -rzport.com -rzrc114.com -rzsf.com -rzspx.com -rzsuetrx.com -rzszp.com -rzv5.com -rzv7.com -rzx.me -rzzyfw.com -s-02.com -s-captcha-r1.com -s-famed.com -s-jl.com -s-ns.com -s-pia.org -s-q-s.net -s-reader.com -s-ss.cc -s-tech.com -s-ts.net -s-xsenyuan.com -s-yue.com -s-zone.com -s.zampdsp.com -s0599.com -s0nnet.com -s10000.com -s135.com -s163.com -s1979.com -s1craft.com -s1gh.com -s1mple.cc -s1mplecode.com -s2ceda.com -s2cinc.com -s2g2b2c.com -s361.com -s369.com -s3s9.com -s3she5k7sm.com -s4g5.com -s4yd.com -s575.com -s57o79552f.com -s5ex.com -s5s5.me -s6uu.com -s72c.com -s7y3.com -s8dj.com -s936.com -s9377.com -s98s2.com -s9hospital.com -s9yun.com -sa-ec.com -sa-log.com -sa-tencentclb.cloud -sa-tencentclb.com -sa-tencentclb.net -sa-tencentclb.work -sa-token.cc -sa20.com -sa516gr70.com -sa96.com -saaas.com -saagasports.com -saasddos.com -saasops.tech -saasruanjian.com -saasta.net -saaswaf.com -saayaa.com -saberqq.com -sabxg.com -sac-china.com -sacdr.net -sachenpharm.com -sact-digital.com -sadidc.com -sae-china.org -saebbs.com -saec.cc -saegedu.com -saen.com -saf158.com -safbon.com -safdsafea.com -safe-lb.com -safeb2b.com -safecenter.com -safeglp.com -safehoo.com -safejmp.com -safejmp.net -safeluck.com -safeneeds.com -safenext.com -safetyimg.com -safetystatic.com -safetyvod.com -safround.com -sagepub.com -sagigame.net -sagsaas.com -sagw.com -sahcqmu.com -saheo.com -saibeiip.com -saibeinews.com -saibo.com -saiboauto.com -saiboyy.com -saic-audi.mobi -saic-finance.com -saic-gm.com -saic-group.com -saicdh.com -saicdt.com -saicfinance.com -saicgmac.com -saicgmf.com -saicgroup.com -saichenglogistics.com -saicjg.com -saicmaxus.com -saicmg.com -saicmobility.com -saicmotor.com -saicyun.com -saiczd.com -saiday.com -saidouwang.com -saiduo888.com -saige.com -saihu.com -saihuahong.com -saihuitong.com -saike.com -saikerept.com -saikr.com -sail-lab.net -sail.name -sail2world.com -sailfansclub.com -saili.science -sailingyun.com -sailipaint.com -sailongmetal.com -sailungroup.com -sailunkeji.com -sailuntire.com -sailway-china.com -saiminprecision.com -saimogroup.com -saimoliku.com -sainacoffee.com -saintcos.hk -sainteco.com -saintgreenchem.com -saintic.com -saintyear.com -saipujianshen.com -saipujiaoyu.com -sairaicc.com -sairui020.com -saisaiwa.com -saitenm.com -saiterobot.com -saivsi.com -saiway.com -saiweidianqi.com -saiyou999.com -saiyouedu.net -saiyunyx.com -saizhi.com -saj110.com -sajs.com -sakata.one -saki.cc -sakura.vin -sakura286.ink -sakway.com -saky.site -saladvideo.com -salasolo.com -sale8.com -saleenauto.com -saleforin.com -salesdish.com -salesman-bd.com -salg-sichuanair.com -saliai.com -salogs.com -salongweb.com -salutecc.asia -sam-tec.com -samanhua.net -samanlehua.com -samasty.com -same-tech.com -samebar.com -sameled.com -samhotele.com -saming.com -samirchen.com -samite.cc -samitead.com -samool.com -sampux.com -samsph.com -samsrchina.com -samsuncn.net -samsunganycar.com -samsungcloudcn.com -samsungconnectivity.com -samsunghealthcn.com -samsungyx.com -samton.net -samyang.cc -samyuong.com -samzhe.com -san-health.net -san-mu.com -san-sheng.net -san-tuo.com -san-u.com -san-yang.com -san.net -sanabuy.com -sanaemio.com -sanan-e.com -sananyiliao.com -sanau.com -sanbaiyun.com -sanbanggs.com -sanbangwt.com -sanbao-steel.com -sanbao0563.com -sanbum.com -sancaiheast.com -sancanal.com -sanchuangke.com -sancov.com -sandaha.com -sandai.net -sandbean.com -sandcomp.com -sandeepin.com -sandegroup.com -sandinggas.com -sandload.com -sanduoyun.com -sandworld.net -sanen.online -sanfangshun.com -sanfen666.com -sanfengyun.com -sanfer.com -sanfi.com -sanfinehospital.com -sanfo.com -sanfu.com -sang.pub -sangaopatent.com -sangbang.com -sangem.com -sangerbio.com -sangfor.com -sangfor.net -sangfor.org -sangforcloud.com -sangfordns.com -sangle.com -sangmifort.com -sangon.com -sangongzai.net -sangsir.com -sangsongtech.com -sangumc.com -sanguocard.com -sanguoh5.com -sanguohero.com -sanguoq.com -sanguosha.com -sanguows.com -sanguowudi.com -sanguozz.com -sangxingxi.com -sangxuesheng.com -sanhao.com -sanhaoradio.com -sanhaostreet.com -sanhe-medical.com -sanhe-scale.com -sanhepile.com -sanheqin.com -sanhetimburly.com -sanheyongjia.com -sanhome.com -sanhuagroup.com -sanhuan.com -sanhucidiao.cc -saniwaveltd.com -sanjiahospital.com -sanjiang.com -sanjiang88.com -sanjiangdai.com -sanjiangtourism.com -sanjiasoft.com -sanjieke.com -sanjiexc.com -sanjinjiake.com -sanjiusk.net -sanjiuxs.com -sanjun.com -sankengriji.com -sankgo.com -sanki-e.com -sanki-suzhou.com -sankki.com -sankougift.com -sankuai.com -sankumao.com -sanlan123.com -sanlei.net -sanlengbio.com -sanlian-group.com -sanlian-machine.com -sanlian-sh.com -sanlianpump.com -sanligm.com -sanliwenhua.com -sanlovalve.com -sanmanuela.com -sanmanuela.net -sanmao.com -sanmaoyou.com -sanmiaocdn.com -sanmicun.com -sannewschool.com -sanniaokeji.com -sanpowergroup.com -sanpuzhiyao.com -sanqianzhihui.com -sanqin.com -sanqindaily.com -sanqinyou.com -sanqiu.org -sanquan.com -sanrangas.com -sanritzgroup.com -sansancloud.com -sansanyun.com -sansg.com -sanshiok.com -sanshua.com -sansitech.com -sansky.net -santaihu.com -santanjob.com -santelvxing.com -santezjy.com -santianfilter.net -santiego.ink -santiyun.com -santongit.com -santostang.com -sanvo.com -sanway.tech -sanweihou.com -sanweimoxing.com -sanweiyiti.org -sanweiyunfuwu.com -sanwen.com -sanwen.net -sanwen8.com -sanwer.com -sanxao.com -sanxia-china.com -sanxia.com -sanxiamc.com -sanxiao56.com -sanxiaomingshi.com -sanxiapharm.com -sanxige.com -sanxin-med.com -sanxinbook.com -sanxing.com -sanxinwin.com -sanxinzgjx.com -sanyaairport.com -sanyachloe.com -sanyajob.com -sanyamotor.com -sanyanblockchain.com -sanyangma.com -sanyastar.com -sanyawater.com -sanyecao.com -sanyegame.com -sanyenet.com -sanyewu.com -sanyexin.com -sanyglobal.com -sanygroup.com -sanyhi.com -sanyibao.com -sanyichemical.com -sanyipos.com -sanyouco.com -sanyoumed.com -sanyoutj.com -sanyuanbaobao.com -sanyuanqian.com -sanyuantc.com -sanyuanzn.com -sanyue.com -sanyuesha.com -sanzangwang.com -sanzao.xyz -sanzei.com -sanzer.com -sanzhimeihua.com -sanzijing.org -sanzinfo.com -sanzkf.com -sao-ma.com -sao-tencentclb.cloud -sao-tencentclb.com -sao-tencentclb.net -sao-tencentclb.work -sao.ren -saohua.com -saoic.com -saolife.com -saomadc.com -saomadiancan.com -saoniuhuo.com -saop.cc -saopu.com -saoshu.org -saoso.com -saowen.net -saoztfii.com -sap-nj.com -sap1000.com -sapphiretech.store -saraba1st.com -sardchina-lmgt.com -sarft.net -sarosgame.com -sasacity.com -sasecurity.com -sass.hk -sasscss.com -sasseur.com -sasseur1989.com -sassi2956.xyz -sast.fun -sast.net -sat0.net -satcomiot.com -satgssb.com -sating-tech.com -sator.tech -satpro.com -satrip.com -saturdaysoft.com -saturnbird.com -saublenew.com -savilehotelgroup.com -savokiss.com -savouer.com -sawenow.com -sawuatsurgical.com -saxydc.com -saxyit.com -sayabear.com -sayatoo.com -sayll.com -saylover.com -sayloving.com -sayodevice.com -saywash.com -sayyas.com -sbanzu.com -sbaoe.com -sbc-mcc.com -sbf56.com -sbh15.com -sbhimalayanml.com -sbjd88.com -sbjxyq.com -sbk-h5.com -sbkh5.com -sbkk8.com -sbmscs.com -sbnkca.com -sbnkjl.com -sbo2.com -sbooktxt.com -sbpiping.com -sbr-info.com -sbrczx.com -sbs-mag.com -sbscn.com -sbsjk.com -sbt-sh.com -sbt56.com -sbtjt.com -sbtzy.net -sbwl.com -sbwxz.com -sbxh.org -sbycjy.com -sbzj.com -sc-001.net -sc-aaa.com -sc-admc.com -sc-dl.com -sc-edu.com -sc-glas.com -sc-hstar.com -sc-jiaoyu.com -sc-pd.com -sc-tianyu.com -sc-troy.com -sc-wx.com -sc-xngs.com -sc.gg -sc115.com -sc119.cc -sc157.com -sc1588.com -sc1618.com -sc168.com -sc189.net -sc2c.com -sc2car.com -sc2p.com -sc2yun.com -sc518.com -sc666.com -sc66t.com -sc788.com -sc946.com -sc96655.com -scaffi.com -scagz.com -scanservice1.qcpp1.net -scansmt.com -scanv.com -scarbbs.com -scarclinic-cn.com -scardtech.com -scasqhwz.com -scatc.net -scavc.com -scbaidu.com -scbaijia.com -scbao.com -scbaopo.org -scbgaudio.com -scbh15.com -scbid.com -scbnrq.com -scbotai.com -scbuilder.com -scbxmr.com -scbyx.net -sccbj.com -sccchina.net -scccyts.com -sccea.net -sccens.net -sccia8888.com -sccin.com -sccjjtjy.com -scclssj.com -scclzn.com -sccm.cc -sccmlj.com -sccnfb.com -sccnn.com -sccnnc.com -sccq.net -scctjywy.com -sccts.com -scctsw.com -sccvc.com -sccwz.com -sccxbe.com -sccyxh.com -scdanzhao.net -scdbzzw.com -scdccb.com -scdcs.net -scdengbang.com -scdn.im -scdn.io -scdn0077.com -scdn08xd.com -scdn0wcp.com -scdn0wes.com -scdn0xks.com -scdn10a7.com -scdn12zo.com -scdn1dcz.com -scdn1e8v.com -scdn1eul.com -scdn1kjh.com -scdn2kw9.com -scdn2lhh.com -scdn323r.com -scdn3t09.com -scdn40kn.com -scdn43uu.com -scdn46r9.com -scdn4cpe.com -scdn4esv.com -scdn4iy4.com -scdn4usw.com -scdn549v.com -scdn67mw.com -scdn6e40.com -scdn7c4e.com -scdn7gsf.com -scdn7ma2.com -scdn8ksq.com -scdn8ppt.com -scdn98um.com -scdnacsj.com -scdnazo0.com -scdnbi9w.com -scdnbiar.com -scdnc77s.com -scdncloud.com -scdndn0v.com -scdndns.com -scdndns.net -scdndsa6.com -scdndtma.com -scdne3lt.com -scdne60t.com -scdneb5k.com -scdnebrq.com -scdneufe.com -scdnf3v6.com -scdnf80r.com -scdnfu51.com -scdng8js.com -scdnga.com -scdnga.net -scdngc.com -scdngc.net -scdngs0h.com -scdnguqg.com -scdnh957.com -scdnhagn.com -scdnhfua.com -scdnhou6.com -scdnhwc.com -scdnifld.com -scdnioyt.com -scdnirdl.com -scdnj3in.com -scdnj8do.com -scdnjfj2.com -scdnjk59.com -scdnkeuo.com -scdnl05m.com -scdnl3bk.com -scdnl46h.com -scdnl9cm.com -scdnmba2.com -scdnmnrz.com -scdnmo3m.com -scdnmogt.com -scdnmskl.com -scdnn4t9.com -scdnndj2.com -scdnnm9o.com -scdnnrib.com -scdnnub6.com -scdno55z.com -scdno5zl.com -scdnoklx.com -scdnokqh.com -scdnooyg.com -scdnpe31.com -scdnq6rc.com -scdnqjg9.com -scdnqkxi.com -scdnqo8s.com -scdnqrty.com -scdnqumc.com -scdnr7p2.com -scdnr932.com -scdnrlm1.com -scdnrvy1.com -scdnsmjc.com -scdnsvg4.com -scdnt1h7.com -scdnt9n9.com -scdntop.com -scdntucs.com -scdntxla.com -scdnucc5.com -scdnukio.com -scdnulx9.com -scdnurea.com -scdnv7uq.com -scdnvij7.com -scdnvip.com -scdnw4kb.com -scdnwehb.com -scdnwljp.com -scdnwmp0.com -scdnwpqy.com -scdnwwp9.com -scdnxgev.com -scdny1t3.com -scdnydiw.com -scdnygb7.com -scdnywwp.com -scdnzrch.com -scdri.com -scdyjyzx.com -scdytv.com -scdyzx.com -scdz120.com -scdzmw.com -sce-re.com -scea.co -sceci.net -sceea.org -sceeo.com -sceia.org -scemrq.com -scene7-cdn.dell.com -scengine.com -scenictc.com -scensmart.com -scetop.com -scezju.com -scfeihu.com -scflcp.com -scfsino.com -scfzbs.com -scg-archi.com -scgc.net -scgchc.com -scgckj.com -scgglm.com -scgh114.com -scghsd.com -scghseed.com -scgis.net -scgj56.net -scgkw.net -scgra.com -scgxhq.com -scgxlc.com -scgyjt.com -sch-szu.com -schbrain.com -schbrilliant.com -schcnc.com -schdxww.com -schengle.com -schielecn.com -schimalayanuz.com -schk777.com -schkxy.com -schlzn.com -schneidercampus.com -scholarmate.com -scholat.com -school51.com -school888.com -schoolinweb.com -schoolpi.net -schstv.com -scht.cc -schwarzeni.com -schwr.com -schxzx.com -sci-bioland.com -sci-fifans.net -sci-gz.com -sci-hub.ee -sci-hub.shop -sci-inv.com -sci-it.com -sci99.com -scialyze.com -scianet.org -sciasc.com -scichina.com -scicn.net -scidict.org -sciecure.com -sciedu.org -sciencecity.net -sciencedirect.com -sciencehr.net -sciencep.com -sciengine.com -scienjus.com -scientop.com -scientrans.com -scienward.net -scies.org -scievent.com -scifans.com -scigy.com -sciimg.com -sciirc.com -scijet.com -scijuyi.com -scilucy.com -scimall.cc -scimall.org -scimao.com -scimee.com -scinormem.com -scinorwater.com -scio.icu -sciping.com -sciscanpub.com -scisky.com -scistor.com -scisun.com -scitechoutlet.com -scitycase.com -scixh.com -sciyard.com -sciyon.com -scjcce.com -scjcdl.com -scjhg.com -scjhhb.com -scjhyq.com -scjjdd.com -scjjn.com -scjjrb.com -scjk.com -scjmm.com -scjrm.com -scjty.com -scjuchuang.com -scjycz.com -scjygd.com -scjyx.com -scjyxw.com -scjyzb.net -scjyzbxh.com -scjz-led.com -scjzjyjc.com -scjzy.net -sckrskj.com -sckxjd.com -scl-cn.com -sclanyingkj.com -sclf.org -scll.cc -scloudgda.com -sclrjc.com -sclsnk.com -sclssz.com -sclsyz.com -sclyxw.com -sclzfq.com -scm121.com -scmccboss.com -scmchem.com -scmfair.com -scmor.com -scmroad.com -scmsky.com -scmttec.com -scmxtv.com -scmy120.com -scmydb.com -scmylike.com -scmyns.com -scncbus.com -scncgz.net -scncrc.com -scnj.tv -scnjnews.com -scnjw.com -scnleee.com -scntv.com -scntzjrqfd.com -scnufl.com -sco-marathon.com -scodereview.com -scoee.com -scommander.com -scomper.me -scoowx.com -scopus.com -scoregg.com -scowqbfk.com -scpgj.com -scpgroup.com -scpidi.com -scpolicec.com -scqckypw.com -scqcp.com -scqjxh.com -scqstv.com -scqy100.com -scraij.com -scrape.center -scratchmirror.com -scratchmirror.net -scrc168.com -scrcnet.org -scrcu.com -scredcross.com -scrft.com -scriptjc.com -scrmtech.com -scrqw.com -scrsw.net -scrsy.net -scrumcn.com -scs-jianyu.com -scscms.com -scsddyf.com -scsdzxh.org -scsdzzx.com -scsema.com -scsfjt.com -scsgkyy.com -scshzx.com -scsia.org -scsjnxh.org -scsjsd.com -scslfd.com -scsltjt.com -scsmzy.com -scsntv.com -scssdd.com -scsstjt.com -scsuhuigy.com -scswyy.com -scsxth.com -scsyaszyyy.com -scsyytj.com -scszsw.com -scszxy.com -sctbc.net -sctcd.com -sctcm120.com -sctdzl.com -sctes.com -sctfia.com -sctfleasing.com -sctgo.com -sctindustries.com -sctm.cc -sctobacco.com -sctodr.com -sctszh.com -scttwy.com -sctv-tf.com -sctv.com -sctvcloud.com -sctvf.com -sctvgo.com -sctx.com -sctyhx.com -sctyxy.net -sctzsbhy.com -scubamew.com -scudcn.com -scufida.com -scujj.com -scunionpay.com -scusec.org -scutech.com -scuvc.com -scw98.com -scwdwl.com -scwhx.com -scwj.net -scwlylqx.com -scwmwl.com -scwqxh.com -scwy.net -scwyzx.com -scxd56.net -scxdf.com -scxinkang.com -scxjyw.com -scxsls.com -scyanzu.com -scyarui.com -scybjc.com -scybxx.com -scyc.cc -scych.org -scyesz.com -scyf.xyz -scylzx.net -scymob.com -scyongqin.com -scyqfhw.com -scyqjs.com -scysxh.org -scytyy.net -scyxcm.com -scyyhyxh.com -scyyxh.com -sczg.com -sczgzb.com -sczht.com -sczlhkj.com -sczlsgs.com -sczsfs.com -sczshz.net -sczsie.com -sczsxx.com -sczuanshen.com -sczw.com -sczxmr.com -sczycp.com -sczyh30.com -sczytx.com -sd-cancer.com -sd-cellbank.com -sd-chengdasteel.com -sd-chengde.com -sd-eh.com -sd-ex.com -sd-fjzy.com -sd-gold.com -sd-gree.com -sd-guotai.com -sd-jiuyang.com -sd-jnyz.com -sd-kb.com -sd-keyuan.com -sd-nand.com -sd-port.com -sd-portfh.com -sd-rtn.com -sd-sangte.com -sd-sanju.com -sd-sma.com -sd-xd.net -sd-xingshun.com -sd-yihao.com -sd-ysjt.com -sd001.com -sd11185.com -sd173.com -sd2000.com -sd2008.cc -sd235.com -sd235.net -sd5g.com -sdacid.com -sdailong.com -sdaofu.com -sdapo.net -sdaswq.com -sdawhuagong.com -sdaxue.com -sdazgs.com -sdbao.com -sdbaoding.com -sdbaowei.com -sdbeidou.com -sdbeta.com -sdbetter.com -sdbgk.com -sdbjm.com -sdbkxh.com -sdbochen.net -sdbqfw.com -sdbx.org -sdbys.com -sdca119.com -sdcbcm.com -sdcbcnc.com -sdccg.com -sdcclh.com -sdcfdq.net -sdcgc.com -sdchelv.com -sdchem.net -sdcheshi.com -sdchild.com -sdchina.com -sdchuangyi.com -sdcia.net -sdcjtz.com -sdclimber.com -sdcmc.net -sdcoke.com -sdcpd.com -sdcqjy.com -sdcqjyjt.com -sdcxgk.com -sdcxjl.com -sdcxslzj.com -sdcyun.com -sdcz.com -sddagongrubber.com -sddaqi.com -sddcbz.com -sddcp.com -sddep.com -sddermyy.com -sddeznsm.com -sddfnk.com -sddhpharm.com -sddory.com -sddp.net -sddstore.com -sddtzx.com -sddyfxjc.com -sddyzl.com -sddyzy.com -sddzinfo.com -sddzrljx.com -sdebank.com -sdeca.org -sdeclhnfz.com -sdecloud.com -sdecu.com -sdecx.com -sdedu.net -sdedubook.com -sdeer.com -sdeerlive.com -sdenews.com -sdepci.com -sdepi.com -sdeqs.com -sderp.com -sdewj.com -sdey.net -sdeyei-h.edu -sdfeid.com -sdfey.com -sdffqaz.com -sdfhyl.com -sdflc.com -sdfll.com -sdflon.com -sdfon.com -sdfscm.com -sdfscx.com -sdftc.com -sdfuer.net -sdfxyoule.com -sdfybj.com -sdfz.net -sdfztz.com -sdg-china.com -sdg53.com -sdgakj.com -sdgckg.com -sdgdwljt.com -sdgdxt.com -sdgh.net -sdgho.com -sdghrq.com -sdghtz.com -sdghzy.net -sdglobaltrade.com -sdglql.com -sdgmjiaoyun.com -sdgou.cc -sdgren.com -sdgsgcjsjt.com -sdgsjc.com -sdgslb.com -sdgslbc.com -sdgslbd.com -sdgswh.com -sdgswl.com -sdgsxcljt.com -sdgsxxjt.com -sdgt1985.com -sdguanfeng.com -sdguanzhou.com -sdguguo.com -sdgw.com -sdgwy.org -sdgxdb.com -sdgxzn.com -sdgykg.com -sdgyslfz.com -sdgzkg.com -sdhack.com -sdhbcl.com -sdhdssd.com -sdhead.com -sdheguogroup.com -sdhengxingroup.com -sdhfsh.com -sdhgu.com -sdhhiso.com -sdhitg.com -sdhmdp.com -sdhmjt.net -sdhmkj.com -sdhnt.com -sdhofa.com -sdholding.com -sdhongdaglass.com -sdhoukang.com -sdhqcp.com -sdhqedu.net -sdhrjt.net -sdhsg.com -sdhshbgs.com -sdhsie.com -sdhslqgj.com -sdhsrh.com -sdhssfjt.com -sdht666.com -sdhtkt.com -sdhtwl.com -sdhualigongshui.com -sdhuanneng.com -sdhxem.com -sdhxf.com -sdhxjl.com -sdhxsj.com -sdhydl.com -sdhynytc.com -sdhz12333.com -sdhzgs.com -sdi23.com -sdiandian.com -sdiborn.com -sdiccapital.com -sdicgdny.com -sdicgxxny.com -sdicin.com -sdicpower.com -sdicqzdefd.com -sdictktrust.com -sdictrade.com -sdicvc.com -sdigc.com -sdiitu.com -sdinfo.net -sdiread.com -sditol.com -sdj-tech.com -sdj88.com -sdjcf.com -sdjcsh.com -sdjcw.com -sdjiance.com -sdjiankan.com -sdjianmei.com -sdjingdao.com -sdjinhuihb.com -sdjinke.com -sdjkdq.com -sdjky.com -sdjlxh.com -sdjnlf.com -sdjnwx.com -sdjrg.com -sdjsen.com -sdjtbd.com -sdjtcx.com -sdjtzyxy.com -sdjujiang.com -sdjuliangnet.com -sdjulong.net -sdjuming.com -sdjushu.com -sdjuxiang.com -sdjwg.com -sdjxgj.com -sdjys.org -sdjzgt.com -sdjzhc.com -sdjzsemi.com -sdkamaiduo.com -sdkbalance.com -sdkdch.com -sdkeli.com -sdkjjt.com -sdkjnn.com -sdklh.com -sdknext.com -sdkserver.com -sdksrv.com -sdkwkg.com -sdlaien.com -sdland-sea.com -sdland-sea.net -sdlcbyq.com -sdlfhbkj.com -sdlgjycm.com -sdlinqu.com -sdlivc.com -sdljdj.com -sdlkqx.com -sdllrc.com -sdlmzb.com -sdlongli.com -sdlookchemical.com -sdlqgf.com -sdlqjg.com -sdlsgroup.com -sdlsjszp.com -sdlsxrmyy.com -sdludian.com -sdluqiao.com -sdlvbang.com -sdlvjuren.com -sdlvtai.com -sdlvxing.com -sdlxsj.com -sdly35.com -sdlyjygs.com -sdlysz.com -sdlz.tech -sdm0377.com -sdmctech.com -sdmdcm.com -sdmecl.com -sdmic.com -sdmingquan.com -sdmingshan.com -sdmjkc.com -sdmta.com -sdmtfy.com -sdmuhua.com -sdmuseum.com -sdmyzsgs.com -sdn-global-live-streaming-packager-cache-3qsdn.akamaized.net -sdnci.com -sdndzb.com -sdnfv.org -sdnh.net -sdnjsbc.com -sdnlab.com -sdnsbd.com -sdnxs.com -sdnydb.com -sdo-shabake.com -sdo.com -sdocapp.com -sdodk.com -sdodo.com -sdointl.com -sdoke.com -sdongpo.com -sdoprofile.com -sdoyhg.com -sdpag.com -sdpea.org -sdpku.com -sdplt.com -sdptem.com -sdpua.com -sdpxyq.com -sdqcgs.com -sdqcpc.com -sdqljh.com -sdqlkr.com -sdqmy.com -sdqsqx.com -sdqte.com -sdqu.com -sdqyslt.com -sdrail.com -sdrcu.com -sdricom.com -sdrixingchem.com -sdrmyy.com -sdrongya.com -sdrszp.com -sdrtgk.com -sdruile.com -sdruiqi.com -sdrunfujia.com -sdrunping.com -sdrunse.com -sdrxtf.com -sdrz12333.com -sdsaifute.com -sdsalt.com -sdsansen.com -sdsazgs.com -sdsazxh.com -sdsbhjgc.com -sdsbjp.com -sdschdlxxhyxh.com -sdsdbjt.com -sdsdiy.com -sdsdjxh.com -sdsdsoft.com -sdsdzx.com -sdsenrong.com -sdseshealth.com -sdsfjy.com -sdsgwy.com -sdshangya.com -sdshgk.com -sdshihua.com -sdshshb.com -sdsifang.net -sdsihuanpharm.com -sdsinometal.com -sdsj.com -sdsjhhyxh.com -sdsjzyxh.com -sdsldsyy.com -sdsmartlogistics.com -sdsmefina.com -sdspyyy.com -sdsrhb.com -sdssiliao.com -sdstdc.com -sdsteelrz.com -sdstet.com -sdstg.com -sdstrong.com -sdstslyy.com -sdstudy.vip -sdswitch.com -sdswtz.com -sdsxwz.net -sdsytgcl.com -sdsyyxh.com -sdszbzz.com -sdtadm.com -sdtaikai.com -sdtcck.com -sdtdata.com -sdtdfz.com -sdteleiptv.com -sdtender.com -sdteya.com -sdthrq.com -sdtianjing.com -sdtkgl.com -sdtlpm.com -sdtlyyjt.com -sdtryyjt.com -sdtugongbucj.com -sdtvjiankang.com -sdtwxx.com -sdtxmq.com -sdtylq.net -sdtzcn.com -sdtzsb.net -sdu8cvc.com -sduept.com -sduod.com -sdushu.com -sdvps.com -sdwcpm.com -sdwdhj.com -sdwdxl.com -sdweiji.com -sdweima.com -sdweiye.com -sdwen.com -sdwenlian.com -sdwenlv.com -sdwfvc.com -sdwgyy.com -sdwinnerbio.com -sdwkhvac.com -sdwljqtzjt.com -sdwlsym.com -sdwscgs.com -sdwtd.com -sdwtqqysj.com -sdwtqx.com -sdwtyy.com -sdx.microsoft.com -sdxawy.com -sdxgty.com -sdxhce.com -sdxhjtgs.com -sdxianweisumi.com -sdxiaoman.com -sdxietong.com -sdxinboao.com -sdxinglu.com -sdxingya.com -sdxjnrqjt.com -sdxjpc.com -sdxl.com -sdxlkjgf.com -sdxnetcafe.com -sdxsgas.com -sdxszhny.com -sdxszs.com -sdxtsz.com -sdxtxh.com -sdxvisa.com -sdxwyy.net -sdxxjmgg.com -sdxyxhj.com -sdxzt.com -sdyftr.com -sdyhne.com -sdyhqp.com -sdyifeng.com -sdyinshuachang.com -sdyizhibi.com -sdylhg.com -sdyndcjx.com -sdysjcc.com -sdyuanbao.com -sdyxmall.com -sdyyebh010.com -sdyyjsxy.com -sdyypt.net -sdyzzyzdh.com -sdzamy.com -sdzbcg.com -sdzckj.com -sdzdb.com -sdzdxm.com -sdzgfj.com -sdzhidian.com -sdzhongjiu.com -sdzhx.com -sdzhxk.com -sdzjxx.com -sdzk.co -sdzktd.com -sdznlh.com -sdznzx.com -sdzpw.com -sdzpw.net -sdzrm.com -sdzs.com -sdzssj.com -sdzsyl.com -sdztkj.com -sdztxxkj.com -sdzx.net -sdzydfy.com -sdzzdzkj.com -sea-group.org -sea-gullmall.com -seaarea.com -seacatcry.com -seacxy.com -seafile.com -seaflysoft.com -seafrom.com -seagull-digital.com -seagullwatch.com -seagullwatches.com -seahisun.com -seaide.com -sealaly.net -sealand100.com -sealandtableware.com -sealeadbattery.com -sealien.net -sealimg.com -sealos.run -sealyun.com -seamanhome.com -seamaty.com -seaning.com -seanya.com -seanyxie.com -seapsoft.com -search616.com -searcheasy.net -searchpstatp.com -searchstatic.com -searchtb.com -searchtoutiaolive.com -seashinepm.com -seasj.com -seaskyapp.com -seasouthgy.com -seassoon.com -seastarasset.com -seasungame.com -seasungames.com -seasunwbl.com -seatent.com -seatonjiang.com -seatopcq.com -seavalve.com -seavo.com -seawardhyacinth.com -seayao.net -seayee.com -seazor.com -seb.sason.top -seblong.com -sebug.net -sec-in.com -sec-mail.cloud -sec-motor.com -sec-wiki.com -secaibi.com -secbug.cc -secbug.org -seccw.com -secdns.site -secdoctor.com -secdriver.com -secec.com -secfree.com -secisland.com -secjia.com -seclover.com -secoo.com -secooart.com -secooimg.com -secote.com -secpulse.com -secretflow.com -secretgardenresorts.com -secretmine.net -secrss.com -secrui.com -secshow.net -secsilo.com -sectigochina.com -sectigochina.com.cdn.cloudflare.net -secu100.net -secureqin.net -securitycn.net -securityeb.com -securityinsight.com -secutimes.com -secwk.com -secwx.com -secxun.com -seducix.com -see-far.com -see-source.com -see100n.com -seebon.com -seebug.org -seecmedia.net -seed-china.com -seedasdan.org -seedchina.com -seeddsp.com -seedit.cc -seedit.com -seedland.cc -seedlandss.com -seedpace.com -seedsufe.com -seeed.cc -seegif.com -seehealth.net -seehu.net -seek114.com -seekbetter.me -seekchem.com -seekcy.com -seekfunbook.com -seekhill.com -seekingsoft.com -seeklane.com -seekonly.net -seekswan.com -seekwavetech.com -seelishi.com -seelvyou.com -seemmo.com -seemse.com -seentao.com -seepomotor.com -seepomotor.net -seerbigdata.com -seerking.com -seesawcoffee.com -seesea.site -seeseed.com -seeshentech.com -seetacloud.com -seetao.com -seetong.com -seewellintl.net -seewin-edu.com -seewo.com -seewoedu.com -seewoll.com -seexpo.com -seeya-tech.com -seeyii.com -seeyon.com -seeyonoversea.com -seeyouhealth.com -seeyouweb.com -seeyouyima.com -sefonsoft.com -segacnsh.com -segapi.com -segbuy.com -segmentfault.com -segmentfault.net -segotep.com -segwayrobotics.com -sehand.com -sehimalayanqj.com -sehnam.com -seida.tech -seijoin.com -seilway.com -seily.com -seirobotics.net -seis-jun.xyz -seisman.info -seiyuex.com -seizemail.com -sejai.com -sejianghu.com -sekede.net -sekorm.com -selboo.com -selectdataset.com -selet4.com -selfiecity.com -selfservicechina.com -selfwhostudio.com -selinuxplus.com -sellerspace.com -sellersprite.com -sellfox.com -sellingexpress.net -selypan.com -sem123.com -sem17.com -semem99.com -semeye.com -semgz.com -semi-casi.com -semi.design -semiconductorpower.com -semiconshop.com -semidata.info -semiee.com -semight.com -semiinsights.com -semir.com -semiway.com -semiwebs.com -sempk.com -semptian.com -semw-sh.com -senaocargo.com -senbeijia.com -senbukece.com -sencdn.com -sencha-china.com -senco.cc -sencomu.com -send2boox.com -senda360.com -sendbp.com -sendcloud.net -sendcloud.org -senderline.com -senderline.net -sendijt.com -sendong.com -sendpioneer.com -sends.cc -senfa.net -senge-dq.com -senge.com -senggama.online -senguo.cc -senguo.com -sengxian.com -sengzai.com -senhai.com -senhaix.com -senhe.com -senior.auto -seniverse.com -senkah.com -senken-international.com -senlianshop.com -senlinjimore.com -senmiaoliuxue.com -senmiaoschool.com -senorsen.com -senpet.com -senpian.com -senra.me -sensate.hk -sense-hk.com -senseagro.com -senselock.com -senseluxury.com -senser.group -sensertek.com -sensesw.com -sensetime.com -senseyun.com -senshidahengqi.com -sensivo.com -sensors-iot.net -sensorsdata.com -sensorsdatavip.com -senssun.com -senszx.com -sentaihb.com -sentaijs.com -sentaiwpc.com -sentcss.com -senteauto.com -senthink.com -sentosemi.com -sentuxueyuan.com -sentyeasy.com -senwas.com -senyada.com -senyao1718.com -senyou.com -senyuanhi.com -senyuanzhonggong.com -seo-lv.com -seo.tm -seo1158.com -seo123.net -seo178.com -seo371.com -seo628.com -seobti.com -seocxw.com -seodaniel.com -seofangfa.com -seoipo.com -seokoubei.com -seopath.net -seopre.com -seoqx.com -seosdc.com -seosiguan.com -seosn.com -seotcs.com -seovx.com -seowhy.com -seoxiaoxin.com -seoxuetang.com -sep.cc -sepact.com -sepcc.com -sepco1.com -sepfocus.com -sepimcsemi.com -seppec.com -septinn.com -septwolves-group.com -septwolves.com -sepu.net -sepumps.com -sequ.biz -sequoiacap.com -sequoiadb.com -sereypath.com -serholiu.com -seridc.com -servasoft.com -serveclouds.com -serverless-devs.com -serverproof.net -service.urchin.com -service86.com -servicemesher.com -servicewechat.com -serviceweixin.com -servilabmedical.com -sesamestreetenglishchina.com -sesamewatermelon.com -sescar.com -sescie.com -seseds.com -sesier.com -setb2b.com -setdg.net -seteuid0.com -setshop.vip -seuic.com -sevb.com -seven-meters.com -seven7777.eu -sevencdn.com -sevendatas.com -sevenhei.com -sevenseas-china.com -sevensem.com -sevnday.com -sevnz.com -sewise.com -sexytea2013.com -seyoo.net -seyuma-cn.com -sf-airlines.com -sf-auto.com -sf-bearing.com -sf-bsd.com -sf-card.com -sf-china.com -sf-cityrush.com -sf-dsc.com -sf-express.com -sf-financial.com -sf-freight.com -sf-international.com -sf-intra-city.com -sf-jf.com -sf-js.com -sf-laas.com -sf-pay.com -sf-saas.com -sf-zs.net -sf007.com -sf024.com -sf2021.com -sf34.com -sf888.net -sfacg.com -sfadx.com -sfair.com -sfata.com -sfb-100.com -sfbest.com -sfbuy.com -sfcar.hk -sfccn.com -sfcdn.org -sfcservice.com -sfddj.com -sfdiban.com -sfdrums.com -sfdy13168.com -sfdzh.com -sfecr.com -sffdj.com -sfgj.org -sfgy.org -sfhaa.com -sfht.com -sfi-sh.com -sfile2012.com -sfitcdp.com -sfjddna.com -sfjdml.com -sfjsgroup.com -sfjt.co -sfjx888.com -sfkedu.com -sfkj-tech.com -sfkj.vip -sfkjweb.com -sflep.com -sflmfls.com -sflqw.com -sflshz.com -sfmianhua.com -sfndns.com -sforest.in -sfpgmk.com -sfplay.net -sfqzj.com -sfrmt.com -sfs-cn.com -sfsdds.com -sfshuiwu.com -sfsigroup.com -sfsw2000.com -sfsyenergy.com -sftj.net -sftnow.com -sfund.com -sfvip1.com -sfwl.co -sfwljt.com -sfwxf.com -sfy-gmc.com -sfyb.com -sfybee.com -sfydns.com -sfygroup.com -sfys365.com -sfystatic.com -sfzj123.com -sg-che.com -sg-gemsy.com -sg-gzy.com -sg-micro.com -sg-tencentclb.cloud -sg-tencentclb.com -sg-tencentclb.net -sg-tencentclb.work -sg.work -sg163.com -sg169.com -sg888.vip -sg91.net -sgameglobal.com -sgamer.com -sgautomotive.com -sgbll.com -sgccdn.com -sgcctd.com -sgcctop.com -sgcec.com -sgcgis.com -sgchangxun.com -sgchinese.com -sgcqscgu.com -sgcyjy.com -sgda.cc -sge.sh -sgfsm.com -sgjlkyjx.com -sgjq.net -sgjsgf.com -sgjwb.com -sgjy169.com -sgjyq.com -sgla.com -sglituo.com -sgliulian.com -sgllk.com -sgmart.com -sgmlink.com -sgmsonline.com -sgmw.com -sgmwlu.com -sgmwsales.com -sgnet.cc -sgou.com -sgpjbg.com -sgplink.xyz -sgpsea.com -sgqd.com -sgqqxh.org -sgrastudio.com -sgrbcm.com -sgrcw.com -sgrsvakz.com -sgshero.com -sgsic.com -sgsotools.com -sgst.prod.dl.playstation.net -sgsugou.com -sgsxw.com -sgsyxx.net -sgt21.com -sgthzb.com -sgtmos.com -sguo.com -sgvalve.com -sgvbot.com -sgwjjc.com -sgwk.info -sgy-it.com -sgyaogan.com -sgyeyou.com -sgyhux.com -sgyouxi.com -sgyscom.com -sgyzyun.club -sgzb2.com -sgzm.com -sgzww.com -sgzww.net -sgzxedu.com -sh-3ai.com -sh-agilebot.com -sh-aia.com -sh-anfang.org -sh-anrong.com -sh-aquarium.com -sh-arpm.com -sh-autofair.com -sh-azjiadeli.com -sh-baolai.com -sh-biobond.com -sh-chenghuan.com -sh-chimbusco.com -sh-datastone.com -sh-deem.com -sh-delixi.com -sh-desu.com -sh-dongbiao.com -sh-eastwes.com -sh-edi.com -sh-eshow.com -sh-fdtw.com -sh-fxgz.com -sh-fy.com -sh-game.com -sh-gelanlishi.com -sh-gexing.com -sh-gsg.com -sh-henderson-metropolitan.com -sh-hengyuan.com -sh-hilead.com -sh-hitech.com -sh-hlrubber.com -sh-holfer.com -sh-holiday.com -sh-hs.com -sh-hting.com -sh-huate.com -sh-huayang.com -sh-hwbaoan.com -sh-hywin.com -sh-impact.com -sh-italent.com -sh-iwatani.com -sh-jiapeng.com -sh-jingjin.com -sh-jinxiang.com -sh-jjsb.com -sh-jkyy.com -sh-jzgroup.com -sh-kechen.com -sh-kelai.com -sh-kingsun.com -sh-kr.net -sh-lengdong.com -sh-liangxin.com -sh-likun.com -sh-livemusic.com -sh-meluck.com -sh-minghui.com -sh-ncn.com -sh-nemoto.com -sh-oca.com -sh-pet.com -sh-pn.com -sh-pp.com -sh-printing.com -sh-prosperity.com -sh-prosun.com -sh-putai.com -sh-puwei.com -sh-real.com -sh-recycle.org -sh-rfid.com -sh-ryjx.com -sh-saic.com -sh-sed.com -sh-service.com -sh-sfc.com -sh-sgl.com -sh-shenming.com -sh-shuguang.com -sh-sict.com -sh-sinodiet.com -sh-smartstate.com -sh-soa.com -sh-srcb.com -sh-ssci.com -sh-tangfeng.com -sh-tayor.com -sh-tencentclb.cloud -sh-tencentclb.com -sh-tencentclb.net -sh-tencentclb.work -sh-ticket.com -sh-tm.com -sh-valve.com -sh-warwick.com -sh-web.net -sh-xinao.com -sh-xixuan.com -sh-yajia.com -sh-yano.com -sh-ybxhz.com -sh-yichen.com -sh-yuai.com -sh-yuy.com -sh-zbfm.com -sh.com -sh002.com -sh1011.com -sh112.com -sh12320.com -sh148.org -sh17.com -sh414.com -sh4th.com -sh51766.com -sh5mcc.com -sh5y.com -sh600696.com -sh601200.com -sh83.xyz -sh8y.com -sh91.com -sh9130.com -sh9156.com -sha-steel-yx.com -sha-steel.com -sha2777.com -sha990.com -shaaidata.com -shaangu.com -shaanxigas.com -shaanxiiot.com -shaanxirk.com -shaanxita.com -shaanyaogroup.com -shaanyaosy.com -shabc.com -shabc.net -shabidding.com -shabiyun.com -shachong8.com -shacumox.com -shadafang.com -shadc-tencentclb.cloud -shadc-tencentclb.com -shadc-tencentclb.net -shadc-tencentclb.work -shaddockfishing.com -shadiao.pro -shaduizi.com -shafa.com -shafaguanjia.com -shagangcapital.com -shagyy.com -shaidc.com -shairport.com -shaisino.com -shaizai.com -shajdog.com -shajuta.com -shakingcloud.com -shala99.com -shalashike.com -shalfoil.com -shall-buy.com -shallserve.cc -shami99.com -shamiao.com -shan-san.com -shan-yu-tech.com -shan.com -shanbay.com -shanbotv.com -shancemall.com -shanchuangjiaoyu.com -shancui1688.com -shanda960.com -shandacasual.com -shandacasual.net -shandagames.com -shandaz.com -shandechina.xin -shandian666.com -shandiandaili.com -shandiangou.com -shandianhuifu.com -shandiansiwei.com -shandingmenye.com -shandjj.com -shandong-energy.com -shandongair.com -shandongbadun.com -shandongbojun.com -shandonggangxie.com -shandonggk.com -shandonghaiyang.com -shandonghealthcare.com -shandonghuahai.com -shandonghuaye.com -shandongjiapeng.com -shandongjuli.com -shandonglanhua.com -shandongqinuo.com -shandongruyi.com -shandongsannong.com -shandongyunpin.com -shandw.com -shanedit.com -shanfengguigang.com -shang-chain.com -shang-ma.com -shang-xia.com -shang0898.com -shang168.com -shang360.com -shangair.com -shangame.com -shanganzixun.com -shangate.com -shangbanla.net -shangbanzugroup.com -shangbaolai.com -shangbaowood.com -shangbiao.com -shangbiao.store -shangbiaocheng.com -shangbopharm.com -shangbw.com -shangc.net -shangc123.net -shangcaifanyi.com -shangchao668.com -shangchuanba.com -shangcon.com -shangdagc.com -shangdandan.com -shangdaotong.com -shangdejy.com -shangdengzn.com -shangdian.biz -shangdiguo.com -shangdixinxi.com -shangdu.com -shangdu.info -shangeyun.com -shangfang56.com -shangfenbao.com -shangfox.com -shanggame.com -shanggong-zj.com -shanghai-air.com -shanghai-at.com -shanghai-channel.com -shanghai-electric.com -shanghai-idea.com -shanghai-intex.com -shanghai-leather.com -shanghai-map.net -shanghai-pictures.com -shanghai-sports.com -shanghai-test.com -shanghai369.com -shanghaiahte.com -shanghaiairport.com -shanghaiairporttour.com -shanghaiamts.com -shanghaiata.com -shanghaiba.org -shanghaibaokai.com -shanghaibaomu.com -shanghaibaoxie.com -shanghaicaiyi.com -shanghaicg.net -shanghaichannel.net -shanghaichemical.com -shanghaiconcerthall.org -shanghaiconcrete.com -shanghaicredit.org -shanghaicup.com -shanghaidaily.com -shanghaidelong.com -shanghaidisneyresort.com -shanghaidite.com -shanghaigm.com -shanghaigobroadhospital.com -shanghaihino.com -shanghaihuanli.com -shanghaiinvest.com -shanghaiiot.org -shanghaijinyimaoyi.com -shanghaik11.com -shanghailima.com -shanghailm.com -shanghaimaling.com -shanghaimart.com -shanghaimaxicheng.com -shanghaimengtaishangcheng.com -shanghaimetal.com -shanghaimuseum.net -shanghainb.com -shanghaining.com -shanghaionstar.com -shanghaiparker.com -shanghaipower.com -shanghaipuying.com -shanghaiqihu.com -shanghaiqilu.com -shanghaiql.org -shanghairanking.com -shanghairc.com -shanghairolexmasters.com -shanghaishuangyanpi.com -shanghaishuxie.com -shanghaitianqi114.com -shanghaitower.com -shanghaitrust.com -shanghaivast.com -shanghaivet.com -shanghaiwater.com -shanghaiweicon.com -shanghaixuejia.com -shanghaiyinyang.com -shanghaiyk.com -shanghaiyouxi.com -shanghaizhaxinhospital.com -shanghaizhenji.com -shanghcat.com -shanghuiai.com -shanghuiwww.com -shanghuiyi.com -shangjieiot.com -shangjilian.com -shangjingsh.com -shangjinssp.com -shangjinuu.com -shangjixin.com -shangketang.com -shangli-tea.com -shanglin.net -shanglischool.com -shanglp.com -shangluo.co -shanglushan.com -shanglv51.com -shangnaxue.cc -shangnaxue.net -shangpai123.com -shangpin.com -shangpinshou.com -shangpo.com -shangpu-china.com -shangpusou.com -shangpuzhan.com -shangquanquan.com -shangque.com -shangrao-marathon.com -shangshaban.com -shangshancm.com -shangshang.com -shangshangke.me -shangshangoa.com -shangshangsp.com -shangshi360.com -shangshici.com -shangshiwl.com -shangshouweb.com -shangshu.com -shangshuce.com -shangshuyixue.com -shangtaiw.com -shangtao.net -shangtao360.com -shangtianhui.com -shangtongda.com -shangtuf.com -shanguanjixie.com -shanguansoft.com -shangui.cc -shangusec.net -shangwb.com -shangwei88.com -shangwu168.com -shangwulink.com -shangxue.com -shangxueba.com -shangyejihua.com -shangyekj.com -shangyexinzhi.com -shangyouxuan.com -shangyouze.com -shangyu-marathon.com -shangyuan029.com -shangyubank.com -shangyuer.com -shangzhang.com -shangzhibo.tv -shanhaifuture.com -shanhainengyuan.com -shanhaitujian.com -shanhaizhanji.com -shanhe.com -shanhe.kim -shanhe01.com -shanheknit.com -shanheyule.com -shanhs.com -shanhu188.com -shanhu99.com -shanhuu.com -shanjianzhan.com -shanjinqh.com -shankaisports.com -shanks.link -shanliao.com -shanliaoapp.com -shanling.com -shanlinjinrong.com -shanlink.com -shanlinshengwu.com -shanliulian.com -shanmeixincai.com -shanniaorecycle.com -shannon-sys.com -shannonai.com -shanqing.net -shanqu.cc -shanqx.com -shanrongmall.com -shanse8.com -shanshan-business.com -shanshan.com -shanshangame.com -shanshanhc.com -shanshanim.vip -shanshanku.com -shanshantech.com -shanshoufu.com -shanshuihotel.com -shanshuiwl.com -shansteelgroup.com -shante.me -shantoujingrui.com -shantoumama.com -shantui.com -shantuimall.com -shanwan.com -shanwan.store -shanwanli.com -shanweinews.net -shanweirc.com -shanweiyule.com -shanwel.com -shanwxxg.com -shanxiangjiaoyu.com -shanxiaobai.com -shanxichess.com -shanxidiy.com -shanxigames.com -shanxigas.com -shanxigwy.org -shanxihaoshengtong.com -shanxijianzhuzizhi.com -shanximuseum.com -shanxinj.com -shanxiol.com -shanxiranqi.com -shanxishangren.com -shanxishizheng.com -shanxiumao.com -shanxiuxia.com -shanyang666.com -shanyangwang.com -shanyaogroup.com -shanyaoo.com -shanyaoyjy.com -shanyemangfu.com -shanyetang.com -shanyhs.com -shanyishanmei.com -shanyougame.com -shanyu.com -shanyuankj.com -shanyuanms.com -shanyue.tech -shanyuechina.com -shanyzx.com -shanzhen.com -shanzhen.me -shanzhildq.com -shanzhonglei.com -shanzhuyou.com -shaoanlv007.com -shaoerbc.org -shaoerwushu.org -shaogefenhao.com -shaogood.com -shaoit.com -shaojiu.com -shaoke.com -shaolinjingwu.com -shaolintagou.com -shaolinwushuxuexiao.com -shaolinwy.com -shaolvjt.com -shaomingyang.com -shaoniandream.com -shaoshangwang.org -shaoshilei.com -shaoxiao.net -shaoxing330.com -shaoxingwater.com -shaoyangnews.net -shaoyee.com -shaoyuncloud.com -shaphar.com -shapharqx.com -shaphc.org -shaqing.com -shaqm.com -share1diantong.com -share2dlink.com -share2uu.com -share404.com -shareate.com -sharecharger.com -sharecore.net -sharedaka.com -sharegog.com -shareinstall.com -shareinstall.net -shareintelli.com -sharejoytech.com -sharejs.com -sharelogis.com -sharemoon.club -shareoneplanet.org -sharesdns.com -sharetome.com -sharetrace.com -sharevdi.com -sharewaf.com -sharewithu.com -sharexbar.com -sharexiang.com -sharingclass.vip -sharjahmadrasa.com -sharkselection.com -sharkshopping.com -sharpbai.com -sharpheel.com -sharpmobi.com -sharpon.com -shartu.com -shasx.com -shatian.org -shautomuseum.com -shawdo.com -shawnzeng.com -shaxian.biz -shayugg.com -shayujizhang.com -shayuweb.com -shazc.com -shb.ltd -shbangde.com -shbangdian.com -shbaoli.com -shbars.com -shbbq.net -shbear.com -shbetterway.com -shbg.org -shbicycle.com -shbike.com -shbio.com -shbiochip.com -shbizhen.com -shbj.com -shbjfc.com -shbkfyy.com -shbkwai.com -shbl8.com -shbnrj.com -shbobo.com -shboka.com -shbolsen.com -shbpump.com -shbqmp.com -shbtpm.com -shbxzp.com -shbyer.com -shbyw.com -shcaco3.com -shcancer.com -shcas.net -shcc-horizon.com -shcce.com -shccig.com -shccineg.com -shccio.com -shccpx.net -shccxy.com -shcd.cc -shcell.com -shcell.org -shcellgroup.com -shcfcd.com -shchangshun.com -shchengkao.com -shchnkyy.com -shchyy.net -shcifco.com -shckgs.com -shclearing.com -shclgc.net -shcljoy.com -shclkj.com -shcmer.com -shcmhr.com -shcnfb.com -shcngz.com -shcsdq.com -shcsinfo.com -shcstheatre.com -shcwmotor.com -shcxbyjt.com -shcya.com -shcz.com -shczssyq.com -shczyy.com -shdafw.com -shdancecenter.com -shdasa.com -shdata.com -shdatagroup.com -shdcjt.com -shdftz.com -shdgm.com -shdingzhidental.com -shdirong.com -shdjt.com -shdmic.com -shdmt.net -shdmu.com -shdnjt.com -shdouxie.com -shdpa.com -shdpyq.com -shdrc.org -shdrkj.com -shdsd.com -shdsn.com -shdsqs.com -shdszc.com -shdxgraphene.com -shdxk.com -shdy.com -shdy168.com -shdyiy.com -shdyty.com -shdzep.com -shdzfp.com -she120.com -sheasyoffice.com -shebao.net -shebao100.com -shebao5.com -shebao520.com -shebaomi.com -shebaotong.com -shebaowang.com -shebaozhaopian.com -shebiaotm.com -sheboo.com -sheca.com -shedejie.com -shedongyun.com -shedoor.com -shedunews.com -sheec-tencentclb.cloud -sheec-tencentclb.com -sheec-tencentclb.net -sheec-tencentclb.work -sheencity.com -sheenrun.com -sheentec.com -sheep11.com -sheepmats.com -sheinet.com -sheji.com -shejibao.com -shejiben.com -shejibiji.com -shejidaren.com -shejidaxue.com -shejidedao.com -shejidna.com -shejijia.com -shejijingsai.com -shejiku.net -shejinu.com -shejipi.com -shejiqun.com -shejis.com -shejiwo.net -shejixf.com -shejiyizhou.com -shejiyue.com -sheketiandi.com -shekou.com -shelive.net -shellpub.com -shellsec.com -shelter-china.com -shelterdome.net -shelwee.com -shen-grh.com -shen-nao.com -shen-xi.com -shen321.com -shenanhui.com -shenbinghang.com -shenbingyiyuan.org -shenbisheji.com -shencai-china.com -shencaiceshi.com -shenchai.com -shenchengkeji.com -shenchengtou.com -shenchigroup.com -shenchuang.com -shenchunhui.com -shencut.com -shenda-group.com -shendatong.com -shendiaoqzj.com -shendoow.com -shendu.com -shendu123.com -shendugho.com -shenduliaojie.com -shenduwang.com -shenduwin10.com -shenduwin7.com -shengangzc.com -shengaohua.com -shengbaihui.com -shengbangshenghua.com -shengbaoluo.com -shengcai.net -shengcaijinrong.com -shengcaiyoushu.com -shengcaozhiwang.com -shengcekeji.com -shengchan.biz -shengdan.com -shengdaosoft.com -shengdaprint.com -shengdawood.com -shengdecw.com -shengdianhuadg.com -shengdianhuadk.com -shengejing.com -shengenqianzheng.com -shengenv.com -shengfajiaohua.com -shengfanwang.com -shenghan.org -shenghefilms.com -shengheplastic.com -shenghongpec.com -shenghu.cc -shenghua-fire.com -shenghuabao.net -shenghuaem.com -shenghuagroup.com -shenghuaxi.com -shenghui56.com -shenghuigd.com -shenghuo365.com -shenghuojia.com -shenghuorili.com -shenghuowo.com -shengjie-logistics.com -shengjing360.com -shengjinghe.com -shengjinglinye.com -shengjiu.com -shengjoy.com -shengjuewl.com -shengli.com -shenglongit.com -shengmaapp.com -shengmage.com -shengming.net -shengmingfa.com -shengminghitech.com -shengniuuz.com -shengpay.com -shengqian51.com -shengquan.com -shengqugames.com -shengren.work -shengrungroup.com -shengsci.com -shengshengkang.com -shengshizhicheng.com -shengtai.com -shengtaigroup.net -shengtian.com -shengtiangroup.com -shengtongedu.com -shengtuanyouxuan.com -shenguang.com -shengwu.store -shengwu01.com -shengxiao.net -shengxiaobj.com -shengxiaochemical.com -shengxin.ren -shengxingholdings.com -shengxinquan.net -shengxuxu.com -shengyan985.com -shengyedq.com -shengyeji.com -shengyi.ai -shengyi.biz -shengyizhuanjia.com -shengyuan.com -shengyuancc.com -shengzhaoli.com -shengzhujiage.com -shenhaoinfo.com -shenhexin.com -shenhexin.vip -shenheyuan.net -shenhongfei.com -shenhongmao.com -shenhua.cc -shenhuachina.com -shenhudong.com -sheniaoren.com -sheniaorenw.com -shenjianggroup.com -shenjiangyy.com -shenjing.com -shenjumiaosuan.com -shenkai.com -shenkelong.com -shenkexin.com -shenkong.net -shenlan01.com -shenlan02.com -shenlanbao.com -shenlaohr.com -shenling.com -shenlintech.com -shenma-inc.com -shenma.com -shenmabaike.com -shenmadsp.com -shenmapay.com -shenmayouxi.com -shenmeipharm.com -shenmikj.com -shenmo.com -shenmojiaoyu.com -shenmou.com -shennongjiazhaopin.com -shennongpharma.com -shennwu.com -shenou.com -shenousz.com -shenpinwu.com -shenpojie.com -shenpowang.com -shenpucw.com -shenqhy.com -shenqisou.com -shenqiwunet.com -shenqizhilv.com -shenquol.com -shenrongda.com -shenrongjidian.com -shenruan.org -shenruapp.com -shenshang.org -shenshi777.com -shenshiads.com -shenshijituan.com -shenshoucdn.com -shenshouwl.com -shenshouyouxi.com -shenshu.info -shenshuo.net -shenshuw.com -shensuantang.com -shensuokeji.com -shenta.net -shentongchina.com -shentongdata.com -shentongkuaidi.com -shenweibengye.com -shenweimicro.com -shenweisupport.com -shenweixiangjiao.com -shenxianhua.com -shenxianyu.cc -shenxijixie.com -shenxingroup.com -shenxm.com -shenxuanche.com -shenyang2car.com -shenyangbus.com -shenyangoffice.com -shenyd.com -shenyecg.com -shenyehd.com -shenyeyunying.com -shenyinhudong.com -shenyou.tv -shenyu.me -shenyuanquan.com -shenyunlaw.com -shenyunmedical.com -shenyunwang.com -shenzan.com -shenzaokeji.com -shenzaole.com -shenzhekou.com -shenzhen-kuaiji.com -shenzhen-world.com -shenzhenair.com -shenzhenbaoanmarathon.com -shenzhenbianhua.com -shenzhenew.com -shenzheninvestment.com -shenzhenjgw.com -shenzhenlianhua.com -shenzhenmakerfaire.com -shenzhenshouxin.com -shenzhenshuixie.com -shenzhentong.com -shenzhentour.com -shenzhenware.com -shenzhenygx.com -shenzhenyuren.com -shenzhoublm.com -shenzhouen.com -shenzhoufu.com -shenzhoupharma.com -shenzhyu.work -shepai1688.com -shephe.com -shepinw.com -shequfu.com -shequfu.net -sherc.net -sherlockkk.com -sherlocky.com -sherowm.com -sheshui.com -sheui.com -shevdc.org -shewang.net -sheweikeji.com -shexcloud.com -shexgrp.com -shexian100.com -shexiannet.com -shexpocenter.com -sheying001.net -sheyingtg.com -sheyou.com -sheyuan.com -shezaixian.com -shezfy.com -shfa120.com -shfamily.com -shfangshui.com -shfayy.com -shfcw.com -shffjt.com -shfft.co -shfft.com -shfgzl.com -shfigaro.com -shfilmart.com -shfilmmuseum.org -shfinechem.com -shfirstrehab.com -shfoxmotor.com -shfq.com -shfrp.com -shfswl.com -shfte.com -shfxrc.com -shfy2020.com -shgao.com -shgaoxin.net -shgbc.org -shgbit.com -shgbitcloud.com -shgci.com -shgedu.com -shggzy.com -shgjj.com -shgjq.com -shgkh.com -shgkl.com -shgkw.org -shglgf.com -shgpo.com -shgsec.com -shgsic.com -shgskj.com -shgtheatre.com -shgushi.com -shgyg.com -shgymy.com -shhanqiao.com -shharborcity.com -shhbgm.com -shhcjt.com -shhcpm.com -shhd17.com -shhdouyue.com -shhebio.com -shhella.com -shhenghesh.com -shheywow.com -shhic.com -shhigher.com -shhiminhm.com -shhkcc.com -shhkfw.com -shhksports.com -shhkyy.com -shhl56.com -shhlgroup.com -shhmbio.com -shhmu.net -shholdingeu.com -shhorse.com -shhqcft-tencentclb.cloud -shhqcft-tencentclb.com -shhqcft-tencentclb.net -shhqcft-tencentclb.work -shhqcftfzhj-tencentclb.cloud -shhqcftfzhj-tencentclb.com -shhqcftfzhj-tencentclb.net -shhqcftfzhj-tencentclb.work -shhqcftfzhjtencentclb.cloud -shhqgc.com -shhrp.com -shhtqn.com -shhuaerkang.com -shhuayi.com -shhuayitz.com -shhuazhen.com -shhugong.com -shhuihai.com -shhuke.com -shhuo.com -shhushi.com -shhuu.com -shhweili.com -shhws.com -shhxbk.com -shhxf119.com -shhxpx.com -shhxyy.com -shhxzq.com -shhyanqing.com -shhyhy.com -shhzcj.com -shi-ming.com -shianzhixuan.com -shibaili.com -shibangchina.com -shibangsy.com -shibei.com -shibeiht.com -shibolm.com -shibor.org -shicai.biz -shicaidai.com -shicaizhanlan.com -shicaotangchina.com -shicehao.com -shichangbu.com -shichengbao.com -shichengyi.com -shichuangsj.com -shichuangyi.com -shichuedu.com -shichuihui.com -shicigequ.com -shicishe.com -shiciyun.com -shicuojue.com -shida66.com -shidaedu.vip -shidai5d.com -shidaohospital.com -shidapx.com -shidastudy.com -shide.com -shidegroup.com -shidenggui.com -shidexian.com -shidianbaike.com -shidianguji.com -shidianwandao.com -shidiao136.com -shidicn.com -shidoukeji.com -shidutuozhan.com -shiepmexpo.com -shifair.com -shifanedu.com -shifang.tech -shifansheng.com -shifd.net -shifeiti.com -shifen.com -shifendaodu.com -shifendaojia.com -shifeng.com -shifenyuedu.com -shigaoshan.com -shiguanai.com -shiguanghuyu.com -shiguangpu.com -shiguangxu.com -shiguangyouju.com -shiguanyinger-jg.com -shihua-group.com -shihuantong.com -shihuishuo.com -shij001.com -shijiala.com -shijian.cc -shijian.org -shijiancn.com -shijianla.com -shijianping.com -shijiaok.com -shijicloud.com -shijie2.com -shijiebang.com -shijiechaoshi.com -shijieditu.net -shijiemap.com -shijieminghua.com -shijiemingren.com -shijiesanqingshan.com -shijieshijian.net -shijiexia.com -shijieyouxi.com -shijieyunlian.com -shijiezz.com -shijihr.com -shijihulian.com -shijiong.com -shijiqingqing.com -shijiretailo2o.com -shijiudao.com -shijiufang.com -shijqq.com -shiju.cc -shijue.me -shijuecanyin.com -shijuehaian.com -shijueju.com -shijuenian.com -shikaricharters.com -shikee.com -shikelang.cc -shikongdaoyu.com -shiku.co -shilehui.com -shileizuji.com -shilian.com -shilian.net -shilicdn.com -shilincn.com -shilinseo.com -shilitie.net -shiliuai.com -shiliupo.com -shiluetl.com -shiluoji.com -shimano-fishchina.com -shimaoco.com -shimaoenergy.com -shimaogroup.com -shimaostargroup.com -shimaotong.com -shimaowy.com -shimen.org -shimengcs.com -shimengyuan.com -shimengzhanghao.com -shimge.com -shimiduanju.com -shiming.com -shiminjia.com -shimizuchem.com -shimo.im -shimo.run -shimodev.com -shimoko.com -shimolife.com -shimonote.com -shimotx.com -shimowendang.com -shinco.com -shindaichem.com -shine-consultant.com -shine-ic.com -shine-tech.net -shineacc.com -shinechina.com -shinefeel.com -shinelon.com -shineoptics.com -shineray-motors.com -shinerayad.com -shinetsu.shop -shineu.com -shineway.com -shinewaytech.com -shinewing.com -shinewonder.com -shineyie.com -shineyue.com -shinger.com -shinianonline.com -shining-electric.com -shining3d.com -shiningmidas.com -shiningnew.com -shiningpharm.com -shinnytech.com -shinva.net -shinycg.com -shinye-ortho.com -shinyway.org -shinzoom.com -shiove.com -ship-gps.net -ship.sh -ship56.net -shipai123.com -shipfinder.com -shipgce.com -shipgroup.net -shiphr.com -shipin163.com -shipin520.com -shipinzhibojian.com -shipoe.com -shippingate.com -shippingchina.com -shippingwhale.com -shipry.com -ships66.com -shipservice.org -shiptux.com -shipurili.com -shipuxiu.com -shipxy.com -shiqi.me -shiqiao.com -shiqichuban.com -shiqidu.com -shiqitech.com -shiqu.com -shiquan56.com -shiquask.com -shiqutech.com -shirenzuojia.com -shiritianchengtech.com -shirongzhaoye.com -shisanzhi.com -shiseidochina.com -shishacharcoal.net -shishagame.com -shishangd.com -shishangfengyun.com -shishenmegeng.com -shishifanyi.com -shishijia.com -shishike.com -shishiwater.com -shiso9001.net -shisongya.com -shisukeji.com -shitac.com -shitac.net -shitairen.com -shiti.net -shitianxia.vip -shitoc.com -shitou.com -shitouboy.com -shitourom.com -shitsu.co.jp -shituyikao.com -shiwanbaijiu.com -shiwang1688.com -shiwangyun.com -shiweisemi.com -shiwenlu.com -shixiangren.com -shixiaojin.com -shixibiaozhi.com -shixijob.net -shixingceping.com -shixinhua.com -shixinyufang.com -shixiseng.com -shixiu.net -shixun365.com -shixunhao.com -shixunsuda.com -shixunwl.com -shiyan.com -shiyanbar.com -shiyanbar.net -shiyangdr.com -shiyanhospital.com -shiyanjia.com -shiyanlou.com -shiyculture.com -shiye.org -shiyebian.net -shiyebian.org -shiyedanwei.net -shiyi.co -shiyi11.com -shiyibao.com -shiyicdn.com -shiyide.com -shiyifacai.com -shiyingbao.com -shiyiyj.com -shiyiyx.com -shiyong.com -shiyongjun.biz -shiyou-electric.com -shiyou.me -shiyouflooring.com -shiyouhome.com -shiyousan.com -shiyu.pro -shiyu.zone -shiyuandx.com -shiyue.com -shiyuegame.com -shiyueliangpin.com -shiyund.com -shiyus.com -shiyutianqi.com -shizhanxia.com -shizhihome.com -shizhuang-inc.com -shizhuang-inc.net -shizhuolin.com -shizhuonet.com -shj6789.com -shjakfyy.com -shjaming.com -shjayson.com -shjb600838.com -shjcm3d.com -shjd.org -shjdceo.com -shjdjx.com -shjglaser.com -shjgu.com -shjh120.com -shjhjc.com -shjiabu.com -shjinbao.com -shjincan.com -shjingmi.com -shjingxu.com -shjinnengzuche.com -shjlnzyy.com -shjob.work -shjr-tencentclb.cloud -shjr-tencentclb.com -shjr-tencentclb.net -shjr-tencentclb.work -shjsit.com -shjsrg.com -shjsst.com -shjstl.com -shjsxh.com -shjt.net -shjtos.com -shjtw.com -shjtxx.net -shjus.com -shjvguan.com -shjx-group.com -shjy18.com -shjy8888.com -shjyou.com -shjyyx.com -shjzfs.com -shjzfutures.com -shjzzjf.net -shk6vdio5.buzz -shkaihang.com -shkamoer.com -shkcn.com -shkcsj.com -shkdchem.com -shkdfua.com -shkewen.com -shkg.net -shkhzc.com -shkingchem.com -shkjb.com -shkjcable.com -shkjjs.com -shkjqp.com -shkjsoft.com -shkkl.com -shklsw.com -shkm.com -shkpzx.com -shkuangjing.com -shkypump.com -shl56.com -shlab.tech -shlangao.com -shlawserve.com -shlayout.com -shlcxby.com -shld.com -shldfm.com -shlhbxg.com -shliangshi.com -shlingang.com -shlinjiang.com -shlitc.com -shlixin.com -shll-gs.com -shlll.net -shlmth.com -shlongtai.com -shlp.com -shlpk.com -shlsnk.com -shlsyb.com -shlungu.com -shlys.com -shmaas.net -shmama.net -shmarathon.com -shmaur.com -shmbjy.org -shmds.com -shmds.vip -shmedia.tech -shmengyang.com -shmet.com -shmetro.com -shmfmr.net -shmhtv.com -shmhzp.com -shmljm.com -shmockup.com -shmog.org -shmondial.com -shms-expo.com -shmtu.net -shmusic.org -shmusicschool.com -shmylike.com -shmzgroup.com -shnaile.com -shnanfang.com -shnb12315.com -shnbsh.com -shneuro.org -shneweye.com -shnmnm.com -shnne.com -shnsyh.com -shnti.com -shoasis.net -shoasisholding.com -shobserver.com -shockerli.net -shockley-elect.com -shoegaze.com -shoeshr.com -shofine.com -shojo.cc -shokan.org -shokdown.com -shokw.com -sholaser.com -shollper.com -shomop.com -shomyq.com -shonfer.com -shootmedia.net -shop-isv.com -shop2cn.com -shopbackdrop.com -shopchaoren.com -shopeesell.com -shopeesz.com -shopex123.com -shopimgs.com -shopin.net -shopjyh.com -shoplazza.com -shopmaxmb.com -shopnc.net -shoppingchain.net -shopplus.vip -shoprobam.com -shopscrm.com -shopss.com -shoptop.com -shopwatchus.com -shopwind.net -shopxo.net -shopxo.vip -shopxx.net -shopyy.com -shorcut88.com -shorologe.com -shortof.com -shotnba.com -shou-qi.com -shoubaiart.com -shoubanjiang.com -shoubaodan.com -shoubashou.net -shoubb.com -shoubiaohuishou.com -shoubiaowang.com -shoubuluo.com -shoucangyaji.com -shouce.ren -shouce365.com -shouchaoba.com -shoucheng123.com -shoudayy.net -shoudian.com -shoudian.info -shoudian.org -shouduit.com -shoudurc.com -shoudurx.com -shoufaw.com -shoufm.com -shoufu.com -shougongke.com -shougongke.net -shougoumingbiao.com -shouhaoche.com -shouhoubang.com -shouhougou.com -shouhui.com -shouhuigroup.com -shouhuisoft.com -shouhuojiyun.com -shouhuola.com -shouji.com -shouji10086.com -shouji315.org -shouji56-img.com -shouji56.com -shoujibao.net -shoujidai.com -shoujiduoduo.com -shoujihuifu.com -shoujikanshu.net -shoujimi.com -shoujitouping.com -shoujiwan.com -shoujixs.net -shoujixs.org -shoukaigufen.com -shoukala.com -shoukangyiyuan.com -shoukayun.com -shoulian.org -shoumaquan.com -shoumizhibo.com -shoumm.com -shounaoxuexiao.com -shouqi-zuche.com -shouqianba.com -shouqibus.com -shouqicar.com -shouqiev.com -shouqu.me -shoushenlvcheng.com -shoutai.com -shoutao.biz -shouxi.com -shouxieti.com -shouxihu.net -shouxiphotos.com -shouyao.com -shouyao8.com -shouyaoholding.com -shouye-wang.com -shouyhui.com -shouyihuo.com -shouyinbei.net -shouying.tv -shouyou.com -shouyoubus.com -shouyoucdn.com -shouyoudao.com -shouyoujz.com -shouyouqianxian.com -shouyoushenqi.com -shouyoutv.com -shouyouzhijia.net -shouzhang.com -shouzhangapp.com -shouzhitao.com -shouzhuanzhidao.com -shovesoft.com -show160.com -showaamericanstory.com -showapi.com -showchina.org -showcitytimes.net -showcome.net -showdoc.cc -showerlee.com -showfay.com -showgame.com -showing9.com -showjoy.com -showkey.com -showl.com -showmeai.tech -showmebug.com -showmesse.net -showroomshanghai.com -showse.com -showself.com -showshell.com -showstart.com -showtao.com -showxiu.com -showxue.com -showyu.com -shoyoo.com -shpans.com -shpanyou.com -shpbs.com -shpd.net -shpdh.org -shpdjq.com -shpedi.com -shpenquan.com -shpgt.com -shpgx.com -shphschool.com -shpiano.com -shpingda.com -shplhs.com -shppa.net -shps518.com -shpsncp.com -shpyedu.com -shqec.com -shqi7.net -shqianbin.com -shqinghe.com -shqingzao.com -shqipai.org -shqkxh.org -shqmxx.com -shqncs.com -shqpxc.com -shqswlgs.com -shqunlu.com -shqxjx.com -shqyg.com -shrail.com -shrbank.com -shrca.org -shrcb.com -shrcdy.com -shrenqi.com -shresource.com -shrgjt.com -shrlig.com -shrmpump.com -shrmw.com -shrrjt.com -shrtlnks.com -shruanjie.com -shruisong.net -shry.net -shryou.com -shsaic.net -shsajt.com -shsanfang.com -shsanfine.com -shsanji.com -shsanwei.com -shsbnu.net -shsby.com -shsc-valve.com -shscce.com -shsci.org -shscsc.com -shsctec.com -shsd-elec.com -shsdjsj.com -shsdnet.com -shsee.com -shsfkyy.com -shsfxxh.com -shsgbm.com -shsgyq.com -shshenbo.com -shshengfa.com -shshilin.com -shshinfo.com -shshuhui.com -shshunfeng.com -shshuxiao.com -shshzu.com -shsid.org -shsinhu.com -shsipo.com -shsixun.com -shsjb.com -shsjcb.com -shsjgj.com -shsjjh.com -shsjx.org -shskin.com -shsktower.com -shskyland.com -shslqxh.com -shsmzj.com -shsoong-chingling.com -shsot.com -shsparkwater.com -shspdq.com -shsportschool.com -shsq.vip -shsrdzs.com -shssdc.com -shssp.org -shstcm.com -shstone.org -shstyxh.com -shsunny.com -shswim.com -shsxjy.com -shsyf.com -shsyzn.online -shsz17.com -shszsoft.com -shtalentgroup.com -shtannet.com -shtaoism.com -shtazy.com -shtbi.com -shtdgj.com -shtdsc.com -shtefu.com -shtfqx.com -shtgds.com -shthbanz.com -shthediyya.com -shtianhe.cc -shtianye.com -shtianyuqiche.com -shtic.com -shtimessquare.com -shtion.com -shtopshow.com -shtour.org -shtqzs.com -shtrhospital.com -shtsn.com -shtsp.com -shtutian.com -shtw.cc -shtwjiebao.com -shtxcj.com -shtydic.com -shu-ju.net -shu163.com -shuaigeshe.com -shuaigun.com -shuaihuajun.com -shuaiku.com -shuaiming.com -shuainiba.com -shuaipiao.com -shuaishou.com -shuaiy.com -shuaji.com -shuaji.net -shuajibao.com -shuajizhijia.net -shuakazhijia.com -shuame.com -shuang-feng.com -shuang-sen.com -shuangcheng.net -shuangda-pump.com -shuangguan.net -shuanghancn.com -shuangheng.com -shuanghui.net -shuangjing.net -shuangken.com -shuangkou.net -shuangkuai.co -shuangle888.com -shuangliang-boiler.com -shuanglin.com -shuanglingroup.com -shuanglongdong.com -shuanglongjp.com -shuangmatbs.com -shuangmei2008.com -shuangniaoslhl.com -shuangshitv.net -shuangtao.com -shuangtiantech.com -shuangtuan.com -shuangxian.com -shuangxingcaisu.com -shuangxingseed.com -shuangxinhui.com -shuangyanjie.com -shuangyingmenye.net -shuangyingsx.com -shuangyuejn.com -shuangzheng.org -shuangzhong.com -shuashuaapp.com -shuashuati.com -shuazhibo.com -shubiaob.com -shubl.com -shucai001.com -shucai123.com -shucaixiaoshuo.com -shuchengdt.com -shuchongread.com -shuchuandata.com -shucong.com -shudaoge.com -shudaojt.com -shudaowl.com -shudaxia.com -shudianwang.com -shudongpoo.com -shudouzi.com -shuduntech.com -shuerjia.com -shufa.com -shufa.org -shufa121.com -shufa360.com -shufaai.com -shufabao.net -shufafin.com -shufaji.com -shufajia.cc -shufami.com -shufashibie.com -shufaway.com -shufawu.com -shufazidian.com -shufaziti.com -shufe.com -shufenggaoke.com -shuge.org -shuge9.com -shuguang.com -shuguanggroup.com -shuguanghuayuan.com -shuhai.com -shuhaidata.com -shuhaige.net -shuhaisc.com -shuhaitz.com -shuhaochaxun.com -shuhegroup.com -shuhenglib.com -shuhonggz.com -shuhua.com -shuhuast.com -shuhuawu.com -shuhui9.com -shui12366.com -shuibaogs.com -shuibengxinghao.com -shuicao.cc -shuichan.cc -shuichan51.com -shuichuyu.com -shuidichou.com -shuididabingchou.net -shuidigongyi.com -shuidiguanjia.com -shuidihealth.com -shuidihuzhu.com -shuidihuzhu.net -shuidike.com -shuidiopen.com -shuiditech.com -shuidixy.com -shuidyd.com -shuifuhuanbao.com -shuigongye.com -shuiguobang.com -shuihuoibm.com -shuijing100.com -shuijingka.com -shuijingwanwq.com -shuijingwuyu.com -shuijingyibai.com -shuijinshunzhuang.com -shuiku.cc -shuiliangye.com -shuiliantong.com -shuiliaosheji.com -shuiligroup.com -shuilongtouapp.com -shuimiao.net -shuimofang.net -shuimoshi.net -shuimozhuan.net -shuimui.com -shuimujiaju.com -shuimuyulin.com -shuini.biz -shuionland.com -shuipingce.com -shuipo.com -shuisj.com -shuitexxkj.com -shuitou001.com -shuiwushi.com -shuiwushi.net -shuixin.tech -shuiyaohuo.com -shuiye.cc -shuiyinbao.com -shuiyinwang.com -shuiyinyu.com -shuiyinyun.com -shuiyoucam.com -shuiyugame.com -shuiyuwenquan.com -shuizhi360.com -shuizhifenxi.com -shuizhili.com -shuizilong.com -shujiangweike.com -shujiariji.com -shujike.com -shujinrenjia.asia -shuju.net -shujuapi.com -shujuba.net -shujubang.com -shujubo.com -shujujishi.com -shujulin.com -shujutang.com -shujuwa.net -shujuxian1688.com -shukeba.com -shukebox.com -shukeju.com -shukemobile.com -shukingfashion.com -shukoe.com -shukongwang.com -shukuai.com -shukuai.net -shukuai3.com -shukuajing.com -shukuge.com -shukun.press -shukwai.com -shulanapp.com -shulanedu.com -shulanhealth.com -shulb.com -shulex-voc.com -shuliangtec.com -shulidata.com -shuling.vip -shulink.com -shuliyun.com -shuma7.com -shumaidata.com -shumayin.com -shumazhaopian.com -shumeipai.net -shumeipaiba.com -shumenol.com -shumensy.com -shumiao.com -shumiimg.com -shumilou.org -shumo.com -shun176.com -shunanholding.com -shunbangsaifu.com -shunchangzhixing.com -shunchaojinshu.com -shuncom.com -shundaoyun.com -shunde-marathon.com -shundecity.com -shundehr.com -shundeplus.com -shunderen.com -shunfalighting.com -shunfangw.com -shunfeng.cc -shunguang.com -shunhaiwang.com -shunhejieshui.com -shunhengkn.com -shunhongny.com -shunhualithium.com -shunhuishou.com -shunjing.xin -shunjunys.com -shunlitm.com -shunmi.com -shunnengnet.com -shunnengoil.com -shunqi.com -shunscom.com -shunshikj.com -shunshunliuxue.com -shuntian.cc -shuntongtong.com -shunwang.com -shunwoit.com -shunyagroup.com -shunygroup.com -shunyoubio.com -shunyuwater.com -shuoba.com -shuoba.me -shuoba.org -shuobao.com -shuobozhaopin.com -shuocdn.com -shuodedui.com -shuoedu.com -shuofangw.com -shuohong.net -shuoji1688.com -shuojuchaxu.com -shuoman.com -shuomingshuku.com -shuoniu.cc -shuoshuojie.net -shuoshuojuzi.com -shuoshuokong.com -shuoshuokong.org -shuoshuomi.com -shuoshuoxinqing.com -shuowan.com -shuozhiwu.com -shupackaging.com -shupaiyun.com -shupeng.com -shuqi.com -shuqiandiqiu.com -shuqiaozt.com -shuqiapi.com -shuqiread.com -shuqireader.com -shuquge.com -shuquge.la -shuqun.com -shuquta.com -shuquxs.com -shuquzw.la -shuren100.com -shushangai.com -shushangyun.com -shushihome.com -shushindo.com -shushubuyue.com -shushubuyue.net -shusw.com -shutcm.com -shuti.com -shutong1680.com -shutong5858.com -shutonginfo.com -shutu.cc -shutwin.com -shuwangxing.com -shuwenxianyun.com -shuwulou.com -shuxiangmenhu.com -shuxiangmuye.com -shuxiayun.com -shuxinsp.com -shuxinyc.com -shuxuehua.com -shuxuejia.com -shuxuejingwei.com -shuxuet.com -shuxueweb.com -shuxueyingyong.com -shuya-china.com -shuyan-biotech.com -shuyang.tv -shuyangba.com -shuye.com -shuyeedu.com -shuyfdc.com -shuyong.net -shuyuanchina.org -shuyuewu.co -shuyun.com -shuzhi9.com -shuzhiduo.com -shuzhou.cc -shuzibao.com -shuzifuyu.com -shuzigd.com -shuzigonggao.com -shuziguanxing.com -shuzijihuo.com -shuzisharing.com -shuziw.com -shuzixiaoyuan.com -shuzixindong.com -shuziyuedong.com -shuzong.com -shwbs.org -shwdbjgs.com -shwdir.com -shwebspace.com -shweiqi.org -shwexpo.com -shwhl.com -shwilling.com -shwkwai.com -shwoody.com -shwpbbs.com -shwpg.com -shws.org -shwsfy.com -shwsg.net -shwszdh.com -shwtqx.com -shwuji.com -shwx.com -shwxzf-tencentclb.cloud -shwxzf-tencentclb.com -shwxzf-tencentclb.net -shwxzf-tencentclb.work -shwxzfjpyzc-tencentclb.cloud -shwxzfjpyzc-tencentclb.com -shwxzfjpyzc-tencentclb.net -shwxzfjpyzc-tencentclb.work -shwyky.net -shwzjt.com -shwzoo.com -shwzsh.com -shxaby.com -shxayy.com -shxbe.com -shxcj.com -shxcoal.com -shxdnt.com -shxgroup.net -shxiaoran.com -shxibank.com -shxibeiquanshe.com -shxichina.com -shxil.com -shxinbodi.com -shxincn.com -shxinhua.net -shxinping.net -shxjkjt.com -shxjycqxx.com -shxkyy.com -shxlpe.com -shxmbzcl.com -shxmhjs.com -shxnetwork.com -shxrcw.com -shxrmtzx.com -shxrmyy.com -shxseer.com -shxsj.com -shxsjedu.com -shxuanming.net -shxuou.com -shxwcb.com -shxxyun.com -shxy.net -shxyou.com -shyahs.com -shyanke.com -shyanpu.com -shyaoxu.com -shyclouds.net -shycqf.com -shydjscl.com -shydxsy.com -shyestar.com -shyfci.com -shygdz.com -shyhgj.com -shyhhema.com -shyihuoh.com -shyingt.asia -shyirijian.com -shyisai.com -shykx.com -shykz123456.com -shylwlkj.com -shymhk.com -shyndec.com -shyongci.com -shyongwo.com -shyongzeng.com -shyouai.com -shyoudao.com -shyouhuan.com -shyouth.net -shypzx.com -shyrcb.com -shyrcw.com -shyrcw.net -shyrjt.com -shysjt.com -shyuanye.com -shyueai.com -shyueyanghospital.com -shyuhuankj.com -shyumin.net -shyuwl.com -shyuzhai.com -shywly.com -shyx-bio.com -shyxhy.com -shyxi5.com -shyxwz.com -shyy6688.com -shyygh.com -shyyp.net -shyywz.com -shyyy.com -shyyyl.com -shyz07.com -shyzj.com -shyzjsxh.com -shyzsd.com -shzaiguan.com -shzbc.com -shzbh.com -shzbkj.com -shzch12333.com -shzf.com -shzfsy.com -shzfzz.net -shzgauto.com -shzgd.org -shzgt56.com -shzh.net -shzhanling.com -shzhanmeng.com -shzhiyingedu.com -shzhongru.com -shzhuran.com -shzhyx.com -shziyi.com -shzjy.com -shzkb.com -shzkbc.com -shzkbj.com -shzkie.com -shzksg.com -shzkvalve.com -shzkw.org -shzm.org -shzq.com -shzrx.com -shzs2013.com -shzsgroup.com -shzsun.com -shzuibaichi.com -shzunma.com -shzxkq.com -shzychem.com -shzymp.com -shzytzj.com -shzyw.com -shzzks.com -si-bao.com -si-en.com -si-era.com -si-in.com -si-win.com -si.cdn.dell.com -sia1995.net -siad-c.com -siaedu.net -sialiagames.com.tw -siam.org -sian.cc -siaoao.com -sias-sha.com -siasun.com -siasuncare.com -sibangde.com -sibfi.com -sibida.net -sibinwave.com -sibojin.com -sibpt.com -sibuzyn.com -sic8d.net -sicarrier.com -sicc.cc -sicent.com -sicheng.net -sicher-elevator.com -sichuan163.com -sichuanair.com -sichuanbh.com -sichuanbojiesports.com -sichuancancer.org -sichuangwy.org -sichuannpo.com -sichuanyunzhan.com -sichw.com -siciciyu.com -sicimano.com -sickcn.com -sicosemi.com -sicreat.com -sidande.com -sidike.com -sidlgroup.com -sidri.com -sidvc.com -siec-ccpit.com -siengine.com -sienwater.com -sieredu.com -sieryun.com -sif.com -sifalu.com -sifang123.com -sifangbazhu.tech -sifangclub.com -sifanggroup.com -sifangoa.com -sifangvideo.com -sifary.com -sifayun.com -siff.com -sifky.com -sifou.com -sig-am.com -sigachem.com -sigas-group.com -sigchina.com -sightp.com -siglent.com -siglff.com -sigmachip.com -sigmamed.net -sigmastarsemi.com -sigmoblive.com -sign-say.com -signage911.com -signcc.com -signdo.com -signinpod.com -sigujian.com -sihai-inc.com -sihaidj.com -sihaigongkao.com -sihaishuyuan.com -sihaitv.com -siheal.com -sihociho.com -sihonghui.com -sihongjob.com -sihongxian.com -sihoo.com -sihotels.com -sihuanpharm.com -sihui-electric.com -sihuisoft.com -sihuixiqu.com -sihuiyiliao.com -sihuizhongyi.com -siia-sh.com -siicenv-wuhan.com -siicfl.com -siicshc.com -siii.xyz -siilu.com -siitad.com -siixu.com -sijiaomao.com -sijijun.com -sijinchuanbo.com -sijiwater.com -sijiweinong.com -sikantech.com -sikem.net -sikiedu.com -sikuwu.com -sikuyun.net -silanggame.com -sildyn.com -sileadinc.com -silenceper.com -silexmicro.com -silianmall.com -siliansensor.com -siliantecai.com -siliaobaba.com -siliaokelijixie.com -silicon-magic.com -siliconchina.org -silicongo.com -siliconvisionlabs.com -silikron.com -silinchen.com -siling.com -silingge.com -silique.com -silkpresent.com -silkroad-ec.com -silkroad24.com -silkroadtechnologies.com -silkroddream.com -silktrek.com -sillumin.com -sillydong.com -siloon.com -silucar.com -silucg.com -siludao.com -siluecai.com -siluke.cc -siluke.info -silukex.com -siluwu.com -sim800.com -simaek.com -simagic.com -simaguo.com -simanuo.com -simat-sh.com -simbajs.com -simcere.com -simcgroup.com -simchip.com -simcolux.com -simcom.com -simcomm2m.com -simcu.com -simei.cc -simei.vip -simei8.com -simengqifu.com -simglo.com -simhaoka.com -simiam.com -simici3.com -simicloud.com -simij.com -simiki.org -simingkuai.com -simingtang.com -simkeway.com -simmtime.com -simochina.com -simon96.online -simope.com -simp.red -simperfect.com -simplecreator.net -simpledatas.com -simplexue.com -simpread.pro -simsci.net -simu-tech.com -simu800.com -simul-china.com -simullink.com -simulway.com -simuwang.com -simwe.com -simxhs.com -sin-jiang-law.com -sin0sites.com -sina-cf.com -sina.com -sina.lt -sina.net -sinaapp.com -sinacdn.com -sinacloud.com -sinacloud.net -sinadaxue.com -sinaedge.com -sinaemc.com -sinaft.com -sinaimg.com -sinajs.com -sinalog.com -sinaluming.com -sinan.fun -sinanet.com -sinanode.com -sinanya.com -sinaquyong.com -sinas3.com -sinas3.net -sinashow.com -sinastorage.com -sinasws.com -sinauda.com -sinawf.com -sinbam.com -sincetech.com -sincetimes.com -sinct.com -sindsun.com -sinepharm.com -sinereal.com -sinesafe.com -sinesemi.com -sineva-robot.com -sineva.com -sinf-test.net -sinf.net -sinflb.net -sinforcon.com -sinfotek.com -singaporepaya.com -singbon.com -singchy.com -singdown.com -singfosolar.com -singfun.com -singhead.com -singlecool.com -singmaan.com -singoo.cc -singpao.com -singse.com -singsun.net -singtaonet.com -singtown.com -singularity-ai.com -singularmedical.net -singulato.com -singworld.net -sinictek.com -sinitek.com -sinldo.com -sinlu.net -sinmeng.com -sino-agri.com -sino-composite.com -sino-corrugated.com -sino-cr.com -sino-customs.com -sino-epa.com -sino-flexography.com -sino-foldingcarton.com -sino-gps.com -sino-heavymach.com -sino-info.net -sino-kor.com -sino-life.com -sino-manager.com -sino-pharm.com -sino-pigment.com -sino-sfcc.com -sino-tcm.com -sino-trading.com -sino-training.com -sino-web.net -sinoagentsh.com -sinoancher.com -sinoaqr.com -sinoaquafilter.com -sinoassist.com -sinoassistance.com -sinobaron.com -sinobasalt.com -sinobasedm.com -sinobel.com -sinobestbio.com -sinobo.com -sinobp.com -sinobrook.com -sinocache.net -sinocare.com -sinocars.com -sinocax.com -sinochem-guangdong.com -sinochem-zhfl.com -sinochem.com -sinochemb2c.com -sinochemehc.com -sinochemintl.com -sinochemitc.com -sinochemjiangsu.com -sinochemoilmarketing.com -sinochempharma.com -sinochip.net -sinoclick.com -sinocoalchem.com -sinocopy.com -sinodh.com -sinodingcheng.com -sinodis.com -sinodrive.com -sinoec.net -sinoevin.com -sinofarm.net -sinofo.com -sinofo.group -sinofusite.com -sinog2c.com -sinogeo.com -sinoglorygroup.com -sinogslb.com -sinogslb.net -sinogt.com -sinohb.com -sinohotel.com -sinohowe.com -sinohsc.com -sinohx.com -sinohydro.com -sinoid.com -sinoinfosec.com -sinoing.net -sinoinnovel.com -sinoins.com -sinointeractive.com -sinoiov.com -sinokap.com -sinolease.com -sinolinchem.com -sinolinchemintl.com -sinolines.com -sinolion.net -sinologyinstitute.com -sinolub.com -sinolube.com -sinoluhong.com -sinoma-suzhou.com -sinomach-auto.com -sinomachint.com -sinomags.com -sinomapping.com -sinomaps.com -sinomatech.com -sinomatin.com -sinomcu.com -sinomep.com -sinonet.org -sinonsh.com -sinontech.com -sinoo.cc -sinooceangroup.com -sinooceanland.com -sinopatho.com -sinopec-usa.com -sinopec.com -sinopecgroup.com -sinopecgx.com -sinopechyzx.com -sinopecnews.com -sinopecpay.com -sinopecsales.com -sinopecsenmeifj.com -sinopharm-fj.com -sinopharm-fl.com -sinopharm-gz.com -sinopharm-henan.com -sinopharm.com -sinopharmdbj.com -sinopharmholding.com -sinopharmhospital.com -sinopharmintl.com -sinopharmlrt.com -sinopharmsx.com -sinopharmzl.com -sinophex.com -sinopipevalve.com -sinopont.com -sinopr.org -sinoprinterparts.com -sinoqy.com -sinorda.com -sinoreagent.com -sinort.com -sinorusfocus.com -sinorussian21st.org -sinosam.com -sinoshan.com -sinosig.com -sinosilica.com -sinosms.com -sinoss.com -sinoss.net -sinostargroup.com -sinosteel.com -sinosun.com -sinosuntop.com -sinotau.com -sinotechline.com -sinotf.com -sinotide.com -sinotn.com -sinotone.net -sinotph.com -sinotrans.com -sinotruk.com -sinotrukinternational.com -sinotrust-group.com -sinoturning.com -sinovale.com -sinovast.com -sinovatech.com -sinovatio.com -sinovationmed.com -sinovationventures.com -sinovel.com -sinovoice.com -sinowaycarbon.com -sinowbs.com -sinowbs.org -sinowealth.com -sinowealth.com.hk -sinowel.com -sinowheelbarrow.com -sinowinfiber.com -sinoxk.com -sinoxlube.com -sinozhongyuan.com -sinozoc-ex.com -sinreweb.com -sinrey.com -sinro.com -sinsam.com -sinsche.com -sintaho.com -sintaytour.com -sintien.com -sintoacct.com -sintu.com -sinture.com -sinvofund.com -sinvta.com -sinyoung.site -sinyuan.com -sinyuee.com -sinzk.com -siobp.com -siomxity.com -siomxity.net -siozqkt.com -sipai.com -sipaphoto.com -sipatsaw.com -sipcdc.com -sipco.com -sipedu.net -sipedu.org -sipeed.com -sipgl-lcl.com -sipgzct.com -siphrd.com -sipingseo.com -sipmsg.com -sipo-sc.com -siposchina.com -sipprh.com -sipujy.com -sipurd.com -siqiangame.com -siqiquan.org -sique.com -sir3.com -sir66.com -siranbio.com -sireda.com -sirenyouxiang.com -sirfang.com -siryin.com -siscantech.com -siscmag.com -sisder.com -sisdown.com -sisen.com -sisensing.com -sishui123.com -sishuojixie.com -sishuok.com -sishuxuefu.com -sisi-smu.org -sisigad.com -sisijiyi.com -sisp-china.com -sissiok.com -sisuts.com -siswin.com -sitande.com -sitangtech.com -sitc.com -site-digger.com -site119.com -siteapp-static.com -sitejiu.com -sitekc.com -siteonlinetest.com -sithc.com -sitiaoyu.com -sitobiotech.com -sitong.net -sitongedu.org -sitongzixun.com -sitrigroup.com -sitronics-sh.com -situdata.com -siud.com -sivlab.com -siwaman.com -siweidaotu.com -siweiearth.com -siweikongjian.net -siweiw.com -siwuprint.com -six.club -sixflower.com -sixianchina.com -sixiang.im -sixianggangyin.com -sixiju.com -sixjoy.com -sixstaredu.com -sixu.life -sixue.tech -sixuexiazai.com -sixunited.com -siyanhui.com -siyetian.com -siyi007.com -siyrcw.com -siyuan.cc -siyuan.me -siyuanedu.com -siyuanren.com -siyuanyl.com -siyunyatwo.com -siyuweb.com -sizebid.com -sizeofvoid.net -sizuo.com -sj-airpurge.com -sj-hospital.org -sj-lawyer.com -sj-marathon.com -sj-tmdi.com -sj0763.com -sj123.com -sj33.net -sj3g.com -sj51.net -sj6rgxtjg3tmb.com -sj998.com -sjawards.com -sjaz.com -sjbutton.com -sjbyj.com -sjcamzone.cc -sjcomic.com -sjcybz.com -sjdongwang.com -sjdzp.com -sjdzp.net -sjebh.com -sjetdz.com -sjf029.com -sjfcdn.com -sjfh168.com -sjfpro.com -sjfzxm.com -sjg8.com -sjgle.com -sjgo365.com -sjgrm.com -sjgskaipiao.com -sjhcip.com -sjhfkhgut009.com -sjhfrj.com -sjhgo.com -sjhl.cc -sjhoffice.com -sjhong.net -sjhuatong.com -sjhy.net -sjhykt.com -sjizx.com -sjjob88.com -sjjt001.com -sjjzm.com -sjkj.net -sjlbearing.com -sjlexpress.com -sjlgc.com -sjlhlawyer.com -sjlvyou.com -sjm-zdh.com -sjm.life -sjmao.net -sjmdh.com -sjmeigao.com -sjmp3.com -sjmwsw.com -sjmxx.com -sjono.com -sjooo.com -sjpif.net -sjpjyx.com -sjq315.com -sjqcj.com -sjqmtlm.com -sjrwzz.com -sjsbk.com -sjsei.com -sjsgdzx.com -sjsheji.com -sjsrm.com -sjsydq.com -sjszt.com -sjtickettech.com -sjtm.me -sjtug.org -sjtusummer.org -sjtxt.com -sjtxt.la -sjtype.com -sjvi.net -sjwec-tencentclb.cloud -sjwec-tencentclb.com -sjwec-tencentclb.net -sjwec-tencentclb.work -sjwj.com -sjwl.xyz -sjwt.net -sjwtlm.com -sjwx.info -sjwxzy.com -sjwyx.com -sjxinxiwang.com -sjxqn.com -sjxs.la -sjxtcw.com -sjxydc.com -sjxyit.com -sjxysec.com -sjxyx.com -sjxzc.com -sjy-art.org -sjy2.com -sjycbl.com -sjyhotel.com -sjyl.com -sjysz.com -sjyt.net -sjytech.com -sjyx.com -sjyybz.com -sjyyt.com -sjyyy.com -sjz-marathon.com -sjz.cc -sjz110.cc -sjz44z.com -sjz7.com -sjzbasha.com -sjzbwx.com -sjzcfjd.com -sjzcmw.com -sjzdongya.com -sjzdt56.com -sjzez.com -sjzfeitai.com -sjzfls.com -sjzgxwl.com -sjzhr.com -sjzhushou.com -sjzjifeng.com -sjzjinliulin.com -sjzjkqgs.com -sjzjtjt.com -sjzkz.com -sjzlg.com -sjzlgz.com -sjzmama.com -sjznuanjieks.com -sjzonline.com -sjzqcrl.com -sjzrbapp.com -sjzrmyz.com -sjzshunbang.com -sjzslnyhy.com -sjzswtz.com -sjzszz.com -sjztd.com -sjzthdz.com -sjzxfy.com -sjzxh.com -sjzxtsh.com -sjzxyy.com -sjzyb.com -sjzyes.com -sjzys.com -sjzysdz.com -sjzysgz.com -sjzyxh.com -sjzyz.net -sjzzbxh.com -sjzzxmm.com -sjzzyy.com -sk163.com -sk1999.com -sk1z.com -sk2w.net -skatehere.com -skcto.com -skd6.com -skd62.com -skdj5.com -skdlabs.com -ske.cc -skeo.net -sketchcn.com -sketchupbar.com -sketchupbbs.com -skf-bearing.net -skg.com -skhb.com -skidstorm.com -skieer.com -skimit.net -skinjc.com -skinme.cc -skinpp.com -skip-links.com -skjcsc.com -skland.com -skldoor.com -sklinux.com -skmgc.com -sknbj.com -skomart.com -skongmx.com -skp-beijing.com -skpssz.com -skrskrskrskr.com -sksdwl.com -sksight.com -skslfd.com -skstravel.com -skswz.com -sktcdn.com -sktecfibre.com -sktfaker.com -skuking.com -skusoft.com -skwfls.com -skxox.com -skxsj.com -sky-deep.com -sky-fire.com -sky-ing.com -sky-mobi.com -sky123th.com -sky1shop.com -sky350.com -skyai.tech -skyallhere.com -skyao.io -skyapp1.tv -skyard.com -skyart.site -skybility.com -skybluek.com -skybogroup.com -skybright-group.com -skycaiji.com -skycedu.com -skycham.com -skycloudsoftware.com -skycn.com -skycn.net -skycnc.com -skycoleasing.com -skycorp.com -skydodi.com -skydust.net -skyeaglee.com -skyecs.com -skyee360.com -skyfeather.online -skyfollowsnow.pro -skyfont.com -skyfox.org -skyhand.vip -skyheng.com -skyislets.com -skyleon.com -skylerzhang.com -skymoons.com -skymoons.net -skymp4.cc -skynan.com -skynicecity.com -skynj.com -skype-china.net -skype-tom.com -skypixel.com -skypuretech.com -skyray-instrument.com -skyray-water.com -skyrelay-ic.com -skyrichpower.com -skyrivers.org -skyrj.com -skysea.com -skysgame.com -skysriver.com -skysrt.com -skyton123.com -skyts.net -skytv.cc -skyue.com -skyw.cc -skywalkeryacht.com -skywavewifi.com -skywek.com -skywellcorp.com -skywldh.com -skywork.ai -skyworkcdn.com -skyworth-ac.com -skyworth-cloud.com -skyworth-ea.com -skyworth.com -skyworthbox.com -skyworthdigital.com -skyworthdigitaliot.com -skyworthds.com -skyworthev.com -skyworthiot.com -skyworthlighting.com -skyworthnj.com -skyworthznxyj.com -skyxinli.com -skyyin.org -skyzhan.com -skznsb.com -sl.al -sl.fun -sl512.com -sl916.com -sl91d.com -slaccas.com -slagta.com -slaidor.com -slamtec.com -slanissue.com -slanmedia.com -slashdevslashnetslashtun.net -slatic.net -slbauto.com -slbiop.com -slcad.com -slchos.com -slcyber.icu -sldhc.com -sldns1.com -slduntong.com -sle.group -sleele.com -sleepboy.com -slegetank.com -slengy.com -slertness.com -sleton.com -slfwakuang.com -slfwq.com -slgegc.com -slhwyy.com -slicejobs.com -slicercn.com -slingbearings.com -slink8.com -slinli.com -slinuxer.com -sliun.com -slive.ytn.co.kr -slja2.com -sljob88.com -slk1.net -slkg1949.com -sllai.com -sllngy.com -sllssrq.com -slodon.net -sloer.com -slofdoro.com -slogra.com -slot-china.com -slot4.net -slovakia-visacenter.com -slovenia-visacenter.com -slowdark.com -slpi1.com -slpm.net -slpmg.com -slrbs.com -slreactor.com -slready.com -slshareservices.com -slspcn.com -slssx.com -slsteel.com -slswd.com -slswx7.com -sltg2019.com -sltgj.com -slthxx.com -sltv.net -sltxantonline.com -sluyu.com -slwh-dfh.com -slwwedding.com -slybjp.com -slyld.com -slyxmobi.com -slzsxx.com -slzww.com -sm-check.com -sm-cq.com -sm-main.com -sm.dell.com -sm0.fun -sm160.com -sm160.net -sm3s.com -sm597.com -sm96596.com -small-master.com -smallfighter.com -smalljun.com -smallpdfer.com -smallyuan.com -smarch.com -smarchit.com -smart-hengdi.com -smart-idc.net -smart-ptt.com -smart-rise.com -smart.com -smart.uhdnow.com -smart2pay.com -smart365ol.com -smart400.com -smartautoclub.com -smartbgp.com -smartcar.zone -smartcarrace.com -smartchn.com -smartcity.team -smartcitysz.com -smartcloudcon.com -smartcom.cc -smartdeep.com -smartdot.com -smartedm.com -smarteredu.net -smartermicro.com -smartgaga.com -smarthey.com -smarthomecn.com -smarthuayan.com -smartisan.com -smartisanos.com -smartisantv.com -smartjoygames.com -smartlifein.com -smartlinkio.com -smartlinku.com -smartmapx.com -smartmidea.net -smartmore.com -smartoct.com -smartont.net -smartpigai.com -smartpoweriot.com -smartqilu.net -smartroomcn.com -smarts-isoftstone.com -smartsenstech.com -smartshotblasting.com -smartsteps.com -smartstudy.com -smarttaixing.com -smartwebee.com -smartx-cn.com -smartx.com -smartxiantao.com -smartyao.com -smartyoke.com -smartyun8.com -smartzzx.com -smarun.com -smaryun.com -smasmj.com -smaty.net -smb956101.com -smbinn.com -smbxw.com -smc18.com -smc3s.com -smcalia.com -smcalib.com -smcec.com -smcic.net -smcsrj.com -smd-automation.com -smd88.com -smdcn.net -smdiban.net -smdmark.com -smdx.net -smdxx.com -sme-cn.com -sme8718.com -smebb.com -smec-cn.com -smedi.com -smei.net -smeia.net -smeiic.com -smemo.info -smeok.com -smetumen.com -smf1888.com -smfsgs.com -smfyun.com -smgpt.com -smgstar.com -smgstv.com -smgtech.net -smhsw.com -smhyplay.com -smianao.com -smianet.com -smic-sh.com -smicc.com -smicrobe.com -smics.com -smil888.com -smile2012.com -smileangelfoundation.org -smilec.cc -smilefil.com -smileyan.com -smilingwhitebear.com -smithcn.com -smjstcy.com -smkeji.com -smkgc.com -smkmake.com -smknow.com -smkxyjy.com -smlaw8.com -smlqcl.com -smmc.com -smmiki.com -smo-clinplus.com -smo-software.com -smoba.net -smobird.cc -smogfly.cloud -smogfly.club -smogfly.com -smogfly.net -smogflycloud.com -smogflycloud.net -smohan.net -smoothgroup.cc -smoreroll.com -smovie168.com -smowo.com -smpg888.com -smppw.com -smq.ltd -smqh.com -smrmyy.com -sms.imagetasks.com -sms18.com -sms9.net -smsbao.com -smshos.com -smshx.com -smskb.com -smslk1.com -smslk2.com -smslkcoffee.com -smsot.com -smsvifv.com -smswgy.com -smswriter.com -smsyun.cc -smt-dip.com -smt.net -smt2000.com -smtcdn.com -smtcdns.com -smtcdns.net -smtchinamag.com -smtcl.com -smtdc.com -smtdwx.com -smthome.net -smtphub.org -smtro.com -smtsmt.com -smtso.com -smtsvs.com -smttouch.com -smtukuzy.com -smtul.com -smtvip.com -smtw.com -smtworld.com -smudc.com -smuszh.com -smuszsh.com -smvip8.com -smwd.tech -smxdiy.com -smxgjj.com -smxin.com -smxrcw.net -smxs.com -smxyi.com -smxzls.com -smyfinancial.com -smyhvae.com -smynn.com -smyx.net -smyxxj.com -smyyhj.com -smyyulin.com -smyz.net -smzdm.com -smzdmimg.com -smzdwan.com -smzhongran.com -smzjy.cc -smzrmyy.com -smzsffb.com -smzy.com -sn-epe.com -sn12333.com -sn180.com -sn511.com -snack-show.com -snai.edu -snail.com -snail007.com -snailgame.net -snailovet.com -snailshub.com -snailsleep.net -snailyun.com -snap-buy.com -snapany.com -snapdrop.net -snapemoji.net -snapgenshin.com -snaplabdevelop.com -snapp.ir -snapp.site -snapp.taxi -snappcloud.io -snappea.com -snapplay.com -snappmaps.ir -snaptube.app -snbcnyjt.com -snbiopharm.com -snbkf34.com -sncoda.com -snctaa.com -snd-cia.com -snd-cn.com -snd-stig.com -snd-yy.com -snda.com -sndcc.cc -sndgroup.com -sndhr.com -sndks.com -sndnt.com -sndo.com -sndvc.com -sndzrg0.org -sneac.com -sneb3.com -snedu.com -sneducloud.com -sneia.org -snfic.com -snfox.com -snfzsw.com -sngct.com -snh48.com -snhere.com -snhrm.com -snibe.com -sniec.net -snieri.com -snimay.com -sniuw.com -snjairport.com -snjbs.com -snjjiu.com -snjt.com -snkhome.com -snkjol.com -snkshoe.com -snkyat.com -snltty.com -snlxgk.com -snmandarin.com -snmi.com -snmxzls.com -snoba.net -snobten.com -snodehome.com -snoone.com -snor-china.com -snowballfinance.com -snowballsecurities.com -snowballtech.com -snowbeasts.com -snowdream.tech -snowflake.pink -snowkey.com -snowlotusgroup.com -snowyimall.com -snp.cdn.dell.com -snpi.dell.com -snps.tech -snptc.com -snrat.com -snren.com -snrtv.com -snrunning.com -sns-china.com -snscz.com -snsfun.cc -snsfun.com -snsggzy.com -snsii.com -snsnb.com -snsqw.com -snsyhg.com -snsyx.com -sntba.com -snto.com -snupg.com -snv1.com -snwx.com -snxw.com -snycloud.com -snynas.com -snzhao.com -snzhny.com -snzsxh.com -so.car -so.com -so03290koaq.com -so03300koaq.com -so04060koaq.com -so04061koaq.com -so123.com -so126.com -so50.com -so666gslb.com -so8848.com -soapphoto.com -soar-chem.com -soargift.com -soarwatch.com -soaryoof.com -soauto.com -sobaidupan.com -sobereva.com -sobeycache.com -sobeycloud.com -sobeylingyun.com -sobeylive.com -sobili.com -sobone.com -sobot.com -sobot.io -soboten.com -sobute.com -socang.com -socay.com -soccerbar.cc -socchina.net -soche8.com -sochengyi.com -sochips.com -socialark.net -socialbasecustomercontent.com -socialbaseusercontent.com -socialbeta.com -socialgongz-edu.com -socialjia.com -socialpls.com -socite.com -socket.tw -socolar.com -socomic.com -socool-tech.com -socoologo.com -socotton.com -socpk.com -sodajs.org -sodalife.xyz -sodamc.com -sodao.com -sodasoccer.com -sodayang.com -sodc8.com -sodexo-cn.com -sodig.com -sodino.com -sodion.net -sodocloud.com -sody123.com -soeasysdk.com -soeo.net -sofa-webbing.com -sofabiao.com -sofan.one -sofang.com -sofangche.com -sofasofa.io -sofastack.tech -sofeiya.net -sofi-tech.com -sofoo.com -sofreight.com -soft128.com -soft2005.com -soft50.com -soft5566.com -soft568.com -soft6.com -soft778.com -soft8.net -soft808.com -soft8899.com -softabc.com -softbank.best -softbanks.net -softbar.com -softbingo.net -softdownd.com -softgostop.com -softhome.cc -softjinzhou.com -softmall.net -softrobottech.com -softscdn.com -softsz.com -softtest.com -software.download.prss.microsoft.com -softwarechn.com -softwarecn.com -softweek.net -softwhy.com -softwincn.com -softworker.com -sofujinyu.com -sofun.com -sogaa.net -sogalqd.com -sogaokao.com -sogeche.com -sogo.com -sogoke.com -sogood360.com -sogou-compress.com -sogou-diskmgr.com -sogou-inc.com -sogou-inner.com -sogou-kantu-pic.com -sogou-kantu.com -sogou-op.org -sogou-pdf.com -sogou-wallpaper.com -sogou.com -sogou.net -sogoucdn.com -sogoucdndl.com -sogouimecdn.com -sogouw.com -sogowan.com -sogw.cc -soharp.com -soho-yiming.com -soho3q.com -soho8.net -sohoblink.com -sohochina.com -sohodd.com -sohonow.com -sohotask.com -sohu-inc.com -sohu.com -sohu.net -sohuapps.com -sohucao.duapp.com -sohucs.com -sohuhistory.com -sohuiw.com -sohumail.com -sohunjug.com -sohuns.com -sohuora.com -sohurdc.com -sohusce.com -sohuu.com -soicp.com -sojex.net -sojiang.com -sojiang.net -sojianli.com -sojixun.com -sojiyin.com -sojoline.com -sojson.com -sojump.com -soke17.com -soken-sz.com -sokoban.ws -soku.com -sokuba.com -sokutu.com -sokyotw.com -solaking.com -solanyun.com -solar-engine.com -solarbao.com -solarbe.com -solarbio.com -solarcare.com -solarchin.com -solareast.com -solarf.net -solaridc.com -solarspace.com -solarzoom.com -solasmat.com -soldeazy.com -soldierstory-toys.com -solelybio.com -solepic.com -soletower.com -soliao.com -solidigm-asdf.com -solidigm-zxcv.com -solidot.org -solidstatelion.com -soliner.com -solipharma.com -solo-launcher.com -solochex.com -soloknight.xyz -solomath.com -solooncontrols.com -solosea.com -solotoon.com -solove.design -solution9.net -solvyou.com -som88.net -somacisgraphic.hk -somama.com -somamobi.com -somd5.com -somdom.com -someabcd.com -somenchina.com -somenmian.com -someonegao.com -something8.com -sometracking.com -somo.so -somode.com -somsds.com -sonbest.com -soncci.com -songcn.com -songcwh.com -songduwuye.com -songfeng.com -songguike.com -songguo.com -songguo7.com -songguojiankang.com -songhaifeng.com -songhaoyun.com -songhaozhi.com -songhengnet.com -songhualan.com -songhuwan.com -songjiangjituan.com -songker.com -songlei.net -songlicnc.com -songma.com -songmaogroup.com -songmiao.net -songqinnet.com -songshanlab.com -songshitang.com -songshizhao.com -songshuai.com -songshudiandian.com -songshuhui.net -songshui51.com -songshujiedan.com -songshushuo.com -songshuyouxi.com -songsongruanwen.com -songsongyingxiao.com -songsongyun.com -songtaox.com -songtasty.com -songtianlube.com -songtsam.com -songwang168.com -songxiang168.com -songxiaocai.com -songxiaojin.com -songxing.net -songyang.net -songyangcn.com -songyanjiaye.com -songyi.net -songyongzhi.com -songyuan163.com -songyuan58.com -songyuanlove.com -songyuanshuisi.com -songzhaopian.com -songzhiyong.com -songzi100.com -songziren.com -songzixian.com -sonhoo.com -sonhoshin.com -sonicmodel.net -sonicrhino.cc -soniu.net -sonkwo.com -sonkwo.hk -sonoscapebrasil.com -sonoschina.com -sontan.net -sony.com -sonybbs.com -sonyentertainmentnetwork.com -sonyong.com -sonyselect.net -soo56.com -sooal.com -sooauto.com -soocang.com -soochowchem.com -soocor.com -sooele.com -soofel.com -soogf.com -soogif.com -soohaid.com -soojs.com -sooker.com -soolinen.com -soolou.net -soolun.com -soomal.com -soon.guru -soonku.net -soonv.com -soonwill.com -soonyo.com -sooopu.com -soopat.com -soopay.net -sooroo.com -sooshong.com -sooshu.net -soosmart.com -soosox.com -sootmoor.com -sootoo.com -sootool.net -soovalve.com -soovvi.com -sooxie.com -sooxue.com -sooyooj.com -soozhu.com -soozhuozhou.com -sopaidea.com -sophgo.com -sophgo.vip -sophnet.com -sopic.org -sopowcore.net -soq.com -soqicrm.com -soqqq.com -soquano.com -sorftime.com -soripan.net -sorswitch.com -sortdoor.com -sos919.com -sosaf.com -sosdx.com -sosg.net -soship.com -soshoo.com -soso.com -sosoba.org -sosobtc.com -sosoled.com -sosolight.com -sosomp.com -sosonc.com -sosonsk.com -sosoo.net -sosorank.com -sososnap.com -sososteel.com -sosotec.com -sosoyunpan.com -sosoyy.com -sosuo.name -sosyao.com -sotake.com -sotemall.com -sothink.com -sotongwang.com -sotouv.com -sotoy.net -sotu114.com -sotwm.com -sou-yun.com -sou.com -souaiche.com -souajki.com -souajki.net -soubao.net -soucai.com -soucangjie.com -souche-fin.com -souche-inc.com -souche.com -soucod.com -soudao.com -soudoc.com -soudron.com -souduanzu.com -soueast-motor.com -souebao.com -soufair.com -soufang.com -soufang998.com -soufun.com -soufunimg.com -souge.cc -souget.com -sougou.com -sougu001.com -souha.net -souho.cc -souho.net -souidc.com -souidc.org -soukecheng.net -soukuyou.com -soulapp.me -soulgame.mobi -soulsky.net -soulu365.com -souluo.net -souluojie.com -souluopai.com -soulwonderland.com -sound-force.com -soundai.info -soundconch.com -soundems.com -soundgroup.com -soundnybio.com -soundpeats.com -soundstay.com -soupan.info -soupf.net -soupin.com -soupingguo.com -soupu.com -soupv.com -souqian.com -souqiantu.com -souqiu8.com -sour-lemon.com -source.tutorabc.com -source3g.com -sourcecodebeat.com -sourcecodecap.com -sourcecodeserver.com -sourcegcdn.com -sourcelandchina.com -sousea.com -soushai.com -soushoubiao.com -sousou.com -sousou.pro -sousoudus.com -sousuoshidai.com -sousuotu.com -southbeauty.com -southbeautygroup.com -southchip.com -southcn.com -southei.com -southernfund.com -southernmindict.net -southernpec.com -southgis.com -southmoney.com -southnews.cc -southnews.net -southseagy.com -southsurvey.com -southyule.com -soutiyun.com -soutu123.com -soutudi.so -soutushenqi.com -souvi.com -souvr.com -souwuxing.com -souxia.com -souxue8.com -souxuexiao.com -souxw.com -souya.com -souyidai.com -souyue.mobi -souyue.vip -souyunku.com -souyute.com -souziti.com -sov2ex.com -sovell.com -soven.com -sowang.com -soweather.com -sowellwell.com -sowin.com -sowotech.com -sowu.com -soxpai.com -soxyc.com -soya-protein.com -soyim.com -soyixia.net -soyiyuan.com -soyjg.com -soyo-dg.com -soyohui.com -soyoung.com -soyouso.com -soyunion.com -soyx123.com -sozdata.com -sozhe.com -sozhen.com -sozyb.com -sozyx.shop -sp.cc -sp168.com -sp588.cc -sp588.net -sp888.net -sp910.com -space1688.com -spacechina.com -spaceestar.com -spacei.net -spacemit.com -spacesystech.com -spacety.com -spamc.com -spanishknow.com -sparenode.com -spark-page.com -spark-page0.com -spark-page1.com -spark-page2.com -spark-page3.com -spark-page4.com -spark-page5.com -spark-page6.com -spark-page7.com -spark-page8.com -spark-page9.com -spark4y.com -sparkeduapi.com -sparkeducdn.com -sparkgis.com -sparkletour.com -spasvo.com -spawor.com -spay365.com -spbao.com -spbo.com -spbycdn.biz -spbycdn.com -spbycdn.info -spc365.com -spcc-cn.com -spcc-silk.com -spccmc.com -spcdntip.com -spcdntipbak.com -spcloudhw.com -spcloudhw.net -spcywang.com -spdbh5.com -spdbuser.com -spdcat.com -spdex.com -spdiy.com -spdl.com -spdydns.com -spdyidea.com -specchemind.com -specialcdnstatus.com -spectorfilm.com -sped-ssss-pppp-eeee-dddd.com -speechless.pw -speed-hz.com -speedaf.com -speedcdns.com -speedcdns.info -speedcdns.org -speedcdnsvip.com -speedin.shop -speedmanager.net -speednt.com -speedpdf.com -speedsz.net -speedws.com -speedws.info -speedws.org -speedzonerc.com -speiyou.com -sperogenix.com -spfbiotech.com -spforum.net -spfosd.com -spg-ls.com -spgacmotorsc.com -spgcw.com -spgykj.com -sph00852.com -sphcchina.com -sphchina.com -sphkids.com -sphmc.org -sphsine.com -spibj.com -spic-coalcg.com -spiccq.com -spicescn.com -spicezee.com -spicgx.com -spicgxnp.com -spicgz.com -spicjs.com -spiedigitallibrary.org -spiiker.com -spin-view.com -spirithy.com -spischolar.com -spiveytechnologies.com -spiwcn.com -splaybow.com -splayer.work -spldlkj.com -splendecor.com -splmcn.com -spmcn.com -spnchinaren.com -spochikj.com -spoience.com -spointdesign.com -sport-syy.com -sportman.cc -sportnanoapi.com -sportq.com -sports-100.com -sportsdt.com -sporui.com -spoto.net -spotpear.com -spouyashop.com -spph-sx.com -spplnet.com -spprec.com -spr-atm.com -sprayv.com -sprda.org -spreadtrum.com -spreton.com -spring-mall.com -spring4all.com -spring56.com -springairlines.com -springcocoon.com -springer.com -springerlink.com -springpharma.net -springsunday.net -springtour.com -sprint-tech.com -sprixin.com -spsb114.com -spsicloudport.com -spsisctgroup.com -spsisncl.com -spsy.org -sptcc.com -sptccn.com -spthome.com -sptv-1.com -spug.cc -spush.com -spvtime.com -spwj.com -spxgas.net -spyouxi.com -spzb.com -spzp.com -spzs.com -sq-ks.com -sq-newstar.com -sq.cc -sq1996.com -sq23.com -sq521.com -sq523.com -sq580.com -sq581.com -sqa-chn.com -sqage.com -sqchunqiu.com -sqdaily.com -sqeatin.com -sqezz.com -sqfcw.com -sqfgc.com -sqgg.cc -sqggzy.com -sqgwh.com -sqhec.com -sqhx.com -sqis.com -sqj888.com -sqjk123.com -sqjrc.com -sqjsxy.com -sqjt.com -sqjtcy.com -sqkb.com -sqklrq.com -sql110.com -sqlpub.com -sqlsec.com -sqluck.com -sqmarathon.com -sqphb.com -sqpx.org -sqqmall.com -sqqmtj.com -sqqnh.org -sqrc.net -sqrcw.com -sqreader.com -sqrsks.com -sqrtthree.com -sqrush.com -sqs373.com -sqshmzx.net -sqsjt.net -sqstudio.com -sqswjt.com -sqsyy.com -squarecn.com -squarefong.com -squirrelboiler.com -sqwenhua.com -sqxww.com -sqyai.com -sqyhw.com -sqzjg.com -sqzs.com -sqzw.com -sqzyxy.com -sr-139.com -srcb.com -srcbcz.com -srcbeijing.com -srccdn.com -srccdn2.com -srcge.com -srcgsre.com -srcmsh.com -srcqeece.com -sre.ink -srell.com -srfip.com -srgnmsrg.com -srgow.com -sriappalam.com -sribs.com -sric.fun -srichina.org -srici.com -sritsoft.com -srixon-china.com -srlfl.com -srlzzp.com -srmpump.com -srmyy.com -srrcw.com -srrsh.com -srrtvu.com -srschool.net -srslyy.com -srsq.club -srt365.com -srtong.com -srun.com -srvbus.com -srw00.com -srworld.net -srx3.net -srxiayunbusiness.com -srxww.com -srxzz.com -srygz.com -srzc.com -srzdq.com -srzx.com -srzx100.com -srzxjt.com -ss-ceo.com -ss-smartech.com -ss03.net -ss1969.com -ss2007.com -ss246.com -ss256.com -ss28.com -ss8899888.com -ssalegs.store -ssaocorp.com -ssawhotels.com -ssaxx.com -ssaya.win -ssbbww.com -ssbgzzs.com -ssbifen.com -ssbjf.com -ssbjsy.com -ssbx.me -ssby.cc -ssby66.com -ssc-mcc.com -sscanmou.com -sscct.com -sscejia.com -sscha.com -sschengtou.com -sscity.org -sscms.com -sscmwl.com -sscom.vip -ssctp.com -sscy.net -ssdaex.com -ssdata.com -ssdax.com -ssdfans.com -ssdp.com -ssdzg.com -sseinfo.com -ssf.cc -ssfb86.com -ssfei.com -ssffx.com -ssgedm.com -ssgeek.com -ssgsemi.com -ssgz.com -sshce.com -sshr.net -ssia.cc -ssidc.net -ssidc.org -ssine.cc -ssine.ink -ssipex.com -ssis.asia -ssish.com -ssixvo9gaybkp5.com -ssjj2.com -ssjjss.com -ssjjtt.com -ssjlicai.com -ssjljk.com -ssjytc.com -ssjyxx.com -sskc360.com -sskgame.com -sskoo.com -ssky123.com -ssl-zs.cc -sslaaa.com -sslad.com -sslawy.com -sslceshi.com -sslchaoshi.com -sslchina.com -sslcity.com -ssldun.com -ssldun.vip -ssleye.com -sslibrary.com -sslnode.com -sslso.com -ssltgm.com -ssmc-sz.com -ssmchina.org -ssmec.com -ssmedic.com -ssmept.com -ssmys.com -ssmysh.com -ssnewyork.com -ssnm.xyz -ssnuo-ch.com -ssofair.com -ssoffo.com -ssoouu.com -ssp.group -sspaas.com -sspai.com -sspai.me -sspeeddns.com -sspjizb.com -ssports.com -ssports.net -ssptqt.com -ssqgx.com -ssqtt.com -ssqzj.com -ssrcdn.com -ssrcr.com -ssreader.com -ssrjzs.com -ssrlzy.net -sss.wiki -ssscdn.com -sssch.net -ssses.net -ssslgs.com -sssmro.com -sssmy.com -ssso.com -sst-ic.com -sst-sd.com -sst-sz.com -sstlp.com -sswater.com -sswchina.com -sswl315.com -ssws.tv -ssxcycy.com -ssxf.net -ssxjd.com -ssxpxjt.com -ssxx.site -ssxxp.com -ssyapi.com -ssyar.com -ssycw.com -ssydt.com -ssyer.com -ssyssf.com -ssywh.com -ssyxlx.com -ssyxmall.com -ssyzx.net -sszgit.com -sszhg.com -sszjnc.com -sszsj.cc -ssztcm.com -sszxiangce.com -st-jzx.com -st-recovery.com -st001.com -st12121.net -st123.com -st180.com -stacf.com -stachina.org -stackboom.xin -stackcc.com -stackoom.com -stackoverflow.club -stackoverflow.wiki -stage1st.com -stage3rd.com -staginfo.com -staging-controlbe.floonet.goog -staging-databe.floonet.goog -staging.databe.floonet.goog -staidson.com -standard-groups.com -standardcn.com -standardshop.net -standteam.net -stanlyview.com -staofchina.com -stapharma.com -star-charge.com -star-elink.com -star-engine.com -star-kid.com -star-linear.com -star-meeting.com -star-new-material.com -star-pos.com -star-river.com -star365.com -star7game.com -star7th.com -stararc-coating.com -starbaby.cc -starbaby.com -starbaysoft.com -starbrightpet.com -starcharge.com -stardata360.com -starde.net -stardict.org -stardoctor.com -stards.com -stardust2000.com -starduster.me -starfishcloud.com -starfivetech.com -starhalo.mobi -staringos.com -starkai.com -starlakelab.com -starlink.uno -starlu.com -starm.cc -starmily.com -starming.com -starooo.com -starpack-group.com -starpainters.net -starpiao.com -starrails.com -starrevs.com -starrockinvest.com -starrtc.com -starrydyn.com -starryfrp.com -starrymed.com -starrysurvey.com -stars-one.site -starschina.com -starschinalive.com -starscube.com -starsharbor.com -starsino.com -starsmicrosystem.com -starsshine1.com -starsshine2.com -starstech.cc -starswar.org -startcarlife.com -startcatcher.com -startcomca.net -startdt.com -startech.ltd -starting2000.com -startogether1.com -startos.com -startos.org -startssl.com -startup-partner.com -starwarschina.com -starway.net -starwaycomm.com -starworldgames.com -starworldmacau.com -starwsn.com -starxn.com -staryea.com -stat-nba.com -stat08.com -stat18.com -static-login.gog-statics.com -static.cdnetworks.com -static.eprintsw.com -static163.net -staticaa.com -staticdn.net -staticec.com -statickksmg.com -statics.cc -staticsdd.com -staticsoe.com -staticsoem.com -staticswin.com -stationpc.com -stats.ipinyou.com -statsinstall.xyz -statuslarkoffice.com -stay-bullish.com -staybrowser.com -staycu.com -stbieshu.com -stboy.com -stbs100.com -stc2002.com -stcaimcu.com -stcfile.com -stcmcu.com -stcmcudata.com -stcmih.com -stcn.com -stcy168.com -stcyzls.com -stdaily.com -stdard.com -stdicloud.com -stdlibrary.com -stdout.pub -stdwp.com -ste56.com -stea2008.com -steam302.xyz -steambig.com -steamboxs.com -steamcn.com -steamcommunity-a.akamaihd.net -steamdd.com -steamdt.com -steamhost.info -steammm.com -steampp.net -steamproxy.net -steampy.com -steamrepcn.com -steamxdf.com -stec.net -stedu.net -steel-mate.com -steel-spot.com -steeljs.com -steelkey.com -steelphone.com -steelsearcher.com -stefg.org -stegameskins.com -steinberg-cn.com -stelinno.com -stellarplayer.com -stemceltech.com -step-by-step.tech -step-motor.com -stepelectric.com -stepsigriner.com -steriguardmed.com -stfile.com -stgiantfilms.com -sthforme.com -sthfsteel.com -sthifi.com -sthke.com -sthospital.com -sticksgame.com -stjinfa.com -stjinguan.com -stjjxh.com -stkfanli.com -stklt.com -stlb520.com -stmaoyi.com -stmbuy.com -stmjsociety.com -stmybj.com -stnn.cc -stnts.com -sto-express.com -stocke.com -stockhn.com -stockradar.net -stockren.com -stockstar.com -stockwei.com -stointl.com -stojf.com -stone139.com -stone168.com -stone365.com -stonebtb.com -stonebuy.com -stoneios.com -stoneleague.com -stoneo2o.com -stonepoll.com -stonepoll.net -stonescloud.com -stonesm.com -stoneu.com -stonexp.com -stor-age.com -stor-helper.com -storage-asset.msi.com -storcezon.com -store12.com -storeapi.net -storecorefulfillment.download.prss.microsoft.com -storeedge.microsoft.com -storeedgefd.dsx.mp.microsoft.com -storkapp.me -stormorai.com -story520.com -storyboardworld.com -storyren.com -stosolution.com -stourweb.com -stourweb.net -stovol.club -stoyard.com -stozxmveui4pvr.com -stpolice.com -stpos.net -stqiyuan.com -stql.com -stql.org -str-mo.com -straitchain.com -strategy-sight.com -stray-soul.com -stream.dybtv.com -stream.guihet.com -stream.houstonpublicmedia.org -stream.nbbltv.com -stream.rcs.revma.com -stream.superfm99-1.com.tw -stream.sxsztv.com -stream.wbez.org -stream.xctv.news -stream.ysbtv.net -stream.zhystv.com -stream0.tv41.ru -stream01.dqtv123.com -stream1.shopch.jp -stream2.cprnetwork.org -streamax.com -streamaxtech.com -streamcomputing.com -streamipcf.akamaized.net -streamlakeapi.com -streffy.com -strinova.com -strong-light.com -strong-study.com -strongfc.com -strongflc.com -strongled.com -stshuizhi.com -stsmt.com -stssugar.com -stswjx.com -stszcm.com -stt-bearing.com -sttanso.com -sttcq.com -sttry.com -stu-lab.com -stu-works.com -stu51.com -stubbornhuang.com -studa.net -studentboss.com -studioartiz.com -studstu.com -study-cloud.com -study163.com -studyems.com -studyez.com -studyfr.net -studyget.com -studygolang.com -studyingtours.com -studypay.com -studyquicks.com -studytime.xin -studyuser.com -studyvip.com -stuhome.net -stuhui.com -stuky.net -stulip.org -stuliving.com -stuln.com -stunnel.vip -stupid77.com -stupidet.com -stuq.com -sturgeonnews.com -sturmdcp.com -stutimes.com -stvf.com -stvgame.com -stwj.com -stwyxh.com -stxfjs.com -stxsw.com -stylecdn.com -stylechina.com -styles-sys.com -stzc.com -stzzx.com -su-jiao.com -su-long.com -suaee.com -suan5.com -suanbanyun.com -suanchang.com -suandao.com -suanguaju.com -suanjiayun.com -suanjuzi.com -suanpin.com -suanst.com -suansuangua.com -suanya.com -suapp.me -suawin.com -subangjia.com -subaonet.com -subaoxw.com -subeiflower.com -subelf.net -subingkang.com -subinwechat.com -subline.org -subo.net -subokk.com -subom.net -subond.com -subuy.com -sucai.com -sucai77.com -sucai999.com -sucaibar.com -sucaidao.com -sucaifu.com -sucaijiaxiao.com -sucaijiayuan.com -sucaijishi.com -sucainiu.com -sucaiplus.com -sucaisucai.com -sucaitu.cc -sucaiw.com -success001.com -successhr.com -succez.com -sucdri.com -such-game.com -suchasplus.com -suchengmeizhan.com -suchugao.com -suchz.com -sucjg.com -sucop.com -sucoupon.com -sudaizhijia.com -sudaoa.com -sudasuta.com -sudawuye.com -suddenfix.com -sudecoating.com -sudoinfotech.com -sudu-67ph.com -sudu-72ub.com -sudu-ab6h.com -sudu-by4e.com -sudu-du9k.com -sudu-kay6.com -sudu-me6n.com -sudu-pq2y.com -sudu-q6wk.com -sudu-r8gh.com -sudu-sq56.com -sudu-tf42.com -sudu-xu9b.com -sudu-y94k.com -sudu123.net -suducha.com -sududa.com -sudundns.com -sudupower.net -sudusite.com -suease.com -suemor.com -sueon.com -sufachina.com -sufangxu.com -sufeinet.com -sufoma.com -sufont.com -sufycdn.com -sugaov.com -sugar5.club -sugarall365.com -sugarenergy.com -sugarguo.com -sugarle.com -sugessofficial.com -sugon.com -sugou.com -suguangxx.com -sugwedding.com -suhaoyy.com -suhedj.com -suhedz.com -suhergroup.com -suhongzhan.com -suhuishou.com -sui.com -sui.me -suibao-jiaozhu.com -suibao.com -suibiji.com -suibo.org -suiji123.com -suijinetworks.com -suijunlaowu.com -suilengea.com -suileyoo.com -suimeng.la -suinikan.com -suiningwang.com -suiniyi.com -suiqiao.com -suirui.com -suishenyun.net -suishixian.com -suishouji.com -suishouxie.com -suishouzj.com -suisuihu.com -suisuijiang.com -suitaichem.com -suiunited.com -suixianwang.net -suixin8.com -suixingpay.com -suixinzulin.com -suixkan.com -suixw.com -suiyichong.com -suiyifa.com -suiyiju.com -suiyuanjian.com -suizhoushi.com -suizui.net -sujh.net -sujia.cc -sujiagroup.com -sujiao1668.com -sujw.com -sujx.net -sukean.com -sukeler.com -sukeyun.com -suki.club -suki.moe -sukimon.me -sukiu.net -sukkaw.com -sukoshi.xyz -sukoutu.com -sukvm.com -sulabs.net -sulaixue.com -sulamp.com -sulandscape.com -suleapi.com -suliaodingzhi.com -suliaojian.com -sulicn.com -sulitui.com -suloon.com -suluf.com -sumaart.com -sumaarts.com -sumapay.com -sumatang.com -sumavision.com -sumcl.com -sumec.com -sumedu.com -sumeme.com -sumer.work -sumgotea.com -sumian.com -sumiao.net -sumiaowang.com -sumibuy.com -sumkoo.com -sumkoo.net -sumly.net -summall.com -summercampschina.com -summerfarm.net -summerlight.com -summerlight.name -summerpalace-china.com -summitpharmachina.com -sumoon.com -sumrday.net -sumscope.com -sumuda.tech -sumwin.com -sumzc.com -sumzi.com -sun-ada.net -sun-coo.com -sun-feel.com -sun-hua.com -sun-park.com -sun-wish.com -sun0769.com -sun0769ns.com -sun0816.com -sun66.net -suna-opto.com -sunaas.com -sunacctg.com -sunalytools.com -sunari17.com -sunasia.com -sunbl.com -sunbloger.com -sunbo.com -sunbo367.com -sunborngame.com -sunbowhospital.com -sunboxsoft.com -sunboyu.com -suncereltd.com -suncjm.com -sundan.com -sundaydragon.com -sundayvision.net -sundns.com -sundray.com -sunear.net -sunease.net -sunemc.com -suner.cc -sunera-cn.com -sunergyworks.com -sunflowerscf.com -sunfounder.cc -sunfreight-logistics.com -sunfront.com -sunft.com -sungainyeast.com -sungari1995.com -sungent.com -sungesoft.com -sungine.com -sunglow-tec.com -sungoal.org -sungoedu.com -sungroup-energy.com -sungshu.com -sunhan.vip -sunhante.com -sunhepower.com -sunhongs.com -sunhospital.net -sunhuhotel.com -suninf.net -suninfo.com -suning.com -suningbank.com -suningcdn.com -suningcdn.net -suningcloud.com -suningdns.com -suningdns.net -suningestate.com -suninggslb.net -suningholdings.com -suninghotel.com -suninghotels.com -suningmail.com -suningpay.com -suningyunyou.com -sunjex.com -sunjiadai.xyz -sunjianjian.com -sunjs.com -sunkeydata.com -sunland.vip -sunlandlaw.com -sunlands.com -sunlandstudy.com -sunlandvip.com -sunlandzk.com -sunleader.net -sunlife-everbright.com -sunlight-tech.com -sunlogin.com -sunlogin.net -sunlons.com -sunlordinc.com -sunlune.com -sunmarr.com -sunmeihotel.com -sunmen.com -sunmi.com -sunmingxia.com -sunmmio.com -sunmmm.com -sunmnet.com -sunmoonepe.com -sunnatech.com -sunnercn.com -sunnergp.com -sunnsoft.com -sunny90.com -sunnyaiot.com -sunnychina.com -sunnyfly.com -sunnyhaitai.com -sunnyhf.com -sunnylawyer.com -sunnyms.com -sunnyoptical.com -sunnyos.com -sunnyplas.com -sunnypure.com -sunnyqi.com -sunnysemi.com -sunnyxx.com -sunocean.life -sunofbeaches.com -sunofus.org -sunon-china.com -sunon-power.com -sunonln.com -sunorensolar.com -sunorlng.com -sunowe.com -sunowo.com -sunpala.com -sunpapergroup.com -sunpowergroup.biz -sunprocn.com -sunpun.com -sunrain.com -sunrate.com -sunray2000.com -sunresin.com -sunresin.net -sunrisedutyfree.com -sunrisegroupcn.com -sunrisenan.com -sunrisesha.com -sunrizetech.com -sunrtb.com -sunrtnet.com -sunsea.net -sunseekerpower.com -sunsetcare-mirrortech.com -sunsharer.com -sunshine-power.net -sunshine-sino.com -sunshinecoasthomesearch.com -sunsili.com -sunsilu.com -sunsine.com -sunspotfund.com -sunstarasia.com -suntech-metal.com -suntech-power.com -suntechospital.com -suntgj.com -suntimehousehold.com -suntop168.com -suntray.com -suntrayoa.com -suntront.com -sunup.name -sunup3d.com -sunupcg.com -sunus-china.com -sunvim.com -sunvio.com -sunwardcap.com -sunwatt.com -sunwaygas.com -sunwayland.com -sunwaypharm.com -sunways-portal.com -sunwayworld.com -sunwayx.com -sunweihu.com -sunweiwei.com -sunwellpower.com -sunwin-china.com -sunwin2001.com -sunwinon.com -sunwoda.com -sunxiaoning.com -sunxisc.com -sunyaholding.com -sunyansong.com -sunyard.com -sunyea.com -sunyet.com -sunyitech.com -sunyoads.com -sunyuu.com -sunywo.com -sunzhongwei.com -sunzn.com -suo.im -suobao8.com -suobifa.com -suobuy.com -suodaozl.com -suoer-group.com -suofeiya.com -suofeiyashop.com -suoge.net -suolong.com -suoluomei.com -suopingbao.com -suorang.com -suosihulian.com -suotn.com -suoxin5.com -suoyiren.com -supaq.com -suparc.com -supcname.com -supcompute.com -supcon.com -supconauto.com -supconit.com -supdri.com -supeeder.com -supei.com -super-king.net -super-mt.com -superace.com -superacme.com -superaicdn.com -superayi.com -superbed.cc -superboss.cc -superbrandmall.com -superbrowser.com -superbrowser.hk -superbuy.com -superbuyy.com -supercachenet.com -supercachenode.com -supercalnow.com -supercarrier8.com -supercell.com -supercodepower.com -supercrm.com -superepoxyresin.com -superfix.com -superhcloud.com -superic.com -superiorscope.com -superjq.com -superlib.com -superlib.net -superlink.mobi -superlinkscm.com -superlitetech.com -superljq01.com -supermap.com -supermap.io -supermapcloud.com -supermapol.com -supernode.pro -superpb.com -superpowercn.com -superqq.com -supersharket.com -supersocket.net -superstar-med.com -superstarkennel.com -superstars.vip -supertime-malting.com -supertracker.net -supervisionus.com -supervote.cc -superwrt.com -superyd.com -superyears.com -superzl.com -supesite.com -supesoft.com -supet.com -supgroups.com -suplaymart.com -supman.com -supmea.com -supmeter.com -supmil.com -supmil.net -supoin.com -supool.com -supor.com -suporgroup.com -suporpharm.com -supplierlist.com -supplywater.com -support-cn.samsung.com -supportassist.dell.com -supreme-oe.com -supuvalve.com -supwisdom.com -supwk.com -suqian360.com -suqianhospital.com -suqing.com -suqishi.com -suqnn.com -suqun-group.com -surely.cool -surerp.com -surface.download.prss.microsoft.com -surface.downloads.prss.microsoft.com -surfacetreatmentgroup.com -surfacetreatmenttechnology.com -surfcg.com -surgerii.com -surgerycast.com -surgi-plan.com -surmounthat.com -surprising.studio -sursen.com -sursenelec.com -sursung.com -surtime.com -suruicloud.com -surun-tech.com -survey.work -surveyhills.com -surveyqq.com -surveyrtk.com -surveyunion.com -survivor99.com -surwit.com -suryee.com -suseage.com -sushijiameng.com -sushiyanglao.com -sushui.com -suso56.com -susong1.com -susong51.com -susongbbs.com -susoul.com -sustcra.com -sustech.online -susudm.com -susun.cc -susungroup.com -sutanapp.com -suteidc.com -suteshop.com -suting123.com -sutpc.com -sutune.me -sutuobang.com -suujee.com -suuny0826.com -suv-trip.com -suv666.com -suwen.org -suxiangsj.com -suxiazai.com -suxieban.com -suxiege.com -suxing.me -suxuejiaoyu.com -suxx0.com -suyangroup.com -suyuantuliao.com -suyuening.com -suyugame.com -suyujoy.com -suyun.net -suyunj.com -suyur.com -suyutech.com -suyuzz.com -suzhongyy.com -suzhou-marathon.com -suzhou-otsuka.com -suzhouballettheatre.com -suzhoubank.com -suzhoubeili.com -suzhoubond.com -suzhoucitymarathon.com -suzhoudyh.com -suzhouexpo.com -suzhoufashion.com -suzhouhengtai.com -suzhouhui.com -suzhoujicai.com -suzhouleasing.com -suzhoulida.com -suzhoulinsen.com -suzhousj.com -suzhouyabao.com -suzip.com -suzport.com -suzuki-china.com -suzuki-shanghai.com -svconcloud.com -sve.cc -svell.net -svenhetin.com -svfrrg.com -svgoptronics.com -svimeng.com -svinsight.com -svip51.com -svipdog.com -svipgulr.com -sviping.com -svk3o97xmyid93.com -svlik.com -svmuu.com -svmxxaq.com -svn999.com -svnbucket.com -svnspot.com -svp6.com -svqsokp.com -svrvr.com -svw-volkswagen.com -svwuc.com -sw-bllp.com -sw-zh.com -sw0013.com -sw163.com -sw2008.com -sw996.com -swakopuranium.com -swan366.com -swanchemical.com -swang8.com -swangwx.com -swanhub.co -swanpowerstrip.com -swanrov.com -swaqds.com -swarma.net -swat-js.com -swatou.com -swbbsc.com -swc-china.com -swceb.com -swchina.org -swckc.com -swdcmg.com -swdyz.com -sweet-data.com -sweetalkos.com -sweetjing.cc -sweetlove.cc -sweetmartmarketing.com -sweetome.com -sweetread.net -sweetrouble.com -sweetystory.com -swelder.com -swellfun.com -swfc-shanghai.com -swfzjt.com -swg36.com -swgocean.com -swgzs.com -swgzy.com -swhydyj.com -swhysc.com -swift-at.com -swift51.com -swiftfintech.com -swifthumb.com -swiftjava.com -swiftlet.net -swijoy.com -swip.group -swirebev.com -swirecocacola.com -swisdom.cc -swissgenie.com -swissrepicass.com -swissreplicamall.com -swissreplicaonline.com -swissreplicas.cc -swisswatcheshot.com -swisswatchx.com -swit-battery.com -swit.cc -switchb2b.com -switchxiazai.com -switzerland-visacenter.com -swjjshfw.com -swjoy.com -swjsj.com -swjtjt.com -swkedou.com -swkong.com -swliuxue.com -swltools.com -swnic.com -swofcare.com -swomc.net -swoole.com -swordair.com -swordart.online -swordofmorning.com -swordtt.com -swpubar.com -swq242xc54.com -swrjzxw.com -swrtxtb.com -swsbw.com -swsegroup.com -swskj.com -swsm.net -swsmu.com -swstsg.com -swt0.com -swtpu.com -swufe-online.com -swupdl.adobe.com -swwy.com -swxk.cc -swxxvr.com -swyun.net -swz001.com -swzj.com -swzx.com -sx-merryland.com -sx-moen.com -sx-seafood.com -sx1211.com -sx189.com -sx267.com -sx311.cc -sxaec.com -sxafz.com -sxalu.com -sxand.com -sxase.com -sxatcm.com -sxbada.com -sxbang.net -sxbawy.com -sxbctv.com -sxbdf.com -sxbest.com -sxbjedu.com -sxbpa.com -sxbuszp.com -sxbychem.com -sxcahosp.com -sxccb.com -sxcd-gyl.com -sxcgzh.com -sxchangshengjt.com -sxcig.com -sxcitygas.com -sxclassiclighting.com -sxcm.net -sxcntv.com -sxcoal.com -sxcp.com -sxctf.com -sxcxgf.com -sxcxldjy.com -sxcyts.com -sxcywy.com -sxczdz.com -sxd408.com -sxdagang.com -sxddy.com -sxdkj.com -sxds.com -sxdzyp.com -sxepa.org -sxepc.com -sxetcedu.com -sxfl.org -sxfoundation.com -sxfu.org -sxgbs.com -sxgdtv.com -sxggec.com -sxggzp.com -sxgjj.com -sxglpx.com -sxgoo.com -sxgq.net -sxgrw.com -sxgs.com -sxgsps.com -sxhbjt.com -sxhbjtshj.com -sxhctv.com -sxhhwl.com -sxhhyy.com -sxhimalayanqd.com -sxhiway.com -sxhjrc.com -sxhkstv.com -sxhkxy.com -sxhlcc.com -sxhlfjt.com -sxhlxy.com -sxhm.com -sxhmyy.com -sxhongyuan.com -sxhospital.com -sxhtss.com -sxhtyy.com -sxhtyy.net -sxhwhb.com -sxhwls.com -sxhxbank.com -sxisa.org -sxjant.com -sxjbswyy.com -sxjcdyy.com -sxjd-cn.com -sxjdfreight.com -sxjdpm.com -sxjf8789.com -sxjg-wl.com -sxjgkg.com -sxjhzsgc.com -sxjianli.com -sxjinfengjiuye.com -sxjky.com -sxjmfxky.com -sxjntech.com -sxjtyhjt.com -sxjwlkj.com -sxjxdyqfw.com -sxjybk.com -sxjzxww.com -sxkbzc.com -sxkids.com -sxkzxt.com -sxlcdn.com -sxldns.com -sxlfwl.com -sxlhrj.com -sxlib.com -sxlljm.com -sxlottery.net -sxlpd.com -sxls.com -sxltsj.com -sxluxiang.com -sxlynykj.com -sxmda.net -sxmhgas.com -sxmty.com -sxmxwh.com -sxmyh.com -sxncb.com -sxnxs.com -sxnxxny.com -sxnycl.com -sxol.com -sxpdk.com -sxpgb.com -sxplc.com -sxpmg.com -sxpmpos.com -sxprgc.com -sxpta.com -sxpyzg.com -sxpyzx.com -sxqingyi.com -sxqzy.com -sxrb.com -sxrbw.com -sxrcw.net -sxrczx.com -sxrekord.com -sxri.net -sxrom.com -sxrqrlxh.com -sxrqxny.com -sxrszdh.com -sxrtv.com -sxrxgs.com -sxs56.com -sxsa.org -sxsanwei.com -sxsapi.com -sxscwl.com -sxsedu.net -sxsfdxylsyzx.com -sxsfky.com -sxsfyyy.com -sxsgs.com -sxshjhyxh.com -sxshu.com -sxsim.com -sxsimg.com -sxsjgy.com -sxsjzyxh.com -sxslhg.com -sxslnews.com -sxsme.org -sxsmtgyxh.com -sxsng.com -sxsoft.com -sxsohu.com -sxsqxj.com -sxsqyjxh.org -sxsrmyy.com -sxsslz.net -sxssyh.com -sxswfzjt.com -sxsyyxh.com -sxsyyxh.net -sxszw.net -sxtbu.net -sxtcm.com -sxtgedu.net -sxtianjian.com -sxtourgroup.com -sxtourism.com -sxtppm.com -sxtqsl.com -sxtracking.com -sxtv6.com -sxtvs.com -sxtybook.com -sxudqg.com -sxuyr2nx.com -sxvtc.com -sxwao4zi6dgp.com -sxwbedu.com -sxwbs.com -sxwetalent.com -sxwlyhzp.com -sxworker.com -sxwpyx.com -sxwq.com -sxwstcm.com -sxwtdyd.com -sxww.com -sxxfj.com -sxxl.com -sxxrmyy.com -sxxsmjh.com -sxxt.net -sxxw.net -sxxyfw.com -sxxynews.com -sxxzpt.com -sxy7.com -sxyasen.com -sxyckjr.com -sxycpc.com -sxycrb.com -sxycys.com -sxygsj.com -sxyj.net -sxyqgs.asia -sxyrxb.com -sxyxqk.com -sxyyc.net -sxyyzcj.com -sxzhaobiao.com -sxzhongfei.com -sxzhyy.com -sxzkzs.com -sxzlycl.com -sxzlyy.com -sxzq.com -sxzxsdf.com -sxzydj.com -sxzyfy.com -sxzytech.com -sxzzdxsc.com -sy-game.com -sy-home.com -sy-yy.com -sy021.com -sy118.com -sy12306.com -sy12328.com -sy17.com -sy1994.com -sy1z.com -sy2k.com -sy2z.com -sy3.com -sy76.com -syais.com -sybasebbs.com -syberos.com -syberq.com -sybj.com -sybxpu.com -sybygx.com -syc738gtwihc2.com -sycaijing.com -sycdtz.com -sychlon.com -sycontroller.com -sycreader.com -sycsgj.com -sycxzx.net -sydaxxw.com -sydcch.com -sydcdjt.com -sydey.com -sydfty.com -sydhyg.com -sydjwl.com -sydkidsedu.com -sydneyglobaltimes.com -sydtgd.com -sydw.net -sydw8.com -sydxdl.com -syeamt.com -syeg-ev.com -syepia.org -syetyy.com -syf.ink -syfabiao.com -syfb2021.com -syfj.net -syfly007.com -syfw.com -syfyyy.com -syg315.com -sygcjs.com -sygcjsxh.com -sygd.com -sygjj.com -sygjzx.com -syglyg.com -sygnew.com -syh666.com -syhccs.com -syhfxsh.com -syhhidc.com -syhhkj.com -syhl.vip -syhlgg.com -syholdings.com -syhospital.com -syhouse.net -syhsfzl.com -syhsxb.com -syhuayang.com -syhzdj.net -syhzx.com -syhzzf.com -syiptv.com -syitgz.com -syjcly.com -syjiancai.com -syjkqzw.com -syjlp.com -syjsq.com -syjt.com -syjtwlzx.com -syjtzm.com -syjyzl.com -syjzedu.com -syk2023.com -sykezheng.com -sykfff.com -sykong.com -sykt520.com -sylangyue.xyz -sylc.xyz -sylincom.com -sylixos.com -sylm2022.com -sylmyl.com -sylnyx.com -syltgl.com -symama.com -symarathon.com -symboltek.com -symf-crm.com -symtc.com -syn-tron.com -syn029.com -synball.com -sync.sh -syncedoffplanet.com -syncozymes.com -syngars.com -syngenemed.com -synjones.com -synjones.net -synnchem.com -synochip.com -synodc.com -synology-cn.com -synologyssb.com -syntao.com -synyan.net -synyi.com -synykj.net -syobserve.com -syoits.com -syoker.com -syoseo.com -syounggroup.com -sypglass.com -sypole.com -sypost.com -sypost.net -sypvm.com -sypvt.com -syq666.com -syr-sce.com -syranqi.com -syrc.org -syrcb.net -syrczpw.com -syreads.com -syrecovery.com -syrhkj.com -syrinxchina.com -syrqgas.com -syrszs.com -sys-ele.com -sys321.com -syscan360.com -syscan360.net -syscan360.org -sysceo.com -sysceo.net -syscxp.com -sysdyy120.com -sysengi.com -syshell.com -syshospital.com -syshospital.org -syshosts.net -sysjnl.com -sysjoint.com -sysmaster.online -sysmini.com -sysmls.com -sysnfj.com -sysshine.com -systedata.com -systemserviceable.com -systoon.com -sysu-pharm.com -sysucc.com -sysuschool.com -sysush.com -sysutest.xyz -syswgw.com -sysx.tech -sysxhz.com -sysydz.net -sysyhfj.com -sysysjnk.com -syt1000.com -sytcke.com -sytfgroup.com -sythealth.com -sytjcc.com -sytlj.com -sytlw.com -syttgame.com -sytuku.com -syuan.com -syuan.net -syue.com -sywg.com -sywgy.com -sywtqc.com -syx-ac.com -syxb.com -syxidao.com -syxjjsw.com -syxlgame.com -syxt.cc -syxw.xyz -syxwang.com -syxwnet.com -syxzhongyi.com -syyan.site -syyc.com -syygjs.com -syyjs.com -syylfh.com -syyqls.com -syys.cafe -syysjt.com -syyx.com -syyy99.com -syyyd.com -syyyj.com -syyyking.com -syyzhpc.com -syzdhyb.com -syzjjt.com -syzlzz.com -syzoukan.com -syzpw.com -syzsgroup.com -sz-3a.com -sz-acuvu.com -sz-amc.com -sz-baile.com -sz-bst.com -sz-building.com -sz-byg.com -sz-cbea.com -sz-cerberus.com -sz-changfeng.com -sz-changhong.com -sz-coin.com -sz-czzc.com -sz-dfl.com -sz-dns.net -sz-ebest.com -sz-edsy.com -sz-ekl.com -sz-el.com -sz-etong.com -sz-expressway.com -sz-fesco.com -sz-fukuda.com -sz-function.com -sz-gaokai.com -sz-hbwy.com -sz-hdenergy.com -sz-hengdeyuan.com -sz-hiragawa.com -sz-huashi.com -sz-huayuan.com -sz-hyauto.com -sz-hzt.com -sz-iso.com -sz-jiahong.com -sz-jlc.co -sz-jlc.com -sz-jyd.net -sz-kaito.com -sz-keli.com -sz-khgroup.com -sz-ky.com -sz-kye.com -sz-lcsc.com -sz-lzyy.com -sz-map.com -sz-matro.com -sz-mtr.com -sz-myjs.com -sz-news.com -sz-osckj.com -sz-printing.com -sz-qb.com -sz-rlx.com -sz-skt.com -sz-sunway.com -sz-suwan.com -sz-talant.com -sz-tianmai.com -sz-trip.com -sz-tyjx.com -sz-ua.com -sz-xingfu.com -sz-xiran.com -sz-yian.com -sz-ytq.com -sz-zhenghe.com -sz002329.com -sz0429.com -sz121.com -sz189.com -sz1905.com -sz1978.com -sz1z.com -sz2048.com -sz240.com -sz2g.com -sz315.org -sz3dp.com -sz3e.com -sz3gao.com -sz56t.com -sz5983.com -sz7h.com -sz800.com -sz836.com -sz886.com -sz910.com -sz95000.com -sz96296.com -szaaci.com -szacc.com -szaccl.com -szacs.com -szaction.com -szadf.com -szadna.net -szadst.com -szaeia.com -szagera.com -szahotel.com -szai.com -szaiaitie.com -szaicx.com -szaid.com -szaima.com -szaipx.com -szairport.com -szaisino.com -szaiten.com -szaixian.com -szajsj.com -szamc.com -szande.com -szanjun.com -szaojin.com -szas.com -szastcg.com -szaudio.com -szaudio.net -szaupd.com -szautism.com -szbaba.com -szbaicao.com -szbaike.com -szbaleng.com -szbaoly.com -szbaoming.com -szbattery.org -szbayy.com -szbazx.com -szbbs.org -szbcase.com -szbcfurniture.com -szbdzs.com -szbeilu.com -szbeilu888.com -szbhwk.com -szbhyy.com -szbia.com -szbih.com -szbike.com -szbim.com -szbinying.com -szbiu.com -szbnrj.com -szboehospital.com -szbojay.com -szbosen.com -szbosk.com -szbrandweek.com -szbryq.com -szbubu.com -szbwgy.com -szbyzn.com -szc-ic.com -szc.com -szca.com -szcat.org -szcatic.com -szcbc.com -szcfjt.com -szcfyi.com -szcgc.com -szcgkg.com -szch-cn.com -szchengli.com -szchengyue.com -szchilink.com -szchunqiu.com -szcic.com -szcidg.com -szclbxf.com -szcleanair.com -szclxzx.com -szcmer.com -szcnpiec.com -szcogo.com -szcompare.com -szcp.com -szcsot.com -szcssx.com -szcswater.com -szctch.com -szctkj.net -szcttlab.com -szctyx.com -szcua.org -szcw.com -szcwdz.com -szcxjscl.com -szcy-fintech.com -szcy99.com -szczjy.com -szczkjgs.com -szdaily.com -szdcjd.com -szddns.net -szdesigncenter.org -szdesy.com -szdf.com -szdhjt.com -szdiantu.com -szdihang.com -szdiyibo.com -szdkgssb.com -szdljt.com -szdlsjj.com -szdn1ms.com -szdpi.com -szdprt.com -szdrse.com -szds.com -szdsit.com -szdtwcw.com -szdunan.net -szduopin.com -szdwwy.com -szdwxy.com -szdwyy.com -szdx189.com -szdxfsrhyy.com -szdz123.com -szdzczp.com -szeant.com -szeastroc.com -szeasyin.com -szebus.net -szecowater.com -szects.com -szed.com -szeds.com -szedu.net -szeeg.com -szegddc.com -szeholiday.com -szeia.com -szelab.com -szelanpo.com -szelec.cc -szelight.com -szelink.com -szepiao.com -szerye.com -szesens.com -szetop.com -szeua.org -szeunon.com -szeverich.com -szfa.com -szfachina.org -szfangzhouhd.com -szfc.net -szfcol.com -szfda.net -szfdg.com -szfdzx.com -szfengtu88.com -szffmr.com -szfg.net -szfglass.com -szfirstplastic.com -szfiu.com -szfjt.com -szfolo.com -szforter.com -szftfybj.com -szftzx.net -szftzy.com -szfutong.com -szfuture.com -szfw.org -szfx.com -szfxdev.com -szfyhd.com -szfyzb.com -szfzx.org -szgalaxy.com -szgangdi.com -szgays.org -szgcyy.com -szggzy.com -szghedu.com -szghgw.com -szgky.com -szgla.com -szglby.com -szglsf.com -szgraphene.com -szgreenhulk.com -szgrjt.com -szgsjc.com -szgt.com -szgthr.com -szguanai.com -szguanghua.com -szguante.com -szguixiang.com -szguoxin.com -szgwin.com -szgwsd.com -szgymz.com -szgztg.com -szh.com -szha.org -szhaian.com -szhaicao.com -szhailan.com -szhaochuang.com -szharmony.com -szhb.org -szhddq.com -szhdy.com -szhdyic.com -szhenglian.com -szhetai.com -szhfwd.com -szhgong.com -szhightondz.com -szhiross.com -szhjwybj.com -szhk.com -szhkhui.com -szhlodz.com -szhlsg.com -szhmjp.com -szhmkeji.com -szhnsz.com -szhome.com -szhomeimg.com -szhongshe.com -szhospital.com -szhot.com -szhq.com -szhqgf.com -szhqyy.com -szhqyy120.com -szhr.com -szhrh.com -szhri.com -szhsdpa.com -szhstjt.com -szhsx.net -szhtp.com -szhua-gao.net -szhuace.com -szhuarong.com -szhuayilong.com -szhubei.com -szhuhang.com -szhulian.com -szhuodong.com -szhvac.org -szhvs.com -szhwad.com -szhxbiz.com -szhytrip.com -szhzsd.com -szhzzl.com -szicbe.com -szicc.net -szicpa.org -szida.org -szider.com -szieg.com -szihl-bayarea.com -szihl-port.com -sziia.org -szind.com -szinvent.com -sziota.com -szitcare.com -sziton.com -szitsa.org -szjags.com -szjawest.com -szjbz.cc -szjcmr.com -szjcyljt.com -szjcyy.com -szjcyyy.com -szjfh.com -szjg.net -szjgjt.com -szjhxjt.com -szjianan.com -szjiansheng.net -szjianuo.com -szjiazhao.com -szjiexikeji.com -szjili.com -szjinhejs.com -szjinhuanyu.com -szjinke.com -szjinxinzh.com -szjitu.com -szjjedu.com -szjkhd.com -szjkp.com -szjkxh.com -szjkyun.com -szjlkt.com -szjlwul.com -szjr-tencentclb.cloud -szjr-tencentclb.com -szjr-tencentclb.net -szjr-tencentclb.work -szjsgroup.com -szjsjlxh.com -szjsjt.com -szjtfw.com -szjtxm.com -szjuhaozn.com -szjunchuang.com -szjunfei.com -szjunlin.com -szjunrong.com -szjuquan.com -szjuwx.com -szjuyou.com -szjxcft-tencentclb.cloud -szjxcft-tencentclb.com -szjxcft-tencentclb.net -szjxcft-tencentclb.work -szjxgroup.com -szjxj.com -szjy.cc -szjyos.com -szjys.net -szjys1888.com -szjytx.com -szjyxtech.com -szjzdcjt.com -szkdxx.com -szkeda.com -szkegao.net -szkente.com -szkete.com -szkgdesign.com -szkingdom.com -szkinks.com -szkjcn.com -szkjjs.com -szkjxh.com -szknet.com -szknk.net -szknys.com -szknyy.com -szkoa.com -szkobo.com -szkosun.com -szkqyy.com -szkrd.com -szl724.com -szlaituo.com -szlande.com -szlangwei.com -szlanyou.com -szlawyers.com -szlc9.com -szlcsc.com -szlcwy.com -szldcc.com -szlddb.com -szlddj.com -szldzb.com -szledia.org -szleezen.com -szlgzxyy.com -szlhtram.com -szlianhua.com -szlianya.net -szlightlink.com -szlihuam.com -szlilun.com -szline9.com -szlinglewangluo.com -szlingsheng.com -szlmxx.com -szlnjt.com -szlnxh.com -szlongyu.com -szlottery.org -szlqjt.com -szlsnk.com -szltech.com -szltlh.com -szltour.com -szltwlw.com -szlunhua.com -szluxon.com -szlvbarcode.com -szlvwang.com -szlwbj.com -szlwtech.com -szlxl100.com -szlyi.com -szlzsd.com -szmadigi.com -szmagellan.com -szmall.com -szmama.com -szmama.net -szmaxima.com -szmb.cc -szmc.net -szmcjsjt.com -szmcjt.com -szmcob.com -szmctc.com -szmcy.com -szmea.net -szmedtech.com -szmengqukj.com -szmgci.com -szmhthb.com -szmicrogate.com -szmieps.com -szmii.com -szmil.com -szmjd.com -szmjlcd.com -szmkd.com -szmrcd.com -szmsjs.com -szmslaser.com -szmtc.com -szmtxny.com -szmtzc.com -szmuseum.com -szmwzs.com -szmylike.com -szmynet.com -szmys.com -szmywin.com -szmyxc.com -szn360.com -sznaibeng.com -sznbm.com -sznecn.com -sznewbest.com -sznews.com -sznewworld.com -sznffc.com -sznfwt.net -szngdz.com -szniego.com -szniushi.com -sznnhg.com -szns-marathon.com -sznsyy.net -sznumberone.com -szny189.com -sznyfz.com -sznyyznnj.com -szobk.com -szol.net -szolgj.com -szolxd.com -szonline.net -szooo.com -szouqi.online -szoxstand.com -szp15.com -szp168.com -szpa.com -szpa.org -szpan-china.com -szpckj.com -szpclab.com -szped.com -szpengfa.net -szpgm.com -szpiaoyi.com -szpldq.net -szpllp.com -szplus.com -szpmi.org -szporter.com -szpowerfly.com -szpra.com -szprl.com -szptxx.com -szputy.com -szqf.org -szqhlx.com -szqhtkyy.com -szqhyf.com -szqiangu.com -szqinyuan.com -szqjxh.com -szqp.site -szqsq.com -szqt.net -szquanli.com -szqycl.com -szqyw.net -szqzsd.com -szrba.org -szrc-hr.com -szrcaj.com -szrcb.com -szrcfw.com -szrch.com -szrfdq.com -szrfstar.com -szrgsh.com -szrhg.com -szrj.net -szrlaw.net -szrrjc.com -szrsks.com -szrswj.com -szrtcpa.com -szruilan.com -szrunning.com -szryc.com -szrzxh.com -szs189.com -szsaibao.com -szsailong.com -szsaiwei.com -szsamr.com -szsandt.com -szsangbo.com -szschj.com -szschl.com -szsci.net -szscree.com -szsczx.com -szsdhjt.com -szsdjrmyy.com -szsdsrmyy.com -szseafoodexpo.com -szseasons.com -szsemicon.com -szsep.com -szsewo.com -szsfgc.com -szsh.com -szshequ.org -szshtjm.com -szshuangjin.com -szshuori.com -szshutao.com -szshwy.com -szsia.com -szsing.com -szsjtjj.com -szsjxxpt.com -szskd.com -szsky.com -szslcyy.com -szslhssy.com -szsmk.com -szsmyg.com -szsnk.com -szsoa.org -szsolutia.com -szsongmao.com -szsorch.com -szsptk.com -szsq.net -szsrs.com -szssct.com -szssda.com -szssep.com -szssfor.com -szssty.com -szsswcs.com -szsszx.com -szsta.org -szstar.com -szstariver.com -szstartec.com -szsti.org -szstyle.cc -szsuanli.com -szsunlaser.com -szsunwin.com -szsupvan.com -szswgcjc.com -szswjc.com -szswjs.com -szsycft-tencentclb.cloud -szsycft-tencentclb.com -szsycft-tencentclb.net -szsycft-tencentclb.work -szsyyxh.org -szszjt.com -szszlm.com -szszpx.com -szsztj.com -sztaijier.com -sztalent.org -sztanzo.com -sztara.com -sztc.com -sztcg.com -sztd123.com -szte.com -sztechand.com -szted.com -sztexun.com -szteyin.com -sztgxc.com -sztgxx.com -sztheatre.com -szthekey.com -szthxf.com -sztiaocao.com -sztino.com -sztkc.com -sztkd.com -sztljyjt.com -sztmjz.com -sztncm.com -sztongwang.com -sztopbrand.com -sztower.com -sztoys.com -sztqjf.com -sztreeent.com -sztspi.com -sztw96933.com -sztxcpa.com -sztxsz.com -sztxw.com -szty56.com -sztz.org -sztzzs.com -szuavia.org -szudad.com -szunionlab.com -szurta.org -szvannylove.com -szvca.com -szvft.com -szvi-bo.com -szvsdpco.com -szwa.com -szwaishi.com -szwale.com -szwanghong.com -szwata.com -szwb.com -szwblm.com -szwchy.com -szwdny.com -szwego.com -szweidi.com -szweijubao.com -szweita.com -szwfhp.com -szwfzs.com -szwghl.com -szwgmf.com -szwgroup.com -szwhcycyw.com -szwhxy.com -szwldq.com -szword.com -szwsm.com -szwstui.com -szwtsd.com -szwudao.com -szwuyukeji.com -szwwco.com -szwzjt.com -szwzzxyy.com -szx-ray.com -szx-tencentclb.cloud -szx-tencentclb.com -szx-tencentclb.net -szx-tencentclb.work -szx58.com -szxbbus.com -szxbjt.com -szxbyx.com -szxcqfw.com -szxcrq.com -szxcxkf.com -szxcyl.com -szxdfpr.com -szxdhj.com -szxfgcw119.com -szxhdz.com -szxihu.com -szxijili.com -szxinghe.net -szxinjiaxin.com -szxinjicheng.com -szxinyixin.com -szxiot.com -szxlga.com -szxljc.com -szxlxzb.com -szxsdmy.com -szxsshb.com -szxtiot.com -szxuanxiao.com -szxuexiao.com -szxuw.com -szxxj.com -szxxtx.com -szxxw.com -szxyjd.com -szxyxbkle.com -szyake.com -szyakeda.com -szyansai.com -szyazhi.com -szybio.com -szycil.com -szyclmarathon.com -szydtx.com -szydxx.net -szydyy.com -szyfai.com -szyfdz.net -szygcgpt.com -szyh.org -szyhja.com -szyhoa.com -szyhznkj.com -szyibei.com -szyichengjd.com -szyin.com -szyingduoduo.com -szyinglian.com -szyingzhan.com -szyink.com -szyixx.com -szyiyue.com -szyjedu.com -szyljt.com -szymweb.com -szyns.com -szypfb.com -szyptx.net -szyqjzxh.com -szyran.com -szys.net -szys119.com -szysjt.com -szysmpay.com -szystea.com -szysxx.com -szyt-hosp.com -szyuda88.com -szyundingschool.com -szyuxin.com -szyweibo.com -szyxue.com -szyxwdz.com -szyxwkj.com -szyy0373.com -szyyda.com -szyyt.com -szyyx.com -szyzsy.com -szzbmy.com -szzesee.com -szzfbt.com -szzfgjj.com -szzh365.com -szzhangchu.com -szzhaodaxin.com -szzhijun.com -szzhsponge.com -szzhuoju.com -szzkgk.com -szzljg.com -szzntech.com -szznzn.com -szzoan.com -szzoo.net -szzs360.com -szzscq.com -szzsivf.com -szzunbao.com -szzuting.com -szzx100.com -szzxgzy.net -szzxks.net -szzyjt.net -szzyqc.net -szzyqy.com -szzytech.com -szzywxkj.com -t-angel.com -t-d.chat -t-d.tv -t-dsyy.com -t-firefly.com -t-gafa.com -t-io.org -t-npm.com -t-ocean.com -t-t.live -t-tlearning.com -t-v.com -t-workshop.com -t.tt -t0001.com -t00ls.cc -t00ls.net -t00y.com -t0377.com -t086.com -t1.ink -t10.com -t105.com -t12.com -t123yh.xyz -t139.com -t1networks.com -t1qq.com -t1tms.com -t1y4.com -t1y5.com -t20000.com -t2audio.net -t2cn.com -t2uu.com -t3315.com -t3j4.com -t3yanzheng.com -t49cdn.com -t4x3.com -t4z5p5s9k4q3m4h4m3.org -t5.work -t528.com -t56.net -t56jy.net -t5tm.com -t5xs.com -t66.com -t6q.com -t7114.com -t79d6.com -t7rt5.com -t7y8.com -t7z.cc -t85.net -t8703hd304.com -t888w.com -t8f.com -t8tcdn.com -t8tms.com -t9in.com -t9tms.com -ta-ly.com -ta-shang.com -ta26.com -ta313.com -ta39.com -taaas.org -taagoo.com -tabalt.net -tabbypro.com -tabbywork.com -tableauxmly.com -tabuzhe.com -tabxexplorer.com -tachangxing.com -tactan.net -tadgkj.com -tadiao365.com -tadsim.com -tadsim.net -tadu.com -tadyz.com -taeapp.com -taeee.com -tafeihu.com -tag.gg -tagen-pm.com -tagjjt.com -taglyst.com -tagold.net -tagoo.club -tagphi.net -taguage.com -taguxdesign.com -tahoecn.com -tahua.net -tai-liang.com -tai1000.com -tai3399.com -tai87.com -taian.com -taianmedia.com -taiantang.net -taibumall.com -taicang.info -taicent.com -taichi-graphics.com -taichi-maker.com -taichuan.com -taichuan.net -taichyfood.com -taici.com -taicihome.com -taicike.com -taida-china.com -taida100.com -taidao.net -taidaxincai.com -taidichina.com -taidu.com -taiduhome.com -taiergroup.com -taifeng.co -taifengfans.com -taifua.com -taig.com -taigaoxiao.com -taihaikj.com -taihainet.com -taihe-hr.com -taihe.com -taihealthcare.com -taihecap.com -taihechengjian.com -taihehospital.com -taihemedia.com -taihopaint.com -taihuachem.com -taihuapharm.com -taihuawj.com -taihuboiler.com -taihucn.com -taihuoniao.com -taihutour.com -taihuwang.com -taihuwater.com -taihuxue.com -taihuyuan.com -taihuzimi.com -taiji.com -taijidf.com -taijiewuliu.com -taijiny.com -taijio.com -taijs.com -taijudaquan.com -taijutv.com -taikaibyq.com -taikaihuanbao.com -taikancnc.com -taikang.com -taikang100.com -taikanginv.com -taikangjsnc.com -taikanglife.com -taikanglife.net -taikangonline.com -taikangonline.net -taikangph.com -taikangzhijia.com -taikeji.com -taikewei.com -taikongmedia.com -taikoohui.com -taikoyc.com -taikr.com -tailgdd.com -tailingood.com -tailixiangjiao.com -taillkang.com -tailong.com -taimei.com -taimi100.com -taimls.com -tainengchong.com -tainingrencai.com -taiorient.com -taiott.com -taipingyangshuiwu.com -taipumed.com -taiqiedu.com -taiqigame.com -taiquan.com -tairock.com -tairos.cc -tairos.net -tairos.tech -tairui-ad.com -tais3.com -taisantech.com -taisenfurniture.com -taishangroup.com -taishansports.com -taishanxq.com -taishanyy.com -taisuyun.com -taitonglj.com -taiwandao.tw -taiwanwii.com -taiweiholding.com -taiwu.com -taixi.cc -taixigas.com -taixingren.com -taixirobot.com -taixubio.com -taixuguoji.com -taiyangd.com -taiyanghttp.com -taiyechem.com -taiyin117.com -taiyiplus.com -taiyocablecn.com -taiyou.fund -taiyuanguanye.com -taiyuanqy.com -taiyulink.com -taizhoucitymarathon.com -taizhouwater.com -taizibao.com -tajd.net -taji-ai.com -takesend.com -takfat.com -takhogroup.com -takstar.com -takumi-cnc.com -takungpao.com -takusogroup.com -takwang.net -tal-china.com -tal.com -talbrain.com -talebase.com -talegenes.com -talentable.com -talentlin.com -talentran.com -talents-tech.com -talentsmag.com -talentspotgroup.com -talicai.com -taliove.com -taljdns.com -talk-fun.com -talk.ai -talk915.com -talkgw.com -talkie-ai.com -talkingchina.com -talkwithtrend.com -talkxj.com -talkyun.com -talldns.com -talldns.net -tallgu.com -talmdhome.com -taluo.com -taluo5.com -taluoji.com -talzjsj.com -tamaegis.com -tamarace.com -tamayaki.com -tamc8.com -tamensay.com -tamersunion.net -tamigos.com -tamigroup.com -tamlab.net -tamll.com -tan-gtr.com -tan.cc -tan07.com -tan14.net -tan8.com -tanapk.com -tanbao178.com -tanbj7wflr.com -tanbo.name -tanboer.com -tancdn.com -tanchinese.com -tancy.net -tandehao.com -tandfonline.com -tanewmaterial.com -tang-lei.com -tanganlingshi.com -tangbai.cc -tangbolitangci.com -tangchendoor.com -tangdaoya.com -tangdou.com -tangdouddn.com -tangdouedn.com -tangdoufdn.com -tangdouhdn.com -tangdouimg.com -tangdouz.com -tangeche.com -tangfc.com -tanggu11g.com -tangguobaohe.com -tanghu.net -tanghushi.com -tangjie.me -tangjihuang.com -tangkabj.com -tanglei.name -tangmingint.com -tangoic.com -tangongye.com -tangpai.cc -tangping.com -tangqingtuia1.com -tangrenmedia.com -tangruiqian.com -tangsanshu.com -tangsem.com -tangshan-marathon.com -tangshanliulin.net -tangshuang.net -tangshui.net -tangsongys.com -tangsuanradio.com -tangtang.org -tanguan.net -tangux.com -tangwai.com -tangxia.xin -tangxiagoodview.com -tangyeedu.com -tangyoufushi.fun -tangyuan.com -tangzhuan666.com -tanhaibo.net -tanho.com -tanjigroup.com -tanjing.online -tanjiyongjun.com -tankeai.com -tankmm.com -tankprint.online -tanksuv.com -tankywoo.com -tanling.com -tanlive.com -tanluxia.com -tanma.tech -tanmer.com -tanpaifang.com -tanpoqiuer.com -tanshudata.com -tansiling.com -tansoole.com -tantaly.com -tantan123.com -tantanapp.com -tantu.com -tantu.info -tantuw.com -tanwan.com -tanwan123.net -tanwanmao.net -tanweime.com -tanwuapp.com -tanxingfuli.com -tanxinyu.work -tanxlog.istreamsche.com -tanxuling.com -tanyu.mobi -tanyuantech.com -tanzhouwater.com -tao-cai.com -tao-che-wei.com -tao-jiujiu.com -tao-star.com -tao-studio.net -tao-wu.com -tao008.com -tao123.com -tao3.cc -tao33.com -tao37.com -tao3c.com -tao66.com -tao800.com -tao8090.com -taoa.com -taoad.com -taoart.com -taoban.com -taobao-img.com -taobao.com -taobao.global -taobao.net -taobao.org -taobao.tw -taobao1111.com -taobao92.com -taobaocdn.com -taobaocity.com -taobaotest.com -taobaotesting.com -taobeihai.com -taobiaozu.com -taobizhong.com -taoc.cc -taocange.com -taocdn.com -taoche.com -taocheche.com -taoci.com -taoci163.com -taocibao.com -taocijiaju.com -taocloudx.com -taocz.com -taodake.com -taodang8.com -taodaso.com -taodaxiang.com -taodianla.com -taodingzhi.cc -taodiqupu.com -taodocs.com -taodu.com -taoduoke.com -taodushi.cc -taoerge.com -taoex.com -taofake.com -taofang.com -taofanghaiju.com -taofeige.com -taofen8.com -taofont.com -taogede.com -taogegou.com -taogepian.com -taogouxingxuan.com -taogula.com -taogutang.com -taohao6.com -taohaoba.com -taohaobang.com -taohaoge.com -taohaoqu.com -taohaowan.com -taohhui.com -taohua.com -taohuang.com -taohuaqizhi.com -taohuazu.net -taohuazu.pw -taohui.pub -taohuren.com -taojiaju8090.com -taojianghu.com -taojiji.com -taojin6.com -taojindi.com -taojingame.com -taojingroup.com -taojinhudong.com -taojinji.com -taojinyi.com -taoke.com -taokewenan.com -taokezhushou.com -taokouling.com -taoktv.com -taoku.com -taokuaibiao.com -taolale.com -taoliangroi.com -taolinzhen.com -taolvtong.com -taolx.com -taomanhua.com -taomee.com -taomeiju.com -taomeixie.com -taoming.com -taomingshi.com -taomingyan.com -taomobao.com -taomr.com -taonanfu.com -taonienie.com -taoniu.com -taoniupin.com -taoonelogistics.com -taooo.cc -taopb.com -taopiaopiao.com -taopic.com -taopinquan.com -taopuwang.com -taopxx.com -taoq.net -taoqao.com -taoquanquan.com -taor.work -taoruinyuan.com -taosaas.com -taosdata.com -taosha.club -taoshengtc.com -taoshouyou.com -taoshu.com -taoshuashua.net -taoshudang.com -taosj.com -taotao.com -taotaocar.com -taotaoit.com -taotaosports.com -taoth.com -taotian.com -taotiwang.com -taotu8.net -taotv.com -taotv.net -taou.com -taourl.com -taowangzhan.com -taoweng.site -taoxiangyoushu.com -taoxiaolu.com -taoxie.com -taoxie.com.tw -taoxv.com -taoyi-support.com -taoyitu.com -taoyizhu.com -taoyougou.com -taoyuanc.com -taoyuewenhua.net -taoyutaole.com -taozaisheng.com -taozg.store -taozhanyun.com -taozhibook.com -taozhuo.com -taozhutu.com -taozoucheng.com -tap-ad.com -tapafun.com -tapai.com -tapaijiu.com -tapapis.com -tapbooster.net -tapd-app.com -tapdata.net -tapenjoy.com -tapimg.com -tapimg.net -tapotiexie.com -tappile.com -tapque.com -tapsvc.com -taptap-api.com -taptap.com -taptapcode.com -taptapdada.com -tapurl.com -taraniss.com -tarcoist.com -tarczp.com -tarenacn.com -tarenwang.net -taro.zone -tarotchina.net -tarsier-infra.com -tarsocial.com -tartscenter.com -tasaiwang.com -taschb.com -tashine.com -tasiyun.com -task51.com -taskcity.com -tasly.com -taslypharma.com -tastespirit.com -tastien-external.com -tastientech.com -tastysteak.com -taswwx.com -taszk.com -taszls.com -tatatimes.com -tataxingqiu.com -tatazu.com -taterli.com -tatfook.com -tatiqrf.com -tatjt.com -tatstm.com -tattoo77.com -tattooo.net -taurentech.net -tauris.com -taurus66.com -taurusxin.com -tav-global.com -tav-global.net -tavsiktlig.com -tawk.link -tax-edu.net -tax.vip -tax100.com -taxchina.com -taxdata.tax -taxjiangkewang.com -taxksec.com -taxnote.org -taxspirit.com -taxtaoj.xyz -taxuspharm.com -taxwen.com -tayohya.com -tazai.com -tazhe.com -tazts.com -tb.pub -tb51.net -tb58.net -tbaas.tech -tbadc.com -tbadesign.org -tbaiq.com -tbankw.com -tbapp.com -tbcache.com -tbcdn.com -tbh5.com -tbhcc.com -tbhelper.com -tbizmail.com -tbjt18.com -tbjtss.com -tbk-app.com -tbkf.net -tbkong.com -tbl-import.com -tblk.me -tbmcas.com -tbmkt.com -tbnimg.com -tboxn.com -tbpark.com -tbq168.com -tbqjx.com -tbreeden.com -tbs321.com -tbsandbox.com -tbshare123.com -tbsite.net -tbt-tuning.com -tbt168.com -tbtopc.com -tburl.in -tburl.net -tbuser.com -tbwyl.com -tbxsw.com -tbyfsoft.com -tc-21.com -tc-mining.com -tc-semi.com -tc0770.com -tc108.com -tc118.com -tc12580.com -tc199.net -tc29.com -tc29.net -tc471cyhud.com -tc58.net -tc666.com -tc880.com -tc9011.com -tc930.com -tcbqcloud.com -tccfjt.com -tccrtzyxgs.com -tccxfw.com -tcdinfo.com -tcdj.com -tcdlive.com -tcdneo.com -tcdneo.net -tcdnext.com -tcdnhw.com -tcdnhw.net -tcdnkc.com -tcdnkcbak.com -tcdnlive.com -tcdnlivebak1.com -tcdnlivebak2.com -tcdnlp.com -tcdnos.com -tcdnos.net -tcdntip.com -tcdnv3.com -tcdnvod.com -tcdnvodbak.com -tcdnvodnew.com -tcdnvp.com -tcdnzb.com -tcdushi.com -tcecps.org -tced-transsion.com -tcedshare.com -tceic.com -tceratronix.com -tcfhty.com -tcfmglobal.com -tcgcardgame.com -tcgdxyb.xyz -tcggkj.com -tcgke.com -tcgsw.com -tchbgz.com -tchbsb.com -tchong.com -tchy.net -tchzt.com -tchzx.com -tciplay.com -tcisct.com -tcjdcapital.com -tcjx688.com -tckjfast.com -tckjhigh.com -tckwj.com -tcl-cctv.com -tcl.com -tclbusiness.com -tclclouds.com -tcljd.com -tclking.com -tclkqn.com -tclogx.com -tcloud19.com -tcloudbase.com -tcloudbase.net -tcloudbaseapi.com -tcloudbaseapp.com -tcloudbasegateway.com -tcloudbasestatic.com -tcloudbh.com -tcloudbi.com -tclouddrive.com -tcloudedu.com -tcloudfamily.com -tcloudhw.com -tcloudhw.net -tcloudit.com -tcloudit.net -tcloudlive.com -tcloudscdn.com -tcloudscdn.net -tcltech.com -tclyjg.com -tcm100.com -tcm360.com -tcm361.com -tcmer.com -tcmfrj.com -tcmmh.com -tcmppcloud.com -tcmwindow.com -tcnen.com -tcnews.cc -tcnvmms.com -tcomall.com -tcp.hk -tcp.pub -tcp5.com -tcping8.com -tcqmj.com -tcrcb.com -tcrcsc.com -tcs-y.com -tcsae.org -tcsasac.com -tcsdk.com -tcsdzz.com -tcseny.com -tcsisu.com -tcsnake.com -tcspbj.com -tcstzg.com -tcsurg.org -tctip.com -tctong.com -tctpwebank.com -tctpwebankcdn.net -tctpxwebank.com -tctran.com -tctz.com -tcvywoh.com -tcwqqdy.guru -tcwt.net -tcxmt.com -tcxw.cc -tcxwg.com -tcxx1985.com -tcxys.com -tcxzj.com -tcy1688.com -tcy365.com -tcy365.net -tcyad.com -tcyfw.com -tcylgslb.com -tczgwzw.com -tczj.net -tczmled.com -td-sf.com -td-tech.com -td22.com -td2cn.com -td300321.com -td776.com -td96.com -td98.com -tdances.com -tdatamaster.com -tdbbj.com -tdchats.us -tdchatvip.us -tdd.la -tdgod.com -tdiac.com -tdict.com -tdimg.com -tdjxhb.com -tdkchina.com -tdlcdn.com -tdlcdn.net -tdmall.cc -tdmoli2.com -tdmta.com -tdns127.com -tdnsdlovs1.com -tdnsdlovs2.com -tdnsdlovs3.com -tdnsdlovs4.com -tdnsdlovs5.com -tdnsdp.com -tdnsdpovs1.com -tdnsdpovs2.com -tdnsdpovs3.com -tdnsdpovs4.com -tdnsdpovs5.com -tdnsliveovs1.com -tdnsliveovs2.com -tdnsliveovs3.com -tdnsliveovs4.com -tdnsliveovs5.com -tdnspub.com -tdnspub.net -tdnsspovs1.com -tdnsspovs2.com -tdnsspovs3.com -tdnsspovs4.com -tdnsspovs5.com -tdnssticovs1.com -tdnssticovs2.com -tdnssticovs3.com -tdnssticovs4.com -tdnssticovs5.com -tdnsv1.com -tdnsv1.net -tdnsv10.com -tdnsv10.net -tdnsv11.com -tdnsv11.net -tdnsv12.com -tdnsv12.net -tdnsv13.com -tdnsv13.net -tdnsv14.com -tdnsv14.net -tdnsv15.com -tdnsv15.net -tdnsv2.com -tdnsv2.net -tdnsv3.com -tdnsv3.net -tdnsv4.com -tdnsv4.net -tdnsv5.com -tdnsv5.net -tdnsv6.com -tdnsv6.net -tdnsv7.com -tdnsv7.net -tdnsv8.com -tdnsv8.net -tdnsv9.com -tdnsv9.net -tdnsvodovs1.com -tdnsvodovs2.com -tdnsvodovs3.com -tdnsvodovs4.com -tdnsvodovs5.com -tdnsx1.com -tdotapp.com -tdpress.com -tdqs.com -tdrffh.com -tds-1300.com -tdshbao.com -tdsjbj.com -tdtbd.com -tdtec.com -tdun.com -tduou.com -tdwan.com -tdyxmoto.com -tdzntech.com -tdzyw.com -te-ch.tech -te-silicone.com -te160.com -te5.com -te6.com -tea-gd.com -tea26.com -tea7.com -teach365.com -teachblog.net -teachclinic.com -teachcn.net -teachercn.com -teachers211.com -teachertc.com -teakki.com -teaku.com -teallang.com -tealui.com -teamall.cc -teambition.com -teambition.io -teambition.net -teambitionapis.com -teamlogs.com -teamminus.com -teamotto.net -teamshub.com -teamtop.com -teamtopgame.com -teandy.com -teapottravel.com -teatreexy.com -tebaidu.com -tebiao.net -tebie6.com -tebiefuza.cloud -tebiezan.com -tebiezhuan.com -teboncapital.com -tec73.com -tecbbs.com -tecenet.com -tech-long.com -tech-mx.com -tech-now.com -tech-sem.com -tech-sonic.net -tech002.com -tech1024.com -tech110.net -tech2ipo.com -tech2real.com -tech4joy.com -techan.com -techannet.com -techanshop.com -techantong.net -techb2c.com -techbeat.net -techbrood.com -techdow.com -techfine.net -techflowpost.com -techgastronomy.com -techgogogo.com -techigh.net -techingrid.net -techmiao.com -techmoris.com -techo.chat -techo.pub -techo.show -techoke.com -techonegame.com -techqianmo.com -techshidai.com -techsir.com -techsize.com -techtmt.com -techtop.com -techuangyi.com -techub.news -techug.com -techvisum.com -techwalker.com -techwell-cn.com -techwin.com -techxue.com -teclast.com -tecmz.com -tecochina.net -tecolighting.com -tecompharma.com -tecreal.com -tecunonline.com -tecyle.com -teda-veolia.com -tedagas.com -tedahotel.com -tedahr.com -tedaich.com -tedaniu.com -tedastock.com -teddymobile.net -tedushi.com -tedx.net -tedy.cc -teejia.com -teeqee.com -tefact.com -tefl-china.net -tefscloud.com -tefscloud.net -tefshipping.com -tegongji.com -tegoushe.com -tegvzpvz.com -tehang.com -tehub.com -tehuituan.com -teilei.com -tejiabiao.com -tejiawang.com -tek-asia.com -tekkenthree.com -tekshanghai.com -tekuaijie.com -tel01.com -telaideyouxue.com -teld.net -telecok.com -telecomhb.com -telecomhr.com -telecomjs.com -telefen.com -telegramyug.cc -telehr.com -teleinfoo.com -teleland.net -teleows.com -televivi.com -telfri.net -teligen-cloud.com -teligen.net -teliute.org -telking.com -tell520.com -tellgen.com -telling.com -tellingtech.com -telllove520.com -tellmachgd.com -telnet404.com -telongzn.com -telpo.com -telrgeam.cc -telsda.com -telu.net -telunsu.net -tem.pw -temaiapi.com -temaiku.com -temch.net -temedical.com -temox.com -temp.im -temyee.com -ten.design -tenag.com -tenant-zone-dev.com -tenbilliongame.com -tencdns.com -tencdns.net -tencenst.com -tencent-blackboard.com -tencent-cloud.com -tencent-cloud.net -tencent-education.com -tencent-gcloud.com -tencent-gf.com -tencent-qejs.com -tencent-stock.com -tencent.co.id -tencent.com -tencent.com.hk -tencent.design -tencent.net -tencentads.com -tencentads.net -tencentadx.com -tencentanxin.com -tencentapigw.com -tencentapis.com -tencentapp.com -tencentapps.com -tencentbh.com -tencentbyod.com -tencentcc.com -tencentcdb.com -tencentcds.com -tencentcfs.com -tencentciam.com -tencentclb.cc -tencentclb.cloud -tencentclb.com -tencentclb.host -tencentclb.info -tencentclb.link -tencentclb.net -tencentclb.online -tencentclb.plus -tencentclb.pro -tencentclb.site -tencentclb.space -tencentclb.team -tencentclb.tech -tencentclb.top -tencentclb.vip -tencentclb.work -tencentclb.zone -tencentcloud-aiot.com -tencentcloud-demo.com -tencentcloud.com -tencentcloud.io -tencentcloudapi.com -tencentcloudapimarket.com -tencentcloudapp.com -tencentcloudbase.com -tencentcloudbase.net -tencentcloudclub.com -tencentcloudcore.com -tencentcloudcr.com -tencentcloudga.com -tencentcloudga001.com -tencentcloudga001.net -tencentcloudga002.com -tencentcloudga002.net -tencentcloudga003.com -tencentcloudga003.net -tencentcloudga004.com -tencentcloudga004.net -tencentcloudga005.com -tencentcloudga005.net -tencentcloudga006.com -tencentcloudga006.net -tencentcloudga007.com -tencentcloudga007.net -tencentcloudga008.com -tencentcloudga008.net -tencentcloudga009.com -tencentcloudga009.net -tencentcloudga010.com -tencentcloudga010.net -tencentcloudga011.com -tencentcloudga011.net -tencentcloudga012.com -tencentcloudga012.net -tencentcloudga013.com -tencentcloudga013.net -tencentcloudga014.com -tencentcloudga014.net -tencentcloudga015.com -tencentcloudga015.net -tencentcloudga016.com -tencentcloudga016.net -tencentcloudga017.com -tencentcloudga017.net -tencentcloudga018.com -tencentcloudga018.net -tencentcloudga019.com -tencentcloudga019.net -tencentcloudga020.com -tencentcloudga020.net -tencentcloudga021.com -tencentcloudga021.net -tencentcloudga022.com -tencentcloudga022.net -tencentcloudga023.com -tencentcloudga023.net -tencentcloudga024.com -tencentcloudga024.net -tencentcloudga025.com -tencentcloudga025.net -tencentcloudga026.com -tencentcloudga026.net -tencentcloudga027.com -tencentcloudga027.net -tencentcloudga028.com -tencentcloudga028.net -tencentcloudga029.com -tencentcloudga029.net -tencentcloudga030.com -tencentcloudga030.net -tencentcloudipv6.com -tencentcloudlab.com -tencentcloudlive.com -tencentcloudmarket.com -tencentcloudmq.com -tencentcloudns.com -tencentcloudsandbox.com -tencentcloudsec.com -tencentcloudses.com -tencentcloudsso.com -tencentcls.com -tencentcmq.com -tencentcode.com -tencentcomics.com -tencentconsulting.com -tencentcos.cloud -tencentcos.com -tencentcos.net -tencentcs.com -tencentcsms.com -tencentdayu.com -tencentdb.com -tencentddos.com -tencentdevices.com -tencentdigitalassistant.com -tencentdmp.com -tencentdms.com -tencentedi.com -tencentehs.com -tencenteiam.com -tencentelasticsearch.com -tencentemr.com -tencentes.com -tencentexpert.com -tencentfanyi.com -tencentff.com -tencentfilm.com -tencentfoundation.org -tencentga.com -tencentgames.co -tencentgames.us -tencentgme.com -tencentgse.com -tencentgy.com -tencenthangjia.com -tencentiam.com -tencenticp.com -tencentid.com -tencentidaas.com -tencentidentity.com -tencentimage.com -tencentimage.net -tencentiotcloud.com -tencentiotmedia.com -tencentipv6.com -tencentlegalservices.com -tencentlink.com -tencentlkfz.com -tencentlog.com -tencentmail.com -tencentmdb.com -tencentmeeting.com -tencentmfa.com -tencentmovie.com -tencentmusic.com -tencentoa.com -tencentoceanus.com -tencentpay.com -tencentpic.com -tencentproxy.com -tencentrce.com -tencentrcpcsdk.com -tencentresearch.com -tencentrio.com -tencentscf.com -tencentsecsdk.com -tencentserverless.com -tencentservicewatcher.com -tencentses.com -tencentsite.com -tencentsmhcname.com -tencentsmhuc.com -tencentsource.com -tencentstart.com -tencentsuite.com -tencentsurvey.com -tencentsurvey.net -tencenttcr.com -tencenttdai.com -tencenttdmq.com -tencenttds.com -tencenttid.com -tencenttione.com -tencenttree.com -tencenttrtc.com -tencenttymaas.com -tencentud.com -tencentvpc.com -tencentweiban.com -tencentwemeet.club -tencentwepark.com -tencentwf.com -tencentwm.com -tencentwukong.com -tencentxinge.com -tencentyouth.com -tencentyun.com -tencentzhzf.com -tenchii.com -tencity.com -tendacn.com -tendawifi.com -tendbcluster.com -tendbcluster.net -tendcode.com -tendfo.com -tendis.net -tendrones.com -tendyron.com -tengamy.com -tenganxinxi.com -tengbai-it.com -tengbenyueji.com -tengbo.cc -tengchangjiancai.com -tengchu.com -tengdatumu.com -tengdawl.com -tengdazuche.com -tengen.com -tengfang.net -tengfangyun.com -tengfeijob.com -tengfeizhida.com -tengfun.com -tenghen.com -tenghesmart.com -tenghoo.com -tengkackjr.com -tengkaxx.com -tenglong.net -tenglonggroup.com -tengmed.com -tengmoney.com -tengning.net -tengnu999.com -tengnuobx.com -tengrant.com -tengshengchina.com -tengshiauto.com -tengtiegongyi.com -tengwen.com -tengxuan.net -tengxunlct.com -tengxunqiye.com -tengxunqiyeyou.com -tengy.com -tengya.com -tengyang666.com -tengye-vc.com -tengyeshiye.com -tengyu-group.com -tengyuejz.com -tengyunqq.com -tengzhihh.com -tengzhipp.com -tengzhou0632.com -tengzhuan.com -tenhot.net -tenio.com -tenjia.cc -tenjincn.com -tenkent.com -tenlonstudio.com -tenmh.com -tennoo.com -tenorforman.com -tenorshare.com -tenorshare.tw -tenovatech.com -tenpay.com -tenqent.com -tenrays.com -tensafe.com -tenshi.cc -tensorchip.com -tensorflownews.com -tenstars.net -tensuntrans.com -tensure.com -tensynchina.com -tentech.club -tentrue.com -tentx.com -tenwowfood.com -tenwukong.com -tenxapp.com -tenxcloud.com -tenxcloud.net -teo-rum.com -teoacc.com -teoacc.net -teodns.com -teodns.net -teown.com -tepcb.com -tepin.hk -terabuy.com -terapark.com -terapines.com -terencemusic.com -teridge.com -terminal.icu -terminus.io -terose.com -terran.tech -terransforce.com -terratribes.com -terrytec.com -teruide.net -tese5.com -tesele.com -tesery.com -tesexiu.com -teshenqi.com -teshuzi.com -tesight.com -tesiro.com -tesolsh.com -tesoon.com -test-cignacmb.com -test.gbugs-qa.chromium.org -testbird.com -testcoo.com -testeb.com -testeck.com -testerhome.com -testict.com -testin.im -testingpai.com -testinsight.net -testlrq.com -testmrrvendor.com -testroad.org -testrust.com -testshm.com -testsparkling.com -testwaf.com -testwo.com -testxy.com -tesys.online -tetcm.com -tetegu.com -teteyu.com -tetrisone.com -tetuijiudian.com -teuhui.com -teuxipet.com -tevachem.com -tewsiext.com -tex68.com -texasholdemcup.com -texasholdemcup.net -texpage.com -texpageusercontent.com -texpro-group.com -textaihua.com -textin.com -texzhongtao.com -teyonds.com -teyop.com -tez-tencentclb.cloud -tez-tencentclb.com -tez-tencentclb.net -tezhengma.com -tezhongzhuangbei.com -tezign.com -tf-bm.com -tf.wiki -tf56.com -tfauto.net -tfax.com -tfbestea.com -tfbird.com -tfbkw.com -tfbx.net -tfcaijing.com -tfcloud.com -tfclub.com -tfcsz.com -tfedu.net -tfeic.com -tfengyun.com -tff.bz -tfg2.com -tfgame.vip -tfgas.com -tfgvb.com -tfidc.net -tfkj.games -tfkyj.com -tflzhongkongban.com -tfme.com -tfmywood.com -tfogc.com -tfogc.net -tfoison.com -tfol.com -tfoyin.com -tfrl.net -tfs906.com -tfsb.net -tfsino.com -tfsmy.com -tftplay.com -tfvisa.com -tfwka.com -tfxqrmyy.com -tfyum.net -tfzikao.com -tfzq.com -tg-vision.com -tg-vision.net -tg0123.com -tg1234.com -tg138.com -tgametalent.com -tgbus.com -tgcid.org -tgcondo.com -tgcook.com -tgcyber.com -tgect.com -tgeosmart.com -tggypn.com -tgjh.com -tgking.net -tgkjjg.com -tgldfm.com -tgljw.com -tglxh.com -tgnet.com -tgovcloud.com -tgprocs.net -tgr365.com -tgshiguan.com -tgslsst.com -tgstech.com -tgtenty.com -tgtest.site -tgtianshanga.com -tguangxue.com -tgxuwgdi.com -tgy365.com -tgzhz.com -tgzwmk.xyz -th-sjy.com -th-tencentclb.cloud -th-tencentclb.com -th-tencentclb.net -th-tencentclb.work -th-water.net -th.app -th.bing.com -th38.com -th99.com -thailycare.com -thaivor.com -thaiyellowpagesusa.com -thakjsbyy.com -thamco.com -thanju.com -thankbabe.com -thankyou99.com -thankyoumaris.com -thanmelin.com -thape.com -thatinterpreter.net -thatsmags.com -thatsmandarin.com -thatwind.com -thboiler.com -thcad.net -thcantech.com -thcf168.com -thclouds.com -thdangzhun.com -thdb.com -the-dahan.com -the4can.com -the5fire.com -the9.com -theantiagingshow.com -thearenacapital.com -thearyong.com -theateliercouture.com -thebeastshop.com -thebeijinger.com -thebeijingnews.com -thebestsexsites.com -thebird-air.com -thebizark.com -thebuddycreative.com -thecfa.info -thechois.cc -thecodeway.com -thedatasys.com -thederma.com -theduapp.com -thefastcdns.com -thefastfile.com -thefastimg.com -thefastmake.com -thefastvideo.com -thefilehosting.com -thefrodo.com -thegiac.com -thegraduation.store -thegreatwall-china.com -thehanshow.com -theheirism.com -theicstock.com -thejamy.com -thejiangmen.com -thejie.com -thejoyrun.com -thekunlunbeijing.com -thekunlunjingan.com -thelalu.com -thelarkcloud.com -thelastsky.com -theluxfarm.com -themebetter.com -themeoffices.com -themeol.com -themex.net -themisweeps.com -themixc.com -themulian.com -themumian.com -then9.com -thenburn.com -thenew123.com -thenewhotel.com -thenextravelmarket.com -theoborn.com -theorychina.org -thepeak.com.my -thepoemforyou.com -thepredictivemodel.com -thepresidentialhotel.com -thepsychscrivener.com -thepuli.com -therasaganga.com -thereszhaiproject.com -theseshepherd.com -thesetech.com -thesmartmelon.com -thesofabedshop.com -theszt.com -thetali.com -thethirdmedia.com -thetigerhood.com -thetongji.com -thetoplab.com -thetype.cloud -thevaldezfamily.com -thevideosworld.com -theweina.com -thewestinpazhou.com -thewhitedragons.com -thewowa.com -thexinji.com -thexnode.com -theytree.com -thfdc.net -thfdcsoft.com -thffc.com -thgkyy.com -thgsjt.com -thhymj.com -thief.im -thiemechina.com -thinbug.com -thingclub.com -thingjs.com -thingskit.com -thinheal.com -think-mall.com -think-way.net -thinkcloudlab.com -thinkcmf.com -thinkdid.com -thinkdream.com -thinkeridea.com -thinkerride.com -thinkerx.com -thinkindrupal.com -thinkive.com -thinkjs.org -thinkpad.com -thinkprinter.net -thinkraz.com -thinksrc.com -thinkstu.com -thinkvo.com -thinkyea.com -thinkyeah.com -thinla.com -thinmoo.com -thinvent.com -thirtyindiantrail.com -this6.com -thishealthsummit.com -thisshop.com -thiztech.com -thjb.net -thjiang.com -thjjhs.com -thjunshi.com -thkconn.com -thkill.com -thm3u8.com -thmall.com -thmfvb.com -thmins.com -thmovie.com -thmz.com -thmzedu.com -thny.cc -thomasschools.com -thoreco.com -thorn.red -thosefree.com -thoughtworkers.org -thrbs.com -threadcn.com -threatbook.com -threatbook.net -threetong.com -threewater.net -thrive-chemicals.com -thronechina.com -thrrip.space -ths123.com -ths8.com -thsj.com -thsolar.com -thstars.com -thsware.com -thtfpc.com -thufeng.net -thumbenv.com -thumedialab.com -thundercdn.com -thundercdn.net -thundercloud.group -thunderflash.net -thunderobot.com -thunderplaygame.com -thundersoft.com -thunderurl.com -thunis.com -thunisoft.com -thunlp.org -thupdi.com -thvow.com -thwater.com -thwgetsy.com -thwiki.cc -thwpmanage.com -thxddb.com -thxdx.com -thxedu.com -thxflt.com -thxy.org -thxyy.com -thyoo.com -thyuu.com -thz56.com -thzab.com -thzu.cc -ti-node.com -ti-solar.com -ti0s.com -tiamaes.com -tian-gang.com -tian-jie.com -tian-run.com -tian10.com -tianan-cyber.com -tianan-insurance.com -tianan-life.com -tianan.com -tianan.net -tiananaq.com -tiananchem.com -tiananmenchenglou.com -tianapi.com -tianbaosi.com -tianbiao.net -tiancaixing.com -tiancaixing.net -tiancao360.com -tiancehang.com -tianchanggongjiao.com -tianche.net -tianchenalum.com -tianchengas.com -tianchi.com -tianchihao.com -tianchu.com -tianchuixiang.com -tianchy.com -tiancichina.com -tiancity.com -tiancitycdn.com -tiandirenfarm.com -tianditao.com -tianditu.com -tiandiyoyo.com -tiandizw.com -tianduntech.com -tiandy.com -tianehui.net -tianfeiyu.com -tianfeng.cc -tianfu-stone.com -tianfucaijing.com -tianfugroup.com -tianfuhui.xin -tianfupic.com -tianfusoftwarepark.com -tiangaicha.com -tiangang.com -tiangen.com -tiangou.xyz -tianhai.info -tianhai2002.com -tianhaixing.com -tianhaohz.com -tianhebus.com -tianhejiayi.com -tianheoil.com -tianhepiano.com -tianheplaza.com -tianhetech.com -tianhongchina.com -tianhongdiaosu.com -tianhonglaser.com -tianhongsunshine.com -tianhujy.com -tianiot.com -tianji368.com -tianjiachem.com -tianjiang-tech.com -tianjiarun.com -tianjibio.com -tianjigame.com -tianjigu.com -tianjihr.com -tianjimedia.com -tianjin-air.com -tianjin-iwc.com -tianjin-marathon.com -tianjin-patek.com -tianjinbbs.com -tianjinbohaileasing.com -tianjingames.com -tianjinwe.com -tianjiyy.com -tiankang.com -tiankong.com -tiankonghuyugames.com -tiankuojy.com -tianlaiedu.com -tianlaijiaoyu.com -tianlaikge.com -tianlailive.com -tianli-blog.club -tianlian.com -tianlijianshe.com -tianliwindpower.com -tianlongshop.com -tianlun.net -tianlun100.com -tianlunano.com -tianlungas.com -tianma3600.com -tianmaijigou.com -tianmalvyou.com -tianmao.com -tianmapharma.com -tianmarketing.com -tianmawx.com -tianmaying.com -tianmimiclub.com -tianmu.mobi -tianmu.net -tianmuds.com -tianmumusic.com -tianmunews.com -tianmupe.com -tiann90.com -tiannengcarbon.com -tiannilaw.com -tianninghr.com -tiannucoating.com -tiannv.com -tianpeng.com -tianpu.com -tianqi.cc -tianqi.com -tianqi24.com -tianqi321.com -tianqiaojuyuan.com -tianqiaoyishuzhongxin.org -tianqiapi.com -tianqicloud.com -tianqihoubao.com -tianqiip.com -tianqijun.com -tianqilithium.com -tianqistatic.com -tianqiweiqi.com -tianqiyubao3.com -tianqiyubao4.com -tianqiyubao9.com -tianqizhixin.com -tianqu.com -tianquangs.com -tianquetech.com -tianqunnet.com -tianrkl.com -tianrow.com -tianruihr.com -tianrunshunteng.com -tianruo.net -tianruoyun.com -tiansdl.com -tiansenjituan.com -tianshan277.com -tianshanxt.com -tianshengdiyi.com -tianshengholdings.com -tianshenyule.com -tianshi2.net -tianshiyiyuan.com -tianshizhisheng.net -tianshugame.com -tianshungroup.com -tiansu-china.com -tiantaichina.com -tiantaienergy.com -tiantailaw.com -tiantaishebei.com -tiantaivideo.com -tiantanbio.com -tiantang100.com -tiantang6.com -tiantangnian.com -tiantanpark.com -tiantaocs.com -tiantaxx.com -tiantexing.com -tianti.com -tiantianbannixue.com -tiantiancaige.com -tiantiancaipu.com -tiantianfm.com -tiantianfunds.com -tiantianleshuiguo.com -tiantianquce.com -tiantiantiaosheng.com -tiantianxieye.com -tiantianxuexi.com -tiantingfm.com -tiantis.com -tiantonglaw.com -tianvalue.com -tianwang.com -tianwenca.com -tianwt.com -tianwugroup.com -tianxia70.com -tianxiajiameng.com -tianxiajiaoyi.com -tianxiamaimai.com -tianxiang.com -tianxianmao.com -tianxiaputao.com -tianxiaquanchengapp.com -tianxiawangxiao.com -tianxiawuzei.org -tianxiaxiao.net -tianxiaxinyong.com -tianxiayouxi.com -tianxiayouyue.com -tianxin100.vip -tianxing.com -tianxingjianyiliao.com -tianxinkeji.com -tianya.com -tianya.tv -tianya66.com -tianya999.com -tianyablog.com -tianyabook.com -tianyaclub.com -tianyaluedu.com -tianyancha.com -tianyancha.net -tianyangqz.com -tianyanqifu.com -tianyaruanwen.com -tianyaui.com -tianyecollege.com -tianyi1368.com -tianyibook.com -tianyid78.com -tianyihy.net -tianyiidc.com -tianyijue.com -tianyinzaixian.com -tianyisc.com -tianyitop.com -tianyiwangxiao.com -tianyiwenkong.com -tianyon.com -tianyongcheng.com -tianyuanfishing.com -tianyuanjiudian.com -tianyuanpet.com -tianyucangqiongxiaoshuo.com -tianyuchaye.com -tianyuimg.com -tianyujidi.com -tianyutest.com -tianyuyuan.com -tianzeqiti.com -tianzhao.net -tianzhibook.com -tianzhishui.com -tianzhitong.net -tianzhuo.com -tianzhuobj.com -tianzijiaoyu.com -tianziweb.net -tianzongyouxi.com -tiaodao.com -tiaofang.com -tiaoguangbolimo.com -tiaohao.com -tiaohaoba.com -tiaoka.com -tiaomama.com -tiaomaruanjian.com -tiaona.com -tiaooo.com -tiaotiaotang.net -tiaovon.com -tiaoyue.xyz -tiaozhanbei.net -tiapi.net -tiatiatoutiao.com -tibaitong.com -tibet3.com -tibet4wd.com -tibetanbible.org -tibetannet.com -tibetcn.com -tibetcnr.com -tibetcul.com -tibetculture.net -tibetcyts.com -tibethospital.com -tibetpic.com -tic-gx.com -tica.com -ticachina.com -ticketdashi.com -ticketmars.com -ticp.io -ticp.net -ticpayidr.com -ticpsh.com -ticstore.com -ticwear.com -tidaas.com -tidb.ai -tidb.io -tidb.net -tidbcloud.com -tide-china.com -tide.fm -tidejd.com -tidemedia.com -tidepharm.com -tidesec.com -tideswing.fun -tidi.mobi -tiduyun.com -tieba.com -tiebaimg.com -tiebanzi.com -tiebaobei.com -tiechui.cc -tiedan2019.com -tiefen.space -tiegu.com -tiehuatu.com -tiejiang.org -tiejiapai.com -tiejiong.com -tiejunmedia.com -tiekuangshi.com -tielemao.com -tielingcn.com -tielu.cc -tielu.org -tielu123.com -tielujob.com -tiemeeting.com -tiemu.com -tieniujixie.com -tiens.com -tiepishihu.com -tieque.net -tiesan.com -tieshuwang.net -tietie.la -tietuku.com -tieweishi.com -tieww.com -tiexing.net -tiexiuyugudao.com -tiexue.net -tiexuedanxin.net -tieyang.com -tieyou.com -tiezhima.com -tiezis.com -tiger-code.com -tiger-info.com -tiger-motion.com -tiger2doudou.com -tigerbbs.com -tigerbrokers.com -tigerbrokers.net -tigerdns.com -tigeresop.com -tigerfintech.com -tigermed.net -tigermedgrp.com -tigersecurities.com -tigeryun.com -tigr.link -tiham.com -tijian001.com -tijian123.com -tijianbao.com -tijianshangmen.com -tijianzhuanjia.com -tijiaoshou.com -tijox.cc -tijox.com -tijox.hk -tijox.net -tijox.org -tik2019.com -tikersport.com -tiktoknewaccount.com -tiktokrow-cdn.com -tikuol.com -tikv.org -tileywy.com -tillcn.com -tillglance.com -timanetworks.com -time-weekly.com -time-year.com -time.xtracloud.net -timecloud.us -timecoo.com -timedg.com -timedl.com -timedoo.com -timeep.com -timelate.com -timelessq.com -timemachine.icu -timenetwork.tech -timeofdate.com -timeoutbeijing.com -timeoutcn.com -timeoutshanghai.com -timepill.net -timeread.com -timeread.net -timesartmuseum.com -timesboom.com -timescollege.com -timesdf-hn.com -timesfortune.com -timesndt.com -timesoutlets.com -timestock.co -timetickme.com -timeticktick.com -timetw.com -timev.com -timewelder.com -timez.com -timi78.com -timibase.com -timing360.com -timipc.com -timitime.com -timiwc.com -timjx.com -timmerse.com -timzuu.com -tinavi.com -tinengwang.com -tinetcloud.com -tinfinite.com -tinfo.com -ting22.com -ting27.com -ting55.com -ting89.com -tingbook.com -tingchewei.net -tingchina.com -tingchucontrol.com -tingclass.com -tingfun.net -tinghaohr.com -tinghen.com -tinghongzz.com -tingjia.com -tingjiandan.com -tingkanbao.com -tingke8.com -tingkez.com -tinglifangs.com -tingmall.com -tingmei.com -tingmimi.net -tingmubeef.com -tingniukeji.com -tingood.com -tingpiting.com -tingroom.com -tingshubao.net -tingshumi.com -tingshuo51.com -tingshuowan.com -tingsonglaw.com -tingtao.net -tingtingfm.com -tingtingwo.com -tingvision.com -tingxi8.com -tingxiangzu.com -tingxiaoyou.com -tingyulou.com -tingyutech.net -tiniangroup.com -tinigame.xyz -tinkerpatch.com -tinktek.net -tinman798.net -tinning-automation.com -tinsecret.com -tinstu.com -tinwod.com -tinychen.com -tinycms.xyz -tinyems.com -tinyfeng.com -tinyflare.com -tinygroup.org -tinylab.org -tinymind.com -tinypixos.com -tinyservices.net -tinywan.com -tinyyuan.com -tipaipai.com -tipask.com -tipdim.org -tipdm.com -tipdm.org -tipray.com -tiprpress.com -tipsoon.com -tiqakcrxmyca6i.com -tiqiaa.com -tiqianle.com -tiqinpu.com -tirechina.net -tiremay.com -tiruna-cn.com -tiscend.com -tisgame.com -tisi.org -tisino.com -tisiwi.com -tisohinge.com -tisptech.com -tita.com -tita.net -titamobi.com -titan007.com -titan24.com -titanar.com -titanlaw.com -titanm.com -titanmatrix.com -titans-ele.com -titansci.com -titapark.com -titianshanfz.com -tititxt.com -titloteka.com -titussb.com -tivitv.com -tiwb.com -tiwu.net -tixa.com -tixaapp.com -tiyamat.com -tiye.me -tiyeji.com -tiyep.com -tiyucdn.com -tiyufeng.com -tiyuguoji.com -tiyule.com -tiyusaishi.com -tiyushe.com -tiyuxiu.com -tizi.com -tizi365.com -tizoinfo.com -tj-fch.com -tj-guangxin.com -tj-hcdz.com -tj-kingdee.com -tj-model.com -tj-un.com -tj0573.com -tj1-miui-bn-stage01.kscn -tj20.com -tj2022.com -tj316bxg.com -tj47zx.net -tj9.co -tjab.org -tjafxh.com -tjaide.com -tjbb.com -tjbearing.com -tjbh.com -tjbhnews.com -tjboai.com -tjbpi.com -tjbsq.com -tjbus.com -tjbxingbian.com -tjcamp.com -tjcaoshiyabo.com -tjcecp.com -tjcep.com -tjchangxing.com -tjchildrenshospital.com -tjckjr.com -tjcn.org -tjcondom.com -tjculture.com -tjcyts.com -tjczjxsb.com -tjdeviser.com -tjdewy.com -tjdrzc.com -tjduo.com -tjdyf.com -tjeco-city.com -tjeti.com -tjfengfan.com -tjfer.com -tjflcpw.com -tjfxdx.com -tjfytech.com -tjgcs.com -tjgdjt.com -tjgg88.com -tjghw.com -tjgmcg.com -tjgportnet.com -tjgtgd.com -tjhgmc.com -tjhmsj.com -tjhtcpvc.com -tjhyzyxy.com -tjian.com -tjinsuo.com -tjjfrh.com -tjjhqyy.com -tjjiaotong.com -tjjinglang.com -tjjt360.com -tjjtjt.net -tjjwt.com -tjjwwl.com -tjjzzls.com -tjkache.com -tjkeheng.com -tjkj300.com -tjkp-tools.com -tjkpzx.com -tjkx.com -tjkximg.com -tjllhbkj.com -tjluohuzhijia.com -tjmama.com -tjmcgc.com -tjmhc.com -tjmldy.com -tjmuch.com -tjnjw.com -tjoy.biz -tjpa-china.org -tjpma.org -tjpme.com -tjportnet.com -tjqiqiu.com -tjqq.cc -tjrenliziyuan.com -tjrenmu.com -tjrge.com -tjruien.com -tjsjnxh.com -tjsjwygg.com -tjsjx.com -tjskq.com -tjskqyy.com -tjst.net -tjstats.com -tjsylhh.com -tjszyy.com -tjtele.com -tjtjshengtu.com -tjtongrentang.com -tjtrust.com -tjtsxd.com -tjtvc.com -tjubbs.net -tjumc.com -tjupdi.com -tjupt.org -tjuzj.com -tjwatergroup.com -tjwch.com -tjwch.org -tjwenjie.com -tjwf.com -tjwj88.com -tjwmschool.net -tjxdzhonda.com -tjxinyu.com -tjxiqi.com -tjxunlei888.com -tjxxcl.com -tjxz.cc -tjydyt.com -tjyun.com -tjzb.com -tjzcsj.com -tjzfcg.com -tjzfhgcj.com -tjzhongyiyao.com -tjzhyj.com -tjznjt.com -tjzxqyxh.org -tjzxyy.com -tjzyec.com -tjzyefy.com -tjzyfw.com -tjzymob.com -tk-life.com -tk-rays.com -tk-xiong.com -tk-zx.com -tk.anythinktech.com -tk163.com -tk233.xyz -tk315.com -tkas2019.com -tkchina.com -tkckjr.com -tkcn.cc -tkd-suzhou.com -tkfff.com -tkgame.com -tkhealthcare.com -tkjzym.com -tkmedicare.com -tkpension.com -tkplusemi.com -tkqpggvx.com -tkrlab.com -tktjwhyy.com -tktk123.com -tkw.cc -tkwcn.com -tkww.hk -tkxb.net -tkxlglyy.com -tkxxd.net -tkxyy.com -tky001.com -tkyks.xyz -tkzqv.com -tl-finechem.com -tl-self.com -tl-shida.com -tl-tek.com -tl-vogue.com -tl.gscm.tv -tl100.com -tl2y.com -tl50.com -tl88.net -tlang.com -tlbapm.com -tlbsbigdata.com -tlby120.com -tlbyx.com -tlcbf.com -tlcharity.com -tlcssk.com -tlfw.net -tlfzkj.com -tlgas.com -tlgslb.com -tlhjjc.com -tlhmhd.com -tlightsky.com -tlink.io -tlinkaccess.com -tlinkaccess2.com -tlinx.com -tliveapi.com -tliveapi2.com -tliveapp.com -tliveauth.com -tliveauth2.com -tlivecdn.com -tlivecdnv1.com -tlivecdnv2.com -tlivecdnv3.com -tlivecdnv4.com -tlivecloud.com -tlivecontroller.com -tlivecontroller2.com -tlivedal.com -tlivedal2.com -tlivedeliver.com -tlivedispatch.com -tlivedispatch2.com -tlivedns.com -tlivedns2.com -tlivednsv1.com -tlivegslb.com -tlivehttpdns.com -tlivehttpdns2.com -tliveigtm.com -tliveigtm2.com -tliveigtm3.com -tlivemcdn.com -tlivemcdnsched.com -tliveplay.com -tliveplaydemo.com -tliveproxy.com -tliveproxy2.com -tlivepush.com -tlivepush2.com -tlivertc.com -tlivertc2.com -tlivesdk.com -tlivesdk2.com -tlivesdkconfig.com -tlivesdkconfig2.com -tlivesource.com -tlivesrc.com -tlivesrc2.com -tlivesrcaccess.com -tlivesrcaccess2.com -tlivesrcapp.com -tlivesrcapp2.com -tlivesrcdemo.com -tlivesrcschedule.com -tlivesrcschedule2.com -tlivessl.com -tlivessl2.com -tlivestability.com -tlivestability2.com -tlivestream.com -tlivestream2.com -tliveupload.com -tliveupload2.com -tliveweb.com -tliveweb2.com -tlivewebrtc.com -tlivewebrtc2.com -tlivewebrtcpush.com -tlivewebrtcpush2.com -tlivewebrtcpushsch.com -tlivewebrtcpushsch2.com -tljas.com -tljcw.com -tljob8001.com -tljwbj.com -tljx.net -tlkuazr.com -tlomo.com -tloongroup.com -tlqwine.com -tlrcbk.com -tlryjg.com -tlsj-hd.com -tlsy.vip -tlt5.com -tlte.com -tltesoft.com -tltuan.net -tltzg.com -tlu5.com -tlwanjishan.com -tlwk.net -tlwok.com -tlxxw.com -tly.cloud -tlyz.net -tlzey.com -tlzhjt.com -tlzyxy.com -tm-auto.com -tm0755.com -tm1949.com -tm51.com -tm5ad.com -tmaill.com -tmall.com -tmall.hk -tmall.ru -tmallalicdn.com -tmallgenie.com -tmallgenieapi.com -tmallplay.net -tmalltv.com -tmallvvv.com -tmaotech.com -tmbbs.com -tmc-youqun.com -tmcdn.net -tmctool.com -tmecd.com -tmeiju.com -tmetb.net -tmfcloud.com -tmgdb.com -tmhong.com -tmhtour.com -tmhttc.com -tmianyang.com -tmigrate.com -tmirob.com -tmisp.com -tmjbee.com -tmjd123.com -tmjiasuqi.com -tmjj.com -tmjl.ai -tmjob88.com -tmkjcx.com -tmkoo.com -tmmini.com -tmoxrobot.com -tmqd.me -tmqd.so -tmqmqj.com -tmrcw.com -tmrenergy.com -tms56.com -tms8.com -tmscnz.com -tmsemi.com -tmsf.com -tmshare123.com -tmsmh.com -tmsmq.com -tmsx.net -tmtforum.com -tmtmw.com -tmtpost.com -tmtpost.net -tmtsmartlife.com -tmtsmartrun.com -tmtsp.com -tmuaih.com -tmusoft.com -tmuyun.com -tmwcn.com -tmwxxcx.com -tmwzs.com -tmxmall.com -tmxxw.com -tmxz.me -tmyirick.com -tmzvps.com -tn2000.com -tnblog.net -tnblt.com -tnbz.com -tnccdn.com -tnebula.net -tnedu.com -tnettms.com -tngcjx.com -tngdigital.com.my -tnodenow.com -tnong.com -tnsou.com -tnyoo.com -tnzuwu.com -to-future.net -to2025.com -to4f.com -to999.com -toalan.com -toaobg.com -toast.pub -toaw.net -tobaccochina.com -tobaccosz.com -tobebetterjavaer.com -toberp.com -tobetopone.com -tobnews.com -tobo1688.com -tobosu.com -tobsnssdk.com -tochgo.com -tochinajob.com -tocomtech.com -tocosc.com -tocreating.com -today.ai -today36524.com -today99.com -todaycache.net -todaydunhuang.com -todayguizhou.com -todaygx.com -todayidc.com -todayintnet.com -todayios.com -todayisp.net -todaymedtech.com -todaynic.com -todayonhistory.com -todaypublish.com -todayyj.com -todesk.com -todgo.com -todoen.com -todokeji.com -todokit.xyz -todolist.chat -todolist.email -todolist.pub -todonow.com -todoyi.com -todreamer.com -toec-gdgs.com -toec-iot.com -toec.com -toecsec.com -tofengmi.com -tofflon.com -tofine.com -togj.com -togoalad.com -togocareer.com -togogo.net -togoo.com -tohfox.com -tohosting.com -tohosting.net -tohours.com -toidea.com -toiue.com -tokcoder.com -tokeiaat.com -tokeimall080.com -tokeisuisukopi.com -token-ad.com -token-sensor.com -tokenglish.com -tokensky.net -tokimekiclub.org -tol24.com -tom.cat -tom.com -tom163.net -tom61.com -tomatogames.com -tomatolei.com -tomatooflove.com -tomax.xyz -tomdiy.com -tomley.com -tommsoft.com -tompda.com -tomson-group.com -tomson-riviera.com -tomwx.net -tonbao.com -tone-sun.com -tonebj.com -tonechemical.com -tonehk.com -tonewinner.com -tong-pao.com -tong-run.com -tongaokeji.com -tongbanjie.com -tongbaoyun.com -tongbb.net -tongbupan.com -tongbusj.com -tongceyiliao.com -tongchaba.com -tongcheng.cc -tongchengbx.com -tongchengchaku.com -tongchengir.com -tongchengqun.vip -tongchengxuanshang.com -tongchouba.com -tongda2000.com -tongdanet.com -tongdaohui.com -tongdaonews.com -tongdaotv.com -tongdayun.com -tongdelove.com -tongdinggroup.com -tongdun.net -tongdy.com -tongfangpc.com -tongfei.tech -tongfengkh.com -tongfu.net -tongfudun.com -tongfugroup.com -tonggao.info -tongguanbao.net -tonghanguav.com -tonghuan.com -tonghuiqiye.com -tongji.com -tongji.linezing.com -tongjia.com -tongjiai.com -tongjijs.com -tongjipf.com -tongleer.com -tonglei.com -tonglian.com -tongliangrc.com -tongliaowang.com -tonglichang.com -tonglingwulian.com -tonglize.com -tongmengge.com -tongmengguo.com -tongniguoji.com -tongoiltools.com -tongpiao.com -tongquee.com -tongrenchina.org -tongrentang.com -tongrentangjb.com -tongrentangkj.com -tongsha.com -tongshanbank.com -tongshiling.net -tongshilu.com -tongshuai.com -tongshun6.com -tongsuo.net -tongtaiamc.com -tongtech.com -tongtex-fashion.com -tongtianta.site -tongtongtong.com -tongtongyilian.com -tongtool.com -tongtut.com -tongwang.net -tongwei.com -tongwo.net -tongxiang.net -tongxianghuicn.com -tongxiangshun.com -tongxiclub.com -tongxiehui.net -tongxigroup.com -tongxin.com -tongxin.org -tongxingbao123.com -tongxinghui.com -tongxinky.com -tongxinmao.com -tongxiong.com -tongxue.com -tongxue365.com -tongxue8.com -tongyangship.com -tongyaoplay.com -tongyavisa.com -tongye.biz -tongye56.com -tongyehuanbao.com -tongyi.com -tongyicm.com -tongyidrying.com -tongyiplastic.com -tongyist.com -tongyonggroup.com -tongyongpe.net -tongyongts.com -tongyongzs.com -tongyoujiancai.com -tongyuan.cc -tongyuangas.com -tongyuanos.com -tongyue.com -tongyuheavy.com -tongzecn.com -tongzhuo100.com -tongzhuodn.com -tongzicha.com -tongzsf.com -tonhwa.com -toniandguychina.com -tonitech.com -tonki-tpms.com -tonksz.com -tonlyele.com -tonnp.com -tonsontec.com -tontian.com -tontime.com -tontsen.com -tony-bro.com -tonycrane.cc -tonysfarm.com -tonze.com -toobiao.com -toocf.com -toocle.com -toodaylab.com -toodudu.com -tool.la -tool.lu -tool56.com -tool77.com -tooleemesse.com -toolgg.com -toolkk.com -toolmall.com -toolmao.com -toolnb.com -toolonline.net -tools.team -toolscat.com -tooltt.com -toolwa.com -tooming.com -toomoss.com -toonechem.com -tooopen.com -tooseo.com -tootour.com -toouoo.com -top-cnc.com -top-dianjingfeng.com -top-elan.com -top-shanghai.com -top-trust.com -top100school.com -top100summit.com -top147.com -top168.com -top1game.com -top263.net -top2fun.com -top3456.com -top4xlc.com -top6000.com -topbester.com -topbiol.com -topbiz360.com -topbook.cc -topbridge.asia -topcanchina.com -topcdb.com -topcentenviro.com -topcheer.com -topchitu.com -topcj.com -topcomm.co -topcpu.net -topcrab.com -topcsic.com -topcto50.com -topdodo.com -tope365.com -topeastic.com -topeditsci.com -topeet.com -topeetboard.com -topengroup.net -topexhib.net -topfisc.com -topflames.com -topfo.com -topfreeweb.net -topgoer.com -topgprs.com -topgslb.com -topgus.com -tophant.com -tophold.com -tophr.net -tophub.app -tophub.fun -tophub.today -topideal.com -topit.pro -topit5.com -topjoy.com -topjoycloud.com -topkhealth.com -topku.com -toplanit.com -toplee.com -toplevel.ink -toplife.com -toploong.com -topmba.mobi -topmediai.com -topnic.net -topomel.com -toppdu.com -topperuse.com -topping.pro -toppingaudio.com -toppollen.com -toppps.com -toppridehk.com -topproio.com -topqh.net -toprand.com -toprender.com -toprocn.com -topsage.com -topscan.com -topsedu.com -topsim.cc -topsmartinfo.com -topsmt.com -topsresearch.com -topsrx.com -topstar.art -topstarltd.com -topsunholdings.com -topsunleisure.com -topsunpower.cc -toptastewin.com -topthink.com -topthink.net -toptiao.com -toptopn.com -toptopone.com -toptubeco.com -topuc.com -topunix.com -topv1.com -topwalk.com -topway.org -topwaysoft.com -topwidgets.com -topwinchance.com -topwinfo.com -topxgun.com -topxiu.com -topxlc.com -topxlc6.com -topys.com -topyun.tv -topyun.vip -topzj.com -torch.plus -torcstark.com -toromotor.com -torovo.com -torphan.com -torrealcielo.com -toscdn.com -toshiba-gtbs.com -toshiba-semicon-storage.com -toshiba-thpc.com -toshiba-tnis.com -toshow.com -tosohbioscience.net -tosonet.com -tosound.com -tospur.com -tosstar5117.com -tosuai.com -tosunk.com -totainfo.com -totalacg.com -totenchina.com -totheglory.im -totiot.com -totochina.com -totodi.com -totope.com -totoro.pub -tototang.com -totren.com -totwoo.com -totwoseal.com -tou-tiao.com -toubang.tv -toucdn.com -touch-ck.com -touch-massageandholistictherapies.com -touch-moblie.com -touch4.me -touchat.online -touchealth.com -touchelf.com -touchev.com -touchjoin.com -touchjoint.com -touchmark.art -touchngo.com.my -touchpal.com -touchsh.com -touchsprite.com -touchsprite.net -touchstudio.net -touduyu.com -toufu321.com -tougongjiao.com -tougub.com -touhou.casa -touhou.cd -touhou.market -touhoudog.net -toujidao.com -touker.com -toumiao.com -toupb.com -touqikan.com -tour110.com -tourboxtech.com -tourenwang.com -tourgansu.com -tourhr.com -tourjob.net -tourongjia.com -tourongzi.org -toursbms.com -tourscool.com -tourunion.com -tourye.com -tourzhenjiang.com -tourzj.com -toushivip.com -toutiao.com -toutiao.org -toutiao11.com -toutiao12.com -toutiao13.com -toutiao14.com -toutiao15.com -toutiaoapi.com -toutiaoapp.com -toutiaobashi.com -toutiaobus.com -toutiaocdn.com -toutiaocdn.net -toutiaocloud.com -toutiaocloud.net -toutiaogood.com -toutiaohao.com -toutiaohao.net -toutiaoimg.com -toutiaoimg.net -toutiaojingyan.com -toutiaojisu.com -toutiaolite.com -toutiaolite1.com -toutiaolite2.com -toutiaoliving.com -toutiaonanren.com -toutiaopan.com -toutiaopanapi.com -toutiaopic.com -toutiaoribao.net -toutiaostatic.com -toutiaovod.com -toutiaowap.com -toutiaowap.net -toutiaoyule.com -toutiaozb.com -toutoufc.com -toutoupiao.com -touwenzi.com -touwho.com -touxiang8.com -touxiang88.com -touxiangkong.com -touying.com -touzhijia.com -touzi.com -touzid.com -touzikuaibao.com -touzime.com -touzime.net -touzitiandi.com -touzizn.com -towavephone.com -towelltech.com -tower.im -tower0788.com -towinor.com -towmy.com -towngasenergy.com -towngasvcc.com -townsky.com -townsungroup.com -towntour.net -towords.com -towry.me -towyzcxc.com -toxingwang.com -toybaba.com -toycloud.com -toyean.com -toyota-nanning.com -toyoures.com -toyoutesting.com -toysir.com -toysol.com -tp-data.com -tp-hivi.com -tp82.com -tpadx.com -tpbook.com -tpccoo.com -tpdmp.com -tpdz.net -tpe-tencentclb.cloud -tpe-tencentclb.com -tpe-tencentclb.net -tpe-tencentclb.work -tpfangchan.com -tphdled.com -tpiccdn.com -tpiccdn.net -tpimg.xyz -tpjhr.com -tpjwww.com -tpkey.com -tplcd100.com -tplife.com -tplogincn.com -tpooo.com -tpoxiaozhan.com -tpqxb.com -tprtc.com -tps138.info -tpsbp.com -tpsea.com -tpsge.com -tpshleasing.com -tpsns.com -tpstatic.net -tpsxs.com -tpszw.com -tpturang.com -tpuda.com -tpumlir.org -tpy100.com -tpy119.com -tpyboard.com -tpykyy.com -tpyzq.com -tpzlj.com -tqads.com -tqapp.com -tqapp.net -tqcj.com -tqcp.net -tqcpc.com -tqcrane.com -tqcto.com -tqdianbiao.com -tqedu.net -tqgxb.com -tqhj88.com -tqiangg.com -tqiangg.net -tqiantu.com -tqip.com -tqkgjt.com -tql.ink -tqle.com -tqmall.com -tqmba.com -tqmdp.net -tqmy168.com -tqpac.com -tqqa.com -tqqyun.com -tqrobodrive.com -tqschool.net -tqshfw.com -tqshfw.net -tquic.net -tquyi.com -tqw5.com -tqwqq.com -tqyb.cc -tqybw.net -tr-test-ali.net -tr-test.net -tr-testboe.net -tr89.com -trace4me.com -tracefact.net -tracegd.com -traceint.com -tracestour.com -tracevision.tv -tracker.ink -trackingmore.com -tracup.com -tracyclass.com -tradaquan.com -tradeblazer.net -tradeleo.com -trademanager.com -trademessenger.com -tradeplus.cc -tradesns.com -tradesou.com -tradevv.com -tradew.com -tradingcomps.com -tradinghero.com -tradow.com -trae.guru -traineexp.com -trainingipv6.com -trainnets.com -trainsimchina.com -trait-wholesale.com -tranbbs.com -traneasygo.cc -tranlion.com -tranplanet.com -trans-china.com -trans4e.com -transcendchina.com -transcenta.com -transduck.com -transer-cn.com -transfarchem.com -transfarzl.com -transformer-cn.com -transformers.run -transfriend.com -transfu.com -transfun.net -translatego.net -translationchina.com -transmission-china.org -transmonkey.com -transmonkey.net -transn.com -transnanning.com -transparcel.com -transportjp.com -transrush.com -transsion-os.com -transsscoco.com -transthera.com -transwarp.io -transwiki.org -tranwit.com -tratamientoalcohol.com -tratao.com -travel-x.cc -travel6.co.uk -travelgo.com -traveling-exhibitions.com -travellaureate.com -travellingwithhotel.com -travellinkdaily.com -travelsky.com -travelsky.net -travelwuhan.com -travelyee.com -trawind.com -treatgut.com -treehousesub.com -treesir.pub -treetwins.com -treeyee.com -trekin.space -trellocdn.com -trend6.com -trendiano.com -trendingstar.tech -trendsbulletin.com -trendsmag.com -trendsmen.com -trendtokyo.com -trendy-global.com -trenrde.com -tressgroup.com -tretars.com -trexiu.com -trfgvb.com -trfkyy.com -trftpe.com -trgis.com -trhealth.net -trhj.net -trhly.com -trhos.com -trhui.com -trhxt.com -triggerdelivery.com -trinasolar.com -trinitigame.com -trinova-tech.com -trioisobardev.com -triolion.com -triopen.com -triorder.com -triowin.com -trip.com -trip169.com -trip8080.com -tripbaba.com -tripbe.com -tripcdn.com -triphr.com -tripleuuu.com -triplexservice.com -tripnearby.com -tripodeck.com -tripolers.com -tripsanxia.net -triptt.com -tripurx.com -tripvivid.com -tripwirechina.com -triring.com -trisfal.com -tristarinc.com -triton-games.com -tritoninfo.net -trizenai.com -trizinfo.tech -trizlaser.com -trizmed.com -trjcn.com -trjcn.net -trjddq.com -trkj.com -trkjbj.com -trleader.com -trli.club -trmedical.net -trnjm.com -trnox.com -troika-design.com -troila.com -trojantesting.com -tronixin.com -tronlife.com -tronlong.com -tronly.com -tronsmart.com -tropcdn.com -troxchina.com -trpc.center -trpc.group -trpc.tech -trpcdn.com -trpcdn.net -trqjrp.xyz -trs-logistics.com -trsjgdj.com -trsoft.vip -trsoft.xin -trsol.com -trswtz.com -trt.hk -trtb.net -trtc.io -trtcanlitv-lh.akamaihd.net -trtccloud.com -trtccloud.net -trtcrecover.com -trthealth.com -trtpazyz.com -trtquxro.com -trucker365.com -trucklc.com -trueart.com -truebuty.com -truechine.com -truedian.com -truedream.ltd -trueeyu.com -trueful.com -truekex.com -trueland.net -trueme.net -truerun.com -truesing.com -truestudio.tech -trufun.net -truimo.com -trumpeter-china.com -trumsense.com -trunktech.com -trusfort.com -trusit.net -trusple.com -trust-mro.com -trust-one.com -trust400.com -trusta-lawyer.com -trustasia.com -trustcn.com -trustdecision.com -trustedsign.com -trustexporter.com -trustie.net -trustkernel.com -trustlife.com -trustmo.com -trustmover.com -trustmta.com -trustwe.com -trutes.com -truthsinfo.com -truzem.com -trvok.com -trwl.net -tryfun.com -tryine.com -tryineapp.com -trykan.com -trylmr.com -trymoka.com -tryudesk.com -tryurbest.com -tryxue.com -tryz.net -trzhineng.com -ts-bus.com -ts-cooling.com -ts-jiabo.com -ts-juheng.com -ts-marathon.com -ts-precision.com -ts.cc -ts0775.com -ts100.com -ts16949px.com -ts16949rz.org -ts3.hk -ts3.vip -ts56xh.com -tsa-lp.com -tsa-page.com -tsa-page0.com -tsa-page1.com -tsa-page2.com -tsa-page3.com -tsa-page4.com -tsa-page5.com -tsa-page6.com -tsapage.com -tsarufaq.com -tsbjschool.com -tsbtv.tv -tschina.com -tscichina.com -tscorona.com -tsdaodao.com -tsdjg.com -tsdxb.com -tsecdapi.com -tsefang.com -tsepcn.com -tses.net -tsflc.com -tsfqw.com -tsg-online.net -tsggwl.com -tsggx.com -tsgks.com -tshaisen.com -tshe.com -tshe.me -tsheducation.net -tshell.online -tshengqi888.com -tshmkj.com -tshock.cc -tshtech.com -tsichuan.com -tsinergy.com -tsing-jn.com -tsingaero.com -tsinghua-getinfo.com -tsinghua-sz.org -tsinghua-vc.com -tsinghua-wx.org -tsinghuaic.com -tsinghuajournals.com -tsinghuan.com -tsinghuawoman.com -tsinghuawuxigz.net -tsinghydrogen.com -tsingj.com -tsingmicro.com -tsingming.com -tsingoofoods.com -tsingpost.com -tsingshang.com -tsingtek.com -tsingtoo.com -tsingtuo.com -tsingyangroup.com -tsingyanresearch.com -tsj-js.com -tsj-tsy.com -tsjtsy.com -tsk-fixture.com -tskscn.com -tslib.net -tsljzs.com -tslongtai.com -tslsmart.com -tslt.tech -tsluping.com -tsm-license-test.com -tsm-license.com -tsm-yuntrust.com -tsm52dc.com -tsmtkj.com -tsn-tencentclb.cloud -tsn-tencentclb.com -tsn-tencentclb.net -tsn-tencentclb.work -tsorder.com -tsp189.com -tsparkling.com -tspsy.com -tspweb.com -tsqw.com -tsrcw.com -tsrenli.com -tsrnjs.com -tsrqjt.com -tsrqjtfc.com -tsruifeng.com -tssns.net -tsstorry.com -tssyedu.com -tssyjt.com -tst98.com -tstvxmt.com -tsubakichina.com -tsukistar.fun -tsunbull.com -tswjs.net -tswjs.org -tswljt.com -tswnanning.com -tswuby.com -tsxcfw.com -tsxcx.xyz -tsxgedz.com -tsxjt.com -tsxtgj.com -tsxw66.com -tsycdn.com -tsyexmail.com -tsykf.com -tsyvps.com -tsyzm.com -tszh.net -tszhjk.com -tszlsgs.com -tszxhosp.com -tszyzx.com -tt-app.com -tt-bike.com -tt-ly.com -tt1386.com -tt286.com -tt65org.com -tt787.com -tt818k.com -tt919.com -tt96596.com -ttaidu.com -ttalkai.com -ttbba.com -ttbbss.com -ttbyte.com -ttbyte.net -ttcad.com -ttcat.site -ttcl.cc -ttdailynews.com -ttdnsa.com -ttdown.com -ttdsw.com -ttechhk.com -ttfly.com -ttfuav.com -ttg8.com -ttgan.com -ttge.ru -ttggxx.com -ttgjx.com -ttgood.com -ttgslb.com -ttgtm.com -ttgwm.com -ttgxlx.com -tthaoduo.com -tthigo.com -tthunder.com -ttic.cc -ttigame.com -ttime.com -ttionya.com -ttj5.com -ttjianbao.com -ttjisu.com -ttkaiche.com -ttkdex.com -ttkefu.com -ttkuan.com -ttlock.com -ttmark.com -ttmass.com -ttmd5.com -ttmeiju.com -ttmm.vip -ttmn.com -ttmnq.com -ttmv.com -ttn8.com -ttnaoli.com -ttnea.com -ttnongli.com -ttnqh.com -ttongda.com -ttpaicdn.com -ttpaihang.com -ttpaper.com -ttpet.com -ttpharm.com -ttplayer.co -ttplayer.com -ttpod.com -ttpp.com -ttppoo.com -ttpx.net -ttq.com -ttq.so -ttqiadar.com -ttriqi.com -tts8.com -ttshengbei.com -ttship.com -ttshuba.cc -ttshuba.net -ttsim.com -ttsim.net -ttsmk.com -ttstream.com -ttsz8.com -tttang.com -tttarot.com -tttcykt.com -tttelephone.com -ttthing.com -tttiti.com -tttkkt.com -tttllt.com -tttuangou.net -tttxf.com -tttz.com -ttunion.com -ttvmexmk.com -ttwanjia.com -ttwifi.net -ttwqw.com -ttwx.com -ttwxh.com -ttxn.com -ttxs123.net -ttxs7.com -ttxsapp.com -ttxsonline.com -ttxuanpai.com -ttxx8888.com -ttyec.com -ttyfp.com -ttyfund.com -ttyinfo.com -ttyingqiu.com -ttyjf.com -ttymq.com -ttyongche.com -ttyqm.com -ttysq.com -ttyuyin.com -ttyy800.vip -ttzcw.com -ttzubao.com -ttzw365.com -ttzyw.com -tu54o7863tbf6.com -tu8.cc -tu93.biz -tu960.com -tuan800.com -tuan800.net -tuanai.com -tuanbohui.com -tuanche.com -tuancu.com -tuandai.com -tuanduishuo.com -tuang.club -tuangai.com -tuangouba.com -tuanidc.net -tuanimg.com -tuanitgx.com -tuanjiebao.com -tuanjuwang.com -tuanlin.net -tuanmeme.com -tuanok.com -tuanpibao.com -tuanping.com -tuanshan.com -tuantuangame.com -tuantuanshou.com -tuanxue360.com -tuanyanan.com -tuanyougou.com -tuanyuan520.com -tuanyx.com -tuanziai.com -tubachina.com -tubanginfo.com -tubangzhu.com -tubaobao.com -tubaobaoqm.com -tubaoveneer.com -tubaoyz.com -tubatu.com -tube-cat.com -tubebbs.com -tubiaoxiu.com -tubie.art -tuboshu.com -tuboshuxinxi.xyz -tuboxu.com -tubutu.com -tuchong.com -tuchong.net -tuchuangs.com -tuchuiwang.com -tuchuiwang.net -tucia.net -tucoo.com -tudai.cc -tudai.com -tudan.cc -tudan.vip -tudou.com -tudoupe.com -tudouseo.com -tudouui.com -tudouxy01.com -tudouyx.com -tudu.com -tudu.im -tuer.me -tuer123.com -tuf3a353.com -tuganjue.com -tugemedical.com -tugoo.net -tugou.com -tugoucx.com -tuguaishou.com -tuguan.net -tuguiyao-gd.com -tuhaiba.com -tuhaogroup.com -tuhaokuai.com -tuhu.com -tuhu.org -tuhu.work -tui18.com -tui33.com -tuiaaaa.com -tuiaaae.com -tuiaaaf.com -tuiaaag.com -tuiabq.com -tuibear.com -tuiberry.com -tuiclick.com -tuicool.com -tuicross.com -tuidaniu.com -tuidc.com -tuideli.com -tuidragon.com -tuifeiapi.com -tuiguang91.com -tuiguangdns.com -tuiguangjia.com -tuijiantong.com -tuijianxin.com -tuijie.cc -tuikemima.com -tuikemima.net -tuikemohe.com -tuili.com -tuilidashi.xin -tuilie.com -tuilisr.com -tuiliu.net -tuilixy.net -tuimob.com -tuimotuimo.com -tuimy.com -tuipeanut.com -tuipear.com -tuipinpai.com -tuiplay.com -tuirice.com -tuishao.net -tuishark.com -tuishubang.com -tuishuge.com -tuishujun.com -tuisnake.com -tuistone.com -tuitui.info -tuitui99.com -tuituifang.com -tuituisoft.com -tuituitang.com -tuiwen.net -tuiyi.cc -tuizx.com -tujia.com -tujiacdn.com -tujian.com -tujiandan.com -tujidu.com -tujixiazai.com -tujuren.com -tuke88.com -tukedu.com -tukkk.com -tuku.com -tukujia.com -tukuppt.com -tulading.com -tulaoshi.com -tuleminsu.com -tuling123.com -tulingdns.com -tulipsport.com -tuliu.com -tulsj.com -tumajewelry.com -tumanyi.com -tumchina.com -tumengtech.com -tumicomm.com -tumormed.com -tumukaoyan.com -tumukeji.com -tumuzhe.com -tumwf.com -tumyu.com -tuna.wiki -tunanhuashi.com -tungee.com -tungkong.com -tungraymhe.com -tungshungroup.com -tungsten-alloy.com -tungsten-bar.com -tungsten-copper.com -tungsten-jewellery.com -tungsten-powder.com -tungwah.com -tunhe.com -tunhent.com -tunionfans.com -tuniu.cc -tuniu.com -tuniu.net -tuniu.org -tuniucdn.com -tuniuglobal.com -tuniuins.com -tuniuops.net -tunynet.com -tuo-pan.com -tuoaa.com -tuobeng.net -tuocad.com -tuodan.tech -tuodangclub.com -tuodanlab.com -tuodanyy.com -tuohuangzu.com -tuojiebiotech.com -tuojunedu.com -tuolajieightscore.com -tuoluozhuan.net -tuoniaox.com -tuopaishedecta.com -tuopan808.com -tuopu.com -tuoren.com -tuotoo.com -tuotuozu.com -tuoweisi.com -tuoyuan619.com -tuoyuantec.com -tuozhe8.com -tuozheng168.com -tuozhilight.com -tupian1.com -tupian114.com -tupian1234.com -tupian365.com -tupiancunchu.com -tupiankucdn.com -tupianseo.com -tupianyun.com -tupianzj.com -tupu360.com -tuputech.com -tupuw.com -tuqiangcn.com -tuqou.com -tuquu.com -turangyq.com -turboes.com -turbomail.org -turingapi.com -turingbook.com -turingdi.com -turingfraud.net -turinggear.com -turingtopia.com -turnitin.org.in -turnitinuk.net -turtle-sir.com -turui-robots.com -turuio.com -tus-health.com -tusapi.com -tusay.net -tuscbec.com -tuscdn.com -tusdesign.com -tusdk.com -tusenergy.com -tushare.org -tushare.pro -tushencn.com -tushifu.com -tusholdings.com -tushu007.com -tushumi.cc -tushumi.com -tushuokeji.net -tusij.com -tusiot.com -tusmedicine.com -tusooo.com -tuspark.com -tuspass.com -tuspass.net -tusstar.com -tustt.com -tusu.cc -tusuguanjiage.com -tusujiu.com -tutdown.com -tutechanhb.com -tutengcloud.com -tutengdai.com -tutu001.com -tutuapp.com -tutucloud.com -tutudati.com -tutuge.me -tutuguai.com -tutuim.com -tutupan.com -tuvrblog.com -tuwan.com -tuwandata.com -tuwangwang.com -tuwanjun.com -tuwazhundian.com -tuweng.com -tuwenzhibo.com -tuxi.com -tuxiangyan.com -tuxiaobei.com -tuxing.art -tuxing2010.com -tuxiu.com -tuxun.fun -tuya.com -tuyacn.com -tuyansuo.com -tuyaya.com -tuye.com -tuyiqi.com -tuyitu.com -tuyiyi.com -tuyoo.com -tuyou.me -tuyougame.com -tuyoujp.com -tuyoumi.com -tuyouvpn.com -tuyouxinxi.net -tuzhan.com -tuzhan.net -tuzhanai.com -tuzhanh5.com -tuzhaozhao.com -tuzhijie.com -tuzhizhijia.com -tuzhongit.com -tuzi123.com -tuzi8.com -tuziip.com -tv.cnbeijing.xyz -tv.nknews.org -tv002.com -tv121.com -tv189.com -tv20806.com -tv373.com -tvandnet.com -tvapk.com -tvapk.net -tvbbj.com -tvblack.com -tvcbj.com -tvcbook.com -tvccc.org -tventry.com -tvfanqie.com -tvfuwu.com -tvguo.tv -tvhf.com -tvhuan.com -tvjianshen.com -tvkuai.com -tvmao.com -tvmcloud.com -tvmining.com -tvoao.com -tvodapi.com -tvodapibk.com -tvos.com -tvt.im -tvuctgze.com -tvxio.com -tvzhe.com -tvzn.com -tw-joly.com -tw-yun.com -tw2sm.com -twanxi.com -twatchesmall.com -twcoal.com -twd2.me -twd2.net -twdxdl.com -tweakcube.com -twheixiong.com -twinkledeals.com -twinkstar.com -twinsel.com -twinsenliang.net -twk.cc -twmsuf.com -twoarmy.com -twoear.com -twplink.xyz -tws.com -twsapp.com -twscholar.com -twsns.com -twsz-cq.com -twszs.com -twtes18.com -twtime.vip -twtstudio.com -twty.vip -twwtn.com -twwtn.net -twyuxin.com -twyxi.com -twz1t32lzy.com -twzgn.com -twzilla.com -tx-exhibition.com -tx-livetools.com -tx-trans.com -tx.lilyemby.com -tx009.com -tx1588.com -tx163.com -tx321.com -tx365.com -tx5d.com -tx8j.com -txacc1.com -txacc1.net -txbanche.com -txbapp.com -txbimg.com -txbond.com -txbyod.com -txcap.com -txcdns.com -txcdns.net -txcfgl.com -txcgoo.com -txclivecdn.com -txcloudlive.com -txcm365.com -txcm365.net -txcmapp.com -txcode.com -txcx.com -txcx.tech -txcxjd.com -txcxpt.com -txczawlfpj5.com -txdai.com -txdl1.com -txdl1.net -txdl2.com -txdl2.net -txdyt.com -txdzw.com -txelive.com -txelvb.com -txeo.net -txfba.com -txfeiyu.com -txffp.com -txfund.com -txga.com -txgirl1.com -txgirl2.com -txhsya.com -txhttpdns.net -txhy1699.com -txitech.com -txjhqh.com -txjscl.com -txjsjgs888.com -txjx169.com -txjy689.com -txlctong.com -txleshare.com -txlivecdn.com -txlivecdn2.com -txlt.com -txlunwenw.com -txlzp.com -txmcu.com -txmdb.com -txmkf.com -txon.net -txooo.com -txqcw.net -txqq.com -txqq789.com -txresearch.com -txrjy.com -txrpic.com -txrz.com -txrzx.com -txscdn.com -txsdk.com -txsec.com -txsf.com -txssw.com -txstatic.com -txt101.com -txt321.com -txt81.com -txtbbs.com -txtduo.com -txtelsig.com -txtshuku.org -txttgj.com -txttool.com -txtyxg.com -txvat.com -txvideo1.com -txvideo2.com -txwb.com -txweekly.com -txwestart.com -txwm.com -txwy.com -txwy.com.tw -txx66.com -txxbxx.com -txxy.com -txxzc.com -txy8.com -txyapp.com -txybio.com -txybk.com -txyes.com -txyfwq.com -txyscdn.com -txyscdn.net -txzb.app -txzing.com -txzqzb.com -txzuranji.com -ty-archdesign.com -ty-group.net -ty-im.com -ty-magnet.com -ty-tyre.com -ty-xxl.com -ty.ink -ty1970.com -ty2y.com -ty360.com -ty3w.net -ty8621.com -tybai.com -tyboard.net -tyc100.com -tyccdn888.com -tychemical.com -tychio.net -tycimages.com -tyclport.com -tycqxs.com -tycredit.com -tydao.com -tydcdn.com -tydesyxx.com -tydevice.com -tydgas.com -tydns.cc -tyduanju.com -tyeat.com -tyeec.net -tyepi.com -tyfc.xyz -tyfo.com -tygameworld.com -tygckj.com -tyh120.com -tyhjzx.com -tyi365.com -tyihome.com -tyjd.cc -tyjnkj.com -tyjsq.com -tykd.com -tykmedicines.com -tylls.com -tym001.com -tymcdn.com -tymotor.cc -tyn.cc -tynlwx.com -tynxy.com -tyorient.com -tyouai.com -typany.com -type.so -typecho.work -typechodev.com -typechx.com -typeeasy.net -typhoon.vip -typicalchn.com -typrotech.com -tyqian.com -tyqxzx.com -tyr8.com -tyrantg.com -tyrbl.com -tyrbw.com -tyread.com -tysdmh.com -tysih.com -tysj365.com -tyst.cc -tysurl.com -tyszy.com -tytgigty.com -tytlj.com -tytuyoo.com -tytzy.com -tytzyyy.com -tytzzy.com -tyuanlv.com -tyue.net -tyust.net -tyututy.com -tyuyan.com -tyuyan.net -tywangcai.com -tywbw.com -tywh.com -tywheels.com -tywx.com -tywxw.la -tyxcdn.com -tyxcdn.net -tyy6.com -tyymt.com -tyzh.com -tyzhjx.com -tyzhyun.com -tyzs8.com -tyzspy.com -tz-water.com -tz100.com -tz121.com -tz12306.com -tz1288.com -tz1980.com -tz2100.com -tz887.com -tz94.com -tzada.com -tzbank.com -tzbank.net -tzbao.com -tzcpa.com -tzcul.com -tzcz.com -tzedu.org -tzfdc.com -tzfeilu.com -tzfeize.xyz -tzfile.com -tzgamepkg.com -tzgcjie.com -tzggzj.com -tzgjjt.com -tzgkuci.com -tzgsjc.com -tzhledu.net -tzhospital.com -tzhwcc.com -tzjob.com -tzjxl.com -tzjyjt.com -tzjzsw.com -tzkameng.com -tzkciz.com -tzlib.net -tzlmt.com -tzm66.com -tzme.net -tzmem.com -tzmpqcfr.com -tzpaper.com -tzqby.com -tzqingzhifeng.com -tzqytv.com -tzrc.com -tzres.com -tzrl.com -tzsfhxx.com -tzshipping.net -tzsnw.com -tzsports.com -tzsti.com -tzsucai.com -tzswatch.com -tzswfz.com -tzsz.net -tzszyy.com -tztledu.com -tztrq.com -tztusi.com -tzujian.com -tzvec.com -tzvtc.com -tzwpco.com -tzxingtang.com -tzxwzx.com -tzyiyuantuan.com -tzyongda.com -tzyun.com -tzyy-sh.com -tzyyao.com -tzyyjt.com -tzzhkj.com -tzzhtc.com -tzzls.com -tzzp.com -tzzszb.com -tzzx.net -u-camera.com -u-carloan.com -u-cdn.com -u-cdn.net -u-con-dom.com -u-con-dom.net -u-lights.com -u-link.org -u-mro.com -u-om.com -u-qun.com -u-road.com -u-softtech.com -u-speedex.com -u-workshop.com -u.sb -u.tools -u005.com -u0351.com -u0537.com -u062.com -u10010.com -u10086.com -u14.com -u148.net -u17.com -u17i.com -u17t.com -u1d1.com -u21a.com -u22e.com -u2j2ha.com -u2sz.com -u3dc.com -u3dcn.com -u3dol.com -u3l120di51.com -u3v1adybl4.com -u3v3.com -u4u5.com -u4u5.tv -u51.com -u520.net -u58.com -u581.com -u5wan.com -u69cn.com -u6ex.com -u72.net -u8164i46a4.com -u88.com -u8e.com -u8see.com -u8sy.com -u8yb16b993.com -u8yx.com -u966.com -u9baoku.xyz -u9h.com -u9time.com -u9u8.com -u9u9.com -u9wan.com -uabkrsj.xyz -uahh.site -uakwezgc.com -uancf.com -uandi-wireless.com -uangee.com -uao-online.com -uao.so -uaomprvw.com -uascent-iot.com -uat1.bfsspadserver.8le8le.com -uatmrrvendor.com -uauc.net -uavtjxh.com -uavvv.com -uaxk.com -ub-os.com -ub8020.com -ubaiyi.com -ubangmang.com -ubao.com -ubc-bearing.com -ubccn.com -ubeethiesemo.com -ubeihai.com -ubesh.com -ubestkid.com -ubetween.com -ubgame.com -ubicdn.com -ubiquant.com -ubismartparcel.com -ubits.club -ubixai.com -ubja.vip -ublese.com -ubmconlinereg.com -ubmsinoexpo.com -uboat100.com -uborn.net -uboxol.com -ubs001.com -ubssdic.com -ubtrobot.com -ubuant.com -ubuntukylin.com -ubuuk.com -ubuylogi.com -uc-test.com -uc-union.com -uc108.com -uc129.com -uc138.com -uc1z.com -uc2008.com -uc23.net -uc56.com -uc666.com -ucacc.com -ucai123.com -ucaiyun.com -ucancs.com -ucanrobot.com -ucantech.com -ucantech.net -ucany.net -ucarinc.com -ucassc.com -ucb6.com -ucbug.com -uccastore.com -uccbikes.com -uccpd.com -ucdchina.com -ucdok.com -ucdrs.net -ucgslb.com -ucgslb.info -ucgslb.net -ucgslb.top -uchangdi.com -uchiha.ltd -uchis.com -uchoice.cc -uchuanbo.com -ucicq.com -ucigl.com -ucjoy.com -ucl0ud.com -ucloud-edm.com -ucloud365.com -ucloudadmin.com -ucloudapi.com -ucloudgda.com -ucloudnaming.com -ucloudnaming.info -ucloudnaming.net -ucloudoss.com -uclouds3.com -ucloudstack.com -ucloudstack.net -ucloudstor.com -uclouduewaf.com -ucloudufile.com -ucly.net -ucmmine.com -ucnaming.com -ucnaming.info -ucnaming.net -ucnano.com -ucnest.com -ucpaas.com -ucpchina.com -ucpopo.com -ucren.com -ucsanya.com -ucss.ninja -uctwydx.com -ucun.tech -ucuntech.com -ucuuc.com -ucw.pub -ucweb.com -ucxsw.com -ucying.com -udache.com -udacity.com -udalogistic.com -udamall.com -udangjia.com -udasauto.com -udashi.com -udbac.com -udcgroup.com -udcn.com -uddtrip.com -udecig.com -udelivrs.com -udeskcs.com -udfspace.com -udiannet.com -udid.vin -udns.dev -udonmai.com -udows.com -udragons.com -udream.com -udsdown.xyz -udship.com -udsstudio.com -udxd.com -uebilling.com -uebuilder.net -uecook.com -ued1.com -uedbet.bet -uedbox.com -uedna.com -ueeshop.com -uehchina.com -uehtml.com -ueibo.com -ueiibi.com -uelike.com -uemo.net -ueno-china.com -uenu.com -ueren.com -uestcedu.com -uestcliuxue.com -uetianshanyp.com -ueuz.com -uewaf.com -uez.com -uf-crm.com -uf-tobacco.com -ufancycase.com -ufanw.com -ufcap.com -ufcs.com -ufenqi.com -ufhost.com -ufhosted.com -ufida-lcwy.com -ufidaoa.com -ufileos.com -ufirefly.com -ufizl.com -ufkwm.com -ufo.club -ufo110.net -ufoer.com -ufojoy.com -uformwater.com -ufotm.com -ufsoo.com -ufyct.com -ug.link -ugainian.com -ugapi.com -ugapk.com -ugbb.com -ugc-up-dom.com -ugc-up-dom.net -ugdesk.com -ugdocker.link -uggame.com -uggd.com -ugirls.tv -ugmars.com -ugmjd.com -ugnas.com -ugnx.net -ugo-china.com -ugojp.com -ugong.com -ugoshop.com -ugostar.com -ugreen.cloud -ugreengroup.com -ugshare-img.com -ugslb.com -ugslb.info -ugslb.net -ugslb.top -ugslb2.net -ugsnx.com -ugtemfeu.com -ugubl.net -ugurl.cc -ugxsd.com -uhaom.com -uhaozu.com -uhasadmin.com -uhbthn.com -uhcmu.com -uhomecp.com -uhomes.com -uhomesplus.com -uhouzz.com -uhp.cc -uhs68.com -uhuibao.com -uhuitong.com -uhuocn.com -uhut.com -uhzcdn.com -ui-lab.com -ui100day.com -ui63.com -uibep.com -uibhealthcare.com -uibmm.com -uicats.com -uicmall.com -uicom.net -uid75.com -uidec.com -uidev.tech -uidev.xyz -uihacker.com -uiiiuiii.com -uik.cc -uil.ink -uileader.com -uimix.com -uincall.com -uincall400.com -uinchat.com -uincom400.com -uino.com -uipaas-assets.com -uipower.com -uiren.net -uisdc.com -uisee.com -uisheji.com -uishijie.com -uisnetwork.com -uisrc.com -uiste.com -uit-sz.com -uitab.com -uitool.net -uiu.cc -uiuihub.com -uiwow.com -ujakn.com -ujia007.com -ujianchina.net -ujiao.net -ujiaoshou.com -ujinbi.com -ujing.online -ujintan.com -ujipin.com -ujiuye.com -ujmjk.com -ujnfdfv.com -uju365.com -ujxs.com -uk-edu.com -uk-st.com -ukanshu.com -ukeban.com -ukelink.com -uker.net -ukh5.com -ukiea.com -ukin-tech.com -ukingtech.com -ukluhu.com -ukongm.com -ukonline2000.com -ukoo.net -ukosgolfcart.com -ukpass.org -ukpathway.com -ukrainevisacenter.com -ukubang.com -ukui.org -ukupu.com -ukusk12.com -ukve4smo9gapv.com -ukvisacenterd.com -ukworldsale.com -ulab360.com -ulanzou.com -ulapia.com -ule.com -ule.hk -uleapp.com -ulecdn.com -uleek.net -ulgrobot.com -uliang.vip -uliangwang.com -uliaobao.com -ulife.com -ulife.group -ulikecam.com -ulikecam.mobi -ulikecam.net -ulikepic.com -ulikestatic.com -ulinix.com -ulinix.tv -ulinkcollege.com -ulixirglobal.com -ulpay.com -ultracachenode.com -ultraeda.com -ultramanol.com -ultrarisc.com -ulucu.com -ulvac-shanghai.com -ulvac-suzhou.com -um.run -umajor.net -umaman.com -umasoft.com -umaszdc.com -umate.net -umb.ink -umbpay.com -umc-ai.com -umcloud.com -umdac.com -umeijiaju.com -umeng.co -umeng.com -umeng100.com -umengcloud.com -umenglog.com -umetal.com -umetrip.com -umexair.com -umfintech.com -umgg.biz -umihome.com -umindex.com -uminsky.com -umiplus.com -umiwi.com -umiwx.com -umjicanvas.com -uml-tech.com -umlchina.com -umlife.net -umpay.com -umpxkvtt.com -ums86.com -umsamd.com -umtrack0.com -umtrack1.com -umtrack2.com -umva-china.com -umvcard.com -umvsoft.com -un-bug.com -un.org -un10086.com -un1c0de.xyz -una-ad.com -una-campaign.com -unachina.org -unaming.info -unaming.net -unbank.info -uncbd.com -unccr.com -uncfa.org -uncitys.com -uncle-ad.com -uncle-chen.com -unclecheers.com -uncleda.com -uncledesk.com -unclenoway.com -unclenoway.net -unclenowayapi.com -uncletalk.com -unclicks.com -uncoverman.com -und188.com -under-5.shop -underfill.cc -uneatclean.com -uneed.com -unfish.net -ungifts.com -uni-bielefeld.de -uni-cent.com -uni-forest.com -uni-perfect.com -uni-ubi.com -uni6rtmp.tulix.tv -unibeauty.net -unibizp.com -unicde.com -unicloud.com -unicloudgov.com -unicloudsrv.com -unicmicro.com -unicom-cz.com -unicomgd.com -unicomjnwy.com -unicomlife.com -unicompayment.com -unicompayment.net -unicompayment.org -unicomtest.com -unicon-hibar.com -unietec.net -unifl-networks.com -uniflows.com -unifound.net -unifull.com -unifycarbon.com -unigress.com -uniham.net -unihertz.com -unilaw.net -unilumin.com -unimasdata.com -unimtx.com -uninf.com -uning.com -uninstall-tools.com -uninto.com -uniny.com -union-4.com -union-game.com -union-net.com -union-tio2.com -union400.com -union555.com -unioncyber.net -unionpay.com -unionpay.net -unionpay95516.cc -unionpayintl.com -unionpaysecure.com -uniontech.com -uniostay.com -uniow.com -unipack-tech.com -uniproud.com -unique-ptr.com -uniscope.com -unisdigital.com -unisedu.com -unisemicon.com -unisguard.com -unishy.com -unisiot.com -unisoc.com -unisonal.com -unisound.com -unispc.com -unispim.com -unissoft.com -unistc.com -unistrong.com -unistrument.com -uniswdc.com -uniswl.com -unitaxgd.com -unitconverter.cc -united-bearing.com -united-imaging.com -united-sqwater.com -united-water.com -unitedbank.ltd -unitedds.com -unitedmoney.com -unitek-it.com -unitemotor.com -unitexlogistics.com -uniteyun.com -unithinker.com -unitod.com -unitrans-agency.com -unitrans-group.com -unitree.com -unittec.com -unitweld.com -unitworld.net -unitymanual.com -univ-bio.com -university-hr.com -uniview.com -univista-isg.com -univsport.com -uniwaf.com -unixhot.com -unixidc.com -unjmz.com -unjs.com -unlcn.com -unlgroup.com -unlimax.com -unlimithealth.com -unlsycn.com -unmou.com -unn114.com -unncahs.net -unnnnn.com -unogenius.com -unomedicalgroup.com -unparts.net -unpcn.com -unpmcc.com -unqu.com -unsedu.com -unsemi.com.tw -unshan.com -unspay.com -unsuv.com -untbbsdwarfs.com -unvmax.com -unwtonews.com -unyx.com -unzg.com -uoboc.com -uochen.com -uodzhx.com -uoeee.com -uoevtxmx.com -uoften.com -uoj.ac -uoko.com -uokon.com -uomg.com -uomo.cc -uomrcipa.com -uonline-sh.com -uonline-sh.net -uono4521.com -uonone.com -uooconline.com -uoolu.com -uooss.com -uoozi.com -uoria.com -uos56.com -uostools.com -uotoo.com -uouin.com -uouo123.com -uovz.com -up-et.com -up-pharma-gx.com -up-pharma.com -up135.com -up360.com -up368.com -up37.com -up4dev.com -up71.com -upai.com -upaidui.com -upaiyun.com -upanboot.com -upanok.com -upanshadu.com -upantool.com -upashance.com -upbiao.com -upbz.net -upc-cn.com -upcave.com -upcd.org -upcdn.net -upchina.com -upchinapro.com -upchinaproduct.com -upd.kaspersky.com -update.microsoft.com -update1.cyou -update2.cyou -update8.com -updeals.com -updf.com -updrv.com -upe.net -upeaoktc.com -upecp.com -upengyou.com -upengyou.net -upesn.com -upetmart.com -upfos.com -uphicoo.com -upho2015.com -uphong.com -upimgku.com -upimgt.com -upin.com -upkao.com -upkk.com -upkuajing.com -uplaypc-s-ubisoft.cdn.ubi.com -uplookedu.com -uplooking.com -upluck.cc -upnono.com -upos-bstar-mirrorakam.akamaized.net -upos-bstar1-mirrorakam.akamaized.net -upos-hz-mirrorakam.akamaized.net -upowerchain.com -uppershop.hk -upppt.com -upqzfile.com -upqzfilebk.com -uprimer.net -ups001.com -ups88.net -upsapp.com -upsclan.com -upseller.com -upskyshanghai.com -upst86.com -upsunet.com -uptom.com -uptougu.com -upu-opt.com -upupbug.com -upupoo.com -upupview.com -upupw.net -upvr.net -upwater.net -upwith.me -upx8.com -upyun.com -upzxt.com -upzxt.net -uq-express.com -uqbike.com -uqche.com -uqee.com -uqeegame.com -uqiba.com -uqidata.com -uqidong.com -uqidong.net -uqipower.com -uqite.com -uqitong.com -uqseo.com -uqualities.com -uqude.com -uqulive.com -urart.cc -urbanchina.org -urbanmatters.com -urbansocialwork.org -urbetter.com -urbetter.net -urbtix.hk -urcb.com -urcove-hotels.com -urhimalayanak.com -uril6.com -uriminzokkiri.com -urit.com -uritebio.com -uritest.com -uriwh.com -url.cy -url7.me -urlos.com -urlsecajog.com -urmuyhz.com -uroandrologyseries.com -urocancer.org -urology.wiki -urongda.com -urovo.com -urovoworld.com -urpwcei.com -urq7wvyumzfdi5.com -urs-china.com -ursb.me -urselect.com -urtrust.com -urumqi-air.com -urumqimarathon.com -urumqimtr.com -urwkcgpt.com -us-ex.com -us-qianzheng.com -us0.me -usa-gam.com -usa-idc.com -usaapcups.com -usaas.net -usaedu.net -usaeu.com -usahaitao.com -usalink.xyz -usao8.com -usaphoenixnews.com -usapschool.com -usashopcn.com -usayouma.com -usbing.com -usbmi.com -usbzh.com -usbzl.com -uschinagreenfund.com -uscnk.com -uscntv.com -usdcny.net -usdtmall.com -use-tencentclb.cloud -use-tencentclb.com -use-tencentclb.net -use-tencentclb.work -use-trust.com -useasp.net -useaudio.com -usecubes.com -uselesses.com -userbp.com -userhostting.com -userresearch.net -useryun.net -useso.com -ushendu.com -ushengame.com -ushinef.com -ushknews.com -ushui.com -ushui.net -usidt.com -using.club -usingwin.com -usinspirationfcg.com -usitour.com -usitrip.com -usj.cc -usjticketing.com -uslawchina.com -uslk.net -usmile.com -usniuku.com -usnook.com -usocialplus.com -usoftchina.com -usoi.net -usonetrip.com -uspard.com -usportnews.com -usqiaobao.com -usryinc.com -ustack.com -ustalk.com -ustarl.com -ustbtc.com -ustc.edu -ustcers.com -ustui.com -usuredata.com -usuuu.com -usw-tencentclb.cloud -usw-tencentclb.com -usw-tencentclb.net -usw-tencentclb.work -uszcn.com -ut8d.com -utan.com -utanbaby.com -utbon.com -utc-ic.com -utcbag.com -utctherapeutics.com -utec.cc -utecbj.com -utecexpress.com -utepo.com -utermux.dev -utfinancing.com -utgd.net -utiao.com -utofairy.com -utogame.com -utom.design -utoper.com -utopiafar.com -utoppromo.com -utourworld.com -utovr.com -utowekcr.com -utrainee.com -utransm.com -utrustamc.com -utsource.net -uttjhu.xyz -utuqafcr.com -utvhk.com -utvmuvpi.com -uu-baidu.com -uu-proxy.com -uu-xs.net -uu.cc -uu1.com -uu11.com -uu11441.com -uu11661.com -uu1314.com -uu178.com -uu37.com -uu375.com -uu456.com -uu66.com -uu661.com -uu6o.com -uu89.com -uu898.com -uuaa.net -uucall.com -uucc.cc -uucin.com -uucl.vip -uucnn.com -uucqrdmk.com -uueasy.com -uuedutech.com -uufund.com -uufuns.com -uugai.com -uugame.com -uugtv.com -uuhdedu.com -uuhimalayanqm.com -uuid.online -uuimg.com -uukkuu.com -uuliaoning.com -uulux.com -uumachine.com -uume.com -uumeitu.com -uumnu.com -uunice.com -uunt.com -uuoog.com -uupages.com -uupan.net -uupaotui.com -uupaper.com -uupei.com -uupoop.com -uupt.com -uupython.com -uus8.com -uusama.com -uusee.com -uusense.com -uusky.com -uusoo.net -uustory.com -uustv.com -uutils.com -uutop.com -uutrip.net -uuu.ovh -uuu9.com -uuujjj.com -uuulan.com -uuumi.net -uuuo.com -uuusss.com -uuutu.com -uuvisa.com -uuvps.com -uuwldh.com -uuwtq.com -uuwx.la -uuxlink.com -uuxn.com -uuxoo.com -uuxs.info -uuxs.la -uuxs.tw -uuyoyo.com -uuzham.com -uuzhufu.com -uuzo.net -uuzuonline.com -uuzuonline.net -uuzz.com -uuzz.net -uv25h.com -uvcdns.com -uvledtek.com -uvlv75moy8.com -uvsec.com -uvwhd.com -uw36gicu5xav.com -uw3c.com -uw9.net -uwa4d.com -uwan.com -uwaysoft.com -uwenku.com -uwn.com -uwntek.com -uworter.com -uwparking.com -ux18.com -ux87.com -uxacn.com -uxdc.net -uxdzpmz.com -uxengine.net -uxiangzu.com -uxianhu.com -uxicp.com -uxier.com -uxin.com -uxin001.com -uxingroup.com -uxiting.com -uxiu.vip -uxpi.net -uxuncloud.com -uy5.net -uya04170okq.com -uya04171okq.com -uya04180okq.com -uya04181okq.com -uya04201okq.com -uya100.com -uyan.cc -uyang.co -uyanip.com -uyanke.com -uycnr.com -uyesee.com -uyhjnm.com -uyi2.com -uyiban.com -uyiqggpa.com -uymfybcf.shop -uyou.com -uyouii.cool -uyouqu.com -uyshipin.com -uyun-cdn.com -uyunbaby.com -uyuncdn.net -uyunce.com -uyunche.com -uyuuy.xyz -uzai.com -uzaicdn.com -uzhika.com -uzhuangji.net -uzing.net -uzise.com -uzkqymgs.com -uzosibzk.com -uzshare.com -uzzf.com -v-56.com -v-jitp-dom.com -v-jitp-dom.net -v-jitp-glo.com -v-jitp-glo.net -v-mate.mobi -v-simtone.com -v-suan.com -v.to -v007.net -v0668tm614.com -v0719.com -v1.one-tv.com -v114.com -v15cdn.com -v15i.com -v1h5.com -v1kf.com -v1lady.com -v1pin.com -v1tv.cc -v1tx.com -v1zhushou.com -v2b3.com -v2ex.cc -v2kt.com -v2vm.com -v2xdatacenter.com -v2xdatasource.com -v2xengine.com -v3.com -v3best.com -v3edu.org -v3kyo4wb8i.com -v3mh.com -v4.cc -v479.com -v5.cc -v5.com -v5.net -v50307shvkaa.art -v51124-3.qpon -v51124.qpon -v5875.com -v5cg.com -v5dun.net -v5fox.com -v5kf.com -v5pc.com -v5ppt.com -v5shop.com -v5tv.com -v5waf.com -v61.com -v6c.cc -v6eq34ykhek5.com -v6lvs.com -v6ok.com -v6vip.com -v78q.com -v814.com -v84z6a854d.com -v89.com -v8a5rasf64.com -v8gb.com -v9022f162g.com -v977.com -v9b5n91.com -va-etong.com -vaakwe.com -vacepcvu.com -vacmic.com -vadxq.com -vaedu.net -vaeliu.com -vafox.net -vaicdn.com -vaillant99.com -vailogchina.com -vakku.com -valiant-cn.com -valinbl.com -valinresources.com -valogin.com -valuablexmail.com -value500.com -valuecome.com -valuedshow.com -valuepr.net -valueq-sea.com -valueq.com -valueur.com -valurise.com -valveshow.com -valvewbg.com -vamachina.com -van-long.com -vanbaolu.com -vance-commerce.com -vanch.net -vancheer.com -vanchip.com -vanchiptech.com -vancl.com -vanclimg.com -vancss.com -vanda.cc -vandream.com -vanform.com -vanfun.com -vangotech.com -vanguardstars.com -vanjoin.com -vankang.com -vanke-hotels.com -vanke.com -vankeclub.com.hk -vankeservice.com -vankeservice.mobi -vankeweekly.com -vankeytech.com -vanlinkon.com -vanmai.com -vanmatt.com -vanqun.com -vanrui.com -vansungroup.com -vanvi-cn.com -vanvps.com -vanward.com -vanwardsmart.com -vanyee.net -vanzol.com -vaopo.com -vapps.me -vaptcha.com -vaptcha.net -varchserverqa.com -varena.com -variflight.com -varlt.com -varmilo.com -varsalmed.com -vart.cc -varygroup.com -vasdgame.com -vasee.com -vaslco.com -vasoon.com -vastlandsc.com -vastman.com -vastsea.com -vastteq.com -vatech-china.com -vattenvalve.com -vauoo.com -vautoshow.com -vayakid.com -vaydeer.com -vayol.com -vayuan.com -vazyme.com -vazymemedical.com -vbango.com -vbaoxian-cib.com -vbbobo.com -vbc08090op.com -vbidc.com -vbio-pharma.com -vbiquge.com -vbkhk.com -vbkrhk.com -vbmnmy.com -vbsemi.com -vc800.com -vcarepharmatech.com -vcbeat.net -vcc808.site -vcchar.com -vcd.io -vcdnga.com -vcg.com -vchangyi.com -vchello.com -vcimg.com -vcinchina.com -vckbase.com -vclass.com -vclbroker.com -vclbrokers.com -vcled.com -vcloud-byte.com -vcloudapi.com -vcloudgtm.com -vcloudgtm.net -vcloudlive.com -vcloudlive.net -vcloudsp.com -vcloudsp.net -vcloudstc.com -vcloudstc.net -vcloudvod.com -vcloudvod.net -vcltrade.com -vclusters.com -vcnews.com -vcomic.com -vcomputes.com -vconew.com -vconew3.com -vcooline.com -vcore.hk -vcpdemo.com -vcredit.com -vcrfiw.lol -vcsint.com -vcsmemo.com -vcspark.com -vctianshanvs.com -vcxpe.com -vdaye.com -vdbet.com -vdfly.com -vdiagnostic.com -vdian.com -vdisk.me -vdlya.com -vdncache.com -vdncloud.com -vdndc.com -vdnplus.com -vdnplus.net -vdnsv.com -vdobiotech.com -vdolady.com -vdongchina.com -vdson888.com -vdyoo.com -vdyoo.net -ve-imcloud.com -ve-trafficroute.com -ve-trafficroute.net -ve70.com -vearne.cc -vebaike.com -vec-contracting.com -vecdnlb.com -vecentek.com -veckinc.com -veclightyear.com -vecloudgame.com -vecrp.com -vector-engine.com -vectorplaces.com -vedamobi.com -vedcdnlb.com -vedeng.com -veding.com -vedsalb.com -veecar.com -veefdev.com -veelink.com -veeqi.net -veer.com -veervr.tv -veeteam.com -veevlink.com -veew-alb-cn1.com -veew-alb-cn2.com -veew-alb-ts.com -vefast-fa.com -veg520.com -vegalb.com -vegslb.com -vegtm.net -veicplive.com -veikei.com -veilytech.com -veinbase.com -veirun.com -veiso.vip -veitor.net -vejianzhan.com -veken.com -vekinerp.com -velasx.com -velep.com -velledq.com -velocaps.com -vemarsdev.com -vemarsstatic.com -vemarsweb.com -vemic.com -vemte.com -vemvm.com -vendor-src-eo.com -vendue.vip -venlvcloud.com -ventoy.net -venucia.com -venuscn.com -venusgroup.asia -venusmedtech.com -venusong.site -venustrain.com -vephp.com -veqxiu.net -ver.cc -vergilisme.com -verify5.com -verisilicon.com -verisyno.com -versa-ai.com -versolsolar.com -versoventure.com -vertciot.com -vertical-china.com -vertu.com -vertuonline.com -very361.com -veryapex.com -veryark.com -verycd.com -verycdn.net -verychem.com -verydg.com -verydoc.net -verydu.net -verydz.com -veryevent.com -verygrass.com -verygslb.com -verygslb.net -veryhappy.pw -veryhuo.com -veryide.com -veryim.com -verykuai.com -verym.com -veryns.com -veryok.net -veryol.com -verypan.com -verysource.com -verystar.net -verysync.com -veryvp.com -veryweibo.com -verywind.com -veryxiang.com -veryzhun.com -ves100.com -veshop.jp -vestack-beta.com -vestack-cicd.com -vestack-preview.com -vestack-sandbox.com -vestack.cloud -vesystem.com -vetoolchain.com -vetscloud.com -vevor.net -vevsmize.com -vez.me -vf5c.com -vfcdnrd.com -vfcpay.com -vfcsz.com -vfe.cc -vfinemusic.com -vfocus.net -vftfishing.com -vfuiov.sbs -vfuke.net -vfund.org -vfvdf.com -vfx123.com -vg.com -vg173.com -vg89qeas3xagd.com -vgabc.com -vgbaike.com -vgctradeunion.com -vghall.com -vghimalayandm.com -vghimalayanet.com -vgjump.com -vglook.com -vgnclub.com -vgoapp.com -vgogbuy.com -vgooo.com -vgover.com -vgoyun.com -vgtime.com -vgunxpkt.com -vgvmotor.com -vgyuhu.com -vhall.com -vhallyun.com -vhao123.com -vhengdata.com -vhiphop.com -vhisxs.com -vhong.com -vhostcp.com -vhostgo.com -vhshub.com -vhsinsurtech.com -vhxaw.com -vhzhaopin.com -vi1zen.com -vi21.net -vi586.com -via-cert.com -viablife.com -viaeda.com -vial.cc -viarmour.com -viayoo.com -viberom.com -vibit.cc -vibrou.com -vibunion.com -vic18.com -vicanquan.com -vicbio.com -vicchen.me -vicigaming.com -vicitymall.com -vickn.com -vicl.net -vicome.com -vicovico.com -vicp.cc -vicp.fun -vicp.io -vicp.net -vicpalm.com -vicpv.com -vicrab.com -vicsdf.com -vicsz.com -victory-inflight.com -victorybio.com -viczz.com -vida-bio.com -viday.org -videaba.com -videasoft.com -video-study.com -video-voip.com -video2b.com -video2text.com -videocc.net -videofty.com -videohudong.com -videohupu.com -videoincloud.com -videomind.cloud -videomind.net -videotomp3.site -videougc.com -videoxiaoyouxi.com -videoyx.com -vidmate.mobi -vidmate.net -vidmatefilm.org -viecoo.com -vieg.net -vientao.com -viewstock.com -viewtool.com -viewtrans.com -vifaka.com -vigogroup.com -vigorgb.com -vigorousxy.com -vigtel.com -vigtm-meeting-tencent.com -viigee.com -viisan.com -viitalk.com -viixin.com -vijingsmart.com -vijos.org -vijs.net -vikduo.com -vikecn.com -vikilife.com -vilives.com -villachina.com -villasbalirent.com -viltd.com -vimage1.com -vimage2.com -vimage3.com -vimage4.com -vimdesign.com -vimge.com -vimicro.com -vimiix.com -vimin.cc -vimiy.com -vims04.com -vimsky.com -vin114.net -vin17.com -vincentqin.tech -vinchin.com -vindapaper.com -vinehoo.com -vinetreetents.com -vingoojuice.com -vinjn.com -vinkdong.com -vinlion.com -vinsondata.com -violetgo.com -violinstudy.net -violinww.com -vip-chn.com -vip-lexiang.com -vip-vip-yzzy.com -vip-wifi.com -vip.com -vip10000.club -vip120.com -vip1280.net -vip150.com -vip800.com -vip8849.com -vip888.kuyun99.com -vip9982.net -vipabc.com -vipabcyun.com -vipappsina.com -vipbaihe.com -vipbcw.com -vipbla.com -vipbuluo.com -vipcaocao.com -vipchina.com -vipcname.com -vipcto.com -vipdlt.com -vipersaudio.com -vipexam.org -vipfashion.com -vipfengfei.com -vipfengxiao.com -vipfenxiang.com -vipfinal.com -vipflonline.com -vipglobal.hk -vipgouyouhui.com -vipgs.net -vipgslb.com -vipguanjia.net -viphxw.com -vipiao.com -vipjingdong.com -vipjinron.com -vipjr.com -vipkaoyan.net -vipkid.com -vipkidcdn.com -vipkidresource.com -vipkidstatic.com -vipkj.net -viplao.com -vipleyuan.com -vipliangmei.com -viplux.com -vipmaillist.com -vipmalljf.com -vipmro.com -vipmro.net -viponlyedu.com -viposs.com -vippapi.com -vippluspai.com -vipqdd.com -vipqlz.com -vipreading.com -vips100.com -vipshare.com -vipshop.com -vipshopyao.com -vipshou.com -vipsinaapp.com -vipskill.com -vipslib.com -vipsmt.com -vipsoft.cc -vipsrc.com -vipstatic.com -vipstore.com -viptijian.com -vipwzswl.com -vipxap.com -vipxdns.com -vipxdns.info -vipxdns.net -vipxf.com -vipxs.la -vipyl.com -vipyyzz.com -vipyz-cdn1.com -vipzhuanli.com -viqq.com -virbox.com -vircloud.net -vireala.com -vireala.net -virosin.org -virscan.org -virtaicloud.com -virtualevent.net -virtualworld.pub -virtupharmako.com -virusdefender.net -vis.zone -visa027.com -visa163.com -visa198.com -visa800.com -visaai.com -visabao.com -visacits.com -visactor.com -visadeguo.com -visaforchina.org -visaforkorea-bj.com -visaforkorea-cd.com -visaforkorea-gz.com -visaforkorea-qd.com -visaforkorea-sh.com -visaforkorea-wh.com -visahuanqiu.com -visajx.com -visanc.com -visas.to -visasoo.com -visaun.com -visbodyfit.com -viscosefibre.com -viseator.com -visfarm.com -vishavideo.com -visheng.com -vishoor.com -visinextek.com -vision-nj.com -vision-systems-china.com -visionandview.com -visionarytech.ltd -visionbbs.com -visionchinashow.net -visioncloudapi.com -visionhacker.com -visionly.org -visionmax-sh.com -visionstar-tech.com -visionunion.com -visionvera.com -visirobot.com -visitsanya.com -visitsz.com -viskem.com -vista-china.net -vista123.com -vistahelmets.com -vistastory.com -visu-autotec.com -visualchina.com -visvachina.com -vitagou.com -vitagou.hk -vitalgen.com -vitaloffice.life -vitalxyz.com -vitamio.net -vitamio.org -vitamio.tv -vitarn.com -vitasoy-chn.com -vitechliu.com -viterbi-tech.com -vitesexpo.com -vitian.vip -vivantecorp.com -vivcms.com -vivebest.com -vividict.com -vivijk.com -viviv.com -viviwin.com -vivo.com -vivo.xyz -vivoglobal.com -vivojia.com -vivojrkj.com -vivokb.com -vivosjpt.com -vivotc.com -vivst.com -viwik.com -vixiu.com -vixue.com -viyuan.com -vjgmcoqs.com -vjia.com -vjiazu.com -vjifen.com -vjread.com -vjshi.com -vjtchina.com -vk6.me -vk6oqcevmd1a.com -vk8.co -vkaijiang.com -vkbaby.com -vkehu.com -vkemai.com -vkjsq.com -vkoolhf.com -vkoopp.com -vkrqtir.xyz -vkrtzzc.com -vksir.zone -vksoft.com -vku6.com -vkua.com -vkxiazai.com -vlabstatic.com -vlabvod.com -vland-official.com -vlandgroup.com -vlcable.com -vlcms.com -vliang.com -vlight.me -vlightv.com -vlink.cc -vlinkage.com -vlinkapi.com -vlinke.com -vlion.mobi -vlong.tv -vlongbiz.com -vlportal.download.prss.microsoft.com -vlrzgf.sbs -vlspirit.com -vlss.com -vlssu.com -vlwwu.com -vm.sg -vm7.com -vm888.com -vmaes.com -vmall-hw.com -vmall.cloud -vmall.com -vmallres.com -vmanhua.com -vmartaw.com -vmax-lighting.com -vmaxhome.com -vmaya.com -vmdns.xyz -vmdo.net -vmecum.com -vmengblog.com -vmeti.com -vmic.xyz -vmicloud.com -vmkj.net -vmlib.com -vmoiver.com -vmonkey.mobi -vmovier.cc -vmoviercdn.com -vmsky.com -vmtdf.com -vmtnet.com -vmuhyu.site -vmvps.com -vmylan.com -vname.com -vnanke.com -vnet.com -vnet.mobi -vnlin.com -vnnox.com -vnpy.com -vnzmi.com -voa-lh.akamaihd.net -voa365.com -vobao.com -voc.ai -vocalmiku.com -voccdn.com -vocinno.com -vod-backup.net -vod-bk-qcloud.com -vod-content.com -vod-content.net -vod-eo.com -vod-eo1.com -vod-eo2.com -vod-eo3.com -vod-eo4.com -vod-eo5.com -vod-igtm.com -vod-pro.com -vod-qcloud.com -vod-test.com -vod-upload.com -vod.qhdcm.com -vodapis.com -vodapisbk.com -voddlb.com -vodecn.com -vodehr.com -vodeoapi.com -vodeoapibk.com -vodeointernal.com -vodeshop.com -vodinternal.com -vodinternalbk.com -vodjk.com -vodn-valve.com -vodplayvideo.com -vodplayvideo.net -vodpro-upload.com -vodpro-upload1.com -vodpro-upload2.com -vodpro-uploadbk.com -vodtcbk.com -vodxl-qcloud.com -voguecafebeijing.com -voguechinese.com -voguelife.net -vohringer.com -voice9.com -voicedic.com -voicer.info -voicer.me -voidcc.com -voidking.com -vojs.tv -vokop.com -volc-dns.com -volc-dns.net -volc-dns.pub -volc-embed.com -volcadocean.com -volcadvc.com -volcalb.com -volcanicengine.com -volcano-force.com -volcanospring.com -volcautovod.com -volcbiz.com -volcca.com -volcca.net -volccdn.com -volccdn1.com -volccdn2.com -volccloudidentity.com -volcddos.com -volcddos001.com -volcdem.com -volcdn.com -volcdns-test.com -volcdns-test.net -volcdns.com -volcdns.pub -volceapi.com -volceapplog.com -volcecr.com -volcecw.com -volcenginapi.com -volcengine-dns.com -volcengine-dns.net -volcengine.com -volcengine.net -volcenginealb.com -volcengineapi.com -volcenginedns.com -volcenginedns.net -volcenginepaas.com -volces.com -volcfake.com -volcfcdn.com -volcfcdnbyte.com -volcfcdndvs.com -volcfcdndvs1.com -volcfcdndvs2.com -volcfcdnplus.com -volcfcdnrd.com -volcfcdnsc.com -volcfxgjrtm.com -volcgroup.com -volcgslb.com -volcgtm.com -volchina.com -volciad.com -volcimagex.com -volcimagex.net -volcimagextest.com -volclivedvs.com -volcmagicpage.com -volcmcdn1.com -volcmcdn2.com -volcmcdn3.com -volcmcdn4.com -volcmcdnalias.com -volcmgs.com -volcmlt.com -volcmusecdn.com -volcocic.com -volcopjrtm.com -volcpartner.com -volcpartner.net -volcsirius.com -volcsiriusbd.com -volcspaceeduc.com -volctracer.com -volctraffic.com -volctranscdn.com -volcvideo.com -volcvideos.com -volcvms.com -volcvod.com -volcwaf.com -volcwaf001.com -voldp.com -voleai.com -volic.download.prss.microsoft.com -volit.com -volkswagen-anhui.com -volleyballchina.com -volleychina.org -voltmemo.com -volvocars.com -vomicer.com -voming.com -vommatec.com -voneseals.com -vonets.com -vonng.com -vonwei.com -voo0.com -vooec.com -vooedit.com -voole.com -voolea.com -voolga.net -voopoo.com -voovlive.com -voovlive.net -voovmeeting.com -voovnow.com -vortexfun.com -vosvmamt.com -vot8.com -vote001.com -vote8.com -votianxia.com -voto.cc -votwo.com -voxlearning.com -voxpie.com -voycn.com -vp6.co -vpabrand.com -vpal.com -vpalstatic.com -vpanso.com -vpansou.com -vpascare.com -vpay8.com -vpbus.com -vpcs.com -vpea.ca -vpgame.com -vpgamecdn.com -vpiaotong.com -vpimg1.com -vpimg2.com -vpimg3.com -vpimg4.com -vplay8.com -vplayer.net -vpmagic.com -vpn39.com -vpnsoft.net -vpquc9rn.com -vps-vacuum.com -vps.dance -vps.im -vps234.com -vps55.com -vps911.com -vpsaa.com -vpsaa.net -vpscang.com -vpsce.com -vpser.com -vpshu.com -vpsjxw.com -vpsno.com -vpsoff.net -vpsor.com -vpsplayer.com -vpspurchase.com -vpsss.net -vpssw.com -vpsvip.com -vpsvsvps.com -vpszh.com -vpszl.com -vptek.com -vqaq.com -vqjuice.com -vqq.com -vqs.com -vqskrzmq.com -vqu.show -vqudo.com -vqudochina.com -vqyzdzcg.shop -vr-cat.com -vr186.com -vr2.tv -vr42.com -vrar123.com -vrbeing.com -vrbi.viveport.com -vrbig.com -vrbrothers.com -vrbt.mobi -vrcfo.com -vrdiamondtools.com -vrindabg.com -vrjie.com -vrmajor.com -vrnew.com -vrnos.com -vrp3d.com -vrpinea.com -vrpowder.com -vrqjcs.com -vrqq.org -vrrw.net -vrsat.com -vrtyg.com -vrupup.com -vrvlink.com -vrvmanager.com -vrwuhan.com -vrzb.com -vrzhijia.com -vrzwk.com -vrzwk.net -vs-gascloud.com -vs.cm -vs2a.com -vsaker.com -vsane.com -vsaol.com -vsbclub.com -vsbuys.com -vscenevideo.com -vscode.download.prss.microsoft.com -vscops.com -vsean.net -vsearch.club -vsens.com -vshabo.com -vshangdaili.com -vsharecloud.com -vsharing.com -vshoucang.com -vsjwtcdn.com -vslai.com -vsmquvds.com -vsnoon.net -vsnoon.org -vsochina.com -vsocloud.com -vsoon.net -vsooncat.com -vsooncloud.com -vsoontech.com -vsping.com -vspk.com -vsread.com -vss.cbnmtv.com -vssou.com -vsszan.com -vstarstatic.com -vstart.net -vstecs.com -vstmv.com -vstonefund.com -vstonewealth.com -vstou.com -vsuch.com -vsun.com -vsx10.com -vsxue.com -vsyo.com -vsyy.net -vt-pharm.com -vtache.com -vtcsy.com -vteamgroup.com -vtears.com -vtepai.com -vtepai.net -vtibet.com -vtijian.com -vtool.vip -vtoutiao.cc -vtqccm.com -vtradex.com -vtrois.com -vtron.site -vtstar.net -vtuzx.com -vue-js.com -vue88.com -vuejs.press -vuepush.com -vuevideo.net -vulbox.com -vulcan.dl.playstation.net -vulrange.com -vultr1.com -vultrcn.com -vultrvps.com -vumstar.com -vunion.net -vuphub.com -vurl.fun -vurl.link -vurl.pro -vurl.tech -vurl3.vip -vutimes.com -vuxmpw.com -vuz.me -vv-tool.com -vv.cc -vv27.com -vv8.com -vv881.com -vv8yx.com -vv91.com -vv91.net -vvbin.com -vvddcc.com -vvebo.vip -vvfeng.com -vvgroup.com -vvhan.com -vvhcwpddaa.com -vvhunter.com -vvic.com -vving.vip -vvipcdn.com -vviptuangou.com -vvjob.com -vvmeiju.com -vvo2o.com -vvpgwg.xyz -vvpncdn.com -vvstc.com -vvtor.com -vvup.net -vvvcd.com -vvvdj.com -vvvtt.com -vvxue.com -vvzero.com -vw888.com -vwanjia.com -vwaycn.com -vwhulian.com -vwo50.club -vwvvwv.com -vwwmsd.com -vx.com -vx56.com -vxe.com -vxia.net -vxiaocheng.com -vxiaoxin.com -vxinyou.com -vxixi.com -vxo7tu.com -vxras.com -vxuepin.com -vxuey.com -vxv.ink -vxwo.com -vxxsfxxs.com -vxxx.vip -vycool.com -vycxvgmk.com -vyin.com -vynior.com -vyuan8.com -vz.download.prss.microsoft.com -vz41.com -vzan.cc -vzan.com -vzhang.net -vzhantong.com -vzhifu.net -vzhou.net -vzhuanba.com -vzhuji.com -vzhuo.com -vzhushou.com -vzidc.com -vzimu.net -vzklb.com -vzkoo.com -vzone.me -vztkoegc.com -vzuu.com -w-e.cc -w-startech.com -w-zhong.com -w032.com -w03voavpa5.com -w0663.com -w0x9r0k2l1.com -w10a.com -w10xitong.com -w123w.com -w18.net -w1989.com -w218.com -w2bc.com -w2gou.com -w2n5cu58rn.com -w2solo.com -w3.wifijiangyin.com -w333.com -w3cbus.com -w3ccoo.com -w3cfuns.com -w3chtml.com -w3cjava.com -w3cplus.com -w3cschool.cc -w3ctalk.com -w3ctech.com -w3cways.com -w3h5.com -w3pop.com -w3so.com -w3techservices.com -w3tool.com -w3tt.com -w3xue.com -w5soar.com -w6pdp.com -w7.cc -w7000.com -w7cp.com -w7ghost.net -w918.com -w9188wan.com -wa5.com -wa5as4.com -waaaat.com -waakee.com -waaku.com -waakuu.com -waasee.com -wabcw.info -wabuw.com -wacai.com -wacai365.com -wacaijizhang.com -wacaiyun.com -wacaoren.net -wacdn.com -wader1714.com -wadkj.com -waduanzi.com -wae-logistics.com -waerfa.com -waesedu.com -waf-website.com -waf.one -wafatea.com -wafcn.com -wafunny.com -wafzi.com -wagen.cc -wagonsclub.com -waha.cc -waheaven.com -wahlap.com -wahsanggroup.com -wahtaisz.com -wahuto.com -wahyao.com -waibao123.com -waibao12333.com -waibaodashi.com -waibou.com -waig8.com -waigamer.com -waigf.com -waigi.org -waiguofang.com -waihui321.com -waihui580.com -waihui888.com -waihuigu.net -waihuo.com -waiji.com -wailaishop.com -wailaizhe.com -wailianluntan.com -wailiantu.com -wailianvisa.com -waima.com -waimai.com -waimai.zone -waimai101.com -waimai361.com -waimaimingtang.com -waimaiwanjia.com -waimaob2c.com -waimaoniu.com -waimaoniu.net -waimaoribao.com -waimaozhuge.com -waimungfire.com -wainconnector.com -waipojia.com -waipoxin.com -waiqicha.com -waiqin365.com -waisnj.com -waitingfy.com -waitsun.com -waiyuedu.com -waizaowang.com -wajiquan.com -wajueji.com -wajufo.com -wakaligong.com -wakeai.tech -wakedata.com -wakeofgods.com -wakeup.fun -wakingsands.com -wakkaa.com -wakuai.com -wal8.com -walanwalan.com -walatao.com -walekan.com -wali.com -wali123.com -walibao.com -walimaker.com -walk-live.com -walker-fan.com -walkera.com -walkingpad.com -walkkind.com -walknode.com -walkthechat.com -wallba.com -wallcoo.com -wallcoo.net -walle-web.io -wallet.io -walletio.io -wallmatechina.com -wallstcn.com -wallstreetcn.com -wallswitch.com -walltu.com -wallyt.net -walre.com -walsongreenhouse.com -walton-xuzhou.com -waltzsy.com -waluer.com -walvax.com -wamawama.com -wamila.com -wan-ka.com -wan.cc -wan.com -wan1234.com -wan123x.com -wan25.com -wan32.com -wan5d.com -wan68.com -wan73.com -wan77.com -wan8.com -wan886.com -wan898.com -wan95.com -wanadalu.com -wanandroid.com -wanbaapp.com -wanbexpress.com -wanbgame.com -wanbiao800.com -wanbiaogs.com -wanbiaohao.com -wanbushu.com -wanbuyu.com -wancaiinfo.com -wancaomei.com -wanchangerp.com -wanchaohotels.com -wanche100.com -wanche168.com -wanchemi.com -wancheng168.com -wanchengwenku.com -wanchuweilai.com -wanci.cc -wancibp.com -wancili.com -wanda-cti.com -wanda-gh.com -wanda-group.com -wandacinemas.com -wandaclub.cc -wandacm.com -wandafilm.com -wandahotelinvestment.com -wandahotels.com -wandanji.cc -wandaph.com -wandaplazas.com -wandarealm.com -wandavista.com -wandawic.com -wandhao.com -wandhi.com -wanding.net -wandingwangluo.com -wandipay.com -wandodo.com -wandoer.com -wandongli.com -wandoudou.com -wandouip.com -wandoujia.com -wanduoduo.com -waneziyuan.com -wanfangche.com -wanfangdata.com -wanfangtech.com -wanfangtech.net -wanfantian.com -wanfayun.com -wanfoquan.com -wanfucc.com -wanfudaluye.com -wanfuqianqiu.com -wang-li.com -wang-nan.com -wang-russell.cc -wang1314.com -wang1314.net -wanga.me -wangaiche.com -wangamela.com -wangan.com -wanganke.com -wangbaobei.com -wangbaoqiang-cloudcdn.com -wangbixi.com -wangcaio2o.com -wangcaiwang.com -wangcanmou.com -wangchanggou.com -wangchao.de -wangchujiang.com -wangchunsheng.com -wangcms.com -wangdafeed.com -wangdahn.com -wangdai114.com -wangdai555.com -wangdaibdt.com -wangdaicaifu.com -wangdaidongfang.com -wangdaiguancha.com -wangdaishikong.com -wangdaisj.com -wangdaitiandi.com -wangdalao.com -wangdali.net -wangdaodao.com -wangdianchaxun.com -wangdianmaster.com -wangdingchang321.xyz -wangdingcup.com -wangdongjie.com -wangdu.site -wangduanwifi.com -wangeda.com -wangeditor.com -wangejiba.com -wangfujing.com -wanggongwang.com -wanggou.com -wangguai.com -wanghaicheng.online -wanghaida.com -wanghaifeng.net -wanghanyue.com -wanghao.me -wanghe.tv -wanghong.zone -wanghongluo.com -wanghualang.com -wanghuinet.com -wanghz.com -wangid.com -wangjianshuo.com -wangjiezhe.com -wangjm.com -wangjubao.com -wangjumeng.xin -wangjunwei.com -wangkangzhong.com -wangkewang.com -wangkl.com -wangkong.com -wangle.com -wangligroup.com -wangling.net -wanglingyue.com -wanglong.com -wanglu.info -wangluoxiangmu.com -wanglv.com -wanglv.vip -wangmei360.com -wangmeng.com -wangmingdaquan.cc -wangmou.com -wangniuwms.com -wangpeiaiot.com -wangpiao.com -wangpiao.net -wangpu.net -wangpuzhi.com -wangqc.com -wangqi.com -wangqingzx.com -wangren.com -wangrunze.com -wangshidi.com -wangshitou.com -wangshu.la -wangshuashua.com -wangshugu.com -wangsu.com -wangsu.net -wangsucloud.com -wangsuedge.com -wangsuedge.net -wangsutong.com -wangt.cc -wangtingrui.com -wangtongtong.com -wangtu.com -wanguan.com -wanguanwl.com -wanguo-outlets.com -wanguokang.com -wanguotong.com -wangwanglive.com -wangwango.com -wangweiluo.com -wangwo.net -wangxc.club -wangxiangyule.com -wangxiannen.com -wangxianyuan.com -wangxiao.net -wangxiaobao.cc -wangxiaobao.com -wangxie.org -wangxing.com -wangxingcs.com -wangxinhao.com -wangxinlicai.com -wangyangyang.vip -wangyanpiano.com -wangye6.com -wangyeyixia.com -wangyikai.com -wangyin.com -wangyinmao.com -wangyou.com -wangyou.ink -wangyou2.com -wangyouhangkong.com -wangyuan.com -wangyuedaojia.com -wangyulue.com -wangyunf.com -wangyuwang.com -wangzhan123.net -wangzhan31.com -wangzhan360.com -wangzhanbao.cc -wangzhanbianji.com -wangzhanchi.com -wangzhantuiguang.net -wangzhanzj.com -wangzhe.com -wangzhengzhen.com -wangzhennan.com -wangzherongyao.com -wangzhuanz.com -wanh5.com -wanhea.com -wanhebin.com -wanheweb.com -wanhi.com -wanhongbao.com -wanhongindigo.com -wanhongji.com -wanhu888.com -wanhuabao.com -wanhuaes.com -wanhuahai.com -wanhuajing.com -wanhui365.com -wanhuicar.com -wanhuida888.com -wanhuiya.com -wanhumotor.com -wanhunet.com -wanimal1983.org -wanjia.org -wanjiacc.com -wanjiachupin.com -wanjiaiot.com -wanjiashe.com -wanjiashow.com -wanjidashi.com -wanjiedata.com -wanjiedu.com -wanjiejixie.com -wanjing111.com -wanjiquan.com -wanjunshijie.com -wanjutoy.com -wanka5.com -wankacn.com -wankacn.net -wankamall.com -wanke123.com -wanke798.com -wanku.com -wanlaiwang.com -wanli.com -wanli.org -wanlian-group.com -wanlicd.com -wanliduo.com -wanliniu.com -wanlitong.com -wanlongdianqi.com -wanlongjituan.com -wanmaco.com -wanmei.com -wanmei.net -wanmeidapei.com -wanmeilink.com -wanmeilr.com -wanmeiyunjiao.com -wanmi.com -wanming.com -wanmingpiano.com -wannaenergy.com -wannaexpresso.com -wannar.com -wanneng56.com -wannengxiaoge.com -wannengzj.com -wannianli.net -wannianli3.com -wannianli7.com -wannianli8.com -wannianli9.com -wannianqingjianzhan.com -wannuoda.com -wanplus.com -wanpufeiliu.com -wanqianyun.com -wanqiu123.com -wanqiula.com -wanqutong.com -wanren.com -wanruihuanjing.com -wanrungj.com -wansanzu.com -wansf.com -wanshahao.com -wanshancha.com -wanshangding.com -wanshanshuju.com -wanshifu.com -wanshifuapp.com -wanshitong.com -wanshouyou.net -wanshu.com -wanshuiqing.com -wanshuiwater.com -wanshulou.com -wanshuyun.com -wansixie.com -wansongpu.com -wansusyj.com -want-want.com -wantexe.com -wantgame.net -wantiangroup.com -wantiku.com -wantong-tech.net -wantowan.com -wantquotes.net -wantuju.com -wantumusic.com -wantwords.net -wantwu.com -wantxt.cc -wanwan4399.com -wanwan88.com -wanwang.com -wanwang.space -wanwang.xin -wanweiedu.com -wanweixin.com -wanwu.com -wanwudezhi.com -wanwuelian.com -wanwumall.com -wanwusc.com -wanwushuo.com -wanwuxia.com -wanwuzhinan.com -wanxia.com -wanxiangauto.com -wanxiangleasing.com -wanxiangqihang.com -wanxiangyouxian.com -wanxiaochu.com -wanxie.cc -wanxiquan.com -wanyabox.com -wanyan.com -wanyanwang.com -wanye.cc -wanyico.com -wanyijizi.com -wanyiwang.com -wanyol.com -wanyoo.com -wanyouw.com -wanyouxi.com -wanyouxi7.com -wanyr.com -wanyuannews.com -wanyuanxiang.com -wanyuanyun.com -wanyuenet.com -wanyuhengtong.com -wanyuhudong.com -wanyujy.com -wanyumi.com -wanyunshuju.com -wanyuproperty.com -wanyuwang.com -wanyx.com -wanzaiwater.com -wanzecc.com -wanzhizr.com -wanzhoujob.com -wanzhoumls.com -wanzhoumo.com -wanzhua.com -wanzhuang.com -wanzhuangkj.com -wanzhucdn.com -wanzi.cc -wanzi.com -wanzia.com -wanzjhb.com -wanzuile.com -waodown.com -waoh.fun -waoo.cc -wapone.net -waptt.com -waptw.com -war-sky.com -waralert.net -warchina.com -warcraftchina.com -warframeofficial.com -warhammertech.com -warmchina121.com -warmjar.com -warom.com -warriorshoes.com -warriortire.com -warsk.com -warsongmobile.com -warstudy.com -warsu.com -warting.com -waruixinxi.com -warwww.com -was-expo.com -wasabi.fun -wasair.com -wasanfeng.com -wasd.plus -wasdj.com -wasee.com -washpayer.com -washun.com -washuw.com -wasintek.com -wasoinfo.com -wasonchina.com -wasu.com -wasu.tv -wasucnc.com -watch-space.com -watch-top.net -watch1905.com -watch4s.com -watchadmin.com -watchbooking.com -watchdios.com -watchds.com -watcheschep.com -watchesreplica.cz -watchlead.com -watchok.net -watchreplica.co -watchreplicaswiss.com -watchrm.com -watchshfw.com -watchsos.com -watchstor.com -watchtop.com -watchtraveler.com -watchwxfw.com -watchzb.com -water-cube.com -water520.com -water8848.com -waterchina.com -waterdp.com -waterdropfilter.com -waterenping.com -watergasheat.com -watergdd.com -waterjhh.com -waterlytech.com -watermc.org -watershowcg.com -watertek.com -watertu.com -wateryx.com -watyuan.com -wauee.com -wauee.net -wave-optics.com -wavecn.com -wavecommittee.com -wavedsp.tech -wavefront-optics.com -waveopt.com -waveshare.net -wavezones.com -wavideo.tv -wavpub.com -wawacm.com -wawayaya.net -wawayu.tv -wawlhld.com -waxiaoxia.com -waxpi.com -waxrain.com -waxsivk.com -waxxh.me -way2solo.com -wayboosz.com -waycdn.com -wayenbio.com -wayhu.cc -wayhu8.com -waylon.online -waynetechs.com -wayos.com -wayosbill.com -wayoulegal.com -wayoumi.com -wayoxi.com -waypons.com -waysundata.com -waythtec.com -waytit.com -waytoagi.com -wayzim.com -wazhuti.com -wb133.com -wb321.com -wb521.net -wb699.com -wb86.com -wbangdan.com -wbb-electric.com -wbbcdn.com -wbcm55.com -wbd99.com -wbeexpo.com -wbgt.net -wbh-sh.com -wbhgwbnd.com -wbiao.co -wbiao.com -wbiao120.com -wbiaohome.com -wbimg.com -wbncp.com -wbo529.com -wboll.com -wbolt.com -wbpvc.com -wbrks.com -wbsdz.com -wbstar.com -wbsz.com -wbt5.com -wbtech.com -wbtrans.com -wbw.im -wbwbwb.net -wbxcx.net -wbxinxi.com -wbzd.net -wc-soft.com -wc0122log.com -wc44.com -wcansoft.com -wcbygame.com -wccbee.com -wcccc.cc -wccg.tech -wcd.im -wcfang.com -wch-ic.com -wch17.com -wch666.com -wchfgd.com -wcjbb.com -wcjbb.net -wcjm.org -wclbox.com -wclog1222.com -wcloud.com -wcnc-lh.akamaihd.net -wcode.net -wcp.hk -wcqjyw.com -wcsapi.com -wcsapi.net -wcsfa.com -wcsteasker.com -wcuhdi.com -wcwlmobi.com -wcxjs.com -wcxsw.com -wcyecs.com -wczydns.com -wd-ljt.com -wd1266.com -wdace.com -wdashi.com -wdaveh5game.com -wdazgscbxh2.com -wddcn.com -wddns.net -wddream.com -wdexam.com -wdf1tz.com -wdf1tz.net -wdfangyi.com -wdfok.com -wdfxw.net -wdgf.com -wdghy.com -wdiyi.com -wdj21.com -wdjimg.com -wdjky.com -wdkao.com -wdklchina.com -wdkmall.com -wdku.net -wdkud6.com -wdldl.com -wdmagnet.com -wdmcake.com -wdmuz.com -wdmyksm.com -wdnld.com -wdomob.com -wdpharma.com -wdpower.com -wdptj.com -wdres.com -wdsdjxh.com -wdsjz.com -wdsk.net -wdstory.com -wdsz.net -wdtec.cc -wdtuishu.com -wduw.com -wdw88.com -wdwd.com -wdwlb.com -wdxmzy.com -wdxtub.com -wdycenter.com -wdyiyuan.com -wdyserver.com -wdyxgames.com -wdyy.com -wdzj.com -wdzx.com -we-canlogistics.com -we-pass.com -we.com -we1130.com -we123.com -we2.name -we278.com -we2marry.com -we378.com -we4399.com -we4game.com -we54.com -we556.com -we7.cc -weachat.net -weadoc.com -weakyon.com -wealink.com -weand.com -weaoo.com -weapp.com -weapp.me -wearemanner.com -wearesellers.com -wearosbox.com -weartrends.com -weasing.com -weather-lh.akamaihd.net -weather.com -weatherat.com -weathercn.com -weatherdt.com -weatherol.com -weavatar.com -weavi.com -weaview.com -web-tinker.com -web0518.com -web0898.net -web100.cc -web176.com -web1800.com -web2008.com -web2060.com -web20share.com -web265.net -web3.xin -web3389.com -web360.pw -web3caff.com -web3gate.cc -web3gate.io -web3ling.com -web3radio.com -web89.net -web930.com -webacc.net -webacg.com -webank.com -webankapp.com -webankcdn.net -webanktcftp.net -webankwealth.com -webankwealthcdn.net -webankwld.com -webankwyd.com -webarcx.com -webcamx666.com -webdns263.com -webetter-ad.com -webfalse.com -webfont.com -webfoss.com -webfreecounter.com -webfunny.com -webfuwu.com -webgame138.com -webgame163.com -webgamehome.com -webgetstore.com -webgzs.com -webhek.com -webhivers.com -webiolotech.com -webjike.com -webjx.com -webkaka.com -webkdcdn.com -webkf.net -webkv.com -webmaster.me -webmaster5u.com -webmulu.com -webofknowledge.com -webok.me -webok.net -webond.net -webpackjs.com -webportal.cc -webportalapi.com -webpower.asia -webpowerchina.com -webqxs.com -webrtc.win -websaru.net -websbook.com -websec1.com -websec1.net -websem.cc -webseo9.com -webshao.com -webshu.net -websitecname.com -websjcdn.com -websjy.com -websocket-test.com -websoso.com -websztz.com -webtrncdn.com -webui.fun -webullbroker.com -webullzone.com -webuy.ai -webuy.vip -webview.tech -webworker.tech -webxgame.com -webxin.com -webyang.net -webyounger.com -webzzcdn.com -wecanbio.com -wecare-bio.com -wecarepet.com -wecash.net -wecasting.com -wecenter.com -weceshi.com -wechat.com -wechat.design -wechat.me -wechat.org -wechat77.com -wechatapp.com -wechatapp.us -wechatauthdemo.com -wechatdevelop.com -wechatify.net -wechatlegal.com -wechatlegal.net -wechatmessenger.com -wechatmessenger.us -wechatos.net -wechatpay-global.com -wechatpay.com -wechatpay.com.hk -wechatpay.com.my -weclassroom.com -wecloud.io -wecloudx.com -wecom.work -wecomput.com -wecrm.com -wecrm.net -wecycling.com -wed2008.com -wed6.com -wedate.me -wedcm.com -weddingos.com -wedengta.com -wedev.cool -wedeveloper.com -wedfairy.com -wedn.net -wedoany.com -wedoctor.com -wedoexpress.com -wedooapp.com -wedumedical.com -weebei.com -weebia.com -weedong.com -weeet.com -weefang.com -weeiy.com -weekus.com -weelv.com -weeqoo.com -weeyun.com -wefans.com -wefinger.club -wefitos.com -weflywifi.com -wefunol.com -wegame.com -wegameapi.com -wegamedesign.com -wegamedeveloper.com -wegamemail.com -wegameplus.com -wegamex.com.hk -wegdj.com -wegene.com -wego-healthcare.com -wegooooo.com -wehandbio.com -weharvest.com -wehefei.com -wehelpwin.com -weherepost.com -wehichina.com -wei-ben.com -wei-li.com -wei-ze.com -wei2008.com -wei6.com -wei688.com -weiaixiaoshuo.com -weiba66.com -weibanan.com -weibang.vip -weibangong.com -weibanzhushou.com -weibo.com -weibo.tv -weibocdn.com -weibochem.com -weibohelper.com -weiboi.com -weibolj.com -weibopay.com -weibopie.com -weiboreach.com -weibosci.com -weiboums.com -weibowang.net -weiboyi.com -weibozn.com -weibu.com -weibusi.net -weicaifu.com -weicewang.com -weichai.com -weichaipower.com -weichaishi.com -weichaung.net -weichengchemical.com -weicher-sz.com -weichewl.com -weichuanbo.com -weichuangtech.com -weichuming.com -weico.cc -weico.com -weicogif.com -weicon.cc -weicot.com -weicunmall.com -weida888.com -weidanbai.com -weidanci.com -weidansj.com -weidaohang.org -weidaoliu.com -weidian-inc.com -weidian.cc -weidian.com -weidian.gg -weidiancdn.com -weidianfans.com -weidiango.com -weidianmishu.com -weidibio.com -weidoufu.com -weidown.com -weidulinchang.com -weiduruanjian.com -weiengift.com -weifengchina.com -weifenghr.com -weifengke.com -weifengou.com -weifengtang.com -weifenpay.com -weiforyou.net -weifrom.com -weifujd.com -weigangdairy.com -weigangqin.com -weigaogroup.com -weigaoholding.com -weigaoyaoye.com -weige2006.com -weige55.com -weighment.com -weigongju.org -weiguan.com -weiguang.cc -weiguanlaw.com -weihai.tv -weihaibsy.com -weihaicollege.com -weihaifengji.com -weihaihaiwang.com -weihaisheng.com -weihaobang.com -weihaoyi.com -weiheshidai.com -weihua-newmaterial.com -weihua2.com -weihuagroup.com -weihualing.com -weihubao.com -weihuijob.com -weihuitel.com -weihulian.com -weihuo.site -weihz.net -weii.cc -weiixxin.com -weijia1999.com -weijiancloud.com -weijianmen.com -weijingzhijia.com -weijinsuo.com -weijiu.org -weijiuxin.com -weijizongbao.com -weijj.com -weijq.com -weiju.net -weijuju.com -weikao.com -weikaowu.com -weikasen.com -weike.fm -weike21.com -weikeimg.com -weikelink.com -weikengtech.com -weikenhair.com -weikeqi-biotech.com -weikerifu.com -weikuw.com -weilai555.com -weilaicaijing.com -weilaili.com -weilairzdb.com -weilaishidai.com -weilaitianwang.com -weilaitianwang.info -weilaitiku.com -weilaiyunxiao.com -weilaizhaiju.com -weilaizhushou.com -weilan.com -weilan27.com -weilandog.com -weilanhaian.com -weilanliuxue.com -weilanwl.com -weilayun.com -weile.com -weileapp.com -weilegetu.com -weilekuiming.com -weilenicetime.com -weileryiyt.com -weiliangsport.com -weilindct.com -weiling520.com -weilingapp.com -weilinggame.com -weilinovel.net -weilitoutiao.net -weilongshipin.com -weimaelectric.com -weimagroup.com -weimai.com -weimaitu.com -weimaqi.net -weimeigu.net -weimeiyijing.com -weimen.hu -weimi24.com -weimiaocaishang.com -weimibio.com -weimingchem.com -weimingcq.com -weimingedu.com -weimingkids.com -weimingxt.com -weimisystem.com -weimizhengxing.com -weimob.com -weimob.net -weimobapp.com -weimobcloud.com -weimobdc.com -weimobqa.com -weimobwmc.com -weimoka.com -weinan.cc -weinengkj.com -weinisongdu.com -weinm.com -weiot.net -weipaitang.com -weipe.vip -weiphone.com -weiphone.net -weiphp.com -weipinchu.com -weiping.com -weipu-he.com -weipu.com -weipu.live -weipugroup.com -weipuhj.com -weiputek.com -weiq.com -weiqi.cc -weiqiaocy.com -weiqiaoyun.com -weiqidaxing.com -weiqiming.com -weiqinfang.com -weiqing120.com -weiqingbao.cc -weiqiok.com -weiqitv.com -weiquyx.com -weiren.com -weirenjob.com -weiresearch.com -weiribio.com -weiruipai.net -weisanyun.com -weisay.com -weishadian.com -weishaizi.com -weishan.cc -weishan2015.com -weishang99.net -weishangagent.com -weishangmh.com -weishangshijie.com -weishangtui.vip -weishangye.com -weishengrc.com -weishi.com -weishi016.com -weishi024.com -weishi100.com -weishigz.com -weishipin.com -weishishuyuan.com -weisiliang.com -weismarts.com -weistang.com -weisuda.net -weisurvey.com -weisurvey.net -weisuyun.com -weisuyun.net -weisyun.com -weitehui.com -weitiewang.com -weitoupiao.com -weituibao.com -weitunit.com -weituo.com -weituobang.net -weitupian.com -weitushe.com -weituya.com -weiunity.com -weivd.com -weiwall.com -weiwangpu.com -weiwangvip.com -weiwanjia.com -weiweixiao.net -weiweixiong.com -weiweiyi.com -weiwenjia.com -weiwom.com -weiwss.com -weiwuhui.com -weixianmanbu.com -weixiaoduo.com -weixiaohan.com -weixiaoi.com -weixiaoqu.com -weixiaotong.com -weixiaov.club -weixiaozs.com -weiximusic.com -weixin-001.com -weixin.com -weixin12315.com -weixinbang.com -weixinbiaoqing.com -weixinbridge.com -weixincall.com -weixindadang.com -weixindevelop.com -weixingate.com -weixingmap.com -weixingon.com -weixingongzuoshi.com -weixingv.com -weixinhost.com -weixinhow.com -weixinjia.net -weixinjiajia.com -weixinju.com -weixinkd.com -weixinmvp.com -weixinpy.com -weixinqing.com -weixinqn.com -weixinqz.com -weixinrensheng.com -weixinsir.com -weixinsxy.com -weixinyidu.com -weixinyunduan.com -weixistyle.com -weixiu.name -weixiu2.com -weixiuchu.com -weixiuka.com -weixjn.com -weixue100.com -weixueyuan.net -weixun.com -weixun998.com -weixuncj.com -weixunyunduan.net -weiyan.me -weiyan000.com -weiyangx.com -weiyanjiang.com -weiyapaper.com -weiye-alu.com -weiye.me -weiyes.com -weiyi.com -weiyi.link -weiyiqibj.com -weiyitec.com -weiyituku.com -weiyituliao.com -weiyiwangluo.com -weiyoubot.com -weiyours.com -weiyouxi.com -weiyu98.com -weiyueliang.com -weiyueread.com -weiyun.com -weiyun001.com -weiyunchong.com -weiyunfushi.com -weiyunjian.com -weiyuntop.com -weiyunyingxiang.com -weizhanabc.com -weizhangjilu.com -weizhangwang.com -weizhanle.com -weizhi.com -weizhike.club -weizhipin.com -weizhishu.com -weizhivet.com -weizhiyundong.list -weizhoudaoly.com -weizhuangfu.com -weizhuanji.com -weizoom.com -weizunkj.com -weja-hospital.com -wejianzhan.com -wejias.com -wejizan.com -wejizan.ink -wejoydata.com -weka.life -wekbo.com -weknow.io -wekuo.com -welain.com -welansh.com -welaw.com -welchmat.com -welcome-lt.com -welcrm.com -weledpower.com -welefen.com -weleve.com -welfull.com -welgwiyan.com -weliads.com -welian.com -welidaimkt.com -welife001.com -welife100.com -welinkpark.com -welk.co -well-dns.com -well-js.com -well-trust.com -wellaide.com -wellav.com -wellcee.com -wellhope.net -welljoint.com -welllinkio.com -wellnj.com -wellnode.com -wellongmedical.com -wellpie.com -wellplas.com -wellreach.com -wells-shipping.com -wellselectronic.com -wellsepoxy.com -wellsoon.com -welltonhotel.com -welltrend-edu.com -wellwhales.com -welove520.com -welovead.com -welqua.com -welzek.com -wemagfmp.com -wemart.com -weme.fun -wemechat.com -wemeche.com -wemediacn.com -wemomo.com -wemorefun.com -wems.net -wemtime.com -wemvp.com -wenai.net -wenancehua.com -wenancn.com -wenandaquan.com -wenangou.com -wenanwang.com -wenanzhe.com -wenbagu.com -wenbo.cc -wenbofund.com -wenbothinktank.com -wencaischool.com -wencan.com -wenchain.com -wenda1000.com -wenda123.com -wendabaike.com -wendahu.com -wendaifu.com -wendal.net -wendangdaquan.com -wendangmao.net -wendangwang.com -wendangxiazai.com -wendax.com -wendaxiaowu.com -wendian.com -wendns.com -wendoc.com -wendougee.com -wendu.com -wenduedu.com -wendumao.com -wenfangcn.com -wenfangjushe.com -wenfangnet.com -wenfenggroup.com -wengbi.com -wengegroup.com -wengem.com -wengmeiling.com -wenguang.com -wenguangta.com -wenguangzhineng.com -wenguo.com -wenhao123.com -wenhaofan.com -wenhetong.com -wenhua.cc -wenhuakejiao.com -wenhualvyou.net -wenhui.space -wenidc.com -wenjian.net -wenjianbaike.com -wenjiangbus.com -wenjiangs.com -wenjiasu.com -wenjingnetwork.com -wenjingzhai.com -wenjiwu.com -wenju666.com -wenjuan.cc -wenjuan.com -wenjuan.link -wenjuan.ltd -wenjuan.net -wenjuan.pub -wenjuanba.com -wenjuanbang.com -wenjuanshow.com -wenjuntech.com -wenkaoba.com -wenku.in -wenku.net -wenku365.com -wenku7.com -wenku8.cc -wenku8.com -wenku8.net -wenkub.com -wenkudao.com -wenkudaquan.com -wenkunet.com -wenkuvip.com -wenkuwenku.com -wenkuxiazai.net -wenlc.com -wenli-china.com -wenlian123.com -wenliangedu.com -wenlvnews.com -wenlvpai.com -wenmeng.com -wenmi114.com -wenmingban.com -wenneart.com -wenpie.com -wenroo.com -wenrouge.com -wenryxu.com -wensang.com -wenshaktv.com -wenshannet.com -wenshen.net -wenshenba.com -wenshendaka.com -wenshenku.com -wenshenxiu.com -wenshuba.com -wenshubang.com -wenshushu.com -wensiluo.com -wensli.com -wenstech.com -wensuocaster.com -wentab.com -wenten.net -wentihu.com -wentiquan.net -wentiyi.com -wentong.com -wenwen.com -wenwo.com -wenwu8.com -wenwuchina.com -wenxiaha.com -wenxiaobai.com -wenxiaoyou.com -wenxiaozhan.com -wenxiaozhan.net -wenxin-ge.com -wenxingonline.com -wenxiql.com -wenxiu.com -wenxuan.news -wenxue100.com -wenxue360.com -wenxueapp.com -wenxuedu.com -wenxuem.com -wenxuemm.com -wenxuesk.com -wenxuesk.info -wenxuesk.net -wenxuesk.org -wenxuetiandi.com -wenyaguan.com -wenyaqi.net -wenyi188.com -wenyijcc.com -wenyoutai.com -wenyouyun.com -wenytao.com -wenyu6.com -wenyuanenviron.com -wenyucdn.com -wenyupages.com -wenzaizhibo.com -wenzhangba.com -wenzhanghui.com -wenzheng.club -wenzhihuai.com -wenzhouchayuan.com -wenzhoumajiang.com -wenzhoushuke.com -wenzhousx.com -wenziyuan.com -weoathome.com -wepiao.com -wepie.com -wepieoa.com -weplayapp.com -weplaybubble.com -weplayer.cc -weplaymore.com -weplus.com -weproedu.com -weqoocu.com -werewolf.online -werfactory.com -werkai.com -werlchem.com -wertalk.com -wesane.com -wescrm.com -wesdom.me -weshaketv.com -weshequ.com -weshine.im -weshineapp.com -wesimiot.com -wesing-game.com -wesingapp.com -west-motion.com -west.xyz -west263.com -west95582.com -west999.com -westanpharma.com -westaport.com -westarcloud.com -westbund.art -westbund.com -westchinago.com -westcits.com -weste.net -westendwell.ca -westfutu.com -westinfosoft.com -westingz.com -westlake-vacuum.com -westlakedata.com -westlakegenetech.com -westlakeinst.com -westlakeomics.com -westlaw.com -westleadfund.com -westmining.com -westmininggroup.com -westmonth.com -westonecloud.com -westpac.group -westsecu.com -westsh.com -westsummitcap.com -wesure100.com -wetab.link -wetest.host -wetest.net -wetest.org -wetestlab.net -wetherm.com -weti.me -weton.net -wetools.com -wetools.pro -wetrial.com -wetruetech.com -wetry.shop -wetsd.com -wetuc.com -wetv.vip -wetvinfo.com -weui.io -weuschool.com -wevul.com -wewillpro.com -wewinpe.com -wework-pro.com -wework-studio.com -weworkcloudesk.com -wewuhu.com -wex5.com -wex7.com -wexcdn.com -wexguivq.com -wexiaocheng.com -wexin.com -wey.com -weyee.com -weyesimg.com -weyhd.com -weyic.com -weyo.me -wezeit.com -wezhan.hk -wezhan.net -wezhan.us -wezhibo.net -wezhibo.tv -wezhicms.com -wezhuiyi.com -wezonet.com -wf.pub -wf121.com -wf163.com -wf66.com -wfaozhuo.com -wfbbs.com -wfc805.com -wfcgs.com -wfdaily.com -wfdata.club -wfdj.net -wfdqzx.com -wfdsjls.com -wfdyes.com -wfeil.com -wfek.com -wff168.com -wffc120.com -wffms.com -wfgqw.com -wfhbjg.com -wfhlxy.com -wfiltericf.com -wfilterngf.com -wfits.com -wfjec.com -wfjgzs.com -wfjienuo.com -wfjimg.com -wfjsd.com -wfjtjy.com -wfkji.com -wflgjx.com -wflps.com -wflscaidian.com -wflushebei.com -wfmzjscl.com -wfrcsc.com -wfsanshan.com -wfshiliyy.com -wfswjt.com -wfsydzxyy.com -wfsyzx.net -wftdrh.com -wftvqcm.com -wfuyu.com -wfwzg.xyz -wfy.pub -wfzbjx.com -wfzczdh.com -wfzqhb.com -wfzssz.com -wg-views.com -wg999.com -wgc2025.com -wgce.space -wghai.net -wghaos.com -wghostk.com -wghpdi.com -wgimg.com -wgl-group.com -wglh.com -wglm.net -wgm66.com -wgmf.com -wgmotor.com -wgnds.com -wgoic.com -wgos.com -wgppt.com -wgpsec.org -wgtechjx.com -wgxdxx.com -wgxy.com -wgxy.net -wgy.cc -wh-anhua.com -wh-aojie.com -wh-badges.com -wh-baidu.com -wh-bus.com -wh-charity.com -wh-china.com -wh-dongjiang.com -wh-haipu.com -wh-hsun.com -wh-motorshow.com -wh-mx.com -wh-swhj.com -wh-yuanhang.com -wh10000.com -wh100idc.com -wh111.com -wh119.com -wh12345szzx.com -wh20zx.com -wh50.com -wh5yy.com -wh6yy.com -wh6z.com -wh702g.ren -whabl.net -whaee.com -whafxh.org -whagcg.com -whairport.com -whale-king.com -whale-plus.com -whale123.com -whalefall.space -whaleskts.com -whalet.com -whaletvlive.com -whaleunique.com -whalipaycs.com -whampoa-design.com -whatbuytoday.com -whatchina.com -whatfugui.com -whatismyip.com -whatsns.com -whattheybuy.com -whaudio.com -whbahyxh.com -whbaishitong.com -whbbs.com -whbc2000.com -whbcrs.com -whbear.com -whbec.com -whbester.com -whbgdt.com -whbgy.net -whbhst.com -whbj88.com -whbjdn.com -whbodywell.com -whbts.com -whbuilding.com -whbwj.com -whbws.com -whbx.org -whcaijing.net -whcat.net -whcbank.com -whcbd.net -whcbs.com -whccb.com -whcch802.com -whcdc.org -whcdwater.com -whcfjsjt.com -whcfjt.com -whcfs.org -whcgtx.com -whchem.com -whchip.com -whcibe.com -whcjfc.com -whcjfq.com -whcjkq.com -whcotton.com -whcqedu.com -whcsfzjt.com -whcst.com -whcsyc.com -whctcii.com -whctfcjt.com -whctjg.com -whctv.com -whcx.group -whcx365.com -whcyit.com -whdayy.com -whdckj.com -whdhgd.com -whdjxx.com -whdlfu.com -whdlkj.com -whdonde.com -whdqhj.com -whdrawing.com -whdsck.com -whdsyy.com -whduanwu.com -whdxhzx.com -whec-tencentclb.cloud -whec-tencentclb.com -whec-tencentclb.net -whec-tencentclb.work -whecb.com -whecloud.com -whecn.com -whedu.net -whee.com -whenchat.net -whenever-online.com -wherexpress.com -wherxian.com -whetc.com -whevt.com -whewash.com -whfamous.com -whfazun.com -whfeiyou.com -whfengli.com -whfilter.com -whfles.com -whfph.com -whgas.com -whgayy.com -whgdgjt.com -whggjk.com -whggjtjs.com -whggvc.net -whggzc.com -whgh.org -whghjt.com -whgjzt.com -whgk.com -whglkf.com -whgmbwg.com -whgnjt.com -whgnyy.com -whgtgh.com -whguangguyun.com -whguanshan.com -whguo.com -whgwbn.net -whgyt.com -whhaifang.com -whhaiyue.com -whhbxh.org -whhdcz.com -whhdgk.com -whhdjzzl.com -whhdky.com -whhdmt.com -whhengchang.com -whhexin.com -whhhealth.com -whhhxy.com -whhjjt.com -whhjpharm.com -whhkb.com -whhkbyg.com -whhkgjt.com -whhksj.com -whhmgroup.com -whhmmbl.com -whhouse.com -whhpaccp.com -whhr.com -whhryd.com -whhsg.com -whhtjg.com -whhtjt.com -whhtyl.com -whhuatian.com -whhuayou.com -whhxi.com -whhxyk.com -whhykg.com -whhysound.com -whhyyy.com -whhzhn.com -whhztcm.com -whhzyj.com -whib.com -whicec.com -whichmba.net -whicu.com -whidc.com -whidf.com -whidy.net -whiee.com -whiie-expo.com -whimsywarpgame.cc -whinfo.net -whir.net -whisperto.net -white-collar.net -white-dolphin.com -whitebox.im -whitecat.com -whitecdnx.com -whitegem.net -whitemedia-china.com -whiteswanhotels.com -whitjy.com -whizen.com -whjaco.com -whjbh.com -whjclgs.com -whjf.com -whjh120.com -whjhb.org -whjiahai.com -whjiaoy.com -whjinlong.com -whjjhbj.com -whjkcj.com -whjkct.com -whjksyxx.com -whjldj.com -whjm.com -whjrjjt.com -whjrjt.com -whjrjy.com -whjst.com -whjsxx.com -whjtjt.com -whjuren.com -whjxbaby.com -whjy.net -whjylh.com -whjyx.com -whjyxh.com -whjyxx.com -whjzw.net -whjzxh.com -whjzxx.com -whjzy.net -whjzyxh.org -whk.hk -whkakaxi.com -whkc.com -whkcy.com -whkingdom.com -whkjdxyy.com -whkjz.com -whkxzl.com -whkykj.com -whlabor.com -whland.com -whlangxing.com -whleishen.com -whlexue.com -whlgchache.com -whlib.com -whlido.com -whljyl.com -whlkwy.com -whlovehome.com -whlpa.com -whlrhd.com -whlynk.com -whmama.com -whmc2005.com -whmdedu.com -whmeigao.com -whmf8.com -whminwei.com -whmj.org -whmlcy.net -whmnls.com -whmnrc.com -whmnx.com -whmoocs.com -whmvc.net -whmxrj.com -whmylike.cc -whmylikekq.com -whmzkf.com -whnewcando.com -whnfc.com -who.cx -who2o.com -whoami.akamai.net -whoisreminder.net -whoisspy.ai -whongtec.com -whoolala.com -whooonline.com -whooyan.com -whoregamer.com -whovii.com -whpantosoft.com -whpanva.com -whpcschool.com -whplmd.com -whpma.org -whptc.org -whpx.net -whqcbj.com -whqcpx.com -whqcst.com -whqianxing.com -whqjjt.com -whqtdjy.com -whqtgqbwg.com -whqunyu.com -whqwyd.com -whqyw.com -whrango.com -whrayy.com -whrazf.com -whrcbank.com -whrenai.com -whres.net -whrhkj.com -whrj.com -whrl.net -whrsip.com -whrszx.com -whrtmpay.com -whrtyycg.com -whsctgs.com -whsdhyy.com -whsdsyy.com -whsgj.com -whsgyy.com -whsir.com -whsjfs.com -whsjytyy.com -whskq.com -whsladz.com -whsladz.net -whsmzc.com -whsql.org -whsrc.com -whsthjtzjt.com -whsundata.com -whsw.net -whswcyy.com -whswd.com -whswx.com -whsxsy88.com -whsy.org -whsyy.net -whszniao.com -whtaxi.com -whtbglass.com -whtbgroup.com -whtbq.com -whtby.com -whtcm.com -whtcsz.com -whtdcb.com -whtdlx.com -whtdsc.com -whtfzy.com -whthgy.com -whtime.net -whtmhh.com -whtongyun.com -whtonhe.com -whtpgbyy.com -whtpi.com -whtpyy.com -whtpyzx.com -whtran.com -whtryg.com -whtryine.com -whtto.com -whttsy.com -whtuff.com -whtxcloud.com -whtzb.org -whu-cveo.com -whu.pt -whualong.com -whucopm.com -whudfr.com -whudows.com -whuh.com -whuhzzs.com -whulabs.com -whulc.com -whunitedvet.com -whuss.com -whut-px.com -whutech.com -whuznhmedj.com -whvkk.com -whvms.com -whwanshun.com -whwat.com -whwater.com -whwd.com -whwdky.com -whweb.net -whwebsite.com -whweiying.com -whweo.com -whwgcm.com -whwindplus.com -whwkzc.com -whwm.net -whwm.org -whwomensmarathon.com -whwtqx.com -whwuyan.com -whwx2018.com -whwxxy.com -whwz.com -whx0621.com -whxcepc.com -whxcy.com -whxh.com -whxhdn.com -whxrjt.com -whxsdn.com -whxunw.com -whxwxzxc.com -whxy.net -whxysz.net -whybh2015.com -whycan.com -whycw.com -whyec.com -whyenjoy.com -whyesi.fun -whyestar.com -whyicheng.com -whyimingkeji.com -whyinzhimei.com -whyiqitong.com -whyky.com -whyongwei.com -whyrtc.com -whys558.com -whysb.org -whysdomain.com -whyshop.com -whysodiao.com -whysw.org -whysx.com -whysxc2c.com -whyun.com -whyungu.com -whyuntai.com -whyunzhou.fun -whyushang.com -whyyhy.com -whyyjt.com -whyyy.com -whyzrcb.com -whzb.com -whzbdw.com -whzc2008.com -whzdyy.com -whzglc.com -whzh-cw.com -whzhanyi.com -whzhaopin.net -whzhjty.com -whzhongzhi.com -whzhtd.com -whzhzxmr.com -whzjyy.com -whzjzxy.com -whzkb.com -whzph.com -whzsrc.com -whzszy.com -whzwzk.com -whzwzs.com -whzxht.com -whzxzls.com -whzydz.com -whzys.com -whzzhb.com -wibaidu.com -wicep.com -wicp.net -wicp.vip -wicresoft.com -widgetable.net -widuu.com -wietone.com -wifenxiao.com -wifi188.com -wifi6667.com -wifi8.com -wifiapi.net -wifibanlv.com -wifichain.com -wificstia.com -wifidigyy.com -wifidog.pro -wifigx.com -wifihell.com -wifijy.com -wifilu.com -wifimsl.com -wifinew.com -wifinews.com -wifiniu.com -wifire.net -wifisdk.net -wifishenqi.com -wifivpn.net -wifiwx.com -wifizj.com -wifussion.com -wigenbio.com -wiicha.com -wiihey.com -wiihg.com -wiinkle.com -wiiteer.com -wiitrans.com -wiiun.com -wiiyi.com -wikicaring.com -wikielife.com -wikiimgs.com -wikimbti.com -wildcardx.net -wilddog.com -wilddream.net -wildgun.net -wildhorde.com -wildto.com -wildwind.com -wildwindpharm.com -wiley.com -wilhb.com -willapps.com -willcdn.com -williameva.com -williamslullaby.com -willingchem.com -willingchina.com -willnanobio.com -willsemi.com -willsfitness.net -willwin91.com -wiloon.com -wimetro.com -wimiar.com -win-haoxiang-win.com -win-ke.com -win-man.com -win007.com -win1032.com -win1064.com -win10cjb.com -win10com.com -win10d.com -win10gw.com -win10h.com -win10net.com -win10set.com -win10w.net -win10win.com -win10world.com -win10ww.com -win10xitong.com -win10zyb.com -win3000.com -win310.com -win4000.com -win71234.com -win7china.com -win7en.com -win7qijian.com -win7qjb.com -win7xzb.com -win8.net -win866.com -win8china.com -win8e.com -win8xiazai.com -winallseed.com -winature.com -winbaoxian.com -winbjb.com -winbond-ic.com -winbons.com -winbywin.com -wincellchina.com -wincheers.com -wincheers.net -wincologistics.com -wincome.group -wincomn.com -wincoprint.net -wind.ink -wind.moe -windaka.com -windbg.download.prss.microsoft.com -windcoder.com -windesign.cc -windeyenergy.com -windfone.com -windfonts.com -windin.com -windmsn.com -windoor168.com -windows10.pro -windows10zj.com -windows11.pro -windows7en.com -windowstool.net -windowsupdate.microsoft.com -windowszj.com -windpayer.com -winds.red -windsbridge.com -windsns.com -windspeedbike.com -windtch.com -windtourgame.com -wine-world.com -wine9.com -winebar-pur.com -winegame.net -winekee.com -winemagz.com -winenice.com -wines-info.com -winesinfo.com -winesou.com -wineworld.vip -winex-hk.com -winex-sh.com -winfang.com -winfreeinfo.com -wing-cafe.com -wing-id.com -wing-max.com -wingconn.com -winglinetrans.com -winglungbank.com -wingmob.com -wingon-travel.com -wingsbook.com -wingtecher.com -winheadhunter.com -winhealth.hk -winhealthgroups.com -winhlb.com -winhong.com -winicssec.com -winjoinit.com -winkingworks.com -winkkie.com -winksi.com -winlongtech.com -winmoes.com -winndoo.com -winner-hitech.com -winner-rbt.com -winner9.com -winnerholding.com -winnermicro.com -winnerracing.com -winnerway.com -winnet.cc -winningdq.com -winos.me -winotes.net -winotmk.com -winowe.com -winpe.cc -winpex-cn.com -winpexgroup.com -winrim.com -winrobot360.com -winsalesaas.com -winsenseos.com -winshang.com -winshangdata.com -winsing.net -winspay.com -winstandard.com -winstoncc.com -winsui.com -winsun3d.com -wintalent.com -wintaosaas.com -winteam500.com -wintech-nano.com -wintechchina.com -winterchen.com -wintimechina.com -winto100.com -wintodoor.com -wintom.net -wintooo.com -wintopedu.com -wintrueholding.com -wintxt.com -winvk.com -winvod.com -winvvv.com -winwebmail.com -winwin-co.com -winwin-hotel.com -winwin7.com -winwinchemical.com -winxiang.com -winxp8.com -winxuan.com -winxuancdn.com -winyoungreading.com -winziss.com -winzonelaw.com -wio2o.com -wiot.host -wipanda.com -wireless-driver.com -wireless-tag.com -wirelesschina-summit.com -wiremesh001.com -wiremeshforfilter.com -wirlesshare.com -wis-park.com -wisbiom.com -wisburg.com -wiscargo.com -wischina.org -wisder.net -wisdoing.com -wisdom-braun.com -wisdomcmmi.com -wisdomep.com -wisdompharma.com -wisdomwz.com -wisdontech.com -wisdri.com -wise-iot.com -wise99.com -wiseah.com -wiseasy.com -wisebond.net -wisecity.net -wisecotech.com -wisedoo.com -wisedsp.net -wisedu.com -wiseetec.com -wisefx.com -wisegotech.com -wiseimp.com -wisekingsurgical.com -wiselong.cc -wiselong.com -wisenjoy.com -wisentbioproductschina.com -wiseqx.com -wisestcloud.com -wiseuc.com -wisevector.com -wisewatercloud.com -wish-hightech.com -wish3d.com -wishcad.com -wishdown.com -wishisp.com -wishtec.com -wisiyilink.com -wison-engineering.com -wison.com -wispower.com -wisrc.com -wistapharma.com -wistone.com -wiswonder.com -wit-parking.com -wit0.com -witcp.com -witersen.com -with366.com -withcdn.com -withmedia.net -withoutpain.net -withpinbox.com -withqiuliang.com -withwheat.com -withwinds.com -withzz.com -witintech.com -witkeyschool.com -witmart.net -witnew.net -witontek.com -witrn.com -witspring.com -wittf.ink -wityx.com -wiwide.com -wiwide.net -wixdigital.com -wiz03.com -wizitek.com -wizsci.com -wj-chem.com -wj-hospital.com -wj-hr.com -wj-lean.com -wj-park.com -wj-time.com -wj001.com -wj0556.com -wj166.com -wjacloud.com -wjajw.com -wjasset.com -wjbfwzx.com -wjccx.com -wjcd.net -wjceo.com -wjcjt.com -wjctg.com -wjdaily.com -wjdhcms.com -wjdiy.com -wjdiy.net -wjedu.net -wjeryuan.com -wjfcw.com -wjfilm.com -wjgdyy.com -wjgslb.com -wjhh666.com -wjhotelgroup.com -wjhouses.com -wjhr.net -wjhtxx.com -wjiaxing.com -wjin.cc -wjinmiao.com -wjjfjt.com -wjjyxxw.com -wjlxmedia.com -wjmh8.com -wjnin.cc -wjqcw.com -wjqwy.com -wjqxmy.com -wjqyw.com -wjrcb.com -wjs.com -wjshw.com -wjsldy.com -wjsms.net -wjsw.com -wjtr.com -wjtzyg.com -wjwuqiang.com -wjx.com -wjx.top -wjy01.com -wjyanghu.com -wjyh.com -wjyt-china.org -wjyw.com -wjzp.cc -wjzpgz.com -wk2.com -wk515.com -wk78.com -wkai.cc -wkandian.com -wkbins.com -wkbrowser.com -wkcdn.com -wkcmall.com -wkcw.net -wkddkyy.com -wkdimg.com -wkdty.com -wkepu.com -wkhub.com -wkimg.com -wkkshu.com -wklken.me -wkmic.com -wknky1296.com -wkopen.com -wkread.com -wksc.com -wkshipark.com -wktfkj.com -wktline.com -wkwl9.com -wkxxw.com -wkyx520.com -wkzf.com -wkzk.com -wkzstencent.com -wkzuche.com -wl369.com -wl890.com -wlaforum.com -wlai.vip -wlaiy.com -wlanadmin.com -wlanbanlv.com -wlcbnews.com -wlcbw.com -wlcxx.com -wld5.com -wldbs.com -wldlr.com -wldmarket.com -wlds.net -wldsb.com -wlerp.com -wlfce.com -wlfimms.com -wlgkk.com -wlgooo.com -wlgou.com -wlhcc.com -wlhyjx.com -wlhyxh.com -wlinfor.com -wljhealth.com -wljyyjy.com -wlkgo.com -wlkst.com -wlku.com -wll-xyz.com -wllxcl.com -wllxx.com -wllxy.net -wlmf.vip -wlmq.com -wlmqedu.com -wlmqhytd.com -wlmqrc.com -wlmqrsks.com -wlmqwb.com -wlmqxht.com -wlnh.net -wlnmp.com -wlnnosu.xyz -wlol.com -wlphp.com -wlplove.com -wlqtpolytheatre.com -wlrcw.com -wlrjy.com -wls96121.com -wlsgjslgy.com -wlski.com -wlstock.com -wlsx.net -wltieyaoban.com -wltong.com -wluotx.com -wlw-jcdlcxzx.com -wlwj.com -wlwltech.com -wlwx.com -wlwx.la -wlwx.org -wlxit.com -wlxmall.com -wlxtbj.com -wlxuan.com -wlxww.com -wlyfw.com -wlyjbl.com -wlyongli.com -wlyoushi.com -wlysjt.com -wlyyjt.com -wlzni.com -wlzp.com -wlzp.vip -wlzz666.com -wm-dream.vip -wm-imotor.com -wm-motor.com -wm090.com -wm18.com -wm23.com -wmathor.com -wmb2b.com -wmbluegame.com -wmc-bj.net -wmc-gba.net -wmc95588.com -wmcloud.com -wmcn.com -wmdang.com -wmfanyi.com -wmgurt9zka425.com -wmhcn.net -wmiao.com -wmidgroup.com -wmimg.com -wming.com -wmintl.com -wmiyx.com -wmjk.net -wmjrc.com -wmjt.net -wmjygg.net -wmjyqd.net -wmjyszba.com -wmksj.com -wmlip.com -wmnetwork.cc -wmok.com -wmp169.com -wmphp.com -wmpic.me -wmproxy.net -wmpvp.com -wmpyol.com -wmqt.net -wmqzyyy.com -wms100.com -wmsjyun.com -wmslz.com -wmsub.com -wmupd.com -wmvideo.com -wmviv.com -wmwm.com -wmxba.com -wmxcjj.com -wmxpro.com -wmxue.com -wmxxgy.com -wmxxgz.com -wmxxwh.com -wmxxxj.com -wmy-ad.com -wmyqdmm.com -wmzhe.com -wmzkt.com -wmzp.cc -wmzyw.com -wn1998.com -wn51.com -wn789.com -wnark.com -wnbsq.com -wnchengtou.com -wncpp.net -wndoor.com -wndroid.com -wnevia.com -wnform.com -wnhuifu.com -wniec.com -wniecm.com -wnjdtz.com -wnkbyon.com -wnkj88.com -wnlbs.com -wnllx.com -wnlpromain.com -wnlproyunying.com -wnlprozhanxing.com -wnlprozijia.com -wnluo.com -wnlwedu.com -wnnyjx.com -wnote.com -wnplayer.net -wnqapp.com -wnqianbao.com -wnrb.net -wnrcw.com -wns888.com -wns8888.com -wnshouhu.com -wnspic.com -wnspicbk.com -wnsqzone.com -wnsqzonebk.com -wnssedu.com -wnszxyy.com -wntool.com -wntzjt.com -wnuos.com -wnwb.com -wnxfs.com -wnylyx.com -wnzc.com -wnzctc.com -wnzhbb.com -wnzy.net -wo-link.tech -wo-smart.com -wo-voyage.com -wo-xa.com -wo.cc -wo116114.com -wo186.tv -wo1wan.com -wo87.com -woa.com -woaanc.com -woaap.com -woai310.com -woaidu.org -woaihaoyouxi.com -woaihuahua.com -woaihuoshan.com -woailai.com -woaipu.com -woaiseo.net -woaishouban.com -woaivps.com -woaixiao.com -woaiyt.com -woaizhitu.com -woaizr.com -woaizuji.com -woaoo.net -woaoocdn.com -wobaif.com -wobangzhao.com -wobeili.com -wobocn.com -wobu2.com -woc.space -woc88.com -wocai.de -wocaoseo.net -wochacha.com -wochaw.com -woda.com -wodasi.com -wodavip.com -wode.bid -wode.im -wodeabc.com -wodecaipu.com -wodecrowd.com -wodecun.com -wodedagong.com -wodeev.com -wodeoffice.com -wodescw.com -wodeshebao.com -wodeshucheng.com -wodeyt.com -wodidashi.com -wodingche.com -wodjob.com -wodocx.com -wodown.com -wodu518.com -wodunyun.com -woeoo.com -wofang.com -wofangwang.com -wofficebox.com -wofjhs.com -wofuwater.com -wogame.net -wogaosuni.com -wogg.net -wogoo.com -wohenizaiyiqi.com -woheschool.com -wohst8.com -wohuishou.club -woi3d.com -woiauto.com -woiles.com -woiwrj.com -woiyu.com -wojiacloud.com -wojiaoni.com -wojiuhuanle.com -wok.com -wokaola.com -wokeji.com -wokende.com -wokew.com -woko.cc -wol.tv -wolai.com -wolai.ren -wolaidai.com -wolansw.com -wolegou.net -wolei-tech.com -wolezhibo.com -wolf.cc -wolfbolin.com -wolfcstech.com -wolfgo.com -wolfguandan-01.com -wolfguandan-02.com -wolfguandan-03.com -wolfguandan-04.com -wolfguandan-05.com -wolfogre.com -wolianw.com -wolidou.com -wolife.com -wolighting.com -woliuda.com -wolizhai.com -wolong-beng.com -wolong.com -wolonge.com -wolongge.com -wolongmedia.com -wolongyin.com -wolongyoule.com -wolwo.ltd -wolwobiotech.com -wom186.com -womai.com -womaiapp.com -womailink.com -woman91.com -womanfriend.com -womei.org -womeifilm.com -womeimenye.com -women-heart.com -womendedw.com -womenjie.com -womenofchina.com -wonadea.com -wonder-link.net -wonder.wiki -wondercv.com -wonderful-pr.com -wonderfulnonwoven.com -wonderfulsz.com -wonderjk.com -wonderkun.cc -wonderscloud.com -wondersgroup.com -wondershare.cc -wondershare.com -wondershare.com.br -wondershare.jp -wondershare.net -wondersmemory.com -wonderstar027.com -wonderyouxi.com -wondko.com -wonengxing588.com -wonflavour.com -wonfulplaza.com -wongcw.com -wongpeace.com -wongsiolong.com -woniu.com -woniu8.com -woniubaoxian.com -woniucloud.com -woniuge.com -woniugm.com -woniuhuoche.com -woniupai.net -woniutrip.com -wonjarobot.com -wonmay.com -wonmay.net -wonnder.com -wononme.com -wonote.com -wonpearl.com -wonplug.net -woo.im -wood-china.com -wood168.net -wood888.net -woodbridgebath.com -woodbunny.com -woodchina.com -woodnn.com -woodsbrosrental.com -woofee-laser.com -wooffice.net -wooide.com -woola.net -wooolab.com -wooomooo.com -wooqx.com -woordee.com -woosiyuan.com -woosmart.com -woowtcprc.com -wooxhome.com -wooyun.org -woozooo.com -wopaiyi.com -wopaw.com -wopop.com -wopti.net -wopus.org -woqifoundation.com -woqu.com -woquyun.com -word666.com -wordfc.com -wordlm.com -wordplay.work -wordpress.la -wordscan.net -wordscheck.com -wordstorming.com -wordsunny.com -workbenchapi.com -workchat.com -workec.com -workehr.com -workerman.net -workpcb.com -worksoho.com -worktile.com -worktilemail.com -workyun.com -world-machining.com -world-pet.org -world3dmodel.com -world68.com -worldbangmai.com -worldbank.org -worldbearingshub.com -worldbuy.cc -worldcps.com -worldfcdn.com -worldgoodvoices.com -worldh5.com -worldhello.net -worldhotel.com -worldhub.market -worldinout.com -worldjiasu.com -worldmr.net -worldnyjx.com -worldpathclinic.com -worldpowerliftingchina.com -worldrobotconference.com -worldscientific.com -worldsteel.net -worlduc.com -worldwarner.com -worldwayhk.com -worldwu.com -wort.cloud -worthgarden.com -worthtech.net -worthy.cc -woruide.net -worxperience.com -wosai-inc.com -wosaimg.com -wosenmedia.com -woshanit.com -woshao.com -woshenghotel.com -woshi100.com -woshipm.com -woshipt.com -woshiqian.com -wosign.com -wosigndoc.com -woskj2.com -woso100.com -wosu.streamguys1.com -wotangka.com -wotaoka.com -wotingpingshu.com -wotokol.com -wotransfer.com -wotrus.com -wotrust.com -wotta.net -wotuan.com -wotucdn.com -wotula.com -wouju.com -wouu.net -wow.fun -wowamazingthings.com -wowbbs.com -wowcat.net -wowchina.com -wowenda.com -wowenwen.com -wowgf.com -wowo6.com -wowogroup.com -wowoit.com -wowomaifang.com -wowoohr.com -wowops.com -wowoqq.com -wowoshijie.com -wowotech.net -wowotuan.com -wowoyoo.com -wowoyou.com -wowoyou.net -wowozhe.com -wowqu.cc -wowtb.com -wowtran.com -wowza-stream.wbur.org -wowza.montevideo.com.uy -wowza.ner.gov.tw -wowzx.net -woxian.com -woxiaoyun.com -woxihuan.com -woxiu.com -woxuexue.com -woxuyuan.com -woyao998.com -woyaobaoliang.com -woyaodayin.com -woyaogexing.com -woyaojiaju.com -woyaoqiudai.com -woyaosai.com -woyaozhan.com -woying.com -woyo.com -woyonghj.com -woyoo.com -woyouche.com -woyouzhuce.com -woyun.work -wozaixiaoyuan.com -wozhangwan.com -wozhishang.com -wozhongla.com -wozhuan.com -wozhuye.com -wp-china-yes.net -wp-hz.com -wp10.cc -wpan123.com -wpc.124ce.sigmacdn.net -wpceo.com -wpcio.com -wpcsh.com -wpdaxue.com -wpdian.com -wpengapp.com -wpeu.net -wpeyes.com -wpgdadatong.com -wpgdadawant.com -wpglb.com -wphonelife.com -wphun.com -wping.org -wpjam.com -wpk8.com -wporder.com -wproedu.com -wps.com -wpscdn.com -wpsdns.com -wpsep.net -wpsgo.com -wpske.com -wpsmail.net -wpsoffice.com -wpsplus.com -wpt.la -wptao.com -wptea.com -wpued.com -wpurl.cc -wpweixin.com -wpxap.com -wpyou.com -wpzhiku.com -wpzysq.com -wq96f9.com -wqbook.com -wqc.so -wqchat.com -wqcsjt.com -wqdian.com -wqdian.net -wqdsq.com -wqgp.com -wqhfw.com -wqhome.com -wqhunqing.com -wqian.net -wqiis.com -wqingjian.com -wqketang.com -wqlml.com -wqoiyz.com -wqop2018.com -wqshe.com -wqstatic.com -wqszwhf.com -wqtool.com -wqxsw.com -wqxuetang.com -wqycq.com -wqyunpan.com -wqzsc36ou356m.com -wqzx.net -wr88.cc -wrcdn.com -wrdtech.com -wrfou.com -wright9.com -write-bug.com -writebp.com -writingo-editor.com -writingo.net -wrjpcwr.com -wrjzj.com -wrkdih.com -wrlsw.com -wrltxt.com -wrmjk.com -wrsa.net -wrshg.com -wrtauto.com -wrtnode.cc -wrtnode.com -wrtsz.com -wrxdsm.com -wsaf.net -wsandos.com -wsbedu.com -wsbkwai.com -wsbuluo.com -wscdn30.com -wscdns.com -wscdns.info -wscdns.org -wscdnss.com -wsce-expo.com -wscgdns.com -wsche.com -wscloudcdn.com -wscloudcdn.org -wsclouddns.com -wscloudsec.com -wscloudvpn.com -wsclsb.net -wscn.net -wscont1.apps.microsoft.com -wscont2.apps.microsoft.com -wscp.shop -wscrm.net -wscso.com -wscstrace.com -wscvdns.com -wsdianzi.com -wsdks.com -wsdlb.com -wsdns.top -wsdqd56.com -wsdvs.com -wsdvs.info -wsdvs.net -wsdvs.org -wsecar.com -wseen.com -wselearning.com -wselearning.net -wseqtza.com -wsf1234.com -wsfdl.com -wsfdn.com -wsfff.com -wsfgx.com -wsfnk.com -wsgeogen.com -wsgjj.com -wsgjp.com -wsglb.com -wsglb.net -wsglb0.com -wsglb0.info -wsglb0.org -wsglw.com -wsglw.net -wsgph.com -wsgri.com -wsgtm1.com -wsgtm2.com -wsgtm3.com -wshang.com -wshbzc.com -wshengda2009.com -wshenm.com -wshifen.com -wshili.com -wshost.cc -wshoto.com -wshr.com -wshtgame.com -wshttpdns.com -wsimen.com -wsipv6.com -wsisp.com -wsisp.net -wsjgd688.com -wsjol.com -wsjtxia.com -wskam.com -wsks.net -wskwai.com -wslivehls.com -wsljf.xyz -wsngb.com -wsonh.com -wsoso.com -wsoss.com -wsound.cc -wsoversea.com -wsoversea.info -wsoversea.net -wsoversea.org -wsqejt.com -wsrsj.com -wsrxw.com -wss.cc -wss.email -wss.ink -wss.pet -wss.show -wss.zone -wssafe.net -wssanguo.com -wssdns.com -wsssec.com -wsstplay.com -wssvs.com -wssvs.net -wssyun.com -wsszzx.com -wstong.com -wstx.com -wsukwai.com -wsurl.cc -wswebcdn.com -wswebcdn.info -wswebcdn.org -wswebpic.com -wswebpic.info -wswebpic.org -wsxa.com -wsxc.me -wsxcme.com -wsxjzp.com -wsxsdf.com -wsy.com -wsy400.com -wsy7.com -wsyhn.com -wsysdg.com -wsyuanlin.com -wsyxmall.com -wszwhg.net -wt-tech.com -wt168.com -wt222.com -wta-web.org -wtaluo.com -wtango.com -wtbds.com -wtbworld.com -wtc-conference.com -wtcmirni.com -wtcxs.com -wtd56.com -wtdex.com -wtdms.com -wtecl.com -wtfeng.com -wtg7ew8cvzxbk.com -wtiharbin.com -wtimm.com -wting.info -wtkj.site -wtliker.com -wtmicrowave.com -wtmtest.com -wtn-bearing.com -wto-btb.com -wto168.net -wto9000.com -wtoip.com -wtojob.com -wtoutiao.com -wtown.com -wts999.com -wtsimg.com -wtsm.net -wtsoft.net -wtszx.com -wttai.com -wttms.com -wtuce.com -wtwvision.com -wtxcdn.com -wtxcon.com -wtzw.com -wu-mart.com -wu-mi.com -wu.run -wu123.com -wu35.com -wu37.com -wu7zhi.com -wuage.com -wuahihotel.com -wuaihanfu.com -wuaiso.com -wuaitec.com -wuaitour.com -wuan888.com -wubaiyi.com -wubaiyi.net -wubaiyi.vip -wubashangban.com -wubeizi.com -wubiba.com -wubixuexi.com -wubizi.net -wublock123.com -wubuxianjing.com -wubx.net -wuchenxu.com -wuchuanghui.com -wuchucloud.com -wuchucloud.net -wuchuyun.com -wuchuyun.net -wucuoxs.com -wucuozi.com -wuczfj.com -wudaai.com -wudage.com -wudajucheng.com -wudang.cc -wudangpai.com -wudangshan.com -wudao.com -wudao28.com -wudaola.com -wudaotech.com -wudaotv.com -wudeli.com -wudihan.com -wudingfadian.com -wuduyi.com -wueasy.com -wufafuwu.com -wufan88.com -wufangzhai.com -wufazhuce.com -wufun.net -wufunb.com -wug4.com -wuganpark.com -wugongdong.com -wuguiyunwei.com -wuguyufen.com -wugx.net -wuhaidaily.com -wuhaijy.com -wuhan-guide.com -wuhan-tour.net -wuhan.com -wuhananyu.com -wuhanbaituo.com -wuhanbiennial.com -wuhanbus.com -wuhanchengqi.com -wuhancityofdesign.com -wuhandaishu.com -wuhanev.com -wuhanfuke120.com -wuhanfukeyy.com -wuhanghyy.com -wuhanhexin.com -wuhanins.com -wuhanjingce.com -wuhankb.com -wuhankq.com -wuhanlanqing.com -wuhanlengji.com -wuhanly.com -wuhanmarathon.org -wuhanmeigao.com -wuhanmetro.com -wuhanopen.org -wuhanparking.com -wuhanpe.com -wuhanpep.com -wuhanport.com -wuhanrt.com -wuhansanzhen.com -wuhansport.com -wuhanta.com -wuhantianqi114.com -wuhantskj.com -wuhanunion.com -wuhanup.com -wuhanwyg.com -wuhanyushidai.com -wuhanzdq.com -wuhanzhenye.com -wuhao13.xin -wuhexxg.com -wuhongsheng.com -wuht.net -wuhu.cc -wuhuashe.com -wuhubtv.com -wuhues.com -wuhujianshe.com -wuhukj.fun -wuhusanlian.com -wuhuwater.com -wuhuzr.com -wuhzx.com -wui5.com -wuip.com -wuji-edu.com -wuji.com -wujianghongyi.com -wujianghr.com -wujiangtong.com -wujiayi.vip -wujicode.com -wujiecaifu.com -wujiehd.com -wujiehuyu.com -wujiemed.com -wujiexiang.com -wujieyouth.com -wujiit.com -wujijiasu.com -wujinimg.com -wujinpp.com -wujintool.com -wujinwater.com -wujiok.com -wujisite.com -wujistatic.com -wujitang.com -wujixiaoshuo.com -wujixsw.info -wujogroup.com -wujue.com -wukaikai.tech -wukao.com -wukong.com -wukong.la -wukongbjb.com -wukongkf.com -wukongks.com -wukonglicai.com -wukongphp.com -wukongrom.com -wukongsearch.com -wukongshuo.com -wukongtj.com -wukongwenda.com -wukongyz.com -wukypay.com -wul.ai -wulannews.com -wuli.wiki -wuliangroup.com -wuliannanjing.com -wuliaoo.com -wuliaosi.com -wuliaozhuan.com -wuliapi.com -wulicdn.com -wulincdn.com -wulincun.com -wulinfeng8.com -wuling.com -wulingauto.com -wulingnev.com -wulingzy.com -wulinn.com -wuliok.com -wuliucat.com -wuliuhangye.com -wuliujie.com -wuliuren.com -wuliuyun.com -wulong365.com -wuluoyun.com -wulvxing.com -wumai.net -wumart.com -wumii.tv -wuming.com -wupdec.com -wupk.com -wuqi-micro.com -wuqing.cc -wuqiong.info -wuqizhen.com -wuqutu.com -wurenjifanzhi.com -wurenjihangyexiehui.com -wuruihong.com -wuscn.com -wuse.com -wuse.ink -wusen.net -wuseng.net -wusetu.art -wushang.com -wushen.com -wushidu.com -wushifublog.com -wushuangol.com -wushuangtech.com -wushuangzl.com -wushuhenan.com -wushuibao.com -wushupeixunban.com -wushuzw.com -wushuzw.org -wusong.com -wusuhan.com -wusunjiance.net -wusunk.com -wusuobuneng.com -wusuobuneng.org -wuta-cam.com -wuta.cc -wutaishanfojiao.com -wutanyuhuatan.com -wuteaclub.com -wutep.com -wuthreat.com -wutianqi.com -wutongchain.com -wutongguo.com -wutongtec.com -wutongzi.com -wutos.com -wutuojia.com -wuuconix.link -wuuxiang.com -wuwangnongseed.com -wuweijob.com -wuweiyou.com -wuwenjun.net -wuwm.streamguys1.com -wuwuju.com -wuxi5h.com -wuxi9h.com -wuxiairport.com -wuxiamt.com -wuxianhaibao.com -wuxiantu.com -wuxianyaan.com -wuxiaoyang.com -wuxiatools.com -wuxiatu.com -wuxibus.com -wuxicxl.com -wuxidiagnostics.com -wuxihospital.com -wuxihqyy.com -wuxijf.com -wuxijia.com -wuxijiekang.com -wuximarathon.com -wuximediaglobal.com -wuximhc.com -wuxin.info -wuxinban.com -wuxingmu.com -wuxingzuji.com -wuxinhua.com -wuxinmuye.com -wuxipark.com -wuxiph.com -wuxishuangfan.com -wuxishuangyou.com -wuxisj.com -wuxitianlang.com -wuxiwang.net -wuxiwanli.com -wuxiwenlv.com -wuxiworld.com -wuxixdc.com -wuxixz.com -wuxiyishi.com -wuxizazhi.com -wuxizazhi.net -wuxjob.com -wuxs.org -wuxue.cc -wuxuwang.com -wuxzx.com -wuyabuluo.com -wuyang-honda.com -wuyangkeji.com -wuyangmotor.com -wuyangplatform.com -wuyantonglun.org -wuyazi.com -wuyecao.net -wuyechaorenrcw.com -wuyenews.com -wuyetongxin.com -wuyetoutiao.com -wuyi.link -wuyida.com -wuyijt.com -wuyishan.net -wuyixinyi.com -wuylh.com -wuyongwang.com -wuyou.com -wuyou.net -wuyou189.com -wuyoudagong.com -wuyoufang.com -wuyougroup.com -wuyoujianding.com -wuyoushow.com -wuyousy.com -wuyouyun.cc -wuyouyun.com -wuys.com -wuyuan.cc -wuyublog.com -wuyueart.com -wuyueit.com -wuyuidc.com -wuyukang.com -wuyumin.com -wuyuntaxue.com -wuyutai.com -wuz7.com -wuzao.com -wuzhaiba.com -wuzhenfestival.com -wuzhenpay.com -wuzhenwic.org -wuzhenwucun.com -wuzhi.me -wuzhicms.com -wuzhii.com -wuzhiq.com -wuzhiwei.net -wuzhong.com -wuzhongdc.com -wuzhongwater.com -wuzhoucj.com -wuzhoucloud.com -wuzhoudonghui.com -wuzhouhotels.com -wuzhoumed.com -wuzhouqianzheng.com -wuzhourcw.com -wuzhouwahson.com -wuzhuiso.com -wuzi8.com -wuzx.com -wvidc.com -wvkygvmu.com -wvmrczc.com -wvshare.com -wvxkezhg.com -ww2bbs.net -ww8899.com -wware.org -wwejds.com -wwenglish.com -wwenglish.org -wwentua.com -wweuzgtp.com -wwfchina.org -wwhlian.com -wwjia.com -wwjie.com -wwlcargo.com -wwldz.com -wwmhdq.com -wwnet.vip -wwrcw.net -wws23.com -wwsgh.com -wwsq.tv -wwstat.com -www-11187.com -www-4466666.com -www-666789.com -www-76244.com -www-csb.dell.com -www.adobe.com -www.cbsnews.com -www.cdnetworks.com -www.cg -www.com.my -www.dell.com -www.destinationurl.com -www.djivideos.com -www.epsonconnect.com -www.filmon.com -www.gov.mo -www.htc.com -www.microsoft.com -www.nike.com -www.pxcc.com -www.pxitv.com -www.recaptcha.net -www.redhat.com -www.samsung.com -www.soundvideostar.com -www.st.com -www.szmgiptv.com -www.tutorabc.com -www.uz0.xyz -www.viveport.com -www.yxssp.com -www2489.com -www4-static.gog-statics.com -www48-365365.com -www5929.com -www9912.com -wwwbuild.net -wwwer.net -wwwfkw.com -wwwic.net -wwwimages.adobe.com -wwwimages2.adobe.com -wwxrmyy.com -wwxxg.com -wx-api.net -wx-data.com -wx-jsj.com -wx-xdxc.com -wx-yn.com -wx-youyan.net -wx.com -wx135.com -wx2h.com -wx2share.com -wx4.cc -wx8g.com -wx8h.com -wx8s.com -wx920.com -wx939.com -wxagame.com -wxagyy.com -wxamedia.com -wxamkfyy.com -wxappclub.com -wxappvideo.com -wxatech.com -wxavu.com -wxaz.net -wxb.com -wxb3d.com -wxbaoming.com -wxbhagv.com -wxbiao.com -wxbjyy.com -wxbkw.com -wxblockchain.com -wxboiler.com -wxboilerchina.com -wxbrandway.com -wxbsgc.com -wxccfz.com -wxccl.net -wxcec.net -wxcha.com -wxchaoshengbo.com -wxchildren.com -wxchina.com -wxchuguan.com -wxchunleikeji.com -wxcig.com -wxcjfzjt.com -wxcloudrun.com -wxcnc.com -wxcnpa.com -wxcsgd.com -wxcts.com -wxddlfsq.com -wxdegroup.com -wxdesk.com -wxdfgc.com -wxdhnt.com -wxdianju.com -wxdtsj.com -wxdw.info -wxeditor.com -wxedu.net -wxeic.com -wxfhqchina.com -wxfls.net -wxfncjd.com -wxfr.net -wxfsdff.com -wxfsgj.com -wxfxw.com -wxgamemini.com -wxgamemini.work -wxgateway.com -wxggxx.com -wxgjyy.com -wxglyy.com -wxgmkt.com -wxgongkaike.com -wxgrcpa.com -wxgxjt.com -wxgz.net -wxhaifa.com -wxhand.com -wxhbjt.com -wxhbzx.com -wxhcgbds.com -wxhdzg.com -wxhgglc.com -wxhgsrm.com -wxhkexpress.com -wxhledu.com -wxhlhg.com -wxhlzx.com -wxhon.com -wxhongqiao.com -wxhouse.com -wxhrm.com -wxhsgkjt.com -wxhstx.net -wxhtkfyy.com -wxhudong.com -wxhxyk.com -wxhyts.com -wxhyzf.com -wxiao.net -wxiaoai.com -wxiat.com -wxidg.com -wxivzhvp.com -wxjava.com -wxjcgas.com -wxjgxx.com -wxjh120.com -wxjiaogun.com -wxjieyang.com -wxjkedu.com -wxjmar.com -wxjmsyzdxx.com -wxjoi.com -wxjsgs.com -wxjshx.com -wxjsxqc.com -wxjsxy.com -wxjtyf.com -wxjx123.com -wxjzh.com -wxkj666.com -wxkjwlw.com -wxkml.com -wxkou.com -wxkpharma.com -wxlele.com -wxlight.com -wxlivecdn.com -wxlongda.com -wxlongre.com -wxlpool.com -wxlxjy.com -wxlydhb.com -wxmama.com -wxmetro.net -wxmolegames.com -wxmovie.com -wxmuseum.com -wxnacy.com -wxngh.com -wxp114.com -wxp2022.vip -wxpangu.com -wxpayui.com -wxphp.com -wxpmc.com -wxq.today -wxqcgc.com -wxqxbxg.com -wxrb.com -wxrc.com -wxrcgz.com -wxrcw.com -wxredian.com -wxrrd.com -wxsbank.com -wxscreen.com -wxscxxx.com -wxsd.com -wxsdezyyy.com -wxsell.com -wxsemzx.com -wxsemzxyy.com -wxsgf.com -wxshake.com -wxshgs.com -wxshiteng.com -wxshops.co -wxshuku.la -wxskysy.com -wxslzf.com -wxsswgs.com -wxsteed.com -wxstztg.com -wxsywater.com -wxsyyxh.com -wxszjt.com -wxt2020.com -wxtaihujx.com -wxtcm.com -wxtcxny.com -wxtdf.com -wxthe.com -wxtj.com -wxtj10086.com -wxtpb.com -wxtrirh.com -wxtrust.com -wxtyjt.com -wxtyyy.com -wxtyzyyy.com -wxurls.com -wxuse.tech -wxutil.com -wxw120.com -wxwerp.com -wxwjk5.com -wxwmdq.com -wxworklive.com -wxwtblg.com -wxwzt.com -wxxd.co -wxxfltg.com -wxxfzx.com -wxxrh.com -wxxsh.net -wxxsjyk.com -wxxsyg.com -wxxuetao.com -wxxyxnb.com -wxy1314.com -wxyhgk.com -wxyhhosp.com -wxyljgxx.com -wxyongji.com -wxystour.com -wxyuannuo.com -wxyxrc.com -wxyzedu.net -wxzfkj.com -wxzhongcai.com -wxzpw8.com -wxzq.com -wxzwb.com -wxzxw.com -wxzzz.com -wy000.com -wy100.com -wy182000.com -wy213.net -wy2fy.com -wy34.com -wy6000.com -wya1.com -wybgs.com -wybosch.com -wybzdwss.com -wycad.com -wycfw.com -wycsyyjt.com -wydbw.com -wydljx.com -wydns.com -wyduihua.com -wydx88.com -wyfluorine.com -wyfx2014.com -wygkmitk.com -wyh138.com -wyhef.com -wyhos.fun -wyins.cc -wyins.net -wyjianzhan.com -wyjsq.com -wyk8.com -wykefu.com -wykw.com -wyl.cc -wylylxx.com -wyn88.com -wynca.com -wyndhamchangshasouth.com -wyndhamgrandxian.com -wyndhamsanya.com -wynnstools.com -wyptk.com -wypxj.com -wyrj.net -wyrlzy.com -wysaid.org -wysap.com -wysfgc.com -wyshuoshuo.com -wysls.com -wysm88.com -wyteam.net -wytracir.com -wytx.net -wytype.com -wytzgl.com -wyuetec.com -wywy.ltd -wywy6.com -wywyx.com -wyxokokok.com -wyxzxyjhyy.com -wyydsb.xin -wyyve.com -wyzc.com -wyzg.org -wyzxsd.com -wyzyz.org -wz-cjjt.com -wz-emauto.com -wz-goodcarbide.com -wz-tea.com -wz-zhongheng-zy.com -wz-zhongheng.com -wz01.com -wz121.com -wz132.com -wz141.com -wz16.net -wz5.cc -wz5.com -wzadri.com -wzbb.com -wzbhct.com -wzbks.com -wzbox.net -wzbyjt.com -wzcbd.com -wzcfjt.com -wzcggroup.com -wzchayuan.com -wzcl.net -wzclxx.com -wzdjy.com -wzdlqj.com -wzdsb.net -wzdslyy.com -wzdyn.com -wzer.net -wzes.net -wzfg.com -wzfou.com -wzg0898.com -wzg6.com -wzgbj.com -wzgemsmall.com -wzghy.com -wzguolian.com -wzgyjt.com -wzgytz.com -wzh.kim -wzhealth.com -wzhibo.net -wzhibo.tv -wzhonghe.com -wzhosp.com -wzhouhui.com -wzhouhui.net -wzhphg.com -wzhuanzhong.com -wzhust.com -wzhxlx.com -wziii.com -wzime.com -wzits.com -wzjbbus.com -wzjcsc.com -wzjrtzjt.com -wzjsjtzcpt.com -wzjsxx.com -wzjxdyf.com -wzjxyq.com -wzkelineng.com -wzkex.com -wzkuailu.com -wzkygroup.com -wzlcgf.com -wzlgjt.com -wzlijingyuanlin.com -wzlingyun.com -wzlyqy.com -wzlysz.com -wzm.com -wzmc.net -wzmfgs.com -wzmryy.com -wzmtr.com -wznas.com -wznfgs.com -wznyfz.com -wzofjt.com -wzojk.com -wzoka.com -wzotai.com -wzpcw.com -wzpkus.com -wzplc.com -wzpod.com -wzport.com -wzpy.com -wzqbhsls.com -wzqingou.com -wzqmt.com -wzqsyl.com -wzqsyy120.com -wzrc.com -wzrc.net -wzrclt.com -wzrdwl2.com -wzright.com -wzrjsp.com -wzrm-hospital.com -wzrssip.com -wzrygcht.com -wzsc123.com -wzsee.com -wzshe.com -wzshuidian.com -wzsky.net -wzspinneret.com -wzsrmyy.com -wzssx.net -wzstsj.com -wzsxj.net -wzsz.net -wzsz.org -wztf121.com -wztianshanfs.com -wztlink1013.com -wztsy.com -wzty.ltd -wzu.com -wzweisen.com -wzwqs.com -wzwtrlyy.com -wzxchem.com -wzxclc.com -wzxianggui.com -wzxinchang.com -wzxinfeng.com -wzxmkj.com -wzxszx.net -wzxywj.com -wzy2.com -wzy6.com -wzyc.com -wzyds.com -wzyestar.com -wzylrj.com -wzyzdyf.com -wzz1809.com -wzzbdz.com -wzzbtb.com -wzzcd.com -wzzhchem.com -wzzjzxx.com -wzzlovesli.com -wzznft.com -wzzp.com -wzzpw.net -wzzqqh.com -wzzsfd.com -wzzww.com -wzzyhp.com -wzzysm.com -x-abt.com -x-bull.com -x-cloud.cc -x-cmd.com -x-droners.com -x-imagine.com -x-jishu.com -x-kicks.com -x-mol.com -x-newedu.com -x-peng.com -x-ray.work -x-storm.com -x-tetris.com -x-vsion.com -x0769.com -x1047xv8b4.com -x11263.com -x11296.com -x118.net -x1abo.com -x23118.com -x23119.com -x23qb.com -x23us.us -x23wxw.com -x2552.com -x2intell.com -x315.com -x3322.net -x3366.com -x33699.com -x33yq.org -x3a37ynn2n.com -x3china.com -x3cn.com -x3g1.com -x431.com -x4dp.com -x586di.com -x5dj.com -x5zs.com -x64go.com -x64pro.com -x66597.com -x69zw.com -x6d.com -x6tb.com -x6x8.com -x72y.com -x7game.com -x7sy.com -x7z.cc -x81zw.co -x81zw2.com -x821.com -x86android.com -x86pi.com -x8ds.com -x8sb.com -x93r91l460.com -x9gc3siwevbpc.com -xa-bank.com -xa-online.com -xa-psj.com -xa.com -xa189.net -xa30zx.com -xa4.com -xa8yuan.com -xaaycz.com -xabaotu.com -xabbs.com -xabpo.com -xacademy.cc -xacbank.com -xacg.info -xachangda.com -xachangxing.com -xachanhe.com -xachyy.com -xacitywall.com -xaclcrm.com -xacnnic.com -xacpubfs.com -xacsjsedu.com -xactad.net -xacxxy.com -xacyyxq.com -xadamai.com -xadlwx.com -xadsa.com -xadwyy.com -xadyyy.com -xaeaa.com -xaecong.com -xaedumedia.com -xaent.com -xafc.com -xafish.com -xafzjy.com -xagdyz.com -xagkwl.com -xagmsm.com -xaguanggu.com -xagxp.com -xahc971.com -xahhp.com -xahmqy.com -xahr.net -xahttd.com -xahuapu.net -xahuayi.com -xahuilong.com -xahxgy.com -xahxp.com -xaidc.com -xainjo.com -xaixs.org -xajfwy.com -xajiason.com -xajjk.com -xajjn.com -xajjwy.com -xajob.com -xajx.com -xajxcw.com -xakaili.com -xakjgzz.com -xakqby.com -xakrlab.com -xalanq.com -xalawyer.net -xalhar.net -xalyd.com -xamama.net -xaminim.com -xampp.cc -xamv.com -xanahotelle.com -xanhr.com -xank120.com -xanway.com -xany6.com -xaocao.com -xaoji.com -xaonline.com -xaoyao.com -xapcn.com -xapi.ltd -xaqhgas.com -xarc.net -xarlm.com -xarongdi.com -xarptec.com -xarxbio.com -xaseastar.com -xasfyw.com -xasgxy.com -xashl.com -xashuiwu.com -xashzhjz.com -xasimonds.com -xasrc.com -xasrite.com -xasun.com -xaswx.com -xasyx.com -xatc168.com -xatielu.com -xatourismgroup.com -xatvs.com -xatyds.com -xatyz.com -xatzj.com -xauat-hqc.com -xaudiopro.com -xauwvhgt.com -xawb.com -xawdcy.com -xawdslzp.com -xawdz.com -xaweather.com -xawscu.com -xawyjx.com -xaxcgx.com -xaxddz.com -xaxydr.com -xaxzlsgs.com -xayabx.com -xayestar.com -xaygddc.com -xayhedu.com -xayizhou.com -xayzjc.com -xazcit.com -xazls.com -xazmkm.com -xazwy.com -xazysoft.net -xazyy.com -xazzs.com -xb.app -xb0.cc -xb2s.com -xba123.com -xbaixing.com -xbaodi.com -xbaofun.com -xbase.cloud -xbase.xyz -xbatu.com -xbauto.com -xbb8.com -xbbaoan.com -xbceo.com -xbcjy.com -xbcpsjk.com -xbd61.com -xbdgps.com -xbds.cc -xbdym.com -xbec-tencentclb.cloud -xbec-tencentclb.com -xbec-tencentclb.net -xbec-tencentclb.work -xbeian.com -xbequge.com -xbeta.info -xbext.com -xbfashion.com -xbfnet.com -xbfzb.com -xbgjw.com -xbhb.net -xbhbgs.com -xbhjgg.com -xbhy.com -xbiao.com -xbidc.com -xbiqiku.net -xbiqiku2.com -xbiquge.la -xbiqugu.info -xbiqugu.net -xbiquke.com -xbiquwx.la -xbiquzw.com -xbirder.com -xbitw.net -xbjianzhan.com -xbjob.com -xbjtkj.com -xbkjvip.com -xblaw.com -xblou.com -xblqb.com -xblsign.com -xblyw.com -xbmbw.com -xbmiaomu.com -xbniao.com -xbnj.net -xbongbong.com -xboot.org -xbpex.com -xbptc.com -xbrl-cn.org -xbrother.com -xbtest.com -xbuwrp.sbs -xbuyees.com -xbw0.com -xbwbh.com -xbwebyun.com -xbxgame.com -xbxxb.com -xbxxz.com -xbzlapp.com -xc-fc.com -xc-fund.com -xc-js.com -xc05x.com -xc1000.com -xc2500.com -xca551hgxm.com -xcabc.com -xcao.win -xcape.cc -xcar.com -xcarimg.com -xcb-family.com -xcbank.com -xcbbtf.com -xcc.com -xccrugs.com -xccy.cc -xcdesign.net -xcdn.global -xcdngyc.vip -xcdntp.vip -xcdssy.com -xcedu.net -xcex.net -xcfuer.com -xcfunds.com -xcgbb.com -xcgbie.com -xcgogo.club -xcgogo.site -xcgp.com -xcgui.com -xcgwk.com -xcharger.net -xchjw.org -xchr-group.com -xchsgy.com -xchuxing.com -xciic.com -xcj.com -xcjd.net -xcjincheng.com -xcjmcnc.com -xcjtjt.com -xcjyxx.com -xckfsq.com -xckgq.com -xckpjs.com -xckssw.com -xckszx.com -xclawyers.org -xcljs.com -xcloudbase.com -xcmad.com -xcmg-dkrob.com -xcmg.com -xcmgmall.com -xcmobi.com -xcmsports.com -xcmwqdvc.com -xcnchinese.com -xcncp.com -xcnv.com -xcode.me -xcoder.in -xcommon.com -xcoodir.com -xcot.com -xcpapa.site -xcpapa.xyz -xcpxssx.com -xcq2022.com -xcq518.com -xcqpayy.com -xcqxcq.com -xcrc.net -xcrmyy.com -xcsc.com -xcshaifen.com -xcstuido.com -xcswkj.com -xcsyy.com -xctmr.com -xcukezmr.com -xcultur.com -xcurrency.com -xcvec.com -xcvmbyte.com -xcvvs.com -xcwhjj.com -xcx-x.com -xcxd-inc.com -xcxd1997.com -xcxjpd.com -xcxvs.com -xcxwo.com -xcxymw.com -xcxyw.com -xcxzks.com -xcxzww.com -xcyg.net -xczhmzb.com -xczhsh.com -xczim.com -xczzs.com -xd-tech.com -xd-world.com -xd.com -xd0.co -xd0.com -xd0731.com -xd56b.com -xd57.com -xd8888.net -xda.show -xdapp.com -xdbcb8.com -xdbin.com -xdc.at -xdcdn.com -xdcdn.net -xdcg100.com -xddpay.com -xde.com -xdebike.com -xdf99.com -xdfckjz.com -xdfpr.com -xdfsjj.com -xdgalaxy.com -xdggd.com -xdgj.com -xdgkwl.com -xdglt.com -xdgogogo.com -xdhcn.com -xdhelp.com -xdhyty.com -xdiarys.com -xdingerp.com -xdiscuz.com -xdj-sz.com -xdja.com -xdjc.org -xdjcgs.com -xdju.com -xdjunxiao.com -xdjy369.com -xdkb.net -xdkjjy.com -xdkjpx.com -xdmb.xyz -xdmssp.com -xdn001.com -xdn10000.com -xdn2.com -xdnice.com -xdnote.com -xdnphb.com -xdnsvip.com -xdnsvip.info -xdocin.com -xdowns.com -xdpaomo.com -xdper.com -xdpipe.com -xdpjump.com -xdplt.com -xdpvp.com -xdqtech.com -xdrcftv.com -xdressy.com -xdrtc.com -xdrun.com -xdsipo.com -xdsp.mobi -xdsyzzs.com -xdter.com -xdtev.com -xdtool.com -xdtos.com -xduim.com -xduoo.com -xduoyu.com -xduph.com -xdwan.com -xdweilai.com -xdwyx.com -xdxct.com -xdxdsz.com -xdxialingying.com -xdxiaoshuo.com -xdxmsy.com -xdxmwang.com -xdyanbao.com -xdystar.com -xdytuliao.com -xdyy.net -xdyy100.com -xdyyws.com -xdzhsw.com -xdzu.net -xed.plus -xedaojia.com -xedaojia.net -xedge.cc -xeeee.net -xeeger.com -xeeok.com -xefan.com -xege.org -xegymyb.xyz -xehedu.com -xeknow.com -xeltek-cn.com -xen0n.name -xender.com -xenium.mobi -xepher.fun -xesapp.com -xescdn.com -xesdns.com -xesee.com -xesimg.com -xesv5.com -xet.tech -xetimes.com -xetlk.com -xetslk.com -xev-connectivity.com -xevd.co -xevddy.com -xeylon.com -xf-fund.com -xf-gtm.com -xf-world.org -xf-yun.com -xf.com -xf0797.com -xf119.xin -xf1233.com -xf21.com -xf24ms.com -xf3z.com -xf4hs.com -xf5z.com -xfabs.com -xfadx.com -xfannix.com -xfaqwlw.com -xfb315.com -xfbst.com -xfcjn.com -xfcn.com -xfconnect.com -xfcqc.com -xfdown.com -xfdp.net -xfdwz.com -xfdyb.com -xfehc.com -xfeng.me -xffbb.com -xffox.com -xfguo.org -xfhx.com -xfinfr.com -xfisp.com -xfj100.com -xfjcw.com -xfjw.net -xfjxs.com -xflapp.com -xflimg.com -xfliusheng.com -xflstatic.com -xfltd.net -xfmspps.com -xfnano.com -xfocus.net -xfocus.org -xforceplus.com -xfpaas.com -xfpass.com -xfpg119.com -xfplay.com -xfplay.tv -xfprecise.com -xfq.life -xfr3u4lz94.com -xft123.com -xftclub.com -xftransa.com -xfun233.com -xfusion.com -xfwed.com -xfwindow.com -xfx02.com -xfx168.com -xfxb.net -xfxglass.com -xfycard.com -xfyousheng.com -xfypaper.com -xfyun.com -xfzc.com -xfzhsf.com -xfzllht.com -xg-techgroup.com -xg1234.com -xg38.com -xgamecenter.com -xgamevip.com -xgantt.net -xgate.com -xgccm.com -xgcs55.com -xgcsczyc.com -xgcsfz.com -xgd.com -xgd666.com -xgdfz.com -xgdown.com -xgdq.com -xgdqsn.com -xggj56.com -xggjj.com -xghylt.com -xgimi.com -xgimi.net -xgiu.com -xgj-info.com -xgjdyjjt.com -xgjgas.com -xgjjw.com -xgkwx.com -xglgift.com -xglist.com -xgllreport.com -xglopto.com -xglpa.com -xgn-cy.com -xgo.cc -xgost.com -xgp365.com -xgpharma.com -xgqq.com -xgqyy.com -xgsdk.com -xgsdpm.com -xgss.net -xgsxt.net -xgsyun.com -xgt2014.com -xgtea.com -xgwx.net -xgxedu.com -xgxsignage.com -xgyszj.com -xgz.cc -xgzbwdj.com -xgzdhj.com -xgzrs.com -xh-arch.com -xh-health.com -xh-silicone.com -xh.com -xh0523.com -xh1958.com -xh39.com -xhaiwai.com -xhante.com -xhay1122.com -xhbaoguan.net -xhboke.com -xhbosn.com -xhby.net -xhbycm.net -xhcct.com -xhclaw.com -xhclub.net -xhcpa.net -xhcpas.com -xhcs.com -xhctcm.com -xhd.org -xhdjx.com -xhdnwct.com -xhdpay.com -xhdxly.com -xhedu.net -xhfk120.net -xhforex.com -xhg.com -xhgame.com -xhgamesdk.com -xhgjyc.com -xhgz.com -xhh.pw -xhhd6.com -xhhdd.cc -xhhhzs.com -xhhos.com -xhidc.com -xhily.com -xhintech.com -xhj.com -xhj.info -xhjaty.com -xhjianglong.com -xhjingling.com -xhjj.com -xhjkgj.com -xhjnyy.com -xhjs168.com -xhjt.com -xhkt.tv -xhlaowu.com -xhlcsl.com -xhlsgs.com -xhma.com -xhmedia.com -xhmwxy.com -xhnews.net -xhostfire.com -xhostserver.com -xhpfw.com -xhpiano.com -xhpr.net -xhqbapp.com -xhqqt.com -xhrczp.com -xhscdn.com -xhscdn.net -xhsd.com -xhsd.net -xhsea.com -xhsf.com -xhslink.com -xhslw.com -xhsmlt.com -xhsrmyy.com -xhsxmt.com -xhsyqx.com -xhsyww.com -xhtheme.com -xhtw.com -xhtwb.com -xhtxgroup.com -xhu2.com -xhu218.com -xhuaian.com -xhup.club -xhw520.com -xhw81pr263.com -xhwater.com -xhwcdasha.com -xhwhouse.com -xhwtech.com -xhwx100.com -xhwyzsd.com -xhxcedu.com -xhxgt.com -xhxhr.com -xhxsw.com -xhy.com -xhyd.com -xhygroup.com -xhyksha.xyz -xhylbfyy.com -xhyljt.com -xhysh.com -xhytd.com -xhyun.vip -xhzysg.com -xi-soft.com -xi.su -xi5jie.com -xia1ge.com -xiaa.net -xiabingbao.com -xiabor.com -xiabu.com -xiacaopu.net -xiache.net -xiachufang.com -xiada.net -xiadaolieche.com -xiadele.com -xiaditu.com -xiadts.com -xiadu.com -xiafenfa.com -xiagaoqing.com -xiagepian.com -xiageyy.com -xiaguanzhan.com -xiagujian.com -xiaheng.net -xiaiot.com -xiajuan88.com -xiakefyz.com -xiakeol.com -xialingying.cc -xialv.com -xiamag.com -xiamai.net -xiame.com -xiamen888.com -xiamenair.com -xiamenbg.com -xiamenfojiao.com -xiamenhuandongmarathon.com -xiamenjiyang.com -xiamentianqi114.com -xiamenwater.com -xiami.com -xiami.fm -xiami.net -xiamo.fun -xiamoyun.com -xiamp4.com -xian-feng.com -xian-tourism.com -xian-yao.com -xian.com -xianayi.net -xianbao.fun -xianbao.net -xianbao5.com -xianbdj.com -xianbeikeji.com -xianbey.com -xiancaotang.com -xianchengyou.com -xiancn.com -xiandaihospital.com -xiandaimuye.com -xiandaiyuwen.com -xiandanjia.com -xiandengdengguan.com -xiandp.com -xianer.net -xianfae.com -xianfan2022.com -xianfengjiayuan.com -xianfengsg.com -xianfengyiyao.com -xiang.com -xiang.xin -xiang5.com -xiang578.com -xiangange.com -xianganquan.com -xianganyu.com -xiangauto.com -xiangbababus.com -xiangbala.net -xiangbeid.com -xiangbinmeigui.com -xiangbojiubo.com -xiangboshu.net -xiangbosoft.com -xiangcoin.com -xiangcun.cc -xiangcun.com -xiangcunxiaoshuo.com -xiangdian.com -xiangdian.store -xiangguo.com -xiangguohe.com -xiangha.com -xianghuanji.com -xianghumarathon.com -xianghunet.com -xianghus.com -xiangjiamuye.com -xiangjiang-amc.com -xiangjiasz.com -xiangjiayaoyehz.com -xiangkanwang.com -xiangkesi.com -xiangley.com -xianglifood.com -xiangliuzi.com -xianglongpharm.com -xianglute.com -xiangmaita.com -xiangming.site -xiangmu.com -xiangni.com -xiangniya.com -xiangoo.com -xiangpeach.com -xiangpi.com -xiangpu24fa.com -xiangqiai.com -xiangqianpos.com -xiangqigame.com -xiangqin7.com -xiangqishan.com -xiangqiyouxi.com -xiangqu.com -xiangrikui.com -xiangrikuijianzhan.com -xiangrikuisite.com -xiangrongtaihe.com -xiangruichina.com -xiangruizulin.com -xiangshang360.com -xiangshangban.com -xiangshanpark.com -xiangshe.com -xiangshengbao.com -xiangshengnet.com -xiangshi.cc -xiangshi.video -xiangshitan.com -xiangshuheika.com -xiangsidi.com -xiangsw.com -xiangtaole.com -xiangtatech.com -xiangtuan.xyz -xiangtx.com -xiangu.com -xianguo.com -xianguomall.com -xianguotea.com -xiangw.com -xiangwushuo.com -xiangxiangmf.com -xiangxihe.com -xiangxinggroup.com -xiangxingnet.com -xiangyang-marathon.com -xiangyang.net -xiangyangwater.com -xiangyi.co -xiangyiai.com -xiangyilxj.com -xiangyu-group.com -xiangyue.life -xiangyueedu.com -xiangyuezhongxue.com -xiangyujiankang.com -xiangyuncdn.com -xiangyungx.com -xiangyuyaoye.com -xiangzhan.com -xiangzhiren.com -xiangzhuyuan.com -xiangzi.ltd -xiangzi.tech -xiangzuanjiang.com -xiangzukeji.com -xianjian.com -xianjian10.com -xianjiaosuo.com -xianjichina.com -xianjiqun.com -xianjzyxh.org -xiankabao.com -xiankan.com -xianlai.work -xianlaicd.com -xianlaigame.com -xianlaihy.com -xianlaivip.com -xianlan315.com -xianlife.com -xianliming.com -xianmaiyangsheng.com -xianmeilai.com -xianmeisc.com -xianningmarathon.com -xianniu.com -xianniu.net -xianniuzu.com -xiannvhu.com -xianousiqi.com -xianpinyun.com -xianpp.com -xianrail.com -xianrenzhang.net -xianruan.com -xianshiqiba.com -xianshishangmao.com -xianshu.com -xianshua.net -xianshuabao.com -xianshufang.com -xiansimo.com -xiansuan.com -xiantao-marathon.com -xiantao.com -xianweizhang.com -xianxiadao.com -xianxiadao.net -xianxiazhuanjz.com -xianxueba.com -xianyang888.com -xianyer.com -xianyongyong.com -xianyouhe.com -xianyu.mobi -xianyuange.com -xianyudanji.net -xianyugame.com -xianyugouwu.com -xianyuso.com -xianyuvr.com -xianyuwang.com -xianyuyouxi.com -xianzhanget.com -xianzhi.net -xianzhid.com -xianzhongwang.com -xianzidaer.com -xianzilaishui.com -xiao-an.com -xiao-bo.com -xiao-new.com -xiao100.com -xiao2she.com -xiao688.com -xiao84.com -xiaoa.name -xiaoac.com -xiaoaiassist.com -xiaoaiscan.net -xiaoaisound.com -xiaoantech.com -xiaoantech.net -xiaoao.com -xiaoapp.io -xiaobai.com -xiaobaibar.net -xiaobaipan.com -xiaobaishiji.com -xiaobaishixi.com -xiaobaitool.net -xiaobaiupin.com -xiaobaivr.com -xiaobaixitong.com -xiaobal.com -xiaobangbaoxian.com -xiaobangguihua.com -xiaobangtouzi.com -xiaobao360.com -xiaobaobianli.com -xiaobaobianli.net -xiaobaodt.com -xiaobaoming.com -xiaobaoonline.com -xiaobaostudio.com -xiaobeibike.com -xiaobeigl.com -xiaobeizuqin.com -xiaobianli8.com -xiaobingxitong.com -xiaobool.com -xiaobot.net -xiaobu.tech -xiaobu121.com -xiaobuwq.com -xiaocanapp.com -xiaocanhulian.com -xiaocantech.com -xiaocaoo.com -xiaocaoyun.com -xiaoce.fun -xiaocen.com -xiaochamao.com -xiaoche001.com -xiaocheng.com -xiaochengxu029.com -xiaochengxucms.com -xiaochi198.com -xiaochixiang.com -xiaochuan010.com -xiaochuanyun.com -xiaocifang.com -xiaocms.com -xiaocx.org -xiaoda.fun -xiaodaijl.com -xiaodaka.net -xiaodangxian.com -xiaodanzi.com -xiaodaotv.com -xiaodaozhi.com -xiaodapei.com -xiaodengvip.com -xiaodian.com -xiaodian.so -xiaodianweb.com -xiaodigu.com -xiaoding110.com -xiaodingchui.com -xiaodiyouxi.com -xiaodongxier.com -xiaodoubi.com -xiaodoushebao.com -xiaodouzuche.com -xiaoduoai.com -xiaoduseo.com -xiaodutv.com -xiaody.com -xiaoe-assets.com -xiaoe-materials.com -xiaoe-tech.com -xiaoe-tools.com -xiaoeeye.com -xiaoeknow.com -xiaoenai.com -xiaoerjiren.com -xiaoeryi.com -xiaoetong.com -xiaofany.com -xiaofeng.org -xiaofengtv.com -xiaofubao.com -xiaofuzi.net -xiaog.xyz -xiaogan.com -xiaogd.net -xiaogegelive.com -xiaogj.com -xiaogou111.com -xiaogou222.com -xiaogou333.com -xiaogou444.com -xiaogou555.com -xiaogou666.com -xiaogou777.com -xiaogou888.com -xiaogou999.com -xiaogouds.com -xiaogouh5.com -xiaogouzhineng.com -xiaoguaniu.com -xiaoguikuaipao.com -xiaoguo101.com -xiaoguosq.com -xiaoguowenhua.com -xiaoguoyi.com -xiaogushi.com -xiaohack.org -xiaohansong.com -xiaohe-jiankang.com -xiaohe666.com -xiaoheihegame.com -xiaoheima.com -xiaohelive.com -xiaohengmaidan.com -xiaohi.cc -xiaohongchun.com -xiaohongjituan.com -xiaohongshu-mycdn.com -xiaohongshu.com -xiaohongshu.net -xiaohongshulvyou.com -xiaohouyisheng.com -xiaohouyunyin.com -xiaohu8.com -xiaohua8.com -xiaohuabaichu.com -xiaohuabuluo.com -xiaohuai.com -xiaohuangji.com -xiaohuazhuo.com -xiaohucloud.com -xiaohufev.com -xiaohulu.com -xiaohun.net -xiaohuochai.cc -xiaohuochai.site -xiaohuohu.com -xiaohus.com -xiaohuwl.com -xiaoi.com -xiaoi.me -xiaoice.com -xiaoj.com -xiaoji.com -xiaoji001.com -xiaojian.site -xiaojiaokeji.com -xiaojiaoyar.com -xiaojiaoyu.com -xiaojiaoyu100.com -xiaojing.work -xiaojing360.com -xiaojinzi.com -xiaojiuwang.com -xiaojl.com -xiaojp.com -xiaojuchefu.com -xiaojudeng.com -xiaojukeji.com -xiaojupeijian.com -xiaoka.tv -xiaokache.com -xiaokakj.com -xiaokanba.com -xiaokanglongjiang.com -xiaokao.com -xiaokaxiu.com -xiaokcdn.com -xiaokcehui.com -xiaoke.space -xiaoke101.com -xiaokeai.com -xiaokeduo.com -xiaokepu.com -xiaokesoso.com -xiaokuihua.net -xiaokusha.com -xiaolachuxing.com -xiaolajiao.com -xiaolanapp.com -xiaolanben.com -xiaolangtt.com -xiaolantiao.com -xiaole.com -xiaoleimob.com -xiaolianbao.com -xiaoliangkou.com -xiaolianhb.com -xiaoliebian.com -xiaolii.com -xiaolin.in -xiaolinbysj.com -xiaolincoding.com -xiaolinsi.com -xiaolintj.com -xiaolinwl.com -xiaoliqing.net -xiaolizhuli.com -xiaolizupai.com -xiaolong.li -xiaolongxy.com -xiaoluboke.com -xiaoluerhuo.com -xiaoluhaohuo.com -xiaolun.net -xiaoluxuanfang.com -xiaoluyouxuan.com -xiaoluyy.com -xiaoluzhidian.com -xiaolvji.com -xiaolxiao.com -xiaoma.com -xiaoma.io -xiaoma.net -xiaomachuxing.com -xiaomagaojian.com -xiaomagouche.com -xiaomai.live -xiaomai5.com -xiaomaidong.com -xiaomaigongkao.com -xiaomaigui.com -xiaomaiketang.com -xiaomaiuzu.com -xiaomajia.com -xiaomantu.com -xiaomaomv.com -xiaomape.com -xiaomark.com -xiaomashijia.com -xiaomaxitong.com -xiaomayi.net -xiaomazhixing.com -xiaomei.cc -xiaomeiti.com -xiaomeng1235.com -xiaomi.com -xiaomi.hk -xiaomi.net -xiaomi.org -xiaomi.tw -xiaomiaozai.com -xiaomicache.com -xiaomicorp.com -xiaomicorp.net -xiaomicp.com -xiaomidns.com -xiaomidns.net -xiaomiev.com -xiaomiflash.com -xiaomiinc.com -xiaomiinc.net -xiaomimimo.com -xiaomimobile.com -xiaominet.com -xiaominfo.com -xiaomingjianzhan.com -xiaomingtaiji.cc -xiaomingtaiji.com -xiaomingtaiji.net -xiaominr.com -xiaomiprint.com -xiaomiqiu.com -xiaomiquan.com -xiaomirom.com -xiaomisa.com -xiaomisa.net -xiaomisa.org -xiaomishu.com -xiaomiw.cc -xiaomiwear.com -xiaomixiaoai.com -xiaomiyoupin.com -xiaomlove.com -xiaomor.com -xiaomoyao.com -xiaomu.cc -xiaomuji.info -xiaomuzhi.com -xiaomy.net -xiaomyc.com -xiaonaodai.com -xiaonei.com -xiaonengren.com -xiaoni.com -xiaoniba.com -xiaoniu66.com -xiaoniuben.com -xiaoniuds.com -xiaoniuhululu.com -xiaopai.vip -xiaopaitech.com -xiaopaotec.com -xiaopeiqing.com -xiaopeng.com -xiaophy.com -xiaopi.com -xiaopinchuxing.com -xiaopinw.com -xiaopiu.com -xiaoqiandao.com -xiaoqiangge.com -xiaoqiling.com -xiaoqingtou.com -xiaoqinre.com -xiaoqiqiao.com -xiaoqiweb.com -xiaoquba.com -xiaoqueshe.com -xiaoquyijia.com -xiaorizi.me -xiaorui.cc -xiaoruibao.com -xiaoshengping.com -xiaoshentongzongbu.com -xiaoshidata.com -xiaoshijie.com -xiaoshituina.vip -xiaoshouhudong.com -xiaoshourc.com -xiaoshouyi.com -xiaoshuapp.com -xiaoshuiguo.com -xiaoshujiang.com -xiaoshuo.com -xiaoshuo1-sm.com -xiaoshuo2-sm.com -xiaoshuo3-sm.com -xiaoshuo4-sm.com -xiaoshuo5-sm.com -xiaoshuo520.com -xiaoshuoba.com -xiaoshuobi.cc -xiaoshuochu.com -xiaoshuodaquan.com -xiaoshuohui.net -xiaoshuoli.com -xiaoshuomi.cc -xiaoshuowu.com -xiaoshuxiong.com -xiaositv.com -xiaot.com -xiaota.com -xiaotangketang.com -xiaote.com -xiaote.net -xiaotee.com -xiaotengyouxi.com -xiaotiancai.com -xiaoting.com -xiaotongqq.com -xiaotud.com -xiaotuzhan.com -xiaou2014.com -xiaoupan.com -xiaowang.net -xiaowangshen.com -xiaowangyun.com -xiaowangzi777.com -xiaowazi.com -xiaoweichen.com -xiaoweigod.com -xiaoweijia.net -xiaoweijiankang.com -xiaoweirobot.com -xiaowiba.com -xiaowm.com -xiaowuwl.com -xiaoxiaapi.com -xiaoxiang.club -xiaoxiangbz.com -xiaoxiangtoutiao.com -xiaoxiangxueyuan.com -xiaoxiangyoupin.com -xiaoxiaodangan.com -xiaoxiaoketang.com -xiaoxiaomo.com -xiaoxiaoshuo.com -xiaoxiaotong.org -xiaoxiaoyouxuan.com -xiaoxiaozi.com -xiaoxichangliu.com -xiaoxili.com -xiaoxinbk.com -xiaoxineye.com -xiaoxinrili.com -xiaoxintoutiao.com -xiaoxintuku.com -xiaoxiong360.com -xiaoxiongjita.com -xiaoxiongmeishu.com -xiaoxiongxitong.com -xiaoxiongyouhao.com -xiaoxiongzhoupu.com -xiaoxitech.com -xiaoxusd.com -xiaoya56.com -xiaoyaaa.com -xiaoyanjiusheng.com -xiaoyantong.com -xiaoyanwenxue.com -xiaoyaodsx.com -xiaoyaoxi.com -xiaoyaoyou.com -xiaoyastar.com -xiaoyatong.com -xiaoyegejitar.com -xiaoyejidian.com -xiaoyejixie.com -xiaoyeren.com -xiaoyezi.com -xiaoyezu.com -xiaoyi.com -xiaoyiads.com -xiaoyida.com -xiaoyida.net -xiaoyiduoduo.com -xiaoying.co -xiaoying.com -xiaoying.tv -xiaoyingxiong.com -xiaoyingzhenxuan.com -xiaoyisysreset.com -xiaoyizhiqu.com -xiaoyou66.com -xiaoyouxi.co -xiaoyouxi.com -xiaoyouxi100.com -xiaoyouxiqun.com -xiaoyouzb.net -xiaoyu.com -xiaoyuananquantong.com -xiaoyuankousuan.com -xiaoyuansouti.com -xiaoyuansouti.xyz -xiaoyuanyun2.com -xiaoyuanzhao.com -xiaoyuanzhaopin.net -xiaoyuer.com -xiaoyujia.com -xiaoyun.com -xiaoyusan.com -xiaoyusanchou.com -xiaoyuxitong.com -xiaoyuzhoufm.com -xiaoz.me -xiaozhan.cc -xiaozhang365.com -xiaozhao365.com -xiaozhenpaotui.com -xiaozhibaoxian.com -xiaozhibo.com -xiaozhimed.com -xiaozhiyun.com -xiaozhongjishu.com -xiaozhoumo.com -xiaozhu.com -xiaozhu.hk -xiaozhu158.com -xiaozhu2.com -xiaozhua.com -xiaozhuangzhuang.com -xiaozhustatic1.com -xiaozhustatic2.com -xiaozhustatic3.com -xiaozlife.com -xiaozu365.com -xiaozuan8.com -xiaozuanbike.com -xiaozufan.com -xiaozujian.com -xiapac.com -xiapilu.com -xiappt.com -xiapu.co -xiaqu.org -xiaqunfeng.cc -xiarenzhuxin.com -xiarj.com -xiashanet.com -xiataoseo.com -xiatou.com -xiaw.net -xiawan8.com -xiawen.tv -xiawuyouke.com -xiaxs.info -xiaxs.la -xiayige.org -xiayixing.com -xiayx.com -xiazai.live -xiazai126.com -xiazai16.com -xiazai163.com -xiazai22.com -xiazaiba.com -xiazaicc.com -xiazaijidi.com -xiazais.com -xiazaitool.com -xiazaiwx.com -xiazaiziti.com -xiazhougroup.com -xibaike.com -xibaiwang.com -xibanyaqz.com -xibeicanyin.com -xibeidev.com -xiberia.net -xibojiaoyu.com -xibsteel.com -xibu168.com -xibujuece.com -xiburongmei.com -xicaijing.com -xicaishe.com -xicaodesign.com -xichengo.com -xichongsm.com -xichu.net -xichuan001.com -xichuangzhu.com -xici.com -xici.net -xicp.net -xidesheng.com -xidian.cc -xidibuy.com -xidie.com -xidiglobal.com -xiduobaby.com -xie22.com -xie56.xyz -xiebanyun.com -xiebao18.com -xieboke.net -xiecdn.com -xieche.com -xieche.net -xiecheng.com -xiechuangw.com -xiedagyl.com -xiedaimala.com -xiedajia.com -xiedao.com -xiediantong.com -xiedu.biz -xiefenxiang.com -xiegangsir.com -xiege.net -xiegekt.com -xiehehp.com -xiehejx.com -xiehekjkf.com -xiehepcb.com -xiehouit.com -xiehuiyi.com -xiejiahe.com -xiejianji.com -xiejiaxin.com -xiejing.com -xieliaofa.com -xielijiaoyu.com -xieliqun.com -xiemm.com -xiesk.com -xietonghuaxue.com -xiexiaoyuan.com -xiexin.com -xiexinbao.com -xiexingcun.com -xieyangzhe.com -xieyimao.com -xieyudatea.com -xiezewen.com -xiezi.tech -xiezilouzulinwang.com -xieziqiu.net -xiezixiansheng.com -xiezuocat.com -xiezuoye.com -xiezuoyisi.com -xifangw.com -xifenfei.com -xifengboke.com -xifenggroup.com -xifengjiuzhaoshang.com -xifu120.com -xifumi.com -xigaogen.com -xiggua.com -xigo.tv -xigou100.com -xigoubao.com -xigua.com -xigua110.com -xiguaapp.com -xiguabook.com -xiguaji.com -xiguang.xyz -xiguaplayer.com -xiguashipin.net -xiguavideo.net -xigushan.com -xigushan.net -xigushi.com -xihabang.com -xihachina.com -xihaiannews.com -xihaianrc.com -xihangzh.com -xihaxueche.com -xihazsww.com -xihegp.com -xiherencai.com -xihuan.me -xihusgh.com -xiimoon.com -xiinnn.com -xiji.com -xijie.com -xijie888.com -xijinfa.com -xijing01.com -xijingjianzhan.com -xijingjianzhan0.com -xijingjianzhan1.com -xijingjianzhan2.com -xijingjianzhan3.com -xijingjianzhan4.com -xijingjianzhan5.com -xijingjianzhan6.com -xijingjianzhan7.com -xijingjianzhan8.com -xijingjianzhan9.com -xikang365.net -xikcloud.com -xikii.com -xikoutourism.com -xikrs.com -xikuan.com -xikuqi.com -xilaijian.com -xilaiping.com -xilanggufen.com -xilddt.com -xilehongniang.com -xilexuan.com -xileyougame.com -xili.fan -xilian-group.com -xiliangjituan.com -xilichi.com -xilinjie.com -xilinsi.org -xilinx-ic.com -xilipy.com -xilish.com -xilitang.com -xiliulou.com -xilong88.com -xilu.com -xiluoxuan.com -xilvlaw.com -xima.org -xima.tv -ximalaya.com -ximalaya.fm -ximalaya.men -ximalaya.tv -ximalayadata.com -ximalayaos.com -ximeiapp.com -ximeigroup.com -ximendou.com -ximenwai.com -ximgs.net -ximiplay.com -ximitools.com -ximiyouxi.com -ximmerse.com -ximuw.com -xin-manganese.com -xin-yao.com -xin.com -xin.science -xin.xin -xin1234.com -xin21.xyz -xin3721.com -xin6.net -xinanjr.com -xinanrui.com -xinansec.com -xinaogas.com -xinaoyun.com -xinba.com -xinbaicai.com -xinbalive.com -xinbear.com -xinbiaocha.com -xinbiaochijiaoyu.com -xinboaa.com -xinbqg.com -xincache.com -xincai.com -xincailiao.com -xincainet.com -xincaise.com -xincaitong.net -xincanshu.com -xinceremed.com -xincg.com -xincha.com -xinchacha.com -xinchaipower.com -xinchanfeng.com -xinchangol.com -xinchao.com -xinchaoss.com -xinchego.com -xinchenai.com -xincheng.com -xinchengbio.com -xinchengge13.com -xinchengyue.com -xincheping.com -xinchess.com -xinchong.com -xinchuanbo.com -xinchuang-bio.com -xinchukj.com -xincj.com -xincmm.com -xincode.com -xincomm.com -xinda-bio.com -xindachem.com -xindaifu.com -xindalawyer.com -xindasulian.com -xindawz.com -xinde.org -xindemarinenews.com -xindetihuiya.com -xindexuexi.com -xindianti.com -xindingdianxsw.com -xindingwealth.com -xindns.com -xindong.com -xindongdinglv.com -xindonghuyu123.com -xindu.cc -xinduo.com -xinduoad.com -xinenw.com -xiner-membrane.com -xineurope.com -xinexpress.com -xinfaholding.com -xinfangcidian.com -xinfangsheng.com -xinfei.com -xinfeijituan.com -xinfeipengjixie.com -xinfeiyu.net -xinfenggxgroup.com -xinfengji.com -xinfengming.com -xinfenlei.com -xinfinite.net -xinfox.net -xinfree.com -xinfuhk.com -xinfushe.com -xinfuyouxi.com -xinfuyun.net -xing-bei.com -xing-su.com -xing73.com -xingames.com -xingb.net -xingbangfl.com -xingbo.tv -xingchao1.com -xingcheshixian.com -xingchiauto.com -xingchuangcar.com -xingchuangtiandi.com -xingdatrip.com -xingdong.co -xingdongliu.com -xinge.com -xinge.la -xinge365.com -xingechemical.com -xingechina.com -xingefuwu.com -xingeshan.com -xingezhan.com -xingfagroup.com -xingfeiinc.com -xingfudu.com -xingfufangdai.com -xingfulaonian.com -xingfulizhaofang.com -xingfuu.com -xinggan.net -xingganggas.com -xingguanggongkao.com -xinghai365.com -xinghaigroup.com -xinghaiwaimai.com -xinghan.vip -xinghangdao.com -xinghantec.com -xinghaoyun8.com -xinghejoy.com -xinghengedu.com -xingheoa.com -xinghuaport.com -xinghuazixun.com -xinghuo100.com -xinghuo365.com -xinghuoxiaoshuo.com -xinghy.com -xinghy56.com -xingjia.online -xingjiagames.com -xingjiaoyun.com -xingjiesj.com -xingjijy.com -xingjimob.com -xingjun-group.com -xingkec.com -xingkeqi.com -xingketech.com -xingkong.link -xingkongfy.xyz -xingkongmt.com -xingkupai.com -xinglai.com -xinglan.co -xingliju.com -xinglin-tech.com -xinglingyingxue.com -xinglinpukang.com -xingloo.com -xingmima.com -xingming.com -xingming.net -xingmuyi.com -xingnuo.cc -xingongjiaoyu.com -xingpai.com -xingpaibilliard.com -xingpan.com -xingpin.com -xingqier.com -xingqisihuishou.com -xingqiu.tv -xingqiu520.com -xingqu11.com -xingquanke.com -xingren.com -xingronghealthcare.com -xingrongn.com -xingruan.com -xingrui-cn.com -xingrunkg.com -xingse.net -xingseapp.com -xingshangnet.com -xingshawater.com -xingshen.com -xingshu.com -xingshuishuiwu.net -xingshulin.com -xingsteel.com -xingsuyun58.com -xingtai.net -xingtai0319.com -xingtai123.com -xingtaishipping.com -xingtan.one -xingtan001.com -xingtangzp.com -xingtongsw.com -xingtu.com -xingtui520.com -xinguad.com -xinguangjian.com -xinguge.com -xinguida.com -xinguizhou.com -xingumin.net -xinguodu.com -xingvps.com -xingwajiang.com -xingxing.com -xingxingbao.com -xingxingjizhang.com -xingxingzaixian.fun -xingxingzu.com -xingxuanwaimai.com -xingyangroup.com -xingyao.com -xingyaocq.com -xingyaomob.com -xingyaoss.com -xingyaoyd.com -xingye.work -xingye1.com -xingyeace.com -xingyeai.com -xingyeddz.com -xingyigz.com -xingyihaiyang.com -xingyin.com -xingying2018.com -xingyizhai.com -xingyongli.com -xingyou99.com -xingyoucai.com -xingyuan-hb.com -xingyuan.com -xingyuebike.com -xingyuebio.com -xingyuedoor.com -xingyuehuyu.com -xingyuhuwai.com -xingyunb.com -xingyunba.com -xingyungroup.com -xingyunol.com -xingyusoft.net -xingyutc.com -xingyuyouxi.com -xingzhean.com -xingzhige.com -xingzhiheyi.com -xingzhilan.com -xingzi-vision.com -xingzou.art -xingzoushu.com -xingzuo.com -xingzuomi.com -xingzuopei.com -xingzuowu.com -xingzuoyundns.com -xinhaiglobal.com -xinhaimineral.com -xinhaiminingepc.com -xinhaimininggroup.com -xinhaisoft.com -xinhaitravel.com -xinhanhd.com -xinhanhr.com -xinhanyx.com -xinhaolian.com -xinhaoqi.net -xinhaosi.com -xinhay.com -xinhe99.com -xinhechina.com -xinhecq.com -xinhedjq.com -xinhengshui.net -xinheshenggroup.com -xinheyun.net -xinhongru.com -xinhua-news.com -xinhua.org -xinhua08.com -xinhuaapp.com -xinhuachongming.com -xinhuachuanmeijs.com -xinhuacu.com -xinhuaiot.com -xinhuamm.net -xinhuanet.com -xinhuanet.ltd -xinhuapo.com -xinhuaprs.com -xinhuapub.com -xinhuaqipai.com -xinhuashe.org -xinhuashudian.com -xinhuasuye.com -xinhuawang.com -xinhuawz.com -xinhuaxmt.com -xinhuayimin.com -xinhuazhiyun.com -xinhuoq.com -xinhuozhi.com -xining-marathon.com -xiniu.com -xiniu3d.com -xiniugushi.com -xiniushu.com -xiniuyun.com -xinjiadiy.com -xinjianggames.com -xinjianggou.com -xinjiangqinglvyou.com -xinjiangroup.com -xinjiashangtou.com -xinjidian.com -xinjifangchan.com -xinjimo.com -xinjingst.com -xinjingxiang.com -xinjinqiu.com -xinjiren.com -xinjisuan.net -xinjiyuan.net -xinju.fun -xinjuc.com -xinjunshi.net -xinjunshicn.net -xinke-semi.com -xinkenwen.com -xinkuai.com -xinlangtupian.com -xinlanshengbc.com -xinle.com -xinle366.com -xinleineng.com -xinleshan.com -xinleshiyiyuan.com -xinlexie.com -xinli001.cc -xinli001.com -xinli001.xyz -xinli001wx.com -xinli10.com -xinliangxiang.com -xinliceping.com -xinlifudao.com -xinlilw.com -xinlinghuayuan.com -xinlingletu.com -xinlip.com -xinliwanju.com -xinlixinli.net -xinlong-holding.com -xinluex.com -xinlvtu.com -xinlvyy.com -xinmaizj.com -xinmanduo.com -xinmanhua.net -xinmanyuan.com -xinmaotao.net -xinmeihu.com -xinmeinuo.com -xinmem.com -xinmenglife.com -xinmeow.com -xinmeti.com -xinmima.com -xinminghui.com -xinminheng.com -xinmintian.vip -xinmizx.com -xinnakj.com -xinnet.com -xinnetdns.com -xinnetvip.com -xinniangjie.com -xinnianhua.com -xinnong.com -xinnong.net -xinnuodazu.com -xino-tech.com -xinorngyk.com -xinouhk.com -xinoujixie.com -xinpa.com -xinpeihu.net -xinpg.com -xinpianchang.com -xinpianyugao.com -xinpin-ip.com -xinping.cc -xinpingmu.com -xinpinhe.com -xinpinmao.com -xinpintoutiao.com -xinpupower.com -xinpure.com -xinqidian-sh.com -xinqigu.com -xinqing.com -xinqingyulu.com -xinqite.com -xinqiucc.com -xinqiyejia.com -xinqtech.com -xinquanedu.com -xinquji.com -xinran1016.com -xinranliu.me -xinrenxinshi.com -xinri.com -xinrong88.com -xinrui-games.com -xinrui-pharm.com -xinrui.biz -xinruipiao.com -xinruiweb.com -xinsanbanbao.com -xinsankeji.com -xinsdn.com -xinsenz.com -xinsf.cc -xinshangmeng.com -xinshangshangxin.com -xinshengdagroup.com -xinshengku.com -xinshengsemi.com -xinshi525.com -xinshiba.com -xinshiji1992.com -xinshipu.com -xinshishen.com -xinshouyou.com -xinshouzhanzhang.com -xinshucd.com -xinshuge.net -xinshuiny.com -xinshuru.com -xinsilu.com -xinsource.com -xinss.com -xinss.net -xinstall.com -xinstatic.com -xinszy.com -xintaikeji.com -xintairen.com -xintairencai.com -xintaishequ.com -xintaizhou.com -xintajixie.com -xinteenergy.com -xintengmenchuang.com -xintheme.com -xintiandi.com -xintianw.com -xintianya.net -xintiao100.com -xintiaogroup.com -xintiaoyouxi.com -xintongconference.com -xintongwang.com -xintrum.com -xintuan.com -xintucdn.com -xintuosoft.com -xintv.com -xinvry4chips.com -xinwangcj.com -xinwanr.com -xinweier.com -xinweiyun.com -xinwell.com -xinwen365.com -xinwen520.net -xinwengao.net -xinwengood.com -xinwenku.com -xinwenlianbo.tv -xinwo.com -xinwuji.com -xinwulan.com -xinxe.com -xinxi28.com -xinxianghui.com -xinxianshilb.com -xinxiansk.com -xinxianwang.com -xinxiaochina.com -xinxiaodian.com -xinxiaoqi.com -xinxiaozu.com -xinxiehe.com -xinxifabu.net -xinxinapp.net -xinxindai.com -xinxing-marathon.com -xinxing001.com -xinxing100.com -xinxing91.com -xinxinhot.net -xinxinhotel.com -xinxinjoy.com -xinxinmed.com -xinxjs.com -xinxue-edu.com -xinxuejy.com -xinxunwang.com -xinxyun.com -xinya.me -xinyali.net -xinyan-gx.com -xinyan.com -xinyanggaopin.com -xinyanglao.com -xinyanwuliu.com -xinyao168.com -xinyaoapp.com -xinyaoshi.com -xinyapharm.com -xinyayk.com -xinyegang.com -xinyetongcard.com -xinyi-tech.com -xinyi.com -xinyi2006.com -xinyidc.com -xinyiglass.com -xinyihl.com -xinyinghc.com -xinyingpower.com -xinyingtec.com -xinyingyang.com -xinyisemi.com -xinyishiji.com -xinyitt.com -xinyo100.com -xinyong.net -xinyongbuy.com -xinyongsoon.com -xinyou.com -xinyoudui.com -xinyour.com -xinyu-tam.com -xinyu19.com -xinyuanclub.com -xinyuanf.com -xinyuanfin.com -xinyuanshiye.net -xinyubt.com -xinyuchen.com -xinyueclub.com -xinyuefei.com -xinyuehealth.com -xinyuejiaxiao.net -xinyueseo.com -xinyuhole.com -xinyuhongyuan.com -xinyuncs.com -xinyunfuwu.com -xinyunit.com -xinyurc.com -xinyustone.com -xinyutengyuan.com -xinzegongshui.com -xinzengwj.net -xinzheng.cc -xinzhi.com -xinzhi.space -xinzhibang168.com -xinzhibid.com -xinzhichuangzhi.com -xinzhiguanwangyun.com -xinzhongqi.net -xinzhou.org -xinzlkj.com -xinzuojia.com -xinzushenghuo.com -xiolift.com -xionganxinxi.com -xiongbagk.com -xiongbingtianxia.com -xiongchuan.com -xiongf.com -xiongfengcl.com -xiongfenggroup.com -xiongge.club -xiongmaitech.com -xiongmao555.com -xiongmao789.com -xiongmaoboshi.com -xiongmaodangao.com -xiongmaojinku.com -xiongmaosaohao.com -xionguamaqui.com -xiongying.com -xiongyudl.com -xiowo.net -xioxix.com -xipunet.com -xipushuju.net -xiqb.com -xiqianyangyi.com -xiqiaoshantour.com -xiqifun.com -xiqinrc.com -xiqkj.com -xiqu.me -xiqu001.com -xiquebo.com -xiquepark.net -xiqueqingjian.com -xiqurongmei.com -xiquwenhua.net -xirang.com -xiri-vacuum.com -xironiot.net -xisaiwang.com -xise3.com -xishalz.com -xishanju-hn.com -xishanju.com -xishanxuexiao.com -xishaoye.com -xishiwang.com -xishixiuhair.com -xishpj.com -xishu365.com -xishuai.com -xishuai.net -xishuizk.com -xishunj.com -xisofttec.com -xitanhotel.com -xitaoinfo.com -xite-group.com -xitek.com -xitek.net -xitengbingxue.com -xitie.com -xitieba.com -xitieba.net -xitinet.com -xitmi.com -xitong-tech.com -xitong114.com -xitong5.com -xitong8.com -xitong86.com -xitongbuluo.com -xitongcity.com -xitongdaquan.net -xitonggho.com -xitonghe.com -xitongjiaocheng.com -xitongku.com -xitongle.com -xitongpe.com -xitongtiandi.net -xitongtiankong.com -xitongtu.net -xitongwanjia.com -xitongxz.net -xitongzhijia.com -xitongzhijia.net -xitongzijia.net -xitongzongcai.com -xitongzu.com -xitu.com -xitu.io -xituan.com -xiu.com -xiu8.com -xiuai.com -xiubiaoshi.com -xiubiaozu.com -xiucai.com -xiudodo.com -xiudtech.com -xiufa.com -xiufaxing.com -xiugei.com -xiugu.com -xiuhandingzhi.com -xiuhangzhe.com -xiuhe128.com -xiuimg.com -xiujiadian.com -xiujixia.com -xiujue.cc -xiulian.com -xiuluowang.com -xiuluren.com -xiulv.com -xiumb.com -xiumb12.com -xiumi.us -xiumius.com -xiumucn.com -xiuna.com -xiuno.com -xiuqicloud.com -xiuren.com -xiushao.com -xiusheji.com -xiushuang.com -xiushui.net -xiusifudianji.com -xiustatic.com -xiutanqi.com -xiutuan.com -xiutv.com -xiuxiandou.com -xiuxianshipin.com -xiuxiu.com -xiuxiuda.com -xiuxiustatic.com -xiuxmanhua.com -xiuzhan365.com -xiuzhanwang.com -xiuzhiwu.com -xivcdn.com -xiwan.vip -xiwangame.com -xiwangchina.com -xiwangd.com -xiwanglife.com -xiwangxiaoyuan.com -xiwantrip.com -xiweigas.com -xiwenquan.com -xiwicloud.com -xiwnn.com -xiwuji.com -xiwuy.com -xixiangongjiao.com -xixianwatergroup.com -xixiaoyou.com -xixiarc.com -xixibobo.com -xixiclothing.com -xixidoudizhu.com -xixig8.com -xixih.cc -xixih.net -xixik.com -xixik.net -xixinews.com -xixinghanghr.com -xixiqipai.com -xixisys.com -xixiwg.com -xiyacs.com -xiyangan.com -xiyashiji.com -xiyec-tencentclb.cloud -xiyec-tencentclb.com -xiyec-tencentclb.net -xiyec-tencentclb.work -xiyi-jt.com -xiyijiang.com -xiyijm.com -xiyin.life -xiyiqq.com -xiyogo.com -xiyongpark.com -xiyoo.com -xiyou-g.com -xiyoucdn.com -xiyouchat.com -xiyouji.com -xiyoulinux.com -xiyoupark.com -xiyouquan.com -xiyousdk.com -xiyouwebgame.com -xiyouxi.com -xiyuanshuke.com -xiyucosmetics.com -xiyuege.com -xiyuegr.com -xiyufine.com -xiyun.net -xizanggames.com -xizangguolv.net -xizangmaoniunai.com -xizangqinglv.com -xizangshop.com -xizangzl.com -xizexiao.com -xizhai2021.com -xizhang.com -xizhengtouzi.com -xizhi.com -xizi.com -xizice.com -xiziiparking.com -xiziquan.com -xiziwang.net -xj-biotech.com -xj-etyy.com -xj-tianye.com -xj-zp.com -xj120.com -xj123.info -xj169.com -xj5u.com -xj71.com -xj917.com -xj96596.com -xjabc.net -xjauto.net -xjbank.com -xjbaoyouge.com -xjbdf.net -xjbhc.net -xjbuluo.com -xjc18.com -xjcc.net -xjcmtj.com -xjcysky.com -xjcysw.com -xjd2020.com -xjdaily.com -xjdkctz.com -xjdpx.com -xjdsb.com -xjdwfc.com -xjdzhyq.com -xjedu.org -xjent.com -xjesps.com -xjf.pub -xjfam.com -xjfdcw.com -xjfilm.net -xjfk.com -xjflcp.com -xjfm.com -xjfzb.com -xjgameapi.com -xjgameinfo.com -xjgc.com -xjggjy.com -xjgj.com -xjgkzs.com -xjgqt.org -xjgsdm.com -xjgt.com -xjguanghui.com -xjgwy.org -xjgxjt.com -xjh.com -xjh.me -xjhgame.net -xjhjrq.com -xjhr.com -xjhsxt.com -xjhtrq.com -xjhuan.fun -xjhx120.com -xjhyktsp.com -xjhzn.com -xjietiao.com -xjishu.com -xjisme.com -xjiyou.com -xjjhjt.com -xjjnjp.org -xjjqd154.com -xjjsws.com -xjjt.com -xjks.net -xjlxw.com -xjlytz.com -xjlz365.com -xjmachine.com -xjmg.com -xjmty.com -xjnnet.net -xjnzm.com -xjoycity.com -xjpdf.com -xjphsd.com -xjpnmt.com -xjqixing.com -xjqysw.com -xjr2018.com -xjrb.com -xjrb.net -xjrc365.com -xjrdsp.com -xjrmyy.com -xjshanhao.com -xjsic.com -xjsmwl.com -xjsy56.com -xjtcm.com -xjtjjt.com -xjtour.com -xjtrcw.com -xjtrry.com -xjtsnews.com -xjtssw.com -xjtucompressor.com -xjtudlc.com -xju88.com -xjweek.com -xjwell.com -xjwljb.com -xjwyglw.com -xjxa.com -xjxbmy.com -xjxbx.com -xjxdf.com -xjxf.com -xjxhdn.com -xjxtrq.com -xjy020.com -xjygaofu.com -xjyrcw.com -xjysk.com -xjytjt.com -xjz.com -xjzclyqc.com -xjzcsq.com -xjzdjx.com -xjzhsh.com -xjzlyy.com -xjzp.net -xk41v506m7.com -xk57.com -xk857.com -xk89.com -xk9l.com -xkaczxv.com -xkaxka.com -xkbbtang.com -xkbjm.com -xkcd.in -xkcun.com -xkdywl.com -xkeirofiowef.com -xker.com -xkfyzmob.com -xkgiwdey.com -xkhouse.com -xkitd.com -xkjian.com -xkjt.com -xkjt.net -xkjxcon.com -xknow.net -xkoeccrq.com -xkonglong.com -xkpx.com -xksafe.com -xksast.com -xktech.com -xktsz.com -xkunyi.com -xkw.com -xkwe.com -xkxs.org -xkxsc.com -xkyl.vip -xkyn.com -xkyn.net -xkyy.com -xkzzz.com -xl-ai.com -xl-edu.net -xl-ele.com -xl-soft.com -xl-vip.com -xl18z.com -xl2824.com -xl5bb.com -xl5dd.com -xl5du.com -xl5dw.com -xl699.com -xlaidudu.info -xlaidudu.net -xlaomi.net -xlbsoft.com -xlcai.com -xlcgjg.com -xlcidc.com -xlcjzx.com -xlctyd.com -xlczg.com -xldlive.com -xldz.com -xlewen5.com -xlfred.com -xlgao.com -xlgjg.net -xlgogo.com -xlgtx.com -xlgxapp.com -xlhb.com -xlhbgroup.com -xlhfmj.xin -xlhk.net -xlhs.com -xlhyc.com -xlibai.com -xlinclass.com -xlisp.net -xljly.com -xljnjy.com -xljsci.com -xlkdyf.com -xlkorganic.com -xlkshop.com -xlkty.com -xllyk.com -xlm258.com -xlmarathon.com -xlmis.com -xlmr.com -xlmz.net -xlndt.com -xlobo.com -xlongm.com -xloveyoux.com -xlpai.com -xlpan.com -xlpp.net -xlqeai.com -xlqzh.com -xlread.com -xlreads.com -xlsdn.com -xlsemi.com -xlshou.com -xlsxmj.com -xltll.com -xltnjslfd.com -xltrip.com -xluuss.com -xlvshi.com -xlwl95.com -xlx168.com -xlxkgjt.com -xlxqsgf.com -xlxslny.com -xlyap.com -xlyfhw.com -xlykzz.com -xlyouxi.com -xlyouxi.net -xlysauc.com -xlysauc.net -xlysoft.net -xlyx3.com -xlyxo.com -xlyxp.com -xlzfpt.com -xlzhao.com -xlzyd.com -xlzys.com -xlzyyw.com -xm-ad.com -xm-ais.net -xm-chuang.com -xm-gzf.com -xm-olympic-museum.org -xm002.com -xm51.com -xm5156.com -xm680.com -xm6wpp.com -xm9.co -xm909.com -xm9m.com -xmac.app -xmafkj.com -xmaibu.com -xmamiga.com -xmanblog.net -xmantou.com -xmasg.com -xmayitxt.com -xmbankonline.com -xmbhw.com -xmbie.com -xmbike.com -xmbus.com -xmccb.com -xmcdn.com -xmchong.com -xmcimg.com -xmcord.com -xmcp.ltd -xmcwh.com -xmcx.net -xmcy.com -xmdh.com -xmeasygo.com -xmecard.com -xmerak.com -xmeye.net -xmf.com -xmfc.com -xmferry.com -xmfev.com -xmfish.com -xmfls.net -xmfunny.com -xmgd.com -xmgltwzhs.com -xmgod.site -xmgouemc.com -xmgps.com -xmgsd.com -xmgslx.com -xmguoyi.com -xmgwbn.com -xmhaicangmarathon.com -xmheigu.com -xmheitu.com -xmhitek.com -xmhlcs.org -xmhljx.net -xmhouse.com -xmht.com -xmhx.com -xmigc.com -xminfoport.com -xming.ai -xminnov.com -xminzu.com -xmisp.com -xmitic.com -xmj1688.com -xmjchyxh.com -xmjgjy.com -xmjiaruan.com -xmjim.com -xmjj3d.com -xmjled.com -xmjsci.com -xmjslh.com -xmjyw.com -xmjzykj.com -xmkanshu.com -xml-journal.net -xmldz4.com -xmlhifi.com -xmlulub.com -xmlvbarcode.com -xmmade.com -xmmama.com -xmmeiyou.com -xmmnrj.com -xmmtu.com -xmmuye.com -xmnjdwx.com -xmnovel.com -xmocloud01.com -xmonecode.com -xmos.tv -xmov.ai -xmpaoyou.com -xmparking.net -xmpbjl.com -xmpcba.com -xmq520.com -xmqianzun.com -xmqxy.com -xmr-zh.com -xmrb.com -xmrbi.com -xmrdtx.com -xmruanci.com -xmruiyou.com -xmseaview.com -xmseeyouyima.com -xmsgame.com -xmsixian.com -xmsiyb.com -xmsme.com -xmsmjk.com -xmsoft.com -xmsouhu.com -xmsoushu.com -xmspace.net -xmssie.com -xmsssyy.com -xmsumi.com -xmsuperlite.com -xmswim.com -xmtbang.com -xmtyy.net -xmuli.tech -xmulib.org -xmwan.com -xmwes.com -xmwsrc.com -xmx023.com -xmxc.com -xmxdev.com -xmxfxh.com -xmxgame.com -xmxmc.com -xmxsapp.com -xmxwl.net -xmxwz.com -xmyeditor.com -xmylhy.com -xmyouma.com -xmyzm.com -xmzangao.com -xmzdls.com -xmzgxcl.com -xmzhdz.com -xmzhkt.com -xmzibi.com -xmzjjl.com -xmzjtjckmy.com -xmzmmr.com -xmzmy.com -xmzs.org -xmzsyg.site -xmzyark.com -xmzzy.net -xn--0lqwsu2w.com -xn--1bs9ye16ez8b.com -xn--1ctq05bvu1a.com -xn--1d3a16a.com -xn--1lqq7i4w0acli.com -xn--2cyr99a.com -xn--2quu5hi8e69p.com -xn--2vra6db.com -xn--2vxsp6vi4j.com -xn--3bs35yfl6bn8a.ink -xn--3bs70igqdr64f.com -xn--3bs781ecijtrt.com -xn--3bsp13hurlcwb.com -xn--3bsx54la62v.com -xn--3bsz0pskmp89skv3a0zd724b1py.net -xn--48s50dpwnbh95ah07i.com -xn--4gq0d69oba129b9wd94ey8bs83ji3c3q7hoka.org -xn--4gq1d760bszbgdv5p12rhq5bx2yc.net -xn--4lwr21d.com -xn--4qwqc04pn0lg9h.com -xn--4xup5j.com -xn--54q249denfzw9a.net -xn--54q40czz0g7xp.com -xn--55qw7biqf7g3d004h8yuw1ctrt04sep1cjfb.com -xn--55qwa79fh6ku8czve.com -xn--55qx2ag79c1iq.com -xn--55qzsxj5y4ozkz93dswptmau4jc88dg75ctid8raf29c.com -xn--5brz4b846h.com -xn--5kv317c.com -xn--5kv91jiz2b.com -xn--6fr61zj8c92fg34d.com -xn--6kr66fp2ep1ac5edz2hy7s2wq.com -xn--6krw3qs7jl59b.com -xn--6oq83hzb922dnorwsomx9dzkb.com -xn--6qqp94buie2ss.com -xn--6rtq6phwfhva.com -xn--6xv710dola.net -xn--730-l44eu9iitvv9h.com -xn--7mqy6dj0brts55e.com -xn--7qvz7xssa.com -xn--7stv4oc3evv7b.com -xn--88-9s0f59z.com -xn--8lqrjra071bi0qgga421cs99a4qeqwm.com -xn--8ou124e6ek.net -xn--8owq8u.com -xn--8stx8olrwkucjq3b.com -xn--9kqx88aa0024cywe.org -xn--9kr72kqwe.com -xn--9krv3x413bbyb.com -xn--9myo55bi8l.com -xn--9pr56vfna007k.com -xn--b0t462i.com -xn--b0tn0sxy3ayhj.com -xn--b0tp7p3met2a.com -xn--b0tp7p3met2a.net -xn--b8qi619ujyk.com -xn--btvs3aw8fhtbms310k.com -xn--btvu9x9qgt8c.com -xn--bxyy83e.net -xn--cesx3oukw29l.com -xn--chq7lp8e46htw3g.com -xn--chq84itwgrb674blm6f.com -xn--chq978ctsf6v6c.com -xn--cjztj18l.com -xn--cpqr0dg9g4t0fodaq5c.com -xn--cssw8z54rj2ds2q.com -xn--czr93rxry.com -xn--czru2dx3eszw3lat53b.com -xn--dev407h.com -xn--djr48g6sik7q.com -xn--djr58xb1mzxk3mtrhfc8g.com -xn--dkr447bejn.com -xn--dkr447bejn.net -xn--dll-8n0e103bz5hg93c.site -xn--dlq10g6xfkw4a201b.com -xn--dlqu6kw2e2n3aolseyrfhn.com -xn--dlqw10borzgxh.com -xn--dtq23gl66e.com -xn--eh1a34ykpl.com -xn--ehq647i.xn--j6w193g -xn--fcs316auqlyoe.com -xn--fhq79jyym9nh74hfm8a.com -xn--fiq03fftg7m2c.com -xn--fiq06jqoz14s.com -xn--fiq446amrnx0i.com -xn--fiq4mgq69drxaiym2g5wnynb77huij0bchq7vj5ay61o3cwdq2ah92mlg9c.com -xn--fiq6q20pz51d.com -xn--fiq73f39fwr0b4wk.net -xn--fiq7v55hnsepqz.net -xn--fiqr9gg1vdha.com -xn--fiqrtn9duw9e.cc -xn--fiqs8sr9ge7eb4b28vo92a.com -xn--fiqu59c0hf2sy.net -xn--fiqv94di0c54ipe.net -xn--fiqw8jl3h7xc25m753d.link -xn--fiqx7ci2whnj.com -xn--fjq5py34j65v.com -xn--flw351e.com -xn--g2xt1d91f2xk.com -xn--glr604k.com -xn--gmqr9gdtrhuf56g.com -xn--h0tn34c.cc -xn--husx9zj2eepau0se83d.com -xn--hutn94av9amzg.net -xn--i6q33br88fkud.com -xn--igt225itqf.com -xn--it-if7c19g5s4bps5c.com -xn--jh1a128b.com -xn--jor0b302fdhgwnccw8g.com -xn--jpr47zq87axwjc0d.com -xn--kivq8be3whsi.com -xn--l9qya49g86gm9ghpbzy1dwl0fppo.com -xn--lt0at3k.com -xn--mct72chgrm.net -xn--mes380bwhsoec.com -xn--mnqs00c24c2pw0ii.com -xn--mts196b.net -xn--n5q75cia631gba51vx4ag2a008o08l1t0adzay2skp4b.com -xn--n6qy1xeobw60f.net -xn--ncym25ahib.net -xn--nmqp78hmufjwu.com -xn--ntso8dsz1borbzvfm5h.com -xn--ntsp37j.net -xn--nyqx17d.com -xn--nyqx2gbsm8u0b.com -xn--ohqn1dw64cf45c8l9a1ba.com -xn--omrvgz6er31au6f.com -xn--oorz70c56jtwb49x.net -xn--p5t28ylet56a.com -xn--pbt1sj69ag8b.com -xn--pss89e6xl72g.com -xn--ptua509t.com -xn--q20av2y36ac54a.com -xn--qruq25bjsj.net -xn--qzwx3ij21azka.com -xn--r8s65df7admf92a.com -xn--rhq112dhez17bejdyhl55dypc.com -xn--rhqt5j7qj6mj.com -xn--rht439a44bdyk.com -xn--riqi041otpd.com -xn--rpv331d.com -xn--rss237b.com -xn--rss404ac6aj60e.net -xn--rsss0ke5ghnj.com -xn--ruqs20ac8b5z7av8ir2u.net -xn--ruqz9zcojm5sf19a.com -xn--s4t325g.com -xn--sgt856gbjl.cc -xn--siq0gv77a3c.com -xn--sosw2ge0bs10aoq0a.com -xn--sss604efuw.com -xn--swts8irvtrtr.com -xn--tesiro-n17nh93r.net -xn--tfr181fg2az43a.com -xn--tkr55q2oa097dyxe209c.com -xn--tlq092au7hsi3a.com -xn--tlqp5nt6bb69g.xyz -xn--tlqz3aj77agil76ww4ni2k.com -xn--tqq89g2tjj5x8xs.com -xn--uisx71c0r1a.com -xn--vcso1ukuz.net -xn--vcsu51b3zccpm.com -xn--vcsu9p66gy1l9vpnnbk52f.com -xn--vhq3m33sbqhpsmtnuxfq.com -xn--vhq3mr8b802a.net -xn--vhq4ut2dsxd5xqnicjxxo55a756aovhik0aunm.com -xn--vhq72yfwbt0elp2cpkhtld55g73l1o6a.com -xn--vhqqbz2p62hm92e04p.com -xn--vhqu1kbz3bnbi.com -xn--viq463a.com -xn--vq3a5gj6c9i.com -xn--vuqz86auobw20f.com -xn--w9q313dfn4a.com -xn--w9qr0k.com -xn--w9qy23cc6adz7d.net -xn--wbsz85a2a.com -xn--wtqs2doz3b.com -xn--wxtr44c.live -xn--xcry9n251cvcar5xj6r.com -xn--xhq60k09cr85at2f494d.com -xn--xhq60kzbz07dem6azlu.com -xn--xhq8sm16c5ls.com -xn--xhqq4f5vc69qlmk6mva633mwoeiuad9562e.com -xn--xhqs8jmxkive1yest6g.com -xn--xhqs8jp0kpz2d.net -xn--xhqx10kr8o.com -xn--xkr190gv5p.com -xn--xkr26fp82clgt.com -xn--xkr999cp4fv97a.com -xn--xkrs9ba41r.com -xn--y6q834d2k3al4h.com -xn--y8jhmm6gn.moe -xn--ygtp21bwyedsq.com -xn--yhqq38bmov17mqxi.com -xn--ykr169cm1pskt.com -xn--z4q559dueav8q.com -xn--z63a11k.com -xn-ck.com -xn0.cc -xn121.com -xn2001.com -xna8.com -xnara.org -xnb.me -xncjdx.com -xndm.tech -xndqfw.com -xndxfz.com -xndyyljt.com -xnfyy.com -xngjbus.com -xnh123.com -xnh98d9c32om.com -xnhdgame.com -xninja.org -xnjcw.com -xnjdcbs.com -xnjxnz.com -xnnpc.com -xnongren.com -xnparking.com -xnpfs.com -xnpic.com -xns315.com -xnsbdzb.com -xnsdermyy.com -xnsntr.com -xnssy.com -xnszlszgs.com -xntg.com -xntt.com -xntv.tv -xnw.com -xnw19.vip -xnwan.com -xnwatch.com -xnwbw.com -xnwmw.com -xnxy120.com -xny365.com -xnyauto.com -xnye.net -xnytjt.com -xnzjxx.com -xnzn.net -xnzxyy.com -xnzyyy.com -xoao.com -xogekfb.com -xoliao.com -xooooa.com -xopenbeta.com -xoqeyeti.com -xorlink.com -xorpay.com -xoss.co -xoudou.com -xoxv.net -xoxxoo.com -xoyo.com -xoyobox.com -xoyocdn.com -xoyq.net -xp535.com -xp6000.com -xp61.com -xp811.com -xp9365.com -xp94.com -xpaper.com -xpaper.net -xpccdn.com -xpcdz.com -xpcha.com -xpchina.net -xpdf.net -xpeae.com -xpeng.link -xpf.cc -xpgod.com -xpgps.cc -xphcn.com -xpj0066.com -xpkjpk.com -xpkongqipao.com -xplaymobile.com -xppgsx.com -xpsheying.com -xpsup.com -xpsy.net -xpsy3q9e5kr4.com -xptt.com -xpu93.com -xpw888.com -xpwin7.com -xpykjsws.com -xpyouxi.com -xpyx.net -xpzsgc.com -xq0356.com -xq0757.com -xq2024.com -xq5.com -xq668.com -xqb24.com -xqbase.com -xqblog.com -xqce.com -xqckg.com -xqdgroup.com -xqdjkwz.com -xqfunds.com -xqgmx.com -xqhuyu.com -xqhzw.org -xqipu.com -xqishuta.com -xqiushu.com -xqjmzc.com -xqjs.net -xqllaser.com -xqltzp.com -xqmdc.com -xqmice.com -xqnmz.com -xqpharma.com -xqppt.com -xqsbw.com -xqshe.com -xqship.com -xqtzigc.com -xqu5.com -xqvxifvk.com -xqyake.com -xqyk024.com -xqymuy.com -xqypay.com -xr100.net -xr818.com -xray.cool -xrbulk.com -xrcch.com -xrccp.com -xrdyl.com -xrdzidonghua.com -xredu.com -xrender.com -xresgrbw.com -xrhhg.com -xrichengapp.com -xrjjk.com -xrkapp.com -xrkcdn.com -xrkmonitor.com -xrlmold.com -xrpyq.com -xrqh.com -xrqorv.com -xrso.com -xrunda.com -xrvm.com -xrwf66.com -xrxr.xyz -xrxukegi.com -xrxx365.com -xrzhg.com -xrzww.com -xs-ir.com -xs-servers.com -xs058.com -xs3cnc.com -xs52.com -xs63.info -xs7.cc -xs7.com -xs7.la -xs920.com -xs9999.com -xsa239.com -xsappxz.com -xsb120.com -xsbja.com -xsbus.com -xscbs.com -xschu.com -xschuban.com -xscxzcz.com -xsdma.com -xsdmr.com -xsdnjl.com -xsdoudou.com -xsdwk.com -xsee.cc -xsesc.com -xsfaya.com -xsfc.com -xsgame.net -xsgame99.com -xsgongju.com -xsgtvacct.com -xshengyan.com -xshenshu.com -xshhotels.com -xshkvip.com -xshmzz.com -xshntc.com -xshouyou.com -xshr.com -xshrcw.com -xshts.com -xshuai.com -xshubao.org -xshuma.com -xshuoba.com -xshuoshuo.com -xsignal-ft.com -xsina.net -xsinger.me -xsj21.com -xsjedu.org -xsjgzbdf.com -xsjit.com -xsjk.net -xsjny.com -xsjom.com -xsjplm.com -xsjrc.com -xsjs-cifs.com -xsjtxt.com -xsjwyx.com -xsjxyedu.com -xsjzsy.com -xskhome.com -xslb.me -xslb.net -xslmed.net -xsm818.com -xsmaofa.com -xsmart.com -xsmart.link -xsmoe.com -xsmya.com -xsn168.com -xsnow.net -xsnsyh.com -xsool.com -xsp0311.com -xsphs.com -xspinfo.com -xspio.com -xsqzyyy.com -xsrm.com -xsrtvu.com -xss.tv -xssdcdn.com -xsser.date -xsshuku.com -xsskc.com -xsskw.com -xsslyjt.com -xssz.net -xsteach.com -xsti.net -xstnet.com -xstqj.com -xsttop.com -xstv.net -xstx.info -xstzgs.com -xsui.com -xsuweb.com -xswang.com -xswdcasting.com -xsxgjsw.com -xsxlt.com -xsxzls.com -xsy-edu.com -xsy.science -xsycps.com -xsyeli.com -xsyk021.com -xsyq.cc -xsyqmztg.com -xsyx.xyz -xsyxsc.com -xsyydtfy.com -xsyzdl.com -xszhuan.com -xszrcw.com -xszsw.com -xszww2.com -xszww8.net -xt-gas.com -xt-kp.com -xt-luyou.com -xt-rent.com -xt-shipping.com -xt12333.com -xt3yy.com -xt700.com -xt7p.com -xtadmins.com -xtaike.com -xtal.cc -xtao.me -xtbank.com -xtc-edu.com -xtcaq.com -xtcfjt.com -xtcrm.com -xtdj.cc -xtedu.com -xtep.com -xthinking.net -xthtc.com -xthyjt.com -xtiai.com -xtianlang.com -xtibet.com -xtingcloud.com -xtion.net -xtjc.com -xtjcxh.org -xtjky.com -xtjlyy.com -xtjob.net -xtjsxy.net -xtjtjs.com -xtlog.com -xtmit.com -xtmtrj.com -xtomp.com -xtong-solar.com -xtongs.com -xtoobmo.xyz -xtqarzip.com -xtransfer.com -xtrapowercn.com -xtrc.net -xtrunc.com -xtsfuke.com -xttblog.com -xttz.com -xtu2.com -xtuan.com -xtuos.com -xtutoring.com -xtw-system.com -xtwzyx.com -xtx6.com -xtxcm.com -xtxh.net -xtxnxk.sbs -xtylxx.com -xtyyw.com -xtzdc.com -xtzhiliji.com -xtzjcz.com -xtzjup.com -xtzpw.com -xtzy.com -xu1s.com -xu42x.net -xu8.fun -xu97.vip -xuanad.com -xuanba.com -xuancaizi.com -xuanceo.com -xuancheng.org -xuanchuanyi.com -xuandan.com -xuandecarpet.com -xuanfengge.com -xuanhaikuwan.com -xuanhao.com -xuanhuange.com -xuanhuange.net -xuanjigame.com -xuanjingcn.com -xuanjutong.com -xuanke.com -xuankuge.com -xuanliw.com -xuanma.com -xuannaer.com -xuanqii.com -xuanquge.com -xuanqun.com -xuanruanjian.com -xuanshi.link -xuanshitou.com -xuanshu.com -xuanshu.org -xuansiwei.com -xuantaikeji.com -xuanteng.org -xuanwifi.com -xuanwonainiu.com -xuanwu88.com -xuanwumobile.com -xuanwww.com -xuanxiaodi.com -xuanxiaozhuanjia.com -xuanxuan.com -xuanxuangame.com -xuanxue.com -xuanxuewang.com -xuanyang888.com -xuanyaodang.com -xuanyaodang.net -xuanyge.info -xuanyouwang.com -xuanyuan.cloud -xuanyuan.run -xuanyuanhuangdi.org -xuanyuans.com -xuanyuanzjy.com -xuanyusong.com -xuanyutech.com -xuanzhi.com -xuanzhuanmumatuwen.com -xubei.com -xuchangqifu.com -xuchencq.com -xuchuang.com -xucongbaobao.com -xudan123.com -xudankeji.com -xudong8.com -xudongfood.com -xudoodoo.com -xue.net -xue114.com -xue126.com -xue163.net -xue51.com -xue63.com -xue8nav.com -xue99.com -xueanquan.com -xueba100.com -xuebaclass.com -xuebaike.net -xuebangsoft.com -xuebapan.com -xuebawang.net -xuecaijie.com -xuecan.net -xueche.com -xueche.net -xuechebu.com -xuechela.com -xuechu123.com -xuecoo.com -xueda.com -xuedao.com -xuedapei.com -xuedi.com -xuedingmiao.com -xuedong97.com -xuedou.com -xueepay.com -xueerdiyi.com -xueersen.com -xueersi.com -xueersibook.com -xueerxing.com -xueeu.com -xuefa.com -xuefeiji.org -xuefenxi.com -xuefo.com -xuefo.net -xuefoxue.com -xuegaogame.com -xuegaogg.com -xuegeshui.com -xuegongkong.com -xuegui.net -xueguoedu.net -xuehai.net -xuehaiwu.com -xuehuacdn.com -xuehui.com -xuehuile.com -xuehuiwang.com -xueid.com -xueit.com -xuejia123.com -xuejian.site -xuejiaoso.com -xuejiqiao.com -xuekanba.com -xuekao.com -xuekao123.com -xuekeedu.com -xuekewang.com -xuekuaiji.com -xuekubao.com -xuekuibang.shop -xuelangapp.com -xuele.net -xueleku.com -xuelema.com -xueleyun.com -xueli9.com -xueliedu.com -xuemh.com -xueming.li -xuenarui.com -xuenb.com -xuepaijie.com -xuepingx.com -xuepojie.com -xueqian.com -xueqinji.com -xueqiu.com -xueqiu360.com -xuerong.com -xuesai.net -xuesax.com -xuesexs.com -xueshanlinghu.com -xuesheng.com -xueshiyun.com -xueshu.com -xueshu5.com -xueshuda.com -xueshujia.com -xueshut.com -xueshuwenhai.com -xuesidaojiajiao.com -xuesongshuwood.com -xuesw.com -xuetangonline.com -xuetangx.com -xuetengedu.com -xueti.com -xuetianli.com -xuetimes.com -xueto.com -xuetongw.com -xuetu.net -xueui.com -xuewangshang.com -xuewangzhan.com -xuewangzhan.net -xuewei360.com -xueweigui.com -xueweijiema.com -xuewennet.com -xuewenya.com -xuexb.com -xuexi.la -xuexi199.com -xuexi365.com -xuexi365.net -xuexi612.com -xuexi613.com -xuexi616.com -xuexi637.com -xuexi665.com -xuexi683.com -xuexi684.com -xuexi707.com -xuexi719.com -xuexi721.com -xuexi725.com -xuexi727.com -xuexi733.com -xuexi734.com -xuexi782.com -xuexi784.com -xuexi786.com -xuexi806.com -xuexi807.com -xuexi823.com -xuexi824.com -xuexi825.com -xuexi826.com -xuexi827.com -xuexi828.com -xuexi829.com -xuexi848.com -xuexi851.com -xuexi859.com -xuexi860.com -xuexi861.com -xuexi863.com -xuexi864.com -xuexiaodaquan.com -xuexiaozhaopin.com -xuexibao.com -xuexicha.com -xuexicn.com -xuexigang.com -xuexila.com -xuexili.com -xuexin365.com -xuexinjiaoshi.com -xuexito.com -xuexitong.com -xuexiuwang.com -xuexiwa.com -xuexizhiwang.com -xuexizoo.com -xuexun.com -xueyanshe.com -xueyiyun.com -xueyou.org -xueyuanjun.com -xueyuhuangjinyan.com -xuezeshi.com -xuezhangbb.com -xuezhangya.com -xuezhao.space -xuezhishi88.com -xuezhiyou.com -xuezhouyi.com -xuezizhai.com -xuezozx.com -xugaoyang.com -xugt.com -xuguang.net -xuguangwangluo.com -xuhe56.com -xuheen.com -xuhenghandicraft.com -xuhongjx.com -xuhuihs.com -xujc.com -xuji.co -xujianhua.com -xujiepack.com -xujingkj.com -xujinhuancaishui.com -xujun.org -xuka.com -xulaoshi68.com -xuld.net -xulihang.me -xuliutian.com -xumenger.com -xumengwang.com -xumingxiang.com -xumucloud.com -xumurc.com -xumuren.com -xumuzx.com -xun-gou.com -xun321.com -xunbang.com -xunbao178.com -xunbaozhifu.com -xunbf.com -xunbibao.com -xunbin.com -xunbo.net -xunchabing.com -xunchanggroup.com -xundasemi.com -xundayun.com -xundekai.com -xundiesoft.com -xundns.com -xundns.net -xundupdf.com -xunerjie.com -xunfang.com -xunfeia.com -xunfeib.com -xunfeivr.com -xunfeiwl.com -xunfeixxj.com -xungejiang.com -xungou.com -xungou5.com -xunguagua.com -xunguanggame.com -xunhuai.com -xunhuanshuibeng.com -xunhupay.com -xunhuweb.com -xunicard.com -xunihao.net -xuniquan.com -xunjiecad.com -xunjiefanyi.com -xunjiepdf.com -xunjieshipin.com -xunjietupian.com -xunjk.com -xunkids.com -xunlanchina.com -xunlei.com -xunlei.net -xunleioa.com -xunlew.com -xunliandata.com -xunlianip.com -xunlong.net -xunlong.tv -xunlongsoft.com -xunlu-led.com -xunlugame.com -xunmai888.com -xunmall.net -xunmei.net -xunmeinet.com -xunmengtu.com -xunpaibao.com -xunqinji.net -xunrenzhaoren.com -xunruicms.com -xunruns.com -xunsearch.com -xunshi.cc -xunsho.com -xunshou.com -xunsl.com -xunsn.com -xunsns.com -xunta.mobi -xuntongwuxian.com -xuntou.com -xuntou.mobi -xuntuoguan.com -xunurl.com -xunvision.com -xunw.shop -xunwan.com -xunwangba.com -xunwei.tm -xunweihc.com -xunxi.com -xunxiang.site -xunxu.com -xunyangzaixian.com -xunye1975.com -xunyou.com -xunyou.mobi -xunyouyw.com -xunyuan1314.com -xunyun.com -xunzai.com -xunzhuang.net -xuooo.com -xupai.com -xupea.com -xupernode.com -xuprinter.com -xupu.name -xupu120.com -xupupifu.com -xupupower.com -xuqijt.com -xuqyfw.com -xuruowei.com -xushunda.com -xusplastic.com -xussb.com -xusss.com -xutour.com -xuvol.com -xuweidj.com -xuwenliang.com -xuxian.com -xuxian.me -xuxiang.com -xuxueli.com -xuxusheng.com -xuyalipin.com -xuyangny.com -xuyechem.com -xuyi.net -xuyongrongmei.com -xuyu56.com -xuyueswkj.com -xuyunjt.com -xuzai.com -xuzhi.net -xuzhoufabu.com -xuzhoujob.com -xuzhoumuseum.com -xuzhounano.com -xuzhousports.com -xuzhouwater.com -xuzpazms.com -xv5.com -xvacuum.com -xvcdmo.com -xvista.com -xvizubkg.com -xvjhzuc.com -xvuikerk.com -xvwprdk.com -xw-chip.com -xw-planning.com -xw-scm.com -xw1806.com -xw360.com -xw365.com -xw501.com -xwabx.com -xwadv.com -xwamp.com -xwan.com -xwb8.com -xwbank.com -xwcx6.com -xwcx666.com -xwcxgroup.com -xweb.vip -xwei.tv -xwfintech.com -xwfls.com -xwfruits.com -xwg.cc -xwgl.cc -xwhb.com -xwhodesign.com -xwjqr.com -xwjr.com -xwjy.org -xwkjcms.com -xwlcdfactory.com -xwlxw.com -xwmyw.com -xwog.com -xwok8.com -xwood.net -xwpx.com -xwscg.com -xwshensuofeng.com -xwtcmh.com -xwtele.com -xwuorvhz.com -xwx.mobi -xwxguan.com -xwxwh.com -xwy-powder.com -xwylhh.com -xwyun.net -xwzc.net -xwzxldfx.com -xx-industrial.com -xx-motor.com -xx-sapce.com -xx007.com -xx186.com -xx4a.com -xx5515.com -xx7z.co -xx8g.com -xxahsk.com -xxart.net -xxbiquge.com -xxbmm.com -xxbt.com -xxcang.com -xxccx.com -xxcig.com -xxcipharm.com -xxcmw.com -xxdao.com -xxedu123.com -xxfbiaa.xyz -xxfqc.com -xxfzf.com -xxfzl.com -xxgd888.com -xxghh.biz -xxgzz.com -xxhd-tech.com -xxhnanke.com -xxhpkwd.com -xxinficity.com -xxingclub.com -xxir.com -xxjdns.com -xxjqgs.com -xxjrjxc.com -xxjzg.com -xxka.com -xxkapp.com -xxkucun.com -xxkxjx.net -xxkxw.net -xxlcn.com -xxlifexx.com -xxliudsp.com -xxlsmqzs.com -xxlwin.com -xxmac.com -xxmyf.com -xxnet.vip -xxnets.net -xxnmjx.com -xxoojoke.com -xxorg.com -xxparking.com -xxpay.vip -xxpie.com -xxpkg.com -xxptcs.com -xxpysc.com -xxqb5200.net -xxqipai.com -xxqun.com -xxqzjt.com -xxrjm.com -xxrmyy.net -xxrsm.com -xxrxfilter.com -xxs8.com -xxsb.com -xxsfjx.com -xxshell.com -xxshu.com -xxspd.com -xxsrmyy.com -xxsy.com -xxsy.net -xxsypro.com -xxszxw.net -xxt139.com -xxtaotao.com -xxtiao.com -xxtjdz.com -xxtlw.com -xxtmail.com -xxtswzedu.com -xxw001.com -xxwmy.com -xxwolo.com -xxwxf.com -xxxbiquge.com -xxxcsf.com -xxxedu.net -xxxhhh.com -xxxinwen.com -xxxx88xxxx.com -xxxx92xxxx.com -xxxx96xxxx.com -xxxxxx6.com -xxxzzlm.org -xxycw.com -xxyeyan.com -xxyfgy.com -xxyhzd.com -xxykgl.com -xxymdy.com -xxymw.com -xxyo.com -xxys2023.com -xxyw.com -xxyx.ltd -xxyy.co -xxyzh.net -xxzfgjj.com -xxzhushou.com -xxzmz.com -xxzrs.xyz -xxzsgame.com -xy-365.com -xy-asia.com -xy-ddh.com -xy-dgyx.com -xy-display.com -xy-invite.com -xy-mp.com -xy-technology.com -xy007.net -xy120.net -xy1212.com -xy1758.com -xy178.com -xy280.com -xy3000.com -xy36z.com -xy3yy.com -xy58.net -xy599.com -xy980.net -xyb2b.com -xybch123.com -xybhdy.com -xybj365.com -xybsyw.com -xybtv.com -xybygc.com -xybygw.com -xycad.com -xycaogen.com -xycareer.com -xycclass.com -xycdn.net -xycgd.com -xychyy.com -xycloud.com -xyclouds.com -xycsq.com -xyctgroup.com -xycwei.com -xycyky.com -xyda.cc -xydcname.com -xydcname.net -xydhl.com -xydpay.com -xydxcloud.com -xydyfy.com -xydz08.com -xyeyy.com -xyf6.com -xyfc.com -xyfcw.com -xyffsb.com -xyffvip.com -xyfinechem.com -xyfish.com -xyfsy.com -xyg100.com -xygdcm.com -xygmed.com -xygre.com -xygsjt.com -xygt666.com -xygtea.com -xygulou.com -xygwh.cc -xyh2021.com -xyhc.com -xyhis.com -xyhjd168.com -xyhlcd.com -xyhospital.com -xyhqsh.com -xyhtml5.com -xyhygs.com -xyict.com -xyj.link -xyj321.com -xyj618.com -xyjbglass.com -xyjj99.com -xyjs999.com -xyjtzz.com -xyjuyuan.com -xyjy.net -xyjyjt.com -xyjyy.net -xykgjt.net -xykmovie.com -xyktjt.com -xyl2002.com -xylh888.com -xylink.com -xylive.tv -xylll.com -xylmf.com -xylofh.com -xymfqb.com -xymj.xyz -xymlcs.com -xynbnb.com -xynetweb.com -xyngas.com -xyniubi.com -xynsh.com -xyookj.com -xyous.com -xypifu.com -xyppzx.com -xypse.com -xyqb.com -xyqczy.com -xyqmall.com -xyqy88.com -xyrbszb.com -xyre.com -xyrsks.com -xyrtv.com -xysb.com -xysdyrmyygw.com -xyshoppingbag.com -xyshu8.com -xyshuk.com -xysjg.com -xysmart.com -xysstgs.com -xystatic.com -xystoy.com -xyswychgs.com -xysy.com -xysyzx.com -xyszxyy.com -xyt-tech.com -xytfy.com -xytiyu.com -xytjcpj.com -xytm.art -xytqm.com -xytsoft.com -xytsw.com -xytzg.com -xytzjt.com -xyuncloud.com -xyunjiasu.com -xyunqi.com -xyusk.com -xyvcard.com -xyvcpe.com -xyvend.com -xyvending.com -xyw-wifi.com -xyw.com -xywclass.com -xywlhlh.com -xywm.com -xywm.ltd -xywy.com -xywyfw.com -xywzs.com -xyx234.com -xyx3d.com -xyxcables.com -xyxdie.com -xyxrmt.com -xyxsc.com -xyxsns.com -xyxsw.ltd -xyxun.com -xyxww.com -xyxy.com -xyxy.net -xyxyzz.com -xyxza.com -xyy001.com -xyyao.com -xyyb.net -xyybs.com -xyyh.xyz -xyyksy.com -xyykt.org -xyyl.com -xyyuan.fun -xyyuedu.com -xyyx82.com -xyyxcm.co -xyyy999.com -xyyzi.com -xyz-jm.com -xyz1412.net -xyzcdn.net -xyzcn.com -xyzdict.com -xyzdns.xyz -xyzele.com -xyzfm.link -xyzfm.space -xyzggg.com -xyzimo.com -xyzkj.xyz -xyzmdzs.com -xyzmovie.net -xyzop.com -xyzs.com -xyzshouji.com -xyzspeaker.com -xyzsq.com -xyzttt.xyz -xyzvo.com -xyzywl.com -xz-juming.com -xz-soft.com -xz.com -xz325.com -xz3733.com -xz3z.com -xz6.com -xz6699.com -xz66gxnnjyl.com -xz6y.com -xz7.com -xz8.com -xzairport.com -xzaz.com -xzb360.com -xzbaorun.com -xzbco.com -xzbhfk.com -xzbu.com -xzbzq.com -xzcblog.com -xzcbxg.com -xzccjt.com -xzcdc.com -xzcet.com -xzcjyjt.com -xzcoder.com -xzcr.com -xzcykg.com -xzdabyw.xyz -xzdag.com -xzdfcd.com -xzdfyy.com -xzdtjt.com -xzep.net -xzepa.com -xzfenghe.com -xzfesco.com -xzfhhz.com -xzfile.com -xzfmg.com -xzfwzl.com -xzgdsf.com -xzggjyzpw.com -xzgj.com -xzgjj.com -xzgqm.com -xzgtjt.com -xzgxwq.com -xzhh966888.com -xzhhbfesco.com -xzhichang.com -xzhizao.com -xzhlz.com -xzhome.com -xzhpck.com -xzhyjsjt.com -xzhzkd.com -xzis.org -xzjhgt.com -xzjiufa.com -xzjsxy.com -xzjtkg.com -xzjy.net -xzkd.com -xzking.com -xzkssb.com -xzksyy.com -xzkwjtzyy.com -xzkx.com -xzldbl.com -xzlgjt.com -xzlogo.com -xzlres.com -xzlsqy.com -xzltrq.com -xzltzc.com -xzlzf.com -xzm56.com -xzmai.com -xzn56.com -xznqcc.com -xznqnews.com -xzoo.org -xzpf110.com -xzpm.com -xzpoll.com -xzport.com -xzpxrc.com -xzqh.org -xzqixing.com -xzqrmyy.com -xzqxj.com -xzrbw.com -xzrcfc.com -xzrcyy.com -xzrdwq.com -xzriit.com -xzsckj.com -xzsdszx.com -xzsdyyy.com -xzsec.com -xzsis.com -xzskfyy.com -xzsmartmetro.com -xzsmlq.com -xzsnw.com -xzstatic.com -xzsthj.com -xzsw.net -xzswjt.com -xzszb.net -xzszjt.com -xztcm.com -xztdesign.com -xztsjf.com -xztzb.com -xzuan.com -xzw.com -xzw.pw -xzwanda.com -xzwhg.com -xzwhlyjt.com -xzwyxh.com -xzx.com -xzxjkyy.com -xzxkjd.com -xzxw.com -xzxx.com -xzxxlcp.com -xzyhealth.com -xzyjl.com -xzynyy.com -xzzh.com -xzzhbsq.com -xzzhongye.com -xzzhtc.com -xzzlyy.com -xzzp.net -xzztly.com -xzzulin.com -y-feng.com -y-i-y.com -y-lotus.com -y-os.net -y.to -y007.com -y1995.com -y2002.com -y2374050fo.com -y3pm.com -y4rwk6v8s41kr.com -y5000.com -y55l6.com -y56.com -y5663.com -y5api.com -y5coin.com -y5kfpt.com -y5news.com -y5store.com -y617.com -y66b1pi5re.com -y70qeg6506.com -y77.cc -y78r.com -y80s.com -y8cyx6fvyxk3hs.com -y8kj95k62v.com -y8l.com -ya-bo888.com -ya-marathon.com -ya17.com -ya247.com -yabais.com -yabaite.com -yabandpay.com -yabang-qhpharm.com -yabo.com -yabo2025.com -yabolive.com -yaboo-cn.com -yaboshi0777.com -yabyy.com -yac8.com -yace17.com -yach.me -yachtsinchina.com -yacol.com -yacou.net -yacto-tech.com -yadao8.com -yadashi.com -yadilite.com -yadingtour.com -yadongjf.com -yadran.com -yadugroup.com -yadunyun.com -yaduo.com -yaeherhealth.com -yaersen.com -yaexun.com -yaeyy.com -yafangyiyuan.com -yafco.com -yafdev.com -yafeilinux.com -yafshb.com -yago-mall.com -yahacode.com -yahaha.net -yahaizi.com -yahanmr.com -yahboom.com -yahong-mold.com -yahoo001.com -yahuayunshu.com -yahuhost.com -yahui.cc -yahui.hk -yahuishou.com -yahunet.com -yahxxcl.com -yaimg.com -yaitest.com -yaiyuan.com -yajxc.com -yake123.com -yake5.com -yakgamer.com -yakjhfh.com -yakool.com -yalayi.com -yalewoo.com -yalianedu.com -yaliaojie.com -yalikongzhi.com -yaling8.com -yalishiyanji.com -yalixinli.com -yalj.net -yalongbay.net -yalongsi.com -yalqq8976.com -yamaijia.net -yameisj.com -yamibo.com -yan-grh.com -yan-jian.com -yan678.com -yanagou.net -yananpharm.com -yanbaike.com -yanbaohui.com -yanbaolong.com -yanbeige.com -yanbinghu.com -yanbm.com -yanbmn.com -yanboyuan.com -yance.wiki -yanchaochao.com -yanchebang.com -yancheng-culture.com -yanchengdj.com -yanchengjtgz.com -yanchengzx.com -yanchupiao.com -yanchupiaojia.com -yanchupiaowu.com -yancloud.red -yandaco.com -yandianying.com -yanding.com -yanduyiyuan.com -yanedu.com -yanfabu.com -yanfen.online -yanfeng.com -yanfengauto.com -yanfukun.com -yang99.fun -yangbentong.com -yangchanji.com -yangchenghudzx.com -yangchenglianhe.com -yangcheyongche.com -yangchunjian.com -yangcong.com -yangcong345.com -yangcongchufang.com -yangdongjia.com -yangfanhao.com -yangfannie.com -yanggang-group.com -yanggeng.com -yanggu.tv -yangguangxinye.com -yangguanjun.com -yangguiweihuo.com -yanghd.com -yanghong.art -yanghuaxing.com -yangji.com -yangjibao.com -yangjie.li -yangjigroup.com -yangjinyou.com -yangjisen.com -yangk6668.com -yangkeduo.com -yangki.net -yangkun.net -yanglaocn.com -yanglaofuwu365.com -yanglaotiandi.com -yanglee.com -yangli.com -yangliping.com -yangliq.com -yanglong.pro -yangluojob.com -yangmao.info -yangmi.net -yangmingauction.com -yangner.com -yangnongchem.com -yangoo-global.com -yangpanzg.com -yangqi.show -yangqianguan.com -yangqimanhua.com -yangqq.com -yangqu.com -yangsam.com -yangsensheng.com -yangshengliang.com -yangshengtang123.com -yangshengtv.com -yangshijz.com -yangshuolvyou.com -yangsihan.com -yangstandards.com -yangtai.com -yangtaiapp.com -yangtao.site -yangtaolujiu.com -yangtengfei.com -yangtianb.com -yangtong.com -yangtse-automobile.com -yangtse.com -yangwajia.com -yangwang.pw -yangwangauto.com -yangwc.com -yangwenlong.org -yangwenqing.com -yangxi.tech -yangxiang.com -yangxiangdb.com -yangxingzhen.com -yangxinren.com -yangyangad.com -yangyangla.com -yangyanxing.com -yangyi.vip -yangyi02.com -yangyi08.com -yangyi09.com -yangyi13.com -yangyi19.com -yangyingming.com -yangyivacuum.com -yangyk.com -yangyongquan.com -yangyq.net -yangzhe1991.org -yangzhengfang.com -yangzhi777.com -yangzhihb.com -yangzhiriji.com -yangzhix.com -yangzhongchao.com -yangzhoutuozhan.com -yangzhouyiyuan.com -yangzhu360.com -yangziclean.com -yangzijiang.com -yangziwater.com -yangzw.vip -yanhaijing.com -yanheyey.com -yanhuamedia.net -yanhuoidc.com -yaniu.net -yanjianshengwu.com -yanjiao.com -yanjiaoapp.com -yanjiaoweixin.com -yanjinews.com -yanjingge.com -yanjiubaogao.com -yanjiuchubanshe.com -yanjob.com -yanjun7858.com -yankay.com -yanke360.com -yankon.com -yankong.com -yanliang.com -yanliu.org -yanlong.shop -yanmaiyingyu.com -yannaisi.com -yannv.com -yanoda.com -yanpengjk.com -yanpk.com -yanqiao.com -yanqingshan.com -yanqueai.com -yanrongyun.com -yanshanmuyuan.com -yanshanpump.com -yanshaoutlets.com -yanshihua.com -yanshimei.com -yanshishuo.com -yanshuoshi.com -yansx.com -yanta.cc -yantai-chuanpiao.com -yantaibank.net -yantaihr.com -yantaijintai.com -yantailuoshuan.com -yantaiport.com -yantaitech.com -yantan.cc -yantangmilk.com -yantao.wiki -yantaparking.com -yantaqu.com -yantian-port.com -yantu360.net -yantubao.com -yantubbs.com -yantuchina.com -yantudq.com -yanue.net -yanweihappybirthday.com -yanwugroup.com -yanxian.org -yanxianggroup.com -yanxintong.com -yanxishe.com -yanxiu.com -yanxizhu.com -yanxurui.cc -yanyapeng.com -yanyib2b.com -yanyidakaoyan.com -yanyijingling.com -yanyin.tech -yanyiquan.com -yanyiwu.com -yanyizc.com -yanyue.net -yanyunmail.com -yanzhaorc.com -yanzhaowang.com -yanzhihuisc.com -yanzhiwu.com -yanzhoulugang.com -yao.com -yao123.com -yao51.com -yaobo.net -yaoburang.com -yaocai.com -yaocaicang.com -yaocaizhongzi.com -yaocdn.com -yaochengwang.com -yaochentech.com -yaochixie.com -yaochufa.com -yaocsoft.com -yaodou.net -yaodu365.com -yaoex.com -yaofangwang.com -yaofangwang.net -yaofei365.com -yaoge123.com -yaoguo.com -yaohaixiao.com -yaohuaglass.net -yaohuascape.com -yaohuiji.com -yaohuo.me -yaohuo168.com -yaoji.center -yaojibuyu.com -yaojidsfee.com -yaojiedianzi.com -yaojigames.com -yaojiuqq.com -yaokaihui.com -yaokantv.com -yaokeke.com -yaoky.com -yaolaifen.com -yaolan.com -yaolandairy.com -yaoliangmi.com -yaoliwang.com -yaolue.com -yaolutong.com -yaoluu.com -yaomai666.com -yaomaiche.com -yaoman.net -yaomv.com -yaonano.com -yaooxx.space -yaopaiming.com -yaopharma.com -yaopinlenglian.com -yaopinnet.com -yaoq.net -yaoqing.com -yaoqun.net -yaosai.com -yaoshagroup.com -yaoshanly.com -yaoshimiaolianhua.com -yaotia.com -yaotiannano.com -yaotongjn.com -yaotou.com -yaoudq.com -yaoujc.com -yaowan.com -yaoxiaoyi.com -yaoxuebang.com -yaoxun.net -yaoyaola.net -yaoyedan.net -yaoying.vip -yaoyouke.com -yaozh.com -yaozhigong.com -yaozhizhu.com -yaozs.com -yaozui.com -yapp.com -yaqilian.com -yaqjyj.com -yaristyle.com -yarncm.com -yarward.com -yasee-zs.com -yashili.com -yashowmarket.com -yasishuo.com -yasiyasi.com -yasking.org -yasn.com -yasudachem.com -yasuotu.com -yasyy.com -yatai.com -yataidianli.com -yataifr.com -yataiinsur.com -yatailx.com -yataimall.com -yataioa.com -yataohome.com -yatebizhi.com -yaterv.com -yatiku.com -yatiwang.com -yato-sh.com -yatsenglobal.com -yatsoft.com -yatyjx.com -yaucn.com -yauuy.com -yawancaiwu.com -yawbbs.com -yawei.cc -yaweijituan.com -yawen8.com -yawy.cc -yaxi.net -yaxiaodong.com -yaxige.com -yaxin888.com -yaxinde.com -yaxinghbkj.com -yaxuntuhang.com -yaya.love -yayaad.com -yayagushi.com -yayawan.com -yayeschool.com -yayihouse.com -yayiskq.com -yayitianyun.com -yayiyun.net -yayjrj.com -yayouapp.com -yaypool.com -yayu.net -yayunjiqi.com -yazhihg.com -yazhougoufang.com -yazuo.com -yazx.net -yb-able.com -yb1518.com -yb1867.com -yb3.cc -yb983.com -yb999.com -yba120.com -ybaby.com -ybaobx.com -ybaomall.com -ybbwy.com -ybbxkj.com -ybc1024.com -ybc35.com -ybccb.com -ybccode.com -ybcheck.com -ybcjmarathon.com -ybcnjg.com -ybcxjd.com -ybcxz.com -ybdbz.com -ybdlogistic.com -ybe.net -ybgkz.com -ybgz.com -ybhdmob.com -ybi.net -ybirds.com -ybj.com -ybjjsgc.com -ybjsk.com -ybk001.com -ybk168.com -ybk6.com -yblc.com -yblcs.com -yblry.com -ybm100.com -ybmedicine.com -ybmilkgoat.com -ybqysw.com -ybrc128.com -ybren.com -ybs120.com -ybscjp.com -ybscpqtlxx.com -ybsftd.com -ybstjs.com -ybstwl.com -ybt168.com -ybtianshantu.com -ybtvyun.com -ybty.com -ybvip.com -ybvips.com -ybvv.com -ybw315.com -ybword.com -ybxww.com -yby1953.com -ybyiot.com -ybynet.com -ybypark.com -ybzhao.com -ybznzz.com -ybzzgh.org -yc-exp.com -yc-gc.com -yc-petronas.com -yc-yinhe.com -yc-zj.com -yc0917.com -yc123.com -yc123.net -yc12313.com -yc222.com -yc2e.com -yc370.com -yc8.com -yc9y.com -ycait.com -ycamlyy.com -ycandyz.com -ycangels.com -ycaqr.com -ycb.com -ycbiz.net -ycbright.com -ycbroker.com -ycbus.com -ycc.ink -yccdl.net -yccn.cc -ycd-hk.com -ycdext.net -ycdfby.com -ycdfwater.com -ycdongxu.com -ycdrh.com -ycdryy.com -ycduile.com -ycdz.shop -ycdzcc.com -yceshop.com -ycfang.net -ycfanglei.com -ycfbapp.com -ycfggc.com -ycfog.com -ycfybj.com -ycfybjy.com -ycgame.com -ycgj.cc -ycgjxx.com -ycgslb.com -ycgwl.com -ycgzgame.com -ychanfang.com -ychcqmu.com -ychdzxsh.com -ychr.com -ychromedgeie.com -ychszh.com -ychxie.com -ychxiex.com -ycig.com -ycigilink.com -yciou.com -ycis-bj.com -ycis-cq.com -ycis-schools.com -ycis-sh.com -yciyun.com -ycjhjsbyy.com -ycjingweiranqi.com -ycjinze.com -ycjklrq.com -ycjljt.com -ycjob.com -ycjsxy.com -ycjt2007.com -ycjy-service.com -ycjyjt.com -ycjzzsw.com -yckceo.com -yckceo.vip -yckjzsq.com -yckkdd.com -ycku.com -ycleaning.com -yclh6.com -ycloud.online -ycloudlb.com -ycloudvip.com -yclyq.com -ycmae.com -ycmlaw.com -ycmm.com -ycnaxin.com -ycnevpds.com -ycny.com -ycoa0898.com -ycool.com -ycpack.net -ycpai.com -ycpec.com -ycphkj.com -ycpinke.com -ycpsy.com -ycqin.com -ycqq.com -ycrcrs.com -ycrcw.net -ycrh.com -ycrkb.com -ycrusher.com -ycrx360.com -ycrysw.com -ycs120.com -ycscszh.com -ycsd.work -ycsdryy.com -ycsdyyy.com -ycshengquan.com -ycsjtjt.com -ycsound.com -ycsrc.com -ycsthqrmyy.com -ycsystem.com -ycsyy.com -yct-tec.com -yctdyy.com -yctxrj.com -ycty.org -yculblog.com -ycwalker.com -ycwb.com -ycwljt.com -ycxba.com -ycxdryy.com -ycxicmall.com -ycxinxi.com -ycxm.com -ycxskw.com -ycxy.com -ycxydrkj.com -ycxzlsyxgs.com -ycyaw.com -ycyck.com -ycycut.com -ycyhzx.com -ycyjkj.com -ycym.com -ycypin.com -ycyui.com -ycyunyu.com -ycyunyuk.com -ycyz.com -ycyzwb.net -yczbw.com -yczfwy.com -yczihua.com -yczjkfyy.com -yczk.org -yczpw.com -yczxyy.com -yczy5.com -yd-data.com -yd-jxt.com -yd-power.com -yd-tec.com -yd166.com -yd43s2q51b.com -ydadmob.com -ydalison.com -ydamc.com -ydayc.com -ydbimg.com -ydbmed.com -ydbox.com -ydc360.com -ydcb.com -ydce.com -ydcloud.cc -yddtiyu.com -yddxkj.com -ydfeathers.com -ydfgq.com -ydguolan.com -ydh.fun -ydhex.com -ydhexpress.com -ydhjj.com -ydhl.cc -ydhn.com -ydht.com -ydhyfs.com -ydihi.com -ydimmi.com -ydjdcjc.com -ydjt1166.com -ydjwy.net -ydjy.net -ydkj2019.com -ydl-sh.com -ydl.com -ydlcdn.com -ydlut.com -ydmel.com -ydmeng.com -ydn5.com -ydnanke.com -ydnewmedia.com -ydniu.com -ydr.me -ydsaso.com -ydscan.net -ydsjjs.com -ydsjpt.com -ydsrmyy.com -ydstatic.com -ydsyyy.com -ydt-express.com -ydt.link -ydtad.com -ydtbl.com -ydtnotary.com -ydtqd.com -yduav.com -ydvip00aa.com -ydvip00ab.com -ydvip00ac.com -ydvip00ad.com -ydvip00ae.com -ydvip00af.com -ydvip00ag.com -ydvip00ah.com -ydvip00ai.com -ydvip00aj.com -ydvip00ak.com -ydvip00al.com -ydvip00am.com -ydvip00an.com -ydvip00ao.com -ydvip00ap.com -ydvip00aq.com -ydvip00ar.com -ydvip00as.com -ydvip00at.com -ydwatch.com -ydx2.com -ydxrf.com -ydxxt.com -ydyb.com -ydyeducation.com -ydyj.net -ydylcn.com -ydyljk.com -ydylmtytv.com -ydyspc.com -ydywh.shop -ydyy120.com -ydzxyjhyy.com -ydzz.com -ye1992.com -ye3.com -ye40.com -yead.net -yeah.net -yeahka.com -yeahnic.net -yeahteen.com -yeahworld.com -yeai.com -yealink.com -yealinkvc.com -yeaosound.com -yeapcloud.net -yearlygreen.com -yearnfar.com -yeastar.com -yeasturias.com -yebaike.com -yebangyu.org -yebaojiasu.com -yeboyzq.com -yebrewing.com -yecao.net -yecaoyun.com -yecdn.com -yechangktv.com -yechengmuye.com -yedanguan365.com -yedapi.com -yedarc.com -yedejia.com -yedingding.com -yedone.com -yeduxiaoshuo.com -yee5.com -yee800.com -yeeanbao.com -yeeaoo.com -yeeauto.com -yeecai.com -yeecall.com -yeecin.com -yeecloud.com -yeedian365.com -yeefeitrip.com -yeefire.com -yeefung.com -yeefx.net -yeekang.com -yeekit.com -yeelight.com -yeelink.net -yeelogo.com -yeemei.com -yeemen.com -yeemiao.com -yeemiao.net -yeepay.com -yeepaycdn.com -yeepbank.com -yeepiao.com -yeesha.com -yeetan.com -yeeuu.com -yeewo.net -yeeyan.com -yeeyan.org -yeezon.com -yefengs.com -yegame.com -yegaochemical.com -yegenyou.com -yegoo.com -yegrand.com -yegu168.com -yeguohd.com -yehoochina.com -yehuisteel.com -yeidc.com -yeitu.com -yejiangye.com -yejibang.com -yejienet.com -yejuu.com -yekyc.com -yelanxiaoyu.com -yelinmall.com -yelishi.net -yelixiali.com -yellowriver.org -yelook.com -yelot.com -yemacaijing.com -yemadai.com -yemaili.com -yemajun.com -yemancomic.com -yemaosheji.com -yemaosoft.com -yemayun.com -yemeihuoguo.com -yemeisy.com -yemengstar.com -yemet.com -yemhj.com -yenlex.com -yenmon.com -yentechnology.com -yeoebyevhq.com -yeolar.com -yeoner.com -yephy.com -yeren86.com -yergoo.com -yes-chinese.com -yes-lcd.com -yes58.net -yes88.com -yesacc.com -yesapi.net -yesbt.cc -yesbx.com -yeschool.net -yescontrols.com -yesdotnet.com -yesense.com -yeshen.com -yeshengarts.com -yeshine.net -yeshitv.com -yeshj.com -yeshu.cloud -yeshu.com -yesidos.com -yesilicon.com -yeskn.com -yesky.com -yeslicake.com -yesmyimg.com -yesmywine.com -yesonfashion.com -yesou.com -yesoulchina.com -yespearl.com -yespik.com -yespmp.com -yestar.com -yestar1992.com -yestarcorp.com -yestargz.com -yestarm.com -yestarvip.com -yestehotel.com -yeston.net -yestone.com -yesudoo.com -yesungroup.com -yesuse.net -yeswan.com -yeswood.com -yesxun.com -yetaidrink.com -yetianlian.cc -yetianlian.info -yetianzi.com -yettos.com -yetu.net -yevvte.com -yewanba.com -yewen.us -yewuyuan.com -yexinggroup.com -yeyday.com -yeyezhenxuan.com -yeyimg.com -yeyingkf.com -yeyo.cc -yeyou.com -yeyoucdn.com -yeyoujia.com -yeyousg.com -yeyulingfeng.com -yeyun.com -yezaifei.com -yezhuwq.com -yezhuwuyou.com -yezi66.xyz -yeziapp.com -yezipi.net -yeziting.com -yezixigame.com -yezixueyuan.com -yezizhu.com -yezizx.com -yf-ec.com -yf-zs.com -yf0008168.com -yf520.com -yf77.com -yfanqie.com -yfbudong.com -yfbzb.com -yfcache.com -yfcalc.com -yfcdn.net -yfchuhai.com -yfcity.net -yfcloud.com -yfcloud.io -yfcloud.work -yfd.xyz -yfdc.net -yfdns.net -yfds168.com -yfdts.net -yfdurl.com -yfdurl0.com -yfdurl1.com -yfdurl10.com -yfdurl11.com -yfdurl12.com -yfdurl13.com -yfdurl14.com -yfdurl15.com -yfdurl16.com -yfdurl17.com -yfdurl18.com -yfdurl19.com -yfdurl2.com -yfdurl20.com -yfdurl3.com -yfdurl4.com -yfdurl5.com -yfdurl6.com -yfdurl7.com -yfdurl8.com -yfdurl9.com -yfdxs.com -yfdyf.com -yffood.com -yffy120.com -yffzkl.com -yfgg.com -yfgj68.com -yfhex.com -yfhhf.com -yfhl.net -yfhospital.com -yfhxtech.com -yfinds.com -yfiot.com -yfisher.com -yfjiakao.com -yfjnjc.com -yfklxz.com -yfldocker.com -yflive.net -yfm99.com -yfmac.com -yfmhgf.com -yfmhw.com -yfp2p.net -yfpayment.com -yfsafety.com -yfsail.net -yfscdn.com -yfscdn.net -yfservice.com -yfsteel.com -yfswjt.com -yfswny.com -yftxt.com -yfty88.com -yfvb.com -yfway.com -yfwnm.com -yfworld.com -yfwpt.vip -yfwqlij.xyz -yfycrc.com -yfycyboil.com -yfygxyy.com -yfyky.com -yfysjt.com -yg-pump.com -yg-st.com -yg1997.com -yg84.com -yg8898.com -ygbid.com -ygbx.com -ygc711iq.com -ygcgfw.com -ygcloud.com -ygcooler.com -ygct.com -ygdatabase.com -ygdl.com -ygdy8.net -yge.me -ygeer.com -ygei.com -yget.me -ygfengshui.com -ygfmlt.com -yggk.net -yghsh.com -ygibao.com -yginsight.com -ygjctech.com -ygjj.com -ygjoy.com -ygmsy.com -ygread.com -ygrtt.com -ygsdmedia.com -ygsf.com -ygsoft.com -ygtape.com -ygtcpa.com -ygtf.net -ygtiyu.com -ygtl.com -ygtq.net -ygvyp.com -ygwenxue.com -ygwh.cc -ygwood.com -ygx8888.com -ygxy.com -ygym.org -ygzt.net -yh-group.com -yh2000.com -yh31.com -yh5291.com -yh596.com -yh598.com -yh99.cc -yh999999.com -yhaabva.com -yhachina.com -yhadmob.com -yham.net -yhc-card.com -yhcangchu.com -yhchj.com -yhchn.com -yhcjcw.com -yhcko.com -yhcmovie.com -yhcplatform.com -yhcqw.com -yhd.com -yhdd365.shop -yhdfa.com -yhdi.net -yhdlcs.com -yhdm5.com -yhdns.net -yhedu.com -yhees.com -yhgfb-cn-static.com -yhggroup.com -yhgmjf.com -yhgzjt.com -yhhh8888.com -yhhjcc.com -yhhotel.com -yhhsyl.com -yhidc.com -yhindustrial.com -yhj9.com -yhjbox.com -yhjcollege.com -yhjj.com -yhjx2018.com -yhkbchao.com -yhkingdee.com -yhkz.com -yhlbx.com -yhly.shop -yhm11.com -yhmob.com -yhmsfc.com -yhmyi.com -yhpackaging.net -yhppk.com -yhqapp.com -yhqdashi.com -yhqh.net -yhqrmyy.com -yhquan365.com -yhqurl.com -yhrcb.com -yhrjk.com -yhrsks.com -yhs518.com -yhsc.com -yhshapp.com -yhsms.com -yhsp.net -yhsport.com -yhstjt.com -yhtclb.com -yhthing.com -yhtools.cc -yhtx.tv -yhtzx.net -yhurl.com -yhwch.com -yhwins.com -yhwjlp.plus -yhwomen.com -yhx3318.com -yhxincai.com -yhxs3344.net -yhxuexiao.com -yhydl.com -yhyhwy.com -yhylc71.com -yhyyjk.com -yhz2000.com -yhz365.com -yhz66.com -yhzky.net -yhzky1.net -yhzm.com -yhzrt.com -yhzuche.com -yi-fengshui.com -yi-hall.com -yi-i.com -yi-jy.com -yi-oa.com -yi-programmer.com -yi-sky.com -yi-you.org -yi-zhifu.com -yi-zhou.com -yi020.com -yi0600.com -yi114.com -yi2.net -yi6.com -yi7.com -yi958.com -yiai.me -yiaini.com -yianjiulao.com -yiapp.com -yibaijin.com -yibaixun.com -yiban.io -yiban1314.com -yibaogao.com -yibaojiankang.com -yibaotech.com -yibei.com -yibeiic.com -yibeiwangluo.com -yibenmanhua.com -yibentushu.com -yibiao-sh.com -yibite.com -yiboard.com -yiboliu.com -yiboow.com -yiboshi.com -yibotec.com -yiboyangguang.com -yicai.com -yicaiai.com -yicaiexpo.com -yicaiglobal.com -yicaihua.com -yicamp.com -yicang.com -yicanggongyi.com -yicbo.com -yice11.com -yicha-yc.com -yichadan.com -yichafen.com -yichangly.com -yichangmarathon.com -yiche.com -yichemall.com -yichen88.com -yichengfood.net -yichengji.com -yichengnews.com -yichengwangluo.net -yicheshi.com -yichezhi.com -yichi.tech -yichip.com -yichuan.net -yichuanlvshi.com -yichuntv.com -yichuyifan.com -yickd.com -yiclear.com -yicode.tech -yicoe.com -yicongfound.org -yiconmed.com -yicuba.com -yicungn.com -yicx.com -yida6666.com -yidaba.com -yidachem.com -yidachina.com -yidadrillcollar.com -yidagas.com -yidahospital.com -yidai.com -yidaidai.com -yidaointernational.com -yidaomall.com -yidaomobi.com -yidaplay.com -yide.com -yideamobile.com -yidejia.com -yidengxuetang.com -yidian-inc.com -yidian360.com -yidian51.com -yidiancangwei.com -yidianchina.com -yidianda.com -yidianedu.com -yidianfenqi.com -yidianhulian.com -yidianliangdiansandiansidianwudianliudianqidianbadianjiudianshi.com -yidianling.com -yidianliulan.com -yidiansz.com -yidianting.xin -yidianyuan-wawa.com -yidianzx.com -yiding-gr.com -yidingbao.shop -yidingding3.com -yidmall.com -yidns.net -yidong-food.com -yidonghua.com -yidongtimes.com -yidontek.com -yidoutang.com -yidouzhaofang.com -yidu-marathon.com -yidubbs.com -yiduchuan.com -yidui.me -yiduir.com -yidulive.com -yidumen.com -yidun.com -yiduoli.com -yiduoxinya.com -yiduqiang.com -yiduwater.com -yiec.com -yiernews.com -yiexi.com -yifajingren.com -yifake.com -yifan211.com -yifancdn.com -yifancn.com -yifanggl.com -yifanghy.com -yifanmedia.net -yifanshangplus.com -yifanyy.com -yifatong.com -yifei.com -yifei.space -yifeigufen.com -yifeimeiye.com -yifeishu.com -yifeng-filter.com -yifeng-mover.com -yifeng.com -yifenghudong.com -yifengke.com -yifengliangyou.com -yifengx.com -yifengxin.org -yifont.com -yifu.net -yifubao.com -yifucj.com -yifum.com -yifum.hk -yifum.net -yifutu.com -yigaosu.com -yige.org -yigeban.com -yigecun.com -yigerlife.com -yigomob.com -yigongdcs.com -yigonghl.com -yigood.net -yigoonet.com -yigouu.com -yiguanba.com -yiguanghuagong.com -yiguo.com -yiguoimg.com -yihafo.com -yihaikerry.net -yihaiquanyi.com -yihaishijia.com -yihang.info -yihao.com -yihao01.com -yihaocar.com -yihaodian.com -yihaodianimg.com -yihaoduozhongduan.com -yihaohuoche.com -yihaojiaju.com -yihaomall.com -yihaomen.com -yihaoranjd.com -yihaoyunche.com -yihchina.com -yiheda.com -yihedoors.com -yihegroup.com -yihekf.com -yihengyt.com -yiherubber.com -yihong001.com -yihong1718.com -yihtc.com -yihu.com -yihu365.com -yihuacomputer.com -yihuajiaoyu.com -yihuan.org -yihuanjt.com -yihubaijia.com -yihubg.com -yihuichuang.com -yihuikeji.vip -yihuimg.com -yihuiyun.net -yihun.com -yihuohao.com -yiibai.com -yiichina.com -yiigle.com -yiihuu.com -yiii.net -yiinet.net -yiiwo.com -yijia-ai.com -yijia.com -yijia.ink -yijia5.com -yijiakao.com -yijian-app.com -yijian119.com -yijiande.com -yijiangbao.com -yijianjiexi.com -yijianlogo.com -yijianzj.com -yijiaqin.com -yijiaren3413.com -yijiawang.com -yijiebuyi.com -yijiedai.com -yijimaoyi.com -yijinghong.com -yijingji.com -yijingxiehui.net -yijintong.net -yijirecovery.com -yijiupi.com -yijiuplus.com -yijuedesign.com -yijueweb.com -yijun77.com -yikag.com -yikai.com -yikaiye.com -yikaiye.net -yikang1977.com -yikangdongf.com -yikanxs.com -yikaoapp.com -yikaochacha.com -yikaow.com -yikebus.com -yikedou.com -yikedy.cc -yikeou.com -yiketalks.com -yiketianqi.com -yikeweiqi.com -yikexue.com -yikezhengxing.com -yikouhy.com -yikuaide.com -yikuaipin.com -yikuaiqu.com -yikuaixiu.com -yikuns.com -yikuyi.com -yilandezhong.com -yilantop.com -yilanvaas.com -yile8.com -yilewan.com -yileweb.com -yileyiqi.com -yileyoo.com -yileyunssp.com -yili.com -yilianapp.com -yilianmeiti.com -yilianyixue.com -yiliaosheji.com -yilibabyclub.com -yilicar.com -yiliganggou.com -yilihuo.com -yiliit.com -yilijet.com -yilikim.com -yilingarden.com -yilingshop.com -yilingsj.com -yilinweb.com -yiliqqstar.com -yilishiji.com -yiliwater.com -yiliysr.com -yillionbank.com -yilong.com -yilongnews.com -yilongweiguo.com -yilu365.com -yilule.com -yiluzouhao.com -yilvcheng.com -yima.world -yima88.com -yimaitongdao.com -yimakk.com -yimao.net -yimaoip.com -yimapay.com -yimashijie.com -yimeichu.com -yimeihui360.com -yimeima.com -yimeiya.com -yimenapp.com -yimenapp.net -yimeng.com -yimenonline.com -yimenseo.net -yimenssl.com -yimian.xyz -yimianmian.com -yimiaotui.com -yimiaoxia.com -yimidida.com -yimifund.com -yimihaodi.com -yimin.biz -yimin168.com -yimingcul.com -yimingkeji.net -yimingroup.com -yimingzhi.net -yimininfo.com -yiminjiayuan.com -yiminw.com -yiminyy.com -yimisoft.com -yimitongxue.com -yimiyisu.com -yimuapp.com -yimudoor.com -yimutian.com -yimuymc.com -yinbaitu.com -yinban.com -yinbangbroker.com -yinbaor.com -yinbian.cc -yinbin.ink -yincat.com -yinchar.com -yinchenglawyer.com -yinchengli.com -yinchengpai.com -yinchuanwater.com -yinchuanzxd.com -yindon.com -yindu.com -yinduchina.com -yindudigital.com -yindui.net -yindunjituan.com -yinduzx.com -yineitong.com -yinengjituan.net -yinengkt.com -yinengwl.com -yinerda.com -yinfeiy.com -yinfenggr.com -ying-sw.com -ying-ting.com -yingbei365.com -yingbio.com -yingcai.cc -yingcaicheng.com -yingcankeji.com -yingchaozhibo.com -yingcheng.net -yingchengnet.com -yingchuang.com -yingchulawyer.com -yingci86.com -yingdao.com -yingde.com -yingdev.com -yinge.cc -yinge.tech -yingeda.com -yingeye.com -yingfangkeji.com -yingfeiyun.com -yingfeng.me -yingfs.com -yinggou.com -yingguangroup.com -yingguantx.com -yinghai.work -yinghaicar.com -yinghanhuyi.com -yinghecloud.com -yingheedu.com -yingheying.com -yinghezhong.com -yinghuaonline.com -yinghuasuan.com -yinghuiiot.com -yinghuochong.com -yinghuochong.fun -yinghuochongjz.com -yinghuodd.com -yingjia360.com -yingjianzhijia.com -yingjiesheng.com -yingjiesheng.net -yingjiesheng.org -yingjimall.com -yingjinhk.com -yingkefuli.com -yingkelawyer.com -yingkounews.com -yinglanglive.com -yingle.com -yingleku.com -yinglib.com -yingligroup.com -yinglisolar.com -yingliugroup.com -yinglunka.com -yingmei.me -yingmi.com -yingming.net -yingnor.com -yingpaigame.com -yingpaikeji.com -yingpengbz.com -yingpost.com -yingriliuti.com -yingrongit.com -yingshe.com -yingsheng.com -yingshi-ai.com -yingshiyou.com -yingso.fun -yingsoft.com -yingsoo.com -yingsun.net -yingsx.com -yingt.asia -yingt.fun -yingtai.com -yingtaigroup.com -yingtaorelian.com -yingtaosiyue.com -yingtaoyun.com -yingteach.com -yingtexin.net -yingtianit.com -yingtianlight.com -yingtianwang.com -yingtongshe.com -yinguobing.com -yingworks.com -yingwuyuzd.cc -yingxi.tv -yingxiahome.com -yingxiaofangan.com -yingxiaoli.com -yingxichina.com -yingxiong.com -yingxiongji.com -yingxun56.com -yingyang630.com -yingyankantu.com -yingyecraft.com -yingyijin.com -yingyinglicai.com -yingyonghao8.com -yingyonghui.com -yingyongmiao.com -yingyongshichang.com -yingyongso.com -yingyu.com -yingyuchat.com -yingyudengji.com -yingyuehe.com -yingyushijie.com -yingyuxiaoshuo.com -yingzaocms.com -yingzhongshare.com -yingzi01.com -yingzi02.com -yingzicms.com -yingzt.com -yinhai.com -yinhang123.net -yinhangchaxun.com -yinhanghanghao.com -yinhangkadata.com -yinhangkahao.com -yinhangkaoshi.net -yinhangzhaopin.com -yinhe.com -yinhe.net -yinhecn.com -yinheyuedu.com -yinhu.com -yinhuadm.one -yinhuafu.com -yinhuakm.com -yinhuatangyiyao.com -yinhuchem.com -yinhulaser.com -yini.org -yinisun.com -yinjia.com -yinjiabio.com -yinjispace.com -yinka.co -yinlimedia.com -yinlingshuyuan.com -yinlvaa.com -yinmakeji.com -yinmaojx.com -yinmishu.com -yinning.vip -yinongtao.com -yinpiao.com -yinqiao.com -yinqiaogroup.com -yinrcw.com -yinsafe.com -yinsfinance.com -yinsha.com -yinshenxia.com -yinshua.cc -yinshuiyu.com -yinsuwl.com -yintai.com -yintechi.com -yintime.com -yinuo1000.com -yinuobeidiao.com -yinuochina.com -yinuoedu.net -yinuotech.com -yinxiang.com -yinxiangart.com -yinxianggame.com -yinxiangmall.com -yinxiangqingyang.com -yinxiangwuye.com -yinxiao.com -yinxiaobao.net -yinxinbh.com -yinxinchina.com -yinxing.com -yinxunbiao.com -yinyangresin.com -yinyangshi.com -yinyao168.com -yinyue7.com -yinyuegf.com -yinyueke.net -yinyuemeitu.com -yinyuetai.com -yinyueyouxi.com -yinyuezhizuoren.com -yinzhaowang.com -yinzhijie.com -yinzhupharma.com -yinziyan.com -yinzuo100.com -yioho.com -yioulai.com -yiovo.com -yipai.info -yipai360.com -yipaiming.com -yipaogan.com -yiparts.com -yipemail.com -yipeng888.com -yipiaoyun.com -yipigu.com -yipihuo.com -yipingmed.com -yipingmi.vip -yipingsj.com -yipinhr.com -yipinpai.com -yipinsmart.com -yipintemian.com -yipinyiwu.com -yipsink.com -yipujiance.com -yipuping.com -yiputouzi.com -yipuwuyou.com -yiq.com -yiqi.com -yiqi35.com -yiqi4.com -yiqianbao.com -yiqianbao.net -yiqianlian.com -yiqiao88.com -yiqiaochina.com -yiqibazi.com -yiqibing.com -yiqibuduoduo.com -yiqicai.com -yiqicesuan.com -yiqichuangxiang.com -yiqicms.com -yiqifa.org -yiqifei.com -yiqifengtian.com -yiqig.com -yiqihi.com -yiqihuihui.com -yiqijian.com -yiqijixiang.com -yiqikan8.com -yiqike.com -yiqiming88.com -yiqimob.com -yiqingyuan.com -yiqinzi.com -yiqioffice.com -yiqipaipingtai.com -yiqishai.com -yiqishanyuan.com -yiqiso.com -yiqisooimg.com -yiqistore.com -yiqitp.com -yiqituodan.com -yiqiuu.com -yiqiwang.net -yiqixiaofei.com -yiqixie.com -yiqixiegushi.com -yiqiyoo.com -yiqiyou.com -yiquan-keji.com -yiquhai.com -yiqujing.com -yiquxapp.com -yirankejiao.com -yiranmeifushi.com -yiren001.com -yirendai.com -yirentong.com -yirenwuye.com -yirenzhushou.com -yirenzuji.com -yirgalab.com -yirlir.com -yirong.com -yiruan.info -yiruan.la -yiruantong.com -yiruide.com -yiruikecorp.com -yiruituo.com -yirujs.com -yiruniot.com -yiryi.com -yisa.com -yisanban.com -yisanwu.com -yisbei.com -yisell.com -yishalai.com -yishan168.com -yishang.cc -yishangwang.com -yishangye.com -yishengfanyi.com -yishengjiaoyu.com -yishidian.com -yishihui.com -yishihui.net -yishion.com -yishion.net -yishiongd.com -yishixue.com -yishouapp.com -yishs.com -yishu168.com -yishujia.net -yishujie.com -yishuliuxue.com -yishun.fun -yishutang.com -yishuyuanxiao.com -yishuzhifa.com -yishuzi.com -yishuzi.org -yishuziti.com -yisier.com -yisimeimaoyi.xyz -yiso.fun -yisocms.com -yisou.com -yisouti.com -yisouyifa.com -yissimg.com -yisu.com -yisuan.net -yisuddoscdn.com -yisuoyi.com -yit.com -yitai17.com -yitaifang.com -yitaigroup.com -yitaihdbf.com -yitanyun.com -yitao.com -yitaopu.com -yitb.com -yitcollege.com -yitechnology.com -yiteholdings.com -yitel.com -yitelish.com -yitesoft.com -yitiangroup.com -yitianshidai.com -yitianxinda.com -yitiaoyule.com -yiticm.com -yitijizhi.com -yitisports.com -yitoa.com -yitong-group.com -yitongguan.com -yitongmedia.com -yitongsolar.com -yitonyiqi.com -yitsoftware.com -yitutech.com -yituyu.com -yiubd.com -yiupin.com -yiuxiu.com -yivian.com -yivicar.com -yivizd.com -yiwaiart.com -yiwan.com -yiwangdujin.com -yiwanggo.net -yiwangtui.com -yiwanlian.net -yiwanzhushou.com -yiwealth.com -yiweb.com -yiweiads.com -yiweishi.com -yiwenyida.com -yiwenyizhi.com -yiwise.com -yiworld.com -yiwu56.com -yiwubuy.com -yiwufair.com -yiwugo.com -yiwugou.com -yiwuguan.com -yiwuku.com -yiwulianhe.com -yiwumls.com -yiwupay.com -yiwutalk.com -yiwuzhongxiyi.com -yiwz.net -yixao.com -yixao.net -yixc.com -yixi.tv -yixia.com -yixiaai.com -yixianfabu.com -yixiangzuji.com -yixiansheng.com -yixiaobang.net -yixiaoyuan.com -yixiaozu.com -yixiatong.com -yixiekeji.com -yixin-valve.com -yixin.com -yixin.im -yixin5.com -yixincao.com -yixincapital.com -yixinfinance.com -yixinfund.com -yixingart.com -yixingauto.com -yixingguanchang.com -yixinli.xin -yixintui.com -yixinu.com -yixiu.cloud -yixiubx.com -yixiuxueyuan.com -yixuan.net -yixue.com -yixue68.com -yixue99.com -yixuegr.com -yixueks.com -yixuelunwen.com -yixuexianzhi.com -yixuezp.com -yixun.com -yixunjidian.com -yixunwu.com -yiya520.com -yiyacht.com -yiyaha.com -yiyanche.com -yiyang168.com -yiyang668.com -yiyangadx.com -yiyangidc.com -yiyangzhuangyuan.com -yiyao.tv -yiyaodxt.com -yiyaohang.com -yiyaojd.com -yiyaojie.com -yiyaoqianyan.com -yiyayans.com -yiye-a.com -yiye-h.com -yiye-v.com -yiye.ai -yiyebang.com -yiyedu.com -yiyefei.com -yiyesheng.net -yiyiarts.net -yiyifoods.com -yiyimh.com -yiyisoft.com -yiyitech.com -yiyitesco.com -yiyiu.com -yiyiwawa.com -yiyongcad.com -yiyouliao.com -yiyouliuxue.com -yiyouqi.com -yiyoushu.net -yiyu.com -yiyuan.com -yiyuanjichang.com -yiyuanluye.com -yiyuanqiang.net -yiyuansoft.com -yiyuanyi.org -yiyuanzhaopin.com -yiyukj.com -yiyum.com -yiyun518.com -yiyupack.com -yiyusemi.com -yiz.vip -yizanmeiye.com -yizenb.com -yizeseafood.com -yizhanapp.com -yizhang8.com -yizhanhulian.com -yizhanzx.com -yizhaopin.com -yizhedian.com -yizhengwx.com -yizhibi.com -yizhibo.com -yizhidayu.com -yizhifubj.com -yizhijia.com -yizhikan.com -yizhiknow.com -yizhiqc.com -yizhiqingxie.com -yizhitou.com -yizhiwechat.com -yizhiweixin.com -yizhiws.com -yizhixiaogame.com -yizhoucb.com -yizhu-tech.com -yizhuan5.com -yizimg.com -yizlife.com -yizu.org -yizu.tv -yizumi-group.com -yizumi.com -yizuxing.com -yj-bank.com -yj-fun.com -yj.ink -yj028.com -yj36.com -yj518.com -yjai.art -yjbys.com -yjbzr.com -yjcard.com -yjcf360.com -yjcp.com -yjctrip.com -yjdatasos.com -yjdzm.com -yjfs8.com -yjfy.com -yjgf.com -yjgxcx.com -yjhbqx.com -yjhnt888.com -yjhospital.com -yjhyjl.com -yjhzb.com -yjihua.com -yjijy.com -yjiyun.com -yjjsjt.com -yjk.com -yjk.im -yjldp.com -yjlhq.com -yjlin4.com -yjlink.cc -yjliquan.com -yjllq.com -yjmuseum.com -yjopen.com -yjpal.com -yjpoo.com -yjq.cc -yjqegc.com -yjr123.com -yjrc.com -yjrc.net -yjrcyw.com -yjro.com -yjrxcw.com -yjs-cdn.com -yjs-cdn1.com -yjs-cdn10.com -yjs-cdn2.com -yjs-cdn3.com -yjs-cdn4.com -yjs-cdn5.com -yjs-cdn6.com -yjs-cdn7.com -yjs-cdn8.com -yjs-cdn9.com -yjscloud.com -yjsershi.com -yjsmodel.com -yjsops.com -yjsry.com -yjssishisi.com -yjsswjt.com -yjswsht.xyz -yjtiyu.com -yjtvw.com -yjtw.com -yjwlnet.com -yjwlo.com -yjwmidc.com -yjwujian.com -yjxbgjj.com -yjxfz.com -yjxlawyer.com -yjxsoft.com -yjydl.com -yjygjjt.com -yjygx.com -yjyxiyan.com -yjyz.com -yjz9.com -yjzb.app -yjzb.tv -yjzcalzcxm.com -yjzf.com -yk-bio.com -yk-fm.com -yk0579.com -yk56.com -yk72e.com -ykai.com -ykazgima.com -ykccn.com -ykccn.net -ykcer.com -ykclass.com -ykcuqlt.com -ykdgd.com -ykdmsy.com -ykedu.net -ykelai.com -ykfc.net -ykhongye.com -ykimg.com -ykinvestment.com -ykjljdcss.com -ykjtb.com -ykkpict.com -ykkpict.vip -ykmanhua.com -ykmxemho.com -ykneng.com -ykplg.com -ykptg.com -ykq.ink -ykqj.com -ykqnl.com -ykqx.com -ykrc.net -ykrcx.com -yksdks.com -yksjjt.com -yksuit.com -ykt.io -yktchina.com -yktworld.com -yktz.net -ykuee.link -ykugyph.com -ykw18.com -ykwater.com -ykwin.com -ykxwcm.com -ykyao.com -ykyi.net -ykzls.com -ykzq.com -ykzr.com -ykzyyy.com -yl-csj.com -yl-fc.com -yl-scm.com -yl.ag -yl.vip -yl0008168.com -yl01.com -yl1001.com -yl1988.com -yl2272.com -yl344.com -ylallinone.com -ylbeef.com -ylbloc.com -ylbycw.com -ylcapsule.com -ylchbyfz.com -ylcm.net -ylcncmy.com -ylcxsb.net -yldaye.com -yldayu.com -yldigitallife.com -yldmall.com -yldndl.com -yldrs.com -ylduyi.com -yldy.net -yldzhb.com -ylfd.net -ylfx.com -ylgaoshan.com -ylgjsty.com -ylgnyy.com -ylgs96332.com -ylgxgs.com -ylhags.com -ylhakc.com -ylhdgg.com -ylhdsl.com -ylhfjq.com -ylhh.net -ylhhny.com -ylhmgz.com -ylhongjin.com -ylhr.net -ylhrjxfw.com -ylhsrsrc.com -ylibi.com -ylijh.com -ylike.com -ylike.net -ylitc.net -yliyun.com -ylizu.com -yljcjt.com -yljdjx.com -yljr.com -yljtjt.com -ylkaite.com -ylkbf.com -ylkjgame.com -ylklyl.com -yllhzb.com -yllm666.xyz -yllt.icu -ylmaterial.com -ylmf.cc -ylmf.com -ylmf123.com -ylmf888.com -ylmfeng.com -ylmfwin100.com -ylmgkj.com -ylmm.com -ylnetworks.com -yloo.org -ylprinter.com -ylq.com -ylqk88.com -ylqyyr.com -ylr114.com -ylrb.com -ylrj.com -ylrq.org -ylscgl.com -ylscw.net -ylsdeyy.com -ylsdyyy.com -ylsfqyy.com -ylsgzx.com -ylsmtnozzle.com -ylssgg.com -ylssofa.com -ylsssgg.com -ylstatic.com -ylstcgz.com -ylstudy.com -ylsw.net -ylt2008.com -yltapi.com -yltender.com -yltexgroup.com -yltlgjzx.com -yltpcb.com -ylturl.com -yltvb.com -yltwx.com -yltxxx.com -ylun8.com -yluu.com -ylwdec.com -ylwl.cc -ylwltv.com -ylwpark.com -ylws.net -ylwyw.com -ylxdtww.com -ylxgf.com -ylxhmy.com -ylxhy.com -ylxw.net -ylxweb.com -ylxyct.com -ylxyyy.com -ylxyzs.com -ylxzgz.com -ylydmt.com -ylyk.com -ylyun.com -ylyz.com -ylzbsj.com -ylzbtech.com -ylzhaopin.com -ylzhsk.com -ylzknk.com -ylzmjd.com -ylzms.com -ylzpay.com -ylzsy.com -ylztwy.com -ylzuche.com -ylzxmryy.com -ylzyhb.com -ylzyjx.com -ylzz666.com -ym-trans.com -ym.link -ym.run -ym.today -ym01.tech -ym23.com -ym3222333.com -ymacg.com -ymadly.com -ymailcampaign.com -ymanz.com -ymark.cc -ymars.com -ymatou.com -ymawv.la -ymbaidu.com -ymbank.com -ymcart.com -ymcart.net -ymcsepu.com -ymdoctor.com -ymechina.com -ymexf.com -ymfund.com -ymg.cc -ymgk.com -ymgkimg.com -ymhfp.com -ymhudong.com -ymhui.com -ymhuwai.com -ymhzpx.com -ymiot.net -ymisc.com -ymj9.com -ymjkj.com -ymjx8.com -ymkuzhan.com -ymlfxp.com -ymlinks.com -ymlt.net -ymlt.vip -ymm56.com -ymmfa.com -ymnsdk.com -ympc88.com -ympcb.com -ymrcw.vip -yms.cool -ymsoft.team -ymsss.com -ymsteam.com -ymt.com -ymt123.com -ymt360.com -ymtc.com -ymtie.com -ymtmt.com -ymtnet.com -ymu4.com -ymuuy.com -ymvkt.com -ymwcds.org -ymwl.net -ymxinke.com -ymxinxi.com -ymxlass.com -ymyun.com -ymyxsw.com -ymzer.com -ymzsl.com -ymzxconf.com -ymzy.games -yn-tcm-hospital.com -yn-tobacco.com -yn2007.com -yn58.com -ynaec.com -ynairport.com -ynb2dca.com -ynbit.com -ync365.com -yncost.com -yncun.net -yncunguan.com -yncyc1990.com -yndaily.com -yndcc.com -yndkt.com -yndzdj.com -yneg-ev.com -yneit.com -ynet.com -ynfabu.com -ynfmly.com -ynfww.com -ynfwyy.com -ynfxw.com -yngas.net -yngd016.com -ynggzy.com -yngp.com -yngsxy.net -yngw518.com -ynhkfyy.com -ynhl.net -ynho.com -ynhouse.com -ynhr.com -ynhthbkj.com -ynhuasong.com -ynhzm.com -yni84.com -ynian.com -ynjgy.com -ynjiaoyu.net -ynjkeji.com -ynjkjy.com -ynjlgroup.com -ynjtt.com -ynjttzjt.com -ynjtys.com -ynkcfc.com -ynkgyy.com -ynkm88.com -ynkmit.com -ynlygf.com -ynmbwl.com -ynmcyl.com -ynmec.com -ynmlgsgs.com -ynmzly.com -ynnits.com -ynpco.com -ynpta.com -ynpti.com -ynpublish.com -ynpxrz.com -ynqjnews.net -ynqrmyy.com -ynradio.com -ynrainbow.com -ynrc.net -ynrcc.com -ynrd.com -ynscgg.com -ynsdfz.net -ynsfhq.com -ynshangji.com -ynshhyy.com -ynshijian.com -ynsjg.com -ynsjzyxh.com -ynsmyy.com -ynsnjt.com -ynsnw.com -ynsrx.com -ynsst.com -ynstl.com -ynsydwzp.com -ynsyhkgs.com -ynsyy.com -ynszfw.com -ynszk.com -ynszlyy.com -yntz.cc -yntz.net -ynu.icu -ynurl.com -ynw360.com -ynwater.com -ynwin.com -ynwww.cc -ynxcbc.com -ynxdfpr.com -ynxingexinxi.com -ynxinhua.com -ynxiu.com -ynxr.com -ynxrmyy.com -ynxxb.com -ynxxwfw.com -ynxzy.com -ynyc.com -ynyes.com -ynylhy.com -ynyp.com -ynytkc.com -ynyysc.com -ynzaojia.com -ynzbxh.com -ynzcwl.com -ynzg.org -ynzp.com -ynzqyc.com -ynzrf.com -ynzs.com -ynztrq.com -ynztzxw.com -ynzy-tobacco.com -ynzzwl.com -yo4399.com -yo9.com -yoagoa.com -yobo.ink -yobo360.com -yobochina.com -yocajr.com -yocdev.com -yocofs.com -yocopi.com -yocvn.com -yocyxc.com -yodak.net -yodao.com -yodao.info -yodao.net -yodao.org -yodiya.com -yodo1.com -yodo1api.com -yodou.com -yodu.org -yoduzw.com -yoe365.com -yofc.com -yofcjs.com -yofijoy.com -yofish.com -yofogo.com -yofond.com -yofond.net -yofus.com -yoga-8.com -yogeev.com -yoghourt.space -yogiyogacenter.com -yogoip.com -yogorobot.com -yoher.com -yohipay.com -yoho.org -yohoboys.com -yohobuy.com -yohogirls.com -yohomars.com -yohoshow.com -yohui.com -yohuu.com -yojcool.com -yojochina.com -yoju360.com -yoju360.net -yoka.com -yokacdn.com -yokagames.com -yokaimg.com -yokaverse.com -yokechina.com -yokmob.com -yokong.com -yokotop.com -yolanda.hk -yolcool.com -yolewa.com -yolexi.com -yolinkmob.com -yolipai.net -yoloho.com -yoloogames.com -yolyon.com -yomhy.com -yomiko.cloud -yomiko.club -yomiko.fun -yomiko.tech -yomob.com -yomocode.com -yomuzu.com -yonderep.com -yondocredit.com -yoneihan.com -yonex-china.com -yong-gang.com -yong-ming.com -yong9ai.com -yonganyiyuan.com -yongaomy.com -yongchaohuagong.com -yongche.com -yongche.org -yongchengren.com -yongdachina.com -yongdaoyun.com -yongdasteel.com -yongdugroup.com -yonggu.com -yonghe2008.com -yongheng.online -yongheyl.com -yonghongtech.com -yonghuivip.com -yongjiang.com -yongjiezb.com -yongjindl.com -yongjukeji.com -yongjx.com -yongkang56.com -yongkao.com -yonglibao.com -yonglibelt.com -yonglin.com -yonglinyy.com -yonglvtong.com -yongmei0537.com -yongnangroup.com -yongootech.com -yongpingziyuan.com -yongqianbao.com -yongqischool.net -yongridt.com -yongsheng-sl.com -yongshenggroup.com -yongshenghn.com -yongshengjituan.com -yongshikj.com -yongsy.com -yongtaitech.com -yongtaiyun.com -yongtu.net -yongwangcpa.com -yongweigroup.com -yongxiandata.com -yongxiang.work -yongxiangwz.com -yongxinby.com -yongxinfushi.com -yongxinhuangjin.com -yongxinji.com -yongxinshuo.com -yongxintex.com -yongxinxuexiao.com -yongxiuren.com -yongyi-valve.com -yongyoujia.com -yongyu.xyz -yongyuenj.com -yongzhegroup.com -yongzhentang.com -yongzhoubus.com -yonho.com -yonjan.com -yonkersz.com -yonlive.com -yonniye.com -yonthin.com -yonyou.com -yonyouaud.com -yonyoubao.com -yonyouccs.com -yonyoucloud.com -yonyoufintech.com -yonyougov.com -yonyougx.com -yonyouny.com -yonyouoa.com -yonyouup.com -yoo616.com -yoo66.com -yooc.me -yoodb.com -yooek.com -yoofh.com -yoogene.com -yoohouse.com -yoojia.com -yoojing.com -yooknet.com -yoolin.cc -yooojie.monster -yoooooooooo.com -yoopu.me -yooquma.com -yooxlife.com -yooxun.com -yooyo.com -yoozai.com -yoozhe.com -yoozhibo.cc -yoozhibo.net -yoozoo.com -yopoint.cc -yopoint.com -yoptech.com -yopu.co -yopwork.com -yopye.com -yoqoo.com -yoqoo.net -yoqoo.tv -yoqu.net -yorentown.com -york-tech.com -york33.com -yorlaw.com -yorui.net -yoseleather.com -yostar.net -yostatic.com -yotopic.com -you-mi.net -you03.com -you1ke.com -you200.com -youacc.com -youandme123.com -youba.com -youba123.com -youban.com -youbangkeyi.com -youbangyun.com -youbbs.org -youbeichefu.com -youbian.com -youbibi.com -youbike.me -youbikecn.com -youbohe.com -youboy.com -youboy.net -youboyy.com -youcaiyun.com -youcaizhushou.com -youcareyk.com -youcash.com -youcha.net -youche.com -youchedi.com -youchejiuxing.com -youchent.com -youcheyihou.com -youchuhuodong.com -youcloud.com -youcsky.com -youda.pro -youda8.com -youdajx.com -youdao.com -youdaocaifu.com -youdaochem.com -youdas.com -youdashidai.com -youdawangluo.com -youde.com -youdemai.com -youdiancms.com -youdianyisi.com -youdianzhishi.com -youdingsuit.com -youdingte.com -youdong.com -youdou.mobi -youdubook.com -youduzw.com -youdwh.com -youease.net -youedata.com -youez.com -youfabiao.com -youfan.pub -youfanerbuy.com -youfang123.com -youfangou.com -youfangzx.com -youfanx.com -youfen666.com -youfengbio.com -youfubao.vip -youfujc.com -youfunlab.com -youfuyoucai.com -yougababy.com -youganghangmoguan.com -yougaoji.com -yougaoyx.com -yougenet.com -youginorg.com -yougou.com -yougu.tv -yougumuye.com -youguo.com -youguoquan.com -youguu.com -youhaodongxi.com -youhaosoft.com -youhaosuda.com -youhaoxinxi.com -youhro.com -youhu.net -youhua.com -youhua.pw -youhuaaa.com -youhuafuzhi.com -youhuas.com -youhuashu.com -youhugmedia.com -youhuiduo.net -youhundao.com -youhuohao.com -youhutong.com -youideal.net -youinsh.com -youj.com -youjiajk.com -youjiands.net -youjiangdati.com -youjiangzhijia.com -youjiao.com -youjiao365.net -youjiao5.com -youjiaxiao.com -youjimilk.com -youjindi.com -youjingnetwork.com -youjiuhealth.com -youjoy.tv -youju360.com -youke.co -youke.com -youked.com -youkeda.com -youkego.com -youkelai.com -youkexueyuan.com -youkia.com -youkia.net -youking.com -youkongkan.com -youkongwan.com -youku-dns.com -youku.cdn2-youku.com -youku.com -youku.org -youkua.net -youkuaiyun.com -youkud.com -youkupic.com -youlai.tech -youlanw.com -youlechuhai.com -youlecn.com -youleliwu.com -youlesp.com -youletd.com -youleyou.com -youlian.fun -youlianfuwu.com -youliangda.com -youlianghz.com -youliao.com -youliao.love -youliaobaike.com -youliaoyi.com -youlingtong.com -youlinyouke.com -youlionbattery.com -youlishipin.com -youloft.com -youlong123.com -youlongciqing.com -youlu.com -youlu.net -youlu6.com -youlupei.com -youluwx.com -youma.cc -youmai.com -youmanvideo.com -youme.im -youmeisiji.com -youmeng020.com -youmengchuangxiang.com -youmengcms.com -youmengmob.com -youmenr.com -youmew.com -youmiad.com -youmian99.com -youmiaoyigou.com -youmideer.com -youmindao.com -youmobi.com -youneedcrydear.com -youneng.com -younet.com -young40.com -youngem.com -youngerfeel.com -younggas.com -youngjoygame.com -youngle.site -youngle.tech -youngor.com -youngsunpack.com -youni.im -younuokeji.cloud -youo.net -youol.com -youonbike.com -youpengcx.com -youpengw.com -youpin898.com -youpingame.com -youpinhaoche.com -youpinimg.com -youpinppt.com -youpinsanyue.com -youpintechs.com -youpinx.com -youplus.cc -youpont.net -youpuchina.com -youpumao.com -youpumao.xyz -youpzhaohuo.com -youqiantu.com -youqichuyun.com -youqiong.net -youqiwu.com -youqizhan.com -youqo.com -youqoo.net -youqu.in -youqudao.com -youquhui.com -your-man.com -your360loans.com -your724sports.com -yourbin.com -yourchinagent.com -yourcollect.net -yourdream.cc -youren5.com -yourjia.com -yourongsj.com -yourtion.com -yourtravelyourchoice.com -youruitech.com -youscm.com -youseen.com -yousengshe.com -yousenjiaoyu.com -youser.cc -youshang.com -youshaohua.com -yousheng.shop -youshenggz.com -youshenhudong.com -yousheyoujia.com -youshibeike.com -youshifu.com -youshikoudai.com -youshixiu.com -youshop01.com -youshop02.com -youshop03.com -youshop04.com -youshop10.com -youshu.cc -youshuge.com -youshujian.com -yousi.com -youstong.com -youtaidoors.com -youtaidu.com -youtao55.com -youtaojd.com -youthi.com -youtiandi.com -youtianli.com -youtianmetal.com -youtianz.com -youtibao.com -youto.club -youtoart.com -youtochat.com -youtoupiao.com -youtrans.net -youtu.com -youtube-dubbing.com -youtuzi.com -youtx.com -youuav.com -youuvs.com -youwanplay.com -youwawa.com -youwei-china.com -youwei.com -youweigroup.com -youweihui.com -youwo.com -youwoxing.net -youwu.today -youwusc.com -youxedu.com -youxi.com -youxi01.com -youxi377.com -youxi527.com -youxi528.com -youxi567.com -youxi8282.com -youxia.com -youxiacg.com -youxiagushi.com -youxiaju.com -youxiake.com -youxiake.net -youxiamotors.com -youxiangclub.com -youxiangyx.com -youxiaoge.com -youxiaohou.com -youxiaxiazai.com -youxibao.com -youxibaoku.com -youxibd.com -youxica.com -youxicdn.com -youxichaguan.com -youxicheng.net -youxicitang.com -youxidaxue.com -youxidr.com -youxidudu.com -youxidun.com -youxiduo.com -youxifan.com -youxigongchang.com -youxigt.com -youxigu.com -youxiguancha.com -youxigui.com -youxih.com -youxihezi.net -youxihun.com -youxiivf.com -youxila.com -youximao.com -youximt.com -youxin.com -youxingapp.com -youxiniao.com -youxinpai.com -youxinshi.com -youxinsign.com -youxipai.com -youxiping.com -youxiputao.com -youxiqiang.com -youxiqun.com -youxishuo.com -youxitexiao.com -youxituoluo.com -youxiuhui.com -youxiwangguo.com -youxiwugui.com -youxixf.com -youxixinzhi.com -youxixj.com -youxizhan.com -youxuan.com -youxuanan.com -youxuancdn.com -youxuandns.com -youxuangu.com -youxueke.com -youxuetong.com -youyacao.com -youyacheye.com -youyan.xyz -youyannet.com -youyantech.com -youyeetoo.com -youyegame.com -youyi-game.com -youyi800.com -youyicun.net -youyierp.com -youyigame.com -youyiguke.com -youyihuibk.com -youyijifen.com -youyijiu.com -youyiqi.com -youyiqiaogou.com -youyitape.com -youyitian.net -youyitms.com -youyiweizhan.com -youyiwms.com -youyix.com -youyixue.com -youyizhidao.com -youyo88.com -youyogame.com -youyong360.com -youyou.com -youyou001.com -youyou234.com -youyoufood.com -youyouwin.com -youyuan.com -youyudf.com -youyuegame.com -youyuela.com -youyuit.net -youyur.com -youyuwei.com -youyuwenhuay.com -youyuwo.com -youyy.com -youzack.com -youzan.com -youzanyun.com -youzhai.com -youzhan.org -youzhandian.com -youzhao.com -youzhi.net -youzhi99.com -youzhicai.com -youzhicn.com -youzhiwk.com -youzhixueyuan.com -youzhiying.com -youzhou-knife.com -youzhu.com -youzhuan.com -youzi02.com -youzibank.com -youzibuy.com -youzijie.com -youzijimu.com -youziku.com -youzikuaibao.com -youzipay.com -youzu.com -youzuanmy.vip -yovisun.com -yovocloud.com -yovole.com -yovyuan.com -yowhale.com -yowooa.com -yoxiha.com -yoximi.com -yoxmail.com -yoxuba.com -yoxyok.com -yoya.com -yoybuy.com -yoyiapp.com -yoyiit.com -yoyile.com -yoyizx.com -yoyo007.com -yoyo1900.com -yoyo2008.com -yoyoask.com -yoyoer.com -yoyojacky.com -yoyojie.com -yoyokko.com -yoyoogo.com -yoyosc.com -yoyotown.com -yoyou.com -yoytang.com -yoyucn.com -yoyv.com -yozodcs.com -yozodoc.com -yozodocs.com -yozooffice.com -yozosoft.com -yozsc.com -yozyn.com -yp001.com -yp007.net -ypank.com -ypattern.com -ypc-fc.com -ypfph.com -ypgyyq.com -yph-shop.com -yphbuy.com -yphuifu.com -ypiao.com -ypicw.com -ypjc.cloud -ypjiameng.com -ypjsgl.com -ypkegroup.com -ypky.net -yplady.com -yplog.net -yplogistics.com -yplsw.com -yppp.net -ypppt.com -yprescdn.xyz -yprh.com -ypshengxian.com -ypshop.net -ypstech.com -ypwater.com -ypxiixs.xyz -ypyyjt.com -ypzdw.com -ypzhushou.com -yq-zc.com -yq2404.com -yqacg.com -yqb.at -yqb.com -yqb920.com -yqbank.com -yqbdt.com -yqbimg.com -yqbimg.net -yqchjd.com -yqcn.com -yqcsbqxj.com -yqcymj.com -yqdtv.com -yqelect.com -yqfcw.net -yqfml.com -yqfoodec.com -yqfxw.net -yqh.com -yqh1969.com -yqh5.com -yqhlm.com -yqhzz.com -yqjtgs.com -yqk889.com -yqk8ku.com -yqkddm.com -yqkk.link -yqlzq.com -yqmb001.com -yqmengyou.com -yqmh.com -yqmls.com -yqmoybz.com -yqms.net -yqn.com -yqphh.com -yqqqbm.com -yqrc.com -yqrcw.com -yqrtv.com -yqsbz.com -yqslmall.com -yqsn.com -yqtg.cc -yqtkgzbk.com -yqtsgg.com -yqw188.com -yqwfpy.com -yqwxw.cc -yqwyx.xyz -yqxiuyoung.com -yqxs.cc -yqxsg.cc -yqxsge.cc -yqxxjy.com -yqy021.com -yqybzhan.com -yqyu.com -yqzww.cc -yqzww.la -yqzww.net -yqzwww.com -yqzxx.net -yr-info.com -yr17.net -yr3.com -yra2.com -yracc.com -yrapp.net -yrcbank.com -yrdart.com -yrglass.com -yrgx168.com -yrhct.com -yrmpay.com -yrobot.com -yrom.net -yrtgame.com -yrtyyds.com -yruan.com -yrucd.com -yrw.cc -yrw.com -yrwy.com -yrxitong.com -yrxsw.com -yryz.com -yrz.name -yrzjw.com -ys-fj.com -ys-oss.xin -ys.cc -ys001.com -ys0431.net -ys121.com -ys133.com -ys137.com -ys168.com -ys1898.com -ys2345.com -ys4fun.com -ys7.com -ys720.com -ys8.com -ys991.com -ysaedesign.com -ysali.com -ysbopet.com -ysbz168.com -yscase.com -ysch.cc -ysclass.net -yscq.com -yscro.com -ysczw.com -ysdq8.com -ysedu.com -ysej.com -ysemi.com -ysepan.com -ysepay.com -ysext.com -ysfog.com -ysgang.com -ysgfood.com -ysghh.com -ysgtg.com -ysgushi.com -yshp.net -yshshuimitao.com -yshsports.com -yshtx.com -yshw1.com -yshzjt.com -ysicing.net -ysidcz.com -ysiis.com -ysirv.com -ysjcyxgs.com -ysjdaijia.com -ysjf.com -ysjianzhan.com -ysjkbk.com -yskcsj.com -yskjnj.com -yskjz.com -yskjzj.com -yskxjy.com -yslcw.com -ysljnkj.com -yslpaint.com -yslqo.com -yslw.com -yslyhr.com -yslzc.com -ysmeet.com -ysmiji.com -ysmine.com -ysmir.net -ysn.cc -ysnews.net -ysnns.com -ysod.com -ysok.net -ysol.com -ysosuo.com -ysplay.com -ysrencai.com -ysrh.com -ysrzdb.com -ysslc.com -yssm888.com -yssp88.com -yssql.com -yssrmyy.com -ysstech.com -ysszzs.com -yst100.net -ystan.com -ystb.com -ystbds.com -ysten.com -ystencdn.com -ysts.cc -ystsx.com -ystzzy.com -ysug.com -ysupan.com -ysw1950.com -ysw68.com -yswebportal.cc -yswh.com -yswlgame.com -yswswkj.com -yswu.net -yswyyds.com -ysx9999.com -ysxapp.com -ysxs8.com -ysxswz.com -ysxts.com -ysxyhtz.com -ysxzls.com -ysys.com -ysyycv.com -yszpwatch.com -yszx99.com -yszxx.net -yszyun.com -yt-ma.com -yt-shoes.com -yt-taili.com -yt-xinpeng.com -yt0.cc -yt1998.com -yt2.net -yt69.com -yt698.com -yt98w.com -ytaotao.net -ytaxx.com -ytbainakeji.com -ytbbs.com -ytbfilm.com -ytbt.cc -ytcables.com -ytcbh.com -ytccr.com -ytchangyang.com -ytcj.com -ytcnc.net -ytcutv.com -ytdaily.com -ytdcloud.com -yte1.com -ytecn.com -ytedi.com -yteng.net -ytesting.com -ytf8888.com -ytfcjy.com -ytg666.com -ytgas.com -ytghnb.com -ytgos.com -ythairui.com -ytholidayplaza.com -ythospital.com -ythouse.com -ythzg.com -ytjcpj.com -ytjiage.com -ytjlc.net -ytjob.com -ytjpkj.com -ytjqjt.com -ytjunyue.com -ytkj2010.com -ytlh120.com -ytlvbao.com -ytmachinery.net -ytmedia.tv -ytmgz.com -ytmingju.com -ytnetgame.com -ytnstone.com -yto-jsd.com -yto-lgs.com -yto-lgs.net -yto.vip -yto.xin -yto56test.com -ytocargo.com -ytoexpress.com -ytoglobal.com -ytogroup.com -ytoholding.com -ytokj.com -ytokj.net -ytoluohan.com -ytoluohan.net -ytoluohan.xin -ytop8.com -ytphq.com -ytport.com -ytpowder.com -ytpp.com -ytpu.com -ytqh-electric.com -ytrain.com -ytrcw.com -ytrdc.com -ytrlzyw.com -ytrmtzx.com -yts88.com -ytsanchuan.com -ytsense.com -ytsexrb.com -ytsfc.com -ytshipin.com -ytsyy.com -ytszg.com -yttxcs.com -ytud.net -ytuqy.com -ytusmart.com -ytwater.com -ytxedu.com -ytxinhai.com -ytxinyan.com -ytxsc.com -ytxww.com -ytyaoye.com -ytyhdyy.com -ytyz.net -ytyz.org -ytzhihui.com -ytzq.com -ytzww.com -yu-electronics.net -yu163.com -yu4l.com -yu72.com -yu7l.com -yuaigongwu.com -yuaiweiwu.com -yuan2808.com -yuan7i.com -yuanabsorber.com -yuanbaobaoxian.com -yuanbaokc.com -yuanbaotaoche.com -yuanbei.biz -yuanben.io -yuanbin.me -yuancangipr.com -yuancdn.com -yuancefund.com -yuanchang888.com -yuanchengroup.com -yuanchuangyinyue.com -yuancoder.com -yuanda-fm.com -yuandacn.com -yuandaocn.com -yuandi.com -yuandian.club -yuandiancredit.com -yuandongsl.com -yuanf56.com -yuanfen.icu -yuanfeng021.com -yuanfeng1.com -yuanfudao.biz -yuanfudao.com -yuanfudao.ws -yuanfudaoschool.com -yuanfusc.com -yuangongbao.com -yuanhaitaiji.com -yuanhangqiche.com -yuanhangzyt.com -yuanhaomumen.com -yuanhechem.com -yuanhengyi.com -yuanheyaoye.com -yuanhua.com -yuanhuixinhai.com -yuanjingang.com -yuanjingss.com -yuanjisong.com -yuanjoy.com -yuanlai.com -yuanlei.net -yuanley.com -yuanlian365.com -yuanlin.com -yuanlin365.com -yuanlin8.com -yuanlvkeji.com -yuanma.net -yuanmadian.com -yuanmait.com -yuanmajiaoyiw.com -yuanmatao.com -yuanmengyouxuan.com -yuano.cc -yuanpanguoji.com -yuanqiao.net -yuanqiao.pw -yuanqilt.com -yuanqingsh.com -yuanqisenlin.com -yuanrenbang.com -yuanrengu.com -yuanrenxue.com -yuansfer.com -yuanshanbx.com -yuanshen.com -yuanshi-sec.com -yuanshichang.com -yuanshuflow.com -yuansikeji2021.com -yuansoti.com -yuansouti.biz -yuansouti.com -yuant.net -yuantaobgjj.com -yuanteng.net -yuantest.com -yuantiku.biz -yuantiku.com -yuantiku.xyz -yuantongyizhan.com -yuantoushuo.com -yuantuedu.com -yuantujun.com -yuantutech.com -yuanu.com -yuanweish.com -yuanwsk.com -yuanxianmedia.com -yuanxinbaoxian.com -yuanxinjituan.com -yuanxuxu.com -yuanyaedu.com -yuanyangbj.com -yuanyangcoffee.com -yuanyangmed.com -yuanyeer.com -yuanyi.biz -yuanyoumao.com -yuanyoutao.com -yuanyubusiness.com -yuanzhanapp.com -yuanzhexi.com -yuanzhi.com -yuanzhihao.life -yuanzhiyijiantong.com -yuanzidai.com -yuanzige.com -yuanzipower.com -yuanziyan.com -yuanzun.fun -yuaoq.com -yuapt.com -yubaike.com -yubangweb.com -yuboinfo.com -yuboqj.com -yucekj.com -yucezhijia.com -yuchai.com -yuchaicd.com -yuchaidiesel.com -yuchainev.com -yuchainz.com -yuchaipg.com -yuchaizm.com -yuchenpharm.com -yuchenw.com -yuchofoodmachine.com -yuchuan.org -yuchuantech.com -yuci998.com -yucoolgame.com -yucui.org -yucunkeji.com -yudamedical.com -yudeglobal.com -yudiangame.vip -yudiaomingjia.com -yudiu.com -yudoauto.com -yudouyudou.com -yudutime.com -yuduxx.com -yue-grh.com -yue-tao.com -yue365.com -yue7.com -yuebai.tv -yueban.com -yueban.net -yuebao.ltd -yuebei.vip -yuebeist.com -yuebie.com -yueblx.com -yuebooemt.com -yuecdn.net -yuecheng.com -yuecong.club -yueda.com -yuedainvest.com -yuedaoec.com -yuedarzzl.com -yuedatc.com -yuedianedu.com -yuedisk.com -yuedsk.com -yuedu.pro -yuedu88.com -yuedufang.com -yueduji.com -yuedujiayuan.com -yuedunovel.com -yueduwen.com -yueduwu.com -yueduwuxianpic.com -yueduyun.com -yuegongyutu.com -yuegowu.com -yuegui.shop -yueguisuchong.com -yuehaifeed.com -yuehaowy.com -yueimg.com -yueji.com -yuejiewangluo.com -yuejikeng.com -yuejob.com -yuejuanbao.com -yuejuwang.com -yuekenet.com -yuekeyun.com -yuekuapp.com -yuelanxinghe.com -yueliangshi.com -yuelongchina.com -yuelongdzc168.com -yueloo.com -yuelu.net -yuelun.com -yuelvxing.com -yuelxc.com -yuemagroup.com -yueme.tv -yuemei.com -yuemicn.com -yueniuzq.com -yuenongren.com -yuenshui.com -yuenwooping-truelegend.com -yuenyled.com -yuepaijia.com -yueqi.com -yueqiji.com -yueqikan.com -yueqingchayuan.com -yueqiweixiu.com -yueqiyou.com -yueque.com -yuequtech.com -yuer.com -yuerbao.com -yueren123.com -yuerenjt.com -yuerhezi.com -yueru.com -yuerugou.com -yuesekaer.com -yueserve.com -yueseyuewei.com -yueshenggame.com -yueshifengyin.net -yueshitv.com -yuesuoping.com -yuetengiot.com -yueting.net -yuetingapp.com -yuetj.com -yuetu.tech -yuetuvip.com -yuetuvip.net -yuewanggd.com -yuewei007.com -yueweimusic.com -yuewen.com -yuexiamen.com -yuexiangpin.com -yuexiangspace.com -yuexindianqi.com -yuexing.com -yuexingchem.com -yuexinship.com -yuexirc.com -yuexiren.com -yuexiu-finance.com -yuexiu.com -yuexiudevelopment.com -yuexiufoods.com -yuexiuleasing.com -yuexiuproperty.com -yuexunedu.com -yuexunfanyi.com -yuexw.com -yueya.net -yueyaa.com -yueyan365.com -yueyangshop.com -yueyangyy.com -yueyat.net -yueye7.com -yueyear.com -yueyouxs.com -yueyq.com -yueyu114.com -yueyuanzhiye.com -yueyues.com -yueyueworld.com -yueyueyd.com -yueyuez.com -yueyundns.com -yueyuzhushou.com -yuezeyi.com -yuezhicn.com -yuezhiding.com -yuezhinan.com -yufanlogistics.com -yufanwei.com -yufeng05.com -yufenggroup.com -yufenjiameng.com -yuflc.com -yufuid.com -yufuid.net -yugasun.com -yugenmed.com -yugew.com -yuglf.com -yugongw.com -yugou1688.com -yugudz.com -yuguimedia.com -yuguo.com -yuguowang.net -yugusoft.com -yuhaids.com -yuhaiyiya.com -yuhaochemical.com -yuhaotime.com -yuhaozhixing.com -yuheii.com -yuhein.com -yuhelaw.com -yuhengcheng.com -yuhocare.com -yuhongchem.com -yuhongpharm.com -yuhou.com -yuhougame.com -yuhsoft.com -yuhuagu.com -yuhuaholding.com -yuhuanghuagong.com -yuhucoldchain.com -yuhuijob.com -yuhx.com -yui06161shga.com -yui06171shga.com -yujia.com -yujiahui.com -yujianpay.com -yujianxiaomian.com -yujiawuliu.com -yujiefs.com -yujifruit.com -yujingkj.com -yujiu.vip -yujpa.com -yujunjie.com -yujunren.com -yujzw.com -yukaiprecision.com -yukeinfo.com -yukexinchem.com -yukicat.net -yukicomic.com -yukuai.com -yukxw.com -yulangair.com -yule114.com -yule263.com -yuledaily.com -yulefm.com -yulehezi.com -yuleie.com -yulejiaodian.com -yulekan.com -yulekoudai.com -yuleqiu.com -yulhe.com -yuli.be -yuliancn.com -yuliang-sh.com -yulicdn.com -yulinapp.com -yulincard.com -yulinduoduo.com -yulindxgjj.com -yulinedu.net -yulingtianxia.com -yulinhuaran.com -yulinjue.com -yulinqj.com -yulins.com -yulinshidefu.com -yulinyw.com -yuliqx.com -yulong.com -yulongdt.com -yulongjun.com -yulongpc.com -yulongsteelpipe.com -yulongtour.com -yulongwanski.com -yuloo.com -yulore.com -yulorepages.com -yulu1.com -yulu99.com -yulucn.com -yuluju.com -yulumh.com -yuluyao.com -yulv.net -yumao.com -yumaochuhai.com -yumaoclub.com -yumaoshu.com -yumchina.com -yumi.cc -yumi.com -yumingguwen.com -yumingyouhui.com -yummy.tech -yumstone.com -yun-ac.com -yun-app.net -yun-dns.com -yun-gu.com -yun-health.com -yun-idc.com -yun-img.com -yun-jinrong.com -yun-jintong.com -yun-kai.com -yun-live.com -yun-qu.com -yun-wp.com -yun123.com -yun5.vip -yun61.com -yun88.com -yunadmins.com -yunalias.com -yunannet.com -yunaq.com -yunarm.com -yunassess.com -yunaw.com -yunba.io -yunban.com -yunbaofei.com -yunbaolai.com -yunbaoming.com -yunbei.com -yunbiao.tv -yunbiaowulian.com -yunbiaozhun.com -yunbiji.com -yunbisai.com -yunbohealth.com -yunbook.vip -yunbuzhan.com -yuncai5.com -yuncaioo.com -yuncdn.bid -yuncdn123.com -yuncdn263.com -yuncdndun.com -yuncechina.com -yunceng.com -yunchelogistics.com -yuncheng.com -yunchengfang.com -yunchexing.com -yunchip.com -yunchonglife.com -yunchongmob.com -yunchou.com -yunchuan.info -yuncii.com -yuncitys.com -yuncloudauth.com -yuncname.com -yuncode.net -yund.tech -yunda56.com -yundaex.com -yundagongyi.com -yundagroup.com -yundalog.com -yundaltl.com -yundangan.com -yundangnet.com -yundaomen.com -yundasys.com -yunde.net -yundianjia.com -yundianseo.com -yundiantech.com -yundingdun.com -yundongfang.com -yundonghao.com -yundongit.com -yundousoft.com -yundui.cc -yunduimedia.com -yundun.com -yundun.shop -yunduncc.com -yunduncdn.com -yunduncdns.com -yunduncname.com -yundunddos.com -yundundns.com -yunduns.com -yundunwaf.com -yundunwaf1.com -yundunwaf2.com -yundunwaf3.com -yundunwaf4.com -yundunwaf5.com -yunduocrm.com -yunduoke.net -yunduoketang.com -yunduolp.com -yundzh.com -yuneach.com -yunerba.com -yunews.net -yunexam.com -yunexpress.com -yunfabiao.com -yunface.com -yunfalv.com -yunfan.com -yunfan0739.com -yunfancdn.com -yunfancdn.net -yunfandns.com -yunfangtan.com -yunfanka.com -yunfanyouxi.com -yunfei89.com -yunfeihudong.com -yunfeitech.com -yunfeiyang.com -yunfengdie.com -yunfutang8.com -yunfutech.com -yunfuwuqiba.com -yungangbj.com -yungao-ssp.com -yungao.mobi -yungbang.com -yungengxin.com -yungongchang.com -yungotec.com -yungou618.com -yungouos.com -yungousj.net -yungpu.com -yungu.org -yunguajibao.com -yungujia.com -yunhaicangshu.com -yunhaike.com -yunhaiqiao.com -yunhaisteel.com -yunhaoka.com -yunhaoren.com -yunhe518.net -yunhedata.com -yunhehudong.com -yunheit.com -yunhesanwan.com -yunhetong.com -yunhou.com -yunhuangroup.com -yunhuaq.com -yunhuasheji.com -yunhuashu.com -yunhuijing.com -yunhulu.org -yunhuotong.net -yunhuzx.com -yunifang.com -yunify.com -yunio.com -yunip.com -yunipo.com -yunji.work -yunji.xin -yunjian.com -yunjian.net -yunjiasu-cdn-dnssec.net -yunjiasu-cdn.com -yunjiasu-cdn.net -yunjiasu-dns.com -yunjiasu-dns.net -yunjiasu-test.com -yunjiasu.cc -yunjiasu360.com -yunjiasucdn.info -yunjiasucdn.net -yunjiasudns.com -yunjiasudns.net -yunjiasupreview.com -yunjiasussl.com -yunjiazheng.com -yunjichaobiao.com -yunjie.art -yunjiemi.net -yunjifarm.com -yunjiglobal.com -yunjing720.com -yunjingdian.net -yunjinggo.com -yunjinginc.com -yunjitele.com -yunjiweidian.com -yunjix.com -yunjuwuliu.com -yunkaiguan.com -yunkangdoctor.com -yunkanghealth.com -yunkanpan.com -yunkawulian.com -yunkd.com -yunke.com -yunkejituan.com -yunken.com -yunketop.com -yunkezan.com -yunkuaimai.com -yunkushop.com -yunlaa.com -yunlaiwu.com -yunlangtuanjian.com -yunlie.net -yunlietou.com -yunliketech.com -yunling.me -yunlinghang.com -yunlitz.com -yunlsp.com -yunlucn.cc -yunma99.com -yunmai.com -yunmayi.com -yunmc.vip -yunmd.net -yunmeipai.com -yunmell.com -yunmengdata.com -yunmianqian.com -yunmoseo.com -yunmoxing.com -yunn-tech.com -yunna.me -yunnan.vip -yunnancoffee.org -yunnandns.com -yunnanjun.com -yunnanuu.com -yunnao.com -yunneidongli.com -yunos-inc.com -yunos-tv.com -yunos.com -yunpan.com -yunpansou.cc -yunpanx.com -yunparking.cloud -yunpay.cc -yunpei.com -yunpian.com -yunpiao.net -yunqi.org -yunqi2050.com -yunqi6.com -yunqiba.com -yunqifly.com -yunqiju.com -yunqikecrm.com -yunqishi.net -yunqishi8.com -yunqiyqh.com -yunque360.com -yunquna.com -yunrang.fun -yunrenshi.net -yunrg.com -yunrongu.com -yunruicloud.com -yunruift.com -yunruikj.com -yunruizz.com -yunsd.net -yunser.com -yunshan.net -yunshangdian.com -yunshangguangdong.com -yunshanghangzhou.com -yunshangkj.com -yunshangnc.com -yunshangshou.com -yunshangsuzhou.com -yunshangxuzhou.com -yunshangzhejiang.com -yunshanit.com -yunshanmedical.com -yunshanmeicai.com -yunsheng.com -yunsheng999.com -yunshi999.com -yunshibuluo.com -yunshicloud.com -yunshiketang.xyz -yunshouji123.com -yunshow.com -yunshunxx.com -yunshuren.com -yunshuwh.com -yunsiya.com -yunsom.com -yunsong.com -yunsou168.com -yunssl.com -yunsuan.org -yunsuanzi.com -yunsuo.com -yuntaigo.com -yuntask.com -yuntemai.com -yunteng-group.com -yuntiancloud.com -yuntianti.com -yuntianxia.com -yuntingbo.com -yuntingiot.com -yuntisoft.com -yuntongauto.com -yuntongbu.com -yuntongcloud.com -yuntongshuke.com -yuntongxun.com -yuntongzy.com -yuntop.com -yuntsg.com -yuntu.io -yuntue.com -yuntuiweishang.com -yuntuoguan.cc -yuntus.com -yuntus.net -yuntust.com -yuntuys.com -yuntyfilter.com -yunupay.com -yunverify.com -yunvm.com -yunwei8.com -yunweibang.com -yunweipai.com -yunweiwl.com -yunwenkeji.com -yunwenxue.com -yunwins.com -yunwuxian.net -yunxi.cc -yunxi.net -yunxi.tv -yunxi10.com -yunxiacn.com -yunxianchang.com -yunxiao.com -yunxin123.com -yunxin163.com -yunxinapi.com -yunxindai.com -yunxindns.com -yunxinfa.com -yunxinfw.com -yunxing123.com -yunxingslb.com -yunxinhi.com -yunxinhy.com -yunxinrtc.com -yunxinshi.com -yunxinsvip.com -yunxinsvr.com -yunxinvcloud.com -yunxinvideo.com -yunxiren.com -yunxish.com -yunxiu.com -yunxs.com -yunxuetang.com -yunxunmedia.com -yunyangwang.com -yunyi-china.com -yunyi-dd.com -yunyibiji.com -yunyichong.com -yunyihudong.com -yunyin.org -yunying001.com -yunyingbiotech.com -yunyingdashu.com -yunyingketang.com -yunyingmiao.com -yunyingpai.com -yunyingxbs.com -yunyingxuetang.com -yunyis.com -yunyiyuan.com -yunyize.com -yunyoufeitian.com -yunyouni.com -yunyousj.com -yunysr.com -yunyu123.com -yunyuba.com -yunyueqiji.com -yunyunvip.com -yunyuwuyou.com -yunzazhi.com -yunzehj.com -yunzhan365.com -yunzhangfang.com -yunzhanggui.net -yunzhanghu.com -yunzhanxinxi.com -yunzhanyou.com -yunzhifankeji.net -yunzhijia.com -yunzhirencai.com -yunzhisec.com -yunzhitai.com -yunzhixiyou.com -yunzhizao.net -yunzhonghe.com -yunzhu100.com -yunzhuan.com -yunzhuangbei.com -yunzhuxue.com -yunzitraining.com -yunzmall.com -yunzongnet.com -yunzuji.vip -yunzujia.com -yunzuoye.net -yunzz.net -yuoucn.com -yupao.com -yupaowang.com -yupeiholdings.com -yupinny.com -yupoo.com -yupu.com -yuqianshu.com -yuqiao.com -yuqiaolong.com -yuqinpin.com -yuquanhosp.com -yuque.com -yuren.org -yuriimg.com -yurongoptical.com -yurun.com -yusa.me -yusainorthwest.com -yushanfang.com -yushangmao.com -yushengny.com -yushengtang.com -yushexuetang.com -yushin88.com -yushiyan.net -yushiyuan.com -yushu5.com -yushunews.com -yusi.com -yusi.tv -yusi123.com -yusii.com -yusii.net -yusinvestment.com -yusiyy.com -yusongec.com -yusuan.com -yusunjewelry.com -yusuusnw.com -yusxz.com -yutai365.com -yutainews.com -yutaoyouxi.com -yuteng.site -yutennet.com -yutian.cc -yutianedu.com -yutonad.com -yutong.com -yutongplay.vip -yutongzyc.com -yuttz.com -yutuwo.com -yuucn.com -yuudnn.com -yuwan-game.com -yuwang.com -yuwangcn.com -yuwanjianshe.com -yuwanyouxi.com -yuweikuijianzhan.com -yuweitek.com -yuweiyanwo.com -yuwell.com -yuwellgroup.com -yuwen.net -yuwen123.com -yuwen360.com -yuwenchaoshi.com -yuwenmi.com -yuwennews.com -yuwenxiandaihua.com -yux.team -yuxianall.com -yuxiangwang0525.com -yuxianxing.com -yuxiaogroup.com -yuxiaor.com -yuxiaotuo.com -yuxicorrosion.com -yuxinews.com -yuxinoulogistics.com -yuxipark.com -yuxitech.com -yuyangtec.com -yuyaoclub.com -yuyaotop.com -yuyejt.com -yuyicai.com -yuyin.tv -yuyinct.com -yuyinfanyi.com -yuyingufen.com -yuyoung32.com -yuyouyouxi.com -yuyu.com -yuyue111.com -yuyue27.com -yuyuecoat.com -yuyueshop.com -yuyuetec.com -yuyuetui.com -yuyuezhiyangji.com -yuyunkj.com -yuyuntang.com -yuyuntech.com -yuzeli.com -yuzeli.net -yuzhengzixun.net -yuzhenhai.com -yuzhicaiexpo.com -yuzhiguo.com -yuzhike.com -yuzhong.biz -yuzhong.net -yuzhongxxw.com -yuzhoua.com -yuzhouwan.com -yuzhouyiyuan.com -yuzhua.com -yuzhuan.com -yuzhulin.com -yuzhuw.com -yuzijiaoyu.com -yuzmshanghai.org -yuzone.net -yuzua.com -yuzundaojia.com -yvrdream.com -yvv.in -yvzfgigpiwmofux.com -yw11.com -yw160.com -yw2005.com -ywart.com -ywbank.com -ywcbs.com -ywclxp.com -ywdier.com -ywditan315.com -yweisugar.com -ywfby.com -ywfex.com -ywgc.net -ywgd.com -ywhack.com -ywhqs.com -ywhsm.com -ywies-bj.com -ywies-gz.com -ywies-sh.com -ywies-shpd.com -ywindex.com -ywinf.com -ywint.net -ywit.xyz -ywjinfabag.com -ywky.org -ywlandport.com -ywnds.com -ywnz.com -ywopt.com -ywork.me -ywpark.net -ywputxks.com -ywshouyou.com -ywshouyou.net -ywsoftware.com -ywstsb.com -ywt.com -ywtd.xyz -ywtds.com -ywurl.com -ywvzxeau.com -ywwg.net -ywwl.com -ywwpay.com -ywxue.com -ywxww.net -ywxzz.com -ywyanxing.com -ywyishi.com -ywziwei.com -ywzt.org -ywzz.com -yx-g.com -yx-life.com -yx-s.com -yx-s.net -yx0599.com -yx090.com -yx12345.com -yx1312.com -yx192.com -yx231.com -yx643.com -yx7088.com -yx74.com -yx7507.com -yx8tya36v8bp.com -yx93.com -yx988.com -yx99.com -yxacc6.com -yxad.com -yxaz.com -yxbabe.com -yxbao.com -yxbhhbkj.com -yxbk.com -yxbox91.com -yxbrand.com -yxc.hk -yxcal.com -yxcax.com -yxcc.net -yxcity.com -yxcxfw.com -yxdaily.com -yxdd.com -yxdgc.com -yxdh.com -yxdimg.com -yxdinghuo.com -yxdmgame.com -yxdou.com -yxdown.com -yxdr.com -yxduo.com -yxdwj.com -yxecg.com -yxeht.com -yxen.net -yxepqcbc.com -yxflzs.com -yxfshop.com -yxfw.com -yxfwai.com -yxgcx.com -yxgczx.com -yxgf.net -yxgxbike.com -yxgxw.com -yxgxz.com -yxgzs.com -yxhao.com -yxhapi.com -yxhenan.com -yxhhdl.com -yxhhr.com -yxhi.com -yxhimg.com -yxhjgs.com -yxholding.com -yxhqj.com -yxhy.asia -yxhyu.com -yxi.cc -yxiangzu.com -yxiannetgz.com -yxianypin.com -yxid.net -yxielts.com -yxilogistics.com -yximgs.com -yxin18.com -yxinbao.com -yxintent.com -yxit.net -yxixy.com -yxjia.com -yxjjdby.com -yxjkhb.com -yxjob.net -yxjs.org -yxjsjg.com -yxjuren.com -yxjyy.net -yxk120.com -yxkfw.com -yxkjlcd.com -yxkxyghx.org -yxlaba.com -yxlady.com -yxlady.net -yxle.net -yxlele.com -yxlink.com -yxlmdl.net -yxlqge.com -yxlsj.com -yxm.com -yxmarketing01.com -yxmcu.com -yxmxc.com -yxn.fun -yxnu.net -yxnxz.com -yxool.com -yxopt.com -yxou.com -yxph.com -yxpk.net -yxpms.com -yxptfs.com -yxqiche.com -yxrb.net -yxrcw.com -yxrj.com -yxsc33.com -yxsea.com -yxsgame.com -yxsj.net -yxsos.com -yxss.com -yxsxhj.com -yxt-tattoo.com -yxt.com -yxtidc.com -yxtk.xyz -yxttzb.com -yxtvg.com -yxuankeji.com -yxun.net -yxwh5.com -yxwic.com -yxwsgame.com -yxx-china.com -yxxgame.com -yxxurl.com -yxxzbox.com -yxybb.com -yxydns.com -yxylbz.com -yxyy33.com -yxyzjx.com -yxz.me -yxzb.tv -yxzcemet.com -yxzd.info -yxzggame.com -yxzhi.com -yxzoo.com -yxzp.net -yxzq.com -yxzu.com -yxzxgy.com -yxzzd.com -yy.com -yy11.com -yy138.com -yy2169.com -yy2hd.com -yy365.com -yy4080.com -yy502.com -yy520.com -yy591.com -yy845.com -yy960.com -yyarea.com -yyblly.com -yybnet.net -yybox.cc -yycec.com -yyclouds.com -yyclub.org -yycoin.com -yycqc.com -yycqfw.com -yyctrade.com -yyczxt.com -yydbzz.com -yydcs.com -yyddss.vip -yydl-china.com -yyds.co -yyds.pink -yyds.space -yydsmh.com -yydsok.com -yydszp.com -yydy.com -yydzh.com -yyearth.com -yyej.com -yyestar.com -yyets.com -yyfax.com -yyfdcw.com -yyfqm.com -yyfsb.com -yyfunning.com -yyg.com -yyg120.com -yyg7.com -yygamedev.com -yyge.com -yygold.com -yygongzi.com -yygrammar.com -yyh78.com -yyha168.com -yyhao.com -yyhh.com -yyhn365.com -yyhybz.com -yyi100.com -yyijt.com -yyixx.com -yyizu.com -yyjingyan.com -yyjxkj.com -yyjzt.com -yyk100.com -yykj.site -yykj2003.com -yykj8775.com -yykpx.com -yylending.com -yylivens.com -yylm.org -yymedias.com -yyming2.com -yymoban.com -yynetwk.com -yynykj.com -yyouren.com -yyoz.com -yypf-china.com -yypt.com -yyq.com -yyquan.vip -yyqyweb.com -yyqyyyy.com -yyrc.com -yyrec.com -yyrenting.com -yyrjd.net -yyrtv.com -yysf.cc -yyshangfu.com -yystatic.com -yysweb.com -yyszfsxx.com -yyszq.com -yytad.com -yytcdn.com -yytek.com -yytfood.com -yytiflytek.com -yytingli.com -yyuap.com -yywd.com -yywlsj.com -yywords.com -yyws.net -yywsb.com -yywsbjb.com -yywszzs.com -yywt.online -yywx888.com -yywz123.com -yywzw.com -yyx.com -yyxfilm.com -yyxfplayer.com -yyxmgl.com -yyxsen.com -yyxtao.com -yyxx100.com -yyxxgame.com -yyxxgameyw.com -yyxyjt.com -yyy1389.com -yyyeee.com -yyyisp.com -yyylll.com -yyymvp.com -yyyncp.com -yyyqm.com -yyyvvv.com -yyyxbl.com -yyyy.games -yyyyy.run -yyz100.com -yyzdjd.com -yyzdm.com -yyzf.com -yyzf.vip -yyzls.com -yyzqta.com -yyzqtb.com -yyzsoft.com -yyzw.com -yyzx.org -yyzxcj.com -yyzy-play.vip -yyzyytj.com -yyzzqk.com -yyzzsem.com -yz-iot.com -yz-kjjt.com -yz-li.com -yz-machinery.com -yz-proton.com -yz-show.com -yz-xd.com -yz0752.com -yz168.cc -yz2pp.com -yz2y.com -yz360.cc -yz3c.com -yz3l.com -yz4l.com -yzajz.com -yzbank.com -yzbo.tv -yzbpro.com -yzbqzx.net -yzbsytl.com -yzceg.com -yzckjt.com -yzcn.net -yzcnet.com -yzcrown.net -yzcsoft.com -yzcxx.com -yzcyj.net -yzcyjy.com -yzcyts.com -yzdfyy.com -yzdhxx.com -yzdir.net -yzdjkcy.com -yzdn.net -yzdryer.com -yzdx99.com -yzdxnews.com -yzdyhwh.com -yzeco.com -yzej.com -yzemd.com -yzfang.com -yzfbgjj.com -yzfc8.com -yzfcdn.com -yzfchat.com -yzfdc.net -yzfjy.com -yzfrkf.com -yzftpx.com -yzfybj.com -yzgcsj.com -yzgcyy.com -yzggdj.com -yzgjgs.com -yzgnet.com -yzgttm.com -yzgzx.com -yzhbw.net -yzhcloud.com -yzhdyy.com -yzhejin.com -yzhi.cc -yzhifupay.com -yzhmyy.com -yzhotels.com -yzhp.com -yzhqyy.com -yzhrhl.com -yzhsk.com -yzhuali.com -yzhx.net -yzie.net -yziin.com -yzimgs.com -yzinter.com -yzitc.com -yzj.cc -yzja.com -yzjb.com -yzjdgs88.com -yzjiaozhai.com -yzjj120.com -yzjjw.net -yzjob.net -yzjship.com -yzjsxy.com -yzjtcyjt.com -yzjtech.com -yzjyfz.com -yzkdfcw.com -yzkhfw.com -yzkimage.com -yzkjpcb.com -yzkos.com -yzlngi.com -yzlxjt.com -yzlyxx.com -yzmary.com -yzmat.com -yzmcms.com -yzmcxx.com -yzmg.com -yzmgf.com -yzmiao03.com -yzmls.com -yzmoney.com -yznano.com -yzncms.com -yznn.com -yzntv.com -yzops.net -yzpanstar.com -yzpetfood.com -yzpfbyy.com -yzport.com -yzqcw.com -yzqgamefun.com -yzqx.com -yzqzf.com -yzra900.com -yzrayy.com -yzrb.com -yzrc.net -yzren.com -yzrenai.com -yzrom.com -yzrshop.com -yzrsks.com -yzrss.com -yzrzgroup.com -yzs.com -yzs.io -yzsbh.com -yzsbhjt.com -yzsfuer.com -yzshkjxx.com -yzshyzz.com -yzsljz.com -yzsnen.com -yzsrmyy.org -yzsszw888.com -yzstudio.net -yzstx.net -yzsz.net -yzsz3.icu -yzszsxh.com -yzszyy.com -yzt-tools.com -yzt888.com -yztcdn.com -yztchg.com -yztjb.net -yztzairport.net -yzw.cc -yzwb.com -yzwb.net -yzweekly.com -yzx0771.com -yzxcfdj.com -yzxdyrmyy.com -yzxingyuan.com -yzxw.com -yzxxfzy.com -yzy-gx.com -yzyhyy.com -yzyjhg.com -yzyouth.com -yzywhw.com -yzyxart.com -yzyxgame.com -yzyz.org -yzzcyy.com -yzzd.com -yzzp.com -yzzpw.com -yzzs.cc -yzzsoft.com -yzzxjyjt.com -yzzxxz.com -yzzy-online.com -yzzy20-play.com -yzzy29-play.com -yzzyimages.com -z-bank.com -z-henergy.com -z-inn.com -z.ai -z.wiki -z0.cc -z01.com -z0ukun.com -z120.com -z12345.com -z17.link -z1987.com -z1cdn.com -z211.top -z211.vip -z28j.com -z2chain.com -z2ehospital.com -z2imc.com -z2sci.com -z2u.tv -z3145x0367.com -z316.com -z318.com -z3quant.com -z4bgpo.com -z4gwsoqmcvxt.com -z574.com -z5encrypt.com -z5w.net -z5z4.com -z668.net -z6e.com -z701.com -z729.com -z7xz.com -z82a3814j5.com -z888.net -z8cqv59kh3ip.com -z8q.cc -z9cdn.com -za-cosmetics.com -za-doctor.com -za8g1nx4ft.com -zabxib.com -zac1993.com -zachina.org -zack.asia -zacveh.com -zaduonews.com -zaecu.com -zaeke.com -zaepi.com -zafinsvc.com -zafk120.com -zahtb.com -zahui.fan -zahuishi.com -zahuod.com -zahuoji.com -zai-art.com -zai-xian.com -zaibaoan.com -zaidu.org -zaiduu.com -zaiemei.com -zaifan.com -zaigl.com -zaiguahao.com -zaih.com -zaihuangshi.com -zaijia.com -zaijiawan.com -zailaboratory.com -zailingtech.com -zailouxia.com -zaimanhua.com -zaiminglvsuo.com -zainanjing365.com -zaitong.net -zaiwai.com -zaiweiwx.com -zaixian100f.com -zaixianfanyi.com -zaixiangzx.com -zaixianjisuan.com -zaixiankaoshi.com -zaixianvip.net -zaixs.com -zaiyulin.com -zaiyunli.com -zajiebao.com -zajilu.com -zajourney.com -zakc.group -zaker.com -zaku.fun -zakww.com -zallcn.com -zallgo.com -zallimg.com -zalljinfu.com -zallsoon.com -zallxk.com -zamcs.com -zampdmp.com -zamplink.net -zan.run -zanao.com -zanba.com -zanbai.com -zancar.com -zangao.com -zangaopet.com -zangdiyg.com -zangenggroup.com -zangft.com -zanggekuangye.com -zanghaihuatxt.com -zanglikun.com -zangto.com -zangx.com -zangyitang123.com -zangyitong.com -zanig.com -zanih.com -zankee1955.com -zanlaa.com -zanmeizhibo.com -zanpic.com -zanpu.com -zanyiba.com -zaobang.com -zaoche168.com -zaodao.net -zaodian.com -zaodin.com -zaodula.com -zaofabiao.com -zaofacai.com -zaogai.com -zaojiadoc.com -zaojiance.com -zaojiance.net -zaojiao.com -zaojiaxueshe.com -zaojiu.com -zaojuzi.com -zaojv.com -zaoowoo.com -zaoqiangzhiheng.com -zaowandushu.com -zaowuyun.com -zaoyang.org -zaozuo.com -zapak.com -zapyamobile.com -zaqizaba.xyz -zarcw.com -zarsion.com -zastatic.com -zasv.com -zasv.net -zasysz.com -zasyuhkq.com -zat.cc -zatan.com -zatanb1.com -zatest.com -zaticdn.com -zattc.com -zaucyih.com -zawomkv.com -zaxdcredit.com -zaxisparts.com -zaxline.com -zaxzn.com -zaysz.com -zazhidang.com -zazhipu.com -zazsz.com -zb-kc.com -zb.dehua.tv -zb.pzhgd.com -zb1.org -zb18.net -zb8.com -zb800.com -zbao.com -zbao56.com -zbbar.net -zbbm.net -zbbus.com -zbbx.org -zbc.pub -zbc.wiki -zbca.com -zbcars.com -zbchem.com -zbcyrq.com -zbczce.com -zbdedu.com -zbdzy.com -zbfilm.com -zbgala.com -zbgarden.cc -zbgedu.com -zbgl.net -zbgscm.com -zbhbkj.com -zbhot.com -zbhouse.com -zbhuafx.com -zbii.com -zbinfo.net -zbintel.com -zbird.com -zbisq.com -zbitcloud.com -zbiwl.com -zbj.com -zbj66.com -zbjdev.com -zbjdr.com -zbjiangsu.com -zbjimg.com -zbjsaas.com -zbjwork.com -zbjzgroup.com -zbkb.com -zblcyy.com -zblhh.com -zblhrl.com -zbling.com -zbljw.com -zblogcn.com -zblzm.xyz -zbmag.com -zbmbj.com -zbmeishu.com -zbnews.net -zbom.com -zbopr.net -zboqc.com -zbpengxuan.com -zbqlm.com -zbra-inc.com -zbrhsc.com -zbsfdy.com -zbsjzy.com -zbsonline.com -zbstatic1.com -zbstatic5.com -zbsyzx.com -zbszkj.com -zbt-china.com -zbt.com -zbt.net -zbt100.com -zbtaizhan.com -zbtbjt.com -zbtianao.com -zbudbq.sbs -zbusa.com -zbw315.com -zbwbbs.com -zbwdj.com -zbwg.cc -zbwmy.com -zbwpay.com -zbxcck.com -zbxinmeiti.com -zbxjgs.com -zbxsoft.com -zbxyh.com -zbxyly.com -zby.in -zbyads.com -zbycg.com -zbycorp.com -zbyinghe.com -zbylc.com -zbytb.com -zbyz.net -zbz.com -zbzb.org -zbzdm.com -zbzw.com -zbzw.la -zc-gs100.com -zc-ha.com -zc-it.com -zc0317.com -zc173.com -zc532.com -zc61.com -zc6sigma.com -zcaijing.com -zcawuhvr.com -zcbearing.com -zcbgy.net -zcbm580.com -zcccc.com -zccninfo.com -zccrzx.com -zcdiesel.com -zcdlkeji.com -zcdog.com -zcdz1688.com -zcedi.com -zcedustudy.com -zcfc.com -zcfeed.com -zcfirst.com -zcfuhua.com -zcfun.com -zcfy.cc -zcgg.net -zcgou.com -zcgsfy.com -zcgsh.com -zchat.tech -zchb-water.net -zchmbx.com -zchmh.com -zchospital.com -zchrgroup.com -zcict.com -zcimg.com -zcinfo.net -zcitidc.net -zciv.com -zcjbgame.com -zcjce.com -zcjhsdk.com -zcjxedu.com -zcjxzl.com -zckb001.com -zckdwx.com -zckp.com -zclkj.com -zclock.xyz -zclqzls.com -zcmlc.com -zcmol.com -zcmpark.com -zcnest.com -zcoa365.com -zcobrand.com -zcodesign.com -zcofuture.com -zcom.com -zcomc.com -zcoming.com -zcooler.com -zcosz.com -zcowh.com -zcpc.net -zcpd.cc -zcpm.net -zcpzj.com -zcqh.com -zcqss.com -zcqtz.com -zcrcw.com -zcrczp.com -zcread.com -zcry007.com -zcs.cc -zcsbbs.com -zcscz.com -zcset.com -zcsweb.com -zcszcm.com -zctec.cc -zctl.net -zctpt.com -zctt.com -zctx.com -zctzgr.com -zcwin.com -zcwlsc.com -zcwxjx.com -zcwz.com -zcxcl.com -zcxd9.com -zcxn.com -zcxsl.com -zcycdn.com -zczbzx.com -zczj.com -zczy100.com -zczy56.com -zd-auto.com -zd-brake.com -zd-dl.com -zd-hs.com -zd-pm.com -zd-power.com -zd.hk -zd200572.com -zd315.net -zdanfu.com -zdao.com -zdaoxb.com -zdaq999.com -zdaye.com -zdbfjj.com -zdbiogene.com -zdbnm.com -zdcgc.com -zdcj.net -zdcjw18.com -zdcs666.com -zdctid.com -zddhr.com -zddhub.com -zddjq.com -zddr.com -zddream.com -zdeqs.com -zdevo.com -zdfans.com -zdfdc.com -zdfei.com -zdfjgcjs.com -zdfx.net -zdgkyy.com -zdgxchina.com -zdgzc.com -zdh0.com -zdh168.com -zdhaitao.com -zdhaitao.net -zdhuoyunbao.com -zdhyibiao.com -zdiao.com -zdic.net -zdjt.com -zdkfq.com -zdkqyy.com -zdlink.com -zdlpk.net -zdm.net -zdmimg.com -zdmq.com -zdmq88.com -zdmr.net -zdnph.com -zdnscloud.biz -zdnscloud.com -zdnscloud.info -zdnscloud.net -zdomo.com -zdong.net -zdpower.com -zdrcw.com -zds22.com -zdsdp.com -zdsee.com -zdsfy.net -zdsju.com -zdslb.com -zdsr.net -zdtent.com -zdvalves.com -zdvc.net -zdwafis.com -zdwallcovering.com -zdwang.com -zdwfy.com -zdwmq.com -zdworks.com -zdwx.com -zdwx.net -zdwx.vip -zdxlz.com -zdyfy.com -zdz.la -zdzdm.com -zdzwtesting.com -zdzxtech.com -ze-assemble.com -ze-clock.com -ze-grow.com -ze-introduce.com -ze-invite.com -ze-mp.com -ze-wx.com -zeaho.com -zealer.com -zeali.net -zealquest.com -zealsafe.net -zebangedu.com -zebracdn.com -zebraenglish.biz -zebraenglish.com -zebred.com -zecsma.com -zeda1.com -zedsy.com -zedyer.com -zeedao.com -zeekrlife.com -zeekrline.com -zeelis.com -zeesin.com -zeeteq.com -zeetzj.com -zeewain.com -zegarkirepliki.pl -zego.im -zeguoren.com -zeheng.com -zeidei.com -zeiet.com -zeisis.com -zeisp.com -zeixihuan.com -zejiexinxi.com -zeju.com -zejunpharma.com -zeku.com -zekv.com -zeldacn.com -zelinai.com -zemismart.com -zen-est.com -zencheer.com -zengdefei.com -zengenti.com -zengjunpeng.com -zengjunyin.com -zenglong3d.com -zengrong.net -zengslb.com -zengyongfu.com -zengzeng.net -zenha.net -zenhotspring.com -zenith-group.net -zenithmining.com -zenithspace.net -zenixauto.com -zenkungforging.com -zenlesszonezero.com -zenmen.com -zenner-metering.com -zeno-tech.com -zenoven.com -zenshine-pharma.com -zentao.net -zentaopm.com -zepcc.com -zepdi.com -zeperd.com -zepp.com -zeq366.net -zero2me.com -zerobreeze.com -zerocollege.com -zerogfans.com -zeroling.com -zerongjituan.com -zerontruck.com -zeroonead.com -zeropartner.com -zerotogether.net -zerseager.com -zeruns.com -zerustech.com -zesee.com -zeshengproject.com -zeshengshun.online -zeshengtecphar.com -zesidasi.com -zesmob.com -zeststore.com -zetacn.com -zetaijituan.com -zetast.com -zetbig.com -zetcloud.com -zettlernb.com -zetyun.com -zeusai.xin -zeuux.com -zeuux.org -zexiaoqiao.com -zeyouquan.com -zeyu99.com -zeyuan.shop -zeyuan123.com -zezhengcnc.com -zezhenwangluo.com -zezhuanggd.com -zf313.com -zf360.net -zf3d.com -zfancy.net -zfb369.com -zfboke.com -zfbzhsq.com -zfcm.net -zfdliot.com -zfdmkj.com -zfemc.com -zfengit.com -zffan.com -zfgy88.com -zfhz.org -zfile.vip -zfj1441.com -zfkg.com -zfkjgw.com -zfl9.com -zfnet.net -zfowed.com -zfrontier.com -zfsc.com -zfservicescn.com -zfsf.com -zfsjy.com -zfsjzx.com -zfsoft.com -zft.com -zftime.com -zfty.work -zfvnet.com -zfw.net -zfwlxt.com -zfwx.com -zfxz.com -zfyypt.com -zg-gaoling.com -zg-gyt.com -zg-import.com -zg-imsoft.com -zg-seastar.com -zg114jy.com -zg114w.com -zg114zs.com -zg118.com -zg163.net -zg3721.com -zg388.com -zg58.com -zgaode.com -zgaxr.com -zgazxxw.com -zgbaili.cc -zgbenrun.com -zgbfw.com -zgbghdw.com -zgbk.com -zgblh.com -zgbmcl.com -zgbnt.com -zgboke.com -zgbszf.com -zgby114.com -zgbywl.com -zgc-bigdata.org -zgc261.com -zgcbank.com -zgcbb.com -zgccity.com -zgcdiy.com -zgcgjn.com -zgchawang.com -zgchawenhua.com -zgchospital.com -zgchrx.com -zgcicc.com -zgcindex.org -zgcjm.org -zgcjpx.com -zgclease.com -zgclzzc.com -zgcmc.com -zgcmlm.com -zgcsa.org -zgcswhcbw.com -zgcszkw.com -zgcups.com -zgcwpark.com -zgcxbs.com -zgczgas.com -zgcznet.com -zgczrj.com -zgddek.com -zgddmx.com -zgdjw.com -zgdlfzw.com -zgdlzb.org -zgdmly.com -zgdnjj.com -zgdqcy.com -zgdqjy.com -zgdsw.com -zgdwzp.com -zgdxhbkf.com -zgdych.com -zgdydyxh.com -zgdygf.com -zgdztk.com -zgeyanwo.com -zgfllt.com -zgfp.com -zgfwgj.com -zgfxnews.com -zgfzh.com -zgfznews.com -zgfznj.com -zgg.com -zggas.com -zggbdsw.net -zggbhb.com -zggcks.com -zggd.city -zgggws.com -zgggz.com -zggjgy.com -zggjsmc.com -zggldgj.com -zgglkx.com -zgglyun.com -zggongkao.com -zggqzp.com -zggroups.com -zggtxhw.com -zggua.com -zggwy.com -zggwy.org -zggxgp.com -zggxhj.com -zggxlbc.com -zggxsmlt.com -zggye.com -zggysyw.com -zggzgg.com -zggzzk.com -zgh.com -zghaojiaoyu.com -zghaopingche.com -zghbxh.org -zghctc.com -zghdch.com -zghde.com -zghhzx.net -zghifi.com -zghlzs.com -zghongbiao.com -zghongqi.com -zghotnews.com -zghtcd.com -zghtedu.com -zghtqk.com -zghy.com -zghzp.com -zghzsk.com -zgjcks.com -zgjct.com -zgjgw.com -zgjhjy.com -zgjianfang.com -zgjiaoyan.com -zgjiayang.com -zgjiemeng.com -zgjinglong.com -zgjjzyjy.org -zgjl123.com -zgjm.net -zgjm.org -zgjmorg.com -zgjrcw.com -zgjrjw.com -zgjrw.com -zgjscopper.com -zgjsdsj.com -zgjsks.com -zgjsqw.com -zgjsyw.com -zgjt518.com -zgjtb.com -zgjxcad.com -zgjxjjw.com -zgjymg.com -zgjzy.org -zgkao.com -zgkashi.com -zgkawah.com -zgkfzz.com -zgkjb.com -zgkjcx.com -zgkjw.org -zgkjxww.com -zgkjzx.com -zgkqth.com -zgkqw.com -zgkyb.com -zglb.org -zglcn.net -zglcxyxzz.com -zglcyx.com -zglibrary.com -zglipin.com -zgljl2012.com -zglscom.com -zglushang.com -zglutongjituan.com -zglwb.com -zglww.net -zglxw.com -zglyfair.com -zglyrc.com -zglyz.com -zgmba.com -zgmcxw.com -zgmdbw.com -zgmh.net -zgmicro.com -zgmsbw.com -zgmsbweb.com -zgmscmpm.com -zgmxl.com -zgmzgsx.com -zgmzyyzz.com -zgnfys.com -zgng.com -zgnhzx.com -zgnjm.com -zgnnwdkj.com -zgnt.cc -zgnt.net -zgnwp.com -zgny.com -zgnyw.net -zgnzw.xyz -zgoa.net -zgong.com -zgoog.com -zgpingshu.com -zgpj.net -zgps168.com -zgpts.com -zgpy168.com -zgqbyp.com -zgqcdt.com -zgqczj.com -zgqdrc.com -zgqkgw.com -zgqkk.com -zgqw.com -zgqywhcbw.com -zgqyzxw.com -zgqzjt.com -zgqzswdx.com -zgrcjlxh.com -zgrcjyw.com -zgrd.org -zgrdnews.com -zgrlm.com -zgruisai.com -zgrzbj.com -zgsclp.com -zgsd.net -zgsepri.com -zgserver.com -zgshenglu.com -zgshgs.com -zgshige.com -zgshige.net -zgshjj.com -zgshoes.com -zgshq.com -zgshuhuaxh.com -zgshxd.com -zgshxfw.com -zgshyshyxh.com -zgsj.com -zgsjcn.com -zgsjl8.com -zgsjshy.com -zgslb.net -zgslylw.com -zgsmile.com -zgsmmhw.com -zgsmsy.net -zgsnzj.com -zgsof.com -zgspws.com -zgsssss.com -zgsta.com -zgstly.net -zgswcn.com -zgswzys.com -zgsxzs.com -zgsyb.com -zgsydw.com -zgsynews.com -zgsyqx.com -zgszglfh.com -zgszjs.com -zgtaining.com -zgtcc.com -zgtcyswh.com -zgtghccl.com -zgtianlong.com -zgtianqi.com -zgtjqxh.com -zgtnzx.com -zgtop10.com -zgtuku.com -zgty188.com -zgtygg.com -zgtywdysxh.com -zgtzc.com -zgtzhb.com -zgtzqvk.com -zgui.com -zguonew.com -zgvmxma.com -zgw.com -zgweimeng.com -zgwhfe.com -zgwlwx.com -zgwstxc.com -zgwt.co -zgwypl.com -zgxcc.com -zgxcfx.com -zgxcw.com -zgxetnw.com -zgxf.org -zgxf88.com -zgxh.net -zgxhm.com -zgxk.org -zgxledu.com -zgxmlsp.com -zgxnnews.com -zgxnyhyxh.com -zgxnyxh.com -zgxqwqh.com -zgxrjy.com -zgxsczdldak.com -zgxue.com -zgxytc.com -zgxyzx.net -zgxzcj.com -zgxzhjx.com -zgybsfxh.com -zgycgc.com -zgyeda.com -zgyey.com -zgyhbc.com -zgyhys.org -zgyjlf.com -zgylbx.com -zgylj.com -zgyltz.com -zgyouth.cc -zgys.net -zgyssyxh.com -zgysw.cc -zgytc.com -zgyx.com -zgyxjt.com -zgyxsw.org -zgyxzs.com -zgyygl.com -zgyyjgw.com -zgyykx.com -zgyythy.com -zgyyzn2004.com -zgyzyq.com -zgzb.com -zgzca.com -zgzcw.com -zgzcwy.com -zgzhmz.com -zgzjjcy.com -zgzjzzs.com -zgznh.com -zgznjt.com -zgzpsjz.com -zgzsa.com -zgzsrc.com -zgzszy.com -zgzy.net -zgzypyw.com -zgzyxxzs.com -zgzzs.com -zgzzxx.com -zh-ansheng.com -zh-brimed.com -zh-chem.com -zh-cjh.com -zh-gs.com -zh-hbs.com -zh-heshi.com -zh-hr.com -zh-hz.com -zh-itone.com -zh-jieli.com -zh-jinhang.com -zh-languan.com -zh-longshi.com -zh-piao.com -zh10.com -zh189.com -zh818.com -zh996.com -zha.co -zhaeec.com -zhai14.com -zhaiba.com -zhaibao.vip -zhaibian.com -zhaidou.com -zhaihai.com -zhaijihui.com -zhaijis.com -zhaikexueyuan.com -zhaimansky.com -zhainanba.net -zhainanfulishe.com -zhainanhuayuan.com -zhaipan.vip -zhairport.com -zhaitushe.com -zhaiwuu.com -zhaixiaoniu.com -zhaixue.cc -zhale.me -zhan.com -zhanbanji.com -zhanbuba.com -zhanchenyouqi.com -zhanchily.com -zhandaren.com -zhandian88.com -zhandodo.com -zhang-chu.com -zhang365.com -zhangbj.com -zhangbo.org -zhangchangfa.com -zhangchi.art -zhangdongxuan.com -zhangdu.com -zhangdu5.net -zhangdu520.com -zhange8.com -zhangfeibiao.com -zhangfensir.com -zhangferry.com -zhangfupeng.com -zhanggaoyuan.com -zhangge.net -zhanghaodaren.com -zhanghetianxia.com -zhanghonghong.com -zhanghongliang.com -zhanghuang.com -zhangjet.com -zhangjiee.com -zhangjinyue.com -zhangjunbk.com -zhangkai.red -zhangketong.com -zhangkongapp.com -zhangkoubei.net -zhangku.com -zhangle.com -zhangli2015.com -zhanglinfeng09.com -zhangliziyun.com -zhangluya.com -zhangmen.com -zhangmen.org -zhangmenkid.com -zhangnan.xyz -zhangnq.com -zhangqi.ltd -zhangqiaokeyan.com -zhangqiongjie.com -zhangqiu.cc -zhangqiubus.com -zhangrc.site -zhangread.com -zhangrunnan.com -zhangsenhao.com -zhangshangtong.com -zhangshengcw.com -zhangshengrong.com -zhangshi.org -zhangshuchang.com -zhangsifan.com -zhangtaiwuye.com -zhangtu.com -zhangu365.com -zhangwei.li -zhangwenli.com -zhangwojumian.com -zhangxin.ltd -zhangxinhulian.com -zhangxinkeji.com -zhangxinmj.com -zhangxinxu.com -zhangxiu.com -zhangyi123.com -zhangyoubao.com -zhangyoushijie.com -zhangyu.com -zhangyu39.com -zhangyuanqiang.com -zhangyue.com -zhangyue.net -zhangyue01.com -zhangyue02.com -zhangyue03.com -zhangyuecdn.com -zhangyupeng.com -zhangzepower.com -zhangzhao.me -zhangzhengfan.com -zhangzhongpei.com -zhangzhongyun.com -zhangzhuo.ltd -zhangzidao.com -zhangzifan.com -zhangziran.com -zhangzishi.cc -zhanh.com -zhanhi.com -zhanhome.com -zhanhuidaili.com -zhanhuiniu.com -zhanhuiquan.com -zhanhuo.com -zhanid.com -zhankoo.com -zhankuaqq.com -zhanlingol.com -zhanmang.com -zhanq.net -zhanqi.net -zhanqi.tv -zhanqitv.com -zhanqu.tv -zhanruizb.com -zhanshaoyi.com -zhanshi888.com -zhanshifood.com -zhanshiren.com -zhansu.com -zhantuo.com -zhanuan.com -zhanxingfang.com -zhanyouyun.com -zhanyugroup.com -zhanzhanbao.com -zhanzhangb.com -zhanzhangs.com -zhao-meng.com -zhao123.org -zhaoba.net -zhaobeijing.com -zhaobenshan.tv -zhaobiaoziyuan.com -zhaobide.com -zhaobuxiu.com -zhaocaimall.com -zhaocaiyan.com -zhaochanpin.com -zhaochao.xyz -zhaochongwu.com -zhaoda.net -zhaodanji.com -zhaodaojia.com -zhaodedao.xyz -zhaodigroup.com -zhaodll.com -zhaodns999.com -zhaofangbang.net -zhaofenxiang.com -zhaogang.com -zhaogangimg.com -zhaogui.com -zhaohaowang.com -zhaohe.net -zhaoheng-cpm.com -zhaoiphone.com -zhaojiafang.com -zhaojiao.net -zhaojiaoan.com -zhaojiaxiao.com -zhaojs.com -zhaojunhg.com -zhaoka.com -zhaokaifeng.com -zhaokao.net -zhaokaocn.com -zhaokeli.com -zhaoketang.com -zhaokuaizhao.com -zhaolaobanla.com -zhaoliangji.com -zhaoliming.net -zhaomengtu.com -zhaoming.biz -zhaomishijie.com -zhaomxd.com -zhaoniupai.com -zhaoonline.com -zhaopianzhibo.com -zhaopin.com -zhaopin400.com -zhaopin668.com -zhaopinbao.me -zhaopingou.com -zhaopinrugao.com -zhaopintangyin.com -zhaoplc.com -zhaoqianwang.com -zhaoqiufa.com -zhaoqt.net -zhaoquanwang.vip -zhaoren.net -zhaosf.co -zhaosha.com -zhaoshang.net -zhaoshang100.com -zhaoshang800.com -zhaoshangbang.com -zhaoshangbao.com -zhaoshangdai.com -zhaoshayou.com -zhaosheng.com -zhaosheng365.com -zhaoshixi.com -zhaosifang.com -zhaosuliao.com -zhaosw.com -zhaosy.com -zhaota8.com -zhaotaicaiyin.com -zhaotu.com -zhaouc.com -zhaouc.net -zhaowenyu.com -zhaowofanyi.com -zhaoxi.org -zhaoxiangliao.com -zhaoxiangyd.com -zhaoxiaoshuo.com -zhaoxin.com -zhaoxitech.com -zhaoxuncaijing.com -zhaoyanblog.com -zhaoyangmao.com -zhaoyangsem.com -zhaoyangxueyuan.com -zhaoyaojd.com -zhaoyasai.com -zhaoybbk.com -zhaoyingtian.com -zhaoyinqian.com -zhaoyl.com -zhaoyo.com -zhaoyuan365.com -zhaoyun.com -zhaozhanxu.com -zhaozhishi.com -zhaozhonggong.com -zhaozongjie.com -zhaqtuu.xyz -zharev.com -zhatoufa.com -zhatuyunshu.com -zhayanwang.com -zhb1.com -zhbit.com -zhblawyer.com -zhboyang.com -zhbus.org -zhbx.net -zhby-point.com -zhcic.com -zhcidian.com -zhckw.com -zhcnews.com -zhcommerce.com -zhcomputing.com -zhcsgc.com -zhctv.com -zhcw.com -zhcyanshi.com -zhdfg.com -zhdgps.com -zhdhq.com -zhdhqc.com -zhdhqcz.com -zhdhqzy.com -zhdmwhg.com -zhdsbang.com -zhe.com -zhe800.com -zhe900.com -zhebei.com -zhebeipharm.com -zhebumai.com -zhechem.com -zhedabingchong.com -zhedu.net -zhefengle.com -zhefuhua.com -zhegu8.xyz -zheiyu.com -zhejiangcheng.com -zhejiangcircuit.com -zhejiangfa.com -zhejiangfc1998.com -zhejianghanpu.com -zhejianglab.com -zhejianglab.org -zhejiangliming.com -zhejianglong.com -zhejiangmuseum.com -zhejiangqinghe.com -zhejiangseed.com -zhejiangzhuohang.com -zhejing.tech -zhekangzc.com -zhekouniu.net -zhekouo.com -zhelaoda.com -zheli.com -zhelibao.com -zhelin.me -zhelixin.com -zheliyin.com -zhen-ao.com -zhen.com -zhenai.com -zhenaihn.com -zhenandl.com -zhenaoyaoye.com -zhenbatech.com -zhenbi.com -zhenbizi.com -zhenchu.cc -zhending-chicken.com -zhendong365.com -zhendonggames.com -zhene.net -zhenfacloud.com -zhenfangyuan.com -zhenfund.com -zhengbang.com -zhengben56group.com -zhengbiaoke.com -zhengcaimall.com -zhengcaishangcheng.com -zhengcehui.com -zhengchang.com -zhengdaijingji.com -zhengdaojiapei.com -zhengdaotang.com -zhengdapeanut.com -zhengdichaiqian.com -zhengdong.cc -zhengdongzulin.com -zhengerpin.com -zhengfalaw.com -zhengfayunpt.com -zhengfengnet.com -zhenggang.org -zhenggui.com -zhengguzhishen.com -zhenghai-ht.com -zhenghangplc.com -zhenghangyq.net -zhenghewuye.com -zhenghong888.com -zhenghuiyaoye.com -zhengjia.com -zhengjianzhao.com -zhengjicn.com -zhengjie.com -zhengjifb.com -zhengjimt.com -zhengkaji.com -zhenglonggroup.com -zhengmeng.net -zhengmin.com -zhengpengbo.com -zhengpic.com -zhengpinle.com -zhengqi100.com -zhengqingsong.com -zhengquan.org -zhengqun123.com -zhengruioi.com -zhengtaidianlan.com -zhengte.net -zhengtongcloud.com -zhengtoon.com -zhenguanyu.biz -zhenguanyu.com -zhenguo.com -zhengwei007.com -zhengwutong.com -zhengxiaoling.com -zhengxinbao.com -zhengxing021.com -zhengxingzhijia.com -zhengxinonly.com -zhengyaing.win -zhengyang-tek.com -zhengyaokeji.net -zhengyee.com -zhengyexing.com -zhengyounet.com -zhengyouyoule.com -zhengyuanfu.com -zhengyutuliao.com -zhengzai.tv -zhengzhaopai.com -zhengzhenxx.com -zhengzhou42195.com -zhengzhoubus.com -zhengzhoutools.com -zhengzhoutx.com -zhengzhouyunmei.com -zhengzihui.com -zhenhaofu.com -zhenhaotao.com -zhenhaotv.com -zhenheli.com -zhenhonggroup.com -zhenhospital.com -zhenhuadj.com -zhenhuan888.com -zhenimg.com -zhenjiatong.com -zhenjingtv.com -zhenkongbang.com -zhenlingjituan.com -zhenlongvip.com -zhenmeidai.com -zhenmeifoods.com -zhenmeigroup.com -zhenpin.com -zhenren.com -zhenrongbao.com -zhenruhotels.com -zhenrun.press -zhensheng.com -zhenshi.com -zhenshigroup.com -zhenshua.com -zhenshungroup.com -zhensiyu.com -zhenstyle.com -zhensuo.tv -zhentaigroup.com -zhentan.la -zhentoo.com -zhenweiexpo.com -zhenwu.com -zhenxiad.com -zhenxiaoshan.com -zhenxiliangshi.com -zhenxin2014.com -zhenxinfu.com -zhenxipin.net -zhenyangshoes.com -zhenye.com -zhenyouliao.com -zhenyoumei.com -zhenyuansoft.com -zhenyunpan.com -zhenzhuchanfu.com -zheshenet.com -zhetao.com -zhetian.org -zhetouniu.com -zheurl.com -zhewanji.net -zhexi.tech -zhexingzx.com -zhexinit.com -zhexinsteel.net -zheye.com -zheyibu.com -zheyinleasing.com -zheyouxinxi.com -zheyuntech.com -zhezheai.com -zhezhekan.com -zhezhewhkj.com -zhezhi.tech -zhfc.com -zhfivehospital.com -zhfund.com -zhfwq.com -zhfyhb.com -zhgc.com -zhgfanyi.com -zhgjx.com -zhgl.com -zhglory.com -zhgn.com -zhgnj.com -zhgreens.com -zhguoguo.com -zhgxjs.com -zhhainiao.com -zhhaitai.com -zhheo.com -zhhfedu.com -zhhfjt.com -zhhlaw.com -zhhlogistics.com -zhhrm.com -zhhs-china.com -zhhuahui.com -zhhuashengjt.com -zhhuihua.com -zhhy-oa.com -zhi-ming.com -zhi-niao.com -zhi.hu -zhi10.com -zhi3.net -zhiaimusic.com -zhiangroup.com -zhiannet.com -zhiantec.com -zhib.net -zhibaimeixue.com -zhibiao168.com -zhibiaow.com -zhibitouzi.com -zhibo.tv -zhibo8.cc -zhibo8.com -zhiboba.com -zhiboohui.com -zhiboqiao.com -zhiboyun.net -zhibs.net -zhibugongzuo.com -zhicaiwang.com -zhicall.com -zhichanli.com -zhichaoxt.com -zhicheng-champion.com -zhicheng.net -zhichepai.com -zhichepin.com -zhichi.com -zhichidata.com -zhichikeji.com -zhichiwangluo.com -zhichiweiye.com -zhicms.cc -zhicyun.com -zhidao91.com -zhidaochuanxin.com -zhidaoplan.com -zhidejian.com -zhidemai.com -zhidesoft.com -zhidi66.com -zhidianfan.com -zhidianlife.com -zhidieyun.com -zhidiy.com -zhidtech.com -zhiduopc.com -zhidx.com -zhienkeji.com -zhierjie.com -zhieruav.com -zhifa.cc -zhifa315.com -zhifang.com -zhifayangfa.com -zhifayiyuan.com -zhifeishengwu.com -zhifengtang.com -zhifou123.com -zhifoukeji.com -zhiftype.com -zhifufu.com -zhifujie.com -zhifuquanzi.com -zhifure.com -zhifux.com -zhifuzi.com -zhigaometal.com -zhige.net -zhigongfu.com -zhigou.com -zhigou888.com -zhigouyp.com -zhiguagua.com -zhiguang.me -zhigudata.com -zhiguf.com -zhiguoguo.com -zhihang100.com -zhihe.link -zhihe.mobi -zhiheiot.com -zhihejia.com -zhihejiaoyu.com -zhihemobi.com -zhihengwangchen.com -zhihepartners.com -zhihevip.com -zhihjf.com -zhihu.com -zhihu.dev -zhihua-tech.com -zhihuangjin.com -zhihudsp.com -zhihuichuangyanshi.com -zhihuicn.cc -zhihuiep.com -zhihuifangdong.net -zhihuihongze.com -zhihuihuiwu.com -zhihuihutong.com -zhihuiji.com -zhihuijingyingba.com -zhihuikangyang.com -zhihuimami.com -zhihuinanzhan.com -zhihuishan.com -zhihuishitang.net -zhihuishu.com -zhihuiwater.com -zhihuixiadan.com -zhihuixl.com -zhihuixuexipt.com -zhihuiya.com -zhihuiyunbo.com -zhihuizhangyu.com -zhihuizp.com -zhihuoseo.com -zhihur.com -zhiji.com -zhijia.com -zhijian114.com -zhijianbao.com -zhijianchuhai.com -zhijianfengyi.com -zhijiangames.com -zhijiannuoche.com -zhijiaow.com -zhijiaow.net -zhijiaoyi.com -zhijiapro.com -zhijiashe.com -zhijidoc.com -zhijie-edu.com -zhijieguo.com -zhijieketang.com -zhijin.com -zhijinwang.com -zhijizhibi.com -zhikaiis.com -zhikao100.com -zhikao365.net -zhikaocn.com -zhikaojy.com -zhikaowangxiao.net -zhiketong.com -zhiketong.net -zhikexun.com -zhikongyangpin.com -zhikuai.com -zhikubao.net -zhil.cloud -zhilandaren.com -zhilehuo.com -zhileiqiye.com -zhilepin.com -zhilian-nb.com -zhilian.com -zhilian.host -zhilianghui.com -zhiliangren.com -zhilianiot.com -zhiliaobiaoxun.com -zhiliaocaibao.com -zhiliaoke.com -zhilidata.com -zhilingshop.com -zhilitraffic.com -zhilongtech.com -zhiluo.net -zhima1688.com -zhimacangku.com -zhimaixiaodian.com -zhimantian.com -zhimapay.net -zhimaquan.net -zhimaruanjian.com -zhimatech.com -zhimawenda.com -zhimaxkf.com -zhimei.com -zhimeibot.com -zhimeijiankang.com -zhimengdaren.com -zhimg.com -zhimi.com -zhiminglawyer.com -zhimodesign.com -zhimoe.com -zhineikaixin.com -zhinengdayi.com -zhinengjianzhan.com -zhinengxia.com -zhinengxiehui.com -zhinengyujia.com -zhinet.com -zhinianboke.com -zhiniceshi.com -zhinikefu.com -zhiniu8.com -zhinuoshuzi.com -zhinvnetwork.com -zhinvxingkeji.com -zhipan.net -zhipeix.com -zhiper.com -zhipianbang.com -zhipianbang.vip -zhipin.com -zhipingke.com -zhipuzi.com -zhiqi.info -zhiqiang.org -zhiqiapp.com -zhiqicms.com -zhiqihuo.com -zhiqihuo.org -zhiqijichu.com -zhiquanxia.com -zhiquapp.com -zhiquyuan.com -zhiqwl.com -zhiren.com -zhiren.ren -zhirenhr.com -zhiribao.com -zhiru.com -zhirui-inv.com -zhirui.net -zhiruiinvest.com -zhiruyi.com -zhisanzhao.com -zhishanfu.com -zhishangnet.com -zhishangsoft.com -zhisheji.com -zhisheng.com -zhishengbang.com -zhishengtec.com -zhishengxinchuang-food.com -zhishi.com -zhishi.tech -zhishif.com -zhishifanli.com -zhishifenzi.com -zhishinn.com -zhishisoft.com -zhishiu.com -zhishiv.com -zhishiwu.com -zhishutang.com -zhishuyun.com -zhisiyun.com -zhisuoyi.net -zhisutui.com -zhitaiparking.com -zhitangvalve.com -zhitaosoft.com -zhitingtech.com -zhito.com -zhitongcaijing.com -zhitongpm.com -zhitouxing.com -zhituad.com -zhitui.com -zhitusoft.com -zhituwujie.com -zhituzhilian.com -zhivisaworld.com -zhiweidata.com -zhiweihome.com -zhiweisoft.com -zhiwenw.com -zhiwgx.com -zhiwo.com -zhiwo.work -zhiwu.com -zhiwushuo.com -zhiwutiyu.com -zhiwutong.com -zhixi.com -zhixiaochengxu.com -zhixiaohuoke.com -zhixiaoren.com -zhixiaosj.com -zhixiaowang.com -zhixin-semi.com -zhixingapp.com -zhixingit.com -zhixingjj88.com -zhixingyunke.com -zhixiu.net -zhixuan.com -zhixue.com -zhixue.org -zhixueyun.com -zhixunfang.com -zhiyakeji.com -zhiyanxuan.com -zhiyazz.com -zhiye.com -zhiyeapp.com -zhiyeguihua.com -zhiyequan.com -zhiyexueyuan.com -zhiyi.com -zhiyicx.com -zhiyinghui.com -zhiyingos.com -zhiyingyang.com -zhiyinhao.com -zhiyinlou.com -zhiyinmanhuawang.com -zhiyinmedia.com -zhiyoo.com -zhiyoubao.com -zhiyousx.com -zhiys.com -zhiyu-china.com -zhiyuan-robot.com -zhiyuanbang.com -zhiyuanshijie.com -zhiyuanxinglvye.com -zhiyuanyun.com -zhiyuanzhongyi.com -zhiyuapp.com -zhiyueit.com -zhiyuequan.com -zhiyun-cn.com -zhiyun-tech.com -zhiyungc.com -zhiyunwang.net -zhiyutianqi.com -zhiyuyg.com -zhizaoyun.com -zhizeu.com -zhizhan360.com -zhizhang.com -zhizhen.com -zhizhi88.com -zhizhibaike.com -zhizhihu.com -zhizhizhi.com -zhizhizhi.net -zhizhonghl.com -zhizhoukeji.com -zhizhoumi.com -zhizhu35.net -zhizhucms.com -zhizhuma.com -zhizhuwu.com -zhizhuyule.com -zhizhuyx.com -zhizihuan.com -zhizihuan.net -zhizugz.com -zhizunbo.com -zhizundun.com -zhizunnews.com -zhizuobiao.com -zhizuobiaojiaoyu.com -zhizuoh5.com -zhizuotu.com -zhj9.com -zhjd.org -zhjdkz.com -zhjgkg.com -zhjgkgjt.com -zhjgongjiao.com -zhjiameng.com -zhjianet.com -zhjingsai.com -zhjj.org -zhjncb.com -zhjtaq.com -zhjtong.com -zhjuche.com -zhjunyi.com -zhjxwh.com -zhjypco.com -zhjzg.com -zhjzgroup.com -zhk.me -zhka.com -zhks.org -zhku.com -zhl.com -zhld.com -zhld88.com -zhlhh.com -zhliaoshe.com -zhliqi.com -zhljq.com -zhlm.com -zhlqjt.com -zhltech.net -zhltraffic.com -zhlyen.com -zhlzw.com -zhmag.com -zhmedcenter.com -zhmeiwen.com -zhmf.com -zhmodaoli.com -zhmold.com -zhmu.com -zhmxchina.com -zhmzqi.com -zhnbj.com -zhnfad.com -zhnsyh.com -zhong-yao.net -zhong.com -zhong100.com -zhongan.com -zhongan.io -zhongancloud.com -zhonganfengshang.com -zhonganguobao.com -zhonganib.com -zhonganinfo.com -zhongankang.com -zhonganweishi.com -zhongbao360.com -zhongbaounion.com -zhongbeiyouhao.com -zhongbenkeji.com -zhongbenwangluo.com -zhongbingtongxin.com -zhongbowenwu.com -zhongboxinwen.com -zhongcai.com -zhongcaistream.com -zhongcaisuo.com -zhongcetech.com -zhongche.com -zhongchebaolian.com -zhongchewuliu.com -zhongchouke.com -zhongchuang365.com -zhongchuangwenhua.com -zhongda021.com -zhongdajc.com -zhongdakang.com -zhongdazm.com -zhongdegroup.com -zhongdemetal.com -zhongdeng.com -zhongdengwang.com -zhongdeschool.com -zhongdexc.com -zhongdi168.com -zhongerp.com -zhongfeiqiao.com -zhongfu.net -zhongfuwatch.com -zhonggenggroup.com -zhonggu56.com -zhongguang.com -zhongguanpetro.com -zhongguinong.com -zhongguobaiyin.com -zhongguobingxue.com -zhongguociwang.com -zhongguoditu.com -zhongguofeng.com -zhongguogouliang.com -zhongguoguwan.com -zhongguohao123.com -zhongguohuo.com -zhongguopeixun.net -zhongguose.com -zhongguosou.com -zhongguoss.com -zhongguowangshi.com -zhongguoym.com -zhonggushipping.com -zhonghaitech.com -zhonghaojituan.com -zhonghe58.com -zhonghegame.com -zhonghengxingufen.com -zhonghengyiyao.com -zhonghhd.com -zhonghongwang.com -zhonghuacar.com -zhonghuacpa.com -zhonghuadiancang.com -zhonghuaent.com -zhonghuamba.com -zhonghuameiwang.com -zhonghuanjianbj.com -zhonghuanus.com -zhonghuaqiming.com -zhonghuasuan.com -zhonghuaying.com -zhonghuilv.com -zhonghuitj.com -zhonghuvalve.com -zhongji.cc -zhongjian.run -zhongjiangapp.com -zhongjianyiliao.com -zhongjiaochuxing.com -zhongjijidian.com -zhongjincc.com -zhongjintongsheng.com -zhongjiujiu.com -zhongjiunanshuo.com -zhongjixinyuan.com -zhongjukiln.com -zhongjunstone.com -zhongkaiedu.com -zhongkao.com -zhongkaohelp.com -zhongkecn.com -zhongkeguan.com -zhongkekc.com -zhongkerd.com -zhongkezhihang.com -zhongkongbancn.com -zhongkongdaikuan.com -zhongleny.com -zhongli.com -zhonglian.com -zhonglianbiao.com -zhonglianguanwei.com -zhongliangxny.com -zhonglianhuashu.com -zhonglianhuaxin.com -zhonglianyx.com -zhongliusp.com -zhongliuyiyuan.com -zhonglue-consulting.com -zhonglun.com -zhonglunnet.com -zhongluyuntong.com -zhongmaohr.com -zhongmei.com -zhongmeigk.com -zhongmian.com -zhongminenergy.com -zhongmingjiaoyu.net -zhongnakeji.com -zhongnengrecycling.com -zhongnice.com -zhongnongjimu.com -zhongp.com -zhongpaiwang.com -zhongpenggufen.com -zhongping.com -zhongpingcapital.com -zhongpujiancai.com -zhongqijiye.com -zhongqijt.com -zhongqingshao.com -zhongqixin360.com -zhongran.org -zhongrenbang.cc -zhongruihuacheng.com -zhongruitech.com -zhongruiyaoye.com -zhongsenmenye.com -zhongshan-hotel.com -zhongshanchengtai.com -zhongshang114.com -zhongshanpark.com -zhongshantoukong.com -zhongshanweixin.com -zhongshanzhekai.com -zhongshengdai.com -zhongshenglong.xyz -zhongshi-chem.com -zhongshiqixie.com -zhongshucan.com -zhongshungroup.com -zhongshuopg.com -zhongso.com -zhongsou.com -zhongsou.net -zhongtaihangzhou.com -zhongtaitrust.com -zhongtefamen.com -zhongtiancloud.com -zhongtieyintong.com -zhongtong.com -zhongtongshe.com -zhongtou.co -zhongtuiguang.com -zhongtuirong.com -zhongtuobang.com -zhongtusy.com -zhongwang.com -zhongwangsc.com -zhongwei-info.com -zhongweicable.com -zhongweihotels.com -zhongweiteamtop.com -zhongwen.wiki -zhongwenhexinqikan.com -zhongwogroup.com -zhongwucan.com -zhongwulian.com -zhongxiang.com -zhongxiangdichan.net -zhongxiangwang.co -zhongxiaole.net -zhongxiaoyl.com -zhongxingglove.com -zhongxinjzzs.com -zhongxinkeji.vip -zhongxinwei.net -zhongxinzhongxue.com -zhongxisunve.com -zhongxuchem.com -zhongxues.com -zhongxuewuyou.net -zhongxuewy.net -zhongxunrunda.com -zhongxuntv.com -zhongxuyiyuan.com -zhongyagroup.com -zhongyangkeji.com -zhongyangweixiu.com -zhongyao365.com -zhongyaokiln.com -zhongyapeicui.com -zhongyasmart.com -zhongyejy.com -zhongyf.com -zhongyi6.com -zhongyi9999.com -zhongyibaodian.com -zhongyihe.shop -zhongyiinc.com -zhongyiiot.com -zhongyiju360.com -zhongyingtougu.com -zhongyingyiyao.com -zhongyinlawyer.com -zhongyishangwu.com -zhongyisousuo.com -zhongyiyisheng.com -zhongyoo.com -zhongyouai.com -zhongyouex.com -zhongyougc.com -zhongyoumedia.com -zhongyu.com -zhongyu87.xyz -zhongyuan-sports.com -zhongyuanauto.com -zhongyue001.com -zhongyuefuwu.com -zhongyulian.com -zhongyunjt.net -zhongyunjy.com -zhongyunqianbao.com -zhongyuyx.com -zhongzaisheng.net -zhongzeny.com -zhongzetherapeutics.com -zhongzhaizs.com -zhongzhao.com -zhongzhen56.com -zhongzhenjiaoyu.com -zhongzhensen.com -zhongzhi-faqian.com -zhongzhide.com -zhongzhifaqian.com -zhongzhiiov.com -zhongzhilin.com -zhongzhixin.com -zhongzhixitong.com -zhongzhongkeji.com -zhongzhoulianhe.com -zhongzhouwater.com -zhongzhuang.com -zhongzilu.com -zhonshian.com -zhou.icu -zhouao.com -zhoubaitong.net -zhoubianyou.com -zhouchun.net -zhoudaosh.com -zhoufengsd.com -zhougong.com -zhouhaismart.com -zhouhing.com -zhouhoulin.com -zhoujiahong.com -zhoujianhui.com -zhoujifood.com -zhoujunji.com -zhoukaiwen.com -zhoulaoshi.club -zhoulingjie.com -zhoupu123.com -zhoupudata.com -zhouql.vip -zhouweitong.site -zhouxianghb.com -zhouxiaoben.info -zhouxingchi.info -zhouxuanyu.com -zhouyi.biz -zhouyi.cc -zhouyi114.com -zhouyiapi.com -zhouyou360.com -zhouyouji.world -zhouzhuang.net -zhpca.com -zhpecc.com -zhpharm-sh.com -zhqgtjxh.com -zhqyue.com -zhrct.com -zhrczp.com -zhrtc.com -zhsapphire.com -zhsc.net -zhsecurity.net -zhsho.com -zhshw.com -zhsrcw.com -zhsumarc.com -zhsunway.com -zhsw.org -zhswfw.com -zhszcz.com -zht-cn.com -zhtdtech.com -zhtelecom.com -zhtfw.net -zhtgroup.com -zhthg.com -zhtlq.com -zhtmid.com -zhty.net -zhtyljt.com -zhuainiu.com -zhuajiyou.com -zhualeyixia.com -zhuamali.com -zhuancorp.com -zhuanfa.net -zhuanfou.com -zhuang520.com -zhuangbutong.com -zhuanghebm.com -zhuangji.net -zhuangjiba.com -zhuangjinshanhe.com -zhuangkou.com -zhuangku.com -zhuangpeitu.com -zhuangshengsheng.com -zhuangshijituansheji.com -zhuangxiang.cc -zhuangxiaomi.com -zhuangxiu.com -zhuangxiu567.com -zhuangxiubao.com -zhuangyanyanglao.com -zhuangyuantao.com -zhuangzhuang.net -zhuanhuamao.com -zhuanhuanqi.com -zhuanhuanqi.net -zhuaniao.com -zhuaninc.com -zhuankeapp.com -zhuankebang.com -zhuankezu.com -zhuanlichaxun.net -zhuanliqiao.com -zhuanmenmian.com -zhuanpinyin.com -zhuanqianba.net -zhuanspirit.com -zhuanstatic.com -zhuanwaifu.com -zhuanyejun.com -zhuanyepeixun.com -zhuanyes.com -zhuanyewanjia.com -zhuanyezhidao.com -zhuanyizhuanw.com -zhuanyun.cc -zhuanyun123.com -zhuanzfx.com -zhuanzhi.net -zhuanzhuan.com -zhuatang.com -zhuaxia.com -zhuayao.net -zhuayou.com -zhuayoukong.com -zhuayuya.com -zhuazi.com -zhubai.love -zhubai.pub -zhubaijia.com -zhubajie.com -zhubajie.la -zhubangbang.com -zhubao.com -zhubao668.com -zhubaowo.com -zhubian.com -zhubiaoju.com -zhubijiao.com -zhubo123.com -zhuboqiang.com -zhuceshenzhengongsi.com -zhuceyou.com -zhuchao.cc -zhucheng.com -zhuchengdc.com -zhuchuang.club -zhudai.com -zhudianquan.com -zhufaner.com -zhufangdianping.com -zhufengpeixun.com -zhuge.com -zhuge888.com -zhugeapi.com -zhugeapi.net -zhugeculture.com -zhugefang.com -zhugejianzhi.com -zhugexuetang.com -zhuhai-holitel.com -zhuhaidutyfree.com -zhuhaigh.com -zhuhaihuwai.com -zhuhaily.com -zhuhaimarathon.com -zhuhd.win -zhuhua.com -zhuhudong.com -zhuige.com -zhuigong.com -zhuiguang.com -zhuiguangzhe.com -zhuihd.com -zhuihuodong.com -zhuimabk.com -zhuimeng8.com -zhuimengzhu.com -zhuinianqing.com -zhuinw.com -zhuiqu.com -zhuishu.la -zhuishukan.com -zhuishushenqi.com -zhuishuwang.com -zhuishuyun.com -zhuitiankeji.com -zhuiwan.org -zhuiwen.org -zhuiyi.ai -zhuiyi123.com -zhuiyigemeng.fun -zhuji.com -zhuji.net -zhuji5.com -zhuji66.com -zhujia100.com -zhujia360.com -zhujiajiao.com -zhujiangbeer.com -zhujiangfuji.com -zhujiangrc.com -zhujiangroad.com -zhujianptcn.com -zhujib.com -zhujibaike.com -zhujibank.com -zhujicankao.com -zhujiceping.com -zhujipindao.com -zhujipower.com -zhujirc.com -zhujisou.com -zhujitao.com -zhujiwanjia.com -zhujiwiki.com -zhujiwu.com -zhujizixun.com -zhukai.com -zhukang.tech -zhukao666.com -zhuke.com -zhul.in -zhulang.com -zhulang.net -zhulanli.com -zhulemei.com -zhuli999.com -zhulianwines.com -zhulincat.com -zhulinedu.com -zhulinweiye.com -zhulixiaolie.com -zhulogic.com -zhulong.com -zhulong360.com -zhulongjiang.com -zhulouren.com -zhulu86.com -zhulubox.com -zhulusoft.com -zhuluyy.com -zhumanggroup.com -zhumanggroup.net -zhumaweb.com -zhumengwl.com -zhumingepc.com -zhumiquan.com -zhumotech.com -zhumu.me -zhumulive.com -zhuna.net -zhunaerminsu.com -zhunbai.com -zhunc.vip -zhundao.net -zhundaoyun.com -zhuneicdn.com -zhuneijs.com -zhuniangjia.com -zhuniu.com -zhunnai.com -zhunshitianqi.com -zhunter.com -zhuntui.com -zhunzha.com -zhuo.com -zhuo.re -zhuobao.com -zhuobufan.com -zhuodai.net -zhuofan.net -zhuofansoft.com -zhuoguang.net -zhuohaomao.com -zhuohuamg.com -zhuohuan-ep.com -zhuojuead.com -zhuokai1.com -zhuolaoshi.com -zhuolaoshi.net -zhuoligk.com -zhuomaiyun.com -zhuomiles.com -zhuomogroup.com -zhuoquapp.com -zhuoqun.info -zhuoqun.xyz -zhuoqundianli.com -zhuoshigroup.com -zhuoshixiong.com -zhuotianchike.com -zhuotingwl.com -zhuoxun68.com -zhuoyachina.com -zhuoyi.com -zhuoyigame.com -zhuoyigame.site -zhuoyitm.site -zhuoyixuan.com -zhuoykeji.com -zhuoyou.com -zhuoyoutech.com -zhuoyue78.com -zhuoyuechenxing.com -zhuoyuegame.com -zhuoyuegame.net -zhuoyuesuoxue.com -zhuoyuezhongxue.com -zhuozhan.com -zhuozhengsoft.com -zhuozhoufangchan.com -zhuozhourencai.com -zhuozhuogame.com -zhupinhr.com -zhuqinit.com -zhuqiy.com -zhuqiyang.com -zhuqu.com -zhuque.me -zhushan.cc -zhushandata.com -zhushiyao.com -zhushou001.com -zhushuiwen.com -zhust.com -zhutao.com -zhutaostudio.com -zhutidasai.com -zhutihome.net -zhutile.com -zhutiwo.com -zhutix.com -zhutix.net -zhutix.vip -zhutou.com -zhutxia.com -zhuwang.cc -zhuwang360.com -zhuwona.com -zhux2.com -zhuxian.com -zhuxianfei.com -zhuxiaobang.com -zhuxuezi.com -zhuye.kim -zhuye.xyz -zhuye123.com -zhuyili.org -zhuyitai.com -zhuyst.cc -zhuzao.com -zhuzaobang.com -zhuzaocloud.com -zhuzhai.com -zhuzher.com -zhuzhichao.com -zhuzhou.com -zhuzhoubus.com -zhuzhoumarathon.com -zhuzhouwang.com -zhuzhutown.com -zhuzi.me -zhuzihaoke.com -zhuziplay.com -zhw2101024.com -zhwangart.com -zhwdw.com -zhwenxue.com -zhwjw.net -zhwkg.com -zhwxwz.com -zhwyy.com -zhx-mall.com -zhx2008.com -zhxbjsjt.com -zhxcn.com -zhxdfpr.com -zhxfei.com -zhxg.com -zhxgimg.com -zhxhs.net -zhxht.com -zhxinuser.com -zhxjyw.com -zhxnyw.com -zhxqpt.com -zhxszq.com -zhxwq.com -zhxww.net -zhxwzx.com -zhxy1z.com -zhyccw.com -zhycn.com -zhyczx.com -zhyd.me -zhyedu.com -zhyfkj.com -zhyg.org -zhyi828.com -zhyingxiao.com -zhylwx.vip -zhylyy.com -zhyouliang.com -zhyourun.com -zhysdxl.com -zhyymall.com -zhyyz.com -zhz.com -zhzdtz.com -zhzf-group.com -zhzf360.net -zhzh.xyz -zhzpjt.com -zhzxin.com -zhzyw.com -zi-maoqu.com -zi.com -zi0.cc -zi15.com -zi5.cc -zi6.cc -zianwu.com -zibaomuye.com -zibasset.com -zibll.com -ziboborui.com -ziboga.com -zibogongli.com -zibojinling.com -zibomama.com -zibomarathon.com -zibowater.com -zibozhongxue.com -zibsc.com -zichanjie.com -zichen.zone -zicini.com -zicp.fun -zicp.vip -zidan.chat -zidanduanxin.com -zidanduanxin.net -zidg.com -zidian8.com -zidiankeji.com -zidianqu.com -zidianwang.com -zidoo.tv -zidootv.com -zifandiaosu.com -zifumao.com -zigaokj.com -zige365.com -zigeer.com -zigonggroup.com -ziguhonglan.com -zihai0351.com -zihai0535.com -zihai24.com -zihaixiaochengxu.com -zihexin.com -zihexin.net -zihu.com -zihua.li -zihua01.com -zihuazhijia.com -ziir-robot.com -ziisp.com -ziji.work -zijiang.com -zijiangqy.com -zijieapi.com -zijieapi.net -zijiecdn.com -zijiecdn.net -zijiedj.com -zijieimg.com -zijieimg.net -zijiejiaodian.com -zijietiaodong.com -zijieurl.com -zijieurl.net -zijiewap.com -zijiewap.net -zijin365.com -zijinfx.com -zijinji.com -zijinshan.net -zijintiyu.com -zijizhang.com -zikao-zikao.com -zikao.gd -zikao211.com -zikao365.com -zikao5.com -zikaobm.com -zikaocqi.com -zikaogd.com -zikaoj.com -zikaoshu.net -zikaoshu.vip -zikaosw.com -zikeys.com -zikoo-int.com -zikoo.com -zikui-design.com -zilang.net -zilhua.com -zilian5.com -ziliao8.cc -ziliao8.com -ziliaoge.com -ziliref.com -zilongame.com -zilongshanren.com -zilrms.com -ziluolanh.com -zimaa.org -zimilan.com -zimudashi.com -zimufy.com -zimuism.com -zimujiang.com -zimuzu.com -zimuzu.io -zimuzu.tv -zindall.com -zine.la -zinffer.com -zing-api.com -zingfront.com -zingke.com -zinglix.xyz -zingsemi.com -ziniao.com -ziniusoft.com -zinsight-tech.com -zintao.com -zintow.com -zinyon.com -zionpharma.com -ziooc.com -zip118.com -zipadc.com -zipjpg.com -ziqingi.com -ziquyun.com -zircite.com -ziroom.com -ziroomapartment.com -ziroomstay.com -ziruxing.com -zisea.com -zisen.com -zisha.com -zishahuyu.com -zishapot.com -zishu.life -zishuo.com -zishuovideo.com -zisuo.com -zitbbs.com -zitengyu.com -zitern.com -ziti163.com -ziti3.com -ziti88.com -ziti9.com -zitichina.com -ziticq.com -zitidi.com -zitiguanjia.com -zitijia.com -zitixiazai.org -zitongit.com -zituo.net -ziubao.com -zivers.com -zivoo.com -ziwanyouxi.com -ziweicn.com -ziweifu.com -ziweihuan.com -ziwoyou.net -ziwufang.com -ziwuyunjiao.com -zixia.com -zixiaomao.com -zixigua.com -zixijiaoshi.com -zixingxinwen.com -zixueguoxue.com -zixuejie.com -zixueren.com -zixuewang.cc -zixunauto.com -zixunhk.com -zixunkankan.xyz -zixuntop.com -ziy.cc -ziya1337.com -ziyainfo.com -ziyan666.com -ziyanfoods.com -ziyanmm.com -ziyaokj.com -ziye66.com -ziyexing.com -ziyi-health.com -ziyimall.com -ziying.site -ziyou.com -ziyou.studio -ziyoufa.com -ziyouma.net -ziyouwu.com -ziyouxing.net -ziyouziti.com -ziyrta.com -ziyuan.tv -ziyuan605.com -ziyuandai.com -ziyuangou.com -ziyuanku.com -ziyuanlm.com -ziyuanm.com -ziyuanniao.com -ziyuanshare.cc -ziyuantun.com -ziyuanxiyanly.com -ziyuanyuan.com -ziyuen.com -ziyun.com -ziyunshanju.com -zizaike.com -zizailvyou.com -zizdog.com -zizhengfang.com -zizhigx.com -zizhijie.com -zizhuauto.com -zizhuhui.com -zizhupark.com -zizhuyuangongyuan.com -zizi2000.com -zizige.com -zizizaizai.com -zizizizizi.com -zizyw.com -zizzs.com -zj-art.com -zj-ccmi.com -zj-echo.com -zj-equation.com -zj-fhzx.com -zj-gold.com -zj-guojun.com -zj-hc168.com -zj-huawei.com -zj-huishi.com -zj-idc.com -zj-innolight.com -zj-jc.com -zj-jinchen.com -zj-jingyang.com -zj-lenor.com -zj-nongdu.com -zj-nuolong.com -zj-shibo.com -zj-syfj.com -zj-tattoo.com -zj-tiansong.com -zj-tuna.com -zj-tunnel.com -zj-yinlong.com -zj-zhongshe.com -zj-zhx.com -zj-zxjx.com -zj-zyhb.com -zj.com -zj01.com -zj1058.com -zj123.com -zj186.com -zj1991.com -zj1996.com -zj2460.com -zj2car.com -zj31.net -zj315.org -zj32.com -zj339.com -zj8t5.com -zj9.co -zj9.com -zj93zp.com -zj96596.com -zjabank.com -zjabhw.com -zjabjc.com -zjadgroup.com -zjaf.net -zjafl.com -zjags.com -zjaijiagroup.com -zjaikang.com -zjairports.com -zjalky.com -zjalufoil.com -zjamo.com -zjamp.com -zjanchor.com -zjanyy.com -zjaqxy.com -zjart.com -zjasem.com -zjautoparts.com -zjaxyx.com -zjaxzl.com -zjbadminton.com -zjbanger.com -zjbar.com -zjbdc.com -zjbdfood.com -zjbeacon.com -zjbelong.com -zjbhi.com -zjbicycle.com -zjbinya.com -zjblab.com -zjblast.com -zjbolunfilter.com -zjbuc.com -zjbxcn.com -zjbyte.com -zjbyte.net -zjca.org -zjcaoban.com -zjcarnet.com -zjcb.com -zjcbank.com -zjcbcm.com -zjcbjy.com -zjcbl.com -zjcdn.com -zjceia.com -zjcgmetal.com -zjchanghua.com -zjchina.org -zjchuanning.com -zjchuguo.com -zjchunhui.com -zjcio.org -zjcjjt.com -zjckw.org -zjcloud.com -zjcnbank.com -zjcnyb.com -zjcqk.com -zjcrcgas.com -zjcrjzj.com -zjcshjt.com -zjct56.com -zjctm.net -zjcuhb.com -zjcxbank.com -zjcyts.com -zjcyxh.com -zjcyyy.com -zjda.com -zjdadeyy.com -zjdashi.com -zjdata.net -zjdeju.com -zjdeluo.com -zjdetong.com -zjdfc.com -zjdg.com -zjdhky.com -zjdianying.com -zjdjc.com -zjdjqc.com -zjdjxh.com -zjdkjs.com -zjdl.com -zjdlgroup.com -zjdljc.com -zjdljt.com -zjdmxc.com -zjdnajy.com -zjdpco.com -zjdsgroup.com -zjdsz.com -zjdtkg.com -zjdxghy.com -zjdxjs.com -zjdybank.com -zjdydlc.com -zjdyjob.com -zjdzqt.com -zje.com -zjeagles.com -zjeav.com -zjeclean.com -zjecredit.org -zjedps.com -zjedu.com -zjedu.org -zjej.com -zjemec.com -zjeq.com -zjerg.com -zjetc.net -zjevt.com -zjfangchan.com -zjfcdn.com -zjfdc.net -zjfengli.com -zjfish.org -zjfj.net -zjfm.com -zjfszhsw.com -zjft.com -zjftu.org -zjfujiu.com -zjfurnace.com -zjg-edu.com -zjg-jcu.com -zjgas.com -zjgckg.com -zjgcreative.com -zjgengu.com -zjgeyi.com -zjgf88.com -zjgfjt.com -zjgfls.com -zjgj.com -zjgjj.com -zjgkg.com -zjgmwl.com -zjgqt.org -zjgrc.com -zjgroupedu.com -zjgrrb.com -zjgsgroup.com -zjgslb.com -zjgt.com -zjguji.com -zjgwqxh.com -zjgwsc.com -zjgwy.org -zjgwyw.org -zjgycjj.com -zjgyjt.com -zjgzcpa.com -zjgzks.com -zjgzp.com -zjgztz.com -zjgzzc.com -zjh1893.xyz -zjha.org -zjhac.com -zjhaitian.com -zjhangmo.com -zjhangyin.com -zjharbor.com -zjhbdlkj.com -zjhby.com -zjhcbank.com -zjhcly.com -zjhd.com -zjhdchem.com -zjheacc.com -zjheadway.com -zjhejiang.com -zjheliang.com -zjhengshun.com -zjhengyida.com -zjhf.org -zjhfxcl.com -zjhi.net -zjhkele.com -zjhlcnc.com -zjhlgroup.com -zjhlyyjt.com -zjhnlianzhong.com -zjhnrb.com -zjhospital.net -zjhpyy.com -zjhrnet.com -zjhsfs.com -zjhslyw.com -zjhtcm.com -zjhualing.com -zjhuazhe.com -zjhuba.com -zjhui.net -zjhwgroup.com -zjhx520.com -zjhxgf.com -zjhxw.com -zjhyrcb.com -zjhzgy.com -zjhzjt.com -zjhzjtjt.com -zjhzkq.com -zjhzxc.com -zji.net -zjian.net -zjibao.com -zjiec.com -zjiecode.com -zjiekai.com -zjiii.org -zjiis.com -zjim.org -zjimc.com -zjipc.com -zjitc.net -zjivy.com -zjj-holiday.com -zjjaxx.com -zjjcbdt.com -zjjd.org -zjjedu.com -zjjfl.com -zjjfpharm.com -zjjgy.com -zjjgylydjc.com -zjjgzdh.com -zjjh.com -zjjianhong.com -zjjiaoke.com -zjjiaozhou.com -zjjinuo.com -zjjinzi.com -zjjizhi.com -zjjjtec.com -zjjky.com -zjjlvyou8264.com -zjjm.net -zjjmtl.com -zjjn.com -zjjnzyjx.com -zjjr.com -zjjrh.com -zjjrtv.com -zjjs.net -zjjsbank.com -zjjsit.com -zjjsjt.com -zjjstzhb.com -zjjsw.com -zjjta.com -zjjtgc.com -zjjtwxpgs.com -zjjubao.com -zjjudong.com -zjjxjt.com -zjjxsoft.com -zjjy.com -zjjy.net -zjjytyt.com -zjjyxx.net -zjjyzx.com -zjjzxgj.com -zjjzyxh.com -zjkangzh.com -zjkbfjd.com -zjkccb.com -zjkdl.com -zjkdqz.com -zjke.com -zjkelan.com -zjkeling.com -zjkfcapital.com -zjkgdcs.com -zjkgjj.com -zjkim.com -zjkings.com -zjkjob.com -zjklfj.com -zjkmtgc.com -zjknews.com -zjknsn.com -zjkpet.com -zjks.com -zjks.net -zjkszg.com -zjkwhjj.com -zjkyjs.com -zjlande.com -zjlca.com -zjlcwg.com -zjldrcb.com -zjledfbd.com -zjlepu.com -zjlfdq.com -zjlianchi.com -zjlianhua.com -zjlianyingkj.com -zjlindu.com -zjlljt.com -zjlottery.com -zjlsbz.com -zjlsedu.org -zjlvjie.com -zjlxjs.com -zjlxtx.com -zjlzgg.com -zjma.org -zjmaerfj.com -zjmaiou.com -zjmana.com -zjmax.com -zjmc.tv -zjmct.com -zjmetal.com -zjmi-mall.com -zjmi.com -zjmichem.com -zjmif.com -zjmileasing.com -zjminb.com -zjminghong.com -zjmingzhen.com -zjmingzhuang.com -zjminong.com -zjmj.org -zjmjtec.com -zjmkzx.com -zjmobile.com -zjmrhpt.com -zjmrmf.com -zjmsbt.com -zjmtw.com -zjmuex.com -zjmycn.com -zjnad.com -zjnature.com -zjnav.cc -zjnav.com -zjnbxzc.com -zjndjs.com -zjnengyuan.com -zjnews.com -zjnrcb.com -zjnrg.com -zjnthkg.com -zjnzi.com -zjolcdn.com -zjoldns.com -zjorient.com -zjoubbs.com -zjpark.com -zjpcedu.com -zjpci.com -zjpec.com -zjphrcb.com -zjpia.net -zjpjmy.com -zjplan.com -zjpmw.com -zjpoetry.com -zjpost.com -zjpse.com -zjptcc.com -zjpubservice.com -zjqichuang.com -zjqinghu.com -zjqingshan.com -zjqinzijianding.com -zjqjs.com -zjqsysj.com -zjqzsy.com -zjradiology.org -zjrc.com -zjrc.net -zjrcu.com -zjrdl.com -zjrh.net -zjriji.com -zjrob.com -zjrongli.com -zjrq.com -zjrqchina.com -zjrtv.vip -zjrugao.com -zjrunqiang.com -zjrxz.com -zjsairport.com -zjsaisi.com -zjsaisiet.com -zjsalt.com -zjsanji.com -zjsanma.com -zjsaz.com -zjsbigdata.com -zjscdb.com -zjsck.com -zjscs.com -zjsdbjt.com -zjsdjlkj.com -zjseaport.com -zjsee.org -zjsfkj.com -zjsftc.com -zjsgjs.com -zjshangfeng.com -zjshcl.com -zjshibao.com -zjshijian.com -zjshining.com -zjshipyard.com -zjshjkj.com -zjshuangtu.com -zjshuhao.com -zjshuo.com -zjshwl.com -zjsight.com -zjsjcjt.com -zjsjjjt.com -zjsjky.com -zjsjty.com -zjsjtz.com -zjskgr.com -zjskjt.com -zjslep.com -zjslzh.com -zjsms.com -zjspas.com -zjssjt.com -zjsszsjy.com -zjsta.org -zjstar-electric.com -zjstm.org -zjstv.com -zjsuntek.com -zjsuntex.com -zjsw.org -zjswxpx.com -zjsxkj.com -zjsxlt.com -zjsxrz.com -zjsxss.com -zjsxwanding.xyz -zjsyyhyxh.com -zjszbank.com -zjszjz.com -zjszrc.com -zjszsyy.com -zjszyyxh.com -zjszzs.com -zjt2017.com -zjtaa.net -zjtbe.com -zjtcc.com -zjtcjt.com -zjtcn.com -zjtcpm.com -zjtdw.com -zjtdyl.com -zjtea.com -zjteam.com -zjtggroup.com -zjthealth.com -zjtic.com -zjtjw.com -zjtkdz.com -zjtlcb.com -zjtmb.com -zjtmkg.com -zjtntd.com -zjtobacco.com -zjtongde.com -zjtp.com -zjtree.com -zjts.com -zjtxedu.org -zjtyphoon.com -zjtzcx.com -zjtzedu.com -zjtzwater.com -zju88.org -zjubh.com -zjuers.com -zjugis.com -zjuiwz.com -zjujournals.com -zjukf.com -zjun.info -zjuqsc.com -zjut.cc -zjvending.com -zjwandi.com -zjwanma.com -zjwater.com -zjwater.org -zjwc168.com -zjwcjm.com -zjwcqp.com -zjwebapp.com -zjwentou.com -zjwfgroup.com -zjwhhly.com -zjwhyis.com -zjwiki.com -zjwit.net -zjwjrc.com -zjwk.com -zjwmw.com -zjwqw.com -zjws.net -zjwsbidding.com -zjwttools.com -zjwu.net -zjwxbank.com -zjwzba.com -zjwzbearing.com -zjxc.com -zjxcsw.com -zjxf119.com -zjxhbj.com -zjxhedu.com -zjxhgd.com -zjxhxny.com -zjxindongyang.com -zjxindu.com -zjxinghe.com -zjxinyun.com -zjxjrc.com -zjxlmb.com -zjxltz.com -zjxlyp.com -zjxnd.com -zjxpp.com -zjxqyy.com -zjxsbank.com -zjxssj.com -zjxtxs.com -zjxwjs.com -zjxwkg.com -zjxwtoy.com -zjxxkx.com -zjxxt.com -zjxymy.com -zjxzgrd.com -zjyanxing.com -zjyari.com -zjycpx.com -zjyfyxzz.com -zjyhjsjt.com -zjyhqy.com -zjyingcai.com -zjyinzuo.com -zjyiot.com -zjyiyuan.com -zjykrc.com -zjylbx.com -zjylgroup.com -zjyonder.com -zjyoutian.com -zjyq.cc -zjysgroup.com -zjytxl.com -zjyxzzs.com -zjyyc.com -zjyygy.com -zjyzpcxx.com -zjza.com -zjzajsjt.com -zjzcec.com -zjzcen.com -zjzcj.com -zjzfj.com -zjzfjs.com -zjzg.com -zjzhd.com -zjzhengding.com -zjzhengxingyiyuan.com -zjzhengyao.com -zjzhenyou.com -zjzhitan.com -zjzhongcheng.com -zjzhonglan.com -zjzhongtian.com -zjzj.net -zjzj.org -zjzjjx.com -zjzoneng.com -zjzramc.com -zjzrzyjy.com -zjzs.net -zjzsa.com -zjzsco.com -zjzsxb.com -zjzwlab.com -zjzy.com -zjzybiotech.com -zjzydns.com -zjzygroup.com -zjzyxs.com -zk0771.com -zk100.com -zk2013.com -zk5u.com -zk678.com -zk71.com -zk789.net -zkailun.com -zkauto.com -zkb77.com -zkbhj.com -zkbs.net -zkck.com -zkcmg.com -zkcrm.com -zkcserv.com -zkcx.com -zkdt.net -zke999.com -zkecopro.com -zkedrive.com -zkgenergy.com -zkh.com -zkh360.com -zkhb.group -zkhcsoft.com -zkhcsy.com -zkhgchip.com -zkhj618.com -zkicme.com -zkii.net -zking.com -zkjan.com -zkjds.com -zkkailiaoji.com -zkkjpa.com -zkl2333.com -zkmeiling.com -zkmob.net -zknmattress.com -zkoffcn.com -zkpeace.com -zkpk.org -zkrdlab.com -zkreen.com -zkroom.com -zkrsks.com -zksbxhyxh.com -zkscgj.com -zksglaser.com -zkshare.com -zksn.com -zksoftwaresz.com -zksps.com -zksyzy.com -zktecn.com -zkteco.com -zkteco.xin -zktecoiot.com -zktecosj.com -zktest.com -zktimecube.com -zktools.net -zktw.com -zku.net -zkunet.com -zkungfu.com -zkuyun.com -zkw2009.com -zkwtech.com -zkxblog.com -zkxww.com -zkyai.com -zkydib.com -zkyl.vip -zkyouxi.com -zkyxc.com -zkyxls.com -zkzbkj.com -zkzj.org -zkzls.com -zkzn666.com -zkzs.net -zl-steelpipe.com -zl1006.com -zl168.xyz -zl56.com -zl99.org -zlbaba.com -zlbagx.com -zlca.org -zlcool.com -zldatas.com -zldq.org -zle.com -zlf.co -zlfedu.com -zlfind.com -zlfshop.com -zlfzyj.com -zlg.com -zlgcgl.com -zlghr.com -zlglpt.com -zlgmcu.com -zlgpy.com -zlgsj.com -zlh-zh.com -zlhome.com -zlhospital.com -zlhui.com -zlibs.com -zlingad.com -zlink-e.com -zlinkurl.com -zlitoa.cc -zlitoa.com -zljskb.com -zljweb.com -zljx.net -zlkb.net -zlketang.com -zlkj20.com -zlm4.com -zlmlt.com -zlnewlife.com -zlongame.com -zlook.com -zlprc.com -zlpumps.com -zlqb.net -zlqbk.com -zlqh.com -zlqiao.com -zlqx.com -zlr6.com -zls365.com -zlscn.net -zlsin.com -zlsoft.com -zlsqlt.com -zlsss.com -zlsyun.com -zlt365.com -zltglobal.com -zltianhen.com -zlttxl.com -zluren.com -zlview.com -zlvod.com -zlwl.vip -zlwlhse.com -zlx.com -zlxiang.com -zly169.com -zlygjzx.com -zlygu.com -zlysgl.com -zlzlzsl.com -zlzscq.com -zlzt.com -zm-assemble.com -zm-clock.com -zm-ep.com -zm-grow.com -zm-introduce.com -zm-invite.com -zm-mp.com -zm-wx.com -zm0772.com -zm1717.com -zm30.com -zmapp.com -zmaxfilm.com -zmaxhotels.cc -zmbesta.com -zmbg.com -zmbga.com -zmc-china.com -zmcchina.com -zmccx.com -zmclearing.com -zmctc.com -zmd5.com -zmdfcw.com -zmdfdc.com -zmdsbus.com -zmdsjob.com -zmdwater.com -zmdyzkgjt.com -zmdz.com -zmeetb.com -zmeng.cc -zmeng123.com -zmengzhu.com -zmgov.com -zmgrcw.com -zmhttp.com -zmifi.com -zmingcx.com -zmirrordemo.com -zmister.com -zmjiudian.com -zmjm.com -zmkmex.com -zmlearn.com -zmmek.com -zmmio.com -zmndjm.com -zmnedu.com -zmnh.com -zmnjtwx.com -zmnoa.com -zmnrz.com -zmnxbc.com -zmobuy.com -zmpal.com -zmqh.com -zmqmt.com -zmren.com -zmrenwu.com -zmsq.com -zmssh.com -zmtc.com -zmtpc.com -zmtquan.com -zmubf.com -zmufivehospital.com -zmumu.com -zmweb.net -zmwo.com -zmwxxcx.com -zmxph.com -zmye5vly.com -zmyui.com -zmyyc.com -zmz001.com -zmz002.com -zmz003.com -zmz004.com -zmz2019.com -zmzapi.com -zmzapi.net -zmzb.com -zmzjt.com -zmzx.cc -zn99.com -znba.net -znbo.com -znc365.com -zncar.com -zncmjt.com -znczz.com -zndata.com -zndlkj.com -zndls.com -zndns.com -znds.com -znds.net -zndsbbs.com -zndsrom.com -zndstec.com -znelc.com -znfit.com -zngm.com -zngue.com -zngxjt.com -znhhmedical.com -znhospital.com -znhr.com -znhwhw.com -znjchina.com -znjj.tv -znjs.com -znjsjt.com -znjtgf.com -znjttz.com -znlc2015.com -znlcn.org -znlerp.com -znlh.com -znmq.com -znnu.com -znonline.net -znp9.com -znpin.com -znrfwy.com -znrom.com -znrsc.com -znshuke.com -znshuru.com -znsjw.com -znsmart.com -znstartups.com -zntb.net -zntcexpo.com -zntschool.com -zntvrom.com -zntx.cc -znum.com -znwb.com -znxdxs.com -znxhd.com -znxk.net -znyp.com -znypjy.com -znzcompass.com -znzcompass.net -znzmo.com -znzncn.com -znznet.net -znztool.com -znztv.com -znzyf.com -zo-station.com -zo5yap5sdc.com -zoassetmanagement.com -zobmxcfw.com -zocai.com -zocolor.com -zocoxx.com -zodgame.me -zoe360.com -zoebon.com -zoeeasy.com -zoeess.com -zoform.com -zofund.com -zoharforce.com -zohead.com -zohi.tv -zoioo.com -zoje.com -zojirushi-china.com -zokmetal.com -zokogo.com -zol-img.com -zol.com -zollty.com -zoloz.net -zolsky.com -zomanbio.com -zombiescat.com -zomiu.com -zomsky.com -zon100.com -zonafs.com -zonboapp.com -zonci.com -zone-king.com -zone.id -zone139.com -zoneben.com -zoneidc.com -zoneker.com -zonelo.tech -zonen-tech.com -zoneray56.com -zoneve.com -zoneyung.com -zonezu.com -zongcaidetishenqianqi.net -zongdegongju.com -zonghangsl.com -zonghe.com -zonghe888.com -zongheng.com -zongheng001.com -zonghengke.com -zonghengxiaoshuo.com -zonglai.com -zonglikeji.com -zongming.net -zongmutech.com -zongs365.com -zongshengjituan.com -zongtiku.com -zongxiankj.com -zongyiconverge.com -zongyifile.com -zongyigame.com -zongyimobile.com -zongyionline.com -zongyiphone.com -zongyixun.com -zonhen.com -zonsengroup.com -zontes.com -zoocer.com -zoocoffee.com -zooelab.com -zoofon.com -zookingsoft.com -zookparts.com -zoolnasm.com -zoom3g.com -zoomerstudio.com -zoomeye.org -zoomla.net -zoomlion.com -zoomwo.com -zoopda.com -zoossoft.com -zooszyservice.com -zoot.plus -zootope.ink -zooyoo.cc -zoqlan.com -zoranchem.com -zoroli.com -zorrospray.com -zorun.com -zoscape.com -zosurrdc.com -zotiser.com -zotrppzv.com -zotrus.com -zotumgxr.com -zotye.com -zou.la -zouaw.com -zoubiao.com -zoucheng.cc -zoucz.com -zoues.com -zouhong365.com -zouht.com -zouin.net -zoujiang.com -zoukankan.com -zoular.com -zoutu.com -zouzhi.world -zouzhiqiang.com -zovps.com -zowoyoo.com -zoxun.com -zoyoo.net -zoyse.com -zoyst.com -zoyuecs.com -zozen.com -zp.cc -zp.do -zp005.com -zp0716.com -zp114.net -zp365.com -zp515.com -zpan.space -zparking-tech.com -zpascal.net -zpb365.com -zpbtnpl.com -zpc-cn.com -zpcdi.com -zpchaji.com -zpcmshopping.com -zpedu.com -zpedu.org -zpfdc.com -zpgd.net -zphit.com -zphlkj.com -zphospital.com -zpjiashuo.com -zpjkcy.com -zplay.com -zplayworld.com -zpm.so -zpmc.com -zpmg.com -zpparts.com -zppzo.com -zpstar.com -zpt966033.com -zptq.com -zpug.net -zpwamdew.com -zpwcb.com -zpwz.net -zpxrmyy.com -zq101.net -zq12369.com -zq235.com -zq6.com -zqagr.com -zqaqxh.com -zqase.com -zqbykj.com -zqcaf.com -zqcloud.com -zqcloudgame.com -zqcyzg.com -zqd086.com -zqdns37.vip -zqedu.net -zqfdc.net -zqgame.com -zqgreen.com -zqhthr.com -zqhuahui.com -zqic.net -zqids.com -zqjcedu.com -zqjiese.com -zqjinneng.com -zqkjy.com -zqlian.com -zqlx.com -zqnf.com -zqpj.com -zqread.com -zqsign.com -zqsjf.com -zqsos.com -zqsx.net -zqtbg.com -zqtbu.com -zqtong.com -zquan.cc -zquan.org -zqvip8.cc -zqwh.com -zqwxzf.com -zqxsc.com -zqy.com -zqygame.com -zqyxf.com -zqz510.com -zqzd.com -zqzyxx.com -zr-fanuc.com -zr1208.net -zr66.com -zrahh.com -zran88.com -zrblog.com -zrblog.net -zrbx.com -zrcaifu.com -zrcbank.com -zrfan.com -zrfe.com -zrfilm.com -zrhsh.com -zring.com -zritc.com -zrj96.com -zrkjy.com -zrlyyy.com -zrmm.com -zrpta.com -zrpwxgp.com -zrtechnology.com -zrtg-group.com -zrtg.com -zrthink.com -zrtjt.com -zrway.com -zrwjk.com -zrxdsj.com -zry97.com -zrzhpt.com -zs-ah.com -zs-e.com -zs-frd.com -zs-hospital.com -zs-jlc.com -zs-lzlj.com -zs-nj.com -zs-rh.com -zs-united.com -zs6y.com -zs8q.com -zs9.com -zs91.com -zsaber.com -zsacg.com -zsaeroengine.com -zsafedns.net -zsaipay.com -zsamc.com -zsanxing.com -zsaxi.com -zsb2c.com -zsbbk.com -zsbeike.com -zsboai.com -zsbqgz.com -zsbsoft.com -zsbus.wiki -zsbyw.com -zsc-group.com -zscaishang.com -zscbd.com -zscch.com -zsceta.com -zschem.com -zsciupd.com -zscjjt.com -zscollege.com -zsctgroup.com -zscz0768.com -zsd.name -zsdianlan.com -zsdlw.com -zsdown.com -zsedu.net -zsemall.com -zsemi.com -zsengine.com -zseoo.com -zsex.ltd -zsezt.com -zsfund.com -zsfzjs.com -zsg6.com -zsgai.com -zsgcgj.com -zsgd.com -zsgjs.com -zsglrj.com -zsgoodlighting.com -zsgsly.com -zsgzc.com -zsh.com -zsh8.com -zshandsome.com -zshc12306.com -zshcx.com -zshgsoft.com -zshhjt.com -zshield.net -zshl.com -zshnb.com -zshpldbz.com -zshsoft.com -zshszy.com -zshtys888.com -zshuoshao.store -zshuoshao.tech -zshypr.com -zsia.org -zsihuo.com -zsimc.com -zsincer.com -zsite.com -zsj18.com -zsjdxh.org -zsjhsjy.com -zsjhx.com -zsjjob.com -zsjjyp.com -zsjuchuang.com -zsjz.com -zskoubei.com -zsksdw.com -zsksw.net -zslady.com -zslefx.art -zslhs.com -zslin.com -zslp021.com -zsmama.com -zsmls.com -zsmw.net -zsmyy.com -zsmz.com -zsnxapp.com -zspharm.com -zsppsj.com -zsquant.com -zsqx.com -zsr.cc -zsscw.net -zssjzyxh.com -zssl.net -zssmk.net -zssph.com -zssubeihospital.com -zsswjt.com -zssxyy.com -zsszsh.com -zsszyy.com -zstack.io -zstack.org -zstatic.net -zstaticcdn.com -zsthk.com -zstime.com -zstled.com -zsuan.com -zsucai.com -zsufivehos.com -zsvsz.com -zswater.com -zswcn.com -zswebao.shop -zswj.com -zswmailbox.com -zswpqfep.com -zswtjt.com -zswyprkq.com -zsxfsy.com -zsxgzn.com -zsxinsha.com -zsxq.com -zsxq100.com -zsxsoft.com -zsyanxuan.com -zsyknk.com -zsynjt.com -zsysgz.com -zsythink.net -zsytit.com -zsyyart.com -zszk.net -zszq.com -zszxsz.com -zszyss.com -zt-express.com -zt-g.com -zt-info.com -zt-job.com -zt-motor.com -zt0729.xyz -zt1356.com -zt1388.com -zt17.com -zt1f.com -zt24j.com -ztautoparts.com -ztbeijixing.com -ztbest.com -ztcdata.com -ztcexam.com -ztch.ltd -ztcia.com -ztcjjt.com -ztcnwy.com -ztcpa.com -ztdgroup.com -ztdli.com -ztdsp.com -zte.net -ztedevice.com -ztedevices.com -ztedu.com -ztedu8.com -ztehotel.com -ztehotel.net -ztemall.com -ztemap.com -ztems.com -ztestin.com -ztfans.com -ztfsec.com -ztfssc.com -ztgame.com -ztgcglzx.com -ztgy.org -zthrv.com -zthsqx.com -zthx.com -zthx2004.com -ztinfoga.com -ztjczx.com -ztjhuyu.com -ztjinchi.com -ztjoin.com -ztjttz.com -ztjy61.com -ztjystore.com -ztjzgf.net -ztjzht.com -ztkm.com -ztkosen.com -ztky.com -ztkycn.com -ztlycm.com -ztmao.com -ztmvip.com -ztn.com -ztna-dingtalk.com -ztnews.net -ztno.com -ztnwork.com -ztny188.com -zto.com -zto.net -zto56.com -ztoapp.com -ztoglobal.com -ztogroup.com -ztomember.com -ztoyh.com -ztqft.com -ztqqt.com -ztrczp.com -ztrhmall.com -ztrong.com -ztsafe.com -ztshjcb.com -ztsiot.com -ztskc.com -ztt.cc -zttx-exp.com -zttx.com -ztupic.com -ztups.com -ztvcar.com -ztweld.com -ztwlbeijing.com -ztwlgyl.com -ztwzcg.com -ztwzsc.com -ztxinli.com -ztxxr.com -ztxyg.com -ztxygj.com -ztxywy.net -ztxz.cc -ztxzsjt.com -ztyang.com -ztytech.com -ztyyw.com -ztzcnc.com -ztzhbw.com -ztzhgw.com -ztzhsq.com -ztzjt.com -ztzqzg.com -ztzsnn.com -ztzupu.com -ztzy.com -ztzzls.com -zu1tai.com -zu3.com -zuadr.com -zuan-cheng.com -zuan88.com -zuanke8.com -zuanqianyi.com -zuanshi.com -zuanshitoupiao.com -zubei.co -zuber.im -zubunet.com -zucaijia.com -zucangbao.com -zuchang1688.com -zuche.com -zuche900.com -zuchecdn.com -zuchuan.cc -zuciz.com -zucp.net -zudequ.com -zudong.com -zuduijun.com -zueiai.net -zuezu.com -zufang.com -zufangzi.com -zugame.com -zugeliang01.com -zugeqifu.com -zuhao.space -zuhaoapp.com -zuhaofa.com -zuhaohao.com -zuhaowan.com -zuhaowan.net -zuhedaikuan.com -zuhuaizhijia.com -zuhuanhao.com -zui.com -zui5.com -zui88.com -zuiaixs.net -zuiben.com -zuibook.com -zuicool.com -zuidaima.com -zuidijia.com -zuidongxi.com -zuifengyun.com -zuifuli.com -zuigx.com -zuihaodaxue.com -zuihuimai.com -zuihuixue.com -zuijh.net -zuijiao.net -zuik.ren -zuiku.com -zuikzy.com -zuikzy.win7i.com -zuimeia.com -zuimeiqidai.com -zuimeitianqi.com -zuiqiangyingyu.net -zuiqingfeng.com -zuishidai.com -zuitang.com -zuitu.com -zuiwan.net -zuixiaoyao.com -zuixu.com -zuiyanke.com -zuiyou.com -zuiyouxi.com -zuizhifu.com -zuji360.com -zujiant.com -zujuan.com -zujuanku.com -zujuanyi.com -zuk.com -zuka666.com -zukang88.com -zuke.com -zuker.im -zulijian.com -zulin.com -zulinbao.com -zulinks.com -zulllv.com -zulong.com -zulongacmall.com -zulongtea.com -zumbacn.com -zumulv.com -zun.com -zun.gd -zun9.com -zunnou.com -zunsf.com -zunsou.com -zunxiang17.com -zunxun.com -zunxun.net -zunyibus.com -zunyihospital.com -zuo11.com -zuo3.com -zuoanedu.com -zuoanfloor.com -zuobaike.net -zuobiao.press -zuobin.net -zuocaibusiness.com -zuocaicn.com -zuocheng.net -zuodanye.com -zuodao.com -zuodashi.com -zuodia.com -zuofawang.com -zuogj.com -zuoh5.com -zuohaotu.com -zuohome.com -zuohuodong.com -zuoji-scm.com -zuojiachubanshe.com -zuojiang.com -zuojiawang.com -zuojing.com -zuojj.com -zuokesteak.com -zuoli.com -zuolin.com -zuoqu.com -zuoqudashi.net -zuosa.com -zuoshangbao.com -zuoshouyisheng.com -zuoshujiang.com -zuotishi.com -zuoweibc.com -zuowen.com -zuowen.net -zuowen8.com -zuowenjing.com -zuowenjun.com -zuowenku.net -zuowenren.com -zuowenwang.net -zuowenzhitiao.com -zuoyebang.cc -zuoyebang.com -zuoyebao.com -zuoyebao.net -zuoyehezi.com -zuoyesou.com -zuoyou-sofa.com -zuozu.net -zuozuowang.net -zupig.com -zupuk.com -zupulu.com -zuqiuba.com -zuqiuba.net -zusan.com -zushouji.com -zushoushou.com -zuszw.com -zutianke.com -zutingwan.com -zuulee.com -zuwuzhuyi.com -zuxiaoqi.com -zuxiaoyi.com -zuyaxi.com -zuyizhan.com -zuyouzu.com -zuyunfei.com -zuyushop.com -zuzheyong.com -zuzhirenshi.com -zuzitech.com -zuzuche.com -zuzuqueen.com -zviewcloud.com -zving.com -zvryuq7xg31x5g.com -zvstapp.com -zvsts.com -zvv.me -zvvxsco.com -zw-tencentclb.cloud -zw-tencentclb.com -zw-tencentclb.net -zw-tencentclb.work -zw110.com -zw3dp.com -zw69.com -zw885.com -zwads.com -zwayoptik.com -zwaztizp.com -zwbdata.com -zwcad.com -zwcctv.com -zwcnw.com -zwcsm.com -zwcuo.com -zwda.com -zwdn.com -zwdns.com -zwds.cc -zwdsty.com -zwduxs.com -zwechat.com -zwefu.com -zwelec.com -zwfw.com -zwgeek.com -zwgfood.com -zwggb.com -zwgjpx.com -zwgt.net -zwgx.com -zwhuilian.com -zwhz.com -zwie2003.com -zwjczx.com -zwjhl.com -zwjiaoyu.com -zwjk.com -zwjkey.com -zwjl.net -zwk999.com -zwkf.net -zwlhome.com -zwmrxd.com -zwoasi.com -zwoptical.com -zwoptics.com -zwslshy.com -zwsmds.com -zwtianshangm.com -zwtkl8.com -zwtxipr.com -zwuoo.com -zwwank.com -zwwdm.com -zwwlgzs.com -zwwltkl.com -zwwx.com -zwxww.net -zwxx2022.com -zwying.com -zwyll.com -zwzdiy.cc -zwzrent.com -zwzsh.net -zwzyzx.com -zx-tour.com -zx-xcx.com -zx0093.com -zx017.com -zx017.net -zx080.com -zx0818.com -zx100.com -zx10000.com -zx110.org -zx1234.com -zx16f.com -zx181.com -zx18x.com -zx350zx.com -zx42195.com -zx7b.com -zx8.com -zx98.com -zx990.com -zxb12315.com -zxblinux.com -zxbook.net -zxbzr.com -zxchemgroup.com -zxcmk.com -zxcoder.com -zxczw.com -zxd.com -zxd666.com -zxdkj.com -zxdoo.com -zxdu.net -zxdyw.com -zxerp.com -zxfw888.com -zxfwgj.com -zxgcloud.com -zxgj56.com -zxgongshui.com -zxgroup.com -zxgstock.com -zxgzs.com -zxgzw.com -zxhgroup.com -zxhmjj.com -zxhnzq.com -zxhong.com -zxhospital.com -zxhsd.com -zxhuman.com -zxhwzm.com -zxiaosi.com -zxiaoxiang.com -zxicrm.com -zxinc.org -zxingyun.com -zxinzxw.com -zxip.com -zxiti02.com -zxiu.com -zxiw.com -zxiyun.com -zxja.com -zxjkj.com -zxjsq.net -zxjy.net -zxk120.com -zxknow.com -zxkq022.com -zxky007.com -zxl.com -zxlib.com -zxliu.com -zxlo.com -zxls.com -zxmall.com -zxmn2018.com -zxmseed.com -zxneweye.com -zxnic.net -zxnrh.com -zxoid.com -zxopen.com -zxpcloud.com -zxpec.com -zxpmq.com -zxqfjt.com -zxqg.com -zxrcfw.com -zxsauto.com -zxsctf.com -zxshe.com -zxsmd.com -zxsou.com -zxstyl.com -zxswjx.com -zxsx.org -zxsxs.com -zxsygs.com -zxt2007.com -zxtang.com -zxtnetwork.com -zxttax.com -zxtw168.com -zxw1.com -zxwcbj.com -zxwindow.com -zxww1984.com -zxwyouxi.com -zxx.world -zxxk.com -zxxmr.com -zxxww.com -zxxxkj.com -zxxyedu.com -zxydss.com -zxyee.com -zxyingyangyou.com -zxz.ee -zxzhijia.com -zxzls.com -zxzmail.com -zxzt123.com -zxzx8.com -zxzyl.com -zxzyy.com -zy-cam.com -zy-geo.com -zy-textiles.com -zy.com -zy100.com -zy120.com -zy169.net -zy223.com -zy234.com -zy728.com -zy91.com -zy99.net -zyactech.com -zyalc.com -zyan.cc -zyan456.com -zyanzn.com -zyark.com -zyautoe.com -zybang.com -zybaoan.com -zybest.com -zybtp.com -zybuluo.com -zybwhsb.com -zybwj.cc -zybz518.com -zyc123.com -zyccc.com -zyccst.com -zycits.com -zycitscn.com -zycjcrz.org -zycmmt.com -zyctd.com -zycultura.com -zyczg.com -zydanxia.com -zydlks.com -zydown.com -zydsy.com -zydtrip.net -zydza.com -zydzkjcloud.com -zye.cc -zyea.com -zyecp.com -zyedu.org -zyfb.com -zyfbjzsc.com -zyfchina.com -zyfj.com -zyfsz.net -zygames.com -zygj.net -zygjtzjt.com -zygs.com -zygthg.com -zygvqivs.com -zygx8.com -zygxxs.com -zyh365.com -zyhao.com -zyhbjt.com -zyhbxs.com -zyhh.cc -zyhobby.com -zyholding.com -zyhot.com -zyict.net -zying.net -zyip.com -zyiwater.com -zyixi.xyz -zyixinx.com -zyiz.net -zyjhzyy.com -zyjiajiao.com -zyjjt.com -zyjkwh.com -zyjoygame.com -zyjtgas.com -zyjthb.com -zyjymall.com -zyjyxx.com -zyjyyun.com -zyka.cc -zykj0668.com -zykjct.com -zykjgame.com -zykjnet.com -zykpic.com -zyks-lv.com -zykths.com -zyku.net -zyl.me -zylianto.com -zylseo.com -zymc1.com -zymkcdn.com -zymkshop.com -zymreal.com -zyms8.me -zyoffice.com -zyoo.net -zyoogame.com -zyops.com -zyou100.com -zyouexpress.com -zyoulun.com -zyoung.me -zypharm.com -zyplayer.com -zyq.today -zyq366.com -zyqcs.com -zyqjg.com -zyqjs.com -zyqxt.com -zyqzyyy.com -zyrack-china.com -zyrb.com -zyrc168.com -zyrj.org -zyrm.com -zyrykbiandao.com -zys6d.com -zyskys.com -zysljhslt.com -zystarlink.com -zyswsb.com -zysxqgs.com -zysyjqrmyy.com -zyszyx.com -zyt8.com -zytang.net -zytm913.com -zyucan.com -zyue.com -zyun.vip -zyvqb.com -zywjw.com -zywsw.com -zywtc.com -zywvvd.com -zywxgames.com -zywxpress.com -zyxhmm.com -zyxintuo.com -zyxmmovie.com -zyxr.com -zyxuan.org -zyxxlyg.com -zyxyfy.com -zyxzyyy.com -zyydb.com -zyydjk.net -zyyfy.com -zyyimin.com -zyykj168.com -zyylee.com -zyz119.com -zyzhan.com -zyzkb.net -zyzl120.com -zyzw.com -zz-hh.com -zz-invest.com -zz.ci -zz123456789.xyz -zz2024.com -zz2z.com -zz314.com -zz34.com -zz597.com -zz618.com -zz6789.com -zz8j.com -zz91.com -zz96269.com -zz9ivb.com -zzairport.com -zzay.net -zzbaike.com -zzbbs.com -zzbd.org -zzboiler.com -zzboyou.com -zzbs.org -zzbtool.com -zzbtv.com -zzc9.com -zzccom.com -zzccp.com -zzcdnx.com -zzcjby.com -zzcjxy.com -zzcm1.com -zzcm2.com -zzcm5.com -zzcomm.com -zzcrcgas.com -zzd.pub -zzdengji.com -zzdh.net -zzdjw.com -zzdkdz.com -zzdl.com -zzdnews.com -zzdsj.com -zzdtec.com -zzect.com -zzepa.org -zzfcw.com -zzfeilu.com -zzfh.com -zzfly.net -zzfreshair.com -zzfriend.com -zzfxfz.com -zzgcjyzx.com -zzgd.tv -zzgdapp.com -zzgeli.net -zzgjj.com -zzgkyy.com -zzgtjtgs.com -zzguest.com -zzguifan.com -zzhaofang.com -zzhaoz.com -zzhbgs.com -zzhfkm.com -zzhuanruan.com -zzhx56.com -zzhybz.com -zzicpa.com -zzidc.com -zzjdgcxx.com -zzjianyun.com -zzjidi.com -zzjldsx.com -zzjob88.com -zzjsled.com -zzjunzhi.com -zzjxbg.com -zzjyi.com -zzk001.com -zzkcjq.com -zzkehui.com -zzkjgy.com -zzkk.cc -zzksjx.com -zzlcjj.xyz -zzlgxy.net -zzliot.com -zzlirui.com -zzlive.zzc-media.com -zzllq.com -zzlongyou.com -zzlt.net -zzltsw.com -zzluohang.com -zzlvjuren.com -zzlvwang.com -zzmama.net -zzmetro.com -zzmingtai.com -zzmlb.com -zzms.com -zzmxbc.com -zzmy.net -zzmyt.com -zznah001.com -zznst.com -zznyy.com -zzprotect.com -zzptech.com -zzpzh.com -zzq12345.gearhostpreview.com -zzqckj.com -zzqfte.com -zzqiyou.com -zzqklm.com -zzqss.com -zzquan9.com -zzqudu.com -zzqxs.com -zzqz2024.com -zzqzz.com -zzrc.net -zzrcw.net -zzrmyy.com -zzrseng.com -zzs5.com -zzs5.info -zzsdyrmyy.com -zzsey.com -zzsf.com -zzsggzy.com -zzsgjj.com -zzshe.com -zzsi.com -zzsiji.com -zzsin.com -zzsjzyxh.com -zzslyy.com -zzsmt.com -zzsnewell.com -zzspider.com -zzsspnode.com -zzssptop.com -zzsteel.com -zzstep.com -zzszbsw.com -zzszxyy.com -zzt9.com -zzteacher.com -zztender.com -zztfly.com -zzthjixie.com -zztline.com -zztlj.com -zztuku.com -zztv.tv -zztvzd.com -zztxkj.com -zztxt.net -zztyscl.com -zzun777.com -zzusah.com -zzw-hb.com -zzwah.com -zzwanshou.com -zzwenxue.com -zzwgd.com -zzwl.info -zzwljc.com -zzwonder.com -zzwqqx.com -zzwro.com -zzwtjx.com -zzwzj.com -zzxbn.com -zzxca.com -zzxcy.com -zzxdc.com -zzxfjxzz.com -zzxhns.com -zzxmys.com -zzxw.net -zzxworld.com -zzxx.org -zzxy.net -zzy2001.com -zzyan360.com -zzyauto.com -zzycpa.com -zzyecc.com -zzyedu.org -zzyfdj.com -zzyfjc.com -zzygxh.com -zzyiquan.com -zzyjs.com -zzykcd.com -zzyugang.com -zzyxxw.com -zzyyds.com -zzyyrl.com -zzz4.com -zzzdc.com -zzzdm.com -zzzfgjj.com -zzzhtc.com -zzzj.com -zzzla.com -zzzlsh.com -zzznkq.com -zzzppp.com -zzzqqp.com -zzzsxx.com -zzzxwh.net -zzzyb.com -zzzymjg.com -zzzyy.com -zzzyyy.com -zzzzaaaa.com -zzzzzz.me diff --git a/small/luci-app-passwall/root/usr/share/passwall/rules/chnroute b/small/luci-app-passwall/root/usr/share/passwall/rules/chnroute deleted file mode 100644 index 23f895c23d..0000000000 --- a/small/luci-app-passwall/root/usr/share/passwall/rules/chnroute +++ /dev/null @@ -1,4135 +0,0 @@ -1.1.8.0/24 -1.116.0.0/15 -1.118.2.0/24 -1.118.32.0/22 -1.118.36.0/24 -1.119.0.0/17 -1.119.128.0/18 -1.119.192.0/20 -1.119.208.0/22 -1.12.0.0/14 -1.180.0.0/14 -1.184.0.0/15 -1.188.0.0/14 -1.192.0.0/13 -1.2.4.0/24 -1.202.0.0/15 -1.204.0.0/14 -1.24.0.0/13 -1.45.0.0/16 -1.48.0.0/14 -1.56.0.0/13 -1.68.0.0/14 -1.8.1.0/24 -1.8.8.0/24 -1.80.0.0/12 -101.1.0.0/22 -101.104.144.0/20 -101.104.160.0/20 -101.106.0.0/19 -101.124.0.0/16 -101.125.0.0/22 -101.125.130.0/24 -101.125.250.0/23 -101.125.252.0/22 -101.125.4.0/23 -101.125.6.0/24 -101.126.0.0/18 -101.126.128.0/19 -101.126.172.0/22 -101.126.176.0/20 -101.126.192.0/19 -101.126.228.0/22 -101.126.232.0/21 -101.126.240.0/20 -101.126.64.0/19 -101.126.96.0/20 -101.128.0.0/22 -101.129.0.0/16 -101.132.0.0/15 -101.144.0.0/12 -101.16.0.0/12 -101.197.0.0/16 -101.198.0.0/22 -101.198.160.0/19 -101.198.192.0/19 -101.198.4.0/24 -101.199.112.0/24 -101.199.128.0/23 -101.199.196.0/22 -101.199.252.0/22 -101.199.48.0/20 -101.2.172.0/22 -101.200.0.0/15 -101.203.172.0/22 -101.204.0.0/14 -101.224.0.0/13 -101.234.76.0/22 -101.236.0.0/16 -101.237.0.0/19 -101.237.128.0/20 -101.237.33.0/24 -101.237.34.0/23 -101.237.36.0/22 -101.237.40.0/24 -101.240.0.0/14 -101.245.0.0/22 -101.245.128.0/20 -101.245.144.0/22 -101.245.152.0/21 -101.245.16.0/21 -101.245.160.0/20 -101.245.32.0/19 -101.245.64.0/18 -101.245.8.0/21 -101.246.172.0/22 -101.246.176.0/20 -101.247.0.0/18 -101.247.64.0/19 -101.247.96.0/20 -101.248.0.0/15 -101.251.0.0/22 -101.251.128.0/19 -101.251.160.0/20 -101.251.176.0/22 -101.251.192.0/18 -101.251.80.0/20 -101.254.0.0/20 -101.254.128.0/17 -101.254.32.0/19 -101.254.64.0/18 -101.33.128.0/17 -101.34.0.0/15 -101.36.128.0/17 -101.36.64.0/20 -101.37.0.0/16 -101.39.0.0/16 -101.4.0.0/14 -101.40.0.0/16 -101.42.0.0/15 -101.49.206.0/23 -101.49.208.0/24 -101.49.212.0/24 -101.50.56.0/22 -101.50.8.0/21 -101.52.112.0/21 -101.52.124.0/22 -101.52.128.0/20 -101.52.200.0/21 -101.52.212.0/22 -101.52.216.0/21 -101.52.232.0/23 -101.52.236.0/22 -101.52.240.0/20 -101.52.4.0/24 -101.52.6.0/24 -101.53.100.0/22 -101.55.21.0/24 -101.64.0.0/13 -101.72.0.0/14 -101.76.0.0/15 -101.78.0.0/22 -101.80.0.0/12 -101.96.10.0/23 -101.96.128.0/23 -101.96.130.0/24 -101.96.132.0/23 -101.96.134.0/24 -101.96.142.0/23 -101.96.144.0/20 -103.1.168.0/22 -103.1.20.0/22 -103.1.8.0/22 -103.10.0.0/22 -103.10.84.0/22 -103.100.64.0/22 -103.101.124.0/23 -103.101.180.0/22 -103.102.196.0/22 -103.102.200.0/22 -103.102.213.0/24 -103.102.214.0/24 -103.103.12.0/24 -103.103.36.0/24 -103.104.252.0/22 -103.105.0.0/22 -103.105.12.0/22 -103.105.180.0/22 -103.105.184.0/22 -103.105.200.0/23 -103.105.202.0/24 -103.105.220.0/22 -103.105.60.0/22 -103.106.252.0/22 -103.106.36.0/22 -103.107.0.0/22 -103.107.188.0/22 -103.107.216.0/21 -103.108.244.0/24 -103.108.247.0/24 -103.109.20.0/22 -103.110.132.0/22 -103.110.136.0/22 -103.111.172.0/22 -103.111.64.0/24 -103.113.4.0/22 -103.113.92.0/22 -103.114.100.0/22 -103.114.158.0/23 -103.114.212.0/23 -103.114.236.0/22 -103.115.120.0/22 -103.115.248.0/22 -103.115.92.0/22 -103.116.120.0/23 -103.116.123.0/24 -103.116.138.0/23 -103.116.76.0/23 -103.116.78.0/24 -103.116.92.0/22 -103.117.16.0/22 -103.117.220.0/22 -103.117.248.0/22 -103.118.52.0/22 -103.118.60.0/22 -103.119.104.0/22 -103.119.224.0/22 -103.12.184.0/22 -103.12.232.0/22 -103.12.98.0/23 -103.120.224.0/22 -103.120.72.0/22 -103.120.88.0/22 -103.121.164.0/23 -103.121.166.0/24 -103.121.250.0/24 -103.121.52.0/22 -103.122.48.0/22 -103.123.4.0/23 -103.125.236.0/22 -103.126.1.0/24 -103.126.101.0/24 -103.126.102.0/23 -103.126.124.0/22 -103.126.19.0/24 -103.13.12.0/24 -103.13.244.0/22 -103.130.160.0/23 -103.131.138.0/23 -103.131.152.0/22 -103.131.168.0/22 -103.131.176.0/22 -103.132.212.0/23 -103.132.22.0/23 -103.132.234.0/23 -103.133.128.0/23 -103.133.176.0/22 -103.135.160.0/22 -103.135.192.0/23 -103.135.195.0/24 -103.135.196.0/22 -103.135.236.0/24 -103.137.60.0/24 -103.138.156.0/23 -103.139.136.0/23 -103.139.172.0/23 -103.139.212.0/23 -103.14.132.0/22 -103.14.136.0/22 -103.14.78.0/24 -103.140.14.0/23 -103.140.152.0/23 -103.140.228.0/23 -103.141.10.0/23 -103.142.220.0/23 -103.142.234.0/23 -103.142.96.0/23 -103.143.16.0/22 -103.143.228.0/23 -103.144.158.0/23 -103.144.52.0/23 -103.144.66.0/23 -103.144.70.0/24 -103.145.38.0/23 -103.145.42.0/23 -103.145.90.0/24 -103.145.92.0/24 -103.146.126.0/23 -103.147.124.0/24 -103.149.111.0/24 -103.149.181.0/24 -103.149.242.0/24 -103.149.244.0/22 -103.15.4.0/22 -103.15.96.0/22 -103.150.10.0/23 -103.150.164.0/23 -103.150.181.0/24 -103.150.212.0/24 -103.150.24.0/23 -103.151.148.0/23 -103.151.216.0/23 -103.151.228.0/23 -103.152.170.0/23 -103.152.186.0/23 -103.152.224.0/24 -103.152.28.0/23 -103.152.56.0/23 -103.152.76.0/23 -103.153.100.0/23 -103.153.138.0/23 -103.153.36.0/23 -103.154.162.0/23 -103.154.30.0/23 -103.154.41.0/24 -103.155.110.0/23 -103.155.76.0/23 -103.156.174.0/23 -103.156.186.0/23 -103.156.68.0/23 -103.158.0.0/23 -103.159.124.0/23 -103.16.124.0/22 -103.161.220.0/23 -103.161.254.0/23 -103.162.10.0/23 -103.163.180.0/24 -103.163.46.0/23 -103.164.32.0/23 -103.164.76.0/23 -103.165.110.0/23 -103.166.52.0/23 -103.169.50.0/23 -103.169.62.0/23 -103.17.228.0/22 -103.17.40.0/22 -103.170.210.0/23 -103.170.212.0/23 -103.170.4.0/23 -103.172.191.0/24 -103.172.52.0/24 -103.174.94.0/23 -103.175.197.0/24 -103.177.28.0/23 -103.179.78.0/23 -103.180.108.0/23 -103.181.234.0/24 -103.183.122.0/23 -103.183.124.0/23 -103.183.218.0/23 -103.183.66.0/23 -103.184.46.0/23 -103.186.108.0/23 -103.186.4.0/23 -103.189.140.0/23 -103.189.154.0/23 -103.189.92.0/23 -103.19.232.0/22 -103.19.46.0/23 -103.19.64.0/22 -103.190.118.0/23 -103.190.122.0/23 -103.191.102.0/24 -103.191.242.0/23 -103.192.0.0/22 -103.192.132.0/22 -103.192.16.0/20 -103.192.188.0/22 -103.192.208.0/21 -103.192.252.0/22 -103.192.8.0/21 -103.193.188.0/22 -103.193.192.0/22 -103.196.64.0/24 -103.196.88.0/21 -103.197.0.0/22 -103.197.228.0/22 -103.198.124.0/22 -103.198.180.0/23 -103.198.216.0/21 -103.198.224.0/20 -103.198.244.0/22 -103.198.60.0/22 -103.2.108.0/22 -103.2.208.0/22 -103.20.112.0/22 -103.20.128.0/22 -103.20.160.0/22 -103.20.248.0/22 -103.20.32.0/22 -103.200.136.0/21 -103.200.144.0/21 -103.200.220.0/22 -103.200.224.0/24 -103.201.192.0/24 -103.202.0.0/19 -103.202.112.0/22 -103.202.120.0/21 -103.202.128.0/20 -103.202.144.0/22 -103.202.32.0/20 -103.202.92.0/22 -103.202.96.0/20 -103.203.140.0/22 -103.203.216.0/22 -103.203.56.0/22 -103.203.96.0/22 -103.204.72.0/22 -103.205.188.0/22 -103.205.192.0/22 -103.205.252.0/22 -103.205.4.0/22 -103.207.228.0/22 -103.208.12.0/22 -103.208.48.0/22 -103.209.112.0/22 -103.209.136.0/22 -103.21.116.0/22 -103.21.140.0/22 -103.21.176.0/22 -103.210.160.0/22 -103.210.170.0/23 -103.211.220.0/22 -103.211.44.0/22 -103.212.1.0/24 -103.212.109.0/24 -103.212.12.0/22 -103.212.2.0/24 -103.212.4.0/22 -103.212.48.0/23 -103.213.132.0/22 -103.213.144.0/23 -103.213.160.0/19 -103.213.48.0/21 -103.213.60.0/22 -103.213.64.0/19 -103.213.96.0/22 -103.214.48.0/22 -103.215.140.0/22 -103.215.36.0/22 -103.215.44.0/24 -103.216.136.0/22 -103.216.152.0/22 -103.216.252.0/22 -103.216.4.0/22 -103.217.184.0/21 -103.217.192.0/20 -103.218.216.0/22 -103.219.100.0/22 -103.219.176.0/22 -103.219.184.0/22 -103.219.24.0/21 -103.219.32.0/21 -103.219.84.0/24 -103.219.88.0/22 -103.219.92.0/24 -103.22.188.0/22 -103.22.252.0/22 -103.220.124.0/22 -103.220.128.0/19 -103.220.160.0/21 -103.220.240.0/22 -103.220.52.0/22 -103.220.56.0/21 -103.220.64.0/22 -103.220.92.0/22 -103.221.140.0/22 -103.222.176.0/21 -103.222.184.0/22 -103.222.216.0/22 -103.222.33.0/24 -103.222.40.0/22 -103.223.132.0/22 -103.224.220.0/22 -103.224.232.0/22 -103.226.57.0/24 -103.227.120.0/22 -103.227.136.0/22 -103.227.228.0/22 -103.227.76.0/22 -103.227.80.0/22 -103.228.12.0/22 -103.228.136.0/22 -103.228.160.0/22 -103.228.204.0/23 -103.228.208.0/22 -103.228.228.0/22 -103.229.148.0/22 -103.229.172.0/22 -103.229.212.0/22 -103.229.216.0/21 -103.229.236.0/22 -103.23.160.0/22 -103.23.8.0/22 -103.230.110.0/23 -103.230.200.0/22 -103.230.212.0/22 -103.230.236.0/22 -103.231.16.0/24 -103.231.64.0/21 -103.232.144.0/22 -103.232.166.0/23 -103.233.128.0/22 -103.233.136.0/23 -103.233.138.0/24 -103.233.162.0/23 -103.233.4.0/22 -103.233.52.0/22 -103.234.128.0/23 -103.234.20.0/22 -103.234.56.0/22 -103.235.100.0/22 -103.235.136.0/22 -103.235.144.0/24 -103.235.220.0/22 -103.235.224.0/19 -103.235.85.0/24 -103.236.120.0/22 -103.236.244.0/22 -103.236.248.0/21 -103.236.52.0/22 -103.236.56.0/21 -103.236.64.0/19 -103.236.96.0/22 -103.237.176.0/20 -103.237.192.0/19 -103.237.224.0/20 -103.237.240.0/21 -103.237.248.0/23 -103.237.28.0/23 -103.237.8.0/22 -103.238.0.0/21 -103.238.132.0/22 -103.238.144.0/22 -103.238.16.0/22 -103.238.160.0/22 -103.238.180.0/22 -103.238.184.0/21 -103.238.204.0/22 -103.238.48.0/24 -103.238.52.0/22 -103.238.96.0/23 -103.238.98.0/24 -103.239.152.0/22 -103.239.184.0/23 -103.239.192.0/22 -103.239.204.0/22 -103.239.224.0/22 -103.239.244.0/22 -103.239.68.0/22 -103.24.116.0/22 -103.24.176.0/22 -103.24.228.0/22 -103.240.124.0/22 -103.240.16.0/22 -103.240.244.0/22 -103.240.36.0/22 -103.240.84.0/22 -103.241.95.0/24 -103.242.128.0/24 -103.242.130.0/24 -103.242.168.0/23 -103.242.172.0/22 -103.242.212.0/22 -103.243.136.0/22 -103.243.252.0/22 -103.244.232.0/22 -103.244.59.0/24 -103.244.64.0/22 -103.244.80.0/22 -103.245.128.0/22 -103.246.152.0/22 -103.247.168.0/22 -103.247.176.0/22 -103.248.152.0/22 -103.248.224.0/22 -103.249.136.0/24 -103.249.244.0/22 -103.249.252.0/22 -103.249.52.0/22 -103.25.156.0/24 -103.25.20.0/22 -103.25.24.0/22 -103.25.36.0/22 -103.25.64.0/23 -103.250.104.0/22 -103.250.192.0/22 -103.250.216.0/22 -103.250.248.0/21 -103.250.32.0/22 -103.251.124.0/22 -103.251.160.0/22 -103.251.204.0/23 -103.251.207.0/24 -103.251.240.0/22 -103.251.32.0/22 -103.251.84.0/22 -103.251.96.0/22 -103.252.172.0/22 -103.252.248.0/22 -103.252.36.0/22 -103.253.204.0/22 -103.253.232.0/22 -103.253.60.0/22 -103.254.112.0/22 -103.254.188.0/22 -103.254.196.0/24 -103.254.68.0/22 -103.254.76.0/22 -103.255.140.0/22 -103.255.200.0/22 -103.255.68.0/22 -103.255.92.0/22 -103.26.0.0/22 -103.26.64.0/22 -103.26.76.0/22 -103.27.24.0/22 -103.27.240.0/22 -103.27.4.0/22 -103.28.204.0/22 -103.28.212.0/22 -103.28.8.0/24 -103.29.136.0/22 -103.29.16.0/22 -103.29.24.0/23 -103.3.112.0/20 -103.3.128.0/22 -103.3.136.0/21 -103.3.152.0/21 -103.3.96.0/21 -103.30.148.0/24 -103.30.151.0/24 -103.31.200.0/22 -103.31.236.0/22 -103.31.48.0/22 -103.35.104.0/22 -103.36.132.0/22 -103.36.136.0/22 -103.36.164.0/22 -103.36.168.0/21 -103.36.192.0/20 -103.36.208.0/22 -103.36.220.0/22 -103.36.28.0/22 -103.36.36.0/22 -103.36.60.0/22 -103.36.96.0/22 -103.37.100.0/22 -103.37.12.0/22 -103.37.136.0/21 -103.37.144.0/20 -103.37.16.0/22 -103.37.160.0/21 -103.37.172.0/22 -103.37.44.0/22 -103.37.7.0/24 -103.37.72.0/22 -103.38.116.0/22 -103.38.224.0/22 -103.38.232.0/22 -103.38.252.0/23 -103.38.40.0/22 -103.38.76.0/22 -103.38.84.0/22 -103.38.92.0/23 -103.39.200.0/21 -103.39.208.0/20 -103.39.224.0/21 -103.39.232.0/22 -103.39.64.0/22 -103.4.56.0/22 -103.40.12.0/22 -103.40.173.0/24 -103.40.174.0/23 -103.40.192.0/22 -103.40.232.0/22 -103.40.240.0/20 -103.41.0.0/22 -103.41.116.0/22 -103.41.164.0/22 -103.41.232.0/23 -103.42.104.0/22 -103.42.76.0/22 -103.42.8.0/22 -103.43.132.0/24 -103.43.134.0/23 -103.43.184.0/22 -103.43.240.0/23 -103.44.144.0/22 -103.44.168.0/23 -103.44.171.0/24 -103.44.176.0/22 -103.44.236.0/22 -103.44.240.0/20 -103.44.56.0/22 -103.44.80.0/22 -103.45.128.0/19 -103.45.160.0/22 -103.45.168.0/23 -103.45.171.0/24 -103.45.172.0/22 -103.45.176.0/20 -103.45.248.0/22 -103.45.72.0/21 -103.46.12.0/22 -103.46.128.0/21 -103.46.136.0/22 -103.46.16.0/20 -103.46.168.0/22 -103.46.32.0/19 -103.46.64.0/18 -103.47.48.0/22 -103.47.80.0/22 -103.48.232.0/22 -103.49.108.0/22 -103.49.12.0/22 -103.49.196.0/24 -103.49.198.0/23 -103.5.192.0/23 -103.5.194.0/24 -103.5.52.0/24 -103.51.62.0/23 -103.52.100.0/22 -103.52.104.0/23 -103.52.172.0/22 -103.52.176.0/22 -103.52.196.0/22 -103.53.124.0/22 -103.53.208.0/24 -103.53.211.0/24 -103.54.48.0/22 -103.55.172.0/22 -103.55.228.0/22 -103.56.100.0/22 -103.56.104.0/22 -103.56.152.0/22 -103.56.184.0/22 -103.56.60.0/22 -103.56.76.0/22 -103.57.12.0/22 -103.57.136.0/23 -103.57.139.0/24 -103.59.112.0/21 -103.59.124.0/22 -103.59.148.0/22 -103.59.164.0/22 -103.59.168.0/23 -103.6.220.0/22 -103.60.164.0/22 -103.60.228.0/23 -103.60.236.0/22 -103.61.104.0/23 -103.61.153.0/24 -103.61.154.0/23 -103.61.188.0/22 -103.61.60.0/22 -103.62.88.0/23 -103.63.160.0/20 -103.63.176.0/21 -103.63.244.0/22 -103.64.140.0/22 -103.64.144.0/22 -103.64.152.0/21 -103.64.208.0/21 -103.64.24.0/21 -103.65.224.0/23 -103.65.8.0/22 -103.66.32.0/22 -103.68.128.0/22 -103.69.116.0/22 -103.69.16.0/22 -103.7.140.0/22 -103.70.220.0/22 -103.70.8.0/22 -103.71.200.0/23 -103.71.202.0/24 -103.71.232.0/22 -103.71.68.0/22 -103.72.113.0/24 -103.72.120.0/22 -103.72.172.0/24 -103.73.116.0/22 -103.73.136.0/21 -103.73.144.0/22 -103.73.204.0/22 -103.73.48.0/24 -103.74.124.0/24 -103.74.24.0/21 -103.74.48.0/22 -103.74.80.0/22 -103.75.104.0/22 -103.75.152.0/22 -103.76.220.0/22 -103.76.224.0/22 -103.76.60.0/22 -103.77.132.0/22 -103.77.28.0/22 -103.77.72.0/22 -103.77.92.0/22 -103.78.126.0/23 -103.78.228.0/22 -103.78.60.0/22 -103.79.200.0/22 -103.79.228.0/23 -103.79.24.0/22 -103.8.220.0/22 -103.8.32.0/22 -103.8.52.0/22 -103.8.68.0/22 -103.81.123.0/24 -103.81.200.0/22 -103.81.4.0/22 -103.81.48.0/22 -103.82.224.0/22 -103.82.52.0/22 -103.83.120.0/22 -103.83.44.0/22 -103.83.72.0/22 -103.84.136.0/22 -103.84.170.0/23 -103.85.147.0/24 -103.85.164.0/22 -103.85.168.0/21 -103.85.176.0/22 -103.85.84.0/22 -103.87.180.0/22 -103.88.32.0/21 -103.88.64.0/22 -103.88.96.0/22 -103.89.184.0/21 -103.89.192.0/19 -103.89.224.0/21 -103.9.252.0/22 -103.9.8.0/22 -103.90.152.0/22 -103.90.176.0/22 -103.90.188.0/22 -103.90.51.0/24 -103.90.56.0/23 -103.90.80.0/22 -103.90.92.0/22 -103.91.176.0/22 -103.91.208.0/22 -103.92.88.0/22 -103.93.180.0/22 -103.93.204.0/22 -103.94.12.0/22 -103.94.200.0/22 -103.95.252.0/22 -103.95.68.0/22 -103.96.214.0/23 -103.96.224.0/23 -103.96.8.0/22 -103.97.112.0/24 -103.97.144.0/22 -103.97.60.0/24 -103.97.62.0/23 -103.98.0.0/24 -103.98.125.0/24 -103.98.127.0/24 -103.98.15.0/24 -103.98.220.0/22 -103.98.248.0/21 -103.98.44.0/22 -103.99.104.0/22 -103.99.40.0/23 -104.192.108.0/23 -104.192.110.0/24 -104.192.94.0/24 -106.0.4.0/22 -106.108.0.0/14 -106.11.0.0/16 -106.112.0.0/12 -106.12.0.0/17 -106.12.128.0/18 -106.12.192.0/19 -106.12.224.0/20 -106.12.240.0/21 -106.12.250.0/23 -106.12.252.0/23 -106.12.254.0/24 -106.13.0.0/16 -106.14.0.0/15 -106.16.0.0/14 -106.2.100.0/22 -106.2.104.0/21 -106.2.112.0/21 -106.2.124.0/22 -106.2.128.0/19 -106.2.224.0/24 -106.2.232.0/21 -106.2.37.0/24 -106.2.40.0/23 -106.2.42.0/24 -106.2.45.0/24 -106.2.46.0/23 -106.2.48.0/23 -106.2.51.0/24 -106.2.52.0/22 -106.2.56.0/22 -106.2.62.0/23 -106.2.64.0/20 -106.2.81.0/24 -106.2.82.0/23 -106.2.89.0/24 -106.2.92.0/22 -106.2.96.0/24 -106.224.0.0/14 -106.228.0.0/15 -106.230.0.0/16 -106.3.0.0/19 -106.3.128.0/19 -106.3.192.0/20 -106.3.208.0/21 -106.3.224.0/21 -106.3.32.0/20 -106.3.80.0/22 -106.3.88.0/21 -106.3.96.0/22 -106.32.0.0/12 -106.4.0.0/14 -106.48.16.0/21 -106.52.0.0/14 -106.56.0.0/14 -106.60.0.0/15 -106.62.0.0/16 -106.63.0.0/17 -106.74.0.0/16 -106.75.0.0/17 -106.75.128.0/18 -106.75.208.0/20 -106.75.224.0/19 -106.8.0.0/15 -106.80.0.0/13 -106.88.0.0/14 -106.92.0.0/16 -109.111.255.0/24 -109.244.0.0/16 -110.100.0.0/16 -110.112.0.0/15 -110.114.0.0/16 -110.115.128.0/17 -110.116.0.0/16 -110.120.0.0/16 -110.124.0.0/16 -110.125.128.0/17 -110.152.0.0/14 -110.156.0.0/15 -110.16.0.0/14 -110.166.0.0/15 -110.172.200.0/21 -110.173.16.0/20 -110.173.192.0/19 -110.173.32.0/20 -110.173.8.0/21 -110.176.0.0/12 -110.199.0.0/16 -110.203.0.0/23 -110.211.0.0/16 -110.218.0.0/15 -110.228.0.0/14 -110.236.0.0/15 -110.240.0.0/12 -110.40.0.0/24 -110.40.128.0/17 -110.40.13.0/24 -110.40.14.0/23 -110.40.16.0/20 -110.40.32.0/19 -110.40.64.0/18 -110.41.0.0/16 -110.42.0.0/15 -110.51.0.0/16 -110.52.0.0/15 -110.56.0.0/13 -110.6.0.0/15 -110.64.0.0/15 -110.72.0.0/15 -110.75.0.0/16 -110.76.0.0/18 -110.76.156.0/22 -110.76.184.0/22 -110.76.192.0/18 -110.77.0.0/17 -110.80.0.0/13 -110.88.0.0/14 -110.94.0.0/17 -110.96.0.0/16 -111.0.0.0/10 -111.112.0.0/14 -111.116.0.0/15 -111.118.200.0/21 -111.120.0.0/14 -111.124.0.0/16 -111.126.0.0/15 -111.128.0.0/16 -111.132.0.0/16 -111.142.0.0/15 -111.144.0.0/14 -111.148.0.0/16 -111.149.0.0/24 -111.160.0.0/13 -111.170.0.0/16 -111.172.0.0/14 -111.176.0.0/13 -111.186.0.0/15 -111.192.0.0/12 -111.208.121.0/24 -111.208.254.0/24 -111.210.0.0/20 -111.210.16.0/24 -111.211.192.0/18 -111.212.0.0/14 -111.221.128.0/17 -111.221.28.0/24 -111.222.0.0/16 -111.223.12.0/22 -111.224.0.0/14 -111.228.0.0/18 -111.229.0.0/16 -111.230.0.0/15 -111.235.156.0/22 -111.235.160.0/22 -111.235.164.0/23 -111.235.168.0/22 -111.235.172.0/23 -111.235.174.0/24 -111.235.178.0/23 -111.235.180.0/23 -111.235.182.0/24 -111.72.0.0/13 -111.85.0.0/16 -112.0.0.0/10 -112.109.128.0/17 -112.111.0.0/16 -112.112.0.0/14 -112.116.0.0/15 -112.122.0.0/15 -112.124.0.0/14 -112.132.0.0/16 -112.192.0.0/14 -112.196.208.0/24 -112.224.0.0/11 -112.64.0.0/14 -112.74.0.0/16 -112.80.0.0/12 -112.96.0.0/13 -113.0.0.0/13 -113.12.0.0/14 -113.128.0.0/15 -113.130.112.0/21 -113.130.96.0/20 -113.132.0.0/14 -113.136.0.0/13 -113.16.0.0/15 -113.18.0.0/16 -113.192.62.0/23 -113.194.0.0/15 -113.197.101.0/24 -113.197.103.0/24 -113.197.104.0/23 -113.200.0.0/15 -113.204.0.0/14 -113.208.112.0/21 -113.209.128.0/17 -113.21.232.0/21 -113.213.0.0/18 -113.213.64.0/19 -113.213.96.0/20 -113.214.0.0/15 -113.218.0.0/15 -113.220.0.0/14 -113.224.0.0/12 -113.24.0.0/14 -113.240.0.0/13 -113.248.0.0/14 -113.31.144.0/20 -113.31.160.0/19 -113.31.192.0/18 -113.31.96.0/19 -113.44.0.0/16 -113.45.0.0/18 -113.45.102.0/23 -113.45.104.0/21 -113.45.112.0/22 -113.45.120.0/22 -113.45.128.0/17 -113.45.64.0/19 -113.45.96.0/22 -113.46.0.0/16 -113.47.0.0/18 -113.47.104.0/22 -113.47.110.0/24 -113.47.112.0/20 -113.47.128.0/18 -113.47.200.0/21 -113.47.216.0/21 -113.47.232.0/21 -113.47.248.0/21 -113.47.64.0/19 -113.47.96.0/21 -113.48.127.0/24 -113.48.224.0/20 -113.48.48.0/20 -113.49.0.0/20 -113.50.0.0/20 -113.50.32.0/24 -113.50.48.0/20 -113.50.64.0/20 -113.54.0.0/15 -113.56.0.0/15 -113.58.0.0/16 -113.59.0.0/17 -113.59.224.0/22 -113.62.0.0/15 -113.64.0.0/10 -113.8.0.0/15 -114.104.0.0/14 -114.110.0.0/20 -114.110.96.0/22 -114.111.0.0/23 -114.111.16.0/20 -114.111.180.0/22 -114.111.184.0/22 -114.111.188.0/23 -114.111.191.0/24 -114.112.104.0/22 -114.112.136.0/21 -114.112.144.0/21 -114.112.200.0/21 -114.112.208.0/20 -114.112.24.0/21 -114.112.32.0/19 -114.112.4.0/23 -114.112.64.0/19 -114.112.96.0/21 -114.113.144.0/20 -114.113.196.0/22 -114.113.200.0/24 -114.113.203.0/24 -114.113.208.0/21 -114.113.221.0/24 -114.113.223.0/24 -114.113.224.0/20 -114.113.63.0/24 -114.113.64.0/20 -114.113.80.0/22 -114.113.84.0/24 -114.113.88.0/21 -114.113.96.0/19 -114.114.112.0/21 -114.115.0.0/16 -114.116.0.0/15 -114.118.0.0/17 -114.119.10.0/24 -114.119.117.0/24 -114.119.119.0/24 -114.119.204.0/22 -114.119.32.0/24 -114.132.0.0/16 -114.135.0.0/16 -114.138.0.0/15 -114.141.128.0/18 -114.142.142.0/23 -114.196.0.0/15 -114.212.0.0/14 -114.216.0.0/13 -114.224.0.0/11 -114.28.128.0/18 -114.28.229.0/24 -114.28.248.0/21 -114.28.68.0/22 -114.28.72.0/21 -114.55.0.0/16 -114.60.0.0/14 -114.64.0.0/16 -114.66.0.0/18 -114.66.236.0/22 -114.66.240.0/20 -114.66.64.0/24 -114.66.72.0/21 -114.66.80.0/23 -114.67.128.0/17 -114.67.16.0/21 -114.67.48.0/24 -114.67.57.0/24 -114.67.58.0/24 -114.67.60.0/23 -114.67.62.0/24 -114.67.64.0/18 -114.80.0.0/12 -114.96.0.0/13 -115.102.0.0/16 -115.120.0.0/17 -115.120.128.0/20 -115.120.144.0/23 -115.120.148.0/22 -115.120.152.0/21 -115.120.176.0/20 -115.120.192.0/18 -115.124.16.0/20 -115.148.0.0/14 -115.152.0.0/13 -115.168.0.0/14 -115.172.32.0/21 -115.172.46.0/23 -115.173.0.0/19 -115.174.64.0/19 -115.175.0.0/18 -115.175.104.0/22 -115.175.108.0/23 -115.175.110.0/24 -115.175.112.0/20 -115.175.128.0/17 -115.175.64.0/19 -115.175.96.0/21 -115.182.0.0/15 -115.190.0.0/16 -115.191.0.0/18 -115.191.64.0/20 -115.192.0.0/11 -115.224.0.0/12 -115.24.0.0/14 -115.28.0.0/15 -115.31.64.0/22 -115.32.0.0/19 -115.32.32.0/21 -115.32.56.0/21 -115.32.64.0/19 -115.44.0.0/14 -115.48.0.0/12 -115.84.0.0/18 -115.85.192.0/18 -116.1.0.0/16 -116.112.0.0/14 -116.116.0.0/15 -116.128.128.0/18 -116.128.200.0/21 -116.128.208.0/20 -116.128.224.0/19 -116.129.0.0/16 -116.13.0.0/16 -116.130.0.0/15 -116.132.0.0/15 -116.135.0.0/16 -116.136.0.0/13 -116.144.0.0/14 -116.148.0.0/15 -116.153.0.0/16 -116.154.0.0/15 -116.16.0.0/12 -116.162.0.0/16 -116.163.0.0/18 -116.165.0.0/16 -116.167.0.0/16 -116.168.0.0/14 -116.172.128.0/17 -116.172.64.0/18 -116.174.0.0/15 -116.176.0.0/14 -116.181.0.0/16 -116.182.0.0/16 -116.192.0.0/16 -116.193.16.0/23 -116.193.18.0/24 -116.196.0.0/21 -116.196.12.0/23 -116.196.129.0/24 -116.196.130.0/23 -116.196.132.0/22 -116.196.136.0/21 -116.196.144.0/21 -116.196.152.0/22 -116.196.157.0/24 -116.196.176.0/21 -116.196.192.0/21 -116.196.218.0/23 -116.196.220.0/22 -116.196.64.0/18 -116.196.8.0/22 -116.197.160.0/21 -116.198.0.0/18 -116.198.144.0/20 -116.198.160.0/20 -116.198.176.0/21 -116.198.192.0/18 -116.198.64.0/21 -116.198.72.0/22 -116.198.80.0/21 -116.198.96.0/19 -116.199.0.0/17 -116.2.0.0/15 -116.204.0.0/17 -116.205.0.0/16 -116.207.0.0/16 -116.208.0.0/14 -116.213.45.0/24 -116.214.128.0/22 -116.214.132.0/23 -116.214.134.0/24 -116.214.32.0/19 -116.224.0.0/12 -116.242.0.0/16 -116.246.0.0/15 -116.248.0.0/15 -116.252.0.0/15 -116.254.104.0/21 -116.255.128.0/17 -116.4.0.0/14 -116.52.0.0/14 -116.56.0.0/15 -116.58.208.0/24 -116.62.0.0/15 -116.66.120.0/24 -116.66.123.0/24 -116.66.36.0/24 -116.66.48.0/23 -116.66.53.0/24 -116.66.54.0/23 -116.66.98.0/24 -116.68.136.0/21 -116.68.176.0/21 -116.70.64.0/18 -116.76.0.0/15 -116.78.0.0/16 -116.8.0.0/14 -116.85.0.0/16 -116.90.80.0/20 -116.95.0.0/16 -117.100.128.0/17 -117.106.0.0/15 -117.112.0.0/13 -117.121.132.0/22 -117.122.192.0/18 -117.124.231.0/24 -117.124.232.0/22 -117.124.236.0/23 -117.124.240.0/22 -117.124.244.0/24 -117.124.98.0/24 -117.126.0.0/16 -117.128.0.0/10 -117.21.0.0/16 -117.22.0.0/15 -117.24.0.0/13 -117.32.0.0/13 -117.40.0.0/14 -117.44.0.0/15 -117.48.0.0/18 -117.48.100.0/22 -117.48.104.0/21 -117.48.112.0/20 -117.48.128.0/19 -117.48.160.0/20 -117.48.192.0/24 -117.48.195.0/24 -117.48.196.0/22 -117.48.200.0/21 -117.48.216.0/23 -117.48.218.0/24 -117.48.220.0/22 -117.48.224.0/20 -117.48.64.0/19 -117.50.0.0/16 -117.51.0.0/17 -117.51.128.0/19 -117.51.160.0/23 -117.51.168.0/21 -117.57.0.0/16 -117.58.0.0/17 -117.59.0.0/16 -117.60.0.0/14 -117.64.0.0/13 -117.72.0.0/23 -117.72.144.0/20 -117.72.16.0/23 -117.72.160.0/19 -117.72.192.0/19 -117.72.24.0/21 -117.72.240.0/21 -117.72.248.0/22 -117.72.255.0/24 -117.72.32.0/19 -117.72.64.0/18 -117.72.8.0/21 -117.73.0.0/20 -117.73.16.0/21 -117.73.252.0/22 -117.74.128.0/21 -117.74.136.0/22 -117.74.64.0/20 -117.78.0.0/18 -117.79.128.0/21 -117.79.144.0/20 -117.79.160.0/21 -117.79.224.0/20 -117.79.241.0/24 -117.79.242.0/24 -117.79.80.0/20 -117.8.0.0/13 -117.80.0.0/12 -118.102.16.0/20 -118.103.164.0/22 -118.112.0.0/13 -118.120.0.0/14 -118.124.0.0/15 -118.126.140.0/23 -118.126.142.0/24 -118.126.32.0/19 -118.126.64.0/18 -118.132.0.0/14 -118.144.0.0/16 -118.145.0.0/19 -118.145.112.0/21 -118.145.128.0/19 -118.145.160.0/21 -118.145.176.0/20 -118.145.192.0/18 -118.145.32.0/20 -118.145.64.0/19 -118.145.96.0/20 -118.178.0.0/16 -118.180.0.0/14 -118.184.128.0/17 -118.186.0.0/19 -118.186.112.0/21 -118.186.128.0/18 -118.186.208.0/21 -118.186.240.0/21 -118.186.32.0/24 -118.186.34.0/23 -118.186.36.0/22 -118.186.56.0/21 -118.186.64.0/21 -118.186.80.0/20 -118.186.96.0/20 -118.187.0.0/18 -118.187.254.0/23 -118.187.64.0/19 -118.188.18.0/23 -118.188.20.0/22 -118.188.24.0/23 -118.190.0.0/16 -118.191.0.0/21 -118.191.12.0/24 -118.191.128.0/22 -118.191.152.0/24 -118.191.192.0/23 -118.191.208.0/24 -118.191.216.0/24 -118.191.223.0/24 -118.191.224.0/24 -118.191.240.0/23 -118.191.248.0/23 -118.191.250.0/24 -118.191.8.0/22 -118.192.20.0/24 -118.192.64.0/23 -118.192.67.0/24 -118.192.68.0/23 -118.192.70.0/24 -118.193.96.0/19 -118.194.128.0/21 -118.194.164.0/22 -118.194.240.0/21 -118.194.32.0/19 -118.195.0.0/16 -118.196.0.0/17 -118.196.128.0/19 -118.199.0.0/16 -118.202.0.0/15 -118.212.0.0/15 -118.215.192.0/19 -118.228.0.0/15 -118.230.0.0/16 -118.239.0.0/16 -118.24.0.0/15 -118.242.0.0/22 -118.242.16.0/22 -118.242.238.0/24 -118.242.24.0/22 -118.242.32.0/22 -118.242.40.0/24 -118.244.0.0/21 -118.244.128.0/17 -118.247.0.0/16 -118.248.0.0/13 -118.26.116.0/22 -118.26.120.0/24 -118.26.126.0/23 -118.26.128.0/22 -118.26.136.0/22 -118.26.160.0/20 -118.26.192.0/24 -118.26.194.0/23 -118.26.197.0/24 -118.26.198.0/23 -118.26.200.0/21 -118.26.208.0/20 -118.26.224.0/19 -118.26.32.0/22 -118.26.48.0/22 -118.26.64.0/21 -118.26.72.0/22 -118.26.96.0/21 -118.30.0.0/15 -118.64.0.0/21 -118.64.248.0/21 -118.66.112.0/23 -118.66.184.0/24 -118.66.224.0/20 -118.66.248.0/21 -118.72.0.0/13 -118.80.0.0/15 -118.84.0.0/15 -118.88.128.0/17 -118.88.32.0/19 -118.88.64.0/18 -118.89.0.0/16 -119.0.0.0/15 -119.108.0.0/15 -119.112.0.0/12 -119.128.0.0/12 -119.144.0.0/14 -119.148.160.0/20 -119.15.136.0/23 -119.15.140.0/23 -119.161.120.0/22 -119.161.124.0/24 -119.161.136.0/23 -119.161.138.0/24 -119.161.140.0/22 -119.161.144.0/22 -119.161.148.0/23 -119.161.151.0/24 -119.161.152.0/21 -119.161.183.0/24 -119.162.0.0/15 -119.164.0.0/14 -119.176.0.0/12 -119.18.208.0/21 -119.18.224.0/24 -119.18.226.0/24 -119.18.234.0/24 -119.18.236.0/23 -119.18.239.0/24 -119.2.128.0/17 -119.23.0.0/16 -119.233.128.0/17 -119.235.128.0/24 -119.235.130.0/24 -119.235.136.0/24 -119.235.138.0/24 -119.235.143.0/24 -119.235.144.0/23 -119.235.151.0/24 -119.235.160.0/23 -119.235.167.0/24 -119.235.185.0/24 -119.248.0.0/14 -119.253.0.0/20 -119.253.249.0/24 -119.253.252.0/24 -119.253.32.0/19 -119.253.64.0/19 -119.254.0.0/16 -119.255.128.0/17 -119.255.63.0/24 -119.27.160.0/19 -119.28.28.0/24 -119.29.0.0/16 -119.3.0.0/16 -119.31.192.0/19 -119.32.0.0/15 -119.34.0.0/16 -119.36.0.0/16 -119.37.0.0/23 -119.37.12.0/24 -119.37.192.0/21 -119.37.2.0/24 -119.38.0.0/21 -119.38.192.0/19 -119.39.0.0/16 -119.4.0.0/14 -119.40.128.0/17 -119.40.41.0/24 -119.40.64.0/20 -119.41.0.0/16 -119.42.0.0/19 -119.42.136.0/21 -119.42.224.0/19 -119.44.0.0/22 -119.44.12.0/24 -119.44.16.0/22 -119.44.192.0/24 -119.44.20.0/23 -119.44.200.0/24 -119.44.205.0/24 -119.44.208.0/22 -119.44.212.0/23 -119.44.214.0/24 -119.44.217.0/24 -119.44.218.0/23 -119.44.220.0/22 -119.44.224.0/20 -119.44.23.0/24 -119.44.24.0/22 -119.44.253.0/24 -119.44.254.0/23 -119.44.28.0/23 -119.44.4.0/23 -119.44.45.0/24 -119.44.46.0/24 -119.44.50.0/23 -119.44.52.0/24 -119.44.56.0/21 -119.44.7.0/24 -119.44.8.0/22 -119.45.0.0/16 -119.48.0.0/13 -119.57.0.0/21 -119.57.100.0/23 -119.57.102.0/24 -119.57.112.0/20 -119.57.12.0/24 -119.57.132.0/22 -119.57.136.0/21 -119.57.16.0/21 -119.57.160.0/20 -119.57.190.0/23 -119.57.246.0/23 -119.57.248.0/21 -119.57.25.0/24 -119.57.28.0/22 -119.57.32.0/21 -119.57.44.0/22 -119.57.51.0/24 -119.57.52.0/22 -119.57.56.0/21 -119.57.64.0/19 -119.57.8.0/23 -119.57.96.0/22 -119.59.128.0/18 -119.60.0.0/15 -119.62.0.0/16 -119.75.208.0/20 -119.78.0.0/15 -119.80.0.0/21 -119.80.160.0/23 -119.80.162.0/24 -119.80.240.0/22 -119.80.248.0/21 -119.80.8.0/22 -119.84.0.0/14 -119.88.128.0/17 -119.90.32.0/19 -119.91.0.0/16 -119.96.0.0/13 -120.0.0.0/12 -120.131.0.0/19 -120.131.124.0/22 -120.131.88.0/21 -120.132.0.0/18 -120.132.112.0/24 -120.132.117.0/24 -120.132.118.0/23 -120.132.120.0/21 -120.132.128.0/17 -120.132.64.0/19 -120.132.96.0/20 -120.133.0.0/16 -120.134.0.0/15 -120.136.128.0/21 -120.136.140.0/22 -120.136.144.0/20 -120.136.16.0/23 -120.136.160.0/20 -120.136.176.0/21 -120.136.18.0/24 -120.136.184.0/22 -120.136.188.0/23 -120.136.190.0/24 -120.136.20.0/22 -120.192.0.0/10 -120.24.0.0/14 -120.31.128.0/20 -120.31.144.0/24 -120.31.66.0/23 -120.31.68.0/22 -120.32.0.0/12 -120.48.0.0/16 -120.49.0.0/17 -120.49.192.0/18 -120.52.0.0/15 -120.55.0.0/16 -120.65.0.0/16 -120.68.0.0/14 -120.72.160.0/24 -120.72.162.0/23 -120.72.164.0/22 -120.72.168.0/24 -120.72.170.0/23 -120.72.172.0/23 -120.72.174.0/24 -120.72.177.0/24 -120.72.178.0/24 -120.72.180.0/24 -120.72.182.0/23 -120.72.184.0/22 -120.72.188.0/23 -120.72.190.0/24 -120.72.32.0/19 -120.76.0.0/14 -120.80.0.0/13 -120.92.0.0/17 -120.92.128.0/18 -120.92.192.0/19 -120.92.224.0/20 -120.94.0.0/15 -121.0.16.0/20 -121.101.208.0/20 -121.16.0.0/12 -121.192.0.0/13 -121.201.0.0/17 -121.204.0.0/14 -121.224.0.0/12 -121.248.0.0/14 -121.255.0.0/16 -121.32.0.0/14 -121.36.0.0/15 -121.39.255.0/24 -121.4.0.0/15 -121.40.0.0/14 -121.46.0.0/20 -121.46.128.0/21 -121.46.141.0/24 -121.46.192.0/21 -121.46.200.0/22 -121.46.224.0/20 -121.46.244.0/22 -121.46.248.0/22 -121.46.252.0/23 -121.46.254.0/24 -121.47.0.0/16 -121.48.0.0/15 -121.51.0.0/16 -121.52.160.0/19 -121.52.208.0/20 -121.52.224.0/19 -121.55.0.0/18 -121.56.0.0/15 -121.58.0.0/17 -121.58.156.0/22 -121.59.160.0/20 -121.59.255.0/24 -121.59.4.0/22 -121.59.8.0/21 -121.60.0.0/14 -121.69.0.0/16 -121.76.0.0/15 -121.79.128.0/20 -121.79.144.0/22 -121.79.148.0/24 -121.8.0.0/13 -121.89.0.0/16 -121.91.104.0/21 -122.0.64.0/18 -122.10.133.0/24 -122.10.136.0/23 -122.10.160.0/24 -122.102.64.0/20 -122.11.32.0/19 -122.112.0.0/20 -122.112.132.0/22 -122.112.136.0/21 -122.112.144.0/20 -122.112.160.0/19 -122.112.192.0/18 -122.112.32.0/19 -122.112.64.0/19 -122.114.0.0/16 -122.115.0.0/20 -122.115.224.0/20 -122.115.32.0/19 -122.119.110.0/23 -122.119.112.0/23 -122.119.114.0/24 -122.119.12.0/22 -122.119.120.0/24 -122.119.122.0/24 -122.119.124.0/23 -122.119.129.0/24 -122.119.147.0/24 -122.119.160.0/23 -122.119.172.0/24 -122.119.180.0/22 -122.119.190.0/24 -122.119.20.0/22 -122.119.224.0/22 -122.119.232.0/23 -122.119.236.0/24 -122.119.24.0/23 -122.119.253.0/24 -122.119.26.0/24 -122.119.32.0/24 -122.119.4.0/23 -122.119.50.0/24 -122.119.73.0/24 -122.119.96.0/23 -122.13.0.0/16 -122.136.0.0/13 -122.14.192.0/18 -122.14.44.0/22 -122.14.62.0/24 -122.144.128.0/20 -122.144.144.0/23 -122.144.147.0/24 -122.144.152.0/23 -122.144.156.0/23 -122.144.161.0/24 -122.144.164.0/22 -122.144.168.0/22 -122.144.172.0/23 -122.144.178.0/23 -122.144.180.0/22 -122.144.192.0/21 -122.144.200.0/22 -122.144.206.0/23 -122.144.208.0/23 -122.144.211.0/24 -122.144.212.0/22 -122.144.216.0/21 -122.144.232.0/22 -122.144.236.0/23 -122.144.240.0/24 -122.144.248.0/23 -122.152.192.0/18 -122.156.0.0/14 -122.188.0.0/14 -122.192.0.0/14 -122.200.40.0/21 -122.200.64.0/18 -122.204.0.0/14 -122.224.0.0/12 -122.240.0.0/13 -122.248.48.0/21 -122.248.56.0/22 -122.4.0.0/14 -122.48.0.0/16 -122.49.16.0/20 -122.49.32.0/20 -122.49.8.0/21 -122.51.0.0/16 -122.64.0.0/16 -122.70.0.0/15 -122.72.112.0/24 -122.72.16.0/24 -122.72.3.0/24 -122.72.38.0/24 -122.72.57.0/24 -122.77.240.0/24 -122.84.0.0/16 -122.9.0.0/16 -122.90.0.0/16 -122.91.0.0/17 -122.94.0.0/16 -122.96.0.0/15 -123.101.0.0/16 -123.103.0.0/20 -123.103.16.0/21 -123.103.24.0/22 -123.103.28.0/23 -123.103.30.0/24 -123.103.40.0/21 -123.103.48.0/20 -123.103.64.0/18 -123.108.208.0/22 -123.108.212.0/23 -123.108.220.0/22 -123.108.88.0/23 -123.112.0.0/12 -123.128.0.0/13 -123.138.0.0/15 -123.144.0.0/12 -123.160.0.0/12 -123.177.0.0/16 -123.178.0.0/15 -123.180.0.0/14 -123.184.0.0/13 -123.196.112.0/20 -123.206.0.0/15 -123.232.0.0/14 -123.242.192.0/21 -123.244.0.0/14 -123.249.0.0/17 -123.253.226.0/24 -123.254.96.0/21 -123.4.0.0/14 -123.49.192.0/23 -123.49.225.0/24 -123.49.231.0/24 -123.49.232.0/24 -123.49.240.0/21 -123.52.0.0/14 -123.56.0.0/15 -123.58.0.0/19 -123.58.160.0/20 -123.58.180.0/24 -123.58.182.0/23 -123.58.184.0/24 -123.58.186.0/23 -123.58.188.0/22 -123.58.224.0/19 -123.58.32.0/20 -123.58.48.0/24 -123.58.50.0/24 -123.58.53.0/24 -123.58.54.0/23 -123.58.56.0/23 -123.58.59.0/24 -123.58.60.0/22 -123.58.64.0/24 -123.58.96.0/19 -123.59.0.0/16 -123.60.0.0/15 -123.64.0.0/15 -123.66.0.0/16 -123.77.0.0/16 -123.8.0.0/13 -123.82.0.0/17 -123.83.128.0/17 -123.88.0.0/16 -123.96.0.0/15 -123.99.192.0/18 -124.112.0.0/13 -124.126.0.0/15 -124.128.0.0/13 -124.14.1.0/24 -124.14.16.0/21 -124.14.2.0/23 -124.14.224.0/19 -124.14.5.0/24 -124.14.64.0/18 -124.14.7.0/24 -124.14.8.0/21 -124.151.0.0/16 -124.152.0.0/16 -124.16.0.0/15 -124.160.0.0/13 -124.172.0.0/15 -124.192.0.0/15 -124.196.0.0/24 -124.196.12.0/23 -124.196.25.0/24 -124.196.26.0/23 -124.196.28.0/24 -124.196.30.0/23 -124.196.32.0/23 -124.196.40.0/22 -124.196.48.0/22 -124.196.52.0/23 -124.196.55.0/24 -124.196.56.0/23 -124.196.58.0/24 -124.196.66.0/24 -124.196.72.0/24 -124.196.77.0/24 -124.196.80.0/22 -124.196.84.0/23 -124.200.0.0/16 -124.202.0.0/16 -124.203.176.0/20 -124.203.192.0/18 -124.204.0.0/14 -124.22.0.0/15 -124.220.0.0/14 -124.224.0.0/12 -124.240.0.0/17 -124.240.128.0/18 -124.243.192.0/18 -124.248.64.0/18 -124.250.0.0/15 -124.254.0.0/18 -124.28.192.0/18 -124.29.0.0/17 -124.31.0.0/16 -124.40.112.0/20 -124.40.128.0/18 -124.42.0.0/16 -124.47.0.0/18 -124.64.0.0/15 -124.66.0.0/17 -124.67.0.0/16 -124.70.0.0/16 -124.71.0.0/17 -124.71.128.0/18 -124.71.192.0/19 -124.71.224.0/20 -124.71.250.0/24 -124.72.0.0/13 -124.88.0.0/13 -125.104.0.0/13 -125.112.0.0/12 -125.171.0.0/16 -125.208.0.0/19 -125.208.32.0/20 -125.208.49.0/24 -125.210.0.0/15 -125.213.32.0/20 -125.214.96.0/19 -125.215.36.0/23 -125.215.40.0/24 -125.215.44.0/23 -125.215.48.0/24 -125.215.52.0/23 -125.215.54.0/24 -125.216.0.0/13 -125.254.128.0/19 -125.254.160.0/20 -125.254.176.0/21 -125.254.184.0/22 -125.254.188.0/23 -125.254.190.0/24 -125.32.0.0/12 -125.58.128.0/17 -125.61.128.0/19 -125.62.0.0/18 -125.64.0.0/11 -125.98.122.0/23 -125.98.128.0/17 -128.108.0.0/16 -128.254.240.0/23 -129.204.0.0/16 -129.211.0.0/16 -129.227.146.0/23 -129.227.157.0/24 -129.227.158.0/23 -129.227.168.0/21 -129.227.192.0/23 -129.227.195.0/24 -129.227.29.0/24 -129.227.30.0/24 -129.28.0.0/16 -131.221.82.0/24 -132.232.0.0/16 -132.237.134.0/24 -134.175.0.0/16 -138.252.72.0/23 -138.252.97.0/24 -139.129.0.0/16 -139.148.0.0/16 -139.155.0.0/16 -139.159.0.0/19 -139.159.112.0/22 -139.159.132.0/22 -139.159.136.0/21 -139.159.144.0/20 -139.159.160.0/19 -139.159.192.0/18 -139.159.32.0/20 -139.159.96.0/20 -139.170.0.0/16 -139.186.0.0/16 -139.189.0.0/16 -139.196.0.0/16 -139.198.0.0/15 -139.200.0.0/13 -139.208.0.0/13 -139.217.0.0/16 -139.219.0.0/16 -139.220.128.0/17 -139.224.0.0/16 -139.226.0.0/15 -139.5.60.0/22 -139.9.0.0/17 -139.9.128.0/18 -139.9.192.0/19 -139.9.224.0/20 -139.9.240.0/21 -139.9.248.0/22 -14.102.156.0/22 -14.103.0.0/16 -14.104.0.0/13 -14.112.0.0/12 -14.134.0.0/15 -14.144.0.0/12 -14.16.0.0/12 -14.204.0.0/15 -14.208.0.0/12 -140.143.0.0/16 -140.179.0.0/16 -140.205.0.0/16 -140.206.0.0/15 -140.210.0.0/19 -140.210.128.0/19 -140.210.192.0/19 -140.210.224.0/20 -140.210.32.0/22 -140.210.64.0/18 -140.224.0.0/16 -140.237.0.0/16 -140.240.0.0/16 -140.243.0.0/16 -140.246.0.0/16 -140.249.0.0/16 -140.250.0.0/16 -140.255.0.0/16 -140.75.0.0/16 -141.11.141.0/24 -143.14.49.0/24 -143.20.147.0/24 -143.20.246.0/24 -143.64.0.0/16 -144.0.0.0/16 -144.12.0.0/16 -144.123.0.0/16 -144.255.0.0/16 -144.36.146.0/23 -144.48.180.0/22 -144.48.184.0/22 -144.48.212.0/22 -144.48.252.0/22 -144.48.64.0/22 -144.52.0.0/16 -144.7.0.0/17 -144.79.10.0/23 -144.79.5.0/24 -144.79.70.0/24 -145.14.71.0/24 -145.14.72.0/22 -145.14.81.0/24 -145.14.82.0/24 -145.14.84.0/24 -145.14.86.0/24 -145.14.88.0/24 -145.14.90.0/24 -146.196.112.0/21 -146.196.56.0/22 -146.196.68.0/22 -146.222.79.0/24 -146.222.81.0/24 -146.222.94.0/24 -146.56.192.0/18 -147.78.132.0/22 -148.70.0.0/16 -150.107.61.0/24 -150.129.136.0/22 -150.129.192.0/22 -150.129.252.0/22 -150.138.0.0/15 -150.158.0.0/16 -150.223.0.0/16 -150.242.120.0/22 -150.242.156.0/22 -150.242.168.0/22 -150.242.184.0/22 -150.242.232.0/22 -150.242.238.0/23 -150.242.244.0/22 -150.242.248.0/22 -150.242.56.0/22 -150.242.76.0/22 -150.242.80.0/22 -150.242.96.0/22 -150.255.0.0/16 -152.104.128.0/17 -152.136.0.0/16 -153.0.0.0/16 -153.101.0.0/16 -153.118.0.0/15 -153.3.0.0/16 -153.34.0.0/15 -153.36.0.0/15 -153.99.0.0/16 -154.208.140.0/22 -154.208.144.0/20 -154.208.160.0/21 -154.208.172.0/23 -154.72.42.0/24 -154.72.44.0/24 -154.72.47.0/24 -154.8.128.0/17 -154.91.158.0/23 -155.117.164.0/24 -155.126.176.0/23 -156.107.160.0/24 -156.107.170.0/24 -156.107.179.0/24 -156.107.181.0/24 -156.230.11.0/24 -156.231.163.0/24 -156.237.104.0/23 -156.242.5.0/24 -156.242.6.0/24 -156.59.202.0/23 -156.59.204.0/23 -156.59.206.0/24 -156.59.216.0/24 -157.0.0.0/16 -157.10.105.0/24 -157.10.34.0/24 -157.119.172.0/22 -157.119.28.0/22 -157.122.0.0/16 -157.148.0.0/16 -157.15.104.0/23 -157.15.94.0/23 -157.156.0.0/16 -157.18.0.0/16 -157.20.246.0/23 -157.255.0.0/16 -157.61.0.0/16 -157.66.164.0/23 -158.140.252.0/23 -158.140.255.0/24 -159.226.0.0/16 -159.27.0.0/16 -159.75.0.0/16 -16.2.142.0/23 -160.19.208.0/23 -160.19.210.0/24 -160.19.76.0/23 -160.191.0.0/24 -160.20.18.0/23 -160.202.152.0/22 -160.202.212.0/22 -160.202.224.0/19 -160.22.188.0/24 -160.22.244.0/23 -160.25.194.0/23 -160.250.14.0/23 -160.250.24.0/23 -160.30.148.0/22 -160.30.230.0/23 -160.83.110.0/24 -161.163.0.0/21 -161.163.28.0/23 -161.189.0.0/16 -161.207.0.0/16 -162.105.0.0/16 -162.14.0.0/16 -162.141.138.0/24 -162.141.4.0/24 -163.0.0.0/16 -163.125.0.0/16 -163.142.0.0/16 -163.177.0.0/16 -163.179.0.0/16 -163.204.0.0/16 -163.223.178.0/23 -163.227.40.0/23 -163.228.0.0/16 -163.244.246.0/24 -163.47.4.0/22 -163.53.128.0/22 -163.53.168.0/22 -163.53.44.0/22 -163.53.60.0/22 -163.53.88.0/21 -163.61.202.0/23 -163.61.214.0/23 -165.101.122.0/23 -165.101.70.0/23 -166.111.0.0/16 -167.139.0.0/16 -167.148.46.0/24 -167.189.0.0/16 -167.220.244.0/22 -168.160.0.0/17 -168.160.152.0/24 -168.160.158.0/23 -168.160.160.0/21 -168.160.168.0/24 -168.160.224.0/19 -171.104.0.0/13 -171.112.0.0/12 -171.208.0.0/12 -171.34.0.0/15 -171.36.0.0/14 -171.40.0.0/14 -171.44.0.0/16 -171.8.0.0/13 -171.80.0.0/12 -172.81.192.0/18 -174.136.239.0/24 -175.0.0.0/12 -175.102.0.0/19 -175.102.128.0/20 -175.102.144.0/21 -175.102.152.0/24 -175.102.178.0/23 -175.102.180.0/22 -175.102.184.0/22 -175.102.188.0/23 -175.102.190.0/24 -175.102.196.0/24 -175.106.128.0/17 -175.146.0.0/15 -175.148.0.0/14 -175.152.0.0/14 -175.16.0.0/13 -175.160.0.0/12 -175.178.0.0/16 -175.184.128.0/18 -175.185.0.0/16 -175.186.0.0/15 -175.188.188.0/22 -175.190.126.0/23 -175.190.24.0/21 -175.24.0.0/15 -175.27.0.0/16 -175.30.0.0/15 -175.42.0.0/15 -175.44.0.0/16 -175.46.0.0/15 -178.219.5.0/24 -178.253.239.0/24 -180.129.128.0/17 -180.130.0.0/16 -180.136.0.0/13 -180.149.128.0/19 -180.150.176.0/20 -180.152.0.0/13 -180.160.0.0/12 -180.178.208.0/20 -180.178.224.0/21 -180.178.232.0/22 -180.178.248.0/21 -180.184.0.0/21 -180.184.128.0/20 -180.184.14.0/24 -180.184.144.0/21 -180.184.152.0/22 -180.184.16.0/24 -180.184.160.0/20 -180.184.176.0/21 -180.184.184.0/22 -180.184.190.0/23 -180.184.192.0/18 -180.184.24.0/21 -180.184.32.0/19 -180.184.64.0/18 -180.184.8.0/23 -180.186.38.0/23 -180.186.40.0/22 -180.186.44.0/24 -180.188.16.0/20 -180.188.32.0/20 -180.200.252.0/22 -180.201.0.0/16 -180.203.0.0/22 -180.203.4.0/24 -180.208.0.0/15 -180.210.212.0/22 -180.212.0.0/15 -180.233.0.0/18 -180.235.64.0/21 -180.235.72.0/23 -180.76.128.0/17 -180.76.16.0/20 -180.76.32.0/19 -180.76.64.0/18 -180.77.0.0/16 -180.78.0.0/15 -180.84.0.0/15 -180.88.128.0/18 -180.88.96.0/19 -180.89.56.0/22 -180.89.60.0/23 -180.89.64.0/19 -180.91.192.0/20 -180.95.128.0/17 -180.96.0.0/11 -182.128.0.0/12 -182.144.0.0/13 -182.157.0.0/16 -182.174.0.0/15 -182.18.32.0/19 -182.18.5.0/24 -182.18.72.0/21 -182.18.80.0/20 -182.18.96.0/19 -182.200.0.0/13 -182.236.160.0/19 -182.240.0.0/13 -182.254.0.0/16 -182.32.0.0/12 -182.48.112.0/21 -182.48.96.0/20 -182.50.112.0/20 -182.50.8.0/21 -182.51.114.0/23 -182.51.116.0/23 -182.51.118.0/24 -182.51.122.0/23 -182.51.124.0/24 -182.54.0.0/17 -182.61.0.0/18 -182.61.128.0/19 -182.61.192.0/22 -182.61.200.0/21 -182.61.208.0/20 -182.61.224.0/19 -182.80.0.0/13 -182.88.0.0/14 -182.92.0.0/16 -182.96.0.0/11 -183.0.0.0/10 -183.128.0.0/11 -183.160.0.0/13 -183.168.0.0/15 -183.170.0.0/16 -183.172.0.0/14 -183.184.0.0/13 -183.192.0.0/10 -183.64.0.0/13 -183.78.180.0/22 -183.81.180.0/22 -183.84.0.0/15 -183.91.144.0/20 -183.91.39.0/24 -183.91.40.0/21 -183.91.48.0/21 -183.91.56.0/24 -183.91.61.0/24 -183.91.63.0/24 -183.92.0.0/14 -185.234.212.0/24 -185.75.173.0/24 -185.75.174.0/24 -188.131.128.0/17 -192.140.160.0/19 -192.140.208.0/21 -192.144.128.0/17 -192.163.11.0/24 -192.232.97.0/24 -193.112.0.0/16 -193.119.0.0/24 -193.119.10.0/23 -193.119.12.0/23 -193.119.15.0/24 -193.119.17.0/24 -193.119.19.0/24 -193.119.20.0/23 -193.119.22.0/24 -193.119.25.0/24 -193.119.28.0/24 -193.119.30.0/24 -193.119.4.0/24 -193.119.6.0/24 -193.119.8.0/24 -193.233.49.0/24 -194.127.229.0/24 -194.138.202.0/23 -194.138.245.0/24 -194.15.39.0/24 -198.208.112.0/23 -198.208.17.0/24 -198.208.19.0/24 -198.208.30.0/24 -198.208.61.0/24 -198.208.63.0/24 -198.208.67.0/24 -199.182.239.0/24 -199.244.144.0/24 -202.104.0.0/14 -202.108.0.0/15 -202.110.0.0/16 -202.111.0.0/17 -202.111.128.0/18 -202.111.192.0/19 -202.111.230.0/24 -202.111.240.0/23 -202.111.242.0/24 -202.111.244.0/22 -202.112.0.0/13 -202.120.0.0/15 -202.122.112.0/21 -202.122.32.0/21 -202.123.106.0/23 -202.123.108.0/24 -202.123.110.0/23 -202.123.120.0/22 -202.123.96.0/24 -202.123.98.0/24 -202.125.176.0/20 -202.127.0.0/21 -202.127.12.0/22 -202.127.144.0/20 -202.127.16.0/20 -202.127.200.0/21 -202.127.216.0/21 -202.127.224.0/19 -202.127.40.0/21 -202.127.48.0/23 -202.130.0.0/19 -202.130.224.0/20 -202.130.240.0/21 -202.136.208.0/21 -202.136.216.0/23 -202.136.218.0/24 -202.136.220.0/24 -202.136.222.0/23 -202.136.255.0/24 -202.136.48.0/20 -202.136.72.0/23 -202.14.235.0/24 -202.14.236.0/23 -202.14.238.0/24 -202.140.140.0/22 -202.141.160.0/19 -202.142.16.0/20 -202.143.100.0/22 -202.143.16.0/23 -202.144.198.0/23 -202.148.96.0/19 -202.149.224.0/19 -202.150.16.0/20 -202.153.48.0/20 -202.158.160.0/19 -202.160.140.0/22 -202.164.0.0/20 -202.164.25.0/24 -202.168.160.0/19 -202.170.128.0/19 -202.170.216.0/21 -202.173.14.0/23 -202.173.224.0/19 -202.173.8.0/22 -202.179.240.0/20 -202.181.120.0/21 -202.181.28.0/24 -202.189.16.0/20 -202.189.3.0/24 -202.189.32.0/20 -202.189.4.0/22 -202.189.48.0/22 -202.189.8.0/21 -202.192.0.0/12 -202.38.128.0/23 -202.38.132.0/23 -202.38.134.0/24 -202.38.140.0/23 -202.38.146.0/23 -202.38.152.0/23 -202.38.164.0/22 -202.38.184.0/21 -202.38.192.0/18 -202.38.2.0/23 -202.38.64.0/18 -202.38.8.0/21 -202.4.128.0/19 -202.4.252.0/22 -202.41.152.0/21 -202.41.241.0/24 -202.41.242.0/23 -202.41.244.0/22 -202.41.248.0/21 -202.46.224.0/22 -202.46.228.0/23 -202.46.232.0/22 -202.46.39.0/24 -202.47.104.0/21 -202.55.0.0/19 -202.57.192.0/24 -202.57.196.0/22 -202.57.200.0/23 -202.57.204.0/23 -202.58.122.0/23 -202.59.213.0/24 -202.59.214.0/23 -202.60.112.0/20 -202.60.132.0/22 -202.61.88.0/22 -202.62.112.0/22 -202.63.160.0/20 -202.65.96.0/24 -202.67.3.0/24 -202.69.16.0/20 -202.69.4.0/23 -202.72.112.0/20 -202.73.128.0/22 -202.73.240.0/20 -202.75.208.0/20 -202.75.252.0/22 -202.80.192.0/22 -202.81.176.0/20 -202.84.17.0/24 -202.85.208.0/20 -202.89.232.0/21 -202.89.96.0/22 -202.90.20.0/22 -202.90.96.0/20 -202.91.176.0/21 -202.91.184.0/23 -202.91.186.0/24 -202.91.190.0/23 -202.91.224.0/20 -202.91.240.0/21 -202.91.248.0/22 -202.93.252.0/22 -202.95.0.0/19 -202.96.0.0/13 -203.0.104.0/21 -203.100.192.0/20 -203.100.50.0/23 -203.100.54.0/24 -203.100.92.0/22 -203.104.32.0/20 -203.107.1.0/24 -203.107.116.0/22 -203.107.13.0/24 -203.107.20.0/22 -203.107.24.0/24 -203.107.26.0/23 -203.107.28.0/22 -203.107.32.0/19 -203.107.6.0/24 -203.107.72.0/21 -203.107.80.0/21 -203.107.96.0/23 -203.110.160.0/19 -203.110.208.0/20 -203.110.232.0/23 -203.110.234.0/24 -203.114.244.0/22 -203.118.248.0/22 -203.119.114.0/23 -203.119.128.0/19 -203.119.160.0/24 -203.119.168.0/21 -203.119.176.0/20 -203.119.192.0/18 -203.119.25.0/24 -203.119.26.0/23 -203.119.28.0/22 -203.119.33.0/24 -203.119.80.0/24 -203.119.83.0/24 -203.12.205.0/24 -203.12.91.0/24 -203.12.93.0/24 -203.129.10.0/23 -203.129.12.0/22 -203.129.8.0/24 -203.13.80.0/23 -203.130.32.0/22 -203.130.40.0/21 -203.132.32.0/19 -203.134.240.0/21 -203.135.96.0/19 -203.148.0.0/18 -203.148.64.0/20 -203.148.86.0/23 -203.15.0.0/20 -203.152.64.0/19 -203.156.192.0/18 -203.160.104.0/22 -203.160.109.0/24 -203.160.129.0/24 -203.160.192.0/24 -203.160.196.0/24 -203.160.212.0/24 -203.161.192.0/19 -203.166.160.0/22 -203.166.165.0/24 -203.166.166.0/24 -203.166.168.0/24 -203.166.172.0/24 -203.166.177.0/24 -203.166.186.0/23 -203.166.188.0/23 -203.166.191.0/24 -203.168.0.0/22 -203.168.16.0/23 -203.168.18.0/24 -203.168.5.0/24 -203.168.6.0/23 -203.168.8.0/21 -203.170.58.0/23 -203.174.4.0/24 -203.174.7.0/24 -203.174.96.0/19 -203.175.128.0/19 -203.176.168.0/24 -203.176.170.0/24 -203.176.92.0/22 -203.187.160.0/19 -203.189.0.0/23 -203.189.113.0/24 -203.189.115.0/24 -203.189.192.0/19 -203.189.240.0/22 -203.189.6.0/23 -203.190.100.0/23 -203.191.0.0/23 -203.191.144.0/21 -203.192.1.0/24 -203.192.16.0/24 -203.192.2.0/23 -203.192.24.0/23 -203.192.4.0/22 -203.192.8.0/21 -203.193.224.0/19 -203.194.122.0/23 -203.194.124.0/24 -203.195.113.0/24 -203.195.114.0/24 -203.195.118.0/23 -203.195.128.0/17 -203.195.64.0/19 -203.196.0.0/21 -203.2.112.0/21 -203.2.160.0/21 -203.2.64.0/21 -203.202.236.0/23 -203.207.104.0/22 -203.207.112.0/20 -203.207.128.0/18 -203.207.192.0/21 -203.207.200.0/22 -203.207.208.0/20 -203.207.224.0/19 -203.207.64.0/19 -203.207.96.0/21 -203.208.32.0/19 -203.209.224.0/19 -203.212.0.0/20 -203.212.80.0/23 -203.215.232.0/23 -203.215.236.0/24 -203.223.21.0/24 -203.25.208.0/20 -203.25.52.0/24 -203.3.112.0/21 -203.3.80.0/21 -203.32.203.0/24 -203.32.204.0/23 -203.32.212.0/24 -203.32.48.0/23 -203.32.68.0/23 -203.32.84.0/23 -203.33.145.0/24 -203.33.156.0/24 -203.33.158.0/23 -203.33.174.0/24 -203.33.185.0/24 -203.33.200.0/24 -203.33.202.0/23 -203.33.206.0/23 -203.33.21.0/24 -203.33.214.0/23 -203.33.224.0/23 -203.33.226.0/24 -203.33.26.0/24 -203.33.32.0/24 -203.33.4.0/24 -203.33.63.0/24 -203.33.64.0/24 -203.33.67.0/24 -203.33.7.0/24 -203.34.106.0/24 -203.34.113.0/24 -203.34.147.0/24 -203.34.150.0/24 -203.34.152.0/23 -203.34.161.0/24 -203.34.162.0/24 -203.34.21.0/24 -203.34.232.0/24 -203.34.240.0/24 -203.34.242.0/24 -203.34.245.0/24 -203.34.251.0/24 -203.34.27.0/24 -203.34.39.0/24 -203.34.48.0/23 -203.34.54.0/24 -203.34.56.0/23 -203.34.67.0/24 -203.34.69.0/24 -203.34.76.0/24 -203.34.92.0/24 -203.55.10.0/24 -203.55.101.0/24 -203.55.109.0/24 -203.55.110.0/24 -203.55.116.0/23 -203.55.119.0/24 -203.55.128.0/23 -203.55.13.0/24 -203.55.146.0/23 -203.55.192.0/24 -203.55.196.0/24 -203.55.2.0/23 -203.55.218.0/23 -203.55.22.0/24 -203.55.221.0/24 -203.55.224.0/24 -203.55.30.0/24 -203.55.4.0/24 -203.55.93.0/24 -203.56.1.0/24 -203.56.110.0/24 -203.56.12.0/24 -203.56.121.0/24 -203.56.161.0/24 -203.56.169.0/24 -203.56.172.0/23 -203.56.175.0/24 -203.56.183.0/24 -203.56.185.0/24 -203.56.187.0/24 -203.56.192.0/24 -203.56.198.0/24 -203.56.201.0/24 -203.56.208.0/23 -203.56.210.0/24 -203.56.214.0/24 -203.56.216.0/24 -203.56.227.0/24 -203.56.228.0/24 -203.56.232.0/24 -203.56.24.0/24 -203.56.240.0/24 -203.56.252.0/24 -203.56.254.0/24 -203.56.38.0/24 -203.56.4.0/24 -203.56.40.0/24 -203.56.46.0/24 -203.56.68.0/23 -203.56.82.0/23 -203.56.84.0/23 -203.56.95.0/24 -203.57.101.0/24 -203.57.109.0/24 -203.57.12.0/23 -203.57.123.0/24 -203.57.157.0/24 -203.57.200.0/24 -203.57.202.0/24 -203.57.206.0/24 -203.57.222.0/24 -203.57.224.0/20 -203.57.249.0/24 -203.57.254.0/23 -203.57.28.0/24 -203.57.39.0/24 -203.57.46.0/24 -203.57.5.0/24 -203.57.58.0/24 -203.57.6.0/24 -203.57.61.0/24 -203.57.66.0/24 -203.57.69.0/24 -203.57.70.0/23 -203.57.73.0/24 -203.57.90.0/24 -203.6.224.0/20 -203.62.131.0/24 -203.62.139.0/24 -203.62.2.0/24 -203.65.240.0/22 -203.76.208.0/21 -203.76.216.0/22 -203.76.240.0/22 -203.78.48.0/20 -203.79.0.0/23 -203.8.24.0/23 -203.8.27.0/24 -203.8.28.0/23 -203.8.30.0/24 -203.80.144.0/20 -203.80.57.0/24 -203.82.0.0/23 -203.83.224.0/20 -203.83.56.0/21 -203.86.0.0/19 -203.86.112.0/24 -203.86.254.0/23 -203.86.43.0/24 -203.86.44.0/23 -203.86.48.0/23 -203.86.51.0/24 -203.86.52.0/22 -203.86.60.0/23 -203.86.62.0/24 -203.86.64.0/19 -203.88.192.0/19 -203.88.32.0/19 -203.89.100.0/22 -203.90.128.0/18 -203.90.192.0/19 -203.91.120.0/21 -203.91.32.0/19 -203.93.0.0/18 -203.93.117.0/24 -203.93.120.0/21 -203.93.128.0/19 -203.93.160.0/20 -203.93.208.0/20 -203.93.224.0/19 -203.93.64.0/19 -203.93.96.0/20 -203.94.0.0/19 -203.95.0.0/23 -203.95.128.0/23 -203.95.2.0/24 -203.95.4.0/22 -203.99.20.0/22 -203.99.24.0/21 -204.13.175.0/24 -210.12.0.0/16 -210.13.0.0/17 -210.13.192.0/19 -210.13.224.0/24 -210.13.227.0/24 -210.13.230.0/23 -210.13.232.0/24 -210.13.236.0/23 -210.13.238.0/24 -210.13.240.0/20 -210.14.112.0/20 -210.14.128.0/19 -210.14.192.0/18 -210.14.64.0/20 -210.14.80.0/22 -210.14.84.0/24 -210.14.90.0/23 -210.14.92.0/22 -210.15.0.0/17 -210.16.160.0/19 -210.185.192.0/18 -210.192.116.0/22 -210.192.120.0/21 -210.192.96.0/20 -210.2.0.0/23 -210.2.4.0/24 -210.21.0.0/17 -210.21.192.0/18 -210.22.0.0/19 -210.22.128.0/17 -210.22.32.0/22 -210.22.48.0/20 -210.22.64.0/18 -210.25.0.0/16 -210.26.0.0/15 -210.28.0.0/14 -210.32.0.0/12 -210.48.136.0/21 -210.5.0.0/19 -210.5.128.0/19 -210.5.56.0/21 -210.51.0.0/16 -210.52.0.0/15 -210.72.0.0/17 -210.72.128.0/18 -210.72.192.0/19 -210.72.224.0/20 -210.72.240.0/21 -210.73.0.0/16 -210.74.0.0/20 -210.74.107.0/24 -210.74.108.0/23 -210.74.128.0/18 -210.74.224.0/19 -210.74.35.0/24 -210.74.36.0/23 -210.74.38.0/24 -210.74.40.0/22 -210.74.44.0/23 -210.74.47.0/24 -210.74.64.0/23 -210.75.0.0/18 -210.75.192.0/18 -210.75.96.0/19 -210.76.0.0/17 -210.76.160.0/19 -210.76.192.0/19 -210.77.0.0/18 -210.77.128.0/19 -210.77.176.0/20 -210.77.192.0/18 -210.77.64.0/19 -210.78.128.0/24 -210.78.134.0/23 -210.78.139.0/24 -210.78.144.0/23 -210.79.224.0/19 -210.82.0.0/15 -210.87.128.0/18 -211.100.0.0/17 -211.100.192.0/20 -211.100.224.0/19 -211.101.0.0/18 -211.101.192.0/20 -211.101.232.0/21 -211.101.240.0/21 -211.102.128.0/18 -211.102.192.0/23 -211.102.208.0/20 -211.102.240.0/21 -211.102.248.0/24 -211.102.80.0/20 -211.103.0.0/16 -211.136.0.0/13 -211.144.10.0/24 -211.144.100.0/22 -211.144.104.0/22 -211.144.108.0/23 -211.144.110.0/24 -211.144.112.0/24 -211.144.114.0/23 -211.144.118.0/23 -211.144.12.0/22 -211.144.120.0/21 -211.144.128.0/19 -211.144.16.0/24 -211.144.18.0/23 -211.144.192.0/18 -211.144.20.0/24 -211.144.22.0/24 -211.144.24.0/24 -211.144.27.0/24 -211.144.28.0/23 -211.144.32.0/19 -211.144.64.0/19 -211.144.9.0/24 -211.144.96.0/23 -211.145.0.0/18 -211.145.64.0/20 -211.146.0.0/16 -211.147.0.0/18 -211.147.128.0/18 -211.147.208.0/20 -211.147.224.0/19 -211.147.64.0/19 -211.148.0.0/16 -211.149.128.0/17 -211.150.0.0/18 -211.150.100.0/23 -211.150.114.0/23 -211.150.122.0/24 -211.150.124.0/23 -211.150.128.0/24 -211.150.64.0/19 -211.150.98.0/24 -211.151.0.0/16 -211.152.0.0/17 -211.152.192.0/22 -211.152.196.0/23 -211.152.208.0/20 -211.153.0.0/16 -211.154.0.0/19 -211.154.128.0/17 -211.154.64.0/18 -211.155.108.0/22 -211.155.112.0/20 -211.155.128.0/19 -211.155.16.0/20 -211.155.160.0/20 -211.155.176.0/22 -211.155.184.0/21 -211.155.224.0/21 -211.155.232.0/22 -211.155.236.0/24 -211.155.240.0/20 -211.155.32.0/19 -211.155.80.0/20 -211.156.0.0/19 -211.156.128.0/19 -211.156.176.0/20 -211.156.192.0/20 -211.156.208.0/21 -211.156.216.0/22 -211.156.220.0/23 -211.156.223.0/24 -211.157.0.0/19 -211.157.128.0/17 -211.157.96.0/19 -211.158.0.0/16 -211.159.128.0/17 -211.159.64.0/21 -211.160.0.0/22 -211.160.112.0/23 -211.160.115.0/24 -211.160.120.0/24 -211.160.14.0/23 -211.160.16.0/21 -211.160.160.0/19 -211.160.194.0/23 -211.160.196.0/24 -211.160.202.0/23 -211.160.204.0/23 -211.160.24.0/22 -211.160.240.0/20 -211.160.28.0/23 -211.160.36.0/23 -211.160.4.0/23 -211.160.46.0/23 -211.160.62.0/23 -211.160.72.0/21 -211.160.8.0/22 -211.160.80.0/20 -211.161.0.0/20 -211.161.101.0/24 -211.161.102.0/23 -211.161.120.0/21 -211.161.192.0/22 -211.161.203.0/24 -211.161.209.0/24 -211.161.221.0/24 -211.161.24.0/22 -211.161.32.0/20 -211.161.60.0/23 -211.161.62.0/24 -211.161.97.0/24 -211.162.0.0/21 -211.162.119.0/24 -211.162.120.0/21 -211.162.200.0/22 -211.162.64.0/20 -211.165.0.0/16 -211.166.0.0/16 -211.167.128.0/19 -211.167.176.0/20 -211.167.224.0/19 -211.167.64.0/18 -211.64.0.0/13 -211.80.0.0/13 -211.88.0.0/15 -211.90.0.0/17 -211.90.128.0/18 -211.90.192.0/20 -211.90.216.0/21 -211.90.224.0/19 -211.91.0.0/18 -211.91.120.0/21 -211.91.128.0/18 -211.91.216.0/21 -211.91.224.0/19 -211.91.64.0/19 -211.91.96.0/20 -211.92.0.0/17 -211.92.128.0/18 -211.92.192.0/19 -211.92.224.0/20 -211.92.244.0/22 -211.93.0.0/17 -211.93.128.0/20 -211.93.144.0/21 -211.93.160.0/19 -211.93.192.0/21 -211.93.200.0/23 -211.93.204.0/22 -211.93.211.0/24 -211.93.212.0/23 -211.93.224.0/19 -211.94.128.0/17 -211.94.37.0/24 -211.94.64.0/18 -211.95.0.0/17 -211.95.128.0/19 -211.95.192.0/18 -211.96.0.0/16 -211.97.0.0/17 -211.97.128.0/19 -211.97.160.0/21 -211.97.176.0/20 -211.97.192.0/18 -211.98.0.0/16 -211.99.128.0/18 -211.99.16.0/23 -211.99.192.0/19 -211.99.24.0/21 -211.99.32.0/19 -211.99.64.0/18 -211.99.8.0/21 -212.100.186.0/24 -212.129.128.0/17 -212.64.0.0/17 -218.0.0.0/11 -218.100.88.0/21 -218.104.0.0/15 -218.106.0.0/16 -218.107.0.0/18 -218.107.128.0/17 -218.108.0.0/15 -218.185.240.0/21 -218.192.0.0/12 -218.240.0.0/18 -218.240.128.0/19 -218.240.160.0/21 -218.240.168.0/22 -218.240.176.0/20 -218.241.112.0/22 -218.241.116.0/23 -218.241.118.0/24 -218.241.121.0/24 -218.241.122.0/23 -218.241.124.0/22 -218.241.128.0/17 -218.241.16.0/21 -218.241.24.0/22 -218.241.96.0/20 -218.242.0.0/16 -218.244.0.0/19 -218.244.128.0/18 -218.244.192.0/20 -218.244.224.0/19 -218.244.44.0/22 -218.244.49.0/24 -218.244.52.0/23 -218.244.55.0/24 -218.244.56.0/23 -218.244.58.0/24 -218.244.96.0/19 -218.245.0.0/17 -218.246.0.0/19 -218.246.160.0/19 -218.246.192.0/19 -218.246.32.0/22 -218.246.48.0/22 -218.246.59.0/24 -218.246.64.0/18 -218.247.0.0/18 -218.247.128.0/17 -218.249.0.0/16 -218.56.0.0/13 -218.64.0.0/11 -218.96.0.0/24 -218.96.104.0/22 -218.96.108.0/23 -218.96.128.0/24 -218.96.241.0/24 -218.96.244.0/24 -218.96.255.0/24 -218.96.64.0/22 -218.97.0.0/17 -218.97.160.0/19 -218.97.192.0/19 -218.97.240.0/20 -218.98.0.0/18 -218.98.104.0/22 -218.98.108.0/23 -218.98.111.0/24 -218.98.112.0/20 -218.98.160.0/24 -218.98.176.0/21 -218.98.192.0/24 -218.98.96.0/21 -219.128.0.0/12 -219.144.0.0/14 -219.148.0.0/15 -219.150.0.0/16 -219.151.0.0/18 -219.151.128.0/17 -219.152.0.0/14 -219.156.0.0/15 -219.158.0.0/19 -219.158.128.0/17 -219.158.32.0/20 -219.158.58.0/23 -219.158.60.0/22 -219.158.96.0/19 -219.159.0.0/16 -219.216.0.0/13 -219.224.0.0/13 -219.232.0.0/17 -219.232.144.0/24 -219.232.160.0/19 -219.232.192.0/19 -219.233.0.0/16 -219.234.128.0/17 -219.234.80.0/20 -219.234.96.0/19 -219.235.0.0/20 -219.235.128.0/19 -219.235.192.0/23 -219.235.207.0/24 -219.235.224.0/22 -219.235.228.0/23 -219.235.233.0/24 -219.235.234.0/24 -219.235.237.0/24 -219.235.251.0/24 -219.235.252.0/24 -219.235.255.0/24 -219.235.32.0/19 -219.235.64.0/18 -219.236.0.0/14 -219.242.0.0/15 -219.244.0.0/14 -219.72.0.0/16 -219.82.0.0/16 -219.83.160.0/19 -220.101.192.0/18 -220.112.0.0/22 -220.112.194.0/24 -220.112.196.0/24 -220.112.200.0/21 -220.112.40.0/21 -220.112.50.0/23 -220.112.52.0/23 -220.112.54.0/24 -220.112.59.0/24 -220.112.8.0/24 -220.113.0.0/19 -220.113.150.0/23 -220.113.152.0/23 -220.113.154.0/24 -220.113.32.0/20 -220.113.96.0/21 -220.114.250.0/23 -220.152.128.0/17 -220.154.0.0/20 -220.154.128.0/21 -220.154.136.0/23 -220.154.139.0/24 -220.154.140.0/22 -220.154.144.0/24 -220.154.147.0/24 -220.154.16.0/22 -220.160.0.0/12 -220.176.0.0/14 -220.180.0.0/16 -220.181.0.0/17 -220.181.128.0/20 -220.181.144.0/24 -220.181.148.0/22 -220.181.152.0/21 -220.181.160.0/19 -220.182.0.0/18 -220.184.0.0/13 -220.192.0.0/16 -220.193.0.0/17 -220.194.0.0/16 -220.195.0.0/17 -220.195.128.0/19 -220.195.192.0/18 -220.196.0.0/16 -220.197.0.0/17 -220.197.160.0/19 -220.197.192.0/18 -220.198.0.0/15 -220.200.0.0/17 -220.200.128.0/20 -220.200.148.0/22 -220.200.152.0/21 -220.200.160.0/19 -220.200.192.0/18 -220.201.0.0/16 -220.202.0.0/16 -220.203.0.0/18 -220.203.216.0/23 -220.203.220.0/22 -220.203.224.0/19 -220.205.0.0/16 -220.206.192.0/22 -220.207.0.0/22 -220.207.176.0/22 -220.207.184.0/22 -220.207.254.0/23 -220.207.80.0/20 -220.231.0.0/18 -220.231.128.0/17 -220.232.64.0/18 -220.234.0.0/16 -220.242.180.0/24 -220.243.128.0/18 -220.248.0.0/16 -220.249.0.0/17 -220.249.128.0/18 -220.249.192.0/19 -220.249.240.0/20 -220.250.0.0/17 -221.0.0.0/13 -221.12.0.0/17 -221.12.128.0/18 -221.122.0.0/16 -221.123.112.0/20 -221.123.128.0/17 -221.129.0.0/16 -221.13.0.0/16 -221.130.0.0/15 -221.133.225.0/24 -221.133.226.0/24 -221.133.228.0/22 -221.133.232.0/22 -221.133.244.0/23 -221.137.0.0/16 -221.14.0.0/15 -221.172.0.0/16 -221.174.0.0/16 -221.176.0.0/13 -221.192.0.0/14 -221.196.0.0/15 -221.198.0.0/16 -221.199.0.0/17 -221.199.128.0/18 -221.199.192.0/20 -221.199.224.0/19 -221.200.0.0/13 -221.208.0.0/12 -221.224.0.0/12 -221.8.0.0/14 -222.125.0.0/16 -222.126.128.0/17 -222.128.0.0/12 -222.16.0.0/12 -222.160.0.0/14 -222.168.0.0/13 -222.176.0.0/12 -222.192.0.0/11 -222.240.0.0/13 -222.248.0.0/15 -222.35.0.0/16 -222.42.115.0/24 -222.44.0.0/15 -222.49.128.0/17 -222.50.0.0/16 -222.59.128.0/17 -222.64.0.0/11 -223.0.1.0/24 -223.0.12.0/23 -223.0.126.0/24 -223.0.15.0/24 -223.0.16.0/24 -223.0.2.0/24 -223.0.30.0/24 -223.0.40.0/23 -223.0.8.0/22 -223.128.0.0/15 -223.144.0.0/12 -223.160.0.0/20 -223.160.112.0/20 -223.160.128.0/22 -223.160.134.0/23 -223.160.136.0/21 -223.160.144.0/20 -223.160.16.0/21 -223.160.160.0/19 -223.160.192.0/19 -223.160.224.0/21 -223.160.232.0/22 -223.160.236.0/23 -223.161.194.0/23 -223.161.196.0/22 -223.161.200.0/21 -223.161.208.0/20 -223.161.224.0/19 -223.166.0.0/15 -223.192.0.0/15 -223.198.0.0/15 -223.2.0.0/15 -223.202.0.0/24 -223.202.131.0/24 -223.202.132.0/24 -223.202.134.0/23 -223.202.211.0/24 -223.202.212.0/24 -223.202.67.0/24 -223.203.100.0/24 -223.203.3.0/24 -223.203.9.0/24 -223.203.96.0/24 -223.210.0.0/19 -223.210.48.0/22 -223.212.0.0/14 -223.220.0.0/15 -223.223.176.0/20 -223.223.192.0/20 -223.240.0.0/13 -223.248.0.0/14 -223.252.194.0/24 -223.252.199.0/24 -223.252.200.0/23 -223.252.202.0/24 -223.252.205.0/24 -223.252.209.0/24 -223.252.210.0/23 -223.252.212.0/24 -223.252.214.0/23 -223.252.221.0/24 -223.252.222.0/24 -223.255.236.0/22 -223.255.252.0/23 -223.27.184.0/22 -223.4.0.0/14 -223.64.0.0/10 -223.8.0.0/13 -23.133.188.0/24 -23.161.8.0/24 -23.236.111.0/24 -27.0.128.0/24 -27.0.130.0/23 -27.0.132.0/22 -27.0.160.0/21 -27.0.204.0/22 -27.0.208.0/21 -27.106.128.0/18 -27.106.204.0/22 -27.109.124.0/22 -27.112.0.0/21 -27.115.0.0/17 -27.128.0.0/15 -27.144.0.0/16 -27.148.0.0/14 -27.152.0.0/13 -27.16.0.0/12 -27.184.0.0/13 -27.192.0.0/11 -27.224.0.0/14 -27.36.0.0/14 -27.40.0.0/13 -27.50.128.0/17 -27.8.0.0/13 -27.98.224.0/19 -27.99.128.0/17 -31.56.66.0/24 -31.57.248.0/24 -36.1.0.0/16 -36.112.0.0/15 -36.114.0.0/16 -36.128.0.0/10 -36.16.0.0/12 -36.192.0.0/16 -36.206.0.0/16 -36.212.0.0/15 -36.214.0.0/16 -36.221.0.0/17 -36.248.0.0/14 -36.255.116.0/22 -36.255.128.0/22 -36.255.164.0/24 -36.32.0.0/14 -36.36.0.0/16 -36.4.0.0/14 -36.40.0.0/13 -36.48.0.0/15 -36.50.226.0/24 -36.51.224.0/23 -36.51.226.0/24 -36.51.248.0/24 -36.51.253.0/24 -36.51.254.0/24 -36.56.0.0/13 -36.96.0.0/12 -38.111.220.0/23 -38.211.199.0/24 -39.104.0.0/14 -39.108.0.0/16 -39.128.0.0/10 -39.64.0.0/11 -39.96.0.0/13 -40.125.128.0/17 -40.126.64.0/18 -40.162.0.0/16 -40.72.0.0/15 -42.0.128.0/17 -42.100.0.0/14 -42.120.0.0/15 -42.122.0.0/16 -42.123.64.0/18 -42.156.128.0/17 -42.157.128.0/21 -42.157.160.0/19 -42.157.192.0/21 -42.158.0.0/15 -42.176.0.0/13 -42.184.0.0/15 -42.186.0.0/16 -42.187.120.0/22 -42.187.128.0/17 -42.192.0.0/15 -42.194.12.0/24 -42.194.128.0/17 -42.199.0.0/17 -42.199.128.0/18 -42.199.192.0/19 -42.199.224.0/20 -42.199.240.0/22 -42.201.32.0/19 -42.201.64.0/21 -42.201.72.0/22 -42.201.76.0/23 -42.202.0.0/15 -42.224.0.0/12 -42.240.0.0/21 -42.240.12.0/23 -42.240.128.0/17 -42.240.16.0/23 -42.240.20.0/22 -42.240.8.0/22 -42.242.0.0/15 -42.244.0.0/14 -42.248.0.0/15 -42.4.0.0/14 -42.48.0.0/15 -42.51.0.0/16 -42.52.0.0/14 -42.56.0.0/14 -42.62.0.0/17 -42.63.0.0/16 -42.80.0.0/15 -42.83.128.0/22 -42.83.132.0/23 -42.83.134.0/24 -42.83.144.0/22 -42.83.189.0/24 -42.83.190.0/24 -42.83.200.0/23 -42.84.0.0/14 -42.88.0.0/13 -42.96.128.0/17 -42.97.0.0/16 -42.99.0.0/18 -43.136.0.0/13 -43.144.0.0/15 -43.176.0.0/14 -43.180.0.0/16 -43.192.0.0/16 -43.193.0.0/18 -43.193.64.0/24 -43.194.0.0/20 -43.194.16.0/24 -43.195.0.0/20 -43.196.0.0/16 -43.224.12.0/22 -43.224.24.0/22 -43.224.240.0/24 -43.224.52.0/23 -43.224.56.0/22 -43.224.80.0/22 -43.225.120.0/22 -43.225.180.0/22 -43.225.208.0/22 -43.225.216.0/22 -43.225.255.0/24 -43.225.76.0/22 -43.225.84.0/23 -43.225.87.0/24 -43.226.112.0/21 -43.226.128.0/19 -43.226.164.0/22 -43.226.236.0/22 -43.226.32.0/19 -43.226.64.0/20 -43.227.104.0/22 -43.227.140.0/22 -43.227.152.0/21 -43.227.160.0/20 -43.227.176.0/21 -43.227.192.0/19 -43.227.252.0/22 -43.227.56.0/21 -43.227.64.0/21 -43.227.80.0/20 -43.228.0.0/19 -43.228.116.0/22 -43.228.204.0/22 -43.228.240.0/22 -43.228.36.0/22 -43.228.40.0/21 -43.228.48.0/20 -43.228.64.0/21 -43.228.76.0/22 -43.229.184.0/22 -43.229.216.0/22 -43.229.48.0/22 -43.230.136.0/22 -43.230.221.0/24 -43.230.222.0/23 -43.230.72.0/22 -43.231.144.0/20 -43.231.160.0/21 -43.231.168.0/22 -43.231.32.0/22 -43.231.41.0/24 -43.231.46.0/23 -43.231.96.0/20 -43.239.120.0/22 -43.239.172.0/24 -43.239.95.0/24 -43.240.0.0/22 -43.240.124.0/22 -43.240.128.0/22 -43.240.133.0/24 -43.240.136.0/22 -43.240.156.0/22 -43.240.192.0/21 -43.240.200.0/23 -43.240.202.0/24 -43.240.204.0/22 -43.240.216.0/21 -43.240.56.0/21 -43.240.72.0/22 -43.241.16.0/22 -43.241.180.0/22 -43.241.208.0/20 -43.241.224.0/20 -43.241.240.0/22 -43.241.48.0/22 -43.241.76.0/22 -43.242.152.0/21 -43.242.164.0/22 -43.242.180.0/22 -43.242.192.0/21 -43.242.204.0/22 -43.242.252.0/22 -43.242.72.0/22 -43.242.84.0/22 -43.242.96.0/22 -43.243.12.0/22 -43.243.128.0/22 -43.243.136.0/22 -43.243.148.0/22 -43.243.156.0/22 -43.243.16.0/22 -43.243.228.0/22 -43.243.232.0/22 -43.243.244.0/22 -43.243.4.0/22 -43.243.88.0/22 -43.247.100.0/22 -43.247.176.0/20 -43.247.196.0/22 -43.247.244.0/22 -43.247.248.0/22 -43.247.4.0/24 -43.247.68.0/22 -43.247.84.0/22 -43.247.88.0/22 -43.248.0.0/22 -43.248.108.0/22 -43.248.112.0/21 -43.248.128.0/20 -43.248.184.0/21 -43.248.192.0/20 -43.248.232.0/22 -43.248.244.0/22 -43.248.48.0/22 -43.248.76.0/22 -43.248.96.0/21 -43.249.136.0/22 -43.249.144.0/22 -43.249.168.0/23 -43.249.192.0/22 -43.249.236.0/22 -43.250.112.0/22 -43.250.144.0/22 -43.250.168.0/22 -43.250.200.0/22 -43.250.236.0/22 -43.250.244.0/22 -43.250.32.0/22 -43.250.4.0/22 -43.250.96.0/22 -43.251.100.0/22 -43.251.244.0/22 -43.251.36.0/22 -43.251.4.0/22 -43.251.8.0/22 -43.252.48.0/24 -43.254.0.0/22 -43.254.100.0/22 -43.254.104.0/23 -43.254.106.0/24 -43.254.116.0/22 -43.254.136.0/22 -43.254.140.0/23 -43.254.144.0/20 -43.254.168.0/21 -43.254.192.0/22 -43.254.200.0/22 -43.254.220.0/22 -43.254.224.0/20 -43.254.24.0/22 -43.254.240.0/22 -43.254.248.0/21 -43.254.44.0/22 -43.254.52.0/22 -43.254.8.0/22 -43.254.88.0/22 -43.255.0.0/22 -43.255.184.0/22 -43.255.192.0/22 -43.255.200.0/22 -43.255.212.0/22 -43.255.224.0/21 -43.255.68.0/22 -43.255.84.0/22 -43.255.96.0/22 -44.30.15.0/24 -44.30.28.0/24 -44.31.216.0/24 -44.31.28.0/24 -44.31.42.0/24 -44.31.81.0/24 -44.31.96.0/24 -44.32.143.0/24 -44.32.188.0/24 -44.32.191.0/24 -44.32.192.0/24 -45.112.232.0/22 -45.113.20.0/22 -45.113.200.0/22 -45.113.206.0/24 -45.113.24.0/22 -45.113.40.0/22 -45.114.189.0/24 -45.115.144.0/22 -45.115.164.0/22 -45.115.200.0/22 -45.115.44.0/22 -45.116.100.0/22 -45.116.140.0/22 -45.116.152.0/22 -45.116.208.0/22 -45.116.32.0/22 -45.116.52.0/22 -45.117.68.0/22 -45.117.8.0/22 -45.119.104.0/23 -45.119.116.0/22 -45.119.60.0/22 -45.119.64.0/21 -45.120.100.0/22 -45.120.164.0/22 -45.120.241.0/24 -45.120.243.0/24 -45.121.52.0/24 -45.121.55.0/24 -45.123.128.0/22 -45.123.168.0/21 -45.123.176.0/21 -45.124.124.0/22 -45.124.20.0/22 -45.124.68.0/22 -45.124.76.0/22 -45.124.80.0/22 -45.125.24.0/24 -45.125.44.0/22 -45.125.56.0/22 -45.126.112.0/22 -45.126.120.0/22 -45.127.129.0/24 -45.127.131.0/24 -45.127.144.0/21 -45.135.149.0/24 -45.147.6.0/24 -45.151.47.0/24 -45.195.6.0/24 -45.202.209.0/24 -45.202.210.0/23 -45.202.212.0/24 -45.202.64.0/22 -45.248.108.0/24 -45.248.204.0/22 -45.248.8.0/22 -45.249.188.0/24 -45.249.208.0/23 -45.249.212.0/22 -45.250.152.0/23 -45.250.180.0/22 -45.250.184.0/22 -45.250.188.0/24 -45.250.28.0/22 -45.250.32.0/21 -45.250.40.0/22 -45.251.0.0/23 -45.251.120.0/22 -45.251.20.0/22 -45.251.8.0/22 -45.251.88.0/21 -45.251.96.0/21 -45.252.0.0/22 -45.252.104.0/22 -45.252.48.0/22 -45.253.112.0/21 -45.253.132.0/22 -45.253.136.0/21 -45.253.144.0/20 -45.253.160.0/19 -45.253.192.0/19 -45.253.224.0/20 -45.253.24.0/22 -45.253.240.0/22 -45.253.32.0/24 -45.253.60.0/22 -45.253.96.0/20 -45.254.20.0/22 -45.254.48.0/23 -45.254.50.0/24 -45.254.64.0/20 -45.254.8.0/23 -45.255.152.0/22 -45.40.192.0/18 -45.65.20.0/22 -45.9.11.0/24 -47.112.0.0/13 -47.120.0.0/14 -47.92.0.0/14 -47.96.0.0/12 -49.112.0.0/13 -49.120.0.0/14 -49.128.223.0/24 -49.140.0.0/15 -49.208.0.0/14 -49.213.62.0/23 -49.221.128.0/19 -49.221.26.0/23 -49.221.64.0/19 -49.232.0.0/14 -49.239.192.0/18 -49.4.0.0/18 -49.4.112.0/21 -49.4.120.0/22 -49.4.124.0/23 -49.4.126.0/24 -49.4.128.0/22 -49.4.64.0/19 -49.4.96.0/20 -49.52.0.0/14 -49.64.0.0/11 -49.7.0.0/16 -5.10.138.0/23 -5.10.140.0/24 -5.10.143.0/24 -52.130.0.0/15 -52.80.0.0/15 -52.82.0.0/17 -52.82.128.0/23 -52.82.131.0/24 -52.82.132.0/24 -52.82.134.0/23 -52.82.136.0/24 -52.82.144.0/23 -52.82.148.0/22 -52.82.153.0/24 -52.82.160.0/21 -52.82.170.0/23 -52.82.172.0/22 -52.82.176.0/21 -52.82.184.0/23 -52.82.187.0/24 -52.82.188.0/23 -52.82.190.0/24 -52.82.192.0/18 -52.83.0.0/16 -54.222.0.0/19 -54.222.100.0/22 -54.222.104.0/21 -54.222.112.0/22 -54.222.116.0/23 -54.222.128.0/17 -54.222.32.0/21 -54.222.45.0/24 -54.222.46.0/23 -54.222.48.0/21 -54.222.57.0/24 -54.222.60.0/22 -54.222.64.0/23 -54.222.70.0/23 -54.222.72.0/21 -54.222.80.0/21 -54.222.88.0/24 -54.222.90.0/23 -54.222.96.0/23 -54.223.0.0/16 -58.100.0.0/15 -58.116.0.0/14 -58.128.0.0/13 -58.144.0.0/16 -58.154.0.0/15 -58.16.0.0/13 -58.192.0.0/11 -58.24.0.0/15 -58.240.0.0/12 -58.30.0.0/15 -58.32.0.0/11 -58.67.128.0/17 -58.68.236.0/24 -58.68.247.0/24 -58.82.0.0/22 -58.83.0.0/16 -58.87.64.0/18 -58.99.128.0/17 -59.107.0.0/17 -59.108.0.0/16 -59.109.0.0/17 -59.109.128.0/18 -59.109.192.0/20 -59.109.208.0/21 -59.109.216.0/22 -59.110.0.0/16 -59.111.0.0/20 -59.111.104.0/23 -59.111.107.0/24 -59.111.109.0/24 -59.111.111.0/24 -59.111.112.0/21 -59.111.128.0/20 -59.111.144.0/24 -59.111.152.0/21 -59.111.160.0/21 -59.111.168.0/22 -59.111.17.0/24 -59.111.173.0/24 -59.111.175.0/24 -59.111.176.0/24 -59.111.178.0/23 -59.111.18.0/23 -59.111.181.0/24 -59.111.182.0/23 -59.111.190.0/24 -59.111.192.0/23 -59.111.198.0/23 -59.111.203.0/24 -59.111.205.0/24 -59.111.21.0/24 -59.111.211.0/24 -59.111.214.0/24 -59.111.22.0/24 -59.111.224.0/21 -59.111.232.0/23 -59.111.236.0/24 -59.111.238.0/23 -59.111.24.0/21 -59.111.240.0/22 -59.111.244.0/24 -59.111.248.0/21 -59.111.32.0/24 -59.111.35.0/24 -59.111.36.0/24 -59.111.40.0/21 -59.111.64.0/19 -59.111.96.0/21 -59.151.0.0/17 -59.152.36.0/24 -59.152.38.0/23 -59.153.116.0/22 -59.153.164.0/22 -59.153.168.0/24 -59.153.32.0/22 -59.153.4.0/23 -59.153.92.0/22 -59.172.0.0/14 -59.191.0.0/17 -59.252.0.0/16 -59.32.0.0/13 -59.40.0.0/15 -59.42.0.0/16 -59.44.0.0/14 -59.48.0.0/12 -59.64.0.0/12 -59.80.0.0/17 -59.81.102.0/23 -59.81.104.0/22 -59.81.40.0/23 -59.81.46.0/24 -59.81.64.0/23 -59.81.8.0/23 -59.81.82.0/23 -59.81.94.0/23 -59.82.0.0/17 -59.82.128.0/20 -59.83.192.0/19 -59.83.224.0/21 -59.83.232.0/22 -60.0.0.0/11 -60.160.0.0/11 -60.194.0.0/15 -60.200.0.0/24 -60.204.0.0/14 -60.208.0.0/12 -60.232.0.0/16 -60.235.0.0/16 -60.245.128.0/17 -60.247.0.0/16 -60.252.0.0/16 -60.253.128.0/17 -60.255.0.0/16 -60.63.0.0/16 -61.128.0.0/10 -61.232.0.0/14 -61.236.112.0/21 -61.236.248.0/24 -61.236.251.0/24 -61.236.80.0/20 -61.236.96.0/20 -61.237.0.0/16 -61.240.0.0/16 -61.241.0.0/17 -61.241.128.0/18 -61.241.192.0/19 -61.242.0.0/15 -61.28.108.0/24 -61.28.112.0/20 -61.28.20.0/24 -61.28.22.0/24 -61.28.49.0/24 -61.29.128.0/18 -61.4.176.0/20 -61.4.80.0/23 -61.47.128.0/18 -61.48.0.0/13 -61.87.192.0/18 -62.234.0.0/16 -62.72.181.0/24 -63.140.0.0/24 -63.140.13.0/24 -63.140.3.0/24 -63.140.4.0/22 -66.102.240.0/21 -66.102.248.0/22 -66.102.252.0/24 -66.102.254.0/23 -66.92.248.0/24 -68.79.0.0/18 -69.163.104.0/24 -69.163.106.0/24 -69.163.123.0/24 -69.172.70.0/24 -69.230.192.0/18 -69.231.128.0/18 -69.234.192.0/18 -69.235.128.0/18 -71.131.192.0/18 -71.132.0.0/18 -71.136.64.0/18 -71.137.0.0/18 -74.122.24.0/23 -77.107.118.0/24 -8.128.32.0/19 -8.128.64.0/19 -8.128.96.0/20 -8.129.0.0/16 -8.130.0.0/15 -8.132.0.0/14 -8.136.0.0/13 -8.144.0.0/14 -8.148.0.0/19 -8.148.128.0/17 -8.148.36.0/22 -8.148.40.0/22 -8.148.64.0/18 -8.149.0.0/16 -8.150.0.0/20 -8.150.16.0/21 -8.150.64.0/23 -8.152.0.0/13 -8.160.0.0/15 -8.162.0.0/18 -8.162.64.0/19 -8.163.0.0/16 -8.164.0.0/14 -81.173.18.0/23 -81.173.20.0/22 -81.173.28.0/24 -81.68.0.0/14 -82.156.0.0/15 -82.39.206.0/23 -85.237.205.0/24 -94.191.0.0/17 diff --git a/small/luci-app-passwall/root/usr/share/passwall/rules/chnroute6 b/small/luci-app-passwall/root/usr/share/passwall/rules/chnroute6 deleted file mode 100644 index aaade7af84..0000000000 --- a/small/luci-app-passwall/root/usr/share/passwall/rules/chnroute6 +++ /dev/null @@ -1,1531 +0,0 @@ -2001:250::/30 -2001:254::/31 -2001:256:100::/48 -2001:4510:1480::/41 -2001:4510:400::/40 -2001:4511:1480::/41 -2001:678:10d0::/48 -2001:678:1184::/48 -2001:678:120::/48 -2001:67c:ebc::/48 -2001:7fa:5::/48 -2001:c68::/32 -2001:cc0::/32 -2001:da8::/32 -2001:daa:1::/48 -2001:daa:2::/47 -2001:daa:4::/47 -2001:daa:6::/48 -2001:dc7::/32 -2001:dd8:1::/48 -2001:dd9::/48 -2001:df0:ac40::/48 -2001:df3:3a80::/48 -2001:df3:8b80::/48 -2001:df5:4740::/48 -2001:df7:1480::/48 -2400:1160::/32 -2400:3200::/32 -2400:5280:f803::/48 -2400:54a0:21c0::/48 -2400:54a0:21c3::/48 -2400:5a60:100::/48 -2400:5a60:2::/48 -2400:5f60::/32 -2400:6000::/32 -2400:6460:300::/40 -2400:6460:500::/40 -2400:6460::/39 -2400:6600::/32 -2400:6e60:1301::/48 -2400:7100::/32 -2400:73e0::/32 -2400:75aa::/32 -2400:7bc0:20::/43 -2400:7fc0:220::/44 -2400:7fc0:240::/44 -2400:7fc0:2a0::/44 -2400:7fc0:2c0::/44 -2400:7fc0:4000::/40 -2400:7fc0:4100::/48 -2400:7fc0:6000::/40 -2400:7fc0:8000::/36 -2400:7fc0::/40 -2400:7fc0:a000::/36 -2400:7fc0:bb00::/40 -2400:7fc0:c000::/36 -2400:8200::/32 -2400:8201::/48 -2400:87c0::/32 -2400:89c0:1010::/44 -2400:89c0:1050::/46 -2400:89c0:1130::/44 -2400:89c0:1150::/48 -2400:89c0:2100::/48 -2400:89c0:2200::/48 -2400:89c0:3010::/44 -2400:89c0:6000::/48 -2400:89c0:6100::/48 -2400:8fc0:571::/48 -2400:9020:f010::/46 -2400:9340::/32 -2400:9380:8001::/48 -2400:9380:8003::/48 -2400:9380:8021::/48 -2400:9380:8040::/48 -2400:9380:8140::/48 -2400:9380:8201::/48 -2400:9380:8301::/48 -2400:9380:9001::/48 -2400:9380:9002::/48 -2400:9380:9005::/48 -2400:9380:9009::/48 -2400:9380:900a::/48 -2400:9380:9020::/47 -2400:9380:9040::/48 -2400:9380:9050::/47 -2400:9380:9060::/48 -2400:9380:9071::/48 -2400:9380:9080::/47 -2400:9380:90b1::/48 -2400:9380:90b2::/47 -2400:9380:90b4::/46 -2400:9380:9100::/47 -2400:9380:9121::/48 -2400:9380:9201::/48 -2400:9380:9202::/48 -2400:9380:9220::/47 -2400:9380:9240::/48 -2400:9380:9250::/47 -2400:9380:9260::/48 -2400:9380:9271::/48 -2400:9380:9280::/47 -2400:9380:92b1::/48 -2400:9380:92b2::/47 -2400:9380:92b4::/46 -2400:95e0::/48 -2400:9600:8800::/48 -2400:9620::/32 -2400:a040::/32 -2400:a860:1::/48 -2400:a860:2::/47 -2400:a860:4::/47 -2400:a860:6::/48 -2400:a980::/29 -2400:ae00:1981::/48 -2400:b200::/32 -2400:b600::/32 -2400:b700::/48 -2400:be00::/48 -2400:cb80:e2e::/47 -2400:cb80:e30::/44 -2400:cb80:e40::/44 -2400:da00::/32 -2400:dd00::/28 -2400:ee00::/32 -2400:f6e0::/32 -2400:fe00::/32 -2401:1160::/32 -2401:11a0:10::/44 -2401:11a0:d150::/48 -2401:11a0:d152::/48 -2401:11a0:d158::/48 -2401:1200::/48 -2401:1320::/32 -2401:1d40::/32 -2401:20::/40 -2401:2780::/32 -2401:2e00::/32 -2401:3480:2000::/48 -2401:3480:3000::/36 -2401:3480::/36 -2401:34a0::/31 -2401:3800::/32 -2401:3880::/32 -2401:3980::/32 -2401:3a80::/32 -2401:3b80::/32 -2401:3c80::/32 -2401:3d80::/32 -2401:3e80::/32 -2401:3f80::/32 -2401:4180::/32 -2401:4280::/32 -2401:4380::/32 -2401:4480::/32 -2401:4580::/32 -2401:4680::/32 -2401:4780::/32 -2401:4880::/32 -2401:4a80::/32 -2401:5c20:10::/48 -2401:70e0::/32 -2401:71c0::/48 -2401:7660::/48 -2401:7700::/32 -2401:7d40::/32 -2401:7e00::/32 -2401:800::/32 -2401:8be0::/48 -2401:8d00:12::/48 -2401:8d00:14::/48 -2401:8d00:4::/48 -2401:8d00:7::/48 -2401:8d00:8::/47 -2401:8d00::/46 -2401:8d00:b::/48 -2401:8d00:c::/48 -2401:8d00:f::/48 -2401:9a00:10::/46 -2401:9a00::/44 -2401:a140:1::/48 -2401:b180::/32 -2401:b400:11::/48 -2401:b400:14::/48 -2401:b400:16::/47 -2401:b400:20::/47 -2401:b400:8::/47 -2401:b400::/45 -2401:b680::/32 -2401:bd60::/32 -2401:be00::/32 -2401:c020:14::/48 -2401:c020:6::/48 -2401:c020:8::/47 -2401:ca00::/32 -2401:cb80::/32 -2401:cc00::/32 -2401:ce00::/32 -2401:d0e0:2::/47 -2401:d180:10::/47 -2401:d180:111::/48 -2401:d180:2120::/48 -2401:d180::/46 -2401:d920::/48 -2401:de00::/32 -2401:ec00::/32 -2401:f860:100::/40 -2401:f860:7::/48 -2401:f860:86::/47 -2401:f860:88::/47 -2401:f860:90::/46 -2401:f860:94::/47 -2401:f860:97::/48 -2401:f860:b::/48 -2401:f860:d::/48 -2401:f860:f6::/48 -2401:f860:f::/48 -2401:fa00:40::/43 -2402:1440::/32 -2402:1460::/32 -2402:2000::/32 -2402:20e0:f000::/48 -2402:3180:8000::/33 -2402:3180::/46 -2402:36e0::/48 -2402:3c00::/32 -2402:3f80:1400::/40 -2402:4440:9000::/39 -2402:4440:9200::/48 -2402:4440:9400::/48 -2402:4440:9600::/48 -2402:4440:9800::/48 -2402:4440:9810::/48 -2402:4440:9900::/48 -2402:4440:9a00::/48 -2402:4440:9b00::/48 -2402:4440:9c00::/48 -2402:4440:9d00::/48 -2402:4440:9e00::/48 -2402:4440:a000::/39 -2402:4440:a800::/46 -2402:4440:a810::/46 -2402:4b80::/32 -2402:4e00::/32 -2402:5e40::/32 -2402:5ec0::/32 -2402:6e80::/32 -2402:6f40:2::/48 -2402:6f40::/48 -2402:6fc0::/48 -2402:7040::/32 -2402:7d80:240::/47 -2402:7d80:8888::/48 -2402:7d80::/48 -2402:840:d000::/46 -2402:840:e000::/46 -2402:840:f000::/38 -2402:8bc0::/32 -2402:8cc0:200::/40 -2402:8cc0::/40 -2402:92c0::/48 -2402:93c0:100::/48 -2402:93c0:20::/48 -2402:93c0::/48 -2402:9a80::/32 -2402:a200::/32 -2402:b8c0:106::/48 -2402:b8c0:186::/48 -2402:b8c0:6::/48 -2402:b8c0:86::/48 -2402:b940:200::/39 -2402:b940::/40 -2402:c60::/48 -2402:d340::/32 -2402:db40:5100::/48 -2402:db40:5900::/48 -2402:db40:5f00::/46 -2402:dfc0:50::/44 -2402:dfc0::/44 -2402:e380:100::/40 -2402:e380:15::/48 -2402:e480::/32 -2402:e740::/32 -2402:e7c0::/32 -2402:ef40::/32 -2402:f000::/32 -2402:f140:ff00::/46 -2402:f140:ff04::/48 -2402:f140:ff10::/46 -2402:f140:ff14::/48 -2402:f8c0:2::/48 -2402:f8c0:5::/48 -2402:f8c0::/47 -2403:1b80::/48 -2403:1ec0:1200::/48 -2403:1ec0:1400::/48 -2403:1ec0:1600::/48 -2403:1ec0:1610::/48 -2403:1ec0:1900::/48 -2403:2040::/48 -2403:2b40::/32 -2403:3140::/32 -2403:4240::/32 -2403:4280::/47 -2403:4300::/32 -2403:4c80::/48 -2403:5c80::/48 -2403:600::/32 -2403:6380:14::/47 -2403:6380:40::/46 -2403:6380:60::/44 -2403:6a00::/32 -2403:7580::/32 -2403:8080:101::/48 -2403:8c00::/32 -2403:9b00::/32 -2403:a100::/48 -2403:a140:100::/40 -2403:a140:10::/48 -2403:a200::/32 -2403:ac00::/32 -2403:ad80:101c::/48 -2403:ad80:8008::/48 -2403:ad80:8047::/48 -2403:b400::/32 -2403:c80::/32 -2403:c980::/32 -2403:d400::/32 -2403:f4c0::/48 -2403:ffc0:1100::/40 -2403:ffc0:1200::/39 -2404:1c80::/32 -2404:3700::/48 -2404:4dc0::/32 -2404:6380:1000::/48 -2404:6380:8001::/48 -2404:6380::/48 -2404:6500:dcb3::/48 -2404:7180:a000::/48 -2404:7180:a010::/48 -2404:7180:aa00::/48 -2404:7180:aa10::/48 -2404:7180:b001::/48 -2404:7180:b002::/48 -2404:7180:b010::/48 -2404:7180:c001::/48 -2404:7180:c002::/48 -2404:7180:c011::/48 -2404:7180:c012::/48 -2404:7180:f000::/48 -2404:7180:f010::/48 -2404:7240::/33 -2404:7600::/32 -2404:7940::/32 -2404:bc0:1::/48 -2404:bc0:4000::/43 -2404:bc0:4100::/43 -2404:bc0:4200::/43 -2404:bc0:4300::/44 -2404:bc0:4400::/43 -2404:bc0:4500::/43 -2404:bc0:4f00::/43 -2404:c2c0:240::/44 -2404:c2c0:280::/44 -2404:c2c0:2c0::/44 -2404:c2c0:4000::/40 -2404:c2c0:4100::/48 -2404:c2c0:501::/48 -2404:c2c0:6000::/40 -2404:c2c0:8000::/36 -2404:c2c0::/40 -2404:c2c0:bb00::/40 -2404:c2c0:c000::/36 -2404:c300::/32 -2404:c940::/48 -2404:e280::/47 -2404:e5c0::/32 -2404:e8c0::/32 -2404:f4c0::/32 -2405:1480:1000::/48 -2405:1480:2000::/48 -2405:1480:3000::/47 -2405:3140:11::/48 -2405:3140:21::/48 -2405:3140:31::/48 -2405:3140:3a::/48 -2405:66c0::/32 -2405:68c0:21::/48 -2405:6940::/48 -2405:6c0:2::/48 -2405:6c0:4::/48 -2405:6f00:c101::/48 -2405:6f00:c102::/48 -2405:6f00:c170::/47 -2405:6f00:c602::/48 -2405:7040:6000::/47 -2405:78c0:6e00::/43 -2405:8280::/32 -2405:8a40::/32 -2405:a900:ffee::/48 -2405:a900:fffe::/48 -2405:ad00::/32 -2405:b7c0::/32 -2405:d900::/32 -2405:e000::/32 -2405:f580::/32 -2405:f940::/32 -2406:1080::/48 -2406:1e40:f012::/47 -2406:2700::/32 -2406:280::/32 -2406:3340::/32 -2406:3640:1::/48 -2406:3d80::/32 -2406:4d00::/48 -2406:52c0::/32 -2406:5340:6666::/48 -2406:5340:8888::/48 -2406:6100::/32 -2406:840:8100::/40 -2406:840:9000::/44 -2406:840:9600::/44 -2406:840:9620::/44 -2406:840:9963::/48 -2406:840:996c::/48 -2406:840:e080::/44 -2406:840:e0cf::/48 -2406:840:e0e0::/46 -2406:840:e0e4::/47 -2406:840:e0e8::/48 -2406:840:e10f::/48 -2406:840:e14f::/48 -2406:840:e201::/48 -2406:840:e230::/44 -2406:840:e600::/48 -2406:840:e602::/47 -2406:840:e60c::/47 -2406:840:e620::/47 -2406:840:e666::/47 -2406:840:e720::/44 -2406:840:e770::/48 -2406:840:e777::/48 -2406:840:e80f::/48 -2406:840:eb00::/46 -2406:840:eb04::/47 -2406:840:eb07::/48 -2406:840:eb08::/48 -2406:840:eb0b::/48 -2406:840:eb0f::/48 -2406:840:ee40::/47 -2406:840:ee44::/48 -2406:840:ee4b::/48 -2406:840:ee4d::/48 -2406:840:eee5::/48 -2406:840:f200::/47 -2406:840:f203::/48 -2406:840:f380::/44 -2406:840:f44f::/48 -2406:840:fa01::/48 -2406:840:fa40::/48 -2406:840:fa60::/44 -2406:840:fc10::/44 -2406:840:fc20::/43 -2406:840:fc40::/42 -2406:840:fc80::/45 -2406:840:fc88::/48 -2406:840:fc8f::/48 -2406:840:fc90::/44 -2406:840:fca0::/43 -2406:840:fcc0::/44 -2406:840:fcd0::/48 -2406:840:fcf0::/46 -2406:840:fcf4::/47 -2406:840:fd40::/42 -2406:840:fd80::/42 -2406:840:fdc0::/44 -2406:840:fdea::/48 -2406:840:fe27::/48 -2406:840:fe90::/46 -2406:840:fe94::/48 -2406:840:fe96::/47 -2406:840:fe98::/46 -2406:840:fe9d::/48 -2406:840:fe9e::/48 -2406:840:fea2::/47 -2406:840:fea4::/46 -2406:840:fea8::/45 -2406:840:fec0::/48 -2406:840:fec2::/47 -2406:840:fec4::/47 -2406:840:fec8::/48 -2406:840:feca::/47 -2406:840:fecc::/47 -2406:840:fecf::/48 -2406:840:fed1::/48 -2406:840:fed8::/48 -2406:840:fedb::/48 -2406:840:fedc::/48 -2406:840:fedf::/48 -2406:840:fef0::/48 -2406:840:fef3::/48 -2406:840:fef4::/48 -2406:840:fef6::/47 -2406:840:fef8::/46 -2406:840:fefc::/48 -2406:840:feff::/48 -2406:8880::/48 -2406:b640:100::/48 -2406:b640:4100::/48 -2406:cac0:200::/40 -2406:cac0::/40 -2406:cf00:1000::/43 -2406:cf00::/48 -2406:d440:100::/43 -2406:d440:200::/43 -2406:d440:300::/43 -2406:d440:ff00::/48 -2406:d440:ffff::/48 -2406:e3c0::/32 -2406:e500::/33 -2407:23c0::/48 -2407:2840::/48 -2407:3740::/48 -2407:37c0::/32 -2407:4980::/32 -2407:5380::/32 -2407:6c40:1100::/48 -2407:6c40:1210::/48 -2407:6c40:1500::/48 -2407:6c40:1600::/40 -2407:8f40:2::/48 -2407:9f00::/32 -2407:ad80::/32 -2407:ae80::/32 -2407:b380:8000::/48 -2407:bc00::/32 -2407:c080:4000::/37 -2407:c080:5000::/37 -2407:c080:6000::/36 -2407:c080:8000::/36 -2407:c080::/35 -2407:d9c0::/32 -2408:4000::/22 -2408:8000:1000::/36 -2408:8000:2000::/35 -2408:8000:2::/47 -2408:8000:4000::/34 -2408:8000:8000::/33 -2408:8000::/48 -2408:8001::/32 -2408:8020::/30 -2408:8024::/31 -2408:8026::/32 -2408:802a:8000::/33 -2408:802c::/32 -2408:803e::/32 -2408:8056::/32 -2408:805c::/30 -2408:8060::/33 -2408:80c2::/33 -2408:80c5::/33 -2408:80ca:8000::/34 -2408:80ca::/33 -2408:80da:8000::/34 -2408:80da::/33 -2408:80e0:4000::/34 -2408:80e0:8000::/33 -2408:80e2::/33 -2408:80e9:4000::/34 -2408:80ea:4000::/34 -2408:80ea:8000::/33 -2408:80f0:4000::/34 -2408:80f0:8000::/33 -2408:80f1:100::/43 -2408:80f1:120::/44 -2408:80f1:160::/43 -2408:80f1:180::/43 -2408:80f1:1b0::/44 -2408:80f1:1c0::/43 -2408:80f1:1e0::/44 -2408:80f1:200::/40 -2408:80f1:40::/43 -2408:80f1:70::/44 -2408:80f1:80::/41 -2408:80f1::/42 -2408:80f5:4000::/34 -2408:80f9:4000::/34 -2408:80fa:4000::/34 -2408:80fa:8000::/33 -2408:8120:1::/48 -2408:8120:2::/48 -2408:8120:7000::/36 -2408:8140:2000::/48 -2408:815f:e000::/35 -2408:8181:6000::/40 -2408:8181:8000::/40 -2408:8181::/40 -2408:8181:a000::/40 -2408:8181:a220::/44 -2408:8181:e000::/40 -2408:8182:6000::/40 -2408:8182:c000::/40 -2408:8183:4000::/40 -2408:8183:8000::/40 -2408:81a2:2000::/35 -2408:81a2:4000::/35 -2408:81a3:6000::/35 -2408:81a3:c800::/48 -2408:81a3:ca66::/48 -2408:8206::/31 -2408:8208::/29 -2408:8210::/30 -2408:8214::/31 -2408:821a::/31 -2408:8220::/31 -2408:8226::/32 -2408:822a::/31 -2408:822e::/31 -2408:8230::/29 -2408:8238::/31 -2408:823c::/31 -2408:8240::/32 -2408:8244::/30 -2408:8248::/30 -2408:824c::/32 -2408:824e::/31 -2408:8250::/30 -2408:8254::/32 -2408:8256::/31 -2408:8258::/30 -2408:825c::/31 -2408:825f::/32 -2408:8260::/32 -2408:8262::/31 -2408:8264::/31 -2408:8266::/32 -2408:826a::/32 -2408:826c::/30 -2408:8270::/32 -2408:8274::/30 -2408:8278::/31 -2408:827a::/32 -2408:8306::/31 -2408:8308::/30 -2408:8310::/30 -2408:832a::/32 -2408:832e::/31 -2408:8330::/30 -2408:8338::/32 -2408:8340::/32 -2408:8344::/30 -2408:8348::/30 -2408:834e::/31 -2408:8350::/30 -2408:8354::/32 -2408:8356::/31 -2408:8358::/30 -2408:8360::/30 -2408:8364::/31 -2408:836c::/30 -2408:8374::/30 -2408:8378::/31 -2408:837a::/32 -2408:8406:100::/41 -2408:8406:1800::/43 -2408:8406:180::/42 -2408:8406:18c0::/42 -2408:8406:1900::/41 -2408:8406:1980::/42 -2408:8406:2400::/43 -2408:8406:24c0::/42 -2408:8406:2500::/41 -2408:8406:2580::/42 -2408:8406:3000::/43 -2408:8406:30c0::/42 -2408:8406:3100::/41 -2408:8406:3180::/42 -2408:8406:3c00::/43 -2408:8406:3cc0::/42 -2408:8406:3d00::/41 -2408:8406:3d80::/42 -2408:8406:4800::/43 -2408:8406:48c0::/42 -2408:8406:4900::/41 -2408:8406:4980::/42 -2408:8406:5400::/43 -2408:8406:54c0::/42 -2408:8406:5500::/41 -2408:8406:5580::/42 -2408:8406:6000::/43 -2408:8406:60c0::/42 -2408:8406:6100::/41 -2408:8406:6180::/42 -2408:8406:6c00::/43 -2408:8406:6cc0::/42 -2408:8406:6d00::/41 -2408:8406:6d80::/42 -2408:8406:7800::/43 -2408:8406:78c0::/42 -2408:8406:7900::/41 -2408:8406:7980::/42 -2408:8406:8400::/43 -2408:8406:84c0::/42 -2408:8406:8500::/41 -2408:8406:8580::/42 -2408:8406:9000::/43 -2408:8406:90c0::/42 -2408:8406:9100::/41 -2408:8406:9180::/42 -2408:8406:9c00::/43 -2408:8406:9cc0::/42 -2408:8406:9d00::/41 -2408:8406:9d80::/42 -2408:8406::/43 -2408:8406:a800::/43 -2408:8406:a8c0::/42 -2408:8406:a900::/41 -2408:8406:a980::/42 -2408:8406:b400::/43 -2408:8406:b4c0::/42 -2408:8406:b500::/41 -2408:8406:b580::/42 -2408:8406:c00::/43 -2408:8406:c0::/42 -2408:8406:cc0::/42 -2408:8406:d00::/41 -2408:8406:d80::/42 -2408:8407:520::/44 -2408:8409:100::/41 -2408:8409:1800::/40 -2408:8409:1900::/41 -2408:8409:19a0::/43 -2408:8409:19c0::/42 -2408:8409:1a0::/43 -2408:8409:1c0::/42 -2408:8409:2400::/40 -2408:8409:2500::/41 -2408:8409:25a0::/43 -2408:8409:25c0::/42 -2408:8409:3000::/40 -2408:8409:3100::/41 -2408:8409:31a0::/43 -2408:8409:31c0::/42 -2408:8409:3c00::/40 -2408:8409:3d00::/41 -2408:8409:3da0::/43 -2408:8409:3dc0::/42 -2408:8409:4800::/40 -2408:8409:4900::/41 -2408:8409:49a0::/43 -2408:8409:49c0::/42 -2408:8409:5400::/40 -2408:8409:5500::/41 -2408:8409:55a0::/43 -2408:8409:55c0::/42 -2408:8409:6000::/40 -2408:8409:6100::/41 -2408:8409:61a0::/43 -2408:8409:61c0::/42 -2408:8409:6c00::/40 -2408:8409:6d00::/41 -2408:8409:6da0::/43 -2408:8409:6dc0::/42 -2408:8409:7800::/40 -2408:8409:7900::/41 -2408:8409:79a0::/43 -2408:8409:79c0::/42 -2408:8409:8400::/40 -2408:8409:8500::/41 -2408:8409:85a0::/43 -2408:8409:85c0::/42 -2408:8409:9000::/40 -2408:8409:9100::/41 -2408:8409:91a0::/43 -2408:8409:91c0::/42 -2408:8409:9c00::/40 -2408:8409:9d00::/41 -2408:8409:9da0::/43 -2408:8409:9dc0::/42 -2408:8409::/40 -2408:8409:a800::/40 -2408:8409:a900::/41 -2408:8409:a9a0::/43 -2408:8409:a9c0::/42 -2408:8409:b400::/40 -2408:8409:b500::/41 -2408:8409:b5a0::/43 -2408:8409:b5c0::/42 -2408:8409:c00::/40 -2408:8409:d00::/41 -2408:8409:da0::/43 -2408:8409:dc0::/42 -2408:840c:1a00::/40 -2408:840c:1c00::/40 -2408:840c:200::/40 -2408:840c:2700::/40 -2408:840c:2900::/40 -2408:840c:3400::/40 -2408:840c:3600::/40 -2408:840c:4e00::/40 -2408:840c:5000::/40 -2408:840c:5b00::/40 -2408:840c:5d00::/40 -2408:840c:6800::/40 -2408:840c:6a00::/40 -2408:840c:7500::/40 -2408:840c:7700::/40 -2408:840c:8200::/40 -2408:840c:8400::/40 -2408:840c:8f00::/40 -2408:840c:9100::/40 -2408:840c:9c00::/40 -2408:840c:9e00::/40 -2408:840c::/40 -2408:840c:a900::/40 -2408:840c:ab00::/40 -2408:840c:b600::/40 -2408:840c:b800::/40 -2408:840c:c300::/40 -2408:840c:c500::/40 -2408:840c:d000::/40 -2408:840c:d00::/40 -2408:840c:d200::/40 -2408:840c:dd00::/40 -2408:840c:de00::/40 -2408:840c:f00::/40 -2408:840d:1100::/42 -2408:840d:1300::/42 -2408:840d:1a00::/42 -2408:840d:1c00::/42 -2408:840d:1e00::/42 -2408:840d:2000::/42 -2408:840d:200::/42 -2408:840d:2700::/42 -2408:840d:2900::/42 -2408:840d:2b00::/42 -2408:840d:2d00::/42 -2408:840d:3400::/42 -2408:840d:3600::/42 -2408:840d:3800::/42 -2408:840d:3a00::/42 -2408:840d:400::/42 -2408:840d:4e00::/42 -2408:840d:5000::/42 -2408:840d:5200::/42 -2408:840d:5400::/42 -2408:840d:5b00::/42 -2408:840d:5d00::/42 -2408:840d:5f00::/42 -2408:840d:600::/42 -2408:840d:6100::/42 -2408:840d:6800::/42 -2408:840d:6a00::/42 -2408:840d:6c00::/42 -2408:840d:6e00::/42 -2408:840d:7500::/42 -2408:840d:7700::/42 -2408:840d:7900::/42 -2408:840d:7b00::/42 -2408:840d:8200::/42 -2408:840d:8400::/42 -2408:840d:8600::/42 -2408:840d:8800::/42 -2408:840d:8f00::/42 -2408:840d:9100::/42 -2408:840d:9300::/42 -2408:840d:9500::/42 -2408:840d:9c00::/42 -2408:840d:9e00::/42 -2408:840d::/42 -2408:840d:a000::/42 -2408:840d:a200::/42 -2408:840d:a900::/42 -2408:840d:ab00::/42 -2408:840d:ad00::/42 -2408:840d:af00::/42 -2408:840d:b600::/42 -2408:840d:b800::/42 -2408:840d:ba00::/42 -2408:840d:bc00::/42 -2408:840d:c300::/42 -2408:840d:c500::/42 -2408:840d:c700::/42 -2408:840d:c900::/42 -2408:840d:d000::/42 -2408:840d:d00::/42 -2408:840d:d200::/42 -2408:840d:d400::/42 -2408:840d:d600::/42 -2408:840d:dd00::/42 -2408:840d:de00::/42 -2408:840d:f00::/42 -2408:840e:dd00::/40 -2408:840e:de00::/40 -2408:840f:1e0::/46 -2408:840f:1e4::/47 -2408:8410::/30 -2408:8414::/31 -2408:8417::/32 -2408:8418::/32 -2408:841a::/31 -2408:841c::/31 -2408:841e::/32 -2408:8420::/31 -2408:8422::/32 -2408:8426::/31 -2408:842a::/31 -2408:842c::/32 -2408:842e::/32 -2408:8430::/31 -2408:8434::/30 -2408:8438::/31 -2408:843c::/30 -2408:8440::/31 -2408:8444::/30 -2408:8448::/32 -2408:844b::/32 -2408:844c::/30 -2408:8452::/31 -2408:8454::/32 -2408:8456::/31 -2408:8458::/30 -2408:845c::/31 -2408:8460::/30 -2408:8464::/31 -2408:8466::/32 -2408:8469::/32 -2408:846a::/31 -2408:846c::/30 -2408:8470::/31 -2408:8474::/30 -2408:8478::/31 -2408:847a::/32 -2408:84e1::/32 -2408:84e2::/31 -2408:84e4::/30 -2408:84e9::/32 -2408:84eb::/32 -2408:84ec::/30 -2408:84f0::/28 -2408:856c::/31 -2408:8606::/31 -2408:8608::/29 -2408:8610::/30 -2408:8614::/31 -2408:861a::/31 -2408:861c::/32 -2408:8620::/31 -2408:8624::/31 -2408:8626::/32 -2408:862a::/31 -2408:862d::/32 -2408:862e::/31 -2408:8630::/29 -2408:8638::/31 -2408:863c::/31 -2408:8640::/32 -2408:8642::/32 -2408:8644::/30 -2408:8648::/31 -2408:864c::/32 -2408:864e::/31 -2408:8650::/30 -2408:8656::/31 -2408:8658::/30 -2408:865c::/31 -2408:865f::/32 -2408:8660::/32 -2408:8662::/31 -2408:8664::/31 -2408:8666::/32 -2408:866a::/31 -2408:866c::/30 -2408:8670::/32 -2408:8674::/30 -2408:8678::/31 -2408:867a::/32 -2408:8706::/31 -2408:8708::/29 -2408:8710::/30 -2408:8719::/32 -2408:871a::/31 -2408:8720::/30 -2408:8726::/32 -2408:872b::/32 -2408:872f::/32 -2408:8730::/30 -2408:8734::/31 -2408:8736::/32 -2408:8738::/32 -2408:873c::/31 -2408:8740::/32 -2408:8742::/32 -2408:8744::/30 -2408:8748::/29 -2408:8752::/32 -2408:8756::/31 -2408:8758::/30 -2408:875c::/32 -2408:8760::/32 -2408:8762::/31 -2408:8764::/31 -2408:8766::/32 -2408:8768::/32 -2408:876a::/32 -2408:876c::/30 -2408:8770::/32 -2408:8772::/31 -2408:8774::/32 -2408:8776::/31 -2408:8778::/31 -2408:877a::/32 -2408:877c::/30 -2408:8806:40::/43 -2408:8806::/42 -2408:880c::/30 -2408:8810::/30 -2408:8814::/31 -2408:8818::/31 -2408:882c::/32 -2408:883a::/32 -2408:8844::/43 -2408:8856::/31 -2408:8858::/30 -2408:8862::/31 -2408:8864::/31 -2408:8866::/32 -2408:886e::/31 -2408:8872::/32 -2408:8878::/31 -2408:887e::/32 -2408:8906:20::/44 -2408:8907:9000::/44 -2408:890c::/31 -2408:8912::/31 -2408:8914::/30 -2408:891c::/32 -2408:8920::/32 -2408:8924::/32 -2408:892c::/32 -2408:8936::/32 -2408:893a::/32 -2408:8940::/32 -2408:8948::/32 -2408:894c::/32 -2408:894e::/32 -2408:8956::/31 -2408:8958::/30 -2408:8962::/31 -2408:8964::/31 -2408:8966::/32 -2408:896c::/32 -2408:896e::/31 -2408:8972::/32 -2408:8978::/30 -2408:897e::/32 -2408:8a00:c000::/36 -2408:8a00:d000::/37 -2408:8a00:e000::/35 -2408:8a01::/36 -2408:8a02:b110::/44 -2408:8a02:b120::/44 -2408:8a04:8000::/36 -2408:8a04:e000::/40 -2408:8a05:6000::/35 -2408:8a05:8000::/36 -2408:8a06:100::/47 -2408:8a06::/47 -2408:8a21:4000::/35 -2408:8a22:9200::/39 -2408:8a22:9400::/38 -2408:8a22:9800::/40 -2408:8a22:9a00::/39 -2408:8a22:9c00::/38 -2408:8a22:a000::/37 -2408:8a23:4000::/34 -2408:8a24:4000::/34 -2408:8a26:c000::/34 -2408:8a27:4000::/35 -2409:2000::/31 -2409:2002::/32 -2409:27fa::/48 -2409:27fa:f000::/48 -2409:27fb::/48 -2409:27fc::/48 -2409:27fe::/33 -2409:8000::/20 -240a:2000::/40 -240a:2001:1000::/36 -240a:2001:100::/40 -240a:4002:1b00::/40 -240a:4010:8000::/33 -240a:4020:83a::/48 -240a:4020:883a::/48 -240a:4021:83a::/48 -240a:4021:883a::/48 -240a:4080:8000::/35 -240a:4084:2000::/35 -240a:4088:a000::/35 -240a:408c:2000::/35 -240a:4090:1000::/39 -240a:4090:1200::/40 -240a:4090:120::/48 -240a:4090:2010::/48 -240a:4090:2041::/48 -240a:4090:2061::/48 -240a:4090:250::/48 -240a:4090:3000::/39 -240a:4090:3200::/40 -240a:4090:5000::/39 -240a:4090:50::/48 -240a:4090:5200::/40 -240a:4090:7000::/39 -240a:4090:7200::/40 -240a:4090:8000::/35 -240a:4093::/35 -240a:4094:2000::/35 -240a:409c:2000::/35 -240a:40a4:2000::/35 -240a:40a8:8000::/35 -240a:40ac:2000::/35 -240a:40b0:283a::/48 -240a:40b0:483a::/48 -240a:40b0:683a::/48 -240a:40b0:83a::/48 -240a:40c0:8000::/43 -240a:40c0:8200::/48 -240a:40c0:8240::/48 -240a:40c0:a000::/43 -240a:40c0:c000::/43 -240a:40c0:e000::/43 -240a:40c1:2000::/43 -240a:40c1:4000::/43 -240a:40c1:6000::/43 -240a:40c1:8000::/43 -240a:40c1::/43 -240a:40c1:a000::/43 -240a:40c1:c000::/43 -240a:40c1:e000::/43 -240a:40c2:2000::/43 -240a:40c2:4000::/43 -240a:40c2:6000::/43 -240a:40c2:8000::/43 -240a:40c2::/43 -240a:40c2:a000::/43 -240a:40c2:c000::/43 -240a:40c2:e000::/43 -240a:40c3:2000::/43 -240a:40c3:4000::/43 -240a:40c3:6000::/43 -240a:40c3:8000::/43 -240a:40c3::/43 -240a:40c3:c000::/43 -240a:40c3:c200::/48 -240a:40c3:c240::/48 -240a:40c3:e000::/43 -240a:40c4:2000::/43 -240a:40c4:4000::/43 -240a:40c4::/43 -240a:4172::/31 -240a:4180::/31 -240a:41b0::/34 -240a:41b8:8800::/40 -240a:41b8:a000::/40 -240a:41b8:d400::/40 -240a:41b8:e400::/40 -240a:41d6::/31 -240a:41f2::/31 -240a:4208::/30 -240a:4224:9000::/44 -240a:4224:a000::/44 -240a:4224:c000::/44 -240a:4224:d000::/44 -240a:4224:e000::/44 -240a:4225:1000::/44 -240a:4230::/31 -240a:4242::/31 -240a:4280::/26 -240a:42c0::/27 -240a:42e0::/28 -240a:42f0::/29 -240a:42f8::/30 -240a:6001::/48 -240a:a000::/20 -240a:c000::/20 -240b:e001::/32 -240b:e002::/31 -240b:e004::/30 -240b:e008::/29 -240b:e010::/32 -240c:4000::/22 -240c:6:3::/48 -240c:6::/47 -240c:c000::/20 -240c:f:1::/48 -240d:4000::/21 -240e::/20 -2602:2e0:ff::/48 -2602:f7ee:ee::/48 -2602:f92a:1314::/48 -2602:f92a:a46d::/48 -2602:f92a:a46f::/48 -2602:f92a:a470::/47 -2602:f92a:a473::/48 -2602:f92a:dead::/48 -2602:f92a:e100::/44 -2602:f93b:400::/38 -2602:f93b:800::/37 -2602:f9ba:10c::/48 -2602:f9ba:a8::/48 -2602:fab0:11::/48 -2602:feda:1bf::/48 -2602:feda:1d1::/48 -2602:feda:1df::/48 -2602:feda:2d0::/44 -2602:feda:2f0::/44 -2605:9d80:8001::/48 -2605:9d80:8011::/48 -2605:9d80:8021::/48 -2605:9d80:8031::/48 -2605:9d80:8041::/48 -2605:9d80:8081::/48 -2605:9d80:9003::/48 -2605:9d80:9013::/48 -2605:9d80:9023::/48 -2605:9d80:9033::/48 -2605:9d80:9042::/48 -2605:9d80:9071::/48 -2605:9d80:9092::/48 -2620:57:4004::/48 -2804:1e48:9001::/48 -2804:1e48:9002::/48 -2a01:f100:1f8::/48 -2a04:3e00:1002::/48 -2a04:f580:8010::/47 -2a04:f580:8090::/48 -2a04:f580:8210::/47 -2a04:f580:8290::/48 -2a04:f580:9010::/48 -2a04:f580:9012::/47 -2a04:f580:9020::/48 -2a04:f580:9030::/48 -2a04:f580:9040::/48 -2a04:f580:9050::/48 -2a04:f580:9060::/48 -2a04:f580:9070::/48 -2a04:f580:9080::/48 -2a04:f580:9210::/48 -2a04:f580:9212::/47 -2a04:f580:9220::/48 -2a04:f580:9230::/48 -2a04:f580:9240::/48 -2a04:f580:9250::/48 -2a04:f580:9260::/48 -2a04:f580:9270::/48 -2a04:f580:9280::/48 -2a04:f580:9290::/48 -2a05:1087::/32 -2a05:dfc3:ff00::/40 -2a06:1281:8000::/36 -2a06:3603::/32 -2a06:3604::/30 -2a06:9f81:4600::/43 -2a06:9f81:4620::/44 -2a06:9f81:4640::/43 -2a06:a005:1c40::/44 -2a06:a005:260::/43 -2a06:a005:280::/43 -2a06:a005:2a0::/44 -2a06:a005:8d0::/44 -2a06:a005:a13::/48 -2a09:54c4::/31 -2a09:54c6:3000::/36 -2a09:54c6:b000::/36 -2a09:54c6:c000::/36 -2a09:54c6:d000::/48 -2a09:54c6:e000::/36 -2a09:b280:ff81::/48 -2a09:b280:ff83::/48 -2a09:b280:ff84::/47 -2a0a:2840::/30 -2a0a:2845:aab8::/46 -2a0a:2845:d647::/48 -2a0a:2846::/48 -2a0a:6040:ec00::/40 -2a0a:6044:6600::/39 -2a0a:6044:7a00::/40 -2a0a:d682::/31 -2a0a:d684::/31 -2a0a:d686:8000::/40 -2a0b:2542::/48 -2a0b:4e07:b8::/47 -2a0c:9a40:84e0::/48 -2a0c:9a40:8fc1::/48 -2a0c:9a40:8fc2::/47 -2a0c:9a40:8fc4::/48 -2a0c:b641:571::/48 -2a0c:b641:722::/47 -2a0e:97c0:5ef::/48 -2a0e:9b00::/29 -2a0e:aa01:1fff::/48 -2a0e:aa06:440::/48 -2a0e:aa06:490::/44 -2a0e:aa06:4e0::/44 -2a0e:aa06:500::/44 -2a0e:aa06:520::/48 -2a0e:aa06:525::/48 -2a0e:aa06:541::/48 -2a0e:aa06::/40 -2a0e:aa07:e01a::/47 -2a0e:aa07:e021::/48 -2a0e:aa07:e025::/48 -2a0e:aa07:e030::/48 -2a0e:aa07:e035::/48 -2a0e:aa07:e039::/48 -2a0e:aa07:e044::/48 -2a0e:aa07:e0e0::/44 -2a0e:aa07:e151::/48 -2a0e:aa07:e155::/48 -2a0e:aa07:e15f::/48 -2a0e:aa07:e160::/47 -2a0e:aa07:e162::/48 -2a0e:aa07:e16a::/48 -2a0e:aa07:e1a0::/44 -2a0e:aa07:e200::/44 -2a0e:aa07:e210::/48 -2a0e:aa07:e21c::/47 -2a0e:aa07:e220::/44 -2a0e:aa07:f0d0::/46 -2a0e:aa07:f0d4::/47 -2a0e:aa07:f0d8::/48 -2a0e:aa07:f0de::/47 -2a0e:b107:12b::/48 -2a0e:b107:14a0::/44 -2a0e:b107:178d::/48 -2a0e:b107:178e::/48 -2a0e:b107:272::/48 -2a0e:b107:740::/44 -2a0e:b107:c10::/48 -2a0e:b107:da0::/44 -2a0f:1cc4::/32 -2a0f:1cc5:100::/43 -2a0f:1cc5:11::/48 -2a0f:1cc5:1200::/40 -2a0f:1cc5:130::/44 -2a0f:1cc5:1400::/48 -2a0f:1cc5:1c00::/47 -2a0f:1cc5:1d10::/47 -2a0f:1cc5:1d14::/48 -2a0f:1cc5:20::/44 -2a0f:1cc5:600::/47 -2a0f:1cc5:610::/48 -2a0f:1cc5:645::/48 -2a0f:1cc5:900::/40 -2a0f:1cc5:f00::/46 -2a0f:1cc5:f05::/48 -2a0f:1cc5:f06::/48 -2a0f:1cc5:fff::/48 -2a0f:1cc5:ffff::/48 -2a0f:1cc6:b110::/47 -2a0f:1cc7::/32 -2a0f:5707:ac01::/48 -2a0f:6282::/32 -2a0f:6284:300::/40 -2a0f:6284:400::/42 -2a0f:6284:440::/43 -2a0f:6284:4b00::/40 -2a0f:6284:4c00::/44 -2a0f:6284:4c20::/44 -2a0f:6284:4c30::/48 -2a0f:6284:4c40::/43 -2a0f:6284:4c60::/44 -2a0f:6284:4c80::/43 -2a0f:7803:e300::/40 -2a0f:7803:f680::/44 -2a0f:7803:fa21::/48 -2a0f:7803:fa22::/47 -2a0f:7803:fa24::/46 -2a0f:7803:faf3::/48 -2a0f:7803:fe41::/48 -2a0f:7803:fe45::/48 -2a0f:7803:fe81::/48 -2a0f:7803:fe82::/48 -2a0f:7804:f650::/44 -2a0f:7804:f9f0::/44 -2a0f:7d07::/32 -2a0f:85c1:ba5::/48 -2a0f:85c1:bfe::/48 -2a0f:85c1:ce1::/48 -2a0f:85c1:cf1::/48 -2a0f:85c1:d90::/48 -2a0f:9400:6110::/48 -2a0f:9400:7700::/48 -2a0f:ac00::/29 -2a10:ccc0:d00::/47 -2a10:ccc0:d03::/48 -2a10:ccc0:d0a::/47 -2a10:ccc0:d0c::/47 -2a10:ccc6:66cc::/46 -2a12:f8c3::/36 -2a13:1800:10::/48 -2a13:1800:300::/44 -2a13:1800:80::/44 -2a13:1800::/48 -2a13:1801:180::/43 -2a13:a5c3:ff21::/48 -2a13:a5c3:ff50::/44 -2a13:a5c7:1800::/40 -2a13:a5c7:2100::/48 -2a13:a5c7:2102::/48 -2a13:a5c7:2121::/48 -2a13:a5c7:2301::/48 -2a13:a5c7:2302::/47 -2a13:a5c7:2306::/48 -2a13:a5c7:23c0::/48 -2a13:a5c7:2801::/48 -2a13:a5c7:31a0::/43 -2a13:a5c7:3301::/48 -2a13:a5c7:3302::/48 -2a13:a5c7:3304::/48 -2a13:a5c7:3306::/47 -2a13:aac4:f000::/44 -2a14:4c41::/32 -2a14:67c1:702::/47 -2a14:67c1:704::/48 -2a14:67c1:74::/48 -2a14:67c1:800::/48 -2a14:67c1:802::/47 -2a14:67c1:804::/48 -2a14:67c1:806::/47 -2a14:67c1:a010::/44 -2a14:67c1:a020::/48 -2a14:67c1:a023::/48 -2a14:67c1:a024::/48 -2a14:67c1:a02a::/48 -2a14:67c1:a02f::/48 -2a14:67c1:a040::/47 -2a14:67c1:a110::/44 -2a14:67c1:a123::/48 -2a14:67c1:a126::/48 -2a14:67c1:a128::/48 -2a14:67c1:a144::/48 -2a14:67c1:b000::/48 -2a14:67c1:b065::/48 -2a14:67c1:b066::/48 -2a14:67c1:b068::/47 -2a14:67c1:b100::/46 -2a14:67c1:b105::/48 -2a14:67c1:b107::/48 -2a14:67c1:b110::/48 -2a14:67c1:b130::/46 -2a14:67c1:b134::/47 -2a14:67c1:b136::/48 -2a14:67c1:b140::/48 -2a14:67c1:b142::/47 -2a14:67c1:b441::/48 -2a14:67c1:b442::/48 -2a14:67c1:b490::/45 -2a14:67c1:b4a8::/47 -2a14:67c1:b4c0::/45 -2a14:67c1:b4e0::/44 -2a14:67c1:b500::/47 -2a14:67c1:b514::/48 -2a14:67c1:b549::/48 -2a14:67c1:b578::/48 -2a14:67c1:b581::/48 -2a14:67c1:b582::/48 -2a14:67c1:b586::/48 -2a14:67c1:b588::/47 -2a14:67c1:b590::/48 -2a14:67c1:b599::/48 -2a14:67c1:c300::/40 -2a14:67c1:c600::/40 -2a14:7580:730::/44 -2a14:7580:740::/44 -2a14:7580:750::/47 -2a14:7580:775::/48 -2a14:7580:777::/48 -2a14:7580:9220::/44 -2a14:7580:9400::/39 -2a14:7580:d000::/37 -2a14:7580:d800::/39 -2a14:7580:df00::/40 -2a14:7580:fe00::/40 -2a14:7580:ffe4::/48 -2a14:7580:fff4::/48 -2a14:7580:fff7::/48 -2a14:7580:fffa::/48 -2a14:7581:30b6::/48 -2a14:7581:3100::/40 -2a14:7581:3401::/48 -2a14:7581:b12::/47 -2a14:7581:b14::/48 -2a14:7581:b20::/46 -2a14:7581:b40::/45 -2a14:7581:b60::/44 -2a14:7581:bbb::/48 -2a14:7581:bcd::/48 -2a14:7581:bff::/48 -2a14:7581:ffb::/48 -2a14:7583:f224::/48 -2a14:7583:f228::/48 -2a14:7583:f244::/47 -2a14:7583:f300::/46 -2a14:7583:f304::/47 -2a14:7583:f4f1::/48 -2a14:7583:f4fe::/48 -2a14:7583:f500::/48 -2a14:7583:f701::/48 -2a14:7583:f702::/47 -2a14:7583:f704::/46 -2a14:7583:f708::/46 -2a14:7583:f70c::/48 -2a14:7583:f743::/48 -2a14:7583:f744::/48 -2a14:7583:f764::/48 -2a14:7586:6100::/46 -2a14:7586:6105::/48 -2a14:7c0:4a01::/48 -2a14:7c0:5103::/48 -2c0f:f7a8:8011::/48 -2c0f:f7a8:8050::/48 -2c0f:f7a8:805f::/48 -2c0f:f7a8:8150::/48 -2c0f:f7a8:815f::/48 -2c0f:f7a8:8211::/48 -2c0f:f7a8:9010::/48 -2c0f:f7a8:9020::/48 -2c0f:f7a8:9041::/48 -2c0f:f7a8:9210::/47 -2c0f:f7a8:9220::/48 diff --git a/small/luci-app-passwall/root/usr/share/passwall/rules/direct_host b/small/luci-app-passwall/root/usr/share/passwall/rules/direct_host deleted file mode 100644 index a3b14645b1..0000000000 --- a/small/luci-app-passwall/root/usr/share/passwall/rules/direct_host +++ /dev/null @@ -1,27 +0,0 @@ -cn -apple.com -microsoft.com -dyndns.com -douyucdn.cn -douyucdn2.cn -location.services.mozilla.com - -#steam -steamcontent.com -dl.steam.clngaa.com -dl.steam.ksyna.com -st.dl.bscstorage.net -st.dl.eccdnx.com -st.dl.pinyuncloud.com -cdn.mileweb.cs.steampowered.com.8686c.com -cdn-ws.content.steamchina.com -cdn-qc.content.steamchina.com -cdn-ali.content.steamchina.com -epicgames-download1-1251447533.file.myqcloud.com - -#DoT/DoH -dns.alidns.com -doh.pub -dot.pub -doh.360.cn -dot.360.cn diff --git a/small/luci-app-passwall/root/usr/share/passwall/rules/direct_ip b/small/luci-app-passwall/root/usr/share/passwall/rules/direct_ip deleted file mode 100644 index b73edaa63a..0000000000 --- a/small/luci-app-passwall/root/usr/share/passwall/rules/direct_ip +++ /dev/null @@ -1,10 +0,0 @@ -114.114.114.114 -114.114.115.115 -223.5.5.5 -223.6.6.6 -119.29.29.29 -180.76.76.76 -1.12.12.12 -120.53.53.53 -180.184.1.1 -180.184.2.2 diff --git a/small/luci-app-passwall/root/usr/share/passwall/rules/domains_excluded b/small/luci-app-passwall/root/usr/share/passwall/rules/domains_excluded deleted file mode 100644 index f2def6f260..0000000000 --- a/small/luci-app-passwall/root/usr/share/passwall/rules/domains_excluded +++ /dev/null @@ -1,26 +0,0 @@ -courier.push.apple.com -rbsxbxp-mim.vivox.com -rbsxbxp.www.vivox.com -rbsxbxp-ws.vivox.com -rbspsxp.www.vivox.com -rbspsxp-mim.vivox.com -rbspsxp-ws.vivox.com -rbswxp.www.vivox.com -rbswxp-mim.vivox.com -disp-rbspsp-5-1.vivox.com -disp-rbsxbp-5-1.vivox.com -proxy.rbsxbp.vivox.com -proxy.rbspsp.vivox.com -proxy.rbswp.vivox.com -rbswp.vivox.com -rbsxbp.vivox.com -rbspsp.vivox.com -rbspsp.www.vivox.com -rbswp.www.vivox.com -rbsxbp.www.vivox.com -rbsxbxp.vivox.com -rbspsxp.vivox.com -rbswxp.vivox.com -Mijia Cloud -dlg.io.mi.com -marscdn.c2c.wechat.com diff --git a/small/luci-app-passwall/root/usr/share/passwall/rules/gfwlist b/small/luci-app-passwall/root/usr/share/passwall/rules/gfwlist deleted file mode 100644 index 4f21510733..0000000000 --- a/small/luci-app-passwall/root/usr/share/passwall/rules/gfwlist +++ /dev/null @@ -1,5966 +0,0 @@ -000webhost.com -030buy.com -0rz.tw -1-apple.com.tw -1000giri.net -10beasts.net -10conditionsoflove.com -10musume.com -123rf.com -12bet.com -12vpn.com -12vpn.net -1337x.to -138.com -141hongkong.com -141jj.com -141tube.com -1688.com.au -173ng.com -177pic.info -17t17p.com -18board.com -18comic.org -18onlygirls.com -18p2p.com -18virginsex.com -1984bbs.com -1991way.com -1dumb.com -1e100.net -1eew.com -1lib.sk -1mobile.com -1point3acres.com -1pondo.tv -2-hand.info -2000fun.com -2008xianzhang.info -2021hkcharter.com -2047.name -2047.one -2049bbs.xyz -21andy.com -21sextury.com -228.net.tw -233abc.com -24hrs.ca -25u.com -2lipstube.com -2shared.com -2waky.com -3-a.net -30boxes.com -315lz.com -32red.com -36rain.com -3a5a.com -3arabtv.com -3boys2girls.com -3d-game.com -3proxy.ru -3ren.ca -3tui.net -404museum.com -466453.com -4bluestones.biz -4chan.com -4dq.com -4everproxy.com -4irc.com -4mydomain.com -4pu.com -4rbtv.com -4shared.com -4sqi.net -500px.com -500px.org -51.ca -51jav.org -51luoben.com -5278.cc -5299.tv -56cun04.jigsy.com -5i01.com -5isotoi5.org -5maodang.com -611study.com -611study.icu -63i.com -64museum.org -64tianwang.com -64wiki.com -66.ca -666kb.com -666pool.cn -69shuba.cx -6do.news -6do.world -6park.com -6parkbbs.com -6parker.com -6parknews.com -7capture.com -7cow.com -8-d.com -85cc.us -881903.com -888.com -888poker.com -89-64.org -89.64.charter.constitutionalism.solutions -8964museum.com -8news.com.tw -8z1.net -91dasai.com -91porn.com -91porny.com -91vps.club -92ccav.com -991.com -996.icu -99btgc01.com -99cn.info -9bis.com -9bis.net -9cache.com -9gag.com -9news.com.au -a-normal-day.com -a248.e.akamai.net -a5.com.ru -aamacau.com -abc.com -abc.net.au -abc.xyz -abchinese.com -abebooks.co.uk -abebooks.com -abematv.akamaized.net -abitno.linpie.com -ablwang.com -aboluowang.com -about.gitlab.com -about.me -abplive.com -abs.edu -acast.com -accim.org -accountkit.com -aceros-de-hispania.com -acevpn.com -acg.rip -acg18.me -acgbox.org -acgkj.com -acgnx.se -acmedia365.com -acmetoy.com -acnw.com.au -actfortibet.org -actimes.com.au -activpn.com -aculo.us -adcex.com -addictedtocoffee.de -addons.mozilla.org -addyoutube.com -adelaidebbs.com -adguard-vpn.com -admin.recaptcha.net -admob.com -adpl.org.hk -ads-twitter.com -adsense.com -adult-sex-games.com -adult.friendfinder.com -adultfriendfinder.com -advanscene.com -advertfan.com -advertisercommunity.com -ae.hao123.com -ae.org -aei.org -aenhancers.com -aex.com -af.mil -afantibbs.com -afr.com -afreecatv.com -agnesb.fr -agoogleaday.com -agro.hk -ai.binwang.me -ai.dev -aiosearch.com -aiph.net -airasia.com -airconsole.com -airitilibrary.com -airvpn.org -aisex.com -aiss.anws.gov.tw -ait.org.tw -aiweiwei.com -aiweiweiblog.com -akademiye.org -akamaihd.net -akiba-online.com -akiba-web.com -akinator.com -akow.org -al-islam.com -alabout.com -alanhou.com -alarab.qa -alasbarricadas.org -alforattv.net -alhayat.com -alicejapan.co.jp -aliengu.com -alive.bar -aljazeera.com -aljazeera.net -alkasir.com -all4mom.org -allcoin.com -allconnected.co -alldrawnsex.com -allfinegirls.com -allgirlmassage.com -allgirlsallowed.org -allgravure.com -alliance.org.hk -allinfa.com -alljackpotscasino.com -allmovie.com -allowed.org -almostmy.com -alphaporno.com -alternate-tools.com -alternativeto.net -altrec.com -alvinalexander.com -alwaysdata.com -alwaysdata.net -alwaysvpn.com -am730.com.hk -amazon.co.jp -amazonvideo.com -ameblo.jp -americangreencard.com -americanunfinished.com -americorps.gov -amiblockedornot.com -amigobbs.net -amitabhafoundation.us -amnesty.org -amnesty.org.hk -amnesty.tw -amnestyusa.org -ampproject.org -amtb-taipei.org -amuletmc.com -anchor.fm -anchorfree.com -ancsconf.org -andfaraway.net -android-x86.org -android.com -androidapksfree.com -androidify.com -androidtv.com -andygod.com -angela-merkel.de -angelfire.com -angola.org -angularjs.org -animecrazy.net -aniscartujo.com -annas-archive.org -annas-archive.se -annatam.com -anobii.com -anonfiles.com -anontext.com -anonymitynetwork.com -anonymizer.com -anonymouse.org -anpopo.com -answering-islam.org -anthonycalzadilla.com -anthropic.com -antichristendom.com -antiwave.net -antpool.com -anuneko.com -anyporn.com -anysex.com -ao3.org -aobo.com.au -aofriend.com -aojiao.org -aomedia.org -aomiwang.com -aoxvpn.com -apartmentratings.com -apartments.com -apat1989.org -apetube.com -api-secure.recaptcha.net -api-verify.recaptcha.net -api.ai -api.palworldgame.com -api.pureapk.com -api.recaptcha.net -api.steampowered.com -apiary.io -apigee.com -apk.support -apkcombo.com -apkmirror.com -apkmonk.com -apkplz.com -apkpure.com -apkpure.net -app.box.com -app.cloudcone.com -app.smartmailcloud.com -appadvice.com -appbrain.com -appdownloader.net -appledaily.com -appledaily.com.tw -apps.evozi.com -appshopper.com -appsocks.net -appspot.com -appsto.re -aptoide.com -ar.hao123.com -archive.fo -archive.is -archive.li -archive.md -archive.org -archive.ph -archive.today -archive.vn -archiveofourown.com -archiveofourown.org -archives.gov -archives.gov.tw -arctosia.com -areca-backup.org -arena.taipei -arethusa.su -arlingtoncemetery.mil -art4tibet1998.org -arte.tv -artofpeacefoundation.org -artstation.com -artsy.net -arvanstorage.ir -asacp.org -asdfg.jp -asg.to -asia-gaming.com -asiaharvest.org -asianage.com -asianews.it -asianfanfics.com -asiansexdiary.com -asiaone.com -asiatgp.com -ask.com -askstudent.com -askynz.net -aspi.org.au -aspistrategist.org.au -assembla.com -assets.bwbx.io -assimp.org -astrill.com -atc.org.au -atchinese.com -atgfw.org -athenaeizou.com -atlanta168.com -atnext.com -auctions.yahoo.co.jp -audacy.com -auntology.fandom.com -authorizeddns.net -authorizeddns.org -autodraw.com -av-e-body.com -av.com -av.movie -av01.tv -avaaz.org -avcool.com -avdb.in -avdb.tv -avfantasy.com -avg.com -avgle.com -avidemux.org -avmo.pw -avmoo.com -avmoo.net -avmoo.pw -avoision.com -avyahoo.com -axios.com -axureformac.com -azerimix.com -azirevpn.com -azurewebsites.net -b-ok.cc -b.hatena.ne.jp -b0ne.com -babylonbee.com -babynet.com.hk -backchina.com -backpackers.com.tw -backtotiananmen.com -bad.news -badiucao.com -badjojo.com -badoo.com -bahamut.com.tw -baidu.jp -baijie.org -bailandaily.com -baixing.me -baizhi.org -banana-vpn.com -band.us -bandcamp.com -bandwagonhost.com -bangbrosnetwork.com -bangchen.net -bangdream.space -bangkokpost.com -bangumi.moe -bangyoulater.com -bankmobilevibe.com -bannedbook.org -bannednews.org -banorte.com -baramangaonline.com -barenakedislam.com -barnabu.co.uk -bartender.dowjones.com -barton.de -bastillepost.com -bayvoice.net -bb-chat.tv -bbc.co.uk -bbc.com -bbc.in -bbcchinese.com -bbchat.tv -bbci.co.uk -bbg.gov -bbkz.com -bbnradio.org -bbs-tw.com -bbs.brockbbs.com -bbs.cantonese.asia -bbs.ecstart.com -bbs.hanminzu.org -bbs.huasing.org -bbs.junglobal.net -bbs.mikocon.com -bbs.morbell.com -bbs.mychat.to -bbs.naixi.net -bbs.nyinfor.com -bbs.sina.com -bbs.skykiwi.com -bbs.sou-tong.org -bbsdigest.com -bbsland.com -bbsmo.com -bbsone.com -bbtoystore.com -bcc.com.tw -bcchinese.net -bcex.ca -bcmorning.com -bdsmvideos.net -beaconevents.com -bearteach.com -bebo.com -beeg.com -beepool.com -beepool.org -beevpn.com -behance.net -behindkink.com -beijing1989.com -beijing2022.art -beijingspring.com -belamionline.com -bell.wiki -bemywife.cc -beric.me -berlinerbericht.de -berlintwitterwall.com -berm.co.nz -bestgore.com -bestpornstardb.com -bestvpn.com -bestvpnanalysis.com -bestvpnforchina.net -bestvpnserver.com -bestvpnservice.com -bestvpnusa.com -bet365.com -betaclouds.net -betfair.com -bettergpt.chat -betterhash.net -betternet.co -bettervpn.com -bettween.com -betvictor.com -bewww.net -beyondfirewall.com -bfnn.org -bfsh.hk -bgme.me -bgvpn.com -bianlei.com -biantailajiao.com -biblesforamerica.org -bibox.com -biedian.me -big.one -bigfools.com -bigjapanesesex.com -bigmoney.biz -bignews.org -bigone.com -bigsound.org -bild.de -biliworld.com -billypan.com -binance.com -binance.org -binancezh.cc -binux.me -bird.so -bit-z.com -bit.do -bit.ly -bitbaby.com -bitbay.net -bitchute.com -bitcointalk.org -bitcoinworld.com -bitfinex.com -bitget.com -bithumb.com -bitmex.com -bitshare.com -bitsnoop.com -bitterwinter.org -bitvise.com -bitz.ai -bizhat.com -bjnewlife.org -bjs.org -bjzc.org -bl-doujinsouko.com -blacked.com -blacklogic.com -blackmagicdesign.com -blackvpn.com -blewpass.com -blinkx.com -blinw.com -blip.tv -blockcast.it -blockcn.com -blockedbyhk.com -blockless.com -blocktempo.com -blog.cryptographyengineering.com -blog.de -blog.excite.co.jp -blog.expofutures.com -blog.fizzik.com -blog.foolsmountain.com -blog.fuckgfw233.org -blog.goo.ne.jp -blog.jackjia.com -blog.jp -blog.lester850.info -blog.martinoei.com -blog.pathtosharepoint.com -blog.pentalogic.net -blog.ranxiang.com -blog.reimu.net -blog.sogoo.org -blog.soylent.com -blog.syx86.com -blog.taragana.com -blog.tiney.com -blog.youthwant.com.tw -blogblog.com -blogcatalog.com -blogcity.me -blogdns.org -blogger.com -blogimg.jp -blogjav.net -bloglines.com -bloglovin.com -blogspot.ae -blogspot.al -blogspot.am -blogspot.ba -blogspot.be -blogspot.bg -blogspot.ca -blogspot.cat -blogspot.ch -blogspot.cl -blogspot.co.uk -blogspot.com -blogspot.com.ar -blogspot.com.au -blogspot.com.br -blogspot.com.by -blogspot.com.co -blogspot.com.cy -blogspot.com.ee -blogspot.com.eg -blogspot.com.es -blogspot.com.mt -blogspot.com.ng -blogspot.com.tr -blogspot.com.uy -blogspot.cz -blogspot.de -blogspot.dk -blogspot.fi -blogspot.fr -blogspot.gr -blogspot.hk -blogspot.hr -blogspot.hu -blogspot.ie -blogspot.in -blogspot.is -blogspot.it -blogspot.jp -blogspot.kr -blogspot.li -blogspot.lt -blogspot.lu -blogspot.md -blogspot.mk -blogspot.mx -blogspot.my -blogspot.nl -blogspot.no -blogspot.pe -blogspot.pt -blogspot.qa -blogspot.ro -blogspot.ru -blogspot.se -blogspot.sg -blogspot.si -blogspot.sk -blogspot.sn -blogspot.tw -blogspot.ug -blogtd.org -bloodshed.net -bloomberg.cn -bloomberg.com -bloomberg.de -bloombergview.com -bloomfortune.com -blubrry.com -blueangellive.com -bmdru.com -bnbstatic.com -bnext.com.tw -bnn.co -bnrmetal.com -boardreader.com -bod.asia -bodog88.com -bolehvpn.net -bolin.netfirms.com -bonbonme.com -bonfoundation.org -bongacams.com -boobstagram.com -book.com.tw -book.zi5.me -bookdepository.com -bookepub.com -books.com.tw -booktopia.com.au -bookwalker.com.tw -bootstrapcdn.com -borgenmagazine.com -bot.nu -botanwang.com -bowenpress.com -boxpn.com -boxun.com -boxun.tv -boxunclub.com -boyangu.com -boyfriendtv.com -boysfood.com -boysmaster.com -br.hao123.com -br.st -brainyquote.com -braumeister.org -brave.com -bravotube.net -brazzers.com -breached.to -break.com -breakgfw.com -breaking911.com -breakingtweets.com -breakwall.net -briian.com -brill.com -brizzly.com -broadbook.com -broadpressinc.com -brookings.edu -brucewang.net -brutaltgp.com -bsky.app -bsky.network -bsky.social -bt4g.org -bt4gprx.com -bt95.com -btaia.com -btbit.net -btbtav.com -btbtt.co -btbtt.me -btc.com -btc98.com -btcbank.bank -btctrade.im -btdig.com -btguard.com -btku.me -btku.org -btspread.com -btsynckeys.com -budaedu.org -buddhanet.com.tw -buffered.com -bullguard.com -bullog.org -bullogger.com -bumingbai.net -bunbunhk.com -busayari.com -business-humanrights.org -business.page -businessinsider.com -businesstoday.com.tw -businessweek.com -busu.org -busytrade.com -buzzhand.com -buzzhand.net -buzzorange.com -buzzsprout.com -bvpn.com -bwgyhw.com -bwh1.net -bx.in.th -bybit.com -bynet.co.il -bypasscensorship.org -byrut.org -c-est-simple.com -c-span.org -c-spanvideo.org -c.mi.com -c100tibet.org -c2cx.com -c3pool.com -cableav.tv -cablegatesearch.net -cachefly.com -cachefly.net -cachinese.com -cacnw.com -cactusvpn.com -cafepress.com -cahr.org.tw -calameo.com -calebelston.com -calendarz.com -calgarychinese.ca -calgarychinese.com -calgarychinese.net -cam4.com -cam4.jp -cam4.sg -camfrog.com -campaign-archive.com -campaignforuyghurs.org -cams.com -cams.org.sg -canadameet.com -canalporno.com -canva.com -canyu.org -caobian.info -caochangqing.com -caoporn.us -cap.org.hk -carabinasypistolas.com -cardinalkungfoundation.org -carfax.com -cari.com.my -caribbeancom.com -carmotorshow.com -carousell.com.hk -carrd.co -cartoonmovement.com -casadeltibetbcn.org -casatibet.org.mx -casino.williamhill.com -casinobellini.com -casinoking.com -casinoriva.com -castbox.fm -catbox.moe -catch22.net -catchgod.com -catholic.org.hk -catholic.org.tw -cathvoice.org.tw -cato.org -cattt.com -caus.com -cbc.ca -cbs.ntu.edu.tw -cbsnews.com -cbtc.org.hk -cccat.cc -cccat.co -ccfd.org.tw -cchere.com -cchostvps.xyz -ccim.org -cclife.ca -cclife.org -cclifefl.org -ccthere.com -ccthere.net -cctmweb.net -cctongbao.com -ccue.ca -ccue.com -ccvoice.ca -ccw.org.tw -cdbook.org -cdef.org -cdig.info -cdjp.org -cdn-images.mailchimp.com -cdn-telegram.org -cdn.arstechnica.net -cdn.assets.lfpcontent.com -cdn.helixstudios.net -cdn.jwplayer.com -cdn.printfriendly.com -cdn.seatguru.com -cdn.softlayer.net -cdn.statically.io -cdn1.lp.saboom.com -cdnews.com.tw -cdninstagram.com -cdp1989.org -cdp1998.org -cdp2006.org -cdpeu.org -cdpuk.co.uk -cdpweb.org -cdpwu.org -cdw.com -cecc.gov -cellulo.info -cenews.eu -centauro.com.br -centerforhumanreprod.com -centralnation.com -centurys.net -certificate-transparency.org -certificate.revocationcheck.com -cfhks.org.hk -cfos.de -cfr.org -cftfc.com -cgdepot.org -cgst.edu -change.org -changeip.name -changeip.net -changeip.org -changp.com -channelnewsasia.com -chanworld.org -chaoex.com -chaos.social -character.ai -chat.com -chat.lmsys.org -chatgpt.com -chatnook.com -chatpdf.com -chaturbate.com -checkgfw.com -chengmingmag.com -chenguangcheng.com -chenpokong.com -chenpokongvip.com -chenshan20042005.wordpress.com -cherrysave.com -chhongbi.org -china-mmm.jp.net -china-mmm.net -china-review.com.ua -china-week.com -china.ucanews.com -china101.com -china18.org -china21.com -china21.org -china5000.us -chinaaffairs.org -chinaaid.net -chinaaid.org -chinaaid.us -chinachange.org -chinachannel.hk -chinademocrats.org -chinadialogue.net -chinadigitaltimes.net -chinaelections.org -chinafile.com -chinafreepress.org -chinagate.com -chinagfw.org -chinagonet.com -chinahorizon.org -chinahush.com -chinainperspective.com -chinalaborwatch.org -chinalawandpolicy.com -chinalawtranslate.com -chinamule.com -chinamz.org -chinanewscenter.com -chinapost.com.tw -chinapress.com.my -chinarightsia.org -chinasmile.net -chinasocialdemocraticparty.com -chinasoul.org -chinasucks.net -chinatopsex.com -chinatown.com.au -chinauncensored.tv -chinaview.wordpress.com -chinaway.org -chinaworker.info -chinayouth.org.hk -chinese-leaders.org -chinese-memorial.org -chinese.donga.com -chinese.engadget.com -chinese.irib.ir -chinese.soifind.com -chinesedaily.com -chinesedailynews.com -chinesedemocracy.com -chinesegay.org -chinesen.de -chinesenews.net.au -chinesepen.org -chineseradioseattle.com -chineseupress.com -chingcheong.com -chinman.net -chithu.org -chobit.cc -chrdnet.com -christianfreedom.org -christianstudy.com -christiantimes.org.hk -christusrex.org -chrlawyers.hk -chrome.com -chromecast.com -chromeexperiments.com -chromestatus.com -chuang-yen.org -chubold.com -chubun.com -churchinhongkong.org -chushigangdrug.ch -ci-en.jp -cici.com -ciciai.com -cienen.com -cineastentreff.de -cipfg.org -cirosantilli.com -citizencn.com -citizenlab.ca -citizenlab.org -citizensradio.org -city365.ca -city9x.com -citypopulation.de -citytalk.tw -civicparty.hk -civilhrfront.org -civiliangunner.com -civilmedia.tw -civitai.com -cixiaoya.club -ck101.com -clarionproject.org -classicalguitarblog.net -claude.ai -clb.org.hk -cldr.unicode.org -cleansite.biz -cleansite.info -cleansite.us -clearharmony.net -clearsurance.com -clearwisdom.net -clementine-player.org -clinica-tibet.ru -clipconverter.cc -clipfish.de -cloud.dify.ai -cloud.mail.ru -cloudflare-dns.com -cloudflare-ipfs.com -cloudflarestatus.com -cloudfunctions.net -club1069.com -clubhouseapi.com -clyp.it -cmcn.org -cmegroup.com -cmi.org.tw -cmp.hku.hk -cms.gov -cmule.com -cmx.im -cn-proxy.com -cn.fmnnow.com -cn.freeones.com -cn.nytstyle.com -cn.sandscotaicentral.com -cn.shafaqna.com -cn.streetvoice.com -cn.theaustralian.com.au -cn.uncyclopedia.wikia.com -cn.uptodown.com -cn6.eu -cna.com.tw -cnabc.com -cnbbnews.wordpress.com -cnbeta.com.tw -cnd.org -cnex.org.cn -cnineu.com -cnn.com -cnnews.chosun.com -cnpolitics.org -cnproxy.com -co.ng.mil -coat.co.jp -cobinhood.com -cochina.org -codeshare.io -codeskulptor.org -cofacts.tw -coffeemanga.to -coinbase.com -coinbene.com -coinex.com -coingecko.com -coingi.com -coinmarketcap.com -coinrail.co.kr -cointiger.com -cointobe.com -coinut.com -colacloud.net -collateralmurder.com -collateralmurder.org -comefromchina.com -comic-mega.me -commandarms.com -comments.app -commentshk.com -communistcrimes.org -communitychoicecu.com -comparitech.com -compileheart.com -compress.to -connect.facebook.net -conoha.jp -contactmagazine.net -contests.twilio.com -convio.net -cool18.com -coolaler.com -coolder.com -coolloud.org.tw -coolncute.com -coolstuffinc.com -copilot.microsoft.com -corumcollege.com -cos-moe.com -cosplayjav.pl -costco.com -cotweet.com -counter.social -coursehero.com -covenantswatch.org.tw -coze.com -cpj.org -cpu-monkey.com -cq99.us -crackle.com -crazypool.org -crazys.cc -crazyshit.com -crbug.com -crchina.org -crd-net.org -creaders.net -creadersnet.com -creativelab5.com -cristyli.com -crocotube.com -crossfire.co.kr -crossvpn.net -crosswall.org -croxyproxy.com -crrev.com -crucial.com -crunchyroll.com -cruxpool.com -csdparty.com -csis.org -csmonitor.com -css.pixnet.in -csuchen.de -csw.org.uk -ct.org.tw -ctao.org -ctinets.com -ctinews.com -ctitv.com.tw -ctowc.org -cts.com.tw -ctwant.com -cuhkacs.org -cuiweiping.net -culture.tw -cumlouder.com -curvefish.com -cusp.hk -cutout.pro -cutscenes.net -cw.com.tw -cyberghost.natado.com -cyberghostvpn.com -cynscribe.com -d-fukyu.com -d.cash -d100.net -d2bay.com -d2pass.com -dabr.co.uk -dabr.eu -dabr.me -dabr.mobi -dadazim.com -dadi360.com -dafabet.com -dafagood.com -dafahao.com -dafoh.org -daftporn.com -dagelijksestandaard.nl -daidostup.ru -dailymail.co.uk -dailymotion.com -dailynews.sina.com -dailysabah.com -dailyview.tw -dajiyuan.com -dajiyuan.de -dajiyuan.eu -dalailama-archives.org -dalailama.com -dalailama.mn -dalailama.ru -dalailama80.org -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 -dalianmeng.org -daliulian.org -danbooru.donmai.us -danke4china.net -daodu14.jigsy.com -daolan.net -darktech.org -darmau.co -darpa.mil -darrenliuwei.com -dashlane.com -data-vocabulary.org -data.gov.tw -daum.net -david-kilgour.com -dawangidc.com -daxa.cn -daylife.com -db.tt -dbgjd.com -dcard.tw -dcmilitary.com -ddc.com.tw -ddex.io -ddns.info -ddns.me.uk -ddns.mobi -ddns.ms -ddns.name -ddns.net -ddns.us -deadhouse.org -deadline.com -deaftone.com -debug.com -deck.ly -deck.new -decodet.co -deepai.org -deepmind.com -deezer.com -definebabe.com -deja.com -delcamp.net -demo.unlock-music.dev -demosisto.hk -depositphotos.com -desc.se -desipro.de -dessci.com -destiny.xfiles.to -destroy-china.jp -deutsche-welle.de -developers.box.net -deviantart.com -deviantart.net -devio.us -devpn.com -devv.ai -dfn.org -dharamsalanet.com -dharmakara.net -diaoyuislands.org -difangwenge.org -digiland.tw -digisfera.com -diigo.com -dipity.com -directcreative.com -discoins.com -disconnect.me -discord.com -discord.gg -discordapp.com -discordapp.net -discuss.com.hk -discuss4u.com -dish.com -disk.yandex.com -disk.yandex.ru -disneyplus.com -disp.cc -disqus.com -dit-inc.us -diyin.org -dizhidizhi.com -dizhuzhishang.com -djangosnippets.org -dl-laby.jp -dl.box.net -dlive.tv -dlsite.com -dlyoutube.com -dm530.net -dma.mil -dmc.nico -dmcdn.net -dmhy.org -dmm.co.jp -dns-dns.com -dns-stuff.com -dns04.com -dns05.com -dns1.us -dns2.us -dns2go.com -dnscrypt.org -dnset.com -dnsrd.com -dnssec.net -dnvod.tv -doc.new -docker.com -docker.io -dockerstatus.com -docs.new -doctorvoice.org -documentingreality.com -dogfartnetwork.com -dojin.com -dolc.de -dolf.org.hk -domain.club.tw -domaintoday.com.au -dongtaiwang.com -dongtaiwang.net -dongyangjing.com -dontfilter.us -doom9.org -doosho.com -doourbest.org -dorjeshugden.com -dotplane.com -dotsub.com -dotvpn.com -doub.io -doubibackup.com -doubiyunbackup.com -doublethinklab.org -douchi.space -dougscripts.com -doujincafe.com -download.aircrack-ng.org -download.cnet.com -dphk.org -dpool.top -dpp.org.tw -dpr.info -dragonex.io -dragonsprings.org -dreamamateurs.com -drepung.org -drgan.net -dropbooks.tv -dropbox.com -dropboxapi.com -dropboxusercontent.com -drtuber.com -dscn.info -dsmtp.com -dstk.dk -dtiblog.com -dtic.mil -dubox.com -duck.com -duckduckgo.com -duckload.com -duckmylife.com -duga.jp -duihua.org -duihuahrjournal.org -dumb1.com -duping.net -duplicati.com -dupola.com -dupola.net -dushi.ca -duyaoss.com -dvdpac.com -dvorak.org -dw-world.com -dw-world.de -dw.com -dw.de -dweb.link -dwnews.com -dwnews.net -dynamic-dns.net -dynamicdns.biz -dynamicdns.co.uk -dynamicdns.me.uk -dynamicdns.org.uk -dynawebinc.com -dyndns-ip.com -dyndns-pics.com -dyndns.org -dyndns.pro -dynssl.com -dynu.com -dynu.net -dynupdate.no-ip.com -dysfz.cc -dzze.com -e-classical.com.tw -e-gold.com -e-hentai.org -e-hentaidb.com -e-info.org.tw -e-zone.com.hk -e123.hk -e621.net -earlytibet.com -earthcam.com -earthvpn.com -eastasiaforum.org -easternlightning.org -eastturkestan.com -eastturkistan-gov.org -eastturkistancc.org -eastturkistangovernmentinexile.us -easyca.ca -easypic.com -ebony-beauty.com -ebook.hyread.com.tw -ebookbrowse.com -ebookee.com -ebtcbank.com -ecfa.org.tw -echofon.com -ecimg.tw -ecministry.net -economist.com -edgecastcdn.net -edicypages.com -edmontonchina.cn -edmontonservice.com -edoors.com -edubridge.com -edupro.org -edx-cdn.org -eeas.europa.eu -eesti.ee -eevpn.com -efcc.org.hk -effers.com -efksoft.com -efukt.com -eic-av.com -eireinikotaerukai.com -eisbb.com -eksisozluk.com -elconfidencial.com -electionsmeter.com -elgoog.im -elpais.com -eltondisney.com -emaga.com -emanna.com -emilylau.org.hk -empfil.com -emule-ed2k.com -emulefans.com -emuparadise.me -en.favotter.net -en.hao123.com -enanyang.my -encrypt.me -encyclopedia.com -enewstree.com -enfal.de -englishforeveryone.org -englishfromengland.co.uk -englishpen.org -enlighten.org.tw -entermap.com -epac.to -episcopalchurch.org -epochhk.com -epochtimes-bg.com -epochtimes-romania.com -epochtimes.co.il -epochtimes.co.kr -epochtimes.com -epochtimes.com.tw -epochtimes.cz -epochtimes.de -epochtimes.fr -epochtimes.it -epochtimes.jp -epochtimes.ru -epochtimes.se -epochtimestr.com -epochweek.com -epochweekly.com -eporner.com -equinenow.com -erabaru.net -eracom.com.tw -eraysoft.com.tr -erepublik.com -erights.net -eriversoft.com -ernestmandel.org -erodaizensyu.com -erodoujinlog.com -erodoujinworld.com -eromanga-kingdom.com -eromangadouzin.com -eromon.net -eroprofile.com -eroticsaloon.net -esg.t91y.com -eslite.com -esmtp.biz -esurance.com -etaa.org.au -etadult.com -etaiwannews.com -etherdelta.com -ethermine.org -etherscan.com -etherscan.io -etizer.org -etokki.com -etools.ncol.com -etowns.net -etowns.org -etsy.com -ettoday.net -etvonline.hk -eucasino.com -eulam.com -eurekavpt.com -euronews.com -evchk.wikia.com -everipedia.org -evschool.net -exam.gov.tw -exblog.jp -exchristian.hk -exhentai.org -exmo.com -exmormon.org -expatshield.com -expecthim.com -expekt.com -experts-univers.com -exploader.net -expressvpn.com -exrates.me -extmatrix.com -extremetube.com -ey.gov.tw -eyevio.jp -eyny.com -ezpeer.com -ezua.com -f-droid.org -f2pool.com -f8.com -fa.gov.tw -facebook.com -facebook.de -facebook.design -facebook.hu -facebook.in -facebook.nl -facebook.se -facebookmail.com -facebookquotes4u.com -faceless.me -facesofnyfw.com -facesoftibetanselfimmolators.info -factchecklab.org -factpedia.org -faith100.org -faithfuleye.com -faiththedog.info -fakku.net -fallenark.com -falsefire.com -falun-co.org -falun-ny.net -falunart.org -falunasia.info -falunau.org -falunaz.net -falundafa-dc.org -falundafa-florida.org -falundafa-nc.org -falundafa-pa.net -falundafa.org -falundafaindia.org -falundafamuseum.org -falungong.club -falungong.de -falungong.org.uk -falunhr.org -faluninfo.de -faluninfo.net -falunpilipinas.net -familyfed.org -famunion.com -fan-qiang.com -fanbox.cc -fangeming.com -fangeqiang.com -fanglizhi.info -fangong.forums-free.com -fangong.org -fangongheike.com -fanhaodang.com -fanhaolou.com -fanqiang.network -fanqiang.tk -fanqiangdang.com -fanqianghou.com -fanqiangzhe.com -fanswong.com -fantv.hk -fanyue.info -fapdu.com -faproxy.com -faqserv.com -fartit.com -farwestchina.com -fast.com -fast.wistia.com -fastestvpn.com -fastpic.ru -fastssh.com -faststone.org -fatbtc.com -favstar.fm -fawanghuihui.org -faydao.com -faz.net -fb.com -fb.me -fb.watch -fbaddins.com -fbcdn.net -fbsbx.com -fbworkmail.com -fc2.com -fc2blog.net -fc2china.com -fc2cn.com -fda.gov.tw -fdc64.de -fdc64.org -fdc89.jp -feedburner.com -feeder.co -feedly.com -feeds.fileforum.com -feedx.net -feelssh.com -feer.com -feitian-california.org -feitianacademy.org -feixiaohao.com -feministteacher.com -fengzhenghu.com -fengzhenghu.net -fevernet.com -ff.im -fffff.at -fflick.com -ffvpn.com -fgmtv.net -fgmtv.org -fhreports.net -fiddle.jshell.net -figprayer.com -fileflyer.com -files.oaiusercontent.com -fileserve.com -filesor.com -fillthesquare.org -filmingfortibet.org -filthdump.com -financetwitter.com -financialexpress.com -finchvpn.com -findmespot.com -findyoutube.com -findyoutube.net -fingerdaily.com -firearmsworld.net -firebaseio.com -fireofliberty.info -fireofliberty.org -firetweet.io -firstpost.com -firstrade.com -fish.audio -flagsonline.it -flecheinthepeche.fr -fleshbot.com -fleursdeslettres.com -flexclip.com -flexpool.io -flgjustice.org -flickr.com -flickrhivemind.net -flickriver.com -fling.com -flipboard.com -flipkart.com -flitto.com -flnet.org -flog.tw -flowgpt.com -flowhongkong.net -flypool.org -flyvpn.com -flyzy2005.com -fnac.be -fnac.com -fnc.ebc.net.tw -fochk.org -focustaiwan.tw -focusvpn.com -fofg.org -fooooo.com -forbes.com -forefront.ai -foreignaffairs.com -foreignpolicy.com -form.new -forms.new -forum.baby-kingdom.com -forum.cyberctm.com -forum.mymaji.com -forum.palmislife.com -forum.slime.com.tw -forum.tvb.com -forum.xinbao.de -forum4hk.com -fountmedia.io -fourthinternational.org -foxgay.com -foxsub.com -foxtang.com -fpmt-osel.org -fpmt.org -fpmt.tw -fpmtmexico.org -fq.wikia.com -fqrouter.com -frank2019.me -franklc.com -freakshare.com -free-gate.org -free-hada-now.org -free-proxy.cz -free-ss.site -free.bg -free.com.tw -free.fr -freebeacon.com -freebrowser.org -freechal.com -freechina.net -freechina.news -freechinaweibo.com -freeddns.com -freeddns.org -freedomcollection.org -freedomhouse.org -freedominfonetweb.wordpress.com -freedomsherald.org -freeforums.org -freegao.com -freegpt.es -freegpt.tech -freehongkong.org -freeilhamtohti.org -freekazakhs.org -freelotto.com -freeman2.com -freemoren.com -freemorenews.com -freemuse.org -freenet-china.org -freenetproject.org -freenewscn.com -freeopenvpn.com -freeoz.org -freess.org -freessh.us -freetcp.com -freetibet.net -freetibet.org -freetibetanheroes.org -freetls.fastly.net -freetribe.me -freeviewmovies.com -freevpn.me -freevpn.nl -freewallpaper4.me -freewebs.com -freewechat.com -freeweibo.com -freewww.info -freexinwen.com -freeyellow.com -freezhihu.org -friendfeed.com -friends-of-tibet.org -friendsoftibet.org -fril.jp -fring.com -fringenetwork.com -from-pr.com -from-sd.com -fromchinatousa.net -frommel.net -frontlinedefenders.org -frootvpn.com -froth.zone -fscked.org -fsurf.com -ft.com -ftchinese.com -ftp1.biz -ftpserver.biz -ftv.com.tw -ftvnews.com.tw -ftx.com -fucd.com -fuchsia.dev -fuckccp.com -fuckccp.xyz -fuckgfw.org -fulione.com -fullerconsideration.com -fullservicegame.com -funf.tw -funkyimg.com -funp.com -fuq.com -furbo.org -furhhdl.org -furinkan.com -furrybar.com -futurechinaforum.org -futuremessage.org -fux.com -fuyindiantai.org -fuyu.org.tw -fw.cm -fxcm-chinese.com -fxnetworks.com -g-area.org -g-queen.com -g.co -g0v.social -g6hentai.com -gab.com -gabocorp.com -gaeproxy.com -gaforum.org -gagaoolala.com -galaxymacau.com -galenwu.com -galstars.net -game735.com -gamebase.com.tw -gamejolt.com -gamer.com.tw -gamez.com.tw -gamousa.com -ganges.com -ganjing.com -ganjingworld.com -gaoming.net -gaopi.net -gardennetworks.com -gardennetworks.org -gartlive.com -garudalinux.org -gate.io -gatecoin.com -gather.com -gatherproxy.com -gaybubble.com -gaycn.net -gayhub.com -gaymap.cc -gaymenring.com -gaytube.com -gaywatch.com -gazotube.com -gcc.org.hk -gclubs.com -gcmasia.com -gcpnews.com -gcr.io -gdaily.org -gdzf.org -geek-art.net -geekerhome.com -gekikame.com -gelbooru.com -generated.photos -genius.com -geocities.co.jp -geocities.com -geocities.jp -geph.io -gerefoundation.org -get.app -get.dev -get.how -get.page -getastrill.com -getchu.com -getcloak.com -getfoxyproxy.org -getgom.com -geti2p.net -getiton.com -getjetso.com -getlantern.org -getmalus.com -getmdl.io -getoutline.org -getsession.org -getsocialscope.com -getsync.com -gettr.com -gettrials.com -getuploader.com -gfbv.de -gfsale.com -gfw.press -gfw.report -gfwatch.org -gfwbao.com -ggpht.com -ggssl.com -ghidra-sre.org -ghostpath.com -ghut.org -giantessnight.com -gifree.com -giga-web.jp -gigporno.ru -girlbanker.com -git.io -gitbook.io -github.blog -github.com -github.io -githubassets.com -githubcopilot.com -githubusercontent.com -gitlab.net -gizlen.net -gjczz.com -glarity.app -glass8.eu -global.ssl.fastly.net -globaljihad.net -globalmediaoutreach.com -globalmuseumoncommunism.org -globalrescue.net -globaltm.org -globalvoices.org -globalvoicesonline.org -globalvpn.net -glock.com -gloryhole.com -glorystar.me -gluckman.com -glype.com -gmail.com -gmgard.com -gmll.org -gmodules.com -gmp4.com -gnci.org.hk -gnews.org -go-to-zlibrary.se -go141.com -go5.dev -goagent.biz -godaddy.com -godfootsteps.org -godoc.org -godsdirectcontact.co.uk -godsdirectcontact.org -godsdirectcontact.org.tw -godsimmediatecontact.com -gofundme.com -gohappy.com.tw -gojet.krtco.com.tw -gokbayrak.com -golang.org -goldbet.com -goldbetsports.com -golden-ages.org -goldeneyevault.com -goldenfrog.com -goldstep.net -goldwave.com -gongm.in -goo.gl -goo.gle -goo.ne.jp -good.news -gooday.xyz -goodhope.school -goodnewsnetwork.org -goodreaders.com -goodreads.com -goodtv.com.tw -goodtv.tv -goofind.com -google.ad -google.ae -google.al -google.am -google.as -google.at -google.az -google.ba -google.be -google.bf -google.bg -google.bi -google.bj -google.bs -google.bt -google.by -google.ca -google.cat -google.cd -google.cf -google.cg -google.ch -google.ci -google.cl -google.cm -google.cn -google.co.ao -google.co.bw -google.co.ck -google.co.cr -google.co.id -google.co.il -google.co.in -google.co.jp -google.co.ke -google.co.kr -google.co.ls -google.co.ma -google.co.mz -google.co.nz -google.co.th -google.co.tz -google.co.ug -google.co.uk -google.co.uz -google.co.ve -google.co.vi -google.co.za -google.co.zm -google.co.zw -google.com -google.com.af -google.com.ag -google.com.ai -google.com.ar -google.com.au -google.com.bd -google.com.bh -google.com.bn -google.com.bo -google.com.br -google.com.bz -google.com.co -google.com.cu -google.com.cy -google.com.do -google.com.ec -google.com.eg -google.com.et -google.com.fj -google.com.gh -google.com.gi -google.com.gt -google.com.hk -google.com.jm -google.com.kh -google.com.kw -google.com.lb -google.com.ly -google.com.mm -google.com.mt -google.com.mx -google.com.my -google.com.na -google.com.nf -google.com.ng -google.com.ni -google.com.np -google.com.om -google.com.pa -google.com.pe -google.com.pg -google.com.ph -google.com.pk -google.com.pr -google.com.py -google.com.qa -google.com.sa -google.com.sb -google.com.sg -google.com.sl -google.com.sv -google.com.tj -google.com.tr -google.com.tw -google.com.ua -google.com.uy -google.com.vc -google.com.vn -google.cv -google.cz -google.de -google.dev -google.dj -google.dk -google.dm -google.dz -google.ee -google.es -google.fi -google.fm -google.fr -google.ga -google.ge -google.gg -google.gl -google.gm -google.gp -google.gr -google.gy -google.hn -google.hr -google.ht -google.hu -google.ie -google.im -google.iq -google.is -google.it -google.je -google.jo -google.kg -google.ki -google.kz -google.la -google.li -google.lk -google.lt -google.lu -google.lv -google.md -google.me -google.mg -google.mk -google.ml -google.mn -google.ms -google.mu -google.mv -google.mw -google.ne -google.nl -google.no -google.nr -google.nu -google.pl -google.pn -google.ps -google.pt -google.ro -google.rs -google.ru -google.rw -google.sc -google.se -google.sh -google.si -google.sk -google.sm -google.sn -google.so -google.sr -google.st -google.td -google.tg -google.tk -google.tl -google.tm -google.tn -google.to -google.tt -google.vg -google.vu -google.ws -googleapis.com -googleapps.com -googlearth.com -googleartproject.com -googleblog.com -googlebot.com -googlechinawebmaster.com -googlecode.com -googlecommerce.com -googledomains.com -googledrive.com -googleearth.com -googlefiber.net -googlegroups.com -googlehosted.com -googleideas.com -googleinsidesearch.com -googlemail.com -googlemashups.com -googlepagecreator.com -googleplay.com -googleplus.com -googlescholar.com -googlesource.com -googleusercontent.com -googlevideo.com -googleweblight.com -googlezip.net -gopetition.com -goreforum.com -goregrish.com -gospelherald.com -got-game.org -gotdns.ch -gotgeeks.com -gotquestions.org -gotrusted.com -gotw.ca -gov.ir -gov.taipei -gov.tw -gr8domain.biz -gr8name.biz -grammaly.com -grandtrial.org -graph.org -graphis.ne.jp -graphql.org -gravatar.com -greasyfork.org -greatfire.org -greatfire.us7.list-manage.com -greatfirevpn.com -greatfirewall.biz -greatfirewallofchina.org -greatroc.org -greatzhonghua.org -greenparty.org.tw -greenpeace.com.tw -greenpeace.org -greenreadings.com -greenvpn.net -greenvpn.org -grindr.com -grok.com -ground.news -gs-discuss.com -gsearch.media -gsp.target.com -gstatic.com -gtricks.com -gtv.org -gtv1.org -gu-chu-sum.org -guaguass.com -guancha.org -guangming.com.my -guardster.com -guishan.org -gumroad.com -gun-world.net -gunsamerica.com -gunsandammo.com -guruonline.hk -gutteruncensored.com -gvlib.com -gvm.com.tw -gvt1.com -gvt3.com -gwins.org -gwtproject.org -gyalwarinpoche.com -gyatsostudio.com -gzm.tv -gzone-anime.info -h-china.org -h-moe.com -h1n1china.org -h528.com -h5dm.com -h5galgame.me -hacken.cc -hacker.org -hackmd.io -hackthatphone.net -hahlo.com -haijiao.com -haiwaikan.com -hakkatv.org.tw -halktv.com.tr -handcraftedsoftware.org -hanime.tv -hanime1.me -hao.news -haproxy.org -hardsextube.com -hautelook.com -hautelookcdn.com -have8.com -hbg.com -hbo.com -hbomax.com -hclips.com -hd.stheadline.com -hdtvb.net -hdzog.com -heartyit.com -heavy-r.com -hec.su -hecaitou.net -hechaji.com -heeact.edu.tw -hegre-art.com -helloandroid.com -helloqueer.com -hellouk.org -helpeachpeople.com -helpster.de -helpzhuling.org -hentai.to -hentaitube.tv -hentaivideoworld.com -heqinglian.net -heritage.org -herokuapp.com -herominers.com -hexieshe.com -hexieshe.xyz -hexxeh.net -heyuedi.com -heyzo.com -hgseav.com -hhdcb3office.org -hhthesakyatrizin.org -hi-on.org.tw -hicairo.com -hiccears.com -hidden-advent.org -hide.me -hidecloud.com -hideipvpn.com -hideman.net -hideme.nl -hidemy.name -hidemyass.com -hidemycomp.com -higfw.com -highpeakspureearth.com -highrockmedia.com -hiitch.com -hikinggfw.org -hilive.tv -himalayan-foundation.org -himalayanglacier.com -himemix.com -hindustantimes.com -hinet.net -hitbtc.com -hitomi.la -hiveon.net -hiwifi.com -hizb-ut-tahrir.info -hizb-ut-tahrir.org -hizbuttahrir.org -hjclub.info -hk-pub.com -hk.frienddy.com -hk.geocities.com -hk.gradconnection.com -hk.hao123img.com -hk.jiepang.com -hk01.com -hka8964.wordpress.com -hkacg.com -hkacg.net -hkanews.wordpress.com -hkatvnews.com -hkbc.net -hkbf.org -hkbookcity.com -hkchronicles.com -hkchurch.org -hkci.org.hk -hkcmi.edu -hkcnews.com -hkcoc.com -hkcoc.weather.com.hk -hkdailynews.com.hk -hkday.net -hkdc.us -hkdf.org -hkej.com -hkepc.com -hket.com -hkfaa.com -hkfront.org -hkgalden.com -hkgolden.com -hkgpao.com -hkheadline.com -hkhkhk.com -hkhrc.org.hk -hkjc.com -hkjp.org -hklft.com -hklts.org.hk -hkmap.live -hkopentv.com -hkpeanut.com -hkptu.org -hkreporter.com -hkreporter.loved.hk -hmoegirl.com -hmv.co.jp -hmvdigital.ca -hmvdigital.com -hnjhj.com -hnntube.com -hojemacau.com.mo -hola.com -hola.org -hole.thu.monster -holyspiritspeaks.org -home.saxo -home.sina.com -homedepot.com -homeperversion.com -homeservershow.com -hongkong.fandom.com -hongkongfp.com -hongmeimei.com -hongzhi.li -honven.xyz -hootsuite.com -hoover.org -hoovers.com -hopto.org -hornygamer.com -hornytrip.com -horrorporn.com -hostloc.com -hotair.com -hotav.tv -hotcoin.com -hotels.cn -hotfrog.com.tw -hotgoo.com -hotpot.hk -hotshame.com -hotspotshield.com -hottg.com -hotvpn.com -howtoforge.com -hoxx.com -hoy.tv -hpa.gov.tw -hpjav.com -hqcdp.org -hqjapanesesex.com -hqmovies.com -hqsbnet.wordpress.com -hqsbonline.wordpress.com -hrcchina.org -hrea.org -hrichina.org -hrntt.org -hrtsea.com -hrw.org -hrweb.org -hsex.men -hsjp.net -hsselite.com -hst.net.tw -hstern.net -hstt.net -ht.ly -htkou.net -htl.li -html5rocks.com -https443.net -https443.org -huaglad.com -huanghuagang.org -huangyiyu.com -huaren.us -huaren4us.com -huashangnews.com -huaxiabao.org -huaxin.ph -huayuworld.org -hudatoriq.web.id -hudson.org -huffingtonpost.com -huffpost.com -huggingface.co -hugoroy.eu -huhaitai.com -huhamhire.com -huhangfei.com -hulkshare.com -hulu.com -huluim.com -humanparty.me -humanrightspressawards.org -hung-ya.com -huobi.co -huobi.com -huobi.me -huobi.pro -huobi.sc -huobipool.com -huobipro.com -huping.net -hurgokbayrak.com -hurriyet.com.tr -hustlercash.com -hut2.ru -hutianyi.net -hutong9.net -huyandex.com -hwadzan.tw -hwayue.org.tw -hxwk.org -hxwq.org -hybrid-analysis.com -hyperbeam.com -hyperrate.com -hypothes.is -i-cable.com -i-part.com.tw -i-scmp.com -i.111666.best -i.lithium.com -i2p2.de -i818hk.com -iam.soy -iamtopone.com -iask.ca -iav19.com -iavian.net -ibiblio.org -ibros.org -ibvpn.com -icams.com -ice.audionow.com -icedrive.net -icij.org -icl-fi.org -icoco.com -iconpaper.org -icu-project.org -id.hao123.com -id.heroku.com -idcflare.com -idemocracy.asia -identi.ca -idiomconnection.com -idope.se -idouga.com -idv.tw -ied2k.net -ienergy1.com -ifan.cz.cc -ifcss.org -ifjc.org -ifreechina.wordpress.com -ifreewares.com -ift.tt -igcd.net -igfw.net -igmg.de -igoogle.com -igotmail.com.tw -igvita.com -ihao.org -iicns.com -iipdigital.usembassy.gov -ikstar.com -ikwb.com -ilbe.com -ilhamtohtiinstitute.org -illawarramercury.com.au -illusionfactory.com -ilove80.be -ilovelongtoes.com -im88.tw -imageab.com -imagefap.com -imageflea.com -imageglass.org -images-gaytube.com -images.prismic.io -imageshack.us -imagevenue.com -imagezilla.net -imago-images.com -imb.org -imdb.com -img.dlsite.jp -img.ly -img.picgo.net -imgasd.com -imgchili.net -imgmega.com -imgur.com -imkev.com -imlive.co -imlive.com -immigration.gov.tw -immoral.jp -impact.org.au -improd.works -in-disguise.com -in99.org -incapdns.net -incloak.com -incredibox.fr -independent.co.uk -india.com -indiablooms.com -indianarrative.com -indiandefensenews.in -indiatoday.in -indiemerch.com -inews-api.tvb.com -info-graf.fr -infura.io -inherit.live -initiativesforchina.org -inkbunny.net -inkui.com -inmediahk.net -inoreader.com -inote.tw -insecam.org -inside.com.tw -insidevoa.com -instagram.com -instanthq.com -institut-tibetain.org -interactivebrokers.com -internet.org -internetdefenseleague.org -internetfreedom.org -internetpopculture.com -interseclab.org -inthenameofconfuciusmovie.com -investigating.wordpress.com -invidio.us -inxian.com -iownyour.org -ipdefenseforum.com -ipfire.org -ipfs.4everland.io -ipfs.io -iphone4hongkong.com -iphonetaiwan.org -iphonix.fr -ipicture.ru -ipify.org -ipjetable.net -ipobar.com -ipoock.com -iportal.me -ippotv.com -ipredator.se -iptv.com.tw -iptvbin.com -ipvanish.com -irangov.ir -iredmail.org -irna.ir -ironpython.net -ironsocket.com -is-a-hunter.com -is.gd -isaacmao.com -isasecret.com -isc.sans.edu -isgreat.org -ishr.ch -islahhaber.net -islam.org.hk -islamawareness.net -islamhouse.com -islamicity.com -islamicpluralism.org -islamtoday.net -ismaelan.com -ismalltits.com -ismprofessional.net -isohunt.com -israbox.com -issues.chromium.org -issuu.com -istars.co.nz -istockphoto.com -isunaffairs.com -isuntv.com -isupportuyghurs.org -itaiwan.gov.tw -italiatibet.org -itasoftware.com -itch.io -itemdb.com -itemfix.com -ithelp.ithome.com.tw -itiger.com -itsaol.com -itshidden.com -itsky.it -itweet.net -iu45.com -iuhrdf.org -iuksky.com -ivacy.com -ivonblog.com -ivpn.net -iwara.tv -ixquick.com -ixxx.com -iyouport.com -iyouport.org -izaobao.us -izles.net -izlesem.org -j.mp -jable.tv -jamaat.org -jamestown.org -jamyangnorbu.com -jan.ai -japan-whores.com -japanhdv.com -japantimes.co.jp -jav.com -jav101.com -jav321.com -jav68.tv -javakiba.org -javbus.com -javdb.com -javfinder.ai -javfor.me -javhd.com -javhip.com -javhub.net -javhuge.com -javlibrary.com -javmobile.net -javmoo.com -javmoo.xyz -javseen.com -javtag.com -javzoo.com -jbtalks.cc -jbtalks.com -jbtalks.my -jcpenney.com -jdwsy.com -jeanyim.com -jetos.com -jex.com -jgoodies.com -jhelab.org -jiangweiping.com -jiaoyou8.com -jiehua.cz -jieshibaobao.com -jifangge.com -jigglegifs.com -jihadintel.meforum.org -jihadology.net -jiji.com -jims.net -jingpin.org -jingsim.org -jinpianwang.com -jinrizhiyi.news -jintian.net -jinx.com -jitouch.com -jjgirls.com -jkb.cc -jkforum.net -jkub.com -jma.go.jp -jmsc.hku.hk -jmscult.com -joachims.org -jobnewera.wordpress.com -joinclubhouse.com -joinmastodon.org -jornaldacidadeonline.com.br -journalchretien.net -journalofdemocracy.org -joymiihub.com -joyourself.com -jp.hao123.com -jpl.nasa.gov -jpopforum.net -jsdelivr.net -jtvnw.net -judicial.gov.tw -juhuaren.com -jukujo-club.com -juliepost.com -juliereyc.com -junauza.com -june4commemoration.org -jungleheart.com -juoaa.com -justdied.com -justfreevpn.com -justhost.ru -justmysocks.net -justmysocks1.net -justmysockscn.com -justpaste.it -justtristan.com -juziyue.com -jwmusic.org -jyxf.net -ka-wai.com -kadokawa.co.jp -kagyu.org -kagyu.org.za -kagyumonlam.org -kagyunews.com.hk -kagyuoffice.org -kagyuoffice.org.tw -kaiyuan.de -kakao.com -kanald.com.tr -kankan.today -kannewyork.com -kanshifang.com -kantie.org -kanzhongguo.com -kanzhongguo.eu -kaotic.com -karayou.com -karmapa-teachings.org -karmapa.org -kawaiikawaii.jp -kawase.com -kb.monitorware.com -kba-tx.org -kcoolonline.com -kebrum.com -kechara.com -keepandshare.com -keezmovies.com -kendatire.com -kenengba.com -kepard.com -kex.com -keycdn.com -khabdha.org -khatrimaza.org -kichiku-doujinko.com -kik.com -killwall.com -kindle4rss.com -kindleren.com -kineox.free.fr -kingdomsalvation.org -kinghost.com -kingkong.com.tw -kingstone.com.tw -kink.com -kinmen.org.tw -kinmen.travel -kinokuniya.com -kir.jp -kissbbao.cn -kiwi.kz -kk-whys.co.jp -kkbox.com -kknews.cc -kmuh.org.tw -knowledgerush.com -knowyourmeme.com -kobo.com -kobobooks.com -kodingen.com -kompozer.net -konachan.com -kone.com -koolsolutions.com -koornk.com -koranmandarin.com -korenan2.com -kpkuang.org -kqes.net -kraken.com -ksdl.org -ksnews.com.tw -kspcoin.com -ktzhk.com -kuaichedao.co -kucoin.com -kui.name -kukuku.uk -kun.im -kurashsultan.com -kurtmunger.com -kusocity.com -kwcg.ca -kwongwah.com.my -kxsw.life -kyofun.com -kyohk.net -kzaobao.com -kzeng.info -la-forum.org -lab.skk.moe -labiennale.org -ladbrokes.com -lagranepoca.com -lala.im -lalulalu.com -lama.com.tw -lamayeshe.com -lamnia.co.uk -lamrim.com -landofhope.tv -lanterncn.cn -lantosfoundation.org -laod.cn -laogai.org -laogairesearch.org -laomiu.com -laoyang.info -laqingdan.net -larsgeorge.com -lastcombat.com -lastfm.es -latelinenews.com -lausan.hk -lbank.info -ld.hao123img.com -ldplayer.net -ldplayer.tw -le-vpn.com -leafyvpn.net -lecloud.net -ledger.com -leeao.com.cn -lefora.com -left21.hk -legalporno.com -legra.ph -legsjapan.com -leisurecafe.ca -leisurepro.com -lematin.ch -lemonde.fr -lenwhite.com -lesoir.be -letou.com -letscorp.net -lexica.art -lflink.com -lflinkup.com -lflinkup.net -lflinkup.org -lhakar.org -lhasocialwork.org -li.taipei -liangyou.net -liangzhichuanmei.com -lianyue.net -liaowangxizang.net -liberal.org.hk -libertysculpturepark.com -libertytimes.com.tw -library-access.sk -library.usc.cuhk.edu.hk -libredd.it -lifemiles.com -lighten.org.tw -lighti.me -lightnovel.cn -lightyearvpn.com -lih.kg -lihkg.com -like.com -lilaoshibushinilaoshi.com -limiao.net -line-apps.com -line-scdn.net -line.me -line.naver.jp -linear-abematv.akamaized.net -linglingfa.com -lingualeo.com -lingvodics.com -link-o-rama.com -linkedin.com -linkideo.com -linktr.ee -linkuswell.com -linux.do -linux.org.hk -linuxtoy.org -lionsroar.com -lipuman.com -liquiditytp.com -liquidvpn.com -listennotes.com -listentoyoutube.com -listorious.com -lists.w3.org -litenews.hk -liu-xiaobo.org -liuhanyu.com -liuxiaobo.net -liuxiaotong.com -livecoin.net -livedoor.jp -liveleak.com -livemint.com -livestream.com -livevideo.com -livingstream.com -lizhizhuangbi.com -lkcn.net -lmarena.ai -load.to -lobsangwangyal.com -localbitcoins.com -localdomain.ws -localpresshk.com -lockestek.com -login.target.com -logos.com.hk -londonchinese.ca -longhair.hk -longmusic.com -longtermly.net -longtoes.com -lookpic.com -looktoronto.com -lotsawahouse.org -lotuslight.org.tw -lovart.ai -lovetvshow.com -lpsg.com -lrfz.com -lrip.org -lsd.org.hk -lsforum.net -lsm.org -lsmchinese.org -lsmkorean.org -lsmradio.com -lsmwebcast.com -lsxszzg.com -lt.sntp.uk -ltn.com.tw -luckydesigner.space -luckymobile.ca -ludepress.com -luke54.com -luke54.org -lupm.org -lushstories.com -luxebc.com -lvhai.org -lvv2.com -ly.gov.tw -lyfhk.net -lzjscript.com -lzmtnews.org -m.hkgalden.com -m.me -m.moegirl.org -ma.hao123.com -macgamestore.com -macrovpn.com -mad-ar.ch -madewithcode.com -madonna-av.com -madou.club -madrau.com -madthumbs.com -mahabodhi.org -mahjongsoul.com -maiio.net -mail-archive.com -main-ecnpaper-economist.content.pugpig.com -maiplus.com -maizhong.org -makemymood.com -makkahnewspaper.com -malaysiakini.com -mamingzhe.com -manchukuo.net -mandiant.com -mangabz.com -mangafox.com -mangafox.me -mangmang.run -maniash.com -manicur4ik.ru -mansion.com -mansionpoker.com -manta.com -manyvoices.news -maplew.com -marc.info -marguerite.su -martau.com -martsangkagyuofficial.org -maruta.be -marxist.com -marxist.net -marxists.org -mash.to -maskedip.com -mastodon.cloud -mastodon.host -mastodon.online -mastodon.social -mastodon.xyz -matainja.com -material.io -matome-plus.com -matome-plus.net -matrix.org -matters.news -matters.town -matthewdgreen.wordpress.com -mattwilcox.net -maven.neoforged.net -maxing.jp -mayimayi.com -mcadforums.com -mcaf.ee -mcfog.com -mcreasite.com -mcusercontent.com -md-t.org -me.me -me.ns.ci -me.youthwant.com.tw -meansys.com -media.nu.nl -media.org.hk -mediachinese.com -mediafire.com -mediafreakcity.com -mediawiki.org -medium.com -meetav.com -meetup.com -mefeedia.com -mefound.com -mega.co.nz -mega.io -mega.nz -megalodon.jp -megaproxy.com -megurineluka.com -meizhong.blog -meizhong.report -meltoday.com -memehk.com -memes.tw -memri.org -memrijttm.org -mercari.com -mercari.jp -mercatox.com -mercdn.net -mercyprophet.org -mergersandinquisitions.com -meridian-trust.org -meripet.com -merit-times.com.tw -mesotw.com -messenger.com -meta.com -metafilter.com -metamask.io -metart.com -metarthunter.com -meteorshowersonline.com -metro.taipei -metrohk.com.hk -metrolife.ca -metroradio.com.hk -mewe.com -mfxmedia.com -mgoon.com -mgstage.com -mh4u.org -mhradio.org -microvpn.com -middle-way.net -mihr.com -mihua.org -mij.rip -mikanani.me -mike.cz.cc -mikesoltys.com -milph.net -milsurps.com -mimiai.net -mimivip.com -mindrolling.org -mingdemedia.org -minghui-school.org -minghui.or.kr -minghui.org -minghuiyw.wordpress.com -mingjinglishi.com -mingjingnews.com -mingjingtimes.com -mingpao.com -mingpaocanada.com -mingpaomonthly.com -mingpaonews.com -mingpaony.com -mingpaosf.com -mingpaotor.com -mingpaovan.com -mingshengbao.com -minhhue.net -miningpoolhub.com -ministrybooks.org -minzhuzhongguo.org -miraheze.org -miroguide.com -mirror.xyz -mirrorbooks.com -mirrormedia.mg -missav.com -missav.ws -mist.vip -mitbbs.com -miuipolska.pl -mixero.com -mixi.jp -mixpod.com -mixx.com -mizzmona.com -mji.rip -mjib.gov.tw -mjj.rip -mjlsh.usc.cuhk.edu.hk -mlc.ai -mlcool.com -mlzs.work -mm-cg.com -mmaaxx.com -mmmca.com -mnewstv.com -mo.nightlife141.com -mobatek.net -mobile01.com -mobileways.de -moby.to -mobypicture.com -mod.io -modernchinastudies.org -moeaic.gov.tw -moeerolibrary.com -moeshare.cc -mofa.gov.tw -mofos.com -mog.com -mohu.club -mohu.rocks -moj.gov.tw -mojim.com -mol.gov.tw -molihua.org -momoshop.com.tw -mondex.org -money-link.com.tw -moneydj.com -moneyhome.biz -monica.im -monitorchina.org -monocloud.me -monster.com -moodyz.com -moon.fm -moonbbs.com -moonbingo.com -moptt.tw -moresci.sale -morningsun.org -mos.ru -motherless.com -motor4ik.ru -mousebreaker.com -movements.org -moviefap.com -mp3buscador.com -mpettis.com -mpfinance.com -mpinews.com -mponline.hk -mrbasic.com -mrbonus.com -mrface.com -mrslove.com -mrtweet.com -msa-it.org -msguancha.com -msha.gov -mstdn.social -mswe1.org -mthruf.com -mubi.com -muchosucko.com -mullvad.net -multiply.com -multiproxy.org -multiupload.com -mummysgold.com -musicade.net -musixmatch.com -muslimvideo.com -muzi.com -muzi.net -muzu.tv -mvdis.gov.tw -mvg.jp -mx.hao123.com -mx981.com -my-formosa.com -my-private-network.co.uk -my-proxy.com -my.mail.ru -my.opera.com -my.pcloud.com -my03.com -myactimes.com -myaudiocast.com -myav.com.tw -mybbs.us -mybet.com -myca168.com -mycanadanow.com -mychinanet.com -mychinanews.com -mychinese.news -mycnnews.com -mycould.com -mydad.info -myddns.com -myeasytv.com -myeclipseide.com -myfreecams.com -myfreepaysite.com -myfreshnet.com -myftp.info -myiphide.com -myjs.tw -mykomica.org -mylftv.com -mymoe.moe -mymom.info -mynetav.net -mynetav.org -mynumber.org -myparagliding.com -mypicture.info -mypikpak.com -mypop3.net -mypop3.org -mypopescu.com -myreadingmanga.info -mysecondarydns.com -myshare.url.com.tw -mysinablog.com -mysite.verizon.net -myspace.com -myspacecdn.com -mytalkbox.com -mytizi.com -mywife.cc -mywww.biz -myz.info -naacoalition.org -naitik.net -nakedsecurity.sophos.com -nakido.com -nakuz.com -nalandabodhi.org -nalandawest.org -namgyal.org -namgyalmonastery.org -namu.wiki -nanopool.org -nanyang.com -nanyangpost.com -nanzao.com -naol.ca -naol.cc -nat.gov.tw -nat.moe -national-lottery.co.uk -nationalawakening.org -nationalinterest.org -nationalreview.com -nationsonline.org -nationwide.com -naughtyamerica.com -naver.com -navyfamily.navy.mil -navyreserve.navy.mil -naweeklytimes.com -nbcnews.com -nbtvpn.com -nbyy.tv -nccwatch.org.tw -nch.com.tw -nchrd.org -ncn.org -nde.de -ndi.org -ndr.de -ned.org -nekoslovakia.net -nemesis2.qx.net -neo-miracle.com -neowin.net -nephobox.com -netalert.me -netbirds.com -netcolony.com -netflav.com -netflix.com -netflix.net -netlify.app -netme.cc -netsarang.com -netsneak.com -network54.com -networkedblogs.com -networktunnel.net -new-3lunch.net -new-akiba.com -new96.ca -newcenturymc.com -newcenturynews.com -newchen.com -newgrounds.com -newhighlandvision.com -newindianexpress.com -newipnow.com -newlandmagazine.com.au -newmitbbs.com -newnews.ca -news.cnyes.com -news.ebc.net.tw -news.msn.com.tw -news.mt.co.kr -news.nationalgeographic.com -news.seehua.com -news.sina.com.hk -news.sinchew.com.my -news.singtao.ca -news.tvbs.com.tw -news.ycombinator.com -news1.kr -news100.com.tw -news18.com -newsancai.com -newsblur.com -newschinacomment.org -newsdetox.ca -newsdh.com -newsmax.com -newstamago.com -newstapa.org -newstarnet.com -newstatesman.com -newsweek.com -newtaiwan.com.tw -newtalk.tw -newthuhole.com -newyorker.com -newyorktimes.com -nexon.com -next11.co.jp -nextdigital.com.hk -nextmag.com.tw -nextmedia.com -nexton-net.jp -nexttv.com.tw -nf.id.au -nfjtyd.com -nflxext.com -nflximg.com -nflximg.net -nflxso.net -nflxvideo.net -nftstorage.link -nga.mil -ngensis.com -nhentai.net -nhi.gov.tw -nhk-ondemand.jp -nic.cz.cc -nic.gov -nicovideo.jp -nightswatch.top -nikke-en.com -nikke-jp.com -nikke-kr.com -nikke.hotcool.tw -nikkei.com -ninecommentaries.com -ninjacloak.com -ninjaproxy.ninja -nintendium.com -nirsoft.net -nitter.cc -nitter.net -niu.moe -niusnews.com -njactb.org -nko.navy.mil -nlfreevpn.com -nmsl.website -nnews.eu -no-ip.org -nobel.se -nobelprize.org -nodeseek.com -nokogiri.org -nokola.com -noodlevpn.com -norbulingka.org -nordstrom.com -nordstromimage.com -nordstromrack.com -nordvpn.com -nos.nl -notepad-plus-plus.org -nottinghampost.com -now.com -now.im -nownews.com -nowtorrents.com -noxinfluencer.com -npa.go.jp -npa.gov.tw -npm.gov.tw -npnt.me -npsboost.com -nradio.me -nrk.no -ns01.biz -ns01.info -ns01.us -ns02.biz -ns02.info -ns02.us -ns1.name -ns2.name -ns3.name -nsc.gov.tw -ntbk.gov.tw -ntbna.gov.tw -ntbt.gov.tw -ntd.tv -ntdtv.ca -ntdtv.co.kr -ntdtv.com -ntdtv.com.tw -ntdtv.cz -ntdtv.org -ntdtv.ru -ntdtvla.com -ntrfun.com -nubiles.net -nuexpo.com -nukistream.com -nurgo-software.com -nusatrip.com -nutaku.net -nutsvpn.work -nuuvem.com -nuvid.com -nvdst.com -nvquan.org -nvtongzhisheng.org -nwtca.org -nyaa.eu -nyaa.si -nybooks.com -nylon-angel.com -nylonstockingsonline.com -nypost.com -nyt.com -nytchina.com -nytcn.me -nytco.com -nyti.ms -nytimes.com -nytimes.map.fastly.net -nytimg.com -nytstyle.com -nzchinese.com -o3o.ca -oanda.com -oann.com -observechina.net -obutu.com -obyte.org -ocaspro.com -occupytiananmen.com -ocreampies.com -ocry.com -october-review.org -octocaptcha.com -oculus.com -oculuscdn.com -odysee.com -oex.com -officeoftibet.com -ofile.org -ogaoga.org -ogate.org -ohmyrss.com -oikos.com.tw -oiktv.com -ok.ru -okayfreedom.com -okex.com -okk.tw -okpool.me -okx.com -old.honeynet.org -olehdtv.com -olelive.com -olevod.com -olumpo.com -olympicwatch.org -omct.org -omgili.com -omni7.jp -omnitalk.com -omnitalk.org -omny.fm -on.cc -on2.com -onapp.com -one.one.one.one -onedrive.com -onedrive.live.com -onedumb.com -onejav.com -onevps.com -onion.city -onion.ly -online.recoveryversion.org -onlinecha.com -onlineyoutube.com -onlygayvideo.com -onlytweets.com -onmoon.com -onmoon.net -onmypc.biz -onmypc.info -onmypc.net -onmypc.org -onthehunt.com -ontrac.com -oojj.de -open.com.hk -open.firstory.me -openai.com -opendemocracy.net -opendn.xyz -openid.net -openleaks.org -opensea.io -openstreetmap.org -opentech.fund -openvpn.net -openvpn.org -openwebster.com -openwrt.org.cn -opml.radiotime.com -opus-gaming.com -ordns.he.net -organcare.org.tw -organharvestinvestigation.net -organiccrap.com -orgasm.com -orgfree.com -oricon.co.jp -orient-doll.com -orientaldaily.com.my -orn.jp -osfoora.com -otcbtc.com -otto.de -otzo.com -ourdearamy.com -ourhobby.com -oursogo.com -oursteps.com.au -oursweb.net -ourtv.hk -overcast.fm -overdaily.org -overplay.net -oversea.istarshine.com -ovpn.com -ow.ly -owl.li -owltail.com -oxfordscholarship.com -oyax.com -oyghan.com -ozchinese.com -ozvoice.org -ozxw.com -ozyoyo.com -pachosting.com -pacificpoker.com -packetix.net -pacom.mil -pacopacomama.com -padmanet.com -page.link -page2rss.com -paimon.moe -palacemoon.com -paljorpublications.com -paltalk.com -panamapapers.sueddeutsche.de -pancakeswap.finance -pandafan.pub -pandapow.co -pandapow.net -pandavpn-jp.com -pandavpnpro.com -pandora.com -pandora.tv -panoramio.com -pao-pao.net -paper.li -paperb.us -paradisehill.cc -paradisepoker.com -parkansky.com -parler.com -parse.com -parsevideo.com -partnerstack.xyz -partycasino.com -partypoker.com -passion.com -passiontimes.hk -paste.ee -pastebin.com -pastie.org -patreon.com -patreonusercontent.com -pawoo.net -paxful.com -payments-jp.amazon.com -pbs.org -pbwiki.com -pbworks.com -pbxes.com -pbxes.org -pcanywhere.net -pcc.gov.tw -pcdvd.com.tw -pcgamestorrents.com -pchome.com.tw -pcij.org -pcstore.com.tw -pct.org.tw -pdetails.com -pdproxy.com -pds.nasa.gov -peace.ca -peacefire.org -peeasian.com -peing.net -pekingduck.org -pemulihan.or.id -pen.io -penchinese.com -pendrivelinux.com -penthouse.com -pentoy.hk -peoplebookcafe.com -peoplenews.tw -peopo.org -percy.in -perfect-privacy.com -perfectgirls.net -periscope.tv -perplexity.ai -persecutionblog.com -persiankitty.com -pewresearch.org -phapluan.org -phayul.com -philborges.com -phmsociety.org -phncdn.com -phosphation13.rssing.com -photodharma.net -photofocus.com -photonmedia.net -piaotia.com -picacomic.com -picacomiccn.com -picasaweb.com -picidae.net -picsart.com -picturedip.com -picturesocial.com -picuki.com -pigav.com -pimg.tw -pin-cong.com -pin6.com -pincong.rocks -ping.fm -pinimg.com -pinkrod.com -pinoy-n.com -pioneer-worker.forums-free.com -pipii.tv -piraattilahti.org -piring.com -pixeldrain.com -pixelqi.com -pixiv.net -pixiv.org -pixivsketch.net -pixnet.net -pk.com -pki.goog -pkqjiasu.com -pkuanvil.com -placemix.com -play-asia.com -playboy.com -playboyplus.com -player.fm -playno1.com -playpcesor.com -plexvpn.pro -plm.org.hk -plunder.com -plurk.com -plus.codes -plus28.com -plusbb.com -pmatehunter.com -pmates.com -po2b.com -pobieramy.top -podbean.com -podcast.co -podictionary.com -podwise.ai -poe.com -points-media.com -pokerstars.com -pokerstars.net -politicalchina.org -politiscales.net -poloniex.com -polymarket.com -polymer-project.org -polymerhk.com -poolbinance.com -poolin.com -popai.pro -popo.tw -popvote.hk -popxi.click -popyard.com -popyard.org -porn.com -porn2.com -porn5.com -pornbase.org -pornerbros.com -pornhd.com -pornhost.com -pornhub.com -pornhubdeutsch.net -pornmate.com -pornoxo.com -pornrapidshare.com -pornsharing.com -pornsocket.com -pornstarbyface.com -pornstarclub.com -porntube.com -porntubenews.com -porntvblog.com -pornvisit.com -port25.biz -portablevpn.nl -poskotanews.com -post01.com -post76.com -post852.com -postadult.com -posts.careerengine.us -potato.im -potatso.com -potvpn.com -pourquoi.tw -power.com -powerapple.com -powercx.com -powerphoto.org -ppy.sh -prayforchina.net -prcleader.org -premproxy.com -presentation.new -presentationzen.com -president.ir -presidentlee.tw -prestige-av.com -primevideo.com -prism-break.org -prisoneralert.com -pritunl.com -privacybox.de -privacyguides.org -private.com -privateinternetaccess.com -privatepaste.com -privatetunnel.com -privatevpn.com -privoxy.org -procopytips.com -project-syndicate.org -prosiben.de -proton.me -protonvpn.com -provideocoalition.com -provpnaccounts.com -proxfree.com -proxifier.com -proxomitron.info -proxpn.com -proxyanonimo.es -proxydns.com -proxynetwork.org.uk -proxyroad.com -proxytunnel.net -proxz.com -proyectoclubes.com -pscp.tv -pshvpn.com -psiphon.ca -psiphon3.com -psiphontoday.com -pstatic.net -pt.im -ptt.cc -pttgame.com -pttvan.org -ptwxz.com -pubu.com.tw -puffinbrowser.com -puffstore.com -pullfolio.com -punyu.com -pure18.com -pureconcepts.net -puredns.org -pureinsight.org -purepdf.com -purevpn.com -purplelotus.org -purpose.nike.com -pursuestar.com -pussyspace.com -putihome.org -putlocker.com -putty.org -pwned.com -pximg.net -python.com -python.com.tw -pythonhackers.com -pytorch.org -qbittorrent.org -qgirl.com.tw -qhigh.com -qi-gong.me -qianbai.tw -qiandao.today -qianglie.com -qiangwaikan.com -qiangyou.org -qianmo.tw -qidian.ca -qiwen.lu -qixianglu.cn -qkshare.com -qmp4.com -qoos.com -qpoe.com -qq.co.za -qstatus.com -qtrac.eu -questvisual.com -quitccp.org -quiz.directory -quora.com -quoracdn.net -quran.com -quranexplorer.com -qusi8.net -qxbbs.org -qz.com -r-pool.net -r0.ru -r10s.jp -r18.com -radicalparty.org -radiko.jp -radio-canada.ca -radio-en-ligne.fr -radio.co -radio.garden -radioaustralia.net.au -radiohilight.net -radiojar.com -radioline.co -radiovaticana.org -radiovncr.com -radmin-vpn.com -rael.org -raggedbanner.com -raidcall.com.tw -rainbowplan.org -raindrop.io -raizoji.or.jp -rakuten.co.jp -ramcity.com.au -rangzen.net -rangzen.org -rapbull.net -rapidmoviez.com -rapidvpn.com -rarbgprx.org -rateyourmusic.com -rationalwiki.org -raw.githack.com -rawgit.com -rawgithub.com -rcam.target.com -rcinet.ca -rconversation.blogs.com -rd.com -reabble.com -read01.com -read100.com -readingtimes.com.tw -readmoo.com -readydown.com -realcourage.org -realforum.zkiz.com -realitykings.com -realraptalk.com -realsexpass.com -reason.com -rebatesrule.net -recordhistory.org -recovery.org.tw -recoveryversion.com.tw -red-lang.org -redbubble.com -redchinacn.net -redchinacn.org -redd.it -reddit.com -reddithelp.com -redditlist.com -redditmedia.com -redditspace.com -redditstatic.com -redhotlabs.com -redtube.com -referer.us -reflectivecode.com -relaxbbs.com -relay.com.tw -relay.firefox.com -releaseinternational.org -religionnews.com -renminbao.com -rentry.co -renyurenquan.org -resilio.com -resistchina.org -retweetist.com -retweetrank.com -reuters.com -reutersmedia.net -revleft.com -revver.com -rfa.org -rfachina.com -rfalive1.akacast.akamaistream.net -rfamobile.org -rfaweb.org -rferl.org -rfi.fr -rfi.my -rigpa.org -riku.me -rileyguide.com -riseup.net -ritouki.jp -ritter.vg -rixcloud.com -rixcloud.us -rlwlw.com -rmbl.ws -rmjdw.com -roadshow.hk -roboforex.com -robustnessiskey.com -rocket-inc.net -rocket.chat -rocksdb.org -rojo.com -rolfoundation.org -rolia.net -rolsociety.org -ronjoneswriter.com -roodo.com -rosechina.net -rou.video -rsdlmonitor.com -rsf-chinese.org -rsf.org -rsshub.app -rssmeme.com -rtalabel.org -rthk.hk -rthk.org.hk -rthklive2-lh.akamaihd.net -rti.org.tw -rti.tw -rtm.tnt-ea.com -ruanyifeng.com -rukor.org -rule34.xxx -rule34video.com -rumble.com -runbtx.com -rushbee.com -rustdesk.com -rusvpn.com -ruten.com.tw -rutracker.net -rutracker.org -rutube.ru -rxhj.net -s-cute.com -s-dragon.org -s.yimg.com -s1s1s1.com -s3-ap-northeast-1.amazonaws.com -s3-ap-northeast-2.amazonaws.com -s3-ap-southeast-1.amazonaws.com -s3-ap-southeast-2.amazonaws.com -s3-eu-central-1.amazonaws.com -s3.amazonaws.com -s3.ap-northeast-2.amazonaws.com -s3.eu-central-1.amazonaws.com -s3.us-east-1.amazonaws.com -sa.hao123.com -sacks.com -sacom.hk -sadistic-v.com -sadpanda.us -safechat.com -safeguarddefenders.com -safervpn.com -sagernet.org -saintyculture.com -sakuralive.com -sakya.org -salvation.org.hk -samair.ru -sambhota.org -sankakucomplex.com -sankei.com -sanmin.com.tw -sapikachu.net -savemedia.com -savethedate.foo -savethesounds.info -savetibet.de -savetibet.fr -savetibet.nl -savetibet.org -savetibet.ru -savetibetstore.org -saveuighur.org -savevid.com -sbme.me -sbs.com.au -scache.vzw.com -scache1.vzw.com -scache2.vzw.com -scasino.com -schema.org -sciencenets.com -scieron.com -scmp.com -scmpchinese.com -scramble.io -scratch.mit.edu -scribd.com -scriptspot.com -search.aol.com -search.com -search.xxx -search.yahoo.co.jp -searchtruth.com -searx.me -seattlefdc.com -secretchina.com -secretgarden.no -secretsline.biz -secure.hustler.com -secure.logmein.com -secure.shadowsocks.nu -secureservercdn.net -securetunnel.com -securityinabox.org -securitykiss.com -seed4.me -seesmic.com -seevpn.com -seezone.net -sehuatang.net -sehuatang.org -sejie.com -sellclassics.com -sendsmtp.com -sendspace.com -sensortower.com -servehttp.com -serveuser.com -serveusers.com -sesawe.net -sethwklein.net -setn.com -settv.com.tw -sevenload.com -sex.com -sex3.com -sex8.cc -sexandsubmission.com -sexbot.com -sexhu.com -sexidude.com -sexinsex.net -sextvx.com -sf.net -sfileydy.com -sfshibao.com -sftindia.org -sftuk.org -shadeyouvpn.com -shadow.ma -shadowsky.xyz -shadowsocks.asia -shadowsocks.be -shadowsocks.com -shadowsocks.com.hk -shadowsocks.org -shahit.biz -shambalapost.com -shapeservices.com -share-videos.se -share.america.gov -share.ovi.com -share.youthwant.com.tw -sharebee.com -sharecool.org -sharpdaily.hk -sharpdaily.tw -shat-tibet.com -shattered.io -sheet.new -sheets.new -sheikyermami.com -shellfire.de -shenyun.com -shenyunperformingarts.org -shenyunshop.com -shenzhoufilm.com -shenzhouzhengdao.org -shiatv.net -shicheng.org -shiksha.com -shipcamouflage.com -shireyishunjian.com -shitaotv.org -shixiao.org -shizhao.org -shkspr.mobi -shodanhq.com -shooshtime.com -shop2000.com.tw -shopee.tw -shopping.com -shopping.yahoo.co.jp -showhaotu.com -showtime.jp -showwe.tw -shutterstock.com -shwchurch.org -shwchurch3.com -siddharthasintent.org -sidelinesnews.com -sidelinessportseatery.com -sierrafriendsoftibet.org -signal.org -sijihuisuo.club -sijihuisuo.com -silkbook.com -silvergatebank.com -simbolostwitter.com -simplecd.me -simplecd.org -simpleproductivityblog.com -simpleswap.io -simplex.chat -sina.com.hk -sinchew.com.my -singaporepools.com.sg -singfortibet.com -singlelogin.se -singpao.com.hk -singtao.com -singtaousa.com -sino-monthly.com -sinoants.com -sinoca.com -sinocast.com -sinocism.com -sinoinsider.com -sinomontreal.ca -sinoquebec.com -sipml5.org -sis.xxx -sis001.com -sis001.us -site.new -site2unblock.com -sitebro.tw -sitekreator.com -sitemaps.org -sites.new -six-degrees.io -sketchappsources.com -skimtube.com -skybet.com -skyking.com.tw -skyvegas.com -skyxvpn.com -slacker.com -slashine.onl -slaytizle.com -sleazydream.com -sleazyfork.org -slheng.com -slickvpn.com -slides.com -slides.new -slideshare.net -slinkset.com -slutload.com -slutmoonbeam.com -slyip.com -slyip.net -sm-miracle.com -smartdnsproxy.com -smarthide.com -smchbooks.com -smh.com.au -smhric.org -smith.edu -smn.news -smyxy.org -snapseed.com -sndcdn.com -sneakme.net -snowlionpub.com -sobees.com -soc.mil -social.datalabour.com -social.edu.ci -socialblade.com -socks-proxy.net -sockscap64.com -sockslist.net -socrec.org -sod.co.jp -softether-download.com -softether.co.jp -softether.org -softfamous.com -softwarebychuck.com -softwaredownload.gitbooks.io -sogclub.com -sogrady.me -soh.tw -sohcradio.com -sohfrance.org -sokamonline.com -sokmil.com -solana.com -solarsystem.nasa.gov -solidaritetibet.org -solidfiles.com -solscan.io -solv.finance -somee.com -songjianjun.com -sonidodelaesperanza.org -sopcast.com -sopcast.org -sora.com -sorting-algorithms.com -sos.org -sosad.fun -sosreader.com -soubory.com -soul-plus.net -soulcaliburhentai.net -soundcloud.com -soundofhope.kr -soundofhope.org -soundon.fm -soup.io -sourceforge.net -sourcewadio.com -south-plus.net -south-plus.org -southmongolia.org -southnews.com.tw -southpark.cc.com -sowers.org.hk -soylentnews.org -spaces.hightail.com -spankbang.com -spankingtube.com -spankwire.com -sparkpool.com -spatial.io -spb.com -speakerdeck.com -specxinzl.jigsy.com -speedcat.me -speedify.com -spencertipping.com -spendee.com -spicevpn.com -spideroak.com -spiderpool.com -spike.com -sports.williamhill.com -spotflux.com -spotify.com -spreadsheet.new -spreadshirt.es -spreaker.com -spring4u.info -springboardplatform.com -springwood.me -sprite.org -sproutcore.com -squirly.info -squirrelvpn.com -srcf.ucam.org -ss-link.com -ss.pythonic.life -ss7.vzw.com -ssglobal.co -ssglobal.me -ssl.webpack.de -ssl443.org -sspanel.net -ssr.tools -ssrshare.com -ssrshare.us -ssrtool.com -sstm.moe -sstmlt.moe -sstmlt.net -stackoverflow.com -standard.co.uk -standupfortibet.org -standwithhk.org -stanford.edu -starfishfx.com -starp2p.com -startpage.com -startuplivingchina.com -stat.gov.tw -static-economist.com -static.pocketcasts.com -static.shemalez.com -static01.nyt.com -staticflickr.com -stboy.net -stc.com.sa -steamcommunity.com -steamladder.com -steamstatic.com -steel-storm.com -steemit.com -steganos.com -steganos.net -stepchina.com -stephaniered.com -sthoo.com -stickam.com -stickeraction.com -stileproject.com -stitcher.com -sto.cc -stoporganharvesting.org -stoptibetcrisis.net -storage.yandex.net -storagenewsletter.com -store.steampowered.com -storj.io -storm.mg -stormmediagroup.com -storry.tv -stoweboyd.com -straitstimes.com -stranabg.com -straplessdildo.com -streamable.com -streamate.com -streamingthe.net -streema.com -strikingly.com -strongvpn.com -strongwindpress.com -studentsforafreetibet.org -stumbleupon.com -stupidvideos.com -subhd.tv -substack.com -successfn.com -suche.gmx.net -sugarsync.com -sugobbs.com -sugumiru18.com -suissl.com -sujiatun.wordpress.com -summify.com -sumrando.com -sun1911.com -sundayguardianlive.com -sunmedia.ca -suno.ai -suno.com -sunporno.com -sunskyforum.com -sunta.com.tw -sunvpn.net -sunwinism.joinbbs.net -supchina.com -superfreevpn.com -superpages.com -supervpn.net -superzooi.com -suppig.net -suprememastertv.com -surfeasy.com -surfeasy.com.au -surfshark.com -suroot.com -surrenderat20.net -svsfx.com -swagbucks.com -swapspace.co -swissinfo.ch -swissvpn.net -switch1.jp -switchvpn.net -sydneytoday.com -sylfoundation.org -synapse.org -syncback.com -synergyse.com -syosetu.com -sysresccd.org -sytes.net -szbbs.net -szetowah.org.hk -t-g.com -t.co -t.me -t35.com -t66y.com -taa-usa.org -taaze.tw -tabtter.jp -tacc.cwb.gov.tw -taconet.com.tw -taedp.org.tw -tafm.org -tagwalk.com -tahr.org.tw -taipei.gov.tw -taipeisociety.org -taipeitimes.com -taisounds.com -taiwanbible.com -taiwandaily.net -taiwandc.org -taiwanhot.net -taiwanjobs.gov.tw -taiwanjustice.com -taiwanjustice.net -taiwankiss.com -taiwannation.50webs.com -taiwannation.com -taiwannation.com.tw -taiwanncf.org.tw -taiwannews.com.tw -taiwantp.net -taiwantt.org.tw -taiwanus.net -taiwanyes.ning.com -talk853.com -talkatone.com -talkboxapp.com -talkcc.com -talkonly.net -tanc.org -tangren.us -tanks.gg -taoism.net -tap.io -tapanwap.com -tapatalk.com -taptap.io -tardigrade.io -tarr.uspto.gov -taup.net -taweet.com -tbcollege.org -tbi.org.hk -tbjyt.org -tbrc.org -tbs-rainbow.org -tbsec.org -tbskkinabalu.page.tl -tbsn.org -tbsseattle.org -tbssqh.org -tbswd.org -tbtemple.org.uk -tbthouston.org -tccwonline.org -tcewf.org -tchrd.org -tcnynj.org -tcpspeed.co -tcsofbc.org -tdm.com.mo -teachparentstech.org -teamamericany.com -technews.tw -techspot.com -techviz.net -teck.in -teco-hk.org -teco-mo.org -teddysun.com -teeniefuck.net -teensinasia.com -tehrantimes.com -telecomspace.com -telega.one -telegra.ph -telegram.dog -telegram.me -telegram.org -telegram.space -telegramdownload.com -telegraph.co.uk -telesco.pe -tellapart.com -tellme.pw -temu.com -tenacy.com -tenor.com -tensorflow.org -tenzinpalmo.com -terabox.com -terobox.com -tew.org -textnow.com -textnow.me -tfc-taiwan.org.tw -tfhub.dev -tfiflve.com -tg-me.com -tg.dev -th.hao123.com -thaicn.com -thb.gov.tw -theatlantic.com -theatrum-belli.com -thebcomplex.com -theblaze.com -theblemish.com -thebobs.com -thebodyshop-usa.com -thecenter.mit.edu -thechasernews.co.uk -thechinabeat.org -thechinacollection.org -theconversation.com -thedalailamamovie.com -thediplomat.com -thedw.us -theepochtimes.com -thefacebook.com -thegay.com -thegioitinhoc.vn -thegly.com -theguardian.com -thehansindia.com -thehindu.com -thehun.net -theinitium.com -thenewslens.com -thepiratebay.org -theporndude.com -theportalwiki.com -theprint.in -therock.net.nz -thesaturdaypaper.com.au -thestandnews.com -thetatoken.org -thetibetcenter.org -thetibetconnection.org -thetibetmuseum.org -thetibetpost.com -thetrotskymovie.com -thetvdb.com -thewgo.org -thewirechina.com -theync.com -thinkgeek.com -thinkingtaiwan.com -thinkwithgoogle.com -thirdmill.org -thisav.com -thlib.org -thomasbernhard.org -thongdreams.com -threadreaderapp.com -threads.com -threads.net -throughnightsfire.com -thuhole.com -thumbzilla.com -thywords.com -tiananmenduizhi.com -tiananmenmother.org -tiananmenuniv.com -tiananmenuniv.net -tiandixing.org -tianhuayuan.com -tianlawoffice.com -tianti.io -tiantibooks.org -tianyantong.org.cn -tianzhu.org -tibet-envoy.eu -tibet-foundation.org -tibet-house-trust.co.uk -tibet-initiative.de -tibet-munich.de -tibet.at -tibet.ca -tibet.com -tibet.fr -tibet.net -tibet.nu -tibet.org -tibet.org.tw -tibet.to -tibet3rdpole.org -tibetaction.net -tibetaid.org -tibetalk.com -tibetan-alliance.org -tibetan.fr -tibetanaidproject.org -tibetanarts.org -tibetanbuddhistinstitute.org -tibetancommunity.org -tibetancommunityuk.net -tibetanculture.org -tibetanentrepreneurs.org -tibetanfeministcollective.org -tibetanhealth.org -tibetanjournal.com -tibetanlanguage.org -tibetanliberation.org -tibetanpaintings.com -tibetanphotoproject.com -tibetanpoliticalreview.org -tibetanreview.net -tibetansports.org -tibetanwomen.org -tibetanyouth.org -tibetanyouthcongress.org -tibetcharity.dk -tibetcharity.in -tibetchild.org -tibetcity.com -tibetcollection.com -tibetcorps.org -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 -tibetlibre.free.fr -tibetmuseum.org -tibetnetwork.org -tibetoffice.ch -tibetoffice.com.au -tibetoffice.eu -tibetoffice.org -tibetonline.com -tibetonline.tv -tibetoralhistory.org -tibetpolicy.eu -tibetrelieffund.co.uk -tibetsociety.com -tibetsun.com -tibetsupportgroup.org -tibetswiss.ch -tibettelegraph.com -tibettimes.net -tibettruth.com -tibetwrites.org -ticket.com.tw -tigervpn.com -tiktok.com -tiktokcdn-eu.com -tiktokcdn-us.com -tiktokcdn.com -tiktokv.com -tiktokv.us -tiltbrush.com -timdir.com -time.com -timesnownews.com -timesofindia.indiatimes.com -timsah.com -timtales.com -tinc-vpn.org -tineye.com -tingtalk.me -tiny.cc -tinychat.com -tinypaste.com -tinyurl.com -tipas.net -tipo.gov.tw -tistory.com -tkcs-collins.com -tl.gd -tma.co.jp -tmagazine.com -tmi.me -tmpp.org -tn1.shemalez.com -tn2.shemalez.com -tn3.shemalez.com -tnaflix.com -tnp.org -to-porno.com -togetter.com -toh.info -token.im -tokenlon.im -tokyo-247.com -tokyo-hot.com -tokyo-porn-tube.com -tokyocn.com -tomp3.cc -tongil.or.kr -tonyyan.net -toonel.net -top.tv -top10vpn.com -top81.ws -topbtc.com -topic.youthwant.com.tw -topnews.in -toppornsites.com -topshareware.com -topsy.com -toptip.ca -toptoon.net -tor.updatestar.com -tora.to -torcn.com -torguard.net -torlock.com -torproject.org -torrentgalaxy.to -torrentkitty.tv -torrentprivacy.com -torrentproject.se -torrenty.org -tortoisesvn.net -torvpn.com -tosh.comedycentral.com -totalvpn.com -tou.tv -toutiaoabc.com -towngain.com -toypark.in -toythieves.com -toytractorshow.com -tparents.org -tpi.org.tw -tracfone.com -tradingview.com -translate.goog -transparency.org -treemall.com.tw -trendsmap.com -trickip.net -trimondi.de -tronscan.org -trouw.nl -trt.net.tr -trtc.com.tw -truebuddha-md.org -trulyergonomic.com -trustwallet.com -truthsocial.com -truveo.com -tryheart.jp -tsctv.net -tsdr.uspto.gov -tsemtulku.com -tsquare.tv -tsu.org.tw -tsunagarumon.com -tt1069.com -tttan.com -ttv.com.tw -ttvnw.net -tu8964.com -tubaholic.com -tube.com -tube8.com -tube911.com -tubecup.com -tubegals.com -tubeislam.com -tubepornclassic.com -tubestack.com -tubewolf.com -tuibeitu.net -tuidang.org -tuidang.se -tuitwit.com -tukaani.org -tumblr.com -tumutanzi.com -tumview.com -tunein.com -tunein.streamguys1.com -tunnelbear.com -tunnelblick.net -tunnelr.com -tunsafe.com -turansam.org -turbobit.net -turbohide.com -turkistantimes.com -turntable.fm -tushycash.com -tuvpn.com -tuzaijidi.com -tv.com -tv.jtbc.joins.com -tvants.com -tvboxnow.com -tvider.com -tvmost.com.hk -tvplayvideos.com -tvunetworks.com -tw-blog.com -tw-npo.org -tw.gigacircle.com -tw.hao123.com -tw.jiepang.com -tw.streetvoice.com -tw.tomonews.net -tw01.org -twaitter.com -twapperkeeper.com -twaud.io -twavi.com -twbbs.org -twblogger.com -tweepguide.com -tweepmag.com -tweepml.org -tweetbackup.com -tweetboard.com -tweetcs.com -tweetdeck.com -tweetedtimes.com -tweetphoto.com -tweetree.com -tweettunnel.com -tweetwally.com -tweetymail.com -tweez.net -twelve.today -twerkingbutt.com -twftp.org -twgreatdaily.com -twibase.com -twibble.de -twibbon.com -twibs.com -twicountry.org -twicsy.com -twiends.com -twifan.com -twiffo.com -twiggit.org -twilightsex.com -twilog.org -twimbow.com -twimg.com -twimg.edgesuite.net -twip.me -twipple.jp -twishort.com -twister.net.co -twisternow.com -twistory.net -twitch.tv -twitchcdn.net -twitgoo.com -twitiq.com -twitlonger.com -twitmania.com -twitoaster.com -twitonmsn.com -twitpic.com -twitstat.com -twittbot.net -twitter.com -twitter.jp -twitter4j.org -twittercounter.com -twitterfeed.com -twittergadget.com -twitterkr.com -twittermail.com -twitterrific.com -twittertim.es -twitthat.com -twitturk.com -twitturly.com -twitzap.com -twiyia.com -twkan.com -twnorth.org.tw -twreporter.org -twskype.com -twt.tl -twtkr.com -twtr2src.ogaoga.org -twtrland.com -twttr.com -twurl.nl -tx.me -txxx.com -tycool.com -typepad.com -typeset.io -typora.io -u15.info -u9un.com -ua5v.com -ub0.cc -ubddns.org -uberproxy.net -uc-japan.org -uchicago.edu -udn.com -udn.com.tw -udnbkk.com -udomain.hk -uforadio.com.tw -ufreevpn.com -ugo.com -uhdwallpapers.org -uhrp.org -uighur.narod.ru -uighur.nl -uighurbiz.net -ukcdp.co.uk -uku.im -ulike.net -ulop.net -ultrasurf.us -ultravpn.com -ultravpn.fr -ultraxs.com -umich.edu -unblock-us.com -unblock.cn.com -unblockdmm.com -unblocker.yt -unblocksit.es -uncyclomedia.org -uncyclopedia.hk -uncyclopedia.tw -underwoodammo.com -unholyknight.com -uni.cc -unification.net -unification.org.tw -unirule.cloud -unix100.com -unknownspace.org -unmineable.com -unodedos.com -unpo.org -unseen.is -unstable.icu -unwire.hk -uocn.org -upbit.com -updates.tdesktop.com -upghsbc.com -upholdjustice.org -uploaded.net -uploaded.to -uploadstation.com -upmedia.mg -upornia.com -uproxy.org -uptodown.com -upwill.org -ur7s.com -uraban.me -urbandictionary.com -urbansurvival.com -urchin.com -urlborg.com -urlparser.com -us.to -usacn.com -usaip.eu -uscardforum.com -uscg.mil -uscnpm.org -use.typekit.net -usercontent.goog -users.skynet.be -usfk.mil -usma.edu -usmgtcg.ning.com -usno.navy.mil -usocctn.com -ustibetcommittee.org -ustream.tv -usus.cc -utopianpal.com -uujiasu.com -uukanshu.com -uupool.cn -uvwxyz.xyz -uwants.com -uwants.net -uyghur-j.org -uyghur.co.uk -uyghuraa.org -uyghuramerican.org -uyghurbiz.org -uyghurcongress.org -uyghurpen.org -uyghurstudies.org -uyghurtribunal.com -uygur.fc2web.com -uygur.org -uymaarip.com -v2.help -v2ex.com -v2fly.org -v2ray.com -v2raycn.com -valeursactuelles.com -van001.com -van698.com -vanemu.cn -vanilla-jp.com -vanpeople.com -vansky.com -vaticannews.va -vatn.org -vcf-online.org -vcfbuilder.org -vegas.williamhill.com -vegasred.com -velkaepocha.sk -venbbs.com -venchina.com -venetianmacao.com -ventureswell.com -veoh.com -vercel.app -vermonttibet.org -vern.cc -verybs.com -vevo.com -vewas.net -vft.com.tw -viber.com -vica.info -victimsofcommunism.org -vid.me -vidble.com -video.aol.ca -video.aol.co.uk -video.aol.com -video.foxbusiness.com -videobam.com -videodetective.com -videomega.tv -videomo.com -videopediaworld.com -videopress.com -vidinfo.org -vietdaikynguyen.com -vijayatemple.org -vilanet.me -vilavpn.com -vimeo.com -vimeocdn.com -vimperator.org -vincnd.com -vine.co -vinniev.com -vip-enterprise.com -virtualrealporn.com -visibletweets.com -viu.com -viu.tv -vivahentai4u.net -vivaldi.com -vivatube.com -vivthomas.com -vizvaz.com -vjav.com -vjmedia.com.hk -vllcs.org -vmixcore.com -vmpsoft.com -vn.hao123.com -vnet.link -voa-11.akacast.akamaistream.net -voacambodia.com -voacantonese.com -voachinese.com -voachineseblog.com -voagd.com -voaindonesia.com -voanews.com -voatibetan.com -voatibetanenglish.com -vocaroo.com -vocativ.com -vocn.tv -vocus.cc -vod-abematv.akamaized.net -vod.wwe.com -voicettank.org -vot.org -vovo2000.com -voxer.com -voy.com -vpl.bibliocommons.com -vpn.ac -vpn.cmu.edu -vpn.net -vpn.sv.cmu.edu -vpn4all.com -vpnaccount.org -vpnaccounts.com -vpnbook.com -vpncomparison.org -vpncoupons.com -vpncup.com -vpndada.com -vpnfan.com -vpnfire.com -vpnforgame.net -vpngate.jp -vpngate.net -vpngratis.net -vpnhq.com -vpnhub.com -vpninja.net -vpnintouch.com -vpnjack.com -vpnmaster.com -vpnmentor.com -vpnpick.com -vpnpop.com -vpnpronet.com -vpnproxymaster.com -vpnreactor.com -vpnreviewz.com -vpnsecure.me -vpnshazam.com -vpnshieldapp.com -vpnsp.com -vpntraffic.com -vpntunnel.com -vpnuk.info -vpnunlimitedapp.com -vpnvip.com -vpnworldwide.com -vporn.com -vpser.net -vpsxb.net -vraiesagesse.net -vrchat.com -vrmtr.com -vrporn.com -vrsmash.com -vtunnel.com -vuku.cc -vultryhw.com -w-pool.com -w.idaiwan.com -w3s.link -waffle1999.com -wahas.com -waikeung.org -wainao.me -walletconnect.com -wallmama.com -wallpapercasa.com -wallproxy.com -wallsttv.com -waltermartin.com -waltermartin.org -wanderinghorse.net -wangafu.net -wangjinbo.org -wanglixiong.com -wango.org -wangruoshui.net -want-daily.com -wanz-factory.com -wapedia.mobi -warroom.org -waselpro.com -washingtonpost.com -watch8x.com -watchinese.com -watchmygf.net -watchout.tw -wattpad.com -wav.tv -waveprotocol.org -waybig.com -waymo.com -wd.bible -wda.gov.tw -wdf5.com -wealth.com.tw -wearehairy.com -wearn.com -web.dev -web2project.net -webbang.net -webevader.org -webfreer.com -webjb.org -weblagu.com -webmproject.org -webpkgcache.com -webrtc.org -webrush.net -webs-tv.net -websdr.org -website.informer.com -website.new -websitepulse.com -webwarper.net -webworkerdaily.com -wechatlawsuit.com -weebly.com -wefightcensorship.org -wefong.com -wego.here.com -weiboleak.com -weihuo.org -weijingsheng.org -weiming.info -weiquanwang.org -weisuo.ws -welovecock.com -welt.de -wemigrate.org -wengewang.com -wengewang.org -wenxuecity.com -wenyunchao.com -wenzhao.ca -westca.com -westernshugdensociety.org -westernwolves.com -westkit.net -westpoint.edu -wetplace.com -wetpussygames.com -wezone.net -wforum.com -whatblocked.com -whatbrowser.org -whats.new -whatsapp.com -whatsapp.net -whatsonweibo.com -wheelockslatin.com -whereiswerner.com -wheretowatch.com -whippedass.com -whispersystems.org -whoer.net -whotalking.com -whylover.com -whyx.org -widevine.com -wikaba.com -wiki.gamerp.jp -wiki.jqueryui.com -wiki.keso.cn -wiki.metacubex.one -wiki.oauth.net -wiki.phonegap.com -wikibooks.org -wikidata.org -wikileaks-forum.com -wikileaks.ch -wikileaks.com -wikileaks.de -wikileaks.eu -wikileaks.lu -wikileaks.org -wikileaks.pl -wikiless.funami.tech -wikilivres.info -wikimapia.org -wikimedia.org -wikinews.org -wikipedia.com -wikipedia.org -wikisource.org -wikiunblocked.org -wikiversity.org -wikivoyage.org -wikiwand.com -wiktionary.org -williamhill.com -willw.net -wilsoncenter.org -windscribe.com -wingamestore.com -wingy.site -winning11.com -wionews.com -wire.com -wiredbytes.com -wiredpen.com -wireguard.com -wisdompubs.org -wisevid.com -withgoogle.com -withyoutube.com -witnessleeteaching.com -witopia.net -wizcrafts.net -wjbk.org -wlcnew.jigsy.com -wmflabs.org -wmfusercontent.org -wn.com -wnacg.com -wnacg.org -wo.tc -wo3ttt.wordpress.com -woeser.com -wokar.org -wolfax.com -wombo.ai -woolyss.com -woopie.jp -woopie.tv -wordpress.com -work2icu.org -workatruna.com -workerempowerment.org -workers.dev -worldcat.org -worldjournal.com -worldvpn.net -wow.com -wowgirls.com -wowhead.com -wowporn.com -wowrk.com -woyaolian.org -wozy.in -wp.com -wpoforum.com -wrchina.org -wretch.cc -writer.zoho.com -writesonic.com -wsj.com -wsj.net -wtbn.org -wtfpeople.com -wuerkaixi.com -wufafangwen.com -wufi.org.tw -wujie.net -wujieliulan.com -wunderground.com -wuw.red -wwitv.com -www.ajsands.com -www.antd.org -www.aolnews.com -www.businessinsider.com.au -www.cmoinc.org -www.dmm.com -www.dwheeler.com -www.eastturkistan.net -www.gmiddle.com -www.gmiddle.net -www.hustlercash.com -www.idlcoyote.com -www.imdb.com -www.kindleren.com -www.klip.me -www.lib.virginia.edu -www.lorenzetti.com.br -www.m-sport.co.uk -www.monlamit.org -www.moztw.org -www.msn.com -www.nbc.com -www.owind.com -www.oxid.it -www.powerpointninja.com -www.s4miniarchive.com -www.sciencemag.org -www.shadowsocks.com -www.skype.com -www.tablesgenerator.com -www.taiwanonline.cc -www.thechinastory.org -www.wan-press.org -www.websnapr.com -www.xicons.org -www.zensur.freerk.com -www1.american.edu -www1.biz -www2.ohchr.org -www2.rocketbbs.com -wwwhost.biz -wxw.cat -wxw.moe -wzyboy.im -x-art.com -x-berry.com -x-wall.org -x.ai -x.co -x.com -x.company -x24hr.com -x3guide.com -xanga.com -xbabe.com -xbookcn.com -xbtce.com -xcafe.in -xcity.jp -xcritic.com -xerotica.com -xfinity.com -xfxssr.me -xgmyd.com -xhamster.com -xianba.net -xianjian.tw -xiaobaiwu.com -xiaochuncnjp.com -xiaohexie.com -xiaolan.me -xiaoma.org -xiaomi.eu -xiaxiaoqiang.net -xiezhua.com -xihua.es -xijie.wordpress.com -xing.com -xinjiangpolicefiles.org -xinmiao.com.hk -xinqimeng.over-blog.com -xinsheng.net -xinshijue.com -xiongpian.com -xiuren.org -xizang-zhiye.org -xjp.cc -xjtravelguide.com -xm.com -xml-training-guide.com -xmovies.com -xn--11xs86f.icu -xn--4gq171p.com -xn--9iqy04a7fi01l.com -xn--9pr62r24a.com -xn--czq75pvv1aj5c.org -xn--i2ru8q2qg.com -xn--ngstr-lra8j.com -xn--noss43i.com -xn--oiq.cc -xn--p8j9a0d9c9a.xn--q9jyb4c -xn--u2u927b.com -xnpool.com -xnxx.com -xpdo.net -xpud.org -xrentdvd.com -xsden.info -xskywalker.com -xt.com -xt.pub -xtube.com -xuchao.net -xuchao.org -xuehua.us -xvbelink.com -xvideo.cc -xvideos-cdn.com -xvideos.com -xvideos.es -xvinlink.com -xxbbx.com -xxlmovies.com -xxuz.com -xxx.com -xxx.xxx -xxxfuckmom.com -xxxx.com.au -xxxy.info -xxxymovies.com -xys.dxiong.com -xys.org -xysblogs.org -y2mate.com -yadi.sk -yahoo.com -yahoo.com.hk -yahoo.com.tw -yakbutterblues.com -yam.com -yam.org.tw -yande.re -yanghengjun.com -yangzhi.org -yasni.co.uk -yasukuni.or.jp -yayabay.com -ydy.com -yeahteentube.com -yecl.net -yeelou.com -yeeyi.com -yegle.net -yes-news.com -yes.xxx -yes123.com.tw -yesasia.com -yesasia.com.hk -yespornplease.com -yeyeclub.com -ygto.com -yhcw.net -yibada.com -yibaochina.com -yidio.com -yigeni.com -yilubbs.com -yinlei.org -yipub.com -yizhihongxing.com -yobit.net -yobt.com -yobt.tv -yogichen.org -yolasite.com -yomiuri.co.jp -yong.hu -yorkbbs.ca -you-get.org -you.com -youdontcare.com -youjizz.com -youmaker.com -youngpornvideos.com -youngspiration.hk -youpai.org -youporn.com -youporngay.com -your-freedom.net -yourepeat.com -yourlisten.com -yourlust.com -yourtrap.com -yousendit.com -youthnetradio.org -youtu.be -youtube-nocookie.com -youtube.com -youtubeeducation.com -youtubegaming.com -youtubekids.com -youversion.com -youwin.com -youxu.info -yt.be -ytht.net -ytimg.com -ytn.co.kr -yuanming.net -yuanzhengtang.org -yulghun.com -yunchao.net -yunomi.tokyo -yuvutu.com -yvesgeleyn.com -ywpw.com -yx51.net -yyii.org -yyjlymb.xyz -yysub.net -yzzk.com -z-lib.fm -z-lib.fo -z-lib.gd -z-lib.gl -z-lib.io -z-lib.org -z-library.ec -z-library.sk -zacebook.com -zalmos.com -zamimg.com -zaobao.com.sg -zaochenbao.com -zapto.org -zattoo.com -zb.com -zdnet.com.tw -zello.com -zengjinyan.org -zenmate.com -zenmate.com.ru -zerohedge.com -zeronet.io -zfreet.com -zh-hans.cfsh99.com -zh.ecdm.wikia.com -zh.pokerstrategy.com -zh.pttpedia.wikia.com -zh.uncyclopedia.wikia.com -zh.wikiquote.org -zhangboli.net -zhangtianliang.com -zhanlve.org -zhao.1984.city -zhao.jinhai.de -zhenghui.org -zhengjian.org -zhengwunet.org -zhenxiang.biz -zhizhu.top -zhongguo.ca -zhongguorenquan.org -zhongguotese.net -zhongzidi.com -zhoushuguang.com -zhuanxing.cn -zhuatieba.com -zhuichaguoji.org -zi.media -ziddu.com -zillionk.com -zim.vn -zinio.com -ziporn.com -zippyshare.com -zmedia.com.tw -zmw.cn -zodgame.us -zodgame.xyz -zomobo.net -zonaeuropa.com -zonghexinwen.com -zoogvpn.com -zoominfo.com -zooqle.com -zootool.com -zoozle.net -zophar.net -zorrovpn.com -zozotown.com -zpn.im -zspeeder.me -zsrhao.com -zuo.la -zuobiao.me -zuola.com -zvereff.com -zynamics.com -zyns.com -zyxel.com -zzcartoon.com -zzcloud.me -zzux.com diff --git a/small/luci-app-passwall/root/usr/share/passwall/rules/lanlist_ipv4 b/small/luci-app-passwall/root/usr/share/passwall/rules/lanlist_ipv4 deleted file mode 100644 index 82b1600e5c..0000000000 --- a/small/luci-app-passwall/root/usr/share/passwall/rules/lanlist_ipv4 +++ /dev/null @@ -1,16 +0,0 @@ -0.0.0.0/8 -10.0.0.0/8 -100.64.0.0/10 -127.0.0.0/8 -169.254.0.0/16 -172.16.0.0/12 -192.0.0.0/24 -192.0.2.0/24 -192.88.99.0/24 -192.168.0.0/16 -198.51.100.0/24 -203.0.113.0/24 -224.0.0.0/4 -233.252.0.0/24 -240.0.0.0/4 -255.255.255.255/32 diff --git a/small/luci-app-passwall/root/usr/share/passwall/rules/lanlist_ipv6 b/small/luci-app-passwall/root/usr/share/passwall/rules/lanlist_ipv6 deleted file mode 100644 index 34ec9e31cb..0000000000 --- a/small/luci-app-passwall/root/usr/share/passwall/rules/lanlist_ipv6 +++ /dev/null @@ -1,16 +0,0 @@ -::/128 -::1/128 -::ffff:0:0/96 -::ffff:0:0:0/96 -64:ff9b::/96 -64:ff9b:1::/48 -100::/64 -2001::/32 -2001:20::/28 -2001:db8::/32 -2002::/16 -3fff::/20 -5f00::/16 -fc00::/7 -fe80::/64 -ff00::/8 diff --git a/small/luci-app-passwall/root/usr/share/passwall/rules/proxy_host b/small/luci-app-passwall/root/usr/share/passwall/rules/proxy_host deleted file mode 100644 index 72c498c54d..0000000000 --- a/small/luci-app-passwall/root/usr/share/passwall/rules/proxy_host +++ /dev/null @@ -1,13 +0,0 @@ -engage.cloudflareclient.com -github.com -bing.com -c.mi.com -apple-relay.apple.com - -#google -googleapis.cn -googleapis.com -google.com.tw -google.com.hk -gstatic.com -xn--ngstr-lra8j.com diff --git a/small/luci-app-passwall/root/usr/share/passwall/rules/proxy_ip b/small/luci-app-passwall/root/usr/share/passwall/rules/proxy_ip deleted file mode 100644 index 88309f8da4..0000000000 --- a/small/luci-app-passwall/root/usr/share/passwall/rules/proxy_ip +++ /dev/null @@ -1,21 +0,0 @@ -149.154.160.0/20 -91.108.4.0/22 -91.108.56.0/24 -109.239.140.0/24 -67.198.55.0/24 -8.8.4.4 -8.8.8.8 -208.67.222.222 -208.67.220.220 -104.16.249.249 -104.16.248.249 -1.1.1.1 -1.1.1.2 -1.0.0.1 -9.9.9.9 -149.112.112.112 -2001:67c:4e8::/48 -2001:b28:f23c::/48 -2001:b28:f23d::/48 -2001:b28:f23f::/48 -2001:b28:f242::/48 diff --git a/small/luci-app-passwall/root/usr/share/passwall/socks_auto_switch.sh b/small/luci-app-passwall/root/usr/share/passwall/socks_auto_switch.sh deleted file mode 100755 index a1af17957a..0000000000 --- a/small/luci-app-passwall/root/usr/share/passwall/socks_auto_switch.sh +++ /dev/null @@ -1,185 +0,0 @@ -#!/bin/sh - -. /usr/share/passwall/utils.sh -APP_FILE=${APP_PATH}/app.sh - -flag=0 - -test_url() { - local url=$1 - local try=1 - [ -n "$2" ] && try=$2 - local timeout=2 - [ -n "$3" ] && timeout=$3 - local extra_params=$4 - if /usr/bin/curl --help all | grep -q "\-\-retry-all-errors"; then - extra_params="--retry-all-errors ${extra_params}" - fi - local status=$(/usr/bin/curl -I -o /dev/null -skL ${extra_params} --connect-timeout ${timeout} --retry ${try} -w %{http_code} "$url") - case "$status" in - 204) - status=200 - ;; - esac - echo $status -} - -test_proxy() { - local result=0 - local status=$(test_url "${probe_url}" ${retry_num} ${connect_timeout} "-x socks5h://127.0.0.1:${socks_port}") - if [ "$status" = "200" ]; then - result=0 - else - local status2=$(test_url "https://www.baidu.com" ${retry_num} ${connect_timeout}) - if [ "$status2" = "200" ]; then - result=1 - else - result=2 - ping -c 3 -W 1 223.5.5.5 > /dev/null 2>&1 - [ $? -eq 0 ] && { - result=1 - } - fi - fi - echo $result -} - -test_node() { - local node_id=$1 - local _type=$(echo $(config_n_get ${node_id} type) | tr 'A-Z' 'a-z') - [ -n "${_type}" ] && { - local _tmp_port=$(get_new_port 61080 tcp,udp) - $APP_FILE run_socks flag="test_node_${node_id}" node=${node_id} bind=127.0.0.1 socks_port=${_tmp_port} config_file=test_node_${node_id}.json - local curlx="socks5h://127.0.0.1:${_tmp_port}" - sleep 1s - local _proxy_status=$(test_url "${probe_url}" ${retry_num} ${connect_timeout} "-x $curlx") - # 结束 SS 插件进程 - local pid_file="/tmp/etc/${CONFIG}/test_node_${node_id}_plugin.pid" - [ -s "$pid_file" ] && kill -9 "$(head -n 1 "$pid_file")" >/dev/null 2>&1 - pgrep -af "test_node_${node_id}" | awk '! /socks_auto_switch\.sh/{print $1}' | xargs kill -9 >/dev/null 2>&1 - rm -rf /tmp/etc/${CONFIG}/test_node_${node_id}*.* - if [ "${_proxy_status}" -eq 200 ]; then - return 0 - fi - } - return 1 -} - -test_auto_switch() { - flag=$((flag + 1)) - local b_nodes=$1 - local now_node=$2 - [ -z "$now_node" ] && { - if [ -n "$(get_cache_var "socks_${id}")" ]; then - now_node=$(get_cache_var "socks_${id}") - else - #echolog "Socks切换检测:未知错误" - return 1 - fi - } - - [ $flag -le 1 ] && { - main_node=$now_node - } - - local status=$(test_proxy) - if [ "$status" = "2" ]; then - echolog "Socks切换检测:无法连接到网络,请检查网络是否正常!" - return 2 - fi - - #检测主节点是否能使用 - if [ "$restore_switch" = "1" ] && [ -n "$main_node" ] && [ "$now_node" != "$main_node" ]; then - test_node ${main_node} - [ $? -eq 0 ] && { - #主节点正常,切换到主节点 - echolog "Socks切换检测:${id}主节点【$(config_n_get $main_node type):[$(config_n_get $main_node remarks)]】正常,切换到主节点!" - $APP_FILE socks_node_switch flag=${id} new_node=${main_node} - [ $? -eq 0 ] && { - echolog "Socks切换检测:${id}节点切换完毕!" - } - return 0 - } - fi - - if [ "$status" = "0" ]; then - #echolog "Socks切换检测:${id}【$(config_n_get $now_node type):[$(config_n_get $now_node remarks)]】正常。" - return 0 - elif [ "$status" = "1" ]; then - local new_node msg - if [ "$backup_node_num" -gt 1 ]; then - # 有多个后备节点时 - local first_node found node - for node in $b_nodes; do - [ -z "$first_node" ] && first_node="$node" # 记录第一个节点 - [ "$found" = "1" ] && { new_node="$node"; break; } # 找到当前节点后取下一个 - [ "$node" = "$now_node" ] && found=1 # 标记找到当前节点 - done - # 如果没找到当前节点,或者当前节点是最后一个,就取第一个节点 - [ -z "$new_node" ] && new_node="$first_node" - msg="切换到$([ "$now_node" = "$main_node" ] && echo 备用节点 || echo 下一个备用节点)检测!" - else - # 只有一个后备节点时,与主节点轮询 - new_node=$([ "$now_node" = "$main_node" ] && echo "$b_nodes" || echo "$main_node") - msg="切换到$([ "$now_node" = "$main_node" ] && echo 备用节点 || echo 主节点)检测!" - fi - echolog "Socks切换检测:${id}【$(config_n_get $now_node type):[$(config_n_get $now_node remarks)]】异常,$msg" - test_node ${new_node} - if [ $? -eq 0 ]; then -# [ "$restore_switch" = "0" ] && { -# uci set $CONFIG.${id}.node=$new_node -# [ -z "$(echo $b_nodes | grep $main_node)" ] && uci add_list $CONFIG.${id}.autoswitch_backup_node=$main_node -# uci commit $CONFIG -# } - echolog "Socks切换检测:${id}【$(config_n_get $new_node type):[$(config_n_get $new_node remarks)]】正常,切换到此节点!" - $APP_FILE socks_node_switch flag=${id} new_node=${new_node} - [ $? -eq 0 ] && { - echolog "Socks切换检测:${id}节点切换完毕!" - } - return 0 - else - test_auto_switch "${b_nodes}" ${new_node} - fi - fi -} - -start() { - id=$1 - LOCK_FILE=${LOCK_PATH}/${CONFIG}_socks_auto_switch_${id}.lock - LOG_EVENT_FILTER=$(uci -q get "${CONFIG}.global[0].log_event_filter" 2>/dev/null) - LOG_EVENT_CMD=$(uci -q get "${CONFIG}.global[0].log_event_cmd" 2>/dev/null) - main_node=$(config_n_get $id node) - socks_port=$(config_n_get $id port 0) - delay=$(config_n_get $id autoswitch_testing_time 30) - connect_timeout=$(config_n_get $id autoswitch_connect_timeout 3) - retry_num=$(config_n_get $id autoswitch_retry_num 1) - restore_switch=$(config_n_get $id autoswitch_restore_switch 0) - probe_url=$(config_n_get $id autoswitch_probe_url "https://www.google.com/generate_204") - backup_node=$(config_n_get $id autoswitch_backup_node) - if [ -n "$backup_node" ]; then - backup_node=$(echo "$backup_node" | tr -s ' ' '\n' | uniq | tr -s '\n' ' ') - backup_node_num=$(printf "%s\n" "$backup_node" | wc -w) - if [ "$backup_node_num" -eq 1 ]; then - [ "$main_node" = "$backup_node" ] && return - fi - else - return - fi - while [ -n "$backup_node" ]; do - [ -f "$LOCK_FILE" ] && { - sleep 6s - continue - } - pgrep -af "${CONFIG}/" | awk '/app\.sh.*(start|stop)/ || /nftables\.sh/ || /iptables\.sh/ { found = 1 } END { exit !found }' && { - # 特定任务执行中不检测 - sleep 6s - continue - } - touch $LOCK_FILE - test_auto_switch "$backup_node" - rm -f $LOCK_FILE - sleep ${delay} - done -} - -start $@ diff --git a/small/luci-app-passwall/root/usr/share/passwall/subscribe.lua b/small/luci-app-passwall/root/usr/share/passwall/subscribe.lua deleted file mode 100755 index 751e366d05..0000000000 --- a/small/luci-app-passwall/root/usr/share/passwall/subscribe.lua +++ /dev/null @@ -1,2125 +0,0 @@ -#!/usr/bin/lua - ------------------------------------------------- --- @author William Chan ------------------------------------------------- -require 'luci.util' -require 'luci.jsonc' -require 'luci.sys' -local appname = 'passwall' -local api = require ("luci.passwall.api") -local datatypes = require "luci.cbi.datatypes" - --- these global functions are accessed all the time by the event handler --- so caching them is worth the effort -local tinsert = table.insert -local ssub, slen, schar, sbyte, sformat, sgsub = string.sub, string.len, string.char, string.byte, string.format, string.gsub -local split = api.split -local jsonParse, jsonStringify = luci.jsonc.parse, luci.jsonc.stringify -local base64Decode = api.base64Decode -local uci = api.uci -local fs = api.fs -uci:revert(appname) - -local has_ss = api.is_finded("ss-redir") -local has_ss_rust = api.is_finded("sslocal") -local has_ssr = api.is_finded("ssr-local") and api.is_finded("ssr-redir") -local has_trojan_plus = api.is_finded("trojan-plus") -local has_singbox = api.finded_com("sing-box") -local has_xray = api.finded_com("xray") -local has_hysteria2 = api.finded_com("hysteria") -local allowInsecure_default = nil --- 取节点使用core类型(节点订阅页面未设置时,自动取默认) -local function get_core(field, candidates) - local v = uci:get(appname, "@global_subscribe[0]", field) - if not v or v == "" then - for _, c in ipairs(candidates) do - if c[1] then return c[2] end - end - end - return v -end -local ss_type_default = get_core("ss_type", {{has_ss,"shadowsocks-libev"},{has_ss_rust,"shadowsocks-rust"},{has_singbox,"sing-box"},{has_xray,"xray"}}) -local trojan_type_default = get_core("trojan_type", {{has_trojan_plus,"trojan-plus"},{has_singbox,"sing-box"},{has_xray,"xray"}}) -local vmess_type_default = get_core("vmess_type", {{has_xray,"xray"},{has_singbox,"sing-box"}}) -local vless_type_default = get_core("vless_type", {{has_xray,"xray"},{has_singbox,"sing-box"}}) -local hysteria2_type_default = get_core("hysteria2_type", {{has_hysteria2,"hysteria2"},{has_singbox,"sing-box"},{has_xray,"xray"}}) ----- -local domain_strategy_default = uci:get(appname, "@global_subscribe[0]", "domain_strategy") or "" -local domain_strategy_node = "" -local preproxy_node_group, to_node_group, chain_node_type = "", "", "" --- 判断是否过滤节点关键字 -local filter_keyword_mode_default = uci:get(appname, "@global_subscribe[0]", "filter_keyword_mode") or "0" -local filter_keyword_discard_list_default = uci:get(appname, "@global_subscribe[0]", "filter_discard_list") or {} -local filter_keyword_keep_list_default = uci:get(appname, "@global_subscribe[0]", "filter_keep_list") or {} -local function is_filter_keyword(value) - if filter_keyword_mode_default == "1" then - for k,v in ipairs(filter_keyword_discard_list_default) do - if value:find(v, 1, true) then - return true - end - end - elseif filter_keyword_mode_default == "2" then - local result = true - for k,v in ipairs(filter_keyword_keep_list_default) do - if value:find(v, 1, true) then - result = false - end - end - return result - elseif filter_keyword_mode_default == "3" then - local result = false - for k,v in ipairs(filter_keyword_discard_list_default) do - if value:find(v, 1, true) then - result = true - end - end - for k,v in ipairs(filter_keyword_keep_list_default) do - if value:find(v, 1, true) then - result = false - end - end - return result - elseif filter_keyword_mode_default == "4" then - local result = true - for k,v in ipairs(filter_keyword_keep_list_default) do - if value:find(v, 1, true) then - result = false - end - end - for k,v in ipairs(filter_keyword_discard_list_default) do - if value:find(v, 1, true) then - result = true - end - end - return result - end - return false -end - -local nodeResult = {} -- update result -local isDebug = false - -local log = function(...) - if isDebug == true then - local result = os.date("%Y-%m-%d %H:%M:%S: ") .. table.concat({...}, " ") - print(result) - else - api.log(...) - end -end - -local nodes_table = {} -for k, e in ipairs(api.get_valid_nodes()) do - if e.node_type == "normal" then - nodes_table[#nodes_table + 1] = e - end -end - --- 获取各项动态配置的当前服务器,可以用 get 和 set, get必须要获取到节点表 -local CONFIG = {} -do - local function import_config(protocol) - local name = string.upper(protocol) - local szType = "@global[0]" - local option = protocol .. "_node" - - local node_id = uci:get(appname, szType, option) - CONFIG[#CONFIG + 1] = { - log = true, - remarks = name .. "节点", - currentNode = node_id and uci:get_all(appname, node_id) or nil, - set = function(o, server) - uci:set(appname, szType, option, server) - o.newNodeId = server - end - } - end - import_config("tcp") - import_config("udp") - - if true then - local i = 0 - local option = "node" - uci:foreach(appname, "socks", function(t) - i = i + 1 - local id = t[".name"] - local node_id = t[option] - CONFIG[#CONFIG + 1] = { - log = true, - id = id, - remarks = "Socks节点列表[" .. i .. "]", - currentNode = node_id and uci:get_all(appname, node_id) or nil, - set = function(o, server) - if not server or server == "" then - if #nodes_table > 0 then - server = nodes_table[1][".name"] - end - end - uci:set(appname, t[".name"], option, server) - o.newNodeId = server - end - } - if t.autoswitch_backup_node and #t.autoswitch_backup_node > 0 then - local flag = "Socks节点列表[" .. i .. "]备用节点的列表" - local currentNodes = {} - local newNodes = {} - for k, node_id in ipairs(t.autoswitch_backup_node) do - if node_id then - local currentNode = uci:get_all(appname, node_id) or nil - if currentNode then - currentNodes[#currentNodes + 1] = { - log = true, - remarks = flag .. "[" .. k .. "]", - currentNode = currentNode, - set = function(o, server) - if server and server ~= "nil" then - table.insert(o.newNodes, server) - end - end - } - end - end - end - CONFIG[#CONFIG + 1] = { - remarks = flag, - currentNodes = currentNodes, - newNodes = newNodes, - set = function(o, newNodes) - if o then - if not newNodes then newNodes = o.newNodes end - uci:set_list(appname, id, "autoswitch_backup_node", newNodes or {}) - end - end - } - end - end) - end - - if true then - local i = 0 - local option = "lbss" - local function is_ip_port(str) - if type(str) ~= "string" then return false end - local ip, port = str:match("^([%d%.]+):(%d+)$") - return ip and datatypes.ipaddr(ip) and tonumber(port) and tonumber(port) <= 65535 - end - uci:foreach(appname, "haproxy_config", function(t) - i = i + 1 - local node_id = t[option] - CONFIG[#CONFIG + 1] = { - log = true, - id = t[".name"], - remarks = "HAProxy负载均衡节点列表[" .. i .. "]", - currentNode = node_id and uci:get_all(appname, node_id) or nil, - set = function(o, server) - -- 如果当前 lbss 值不是 ip:port 格式,才进行修改 - if not is_ip_port(t[option]) then - uci:set(appname, t[".name"], option, server) - o.newNodeId = server - end - end, - delete = function(o) - -- 如果当前 lbss 值不是 ip:port 格式,才进行删除 - if not is_ip_port(t[option]) then - uci:delete(appname, t[".name"]) - end - end - } - end) - end - - if true then - local i = 0 - local options = {"tcp", "udp"} - uci:foreach(appname, "acl_rule", function(t) - i = i + 1 - for index, value in ipairs(options) do - local option = value .. "_node" - local node_id = t[option] - CONFIG[#CONFIG + 1] = { - log = true, - id = t[".name"], - remarks = "访问控制列表[" .. i .. "]", - currentNode = node_id and uci:get_all(appname, node_id) or nil, - set = function(o, server) - uci:set(appname, t[".name"], option, server) - o.newNodeId = server - end - } - end - end) - end - - uci:foreach(appname, "nodes", function(node) - local node_id = node[".name"] - if node.protocol and node.protocol == '_shunt' then - local rules = {} - uci:foreach(appname, "shunt_rules", function(e) - if e[".name"] and e.remarks then - table.insert(rules, e) - end - end) - table.insert(rules, { - [".name"] = "default_node", - remarks = "默认" - }) - table.insert(rules, { - [".name"] = "main_node", - remarks = "默认前置" - }) - - for k, e in pairs(rules) do - local _node_id = node[e[".name"]] or nil - if _node_id and api.parseURL(_node_id) then - else - CONFIG[#CONFIG + 1] = { - log = false, - currentNode = _node_id and uci:get_all(appname, _node_id) or nil, - remarks = "分流" .. e.remarks .. "节点", - set = function(o, server) - if not server then server = "" end - uci:set(appname, node_id, e[".name"], server) - o.newNodeId = server - end - } - end - end - elseif node.protocol and node.protocol == '_balancing' then - local flag = "Xray负载均衡节点[" .. node_id .. "]列表" - local currentNodes = {} - local newNodes = {} - if node.balancing_node then - for k, node in pairs(node.balancing_node) do - currentNodes[#currentNodes + 1] = { - log = true, - node = node, - currentNode = node and uci:get_all(appname, node) or nil, - remarks = node, - set = function(o, server) - if o and server and server ~= "nil" then - table.insert(o.newNodes, server) - end - end - } - end - end - CONFIG[#CONFIG + 1] = { - remarks = flag, - currentNodes = currentNodes, - newNodes = newNodes, - set = function(o, newNodes) - if o then - if not newNodes then newNodes = o.newNodes end - uci:set_list(appname, node_id, "balancing_node", newNodes or {}) - end - end - } - - --后备节点 - local currentNode = uci:get_all(appname, node_id) or nil - if currentNode and currentNode.fallback_node then - CONFIG[#CONFIG + 1] = { - log = true, - id = node_id, - remarks = "Xray负载均衡节点[" .. node_id .. "]后备节点", - currentNode = uci:get_all(appname, currentNode.fallback_node) or nil, - set = function(o, server) - uci:set(appname, node_id, "fallback_node", server) - o.newNodeId = server - end, - delete = function(o) - uci:delete(appname, node_id, "fallback_node") - end - } - end - elseif node.protocol and node.protocol == '_urltest' then - local flag = "Sing-Box URLTest节点[" .. node_id .. "]列表" - local currentNodes = {} - local newNodes = {} - if node.urltest_node then - for k, node in pairs(node.urltest_node) do - currentNodes[#currentNodes + 1] = { - log = true, - node = node, - currentNode = node and uci:get_all(appname, node) or nil, - remarks = node, - set = function(o, server) - if o and server and server ~= "nil" then - table.insert(o.newNodes, server) - end - end - } - end - end - CONFIG[#CONFIG + 1] = { - remarks = flag, - currentNodes = currentNodes, - newNodes = newNodes, - set = function(o, newNodes) - if o then - if not newNodes then newNodes = o.newNodes end - uci:set_list(appname, node_id, "urltest_node", newNodes or {}) - end - end - } - else - --前置代理节点 - local currentNode = uci:get_all(appname, node_id) or nil - if currentNode and currentNode.preproxy_node then - CONFIG[#CONFIG + 1] = { - log = true, - id = node_id, - remarks = "节点[" .. node_id .. "]前置代理节点", - currentNode = uci:get_all(appname, currentNode.preproxy_node) or nil, - set = function(o, server) - uci:set(appname, node_id, "preproxy_node", server) - o.newNodeId = server - end, - delete = function(o) - uci:delete(appname, node_id, "preproxy_node") - end - } - end - --落地节点 - local currentNode = uci:get_all(appname, node_id) or nil - if currentNode and currentNode.to_node then - CONFIG[#CONFIG + 1] = { - log = true, - id = node_id, - remarks = "节点[" .. node_id .. "]落地节点", - currentNode = uci:get_all(appname, currentNode.to_node) or nil, - set = function(o, server) - uci:set(appname, node_id, "to_node", server) - o.newNodeId = server - end, - delete = function(o) - uci:delete(appname, node_id, "to_node") - end - } - end - end - end) - - for k, v in pairs(CONFIG) do - if v.currentNodes and type(v.currentNodes) == "table" then - for kk, vv in pairs(v.currentNodes) do - if vv.currentNode == nil then - CONFIG[k].currentNodes[kk] = nil - end - end - else - if v.currentNode == nil then - if v.delete then - v.delete() - end - CONFIG[k] = nil - end - end - end -end - -local function UrlEncode(szText) - return szText:gsub("([^%w%-_%.%~])", function(c) - return string.format("%%%02X", string.byte(c)) - end) -end - -local function UrlDecode(szText) - return szText and szText:gsub("+", " "):gsub("%%(%x%x)", function(h) - return string.char(tonumber(h, 16)) - end) or nil -end - --- 取机场信息(剩余流量、到期时间) -local subscribe_info = {} -local function get_subscribe_info(cfgid, value) - if type(cfgid) ~= "string" or cfgid == "" or type(value) ~= "string" then - return - end - value = value:gsub("%s+", "") - local date_patterns = {"套餐到期:(.+)", "过期时间:(.+)", "有效期至:(.+)", "到期时间:(.+)", "截止日期:(.+)"} - local expired_date - for _, p in ipairs(date_patterns) do expired_date = value:match(p) or expired_date end - local rem_patterns = {"剩余流量:(.+)", "流量剩余:(.+)", "可用流量:(.+)", "套餐剩余:(.+)"} - local rem_traffic - for _, p in ipairs(rem_patterns) do rem_traffic = value:match(p) or rem_traffic end - subscribe_info[cfgid] = subscribe_info[cfgid] or {expired_date = "", rem_traffic = ""} - if expired_date then - subscribe_info[cfgid]["expired_date"] = expired_date - end - if rem_traffic then - subscribe_info[cfgid]["rem_traffic"] = rem_traffic - end -end - --- 设置 ss 协议实现类型 -local function set_ss_implementation(result) - if ss_type_default == "shadowsocks-libev" and has_ss then - result.type = "SS" - elseif ss_type_default == "shadowsocks-rust" and has_ss_rust then - result.type = 'SS-Rust' - elseif ss_type_default == "xray" and has_xray then - result.type = 'Xray' - result.protocol = 'shadowsocks' - result.transport = 'raw' - elseif ss_type_default == "sing-box" and has_singbox then - result.type = 'sing-box' - result.protocol = 'shadowsocks' - else - log("跳过 SS 节点,因未适配到 SS 核心程序,或未正确设置节点使用类型。") - return nil - end - return result -end - --- 处理数据 -local function processData(szType, content, add_mode, group) - --log(content, add_mode, group) - local result = { - timeout = 60, - add_mode = add_mode, --0为手动配置,1为导入,2为订阅 - group = group - } - --ssr://base64(host:port:protocol:method:obfs:base64pass/?obfsparam=base64param&protoparam=base64param&remarks=base64remarks&group=base64group&udpport=0&uot=0) - if szType == 'ssr' then - if not has_ssr then - log("跳过 SSR 节点,因未安装 SSR 核心程序 shadowsocksr-libev。") - return nil - end - result.type = "SSR" - - local dat = split(content, "/%?") - local hostInfo = split(dat[1], ':') - if dat[1]:match('%[(.*)%]') then - result.address = dat[1]:match('%[(.*)%]') - else - result.address = hostInfo[#hostInfo-5] - end - result.port = hostInfo[#hostInfo-4] - result.protocol = hostInfo[#hostInfo-3] - result.method = hostInfo[#hostInfo-2] - result.obfs = hostInfo[#hostInfo-1] - result.password = base64Decode(hostInfo[#hostInfo]) - local params = {} - for _, v in pairs(split(dat[2], '&')) do - local t = split(v, '=') - params[t[1]] = t[2] - end - result.obfs_param = base64Decode(params.obfsparam) - result.protocol_param = base64Decode(params.protoparam) - -- local ssr_group = base64Decode(params.group) - -- if ssr_group then result.ssr_group = ssr_group end - result.remarks = base64Decode(params.remarks) - elseif szType == 'vmess' then - local info = jsonParse(content) - if vmess_type_default == "sing-box" and has_singbox then - result.type = 'sing-box' - elseif vmess_type_default == "xray" and has_xray then - result.type = "Xray" - else - log("跳过 VMess 节点,因未适配到 VMess 核心程序,或未正确设置节点使用类型。") - return nil - end - result.alter_id = info.aid - result.address = info.add - result.port = info.port - result.protocol = 'vmess' - result.uuid = info.id - result.remarks = info.ps - -- result.mux = 1 - -- result.mux_concurrency = 8 - - if not info.net then info.net = "tcp" end - info.net = string.lower(info.net) - if result.type == "sing-box" and info.net == "raw" then - info.net = "tcp" - elseif result.type == "Xray" and info.net == "tcp" then - info.net = "raw" - end - if info.net == 'h2' or info.net == 'http' then - info.net = "http" - result.transport = (result.type == "Xray") and "xhttp" or "http" - else - result.transport = info.net - end - if info.net == 'ws' then - result.ws_host = info.host - result.ws_path = info.path - if result.type == "sing-box" and info.path then - local ws_path_dat = split(info.path, "?") - local ws_path = ws_path_dat[1] - local ws_path_params = {} - for _, v in pairs(split(ws_path_dat[2], '&')) do - local t = split(v, '=') - ws_path_params[t[1]] = t[2] - end - if ws_path_params.ed and tonumber(ws_path_params.ed) then - result.ws_path = ws_path - result.ws_enableEarlyData = "1" - result.ws_maxEarlyData = tonumber(ws_path_params.ed) - result.ws_earlyDataHeaderName = "Sec-WebSocket-Protocol" - end - end - end - if info.net == "http" then - if result.type == "Xray" then - result.xhttp_mode = "stream-one" - result.xhttp_host = info.host - result.xhttp_path = info.path - else - result.http_host = (info.host and info.host ~= "") and { info.host } or nil - result.http_path = info.path - end - end - if info.net == 'raw' or info.net == 'tcp' then - if info.type and info.type ~= "http" then - info.type = "none" - end - result.tcp_guise = info.type - result.tcp_guise_http_host = (info.host and info.host ~= "") and { info.host } or nil - result.tcp_guise_http_path = (info.path and info.path ~= "") and { info.path } or nil - end - if info.net == 'kcp' or info.net == 'mkcp' then - info.net = "mkcp" - result.mkcp_guise = info.type - result.mkcp_mtu = 1350 - result.mkcp_tti = 50 - result.mkcp_uplinkCapacity = 5 - result.mkcp_downlinkCapacity = 20 - result.mkcp_readBufferSize = 2 - result.mkcp_writeBufferSize = 2 - result.mkcp_seed = info.seed - end - if info.net == 'quic' then - result.quic_guise = info.type - result.quic_key = info.key - result.quic_security = info.securty - end - if info.net == 'grpc' then - result.grpc_serviceName = info.path - end - if info.net == 'xhttp' then - result.xhttp_host = info.host - result.xhttp_path = info.path - end - if info.net == 'httpupgrade' then - result.httpupgrade_host = info.host - result.httpupgrade_path = info.path - end - if not info.security then result.security = "auto" end - if info.tls == "tls" or info.tls == "1" then - result.tls = "1" - result.tls_serverName = (info.sni and info.sni ~= "") and info.sni or info.host - info.allowinsecure = info.allowinsecure or info.insecure - if info.allowinsecure and (info.allowinsecure == "1" or info.allowinsecure == "0") then - result.tls_allowInsecure = info.allowinsecure - else - result.tls_allowInsecure = allowInsecure_default and "1" or "0" - end - else - result.tls = "0" - end - - if result.type == "sing-box" and (result.transport == "mkcp" or result.transport == "xhttp") then - log("跳过节点:" .. result.remarks ..",因Sing-Box不支持" .. szType .. "协议的" .. result.transport .. "传输方式,需更换Xray。") - return nil - end - elseif szType == "ss" then - result = set_ss_implementation(result) - if not result then return nil end - - --SS-URI = "ss://" userinfo "@" hostname ":" port [ "/" ] [ "?" plugin ] [ "#" tag ] - --userinfo = websafe-base64-encode-utf8(method ":" password) - --ss://YWVzLTEyOC1nY206dGVzdA@192.168.100.1:8888#Example1 - --ss://cmM0LW1kNTpwYXNzd2Q@192.168.100.1:8888/?plugin=obfs-local%3Bobfs%3Dhttp#Example2 - --ss://2022-blake3-aes-256-gcm:YctPZ6U7xPPcU%2Bgp3u%2B0tx%2FtRizJN9K8y%2BuKlW2qjlI%3D@192.168.100.1:8888#Example3 - --ss://2022-blake3-aes-256-gcm:YctPZ6U7xPPcU%2Bgp3u%2B0tx%2FtRizJN9K8y%2BuKlW2qjlI%3D@192.168.100.1:8888/?plugin=v2ray-plugin%3Bserver#Example3 - --ss://Y2hhY2hhMjAtaWV0Zi1wb2x5MTMwNTp0ZXN0@xxxxxx.com:443?type=ws&path=%2Ftestpath&host=xxxxxx.com&security=tls&fp=&alpn=h3%2Ch2%2Chttp%2F1.1&sni=xxxxxx.com#test-1%40ss - --ss://Y2hhY2hhMjAtaWV0Zi1wb2x5MTMwNTp4eHh4eHhAeHh4eC54eHh4eC5jb206NTYwMDE#Hong%20Kong-01 - - local idx_sp = content:find("#") or 0 - local alias = "" - if idx_sp > 0 then - alias = content:sub(idx_sp + 1, -1) - end - result.remarks = UrlDecode(alias) - local info = content:sub(1, idx_sp - 1):gsub("/%?", "?") - local params = {} - if info:find("%?") then - local find_index = info:find("%?") - local query = split(info, "%?") - for _, v in pairs(split(query[2], '&')) do - local t = split(v, '=') - if #t >= 2 then params[t[1]] = UrlDecode(t[2]) end - end - if params.plugin then - local plugin_info = params.plugin - local idx_pn = plugin_info:find(";") - if idx_pn then - result.plugin = plugin_info:sub(1, idx_pn - 1) - result.plugin_opts = plugin_info:sub(idx_pn + 1, #plugin_info) - else - result.plugin = plugin_info - end - end - if result.plugin and result.plugin == "simple-obfs" then - result.plugin = "obfs-local" - end - info = info:sub(1, find_index - 1) - end - - local hostInfo = split(base64Decode(UrlDecode(info)), "@") - if hostInfo and #hostInfo > 0 then - local host_port = hostInfo[#hostInfo] - -- [2001:4860:4860::8888]:443 - -- 8.8.8.8:443 - if host_port:find(":") then - local sp = split(host_port, ":") - result.port = sp[#sp] - if api.is_ipv6addrport(host_port) then - result.address = api.get_ipv6_only(host_port) - else - result.address = sp[1] - end - else - result.address = host_port - end - - local userinfo = nil - if #hostInfo > 2 then - userinfo = {} - for i = 1, #hostInfo - 1 do - tinsert(userinfo, hostInfo[i]) - end - userinfo = table.concat(userinfo, '@') - else - userinfo = base64Decode(hostInfo[1]) - end - local method, password - if userinfo:find(":") then - method = userinfo:sub(1, userinfo:find(":") - 1) - password = userinfo:sub(userinfo:find(":") + 1, #userinfo) - else - password = hostInfo[1] --一些链接用明文uuid做密码 - end - - -- 判断密码是否经过url编码 - local function isURLEncodedPassword(pwd) - if not pwd:find("%%[0-9A-Fa-f][0-9A-Fa-f]") then - return false - end - local ok, decoded = pcall(UrlDecode, pwd) - return ok and UrlEncode(decoded) == pwd - end - - local decoded = UrlDecode(password) - if isURLEncodedPassword(password) and decoded then - password = decoded - end - - local _method = (method or "none"):lower() - method = (_method == "chacha20-poly1305" and "chacha20-ietf-poly1305") or - (_method == "xchacha20-poly1305" and "xchacha20-ietf-poly1305") or _method - - result.method = method - result.password = password - - if has_xray and (result.type ~= 'Xray' and result.type ~= 'sing-box' and params.type) then - result.type = 'Xray' - result.protocol = 'shadowsocks' - elseif has_singbox and (result.type ~= 'Xray' and result.type ~= 'sing-box' and params.type) then - result.type = 'sing-box' - result.protocol = 'shadowsocks' - end - - if result.plugin then - if result.type == 'Xray' then - -- obfs-local插件转换成xray支持的格式 - if result.plugin ~= "obfs-local" then - result.error_msg = "Xray不支持 " .. result.plugin .. " 插件." - else - local obfs = result.plugin_opts:match("obfs=([^;]+)") or "" - local obfs_host = result.plugin_opts:match("obfs%-host=([^;]+)") or "" - if obfs == "" or obfs_host == "" then - result.error_msg = "SS " .. result.plugin .. " 插件选项不完整." - end - if obfs == "http" then - result.transport = "raw" - result.tcp_guise = "http" - result.tcp_guise_http_host = (obfs_host and obfs_host ~= "") and { obfs_host } or nil - result.tcp_guise_http_path = { "/" } - elseif obfs == "tls" then - result.tls = "1" - result.tls_serverName = obfs_host - result.tls_allowInsecure = "1" - end - result.plugin = nil - result.plugin_opts = nil - end - else - result.plugin_enabled = "1" - end - end - - if result.type == "SS" then - local aead2022_methods = { "2022-blake3-aes-128-gcm", "2022-blake3-aes-256-gcm", "2022-blake3-chacha20-poly1305" } - local aead2022 = false - for k, v in ipairs(aead2022_methods) do - if method:lower() == v:lower() then - aead2022 = true - end - end - if aead2022 then - -- shadowsocks-libev 不支持2022加密 - result.error_msg = "shadowsocks-libev 不支持2022加密." - end - end - - if params.type then - params.type = string.lower(params.type) - if result.type == "sing-box" and params.type == "raw" then - params.type = "tcp" - elseif result.type == "Xray" and params.type == "tcp" then - params.type = "raw" - end - if params.type == "h2" or params.type == "http" then - params.type = "http" - result.transport = (result.type == "Xray") and "xhttp" or "http" - else - result.transport = params.type - end - if result.type ~= "SS-Rust" and result.type ~= "SS" then - if params.type == 'ws' then - result.ws_host = params.host - result.ws_path = params.path - if result.type == "sing-box" and params.path then - local ws_path_dat = split(params.path, "%?") - local ws_path = ws_path_dat[1] - local ws_path_params = {} - for _, v in pairs(split(ws_path_dat[2], '&')) do - local t = split(v, '=') - ws_path_params[t[1]] = t[2] - end - if ws_path_params.ed and tonumber(ws_path_params.ed) then - result.ws_path = ws_path - result.ws_enableEarlyData = "1" - result.ws_maxEarlyData = tonumber(ws_path_params.ed) - result.ws_earlyDataHeaderName = "Sec-WebSocket-Protocol" - end - end - end - if params.type == "http" then - if result.type == "sing-box" then - result.transport = "http" - result.http_host = (params.host and params.host ~= "") and { params.host } or nil - result.http_path = params.path - elseif result.type == "Xray" then - result.transport = "xhttp" - result.xhttp_mode = "stream-one" - result.xhttp_host = params.host - result.xhttp_path = params.path - end - end - if params.type == 'raw' or params.type == 'tcp' then - result.tcp_guise = params.headerType or "none" - result.tcp_guise_http_host = (params.host and params.host ~= "") and { params.host } or nil - result.tcp_guise_http_path = (params.path and params.path ~= "") and { params.path } or nil - end - if params.type == 'kcp' or params.type == 'mkcp' then - result.transport = "mkcp" - result.mkcp_guise = params.headerType or "none" - result.mkcp_mtu = 1350 - result.mkcp_tti = 50 - result.mkcp_uplinkCapacity = 5 - result.mkcp_downlinkCapacity = 20 - result.mkcp_readBufferSize = 2 - result.mkcp_writeBufferSize = 2 - result.mkcp_seed = params.seed - end - if params.type == 'quic' then - result.quic_guise = params.headerType or "none" - result.quic_key = params.key - result.quic_security = params.quicSecurity or "none" - end - if params.type == 'grpc' then - if params.path then result.grpc_serviceName = params.path end - if params.serviceName then result.grpc_serviceName = params.serviceName end - result.grpc_mode = params.mode or "gun" - end - if params.type == 'xhttp' then - if result.type ~= "Xray" then - result.error_msg = "请更换 Xray 以支持 xhttp 传输方式." - end - result.xhttp_host = params.host - result.xhttp_path = params.path - result.xhttp_mode = params.mode or "auto" - result.use_xhttp_extra = (params.extra and params.extra ~= "") and "1" or nil - result.xhttp_extra = (params.extra and params.extra ~= "") and api.base64Encode(params.extra) or nil - local success, Data = pcall(jsonParse, params.extra) - if success and Data then - local address = (Data.extra and Data.extra.downloadSettings and Data.extra.downloadSettings.address) - or (Data.downloadSettings and Data.downloadSettings.address) - result.download_address = (address and address ~= "") and address:gsub("^%[", ""):gsub("%]$", "") or nil - end - end - result.tls = "0" - if params.security == "tls" or params.security == "reality" then - result.tls = "1" - result.tls_serverName = (params.sni and params.sni ~= "") and params.sni or params.host - result.alpn = params.alpn - if params.fp and params.fp ~= "" then - result.utls = "1" - result.fingerprint = params.fp - end - if params.ech and params.ech ~= "" then - result.ech = "1" - result.ech_config = params.ech - end - if params.security == "reality" then - result.reality = "1" - result.reality_publicKey = params.pbk or nil - result.reality_shortId = params.sid or nil - result.reality_spiderX = params.spx or nil - result.use_mldsa65Verify = (params.pqv and params.pqv ~= "") and "1" or nil - result.reality_mldsa65Verify = params.pqv or nil - end - end - params.allowinsecure = params.allowinsecure or params.insecure - if params.allowinsecure and (params.allowinsecure == "1" or params.allowinsecure == "0") then - result.tls_allowInsecure = params.allowinsecure - else - result.tls_allowInsecure = allowInsecure_default and "1" or "0" - end - else - result.error_msg = "请更换Xray或Sing-Box来支持SS更多的传输方式." - end - end - - if params["shadow-tls"] then - if result.type ~= "sing-box" and result.type ~= "SS-Rust" then - result.error_msg = ss_type_default .. " 不支持 shadow-tls 插件." - else - -- 解析SS Shadow-TLS 插件参数 - local function parseShadowTLSParams(b64str, out) - local ok, data = pcall(jsonParse, base64Decode(b64str)) - if not ok or type(data) ~= "table" then return "" end - if type(out) == "table" then - for k, v in pairs(data) do out[k] = v end - end - local t = {} - if data.version then t[#t+1] = "v" .. data.version .. "=1" end - if data.password then t[#t+1] = "passwd=" .. data.password end - for k, v in pairs(data) do - if k ~= "version" and k ~= "password" then - t[#t+1] = k .. "=" .. tostring(v) - end - end - return table.concat(t, ";") - end - - if result.type == "SS-Rust" then - result.plugin_enabled = "1" - result.plugin = "shadow-tls" - result.plugin_opts = parseShadowTLSParams(params["shadow-tls"]) - elseif result.type == "sing-box" then - local shadowtlsOpt = {} - parseShadowTLSParams(params["shadow-tls"], shadowtlsOpt) - if next(shadowtlsOpt) then - result.shadowtls = "1" - result.shadowtls_version = shadowtlsOpt.version or "1" - result.shadowtls_password = shadowtlsOpt.password - result.shadowtls_serverName = shadowtlsOpt.host - if shadowtlsOpt.fingerprint then - result.shadowtls_utls = "1" - result.shadowtls_fingerprint = shadowtlsOpt.fingerprint or "chrome" - end - end - end - end - end - end - elseif szType == "trojan" then - if trojan_type_default == "trojan-plus" and has_trojan_plus then - result.type = "Trojan-Plus" - elseif trojan_type_default == "sing-box" and has_singbox then - result.type = 'sing-box' - result.protocol = 'trojan' - elseif trojan_type_default == "xray" and has_xray then - result.type = 'Xray' - result.protocol = 'trojan' - else - log("跳过 Trojan 节点,因未适配到 Trojan 核心程序,或未正确设置节点使用类型。") - return nil - end - - local alias = "" - if content:find("#") then - local idx_sp = content:find("#") - alias = content:sub(idx_sp + 1, -1) - content = content:sub(0, idx_sp - 1) - end - result.remarks = UrlDecode(alias) - if content:find("@") then - local Info = split(content, "@") - result.password = UrlDecode(Info[1]) - local port = "443" - Info[2] = (Info[2] or ""):gsub("/%?", "?") - local query = split(Info[2], "%?") - local host_port = query[1] - local params = {} - for _, v in pairs(split(query[2], '&')) do - local t = split(v, '=') - if #t > 1 then - params[string.lower(t[1])] = UrlDecode(t[2]) - end - end - -- [2001:4860:4860::8888]:443 - -- 8.8.8.8:443 - if host_port:find(":") then - local sp = split(host_port, ":") - port = sp[#sp] - if api.is_ipv6addrport(host_port) then - result.address = api.get_ipv6_only(host_port) - else - result.address = sp[1] - end - else - result.address = host_port - end - - local peer, sni = nil, "" - if params.peer then peer = params.peer end - sni = params.sni and params.sni or "" - result.port = port - - result.tls = '1' - result.tls_serverName = peer and peer or sni - - params.allowinsecure = params.allowinsecure or params.insecure - if params.allowinsecure then - if params.allowinsecure == "1" or params.allowinsecure == "0" then - result.tls_allowInsecure = params.allowinsecure - else - result.tls_allowInsecure = string.lower(params.allowinsecure) == "true" and "1" or "0" - end - --log(result.remarks .. ' 使用节点AllowInsecure设定: '.. result.tls_allowInsecure) - else - result.tls_allowInsecure = allowInsecure_default and "1" or "0" - end - - if not params.type then params.type = "tcp" end - params.type = string.lower(params.type) - if result.type == "sing-box" and params.type == "raw" then - params.type = "tcp" - elseif result.type == "Xray" and params.type == "tcp" then - params.type = "raw" - end - if params.type == "h2" or params.type == "http" then - params.type = "http" - result.transport = (result.type == "Xray") and "xhttp" or "http" - else - result.transport = params.type - end - if params.type == 'ws' then - result.ws_host = params.host - result.ws_path = params.path - if result.type == "sing-box" and params.path then - local ws_path_dat = split(params.path, "%?") - local ws_path = ws_path_dat[1] - local ws_path_params = {} - for _, v in pairs(split(ws_path_dat[2], '&')) do - local t = split(v, '=') - ws_path_params[t[1]] = t[2] - end - if ws_path_params.ed and tonumber(ws_path_params.ed) then - result.ws_path = ws_path - result.ws_enableEarlyData = "1" - result.ws_maxEarlyData = tonumber(ws_path_params.ed) - result.ws_earlyDataHeaderName = "Sec-WebSocket-Protocol" - end - end - end - if params.type == "http" then - if result.type == "sing-box" then - result.transport = "http" - result.http_host = (params.host and params.host ~= "") and { params.host } or nil - result.http_path = params.path - elseif result.type == "Xray" then - result.transport = "xhttp" - result.xhttp_mode = "stream-one" - result.xhttp_host = params.host - result.xhttp_path = params.path - end - end - if params.type == 'raw' or params.type == 'tcp' then - result.tcp_guise = params.headerType or "none" - result.tcp_guise_http_host = (params.host and params.host ~= "") and { params.host } or nil - result.tcp_guise_http_path = (params.path and params.path ~= "") and { params.path } or nil - end - if params.type == 'kcp' or params.type == 'mkcp' then - result.transport = "mkcp" - result.mkcp_guise = params.headerType or "none" - result.mkcp_mtu = 1350 - result.mkcp_tti = 50 - result.mkcp_uplinkCapacity = 5 - result.mkcp_downlinkCapacity = 20 - result.mkcp_readBufferSize = 2 - result.mkcp_writeBufferSize = 2 - result.mkcp_seed = params.seed - end - if params.type == 'quic' then - result.quic_guise = params.headerType or "none" - result.quic_key = params.key - result.quic_security = params.quicSecurity or "none" - end - if params.type == 'grpc' then - if params.path then result.grpc_serviceName = params.path end - if params.serviceName then result.grpc_serviceName = params.serviceName end - result.grpc_mode = params.mode or "gun" - end - if params.type == 'xhttp' then - result.xhttp_host = params.host - result.xhttp_path = params.path - end - if params.type == 'httpupgrade' then - result.httpupgrade_host = params.host - result.httpupgrade_path = params.path - end - - result.alpn = params.alpn - - if result.type == "sing-box" and (result.transport == "mkcp" or result.transport == "xhttp") then - log("跳过节点:" .. result.remarks ..",因Sing-Box不支持" .. szType .. "协议的" .. result.transport .. "传输方式,需更换Xray。") - return nil - end - end - - elseif szType == "ssd" then - result = set_ss_implementation(result) - if not result then return nil end - result.address = content.server - result.port = content.port - result.password = content.password - result.method = content.encryption - result.plugin = content.plugin - result.plugin_opts = content.plugin_options - result.group = content.airport - result.remarks = content.remarks - elseif szType == "vless" then - if vless_type_default == "sing-box" and has_singbox then - result.type = 'sing-box' - elseif vless_type_default == "xray" and has_xray then - result.type = "Xray" - else - log("跳过 VLESS 节点,因未适配到 VLESS 核心程序,或未正确设置节点使用类型。") - return nil - end - result.protocol = "vless" - local alias = "" - if content:find("#") then - local idx_sp = content:find("#") - alias = content:sub(idx_sp + 1, -1) - content = content:sub(0, idx_sp - 1) - end - result.remarks = UrlDecode(alias) - if content:find("@") then - local Info = split(content, "@") - result.uuid = UrlDecode(Info[1]) - local port = "443" - Info[2] = (Info[2] or ""):gsub("/%?", "?") - local query = split(Info[2], "%?") - local host_port = query[1] - local params = {} - for _, v in pairs(split(query[2], '&')) do - local t = split(v, '=') - params[t[1]] = UrlDecode(t[2]) - end - -- [2001:4860:4860::8888]:443 - -- 8.8.8.8:443 - if host_port:find(":") then - local sp = split(host_port, ":") - port = sp[#sp] - if api.is_ipv6addrport(host_port) then - result.address = api.get_ipv6_only(host_port) - else - result.address = sp[1] - end - else - result.address = host_port - end - - if not params.type then params.type = "tcp" end - params.type = string.lower(params.type) - if ({ xhttp=true, kcp=true, mkcp=true })[params.type] and result.type ~= "Xray" and has_xray then - result.type = "Xray" - end - if result.type == "sing-box" and params.type == "raw" then - params.type = "tcp" - elseif result.type == "Xray" and params.type == "tcp" then - params.type = "raw" - end - if params.type == "h2" or params.type == "http" then - params.type = "http" - result.transport = (result.type == "Xray") and "xhttp" or "http" - else - result.transport = params.type - end - if params.type == 'ws' then - result.ws_host = params.host - result.ws_path = params.path - if result.type == "sing-box" and params.path then - local ws_path_dat = split(params.path, "%?") - local ws_path = ws_path_dat[1] - local ws_path_params = {} - for _, v in pairs(split(ws_path_dat[2], '&')) do - local t = split(v, '=') - ws_path_params[t[1]] = t[2] - end - if ws_path_params.ed and tonumber(ws_path_params.ed) then - result.ws_path = ws_path - result.ws_enableEarlyData = "1" - result.ws_maxEarlyData = tonumber(ws_path_params.ed) - result.ws_earlyDataHeaderName = "Sec-WebSocket-Protocol" - end - end - end - if params.type == "http" then - if result.type == "sing-box" then - result.transport = "http" - result.http_host = (params.host and params.host ~= "") and { params.host } or nil - result.http_path = params.path - elseif result.type == "Xray" then - result.transport = "xhttp" - result.xhttp_mode = "stream-one" - result.xhttp_host = params.host - result.xhttp_path = params.path - end - end - if params.type == 'raw' or params.type == 'tcp' then - result.tcp_guise = params.headerType or "none" - result.tcp_guise_http_host = (params.host and params.host ~= "") and { params.host } or nil - result.tcp_guise_http_path = (params.path and params.path ~= "") and { params.path } or nil - end - if params.type == 'kcp' or params.type == 'mkcp' then - result.transport = "mkcp" - result.mkcp_guise = params.headerType or "none" - result.mkcp_mtu = 1350 - result.mkcp_tti = 50 - result.mkcp_uplinkCapacity = 5 - result.mkcp_downlinkCapacity = 20 - result.mkcp_readBufferSize = 2 - result.mkcp_writeBufferSize = 2 - result.mkcp_seed = params.seed - end - if params.type == 'quic' then - result.quic_guise = params.headerType or "none" - result.quic_key = params.key - result.quic_security = params.quicSecurity or "none" - end - if params.type == 'grpc' then - if params.path then result.grpc_serviceName = params.path end - if params.serviceName then result.grpc_serviceName = params.serviceName end - result.grpc_mode = params.mode or "gun" - end - if params.type == 'xhttp' then - result.xhttp_host = params.host - result.xhttp_path = params.path - result.xhttp_mode = params.mode or "auto" - result.use_xhttp_extra = (params.extra and params.extra ~= "") and "1" or nil - result.xhttp_extra = (params.extra and params.extra ~= "") and api.base64Encode(params.extra) or nil - local success, Data = pcall(jsonParse, params.extra) - if success and Data then - local address = (Data.extra and Data.extra.downloadSettings and Data.extra.downloadSettings.address) - or (Data.downloadSettings and Data.downloadSettings.address) - result.download_address = (address and address ~= "") and address:gsub("^%[", ""):gsub("%]$", "") or nil - end - end - if params.type == 'httpupgrade' then - result.httpupgrade_host = params.host - result.httpupgrade_path = params.path - end - - result.encryption = params.encryption or "none" - - result.flow = params.flow and params.flow:gsub("-udp443", "") or nil - - result.tls = "0" - if params.security == "tls" or params.security == "reality" then - result.tls = "1" - result.tls_serverName = (params.sni and params.sni ~= "") and params.sni or params.host - result.alpn = params.alpn - if params.fp and params.fp ~= "" then - result.utls = "1" - result.fingerprint = params.fp - end - if params.ech and params.ech ~= "" then - result.ech = "1" - result.ech_config = params.ech - end - if params.security == "reality" then - result.reality = "1" - result.reality_publicKey = params.pbk or nil - result.reality_shortId = params.sid or nil - result.reality_spiderX = params.spx or nil - result.use_mldsa65Verify = (params.pqv and params.pqv ~= "") and "1" or nil - result.reality_mldsa65Verify = params.pqv or nil - end - end - - result.port = port - - params.allowinsecure = params.allowinsecure or params.insecure - if params.allowinsecure and (params.allowinsecure == "1" or params.allowinsecure == "0") then - result.tls_allowInsecure = params.allowinsecure - else - result.tls_allowInsecure = allowInsecure_default and "1" or "0" - end - - if result.type == "sing-box" and (result.transport == "mkcp" or result.transport == "xhttp") then - log("跳过节点:" .. result.remarks ..",因Sing-Box不支持" .. szType .. "协议的" .. result.transport .. "传输方式,需更换Xray。") - return nil - end - end - elseif szType == 'hysteria' then - if has_singbox then - result.type = 'sing-box' - result.protocol = "hysteria" - else - log("跳过 Hysteria 节点,因未安装 Hysteria 核心程序 Sing-box。") - return nil - end - - local alias = "" - if content:find("#") then - local idx_sp = content:find("#") - alias = content:sub(idx_sp + 1, -1) - content = content:sub(0, idx_sp - 1) - end - result.remarks = UrlDecode(alias) - - local dat = split(content:gsub("/%?", "?"), '%?') - local host_port = dat[1] - local params = {} - for _, v in pairs(split(dat[2], '&')) do - local t = split(v, '=') - if #t > 0 then - params[t[1]] = t[2] - end - end - -- [2001:4860:4860::8888]:443 - -- 8.8.8.8:443 - if host_port:find(":") then - local sp = split(host_port, ":") - result.port = sp[#sp] - if api.is_ipv6addrport(host_port) then - result.address = api.get_ipv6_only(host_port) - else - result.address = sp[1] - end - else - result.address = host_port - end - result.hysteria_obfs = params.obfsParam - result.hysteria_auth_type = "string" - result.hysteria_auth_password = params.auth - result.tls_serverName = params.peer - params.allowinsecure = params.allowinsecure or params.insecure - if params.allowinsecure and (params.allowinsecure == "1" or params.allowinsecure == "0") then - result.tls_allowInsecure = params.allowinsecure - --log(result.remarks ..' 使用节点AllowInsecure设定: '.. result.tls_allowInsecure) - else - result.tls_allowInsecure = allowInsecure_default and "1" or "0" - end - result.hysteria_alpn = params.alpn - result.hysteria_up_mbps = params.upmbps - result.hysteria_down_mbps = params.downmbps - result.hysteria_hop = params.mport - - elseif szType == 'hysteria2' or szType == 'hy2' then - local alias = "" - if content:find("#") then - local idx_sp = content:find("#") - alias = content:sub(idx_sp + 1, -1) - content = content:sub(0, idx_sp - 1) - end - result.remarks = UrlDecode(alias) - local Info = content - if content:find("@") then - local contents = split(content, "@") - result.hysteria2_auth_password = UrlDecode(contents[1]) - Info = (contents[2] or ""):gsub("/%?", "?") - end - local query = split(Info, "%?") - local host_port = query[1] - local params = {} - for _, v in pairs(split(query[2], '&')) do - local t = split(v, '=') - if #t > 1 then - params[string.lower(t[1])] = UrlDecode(t[2]) - end - end - -- [2001:4860:4860::8888]:443 - -- 8.8.8.8:443 - if host_port:find(":") then - local sp = split(host_port, ":") - result.port = sp[#sp] - if api.is_ipv6addrport(host_port) then - result.address = api.get_ipv6_only(host_port) - else - result.address = sp[1] - end - else - result.address = host_port - end - result.tls_serverName = params.sni - params.allowinsecure = params.allowinsecure or params.insecure - if params.allowinsecure and (params.allowinsecure == "1" or params.allowinsecure == "0") then - result.tls_allowInsecure = params.allowinsecure - --log(result.remarks ..' 使用节点AllowInsecure设定: '.. result.tls_allowInsecure) - else - result.tls_allowInsecure = allowInsecure_default and "1" or "0" - end - result.hysteria2_tls_pinSHA256 = params.pinSHA256 - result.hysteria2_hop = params.mport - - if (hysteria2_type_default == "sing-box" and has_singbox) or (hysteria2_type_default == "xray" and has_xray) then - local is_singbox = hysteria2_type_default == "sing-box" and has_singbox - result.type = is_singbox and 'sing-box' or 'Xray' - result.protocol = "hysteria2" - if params["obfs-password"] or params["obfs_password"] then - result.hysteria2_obfs_type = "salamander" - result.hysteria2_obfs_password = params["obfs-password"] or params["obfs_password"] - end - elseif has_hysteria2 then - result.type = "Hysteria2" - if params["obfs-password"] or params["obfs_password"] then - result.hysteria2_obfs = params["obfs-password"] or params["obfs_password"] - end - else - log("跳过 Hysteria2 节点,因未适配到 Hysteria2 核心程序,或未正确设置节点使用类型。") - return nil - end - elseif szType == 'tuic' then - if has_singbox then - result.type = 'sing-box' - result.protocol = "tuic" - else - log("跳过 Tuic 节点,因未安装 Tuic 核心程序 Sing-box。") - return nil - end - - local alias = "" - if content:find("#") then - local idx_sp = content:find("#") - alias = content:sub(idx_sp + 1, -1) - content = content:sub(0, idx_sp - 1) - end - result.remarks = UrlDecode(alias) - local Info = content - if content:find("@") then - local contents = split(content, "@") - if contents[1]:find(":") then - local userinfo = split(contents[1], ":") - result.uuid = UrlDecode(userinfo[1]) - result.password = UrlDecode(userinfo[2]) - end - Info = (contents[2] or ""):gsub("/%?", "?") - end - local query = split(Info, "%?") - local host_port = query[1] - local params = {} - for _, v in pairs(split(query[2], '&')) do - local t = split(v, '=') - if #t > 1 then - params[string.lower(t[1])] = UrlDecode(t[2]) - end - end - if host_port:find(":") then - local sp = split(host_port, ":") - result.port = sp[#sp] - if api.is_ipv6addrport(host_port) then - result.address = api.get_ipv6_only(host_port) - else - result.address = sp[1] - end - else - result.address = host_port - end - result.tls_serverName = params.sni - result.tuic_alpn = params.alpn or "default" - result.tuic_congestion_control = params.congestion_control or "cubic" - result.tuic_udp_relay_mode = params.udp_relay_mode or "native" - params.allowinsecure = params.allowinsecure or params.insecure - if params.allowinsecure then - if params.allowinsecure == "1" or params.allowinsecure == "0" then - result.tls_allowInsecure = params.allowinsecure - else - result.tls_allowInsecure = string.lower(params.allowinsecure) == "true" and "1" or "0" - end - --log(result.remarks .. ' 使用节点AllowInsecure设定: '.. result.tls_allowInsecure) - else - result.tls_allowInsecure = allowInsecure_default and "1" or "0" - end - elseif szType == "anytls" then - if has_singbox then - result.type = 'sing-box' - result.protocol = "anytls" - else - log("跳过 AnyTLS 节点,因未安装 AnyTLS 核心程序 Sing-box 1.12。") - return nil - end - - local alias = "" - if content:find("#") then - local idx_sp = content:find("#") - alias = content:sub(idx_sp + 1, -1) - content = content:sub(0, idx_sp - 1) - end - result.remarks = UrlDecode(alias) - if content:find("@") then - local Info = split(content, "@") - result.password = UrlDecode(Info[1]) - local port = "443" - Info[2] = (Info[2] or ""):gsub("/%?", "?") - local query = split(Info[2], "%?") - local host_port = query[1] - local params = {} - for _, v in pairs(split(query[2], '&')) do - local t = split(v, '=') - params[t[1]] = UrlDecode(t[2]) - end - -- [2001:4860:4860::8888]:443 - -- 8.8.8.8:443 - if host_port:find(":") then - local sp = split(host_port, ":") - port = sp[#sp] - if api.is_ipv6addrport(host_port) then - result.address = api.get_ipv6_only(host_port) - else - result.address = sp[1] - end - else - result.address = host_port - end - result.tls = "0" - if (not params.security or params.security == "") and params.sni and params.sni ~= "" then - params.security = "tls" - end - if params.security == "tls" or params.security == "reality" then - result.tls = "1" - result.tls_serverName = params.sni - result.alpn = params.alpn - if params.fp and params.fp ~= "" then - result.utls = "1" - result.fingerprint = params.fp - end - if params.security == "reality" then - result.reality = "1" - result.reality_publicKey = params.pbk or nil - result.reality_shortId = params.sid or nil - end - end - result.port = port - params.allowinsecure = params.allowinsecure or params.insecure - if params.allowinsecure and (params.allowinsecure == "1" or params.allowinsecure == "0") then - result.tls_allowInsecure = params.allowinsecure - else - result.tls_allowInsecure = allowInsecure_default and "1" or "0" - end - local singbox_version = api.get_app_version("sing-box") - local version_ge_1_12 = api.compare_versions(singbox_version:match("[^v]+"), ">=", "1.12.0") - if not has_singbox or not version_ge_1_12 then - log("跳过节点:" .. result.remarks ..",因" .. szType .. "类型的节点需要 Sing-Box 1.12 以上版本支持。") - return nil - end - end - else - log('暂时不支持' .. szType .. "类型的节点订阅,跳过此节点。") - return nil - end - if not result.remarks or result.remarks == "" then - if result.address and result.port then - result.remarks = result.address .. ':' .. result.port - else - result.remarks = "NULL" - end - end - return result -end - -local function curl(url, file, ua, mode) - if not url or url == "" then return 404 end - local curl_args = { - "-skL", "-w %{http_code}", "--retry 3", "--connect-timeout 3" - } - if ua and ua ~= "" and ua ~= "curl" then - ua = (ua == "passwall") and ("passwall/" .. api.get_version()) or ua - curl_args[#curl_args + 1] = '--user-agent "' .. ua .. '"' - end - curl_args[#curl_args + 1] = get_headers() - local return_code, result - if mode == "direct" then - return_code, result = api.curl_direct(url, file, curl_args) - elseif mode == "proxy" then - return_code, result = api.curl_proxy(url, file, curl_args) - else - return_code, result = api.curl_auto(url, file, curl_args) - end - return tonumber(result) -end - -function get_headers() - local cache_file = "/tmp/etc/" .. appname .. "_tmp/sub_curl_headers" - if fs.access(cache_file) then - return luci.sys.exec("cat " .. cache_file) - end - local headers = {} - - local function readfile(path) - local f = io.open(path, "r") - if not f then return nil end - local c = f:read("*a") - f:close() - return api.trim(c) - end - - headers[#headers + 1] = "x-device-os: OpenWrt" - - local rel = readfile("/etc/openwrt_release") - local os_ver = rel and rel:match("DISTRIB_RELEASE='([^']+)'") - if os_ver then - headers[#headers + 1] = "x-ver-os: " .. os_ver - end - - local model = readfile("/tmp/sysinfo/model") - if model then - headers[#headers + 1] = "x-device-model: " .. model - end - - local mac = readfile("/sys/class/net/eth0/address") - if mac and model then - local raw = mac .. "-" .. model - local p = io.popen("printf '%s' '" .. raw:gsub("'", "'\\''") .. "' | sha256sum") - if p then - local hash = p:read("*l") - p:close() - hash = hash and hash:match("^%w+") - if hash then - headers[#headers + 1] = "x-hwid: " .. hash - end - end - end - - local out = {} - for i = 1, #headers do - out[i] = "-H '" .. headers[i]:gsub("'", "'\\''") .. "'" - end - local headers_str = table.concat(out, " ") - local f = io.open(cache_file, "w"); if f then f:write(headers_str); f:close() end - return headers_str -end - -local function truncate_nodes(group) - for _, config in pairs(CONFIG) do - if config.currentNodes and #config.currentNodes > 0 then - local newNodes = {} - local removeNodesSet = {} - for k, v in pairs(config.currentNodes) do - if v.currentNode and v.currentNode.add_mode == "2" then - if (not group) or (group:lower() == (v.currentNode.group or ""):lower()) then - removeNodesSet[v.currentNode[".name"]] = true - end - end - end - for _, value in ipairs(config.currentNodes) do - if not removeNodesSet[value.currentNode[".name"]] then - newNodes[#newNodes + 1] = value.currentNode[".name"] - end - end - if config.set then - config.set(config, newNodes) - end - else - if config.currentNode and config.currentNode.add_mode == "2" then - if (not group) or (group:lower() == (config.currentNode.group or ""):lower()) then - if config.delete then - config.delete(config) - elseif config.set then - config.set(config, "") - end - end - end - end - end - uci:foreach(appname, "nodes", function(node) - if node.add_mode == "2" then - if (not group) or (group:lower() == (node.group or ""):lower()) then - uci:delete(appname, node['.name']) - end - end - end) - uci:foreach(appname, "subscribe_list", function(o) - if (not group) or (group:lower() == (o.remark or ""):lower()) then - uci:delete(appname, o['.name'], "md5") - end - end) - api.uci_save(uci, appname, true) -end - -local function select_node(nodes, config, parentConfig) - if config.currentNode then - local server - -- 特别优先级 cfgid - if config.currentNode[".name"] then - for index, node in pairs(nodes) do - if node[".name"] == config.currentNode[".name"] then - if config.log == nil or config.log == true then - log('更新【' .. config.remarks .. '】匹配节点:' .. node.remarks) - end - server = node[".name"] - break - end - end - end - -- 第一优先级 类型 + 备注 + IP + 端口 - if not server then - for index, node in pairs(nodes) do - if config.currentNode.type and config.currentNode.remarks and config.currentNode.address and config.currentNode.port then - if node.type and node.remarks and node.address and node.port then - if node.type == config.currentNode.type and node.remarks == config.currentNode.remarks and (node.address .. ':' .. node.port == config.currentNode.address .. ':' .. config.currentNode.port) then - if config.log == nil or config.log == true then - log('更新【' .. config.remarks .. '】第一匹配节点:' .. node.remarks) - end - server = node[".name"] - break - end - end - end - end - end - -- 第二优先级 类型 + IP + 端口 - if not server then - for index, node in pairs(nodes) do - if config.currentNode.type and config.currentNode.address and config.currentNode.port then - if node.type and node.address and node.port then - if node.type == config.currentNode.type and (node.address .. ':' .. node.port == config.currentNode.address .. ':' .. config.currentNode.port) then - if config.log == nil or config.log == true then - log('更新【' .. config.remarks .. '】第二匹配节点:' .. node.remarks) - end - server = node[".name"] - break - end - end - end - end - end - -- 第三优先级 IP + 端口 - if not server then - for index, node in pairs(nodes) do - if config.currentNode.address and config.currentNode.port then - if node.address and node.port then - if node.address .. ':' .. node.port == config.currentNode.address .. ':' .. config.currentNode.port then - if config.log == nil or config.log == true then - log('更新【' .. config.remarks .. '】第三匹配节点:' .. node.remarks) - end - server = node[".name"] - break - end - end - end - end - end - -- 第四优先级 IP - if not server then - for index, node in pairs(nodes) do - if config.currentNode.address then - if node.address then - if node.address == config.currentNode.address then - if config.log == nil or config.log == true then - log('更新【' .. config.remarks .. '】第四匹配节点:' .. node.remarks) - end - server = node[".name"] - break - end - end - end - end - end - -- 第五优先级备注 - if not server then - for index, node in pairs(nodes) do - if config.currentNode.remarks then - if node.remarks then - if node.remarks == config.currentNode.remarks then - if config.log == nil or config.log == true then - log('更新【' .. config.remarks .. '】第五匹配节点:' .. node.remarks) - end - server = node[".name"] - break - end - end - end - end - end - if not parentConfig then - -- 还不行 随便找一个 - if not server then - if #nodes_table > 0 then - if config.log == nil or config.log == true then - log('【' .. config.remarks .. '】' .. '无法找到最匹配的节点,当前已更换为:' .. nodes_table[1].remarks) - end - server = nodes_table[1][".name"] - end - end - end - if server then - if parentConfig then - config.set(parentConfig, server) - else - config.set(config, server) - end - end - else - if not parentConfig then - config.set(config, "") - end - end -end - -local function update_node(manual) - if next(nodeResult) == nil then - log("没有可用的节点信息更新。") - return - end - - local group = {} - for _, v in ipairs(nodeResult) do - group[v["remark"]:lower()] = true - end - - if manual == 0 and next(group) then - uci:foreach(appname, "nodes", function(node) - -- 如果未发现新节点或手动导入的节点就不要删除了... - if node.add_mode == "2" and (node.group and group[node.group:lower()] == true) then - uci:delete(appname, node['.name']) - end - end) - end - for _, v in ipairs(nodeResult) do - local remark = v["remark"] - local list = v["list"] - for _, vv in ipairs(list) do - local cfgid = uci:section(appname, "nodes", api.gen_short_uuid()) - for kkk, vvv in pairs(vv) do - if type(vvv) == "table" and next(vvv) ~= nil then - uci:set_list(appname, cfgid, kkk, vvv) - else - if kkk ~= "group" or vvv ~= "default" then - uci:set(appname, cfgid, kkk, vvv) - end - -- sing-box 域名解析策略 - if kkk == "type" and vvv == "sing-box" then - uci:set(appname, cfgid, "domain_strategy", domain_strategy_node) - end - -- 订阅组链式代理 - if chain_node_type ~= "" and kkk == "type" and vvv == chain_node_type then - if preproxy_node_group ~="" then - uci:set(appname, cfgid, "chain_proxy", "1") - uci:set(appname, cfgid, "preproxy_node", preproxy_node_group) - elseif to_node_group ~= "" then - uci:set(appname, cfgid, "chain_proxy", "2") - uci:set(appname, cfgid, "to_node", to_node_group) - end - end - end - end - end - end - -- 更新机场信息 - for cfgid, info in pairs(subscribe_info) do - for key, value in pairs(info) do - if value ~= "" then - uci:set(appname, cfgid, key, value) - else - uci:delete(appname, cfgid, key) - end - end - end - api.uci_save(uci, appname, true) - - if next(CONFIG) then - local nodes = {} - uci:foreach(appname, "nodes", function(node) - nodes[#nodes + 1] = node - end) - - for _, config in pairs(CONFIG) do - if config.currentNodes and #config.currentNodes > 0 then - if config.remarks and config.currentNodes[1].log ~= false then - log('----【' .. config.remarks .. '】----') - end - for kk, vv in pairs(config.currentNodes) do - select_node(nodes, vv, config) - end - config.set(config) - else - select_node(nodes, config) - end - end - - api.uci_save(uci, appname, true) - end - - if arg[3] == "cron" then - if not fs.access("/var/lock/" .. appname .. ".lock") then - luci.sys.call("touch /tmp/lock/" .. appname .. "_cron.lock") - end - end - - if manual ~= 1 then - luci.sys.call("/etc/init.d/" .. appname .. " restart > /dev/null 2>&1 &") - end -end - -local function parse_link(raw, add_mode, group, cfgid) - if raw and #raw > 0 then - local nodes, szType - local node_list = {} - -- SSD 似乎是这种格式 ssd:// 开头的 - if raw:find('ssd://') then - szType = 'ssd' - local nEnd = select(2, raw:find('ssd://')) - nodes = base64Decode(raw:sub(nEnd + 1, #raw)) - nodes = jsonParse(nodes) - local extra = { - airport = nodes.airport, - port = nodes.port, - encryption = nodes.encryption, - password = nodes.password - } - local servers = {} - -- SS里面包着 干脆直接这样 - for _, server in ipairs(nodes.servers) do - tinsert(servers, setmetatable(server, { __index = extra })) - end - nodes = servers - else - -- ssd 外的格式 - if add_mode == "1" then - nodes = split(raw, "\n") - else - nodes = split(base64Decode(raw):gsub("\r\n", "\n"), "\n") - end - end - - for _, v in ipairs(nodes) do - if v and (szType == 'ssd' or not string.match(v, "^%s*$")) then - xpcall(function () - local result - if szType == 'ssd' then - result = processData(szType, v, add_mode, group) - elseif not szType then - local node = api.trim(v) - local dat = split(node, "://") - if dat and dat[1] and dat[2] then - if dat[1] == 'vmess' or dat[1] == 'ssr' then - local link = api.trim(dat[2]:gsub("#.*$", "")) - result = processData(dat[1], base64Decode(link), add_mode, group) - else - local link = dat[2]:gsub("&", "&"):gsub("%s*#%s*", "#") -- 一些奇葩的链接用"&"当做"&","#"前后带空格 - result = processData(dat[1], link, add_mode, group) - end - end - else - log('跳过未知类型: ' .. szType) - end - -- log(result) - if result then - if result.error_msg then - log('丢弃节点: ' .. result.remarks .. ", 原因:" .. result.error_msg) - elseif not result.type then - log('丢弃节点: ' .. result.remarks .. ", 找不到可使用二进制.") - elseif (add_mode == "2" and is_filter_keyword(result.remarks)) or not result.address or result.remarks == "NULL" or result.address == "127.0.0.1" or - (not datatypes.hostname(result.address) and not (api.is_ip(result.address))) then - log('丢弃过滤节点: ' .. result.type .. ' 节点, ' .. result.remarks) - else - tinsert(node_list, result) - end - if add_mode == "2" then - get_subscribe_info(cfgid, result.remarks) - end - end - end, function (err) - --log(err) - log(v, "解析错误,跳过此节点。") - end - ) - end - end - if #node_list > 0 then - nodeResult[#nodeResult + 1] = { - remark = group, - list = node_list - } - end - log('成功解析【' .. group .. '】节点数量: ' .. #node_list) - else - if add_mode == "2" then - log('获取到的【' .. group .. '】订阅内容为空,可能是订阅地址无效,或是网络问题,请诊断!') - end - end -end - -local execute = function() - do - local subscribe_list = {} - local fail_list = {} - if arg[2] ~= "all" then - string.gsub(arg[2], '[^' .. "," .. ']+', function(w) - subscribe_list[#subscribe_list + 1] = uci:get_all(appname, w) or {} - end) - else - uci:foreach(appname, "subscribe_list", function(o) - subscribe_list[#subscribe_list + 1] = o - end) - end - - local manual_sub = arg[3] == "manual" - - for index, value in ipairs(subscribe_list) do - local cfgid = value[".name"] - local remark = value.remark or "" - local url = value.url or "" - if value.allowInsecure and value.allowInsecure == "1" then - allowInsecure_default = true - end - local filter_keyword_mode = value.filter_keyword_mode or "5" - if filter_keyword_mode == "0" then - filter_keyword_mode_default = "0" - elseif filter_keyword_mode == "1" then - filter_keyword_mode_default = "1" - filter_keyword_discard_list_default = value.filter_discard_list or {} - elseif filter_keyword_mode == "2" then - filter_keyword_mode_default = "2" - filter_keyword_keep_list_default = value.filter_keep_list or {} - elseif filter_keyword_mode == "3" then - filter_keyword_mode_default = "3" - filter_keyword_keep_list_default = value.filter_keep_list or {} - filter_keyword_discard_list_default = value.filter_discard_list or {} - elseif filter_keyword_mode == "4" then - filter_keyword_mode_default = "4" - filter_keyword_keep_list_default = value.filter_keep_list or {} - filter_keyword_discard_list_default = value.filter_discard_list or {} - end - local ss_type = value.ss_type or "global" - if ss_type ~= "global" then - ss_type_default = ss_type - end - local trojan_type = value.trojan_type or "global" - if trojan_type ~= "global" then - trojan_type_default = trojan_type - end - local vmess_type = value.vmess_type or "global" - if vmess_type ~= "global" then - vmess_type_default = vmess_type - end - local vless_type = value.vless_type or "global" - if vless_type ~= "global" then - vless_type_default = vless_type - end - local hysteria2_type = value.hysteria2_type or "global" - if hysteria2_type ~= "global" then - hysteria2_type_default = hysteria2_type - end - local domain_strategy = value.domain_strategy or "global" - if domain_strategy ~= "global" then - domain_strategy_node = domain_strategy - else - domain_strategy_node = domain_strategy_default - end - - -- 订阅组链式代理 - local function valid_chain_node(node) - if not node then return "" end - local cp = uci:get(appname, node, "chain_proxy") or "" - local am = uci:get(appname, node, "add_mode") or "0" - chain_node_type = (cp == "" and am ~= "2") and (uci:get(appname, node, "type") or "") or "" - if chain_node_type ~= "Xray" and chain_node_type ~= "sing-box" then - chain_node_type = "" - return "" - end - return node - end - preproxy_node_group = (value.chain_proxy == "1") and valid_chain_node(value.preproxy_node) or "" - to_node_group = (value.chain_proxy == "2") and valid_chain_node(value.to_node) or "" - - local ua = value.user_agent - local access_mode = value.access_mode - local result = (not access_mode) and "自动" or (access_mode == "direct" and "直连访问" or (access_mode == "proxy" and "通过代理" or "自动")) - log('正在订阅:【' .. remark .. '】' .. url .. ' [' .. result .. ']') - local tmp_file = "/tmp/" .. cfgid - value.http_code = curl(url, tmp_file, ua, access_mode) - if value.http_code ~= 200 then - fail_list[#fail_list + 1] = value - else - if luci.sys.call("[ -f " .. tmp_file .. " ] && sed -i -e '/^[ \t]*$/d' -e '/^[ \t]*\r$/d' " .. tmp_file) == 0 then - local f = io.open(tmp_file, "r") - local stdout = f:read("*all") - f:close() - local raw_data = api.trim(stdout) - local old_md5 = value.md5 or "" - local new_md5 = luci.sys.exec("md5sum " .. tmp_file .. " 2>/dev/null | awk '{print $1}'"):gsub("\n", "") - if not manual_sub and old_md5 == new_md5 then - log('订阅:【' .. remark .. '】没有变化,无需更新。') - else - parse_link(raw_data, "2", remark, cfgid) - uci:set(appname, cfgid, "md5", new_md5) - end - else - fail_list[#fail_list + 1] = value - end - end - luci.sys.call("rm -f " .. tmp_file) - allowInsecure_default = nil - filter_keyword_mode_default = uci:get(appname, "@global_subscribe[0]", "filter_keyword_mode") or "0" - filter_keyword_discard_list_default = uci:get(appname, "@global_subscribe[0]", "filter_discard_list") or {} - filter_keyword_keep_list_default = uci:get(appname, "@global_subscribe[0]", "filter_keep_list") or {} - ss_type_default = uci:get(appname, "@global_subscribe[0]", "ss_type") or "shadowsocks-libev" - trojan_type_default = uci:get(appname, "@global_subscribe[0]", "trojan_type") or "trojan-plus" - vmess_type_default = uci:get(appname, "@global_subscribe[0]", "vmess_type") or "xray" - vless_type_default = uci:get(appname, "@global_subscribe[0]", "vless_type") or "xray" - hysteria2_type_default = uci:get(appname, "@global_subscribe[0]", "hysteria2_type") or "hysteria2" - end - - if #fail_list > 0 then - for index, value in ipairs(fail_list) do - log(string.format('【%s】订阅失败,可能是订阅地址无效,或是网络问题,请诊断![%s]', value.remark, tostring(value.http_code))) - end - end - update_node(0) - end -end - -if arg[1] then - if arg[1] == "start" then - log('开始订阅...') - xpcall(execute, function(e) - log(e) - if type(debug) == "table" and type(debug.traceback) == "function" then - log(debug.traceback()) - end - log('发生错误, 正在恢复服务') - end) - log('订阅完毕...\n') - elseif arg[1] == "add" then - local f = assert(io.open("/tmp/links.conf", 'r')) - local raw = f:read('*all') - f:close() - parse_link(raw, "1", arg[2]) - update_node(1) - luci.sys.call("rm -f /tmp/links.conf") - elseif arg[1] == "truncate" then - truncate_nodes(arg[2]) - end -end diff --git a/small/luci-app-passwall/root/usr/share/passwall/tasks.sh b/small/luci-app-passwall/root/usr/share/passwall/tasks.sh deleted file mode 100755 index 3cfc5444f1..0000000000 --- a/small/luci-app-passwall/root/usr/share/passwall/tasks.sh +++ /dev/null @@ -1,90 +0,0 @@ -#!/bin/sh - -## 循环更新脚本 - -. /usr/share/passwall/utils.sh -LOCK_FILE=${LOCK_PATH}/${CONFIG}_tasks.lock - -CFG_UPDATE_INT=0 - -exec 99>"$LOCK_FILE" -flock -n 99 -if [ "$?" != 0 ]; then - exit 0 -fi - -while true -do - - if [ "$CFG_UPDATE_INT" -ne 0 ]; then - - stop_week_mode=$(config_t_get global_delay stop_week_mode) - stop_interval_mode=$(config_t_get global_delay stop_interval_mode) - stop_interval_mode=$(expr "$stop_interval_mode" \* 60) - if [ -n "$stop_week_mode" ]; then - [ "$stop_week_mode" = "8" ] && { - [ "$(expr "$CFG_UPDATE_INT" % "$stop_interval_mode")" -eq 0 ] && /etc/init.d/$CONFIG stop > /dev/null 2>&1 & - } - fi - - start_week_mode=$(config_t_get global_delay start_week_mode) - start_interval_mode=$(config_t_get global_delay start_interval_mode) - start_interval_mode=$(expr "$start_interval_mode" \* 60) - if [ -n "$start_week_mode" ]; then - [ "$start_week_mode" = "8" ] && { - [ "$(expr "$CFG_UPDATE_INT" % "$start_interval_mode")" -eq 0 ] && /etc/init.d/$CONFIG start > /dev/null 2>&1 & - } - fi - - restart_week_mode=$(config_t_get global_delay restart_week_mode) - restart_interval_mode=$(config_t_get global_delay restart_interval_mode) - restart_interval_mode=$(expr "$restart_interval_mode" \* 60) - if [ -n "$restart_week_mode" ]; then - [ "$restart_week_mode" = "8" ] && { - [ "$(expr "$CFG_UPDATE_INT" % "$restart_interval_mode")" -eq 0 ] && /etc/init.d/$CONFIG restart > /dev/null 2>&1 & - } - fi - - autoupdate=$(config_t_get global_rules auto_update) - weekupdate=$(config_t_get global_rules week_update) - hourupdate=$(config_t_get global_rules interval_update) - hourupdate=$(expr "$hourupdate" \* 60) - if [ "$autoupdate" = "1" ]; then - [ "$weekupdate" = "8" ] && { - [ "$(expr "$CFG_UPDATE_INT" % "$hourupdate")" -eq 0 ] && lua $APP_PATH/rule_update.lua log all cron > /dev/null 2>&1 & - } - fi - - TMP_SUB_PATH=$TMP_PATH/sub_tasks - mkdir -p $TMP_SUB_PATH - for item in $(uci show ${CONFIG} | grep "=subscribe_list" | cut -d '.' -sf 2 | cut -d '=' -sf 1); do - if [ "$(config_n_get $item auto_update 0)" = "1" ]; then - cfgid=$(uci show ${CONFIG}.$item | head -n 1 | cut -d '.' -sf 2 | cut -d '=' -sf 1) - remark=$(config_n_get $item remark) - week_update=$(config_n_get $item week_update) - hour_update=$(config_n_get $item interval_update) - echo "$cfgid" >> $TMP_SUB_PATH/${week_update}_${hour_update} - fi - done - - [ -d "${TMP_SUB_PATH}" ] && { - for name in $(ls ${TMP_SUB_PATH}); do - week_update=$(echo $name | awk -F '_' '{print $1}') - hour_update=$(echo $name | awk -F '_' '{print $2}') - hour_update=$(expr "$hour_update" \* 60) - cfgids=$(echo -n $(cat ${TMP_SUB_PATH}/${name}) | sed 's# #,#g') - [ "$week_update" = "8" ] && { - [ "$(expr "$CFG_UPDATE_INT" % "$hour_update")" -eq 0 ] && lua $APP_PATH/subscribe.lua start $cfgids cron > /dev/null 2>&1 & - } - - done - rm -rf $TMP_SUB_PATH - } - - fi - - CFG_UPDATE_INT=$(expr "$CFG_UPDATE_INT" + 10) - - sleep 600 - -done 2>/dev/null diff --git a/small/luci-app-passwall/root/usr/share/passwall/test.sh b/small/luci-app-passwall/root/usr/share/passwall/test.sh deleted file mode 100755 index e7d0da229f..0000000000 --- a/small/luci-app-passwall/root/usr/share/passwall/test.sh +++ /dev/null @@ -1,84 +0,0 @@ -#!/bin/sh - -. /usr/share/passwall/utils.sh - -test_url() { - local url=$1 - local try=1 - [ -n "$2" ] && try=$2 - local timeout=2 - [ -n "$3" ] && timeout=$3 - local extra_params=$4 - curl --help all | grep "\-\-retry-all-errors" > /dev/null - [ $? == 0 ] && extra_params="--retry-all-errors ${extra_params}" - status=$(/usr/bin/curl -I -o /dev/null -skL $extra_params --connect-timeout ${timeout} --retry ${try} -w %{http_code} "$url") - case "$status" in - 204|\ - 200) - status=200 - ;; - esac - echo $status -} - -test_proxy() { - result=0 - status=$(test_url "https://www.google.com/generate_204" ${retry_num} ${connect_timeout}) - if [ "$status" = "200" ]; then - result=0 - else - status2=$(test_url "https://www.baidu.com" ${retry_num} ${connect_timeout}) - if [ "$status2" = "200" ]; then - result=1 - else - result=2 - ping -c 3 -W 1 223.5.5.5 > /dev/null 2>&1 - [ $? -eq 0 ] && { - result=1 - } - fi - fi - echo $result -} - -url_test_node() { - result=0 - local node_id=$1 - local _type=$(echo $(config_n_get ${node_id} type) | tr 'A-Z' 'a-z') - [ -n "${_type}" ] && { - if [ "${_type}" == "socks" ]; then - local _address=$(config_n_get ${node_id} address) - local _port=$(config_n_get ${node_id} port) - [ -n "${_address}" ] && [ -n "${_port}" ] && { - local curlx="socks5h://${_address}:${_port}" - local _username=$(config_n_get ${node_id} username) - local _password=$(config_n_get ${node_id} password) - [ -n "${_username}" ] && [ -n "${_password}" ] && curlx="socks5h://${_username}:${_password}@${_address}:${_port}" - } - else - local _tmp_port=$(get_new_port 61080 tcp) - /usr/share/${CONFIG}/app.sh run_socks flag="url_test_${node_id}" node=${node_id} bind=127.0.0.1 socks_port=${_tmp_port} config_file=url_test_${node_id}.json - local curlx="socks5h://127.0.0.1:${_tmp_port}" - fi - sleep 1s - local probeUrl=$(config_t_get global_other url_test_url https://www.google.com/generate_204) - result=$(curl --connect-timeout 3 --max-time 5 -o /dev/null -I -skL -w "%{http_code}:%{time_pretransfer}" -x ${curlx} "${probeUrl}") - # 结束 SS 插件进程 - local pid_file="/tmp/etc/${CONFIG}/url_test_${node_id}_plugin.pid" - [ -s "$pid_file" ] && kill -9 "$(head -n 1 "$pid_file")" >/dev/null 2>&1 - pgrep -af "url_test_${node_id}" | awk '! /test\.sh/{print $1}' | xargs kill -9 >/dev/null 2>&1 - rm -rf /tmp/etc/${CONFIG}/*url_test_${node_id}*.* - } - echo $result -} - -arg1=$1 -shift -case $arg1 in -test_url) - test_url $@ - ;; -url_test_node) - url_test_node $@ - ;; -esac diff --git a/small/luci-app-passwall/root/usr/share/passwall/utils.sh b/small/luci-app-passwall/root/usr/share/passwall/utils.sh deleted file mode 100755 index a11f5c5f01..0000000000 --- a/small/luci-app-passwall/root/usr/share/passwall/utils.sh +++ /dev/null @@ -1,317 +0,0 @@ -#!/bin/sh -# Copyright (C) 2022-2025 xiaorouji -# Copyright (C) 2026 Openwrt-Passwall Organization - -CONFIG=passwall -APP_PATH=/usr/share/${CONFIG} -TMP_PATH=/tmp/etc/${CONFIG} -TMP_PATH2=${TMP_PATH}_tmp -LOCK_PATH=/tmp/lock -LOG_FILE=/tmp/log/${CONFIG}.log -TMP_ACL_PATH=${TMP_PATH}/acl -TMP_BIN_PATH=${TMP_PATH}/bin -TMP_IFACE_PATH=${TMP_PATH}/iface -TMP_ROUTE_PATH=${TMP_PATH}/route -TMP_SCRIPT_FUNC_PATH=${TMP_PATH}/script_func -RULES_PATH=/usr/share/${CONFIG}/rules - -echolog() { - local d="$(date "+%Y-%m-%d %H:%M:%S")" - echo -e "$d: $*" >>$LOG_FILE -} - -config_get_type() { - local ret=$(uci -q get "${CONFIG}.${1}" 2>/dev/null) - echo "${ret:=$2}" -} - -config_n_get() { - local ret=$(uci -q get "${CONFIG}.${1}.${2}" 2>/dev/null) - echo "${ret:=$3}" -} - -config_t_get() { - local index=${4:-0} - local ret=$(uci -q get "${CONFIG}.@${1}[${index}].${2}" 2>/dev/null) - echo "${ret:=${3}}" -} - -config_t_set() { - local index=${4:-0} - local ret=$(uci -q set "${CONFIG}.@${1}[${index}].${2}=${3}" 2>/dev/null) -} - -get_enabled_anonymous_secs() { - uci -q show "${CONFIG}" | grep "${1}\[.*\.enabled='1'" | cut -d '.' -sf2 -} - -get_host_ip() { - local host=$2 - local count=$3 - [ -z "$count" ] && count=3 - local isip="" - local ip=$host - if [ "$1" == "ipv6" ]; then - isip=$(echo $host | grep -E "([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}") - if [ -n "$isip" ]; then - isip=$(echo $host | cut -d '[' -f2 | cut -d ']' -f1) - fi - else - isip=$(echo $host | grep -E "([0-9]{1,3}[\.]){3}[0-9]{1,3}") - fi - [ -z "$isip" ] && { - local t=4 - [ "$1" == "ipv6" ] && t=6 - local vpsrip=$(resolveip -$t -t $count $host | awk 'NR==1{print}') - ip=$vpsrip - } - echo $ip -} - -get_node_host_ip() { - local ip - local address=$(config_n_get $1 address) - [ -n "$address" ] && { - local use_ipv6=$(config_n_get $1 use_ipv6) - local network_type="ipv4" - [ "$use_ipv6" == "1" ] && network_type="ipv6" - ip=$(get_host_ip $network_type $address) - } - echo $ip -} - -get_ip_port_from() { - local __host=${1}; shift 1 - local __ipv=${1}; shift 1 - local __portv=${1}; shift 1 - local __ucipriority=${1}; shift 1 - - local val1 val2 - val2=$(echo "$__host" | sed -n ' - s/^[^#]*[#]\([0-9]*\)$/\1/p; t; - s/^\(\[[^]]*\]\)[:]\([0-9]*\)$/\2/p; t; - s/^.*[:#]\([0-9]*\)$/\1/p - ') - if [ -n "${__ucipriority}" ]; then - val2=$(config_n_get ${__host} port "${val2}") - val1=$(config_n_get ${__host} address "${__host%%${val2:+[:#]${val2}*}}") - else - val1="${__host%%${val2:+[:#]${val2}*}}" - fi - eval "${__ipv}=\"$val1\"; ${__portv}=\"$val2\"" -} - -host_from_url(){ - local f=${1} - - ## Remove protocol part of url ## - f="${f##http://}" - f="${f##https://}" - f="${f##ftp://}" - f="${f##sftp://}" - - ## Remove username and/or username:password part of URL ## - f="${f##*:*@}" - f="${f##*@}" - - ## Remove rest of urls ## - f="${f%%/*}" - echo "${f%%:*}" -} - -hosts_foreach() { - local __hosts - eval "__hosts=\$${1}"; shift 1 - local __func=${1}; shift 1 - local __default_port=${1}; shift 1 - local __ret=1 - - [ -z "${__hosts}" ] && return 0 - local __ip __port - for __host in $(echo $__hosts | sed 's/[ ,]/\n/g'); do - get_ip_port_from "$__host" "__ip" "__port" - eval "$__func \"${__host}\" \"\${__ip}\" \"\${__port:-${__default_port}}\" \"$@\"" - __ret=$? - [ ${__ret} -ge ${ERROR_NO_CATCH:-1} ] && return ${__ret} - done -} - -check_host() { - local f=${1} - a=$(echo $f | grep "\/") - [ -n "$a" ] && return 1 - # 判断是否包含汉字~ - local tmp=$(echo -n $f | awk '{print gensub(/[!-~]/,"","g",$0)}') - [ -n "$tmp" ] && return 1 - return 0 -} - -get_first_dns() { - local __hosts_val=${1}; shift 1 - __first() { - [ -z "${2}" ] && return 0 - echo "${2}#${3}" - return 1 - } - eval "hosts_foreach \"${__hosts_val}\" __first \"$@\"" -} - -get_last_dns() { - local __hosts_val=${1}; shift 1 - local __first __last - __every() { - [ -z "${2}" ] && return 0 - __last="${2}#${3}" - __first=${__first:-${__last}} - } - eval "hosts_foreach \"${__hosts_val}\" __every \"$@\"" - [ "${__first}" == "${__last}" ] || echo "${__last}" -} - -check_port_exists() { - local port=$1 - local protocol=$2 - [ -n "$protocol" ] || protocol="tcp,udp" - local result= - if [ "$protocol" = "tcp" ]; then - result=$(netstat -tln | grep -c ":$port ") - elif [ "$protocol" = "udp" ]; then - result=$(netstat -uln | grep -c ":$port ") - elif [ "$protocol" = "tcp,udp" ]; then - result=$(netstat -tuln | grep -c ":$port ") - fi - echo "${result}" -} - -get_new_port() { - local port=$1 - [ "$port" == "auto" ] && port=2082 - local protocol=$(echo $2 | tr 'A-Z' 'a-z') - local result=$(check_port_exists $port $protocol) - if [ "$result" != 0 ]; then - local temp= - if [ "$port" -lt 65535 ]; then - temp=$(expr $port + 1) - elif [ "$port" -gt 1 ]; then - temp=$(expr $port - 1) - fi - get_new_port $temp $protocol - else - echo $port - fi -} - -check_ver() { - local version1="$1" - local version2="$2" - local i v1 v1_1 v1_2 v1_3 v2 v2_1 v2_2 v2_3 - IFS='.'; set -- $version1; v1_1=${1:-0}; v1_2=${2:-0}; v1_3=${3:-0} - IFS='.'; set -- $version2; v2_1=${1:-0}; v2_2=${2:-0}; v2_3=${3:-0} - IFS= - for i in 1 2 3; do - eval v1=\$v1_$i - eval v2=\$v2_$i - if [ "$v1" -gt "$v2" ]; then - # $1 大于 $2 - echo 0 - return - elif [ "$v1" -lt "$v2" ]; then - # $1 小于 $2 - echo 1 - return - fi - done - # $1 等于 $2 - echo 255 -} - -eval_set_val() { - for i in $@; do - for j in $i; do - eval $j - done - done -} - -eval_unset_val() { - for i in $@; do - for j in $i; do - eval unset j - done - done -} - -lua_api() { - local func=${1} - [ -z "${func}" ] && { - echo "nil" - return - } - echo $(lua -e "local api = require 'luci.passwall.api' print(api.${func})") -} - -set_cache_var() { - local key="${1}" - shift 1 - local val="$@" - [ -n "${key}" ] && [ -n "${val}" ] && { - sed -i "/${key}=/d" $TMP_PATH/var >/dev/null 2>&1 - echo "${key}=\"${val}\"" >> $TMP_PATH/var - eval ${key}=\"${val}\" - } -} - -get_cache_var() { - local key="${1}" - [ -n "${key}" ] && [ -s "$TMP_PATH/var" ] && { - echo $(cat $TMP_PATH/var | grep "^${key}=" | awk -F '=' '{print $2}' | tail -n 1 | awk -F'"' '{print $2}') - } -} - -eval_cache_var() { - [ -s "$TMP_PATH/var" ] && eval $(cat "$TMP_PATH/var") -} - -has_1_65535() { - local val="$1" - val=${val//:/-} - case ",$val," in - *,1-65535,*) return 0 ;; - *) return 1 ;; - esac -} - -add_ip2route() { - local ip=$(get_host_ip "ipv4" $1) - [ -z "$ip" ] && { - echolog " - 无法解析[${1}],路由表添加失败!" - return 1 - } - local remarks="${1}" - [ "$remarks" != "$ip" ] && remarks="${1}(${ip})" - - . /lib/functions/network.sh - local gateway device - network_get_gateway gateway "$2" - network_get_device device "$2" - [ -z "${device}" ] && device="$2" - - if [ -n "${gateway}" ]; then - route add -host ${ip} gw ${gateway} dev ${device} >/dev/null 2>&1 - echo "$ip" >> $TMP_ROUTE_PATH/${device} - echolog " - [${remarks}]添加到接口[${device}]路由表成功!" - else - echolog " - [${remarks}]添加到接口[${device}]路由表失功!原因是找不到[${device}]网关。" - fi -} - -delete_ip2route() { - [ -d "${TMP_ROUTE_PATH}" ] && { - local interface - for interface in $(ls ${TMP_ROUTE_PATH}); do - for ip in $(cat ${TMP_ROUTE_PATH}/${interface}); do - route del -host ${ip} dev ${interface} >/dev/null 2>&1 - done - done - } -} diff --git a/small/luci-app-passwall/root/usr/share/rpcd/acl.d/luci-app-passwall.json b/small/luci-app-passwall/root/usr/share/rpcd/acl.d/luci-app-passwall.json deleted file mode 100644 index 0d6f7d7e8a..0000000000 --- a/small/luci-app-passwall/root/usr/share/rpcd/acl.d/luci-app-passwall.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "luci-app-passwall": { - "description": "Grant UCI access for luci-app-passwall", - "read": { - "uci": [ "passwall", "passwall_server" ] - }, - "write": { - "uci": [ "passwall", "passwall_server" ] - } - } -} diff --git a/small/luci-app-passwall/root/usr/share/ucitrack/luci-app-passwall-server.json b/small/luci-app-passwall/root/usr/share/ucitrack/luci-app-passwall-server.json deleted file mode 100644 index 257e61be4c..0000000000 --- a/small/luci-app-passwall/root/usr/share/ucitrack/luci-app-passwall-server.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "config": "passwall_server", - "init": "passwall_server" -} diff --git a/small/luci-app-passwall/root/usr/share/ucitrack/luci-app-passwall.json b/small/luci-app-passwall/root/usr/share/ucitrack/luci-app-passwall.json deleted file mode 100644 index b3b7140e56..0000000000 --- a/small/luci-app-passwall/root/usr/share/ucitrack/luci-app-passwall.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "config": "passwall", - "init": "passwall" -} diff --git a/small/luci-app-passwall2/Makefile b/small/luci-app-passwall2/Makefile deleted file mode 100644 index c115460733..0000000000 --- a/small/luci-app-passwall2/Makefile +++ /dev/null @@ -1,159 +0,0 @@ -# Copyright (C) 2022-2025 xiaorouji -# Copyright (C) 2026 Openwrt-Passwall Organization -# -# This is free software, licensed under the GNU General Public License v3. - -include $(TOPDIR)/rules.mk - -PKG_NAME:=luci-app-passwall2 -PKG_VERSION:=26.1.16 -PKG_RELEASE:=1 -PKG_PO_VERSION:=$(PKG_VERSION) - -PKG_CONFIG_DEPENDS:= \ - CONFIG_PACKAGE_$(PKG_NAME)_Iptables_Transparent_Proxy \ - CONFIG_PACKAGE_$(PKG_NAME)_Nftables_Transparent_Proxy \ - CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_Haproxy \ - CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_Hysteria \ - CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_IPv6_Nat \ - CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_NaiveProxy \ - CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_Shadowsocks_Libev_Client \ - CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_Shadowsocks_Libev_Server \ - CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_Shadowsocks_Rust_Client \ - CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_Shadowsocks_Rust_Server \ - CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_ShadowsocksR_Libev_Client \ - CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_ShadowsocksR_Libev_Server \ - CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_Simple_Obfs \ - CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_SingBox \ - CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_tuic_client \ - CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_V2ray_Plugin - -LUCI_TITLE:=LuCI support for PassWall 2 -LUCI_PKGARCH:=all -LUCI_DEPENDS:=+coreutils +coreutils-base64 +coreutils-nohup +curl \ - +ip-full +libuci-lua +lua +luci-compat +luci-lib-jsonc +resolveip +tcping \ - +xray-core +geoview +v2ray-geoip +v2ray-geosite \ - +unzip \ - +PACKAGE_$(PKG_NAME)_INCLUDE_IPv6_Nat:ip6tables-mod-nat - -define Package/$(PKG_NAME)/config -menu "Configuration" - -config PACKAGE_$(PKG_NAME)_INCLUDE_IPv6_Nat - depends on PACKAGE_ip6tables - bool "Include IPv6 Nat" - default n - -if PACKAGE_$(PKG_NAME) - -config PACKAGE_$(PKG_NAME)_Iptables_Transparent_Proxy - bool "Iptables Transparent Proxy" - select PACKAGE_chinadns-ng - select PACKAGE_dnsmasq-full - select PACKAGE_dnsmasq_full_ipset - select PACKAGE_ipset - select PACKAGE_iptables - select PACKAGE_iptables-nft - select PACKAGE_iptables-zz-legacy - select PACKAGE_iptables-mod-conntrack-extra - select PACKAGE_iptables-mod-iprange - select PACKAGE_iptables-mod-socket - select PACKAGE_iptables-mod-tproxy - select PACKAGE_kmod-ipt-nat - default y if ! PACKAGE_firewall4 - -config PACKAGE_$(PKG_NAME)_Nftables_Transparent_Proxy - bool "Nftables Transparent Proxy" - select PACKAGE_chinadns-ng - select PACKAGE_dnsmasq-full - select PACKAGE_dnsmasq_full_nftset - select PACKAGE_nftables - select PACKAGE_kmod-nft-socket - select PACKAGE_kmod-nft-tproxy - select PACKAGE_kmod-nft-nat - default y if PACKAGE_firewall4 - -config PACKAGE_$(PKG_NAME)_INCLUDE_Haproxy - bool "Include Haproxy" - select PACKAGE_haproxy - default y if aarch64||arm||i386||x86_64 - -config PACKAGE_$(PKG_NAME)_INCLUDE_Hysteria - bool "Include Hysteria" - select PACKAGE_hysteria - default n - -config PACKAGE_$(PKG_NAME)_INCLUDE_NaiveProxy - bool "Include NaiveProxy" - depends on !(arc||armeb||loongarch64||mips||mips64||powerpc||TARGET_gemini) - select PACKAGE_naiveproxy - default n - -config PACKAGE_$(PKG_NAME)_INCLUDE_Shadowsocks_Libev_Client - bool "Include Shadowsocks Libev Client" - select PACKAGE_shadowsocks-libev-ss-local - select PACKAGE_shadowsocks-libev-ss-redir - default y - -config PACKAGE_$(PKG_NAME)_INCLUDE_Shadowsocks_Libev_Server - bool "Include Shadowsocks Libev Server" - select PACKAGE_shadowsocks-libev-ss-server - default n - -config PACKAGE_$(PKG_NAME)_INCLUDE_Shadowsocks_Rust_Client - bool "Include Shadowsocks Rust Client" - depends on !i386 - select PACKAGE_shadowsocks-rust-sslocal - default y if aarch64||x86_64 - -config PACKAGE_$(PKG_NAME)_INCLUDE_Shadowsocks_Rust_Server - bool "Include Shadowsocks Rust Server" - depends on !i386 - select PACKAGE_shadowsocks-rust-ssserver - default n - -config PACKAGE_$(PKG_NAME)_INCLUDE_ShadowsocksR_Libev_Client - bool "Include ShadowsocksR Libev Client" - select PACKAGE_shadowsocksr-libev-ssr-local - select PACKAGE_shadowsocksr-libev-ssr-redir - default y - -config PACKAGE_$(PKG_NAME)_INCLUDE_ShadowsocksR_Libev_Server - bool "Include ShadowsocksR Libev Server" - select PACKAGE_shadowsocksr-libev-ssr-server - default n - -config PACKAGE_$(PKG_NAME)_INCLUDE_Simple_Obfs - bool "Include Simple-Obfs (Shadowsocks Plugin)" - select PACKAGE_simple-obfs-client - default y - -config PACKAGE_$(PKG_NAME)_INCLUDE_SingBox - bool "Include Sing-Box" - select PACKAGE_sing-box - default y if aarch64||arm||i386||x86_64 - -config PACKAGE_$(PKG_NAME)_INCLUDE_tuic_client - bool "Include tuic-client" - depends on aarch64||arm||i386||x86_64 - select PACKAGE_tuic-client - default n - -config PACKAGE_$(PKG_NAME)_INCLUDE_V2ray_Plugin - bool "Include V2ray-Plugin (Shadowsocks Plugin)" - select PACKAGE_v2ray-plugin - default y if aarch64||arm||i386||x86_64 - -endif -endmenu -endef - -define Package/$(PKG_NAME)/conffiles -/etc/config/passwall2 -/etc/config/passwall2_server -/usr/share/passwall2/domains_excluded -endef - -include $(TOPDIR)/feeds/luci/luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/small/luci-app-passwall2/htdocs/luci-static/resources/view/passwall2/Sortable.min.js b/small/luci-app-passwall2/htdocs/luci-static/resources/view/passwall2/Sortable.min.js deleted file mode 100644 index 95423a6491..0000000000 --- a/small/luci-app-passwall2/htdocs/luci-static/resources/view/passwall2/Sortable.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! Sortable 1.15.6 - MIT | git://github.com/SortableJS/Sortable.git */ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).Sortable=e()}(this,function(){"use strict";function e(e,t){var n,o=Object.keys(e);return Object.getOwnPropertySymbols&&(n=Object.getOwnPropertySymbols(e),t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),o.push.apply(o,n)),o}function I(o){for(var t=1;tt.length)&&(e=t.length);for(var n=0,o=new Array(e);n"===e[0]&&(e=e.substring(1)),t))try{if(t.matches)return t.matches(e);if(t.msMatchesSelector)return t.msMatchesSelector(e);if(t.webkitMatchesSelector)return t.webkitMatchesSelector(e)}catch(t){return}}function g(t){return t.host&&t!==document&&t.host.nodeType?t.host:t.parentNode}function P(t,e,n,o){if(t){n=n||document;do{if(null!=e&&(">"!==e[0]||t.parentNode===n)&&f(t,e)||o&&t===n)return t}while(t!==n&&(t=g(t)))}return null}var m,v=/\s+/g;function k(t,e,n){var o;t&&e&&(t.classList?t.classList[n?"add":"remove"](e):(o=(" "+t.className+" ").replace(v," ").replace(" "+e+" "," "),t.className=(o+(n?" "+e:"")).replace(v," ")))}function R(t,e,n){var o=t&&t.style;if(o){if(void 0===n)return document.defaultView&&document.defaultView.getComputedStyle?n=document.defaultView.getComputedStyle(t,""):t.currentStyle&&(n=t.currentStyle),void 0===e?n:n[e];o[e=!(e in o||-1!==e.indexOf("webkit"))?"-webkit-"+e:e]=n+("string"==typeof n?"":"px")}}function b(t,e){var n="";if("string"==typeof t)n=t;else do{var o=R(t,"transform")}while(o&&"none"!==o&&(n=o+" "+n),!e&&(t=t.parentNode));var i=window.DOMMatrix||window.WebKitCSSMatrix||window.CSSMatrix||window.MSCSSMatrix;return i&&new i(n)}function D(t,e,n){if(t){var o=t.getElementsByTagName(e),i=0,r=o.length;if(n)for(;i=n.left-e&&i<=n.right+e,e=r>=n.top-e&&r<=n.bottom+e;return o&&e?a=t:void 0}}),a);if(e){var n,o={};for(n in t)t.hasOwnProperty(n)&&(o[n]=t[n]);o.target=o.rootEl=e,o.preventDefault=void 0,o.stopPropagation=void 0,e[K]._onDragOver(o)}}var i,r,a}function Ft(t){Z&&Z.parentNode[K]._isOutsideThisEl(t.target)}function jt(t,e){if(!t||!t.nodeType||1!==t.nodeType)throw"Sortable: `el` must be an HTMLElement, not ".concat({}.toString.call(t));this.el=t,this.options=e=a({},e),t[K]=this;var n,o,i={group:null,sort:!0,disabled:!1,store:null,handle:null,draggable:/^[uo]l$/i.test(t.nodeName)?">li":">*",swapThreshold:1,invertSwap:!1,invertedSwapThreshold:null,removeCloneOnHide:!0,direction:function(){return kt(t,this.options)},ghostClass:"sortable-ghost",chosenClass:"sortable-chosen",dragClass:"sortable-drag",ignore:"a, img",filter:null,preventOnFilter:!0,animation:0,easing:null,setData:function(t,e){t.setData("Text",e.textContent)},dropBubble:!1,dragoverBubble:!1,dataIdAttr:"data-id",delay:0,delayOnTouchOnly:!1,touchStartThreshold:(Number.parseInt?Number:window).parseInt(window.devicePixelRatio,10)||1,forceFallback:!1,fallbackClass:"sortable-fallback",fallbackOnBody:!1,fallbackTolerance:0,fallbackOffset:{x:0,y:0},supportPointer:!1!==jt.supportPointer&&"PointerEvent"in window&&(!u||c),emptyInsertThreshold:5};for(n in z.initializePlugins(this,t,i),i)n in e||(e[n]=i[n]);for(o in Rt(e),this)"_"===o.charAt(0)&&"function"==typeof this[o]&&(this[o]=this[o].bind(this));this.nativeDraggable=!e.forceFallback&&It,this.nativeDraggable&&(this.options.touchStartThreshold=1),e.supportPointer?h(t,"pointerdown",this._onTapStart):(h(t,"mousedown",this._onTapStart),h(t,"touchstart",this._onTapStart)),this.nativeDraggable&&(h(t,"dragover",this),h(t,"dragenter",this)),St.push(this.el),e.store&&e.store.get&&this.sort(e.store.get(this)||[]),a(this,A())}function Ht(t,e,n,o,i,r,a,l){var s,c,u=t[K],d=u.options.onMove;return!window.CustomEvent||y||w?(s=document.createEvent("Event")).initEvent("move",!0,!0):s=new CustomEvent("move",{bubbles:!0,cancelable:!0}),s.to=e,s.from=t,s.dragged=n,s.draggedRect=o,s.related=i||e,s.relatedRect=r||X(e),s.willInsertAfter=l,s.originalEvent=a,t.dispatchEvent(s),c=d?d.call(u,s,a):c}function Lt(t){t.draggable=!1}function Kt(){xt=!1}function Wt(t){return setTimeout(t,0)}function zt(t){return clearTimeout(t)}jt.prototype={constructor:jt,_isOutsideThisEl:function(t){this.el.contains(t)||t===this.el||(vt=null)},_getDirection:function(t,e){return"function"==typeof this.options.direction?this.options.direction.call(this,t,e,Z):this.options.direction},_onTapStart:function(e){if(e.cancelable){var n=this,o=this.el,t=this.options,i=t.preventOnFilter,r=e.type,a=e.touches&&e.touches[0]||e.pointerType&&"touch"===e.pointerType&&e,l=(a||e).target,s=e.target.shadowRoot&&(e.path&&e.path[0]||e.composedPath&&e.composedPath()[0])||l,c=t.filter;if(!function(t){Ot.length=0;var e=t.getElementsByTagName("input"),n=e.length;for(;n--;){var o=e[n];o.checked&&Ot.push(o)}}(o),!Z&&!(/mousedown|pointerdown/.test(r)&&0!==e.button||t.disabled)&&!s.isContentEditable&&(this.nativeDraggable||!u||!l||"SELECT"!==l.tagName.toUpperCase())&&!((l=P(l,t.draggable,o,!1))&&l.animated||et===l)){if(it=j(l),at=j(l,t.draggable),"function"==typeof c){if(c.call(this,e,l,this))return V({sortable:n,rootEl:s,name:"filter",targetEl:l,toEl:o,fromEl:o}),U("filter",n,{evt:e}),void(i&&e.preventDefault())}else if(c=c&&c.split(",").some(function(t){if(t=P(s,t.trim(),o,!1))return V({sortable:n,rootEl:t,name:"filter",targetEl:l,fromEl:o,toEl:o}),U("filter",n,{evt:e}),!0}))return void(i&&e.preventDefault());t.handle&&!P(s,t.handle,o,!1)||this._prepareDragStart(e,a,l)}}},_prepareDragStart:function(t,e,n){var o,i=this,r=i.el,a=i.options,l=r.ownerDocument;n&&!Z&&n.parentNode===r&&(o=X(n),J=r,$=(Z=n).parentNode,tt=Z.nextSibling,et=n,st=a.group,ut={target:jt.dragged=Z,clientX:(e||t).clientX,clientY:(e||t).clientY},ft=ut.clientX-o.left,gt=ut.clientY-o.top,this._lastX=(e||t).clientX,this._lastY=(e||t).clientY,Z.style["will-change"]="all",o=function(){U("delayEnded",i,{evt:t}),jt.eventCanceled?i._onDrop():(i._disableDelayedDragEvents(),!s&&i.nativeDraggable&&(Z.draggable=!0),i._triggerDragStart(t,e),V({sortable:i,name:"choose",originalEvent:t}),k(Z,a.chosenClass,!0))},a.ignore.split(",").forEach(function(t){D(Z,t.trim(),Lt)}),h(l,"dragover",Bt),h(l,"mousemove",Bt),h(l,"touchmove",Bt),a.supportPointer?(h(l,"pointerup",i._onDrop),this.nativeDraggable||h(l,"pointercancel",i._onDrop)):(h(l,"mouseup",i._onDrop),h(l,"touchend",i._onDrop),h(l,"touchcancel",i._onDrop)),s&&this.nativeDraggable&&(this.options.touchStartThreshold=4,Z.draggable=!0),U("delayStart",this,{evt:t}),!a.delay||a.delayOnTouchOnly&&!e||this.nativeDraggable&&(w||y)?o():jt.eventCanceled?this._onDrop():(a.supportPointer?(h(l,"pointerup",i._disableDelayedDrag),h(l,"pointercancel",i._disableDelayedDrag)):(h(l,"mouseup",i._disableDelayedDrag),h(l,"touchend",i._disableDelayedDrag),h(l,"touchcancel",i._disableDelayedDrag)),h(l,"mousemove",i._delayedDragTouchMoveHandler),h(l,"touchmove",i._delayedDragTouchMoveHandler),a.supportPointer&&h(l,"pointermove",i._delayedDragTouchMoveHandler),i._dragStartTimer=setTimeout(o,a.delay)))},_delayedDragTouchMoveHandler:function(t){t=t.touches?t.touches[0]:t;Math.max(Math.abs(t.clientX-this._lastX),Math.abs(t.clientY-this._lastY))>=Math.floor(this.options.touchStartThreshold/(this.nativeDraggable&&window.devicePixelRatio||1))&&this._disableDelayedDrag()},_disableDelayedDrag:function(){Z&&Lt(Z),clearTimeout(this._dragStartTimer),this._disableDelayedDragEvents()},_disableDelayedDragEvents:function(){var t=this.el.ownerDocument;p(t,"mouseup",this._disableDelayedDrag),p(t,"touchend",this._disableDelayedDrag),p(t,"touchcancel",this._disableDelayedDrag),p(t,"pointerup",this._disableDelayedDrag),p(t,"pointercancel",this._disableDelayedDrag),p(t,"mousemove",this._delayedDragTouchMoveHandler),p(t,"touchmove",this._delayedDragTouchMoveHandler),p(t,"pointermove",this._delayedDragTouchMoveHandler)},_triggerDragStart:function(t,e){e=e||"touch"==t.pointerType&&t,!this.nativeDraggable||e?this.options.supportPointer?h(document,"pointermove",this._onTouchMove):h(document,e?"touchmove":"mousemove",this._onTouchMove):(h(Z,"dragend",this),h(J,"dragstart",this._onDragStart));try{document.selection?Wt(function(){document.selection.empty()}):window.getSelection().removeAllRanges()}catch(t){}},_dragStarted:function(t,e){var n;Dt=!1,J&&Z?(U("dragStarted",this,{evt:e}),this.nativeDraggable&&h(document,"dragover",Ft),n=this.options,t||k(Z,n.dragClass,!1),k(Z,n.ghostClass,!0),jt.active=this,t&&this._appendGhost(),V({sortable:this,name:"start",originalEvent:e})):this._nulling()},_emulateDragOver:function(){if(dt){this._lastX=dt.clientX,this._lastY=dt.clientY,Xt();for(var t=document.elementFromPoint(dt.clientX,dt.clientY),e=t;t&&t.shadowRoot&&(t=t.shadowRoot.elementFromPoint(dt.clientX,dt.clientY))!==e;)e=t;if(Z.parentNode[K]._isOutsideThisEl(t),e)do{if(e[K])if(e[K]._onDragOver({clientX:dt.clientX,clientY:dt.clientY,target:t,rootEl:e})&&!this.options.dragoverBubble)break}while(e=g(t=e));Yt()}},_onTouchMove:function(t){if(ut){var e=this.options,n=e.fallbackTolerance,o=e.fallbackOffset,i=t.touches?t.touches[0]:t,r=Q&&b(Q,!0),a=Q&&r&&r.a,l=Q&&r&&r.d,e=At&&wt&&E(wt),a=(i.clientX-ut.clientX+o.x)/(a||1)+(e?e[0]-Tt[0]:0)/(a||1),l=(i.clientY-ut.clientY+o.y)/(l||1)+(e?e[1]-Tt[1]:0)/(l||1);if(!jt.active&&!Dt){if(n&&Math.max(Math.abs(i.clientX-this._lastX),Math.abs(i.clientY-this._lastY))E.right+10||S.clientY>x.bottom&&S.clientX>x.left:S.clientY>E.bottom+10||S.clientX>x.right&&S.clientY>x.top)||m.animated)){if(m&&(t=n,e=r,C=X(B((_=this).el,0,_.options,!0)),_=L(_.el,_.options,Q),e?t.clientX<_.left-10||t.clientY65536?(i[0]=240|(1835008&n)>>>18,i[1]=128|(258048&n)>>>12,i[2]=128|(4032&n)>>>6,i[3]=128|63&n):n>2048?(i[0]=224|(61440&n)>>>12,i[1]=128|(4032&n)>>>6,i[2]=128|63&n):n>128?(i[0]=192|(1984&n)>>>6,i[1]=128|63&n):i[0]=n,this.parsedData.push(i)}this.parsedData=Array.prototype.concat.apply([],this.parsedData),this.parsedData.length!=this.data.length&&(this.parsedData.unshift(191),this.parsedData.unshift(187),this.parsedData.unshift(239))}function e(t,e){this.typeNumber=t,this.errorCorrectLevel=e,this.modules=null,this.moduleCount=0,this.dataCache=null,this.dataList=[]}t.prototype={getLength:function(t){return this.parsedData.length},write:function(t){for(var e=0,r=this.parsedData.length;e=7&&this.setupTypeNumber(t),null==this.dataCache&&(this.dataCache=e.createData(this.typeNumber,this.errorCorrectLevel,this.dataList)),this.mapData(this.dataCache,r)},setupPositionProbePattern:function(t,e){for(var r=-1;r<=7;r++)if(!(t+r<=-1||this.moduleCount<=t+r))for(var o=-1;o<=7;o++)e+o<=-1||this.moduleCount<=e+o||(this.modules[t+r][e+o]=0<=r&&r<=6&&(0==o||6==o)||0<=o&&o<=6&&(0==r||6==r)||2<=r&&r<=4&&2<=o&&o<=4)},getBestMaskPattern:function(){for(var t=0,e=0,r=0;r<8;r++){this.makeImpl(!0,r);var o=g.getLostPoint(this);(0==r||t>o)&&(t=o,e=r)}return e},createMovieClip:function(t,e,r){var o=t.createEmptyMovieClip(e,r);this.make();for(var i=0;i>r&1);this.modules[Math.floor(r/3)][r%3+this.moduleCount-8-3]=o}for(r=0;r<18;r++){o=!t&&1==(e>>r&1);this.modules[r%3+this.moduleCount-8-3][Math.floor(r/3)]=o}},setupTypeInfo:function(t,e){for(var r=this.errorCorrectLevel<<3|e,o=g.getBCHTypeInfo(r),i=0;i<15;i++){var n=!t&&1==(o>>i&1);i<6?this.modules[i][8]=n:i<8?this.modules[i+1][8]=n:this.modules[this.moduleCount-15+i][8]=n}for(i=0;i<15;i++){n=!t&&1==(o>>i&1);i<8?this.modules[8][this.moduleCount-i-1]=n:i<9?this.modules[8][15-i-1+1]=n:this.modules[8][15-i-1]=n}this.modules[this.moduleCount-8][8]=!t},mapData:function(t,e){for(var r=-1,o=this.moduleCount-1,i=7,n=0,a=this.moduleCount-1;a>0;a-=2)for(6==a&&a--;;){for(var s=0;s<2;s++)if(null==this.modules[o][a-s]){var h=!1;n>>i&1)),g.getMask(e,o,a-s)&&(h=!h),this.modules[o][a-s]=h,-1==--i&&(n++,i=7)}if((o+=r)<0||this.moduleCount<=o){o-=r,r=-r;break}}}},e.PAD0=236,e.PAD1=17,e.createData=function(t,r,o){for(var i=m.getRSBlocks(t,r),n=new _,a=0;a8*h)throw new Error("code length overflow. ("+n.getLengthInBits()+">"+8*h+")");for(n.getLengthInBits()+4<=8*h&&n.put(0,4);n.getLengthInBits()%8!=0;)n.putBit(!1);for(;!(n.getLengthInBits()>=8*h||(n.put(e.PAD0,8),n.getLengthInBits()>=8*h));)n.put(e.PAD1,8);return e.createBytes(n,i)},e.createBytes=function(t,e){for(var r=0,o=0,i=0,n=new Array(e.length),a=new Array(e.length),s=0;s=0?d.get(c):0}}var m=0;for(u=0;u=0;)e^=g.G15<=0;)e^=g.G18<>>=1;return e},getPatternPosition:function(t){return g.PATTERN_POSITION_TABLE[t-1]},getMask:function(t,e,r){switch(t){case i:return(e+r)%2==0;case n:return e%2==0;case a:return r%3==0;case s:return(e+r)%3==0;case h:return(Math.floor(e/2)+Math.floor(r/3))%2==0;case l:return e*r%2+e*r%3==0;case u:return(e*r%2+e*r%3)%2==0;case f:return(e*r%3+(e+r)%2)%2==0;default:throw new Error("bad maskPattern:"+t)}},getErrorCorrectPolynomial:function(t){for(var e=new p([1],0),r=0;r5&&(r+=3+n-5)}for(o=0;o=256;)t-=255;return d.EXP_TABLE[t]},EXP_TABLE:new Array(256),LOG_TABLE:new Array(256)},c=0;c<8;c++)d.EXP_TABLE[c]=1<>>7-t%8&1)},put:function(t,e){for(var r=0;r>>e-r-1&1))},getLengthInBits:function(){return this.length},putBit:function(t){var e=Math.floor(this.length/8);this.buffer.length<=e&&this.buffer.push(0),t&&(this.buffer[e]|=128>>>this.length%8),this.length++}};var v=[[17,14,11,7],[32,26,20,14],[53,42,32,24],[78,62,46,34],[106,84,60,44],[134,106,74,58],[154,122,86,64],[192,152,108,84],[230,180,130,98],[271,213,151,119],[321,251,177,137],[367,287,203,155],[425,331,241,177],[458,362,258,194],[520,412,292,220],[586,450,322,250],[644,504,364,280],[718,560,394,310],[792,624,442,338],[858,666,482,382],[929,711,509,403],[1003,779,565,439],[1091,857,611,461],[1171,911,661,511],[1273,997,715,535],[1367,1059,751,593],[1465,1125,805,625],[1528,1190,868,658],[1628,1264,908,698],[1732,1370,982,742],[1840,1452,1030,790],[1952,1538,1112,842],[2068,1628,1168,898],[2188,1722,1228,958],[2303,1809,1283,983],[2431,1911,1351,1051],[2563,1989,1423,1093],[2699,2099,1499,1139],[2809,2213,1579,1219],[2953,2331,1663,1273]];function C(){var t=!1,e=navigator.userAgent;if(/android/i.test(e)){t=!0;var r=e.toString().match(/android ([0-9]\.[0-9])/i);r&&r[1]&&(t=parseFloat(r[1]))}return t}var w=function(){var t=function(t,e){this._el=t,this._htOption=e};return t.prototype.draw=function(t){var e=this._htOption,r=this._el,o=t.getModuleCount();Math.floor(e.width/o),Math.floor(e.height/o);function i(t,e){var r=document.createElementNS("http://www.w3.org/2000/svg",t);for(var o in e)e.hasOwnProperty(o)&&r.setAttribute(o,e[o]);return r}this.clear();var n=i("svg",{viewBox:"0 0 "+String(o)+" "+String(o),width:"100%",height:"100%",fill:e.colorLight});n.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink","http://www.w3.org/1999/xlink"),r.appendChild(n),n.appendChild(i("rect",{fill:e.colorLight,width:"100%",height:"100%"})),n.appendChild(i("rect",{fill:e.colorDark,width:"1",height:"1",id:"template"}));for(var a=0;a'],s=0;s");for(var h=0;h');a.push("")}a.push(""),r.innerHTML=a.join("");var l=r.childNodes[0],u=(e.width-l.offsetWidth)/2,f=(e.height-l.offsetHeight)/2;u>0&&f>0&&(l.style.margin=f+"px "+u+"px")},t.prototype.clear=function(){this._el.innerHTML=""},t}():function(){function t(){this._elImage.src=this._elCanvas.toDataURL("image/png"),this._elImage.style.display="block",this._elCanvas.style.display="none"}if(this._android&&this._android<=2.1){var e=1/window.devicePixelRatio,r=CanvasRenderingContext2D.prototype.drawImage;CanvasRenderingContext2D.prototype.drawImage=function(t,o,i,n,a,s,h,l,u){if("nodeName"in t&&/img/i.test(t.nodeName))for(var f=arguments.length-1;f>=1;f--)arguments[f]=arguments[f]*e;else void 0===l&&(arguments[1]*=e,arguments[2]*=e,arguments[3]*=e,arguments[4]*=e);r.apply(this,arguments)}}var o=function(t,e){this._bIsPainted=!1,this._android=C(),this._htOption=e,this._elCanvas=document.createElement("canvas"),this._elCanvas.width=e.width,this._elCanvas.height=e.height,t.appendChild(this._elCanvas),this._el=t,this._oContext=this._elCanvas.getContext("2d"),this._bIsPainted=!1,this._elImage=document.createElement("img"),this._elImage.alt="Scan me!",this._elImage.style.display="none",this._el.appendChild(this._elImage),this._bSupportDataURI=null};return o.prototype.draw=function(t){var e=this._elImage,r=this._oContext,o=this._htOption,i=t.getModuleCount(),n=o.width/i,a=o.height/i,s=Math.round(n),h=Math.round(a);e.style.display="none",this.clear();for(var l=0;lv.length)throw new Error("Too long data");return r}(QRCode=function(t,e){if(this._htOption={width:256,height:256,typeNumber:4,colorDark:"#000000",colorLight:"#ffffff",correctLevel:o.H},"string"==typeof e&&(e={text:e}),e)for(var r in e)this._htOption[r]=e[r];"string"==typeof t&&(t=document.getElementById(t)),this._htOption.useSVG&&(D=w),this._android=C(),this._el=t,this._oQRCode=null,this._oDrawing=new D(this._el,this._htOption),this._htOption.text&&this.makeCode(this._htOption.text)}).prototype.makeCode=function(t){this._oQRCode=new e(A(t,this._htOption.correctLevel),this._htOption.correctLevel),this._oQRCode.addData(t),this._oQRCode.make(),this._el.title=t,this._oDrawing.draw(this._oQRCode),this.makeImage()},QRCode.prototype.makeImage=function(){"function"==typeof this._oDrawing.makeImage&&(!this._android||this._android>=3)&&this._oDrawing.makeImage()},QRCode.prototype.clear=function(){this._oDrawing.clear()},QRCode.CorrectLevel=o}(),"undefined"!=typeof module&&(module.exports=QRCode); diff --git a/small/luci-app-passwall2/luasrc/controller/passwall2.lua b/small/luci-app-passwall2/luasrc/controller/passwall2.lua deleted file mode 100644 index 306a1d3fed..0000000000 --- a/small/luci-app-passwall2/luasrc/controller/passwall2.lua +++ /dev/null @@ -1,836 +0,0 @@ --- Copyright (C) 2022-2025 xiaorouji --- Copyright (C) 2026 Openwrt-Passwall Organization - -module("luci.controller.passwall2", package.seeall) -local api = require "luci.passwall2.api" -local appname = api.appname -- not available -local uci = api.uci -- in funtion index() -local http = require "luci.http" -local util = require "luci.util" -local i18n = require "luci.i18n" -local fs = api.fs -local jsonStringify = luci.jsonc.stringify - -function index() - if not nixio.fs.access("/etc/config/passwall2") then - if nixio.fs.access("/usr/share/passwall2/0_default_config") then - luci.sys.call('cp -f /usr/share/passwall2/0_default_config /etc/config/passwall2') - else return end - end - local api = require "luci.passwall2.api" - local appname = api.appname -- global definitions not available - local uci = api.uci -- in function index() - entry({"admin", "services", appname}).dependent = true - entry({"admin", "services", appname, "reset_config"}, call("reset_config")).leaf = true - entry({"admin", "services", appname, "show"}, call("show_menu")).leaf = true - entry({"admin", "services", appname, "hide"}, call("hide_menu")).leaf = true - local e - if uci:get(appname, "@global[0]", "hide_from_luci") ~= "1" then - e = entry({"admin", "services", appname}, alias("admin", "services", appname, "settings"), _("PassWall 2"), 0) - else - e = entry({"admin", "services", appname}, alias("admin", "services", appname, "settings"), nil, 0) - end - e.dependent = true - e.acl_depends = { "luci-app-passwall2" } - --[[ Client ]] - entry({"admin", "services", appname, "settings"}, cbi(appname .. "/client/global"), _("Basic Settings"), 1).dependent = true - entry({"admin", "services", appname, "node_list"}, cbi(appname .. "/client/node_list"), _("Node List"), 2).dependent = true - entry({"admin", "services", appname, "node_subscribe"}, cbi(appname .. "/client/node_subscribe"), _("Node Subscribe"), 3).dependent = true - entry({"admin", "services", appname, "other"}, cbi(appname .. "/client/other", {autoapply = true}), _("Other Settings"), 92).leaf = true - if nixio.fs.access("/usr/sbin/haproxy") then - entry({"admin", "services", appname, "haproxy"}, cbi(appname .. "/client/haproxy"), _("Load Balancing"), 93).leaf = true - end - entry({"admin", "services", appname, "app_update"}, cbi(appname .. "/client/app_update"), _("App Update"), 95).leaf = true - entry({"admin", "services", appname, "rule"}, cbi(appname .. "/client/rule"), _("Rule Manage"), 96).leaf = true - entry({"admin", "services", appname, "geoview"}, form(appname .. "/client/geoview"), _("Geo View"), 97).leaf = true - entry({"admin", "services", appname, "node_subscribe_config"}, cbi(appname .. "/client/node_subscribe_config")).leaf = true - entry({"admin", "services", appname, "node_config"}, cbi(appname .. "/client/node_config")).leaf = true - entry({"admin", "services", appname, "shunt_rules"}, cbi(appname .. "/client/shunt_rules")).leaf = true - entry({"admin", "services", appname, "socks_config"}, cbi(appname .. "/client/socks_config")).leaf = true - entry({"admin", "services", appname, "acl"}, cbi(appname .. "/client/acl"), _("Access control"), 98).leaf = true - entry({"admin", "services", appname, "acl_config"}, cbi(appname .. "/client/acl_config")).leaf = true - entry({"admin", "services", appname, "log"}, form(appname .. "/client/log"), _("Watch Logs"), 999).leaf = true - - --[[ Server ]] - entry({"admin", "services", appname, "server"}, cbi(appname .. "/server/index"), _("Server-Side"), 99).leaf = true - entry({"admin", "services", appname, "server_user"}, cbi(appname .. "/server/user")).leaf = true - - --[[ API ]] - entry({"admin", "services", appname, "server_user_status"}, call("server_user_status")).leaf = true - entry({"admin", "services", appname, "server_user_log"}, call("server_user_log")).leaf = true - entry({"admin", "services", appname, "server_get_log"}, call("server_get_log")).leaf = true - entry({"admin", "services", appname, "server_clear_log"}, call("server_clear_log")).leaf = true - entry({"admin", "services", appname, "link_add_node"}, call("link_add_node")).leaf = true - entry({"admin", "services", appname, "socks_autoswitch_add_node"}, call("socks_autoswitch_add_node")).leaf = true - entry({"admin", "services", appname, "socks_autoswitch_remove_node"}, call("socks_autoswitch_remove_node")).leaf = true - entry({"admin", "services", appname, "gen_client_config"}, call("gen_client_config")).leaf = true - entry({"admin", "services", appname, "get_now_use_node"}, call("get_now_use_node")).leaf = true - entry({"admin", "services", appname, "get_redir_log"}, call("get_redir_log")).leaf = true - entry({"admin", "services", appname, "get_socks_log"}, call("get_socks_log")).leaf = true - entry({"admin", "services", appname, "get_log"}, call("get_log")).leaf = true - entry({"admin", "services", appname, "clear_log"}, call("clear_log")).leaf = true - entry({"admin", "services", appname, "index_status"}, call("index_status")).leaf = true - entry({"admin", "services", appname, "haproxy_status"}, call("haproxy_status")).leaf = true - entry({"admin", "services", appname, "socks_status"}, call("socks_status")).leaf = true - entry({"admin", "services", appname, "connect_status"}, call("connect_status")).leaf = true - entry({"admin", "services", appname, "ping_node"}, call("ping_node")).leaf = true - entry({"admin", "services", appname, "urltest_node"}, call("urltest_node")).leaf = true - entry({"admin", "services", appname, "add_node"}, call("add_node")).leaf = true - entry({"admin", "services", appname, "set_node"}, call("set_node")).leaf = true - entry({"admin", "services", appname, "copy_node"}, call("copy_node")).leaf = true - entry({"admin", "services", appname, "clear_all_nodes"}, call("clear_all_nodes")).leaf = true - entry({"admin", "services", appname, "delete_select_nodes"}, call("delete_select_nodes")).leaf = true - entry({"admin", "services", appname, "reassign_group"}, call("reassign_group")).leaf = true - entry({"admin", "services", appname, "get_node"}, call("get_node")).leaf = true - entry({"admin", "services", appname, "save_node_order"}, call("save_node_order")).leaf = true - entry({"admin", "services", appname, "save_node_list_opt"}, call("save_node_list_opt")).leaf = true - entry({"admin", "services", appname, "update_rules"}, call("update_rules")).leaf = true - entry({"admin", "services", appname, "subscribe_del_node"}, call("subscribe_del_node")).leaf = true - entry({"admin", "services", appname, "subscribe_del_all"}, call("subscribe_del_all")).leaf = true - entry({"admin", "services", appname, "subscribe_manual"}, call("subscribe_manual")).leaf = true - entry({"admin", "services", appname, "subscribe_manual_all"}, call("subscribe_manual_all")).leaf = true - entry({"admin", "services", appname, "flush_set"}, call("flush_set")).leaf = true - - --[[Components update]] - entry({"admin", "services", appname, "check_passwall2"}, call("app_check")).leaf = true - local coms = require "luci.passwall2.com" - local com - for com, _ in pairs(coms) do - entry({"admin", "services", appname, "check_" .. com}, call("com_check", com)).leaf = true - entry({"admin", "services", appname, "update_" .. com}, call("com_update", com)).leaf = true - end - - --[[Backup]] - entry({"admin", "services", appname, "create_backup"}, call("create_backup")).leaf = true - entry({"admin", "services", appname, "restore_backup"}, call("restore_backup")).leaf = true - - --[[geoview]] - entry({"admin", "services", appname, "geo_view"}, call("geo_view")).leaf = true -end - -local function http_write_json(content) - http.prepare_content("application/json") - http.write(jsonStringify(content or {code = 1})) -end - -function reset_config() - luci.sys.call('/etc/init.d/passwall2 stop') - luci.sys.call('[ -f "/usr/share/passwall2/0_default_config" ] && cp -f /usr/share/passwall2/0_default_config /etc/config/passwall2') - http.redirect(api.url()) -end - -function show_menu() - api.sh_uci_del(appname, "@global[0]", "hide_from_luci", true) - luci.sys.call("rm -rf /tmp/luci-*") - luci.sys.call("/etc/init.d/rpcd restart >/dev/null") - http.redirect(api.url()) -end - -function hide_menu() - api.sh_uci_set(appname, "@global[0]", "hide_from_luci", "1", true) - luci.sys.call("rm -rf /tmp/luci-*") - luci.sys.call("/etc/init.d/rpcd restart >/dev/null") - http.redirect(luci.dispatcher.build_url("admin", "status", "overview")) -end - -function link_add_node() - -- Fragmented reception to overcome uhttpd limitations - local tmp_file = "/tmp/links.conf" - local chunk = http.formvalue("chunk") - local chunk_index = tonumber(http.formvalue("chunk_index")) - local total_chunks = tonumber(http.formvalue("total_chunks")) - local group = http.formvalue("group") or "default" - - if chunk and chunk_index ~= nil and total_chunks ~= nil then - -- Assemble the files in order - local mode = "a" - if chunk_index == 0 then - mode = "w" - end - local f = io.open(tmp_file, mode) - if f then - f:write(chunk) - f:close() - end - -- If it's the last piece, then it will be executed. - if chunk_index + 1 == total_chunks then - luci.sys.call("lua /usr/share/passwall2/subscribe.lua add " .. group) - end - end -end - -function socks_autoswitch_add_node() - local id = http.formvalue("id") - local key = http.formvalue("key") - if id and id ~= "" and key and key ~= "" then - uci:set(appname, id, "enable_autoswitch", "1") - local new_list = uci:get(appname, id, "autoswitch_backup_node") or {} - for i = #new_list, 1, -1 do - if (uci:get(appname, new_list[i], "remarks") or ""):find(key) then - table.remove(new_list, i) - end - end - for k, e in ipairs(api.get_valid_nodes()) do - if e.node_type == "normal" and e["remark"]:find(key) then - table.insert(new_list, e.id) - end - end - uci:set_list(appname, id, "autoswitch_backup_node", new_list) - api.uci_save(uci, appname) - end - http.redirect(api.url("socks_config", id)) -end - -function socks_autoswitch_remove_node() - local id = http.formvalue("id") - local key = http.formvalue("key") - if id and id ~= "" and key and key ~= "" then - uci:set(appname, id, "enable_autoswitch", "1") - local new_list = uci:get(appname, id, "autoswitch_backup_node") or {} - for i = #new_list, 1, -1 do - if (uci:get(appname, new_list[i], "remarks") or ""):find(key) then - table.remove(new_list, i) - end - end - uci:set_list(appname, id, "autoswitch_backup_node", new_list) - api.uci_save(uci, appname) - end - http.redirect(api.url("socks_config", id)) -end - -function gen_client_config() - local id = http.formvalue("id") - local config_file = api.TMP_PATH .. "/config_" .. id - luci.sys.call(string.format("/usr/share/passwall2/app.sh run_socks flag=config_%s node=%s bind=127.0.0.1 socks_port=1080 config_file=%s no_run=1", id, id, config_file)) - if nixio.fs.access(config_file) then - http.prepare_content("application/json") - http.write(luci.sys.exec("cat " .. config_file)) - luci.sys.call("rm -f " .. config_file) - else - http.redirect(api.url("node_list")) - end -end - -function get_now_use_node() - local e = {} - local node = api.get_cache_var("ACL_GLOBAL_node") - if node then - e["global"] = node - end - http_write_json(e) -end - -function get_redir_log() - local id = http.formvalue("id") - local name = http.formvalue("name") - local file_path = "/tmp/etc/passwall2/acl/" .. id .. "/" .. name .. ".log" - if nixio.fs.access(file_path) then - local content = luci.sys.exec("tail -n 19999 '" .. file_path .. "'") - content = content:gsub("\n", "
") - http.write(content) - else - http.write(string.format("", i18n.translate("Not enabled log"))) - end -end - -function get_socks_log() - local name = http.formvalue("name") - local path = "/tmp/etc/passwall2/SOCKS_" .. name .. ".log" - if nixio.fs.access(path) then - local content = luci.sys.exec("tail -n 5000 ".. path) - content = content:gsub("\n", "
") - http.write(content) - else - http.write(string.format("", i18n.translate("Not enabled log"))) - end -end - -function get_log() - -- luci.sys.exec("[ -f /tmp/log/passwall2.log ] && sed '1!G;h;$!d' /tmp/log/passwall2.log > /tmp/log/passwall2_show.log") - http.write(luci.sys.exec("[ -f '/tmp/log/passwall2.log' ] && cat /tmp/log/passwall2.log")) -end - -function clear_log() - luci.sys.call("echo '' > /tmp/log/passwall2.log") -end - -function index_status() - local e = {} - e["global_status"] = luci.sys.call("/bin/busybox top -bn1 | grep -v 'grep' | grep '/tmp/etc/passwall2/bin/' | grep 'default' | grep 'global' >/dev/null") == 0 - http_write_json(e) -end - -function haproxy_status() - local e = {} - e["status"] = luci.sys.call(string.format("/bin/busybox top -bn1 | grep -v grep | grep '%s/bin/' | grep haproxy >/dev/null", appname)) == 0 - http_write_json(e) -end - -function socks_status() - local e = {} - local index = http.formvalue("index") - local id = http.formvalue("id") - e.index = index - e.socks_status = luci.sys.call(string.format("/bin/busybox top -bn1 | grep -v -E 'grep|acl/|acl_' | grep '%s/bin/' | grep '%s' | grep 'SOCKS_' > /dev/null", appname, id)) == 0 - local use_http = uci:get(appname, id, "http_port") or 0 - e.use_http = 0 - if tonumber(use_http) > 0 then - e.use_http = 1 - e.http_status = luci.sys.call(string.format("/bin/busybox top -bn1 | grep -v -E 'grep|acl/|acl_' | grep '%s/bin/' | grep '%s' | grep -E 'HTTP_|HTTP2SOCKS' > /dev/null", appname, id)) == 0 - end - http_write_json(e) -end - -function connect_status() - local e = {} - e.use_time = "" - local url = http.formvalue("url") - local result = luci.sys.exec('curl --connect-timeout 3 -o /dev/null -I -sk -w "%{http_code}:%{time_appconnect}" ' .. url) - local code = tonumber(luci.sys.exec("echo -n '" .. result .. "' | awk -F ':' '{print $1}'") or "0") - if code ~= 0 then - local use_time = luci.sys.exec("echo -n '" .. result .. "' | awk -F ':' '{print $2}'") - if use_time:find("%.") then - e.use_time = string.format("%.2f", use_time * 1000) - else - e.use_time = string.format("%.2f", use_time / 1000) - end - e.ping_type = "curl" - end - http_write_json(e) -end - -function ping_node() - local index = http.formvalue("index") - local address = http.formvalue("address") - local port = http.formvalue("port") - local type = http.formvalue("type") or "icmp" - local e = {} - e.index = index - if type == "tcping" and luci.sys.exec("echo -n $(command -v tcping)") ~= "" then - if api.is_ipv6(address) then - address = api.get_ipv6_only(address) - end - e.ping = luci.sys.exec(string.format("echo -n $(tcping -q -c 1 -i 1 -t 2 -p %s %s 2>&1 | grep -o 'time=[0-9]*' | awk -F '=' '{print $2}') 2>/dev/null", port, address)) - else - e.ping = luci.sys.exec("echo -n $(ping -c 1 -W 1 %q 2>&1 | grep -o 'time=[0-9]*' | awk -F '=' '{print $2}') 2>/dev/null" % address) - end - http_write_json(e) -end - -function urltest_node() - local index = http.formvalue("index") - local id = http.formvalue("id") - local e = {} - e.index = index - local result = luci.sys.exec(string.format("/usr/share/passwall2/test.sh url_test_node %s %s", id, "urltest_node")) - local code = tonumber(luci.sys.exec("echo -n '" .. result .. "' | awk -F ':' '{print $1}'") or "0") - if code ~= 0 then - local use_time = luci.sys.exec("echo -n '" .. result .. "' | awk -F ':' '{print $2}'") - if use_time:find("%.") then - e.use_time = string.format("%.2f", use_time * 1000) - else - e.use_time = string.format("%.2f", use_time / 1000) - end - end - http_write_json(e) -end - -function add_node() - local redirect = http.formvalue("redirect") - - local uuid = api.gen_short_uuid() - uci:section(appname, "nodes", uuid) - - local group = http.formvalue("group") - if group then - uci:set(appname, uuid, "group", group) - end - - if redirect == "1" then - api.uci_save(uci, appname) - http.redirect(api.url("node_config", uuid)) - else - api.uci_save(uci, appname, true, true) - http_write_json({result = uuid}) - end -end - -function set_node() - local type = http.formvalue("type") - local config = http.formvalue("config") - local section = http.formvalue("section") - uci:set(appname, type, config, section) - api.uci_save(uci, appname, true, true) - http.redirect(api.url("log")) -end - -function copy_node() - local section = http.formvalue("section") - local uuid = api.gen_short_uuid() - uci:section(appname, "nodes", uuid) - for k, v in pairs(uci:get_all(appname, section)) do - local filter = k:find("%.") - if filter and filter == 1 then - else - xpcall(function() - uci:set(appname, uuid, k, v) - end, - function(e) - end) - end - end - uci:delete(appname, uuid, "group") - uci:set(appname, uuid, "add_mode", 1) - api.uci_save(uci, appname) - http.redirect(api.url("node_config", uuid)) -end - -function clear_all_nodes() - uci:set(appname, '@global[0]', "enabled", "0") - uci:set(appname, '@global[0]', "socks_enabled", "0") - uci:set(appname, '@haproxy_config[0]', "balancing_enable", "0") - uci:delete(appname, '@global[0]', "node") - uci:foreach(appname, "socks", function(t) - uci:delete(appname, t[".name"]) - uci:set_list(appname, t[".name"], "autoswitch_backup_node", {}) - end) - uci:foreach(appname, "haproxy_config", function(t) - uci:delete(appname, t[".name"]) - end) - uci:foreach(appname, "acl_rule", function(t) - uci:delete(appname, t[".name"], "node") - end) - uci:foreach(appname, "nodes", function(node) - uci:delete(appname, node['.name']) - end) - uci:foreach(appname, "subscribe_list", function(t) - uci:delete(appname, t[".name"], "md5") - uci:delete(appname, t[".name"], "chain_proxy") - uci:delete(appname, t[".name"], "preproxy_node") - uci:delete(appname, t[".name"], "to_node") - end) - - api.uci_save(uci, appname, true, true) -end - -function delete_select_nodes() - local ids = http.formvalue("ids") - local redirect = http.formvalue("redirect") - string.gsub(ids, '[^' .. "," .. ']+', function(w) - if (uci:get(appname, "@global[0]", "node") or "") == w then - uci:delete(appname, '@global[0]', "node") - end - uci:foreach(appname, "socks", function(t) - if t["node"] == w then - uci:delete(appname, t[".name"]) - end - local auto_switch_node_list = uci:get(appname, t[".name"], "autoswitch_backup_node") or {} - for i = #auto_switch_node_list, 1, -1 do - if w == auto_switch_node_list[i] then - table.remove(auto_switch_node_list, i) - end - end - uci:set_list(appname, t[".name"], "autoswitch_backup_node", auto_switch_node_list) - end) - uci:foreach(appname, "haproxy_config", function(t) - if t["lbss"] == w then - uci:delete(appname, t[".name"]) - end - end) - uci:foreach(appname, "acl_rule", function(t) - if t["node"] == w then - uci:delete(appname, t[".name"], "node") - end - end) - uci:foreach(appname, "nodes", function(t) - if t["preproxy_node"] == w then - uci:delete(appname, t[".name"], "preproxy_node") - uci:delete(appname, t[".name"], "chain_proxy") - end - if t["to_node"] == w then - uci:delete(appname, t[".name"], "to_node") - uci:delete(appname, t[".name"], "chain_proxy") - end - local list_name = t["urltest_node"] and "urltest_node" or (t["balancing_node"] and "balancing_node") - if list_name then - local nodes = uci:get_list(appname, t[".name"], list_name) - if nodes then - local changed = false - local new_nodes = {} - for _, node in ipairs(nodes) do - if node ~= w then - table.insert(new_nodes, node) - else - changed = true - end - end - if changed then - uci:set_list(appname, t[".name"], list_name, new_nodes) - end - end - end - if t["fallback_node"] == w then - uci:delete(appname, t[".name"], "fallback_node") - end - end) - uci:foreach(appname, "subscribe_list", function(t) - if t["preproxy_node"] == w then - uci:delete(appname, t[".name"], "preproxy_node") - uci:delete(appname, t[".name"], "chain_proxy") - end - if t["to_node"] == w then - uci:delete(appname, t[".name"], "to_node") - uci:delete(appname, t[".name"], "chain_proxy") - end - end) - if (uci:get(appname, w, "add_mode") or "0") == "2" then - local group = uci:get(appname, w, "group") or "" - if group ~= "" then - uci:foreach(appname, "subscribe_list", function(t) - if t["remark"] == group then - uci:delete(appname, t[".name"], "md5") - end - end) - end - end - uci:delete(appname, w) - end) - if redirect == "1" then - api.uci_save(uci, appname) - http.redirect(api.url("node_list")) - else - api.uci_save(uci, appname, true, true) - end -end - -function get_node() - local id = http.formvalue("id") - local result = {} - local show_node_info = api.uci_get_type("global_other", "show_node_info", "0") - - local function add_is_ipv6_key(o) - if o and o.address and show_node_info == "1" then - local f = api.get_ipv6_full(o.address) - if f ~= "" then - o.ipv6 = true - o.full_address = f - end - end - end - - if id then - result = uci:get_all(appname, id) - add_is_ipv6_key(result) - else - local default_nodes = {} - local other_nodes = {} - uci:foreach(appname, "nodes", function(t) - add_is_ipv6_key(t) - if not t.group or t.group == "" then - default_nodes[#default_nodes + 1] = t - else - other_nodes[#other_nodes + 1] = t - end - end) - for i = 1, #default_nodes do result[#result + 1] = default_nodes[i] end - for i = 1, #other_nodes do result[#result + 1] = other_nodes[i] end - end - http_write_json(result) -end - -function save_node_order() - local ids = http.formvalue("ids") or "" - local new_order = {} - for id in ids:gmatch("([^,]+)") do - new_order[#new_order + 1] = id - end - for idx, name in ipairs(new_order) do - luci.sys.call(string.format("uci -q reorder %s.%s=%d", appname, name, idx - 1)) - end - api.sh_uci_commit(appname) - http_write_json({ status = "ok" }) -end - -function reassign_group() - local ids = http.formvalue("ids") or "" - local group = http.formvalue("group") or "default" - for id in ids:gmatch("([^,]+)") do - if group ~="" and group ~= "default" then - api.sh_uci_set(appname, id, "group", group) - else - api.sh_uci_del(appname, id, "group") - end - end - api.sh_uci_commit(appname) - http_write_json({ status = "ok" }) -end - -function save_node_list_opt() - local option = http.formvalue("option") or "" - local value = http.formvalue("value") or "" - if option ~= "" then - api.sh_uci_set(appname, "@global_other[0]", option, value, true) - end - http_write_json({ status = "ok" }) -end - -function update_rules() - local update = http.formvalue("update") - luci.sys.call("lua /usr/share/passwall2/rule_update.lua log '" .. update .. "' > /dev/null 2>&1 &") - http_write_json() -end - -function server_user_status() - local e = {} - e.index = http.formvalue("index") - e.status = luci.sys.call(string.format("/bin/busybox top -bn1 | grep -v 'grep' | grep '%s/bin/' | grep -i '%s' >/dev/null", appname .. "_server", http.formvalue("id"))) == 0 - http_write_json(e) -end - -function server_user_log() - local id = http.formvalue("id") - if nixio.fs.access("/tmp/etc/passwall2_server/" .. id .. ".log") then - local content = luci.sys.exec("cat /tmp/etc/passwall2_server/" .. id .. ".log") - content = content:gsub("\n", "
") - http.write(content) - else - http.write(string.format("", i18n.translate("Not enabled log"))) - end -end - -function server_get_log() - http.write(luci.sys.exec("[ -f '/tmp/log/passwall2_server.log' ] && cat /tmp/log/passwall2_server.log")) -end - -function server_clear_log() - luci.sys.call("echo '' > /tmp/log/passwall2_server.log") -end - -function app_check() - local json = api.to_check_self() - http_write_json(json) -end - -function com_check(comname) - local json = api.to_check("", comname) - http_write_json(json) -end - -function com_update(comname) - local json = nil - local task = http.formvalue("task") - if task == "extract" then - json = api.to_extract(comname, http.formvalue("file"), http.formvalue("subfix")) - elseif task == "move" then - json = api.to_move(comname, http.formvalue("file")) - else - json = api.to_download(comname, http.formvalue("url"), http.formvalue("size")) - end - - http_write_json(json) -end - -local backup_files = { - "/etc/config/passwall2", - "/etc/config/passwall2_server", - "/usr/share/passwall2/domains_excluded" -} - -function create_backup() - local date = os.date("%y%m%d%H%M") - local tar_file = "/tmp/passwall2-" .. date .. "-backup.tar.gz" - fs.remove(tar_file) - local cmd = "tar -czf " .. tar_file .. " " .. table.concat(backup_files, " ") - api.sys.call(cmd) - http.header("Content-Disposition", "attachment; filename=passwall2-" .. date .. "-backup.tar.gz") - http.header("X-Backup-Filename", "passwall2-" .. date .. "-backup.tar.gz") - http.prepare_content("application/octet-stream") - http.write(fs.readfile(tar_file)) - fs.remove(tar_file) -end - -function restore_backup() - local result = { status = "error", message = "unknown error" } - local ok, err = pcall(function() - local filename = http.formvalue("filename") - local chunk = http.formvalue("chunk") - local chunk_index = tonumber(http.formvalue("chunk_index") or "-1") - local total_chunks = tonumber(http.formvalue("total_chunks") or "-1") - if not filename then - result = { status = "error", message = "Missing filename" } - return - end - if not chunk then - result = { status = "error", message = "Missing chunk data" } - return - end - local file_path = "/tmp/" .. filename - local decoded = nixio.bin.b64decode(chunk) - if not decoded then - result = { status = "error", message = "Base64 decode failed" } - return - end - local fp = io.open(file_path, "a+") - if not fp then - result = { status = "error", message = "Failed to open file: " .. file_path } - return - end - fp:write(decoded) - fp:close() - if chunk_index + 1 == total_chunks then - api.sys.call("echo '' > /tmp/log/passwall2.log") - api.log(0, string.format(" * PassWall2 %s", i18n.translate("Configuration file uploaded successfully…"))) - local temp_dir = '/tmp/passwall2_bak' - api.sys.call("mkdir -p " .. temp_dir) - if api.sys.call("tar -xzf " .. file_path .. " -C " .. temp_dir) == 0 then - for _, backup_file in ipairs(backup_files) do - local temp_file = temp_dir .. backup_file - if fs.access(temp_file) then - api.sys.call("cp -f " .. temp_file .. " " .. backup_file) - end - end - api.log(0, string.format(" * PassWall2 %s", i18n.translate("Configuration restored successfully…"))) - api.log(0, string.format(" * PassWall2 %s", i18n.translate("Service restarting…"))) - luci.sys.call('/etc/init.d/passwall2 restart > /dev/null 2>&1 &') - luci.sys.call('/etc/init.d/passwall2_server restart > /dev/null 2>&1 &') - result = { status = "success", message = "Upload completed", path = file_path } - else - api.log(0, string.format(" * PassWall2 %s", i18n.translate("Configuration file decompression failed, please try again!"))) - result = { status = "error", message = "Decompression failed" } - end - api.sys.call("rm -rf " .. temp_dir) - fs.remove(file_path) - else - result = { status = "success", message = "Chunk received" } - end - end) - if not ok then - result = { status = "error", message = tostring(err) } - end - http_write_json(result) -end - -function geo_view() - local action = luci.http.formvalue("action") - local value = luci.http.formvalue("value") - if not value or value == "" then - http.prepare_content("text/plain") - http.write(i18n.translate("Please enter query content!")) - return - end - local geo_dir = (uci:get(appname, "@global_rules[0]", "v2ray_location_asset") or "/usr/share/v2ray/"):match("^(.*)/") - local geosite_path = geo_dir .. "/geosite.dat" - local geoip_path = geo_dir .. "/geoip.dat" - local geo_type, file_path, cmd - local geo_string = "" - if action == "lookup" then - if api.datatypes.ipaddr(value) or api.datatypes.ip6addr(value) then - geo_type, file_path = "geoip", geoip_path - else - geo_type, file_path = "geosite", geosite_path - end - cmd = string.format("geoview -type %s -action lookup -input '%s' -value '%s' -lowmem=true", geo_type, file_path, value) - geo_string = luci.sys.exec(cmd):lower() - if geo_string ~= "" then - local lines = {} - for line in geo_string:gmatch("([^\n]*)\n?") do - if line ~= "" then - table.insert(lines, geo_type .. ":" .. line) - end - end - geo_string = table.concat(lines, "\n") - end - elseif action == "extract" then - local prefix, list = value:match("^(geoip:)(.*)$") - if not prefix then - prefix, list = value:match("^(geosite:)(.*)$") - end - if prefix and list and list ~= "" then - geo_type = prefix:sub(1, -2) - file_path = (geo_type == "geoip") and geoip_path or geosite_path - cmd = string.format("geoview -type %s -action extract -input '%s' -list '%s' -lowmem=true", geo_type, file_path, list) - geo_string = luci.sys.exec(cmd) - end - end - http.prepare_content("text/plain") - if geo_string and geo_string ~="" then - http.write(geo_string) - else - http.write(i18n.translate("No results were found!")) - end -end - -function subscribe_del_node() - local remark = http.formvalue("remark") - if remark and remark ~= "" then - luci.sys.call("lua /usr/share/" .. appname .. "/subscribe.lua truncate " .. luci.util.shellquote(remark) .. " > /dev/null 2>&1") - end - http.status(200, "OK") -end - -function subscribe_del_all() - luci.sys.call("lua /usr/share/" .. appname .. "/subscribe.lua truncate > /dev/null 2>&1") - http.status(200, "OK") -end - -function subscribe_manual() - local section = http.formvalue("section") or "" - local current_url = http.formvalue("url") or "" - if section == "" or current_url == "" then - http_write_json({ success = false, msg = "Missing section or URL, skip." }) - return - end - local uci_url = api.sh_uci_get(appname, section, "url") - if not uci_url or uci_url == "" then - http_write_json({ success = false, msg = i18n.translate("Please save and apply before manually subscribing.") }) - return - end - if uci_url ~= current_url then - api.sh_uci_set(appname, section, "url", current_url, true) - end - luci.sys.call("lua /usr/share/" .. appname .. "/subscribe.lua start " .. section .. " manual >/dev/null 2>&1 &") - http_write_json({ success = true, msg = "Subscribe triggered." }) -end - -function subscribe_manual_all() - local sections = http.formvalue("sections") or "" - local urls = http.formvalue("urls") or "" - if sections == "" or urls == "" then - http_write_json({ success = false, msg = "Missing section or URL, skip." }) - return - end - local section_list = util.split(sections, ",") - local url_list = util.split(urls, ",") - -- Check if there are any unsaved configurations. - for i, section in ipairs(section_list) do - local uci_url = api.sh_uci_get(appname, section, "url") - if not uci_url or uci_url == "" then - http_write_json({ success = false, msg = i18n.translate("Please save and apply before manually subscribing.") }) - return - end - end - -- Save URLs that have changed. - for i, section in ipairs(section_list) do - local current_url = url_list[i] or "" - local uci_url = api.sh_uci_get(appname, section, "url") - if current_url ~= "" and uci_url ~= current_url then - api.sh_uci_set(appname, section, "url", current_url, true) - end - end - luci.sys.call("lua /usr/share/" .. appname .. "/subscribe.lua start all manual >/dev/null 2>&1 &") - http_write_json({ success = true, msg = "Subscribe triggered." }) -end - -function flush_set() - local redirect = http.formvalue("redirect") or "0" - local reload = http.formvalue("reload") or "0" - if reload == "1" then - uci:set(appname, '@global[0]', "flush_set", "1") - api.uci_save(uci, appname, true, true) - else - api.sh_uci_set(appname, "@global[0]", "flush_set", "1", true) - end - if redirect == "1" then - http.redirect(api.url("log")) - end -end diff --git a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/acl.lua b/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/acl.lua deleted file mode 100644 index 3df0c9f755..0000000000 --- a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/acl.lua +++ /dev/null @@ -1,68 +0,0 @@ -local api = require "luci.passwall2.api" -local appname = api.appname -local sys = api.sys - -m = Map(appname) -api.set_apply_on_parse(m) - -s = m:section(TypedSection, "global", translate("ACLs"), "" .. translate("ACLs is a tools which used to designate specific IP proxy mode.") .. "") -s.anonymous = true - -o = s:option(Flag, "acl_enable", translate("Main switch")) -o.rmempty = false -o.default = false - --- [[ ACLs Settings ]]-- -s = m:section(TypedSection, "acl_rule") -s.template = "cbi/tblsection" -s.sortable = true -s.anonymous = true -s.addremove = true -s.extedit = api.url("acl_config", "%s") -function s.create(e, t) - t = TypedSection.create(e, t) - luci.http.redirect(e.extedit:format(t)) -end - ----- Enable -o = s:option(Flag, "enabled", translate("Enable")) -o.default = 1 -o.rmempty = false - ----- Remarks -o = s:option(Value, "remarks", translate("Remarks")) -o.rmempty = true - -local mac_t = {} -sys.net.mac_hints(function(e, t) - mac_t[e] = { - ip = t, - mac = e - } -end) - -o = s:option(DummyValue, "sources", translate("Source")) -o.rawhtml = true -o.cfgvalue = function(t, n) - local e = '' - local v = Value.cfgvalue(t, n) or '-' - string.gsub(v, '[^' .. " " .. ']+', function(w) - local a = w - if mac_t[w] then - a = a .. ' (' .. mac_t[w].ip .. ')' - end - if #e > 0 then - e = e .. "
" - end - e = e .. a - end) - return e -end - -i = s:option(DummyValue, "interface", translate("Source Interface")) -i.cfgvalue = function(t, n) - local v = Value.cfgvalue(t, n) or '-' - return v -end - -return m diff --git a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/acl_config.lua b/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/acl_config.lua deleted file mode 100644 index 0fdfc7c5ae..0000000000 --- a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/acl_config.lua +++ /dev/null @@ -1,354 +0,0 @@ -local api = require "luci.passwall2.api" -local appname = api.appname - -m = Map(appname) -api.set_apply_on_parse(m) - -if not arg[1] or not m:get(arg[1]) then - luci.http.redirect(api.url("acl")) -end - -m:append(Template(appname .. "/cbi/nodes_listvalue_com")) - -local sys = api.sys - -local port_validate = function(self, value, t) - return value:gsub("-", ":") -end - -local nodes_table = {} -for k, e in ipairs(api.get_valid_nodes()) do - nodes_table[#nodes_table + 1] = e -end - -local dynamicList_write = function(self, section, value) - local t = {} - local t2 = {} - if type(value) == "table" then - local x - for _, x in ipairs(value) do - if x and #x > 0 then - if not t2[x] then - t2[x] = x - t[#t+1] = x - end - end - end - else - t = { value } - end - t = table.concat(t, " ") - return DynamicList.write(self, section, t) -end -local doh_validate = function(self, value, t) - if value ~= "" then - local flag = 0 - local util = require "luci.util" - local val = util.split(value, ",") - local url = val[1] - val[1] = nil - for i = 1, #val do - local v = val[i] - if v then - if not datatypes.ipmask4(v) then - flag = 1 - end - end - end - if flag == 0 then - return value - end - end - return nil, translate("DoH request address") .. " " .. translate("Format must be:") .. " URL,IP" -end --- [[ ACLs Settings ]]-- -s = m:section(NamedSection, arg[1], translate("ACLs"), translate("ACLs")) -s.addremove = false -s.dynamic = false - ----- Enable -o = s:option(Flag, "enabled", translate("Enable")) -o.default = 1 -o.rmempty = false - ----- Remarks -o = s:option(Value, "remarks", translate("Remarks")) -o.default = arg[1] -o.rmempty = false - -o = s:option(ListValue, "interface", translate("Source Interface")) -o:value("", translate("All")) -local wa = require "luci.tools.webadmin" -wa.cbi_add_networks(o) - -local mac_t = {} -sys.net.mac_hints(function(e, t) - mac_t[#mac_t + 1] = { - ip = t, - mac = e - } -end) -table.sort(mac_t, function(a,b) - if #a.ip < #b.ip then - return true - elseif #a.ip == #b.ip then - if a.ip < b.ip then - return true - else - return #a.ip < #b.ip - end - end - return false -end) - ----- Source -sources = s:option(DynamicList, "sources", translate("Source")) -sources.description = "
  • " .. translate("Example:") -.. "
  • " .. translate("MAC") .. ": 00:00:00:FF:FF:FF" -.. "
  • " .. translate("IP") .. ": 192.168.1.100" -.. "
  • " .. translate("IP CIDR") .. ": 192.168.1.0/24" -.. "
  • " .. translate("IP range") .. ": 192.168.1.100-192.168.1.200" -.. "
  • " .. translate("IPSet") .. ": ipset:lanlist" -.. "
" -sources.cast = "string" -for _, key in pairs(mac_t) do - sources:value(key.mac, "%s (%s)" % {key.mac, key.ip}) -end - -sources.cfgvalue = function(self, section) - local value - if self.tag_error[section] then - value = self:formvalue(section) - else - value = self.map:get(section, self.option) - if type(value) == "string" then - local value2 = {} - string.gsub(value, '[^' .. " " .. ']+', function(w) table.insert(value2, w) end) - value = value2 - end - end - return value -end -sources.validate = function(self, value, t) - local err = {} - for _, v in ipairs(value) do - local flag = false - if v:find("ipset:") and v:find("ipset:") == 1 then - local ipset = v:gsub("ipset:", "") - if ipset and ipset ~= "" then - flag = true - end - end - - if flag == false and datatypes.macaddr(v) then - flag = true - end - - if flag == false and datatypes.ip4addr(v) then - flag = true - end - - if flag == false and api.iprange(v) then - flag = true - end - - if flag == false then - err[#err + 1] = v - end - end - - if #err > 0 then - self:add_error(t, "invalid", translate("Not true format, please re-enter!")) - for _, v in ipairs(err) do - self:add_error(t, "invalid", v) - end - end - - return value -end -sources.write = dynamicList_write - ----- TCP No Redir Ports -local TCP_NO_REDIR_PORTS = m:get("@global_forwarding[0]", "tcp_no_redir_ports") -o = s:option(Value, "tcp_no_redir_ports", translate("TCP No Redir Ports")) -o:value("", translate("Use global config") .. "(" .. TCP_NO_REDIR_PORTS .. ")") -o:value("disable", translate("No patterns are used")) -o:value("1:65535", translate("All")) -o.validate = port_validate - ----- UDP No Redir Ports -local UDP_NO_REDIR_PORTS = m:get("@global_forwarding[0]", "udp_no_redir_ports") -o = s:option(Value, "udp_no_redir_ports", translate("UDP No Redir Ports"), - "" .. - translate("If you don't want to let the device in the list to go proxy, please choose all.") .. - "") -o:value("", translate("Use global config") .. "(" .. UDP_NO_REDIR_PORTS .. ")") -o:value("disable", translate("No patterns are used")) -o:value("1:65535", translate("All")) -o.validate = port_validate - -o = s:option(DummyValue, "_hide_node_option", "") -o.template = "passwall2/cbi/hidevalue" -o.value = "1" -o:depends({ tcp_no_redir_ports = "1:65535", udp_no_redir_ports = "1:65535" }) -if TCP_NO_REDIR_PORTS == "1:65535" and UDP_NO_REDIR_PORTS == "1:65535" then - o:depends({ tcp_no_redir_ports = "", udp_no_redir_ports = "" }) -end - -local GLOBAL_ENABLED = m:get("@global[0]", "enabled") -local NODE = m:get("@global[0]", "node") -o = s:option(ListValue, "node", "" .. translate("Node") .. "") -if GLOBAL_ENABLED == "1" and NODE then - o:value("", translate("Use global config") .. "(" .. api.get_node_name(NODE) .. ")") - o.group = {""} -else - o.group = {} -end -o:depends({ _hide_node_option = "1", ['!reverse'] = true }) -o.template = appname .. "/cbi/nodes_listvalue" - -o = s:option(DummyValue, "_hide_dns_option", "") -o.template = "passwall2/cbi/hidevalue" -o.value = "1" -o:depends({ node = "" }) -if GLOBAL_ENABLED == "1" and NODE then - o:depends({ node = NODE }) -end - -o = s:option(DummyValue, "_xray_node", "") -o.template = "passwall2/cbi/hidevalue" -o.value = "1" -o:depends({ __hide = true }) - ----- TCP Redir Ports -local TCP_REDIR_PORTS = m:get("@global_forwarding[0]", "tcp_redir_ports") -o = s:option(Value, "tcp_redir_ports", translate("TCP Redir Ports")) -o:value("", translate("Use global config") .. "(" .. TCP_REDIR_PORTS .. ")") -o:value("1:65535", translate("All")) -o:value("22,25,53,80,143,443,465,587,853,873,993,995,5222,8080,8443,9418", translate("Common Use")) -o:value("80,443", "80,443") -o.validate = port_validate -o:depends({ _hide_node_option = "1", ['!reverse'] = true }) - ----- UDP Redir Ports -local UDP_REDIR_PORTS = m:get("@global_forwarding[0]", "udp_redir_ports") -o = s:option(Value, "udp_redir_ports", translate("UDP Redir Ports")) -o:value("", translate("Use global config") .. "(" .. UDP_REDIR_PORTS .. ")") -o:value("1:65535", translate("All")) -o.validate = port_validate -o:depends({ _hide_node_option = "1", ['!reverse'] = true }) - -o = s:option(DummyValue, "tips", " ") -o.rawhtml = true -o.cfgvalue = function(t, n) - return string.format('%s', - translate("The port settings support single ports and ranges.
Separate multiple ports with commas (,).
Example: 21,80,443,1000:2000.")) -end - -o = s:option(ListValue, "direct_dns_query_strategy", translate("Direct Query Strategy")) -o.default = "UseIP" -o:value("UseIP") -o:value("UseIPv4") -o:value("UseIPv6") -o:depends({ _hide_dns_option = "1", ['!reverse'] = true }) - -o = s:option(Flag, "write_ipset_direct", translate("Direct DNS result write to IPSet"), translate("Perform the matching direct domain name rules into IP to IPSet/NFTSet, and then connect directly (not entering the core). Maybe conflict with some special circumstances.")) -o.default = "1" -o:depends({ direct_dns_query_strategy = "", ['!reverse'] = true }) - -o = s:option(ListValue, "remote_dns_protocol", translate("Remote DNS Protocol")) -o:value("tcp", "TCP") -o:value("doh", "DoH") -o:value("udp", "UDP") -o:depends({ _hide_dns_option = "1", ['!reverse'] = true }) - ----- DNS Forward -o = s:option(Value, "remote_dns", translate("Remote DNS")) -o.datatype = "or(ipaddr,ipaddrport)" -o.default = "1.1.1.1" -o:value("1.1.1.1", "1.1.1.1 (CloudFlare)") -o:value("1.1.1.2", "1.1.1.2 (CloudFlare-Security)") -o:value("8.8.4.4", "8.8.4.4 (Google)") -o:value("8.8.8.8", "8.8.8.8 (Google)") -o:value("9.9.9.9", "9.9.9.9 (Quad9-Recommended)") -o:value("149.112.112.112", "149.112.112.112 (Quad9-Recommended)") -o:value("208.67.220.220", "208.67.220.220 (OpenDNS)") -o:value("208.67.222.222", "208.67.222.222 (OpenDNS)") -o:depends("remote_dns_protocol", "tcp") -o:depends("remote_dns_protocol", "udp") - ----- DoH -o = s:option(Value, "remote_dns_doh", translate("Remote DNS DoH")) -o:value("https://1.1.1.1/dns-query", "CloudFlare") -o:value("https://1.1.1.2/dns-query", "CloudFlare-Security") -o:value("https://8.8.4.4/dns-query", "Google 8844") -o:value("https://8.8.8.8/dns-query", "Google 8888") -o:value("https://9.9.9.9/dns-query", "Quad9-Recommended 9.9.9.9") -o:value("https://149.112.112.112/dns-query", "Quad9-Recommended 149.112.112.112") -o:value("https://208.67.222.222/dns-query", "OpenDNS") -o:value("https://dns.adguard.com/dns-query,94.140.14.14", "AdGuard") -o:value("https://doh.libredns.gr/dns-query,116.202.176.26", "LibreDNS") -o:value("https://doh.libredns.gr/ads,116.202.176.26", "LibreDNS (No Ads)") -o.default = "https://1.1.1.1/dns-query" -o.validate = doh_validate -o:depends("remote_dns_protocol", "doh") - -o = s:option(Value, "remote_dns_client_ip", translate("Remote DNS EDNS Client Subnet")) -o.description = translate("Notify the DNS server when the DNS query is notified, the location of the client (cannot be a private IP address).") .. "
" .. - translate("This feature requires the DNS server to support the Edns Client Subnet (RFC7871).") -o.datatype = "ipaddr" -o:depends("remote_dns_protocol", "tcp") -o:depends("remote_dns_protocol", "doh") -o:depends("remote_dns_protocol", "udp") - -o = s:option(ListValue, "remote_dns_detour", translate("Remote DNS Outbound")) -o.default = "remote" -o:value("remote", translate("Remote")) -o:value("direct", translate("Direct")) -o:depends("remote_dns_protocol", "tcp") -o:depends("remote_dns_protocol", "doh") -o:depends("remote_dns_protocol", "udp") - -o = s:option(Flag, "remote_fakedns", "FakeDNS", translate("Use FakeDNS work in the domain that proxy.")) -o.default = "0" -o.rmempty = false -o:depends("remote_dns_protocol", "tcp") -o:depends("remote_dns_protocol", "doh") -o:depends("remote_dns_protocol", "udp") - -o = s:option(ListValue, "remote_dns_query_strategy", translate("Remote Query Strategy")) -o.default = "UseIPv4" -o:value("UseIP") -o:value("UseIPv4") -o:value("UseIPv6") -o:depends("remote_dns_protocol", "tcp") -o:depends("remote_dns_protocol", "doh") -o:depends("remote_dns_protocol", "udp") - -o = s:option(TextValue, "dns_hosts", translate("Domain Override")) -o.rows = 5 -o.wrap = "off" -o:depends({ __hide = true }) -o.remove = function(self, section) - local node_value = s.fields["node"]:formvalue(arg[1]) - if node_value then - local node_t = m:get(node_value) or {} - if node_t.type == "Xray" then - AbstractValue.remove(self, section) - end - end -end - -local o_node = s.fields["node"] - -for k, v in pairs(nodes_table) do - o_node:value(v.id, v["remark"]) - o_node.group[#o_node.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - if v.type == "Xray" then - s.fields["_xray_node"]:depends({ node = v.id }) - end -end - -s.fields["dns_hosts"]:depends({ _xray_node = "1" }) - -return m diff --git a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/app_update.lua b/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/app_update.lua deleted file mode 100644 index 5649b016cf..0000000000 --- a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/app_update.lua +++ /dev/null @@ -1,29 +0,0 @@ -local api = require "luci.passwall2.api" -local appname = api.appname - -m = Map(appname) -api.set_apply_on_parse(m) - --- [[ App Settings ]]-- -s = m:section(TypedSection, "global_app", translate("App Update"), - "" .. - translate("Please confirm that your firmware supports FPU.") .. - "") -s.anonymous = true -s:append(Template(appname .. "/app_update/app_version")) - -local k, v -local com = require "luci.passwall2.com" -for k, v in pairs(com) do - o = s:option(Value, k:gsub("%-","_") .. "_file", translatef("%s App Path", v.name)) - o.default = v.default_path or ("/usr/bin/" .. k) - o.rmempty = false -end - -o = s:option(DummyValue, "tips", " ") -o.rawhtml = true -o.cfgvalue = function(t, n) - return string.format('%s', translate("if you want to run from memory, change the path, /tmp beginning then save the application and update it manually.")) -end - -return m diff --git a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/geoview.lua b/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/geoview.lua deleted file mode 100644 index 071d8e80a2..0000000000 --- a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/geoview.lua +++ /dev/null @@ -1,16 +0,0 @@ -local api = require "luci.passwall2.api" -local appname = "passwall2" -local fs = api.fs -local uci = api.uci - -local geo_dir = (uci:get(appname, "@global_rules[0]", "v2ray_location_asset") or "/usr/share/v2ray/"):match("^(.*)/") -local geosite_path = geo_dir .. "/geosite.dat" -local geoip_path = geo_dir .. "/geoip.dat" -if fs.access(geosite_path) and fs.access(geoip_path) then - f = SimpleForm(appname) - f.reset = false - f.submit = false - f:append(Template(appname .. "/rule/geoview")) -end - -return f \ No newline at end of file diff --git a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/global.lua b/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/global.lua deleted file mode 100644 index 0c8323992c..0000000000 --- a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/global.lua +++ /dev/null @@ -1,516 +0,0 @@ -local api = require "luci.passwall2.api" -local appname = api.appname -local datatypes = api.datatypes -local has_singbox = api.finded_com("sing-box") -local has_xray = api.finded_com("xray") - -m = Map(appname) -api.set_apply_on_parse(m) - -m:append(Template(appname .. "/cbi/nodes_listvalue_com")) - -local nodes_table = {} -for k, e in ipairs(api.get_valid_nodes()) do - nodes_table[#nodes_table + 1] = e -end - -local normal_list = {} -local balancing_list = {} -local urltest_list = {} -local shunt_list = {} -local iface_list = {} -for k, v in pairs(nodes_table) do - if v.node_type == "normal" then - normal_list[#normal_list + 1] = v - end - if v.protocol and v.protocol == "_balancing" then - balancing_list[#balancing_list + 1] = v - end - if v.protocol and v.protocol == "_urltest" then - urltest_list[#urltest_list + 1] = v - end - if v.protocol and v.protocol == "_shunt" then - shunt_list[#shunt_list + 1] = v - end - if v.protocol and v.protocol == "_iface" then - iface_list[#iface_list + 1] = v - end -end - -local socks_list = {} -m.uci:foreach(appname, "socks", function(s) - if s.enabled == "1" and s.node then - socks_list[#socks_list + 1] = { - id = "Socks_" .. s[".name"], - remark = translate("Socks Config") .. " [" .. s.port .. translate("Port") .. "]", - group = "Socks" - } - end -end) - -local doh_validate = function(self, value, t) - if value ~= "" then - local flag = 0 - local util = require "luci.util" - local val = util.split(value, ",") - local url = val[1] - val[1] = nil - for i = 1, #val do - local v = val[i] - if v then - if not datatypes.ipmask4(v) and not datatypes.ipmask6(v) then - flag = 1 - end - end - end - if flag == 0 then - return value - end - end - return nil, translate("DoH request address") .. " " .. translate("Format must be:") .. " URL,IP" -end - -m:append(Template(appname .. "/global/status")) - -local global_cfgid = m:get("@global[0]")[".name"] -s = m:section(TypedSection, "global") -s.anonymous = true -s.addremove = false - -s:tab("Main", translate("Main")) - --- [[ Global Settings ]]-- -o = s:taboption("Main", Flag, "enabled", translate("Main switch")) -o.rmempty = false - ----- Node -o = s:taboption("Main", ListValue, "node", "" .. translate("Node") .. "") -o.template = appname .. "/cbi/nodes_listvalue" -o:value("", translate("Close")) -o.group = {""} - --- Shunt -if (has_singbox or has_xray) and #nodes_table > 0 then - local function get_cfgvalue(shunt_node_id, option) - return function(self, section) - return m:get(shunt_node_id, option) - end - end - local function get_write(shunt_node_id, option) - return function(self, section, value) - if s.fields["node"]:formvalue(section) == shunt_node_id then - m:set(shunt_node_id, option, value) - end - end - end - local function get_remove(shunt_node_id, option) - return function(self, section) - if s.fields["node"]:formvalue(section) == shunt_node_id then - m:del(shunt_node_id, option) - end - end - end - if #normal_list > 0 then - for k, v in pairs(shunt_list) do - local vid = v.id - -- shunt node type, Sing-Box or Xray - local type = s:taboption("Main", ListValue, vid .. "-type", translate("Type")) - if has_singbox then - type:value("sing-box", translate("Sing-Box")) - end - if has_xray then - type:value("Xray", translate("Xray")) - end - type.cfgvalue = get_cfgvalue(v.id, "type") - type.write = get_write(v.id, "type") - - -- pre-proxy - o = s:taboption("Main", Flag, vid .. "-preproxy_enabled", translate("Preproxy")) - o:depends("node", v.id) - o.rmempty = false - o.cfgvalue = get_cfgvalue(v.id, "preproxy_enabled") - o.write = get_write(v.id, "preproxy_enabled") - - o = s:taboption("Main", ListValue, vid .. "-main_node", string.format('%s', translate("Preproxy Node")), translate("Set the node to be used as a pre-proxy. Each rule (including Default) has a separate switch that controls whether this rule uses the pre-proxy or not.")) - o:depends(vid .. "-preproxy_enabled", "1") - o.template = appname .. "/cbi/nodes_listvalue" - o.group = {} - for k1, v1 in pairs(socks_list) do - o:value(v1.id, v1.remark) - o.group[#o.group+1] = (v1.group and v1.group ~= "") and v1.group or translate("default") - end - for k1, v1 in pairs(balancing_list) do - o:value(v1.id, v1.remark) - o.group[#o.group+1] = (v1.group and v1.group ~= "") and v1.group or translate("default") - end - for k1, v1 in pairs(urltest_list) do - o:value(v1.id, v1.remark) - o.group[#o.group+1] = (v1.group and v1.group ~= "") and v1.group or translate("default") - end - for k1, v1 in pairs(iface_list) do - o:value(v1.id, v1.remark) - o.group[#o.group+1] = (v1.group and v1.group ~= "") and v1.group or translate("default") - end - for k1, v1 in pairs(normal_list) do - o:value(v1.id, v1.remark) - o.group[#o.group+1] = (v1.group and v1.group ~= "") and v1.group or translate("default") - end - if #o.keylist > 0 then - o.default = o.keylist[1] - end - o.cfgvalue = get_cfgvalue(v.id, "main_node") - o.write = get_write(v.id, "main_node") - - if (has_singbox and has_xray) or (v.type == "sing-box" and not has_singbox) or (v.type == "Xray" and not has_xray) then - type:depends("node", v.id) - else - type:depends({ __hide = true }) -- Always hidden. - end - - m.uci:foreach(appname, "shunt_rules", function(e) - local id = e[".name"] - local node_option = vid .. "-" .. id .. "_node" - if id and e.remarks then - o = s:taboption("Main", ListValue, node_option, string.format('* %s', api.url("shunt_rules", id), e.remarks)) - o.cfgvalue = get_cfgvalue(v.id, id) - o.write = get_write(v.id, id) - o.remove = get_remove(v.id, id) - o:depends("node", v.id) - o:value("", translate("Close")) - o:value("_default", translate("Default")) - o:value("_direct", translate("Direct Connection")) - o:value("_blackhole", translate("Blackhole")) - o.template = appname .. "/cbi/nodes_listvalue" - o.group = {"","","",""} - - local pt = s:taboption("Main", ListValue, vid .. "-".. id .. "_proxy_tag", string.format('* %s', e.remarks .. " " .. translate("Preproxy"))) - pt.cfgvalue = get_cfgvalue(v.id, id .. "_proxy_tag") - pt.write = get_write(v.id, id .. "_proxy_tag") - pt.remove = get_remove(v.id, id .. "_proxy_tag") - pt:value("", translate("Close")) - pt:value("main", translate("Preproxy Node")) - for k1, v1 in pairs(socks_list) do - o:value(v1.id, v1.remark) - o.group[#o.group+1] = (v1.group and v1.group ~= "") and v1.group or translate("default") - end - for k1, v1 in pairs(balancing_list) do - o:value(v1.id, v1.remark) - o.group[#o.group+1] = (v1.group and v1.group ~= "") and v1.group or translate("default") - end - for k1, v1 in pairs(urltest_list) do - o:value(v1.id, v1.remark) - o.group[#o.group+1] = (v1.group and v1.group ~= "") and v1.group or translate("default") - end - for k1, v1 in pairs(iface_list) do - o:value(v1.id, v1.remark) - o.group[#o.group+1] = (v1.group and v1.group ~= "") and v1.group or translate("default") - end - for k1, v1 in pairs(normal_list) do - o:value(v1.id, v1.remark) - o.group[#o.group+1] = (v1.group and v1.group ~= "") and v1.group or translate("default") - pt:depends({ [node_option] = v1.id, [vid .. "-preproxy_enabled"] = "1" }) - end - end - end) - - local id = "default_node" - o = s:taboption("Main", ListValue, vid .. "-" .. id, string.format('* %s', translate("Default"))) - o.cfgvalue = get_cfgvalue(v.id, id) - o.write = get_write(v.id, id) - o.remove = get_remove(v.id, id) - o:depends("node", v.id) - o.default = "_direct" - o:value("_direct", translate("Direct Connection")) - o:value("_blackhole", translate("Blackhole")) - o.template = appname .. "/cbi/nodes_listvalue" - o.group = {"",""} - for k1, v1 in pairs(socks_list) do - o:value(v1.id, v1.remark) - o.group[#o.group+1] = (v1.group and v1.group ~= "") and v1.group or translate("default") - end - for k1, v1 in pairs(balancing_list) do - o:value(v1.id, v1.remark) - o.group[#o.group+1] = (v1.group and v1.group ~= "") and v1.group or translate("default") - end - for k1, v1 in pairs(urltest_list) do - o:value(v1.id, v1.remark) - o.group[#o.group+1] = (v1.group and v1.group ~= "") and v1.group or translate("default") - end - for k1, v1 in pairs(iface_list) do - o:value(v1.id, v1.remark) - o.group[#o.group+1] = (v1.group and v1.group ~= "") and v1.group or translate("default") - end - for k1, v1 in pairs(normal_list) do - o:value(v1.id, v1.remark) - o.group[#o.group+1] = (v1.group and v1.group ~= "") and v1.group or translate("default") - end - - local id = "default_proxy_tag" - o = s:taboption("Main", ListValue, vid .. "-" .. id, string.format('* %s', translate("Default Preproxy")), translate("When using, localhost will connect this node first and then use this node to connect the default node.")) - o.cfgvalue = get_cfgvalue(v.id, id) - o.write = get_write(v.id, id) - o.remove = get_remove(v.id, id) - o:value("", translate("Close")) - o:value("main", translate("Preproxy Node")) - for k1, v1 in pairs(normal_list) do - if v1.protocol ~= "_balancing" and v1.protocol ~= "_urltest" then - o:depends({ [vid .. "-default_node"] = v1.id, [vid .. "-preproxy_enabled"] = "1" }) - end - end - end - else - local tips = s:taboption("Main", DummyValue, "tips", " ") - tips.rawhtml = true - tips.cfgvalue = function(t, n) - return string.format('%s', translate("There are no available nodes, please add or subscribe nodes first.")) - end - tips:depends({ node = "", ["!reverse"] = true }) - for k, v in pairs(shunt_list) do - tips:depends("node", v.id) - end - for k, v in pairs(balancing_list) do - tips:depends("node", v.id) - end - end -end - ----- Check the transparent proxy component -local handle = io.popen("lsmod") -local mods = "" -if handle then - mods = handle:read("*a") or "" - handle:close() -end - -if (mods:find("REDIRECT") and mods:find("TPROXY")) or (mods:find("nft_redir") and mods:find("nft_tproxy")) then - o = s:taboption("Main", Flag, "localhost_proxy", translate("Localhost Proxy"), translate("When selected, localhost can transparent proxy.")) - o.default = "1" - o.rmempty = false - - o = s:taboption("Main", Flag, "client_proxy", translate("Client Proxy"), translate("When selected, devices in LAN can transparent proxy. Otherwise, it will not be proxy. But you can still use access control to allow the designated device to proxy.")) - o.default = "1" - o.rmempty = false -else - local html = string.format([[
%s
]], translate("Missing components, transparent proxy is unavailable.")) - o = s:taboption("Proxy", DummyValue, "localhost_proxy", translate("Localhost Proxy")) - o.rawhtml = true - function o.cfgvalue(self, section) - return html - end - - o = s:taboption("Proxy", DummyValue, "client_proxy", translate("Client Proxy")) - o.rawhtml = true - function o.cfgvalue(self, section) - return html - end -end - -node_socks_port = s:taboption("Main", Value, "node_socks_port", translate("Node") .. " Socks " .. translate("Listen Port")) -node_socks_port.default = 1070 -node_socks_port.datatype = "port" - -node_socks_bind_local = s:taboption("Main", Flag, "node_socks_bind_local", translate("Node") .. " Socks " .. translate("Bind Local"), translate("When selected, it can only be accessed localhost.")) -node_socks_bind_local.default = "1" -node_socks_bind_local:depends({ node = "", ["!reverse"] = true }) - -s:tab("DNS", translate("DNS")) - -o = s:taboption("DNS", ListValue, "direct_dns_query_strategy", translate("Direct Query Strategy")) -o.default = "UseIP" -o:value("UseIP") -o:value("UseIPv4") -o:value("UseIPv6") - -o = s:taboption("DNS", Flag, "write_ipset_direct", translate("Direct DNS result write to IPSet"), translate("Perform the matching direct domain name rules into IP to IPSet/NFTSet, and then connect directly (not entering the core). Maybe conflict with some special circumstances.")) -o.default = "1" -o.rmempty = false - -o = s:taboption("DNS", ListValue, "remote_dns_protocol", translate("Remote DNS Protocol")) -o:value("tcp", "TCP") -o:value("doh", "DoH") -o:value("udp", "UDP") - ----- DNS Forward -o = s:taboption("DNS", Value, "remote_dns", translate("Remote DNS")) -o.datatype = "or(ipaddr,ipaddrport)" -o.default = "1.1.1.1" -o:value("1.1.1.1", "1.1.1.1 (CloudFlare)") -o:value("1.1.1.2", "1.1.1.2 (CloudFlare-Security)") -o:value("8.8.4.4", "8.8.4.4 (Google)") -o:value("8.8.8.8", "8.8.8.8 (Google)") -o:value("9.9.9.9", "9.9.9.9 (Quad9-Recommended)") -o:value("149.112.112.112", "149.112.112.112 (Quad9-Recommended)") -o:value("208.67.220.220", "208.67.220.220 (OpenDNS)") -o:value("208.67.222.222", "208.67.222.222 (OpenDNS)") -o:depends("remote_dns_protocol", "tcp") -o:depends("remote_dns_protocol", "udp") - ----- DoH -o = s:taboption("DNS", Value, "remote_dns_doh", translate("Remote DNS DoH")) -o.default = "https://1.1.1.1/dns-query" -o:value("https://1.1.1.1/dns-query", "CloudFlare") -o:value("https://1.1.1.2/dns-query", "CloudFlare-Security") -o:value("https://8.8.4.4/dns-query", "Google 8844") -o:value("https://8.8.8.8/dns-query", "Google 8888") -o:value("https://9.9.9.9/dns-query", "Quad9-Recommended 9.9.9.9") -o:value("https://149.112.112.112/dns-query", "Quad9-Recommended 149.112.112.112") -o:value("https://208.67.222.222/dns-query", "OpenDNS") -o:value("https://dns.adguard.com/dns-query,94.140.14.14", "AdGuard") -o:value("https://doh.libredns.gr/dns-query,116.202.176.26", "LibreDNS") -o:value("https://doh.libredns.gr/ads,116.202.176.26", "LibreDNS (No Ads)") -o.validate = doh_validate -o:depends("remote_dns_protocol", "doh") - -o = s:taboption("DNS", Value, "remote_dns_client_ip", translate("Remote DNS EDNS Client Subnet")) -o.description = translate("Notify the DNS server when the DNS query is notified, the location of the client (cannot be a private IP address).") .. "
" .. - translate("This feature requires the DNS server to support the Edns Client Subnet (RFC7871).") -o.datatype = "ipaddr" - -o = s:taboption("DNS", ListValue, "remote_dns_detour", translate("Remote DNS Outbound")) -o.default = "remote" -o:value("remote", translate("Remote")) -o:value("direct", translate("Direct")) - -o = s:taboption("DNS", Flag, "remote_fakedns", "FakeDNS", translate("Use FakeDNS work in the domain that proxy.")) -o.default = "0" -o.rmempty = false - -o = s:taboption("DNS", ListValue, "remote_dns_query_strategy", translate("Remote Query Strategy")) -o.default = "UseIPv4" -o:value("UseIP") -o:value("UseIPv4") -o:value("UseIPv6") - -o = s:taboption("DNS", TextValue, "dns_hosts", translate("Domain Override")) -o.rows = 5 -o.wrap = "off" -o:depends({ __hide = true }) -o.remove = function(self, section) - local node_value = s.fields["node"]:formvalue(global_cfgid) - if node_value then - local node_t = m:get(node_value) or {} - if node_t.type == "Xray" then - AbstractValue.remove(self, section) - end - end -end - -o = s:taboption("DNS", Flag, "dns_redirect", translate("DNS Redirect"), translate("Force special DNS server to need proxy devices.")) -o.default = "1" -o.rmempty = false - -local use_nft = m:get("@global_forwarding[0]", "use_nft") == "1" -local set_title = api.i18n.translate(use_nft and "Clear NFTSET" or "Clear IPSET") -o = s:taboption("DNS", DummyValue, "clear_ipset", set_title, translate("Try this feature if the rule modification does not take effect.")) -o.rawhtml = true -function o.cfgvalue(self, section) - return string.format( - [[]], - api.url("flush_set") .. "?redirect=1&reload=1", set_title) -end - -o = s:taboption("DNS", DummyValue, "_xray_node", "") -o.template = "passwall2/cbi/hidevalue" -o.value = "1" -o:depends({ __hide = true }) - -s.fields["dns_hosts"]:depends({ _xray_node = "1" }) - -s:tab("log", translate("Log")) -o = s:taboption("log", Flag, "log_node", translate("Enable Node Log")) -o.default = "1" -o.rmempty = false - -loglevel = s:taboption("log", ListValue, "loglevel", translate("Log Level")) -loglevel.default = "warning" -loglevel:value("debug") -loglevel:value("info") -loglevel:value("warning") -loglevel:value("error") - -s:tab("faq", "FAQ") - -o = s:taboption("faq", DummyValue, "") -o.template = appname .. "/global/faq" - -s:tab("maintain", translate("Maintain")) -o = s:taboption("maintain", DummyValue, "") -o.template = appname .. "/global/backup" - --- [[ Socks Server ]]-- -o = s:taboption("Main", Flag, "socks_enabled", "Socks " .. translate("Main switch")) -o.rmempty = false - -s2 = m:section(TypedSection, "socks", translate("Socks Config")) -s2.template = "cbi/tblsection" -s2.anonymous = true -s2.addremove = true -s2.extedit = api.url("socks_config", "%s") -function s2.create(e, t) - local uuid = api.gen_short_uuid() - t = uuid - TypedSection.create(e, t) - luci.http.redirect(e.extedit:format(t)) -end - -o = s2:option(DummyValue, "status", translate("Status")) -o.rawhtml = true -o.cfgvalue = function(t, n) - return string.format('
', n) -end - ----- Enable -o = s2:option(Flag, "enabled", translate("Enable")) -o.default = 1 -o.rmempty = false - -o = s2:option(ListValue, "node", translate("Socks Node")) -o.template = appname .. "/cbi/nodes_listvalue" -o.group = {} - -o = s2:option(DummyValue, "now_node", translate("Current Node")) -o.rawhtml = true -o.cfgvalue = function(_, n) - local current_node = api.get_cache_var("socks_" .. n) - if current_node then - local node = m:get(current_node) - if node then - return (api.get_node_remarks(node) or ""):gsub("(:)%[", "%1
[") - end - end -end - -local n = 1 -m.uci:foreach(appname, "socks", function(s) - if s[".name"] == section then - return false - end - n = n + 1 -end) - -o = s2:option(Value, "port", "Socks " .. translate("Listen Port")) -o.default = n + 1080 -o.datatype = "port" -o.rmempty = false - -if has_singbox or has_xray then - o = s2:option(Value, "http_port", "HTTP " .. translate("Listen Port") .. " " .. translate("0 is not use")) - o.default = 0 - o.datatype = "port" -end - -local o_node = s.fields["node"] -local o_socks = s2.fields["node"] -for k, v in pairs(nodes_table) do - o_node:value(v.id, v["remark"]) - o_node.group[#o_node.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - o_socks:value(v.id, v["remark"]) - o_socks.group[#o_socks.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - if v.type == "Xray" then - s.fields["_xray_node"]:depends({ node = v.id }) - end -end - -m:append(Template(appname .. "/global/footer")) - -return m diff --git a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/haproxy.lua b/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/haproxy.lua deleted file mode 100644 index 2304e7f134..0000000000 --- a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/haproxy.lua +++ /dev/null @@ -1,171 +0,0 @@ -local api = require "luci.passwall2.api" -local appname = api.appname -local datatypes = api.datatypes -local net = require "luci.model.network".init() - -local nodes_table = {} -for k, e in ipairs(api.get_valid_nodes()) do - if e.node_type == "normal" then - nodes_table[#nodes_table + 1] = { - id = e[".name"], - obj = e, - remarks = e["remark"], - group = e["group"] - } - end -end - -m = Map(appname) -api.set_apply_on_parse(m) - -m:append(Template(appname .. "/cbi/nodes_value_com")) - --- [[ Haproxy Settings ]]-- -s = m:section(TypedSection, "global_haproxy", translate("Basic Settings")) -s.anonymous = true - -s:append(Template(appname .. "/haproxy/status")) - ----- Balancing Enable -o = s:option(Flag, "balancing_enable", translate("Enable Load Balancing")) -o.rmempty = false -o.default = false - ----- Console Login Auth -o = s:option(Flag, "console_auth", translate("Console Login Auth")) -o.default = false -o:depends("balancing_enable", true) - ----- Console Username -o = s:option(Value, "console_user", translate("Console Username")) -o.default = "" -o:depends("console_auth", true) - ----- Console Password -o = s:option(Value, "console_password", translate("Console Password")) -o.password = true -o.default = "" -o:depends("console_auth", true) - ----- Console Port -o = s:option(Value, "console_port", translate("Console Port"), translate( - "In the browser input routing IP plus port access, such as:192.168.1.1:1188")) -o.default = "1188" -o:depends("balancing_enable", true) - -o = s:option(Flag, "bind_local", translate("Haproxy Port") .. " " .. translate("Bind Local"), translate("When selected, it can only be accessed localhost.")) -o.default = "0" -o:depends("balancing_enable", true) - ----- Health Check Type -o = s:option(ListValue, "health_check_type", translate("Health Check Type")) -o.default = "passwall_logic" -o:value("tcp", "TCP") -o:value("passwall_logic", translate("URL Test") .. string.format("(passwall %s)", translate("Inner implement"))) -o:depends("balancing_enable", true) - ----- Passwall Inner implement Probe URL -o = s:option(Value, "health_probe_url", translate("Probe URL")) -o.default = "https://www.google.com/generate_204" -o:value("https://cp.cloudflare.com/", "Cloudflare") -o:value("https://www.gstatic.com/generate_204", "Gstatic") -o:value("https://www.google.com/generate_204", "Google") -o:value("https://www.youtube.com/generate_204", "YouTube") -o:value("https://connect.rom.miui.com/generate_204", "MIUI (CN)") -o:value("https://connectivitycheck.platform.hicloud.com/generate_204", "HiCloud (CN)") -o.description = translate("The URL used to detect the connection status.") -o:depends("health_check_type", "passwall_logic") - ----- Health Check Inter -o = s:option(Value, "health_check_inter", translate("Health Check Inter"), translate("Units:seconds")) -o.default = "60" -o:depends("balancing_enable", true) - -o = s:option(DummyValue, "health_check_tips", " ") -o.rawhtml = true -o.cfgvalue = function(t, n) - return string.format('%s', translate("When the URL test is used, the load balancing node will be converted into a Socks node. when node list set customizing, must be a Socks node, otherwise the health check will be invalid.")) -end -o:depends("health_check_type", "passwall_logic") - --- [[ Balancing Settings ]]-- -s = m:section(TypedSection, "haproxy_config", translate("Node List"), - "" .. - translate("Add a node, Export Of Multi WAN Only support Multi Wan. Load specific gravity range 1-256. Multiple primary servers can be load balanced, standby will only be enabled when the primary server is offline! Multiple groups can be set, Haproxy port same one for each group.") .. - "\n" .. translate("Note that the node configuration parameters for load balancing must be consistent when use TCP health check type, otherwise it cannot be used normally!") .. - "") -s.template = "cbi/tblsection" -s.sortable = true -s.anonymous = true -s.addremove = true - -s.create = function(e, t) - TypedSection.create(e, api.gen_short_uuid()) -end - -s.remove = function(self, section) - for k, v in pairs(self.children) do - v.rmempty = true - v.validate = nil - end - TypedSection.remove(self, section) -end - ----- Enable -o = s:option(Flag, "enabled", translate("Enable")) -o.default = 1 -o.rmempty = false - ----- Node Address -o = s:option(Value, "lbss", translate("Node Address")) -o.template = appname .. "/cbi/nodes_value" -o.group = {} -for k, v in pairs(nodes_table) do - o:value(v.id, v.remarks) - o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") -end -o.rmempty = false -o.validate = function(self, value) - if not value then return nil, translate("Node address cannot be empty.") end - local t = m:get(value) or nil - if t and t[".type"] == "nodes" then - return value - end - if datatypes.hostport(value) or datatypes.ip4addrport(value) then - return value - end - if api.is_ipv6addrport(value) then - return value - end - return nil, translate("Not valid IP format, please re-enter!") .. " (IP:Port)" -end - ----- Haproxy Port -o = s:option(Value, "haproxy_port", translate("Haproxy Port")) -o.datatype = "port" -o.default = 1181 -o.rmempty = false - ----- Node Weight -o = s:option(Value, "lbweight", translate("Node Weight")) -o.datatype = "uinteger" -o.default = 5 -o.rmempty = false - ----- Export -o = s:option(ListValue, "export", translate("Export Of Multi WAN")) -o:value(0, translate("Auto")) -local wa = require "luci.tools.webadmin" -wa.cbi_add_networks(o) -o.default = 0 -o.rmempty = false - ----- Mode -o = s:option(ListValue, "backup", translate("Mode")) -o:value(0, translate("Primary")) -o:value(1, translate("Standby")) -o.rmempty = false - -m:append(Template(appname .. "/haproxy/js")) - -return m diff --git a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/log.lua b/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/log.lua deleted file mode 100644 index a9102b6918..0000000000 --- a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/log.lua +++ /dev/null @@ -1,8 +0,0 @@ -local appname = "passwall2" - -f = SimpleForm(appname) -f.reset = false -f.submit = false -f:append(Template(appname .. "/log/log")) - -return f \ No newline at end of file diff --git a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/node_config.lua b/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/node_config.lua deleted file mode 100644 index 54e5633b6b..0000000000 --- a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/node_config.lua +++ /dev/null @@ -1,74 +0,0 @@ -local api = require "luci.passwall2.api" -local appname = api.appname - -m = Map(appname, translate("Node Config")) -m.redirect = api.url() -api.set_apply_on_parse(m) - -if not arg[1] or not m:get(arg[1]) then - luci.http.redirect(api.url("node_list")) -end - -m:append(Template(appname .. "/cbi/nodes_multivalue_com")) -m:append(Template(appname .. "/cbi/nodes_listvalue_com")) - -s = m:section(NamedSection, arg[1], "nodes", "") -s.addremove = false -s.dynamic = false - -o = s:option(DummyValue, "passwall2", " ") -o.rawhtml = true -o.template = "passwall2/node_list/link_share_man" -o.value = arg[1] - -o = s:option(Value, "remarks", translate("Node Remarks")) -o.default = translate("Remarks") -o.rmempty = false - -o = s:option(Value, "group", translate("Group Name")) -o.default = "" -o:value("", translate("default")) -local groups = {} -m.uci:foreach(appname, "nodes", function(s) - if s[".name"] ~= arg[1] then - if s.group and s.group ~= "" then - groups[s.group] = true - end - end -end) -for k, v in pairs(groups) do - o:value(k) -end -o.write = function(self, section, value) - value = api.trim(value) - local lower = value:lower() - - if lower == "" or lower == "default" then - return m:del(section, self.option) - end - - for _, v in ipairs(self.keylist or {}) do - if v:lower() == lower then - return m:set(section, self.option, v) - end - end - m:set(section, self.option, value) -end - -local fs = require "nixio.fs" -local types_dir = "/usr/lib/lua/luci/model/cbi/passwall2/client/type/" - -o = s:option(ListValue, "type", translate("Type")) - -local type_table = {} -for filename in fs.dir(types_dir) do - table.insert(type_table, filename) -end -table.sort(type_table) - -for index, value in ipairs(type_table) do - local p_func = loadfile(types_dir .. value) - setfenv(p_func, getfenv(1))(m, s) -end - -return m diff --git a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/node_list.lua b/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/node_list.lua deleted file mode 100644 index 3265dcd90b..0000000000 --- a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/node_list.lua +++ /dev/null @@ -1,35 +0,0 @@ -local api = require "luci.passwall2.api" -local appname = api.appname -local datatypes = api.datatypes -local sys = api.sys - -m = Map(appname) -api.set_apply_on_parse(m) - --- [[ Other Settings ]]-- -s = m:section(TypedSection, "global_other") -s.anonymous = true - -o = s:option(ListValue, "auto_detection_time", translate("Automatic detection delay")) -o:value("0", translate("Close")) -o:value("icmp", "Ping") -o:value("tcping", "TCP Ping") - -o = s:option(Flag, "show_node_info", translate("Show server address and port")) -o.default = "0" - -o = s:option(Value, "url_test_url", translate("URL Test Address")) -o:value("https://cp.cloudflare.com/", "Cloudflare") -o:value("https://www.gstatic.com/generate_204", "Gstatic") -o:value("https://www.google.com/generate_204", "Google") -o:value("https://www.youtube.com/generate_204", "YouTube") -o:value("https://connect.rom.miui.com/generate_204", "MIUI (CN)") -o:value("https://connectivitycheck.platform.hicloud.com/generate_204", "HiCloud (CN)") -o.default = o.keylist[3] - --- [[ Add the node via the link ]]-- -s:append(Template(appname .. "/node_list/link_add_node")) - -m:append(Template(appname .. "/node_list/node_list")) - -return m diff --git a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/node_subscribe.lua b/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/node_subscribe.lua deleted file mode 100644 index 090b26e402..0000000000 --- a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/node_subscribe.lua +++ /dev/null @@ -1,229 +0,0 @@ -local api = require "luci.passwall2.api" -local appname = api.appname -local uci = api.uci -local has_ss = api.is_finded("ss-redir") -local has_ss_rust = api.is_finded("sslocal") -local has_singbox = api.finded_com("sing-box") -local has_xray = api.finded_com("xray") -local has_hysteria2 = api.finded_com("hysteria") -local ss_type = {} -local trojan_type = {} -local vmess_type = {} -local vless_type = {} -local hysteria2_type = {} -local xray_version = api.get_app_version("xray") -if has_ss then - local s = "shadowsocks-libev" - table.insert(ss_type, s) -end -if has_ss_rust then - local s = "shadowsocks-rust" - table.insert(ss_type, s) -end -if has_singbox then - local s = "sing-box" - table.insert(trojan_type, s) - table.insert(ss_type, s) - table.insert(vmess_type, s) - table.insert(vless_type, s) - table.insert(hysteria2_type, s) -end -if has_xray then - local s = "xray" - table.insert(trojan_type, s) - table.insert(ss_type, s) - table.insert(vmess_type, s) - table.insert(vless_type, s) - if api.compare_versions(xray_version, ">=", "26.1.13") then - table.insert(hysteria2_type, s) - end -end -if has_hysteria2 then - local s = "hysteria2" - table.insert(hysteria2_type, s) -end - -m = Map(appname) -api.set_apply_on_parse(m) - -function m.on_before_save(self) - self.uci:foreach(appname, "subscribe_list", function(e) - self:del(e[".name"], "md5") - end) -end - --- [[ Subscribe Settings ]]-- -s = m:section(TypedSection, "global_subscribe", "") -s.anonymous = true - -o = s:option(ListValue, "filter_keyword_mode", translate("Filter keyword Mode")) -o:value("0", translate("Close")) -o:value("1", translate("Discard List")) -o:value("2", translate("Keep List")) -o:value("3", translate("Discard List,But Keep List First")) -o:value("4", translate("Keep List,But Discard List First")) - -o = s:option(DynamicList, "filter_discard_list", translate("Discard List")) - -o = s:option(DynamicList, "filter_keep_list", translate("Keep List")) - -if #ss_type > 0 then - o = s:option(ListValue, "ss_type", translatef("%s Node Use Type", "Shadowsocks")) - for key, value in pairs(ss_type) do - o:value(value) - end -end - -if #trojan_type > 0 then - o = s:option(ListValue, "trojan_type", translatef("%s Node Use Type", "Trojan")) - for key, value in pairs(trojan_type) do - o:value(value) - end -end - -if #vmess_type > 0 then - o = s:option(ListValue, "vmess_type", translatef("%s Node Use Type", "VMess")) - for key, value in pairs(vmess_type) do - o:value(value) - end - if has_xray then - o.default = "xray" - end -end - -if #vless_type > 0 then - o = s:option(ListValue, "vless_type", translatef("%s Node Use Type", "VLESS")) - for key, value in pairs(vless_type) do - o:value(value) - end - if has_xray then - o.default = "xray" - end -end - -if #hysteria2_type > 0 then - o = s:option(ListValue, "hysteria2_type", translatef("%s Node Use Type", "Hysteria2")) - for key, value in pairs(hysteria2_type) do - o:value(value) - end - if has_hysteria2 then - o.default = "hysteria2" - end -end - -if #ss_type > 0 or #trojan_type > 0 or #vmess_type > 0 or #vless_type > 0 or #hysteria2_type > 0 then - o.description = string.format("%s", - translate("The configured type also applies to the core specified when manually importing nodes.")) -end - -o = s:option(ListValue, "domain_strategy", "Sing-box " .. translate("Domain Strategy"), translate("Set the default domain resolution strategy for the sing-box node.")) -o.default = "" -o:value("", translate("Auto")) -o:value("prefer_ipv4", translate("Prefer IPv4")) -o:value("prefer_ipv6", translate("Prefer IPv6")) -o:value("ipv4_only", translate("IPv4 Only")) -o:value("ipv6_only", translate("IPv6 Only")) - ----- Subscribe Delete All -o = s:option(DummyValue, "_stop", translate("Delete All Subscribe Node")) -o.rawhtml = true -function o.cfgvalue(self, section) - return string.format( - [[]], - translate("Delete All Subscribe Node")) -end - -o = s:option(DummyValue, "_update", translate("Manual subscription All")) -o.rawhtml = true -o.cfgvalue = function(self, section) - return string.format([[ - ]], - translate("Manual subscription All")) -end - -s = m:section(TypedSection, "subscribe_list", "", "" .. translate("When adding a new subscription, please save and apply before manually subscribing. If you only change the subscription URL, you can subscribe manually, and the system will save it automatically.") .. "") -s.addremove = true -s.anonymous = true -s.sortable = true -s.template = "cbi/tblsection" -s.extedit = api.url("node_subscribe_config", "%s") -function s.create(e, t) - local id = TypedSection.create(e, t) - luci.http.redirect(e.extedit:format(id)) -end - -o = s:option(Value, "remark", translate("Remarks")) -o.width = "auto" -o.rmempty = false -o.validate = function(self, value, section) - value = api.trim(value) - if value == "" then - return nil, translate("Remark cannot be empty.") - end - local duplicate = false - m.uci:foreach(appname, "subscribe_list", function(e) - if e[".name"] ~= section and e["remark"] and e["remark"]:lower() == value:lower() then - duplicate = true - return false - end - end) - if duplicate or value:lower() == "default" then - return nil, translate("This remark already exists, please change a new remark.") - end - return value -end -o.write = function(self, section, value) - local old = m:get(section, self.option) or "" - if old ~= value then - m.uci:foreach(appname, "nodes", function(e) - if e["group"] and e["group"]:lower() == old:lower() then - m.uci:set(appname, e[".name"], "group", value) - end - end) - end - return Value.write(self, section, value) -end - -o = s:option(DummyValue, "_node_count", translate("Subscribe Info")) -o.rawhtml = true -o.cfgvalue = function(t, n) - local remark = m:get(n, "remark") or "" - local str = m:get(n, "rem_traffic") or "" - local expired_date = m:get(n, "expired_date") or "" - if expired_date ~= "" then - str = str .. (str ~= "" and "/" or "") .. expired_date - end - str = str ~= "" and "
" .. str or "" - local num = 0 - m.uci:foreach(appname, "nodes", function(s) - if s["group"] and s["group"]:lower() == remark:lower() then - num = num + 1 - end - end) - return string.format("%s%s", translate("Node num") .. ": " .. num, str) -end - -o = s:option(Value, "url", translate("Subscribe URL")) -o.width = "auto" -o.rmempty = false - -o = s:option(DummyValue, "_remove", translate("Delete the subscribed node")) -o.rawhtml = true -function o.cfgvalue(self, section) - local remark = m:get(section, "remark") or "" - return string.format( - [[]], - remark, translate("Delete the subscribed node")) -end - -o = s:option(DummyValue, "_update", translate("Manual subscription")) -o.rawhtml = true -o.cfgvalue = function(self, section) - return string.format([[ - ]], - section, translate("Manual subscription")) -end - -m:append(Template(appname .. "/node_subscribe/js")) - -return m diff --git a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/node_subscribe_config.lua b/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/node_subscribe_config.lua deleted file mode 100644 index 3ce7e39ac3..0000000000 --- a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/node_subscribe_config.lua +++ /dev/null @@ -1,281 +0,0 @@ -local api = require "luci.passwall2.api" -local appname = api.appname - -m = Map(appname) -m.redirect = api.url("node_subscribe") -api.set_apply_on_parse(m) - -if not arg[1] or not m:get(arg[1]) then - luci.http.redirect(m.redirect) -end - -function m.on_before_save(self) - self:del(arg[1], "md5") -end - -m:append(Template(appname .. "/cbi/nodes_listvalue_com")) - -local has_ss = api.is_finded("ss-redir") -local has_ss_rust = api.is_finded("sslocal") -local has_singbox = api.finded_com("sing-box") -local has_xray = api.finded_com("xray") -local has_hysteria2 = api.finded_com("hysteria") -local ss_type = {} -local trojan_type = {} -local vmess_type = {} -local vless_type = {} -local hysteria2_type = {} -local xray_version = api.get_app_version("xray") -if has_ss then - local s = "shadowsocks-libev" - table.insert(ss_type, s) -end -if has_ss_rust then - local s = "shadowsocks-rust" - table.insert(ss_type, s) -end -if has_singbox then - local s = "sing-box" - table.insert(trojan_type, s) - table.insert(ss_type, s) - table.insert(vmess_type, s) - table.insert(vless_type, s) - table.insert(hysteria2_type, s) -end -if has_xray then - local s = "xray" - table.insert(trojan_type, s) - table.insert(ss_type, s) - table.insert(vmess_type, s) - table.insert(vless_type, s) - if api.compare_versions(xray_version, ">=", "26.1.13") then - table.insert(hysteria2_type, s) - end -end -if has_hysteria2 then - local s = "hysteria2" - table.insert(hysteria2_type, s) -end -local nodes_table = {} -for k, e in ipairs(api.get_valid_nodes()) do - if e.node_type == "normal" then - nodes_table[#nodes_table + 1] = { - id = e[".name"], - remark = e["remark"], - type = e["type"], - add_mode = e["add_mode"], - chain_proxy = e["chain_proxy"], - group = e["group"] - } - end -end - -s = m:section(NamedSection, arg[1]) -s.addremove = false -s.dynamic = false - -o = s:option(Value, "remark", translate("Subscribe Remark")) -o.rmempty = false -o.validate = function(self, value, section) - value = api.trim(value) - if value == "" then - return nil, translate("Remark cannot be empty.") - end - local duplicate = false - m.uci:foreach(appname, "subscribe_list", function(e) - if e[".name"] ~= section and e["remark"] and e["remark"]:lower() == value:lower() then - duplicate = true - return false - end - end) - if duplicate or value:lower() == "default" then - return nil, translate("This remark already exists, please change a new remark.") - end - return value -end -o.write = function(self, section, value) - local old = m:get(section, self.option) or "" - if old ~= value then - m.uci:foreach(appname, "nodes", function(e) - if e["group"] and e["group"]:lower() == old:lower() then - m.uci:set(appname, e[".name"], "group", value) - end - end) - end - return Value.write(self, section, value) -end - -o = s:option(TextValue, "url", translate("Subscribe URL")) -o.rows = 5 -o.rmempty = false -o.validate = function(self, value) - if not value or value == "" then - return nil, translate("URL cannot be empty.") - end - return value:gsub("%s+", ""):gsub("%z", "") -end - -o = s:option(Flag, "allowInsecure", translate("allowInsecure"), translate("Whether unsafe connections are allowed. When checked, Certificate validation will be skipped.")) -o.default = "1" -o.rmempty = false - -o = s:option(ListValue, "filter_keyword_mode", translate("Filter keyword Mode")) -o.default = "5" -o:value("0", translate("Close")) -o:value("1", translate("Discard List")) -o:value("2", translate("Keep List")) -o:value("3", translate("Discard List,But Keep List First")) -o:value("4", translate("Keep List,But Discard List First")) -o:value("5", translate("Use global config")) - -o = s:option(DynamicList, "filter_discard_list", translate("Discard List")) -o:depends("filter_keyword_mode", "1") -o:depends("filter_keyword_mode", "3") -o:depends("filter_keyword_mode", "4") - -o = s:option(DynamicList, "filter_keep_list", translate("Keep List")) -o:depends("filter_keyword_mode", "2") -o:depends("filter_keyword_mode", "3") -o:depends("filter_keyword_mode", "4") - -if #ss_type > 0 then - o = s:option(ListValue, "ss_type", translatef("%s Node Use Type", "Shadowsocks")) - o.default = "global" - o:value("global", translate("Use global config")) - for key, value in pairs(ss_type) do - o:value(value) - end -end - -if #trojan_type > 0 then - o = s:option(ListValue, "trojan_type", translatef("%s Node Use Type", "Trojan")) - o.default = "global" - o:value("global", translate("Use global config")) - for key, value in pairs(trojan_type) do - o:value(value) - end -end - -if #vmess_type > 0 then - o = s:option(ListValue, "vmess_type", translatef("%s Node Use Type", "VMess")) - o.default = "global" - o:value("global", translate("Use global config")) - for key, value in pairs(vmess_type) do - o:value(value) - end -end - -if #vless_type > 0 then - o = s:option(ListValue, "vless_type", translatef("%s Node Use Type", "VLESS")) - o.default = "global" - o:value("global", translate("Use global config")) - for key, value in pairs(vless_type) do - o:value(value) - end -end - -if #hysteria2_type > 0 then - o = s:option(ListValue, "hysteria2_type", translatef("%s Node Use Type", "Hysteria2")) - o.default = "global" - o:value("global", translate("Use global config")) - for key, value in pairs(hysteria2_type) do - o:value(value) - end -end - -o = s:option(ListValue, "domain_strategy", "Sing-box " .. translate("Domain Strategy"), translate("Set the default domain resolution strategy for the sing-box node.")) -o.default = "global" -o:value("global", translate("Use global config")) -o:value("", translate("Auto")) -o:value("prefer_ipv4", translate("Prefer IPv4")) -o:value("prefer_ipv6", translate("Prefer IPv6")) -o:value("ipv4_only", translate("IPv4 Only")) -o:value("ipv6_only", translate("IPv6 Only")) - ----- Enable auto update subscribe -o = s:option(Flag, "auto_update", translate("Enable auto update subscribe")) -o.default = 0 -o.rmempty = false - ----- Week Update -o = s:option(ListValue, "week_update", translate("Update Mode")) -o:value(8, translate("Loop Mode")) -o:value(7, translate("Every day")) -o:value(1, translate("Every Monday")) -o:value(2, translate("Every Tuesday")) -o:value(3, translate("Every Wednesday")) -o:value(4, translate("Every Thursday")) -o:value(5, translate("Every Friday")) -o:value(6, translate("Every Saturday")) -o:value(0, translate("Every Sunday")) -o.default = 7 -o:depends("auto_update", true) -o.rmempty = true - ----- Time Update -o = s:option(ListValue, "time_update", translate("Update Time(every day)")) -for t = 0, 23 do o:value(t, t .. ":00") end -o.default = 0 -o:depends("week_update", "0") -o:depends("week_update", "1") -o:depends("week_update", "2") -o:depends("week_update", "3") -o:depends("week_update", "4") -o:depends("week_update", "5") -o:depends("week_update", "6") -o:depends("week_update", "7") -o.rmempty = true - ----- Interval Update -o = s:option(ListValue, "interval_update", translate("Update Interval(hour)")) -for t = 1, 24 do o:value(t, t .. " " .. translate("hour")) end -o.default = 2 -o:depends("week_update", "8") -o.rmempty = true - -o = s:option(ListValue, "access_mode", translate("Subscribe URL Access Method")) -o.default = "" -o:value("", translate("Auto")) -o:value("direct", translate("Direct Connection")) -o:value("proxy", translate("Proxy")) - -o = s:option(Value, "user_agent", translate("User-Agent")) -o.default = "v2rayN/9.99" -o:value("curl", "Curl") -o:value("Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0", "Edge for Linux") -o:value("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0", "Edge for Windows") -o:value("passwall2", "PassWall2") -o:value("v2rayN/9.99", "v2rayN") - -o = s:option(ListValue, "chain_proxy", translate("Chain Proxy")) -o:value("", translate("Close(Not use)")) -o:value("1", translate("Preproxy Node")) -o:value("2", translate("Landing Node")) - -local descrStr = "Chained proxy works only with Xray or Sing-box nodes.
" -descrStr = descrStr .. "The chained node must be the same type as your subscription node (Xray with Xray, Sing-box with Sing-box).
" -descrStr = descrStr .. "You can only use manual or imported nodes as chained nodes." -descrStr = translate(descrStr) .. "
" .. translate("Only support a layer of proxy.") - -o1 = s:option(ListValue, "preproxy_node", translate("Preproxy Node")) -o1:depends({ ["chain_proxy"] = "1" }) -o1.description = descrStr -o1.template = appname .. "/cbi/nodes_listvalue" -o1.group = {} - -o2 = s:option(ListValue, "to_node", translate("Landing Node")) -o2:depends({ ["chain_proxy"] = "2" }) -o2.description = descrStr -o2.template = appname .. "/cbi/nodes_listvalue" -o2.group = {} - -for k, v in pairs(nodes_table) do - if (v.type == "Xray" or v.type == "sing-box") and (not v.chain_proxy or v.chain_proxy == "") and v.add_mode ~= "2" then - o1:value(v.id, v.remark) - o1.group[#o1.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - o2:value(v.id, v.remark) - o2.group[#o2.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - end -end - -return m diff --git a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/other.lua b/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/other.lua deleted file mode 100644 index 3ee6e15550..0000000000 --- a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/other.lua +++ /dev/null @@ -1,270 +0,0 @@ -local api = require "luci.passwall2.api" -local appname = api.appname -local fs = api.fs -local has_singbox = api.finded_com("sing-box") -local has_xray = api.finded_com("xray") - -local port_validate = function(self, value, t) - return value:gsub("-", ":") -end - -m = Map(appname) -api.set_apply_on_parse(m) - --- [[ Delay Settings ]]-- -s = m:section(TypedSection, "global_delay", translate("Delay Settings")) -s.anonymous = true -s.addremove = false - ----- Open and close Daemon -o = s:option(Flag, "start_daemon", translate("Open and close Daemon")) -o.default = 1 -o.rmempty = false - ----- Delay Start -o = s:option(Value, "start_delay", translate("Delay Start"), translate("Units:seconds")) -o.default = "1" -o.rmempty = true - -for index, value in ipairs({"stop", "start", "restart"}) do - o = s:option(ListValue, value .. "_week_mode", translate(value .. " automatically mode")) - o:value("", translate("Disable")) - o:value(8, translate("Loop Mode")) - o:value(7, translate("Every day")) - o:value(1, translate("Every Monday")) - o:value(2, translate("Every Tuesday")) - o:value(3, translate("Every Wednesday")) - o:value(4, translate("Every Thursday")) - o:value(5, translate("Every Friday")) - o:value(6, translate("Every Saturday")) - o:value(0, translate("Every Sunday")) - - o = s:option(ListValue, value .. "_time_mode", translate(value .. " Time(Every day)")) - for t = 0, 23 do o:value(t, t .. ":00") end - o.default = 0 - o:depends(value .. "_week_mode", "0") - o:depends(value .. "_week_mode", "1") - o:depends(value .. "_week_mode", "2") - o:depends(value .. "_week_mode", "3") - o:depends(value .. "_week_mode", "4") - o:depends(value .. "_week_mode", "5") - o:depends(value .. "_week_mode", "6") - o:depends(value .. "_week_mode", "7") - - o = s:option(ListValue, value .. "_interval_mode", translate(value .. " Interval(Hour)")) - for t = 1, 24 do o:value(t, t .. " " .. translate("Hour")) end - o.default = 2 - o:depends(value .. "_week_mode", "8") -end - --- [[ Forwarding Settings ]]-- -s = m:section(TypedSection, "global_forwarding", translate("Forwarding Settings")) -s.anonymous = true -s.addremove = false - ----- TCP No Redir Ports -o = s:option(Value, "tcp_no_redir_ports", translate("TCP No Redir Ports")) -o.default = "disable" -o:value("disable", translate("No patterns are used")) -o:value("1:65535", translate("All")) -o.validate = port_validate - ----- UDP No Redir Ports -o = s:option(Value, "udp_no_redir_ports", translate("UDP No Redir Ports"), - "" .. - translate("Fill in the ports you don't want to be forwarded by the agent, with the highest priority.") .. - "") -o.default = "disable" -o:value("disable", translate("No patterns are used")) -o:value("1:65535", translate("All")) -o.validate = port_validate - ----- TCP Redir Ports -o = s:option(Value, "tcp_redir_ports", translate("TCP Redir Ports")) -o.default = "22,25,53,80,143,443,465,587,853,873,993,995,5222,8080,8443,9418" -o:value("1:65535", translate("All")) -o:value("22,25,53,80,143,443,465,587,853,873,993,995,5222,8080,8443,9418", translate("Common Use")) -o:value("80,443", translate("Only Web")) -o.validate = port_validate - ----- UDP Redir Ports -o = s:option(Value, "udp_redir_ports", translate("UDP Redir Ports")) -o.default = "1:65535" -o:value("1:65535", translate("All")) -o.validate = port_validate - -o = s:option(DummyValue, "tips", " ") -o.rawhtml = true -o.cfgvalue = function(t, n) - return string.format('%s', - translate("The port settings support single ports and ranges.
Separate multiple ports with commas (,).
Example: 21,80,443,1000:2000.")) -end - ----- Use nftables -o = s:option(ListValue, "prefer_nft", translate("Prefer firewall tools")) -o.default = "1" -o:value("0", "Iptables") -o:value("1", "Nftables") - ----- Check the transparent proxy component -local handle = io.popen("lsmod") -local mods = "" -if handle then - mods = handle:read("*a") or "" - handle:close() -end - -if (mods:find("REDIRECT") and mods:find("TPROXY")) or (mods:find("nft_redir") and mods:find("nft_tproxy")) then - o = s:option(ListValue, "tcp_proxy_way", translate("TCP Proxy Way")) - o.default = "redirect" - o:value("redirect", "REDIRECT") - o:value("tproxy", "TPROXY") - o:depends("ipv6_tproxy", false) - o.remove = function(self, section) - -- Do not delete while hidden - end - - o = s:option(ListValue, "_tcp_proxy_way", translate("TCP Proxy Way")) - o.default = "tproxy" - o:value("tproxy", "TPROXY") - o:depends("ipv6_tproxy", true) - o.write = function(self, section, value) - self.map:set(section, "tcp_proxy_way", value) - end - - if mods:find("ip6table_mangle") or mods:find("nft_tproxy") then - ---- IPv6 TProxy - o = s:option(Flag, "ipv6_tproxy", translate("IPv6 TProxy"), - "" .. - translate("Experimental feature. Make sure that your node supports IPv6.") .. - "") - o.default = 0 - o.rmempty = false - end -end - -o = s:option(Flag, "accept_icmp", translate("Hijacking ICMP (PING)")) -o.default = 0 - -o = s:option(Flag, "accept_icmpv6", translate("Hijacking ICMPv6 (IPv6 PING)")) -o:depends("ipv6_tproxy", true) -o.default = 0 - -if has_xray then - s_xray = m:section(TypedSection, "global_xray", "Xray " .. translate("Settings")) - s_xray.anonymous = true - s_xray.addremove = false - - o = s_xray:option(Flag, "fragment", translate("Fragment"), translate("TCP fragments, which can deceive the censorship system in some cases, such as bypassing SNI blacklists.")) - o.default = 0 - - o = s_xray:option(ListValue, "fragment_packets", translate("Fragment Packets"), translate(" \"1-3\" is for segmentation at TCP layer, applying to the beginning 1 to 3 data writes by the client. \"tlshello\" is for TLS client hello packet fragmentation.")) - o.default = "tlshello" - o:value("tlshello", "tlshello") - o:value("1-1", "1-1") - o:value("1-2", "1-2") - o:value("1-3", "1-3") - o:value("1-5", "1-5") - o:depends("fragment", true) - - o = s_xray:option(Value, "fragment_length", translate("Fragment Length"), translate("Fragmented packet length (byte)")) - o.default = "100-200" - o:depends("fragment", true) - - o = s_xray:option(Value, "fragment_interval", translate("Fragment Interval"), translate("Fragmentation interval (ms)")) - o.default = "10-20" - o:depends("fragment", true) - - o = s_xray:option(Value, "fragment_maxSplit", translate("Max Split"), translate("Limit the maximum number of splits.")) - o.default = "100-200" - o:depends("fragment", true) - - o = s_xray:option(Flag, "noise", translate("Noise"), translate("UDP noise, Under some circumstances it can bypass some UDP based protocol restrictions.")) - o.default = 0 - - o = s_xray:option(Flag, "sniffing_override_dest", translate("Override the connection destination address")) - o.default = 0 - o.description = translate("Override the connection destination address with the sniffed domain.
Otherwise use sniffed domain for routing only.
If using shunt nodes, configure the domain shunt rules correctly.") - - o = s_xray:option(Flag, "route_only", translate("Sniffing Route Only")) - o.default = 0 - o:depends("sniffing", true) - - local domains_excluded = string.format("/usr/share/%s/domains_excluded", appname) - o = s_xray:option(TextValue, "excluded_domains", translate("Excluded Domains"), translate("If the traffic sniffing result is in this list, the destination address will not be overridden.")) - o.rows = 15 - o.wrap = "off" - o.cfgvalue = function(self, section) return fs.readfile(domains_excluded) or "" end - o.write = function(self, section, value) fs.writefile(domains_excluded, value:gsub("\r\n", "\n")) end - o:depends({sniffing_override_dest = true}) - - o = s_xray:option(Value, "buffer_size", translate("Buffer Size"), translate("Buffer size for every connection (kB)")) - o.datatype = "uinteger" - - s_xray_noise = m:section(TypedSection, "xray_noise_packets", translate("Xray Noise Packets"),"" .. translate("To send noise packets, select \"Noise\" in Xray Settings.") .. "") - s_xray_noise.template = "cbi/tblsection" - s_xray_noise.sortable = true - s_xray_noise.anonymous = true - s_xray_noise.addremove = true - - s_xray_noise.create = function(e, t) - TypedSection.create(e, api.gen_short_uuid()) - end - - s_xray_noise.remove = function(self, section) - for k, v in pairs(self.children) do - v.rmempty = true - v.validate = nil - end - TypedSection.remove(self, section) - end - - o = s_xray_noise:option(Flag, "enabled", translate("Enable")) - o.default = 1 - o.rmempty = false - - o = s_xray_noise:option(ListValue, "type", translate("Type")) - o:value("rand", "rand") - o:value("str", "str") - o:value("hex", "hex") - o:value("base64", "base64") - - o = s_xray_noise:option(Value, "packet", translate("Packet")) - o.datatype = "minlength(1)" - o.rmempty = false - - o = s_xray_noise:option(Value, "delay", translate("Delay (ms)")) - o.datatype = "or(uinteger,portrange)" - o.rmempty = false - - o = s_xray_noise:option(ListValue, "applyTo", translate("IP Type")) - o:value("ip", "ALL") - o:value("ipv4", "IPv4") - o:value("ipv6", "IPv6") -end - -if has_singbox then - local version = api.get_app_version("sing-box"):match("[^v]+") - local version_ge_1_12_0 = api.compare_versions(version, ">=", "1.12.0") - - s = m:section(TypedSection, "global_singbox", "Sing-Box " .. translate("Settings")) - s.anonymous = true - s.addremove = false - - o = s:option(Flag, "sniff_override_destination", translate("Override the connection destination address")) - o.default = 0 - o.rmempty = false - o.description = translate("Override the connection destination address with the sniffed domain.
When enabled, traffic will match only by domain, ignoring IP rules.
If using shunt nodes, configure the domain shunt rules correctly.") - - if version_ge_1_12_0 then - o = s:option(Flag, "record_fragment", "TLS Record " .. translate("Fragment"), - translate("Split handshake data into multiple TLS records for better censorship evasion. Low overhead. Recommended to enable first.")) - o.default = 0 - - o = s:option(Flag, "fragment", "TLS TCP " .. translate("Fragment"), - translate("Split handshake into multiple TCP segments. Enhances obfuscation. May increase delay. Use only if needed.")) - o.default = 0 - end -end - -return m diff --git a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/rule.lua b/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/rule.lua deleted file mode 100644 index a72ba96d00..0000000000 --- a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/rule.lua +++ /dev/null @@ -1,121 +0,0 @@ -local api = require "luci.passwall2.api" -local appname = api.appname - -m = Map(appname) -api.set_apply_on_parse(m) - --- [[ Rule Settings ]]-- -s = m:section(TypedSection, "global_rules", translate("Rule status")) -s.anonymous = true - -o = s:option(ListValue, "geoip_url", translate("GeoIP Update URL")) -o:value("https://github.com/Loyalsoldier/geoip/releases/latest/download/geoip.dat", translate("Loyalsoldier/geoip")) -o:value("https://github.com/MetaCubeX/meta-rules-dat/releases/latest/download/geoip.dat", translate("MetaCubeX/geoip")) -o:value("https://cdn.jsdelivr.net/gh/Loyalsoldier/geoip@release/geoip.dat", translate("Loyalsoldier/geoip (CDN)")) -o:value("https://cdn.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/geoip.dat", translate("MetaCubeX/geoip (CDN)")) -o.default = o.keylist[1] - -o = s:option(ListValue, "geosite_url", translate("Geosite Update URL")) -o:value("https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geosite.dat", translate("Loyalsoldier/geosite")) -o:value("https://github.com/MetaCubeX/meta-rules-dat/releases/latest/download/geosite.dat", translate("MetaCubeX/geosite")) -o:value("https://cdn.jsdelivr.net/gh/Loyalsoldier/v2ray-rules-dat@release/geosite.dat", translate("Loyalsoldier/geosite (CDN)")) -o:value("https://cdn.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/geosite.dat", translate("MetaCubeX/geosite (CDN)")) -o.default = o.keylist[1] - -o = s:option(Value, "v2ray_location_asset", translate("Location of Geo rule files"), translate("This variable specifies a directory where geoip.dat and geosite.dat files are.")) -o.default = "/usr/share/v2ray/" -o.placeholder = o.default -o.rmempty = false - -if api.is_finded("geoview") then - o = s:option(Flag, "enable_geoview", translate("Enable Geo Data Parsing")) - o.default = 0 - o.rmempty = false - o.description = "
    " - .. "
  • " .. translate("Experimental feature.") .. "
  • " - .. "
  • " .. translate("Analyzes and preloads GeoIP/Geosite data to enhance the shunt performance of Sing-box/Xray.") .. "
  • " - .. "
  • " .. translate("Note: Increases resource usage.") .. "
  • " - .. "
" - function o.write(self, section, value) - local old = m:get(section, self.option) or "0" - if old ~= value then - m:set(section, "flush_set", "1") - end - return Flag.write(self, section, value) - end -end - ----- Auto Update -o = s:option(Flag, "auto_update", translate("Enable auto update rules")) -o.default = 0 -o.rmempty = false - ----- Week Update -o = s:option(ListValue, "week_update", translate("Update Mode")) -o:value(8, translate("Loop Mode")) -o:value(7, translate("Every day")) -o:value(1, translate("Every Monday")) -o:value(2, translate("Every Tuesday")) -o:value(3, translate("Every Wednesday")) -o:value(4, translate("Every Thursday")) -o:value(5, translate("Every Friday")) -o:value(6, translate("Every Saturday")) -o:value(0, translate("Every Sunday")) -o.default = 7 -o:depends("auto_update", true) -o.rmempty = true - ----- Time Update -o = s:option(ListValue, "time_update", translate("Update Time(every day)")) -for t = 0, 23 do o:value(t, t .. ":00") end -o.default = 0 -o:depends("week_update", "0") -o:depends("week_update", "1") -o:depends("week_update", "2") -o:depends("week_update", "3") -o:depends("week_update", "4") -o:depends("week_update", "5") -o:depends("week_update", "6") -o:depends("week_update", "7") -o.rmempty = true - ----- Interval Update -o = s:option(ListValue, "interval_update", translate("Update Interval(hour)")) -for t = 1, 24 do o:value(t, t .. " " .. translate("hour")) end -o.default = 2 -o:depends("week_update", "8") -o.rmempty = true - ---- The update option is always hidden by JavaScript. -local flags = { - "geoip_update", "geosite_update" -} -for _, f in ipairs(flags) do - o = s:option(Flag, f) - o.rmempty = false -end - -s:append(Template(appname .. "/rule/rule_version")) - -s = m:section(TypedSection, "shunt_rules", "Sing-Box/Xray " .. translate("Shunt Rule"), "" .. translate("Please note attention to the priority, the higher the order, the higher the priority.") .. "") -s.template = "cbi/tblsection" -s.anonymous = false -s.addremove = true -s.sortable = true -s.extedit = api.url("shunt_rules", "%s") -function s.create(e, t) - TypedSection.create(e, t) - luci.http.redirect(e.extedit:format(t)) -end -function s.remove(e, t) - m.uci:foreach(appname, "nodes", function(s) - if s["protocol"] and s["protocol"] == "_shunt" then - m:del(s[".name"], t) - end - end) - TypedSection.remove(e, t) -end - -o = s:option(DummyValue, "remarks", translate("Remarks")) - -return m diff --git a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/shunt_rules.lua b/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/shunt_rules.lua deleted file mode 100644 index 5900c246a3..0000000000 --- a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/shunt_rules.lua +++ /dev/null @@ -1,240 +0,0 @@ -local api = require "luci.passwall2.api" -local appname = api.appname -local datatypes = api.datatypes - -m = Map(appname, "Sing-Box/Xray " .. translate("Shunt Rule")) -m.redirect = api.url("rule") -api.set_apply_on_parse(m) - -if not arg[1] or not m:get(arg[1]) then - luci.http.redirect(m.redirect) -end - -function m.on_before_save(self) - m:set("@global[0]", "flush_set", "1") -end - --- Add inline CSS to map description -m.description = (m.description or "") .. [[ - -]] - -function clean_text(text) - local nbsp = string.char(0xC2, 0xA0) -- Non-breaking space (U+00A0) - local fullwidth_space = string.char(0xE3, 0x80, 0x80) -- Full-width space (U+3000) - return text - :gsub("\t", " ") - :gsub(nbsp, " ") - :gsub(fullwidth_space, " ") - :gsub("^%s+", "") - :gsub("%s+$", "\n") - :gsub("\r\n", "\n") - :gsub("[ \t]*\n[ \t]*", "\n") -end - -s = m:section(NamedSection, arg[1], "shunt_rules", "") -s.addremove = false -s.dynamic = false - -remarks = s:option(Value, "remarks", translate("Remarks")) -remarks.default = arg[1] -remarks.rmempty = false - -protocol = s:option(MultiValue, "protocol", translate("Protocol")) -protocol:value("http") -protocol:value("tls") -protocol:value("bittorrent") -protocol.widget = "checkbox" -protocol.default = nil -protocol.optional = false - -o = s:option(MultiValue, "inbound", translate("Inbound Tag")) -o:value("tproxy", translate("Transparent proxy")) -o:value("socks", "Socks") -o.widget = "checkbox" -o.default = nil -o.optional = false - -network = s:option(ListValue, "network", translate("Network")) -network:value("tcp,udp", "TCP UDP") -network:value("tcp", "TCP") -network:value("udp", "UDP") - -source = s:option(DynamicList, "source", translate("Source")) -source.description = "
  • " .. translate("Example:") -.. "
  • " .. translate("IP") .. ": 192.168.1.100" -.. "
  • " .. translate("IP CIDR") .. ": 192.168.1.0/24" -.. "
  • " .. translate("GeoIP") .. ": geoip:private" -.. "
" -source.cast = "string" -source.cfgvalue = function(self, section) - local value - if self.tag_error[section] then - value = self:formvalue(section) - else - value = self.map:get(section, self.option) - if type(value) == "string" then - local value2 = {} - string.gsub(value, '[^' .. " " .. ']+', function(w) table.insert(value2, w) end) - value = value2 - end - end - return value -end -source.validate = function(self, value, t) - local err = {} - for _, v in ipairs(value) do - local flag = false - if datatypes.ip4addr(v) then - flag = true - end - - if flag == false and v:find("geoip:") and v:find("geoip:") == 1 then - flag = true - end - - if flag == false then - err[#err + 1] = v - end - end - - if #err > 0 then - self:add_error(t, "invalid", translate("Not true format, please re-enter!")) - for _, v in ipairs(err) do - self:add_error(t, "invalid", v) - end - end - - return value -end - -local dynamicList_write = function(self, section, value) - local t = {} - local t2 = {} - if type(value) == "table" then - local x - for _, x in ipairs(value) do - if x and #x > 0 then - if not t2[x] then - t2[x] = x - t[#t+1] = x - end - end - end - else - t = { value } - end - t = table.concat(t, " ") - return DynamicList.write(self, section, t) -end - -source.write = dynamicList_write - -sourcePort = s:option(Value, "sourcePort", translate("Source port")) - -port = s:option(Value, "port", translate("Port")) - -domain_list = s:option(TextValue, "domain_list", translate("Domain")) -domain_list.rows = 10 -domain_list.wrap = "off" -domain_list.validate = function(self, value) - local hosts= {} - value = clean_text(value) - string.gsub(value, "[^\r\n]+", function(w) table.insert(hosts, w) end) - for index, host in ipairs(hosts) do - local flag = 1 - local tmp_host = host - if not host:find("#") and host:find("%s") then - elseif host:find("regexp:") and host:find("regexp:") == 1 then - flag = 0 - elseif host:find("domain:.") and host:find("domain:.") == 1 then - tmp_host = host:gsub("domain:", "") - elseif host:find("full:.") and host:find("full:.") == 1 then - tmp_host = host:gsub("full:", "") - elseif host:find("geosite:") and host:find("geosite:") == 1 then - flag = 0 - elseif host:find("ext:") and host:find("ext:") == 1 then - flag = 0 - elseif host:find("rule-set:", 1, true) == 1 or host:find("rs:") == 1 then - local w = host:sub(host:find(":") + 1, #host) - if w:find("local:") == 1 or w:find("remote:") == 1 then - flag = 0 - end - elseif host:find("#") and host:find("#") == 1 then - flag = 0 - end - if flag == 1 then - if not datatypes.hostname(tmp_host) then - return nil, tmp_host .. " " .. translate("Not valid domain name, please re-enter!") - end - end - end - return value -end -domain_list.description = "
    " -.. "
  • " .. translate("Plaintext: If this string matches any part of the targeting domain, this rule takes effet. Example: rule 'sina.com' matches targeting domain 'sina.com', 'sina.com.cn' and 'www.sina.com', but not 'sina.cn'.") .. "
  • " -.. "
  • " .. translate("Regular expression: Begining with 'regexp:', the rest is a regular expression. When the regexp matches targeting domain, this rule takes effect. Example: rule 'regexp:\\.goo.*\\.com$' matches 'www.google.com' and 'fonts.googleapis.com', but not 'google.com'.") .. "
  • " -.. "
  • " .. translate("Subdomain (recommended): Begining with 'domain:' and the rest is a domain. When the targeting domain is exactly the value, or is a subdomain of the value, this rule takes effect. Example: rule 'domain:v2ray.com' matches 'www.v2ray.com', 'v2ray.com', but not 'xv2ray.com'.") .. "
  • " -.. "
  • " .. translate("Full domain: Begining with 'full:' and the rest is a domain. When the targeting domain is exactly the value, the rule takes effect. Example: rule 'domain:v2ray.com' matches 'v2ray.com', but not 'www.v2ray.com'.") .. "
  • " -.. "
  • " .. translate("Pre-defined domain list: Begining with 'geosite:' and the rest is a name, such as geosite:google or geosite:cn.") .. "
  • " -.. "
  • " - .. translate("Sing-Box rule-set: Begining with 'rule-set:remote:' or 'rule-set:local:'") - .. "
      " - .. "
    • " .. translate("Such as:") .. "'rule-set:remote:https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-cn.srs'" .. "
    • " - .. "
    • " .. translate("Such as:") .. "'rule-set:local:/usr/share/sing-box/geosite-cn.srs'" .. "
    • " - .. "
    " -.. "
  • " -.. "
  • " .. translate("Annotation: Begining with #") .. "
  • " -.. "
" -ip_list = s:option(TextValue, "ip_list", "IP") -ip_list.rows = 10 -ip_list.wrap = "off" -ip_list.validate = function(self, value) - local ipmasks= {} - value = clean_text(value) - string.gsub(value, "[^\r\n]+", function(w) table.insert(ipmasks, w) end) - for index, ipmask in ipairs(ipmasks) do - if ipmask:find("geoip:") and ipmask:find("geoip:") == 1 and not ipmask:find("%s") then - elseif ipmask:find("ext:") and ipmask:find("ext:") == 1 and not ipmask:find("%s") then - elseif ipmask:find("rule-set:", 1, true) == 1 or ipmask:find("rs:") == 1 then - local w = ipmask:sub(ipmask:find(":") + 1, #ipmask) - if w:find("local:") == 1 or w:find("remote:") == 1 then - flag = 0 - end - elseif ipmask:find("#") and ipmask:find("#") == 1 then - else - if not (datatypes.ipmask4(ipmask) or datatypes.ipmask6(ipmask)) then - return nil, ipmask .. " " .. translate("Not valid IP format, please re-enter!") - end - end - end - return value -end -ip_list.description = "
    " -.. "
  • " .. translate("IP: such as '127.0.0.1'.") .. "
  • " -.. "
  • " .. translate("CIDR: such as '127.0.0.0/8'.") .. "
  • " -.. "
  • " .. translate("GeoIP: such as 'geoip:cn'. It begins with geoip: (lower case) and followed by two letter of country code.") .. "
  • " -.. "
  • " - .. translate("Sing-Box rule-set: Begining with 'rule-set:remote:' or 'rule-set:local:'") - .. "
      " - .. "
    • " .. translate("Such as:") .. "'rule-set:remote:https://raw.githubusercontent.com/SagerNet/sing-geoip/rule-set/geoip-cn.srs'" .. "
    • " - .. "
    • " .. translate("Such as:") .. "'rule-set:local:/usr/share/sing-box/geoip-cn.srs'" .. "
    • " - .. "
    " -.. "
  • " -.. "
  • " .. translate("Annotation: Begining with #") .. "
  • " -.. "
" - -o = s:option(Flag, "invert", "invert", translate("Invert match result.") .. " " .. translate("Only support Sing-Box.")) - -return m diff --git a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/socks_config.lua b/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/socks_config.lua deleted file mode 100644 index 68f507ad01..0000000000 --- a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/socks_config.lua +++ /dev/null @@ -1,151 +0,0 @@ -local api = require "luci.passwall2.api" -local appname = api.appname - -m = Map(appname) -api.set_apply_on_parse(m) - -if not arg[1] or not m:get(arg[1]) then - luci.http.redirect(api.url()) -end - -m:append(Template(appname .. "/cbi/nodes_multivalue_com")) -m:append(Template(appname .. "/cbi/nodes_listvalue_com")) - -local has_singbox = api.finded_com("sing-box") -local has_xray = api.finded_com("xray") - -local nodes_table = {} -for k, e in ipairs(api.get_valid_nodes()) do - nodes_table[#nodes_table + 1] = e -end - -s = m:section(NamedSection, arg[1], translate("Socks Config"), translate("Socks Config")) -s.addremove = false -s.dynamic = false - ----- Enable -o = s:option(Flag, "enabled", translate("Enable")) -o.default = 1 -o.rmempty = false - -local auto_switch_tip -local current_node = api.get_cache_var("socks_" .. arg[1]) -if current_node then - local n = m:get(current_node) - if n then - if tonumber(m:get(arg[1], "enable_autoswitch") or 0) == 1 then - if n then - local remarks = api.get_node_remarks(n) - local url = api.url("node_config", n[".name"]) - auto_switch_tip = translatef("Current node: %s", string.format('%s', url, remarks)) .. "
" - end - end - end -end - -socks_node = s:option(ListValue, "node", translate("Node")) -if auto_switch_tip then - socks_node.description = auto_switch_tip -end -socks_node.template = appname .. "/cbi/nodes_listvalue" -socks_node.group = {} - -o = s:option(Flag, "bind_local", translate("Bind Local"), translate("When selected, it can only be accessed localhost.")) -o.default = "0" - -local n = 1 -m.uci:foreach(appname, "socks", function(s) - if s[".name"] == section then - return false - end - n = n + 1 -end) - -o = s:option(Value, "port", "Socks " .. translate("Listen Port")) -o.default = n + 1080 -o.datatype = "port" -o.rmempty = false - -if has_singbox or has_xray then - o = s:option(Value, "http_port", "HTTP " .. translate("Listen Port") .. " " .. translate("0 is not use")) - o.default = 0 - o.datatype = "port" -end - -o = s:option(Flag, "log", translate("Enable") .. " " .. translate("Log")) -o.default = 1 -o.rmempty = false - -o = s:option(Flag, "enable_autoswitch", translate("Auto Switch")) -o.default = 0 -o.rmempty = false - -o = s:option(Value, "autoswitch_testing_time", translate("How often to test"), translate("Units:seconds")) -o.datatype = "min(10)" -o.default = 30 -o:depends("enable_autoswitch", true) - -o = s:option(Value, "autoswitch_connect_timeout", translate("Timeout seconds"), translate("Units:seconds")) -o.datatype = "min(1)" -o.default = 3 -o:depends("enable_autoswitch", true) - -o = s:option(Value, "autoswitch_retry_num", translate("Timeout retry num")) -o.datatype = "min(1)" -o.default = 1 -o:depends("enable_autoswitch", true) - -o = s:option(MultiValue, "autoswitch_backup_node", translate("List of backup nodes")) -o:depends("enable_autoswitch", true) -o.widget = "checkbox" -o.template = appname .. "/cbi/nodes_multivalue" -o.group = {} -for i, v in pairs(nodes_table) do - o:value(v.id, v.remark) - o.group[#o.group+1] = v.group or "" - socks_node:value(v.id, v["remark"]) - socks_node.group[#socks_node.group+1] = (v.group and v.group ~= "") and v.group or translate("default") -end --- Reading the old DynamicList -function o.cfgvalue(self, section) - return m.uci:get_list(appname, section, "autoswitch_backup_node") or {} -end --- Write-and-hold DynamicList -function o.write(self, section, value) - local old = m.uci:get_list(appname, section, "autoswitch_backup_node") or {} - local new, set = {}, {} - for v in value:gmatch("%S+") do - new[#new + 1] = v - set[v] = 1 - end - for _, v in ipairs(old) do - if not set[v] then - m.uci:set_list(appname, section, "autoswitch_backup_node", new) - return - end - set[v] = nil - end - for _ in pairs(set) do - m.uci:set_list(appname, section, "autoswitch_backup_node", new) - return - end -end - -o = s:option(Flag, "autoswitch_restore_switch", translate("Restore Switch"), translate("When detects main node is available, switch back to the main node.")) -o:depends("enable_autoswitch", true) - -o = s:option(Value, "autoswitch_probe_url", translate("Probe URL"), translate("The URL used to detect the connection status.")) -o:value("https://cp.cloudflare.com/", "Cloudflare") -o:value("https://www.gstatic.com/generate_204", "Gstatic") -o:value("https://www.google.com/generate_204", "Google") -o:value("https://www.youtube.com/generate_204", "YouTube") -o:value("https://connect.rom.miui.com/generate_204", "MIUI (CN)") -o:value("https://connectivitycheck.platform.hicloud.com/generate_204", "HiCloud (CN)") -o.default = o.keylist[3] -o:depends("enable_autoswitch", true) - -o = s:option(DummyValue, "btn") -o.template = appname .. "/socks_auto_switch/btn" -o:depends("enable_autoswitch", true) - -return m diff --git a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/hysteria2.lua b/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/hysteria2.lua deleted file mode 100644 index e8d54732c1..0000000000 --- a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/hysteria2.lua +++ /dev/null @@ -1,79 +0,0 @@ -local m, s = ... - -local api = require "luci.passwall2.api" - -if not api.finded_com("hysteria") then - return -end - -local type_name = "Hysteria2" - -local option_prefix = "hysteria2_" - -local function _n(name) - return option_prefix .. name -end - --- [[ Hysteria2 ]] - -s.fields["type"]:value(type_name, "Hysteria2") - -o = s:option(ListValue, _n("protocol"), translate("Protocol")) -o:value("udp", "UDP") - -o = s:option(Value, _n("address"), translate("Address (Support Domain Name)")) - -o = s:option(Value, _n("port"), translate("Port")) -o.datatype = "port" - -o = s:option(Value, _n("hop"), translate("Port hopping range")) -o.description = translate("Format as 1000:2000 or 1000-2000 Multiple groups are separated by commas (,).") -o.rewrite_option = o.option - -o = s:option(Value, _n("hop_interval"), translate("Hop Interval"), translate("Example:") .. "30s (≥5s)") -o.placeholder = "30s" -o.default = "30s" -o.rewrite_option = o.option - -o = s:option(Value, _n("obfs"), translate("Obfs Password")) -o.rewrite_option = o.option - -o = s:option(Value, _n("auth_password"), translate("Auth Password")) -o.password = true -o.rewrite_option = o.option - -o = s:option(Flag, _n("fast_open"), translate("Fast Open")) -o.default = "0" - -o = s:option(Value, _n("tls_serverName"), translate("Domain")) - -o = s:option(Flag, _n("tls_allowInsecure"), translate("allowInsecure"), translate("Whether unsafe connections are allowed. When checked, Certificate validation will be skipped.")) -o.default = "0" - -o = s:option(Value, _n("tls_pinSHA256"), translate("PinSHA256"),translate("Certificate fingerprint")) -o.rewrite_option = o.option - -o = s:option(Value, _n("up_mbps"), translate("Max upload Mbps")) -o.rewrite_option = o.option - -o = s:option(Value, _n("down_mbps"), translate("Max download Mbps")) -o.rewrite_option = o.option - -o = s:option(Value, _n("recv_window"), translate("QUIC stream receive window")) -o.rewrite_option = o.option - -o = s:option(Value, _n("recv_window_conn"), translate("QUIC connection receive window")) -o.rewrite_option = o.option - -o = s:option(Value, _n("idle_timeout"), translate("Idle Timeout"), translate("Example:") .. "30s (4s-120s)") -o.rewrite_option = o.option - -o = s:option(Flag, _n("disable_mtu_discovery"), translate("Disable MTU detection")) -o.default = "0" -o.rewrite_option = o.option - -o = s:option(Flag, _n("lazy_start"), translate("Lazy Start")) -o.default = "0" -o.rewrite_option = o.option - -api.luci_types(arg[1], m, s, type_name, option_prefix) diff --git a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/naive.lua b/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/naive.lua deleted file mode 100644 index f6f23a00c6..0000000000 --- a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/naive.lua +++ /dev/null @@ -1,35 +0,0 @@ -local m, s = ... - -local api = require "luci.passwall2.api" - -if not api.is_finded("naive") then - return -end - -local type_name = "Naiveproxy" - -local option_prefix = "naive_" - -local function _n(name) - return option_prefix .. name -end - --- [[ Naive ]] - -s.fields["type"]:value(type_name, translate("NaiveProxy")) - -o = s:option(ListValue, _n("protocol"), translate("Protocol")) -o:value("https", translate("HTTPS")) -o:value("quic", translate("QUIC")) - -o = s:option(Value, _n("address"), translate("Address (Support Domain Name)")) - -o = s:option(Value, _n("port"), translate("Port")) -o.datatype = "port" - -o = s:option(Value, _n("username"), translate("Username")) - -o = s:option(Value, _n("password"), translate("Password")) -o.password = true - -api.luci_types(arg[1], m, s, type_name, option_prefix) diff --git a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/ray.lua b/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/ray.lua deleted file mode 100644 index b8b5a46306..0000000000 --- a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/ray.lua +++ /dev/null @@ -1,821 +0,0 @@ -local m, s = ... - -local api = require "luci.passwall2.api" - -if not api.finded_com("xray") then - return -end - -local appname = api.appname -local jsonc = api.jsonc - -local type_name = "Xray" - -local option_prefix = "xray_" - -local function _n(name) - return option_prefix .. name -end - -local ss_method_list = { - "none", "plain", "aes-128-gcm", "aes-256-gcm", "chacha20-poly1305", "chacha20-ietf-poly1305", "xchacha20-poly1305", "xchacha20-ietf-poly1305", "2022-blake3-aes-128-gcm", "2022-blake3-aes-256-gcm", "2022-blake3-chacha20-poly1305" -} - -local security_list = { "none", "auto", "aes-128-gcm", "chacha20-poly1305", "zero" } - -local header_type_list = { - "none", "srtp", "utp", "wechat-video", "dtls", "wireguard", "dns" -} - -local xray_version = api.get_app_version("xray") --- [[ Xray ]] - -s.fields["type"]:value(type_name, "Xray") -if not s.fields["type"].default then - s.fields["type"].default = type_name -end - -o = s:option(ListValue, _n("protocol"), translate("Protocol")) -o:value("vmess", translate("Vmess")) -o:value("vless", translate("VLESS")) -o:value("http", translate("HTTP")) -o:value("socks", translate("Socks")) -o:value("shadowsocks", translate("Shadowsocks")) -o:value("trojan", translate("Trojan")) -o:value("wireguard", translate("WireGuard")) -if api.compare_versions(xray_version, ">=", "26.1.13") then - o:value("hysteria2", translate("Hysteria2")) -end -if api.compare_versions(xray_version, ">=", "1.8.12") then - o:value("_balancing", translate("Balancing")) -end -o:value("_shunt", translate("Shunt")) -o:value("_iface", translate("Custom Interface")) - -o = s:option(Value, _n("iface"), translate("Interface")) -o.default = "eth1" -o:depends({ [_n("protocol")] = "_iface" }) - -local nodes_table = {} -local balancers_table = {} -local fallback_table = {} -local iface_table = {} -local is_balancer = nil -for k, e in ipairs(api.get_valid_nodes()) do - if e.node_type == "normal" then - nodes_table[#nodes_table + 1] = { - id = e[".name"], - remark = e["remark"], - type = e["type"], - chain_proxy = e["chain_proxy"], - group = e["group"] - } - end - if e.protocol == "_balancing" then - balancers_table[#balancers_table + 1] = { - id = e[".name"], - remark = e["remark"], - group = e["group"] - } - if e[".name"] ~= arg[1] then - fallback_table[#fallback_table + 1] = { - id = e[".name"], - remark = e["remark"], - fallback = e["fallback_node"], - group = e["group"] - } - else - is_balancer = true - end - end - if e.protocol == "_iface" then - iface_table[#iface_table + 1] = { - id = e[".name"], - remark = e["remark"], - group = e["group"] - } - end -end - -local socks_list = {} -m.uci:foreach(appname, "socks", function(s) - if s.enabled == "1" and s.node then - socks_list[#socks_list + 1] = { - id = "Socks_" .. s[".name"], - remark = translate("Socks Config") .. " [" .. s.port .. translate("Port") .. "]", - group = "Socks" - } - end -end) - --- Load balancing node list -o = s:option(MultiValue, _n("balancing_node"), translate("Load balancing node list"), translate("Load balancing node list, document")) -o:depends({ [_n("protocol")] = "_balancing" }) -o.widget = "checkbox" -o.template = appname .. "/cbi/nodes_multivalue" -o.group = {} -for k, v in pairs(socks_list) do - o:value(v.id, v.remark) - o.group[#o.group+1] = v.group or "" -end -for i, v in pairs(nodes_table) do - o:value(v.id, v.remark) - o.group[#o.group+1] = v.group or "" -end --- Reading the old DynamicList -function o.cfgvalue(self, section) - return m.uci:get_list(appname, section, "balancing_node") or {} -end --- Write-and-hold DynamicList -function o.custom_write(self, section, value) - local old = m.uci:get_list(appname, section, "balancing_node") or {} - local new, set = {}, {} - for v in value:gmatch("%S+") do - new[#new + 1] = v - set[v] = 1 - end - for _, v in ipairs(old) do - if not set[v] then - m.uci:set_list(appname, section, "balancing_node", new) - return - end - set[v] = nil - end - for _ in pairs(set) do - m.uci:set_list(appname, section, "balancing_node", new) - return - end -end - -o = s:option(ListValue, _n("balancingStrategy"), translate("Balancing Strategy")) -o:depends({ [_n("protocol")] = "_balancing" }) -o:value("random") -o:value("roundRobin") -o:value("leastPing") -o:value("leastLoad") -o.default = "random" - --- Fallback Node -o = s:option(ListValue, _n("fallback_node"), translate("Fallback Node")) -o:value("", translate("Close(Not use)")) -o:depends({ [_n("protocol")] = "_balancing" }) -o.template = appname .. "/cbi/nodes_listvalue" -o.group = {""} -local function check_fallback_chain(fb) - for k, v in pairs(fallback_table) do - if v.fallback == fb then - fallback_table[k] = nil - check_fallback_chain(v.id) - end - end -end --- Check the fallback chain and remove the balancer node that would form a closed loop. -if is_balancer then - check_fallback_chain(arg[1]) -end -for k, v in pairs(socks_list) do - o:value(v.id, v.remark) - o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") -end -for k, v in pairs(fallback_table) do - o:value(v.id, v.remark) - o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") -end -for k, v in pairs(nodes_table) do - o:value(v.id, v.remark) - o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") -end - -o = s:option(Flag, _n("useCustomProbeUrl"), translate("Use Custom Probe URL"), translate("By default the built-in probe URL will be used, enable this option to use a custom probe URL.")) -o:depends({ [_n("protocol")] = "_balancing" }) - -o = s:option(Value, _n("probeUrl"), translate("Probe URL")) -o:depends({ [_n("useCustomProbeUrl")] = true }) -o:value("https://cp.cloudflare.com/", "Cloudflare") -o:value("https://www.gstatic.com/generate_204", "Gstatic") -o:value("https://www.google.com/generate_204", "Google") -o:value("https://www.youtube.com/generate_204", "YouTube") -o:value("https://connect.rom.miui.com/generate_204", "MIUI (CN)") -o:value("https://connectivitycheck.platform.hicloud.com/generate_204", "HiCloud (CN)") -o.default = "https://www.google.com/generate_204" -o.description = translate("The URL used to detect the connection status.") - -o = s:option(Value, _n("probeInterval"), translate("Probe Interval")) -o:depends({ [_n("protocol")] = "_balancing" }) -o.default = "1m" -o.placeholder = "1m" -o.description = translate("The interval between initiating probes.") .. "
" .. - translate("The time format is numbers + units, such as '10s', '2h45m', and the supported time units are s, m, h, which correspond to seconds, minutes, and hours, respectively.") .. "
" .. - translate("When the unit is not filled in, it defaults to seconds.") - -o = s:option(Value, _n("expected"), translate("Preferred Node Count")) -o:depends({ [_n("balancingStrategy")] = "leastLoad" }) -o.datatype = "uinteger" -o.default = "2" -o.placeholder = "2" -o.description = translate("The load balancer selects the optimal number of nodes, and traffic is randomly distributed among them.") - - --- [[ Shunt Start ]] -if #nodes_table > 0 then - o = s:option(Flag, _n("preproxy_enabled"), translate("Preproxy")) - o:depends({ [_n("protocol")] = "_shunt" }) - - o = s:option(ListValue, _n("main_node"), string.format('%s', translate("Preproxy Node")), translate("Set the node to be used as a pre-proxy. Each rule (including Default) has a separate switch that controls whether this rule uses the pre-proxy or not.")) - o:depends({ [_n("protocol")] = "_shunt", [_n("preproxy_enabled")] = true }) - o.template = appname .. "/cbi/nodes_listvalue" - o.group = {} - for k, v in pairs(socks_list) do - o:value(v.id, v.remark) - o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - end - for k, v in pairs(balancers_table) do - o:value(v.id, v.remark) - o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - end - for k, v in pairs(iface_table) do - o:value(v.id, v.remark) - o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - end - for k, v in pairs(nodes_table) do - o:value(v.id, v.remark) - o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - end - if #o.keylist > 0 then - o.default = o.keylist[1] - end -end -m.uci:foreach(appname, "shunt_rules", function(e) - if e[".name"] and e.remarks then - o = s:option(ListValue, _n(e[".name"]), string.format('* %s', api.url("shunt_rules", e[".name"]), e.remarks)) - o:value("", translate("Close")) - o:value("_default", translate("Default")) - o:value("_direct", translate("Direct Connection")) - o:value("_blackhole", translate("Blackhole")) - o:depends({ [_n("protocol")] = "_shunt" }) - o.template = appname .. "/cbi/nodes_listvalue" - o.group = {"","","",""} - - if #nodes_table > 0 then - for k, v in pairs(socks_list) do - o:value(v.id, v.remark) - o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - end - for k, v in pairs(balancers_table) do - o:value(v.id, v.remark) - o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - end - for k, v in pairs(iface_table) do - o:value(v.id, v.remark) - o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - end - local pt = s:option(ListValue, _n(e[".name"] .. "_proxy_tag"), string.format('* %s', e.remarks .. " " .. translate("Preproxy"))) - pt:value("", translate("Close")) - pt:value("main", translate("Preproxy Node")) - for k, v in pairs(nodes_table) do - o:value(v.id, v.remark) - o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - pt:depends({ [_n("protocol")] = "_shunt", [_n("preproxy_enabled")] = true, [_n(e[".name"])] = v.id }) - end - end - end -end) - -o = s:option(DummyValue, _n("shunt_tips"), " ") -o.not_rewrite = true -o.rawhtml = true -o.cfgvalue = function(t, n) - return string.format('%s', translate("No shunt rules? Click me to go to add.")) -end -o:depends({ [_n("protocol")] = "_shunt" }) - -local o = s:option(ListValue, _n("default_node"), string.format('* %s', translate("Default"))) -o:depends({ [_n("protocol")] = "_shunt" }) -o:value("_direct", translate("Direct Connection")) -o:value("_blackhole", translate("Blackhole")) -o.template = appname .. "/cbi/nodes_listvalue" -o.group = {"",""} - -if #nodes_table > 0 then - for k, v in pairs(socks_list) do - o:value(v.id, v.remark) - o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - end - for k, v in pairs(balancers_table) do - o:value(v.id, v.remark) - o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - end - for k, v in pairs(iface_table) do - o:value(v.id, v.remark) - o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - end - local dpt = s:option(ListValue, _n("default_proxy_tag"), string.format('* %s', translate("Default Preproxy")), translate("When using, localhost will connect this node first and then use this node to connect the default node.")) - dpt:value("", translate("Close")) - dpt:value("main", translate("Preproxy Node")) - for k, v in pairs(nodes_table) do - o:value(v.id, v.remark) - o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - dpt:depends({ [_n("protocol")] = "_shunt", [_n("preproxy_enabled")] = true, [_n("default_node")] = v.id }) - end -end - -o = s:option(ListValue, _n("domainStrategy"), translate("Domain Strategy")) -o:value("AsIs") -o:value("IPIfNonMatch") -o:value("IPOnDemand") -o.default = "IPOnDemand" -o.description = "
  • " .. translate("'AsIs': Only use domain for routing. Default value.") - .. "
  • " .. translate("'IPIfNonMatch': When no rule matches current domain, resolves it into IP addresses (A or AAAA records) and try all rules again.") - .. "
  • " .. translate("'IPOnDemand': As long as there is a IP-based rule, resolves the domain into IP immediately.") - .. "
" -o:depends({ [_n("protocol")] = "_shunt" }) - -o = s:option(ListValue, _n("domainMatcher"), translate("Domain matcher")) -o:value("hybrid") -o:value("linear") -o:depends({ [_n("protocol")] = "_shunt" }) - --- [[ Shunt End ]] - -o = s:option(Value, _n("address"), translate("Address (Support Domain Name)")) - -o = s:option(Value, _n("port"), translate("Port")) -o.datatype = "port" - -local protocols = s.fields[_n("protocol")].keylist -if #protocols > 0 then - for index, value in ipairs(protocols) do - if not value:find("_") then - s.fields[_n("address")]:depends({ [_n("protocol")] = value }) - s.fields[_n("port")]:depends({ [_n("protocol")] = value }) - end - end -end - -o = s:option(Value, _n("username"), translate("Username")) -o:depends({ [_n("protocol")] = "http" }) -o:depends({ [_n("protocol")] = "socks" }) - -o = s:option(Value, _n("password"), translate("Password")) -o.password = true -o:depends({ [_n("protocol")] = "http" }) -o:depends({ [_n("protocol")] = "socks" }) -o:depends({ [_n("protocol")] = "shadowsocks" }) -o:depends({ [_n("protocol")] = "trojan" }) - -o = s:option(ListValue, _n("security"), translate("Encrypt Method")) -for a, t in ipairs(security_list) do o:value(t) end -o:depends({ [_n("protocol")] = "vmess" }) - -o = s:option(Value, _n("encryption"), translate("Encrypt Method") .. " (encryption)") -o.default = "none" -o.placeholder = "none" -o:depends({ [_n("protocol")] = "vless" }) -o.validate = function(self, value) - value = api.trim(value) - return (value == "" and "none" or value) -end - -o = s:option(ListValue, _n("ss_method"), translate("Encrypt Method")) -o.rewrite_option = "method" -for a, t in ipairs(ss_method_list) do o:value(t) end -o:depends({ [_n("protocol")] = "shadowsocks" }) - -o = s:option(Flag, _n("iv_check"), translate("IV Check")) -o:depends({ [_n("protocol")] = "shadowsocks", [_n("ss_method")] = "aes-128-gcm" }) -o:depends({ [_n("protocol")] = "shadowsocks", [_n("ss_method")] = "aes-256-gcm" }) -o:depends({ [_n("protocol")] = "shadowsocks", [_n("ss_method")] = "chacha20-poly1305" }) -o:depends({ [_n("protocol")] = "shadowsocks", [_n("ss_method")] = "xchacha20-poly1305" }) - -o = s:option(Flag, _n("uot"), translate("UDP over TCP")) -o:depends({ [_n("protocol")] = "shadowsocks" }) - -o = s:option(Value, _n("uuid"), translate("ID")) -o.password = true -o:depends({ [_n("protocol")] = "vmess" }) -o:depends({ [_n("protocol")] = "vless" }) - -o = s:option(ListValue, _n("flow"), translate("flow")) -o.default = "" -o:value("", translate("Disable")) -o:value("xtls-rprx-vision") -o:depends({ [_n("protocol")] = "vless" }) - ----- [[hysteria2]] -o = s:option(Value, _n("hysteria2_hop"), translate("Port hopping range")) -o.description = translate("Format as 1000:2000 or 1000-2000 Multiple groups are separated by commas (,).") -o:depends({ [_n("protocol")] = "hysteria2" }) - -o = s:option(Value, _n("hysteria2_hop_interval"), translate("Hop Interval"), translate("Example:") .. "30s (≥5s)") -o.placeholder = "30s" -o.default = "30s" -o:depends({ [_n("protocol")] = "hysteria2" }) - -o = s:option(Value, _n("hysteria2_up_mbps"), translate("Max upload Mbps")) -o:depends({ [_n("protocol")] = "hysteria2" }) - -o = s:option(Value, _n("hysteria2_down_mbps"), translate("Max download Mbps")) -o:depends({ [_n("protocol")] = "hysteria2" }) - -o = s:option(ListValue, _n("hysteria2_obfs_type"), translate("Obfs Type")) -o:value("", translate("Disable")) -o:value("salamander") -o:depends({ [_n("protocol")] = "hysteria2" }) - -o = s:option(Value, _n("hysteria2_obfs_password"), translate("Obfs Password")) -o:depends({ [_n("protocol")] = "hysteria2" }) - -o = s:option(Value, _n("hysteria2_auth_password"), translate("Auth Password")) -o.password = true -o:depends({ [_n("protocol")] = "hysteria2"}) - -o = s:option(Value, _n("hysteria2_idle_timeout"), translate("Idle Timeout"), translate("Example:") .. "30s (4s-120s)") -o:depends({ [_n("protocol")] = "hysteria2"}) - -o = s:option(Flag, _n("hysteria2_disable_mtu_discovery"), translate("Disable MTU detection")) -o.default = "0" -o:depends({ [_n("protocol")] = "hysteria2"}) ----- [[hysteria2 end]] - -o = s:option(Flag, _n("tls"), translate("TLS")) -o.default = 0 -o:depends({ [_n("protocol")] = "vmess" }) -o:depends({ [_n("protocol")] = "vless" }) -o:depends({ [_n("protocol")] = "http" }) -o:depends({ [_n("protocol")] = "socks" }) -o:depends({ [_n("protocol")] = "trojan" }) -o:depends({ [_n("protocol")] = "shadowsocks" }) - -o = s:option(Flag, _n("reality"), translate("REALITY")) -o.default = 0 -o:depends({ [_n("tls")] = true, [_n("transport")] = "raw" }) -o:depends({ [_n("tls")] = true, [_n("transport")] = "ws" }) -o:depends({ [_n("tls")] = true, [_n("transport")] = "grpc" }) -o:depends({ [_n("tls")] = true, [_n("transport")] = "httpupgrade" }) -o:depends({ [_n("tls")] = true, [_n("transport")] = "xhttp" }) - -o = s:option(ListValue, _n("alpn"), translate("alpn")) -o.default = "default" -o:value("default", translate("Default")) -o:value("h3") -o:value("h2") -o:value("h3,h2") -o:value("http/1.1") -o:value("h2,http/1.1") -o:value("h3,h2,http/1.1") -o:depends({ [_n("tls")] = true, [_n("reality")] = false }) -o:depends({ [_n("protocol")] = "hysteria2" }) - --- o = s:option(Value, _n("minversion"), translate("minversion")) --- o.default = "1.3" --- o:value("1.3") --- o:depends({ [_n("tls")] = true }) - -o = s:option(Value, _n("tls_serverName"), translate("Domain")) -o:depends({ [_n("tls")] = true }) -o:depends({ [_n("protocol")] = "hysteria2" }) - -o = s:option(Flag, _n("tls_allowInsecure"), translate("allowInsecure"), translate("Whether unsafe connections are allowed. When checked, Certificate validation will be skipped.")) -o.default = "0" -o:depends({ [_n("tls")] = true, [_n("reality")] = false }) -o:depends({ [_n("protocol")] = "hysteria2" }) - -o = s:option(Value, _n("tls_chain_fingerprint"), translate("TLS Chain Fingerprint (SHA256)"), translate("Once set, connects only when the server’s chain fingerprint matches.")) -o:depends({ [_n("tls")] = true, [_n("reality")] = false }) - -o = s:option(Flag, _n("ech"), translate("ECH")) -o.default = "0" -o:depends({ [_n("tls")] = true, [_n("flow")] = "", [_n("reality")] = false }) -o:depends({ [_n("protocol")] = "hysteria2" }) - -o = s:option(TextValue, _n("ech_config"), translate("ECH Config")) -o.default = "" -o.rows = 5 -o.wrap = "soft" -o:depends({ [_n("ech")] = true }) -o.validate = function(self, value) - return api.trim(value:gsub("[\r\n]", "")) -end - -o = s:option(ListValue, _n("ech_ForceQuery"), translate("ECH Query Policy"), translate("Controls the policy used when performing DNS queries for ECH configuration.")) -o.default = "none" -o:value("none") -o:value("half") -o:value("full") -o:depends({ [_n("ech")] = true }) - --- [[ REALITY ]] -- -o = s:option(Value, _n("reality_publicKey"), translate("Public Key")) -o:depends({ [_n("tls")] = true, [_n("reality")] = true }) - -o = s:option(Value, _n("reality_shortId"), translate("Short Id")) -o:depends({ [_n("tls")] = true, [_n("reality")] = true }) - -o = s:option(Value, _n("reality_spiderX"), translate("Spider X")) -o.placeholder = "/" -o:depends({ [_n("tls")] = true, [_n("reality")] = true }) - -o = s:option(Flag, _n("utls"), translate("uTLS")) -o.default = "0" -o:depends({ [_n("tls")] = true, [_n("reality")] = false }) - -o = s:option(ListValue, _n("fingerprint"), translate("Finger Print")) -o:value("chrome") -o:value("firefox") -o:value("edge") -o:value("safari") -o:value("360") -o:value("qq") -o:value("ios") -o:value("android") -o:value("random") -o:value("randomized") -o.default = "chrome" -o:depends({ [_n("tls")] = true, [_n("utls")] = true }) -o:depends({ [_n("tls")] = true, [_n("reality")] = true }) - -o = s:option(Flag, _n("use_mldsa65Verify"), translate("ML-DSA-65")) -o.default = "0" -o:depends({ [_n("tls")] = true, [_n("reality")] = true }) - -o = s:option(TextValue, _n("reality_mldsa65Verify"), "ML-DSA-65 " .. translate("Public key")) -o.default = "" -o.rows = 5 -o.wrap = "soft" -o:depends({ [_n("use_mldsa65Verify")] = true }) -o.validate = function(self, value) - return api.trim(value:gsub("[\r\n]", "")) -end - -o = s:option(ListValue, _n("transport"), translate("Transport")) -o:value("raw", "RAW (TCP)") -o:value("mkcp", "mKCP") -o:value("ws", "WebSocket") -o:value("grpc", "gRPC") -o:value("httpupgrade", "HttpUpgrade") -o:value("xhttp", "XHTTP") -o:depends({ [_n("protocol")] = "vmess" }) -o:depends({ [_n("protocol")] = "vless" }) -o:depends({ [_n("protocol")] = "socks" }) -o:depends({ [_n("protocol")] = "shadowsocks" }) -o:depends({ [_n("protocol")] = "trojan" }) - -o = s:option(Value, _n("wireguard_public_key"), translate("Public Key")) -o:depends({ [_n("protocol")] = "wireguard" }) - -o = s:option(Value, _n("wireguard_secret_key"), translate("Private Key")) -o:depends({ [_n("protocol")] = "wireguard" }) - -o = s:option(Value, _n("wireguard_preSharedKey"), translate("Pre shared key")) -o:depends({ [_n("protocol")] = "wireguard" }) - -o = s:option(DynamicList, _n("wireguard_local_address"), translate("Local Address")) -o:depends({ [_n("protocol")] = "wireguard" }) - -o = s:option(Value, _n("wireguard_mtu"), translate("MTU")) -o.default = "1420" -o:depends({ [_n("protocol")] = "wireguard" }) - -if api.compare_versions(xray_version, ">=", "1.8.0") then - o = s:option(Value, _n("wireguard_reserved"), translate("Reserved"), translate("Decimal numbers separated by \",\" or Base64-encoded strings.")) - o:depends({ [_n("protocol")] = "wireguard" }) -end - -o = s:option(Value, _n("wireguard_keepAlive"), translate("Keep Alive")) -o.default = "0" -o:depends({ [_n("protocol")] = "wireguard" }) - --- [[ RAW ]]-- -o = s:option(ListValue, _n("tcp_guise"), translate("Camouflage Type")) -o:value("none", "none") -o:value("http", "http") -o:depends({ [_n("transport")] = "raw" }) - -o = s:option(DynamicList, _n("tcp_guise_http_host"), translate("HTTP Host")) -o:depends({ [_n("tcp_guise")] = "http" }) - -o = s:option(DynamicList, _n("tcp_guise_http_path"), translate("HTTP Path")) -o.placeholder = "/" -o:depends({ [_n("tcp_guise")] = "http" }) - --- [[ mKCP ]]-- -o = s:option(ListValue, _n("mkcp_guise"), translate("Camouflage Type"), translate('
none: default, no masquerade, data sent is packets with no characteristics.
srtp: disguised as an SRTP packet, it will be recognized as video call data (such as FaceTime).
utp: packets disguised as uTP will be recognized as bittorrent downloaded data.
wechat-video: packets disguised as WeChat video calls.
dtls: disguised as DTLS 1.2 packet.
wireguard: disguised as a WireGuard packet. (not really WireGuard protocol)
dns: Disguising traffic as DNS requests.')) -for a, t in ipairs(header_type_list) do o:value(t) end -o:depends({ [_n("transport")] = "mkcp" }) - -o = s:option(Value, _n("mkcp_domain"), translate("Camouflage Domain"), translate("Use it together with the DNS disguised type. You can fill in any domain.")) -o:depends({ [_n("mkcp_guise")] = "dns" }) - -o = s:option(Value, _n("mkcp_mtu"), translate("KCP MTU")) -o.default = "1350" -o:depends({ [_n("transport")] = "mkcp" }) - -o = s:option(Value, _n("mkcp_tti"), translate("KCP TTI")) -o.default = "20" -o:depends({ [_n("transport")] = "mkcp" }) - -o = s:option(Value, _n("mkcp_uplinkCapacity"), translate("KCP uplinkCapacity")) -o.default = "5" -o:depends({ [_n("transport")] = "mkcp" }) - -o = s:option(Value, _n("mkcp_downlinkCapacity"), translate("KCP downlinkCapacity")) -o.default = "20" -o:depends({ [_n("transport")] = "mkcp" }) - -o = s:option(Flag, _n("mkcp_congestion"), translate("KCP Congestion")) -o:depends({ [_n("transport")] = "mkcp" }) - -o = s:option(Value, _n("mkcp_readBufferSize"), translate("KCP readBufferSize")) -o.default = "1" -o:depends({ [_n("transport")] = "mkcp" }) - -o = s:option(Value, _n("mkcp_writeBufferSize"), translate("KCP writeBufferSize")) -o.default = "1" -o:depends({ [_n("transport")] = "mkcp" }) - -o = s:option(Value, _n("mkcp_seed"), translate("KCP Seed")) -o:depends({ [_n("transport")] = "mkcp" }) - --- [[ WebSocket ]]-- -o = s:option(Value, _n("ws_host"), translate("WebSocket Host")) -o:depends({ [_n("transport")] = "ws" }) - -o = s:option(Value, _n("ws_path"), translate("WebSocket Path")) -o.placeholder = "/" -o:depends({ [_n("transport")] = "ws" }) - -o = s:option(Value, _n("ws_heartbeatPeriod"), translate("HeartbeatPeriod(second)")) -o.datatype = "integer" -o:depends({ [_n("transport")] = "ws" }) - --- [[ gRPC ]]-- -o = s:option(Value, _n("grpc_serviceName"), "ServiceName") -o:depends({ [_n("transport")] = "grpc" }) - -o = s:option(ListValue, _n("grpc_mode"), "gRPC " .. translate("Transfer mode")) -o:value("gun") -o:value("multi") -o:depends({ [_n("transport")] = "grpc" }) - -o = s:option(Flag, _n("grpc_health_check"), translate("Health check")) -o:depends({ [_n("transport")] = "grpc" }) - -o = s:option(Value, _n("grpc_idle_timeout"), translate("Idle timeout")) -o.default = "10" -o:depends({ [_n("grpc_health_check")] = true }) - -o = s:option(Value, _n("grpc_health_check_timeout"), translate("Health check timeout")) -o.default = "20" -o:depends({ [_n("grpc_health_check")] = true }) - -o = s:option(Flag, _n("grpc_permit_without_stream"), translate("Permit without stream")) -o.default = "0" -o:depends({ [_n("grpc_health_check")] = true }) - -o = s:option(Value, _n("grpc_initial_windows_size"), translate("Initial Windows Size")) -o.default = "0" -o:depends({ [_n("transport")] = "grpc" }) - --- [[ HttpUpgrade ]]-- -o = s:option(Value, _n("httpupgrade_host"), translate("HttpUpgrade Host")) -o:depends({ [_n("transport")] = "httpupgrade" }) - -o = s:option(Value, _n("httpupgrade_path"), translate("HttpUpgrade Path")) -o.placeholder = "/" -o:depends({ [_n("transport")] = "httpupgrade" }) - --- [[ XHTTP ]]-- -o = s:option(ListValue, _n("xhttp_mode"), "XHTTP " .. translate("Mode")) -o:depends({ [_n("transport")] = "xhttp" }) -o.default = "auto" -o:value("auto") -o:value("packet-up") -o:value("stream-up") -o:value("stream-one") - -o = s:option(Value, _n("xhttp_host"), translate("XHTTP Host")) -o:depends({ [_n("transport")] = "xhttp" }) - -o = s:option(Value, _n("xhttp_path"), translate("XHTTP Path")) -o.placeholder = "/" -o:depends({ [_n("transport")] = "xhttp" }) - -o = s:option(Flag, _n("use_xhttp_extra"), translate("XHTTP Extra")) -o.default = "0" -o:depends({ [_n("transport")] = "xhttp" }) - -o = s:option(TextValue, _n("xhttp_extra"), " ", translate("An XHttpObject in JSON format, used for sharing.")) -o:depends({ [_n("use_xhttp_extra")] = true }) -o.rows = 15 -o.wrap = "off" -o.custom_cfgvalue = function(self, section, value) - local raw = m:get(section, "xhttp_extra") - if raw then - return api.base64Decode(raw) - end -end -o.custom_write = function(self, section, value) - m:set(section, "xhttp_extra", api.base64Encode(value)) - local success, data = pcall(jsonc.parse, value) - if success and data then - local address = (data.extra and data.extra.downloadSettings and data.extra.downloadSettings.address) - or (data.downloadSettings and data.downloadSettings.address) - if address and address ~= "" then - address = address:gsub("^%[", ""):gsub("%]$", "") - m:set(section, "download_address", address) - else - m:del(section, "download_address") - end - else - m:del(section, "download_address") - end -end -o.validate = function(self, value) - value = value:gsub("\r\n", "\n"):gsub("^[ \t]*\n", ""):gsub("\n[ \t]*$", ""):gsub("\n[ \t]*\n", "\n") - if value:sub(-1) == "\n" then - value = value:sub(1, -2) - end - return value -end -o.custom_remove = function(self, section, value) - m:del(section, "xhttp_extra") - m:del(section, "download_address") -end - --- [[ User-Agent ]]-- -o = s:option(Value, _n("user_agent"), translate("User-Agent")) -o:depends({ [_n("tcp_guise")] = "http" }) -o:depends({ [_n("transport")] = "ws" }) -o:depends({ [_n("transport")] = "httpupgrade" }) -o:depends({ [_n("transport")] = "xhttp" }) - --- [[ Mux.Cool ]]-- -o = s:option(Flag, _n("mux"), "Mux", translate("Enable Mux.Cool")) -o:depends({ [_n("protocol")] = "vmess" }) -o:depends({ [_n("protocol")] = "vless", [_n("transport")] = "raw" }) -o:depends({ [_n("protocol")] = "vless", [_n("transport")] = "ws" }) -o:depends({ [_n("protocol")] = "vless", [_n("transport")] = "grpc" }) -o:depends({ [_n("protocol")] = "vless", [_n("transport")] = "httpupgrade" }) -o:depends({ [_n("protocol")] = "http" }) -o:depends({ [_n("protocol")] = "socks" }) -o:depends({ [_n("protocol")] = "shadowsocks" }) -o:depends({ [_n("protocol")] = "trojan" }) - -o = s:option(Value, _n("mux_concurrency"), translate("Mux concurrency")) -o.default = -1 -o:depends({ [_n("mux")] = true }) - -o = s:option(Value, _n("xudp_concurrency"), translate("XUDP Mux concurrency")) -o.default = 8 -o:depends({ [_n("mux")] = true }) - -o = s:option(Flag, _n("tcp_fast_open"), "TCP " .. translate("Fast Open")) -o.default = 0 - ---[[tcpMptcp]] -o = s:option(Flag, _n("tcpMptcp"), "tcpMptcp", translate("Enable Multipath TCP, need to be enabled in both server and client configuration.")) -o.default = 0 - -o = s:option(Value, _n("preconns"), translate("Pre-connections"), translate("Number of early established connections to reduce latency.")) -o.datatype = "uinteger" -o.placeholder = 0 -o:depends({ [_n("protocol")] = "vless" }) - -o = s:option(ListValue, _n("chain_proxy"), translate("Chain Proxy")) -o:value("", translate("Close(Not use)")) -o:value("1", translate("Preproxy Node")) -o:value("2", translate("Landing Node")) -for i, v in ipairs(s.fields[_n("protocol")].keylist) do - if not v:find("_") then - o:depends({ [_n("protocol")] = v }) - end -end - -o1 = s:option(ListValue, _n("preproxy_node"), translate("Preproxy Node"), translate("Only support a layer of proxy.")) -o1:depends({ [_n("chain_proxy")] = "1" }) -o1.template = appname .. "/cbi/nodes_listvalue" -o1.group = {} - -o2 = s:option(ListValue, _n("to_node"), translate("Landing Node"), translate("Only support a layer of proxy.")) -o2:depends({ [_n("chain_proxy")] = "2" }) -o2.template = appname .. "/cbi/nodes_listvalue" -o2.group = {} - -for k, v in pairs(nodes_table) do - if v.type == "Xray" and v.id ~= arg[1] and (not v.chain_proxy or v.chain_proxy == "") then - o1:value(v.id, v.remark) - o1.group[#o1.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - o2:value(v.id, v.remark) - o2.group[#o2.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - end -end - -for i, v in ipairs(s.fields[_n("protocol")].keylist) do - if not v:find("_") and v ~= "hysteria2" then - s.fields[_n("tcp_fast_open")]:depends({ [_n("protocol")] = v }) - s.fields[_n("tcpMptcp")]:depends({ [_n("protocol")] = v }) - s.fields[_n("chain_proxy")]:depends({ [_n("protocol")] = v }) - end -end - -api.luci_types(arg[1], m, s, type_name, option_prefix) diff --git a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/sing-box.lua b/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/sing-box.lua deleted file mode 100644 index 8f38111622..0000000000 --- a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/sing-box.lua +++ /dev/null @@ -1,911 +0,0 @@ -local m, s = ... - -local api = require "luci.passwall2.api" - -local singbox_bin = api.finded_com("sing-box") - -if not singbox_bin then - return -end - -local local_version = api.get_app_version("sing-box") -local version_ge_1_12_0 = api.compare_versions(local_version:match("[^v]+"), ">=", "1.12.0") - -local singbox_tags = luci.sys.exec(singbox_bin .. " version | grep 'Tags:' | awk '{print $2}'") - -local appname = api.appname - -local type_name = "sing-box" - -local option_prefix = "singbox_" - -local function _n(name) - return option_prefix .. name -end - -local ss_method_new_list = { - "none", "aes-128-gcm", "aes-192-gcm", "aes-256-gcm", "chacha20-ietf-poly1305", "xchacha20-ietf-poly1305", "2022-blake3-aes-128-gcm", "2022-blake3-aes-256-gcm", "2022-blake3-chacha20-poly1305" -} - -local ss_method_old_list = { - "aes-128-ctr", "aes-192-ctr", "aes-256-ctr", "aes-128-cfb", "aes-192-cfb", "aes-256-cfb", "rc4-md5", "chacha20-ietf", "xchacha20", -} - -local security_list = { "none", "auto", "aes-128-gcm", "chacha20-poly1305", "zero" } - --- [[ sing-box ]] - -s.fields["type"]:value(type_name, translate("Sing-Box")) -if not s.fields["type"].default then - s.fields["type"].default = type_name -end - -o = s:option(ListValue, _n("protocol"), translate("Protocol")) -o:value("socks", "Socks") -o:value("http", "HTTP") -o:value("shadowsocks", "Shadowsocks") -if singbox_tags:find("with_shadowsocksr") then - o:value("shadowsocksr", "ShadowsocksR") -end -o:value("vmess", "Vmess") -o:value("trojan", "Trojan") -if singbox_tags:find("with_wireguard") then - o:value("wireguard", "WireGuard") -end -if singbox_tags:find("with_quic") then - o:value("hysteria", "Hysteria") -end -o:value("vless", "VLESS") -if singbox_tags:find("with_quic") then - o:value("tuic", "TUIC") -end -if singbox_tags:find("with_quic") then - o:value("hysteria2", "Hysteria2") -end -if version_ge_1_12_0 then - o:value("anytls", "AnyTLS") -end -o:value("ssh", "SSH") -o:value("_urltest", translate("URLTest")) -o:value("_shunt", translate("Shunt")) -o:value("_iface", translate("Custom Interface")) - -o = s:option(Value, _n("iface"), translate("Interface")) -o.default = "eth1" -o:depends({ [_n("protocol")] = "_iface" }) - -local nodes_table = {} -local iface_table = {} -local urltest_table = {} -for k, e in ipairs(api.get_valid_nodes()) do - if e.node_type == "normal" then - nodes_table[#nodes_table + 1] = { - id = e[".name"], - remark = e["remark"], - type = e["type"], - chain_proxy = e["chain_proxy"], - group = e["group"] - } - end - if e.protocol == "_iface" then - iface_table[#iface_table + 1] = { - id = e[".name"], - remark = e["remark"], - group = e["group"] - } - end - if e.protocol == "_urltest" then - urltest_table[#urltest_table + 1] = { - id = e[".name"], - remark = e["remark"], - group = e["group"] - } - end -end - -local socks_list = {} -m.uci:foreach(appname, "socks", function(s) - if s.enabled == "1" and s.node then - socks_list[#socks_list + 1] = { - id = "Socks_" .. s[".name"], - remark = translate("Socks Config") .. " [" .. s.port .. translate("Port") .. "]", - group = "Socks" - } - end -end) - ---[[ URLTest ]] -o = s:option(MultiValue, _n("urltest_node"), translate("URLTest node list"), translate("List of nodes to test, document")) -o:depends({ [_n("protocol")] = "_urltest" }) -o.widget = "checkbox" -o.template = appname .. "/cbi/nodes_multivalue" -o.group = {} -for k, v in pairs(socks_list) do - o:value(v.id, v.remark) - o.group[#o.group+1] = v.group or "" -end -for i, v in pairs(nodes_table) do - o:value(v.id, v.remark) - o.group[#o.group+1] = v.group or "" -end --- Reading the old DynamicList -function o.cfgvalue(self, section) - return m.uci:get_list(appname, section, "urltest_node") or {} -end --- Write-and-hold DynamicList -function o.custom_write(self, section, value) - local old = m.uci:get_list(appname, section, "urltest_node") or {} - local new, set = {}, {} - for v in value:gmatch("%S+") do - new[#new + 1] = v - set[v] = 1 - end - for _, v in ipairs(old) do - if not set[v] then - m.uci:set_list(appname, section, "urltest_node", new) - return - end - set[v] = nil - end - for _ in pairs(set) do - m.uci:set_list(appname, section, "urltest_node", new) - return - end -end - -o = s:option(Value, _n("urltest_url"), translate("Probe URL")) -o:depends({ [_n("protocol")] = "_urltest" }) -o:value("https://cp.cloudflare.com/", "Cloudflare") -o:value("https://www.gstatic.com/generate_204", "Gstatic") -o:value("https://www.google.com/generate_204", "Google") -o:value("https://www.youtube.com/generate_204", "YouTube") -o:value("https://connect.rom.miui.com/generate_204", "MIUI (CN)") -o:value("https://connectivitycheck.platform.hicloud.com/generate_204", "HiCloud (CN)") -o.default = "https://www.gstatic.com/generate_204" -o.description = translate("The URL used to detect the connection status.") - -o = s:option(Value, _n("urltest_interval"), translate("Test interval")) -o:depends({ [_n("protocol")] = "_urltest" }) -o.default = "3m" -o.placeholder = "3m" -o.description = translate("The interval between initiating probes.") .. "
" .. - translate("The time format is numbers + units, such as '10s', '2h45m', and the supported time units are s, m, h, which correspond to seconds, minutes, and hours, respectively.") .. "
" .. - translate("When the unit is not filled in, it defaults to seconds.") .. "
" .. - translate("Test interval must be less or equal than idle timeout.") - -o = s:option(Value, _n("urltest_tolerance"), translate("Test tolerance"), translate("The test tolerance in milliseconds.")) -o:depends({ [_n("protocol")] = "_urltest" }) -o.datatype = "uinteger" -o.placeholder = "50" -o.default = "50" - -o = s:option(Value, _n("urltest_idle_timeout"), translate("Idle timeout")) -o:depends({ [_n("protocol")] = "_urltest" }) -o.placeholder = "30m" -o.default = "30m" -o.description = translate("The idle timeout.") .. "
" .. - translate("The time format is numbers + units, such as '10s', '2h45m', and the supported time units are s, m, h, which correspond to seconds, minutes, and hours, respectively.") .. "
" .. - translate("When the unit is not filled in, it defaults to seconds.") - -o = s:option(Flag, _n("urltest_interrupt_exist_connections"), translate("Interrupt existing connections")) -o:depends({ [_n("protocol")] = "_urltest" }) -o.default = "0" -o.description = translate("Interrupt existing connections when the selected outbound has changed.") - --- [[ Shunt Start ]] -if #nodes_table > 0 then - o = s:option(Flag, _n("preproxy_enabled"), translate("Preproxy")) - o:depends({ [_n("protocol")] = "_shunt" }) - - o = s:option(ListValue, _n("main_node"), string.format('%s', translate("Preproxy Node")), translate("Set the node to be used as a pre-proxy. Each rule (including Default) has a separate switch that controls whether this rule uses the pre-proxy or not.")) - o:depends({ [_n("protocol")] = "_shunt", [_n("preproxy_enabled")] = true }) - o.template = appname .. "/cbi/nodes_listvalue" - o.group = {} - for k, v in pairs(socks_list) do - o:value(v.id, v.remark) - o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - end - for k, v in pairs(urltest_table) do - o:value(v.id, v.remark) - o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - end - for k, v in pairs(iface_table) do - o:value(v.id, v.remark) - o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - end - for k, v in pairs(nodes_table) do - o:value(v.id, v.remark) - o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - end - if #o.keylist > 0 then - o.default = o.keylist[1] - end -end -m.uci:foreach(appname, "shunt_rules", function(e) - if e[".name"] and e.remarks then - o = s:option(ListValue, _n(e[".name"]), string.format('* %s', api.url("shunt_rules", e[".name"]), e.remarks)) - o:value("", translate("Close")) - o:value("_default", translate("Default")) - o:value("_direct", translate("Direct Connection")) - o:value("_blackhole", translate("Blackhole")) - o:depends({ [_n("protocol")] = "_shunt" }) - o.template = appname .. "/cbi/nodes_listvalue" - o.group = {"","","",""} - - if #nodes_table > 0 then - for k, v in pairs(socks_list) do - o:value(v.id, v.remark) - o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - end - for k, v in pairs(urltest_table) do - o:value(v.id, v.remark) - o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - end - for k, v in pairs(iface_table) do - o:value(v.id, v.remark) - o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - end - local pt = s:option(ListValue, _n(e[".name"] .. "_proxy_tag"), string.format('* %s', e.remarks .. " " .. translate("Preproxy"))) - pt:value("", translate("Close")) - pt:value("main", translate("Preproxy Node")) - for k, v in pairs(nodes_table) do - o:value(v.id, v.remark) - o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - pt:depends({ [_n("protocol")] = "_shunt", [_n("preproxy_enabled")] = true, [_n(e[".name"])] = v.id }) - end - end - end -end) - -o = s:option(DummyValue, _n("shunt_tips"), " ") -o.not_rewrite = true -o.rawhtml = true -o.cfgvalue = function(t, n) - return string.format('%s', translate("No shunt rules? Click me to go to add.")) -end -o:depends({ [_n("protocol")] = "_shunt" }) - -local o = s:option(ListValue, _n("default_node"), string.format('* %s', translate("Default"))) -o:depends({ [_n("protocol")] = "_shunt" }) -o:value("_direct", translate("Direct Connection")) -o:value("_blackhole", translate("Blackhole")) -o.template = appname .. "/cbi/nodes_listvalue" -o.group = {"",""} - -if #nodes_table > 0 then - for k, v in pairs(socks_list) do - o:value(v.id, v.remark) - o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - end - for k, v in pairs(urltest_table) do - o:value(v.id, v.remark) - o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - end - for k, v in pairs(iface_table) do - o:value(v.id, v.remark) - o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - end - local dpt = s:option(ListValue, _n("default_proxy_tag"), string.format('* %s', translate("Default Preproxy")), translate("When using, localhost will connect this node first and then use this node to connect the default node.")) - dpt:value("", translate("Close")) - dpt:value("main", translate("Preproxy Node")) - for k, v in pairs(nodes_table) do - o:value(v.id, v.remark) - o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - dpt:depends({ [_n("protocol")] = "_shunt", [_n("preproxy_enabled")] = true, [_n("default_node")] = v.id }) - end -end - --- [[ Shunt End ]] - -o = s:option(Value, _n("address"), translate("Address (Support Domain Name)")) - -o = s:option(Value, _n("port"), translate("Port")) -o.datatype = "port" - -local protocols = s.fields[_n("protocol")].keylist -if #protocols > 0 then - for index, value in ipairs(protocols) do - if not value:find("_") then - s.fields[_n("address")]:depends({ [_n("protocol")] = value }) - s.fields[_n("port")]:depends({ [_n("protocol")] = value }) - end - end -end - -o = s:option(Value, _n("username"), translate("Username")) -o:depends({ [_n("protocol")] = "http" }) -o:depends({ [_n("protocol")] = "socks" }) -o:depends({ [_n("protocol")] = "ssh" }) - -o = s:option(Value, _n("password"), translate("Password")) -o.password = true -o:depends({ [_n("protocol")] = "http" }) -o:depends({ [_n("protocol")] = "socks" }) -o:depends({ [_n("protocol")] = "shadowsocks" }) -o:depends({ [_n("protocol")] = "shadowsocksr" }) -o:depends({ [_n("protocol")] = "trojan" }) -o:depends({ [_n("protocol")] = "tuic" }) -o:depends({ [_n("protocol")] = "anytls" }) -o:depends({ [_n("protocol")] = "ssh" }) - -o = s:option(ListValue, _n("security"), translate("Encrypt Method")) -for a, t in ipairs(security_list) do o:value(t) end -o:depends({ [_n("protocol")] = "vmess" }) - -o = s:option(ListValue, _n("ss_method"), translate("Encrypt Method")) -o.rewrite_option = "method" -for a, t in ipairs(ss_method_new_list) do o:value(t) end -for a, t in ipairs(ss_method_old_list) do o:value(t) end -o:depends({ [_n("protocol")] = "shadowsocks" }) - -if singbox_tags:find("with_shadowsocksr") then - o = s:option(ListValue, _n("ssr_method"), translate("Encrypt Method")) - o.rewrite_option = "method" - for a, t in ipairs(ss_method_old_list) do o:value(t) end - o:depends({ [_n("protocol")] = "shadowsocksr" }) - - local ssr_protocol_list = { - "origin", "verify_simple", "verify_deflate", "verify_sha1", "auth_simple", - "auth_sha1", "auth_sha1_v2", "auth_sha1_v4", "auth_aes128_md5", - "auth_aes128_sha1", "auth_chain_a", "auth_chain_b", "auth_chain_c", - "auth_chain_d", "auth_chain_e", "auth_chain_f" - } - - o = s:option(ListValue, _n("ssr_protocol"), translate("Protocol")) - for a, t in ipairs(ssr_protocol_list) do o:value(t) end - o:depends({ [_n("protocol")] = "shadowsocksr" }) - - o = s:option(Value, _n("ssr_protocol_param"), translate("Protocol_param")) - o:depends({ [_n("protocol")] = "shadowsocksr" }) - - local ssr_obfs_list = { - "plain", "http_simple", "http_post", "random_head", "tls_simple", - "tls1.0_session_auth", "tls1.2_ticket_auth" - } - - o = s:option(ListValue, _n("ssr_obfs"), translate("Obfs")) - for a, t in ipairs(ssr_obfs_list) do o:value(t) end - o:depends({ [_n("protocol")] = "shadowsocksr" }) - - o = s:option(Value, _n("ssr_obfs_param"), translate("Obfs_param")) - o:depends({ [_n("protocol")] = "shadowsocksr" }) -end - -o = s:option(Flag, _n("uot"), translate("UDP over TCP")) -o:depends({ [_n("protocol")] = "socks" }) -o:depends({ [_n("protocol")] = "shadowsocks" }) - -o = s:option(Value, _n("uuid"), translate("ID")) -o.password = true -o:depends({ [_n("protocol")] = "vmess" }) -o:depends({ [_n("protocol")] = "vless" }) -o:depends({ [_n("protocol")] = "tuic" }) - -o = s:option(Value, _n("alter_id"), "Alter ID") -o.datatype = "uinteger" -o.default = "0" -o:depends({ [_n("protocol")] = "vmess" }) - -o = s:option(Flag, _n("global_padding"), "global_padding", translate("Protocol parameter. Will waste traffic randomly if enabled.")) -o.default = "0" -o:depends({ [_n("protocol")] = "vmess" }) - -o = s:option(Flag, _n("authenticated_length"), "authenticated_length", translate("Protocol parameter. Enable length block encryption.")) -o.default = "0" -o:depends({ [_n("protocol")] = "vmess" }) - -o = s:option(ListValue, _n("flow"), translate("flow")) -o.default = "" -o:value("", translate("Disable")) -o:value("xtls-rprx-vision") -o:depends({ [_n("protocol")] = "vless", [_n("tls")] = true }) - -if singbox_tags:find("with_quic") then - o = s:option(Value, _n("hysteria_hop"), translate("Port hopping range")) - o.description = translate("Format as 1000:2000 or 1000-2000 Multiple groups are separated by commas (,).") - o:depends({ [_n("protocol")] = "hysteria" }) - - o = s:option(Value, _n("hysteria_hop_interval"), translate("Hop Interval"), translate("Example:") .. "30s (≥5s)") - o.placeholder = "30s" - o.default = "30s" - o:depends({ [_n("protocol")] = "hysteria" }) - - o = s:option(Value, _n("hysteria_obfs"), translate("Obfs Password")) - o:depends({ [_n("protocol")] = "hysteria" }) - - o = s:option(ListValue, _n("hysteria_auth_type"), translate("Auth Type")) - o:value("disable", translate("Disable")) - o:value("string", translate("STRING")) - o:value("base64", translate("BASE64")) - o:depends({ [_n("protocol")] = "hysteria" }) - - o = s:option(Value, _n("hysteria_auth_password"), translate("Auth Password")) - o.password = true - o:depends({ [_n("protocol")] = "hysteria", [_n("hysteria_auth_type")] = "string"}) - o:depends({ [_n("protocol")] = "hysteria", [_n("hysteria_auth_type")] = "base64"}) - - o = s:option(Value, _n("hysteria_up_mbps"), translate("Max upload Mbps")) - o.default = "10" - o:depends({ [_n("protocol")] = "hysteria" }) - - o = s:option(Value, _n("hysteria_down_mbps"), translate("Max download Mbps")) - o.default = "50" - o:depends({ [_n("protocol")] = "hysteria" }) - - o = s:option(Value, _n("hysteria_recv_window_conn"), translate("QUIC stream receive window")) - o:depends({ [_n("protocol")] = "hysteria" }) - - o = s:option(Value, _n("hysteria_recv_window"), translate("QUIC connection receive window")) - o:depends({ [_n("protocol")] = "hysteria" }) - - o = s:option(Flag, _n("hysteria_disable_mtu_discovery"), translate("Disable MTU detection")) - o:depends({ [_n("protocol")] = "hysteria" }) - - o = s:option(Value, _n("hysteria_alpn"), translate("QUIC TLS ALPN")) - o:depends({ [_n("protocol")] = "hysteria" }) -end - -if singbox_tags:find("with_quic") then - o = s:option(ListValue, _n("tuic_congestion_control"), translate("Congestion control algorithm")) - o.default = "cubic" - o:value("bbr", translate("BBR")) - o:value("cubic", translate("CUBIC")) - o:value("new_reno", translate("New Reno")) - o:depends({ [_n("protocol")] = "tuic" }) - - o = s:option(ListValue, _n("tuic_udp_relay_mode"), translate("UDP relay mode")) - o.default = "native" - o:value("native", translate("native")) - o:value("quic", translate("QUIC")) - o:depends({ [_n("protocol")] = "tuic" }) - - --[[ - o = s:option(Flag, _n("tuic_udp_over_stream"), translate("UDP over stream")) - o:depends({ [_n("protocol")] = "tuic" }) - ]]-- - - o = s:option(Flag, _n("tuic_zero_rtt_handshake"), translate("Enable 0-RTT QUIC handshake")) - o.default = 0 - o:depends({ [_n("protocol")] = "tuic" }) - - o = s:option(Value, _n("tuic_heartbeat"), translate("Heartbeat interval(second)")) - o.datatype = "uinteger" - o.default = "3" - o:depends({ [_n("protocol")] = "tuic" }) - - o = s:option(ListValue, _n("tuic_alpn"), translate("QUIC TLS ALPN")) - o.default = "default" - o:value("default", translate("Default")) - o:value("h3") - o:value("h2") - o:value("h3,h2") - o:value("http/1.1") - o:value("h2,http/1.1") - o:value("h3,h2,http/1.1") - o:depends({ [_n("protocol")] = "tuic" }) -end - -if singbox_tags:find("with_quic") then - o = s:option(Value, _n("hysteria2_hop"), translate("Port hopping range")) - o.description = translate("Format as 1000:2000 or 1000-2000 Multiple groups are separated by commas (,).") - o:depends({ [_n("protocol")] = "hysteria2" }) - - o = s:option(Value, _n("hysteria2_hop_interval"), translate("Hop Interval"), translate("Example:") .. "30s (≥5s)") - o.placeholder = "30s" - o.default = "30s" - o:depends({ [_n("protocol")] = "hysteria2" }) - - o = s:option(Value, _n("hysteria2_up_mbps"), translate("Max upload Mbps")) - o:depends({ [_n("protocol")] = "hysteria2" }) - - o = s:option(Value, _n("hysteria2_down_mbps"), translate("Max download Mbps")) - o:depends({ [_n("protocol")] = "hysteria2" }) - - o = s:option(ListValue, _n("hysteria2_obfs_type"), translate("Obfs Type")) - o:value("", translate("Disable")) - o:value("salamander") - o:depends({ [_n("protocol")] = "hysteria2" }) - - o = s:option(Value, _n("hysteria2_obfs_password"), translate("Obfs Password")) - o:depends({ [_n("protocol")] = "hysteria2" }) - - o = s:option(Value, _n("hysteria2_auth_password"), translate("Auth Password")) - o.password = true - o:depends({ [_n("protocol")] = "hysteria2"}) -end - --- [[ SSH config start ]] -- -o = s:option(Value, _n("ssh_priv_key"), translate("Private Key")) -o:depends({ [_n("protocol")] = "ssh" }) - -o = s:option(Value, _n("ssh_priv_key_pp"), translate("Private Key Passphrase")) -o.password = true -o:depends({ [_n("protocol")] = "ssh" }) - -o = s:option(DynamicList, _n("ssh_host_key"), translate("Host Key"), translate("Accept any if empty.")) -o:depends({ [_n("protocol")] = "ssh" }) - -o = s:option(DynamicList, _n("ssh_host_key_algo"), translate("Host Key Algorithms")) -o:depends({ [_n("protocol")] = "ssh" }) - -o = s:option(Value, _n("ssh_client_version"), translate("Client Version"), translate("Random version will be used if empty.")) -o:depends({ [_n("protocol")] = "ssh" }) --- [[ SSH config end ]] -- - -o = s:option(Flag, _n("tls"), translate("TLS")) -o.default = 0 -o:depends({ [_n("protocol")] = "vmess" }) -o:depends({ [_n("protocol")] = "vless" }) -o:depends({ [_n("protocol")] = "http" }) -o:depends({ [_n("protocol")] = "trojan" }) -o:depends({ [_n("protocol")] = "shadowsocks" }) -o:depends({ [_n("protocol")] = "anytls" }) - -o = s:option(ListValue, _n("alpn"), translate("alpn")) -o.default = "default" -o:value("default", translate("Default")) -o:value("h3") -o:value("h2") -o:value("h3,h2") -o:value("http/1.1") -o:value("h2,http/1.1") -o:value("h3,h2,http/1.1") -o:depends({ [_n("tls")] = true }) - -o = s:option(Flag, _n("tls_disable_sni"), translate("Disable SNI"), translate("Do not send server name in ClientHello.")) -o.default = "0" -o:depends({ [_n("tls")] = true }) -o:depends({ [_n("protocol")] = "hysteria"}) -o:depends({ [_n("protocol")] = "tuic" }) -o:depends({ [_n("protocol")] = "hysteria2" }) -o:depends({ [_n("protocol")] = "shadowsocks" }) - -o = s:option(Value, _n("tls_serverName"), translate("Domain")) -o:depends({ [_n("tls")] = true }) -o:depends({ [_n("protocol")] = "hysteria"}) -o:depends({ [_n("protocol")] = "tuic" }) -o:depends({ [_n("protocol")] = "hysteria2" }) -o:depends({ [_n("protocol")] = "shadowsocks" }) - -o = s:option(Flag, _n("tls_allowInsecure"), translate("allowInsecure"), translate("Whether unsafe connections are allowed. When checked, Certificate validation will be skipped.")) -o.default = "0" -o:depends({ [_n("tls")] = true }) -o:depends({ [_n("protocol")] = "hysteria"}) -o:depends({ [_n("protocol")] = "tuic" }) -o:depends({ [_n("protocol")] = "hysteria2" }) -o:depends({ [_n("protocol")] = "shadowsocks" }) - -o = s:option(Flag, _n("ech"), translate("ECH")) -o.default = "0" -o:depends({ [_n("tls")] = true, [_n("flow")] = "", [_n("reality")] = false }) -o:depends({ [_n("protocol")] = "tuic" }) -o:depends({ [_n("protocol")] = "hysteria" }) -o:depends({ [_n("protocol")] = "hysteria2" }) - -o = s:option(TextValue, _n("ech_config"), translate("ECH Config")) -o.default = "" -o.rows = 5 -o.wrap = "off" -o:depends({ [_n("ech")] = true }) -o.validate = function(self, value) - value = value:gsub("^%s+", ""):gsub("%s+$","\n"):gsub("\r\n","\n"):gsub("[ \t]*\n[ \t]*", "\n") - value = value:gsub("^%s*\n", "") - if value:sub(-1) == "\n" then - value = value:sub(1, -2) - end - return value -end - -o = s:option(Flag, _n("pq_signature_schemes_enabled"), translate("PQ signature schemes")) -o.default = "0" -o:depends({ [_n("ech")] = true }) - -o = s:option(Flag, _n("dynamic_record_sizing_disabled"), translate("Disable adaptive sizing of TLS records")) -o.default = "0" -o:depends({ [_n("ech")] = true }) - -if singbox_tags:find("with_utls") then - o = s:option(Flag, _n("utls"), translate("uTLS")) - o.default = "0" - o:depends({ [_n("tls")] = true }) - - o = s:option(ListValue, _n("fingerprint"), translate("Finger Print")) - o:value("chrome") - o:value("firefox") - o:value("edge") - o:value("safari") - o:value("360") - o:value("qq") - o:value("ios") - o:value("android") - o:value("random") - o:value("randomized") - o.default = "chrome" - o:depends({ [_n("utls")] = true }) - - -- [[ REALITY ]] -- - o = s:option(Flag, _n("reality"), translate("REALITY")) - o.default = 0 - o:depends({ [_n("protocol")] = "vless", [_n("tls")] = true }) - o:depends({ [_n("protocol")] = "vmess", [_n("tls")] = true }) - o:depends({ [_n("protocol")] = "shadowsocks", [_n("tls")] = true }) - o:depends({ [_n("protocol")] = "socks", [_n("tls")] = true }) - o:depends({ [_n("protocol")] = "trojan", [_n("tls")] = true }) - o:depends({ [_n("protocol")] = "anytls", [_n("tls")] = true }) - - o = s:option(Value, _n("reality_publicKey"), translate("Public Key")) - o:depends({ [_n("reality")] = true }) - - o = s:option(Value, _n("reality_shortId"), translate("Short Id")) - o:depends({ [_n("reality")] = true }) -end - -o = s:option(ListValue, _n("transport"), translate("Transport")) -o:value("tcp", "TCP") -o:value("http", "HTTP") -o:value("ws", "WebSocket") -o:value("httpupgrade", "HTTPUpgrade") -if singbox_tags:find("with_quic") then - o:value("quic", "QUIC") -end -if singbox_tags:find("with_grpc") then - o:value("grpc", "gRPC") -else o:value("grpc", "gRPC-lite") -end -o:depends({ [_n("protocol")] = "vmess" }) -o:depends({ [_n("protocol")] = "vless" }) -o:depends({ [_n("protocol")] = "socks" }) -o:depends({ [_n("protocol")] = "shadowsocks" }) -o:depends({ [_n("protocol")] = "trojan" }) - -if singbox_tags:find("with_wireguard") then - o = s:option(Value, _n("wireguard_public_key"), translate("Public Key")) - o:depends({ [_n("protocol")] = "wireguard" }) - - o = s:option(Value, _n("wireguard_secret_key"), translate("Private Key")) - o:depends({ [_n("protocol")] = "wireguard" }) - - o = s:option(Value, _n("wireguard_preSharedKey"), translate("Pre shared key")) - o:depends({ [_n("protocol")] = "wireguard" }) - - o = s:option(DynamicList, _n("wireguard_local_address"), translate("Local Address")) - o:depends({ [_n("protocol")] = "wireguard" }) - - o = s:option(Value, _n("wireguard_mtu"), translate("MTU")) - o.default = "1420" - o:depends({ [_n("protocol")] = "wireguard" }) - - o = s:option(Flag, _n("wireguard_system_interface"), translate("System interface")) - o.default = 0 - o:depends({ [_n("protocol")] = "wireguard" }) - - o = s:option(Value, _n("wireguard_interface_name"), translate("System interface name")) - o:depends({ [_n("protocol")] = "wireguard" }) - - o = s:option(Value, _n("wireguard_reserved"), translate("Reserved"), translate("Decimal numbers separated by \",\" or Base64-encoded strings.")) - o:depends({ [_n("protocol")] = "wireguard" }) -end - --- [[ TCP ]]-- -o = s:option(ListValue, _n("tcp_guise"), translate("Camouflage Type")) -o:value("none", "none") -o:value("http", "http") -o:depends({ [_n("transport")] = "tcp" }) - -o = s:option(DynamicList, _n("tcp_guise_http_host"), translate("HTTP Host")) -o:depends({ [_n("tcp_guise")] = "http" }) - -o = s:option(DynamicList, _n("tcp_guise_http_path"), translate("HTTP Path")) -o.placeholder = "/" -o:depends({ [_n("tcp_guise")] = "http" }) - --- [[ HTTP ]]-- -o = s:option(DynamicList, _n("http_host"), translate("HTTP Host")) -o:depends({ [_n("transport")] = "http" }) - -o = s:option(Value, _n("http_path"), translate("HTTP Path")) -o.placeholder = "/" -o:depends({ [_n("transport")] = "http" }) - -o = s:option(Flag, _n("http_h2_health_check"), translate("Health check")) -o:depends({ [_n("tls")] = true, [_n("transport")] = "http" }) - -o = s:option(Value, _n("http_h2_read_idle_timeout"), translate("Idle timeout")) -o.default = "10" -o:depends({ [_n("tls")] = true, [_n("transport")] = "http", [_n("http_h2_health_check")] = true }) - -o = s:option(Value, _n("http_h2_health_check_timeout"), translate("Health check timeout")) -o.default = "15" -o:depends({ [_n("tls")] = true, [_n("transport")] = "http", [_n("http_h2_health_check")] = true }) - --- [[ WebSocket ]]-- -o = s:option(Value, _n("ws_host"), translate("WebSocket Host")) -o:depends({ [_n("transport")] = "ws" }) - -o = s:option(Value, _n("ws_path"), translate("WebSocket Path")) -o.placeholder = "/" -o:depends({ [_n("transport")] = "ws" }) - -o = s:option(Flag, _n("ws_enableEarlyData"), translate("Enable early data")) -o:depends({ [_n("transport")] = "ws" }) - -o = s:option(Value, _n("ws_maxEarlyData"), translate("Early data length")) -o.default = "1024" -o:depends({ [_n("ws_enableEarlyData")] = true }) - -o = s:option(Value, _n("ws_earlyDataHeaderName"), translate("Early data header name"), translate("Recommended value: Sec-WebSocket-Protocol")) -o:depends({ [_n("ws_enableEarlyData")] = true }) - --- [[ HTTPUpgrade ]]-- -o = s:option(Value, _n("httpupgrade_host"), translate("HTTPUpgrade Host")) -o:depends({ [_n("transport")] = "httpupgrade" }) - -o = s:option(Value, _n("httpupgrade_path"), translate("HTTPUpgrade Path")) -o.placeholder = "/" -o:depends({ [_n("transport")] = "httpupgrade" }) - --- [[ gRPC ]]-- -o = s:option(Value, _n("grpc_serviceName"), "ServiceName") -o:depends({ [_n("transport")] = "grpc" }) - -o = s:option(Flag, _n("grpc_health_check"), translate("Health check")) -o:depends({ [_n("transport")] = "grpc" }) - -o = s:option(Value, _n("grpc_idle_timeout"), translate("Idle timeout")) -o.default = "10" -o:depends({ [_n("grpc_health_check")] = true }) - -o = s:option(Value, _n("grpc_health_check_timeout"), translate("Health check timeout")) -o.default = "20" -o:depends({ [_n("grpc_health_check")] = true }) - -o = s:option(Flag, _n("grpc_permit_without_stream"), translate("Permit without stream")) -o.default = "0" -o:depends({ [_n("grpc_health_check")] = true }) - --- [[ User-Agent ]]-- -o = s:option(Value, _n("user_agent"), translate("User-Agent")) -o:depends({ [_n("tcp_guise")] = "http" }) -o:depends({ [_n("transport")] = "http" }) -o:depends({ [_n("transport")] = "ws" }) -o:depends({ [_n("transport")] = "httpupgrade" }) - --- [[ Mux ]]-- -o = s:option(Flag, _n("mux"), translate("Mux")) -o.rmempty = false -o:depends({ [_n("protocol")] = "vmess" }) -o:depends({ [_n("protocol")] = "vless", [_n("flow")] = "" }) -o:depends({ [_n("protocol")] = "shadowsocks", [_n("uot")] = "" }) -o:depends({ [_n("protocol")] = "trojan" }) - -o = s:option(ListValue, _n("mux_type"), translate("Mux")) -o:value("smux") -o:value("yamux") -o:value("h2mux") -o:depends({ [_n("mux")] = true }) - -o = s:option(Value, _n("mux_concurrency"), translate("Mux concurrency")) -o.default = 4 -o:depends({ [_n("mux")] = true, [_n("tcpbrutal")] = false }) - -o = s:option(Flag, _n("mux_padding"), translate("Padding")) -o.default = 0 -o:depends({ [_n("mux")] = true }) - --- [[ TCP Brutal ]]-- -o = s:option(Flag, _n("tcpbrutal"), translate("TCP Brutal")) -o.default = 0 -o:depends({ [_n("mux")] = true }) - -o = s:option(Value, _n("tcpbrutal_up_mbps"), translate("Max upload Mbps")) -o.default = "10" -o:depends({ [_n("tcpbrutal")] = true }) - -o = s:option(Value, _n("tcpbrutal_down_mbps"), translate("Max download Mbps")) -o.default = "50" -o:depends({ [_n("tcpbrutal")] = true }) - -o = s:option(Flag, _n("shadowtls"), "ShadowTLS") -o.default = 0 -o:depends({ [_n("protocol")] = "vmess", [_n("tls")] = false }) -o:depends({ [_n("protocol")] = "shadowsocks", [_n("tls")] = false }) - -o = s:option(ListValue, _n("shadowtls_version"), "ShadowTLS " .. translate("Version")) -o.default = "1" -o:value("1", "ShadowTLS v1") -o:value("2", "ShadowTLS v2") -o:value("3", "ShadowTLS v3") -o:depends({ [_n("shadowtls")] = true }) - -o = s:option(Value, _n("shadowtls_password"), "ShadowTLS " .. translate("Password")) -o.password = true -o:depends({ [_n("shadowtls")] = true, [_n("shadowtls_version")] = "2" }) -o:depends({ [_n("shadowtls")] = true, [_n("shadowtls_version")] = "3" }) - -o = s:option(Value, _n("shadowtls_serverName"), "ShadowTLS " .. translate("Domain")) -o:depends({ [_n("shadowtls")] = true }) - -if singbox_tags:find("with_utls") then - o = s:option(Flag, _n("shadowtls_utls"), "ShadowTLS " .. translate("uTLS")) - o.default = "0" - o:depends({ [_n("shadowtls")] = true }) - - o = s:option(ListValue, _n("shadowtls_fingerprint"), "ShadowTLS " .. translate("Finger Print")) - o:value("chrome") - o:value("firefox") - o:value("edge") - o:value("safari") - -- o:value("360") - o:value("qq") - o:value("ios") - -- o:value("android") - o:value("random") - -- o:value("randomized") - o.default = "chrome" - o:depends({ [_n("shadowtls")] = true, [_n("shadowtls_utls")] = true }) -end - --- [[ SIP003 plugin ]]-- -o = s:option(Flag, _n("plugin_enabled"), translate("plugin")) -o.default = 0 -o:depends({ [_n("protocol")] = "shadowsocks" }) - -o = s:option(ListValue, _n("plugin"), "SIP003 " .. translate("plugin")) -o.default = "obfs-local" -o:depends({ [_n("plugin_enabled")] = true }) -o:value("obfs-local") -o:value("v2ray-plugin") - -o = s:option(Value, _n("plugin_opts"), translate("opts")) -o:depends({ [_n("plugin_enabled")] = true }) - -o = s:option(ListValue, _n("domain_strategy"), translate("Domain Strategy"), translate("If is domain name, The requested domain name will be resolved to IP before connect.")) -o.default = "" -o:value("", translate("Auto")) -o:value("prefer_ipv4", translate("Prefer IPv4")) -o:value("prefer_ipv6", translate("Prefer IPv6")) -o:value("ipv4_only", translate("IPv4 Only")) -o:value("ipv6_only", translate("IPv6 Only")) -o:depends({ [_n("protocol")] = "socks" }) -o:depends({ [_n("protocol")] = "http" }) -o:depends({ [_n("protocol")] = "shadowsocks" }) -o:depends({ [_n("protocol")] = "shadowsocksr" }) -o:depends({ [_n("protocol")] = "vmess" }) -o:depends({ [_n("protocol")] = "trojan" }) -o:depends({ [_n("protocol")] = "wireguard" }) -o:depends({ [_n("protocol")] = "hysteria" }) -o:depends({ [_n("protocol")] = "vless" }) -o:depends({ [_n("protocol")] = "tuic" }) -o:depends({ [_n("protocol")] = "hysteria2" }) -o:depends({ [_n("protocol")] = "anytls" }) - -o = s:option(ListValue, _n("chain_proxy"), translate("Chain Proxy")) -o:value("", translate("Close(Not use)")) -o:value("1", translate("Preproxy Node")) -o:value("2", translate("Landing Node")) -for i, v in ipairs(s.fields[_n("protocol")].keylist) do - if not v:find("_") then - o:depends({ [_n("protocol")] = v }) - end -end - -o1 = s:option(ListValue, _n("preproxy_node"), translate("Preproxy Node"), translate("Only support a layer of proxy.")) -o1:depends({ [_n("chain_proxy")] = "1" }) -o1.template = appname .. "/cbi/nodes_listvalue" -o1.group = {} - -o2 = s:option(ListValue, _n("to_node"), translate("Landing Node"), translate("Only support a layer of proxy.")) -o2:depends({ [_n("chain_proxy")] = "2" }) -o2.template = appname .. "/cbi/nodes_listvalue" -o2.group = {} - -for k, v in pairs(nodes_table) do - if v.type == "sing-box" and v.id ~= arg[1] and (not v.chain_proxy or v.chain_proxy == "") then - o1:value(v.id, v.remark) - o1.group[#o1.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - o2:value(v.id, v.remark) - o2.group[#o2.group+1] = (v.group and v.group ~= "") and v.group or translate("default") - end -end - -api.luci_types(arg[1], m, s, type_name, option_prefix) diff --git a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/ss-rust.lua b/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/ss-rust.lua deleted file mode 100644 index 6f8cbffa57..0000000000 --- a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/ss-rust.lua +++ /dev/null @@ -1,71 +0,0 @@ -local m, s = ... - -local api = require "luci.passwall2.api" - -if not api.is_finded("sslocal") then - return -end - -local type_name = "SS-Rust" - -local option_prefix = "ssrust_" - -local function _n(name) - return option_prefix .. name -end - -local ssrust_encrypt_method_list = { - "none", "plain", - "aes-128-gcm", "aes-256-gcm", "chacha20-ietf-poly1305", - "2022-blake3-aes-128-gcm", "2022-blake3-aes-256-gcm", "2022-blake3-chacha8-poly1305", "2022-blake3-chacha20-poly1305" -} - --- [[ Shadowsocks Rust ]] - -s.fields["type"]:value(type_name, translate("Shadowsocks Rust")) - -o = s:option(Value, _n("address"), translate("Address (Support Domain Name)")) - -o = s:option(Value, _n("port"), translate("Port")) -o.datatype = "port" - -o = s:option(Value, _n("password"), translate("Password")) -o.password = true - -o = s:option(Value, _n("method"), translate("Encrypt Method")) -for a, t in ipairs(ssrust_encrypt_method_list) do o:value(t) end - -o = s:option(Value, _n("timeout"), translate("Connection Timeout")) -o.datatype = "uinteger" -o.default = 300 - -o = s:option(ListValue, _n("tcp_fast_open"), "TCP " .. translate("Fast Open"), translate("Need node support required")) -o:value("false") -o:value("true") - -o = s:option(Flag, _n("plugin_enabled"), translate("plugin")) -o.default = 0 - -o = s:option(Value, _n("plugin"), "SIP003 " .. translate("plugin"), translate("Supports custom SIP003 plugins, Make sure the plugin is installed.")) -o.default = "none" -o:value("none", translate("none")) -if api.is_finded("xray-plugin") then o:value("xray-plugin") end -if api.is_finded("v2ray-plugin") then o:value("v2ray-plugin") end -if api.is_finded("obfs-local") then o:value("obfs-local") end -if api.is_finded("shadow-tls") then o:value("shadow-tls") end -o:depends({ [_n("plugin_enabled")] = true }) -o.validate = function(self, value, t) - if value and value ~= "" and value ~= "none" then - if not api.is_finded(value) then - return nil, value .. ": " .. translate("Can't find this file!") - else - return value - end - end - return nil -end - -o = s:option(Value, _n("plugin_opts"), translate("opts")) -o:depends({ [_n("plugin_enabled")] = true }) - -api.luci_types(arg[1], m, s, type_name, option_prefix) diff --git a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/ss.lua b/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/ss.lua deleted file mode 100644 index 4201cc8fbe..0000000000 --- a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/ss.lua +++ /dev/null @@ -1,61 +0,0 @@ -local m, s = ... - -local api = require "luci.passwall2.api" - -if not api.is_finded("ss-local") then - return -end - -local type_name = "SS" - -local option_prefix = "ss_" - -local function _n(name) - return option_prefix .. name -end - -local ss_encrypt_method_list = { - "rc4-md5", "aes-128-cfb", "aes-192-cfb", "aes-256-cfb", "aes-128-ctr", - "aes-192-ctr", "aes-256-ctr", "bf-cfb", "salsa20", "chacha20", "chacha20-ietf", - "aes-128-gcm", "aes-192-gcm", "aes-256-gcm", "chacha20-ietf-poly1305", - "xchacha20-ietf-poly1305" -} - --- [[ Shadowsocks Libev ]] - -s.fields["type"]:value(type_name, translate("Shadowsocks Libev")) - -o = s:option(Value, _n("address"), translate("Address (Support Domain Name)")) - -o = s:option(Value, _n("port"), translate("Port")) -o.datatype = "port" - -o = s:option(Value, _n("password"), translate("Password")) -o.password = true - -o = s:option(Value, _n("method"), translate("Encrypt Method")) -for a, t in ipairs(ss_encrypt_method_list) do o:value(t) end - -o = s:option(Value, _n("timeout"), translate("Connection Timeout")) -o.datatype = "uinteger" -o.default = 300 - -o = s:option(ListValue, _n("tcp_fast_open"), "TCP " .. translate("Fast Open"), translate("Need node support required")) -o:value("false") -o:value("true") - -o = s:option(Flag, _n("plugin_enabled"), translate("plugin")) -o.default = 0 - -o = s:option(ListValue, _n("plugin"), "SIP003 " .. translate("plugin")) -o.default = "none" -o:value("none", translate("none")) -if api.is_finded("xray-plugin") then o:value("xray-plugin") end -if api.is_finded("v2ray-plugin") then o:value("v2ray-plugin") end -if api.is_finded("obfs-local") then o:value("obfs-local") end -o:depends({ [_n("plugin_enabled")] = true }) - -o = s:option(Value, _n("plugin_opts"), translate("opts")) -o:depends({ [_n("plugin_enabled")] = true }) - -api.luci_types(arg[1], m, s, type_name, option_prefix) diff --git a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/ssr.lua b/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/ssr.lua deleted file mode 100644 index faa796c3d1..0000000000 --- a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/ssr.lua +++ /dev/null @@ -1,69 +0,0 @@ -local m, s = ... - -local api = require "luci.passwall2.api" - -if not api.is_finded("ssr-local") then - return -end - -local type_name = "SSR" - -local option_prefix = "ssr_" - -local function _n(name) - return option_prefix .. name -end - -local ssr_encrypt_method_list = { - "none", "table", "rc2-cfb", "rc4", "rc4-md5", "rc4-md5-6", "aes-128-cfb", - "aes-192-cfb", "aes-256-cfb", "aes-128-ctr", "aes-192-ctr", "aes-256-ctr", - "bf-cfb", "camellia-128-cfb", "camellia-192-cfb", "camellia-256-cfb", - "cast5-cfb", "des-cfb", "idea-cfb", "seed-cfb", "salsa20", "chacha20", - "chacha20-ietf" -} - -local ssr_protocol_list = { - "origin", "verify_simple", "verify_deflate", "verify_sha1", "auth_simple", - "auth_sha1", "auth_sha1_v2", "auth_sha1_v4", "auth_aes128_md5", - "auth_aes128_sha1", "auth_chain_a", "auth_chain_b", "auth_chain_c", - "auth_chain_d", "auth_chain_e", "auth_chain_f" -} -local ssr_obfs_list = { - "plain", "http_simple", "http_post", "random_head", "tls_simple", - "tls1.0_session_auth", "tls1.2_ticket_auth" -} - --- [[ ShadowsocksR Libev ]] - -s.fields["type"]:value(type_name, translate("ShadowsocksR Libev")) - -o = s:option(Value, _n("address"), translate("Address (Support Domain Name)")) - -o = s:option(Value, _n("port"), translate("Port")) -o.datatype = "port" - -o = s:option(Value, _n("password"), translate("Password")) -o.password = true - -o = s:option(ListValue, _n("method"), translate("Encrypt Method")) -for a, t in ipairs(ssr_encrypt_method_list) do o:value(t) end - -o = s:option(ListValue, _n("protocol"), translate("Protocol")) -for a, t in ipairs(ssr_protocol_list) do o:value(t) end - -o = s:option(Value, _n("protocol_param"), translate("Protocol_param")) - -o = s:option(ListValue, _n("obfs"), translate("Obfs")) -for a, t in ipairs(ssr_obfs_list) do o:value(t) end - -o = s:option(Value, _n("obfs_param"), translate("Obfs_param")) - -o = s:option(Value, _n("timeout"), translate("Connection Timeout")) -o.datatype = "uinteger" -o.default = 300 - -o = s:option(ListValue, _n("tcp_fast_open"), "TCP " .. translate("Fast Open"), translate("Need node support required")) -o:value("false") -o:value("true") - -api.luci_types(arg[1], m, s, type_name, option_prefix) diff --git a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/tuic.lua b/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/tuic.lua deleted file mode 100644 index bb97256ed1..0000000000 --- a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/tuic.lua +++ /dev/null @@ -1,133 +0,0 @@ -local m, s = ... - -local api = require "luci.passwall2.api" - -if not api.is_finded("tuic-client") then - return -end - -local type_name = "TUIC" - -local option_prefix = "tuic_" - -local function _n(name) - return option_prefix .. name -end - --- [[ TUIC ]] - -s.fields["type"]:value(type_name, translate("TUIC")) - -o = s:option(Value, _n("address"), translate("Address (Support Domain Name)")) - -o = s:option(Value, _n("port"), translate("Port")) -o.datatype = "port" - -o = s:option(Value, _n("uuid"), translate("ID")) -o.password = true - --- Tuic Password for remote server connect -o = s:option(Value, _n("password"), translate("TUIC User Password For Connect Remote Server")) -o.password = true -o.rmempty = true -o.default = "" -o.rewrite_option = o.option - ---[[ --- Tuic username for local socks connect -o = s:option(Value, _n("socks_username"), translate("TUIC UserName For Local Socks")) -o.rmempty = true -o.default = "" -o.rewrite_option = o.option - --- Tuic Password for local socks connect -o = s:option(Value, _n("socks_password"), translate("TUIC Password For Local Socks")) -o.password = true -o.rmempty = true -o.default = "" -o.rewrite_option = o.option ---]] - -o = s:option(Value, _n("ip"), translate("Set the TUIC proxy server ip address")) -o.datatype = "ipaddr" -o.rmempty = true -o.rewrite_option = o.option - -o = s:option(ListValue, _n("udp_relay_mode"), translate("UDP relay mode")) -o:value("native", translate("native")) -o:value("quic", translate("QUIC")) -o.default = "native" -o.rmempty = true -o.rewrite_option = o.option - -o = s:option(ListValue, _n("congestion_control"), translate("Congestion control algorithm")) -o:value("bbr", translate("BBR")) -o:value("cubic", translate("CUBIC")) -o:value("new_reno", translate("New Reno")) -o.default = "cubic" -o.rmempty = true -o.rewrite_option = o.option - -o = s:option(Value, _n("heartbeat"), translate("Heartbeat interval(second)")) -o.datatype = "uinteger" -o.default = "3" -o.rmempty = true -o.rewrite_option = o.option - -o = s:option(Value, _n("timeout"), translate("Timeout for establishing a connection to server(second)")) -o.datatype = "uinteger" -o.default = "8" -o.rmempty = true -o.rewrite_option = o.option - -o = s:option(Value, _n("gc_interval"), translate("Garbage collection interval(second)")) -o.datatype = "uinteger" -o.default = "3" -o.rmempty = true -o.rewrite_option = o.option - -o = s:option(Value, _n("gc_lifetime"), translate("Garbage collection lifetime(second)")) -o.datatype = "uinteger" -o.default = "15" -o.rmempty = true -o.rewrite_option = o.option - -o = s:option(Value, _n("send_window"), translate("TUIC send window")) -o.datatype = "uinteger" -o.default = 20971520 -o.rmempty = true -o.rewrite_option = o.option - -o = s:option(Value, _n("receive_window"), translate("TUIC receive window")) -o.datatype = "uinteger" -o.default = 10485760 -o.rmempty = true -o.rewrite_option = o.option - -o = s:option(Value, _n("max_package_size"), translate("TUIC Maximum packet size the socks5 server can receive from external, in bytes")) -o.datatype = "uinteger" -o.default = 1500 -o.rmempty = true -o.rewrite_option = o.option - ---Tuic settings for the local inbound socks5 server -o = s:option(Flag, _n("dual_stack"), translate("Set if the listening socket should be dual-stack")) -o.default = 0 -o.rmempty = true -o.rewrite_option = o.option - -o = s:option(Flag, _n("disable_sni"), translate("Disable SNI")) -o.default = 0 -o.rmempty = true -o.rewrite_option = o.option - -o = s:option(Flag, _n("zero_rtt_handshake"), translate("Enable 0-RTT QUIC handshake")) -o.default = 0 -o.rmempty = true -o.rewrite_option = o.option - -o = s:option(DynamicList, _n("tls_alpn"), translate("TLS ALPN")) -o.rmempty = true -o.rewrite_option = o.option - -api.luci_types(arg[1], m, s, type_name, option_prefix) diff --git a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/server/index.lua b/small/luci-app-passwall2/luasrc/model/cbi/passwall2/server/index.lua deleted file mode 100644 index 70bec3f873..0000000000 --- a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/server/index.lua +++ /dev/null @@ -1,92 +0,0 @@ -local api = require "luci.passwall2.api" - -m = Map("passwall2_server", translate("Server-Side")) -api.set_apply_on_parse(m) - -t = m:section(NamedSection, "global", "global") -t.anonymous = true -t.addremove = false - -e = t:option(Flag, "enable", translate("Enable")) -e.rmempty = false - -t = m:section(TypedSection, "user", translate("Users Manager")) -t.anonymous = true -t.addremove = true -t.sortable = true -t.template = "cbi/tblsection" -t.extedit = api.url("server_user", "%s") -function t.create(e, t) - local uuid = api.gen_uuid() - t = uuid - TypedSection.create(e, t) - luci.http.redirect(e.extedit:format(t)) -end -function t.remove(e, t) - e.map.proceed = true - e.map:del(t) - luci.http.redirect(api.url("server")) -end - -e = t:option(Flag, "enable", translate("Enable")) -e.width = "5%" -e.rmempty = false - -e = t:option(DummyValue, "status", translate("Status")) -e.rawhtml = true -e.cfgvalue = function(t, n) - return string.format('%s', translate("Collecting data...")) -end - -e = t:option(DummyValue, "remarks", translate("Remarks")) -e.width = "15%" - -e = t:option(DummyValue, "type", translate("Type")) -e.width = "20%" -e.rawhtml = true -e.cfgvalue = function(t, n) - local str = "" - local type = m:get(n, "type") or "" - if type == "sing-box" or type == "Xray" then - local protocol = m:get(n, "protocol") or "" - if protocol == "vmess" then - protocol = "VMess" - elseif protocol == "vless" then - protocol = "VLESS" - elseif protocol == "shadowsocks" then - protocol = "SS" - elseif protocol == "shadowsocksr" then - protocol = "SSR" - elseif protocol == "wireguard" then - protocol = "WG" - elseif protocol == "hysteria" then - protocol = "HY" - elseif protocol == "hysteria2" then - protocol = "HY2" - elseif protocol == "anytls" then - protocol = "AnyTLS" - else - protocol = protocol:gsub("^%l",string.upper) - local custom = m:get(n, "custom") or "0" - if custom == "1" then - protocol = translate("Custom Config") - end - end - if type == "sing-box" then type = "Sing-Box" end - type = type .. " " .. protocol - end - str = str .. translate(type) - return str -end - -e = t:option(DummyValue, "port", translate("Port")) - -e = t:option(Flag, "log", translate("Log")) -e.default = "1" -e.rmempty = false - -m:append(Template("passwall2/server/log")) - -m:append(Template("passwall2/server/users_list_status")) -return m - diff --git a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/server/type/hysteria2.lua b/small/luci-app-passwall2/luasrc/model/cbi/passwall2/server/type/hysteria2.lua deleted file mode 100644 index 8bdacf88bf..0000000000 --- a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/server/type/hysteria2.lua +++ /dev/null @@ -1,109 +0,0 @@ -local m, s = ... - -local api = require "luci.passwall2.api" - -if not api.finded_com("hysteria") then - return -end - -local type_name = "Hysteria2" - -local option_prefix = "hysteria2_" - -local function _n(name) - return option_prefix .. name -end - --- [[ Hysteria2 ]] - -s.fields["type"]:value(type_name, "Hysteria2") - -o = s:option(Flag, _n("custom"), translate("Use Custom Config")) - -o = s:option(Value, _n("port"), translate("Listen Port")) -o.datatype = "port" -o:depends({ [_n("custom")] = false }) - -o = s:option(Value, _n("obfs"), translate("Obfs Password")) -o.rewrite_option = o.option -o:depends({ [_n("custom")] = false }) - -o = s:option(Value, _n("auth_password"), translate("Auth Password")) -o.password = true -o.rewrite_option = o.option -o:depends({ [_n("custom")] = false }) - -o = s:option(Flag, _n("udp"), translate("UDP")) -o.default = "1" -o.rewrite_option = o.option -o:depends({ [_n("custom")] = false }) - -o = s:option(Value, _n("up_mbps"), translate("Max upload Mbps")) -o.rewrite_option = o.option -o:depends({ [_n("custom")] = false }) - -o = s:option(Value, _n("down_mbps"), translate("Max download Mbps")) -o.rewrite_option = o.option -o:depends({ [_n("custom")] = false }) - -o = s:option(Flag, _n("ignoreClientBandwidth"), translate("ignoreClientBandwidth")) -o.default = "0" -o.rewrite_option = o.option -o:depends({ [_n("custom")] = false }) - -o = s:option(FileUpload, _n("tls_certificateFile"), translate("Public key absolute path"), translate("as:") .. "/etc/ssl/fullchain.pem") -o.default = m:get(s.section, "tls_certificateFile") or "/etc/config/ssl/" .. arg[1] .. ".pem" -if o and o:formvalue(arg[1]) then o.default = o:formvalue(arg[1]) end -o.validate = function(self, value, t) - if value and value ~= "" then - if not nixio.fs.access(value) then - return nil, translate("Can't find this file!") - else - return value - end - end - return nil -end -o:depends({ [_n("custom")] = false }) - -o = s:option(FileUpload, _n("tls_keyFile"), translate("Private key absolute path"), translate("as:") .. "/etc/ssl/private.key") -o.default = m:get(s.section, "tls_keyFile") or "/etc/config/ssl/" .. arg[1] .. ".key" -if o and o:formvalue(arg[1]) then o.default = o:formvalue(arg[1]) end -o.validate = function(self, value, t) - if value and value ~= "" then - if not nixio.fs.access(value) then - return nil, translate("Can't find this file!") - else - return value - end - end - return nil -end -o:depends({ [_n("custom")] = false }) - -o = s:option(TextValue, _n("custom_config"), translate("Custom Config")) -o.rows = 10 -o.wrap = "off" -o:depends({ [_n("custom")] = true }) -o.validate = function(self, value, t) - if value and api.jsonc.parse(value) then - return value - else - return nil, translate("Must be JSON text!") - end -end -o.custom_cfgvalue = function(self, section, value) - local config_str = m:get(section, "config_str") - if config_str then - return api.base64Decode(config_str) - end -end -o.custom_write = function(self, section, value) - m:set(section, "config_str", api.base64Encode(value)) -end - -o = s:option(Flag, _n("log"), translate("Log")) -o.default = "1" -o.rmempty = false - -api.luci_types(arg[1], m, s, type_name, option_prefix) diff --git a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/server/type/ray.lua b/small/luci-app-passwall2/luasrc/model/cbi/passwall2/server/type/ray.lua deleted file mode 100644 index 1a02ba3e68..0000000000 --- a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/server/type/ray.lua +++ /dev/null @@ -1,479 +0,0 @@ -local m, s = ... - -local api = require "luci.passwall2.api" - -if not api.finded_com("xray") then - return -end - -local type_name = "Xray" - -local option_prefix = "xray_" - -local function _n(name) - return option_prefix .. name -end - -local x_ss_method_list = { - "none", "plain", "aes-128-gcm", "aes-256-gcm", "chacha20-poly1305", "xchacha20-poly1305", "2022-blake3-aes-128-gcm", "2022-blake3-aes-256-gcm", "2022-blake3-chacha20-poly1305" -} - -local header_type_list = { - "none", "srtp", "utp", "wechat-video", "dtls", "wireguard", "dns" -} - --- [[ Xray ]] - -s.fields["type"]:value(type_name, "Xray") -if not s.fields["type"].default then - s.fields["type"].default = type_name -end - -o = s:option(Flag, _n("custom"), translate("Use Custom Config")) - -o = s:option(ListValue, _n("protocol"), translate("Protocol")) -o:value("vmess", "Vmess") -o:value("vless", "VLESS") -o:value("http", "HTTP") -o:value("socks", "Socks") -o:value("shadowsocks", "Shadowsocks") -o:value("trojan", "Trojan") -o:value("dokodemo-door", "dokodemo-door") -o:depends({ [_n("custom")] = false }) - -o = s:option(Value, _n("port"), translate("Listen Port")) -o.datatype = "port" -o:depends({ [_n("custom")] = false }) - -o = s:option(Flag, _n("auth"), translate("Auth")) -o.validate = function(self, value, t) - if value and value == "1" then - local user_v = s.fields[_n("username")] and s.fields[_n("username")]:formvalue(t) or "" - local pass_v = s.fields[_n("password")] and s.fields[_n("password")]:formvalue(t) or "" - if user_v == "" or pass_v == "" then - return nil, translate("Username and Password must be used together!") - end - end - return value -end -o:depends({ [_n("protocol")] = "socks" }) -o:depends({ [_n("protocol")] = "http" }) - -o = s:option(Value, _n("username"), translate("Username")) -o:depends({ [_n("auth")] = true }) - -o = s:option(Value, _n("password"), translate("Password")) -o.password = true -o:depends({ [_n("auth")] = true }) -o:depends({ [_n("protocol")] = "shadowsocks" }) - -o = s:option(ListValue, _n("d_protocol"), translate("Destination protocol")) -o:value("tcp", "TCP") -o:value("udp", "UDP") -o:value("tcp,udp", "TCP,UDP") -o:depends({ [_n("protocol")] = "dokodemo-door" }) - -o = s:option(Value, _n("d_address"), translate("Destination address")) -o:depends({ [_n("protocol")] = "dokodemo-door" }) - -o = s:option(Value, _n("d_port"), translate("Destination port")) -o.datatype = "port" -o:depends({ [_n("protocol")] = "dokodemo-door" }) - -o = s:option(Value, _n("decryption"), translate("Encrypt Method") .. " (decryption)") -o.default = "none" -o.placeholder = "none" -o:depends({ [_n("protocol")] = "vless" }) -o.validate = function(self, value) - value = api.trim(value) - return (value == "" and "none" or value) -end - -o = s:option(ListValue, _n("x_ss_method"), translate("Encrypt Method")) -o.rewrite_option = "method" -for a, t in ipairs(x_ss_method_list) do o:value(t) end -o:depends({ [_n("protocol")] = "shadowsocks" }) - -o = s:option(Flag, _n("iv_check"), translate("IV Check")) -o:depends({ [_n("protocol")] = "shadowsocks" }) - -o = s:option(ListValue, _n("ss_network"), translate("Transport")) -o.default = "tcp,udp" -o:value("tcp", "TCP") -o:value("udp", "UDP") -o:value("tcp,udp", "TCP,UDP") -o:depends({ [_n("protocol")] = "shadowsocks" }) - -o = s:option(Flag, _n("udp_forward"), translate("UDP Forward")) -o.default = "1" -o.rmempty = false -o:depends({ [_n("protocol")] = "socks" }) - -o = s:option(DynamicList, _n("uuid"), translate("ID") .. "/" .. translate("Password")) -for i = 1, 3 do - o:value(api.gen_uuid(1)) -end -o:depends({ [_n("protocol")] = "vmess" }) -o:depends({ [_n("protocol")] = "vless" }) -o:depends({ [_n("protocol")] = "trojan" }) - -o = s:option(ListValue, _n("flow"), translate("flow")) -o.default = "" -o:value("", translate("Disable")) -o:value("xtls-rprx-vision") -o:depends({ [_n("protocol")] = "vless" }) - -o = s:option(Flag, _n("tls"), translate("TLS")) -o.default = 0 -o.validate = function(self, value, t) - if value then - local reality = s.fields[_n("reality")] and s.fields[_n("reality")]:formvalue(t) or nil - if reality and reality == "1" then return value end - if value == "1" then - local ca = s.fields[_n("tls_certificateFile")] and s.fields[_n("tls_certificateFile")]:formvalue(t) or "" - local key = s.fields[_n("tls_keyFile")] and s.fields[_n("tls_keyFile")]:formvalue(t) or "" - if ca == "" or key == "" then - return nil, translate("Public key and Private key path can not be empty!") - end - end - return value - end -end -o:depends({ [_n("protocol")] = "vmess" }) -o:depends({ [_n("protocol")] = "vless" }) -o:depends({ [_n("protocol")] = "http" }) -o:depends({ [_n("protocol")] = "socks" }) -o:depends({ [_n("protocol")] = "shadowsocks" }) -o:depends({ [_n("protocol")] = "trojan" }) - --- [[ REALITY ]] -- -o = s:option(Flag, _n("reality"), translate("REALITY")) -o.default = 0 -o:depends({ [_n("tls")] = true }) - -o = s:option(Value, _n("reality_private_key"), translate("Private Key")) -o:depends({ [_n("reality")] = true }) - -o = s:option(DynamicList, _n("reality_shortId"), translate("Short Id")) -o:depends({ [_n("reality")] = true }) - -o = s:option(Value, _n("reality_dest"), translate("Dest")) -o.default = "google.com:443" -o:depends({ [_n("reality")] = true }) - -o = s:option(DynamicList, _n("reality_serverNames"), translate("serverNames")) -o:depends({ [_n("reality")] = true }) -function o.write(self, section, value) - local t = {} - local t2 = {} - if type(value) == "table" then - local x - for _, x in ipairs(value) do - if x and #x > 0 then - if not t2[x] then - t2[x] = x - t[#t+1] = x - end - end - end - else - t = { value } - end - return DynamicList.write(self, section, t) -end - -o = s:option(ListValue, _n("alpn"), translate("alpn")) -o.default = "h2,http/1.1" -o:value("h3") -o:value("h2") -o:value("h3,h2") -o:value("http/1.1") -o:value("h2,http/1.1") -o:value("h3,h2,http/1.1") -o:depends({ [_n("tls")] = true, [_n("reality")] = false }) - -o = s:option(Flag, _n("use_mldsa65Seed"), translate("ML-DSA-65")) -o.default = "0" -o:depends({ [_n("reality")] = true }) - -o = s:option(TextValue, _n("reality_mldsa65Seed"), "ML-DSA-65 " .. translate("Private Key")) -o.default = "" -o.rows = 5 -o.wrap = "soft" -o:depends({ [_n("use_mldsa65Seed")] = true }) -o.validate = function(self, value) - return api.trim(value:gsub("[\r\n]", "")) -end - --- o = s:option(Value, _n("minversion"), translate("minversion")) --- o.default = "1.3" --- o:value("1.3") ---o:depends({ [_n("tls")] = true }) - --- [[ TLS ]] -- -o = s:option(FileUpload, _n("tls_certificateFile"), translate("Public key absolute path"), translate("as:") .. "/etc/ssl/fullchain.pem") -o.default = m:get(s.section, "tls_certificateFile") or "/etc/config/ssl/" .. arg[1] .. ".pem" -if o and o:formvalue(arg[1]) then o.default = o:formvalue(arg[1]) end -o:depends({ [_n("tls")] = true, [_n("reality")] = false }) -o.validate = function(self, value, t) - if value and value ~= "" then - if not nixio.fs.access(value) then - return nil, translate("Can't find this file!") - else - return value - end - end - return nil -end - -o = s:option(FileUpload, _n("tls_keyFile"), translate("Private key absolute path"), translate("as:") .. "/etc/ssl/private.key") -o.default = m:get(s.section, "tls_keyFile") or "/etc/config/ssl/" .. arg[1] .. ".key" -if o and o:formvalue(arg[1]) then o.default = o:formvalue(arg[1]) end -o:depends({ [_n("tls")] = true, [_n("reality")] = false }) -o.validate = function(self, value, t) - if value and value ~= "" then - if not nixio.fs.access(value) then - return nil, translate("Can't find this file!") - else - return value - end - end - return nil -end - -o = s:option(Flag, _n("ech"), translate("ECH")) -o.default = "0" -o:depends({ [_n("tls")] = true, [_n("flow")] = "", [_n("reality")] = false }) - -o = s:option(TextValue, _n("ech_key"), translate("ECH Key")) -o.default = "" -o.rows = 5 -o.wrap = "soft" -o:depends({ [_n("ech")] = true }) -o.validate = function(self, value) - return api.trim(value:gsub("[\r\n]", "")) -end - -o = s:option(ListValue, _n("transport"), translate("Transport")) -o:value("raw", "RAW") -o:value("mkcp", "mKCP") -o:value("ws", "WebSocket") -o:value("grpc", "gRPC") -o:value("httpupgrade", "HttpUpgrade") -o:value("xhttp", "XHTTP") -o:depends({ [_n("protocol")] = "vmess" }) -o:depends({ [_n("protocol")] = "vless" }) -o:depends({ [_n("protocol")] = "socks" }) -o:depends({ [_n("protocol")] = "shadowsocks" }) -o:depends({ [_n("protocol")] = "trojan" }) - --- [[ WebSocket ]]-- -o = s:option(Value, _n("ws_host"), translate("WebSocket Host")) -o:depends({ [_n("transport")] = "ws" }) - -o = s:option(Value, _n("ws_path"), translate("WebSocket Path")) -o:depends({ [_n("transport")] = "ws" }) - --- [[ HttpUpgrade ]]-- -o = s:option(Value, _n("httpupgrade_host"), translate("HttpUpgrade Host")) -o:depends({ [_n("transport")] = "httpupgrade" }) - -o = s:option(Value, _n("httpupgrade_path"), translate("HttpUpgrade Path")) -o.placeholder = "/" -o:depends({ [_n("transport")] = "httpupgrade" }) - --- [[ XHTTP ]]-- -o = s:option(Value, _n("xhttp_host"), translate("XHTTP Host")) -o:depends({ [_n("transport")] = "xhttp" }) - -o = s:option(Value, _n("xhttp_path"), translate("XHTTP Path")) -o.placeholder = "/" -o:depends({ [_n("transport")] = "xhttp" }) - -o = s:option(Value, _n("xhttp_maxuploadsize"), translate("maxUploadSize")) -o.default = "1000000" -o:depends({ [_n("transport")] = "xhttp" }) - -o = s:option(Value, _n("xhttp_maxconcurrentuploads"), translate("maxConcurrentUploads")) -o.default = "10" -o:depends({ [_n("transport")] = "xhttp" }) - -o = s:option(Value, _n("splithttp_maxuploadsize"), translate("maxUploadSize")) -o.default = "1000000" -o:depends({ [_n("transport")] = "splithttp" }) - -o = s:option(Value, _n("splithttp_maxconcurrentuploads"), translate("maxConcurrentUploads")) -o.default = "10" -o:depends({ [_n("transport")] = "splithttp" }) - --- [[ TCP ]]-- - -o = s:option(ListValue, _n("tcp_guise"), translate("Camouflage Type")) -o:value("none", "none") -o:value("http", "http") -o:depends({ [_n("transport")] = "raw" }) - -o = s:option(DynamicList, _n("tcp_guise_http_host"), translate("HTTP Host")) -o:depends({ [_n("tcp_guise")] = "http" }) - -o = s:option(DynamicList, _n("tcp_guise_http_path"), translate("HTTP Path")) -o:depends({ [_n("tcp_guise")] = "http" }) - --- [[ mKCP ]]-- - -o = s:option(ListValue, _n("mkcp_guise"), translate("Camouflage Type"), translate('
none: default, no masquerade, data sent is packets with no characteristics.
srtp: disguised as an SRTP packet, it will be recognized as video call data (such as FaceTime).
utp: packets disguised as uTP will be recognized as bittorrent downloaded data.
wechat-video: packets disguised as WeChat video calls.
dtls: disguised as DTLS 1.2 packet.
wireguard: disguised as a WireGuard packet. (not really WireGuard protocol)
dns: Disguising traffic as DNS requests.')) -for a, t in ipairs(header_type_list) do o:value(t) end -o:depends({ [_n("transport")] = "mkcp" }) - -o = s:option(Value, _n("mkcp_domain"), translate("Camouflage Domain"), translate("Use it together with the DNS disguised type. You can fill in any domain.")) -o:depends({ [_n("mkcp_guise")] = "dns" }) - -o = s:option(Value, _n("mkcp_mtu"), translate("KCP MTU")) -o.default = "1350" -o:depends({ [_n("transport")] = "mkcp" }) - -o = s:option(Value, _n("mkcp_tti"), translate("KCP TTI")) -o.default = "20" -o:depends({ [_n("transport")] = "mkcp" }) - -o = s:option(Value, _n("mkcp_uplinkCapacity"), translate("KCP uplinkCapacity")) -o.default = "5" -o:depends({ [_n("transport")] = "mkcp" }) - -o = s:option(Value, _n("mkcp_downlinkCapacity"), translate("KCP downlinkCapacity")) -o.default = "20" -o:depends({ [_n("transport")] = "mkcp" }) - -o = s:option(Flag, _n("mkcp_congestion"), translate("KCP Congestion")) -o:depends({ [_n("transport")] = "mkcp" }) - -o = s:option(Value, _n("mkcp_readBufferSize"), translate("KCP readBufferSize")) -o.default = "1" -o:depends({ [_n("transport")] = "mkcp" }) - -o = s:option(Value, _n("mkcp_writeBufferSize"), translate("KCP writeBufferSize")) -o.default = "1" -o:depends({ [_n("transport")] = "mkcp" }) - -o = s:option(Value, _n("mkcp_seed"), translate("KCP Seed")) -o:depends({ [_n("transport")] = "mkcp" }) - --- [[ gRPC ]]-- -o = s:option(Value, _n("grpc_serviceName"), "ServiceName") -o:depends({ [_n("transport")] = "grpc" }) - -o = s:option(Flag, _n("acceptProxyProtocol"), translate("acceptProxyProtocol"), translate("Whether to receive PROXY protocol, when this node want to be fallback or forwarded by proxy, it must be enable, otherwise it cannot be used.")) -o.default = "0" -o:depends({ [_n("custom")] = false }) - --- [[ Fallback ]]-- -o = s:option(Flag, _n("fallback"), translate("Fallback")) -o:depends({ [_n("protocol")] = "vless", [_n("transport")] = "raw" }) -o:depends({ [_n("protocol")] = "trojan", [_n("transport")] = "raw" }) - ---[[ -o = s:option(Value, _n("fallback_alpn"), "Fallback alpn") -o:depends({ [_n("fallback")] = true }) - -o = s:option(Value, _n("fallback_path"), "Fallback path") -o:depends({ [_n("fallback")] = true }) - -o = s:option(Value, _n("fallback_dest"), "Fallback dest") -o:depends({ [_n("fallback")] = true }) - -o = s:option(Value, _n("fallback_xver"), "Fallback xver") -o.default = 0 -o:depends({ [_n("fallback")] = true }) -]]-- - -o = s:option(DynamicList, _n("fallback_list"), "Fallback", translate("format: dest,path,xver")) -o:depends({ [_n("fallback")] = true }) - -o = s:option(Flag, _n("bind_local"), translate("Bind Local"), translate("When selected, it can only be accessed localhost.")) -o.default = "0" -o:depends({ [_n("custom")] = false }) - -o = s:option(Flag, _n("accept_lan"), translate("Accept LAN Access"), translate("When selected, it can accessed lan , this will not be safe!")) -o.default = "0" -o:depends({ [_n("custom")] = false }) - -local nodes_table = {} -for k, e in ipairs(api.get_valid_nodes()) do - if e.node_type == "normal" and e.type == type_name then - nodes_table[#nodes_table + 1] = { - id = e[".name"], - remarks = e["remark"], - group = e["group"] - } - end -end - -o = s:option(ListValue, _n("outbound_node"), translate("outbound node")) -o:value("", translate("Close")) -o:value("_socks", translate("Custom Socks")) -o:value("_http", translate("Custom HTTP")) -o:value("_iface", translate("Custom Interface")) -o.template = api.appname .. "/cbi/nodes_listvalue" -o.group = {"","","",""} -for k, v in pairs(nodes_table) do - o:value(v.id, v.remarks) - o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") -end -o:depends({ [_n("custom")] = false }) - -o = s:option(Value, _n("outbound_node_address"), translate("Address (Support Domain Name)")) -o:depends({ [_n("outbound_node")] = "_socks"}) -o:depends({ [_n("outbound_node")] = "_http"}) - -o = s:option(Value, _n("outbound_node_port"), translate("Port")) -o.datatype = "port" -o:depends({ [_n("outbound_node")] = "_socks"}) -o:depends({ [_n("outbound_node")] = "_http"}) - -o = s:option(Value, _n("outbound_node_username"), translate("Username")) -o:depends({ [_n("outbound_node")] = "_socks"}) -o:depends({ [_n("outbound_node")] = "_http"}) - -o = s:option(Value, _n("outbound_node_password"), translate("Password")) -o.password = true -o:depends({ [_n("outbound_node")] = "_socks"}) -o:depends({ [_n("outbound_node")] = "_http"}) - -o = s:option(Value, _n("outbound_node_iface"), translate("Interface")) -o.default = "eth1" -o:depends({ [_n("outbound_node")] = "_iface"}) - -o = s:option(TextValue, _n("custom_config"), translate("Custom Config")) -o.rows = 10 -o.wrap = "off" -o:depends({ [_n("custom")] = true }) -o.validate = function(self, value, t) - if value and api.jsonc.parse(value) then - return value - else - return nil, translate("Must be JSON text!") - end -end -o.custom_cfgvalue = function(self, section, value) - local config_str = m:get(section, "config_str") - if config_str then - return api.base64Decode(config_str) - end -end -o.custom_write = function(self, section, value) - m:set(section, "config_str", api.base64Encode(value)) -end - -o = s:option(Flag, _n("log"), translate("Log")) -o.default = "1" -o.rmempty = false - -o = s:option(ListValue, _n("loglevel"), translate("Log Level")) -o.default = "warning" -o:value("debug") -o:value("info") -o:value("warning") -o:value("error") -o:depends({ [_n("log")] = true }) - -api.luci_types(arg[1], m, s, type_name, option_prefix) diff --git a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/server/type/sing-box.lua b/small/luci-app-passwall2/luasrc/model/cbi/passwall2/server/type/sing-box.lua deleted file mode 100644 index 586a795e3b..0000000000 --- a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/server/type/sing-box.lua +++ /dev/null @@ -1,485 +0,0 @@ -local m, s = ... - -local api = require "luci.passwall2.api" - -local singbox_bin = api.finded_com("sing-box") - -if not singbox_bin then - return -end - -local local_version = api.get_app_version("sing-box") -local version_ge_1_12_0 = api.compare_versions(local_version:match("[^v]+"), ">=", "1.12.0") - -local fs = api.fs - -local singbox_tags = luci.sys.exec(singbox_bin .. " version | grep 'Tags:' | awk '{print $2}'") - -local type_name = "sing-box" - -local option_prefix = "singbox_" - -local function _n(name) - return option_prefix .. name -end - -local ss_method_list = { - "none", "aes-128-gcm", "aes-192-gcm", "aes-256-gcm", "chacha20-ietf-poly1305", "xchacha20-ietf-poly1305", - "2022-blake3-aes-128-gcm", "2022-blake3-aes-256-gcm", "2022-blake3-chacha20-poly1305" -} - --- [[ Sing-Box ]] - -s.fields["type"]:value(type_name, "Sing-Box") -if not s.fields["type"].default then - s.fields["type"].default = type_name -end - -o = s:option(Flag, _n("custom"), translate("Use Custom Config")) - -o = s:option(ListValue, _n("protocol"), translate("Protocol")) -o:value("mixed", "Mixed") -o:value("socks", "Socks") -o:value("http", "HTTP") -o:value("shadowsocks", "Shadowsocks") -o:value("vmess", "Vmess") -o:value("vless", "VLESS") -o:value("trojan", "Trojan") -o:value("naive", "Naive") -if singbox_tags:find("with_quic") then - o:value("hysteria", "Hysteria") -end -if singbox_tags:find("with_quic") then - o:value("tuic", "TUIC") -end -if singbox_tags:find("with_quic") then - o:value("hysteria2", "Hysteria2") -end -if version_ge_1_12_0 then - o:value("anytls", "AnyTLS") -end -o:value("direct", "Direct") -o:depends({ [_n("custom")] = false }) - -o = s:option(Value, _n("port"), translate("Listen Port")) -o.datatype = "port" -o:depends({ [_n("custom")] = false }) - -o = s:option(Flag, _n("auth"), translate("Auth")) -o.validate = function(self, value, t) - if value and value == "1" then - local user_v = s.fields[_n("username")] and s.fields[_n("username")]:formvalue(t) or "" - local pass_v = s.fields[_n("password")] and s.fields[_n("password")]:formvalue(t) or "" - if user_v == "" or pass_v == "" then - return nil, translate("Username and Password must be used together!") - end - end - return value -end -o:depends({ [_n("protocol")] = "mixed" }) -o:depends({ [_n("protocol")] = "socks" }) -o:depends({ [_n("protocol")] = "http" }) - -o = s:option(Value, _n("username"), translate("Username")) -o:depends({ [_n("auth")] = true }) -o:depends({ [_n("protocol")] = "naive" }) -o:depends({ [_n("protocol")] = "anytls" }) - -o = s:option(Value, _n("password"), translate("Password")) -o.password = true -o:depends({ [_n("auth")] = true }) -o:depends({ [_n("protocol")] = "shadowsocks" }) -o:depends({ [_n("protocol")] = "naive" }) -o:depends({ [_n("protocol")] = "tuic" }) -o:depends({ [_n("protocol")] = "anytls" }) - -if singbox_tags:find("with_quic") then - o = s:option(Value, _n("hysteria_up_mbps"), translate("Max upload Mbps")) - o.default = "100" - o:depends({ [_n("protocol")] = "hysteria" }) - - o = s:option(Value, _n("hysteria_down_mbps"), translate("Max download Mbps")) - o.default = "100" - o:depends({ [_n("protocol")] = "hysteria" }) - - o = s:option(Value, _n("hysteria_obfs"), translate("Obfs Password")) - o:depends({ [_n("protocol")] = "hysteria" }) - - o = s:option(ListValue, _n("hysteria_auth_type"), translate("Auth Type")) - o:value("disable", translate("Disable")) - o:value("string", translate("STRING")) - o:value("base64", translate("BASE64")) - o:depends({ [_n("protocol")] = "hysteria" }) - - o = s:option(Value, _n("hysteria_auth_password"), translate("Auth Password")) - o.password = true - o:depends({ [_n("protocol")] = "hysteria", [_n("hysteria_auth_type")] = "string"}) - o:depends({ [_n("protocol")] = "hysteria", [_n("hysteria_auth_type")] = "base64"}) - - o = s:option(Value, _n("hysteria_recv_window_conn"), translate("QUIC stream receive window")) - o:depends({ [_n("protocol")] = "hysteria" }) - - o = s:option(Value, _n("hysteria_recv_window_client"), translate("QUIC connection receive window")) - o:depends({ [_n("protocol")] = "hysteria" }) - - o = s:option(Value, _n("hysteria_max_conn_client"), translate("QUIC concurrent bidirectional streams")) - o.default = "1024" - o:depends({ [_n("protocol")] = "hysteria" }) - - o = s:option(Flag, _n("hysteria_disable_mtu_discovery"), translate("Disable MTU detection")) - o:depends({ [_n("protocol")] = "hysteria" }) - - o = s:option(Value, _n("hysteria_alpn"), translate("QUIC TLS ALPN")) - o:depends({ [_n("protocol")] = "hysteria" }) -end - -if singbox_tags:find("with_quic") then - o = s:option(ListValue, _n("tuic_congestion_control"), translate("Congestion control algorithm")) - o.default = "cubic" - o:value("bbr", translate("BBR")) - o:value("cubic", translate("CUBIC")) - o:value("new_reno", translate("New Reno")) - o:depends({ [_n("protocol")] = "tuic" }) - - o = s:option(Flag, _n("tuic_zero_rtt_handshake"), translate("Enable 0-RTT QUIC handshake")) - o.default = 0 - o:depends({ [_n("protocol")] = "tuic" }) - - o = s:option(Value, _n("tuic_heartbeat"), translate("Heartbeat interval(second)")) - o.datatype = "uinteger" - o.default = "3" - o:depends({ [_n("protocol")] = "tuic" }) - - o = s:option(Value, _n("tuic_alpn"), translate("QUIC TLS ALPN")) - o:depends({ [_n("protocol")] = "tuic" }) -end - -if singbox_tags:find("with_quic") then - o = s:option(Flag, _n("hysteria2_ignore_client_bandwidth"), translate("Commands the client to use the BBR flow control algorithm")) - o.default = 0 - o:depends({ [_n("protocol")] = "hysteria2" }) - - o = s:option(Value, _n("hysteria2_up_mbps"), translate("Max upload Mbps")) - o:depends({ [_n("protocol")] = "hysteria2", [_n("hysteria2_ignore_client_bandwidth")] = false }) - - o = s:option(Value, _n("hysteria2_down_mbps"), translate("Max download Mbps")) - o:depends({ [_n("protocol")] = "hysteria2", [_n("hysteria2_ignore_client_bandwidth")] = false }) - - o = s:option(ListValue, _n("hysteria2_obfs_type"), translate("Obfs Type")) - o:value("", translate("Disable")) - o:value("salamander") - o:depends({ [_n("protocol")] = "hysteria2" }) - - o = s:option(Value, _n("hysteria2_obfs_password"), translate("Obfs Password")) - o:depends({ [_n("protocol")] = "hysteria2" }) - - o = s:option(Value, _n("hysteria2_auth_password"), translate("Auth Password")) - o.password = true - o:depends({ [_n("protocol")] = "hysteria2"}) -end - -o = s:option(ListValue, _n("d_protocol"), translate("Destination protocol")) -o:value("tcp", "TCP") -o:value("udp", "UDP") -o:value("tcp,udp", "TCP,UDP") -o:depends({ [_n("protocol")] = "direct" }) - -o = s:option(Value, _n("d_address"), translate("Destination address")) -o:depends({ [_n("protocol")] = "direct" }) - -o = s:option(Value, _n("d_port"), translate("Destination port")) -o.datatype = "port" -o:depends({ [_n("protocol")] = "direct" }) - -o = s:option(Value, _n("decryption"), translate("Encrypt Method")) -o.default = "none" -o:depends({ [_n("protocol")] = "vless" }) - -o = s:option(ListValue, _n("ss_method"), translate("Encrypt Method")) -o.rewrite_option = "method" -for a, t in ipairs(ss_method_list) do o:value(t) end -o:depends({ [_n("protocol")] = "shadowsocks" }) - -o = s:option(DynamicList, _n("uuid"), translate("ID") .. "/" .. translate("Password")) -for i = 1, 3 do - o:value(api.gen_uuid(1)) -end -o:depends({ [_n("protocol")] = "vmess" }) -o:depends({ [_n("protocol")] = "vless" }) -o:depends({ [_n("protocol")] = "trojan" }) -o:depends({ [_n("protocol")] = "tuic" }) - -o = s:option(ListValue, _n("flow"), translate("flow")) -o.default = "" -o:value("", translate("Disable")) -o:value("xtls-rprx-vision") -o:depends({ [_n("protocol")] = "vless" , [_n("tls")] = true }) - -o = s:option(Flag, _n("tls"), translate("TLS")) -o.default = 0 -o.validate = function(self, value, t) - if value then - local reality = s.fields[_n("reality")] and s.fields[_n("reality")]:formvalue(t) or nil - if reality and reality == "1" then return value end - if value == "1" then - local ca = s.fields[_n("tls_certificateFile")] and s.fields[_n("tls_certificateFile")]:formvalue(t) or "" - local key = s.fields[_n("tls_keyFile")] and s.fields[_n("tls_keyFile")]:formvalue(t) or "" - if ca == "" or key == "" then - return nil, translate("Public key and Private key path can not be empty!") - end - end - return value - end -end -o:depends({ [_n("protocol")] = "http" }) -o:depends({ [_n("protocol")] = "vmess" }) -o:depends({ [_n("protocol")] = "vless" }) -o:depends({ [_n("protocol")] = "trojan" }) -o:depends({ [_n("protocol")] = "anytls" }) - --- https://github.com/SagerNet/sing-box/commit/d2a04c4e41e6cef0937331cb6d10211f431caaab -if singbox_tags:find("with_utls") then - -- [[ REALITY ]] -- - o = s:option(Flag, _n("reality"), translate("REALITY")) - o.default = 0 - o:depends({ [_n("protocol")] = "http", [_n("tls")] = true }) - o:depends({ [_n("protocol")] = "vmess", [_n("tls")] = true }) - o:depends({ [_n("protocol")] = "vless", [_n("tls")] = true }) - o:depends({ [_n("protocol")] = "trojan", [_n("tls")] = true }) - o:depends({ [_n("protocol")] = "anytls", [_n("tls")] = true }) - - o = s:option(Value, _n("reality_private_key"), translate("Private Key")) - o:depends({ [_n("reality")] = true }) - - o = s:option(Value, _n("reality_shortId"), translate("Short Id")) - o:depends({ [_n("reality")] = true }) - - o = s:option(Value, _n("reality_handshake_server"), translate("Handshake Server")) - o.default = "google.com" - o:depends({ [_n("reality")] = true }) - - o = s:option(Value, _n("reality_handshake_server_port"), translate("Handshake Server Port")) - o.datatype = "port" - o.default = "443" - o:depends({ [_n("reality")] = true }) -end - --- [[ TLS ]] -- - -o = s:option(FileUpload, _n("tls_certificateFile"), translate("Public key absolute path"), translate("as:") .. "/etc/ssl/fullchain.pem") -o.default = m:get(s.section, "tls_certificateFile") or "/etc/config/ssl/" .. arg[1] .. ".pem" -if o and o:formvalue(arg[1]) then o.default = o:formvalue(arg[1]) end -o:depends({ [_n("tls")] = true, [_n("reality")] = false }) -o:depends({ [_n("protocol")] = "naive" }) -o:depends({ [_n("protocol")] = "hysteria" }) -o:depends({ [_n("protocol")] = "tuic" }) -o:depends({ [_n("protocol")] = "hysteria2" }) -o.validate = function(self, value, t) - if value and value ~= "" then - if not nixio.fs.access(value) then - return nil, translate("Can't find this file!") - else - return value - end - end - return nil -end - -o = s:option(FileUpload, _n("tls_keyFile"), translate("Private key absolute path"), translate("as:") .. "/etc/ssl/private.key") -o.default = m:get(s.section, "tls_keyFile") or "/etc/config/ssl/" .. arg[1] .. ".key" -if o and o:formvalue(arg[1]) then o.default = o:formvalue(arg[1]) end -o:depends({ [_n("tls")] = true, [_n("reality")] = false }) -o:depends({ [_n("protocol")] = "naive" }) -o:depends({ [_n("protocol")] = "hysteria" }) -o:depends({ [_n("protocol")] = "tuic" }) -o:depends({ [_n("protocol")] = "hysteria2" }) -o.validate = function(self, value, t) - if value and value ~= "" then - if not nixio.fs.access(value) then - return nil, translate("Can't find this file!") - else - return value - end - end - return nil -end - -o = s:option(Flag, _n("ech"), translate("ECH")) -o.default = "0" -o:depends({ [_n("tls")] = true, [_n("flow")] = "", [_n("reality")] = false }) -o:depends({ [_n("protocol")] = "naive" }) -o:depends({ [_n("protocol")] = "hysteria" }) -o:depends({ [_n("protocol")] = "tuic" }) -o:depends({ [_n("protocol")] = "hysteria2" }) - -o = s:option(TextValue, _n("ech_key"), translate("ECH Key")) -o.default = "" -o.rows = 5 -o.wrap = "off" -o:depends({ [_n("ech")] = true }) -o.validate = function(self, value) - value = value:gsub("^%s+", ""):gsub("%s+$","\n"):gsub("\r\n","\n"):gsub("[ \t]*\n[ \t]*", "\n") - value = value:gsub("^%s*\n", "") - if value:sub(-1) == "\n" then - value = value:sub(1, -2) - end - return value -end - -o = s:option(Flag, _n("pq_signature_schemes_enabled"), translate("PQ signature schemes")) -o.default = "0" -o:depends({ [_n("ech")] = true }) - -o = s:option(Flag, _n("dynamic_record_sizing_disabled"), translate("Disable adaptive sizing of TLS records")) -o.default = "0" -o:depends({ [_n("ech")] = true }) - -o = s:option(ListValue, _n("transport"), translate("Transport")) -o:value("tcp", "TCP") -o:value("http", "HTTP") -o:value("ws", "WebSocket") -o:value("httpupgrade", "HTTPUpgrade") -o:value("quic", "QUIC") -o:value("grpc", "gRPC") -o:depends({ [_n("protocol")] = "shadowsocks" }) -o:depends({ [_n("protocol")] = "vmess" }) -o:depends({ [_n("protocol")] = "vless" }) -o:depends({ [_n("protocol")] = "trojan" }) - --- [[ HTTP ]]-- - -o = s:option(DynamicList, _n("http_host"), translate("HTTP Host")) -o:depends({ [_n("transport")] = "http" }) - -o = s:option(Value, _n("http_path"), translate("HTTP Path")) -o:depends({ [_n("transport")] = "http" }) - --- [[ WebSocket ]]-- - -o = s:option(Value, _n("ws_host"), translate("WebSocket Host")) -o:depends({ [_n("transport")] = "ws" }) - -o = s:option(Value, _n("ws_path"), translate("WebSocket Path")) -o:depends({ [_n("transport")] = "ws" }) - --- [[ HTTPUpgrade ]]-- - -o = s:option(Value, _n("httpupgrade_host"), translate("HTTPUpgrade Host")) -o:depends({ [_n("transport")] = "httpupgrade" }) - -o = s:option(Value, _n("httpupgrade_path"), translate("HTTPUpgrade Path")) -o:depends({ [_n("transport")] = "httpupgrade" }) - --- [[ gRPC ]]-- -o = s:option(Value, _n("grpc_serviceName"), "ServiceName") -o:depends({ [_n("transport")] = "grpc" }) - --- [[ Mux ]]-- -o = s:option(Flag, _n("mux"), translate("Mux")) -o.rmempty = false -o:depends({ [_n("protocol")] = "vmess" }) -o:depends({ [_n("protocol")] = "vless", [_n("flow")] = "" }) -o:depends({ [_n("protocol")] = "shadowsocks" }) -o:depends({ [_n("protocol")] = "trojan" }) - --- [[ TCP Brutal ]]-- -o = s:option(Flag, _n("tcpbrutal"), translate("TCP Brutal")) -o.default = 0 -o:depends({ [_n("mux")] = true }) - -o = s:option(Value, _n("tcpbrutal_up_mbps"), translate("Max upload Mbps")) -o.default = "10" -o:depends({ [_n("tcpbrutal")] = true }) - -o = s:option(Value, _n("tcpbrutal_down_mbps"), translate("Max download Mbps")) -o.default = "50" -o:depends({ [_n("tcpbrutal")] = true }) - -o = s:option(Flag, _n("bind_local"), translate("Bind Local"), translate("When selected, it can only be accessed localhost.")) -o.default = "0" -o:depends({ [_n("custom")] = false }) - -o = s:option(Flag, _n("accept_lan"), translate("Accept LAN Access"), translate("When selected, it can accessed lan , this will not be safe!")) -o.default = "0" -o:depends({ [_n("custom")] = false }) - -local nodes_table = {} -for k, e in ipairs(api.get_valid_nodes()) do - if e.node_type == "normal" and e.type == type_name then - nodes_table[#nodes_table + 1] = { - id = e[".name"], - remarks = e["remark"], - group = e["group"] - } - end -end - -o = s:option(ListValue, _n("outbound_node"), translate("outbound node")) -o:value("", translate("Close")) -o:value("_socks", translate("Custom Socks")) -o:value("_http", translate("Custom HTTP")) -o:value("_iface", translate("Custom Interface")) -o.template = api.appname .. "/cbi/nodes_listvalue" -o.group = {"","","",""} -for k, v in pairs(nodes_table) do - o:value(v.id, v.remarks) - o.group[#o.group+1] = (v.group and v.group ~= "") and v.group or translate("default") -end -o:depends({ [_n("custom")] = false }) - -o = s:option(Value, _n("outbound_node_address"), translate("Address (Support Domain Name)")) -o:depends({ [_n("outbound_node")] = "_socks" }) -o:depends({ [_n("outbound_node")] = "_http" }) - -o = s:option(Value, _n("outbound_node_port"), translate("Port")) -o.datatype = "port" -o:depends({ [_n("outbound_node")] = "_socks" }) -o:depends({ [_n("outbound_node")] = "_http" }) - -o = s:option(Value, _n("outbound_node_username"), translate("Username")) -o:depends({ [_n("outbound_node")] = "_socks" }) -o:depends({ [_n("outbound_node")] = "_http" }) - -o = s:option(Value, _n("outbound_node_password"), translate("Password")) -o.password = true -o:depends({ [_n("outbound_node")] = "_socks" }) -o:depends({ [_n("outbound_node")] = "_http" }) - -o = s:option(Value, _n("outbound_node_iface"), translate("Interface")) -o.default = "eth1" -o:depends({ [_n("outbound_node")] = "_iface" }) - -o = s:option(TextValue, _n("custom_config"), translate("Custom Config")) -o.rows = 10 -o.wrap = "off" -o:depends({ [_n("custom")] = true }) -o.validate = function(self, value, t) - if value and api.jsonc.parse(value) then - return value - else - return nil, translate("Must be JSON text!") - end -end -o.custom_cfgvalue = function(self, section, value) - local config_str = m:get(section, "config_str") - if config_str then - return api.base64Decode(config_str) - end -end -o.custom_write = function(self, section, value) - m:set(section, "config_str", api.base64Encode(value)) -end - -o = s:option(Flag, _n("log"), translate("Log")) -o.default = "1" -o.rmempty = false - -o = s:option(ListValue, _n("loglevel"), translate("Log Level")) -o.default = "info" -o:value("debug") -o:value("info") -o:value("warn") -o:value("error") -o:depends({ [_n("log")] = true }) - -api.luci_types(arg[1], m, s, type_name, option_prefix) diff --git a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/server/type/ss-rust.lua b/small/luci-app-passwall2/luasrc/model/cbi/passwall2/server/type/ss-rust.lua deleted file mode 100644 index 4bcf51620f..0000000000 --- a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/server/type/ss-rust.lua +++ /dev/null @@ -1,75 +0,0 @@ -local m, s = ... - -local api = require "luci.passwall2.api" - -if not api.is_finded("ssserver") then - return -end - -local type_name = "SS-Rust" - -local option_prefix = "ssrust_" - -local function _n(name) - return option_prefix .. name -end - -local ssrust_encrypt_method_list = { - "plain", "none", - "aes-128-gcm", "aes-256-gcm", "chacha20-ietf-poly1305", - "2022-blake3-aes-128-gcm", "2022-blake3-aes-256-gcm", "2022-blake3-chacha8-poly1305", "2022-blake3-chacha20-poly1305" -} - --- [[ Shadowsocks Rust ]] - -s.fields["type"]:value(type_name, translate("Shadowsocks Rust")) - -o = s:option(Flag, _n("custom"), translate("Use Custom Config")) - -o = s:option(Value, _n("port"), translate("Listen Port")) -o.datatype = "port" -o:depends({ [_n("custom")] = false }) - -o = s:option(Value, _n("password"), translate("Password")) -o.password = true -o:depends({ [_n("custom")] = false }) - -o = s:option(ListValue, _n("method"), translate("Encrypt Method")) -for a, t in ipairs(ssrust_encrypt_method_list) do o:value(t) end -o:depends({ [_n("custom")] = false }) - -o = s:option(Value, _n("timeout"), translate("Connection Timeout")) -o.datatype = "uinteger" -o.default = 300 -o:depends({ [_n("custom")] = false }) - -o = s:option(Flag, _n("tcp_fast_open"), "TCP " .. translate("Fast Open")) -o.default = "0" -o:depends({ [_n("custom")] = false }) - -o = s:option(TextValue, _n("custom_config"), translate("Custom Config")) -o.rows = 10 -o.wrap = "off" -o:depends({ [_n("custom")] = true }) -o.validate = function(self, value, t) - if value and api.jsonc.parse(value) then - return value - else - return nil, translate("Must be JSON text!") - end -end -o.custom_cfgvalue = function(self, section, value) - local config_str = m:get(section, "config_str") - if config_str then - return api.base64Decode(config_str) - end -end -o.custom_write = function(self, section, value) - m:set(section, "config_str", api.base64Encode(value)) -end - -o = s:option(Flag, _n("log"), translate("Log")) -o.default = "1" -o.rmempty = false - -api.luci_types(arg[1], m, s, type_name, option_prefix) diff --git a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/server/type/ss.lua b/small/luci-app-passwall2/luasrc/model/cbi/passwall2/server/type/ss.lua deleted file mode 100644 index e659577193..0000000000 --- a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/server/type/ss.lua +++ /dev/null @@ -1,78 +0,0 @@ -local m, s = ... - -local api = require "luci.passwall2.api" - -if not api.is_finded("ss-server") then - return -end - -local type_name = "SS" - -local option_prefix = "ss_" - -local function _n(name) - return option_prefix .. name -end - -local ss_encrypt_method_list = { - "rc4-md5", "aes-128-cfb", "aes-192-cfb", "aes-256-cfb", "aes-128-ctr", - "aes-192-ctr", "aes-256-ctr", "bf-cfb", "camellia-128-cfb", - "camellia-192-cfb", "camellia-256-cfb", "salsa20", "chacha20", - "chacha20-ietf", -- aead - "aes-128-gcm", "aes-192-gcm", "aes-256-gcm", "chacha20-ietf-poly1305", - "xchacha20-ietf-poly1305" -} - --- [[ Shadowsocks ]] - -s.fields["type"]:value(type_name, translate("Shadowsocks")) - -o = s:option(Flag, _n("custom"), translate("Use Custom Config")) - -o = s:option(Value, _n("port"), translate("Listen Port")) -o.datatype = "port" -o:depends({ [_n("custom")] = false }) - -o = s:option(Value, _n("password"), translate("Password")) -o.password = true -o:depends({ [_n("custom")] = false }) - -o = s:option(ListValue, _n("method"), translate("Encrypt Method")) -for a, t in ipairs(ss_encrypt_method_list) do o:value(t) end -o:depends({ [_n("custom")] = false }) - -o = s:option(Value, _n("timeout"), translate("Connection Timeout")) -o.datatype = "uinteger" -o.default = 300 -o:depends({ [_n("custom")] = false }) - -o = s:option(Flag, _n("tcp_fast_open"), "TCP " .. translate("Fast Open")) -o.default = "0" -o:depends({ [_n("custom")] = false }) - -o = s:option(TextValue, _n("custom_config"), translate("Custom Config")) -o.rows = 10 -o.wrap = "off" -o:depends({ [_n("custom")] = true }) -o.validate = function(self, value, t) - if value and api.jsonc.parse(value) then - return value - else - return nil, translate("Must be JSON text!") - end -end -o.custom_cfgvalue = function(self, section, value) - local config_str = m:get(section, "config_str") - if config_str then - return api.base64Decode(config_str) - end -end -o.custom_write = function(self, section, value) - m:set(section, "config_str", api.base64Encode(value)) -end - -o = s:option(Flag, _n("log"), translate("Log")) -o.default = "1" -o.rmempty = false - -api.luci_types(arg[1], m, s, type_name, option_prefix) diff --git a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/server/type/ssr.lua b/small/luci-app-passwall2/luasrc/model/cbi/passwall2/server/type/ssr.lua deleted file mode 100644 index 65058c9f3e..0000000000 --- a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/server/type/ssr.lua +++ /dev/null @@ -1,106 +0,0 @@ -local m, s = ... - -local api = require "luci.passwall2.api" - -if not api.is_finded("ssr-server") then - return -end - -local type_name = "SSR" - -local option_prefix = "ssr_" - -local function _n(name) - return option_prefix .. name -end - -local ssr_encrypt_method_list = { - "none", "table", "rc2-cfb", "rc4", "rc4-md5", "rc4-md5-6", "aes-128-cfb", - "aes-192-cfb", "aes-256-cfb", "aes-128-ctr", "aes-192-ctr", "aes-256-ctr", - "bf-cfb", "camellia-128-cfb", "camellia-192-cfb", "camellia-256-cfb", - "cast5-cfb", "des-cfb", "idea-cfb", "seed-cfb", "salsa20", "chacha20", - "chacha20-ietf" -} - -local ssr_protocol_list = { - "origin", "verify_simple", "verify_deflate", "verify_sha1", "auth_simple", - "auth_sha1", "auth_sha1_v2", "auth_sha1_v4", "auth_aes128_md5", - "auth_aes128_sha1", "auth_chain_a", "auth_chain_b", "auth_chain_c", - "auth_chain_d", "auth_chain_e", "auth_chain_f" -} -local ssr_obfs_list = { - "plain", "http_simple", "http_post", "random_head", "tls_simple", - "tls1.0_session_auth", "tls1.2_ticket_auth" -} - --- [[ ShadowsocksR ]] - -s.fields["type"]:value(type_name, translate("ShadowsocksR")) - -o = s:option(Flag, _n("custom"), translate("Use Custom Config")) - -o = s:option(Value, _n("port"), translate("Listen Port")) -o.datatype = "port" -o:depends({ [_n("custom")] = false }) - -o = s:option(Value, _n("password"), translate("Password")) -o.password = true -o:depends({ [_n("custom")] = false }) - -o = s:option(ListValue, _n("method"), translate("Encrypt Method")) -for a, t in ipairs(ssr_encrypt_method_list) do o:value(t) end -o:depends({ [_n("custom")] = false }) - -o = s:option(ListValue, _n("protocol"), translate("Protocol")) -for a, t in ipairs(ssr_protocol_list) do o:value(t) end -o:depends({ [_n("custom")] = false }) - -o = s:option(Value, _n("protocol_param"), translate("Protocol_param")) -o:depends({ [_n("custom")] = false }) - -o = s:option(ListValue, _n("obfs"), translate("Obfs")) -for a, t in ipairs(ssr_obfs_list) do o:value(t) end -o:depends({ [_n("custom")] = false }) - -o = s:option(Value, _n("obfs_param"), translate("Obfs_param")) -o:depends({ [_n("custom")] = false }) - -o = s:option(Value, _n("timeout"), translate("Connection Timeout")) -o.datatype = "uinteger" -o.default = 300 -o:depends({ [_n("custom")] = false }) - -o = s:option(Flag, _n("tcp_fast_open"), "TCP " .. translate("Fast Open")) -o.default = "0" -o:depends({ [_n("custom")] = false }) - -o = s:option(TextValue, _n("custom_config"), translate("Custom Config")) -o.rows = 10 -o.wrap = "off" -o:depends({ [_n("custom")] = true }) -o.validate = function(self, value, t) - if value and api.jsonc.parse(value) then - return value - else - return nil, translate("Must be JSON text!") - end -end -o.custom_cfgvalue = function(self, section, value) - local config_str = m:get(section, "config_str") - if config_str then - return api.base64Decode(config_str) - end -end -o.custom_write = function(self, section, value) - m:set(section, "config_str", api.base64Encode(value)) -end - -o = s:option(Flag, _n("udp_forward"), translate("UDP Forward")) -o.default = "1" -o.rmempty = false - -o = s:option(Flag, _n("log"), translate("Log")) -o.default = "1" -o.rmempty = false - -api.luci_types(arg[1], m, s, type_name, option_prefix) diff --git a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/server/user.lua b/small/luci-app-passwall2/luasrc/model/cbi/passwall2/server/user.lua deleted file mode 100644 index eae4eb9268..0000000000 --- a/small/luci-app-passwall2/luasrc/model/cbi/passwall2/server/user.lua +++ /dev/null @@ -1,41 +0,0 @@ -local api = require "luci.passwall2.api" -local appname = api.appname -local fs = api.fs -local types_dir = "/usr/lib/lua/luci/model/cbi/" .. appname .. "/server/type/" - -m = Map("passwall2_server", translate("Server Config")) -m.redirect = api.url("server") -api.set_apply_on_parse(m) - -if not arg[1] or not m:get(arg[1]) then - luci.http.redirect(m.redirect) -end - -m:append(Template(appname .. "/cbi/nodes_listvalue_com")) - -s = m:section(NamedSection, arg[1], "user", "") -s.addremove = false -s.dynamic = false - -o = s:option(Flag, "enable", translate("Enable")) -o.default = "1" -o.rmempty = false - -o = s:option(Value, "remarks", translate("Remarks")) -o.default = translate("Remarks") -o.rmempty = false - -o = s:option(ListValue, "type", translate("Type")) - -local type_table = {} -for filename in fs.dir(types_dir) do - table.insert(type_table, filename) -end -table.sort(type_table) - -for index, value in ipairs(type_table) do - local p_func = loadfile(types_dir .. value) - setfenv(p_func, getfenv(1))(m, s) -end - -return m diff --git a/small/luci-app-passwall2/luasrc/passwall2/api.lua b/small/luci-app-passwall2/luasrc/passwall2/api.lua deleted file mode 100644 index a10bf252c7..0000000000 --- a/small/luci-app-passwall2/luasrc/passwall2/api.lua +++ /dev/null @@ -1,1419 +0,0 @@ -module("luci.passwall2.api", package.seeall) -appname = "passwall2" -local com = require "luci.passwall2.com" -bin = require "nixio".bin -fs = require "nixio.fs" -sys = require "luci.sys" -uci = require"luci.model.uci".cursor() -util = require "luci.util" -datatypes = require "luci.cbi.datatypes" -jsonc = require "luci.jsonc" -i18n = require "luci.i18n" -conf = require "luci.config" - -curl_args = { "-skfL", "--connect-timeout 3", "--retry 3" } -command_timeout = 300 -OPENWRT_ARCH = nil -DISTRIB_ARCH = nil - -LOG_FILE = "/tmp/log/passwall2.log" -CACHE_PATH = "/tmp/etc/passwall2_tmp" -TMP_PATH = "/tmp/etc/" .. appname -TMP_IFACE_PATH = TMP_PATH .. "/iface" - -local lang = conf.main.lang or "auto" -if lang == "auto" then - local auto_lang = uci:get(appname, "@global[0]", "auto_lang") - if auto_lang then lang = auto_lang end -end -if lang == "auto" then - lang = i18n.default -end -i18n.setlanguage(lang) - -function echolog(...) - local result = table.concat({...}, " ") - local f, err = io.open(LOG_FILE, "a") - if f and err == nil then - f:write(result .. "\n") - f:close() - end -end - -function echolog_date(...) - local result = os.date("%Y-%m-%d %H:%M:%S: ") .. table.concat({...}, " ") - echolog(result) -end - -function log(level, ...) - local indent = "" - if level >= 1 then - for i = 1, level, 1 do - indent = indent .. " " - end - echolog_date(indent .. "- " .. table.concat({...}, " ")) - else - echolog_date(table.concat({...}, " ")) - end -end - -function is_old_uci() - return sys.call("grep -E 'require[ \t]*\"uci\"' /usr/lib/lua/luci/model/uci.lua >/dev/null 2>&1") == 0 -end - -function uci_save(cursor, config, commit, apply) - if is_old_uci() then - cursor:save(config) - if commit then - cursor:commit(config) - if apply then - sys.call("/etc/init.d/" .. config .. " reload > /dev/null 2>&1 &") - end - end - else - commit = true - if commit then - if apply then - cursor:commit(config) - else - sh_uci_commit(config) - end - end - end -end - -function sh_uci_get(config, section, option) - local _, val = exec_call(string.format("uci -q get %s.%s.%s", config, section, option)) - return val -end - -function sh_uci_set(config, section, option, val, commit) - exec_call(string.format("uci -q set %s.%s.%s=\"%s\"", config, section, option, val)) - if commit then sh_uci_commit(config) end -end - -function sh_uci_del(config, section, option, commit) - exec_call(string.format("uci -q delete %s.%s.%s", config, section, option)) - if commit then sh_uci_commit(config) end -end - -function sh_uci_add_list(config, section, option, val, commit) - exec_call(string.format("uci -q del_list %s.%s.%s=\"%s\"", config, section, option, val)) - exec_call(string.format("uci -q add_list %s.%s.%s=\"%s\"", config, section, option, val)) - if commit then sh_uci_commit(config) end -end - -function sh_uci_commit(config) - exec_call(string.format("uci -q commit %s", config)) -end - -function set_cache_var(key, val) - sys.call(string.format('. /usr/share/passwall2/utils.sh ; set_cache_var %s "%s"', key, val)) -end -function get_cache_var(key) - local val = sys.exec(string.format('. /usr/share/passwall2/utils.sh ; echo -n $(get_cache_var %s)', key)) - if val == "" then val = nil end - return val -end - -function exec_call(cmd) - local process = io.popen(cmd .. '; echo -e "\n$?"') - local lines = {} - local result = "" - local return_code - for line in process:lines() do - lines[#lines + 1] = line - end - process:close() - if #lines > 0 then - return_code = lines[#lines] - for i = 1, #lines - 1 do - result = result .. lines[i] .. ((i == #lines - 1) and "" or "\n") - end - end - return tonumber(return_code), trim(result) -end - -function base64Decode(text) - if not text then return '' end - local encoded = text:gsub("%z", ""):gsub("%c", ""):gsub("_", "/"):gsub("-", "+") - local mod4 = #encoded % 4 - encoded = encoded .. string.sub('====', mod4 + 1) - local result = nixio.bin.b64decode(encoded) - if result then - return result:gsub("%z", "") - else - return text - end -end - -function base64Encode(text) - local result = nixio.bin.b64encode(text) - return result -end - --- Extract the domain name and port from the URL (no IP address). -function get_domain_port_from_url(url) - local scheme, domain, port = string.match(url, "^(https?)://([%w%.%-]+):?(%d*)") - if not domain then - scheme, domain, port = string.match(url, "^(https?)://(%b[])([^:/]*)/?") - end - if not domain then return nil, nil end - if domain:sub(1, 1) == "[" then domain = domain:sub(2, -2) end - port = port ~= "" and tonumber(port) or (scheme == "https" and 443 or 80) - if datatypes.ipaddr(domain) or datatypes.ip6addr(domain) then return nil, nil end - return domain, port -end - --- Domain resolution -function domainToIPv4(domain, dns) - local Dns = dns or "223.5.5.5" - local IPs = luci.sys.exec('nslookup %s %s | awk \'/^Name:/{getline; if ($1 == "Address:") print $2}\'' % { domain, Dns }) - for IP in string.gmatch(IPs, "%S+") do - if datatypes.ipaddr(IP) and not datatypes.ip6addr(IP) then return IP end - end - return nil -end - -function curl_base(url, file, args) - if not args then args = {} end - if file then - args[#args + 1] = "-o " .. file - end - local cmd = string.format('curl %s "%s"', table_join(args), url) - return exec_call(cmd) -end - -function curl_proxy(url, file, args) - -- Use the proxy - local socks_server = get_cache_var("GLOBAL_SOCKS_server") - if socks_server and socks_server ~= "" then - if not args then args = {} end - local tmp_args = clone(args) - tmp_args[#tmp_args + 1] = "-x socks5h://" .. socks_server - return curl_base(url, file, tmp_args) - end - return nil, nil -end - -function curl_logic(url, file, args) - local return_code, result = curl_proxy(url, file, args) - if not return_code or return_code ~= 0 then - return_code, result = curl_base(url, file, args) - end - return return_code, result -end - -function curl_direct(url, file, args) - -- Direct access - if not args then args = {} end - local tmp_args = clone(args) - local domain, port = get_domain_port_from_url(url) - if domain then - local ip = domainToIPv4(domain) - if ip then - tmp_args[#tmp_args + 1] = "--resolve " .. domain .. ":" .. port .. ":" .. ip - end - end - return curl_base(url, file, tmp_args) -end - -function curl_auto(url, file, args) - local localhost_proxy = uci:get(appname, "@global[0]", "localhost_proxy") or "1" - if localhost_proxy == "1" then - return curl_base(url, file, args) - else - local return_code, result = curl_proxy(url, file, args) - if not return_code or return_code ~= 0 then - return_code, result = curl_direct(url, file, args) - end - return return_code, result - end -end - -function url(...) - local url = string.format("admin/services/%s", appname) - local args = { ... } - for i, v in pairs(args) do - if v ~= "" then - url = url .. "/" .. v - end - end - return require "luci.dispatcher".build_url(url) -end - -function trim(s) - if type(s) ~= "string" then return "" end - local i, j = 1, #s - while i <= j and s:byte(i) <= 32 do i = i + 1 end - while j >= i and s:byte(j) <= 32 do j = j - 1 end - if i > j then return "" end - return s:sub(i, j) -end - -function split(full, sep) - if full then - full = full:gsub("%z", "") -- This is not very clear; sometimes it ends with a `\0`. - local off, result = 1, {} - while true do - local nStart, nEnd = full:find(sep, off) - if not nEnd then - local res = string.sub(full, off, string.len(full)) - if #res > 0 then -- Filter out `\0` - table.insert(result, res) - end - break - else - table.insert(result, string.sub(full, off, nStart - 1)) - off = nEnd + 1 - end - end - return result - end - return {} -end - -function is_exist(table, value) - for index, k in ipairs(table) do - if k == value then - return true - end - end - return false -end - -function repeat_exist(table, value) - local count = 0 - for index, k in ipairs(table) do - if k:find("-") and k == value then - count = count + 1 - end - end - if count > 1 then - return true - end - return false -end - -function remove(...) - for index, value in ipairs({...}) do - if value and #value > 0 and value ~= "/" then - sys.call(string.format("rm -rf %s", value)) - end - end -end - -function is_install(package) - if package and #package > 0 then - local file_path = "/usr/lib/opkg/info" - local file_ext = ".control" - local has = sys.call("[ -d " .. file_path .. " ]") - if has ~= 0 then - file_path = "/lib/apk/packages" - file_ext = ".list" - end - return sys.call(string.format('[ -s "%s/%s%s" ]', file_path, package, file_ext)) == 0 - end - return false -end - -function get_args(arg) - local var = {} - for i, arg_k in pairs(arg) do - if i > 0 then - local v = arg[i + 1] - if v then - if repeat_exist(arg, v) == false then - var[arg_k] = v - end - end - end - end - return var -end - -function get_function_args(arg) - local var = nil - if arg and #arg > 1 then - local param = {} - for i = 2, #arg do - param[#param + 1] = arg[i] - end - var = get_args(param) - end - return var -end - -function strToTable(str) - if str == nil or type(str) ~= "string" then - return {} - end - - return loadstring("return " .. str)() -end - -function is_normal_node(e) - if e and e.type and e.protocol and (e.protocol == "_balancing" or e.protocol == "_shunt" or e.protocol == "_iface" or e.protocol == "_urltest") then - return false - end - return true -end - -function is_special_node(e) - return is_normal_node(e) == false -end - -function is_ip(val) - local str = val:match("%[(.-)%]") or val - return datatypes.ipaddr(str) or false -end - -function is_ipv6(val) - local str = val:match("%[(.-)%]") or val - return datatypes.ip6addr(str) or false -end - -function is_ipv6addrport(val) - local address, port = val:match("%[(.-)%]:([0-9]+)$") - if address and datatypes.ip6addr(address) and datatypes.port(port) then - return true - end - return false -end - -function get_ipv6_only(val) - local result = "" - local inner = val:match("%[(.-)%]") or val - if datatypes.ip6addr(inner) then - result = inner - end - return result -end - -function get_ipv6_full(val) - local result = "" - if is_ipv6(val) then - result = val - if not val:match("%[.-%]") then - result = "[" .. result .. "]" - end - end - return result -end - -function get_ip_type(val) - if is_ipv6(val) then - return "6" - elseif datatypes.ip4addr(val) then - return "4" - end - return "" -end - -function is_mac(val) - return datatypes.macaddr(val) -end - -function ip_or_mac(val) - if val then - if get_ip_type(val) == "4" then - return "ip" - end - if is_mac(val) then - return "mac" - end - end - return "" -end - -function iprange(val) - if val then - local ipStart, ipEnd = val:match("^([^/]+)-([^/]+)$") - if (ipStart and datatypes.ip4addr(ipStart)) and (ipEnd and datatypes.ip4addr(ipEnd)) then - return true - end - end - return false -end - -function get_domain_from_url(url) - local domain = string.match(url, "//([^/]+)") - if domain then - return domain - end - return url -end - -function get_node_name(node_id) - local e - if type(node_id) == "table" then - e = node_id - else - e = uci:get_all(appname, node_id) - end - if e then - if e.type and e.remarks then - if e.protocol and (e.protocol == "_balancing" or e.protocol == "_shunt" or e.protocol == "_iface") then - local type = e.type - if type == "sing-box" then type = "Sing-Box" end - local remark = "%s:[%s] " % {type .. " " .. i18n.translatef(e.protocol), e.remarks} - return remark - end - end - end - return "" -end - -function get_valid_nodes() - local show_node_info = uci_get_type("global_other", "show_node_info") or "0" - local nodes = {} - local default_nodes = {} - local other_nodes = {} - uci:foreach(appname, "nodes", function(e) - e.id = e[".name"] - if e.type and e.remarks then - if e.protocol and (e.protocol == "_balancing" or e.protocol == "_shunt" or e.protocol == "_iface" or e.protocol == "_urltest") then - local type = e.type - if type == "sing-box" then type = "Sing-Box" end - e["remark"] = "%s:[%s] " % {type .. " " .. i18n.translatef(e.protocol), e.remarks} - e["node_type"] = "special" - if not e.group or e.group == "" then - default_nodes[#default_nodes + 1] = e - else - other_nodes[#other_nodes + 1] = e - end - end - local port = e.port or e.hysteria_hop or e.hysteria2_hop - if port and e.address then - local address = e.address - if is_ip(address) or datatypes.hostname(address) then - local type = e.type - if (type == "sing-box" or type == "Xray") and e.protocol then - local protocol = e.protocol - if protocol == "vmess" then - protocol = "VMess" - elseif protocol == "vless" then - protocol = "VLESS" - elseif protocol == "shadowsocks" then - protocol = "SS" - elseif protocol == "shadowsocksr" then - protocol = "SSR" - elseif protocol == "wireguard" then - protocol = "WG" - elseif protocol == "hysteria" then - protocol = "HY" - elseif protocol == "hysteria2" then - protocol = "HY2" - elseif protocol == "anytls" then - protocol = "AnyTLS" - elseif protocol == "ssh" then - protocol = "SSH" - else - protocol = protocol:gsub("^%l",string.upper) - end - if type == "sing-box" then type = "Sing-Box" end - type = type .. " " .. protocol - end - if is_ipv6(address) then address = get_ipv6_full(address) end - e["remark"] = "%s:[%s]" % {type, e.remarks} - if show_node_info == "1" then - port = port:gsub(":", "-") - e["remark"] = "%s:[%s] %s:%s" % {type, e.remarks, address, port} - end - e.node_type = "normal" - if not e.group or e.group == "" then - default_nodes[#default_nodes + 1] = e - else - other_nodes[#other_nodes + 1] = e - end - end - end - end - end) - for i = 1, #default_nodes do nodes[#nodes + 1] = default_nodes[i] end - for i = 1, #other_nodes do nodes[#nodes + 1] = other_nodes[i] end - return nodes -end - -function get_node_remarks(n) - local remarks = "" - if n then - if n.protocol and (n.protocol == "_balancing" or n.protocol == "_shunt" or n.protocol == "_iface" or n.protocol == "_urltest") then - remarks = "%s:[%s] " % {n.type .. " " .. i18n.translatef(n.protocol), n.remarks} - else - local type2 = n.type - if (n.type == "sing-box" or n.type == "Xray") and n.protocol then - local protocol = n.protocol - if protocol == "vmess" then - protocol = "VMess" - elseif protocol == "vless" then - protocol = "VLESS" - elseif protocol == "shadowsocks" then - protocol = "SS" - elseif protocol == "shadowsocksr" then - protocol = "SSR" - elseif protocol == "wireguard" then - protocol = "WG" - elseif protocol == "hysteria" then - protocol = "HY" - elseif protocol == "hysteria2" then - protocol = "HY2" - elseif protocol == "anytls" then - protocol = "AnyTLS" - elseif protocol == "ssh" then - protocol = "SSH" - else - protocol = protocol:gsub("^%l",string.upper) - end - if type2 == "sing-box" then type2 = "Sing-Box" end - type2 = type2 .. " " .. protocol - end - remarks = "%s:[%s]" % {type2, n.remarks} - end - end - return remarks -end - -function get_full_node_remarks(n) - local remarks = get_node_remarks(n) - if #remarks > 0 then - local port = n.port or n.hysteria_hop or n.hysteria2_hop - if n.address and port then - port = port:gsub(":", "-") - remarks = remarks .. " " .. n.address .. ":" .. port - end - end - return remarks -end - -function gen_uuid(format) - local uuid = sys.exec("echo -n $(cat /proc/sys/kernel/random/uuid)") - if format == nil then - uuid = string.gsub(uuid, "-", "") - end - return uuid -end - -function gen_short_uuid() - return sys.exec("echo -n $(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 8)") -end - -function uci_get_type(type, config, default) - local value = uci:get_first(appname, type, config, default) or sys.exec("echo -n $(uci -q get " .. appname .. ".@" .. type .."[0]." .. config .. ")") - if (value == nil or value == "") and (default and default ~= "") then - value = default - end - return value -end - -function uci_get_type_id(id, config, default) - local value = uci:get(appname, id, config, default) or sys.exec("echo -n $(uci -q get " .. appname .. "." .. id .. "." .. config .. ")") - if (value == nil or value == "") and (default and default ~= "") then - value = default - end - return value -end - -function chmod_755(file) - if file and file ~= "" then - if not fs.access(file, "rwx", "rx", "rx") then - fs.chmod(file, 755) - end - end -end - -function get_customed_path(e) - return uci_get_type("global_app", e .. "_file") -end - -function finded_com(e) - local bin = get_app_path(e) - if not bin then return end - local s = luci.sys.exec('echo -n $(type -t -p "%s" | head -n1)' % { bin }) - if s == "" then - s = nil - end - return s -end - -function finded(e) - return luci.sys.exec('echo -n $(type -t -p "/bin/%s" -p "/usr/bin/%s" "%s" | head -n1)' % {e, e, e}) -end - -function is_finded(e) - return finded(e) ~= "" and true or false -end - -function clone(org) - local function copy(org, res) - for k,v in pairs(org) do - if type(v) ~= "table" then - res[k] = v; - else - res[k] = {}; - copy(v, res[k]) - end - end - end - - local res = {} - copy(org, res) - return res -end - -local function get_bin_version_cache(file, cmd) - sys.call("mkdir -p /tmp/etc/passwall2_tmp") - if fs.access(file) then - chmod_755(file) - local md5 = sys.exec("echo -n $(md5sum " .. file .. " | awk '{print $1}')") - if fs.access("/tmp/etc/passwall2_tmp/" .. md5) then - return sys.exec("echo -n $(cat /tmp/etc/passwall2_tmp/%s)" % md5) - else - local version = sys.exec(string.format("echo -n $(%s %s)", file, cmd)) - if version and version ~= "" then - sys.call("echo '" .. version .. "' > " .. "/tmp/etc/passwall2_tmp/" .. md5) - return version - end - end - end - return "" -end - -function get_app_path(app_name) - if com[app_name] then - local def_path = com[app_name].default_path - local path = uci_get_type("global_app", app_name:gsub("%-","_") .. "_file") - path = path and (#path>0 and path or def_path) or def_path - return path - end -end - -function get_app_version(app_name, file) - if file == nil then file = get_app_path(app_name) end - return get_bin_version_cache(file, com[app_name].cmd_version) -end - -function is_file(path) - if path and #path > 1 then - if sys.exec('[ -f "%s" ] && echo -n 1' % path) == "1" then - return true - end - end - return nil -end - -function is_dir(path) - if path and #path > 1 then - if sys.exec('[ -d "%s" ] && echo -n 1' % path) == "1" then - return true - end - end - return nil -end - -function get_final_dir(path) - if is_dir(path) then - return path - else - return get_final_dir(fs.dirname(path)) - end -end - -function get_free_space(dir) - if dir == nil then dir = "/" end - if sys.call("df -k " .. dir .. " >/dev/null 2>&1") == 0 then - return tonumber(sys.exec("echo -n $(df -k " .. dir .. " | awk 'NR>1' | awk '{print $4}')")) - end - return 0 -end - -function get_file_space(file) - if file == nil then return 0 end - if fs.access(file) then - return tonumber(sys.exec("echo -n $(du -k " .. file .. " | awk '{print $1}')")) - end - return 0 -end - -function _unpack(t, i) - i = i or 1 - if t[i] ~= nil then return t[i], _unpack(t, i + 1) end -end - -function table_join(t, s) - if not s then - s = " " - end - local str = "" - for index, value in ipairs(t) do - str = str .. t[index] .. (index == #t and "" or s) - end - return str -end - -function exec(cmd, args, writer, timeout) - local os = require "os" - local nixio = require "nixio" - - local fdi, fdo = nixio.pipe() - local pid = nixio.fork() - - if pid > 0 then - fdo:close() - - if writer or timeout then - local starttime = os.time() - while true do - if timeout and os.difftime(os.time(), starttime) >= timeout then - nixio.kill(pid, nixio.const.SIGTERM) - return 1 - end - - if writer then - local buffer = fdi:read(2048) - if buffer and #buffer > 0 then - writer(buffer) - end - end - - local wpid, stat, code = nixio.waitpid(pid, "nohang") - - if wpid and stat == "exited" then return code end - - if not writer and timeout then nixio.nanosleep(1) end - end - else - local wpid, stat, code = nixio.waitpid(pid) - return wpid and stat == "exited" and code - end - elseif pid == 0 then - nixio.dup(fdo, nixio.stdout) - fdi:close() - fdo:close() - nixio.exece(cmd, args, nil) - nixio.stdout:close() - os.exit(1) - end -end - -function parseURL(url) - if not url or url == "" then - return nil - end - local pattern = "^(%w+)://" - local protocol = url:match(pattern) - - if not protocol then - --error("Invalid URL: " .. url) - return nil - end - - local auth_host_port = url:sub(#protocol + 4) - local auth_pattern = "^([^@]+)@" - local auth = auth_host_port:match(auth_pattern) - local username, password - - if auth then - username, password = auth:match("^([^:]+):([^:]+)$") - auth_host_port = auth_host_port:sub(#auth + 2) - end - - local host, port = auth_host_port:match("^([^:]+):(%d+)$") - - if not host or not port then - --error("Invalid URL: " .. url) - return nil - end - - return { - protocol = protocol, - username = username, - password = password, - host = host, - port = tonumber(port) - } -end - -function compare_versions(ver1, comp, ver2) - local table = table - - if not ver1 then ver1 = "" end - if not ver2 then ver2 = "" end - - local av1 = util.split(ver1, "[%.%-]", nil, true) - local av2 = util.split(ver2, "[%.%-]", nil, true) - - local max = table.getn(av1) - local n2 = table.getn(av2) - if (max < n2) then max = n2 end - - for i = 1, max, 1 do - local s1 = tonumber(av1[i] or 0) or 0 - local s2 = tonumber(av2[i] or 0) or 0 - - if comp == "~=" and (s1 ~= s2) then return true end - if (comp == "<" or comp == "<=") and (s1 < s2) then return true end - if (comp == ">" or comp == ">=") and (s1 > s2) then return true end - if (s1 ~= s2) then return false end - end - - return not (comp == "<" or comp == ">") -end - -local function auto_get_arch() - local arch = nixio.uname().machine or "" - if not OPENWRT_ARCH and fs.access("/usr/lib/os-release") then - OPENWRT_ARCH = sys.exec("echo -n $(grep 'OPENWRT_ARCH' /usr/lib/os-release | awk -F '[\\042\\047]' '{print $2}')") - if OPENWRT_ARCH == "" then OPENWRT_ARCH = nil end - end - if not DISTRIB_ARCH and fs.access("/etc/openwrt_release") then - DISTRIB_ARCH = sys.exec("echo -n $(grep 'DISTRIB_ARCH' /etc/openwrt_release | awk -F '[\\042\\047]' '{print $2}')") - if DISTRIB_ARCH == "" then DISTRIB_ARCH = nil end - end - - if arch:match("^i[%d]86$") then - arch = "x86" - elseif arch:match("armv5") then -- armv5l - arch = "armv5" - elseif arch:match("armv6") then - arch = "armv6" - elseif arch:match("armv7") then -- armv7l - arch = "armv7" - end - - if OPENWRT_ARCH or DISTRIB_ARCH then - if arch == "mips" then - if OPENWRT_ARCH and OPENWRT_ARCH:match("mipsel") == "mipsel" - or DISTRIB_ARCH and DISTRIB_ARCH:match("mipsel") == "mipsel" then - arch = "mipsel" - end - elseif arch == "armv7" then - if OPENWRT_ARCH and not OPENWRT_ARCH:match("vfp") and not OPENWRT_ARCH:match("neon") - or DISTRIB_ARCH and not DISTRIB_ARCH:match("vfp") and not DISTRIB_ARCH:match("neon") then - arch = "armv5" - end - end - end - - return trim(arch) -end - -local default_file_tree = { - x86_64 = "amd64", - x86 = "386", - aarch64 = "arm64", - rockchip = "arm64", - mips = "mips", - mips64 = "mips64", - mipsel = "mipsel", - mips64el = "mips64el", - armv5 = "arm.*5", - armv6 = "arm.*6[^4]*", - armv7 = "arm.*7", - armv8 = "arm64", - riscv64 = "riscv64" -} - -function get_api_json(url) - local jsonc = require "luci.jsonc" - local return_code, content = curl_logic(url, nil, curl_args) - if return_code ~= 0 or content == "" then return {} end - return jsonc.parse(content) or {} -end - -local function check_path(app_name) - local path = get_app_path(app_name) or "" - if path == "" then - return { - code = 1, - error = i18n.translatef("You did not fill in the %s path. Please save and apply then update manually.", app_name) - } - end - return { - code = 0, - app_path = path - } -end - -function to_check(arch, app_name) - local result = check_path(app_name) - if result.code ~= 0 then - return result - end - - if not arch or arch == "" then arch = auto_get_arch() end - - local file_tree = com[app_name].file_tree[arch] or default_file_tree[arch] or "" - - if file_tree == "" then - return { - code = 1, - error = i18n.translate("Can't determine ARCH, or ARCH not supported.") - } - end - - local local_version = get_app_version(app_name) - local match_file_name = string.format(com[app_name].match_fmt_str, file_tree) - local json = get_api_json(com[app_name]:get_url()) - - if #json > 0 then - json = json[1] - end - - if json.tag_name == nil then - return { - code = 1, - error = i18n.translate("Get remote version info failed.") - } - end - - local remote_version = json.tag_name - if com[app_name].remote_version_str_replace then - remote_version = remote_version:gsub(com[app_name].remote_version_str_replace, "") - end - local has_update = compare_versions(local_version:match("[^v]+"), "<", remote_version:match("[^v]+")) ---[[ - if not has_update then - return { - code = 0, - local_version = local_version, - remote_version = remote_version - } - end -]] - local asset = {} - for _, v in ipairs(json.assets) do - if v.name and v.name:match(match_file_name) then - asset = v - break - end - end - if not asset.browser_download_url then - return { - code = 1, - local_version = local_version, - remote_version = remote_version, - html_url = json.html_url, - data = asset, - error = i18n.translate("New version found, but failed to get new version download url.") - } - end - - return { - code = 0, - has_update = has_update, - local_version = local_version, - remote_version = remote_version, - html_url = json.html_url, - data = asset - } -end - -function to_download(app_name, url, size) - local result = check_path(app_name) - if result.code ~= 0 then - return result - end - - if not url or url == "" then - return {code = 1, error = i18n.translate("Download url is required.")} - end - - sys.call("/bin/rm -f /tmp/".. app_name .."_download.*") - - local tmp_file = trim(util.exec("mktemp -u -t ".. app_name .."_download.XXXXXX")) - - if size then - local kb1 = get_free_space("/tmp") - if tonumber(size) > tonumber(kb1) then - return {code = 1, error = i18n.translatef("%s not enough space.", "/tmp")} - end - end - - local _curl_args = clone(curl_args) - table.insert(_curl_args, "--speed-limit 51200 --speed-time 15 --max-time 300") - - local return_code, result = curl_logic(url, tmp_file, _curl_args) - result = return_code == 0 - - if not result then - exec("/bin/rm", {"-f", tmp_file}) - return { - code = 1, - error = i18n.translatef("File download failed or timed out: %s", url) - } - end - - return {code = 0, file = tmp_file, zip = com[app_name].zipped } -end - -function to_extract(app_name, file, subfix) - local result = check_path(app_name) - if result.code ~= 0 then - return result - end - - if not file or file == "" or not fs.access(file) then - return {code = 1, error = i18n.translate("File path required.")} - end - - local tools_name - if com[app_name].zipped then - if not com[app_name].zipped_suffix or com[app_name].zipped_suffix == "zip" then - tools_name = "unzip" - end - if com[app_name].zipped_suffix and com[app_name].zipped_suffix == "tar.gz" then - tools_name = "tar" - end - if tools_name then - if sys.exec("echo -n $(command -v %s)" % { tools_name }) == "" then - exec("/bin/rm", {"-f", file}) - return { - code = 1, - error = i18n.translate("Not installed %s, Can't unzip!" % { tools_name }) - } - end - end - end - - sys.call("/bin/rm -rf /tmp/".. app_name .."_extract.*") - - local new_file_size = get_file_space(file) - local tmp_free_size = get_free_space("/tmp") - if tmp_free_size <= 0 or tmp_free_size <= new_file_size then - return {code = 1, error = i18n.translatef("%s not enough space.", "/tmp")} - end - - local tmp_dir = trim(util.exec("mktemp -d -t ".. app_name .."_extract.XXXXXX")) - - local output = {} - - if tools_name then - if tools_name == "unzip" then - local bin = sys.exec("echo -n $(command -v unzip)") - exec(bin, {"-o", file, app_name, "-d", tmp_dir}, function(chunk) output[#output + 1] = chunk end) - elseif tools_name == "tar" then - local bin = sys.exec("echo -n $(command -v tar)") - if com[app_name].zipped_suffix == "tar.gz" then - exec(bin, {"-zxf", file, "-C", tmp_dir}, function(chunk) output[#output + 1] = chunk end) - sys.call("/bin/mv -f " .. tmp_dir .. "/*/" .. com[app_name].name:lower() .. " " .. tmp_dir) - end - end - end - - local files = util.split(table.concat(output)) - - exec("/bin/rm", {"-f", file}) - - return {code = 0, file = tmp_dir} -end - -function to_move(app_name,file) - local result = check_path(app_name) - if result.code ~= 0 then - return result - end - - local app_path = result.app_path - local bin_path = file - local cmd_rm_tmp = "/bin/rm -rf /tmp/" .. app_name .. "_download.*" - if fs.stat(file, "type") == "dir" then - bin_path = file .. "/" .. com[app_name].name:lower() - cmd_rm_tmp = "/bin/rm -rf /tmp/" .. app_name .. "_extract.*" - end - - if not file or file == "" then - sys.call(cmd_rm_tmp) - return {code = 1, error = i18n.translate("Client file is required.")} - end - - local new_version = get_app_version(app_name, bin_path) - if new_version == "" then - sys.call(cmd_rm_tmp) - return { - code = 1, - error = i18n.translate("The client file is not suitable for current device.")..app_name.."__"..bin_path - } - end - - local flag = sys.call('pgrep -af "passwall2/.*'.. app_name ..'" >/dev/null') - if flag == 0 then - sys.call("/etc/init.d/passwall2 stop") - end - - local old_app_size = 0 - if fs.access(app_path) then - old_app_size = get_file_space(app_path) - end - local new_app_size = get_file_space(bin_path) - local final_dir = get_final_dir(app_path) - local final_dir_free_size = get_free_space(final_dir) - if final_dir_free_size > 0 then - final_dir_free_size = final_dir_free_size + old_app_size - if new_app_size > final_dir_free_size then - sys.call(cmd_rm_tmp) - return {code = 1, error = i18n.translatef("%s not enough space.", final_dir)} - end - end - - result = exec("/bin/mv", { "-f", bin_path, app_path }, nil, command_timeout) == 0 - - sys.call(cmd_rm_tmp) - if flag == 0 then - sys.call("/etc/init.d/passwall2 restart >/dev/null 2>&1 &") - end - - if not result or not fs.access(app_path) then - return { - code = 1, - error = i18n.translatef("Can't move new file to path: %s", app_path) - } - end - - return {code = 0} -end - -function get_version() - local version = sys.exec("opkg list-installed luci-app-passwall2 2>/dev/null | awk '{print $3}'") - if not version or #version == 0 then - version = sys.exec("apk list luci-app-passwall2 2>/dev/null | awk '/installed/ {print $1}' | cut -d'-' -f4-") - end - return (version or ""):gsub("\n", ""):match("^([^-]+)") -end - -function to_check_self() - local url = "https://raw.githubusercontent.com/Openwrt-Passwall/openwrt-passwall2/main/luci-app-passwall2/Makefile" - local tmp_file = "/tmp/passwall2_makefile" - local return_code, result = curl_auto(url, tmp_file, curl_args) - result = return_code == 0 - if not result then - exec("/bin/rm", {"-f", tmp_file}) - return { - code = 1, - error = i18n.translatef("Failed") - } - end - local local_version = get_version() - local remote_version = sys.exec("echo -n $(grep '^PKG_VERSION' /tmp/passwall2_makefile | head -n 1 | awk -F '=' '{print $2}')") - exec("/bin/rm", {"-f", tmp_file}) - - local has_update = compare_versions(local_version, "<", remote_version) - if not has_update then - return { - code = 0, - local_version = local_version, - remote_version = remote_version - } - end - return { - code = 1, - has_update = true, - local_version = local_version, - remote_version = remote_version, - error = i18n.translatef("The latest version: %s, currently does not support automatic update, if you need to update, please compile or download the ipk and then manually install.", remote_version) - } -end - -function cacheFileCompareToLogic(file, str) - local result = nil - if file and str then - local file_str = "" - if fs.access(file) then - file_str = sys.exec("cat " .. file) - end - - if file_str ~= str then - sys.call("rm -f " .. file) - result = false - else - result = true - end - - local f_out = io.open(file, "w") - if f_out then - f_out:write(str) - f_out:close() - end - end - return result -end - -function is_js_luci() - return sys.call('[ -f "/www/luci-static/resources/uci.js" ]') == 0 -end - -function set_apply_on_parse(map) - if not map then - return - end - local lang = conf.main.lang or "auto" - if lang == "auto" then - local http = require "luci.http" - local aclang = http.getenv("HTTP_ACCEPT_LANGUAGE") or "" - for lpat in aclang:gmatch("[%w-]+") do - lpat = lpat and lpat:gsub("-", "_") - if conf.languages[lpat] then - lang = lpat - break - end - lpat = lpat and lpat:lower() - if conf.languages[lpat] then - lang = lpat - break - end - end - if lang ~= "auto" then - sh_uci_set(appname, "@global[0]", "auto_lang", lang, true) - end - end - if is_js_luci() == true then - local hide_popup_box = nil - if hide_popup_box == true then - map.apply_on_parse = false - map.on_after_apply = function(self) - if self.redirect then - os.execute("sleep 1") - luci.http.redirect(self.redirect) - end - end - else - apply_redirect(map) - local old = map.on_after_save - map.on_after_save = function(self) - if old then old(self) end - map:set("@global[0]", "timestamp", os.time()) - end - local cbi = require "luci.cbi" - map:append(cbi.Template(appname .. "/cbi/optimize_cbi_ui")) - end - end -end - -function luci_types(id, m, s, type_name, option_prefix) - local rewrite_option_table = {} - for key, value in pairs(s.fields) do - if key:find(option_prefix) == 1 then - if not s.fields[key].not_rewrite then - if s.fields[key].rewrite_option then - if not rewrite_option_table[s.fields[key].rewrite_option] then - rewrite_option_table[s.fields[key].rewrite_option] = 1 - else - rewrite_option_table[s.fields[key].rewrite_option] = rewrite_option_table[s.fields[key].rewrite_option] + 1 - end - end - - s.fields[key].cfgvalue = function(self, section) - -- Add a custom `custom_cfgvalue` attribute. If a custom `custom_cfgvalue` function exists, the custom `cfgvalue` logic will be used. - if self.custom_cfgvalue then - return self:custom_cfgvalue(section) - else - if self.rewrite_option then - return m:get(section, self.rewrite_option) - else - if self.option:find(option_prefix) == 1 then - return m:get(section, self.option:sub(1 + #option_prefix)) - end - end - end - end - s.fields[key].write = function(self, section, value) - if s.fields["type"]:formvalue(id) == type_name then - -- Add a custom `custom_write` attribute; if a custom `custom_write` function exists, then use the custom write logic. - if self.custom_write then - self:custom_write(section, value) - else - if self.rewrite_option then - m:set(section, self.rewrite_option, value) - else - if self.option:find(option_prefix) == 1 then - m:set(section, self.option:sub(1 + #option_prefix), value) - end - end - end - end - end - s.fields[key].remove = function(self, section) - if s.fields["type"]:formvalue(id) == type_name then - -- Add a custom `custom_remove` attribute; if a custom `custom_remove` function exists, use the custom remove logic. - if self.custom_remove then - self:custom_remove(section) - else - if self.rewrite_option and rewrite_option_table[self.rewrite_option] == 1 then - m:del(section, self.rewrite_option) - else - if self.option:find(option_prefix) == 1 then - m:del(section, self.option:sub(1 + #option_prefix)) - end - end - end - end - end - end - - local deps = s.fields[key].deps - if #deps > 0 then - for index, value in ipairs(deps) do - deps[index]["type"] = type_name - end - else - s.fields[key]:depends({ type = type_name }) - end - end - end -end -function format_go_time(input) - input = input and trim(input) - local N = 0 - if input and input:match("^%d+$") then - N = tonumber(input) - elseif input and input ~= "" then - for value, unit in input:gmatch("(%d+)%s*([hms])") do - value = tonumber(value) - if unit == "h" then - N = N + value * 3600 - elseif unit == "m" then - N = N + value * 60 - elseif unit == "s" then - N = N + value - end - end - end - if N <= 0 then - return "0s" - end - local result = "" - local h = math.floor(N / 3600) - local m = math.floor(N % 3600 / 60) - local s = N % 60 - if h > 0 then result = result .. h .. "h" end - if m > 0 then result = result .. m .. "m" end - if s > 0 or result == "" then result = result .. s .. "s" end - return result -end - -function apply_redirect(m) - local tmp_uci_file = "/etc/config/" .. appname .. "_redirect" - if m.redirect and m.redirect ~= "" then - if fs.access(tmp_uci_file) then - local redirect - for line in io.lines(tmp_uci_file) do - redirect = line:match("option%s+url%s+['\"]([^'\"]+)['\"]") - if redirect and redirect ~= "" then break end - end - if redirect and redirect ~= "" then - sys.call("/bin/rm -f " .. tmp_uci_file) - luci.http.redirect(redirect) - end - else - fs.writefile(tmp_uci_file, "config redirect\n") - end - m.on_after_save = function(self) - local redirect = self.redirect - if redirect and redirect ~= "" then - uci:set(appname .. "_redirect", "@redirect[0]", "url", redirect) - end - end - else - sys.call("/bin/rm -f " .. tmp_uci_file) - end -end diff --git a/small/luci-app-passwall2/luasrc/passwall2/com.lua b/small/luci-app-passwall2/luasrc/passwall2/com.lua deleted file mode 100644 index b7ac89059a..0000000000 --- a/small/luci-app-passwall2/luasrc/passwall2/com.lua +++ /dev/null @@ -1,74 +0,0 @@ -local _M = {} - -local function gh_release_url(self) - --return "https://api.github.com/repos/" .. self.repo .. "/releases/latest" - return "https://github.com/Openwrt-Passwall/openwrt-passwall-packages/releases/download/api-cache/" .. string.lower(self.name) .. "-release-api.json" -end - -local function gh_pre_release_url(self) - --return "https://api.github.com/repos/" .. self.repo .. "/releases?per_page=1" - return "https://github.com/Openwrt-Passwall/openwrt-passwall-packages/releases/download/api-cache/" .. string.lower(self.name) .. "-pre-release-api.json" -end - -_M.hysteria = { - name = "Hysteria", - repo = "HyNetwork/hysteria", - get_url = gh_release_url, - cmd_version = "version | awk '/^Version:/ {print $2}'", - remote_version_str_replace = "app/", - zipped = false, - default_path = "/usr/bin/hysteria", - match_fmt_str = "linux%%-%s$", - file_tree = { - armv6 = "arm", - armv7 = "arm" - } -} - -_M["sing-box"] = { - name = "Sing-Box", - repo = "SagerNet/sing-box", - get_url = gh_release_url, - cmd_version = "version | awk '{print $3}' | sed -n 1P", - zipped = true, - zipped_suffix = "tar.gz", - default_path = "/usr/bin/sing-box", - match_fmt_str = "linux%%-%s", - file_tree = { - x86_64 = "amd64", - mips64el = "mips64le" - } -} - -_M.xray = { - name = "Xray", - repo = "XTLS/Xray-core", - get_url = gh_pre_release_url, - cmd_version = "version | awk '{print $2}' | sed -n 1P", - zipped = true, - default_path = "/usr/bin/xray", - match_fmt_str = "linux%%-%s", - file_tree = { - x86_64 = "64", - x86 = "32", - mips = "mips32", - mipsel = "mips32le", - mips64el = "mips64le" - } -} - -_M.geoview = { - name = "Geoview", - repo = "snowie2000/geoview", - get_url = gh_release_url, - cmd_version = '-version 2>/dev/null | awk \'NR==1 && $1=="Geoview" {print $2}\'', - zipped = false, - default_path = "/usr/bin/geoview", - match_fmt_str = "linux%%-%s", - file_tree = { - mipsel = "mipsle", - mips64el = "mips64le" - } -} - -return _M diff --git a/small/luci-app-passwall2/luasrc/passwall2/server_app.lua b/small/luci-app-passwall2/luasrc/passwall2/server_app.lua deleted file mode 100644 index 6203614ffc..0000000000 --- a/small/luci-app-passwall2/luasrc/passwall2/server_app.lua +++ /dev/null @@ -1,244 +0,0 @@ -#!/usr/bin/lua - -local action = arg[1] -local api = require "luci.passwall2.api" -local sys = api.sys -local uci = api.uci -local jsonc = api.jsonc - -local CONFIG = "passwall2_server" -local CONFIG_PATH = "/tmp/etc/" .. CONFIG -local NFT_INCLUDE_FILE = CONFIG_PATH .. "/" .. CONFIG .. ".nft" -local LOG_APP_FILE = "/tmp/log/" .. CONFIG .. ".log" -local TMP_BIN_PATH = CONFIG_PATH .. "/bin" -local require_dir = "luci.passwall2." - -local ipt_bin = sys.exec("echo -n $(/usr/share/passwall2/iptables.sh get_ipt_bin)") -local ip6t_bin = sys.exec("echo -n $(/usr/share/passwall2/iptables.sh get_ip6t_bin)") - -local nft_flag = api.is_finded("fw4") and "1" or "0" - -local function log(...) - local f, err = io.open(LOG_APP_FILE, "a") - if f and err == nil then - local str = os.date("%Y-%m-%d %H:%M:%S: ") .. table.concat({...}, " ") - f:write(str .. "\n") - f:close() - end -end - -local function cmd(cmd) - sys.call(cmd) -end - -local function ipt(arg) - if ipt_bin and #ipt_bin > 0 then - cmd(ipt_bin .. " -w " .. arg) - end -end - -local function ip6t(arg) - if ip6t_bin and #ip6t_bin > 0 then - cmd(ip6t_bin .. " -w " .. arg) - end -end - -local function ln_run(s, d, command, output) - if not output then - output = "/dev/null" - end - d = TMP_BIN_PATH .. "/" .. d - cmd(string.format('[ ! -f "%s" ] && ln -s %s %s 2>/dev/null', d, s, d)) - return string.format("%s >%s 2>&1 &", d .. " " ..command, output) -end - -local function gen_include() - cmd(string.format("echo '#!/bin/sh' > /tmp/etc/%s.include", CONFIG)) - local function extract_rules(n, a) - local _ipt = ipt_bin - if n == "6" then - _ipt = ip6t_bin - end - local result = "*" .. a - result = result .. "\n" .. sys.exec(_ipt .. '-save -t ' .. a .. ' | grep "PSW2-SERVER" | sed -e "s/^-A \\(INPUT\\)/-I \\1 1/"') - result = result .. "COMMIT" - return result - end - local f, err = io.open("/tmp/etc/" .. CONFIG .. ".include", "a") - if f and err == nil then - if nft_flag == "0" then - f:write(ipt_bin .. '-save -c | grep -v "PSW2-SERVER" | ' .. ipt_bin .. '-restore -c' .. "\n") - f:write(ipt_bin .. '-restore -n <<-EOT' .. "\n") - f:write(extract_rules("4", "filter") .. "\n") - f:write("EOT" .. "\n") - f:write(ip6t_bin .. '-save -c | grep -v "PSW2-SERVER" | ' .. ip6t_bin .. '-restore -c' .. "\n") - f:write(ip6t_bin .. '-restore -n <<-EOT' .. "\n") - f:write(extract_rules("6", "filter") .. "\n") - f:write("EOT" .. "\n") - f:close() - else - f:write("nft -f " .. NFT_INCLUDE_FILE .. "\n") - f:close() - end - end -end - -local function start() - local enabled = tonumber(uci:get(CONFIG, "@global[0]", "enable") or 0) - if enabled == nil or enabled == 0 then - return - end - cmd(string.format("mkdir -p %s %s", CONFIG_PATH, TMP_BIN_PATH)) - cmd(string.format("touch %s", LOG_APP_FILE)) - if nft_flag == "0" then - ipt("-N PSW2-SERVER") - ipt("-I INPUT -j PSW2-SERVER") - ip6t("-N PSW2-SERVER") - ip6t("-I INPUT -j PSW2-SERVER") - else - nft_file, err = io.open(NFT_INCLUDE_FILE, "w") - nft_file:write('#!/usr/sbin/nft -f\n') - nft_file:write('add chain inet fw4 PSW2-SERVER\n') - nft_file:write('flush chain inet fw4 PSW2-SERVER\n') - nft_file:write('insert rule inet fw4 input position 0 jump PSW2-SERVER comment "PSW2-SERVER"\n') - end - uci:foreach(CONFIG, "user", function(user) - local id = user[".name"] - local enable = user.enable - if enable and tonumber(enable) == 1 then - local enable_log = user.log - local log_path = nil - if enable_log and enable_log == "1" then - log_path = CONFIG_PATH .. "/" .. id .. ".log" - else - log_path = nil - end - local remarks = user.remarks - local port = tonumber(user.port) - local bin - local config = {} - local config_file = CONFIG_PATH .. "/" .. id .. ".json" - local udp_forward = 1 - local type = user.type or "" - if type == "SS" or type == "SSR" then - if user.custom == "1" and user.config_str then - config = jsonc.parse(api.base64Decode(user.config_str)) - else - config = require(require_dir .. "util_shadowsocks").gen_config_server(user) - end - local udp_param = "" - udp_forward = tonumber(user.udp_forward) or 1 - if udp_forward == 1 then - udp_param = "-u" - end - type = type:lower() - bin = ln_run("/usr/bin/" .. type .. "-server", type .. "-server", "-c " .. config_file .. " " .. udp_param, log_path) - elseif type == "SS-Rust" then - if user.custom == "1" and user.config_str then - config = jsonc.parse(api.base64Decode(user.config_str)) - else - config = require(require_dir .. "util_shadowsocks").gen_config_server(user) - end - bin = ln_run("/usr/bin/ssserver", "ssserver", "-c " .. config_file, log_path) - elseif type == "Xray" then - if user.custom == "1" and user.config_str then - config = jsonc.parse(api.base64Decode(user.config_str)) - if log_path then - if not config.log then - config.log = {} - end - config.log.loglevel = user.loglevel - end - else - config = require(require_dir .. "util_xray").gen_config_server(user) - end - bin = ln_run(api.get_app_path("xray"), "xray", "run -c " .. config_file, log_path) - elseif type == "sing-box" then - if user.custom == "1" and user.config_str then - config = jsonc.parse(api.base64Decode(user.config_str)) - if log_path then - if not config.log then - config.log = {} - end - config.log.timestamp = true - config.log.disabled = false - config.log.level = user.loglevel - config.log.output = log_path - end - else - config = require(require_dir .. "util_sing-box").gen_config_server(user) - end - bin = ln_run(api.get_app_path("sing-box"), "sing-box", "run -c " .. config_file, log_path) - elseif type == "Hysteria2" then - if user.custom == "1" and user.config_str then - config = jsonc.parse(api.base64Decode(user.config_str)) - else - config = require(require_dir .. "util_hysteria2").gen_config_server(user) - end - bin = ln_run(api.get_app_path("hysteria"), "hysteria", "-c " .. config_file .. " server", log_path) - end - - if next(config) then - local f, err = io.open(config_file, "w") - if f and err == nil then - f:write(jsonc.stringify(config, 1)) - f:close() - end - log(string.format("%s %s - %s", remarks, api.i18n.translate("Generate configuration file and run"), config_file)) - end - - if bin then - cmd(bin) - end - - local bind_local = user.bind_local or 0 - if bind_local and tonumber(bind_local) ~= 1 and port then - if nft_flag == "0" then - ipt(string.format('-A PSW2-SERVER -p tcp --dport %s -m comment --comment "%s" -j ACCEPT', port, remarks)) - ip6t(string.format('-A PSW2-SERVER -p tcp --dport %s -m comment --comment "%s" -j ACCEPT', port, remarks)) - if udp_forward == 1 then - ipt(string.format('-A PSW2-SERVER -p udp --dport %s -m comment --comment "%s" -j ACCEPT', port, remarks)) - ip6t(string.format('-A PSW2-SERVER -p udp --dport %s -m comment --comment "%s" -j ACCEPT', port, remarks)) - end - else - nft_file:write(string.format('add rule inet fw4 PSW2-SERVER meta l4proto tcp tcp dport {%s} counter accept comment "%s"\n', port, remarks)) - if udp_forward == 1 then - nft_file:write(string.format('add rule inet fw4 PSW2-SERVER meta l4proto udp udp dport {%s} counter accept comment "%s"\n', port, remarks)) - end - end - end - end - end) - if nft_flag == "1" then - nft_file:write("add rule inet fw4 PSW2-SERVER return\n") - nft_file:close() - cmd("nft -f " .. NFT_INCLUDE_FILE) - end - gen_include() -end - -local function stop() - cmd(string.format("/bin/busybox top -bn1 | grep -v 'grep' | grep '%s/' | awk '{print $1}' | xargs kill -9 >/dev/null 2>&1", CONFIG_PATH)) - if nft_flag == "0" then - ipt("-D INPUT -j PSW2-SERVER 2>/dev/null") - ipt("-F PSW2-SERVER 2>/dev/null") - ipt("-X PSW2-SERVER 2>/dev/null") - ip6t("-D INPUT -j PSW2-SERVER 2>/dev/null") - ip6t("-F PSW2-SERVER 2>/dev/null") - ip6t("-X PSW2-SERVER 2>/dev/null") - else - local nft_cmd = "handles=$(nft -a list chain inet fw4 input | grep -E \"PSW2-SERVER\" | awk -F '# handle ' '{print$2}')\n for handle in $handles; do\n nft delete rule inet fw4 input handle ${handle} 2>/dev/null\n done" - cmd(nft_cmd) - cmd("nft flush chain inet fw4 PSW2-SERVER 2>/dev/null") - cmd("nft delete chain inet fw4 PSW2-SERVER 2>/dev/null") - end - cmd(string.format("rm -rf %s %s /tmp/etc/%s.include", CONFIG_PATH, LOG_APP_FILE, CONFIG)) -end - -if action then - if action == "start" then - start() - elseif action == "stop" then - stop() - end -end diff --git a/small/luci-app-passwall2/luasrc/passwall2/util_hysteria2.lua b/small/luci-app-passwall2/luasrc/passwall2/util_hysteria2.lua deleted file mode 100644 index 4e12dd37ed..0000000000 --- a/small/luci-app-passwall2/luasrc/passwall2/util_hysteria2.lua +++ /dev/null @@ -1,129 +0,0 @@ -module("luci.passwall2.util_hysteria2", package.seeall) -local api = require "luci.passwall2.api" -local uci = api.uci -local jsonc = api.jsonc - -function gen_config_server(node) - local config = { - listen = ":" .. node.port, - tls = { - cert = node.tls_certificateFile, - key = node.tls_keyFile, - }, - obfs = (node.hysteria2_obfs) and { - type = "salamander", - salamander = { - password = node.hysteria2_obfs - } - } or nil, - auth = { - type = "password", - password = node.hysteria2_auth_password - }, - bandwidth = (node.hysteria2_up_mbps or node.hysteria2_down_mbps) and { - up = node.hysteria2_up_mbps and node.hysteria2_up_mbps .. " mbps" or nil, - down = node.hysteria2_down_mbps and node.hysteria2_down_mbps .. " mbps" or nil - } or nil, - ignoreClientBandwidth = (node.hysteria2_ignoreClientBandwidth == "1") and true or false, - disableUDP = (node.hysteria2_udp == "0") and true or false, - } - return config -end - -function gen_config(var) - local node_id = var["-node"] - if not node_id then - print("-node Cannot be empty!") - return - end - local node = uci:get_all("passwall2", node_id) - local local_socks_address = var["-local_socks_address"] or "0.0.0.0" - local local_socks_port = var["-local_socks_port"] - local local_socks_username = var["-local_socks_username"] - local local_socks_password = var["-local_socks_password"] - local local_http_address = var["-local_http_address"] or "0.0.0.0" - local local_http_port = var["-local_http_port"] - local local_http_username = var["-local_http_username"] - local local_http_password = var["-local_http_password"] - local server_host = var["-server_host"] or node.address - local server_port = var["-server_port"] or node.port - - if api.is_ipv6(server_host) then - server_host = api.get_ipv6_full(server_host) - end - local server = server_host .. ":" .. server_port - - if (node.hysteria2_hop) then - server = server .. "," .. string.gsub(node.hysteria2_hop, ":", "-") - end - - local config = { - server = server, - transport = { - type = node.protocol or "udp", - udp = { - hopInterval = (function() - local HopIntervalStr = tostring(node.hysteria2_hop_interval or "30s") - local HopInterval = tonumber(HopIntervalStr:match("^%d+")) - if HopInterval and HopInterval >= 5 then - return tostring(HopInterval) .. "s" - end - return "30s" - end)(), - } - }, - obfs = (node.hysteria2_obfs) and { - type = "salamander", - salamander = { - password = node.hysteria2_obfs - } - } or nil, - auth = node.hysteria2_auth_password, - tls = { - sni = node.tls_serverName, - insecure = (node.tls_allowInsecure == "1") and true or false, - pinSHA256 = (node.hysteria2_tls_pinSHA256) and node.hysteria2_tls_pinSHA256 or nil, - }, - quic = { - initStreamReceiveWindow = (node.hysteria2_recv_window) and tonumber(node.hysteria2_recv_window) or nil, - initConnReceiveWindow = (node.hysteria2_recv_window_conn) and tonumber(node.hysteria2_recv_window_conn) or nil, - maxIdleTimeout = (function() - local timeoutStr = tostring(node.hysteria2_idle_timeout or "") - local timeout = tonumber(timeoutStr:match("^%d+")) - if timeout and timeout >= 4 and timeout <= 120 then - return tostring(timeout) .. "s" - end - return nil - end)(), - disablePathMTUDiscovery = (node.hysteria2_disable_mtu_discovery) and true or false, - }, - bandwidth = (node.hysteria2_up_mbps or node.hysteria2_down_mbps) and { - up = node.hysteria2_up_mbps and node.hysteria2_up_mbps .. " mbps" or nil, - down = node.hysteria2_down_mbps and node.hysteria2_down_mbps .. " mbps" or nil - } or nil, - fast_open = (node.fast_open == "1") and true or false, - lazy = (node.hysteria2_lazy_start == "1") and true or false, - socks5 = (local_socks_address and local_socks_port) and { - listen = local_socks_address .. ":" .. local_socks_port, - username = (local_socks_username and local_socks_password) and local_socks_username or nil, - password = (local_socks_username and local_socks_password) and local_socks_password or nil, - disableUDP = false, - } or nil, - http = (local_http_address and local_http_port) and { - listen = local_http_address .. ":" .. local_http_port, - username = (local_http_username and local_http_password) and local_http_username or nil, - password = (local_http_username and local_http_password) and local_http_password or nil, - } or nil - } - - return jsonc.stringify(config, 1) -end - -_G.gen_config = gen_config - -if arg[1] then - local func =_G[arg[1]] - if func then - print(func(api.get_function_args(arg))) - end -end diff --git a/small/luci-app-passwall2/luasrc/passwall2/util_naiveproxy.lua b/small/luci-app-passwall2/luasrc/passwall2/util_naiveproxy.lua deleted file mode 100644 index c0ce4842fb..0000000000 --- a/small/luci-app-passwall2/luasrc/passwall2/util_naiveproxy.lua +++ /dev/null @@ -1,39 +0,0 @@ -module("luci.passwall2.util_navieproxy", package.seeall) -local api = require "luci.passwall2.api" -local uci = api.uci -local jsonc = api.jsonc - -function gen_config(var) - local node_id = var["-node"] - if not node_id then - print("-node Cannot be empty!") - return - end - local node = uci:get_all("passwall2", node_id) - local run_type = var["-run_type"] - local local_addr = var["-local_addr"] - local local_port = var["-local_port"] - local server_host = var["-server_host"] or node.address - local server_port = var["-server_port"] or node.port - - if api.is_ipv6(server_host) then - server_host = api.get_ipv6_full(server_host) - end - local server = server_host .. ":" .. server_port - - local config = { - listen = run_type .. "://" .. local_addr .. ":" .. local_port, - proxy = node.protocol .. "://" .. node.username .. ":" .. node.password .. "@" .. server - } - - return jsonc.stringify(config, 1) -end - -_G.gen_config = gen_config - -if arg[1] then - local func =_G[arg[1]] - if func then - print(func(api.get_function_args(arg))) - end -end diff --git a/small/luci-app-passwall2/luasrc/passwall2/util_shadowsocks.lua b/small/luci-app-passwall2/luasrc/passwall2/util_shadowsocks.lua deleted file mode 100644 index 91c8f4eed1..0000000000 --- a/small/luci-app-passwall2/luasrc/passwall2/util_shadowsocks.lua +++ /dev/null @@ -1,139 +0,0 @@ -module("luci.passwall2.util_shadowsocks", package.seeall) -local api = require "luci.passwall2.api" -local uci = api.uci -local jsonc = api.jsonc - -function gen_config_server(node) - local config = {} - config.server_port = tonumber(node.port) - config.password = node.password - config.timeout = tonumber(node.timeout) - config.fast_open = (node.tcp_fast_open and node.tcp_fast_open == "1") and true or false - config.method = node.method - - if node.type == "SS-Rust" then - config.server = "::" - config.mode = "tcp_and_udp" - else - config.server = {"[::0]", "0.0.0.0"} - end - - if node.type == "SSR" then - config.protocol = node.protocol - config.protocol_param = node.protocol_param - config.obfs = node.obfs - config.obfs_param = node.obfs_param - end - - return config -end - -local plugin_sh, plugin_bin - -function gen_config(var) - local node_id = var["-node"] - if not node_id then - print("-node Cannot be empty!") - return - end - local node = uci:get_all("passwall2", node_id) - local server_host = var["-server_host"] or node.address - local server_port = var["-server_port"] or node.port - local local_addr = var["-local_addr"] - local local_port = var["-local_port"] - local mode = var["-mode"] - local local_socks_address = var["-local_socks_address"] or "0.0.0.0" - local local_socks_port = var["-local_socks_port"] - local local_socks_username = var["-local_socks_username"] - local local_socks_password = var["-local_socks_password"] - local local_http_address = var["-local_http_address"] or "0.0.0.0" - local local_http_port = var["-local_http_port"] - local local_http_username = var["-local_http_username"] - local local_http_password = var["-local_http_password"] - - if api.is_ipv6(server_host) then - server_host = api.get_ipv6_only(server_host) - end - local server = server_host - - local plugin_file - if node.plugin and node.plugin ~= "" and node.plugin ~= "none" then - plugin_sh = var["-plugin_sh"] or "" - plugin_file = (plugin_sh ~="") and plugin_sh or node.plugin - plugin_bin = node.plugin - end - - local config = { - server = server, - server_port = tonumber(server_port), - local_address = local_addr, - local_port = tonumber(local_port), - password = node.password, - method = node.method, - timeout = tonumber(node.timeout), - fast_open = (node.tcp_fast_open and node.tcp_fast_open == "true") and true or false, - reuse_port = true - } - - if node.type == "SS" then - config.plugin = plugin_file or nil - config.plugin_opts = (plugin_file) and node.plugin_opts or nil - config.mode = mode - elseif node.type == "SSR" then - config.protocol = node.protocol - config.protocol_param = node.protocol_param - config.obfs = node.obfs - config.obfs_param = node.obfs_param - elseif node.type == "SS-Rust" then - config = { - servers = { - { - address = server, - port = tonumber(server_port), - method = node.method, - password = node.password, - timeout = tonumber(node.timeout), - plugin = plugin_file or nil, - plugin_opts = (plugin_file) and node.plugin_opts or nil - } - }, - locals = {}, - fast_open = (node.tcp_fast_open and node.tcp_fast_open == "true") and true or false - } - if local_socks_address and local_socks_port then - table.insert(config.locals, { - local_address = local_socks_address, - local_port = tonumber(local_socks_port), - mode = "tcp_and_udp" - }) - end - if local_http_address and local_http_port then - table.insert(config.locals, { - protocol = "http", - local_address = local_http_address, - local_port = tonumber(local_http_port) - }) - end - end - - return jsonc.stringify(config, 1) -end - -_G.gen_config = gen_config - -if arg[1] then - local func =_G[arg[1]] - if func then - print(func(api.get_function_args(arg))) - if plugin_sh and plugin_sh ~="" and plugin_bin then - local f = io.open(plugin_sh, "w") - f:write("#!/bin/sh\n") - f:write("export PATH=/usr/sbin:/usr/bin:/sbin:/bin:/root/bin:$PATH\n") - f:write(plugin_bin .. " $@ &\n") - f:write("echo $! > " .. plugin_sh:gsub("%.sh$", ".pid") .. "\n") - f:write("wait\n") - f:close() - luci.sys.call("chmod +x " .. plugin_sh) - end - end -end diff --git a/small/luci-app-passwall2/luasrc/passwall2/util_sing-box.lua b/small/luci-app-passwall2/luasrc/passwall2/util_sing-box.lua deleted file mode 100644 index 75e10227f2..0000000000 --- a/small/luci-app-passwall2/luasrc/passwall2/util_sing-box.lua +++ /dev/null @@ -1,1974 +0,0 @@ -module("luci.passwall2.util_sing-box", package.seeall) -local api = require "luci.passwall2.api" -local uci = api.uci -local sys = api.sys -local jsonc = api.jsonc -local appname = api.appname -local fs = api.fs -local CACHE_PATH = api.CACHE_PATH -local split = api.split - -local local_version = api.get_app_version("sing-box"):match("[^v]+") -local version_ge_1_11_0 = api.compare_versions(local_version, ">=", "1.11.0") -local version_ge_1_12_0 = api.compare_versions(local_version, ">=", "1.12.0") - -local geosite_all_tag = {} -local geoip_all_tag = {} -local srss_path = "/tmp/etc/" .. appname .."_tmp/singbox_srss/" - -local function convert_geofile() - local geo_dir = (uci:get(appname, "@global_rules[0]", "v2ray_location_asset") or "/usr/share/v2ray/"):match("^(.*)/") - local geosite_path = geo_dir .. "/geosite.dat" - local geoip_path = geo_dir .. "/geoip.dat" - if not api.finded_com("geoview") or api.compare_versions(api.get_app_version("geoview"), "<", "0.1.10") then - api.log(0, "!!! Note: Geo rules cannot be used if the Geoview component is missing or the version is too low.") - return - end - if not fs.access(srss_path) then - fs.mkdir(srss_path) - end - local function convert(file_path, prefix, tags) - if next(tags) and fs.access(file_path) then - local md5_file = srss_path .. prefix .. ".dat.md5" - local new_md5 = sys.exec("md5sum " .. file_path .. " 2>/dev/null | awk '{print $1}'"):gsub("\n", "") - local old_md5 = sys.exec("[ -f " .. md5_file .. " ] && head -n 1 " .. md5_file .. " | tr -d ' \t\n' || echo ''") - if new_md5 ~= "" and new_md5 ~= old_md5 then - sys.call("printf '%s' " .. new_md5 .. " > " .. md5_file) - sys.call("rm -rf " .. srss_path .. prefix .. "-*.srs" ) - end - for k in pairs(tags) do - local srs_file = srss_path .. prefix .. "-" .. k .. ".srs" - if not fs.access(srs_file) then - local cmd = string.format("geoview -type %s -action convert -input '%s' -list '%s' -output '%s' -lowmem=true", - prefix, file_path, k, srs_file) - sys.exec(cmd) - --local status = fs.access(srs_file) and "success" or "failed" - --api.log(0, string.format(" - Convert %s:%s ... %s", prefix, k, status)) - end - end - end - end - --api.log(0, "V2ray/Xray Geo convert to Sing-Box rule-set:") - convert(geosite_path, "geosite", geosite_all_tag) - convert(geoip_path, "geoip", geoip_all_tag) -end - -local new_port -local function get_new_port() - local cmd_format = ". /usr/share/passwall2/utils.sh ; echo -n $(get_new_port %s tcp)" - local set_port = 0 - if new_port and tonumber(new_port) then - set_port = tonumber(new_port) + 1 - end - new_port = tonumber(sys.exec(string.format(cmd_format, set_port == 0 and "auto" or set_port))) - return new_port -end - -function gen_outbound(flag, node, tag, proxy_table) - local result = nil - if node then - local node_id = node[".name"] - if tag == nil then - tag = node_id - end - - local proxy_tag = nil - local fragment = nil - local record_fragment = nil - local run_socks_instance = true - if proxy_table ~= nil and type(proxy_table) == "table" then - proxy_tag = proxy_table.tag or nil - fragment = proxy_table.fragment or nil - record_fragment = proxy_table.record_fragment or nil - run_socks_instance = proxy_table.run_socks_instance - end - - if node.type ~= "sing-box" then - local relay_port = node.port - new_port = get_new_port() - local config_file = string.format("%s_%s_%s.json", flag, tag, new_port) - if tag and node_id and not tag:find(node_id) then - config_file = string.format("%s_%s_%s_%s.json", flag, tag, node_id, new_port) - end - if run_socks_instance then - sys.call(string.format('/usr/share/%s/app.sh run_socks "%s"> /dev/null', - appname, - string.format("flag=%s node=%s bind=%s socks_port=%s config_file=%s relay_port=%s", - new_port, --flag - node_id, --node - "127.0.0.1", --bind - new_port, --socks port - config_file, --config file - (proxy_tag and relay_port) and tostring(relay_port) or "" --relay port - ) - ) - ) - end - node = { - protocol = "socks", - address = "127.0.0.1", - port = new_port - } - else - if proxy_tag then - node.detour = proxy_tag - end - end - - result = { - _id = node_id, - _flag = flag, - _flag_proxy_tag = proxy_tag, - tag = tag, - type = node.protocol, - server = node.address, - server_port = tonumber(node.port), - domain_strategy = node.domain_strategy, - detour = node.detour, - } - - local tls = nil - if node.tls == "1" then - local alpn = nil - if node.alpn and node.alpn ~= "default" then - alpn = {} - string.gsub(node.alpn, '[^' .. "," .. ']+', function(w) - table.insert(alpn, w) - end) - end - tls = { - enabled = true, - disable_sni = (node.tls_disable_sni == "1") and true or false, -- Do not send the server name in ClientHello. - server_name = node.tls_serverName, -- Used to verify the hostname on the returned certificate, unless the settings are insecure. It is also included in ClientHello to support virtual hosts, unless it is an IP address. - insecure = (node.tls_allowInsecure == "1") and true or false, -- Accepts any server certificate. - alpn = alpn, -- A list of supported application layer protocols, arranged in order of priority. If both peers support ALPN, the protocol selected will be one of these protocols; otherwise, the connection will fail. - --max_version = "1.3", - fragment = fragment, - record_fragment = record_fragment, - ech = { - enabled = (node.ech == "1") and true or false, - config = node.ech_config and split(node.ech_config:gsub("\\n", "\n"), "\n") or {}, - pq_signature_schemes_enabled = node.pq_signature_schemes_enabled and true or false, - dynamic_record_sizing_disabled = node.dynamic_record_sizing_disabled and true or false - }, - utls = { - enabled = (node.utls == "1" or node.reality == "1") and true or false, - fingerprint = node.fingerprint or "chrome" - }, - reality = { - enabled = (node.reality == "1") and true or false, - public_key = node.reality_publicKey, - short_id = node.reality_shortId - } - } - end - - local mux = nil - if node.mux == "1" then - mux = { - enabled = true, - protocol = node.mux_type or "h2mux", - max_connections = ( (node.tcpbrutal == "1") and 1 ) or tonumber(node.mux_concurrency) or 4, - padding = (node.mux_padding == "1") and true or false, - --min_streams = 4, - --max_streams = 0, - brutal = { - enabled = (node.tcpbrutal == "1") and true or false, - up_mbps = tonumber(node.tcpbrutal_up_mbps) or 10, - down_mbps = tonumber(node.tcpbrutal_down_mbps) or 50, - }, - } - end - - local v2ray_transport = nil - - if node.transport == "tcp" and node.tcp_guise == "http" and (node.tcp_guise_http_host or "") ~= "" then -- Simulate X-ray Raw (TCP) transmission - v2ray_transport = { - type = "http", - host = node.tcp_guise_http_host, - path = node.tcp_guise_http_path and (function() - local first = node.tcp_guise_http_path[1] - return (first == "" or not first) and "/" or first - end)() or "/", - headers = node.user_agent and { - ["User-Agent"] = node.user_agent - } or nil, - idle_timeout = (node.http_h2_health_check == "1") and node.http_h2_read_idle_timeout or nil, - ping_timeout = (node.http_h2_health_check == "1") and node.http_h2_health_check_timeout or nil, - } - -- TLS is not enforced. If TLS is not configured, plain HTTP 1.1 will be used. - end - - if node.transport == "http" then - v2ray_transport = { - type = "http", - host = node.http_host or {}, - path = node.http_path or "/", - headers = node.user_agent and { - ["User-Agent"] = node.user_agent - } or nil, - idle_timeout = (node.http_h2_health_check == "1") and node.http_h2_read_idle_timeout or nil, - ping_timeout = (node.http_h2_health_check == "1") and node.http_h2_health_check_timeout or nil, - } - -- TLS is not enforced. If TLS is not configured, plain HTTP 1.1 will be used. - end - - if node.transport == "ws" then - v2ray_transport = { - type = "ws", - path = node.ws_path or "/", - headers = (node.ws_host or node.user_agent) and { - Host = node.ws_host, - ["User-Agent"] = node.user_agent - } or nil, - max_early_data = tonumber(node.ws_maxEarlyData) or nil, - early_data_header_name = (node.ws_earlyDataHeaderName) and node.ws_earlyDataHeaderName or nil -- For compatibility with Xray-core, set it to Sec-WebSocket-Protocol. It needs to be consistent with the server. - } - end - - if node.transport == "httpupgrade" then - v2ray_transport = { - type = "httpupgrade", - host = node.httpupgrade_host, - path = node.httpupgrade_path or "/", - headers = node.user_agent and { - ["User-Agent"] = node.user_agent - } or nil - } - end - - if node.transport == "quic" then - v2ray_transport = { - type = "quic" - } - -- There is no additional encryption support: it's essentially re-encryption. And Xray-core is incompatible with v2ray-core here. - end - - if node.transport == "grpc" then - v2ray_transport = { - type = "grpc", - service_name = node.grpc_serviceName, - idle_timeout = tonumber(node.grpc_idle_timeout) or nil, - ping_timeout = tonumber(node.grpc_health_check_timeout) or nil, - permit_without_stream = (node.grpc_permit_without_stream == "1") and true or nil, - } - end - - local protocol_table = nil - - if node.protocol == "socks" then - protocol_table = { - version = "5", - username = (node.username and node.password) and node.username or nil, - password = (node.username and node.password) and node.password or nil, - udp_over_tcp = node.uot == "1" and { - enabled = true, - version = 2 - } or nil, - } - end - - if node.protocol == "http" then - protocol_table = { - username = (node.username and node.password) and node.username or nil, - password = (node.username and node.password) and node.password or nil, - path = nil, - headers = nil, - tls = tls - } - end - - if node.protocol == "shadowsocks" then - protocol_table = { - method = node.method or nil, - password = node.password or "", - plugin = (node.plugin_enabled and node.plugin) or nil, - plugin_opts = (node.plugin_enabled and node.plugin_opts) or nil, - udp_over_tcp = node.uot == "1" and { - enabled = true, - version = 2 - } or nil, - multiplex = mux, - } - end - - if node.protocol == "shadowsocksr" then - protocol_table = { - method = node.method or nil, - password = node.password or "", - obfs = node.ssr_obfs, - obfs_param = node.ssr_obfs_param, - protocol = node.ssr_protocol, - protocol_param = node.ssr_protocol_param, - } - end - - if node.protocol == "trojan" then - protocol_table = { - password = node.password, - tls = tls, - multiplex = mux, - transport = v2ray_transport - } - end - - if node.protocol == "vmess" then - protocol_table = { - uuid = node.uuid, - security = node.security, - alter_id = (node.alter_id) and tonumber(node.alter_id) or 0, - global_padding = (node.global_padding == "1") and true or false, - authenticated_length = (node.authenticated_length == "1") and true or false, - tls = tls, - packet_encoding = "", -- UDP packet encoding. (Empty): Disabled. packetaddr: Supported by v2ray 5+. xudp: Supported by xray. - multiplex = mux, - transport = v2ray_transport, - } - end - - if node.protocol == "vless" then - protocol_table = { - uuid = node.uuid, - flow = (node.tls == '1' and node.flow) and node.flow or nil, - tls = tls, - packet_encoding = "xudp", -- UDP packet encoding. (Empty): Disabled. packetaddr: Supported by v2ray 5+. xudp: Supported by xray. - multiplex = mux, - transport = v2ray_transport, - } - end - - if node.protocol == "wireguard" then - if node.wireguard_reserved then - local bytes = {} - if not node.wireguard_reserved:match("[^%d,]+") then - node.wireguard_reserved:gsub("%d+", function(b) - bytes[#bytes + 1] = tonumber(b) - end) - else - local result = api.bin.b64decode(node.wireguard_reserved) - for i = 1, #result do - bytes[i] = result:byte(i) - end - end - node.wireguard_reserved = #bytes > 0 and bytes or nil - end - protocol_table = { - system_interface = (node.wireguard_system_interface == "1") and true or false, - interface_name = node.wireguard_interface_name, - local_address = node.wireguard_local_address, - private_key = node.wireguard_secret_key, - peer_public_key = node.wireguard_public_key, - pre_shared_key = node.wireguard_preSharedKey, - reserved = node.wireguard_reserved, - mtu = tonumber(node.wireguard_mtu), - } - end - - if node.protocol == "hysteria" then - local server_ports = {} - if node.hysteria_hop then - node.hysteria_hop = string.gsub(node.hysteria_hop, "-", ":") - for range in node.hysteria_hop:gmatch("([^,]+)") do - if range:match("^%d+:%d+$") then - table.insert(server_ports, range) - end - end - end - protocol_table = { - server_ports = next(server_ports) and server_ports or nil, - hop_interval = (function() - if not next(server_ports) then return nil end - local v = tonumber((node.hysteria_hop_interval or "30s"):match("^%d+")) - return (v and v >= 5) and (v .. "s") or "30s" - end)(), - up_mbps = tonumber(node.hysteria_up_mbps), - down_mbps = tonumber(node.hysteria_down_mbps), - obfs = node.hysteria_obfs, - auth = (node.hysteria_auth_type == "base64") and node.hysteria_auth_password or nil, - auth_str = (node.hysteria_auth_type == "string") and node.hysteria_auth_password or nil, - recv_window_conn = tonumber(node.hysteria_recv_window_conn), - recv_window = tonumber(node.hysteria_recv_window), - disable_mtu_discovery = (node.hysteria_disable_mtu_discovery == "1") and true or false, - tls = { - enabled = true, - server_name = node.tls_serverName, - insecure = (node.tls_allowInsecure == "1") and true or false, - fragment = fragment, - record_fragment = record_fragment, - alpn = (node.hysteria_alpn and node.hysteria_alpn ~= "") and { - node.hysteria_alpn - } or nil, - ech = { - enabled = (node.ech == "1") and true or false, - config = node.ech_config and split(node.ech_config:gsub("\\n", "\n"), "\n") or {}, - pq_signature_schemes_enabled = node.pq_signature_schemes_enabled and true or false, - dynamic_record_sizing_disabled = node.dynamic_record_sizing_disabled and true or false - } - } - } - end - - if node.protocol == "shadowtls" then - protocol_table = { - version = tonumber(node.shadowtls_version), - password = (node.shadowtls_version == "2" or node.shadowtls_version == "3") and node.password or nil, - tls = tls, - } - end - - if node.protocol == "tuic" then - protocol_table = { - uuid = node.uuid, - password = node.password, - congestion_control = node.tuic_congestion_control or "cubic", - udp_relay_mode = node.tuic_udp_relay_mode or "native", - udp_over_stream = false, - zero_rtt_handshake = (node.tuic_zero_rtt_handshake == "1") and true or false, - heartbeat = node.tuic_heartbeat .. "s", - tls = { - enabled = true, - server_name = node.tls_serverName, - insecure = (node.tls_allowInsecure == "1") and true or false, - fragment = fragment, - record_fragment = record_fragment, - alpn = (node.tuic_alpn and node.tuic_alpn ~= "") and { - node.tuic_alpn - } or nil, - ech = { - enabled = (node.ech == "1") and true or false, - config = node.ech_config and split(node.ech_config:gsub("\\n", "\n"), "\n") or {}, - pq_signature_schemes_enabled = node.pq_signature_schemes_enabled and true or false, - dynamic_record_sizing_disabled = node.dynamic_record_sizing_disabled and true or false - } - } - } - end - - if node.protocol == "hysteria2" then - local server_ports = {} - if node.hysteria2_hop then - node.hysteria2_hop = string.gsub(node.hysteria2_hop, "-", ":") - for range in node.hysteria2_hop:gmatch("([^,]+)") do - if range:match("^%d+:%d+$") then - table.insert(server_ports, range) - end - end - end - protocol_table = { - server_ports = next(server_ports) and server_ports or nil, - hop_interval = (function() - if not next(server_ports) then return nil end - local v = tonumber((node.hysteria2_hop_interval or "30s"):match("^%d+")) - return (v and v >= 5) and (v .. "s") or "30s" - end)(), - up_mbps = (node.hysteria2_up_mbps and tonumber(node.hysteria2_up_mbps)) and tonumber(node.hysteria2_up_mbps) or nil, - down_mbps = (node.hysteria2_down_mbps and tonumber(node.hysteria2_down_mbps)) and tonumber(node.hysteria2_down_mbps) or nil, - obfs = { - type = node.hysteria2_obfs_type, - password = node.hysteria2_obfs_password - }, - password = node.hysteria2_auth_password or nil, - tls = { - enabled = true, - server_name = node.tls_serverName, - insecure = (node.tls_allowInsecure == "1") and true or false, - fragment = fragment, - record_fragment = record_fragment, - ech = { - enabled = (node.ech == "1") and true or false, - config = node.ech_config and split(node.ech_config:gsub("\\n", "\n"), "\n") or {}, - pq_signature_schemes_enabled = node.pq_signature_schemes_enabled and true or false, - dynamic_record_sizing_disabled = node.dynamic_record_sizing_disabled and true or false - } - } - } - end - - if node.protocol == "anytls" then - protocol_table = { - password = (node.password and node.password ~= "") and node.password or "", - idle_session_check_interval = "30s", - idle_session_timeout = "30s", - min_idle_session = 5, - tls = tls - } - end - - if node.protocol == "ssh" then - protocol_table = { - user = (node.username and node.username ~= "") and node.username or "root", - password = (node.password and node.password ~= "") and node.password or "", - private_key = node.ssh_priv_key, - private_key_passphrase = node.ssh_priv_key_pp, - host_key = node.ssh_host_key, - host_key_algorithms = node.ssh_host_key_algo, - client_version = node.ssh_client_version - } - end - - if protocol_table then - for key, value in pairs(protocol_table) do - result[key] = value - end - end - end - return result -end - -function gen_config_server(node) - local outbounds = { - { type = "direct", tag = "direct" } - } - - local tls = { - enabled = true, - certificate_path = node.tls_certificateFile, - key_path = node.tls_keyFile, - } - - if node.tls == "1" and node.reality == "1" then - tls.certificate_path = nil - tls.key_path = nil - tls.server_name = node.reality_handshake_server - tls.reality = { - enabled = true, - private_key = node.reality_private_key, - short_id = { - node.reality_shortId - }, - handshake = { - server = node.reality_handshake_server, - server_port = tonumber(node.reality_handshake_server_port) - } - } - end - - if node.tls == "1" and node.ech == "1" then - tls.ech = { - enabled = true, - key = node.ech_key and split(node.ech_key:gsub("\\n", "\n"), "\n") or {}, - pq_signature_schemes_enabled = (node.pq_signature_schemes_enabled == "1") and true or false, - dynamic_record_sizing_disabled = (node.dynamic_record_sizing_disabled == "1") and true or false, - } - end - - local mux = nil - if node.mux == "1" then - mux = { - enabled = true, - padding = (node.mux_padding == "1") and true or false, - brutal = { - enabled = (node.tcpbrutal == "1") and true or false, - up_mbps = tonumber(node.tcpbrutal_up_mbps) or 10, - down_mbps = tonumber(node.tcpbrutal_down_mbps) or 50, - }, - } - end - - local v2ray_transport = nil - - if node.transport == "http" then - v2ray_transport = { - type = "http", - host = node.http_host or {}, - path = node.http_path or "/", - } - end - - if node.transport == "ws" then - v2ray_transport = { - type = "ws", - path = node.ws_path or "/", - headers = (node.ws_host ~= nil) and { Host = node.ws_host } or nil, - early_data_header_name = (node.ws_earlyDataHeaderName) and node.ws_earlyDataHeaderName or nil -- For compatibility with Xray-core, set it to Sec-WebSocket-Protocol. It needs to be consistent with the server. - } - end - - if node.transport == "httpupgrade" then - v2ray_transport = { - type = "httpupgrade", - host = node.httpupgrade_host, - path = node.httpupgrade_path or "/", - } - end - - if node.transport == "quic" then - v2ray_transport = { - type = "quic" - } - -- There is no additional encryption support: it's essentially re-encryption. And Xray-core is incompatible with v2ray-core here. - end - - if node.transport == "grpc" then - v2ray_transport = { - type = "grpc", - service_name = node.grpc_serviceName, - } - end - - local inbound = { - type = node.protocol, - tag = "inbound", - listen = (node.bind_local == "1") and "127.0.0.1" or "::", - listen_port = tonumber(node.port), - } - - local protocol_table = nil - - if node.protocol == "mixed" then - protocol_table = { - users = (node.auth == "1") and { - { - username = node.username, - password = node.password - } - } or nil, - set_system_proxy = false - } - end - - if node.protocol == "socks" then - protocol_table = { - users = (node.auth == "1") and { - { - username = node.username, - password = node.password - } - } or nil - } - end - - if node.protocol == "http" then - protocol_table = { - users = (node.auth == "1") and { - { - username = node.username, - password = node.password - } - } or nil, - tls = (node.tls == "1") and tls or nil, - } - end - - if node.protocol == "shadowsocks" then - protocol_table = { - method = node.method, - password = node.password, - multiplex = mux, - } - end - - if node.protocol == "vmess" then - if node.uuid then - local users = {} - for i = 1, #node.uuid do - users[i] = { - name = node.uuid[i], - uuid = node.uuid[i], - alterId = 0, - } - end - protocol_table = { - users = users, - tls = (node.tls == "1") and tls or nil, - multiplex = mux, - transport = v2ray_transport, - } - end - end - - if node.protocol == "vless" then - if node.uuid then - local users = {} - for i = 1, #node.uuid do - users[i] = { - name = node.uuid[i], - uuid = node.uuid[i], - flow = node.flow, - } - end - protocol_table = { - users = users, - tls = (node.tls == "1") and tls or nil, - multiplex = mux, - transport = v2ray_transport, - } - end - end - - if node.protocol == "trojan" then - if node.uuid then - local users = {} - for i = 1, #node.uuid do - users[i] = { - name = node.uuid[i], - password = node.uuid[i], - } - end - protocol_table = { - users = users, - tls = (node.tls == "1") and tls or nil, - fallback = nil, - fallback_for_alpn = nil, - multiplex = mux, - transport = v2ray_transport, - } - end - end - - if node.protocol == "naive" then - protocol_table = { - users = { - { - username = node.username, - password = node.password - } - }, - tls = tls - } - end - - if node.protocol == "hysteria" then - tls.alpn = (node.hysteria_alpn and node.hysteria_alpn ~= "") and { - node.hysteria_alpn - } or nil - protocol_table = { - up = node.hysteria_up_mbps .. " Mbps", - down = node.hysteria_down_mbps .. " Mbps", - up_mbps = tonumber(node.hysteria_up_mbps), - down_mbps = tonumber(node.hysteria_down_mbps), - obfs = node.hysteria_obfs, - users = { - { - name = "user1", - auth = (node.hysteria_auth_type == "base64") and node.hysteria_auth_password or nil, - auth_str = (node.hysteria_auth_type == "string") and node.hysteria_auth_password or nil, - } - }, - recv_window_conn = node.hysteria_recv_window_conn and tonumber(node.hysteria_recv_window_conn) or nil, - recv_window_client = node.hysteria_recv_window_client and tonumber(node.hysteria_recv_window_client) or nil, - max_conn_client = node.hysteria_max_conn_client and tonumber(node.hysteria_max_conn_client) or nil, - disable_mtu_discovery = (node.hysteria_disable_mtu_discovery == "1") and true or false, - tls = tls - } - end - - if node.protocol == "tuic" then - tls.alpn = (node.tuic_alpn and node.tuic_alpn ~= "") and { - node.tuic_alpn - } or nil - protocol_table = { - users = { - { - name = "user1", - uuid = node.uuid, - password = node.password - } - }, - congestion_control = node.tuic_congestion_control or "cubic", - zero_rtt_handshake = (node.tuic_zero_rtt_handshake == "1") and true or false, - heartbeat = node.tuic_heartbeat .. "s", - tls = tls - } - end - - if node.protocol == "hysteria2" then - protocol_table = { - up_mbps = (node.hysteria2_ignore_client_bandwidth ~= "1" and node.hysteria2_up_mbps and tonumber(node.hysteria2_up_mbps)) and tonumber(node.hysteria2_up_mbps) or nil, - down_mbps = (node.hysteria2_ignore_client_bandwidth ~= "1" and node.hysteria2_down_mbps and tonumber(node.hysteria2_down_mbps)) and tonumber(node.hysteria2_down_mbps) or nil, - obfs = { - type = node.hysteria2_obfs_type, - password = node.hysteria2_obfs_password - }, - users = { - { - name = "user1", - password = node.hysteria2_auth_password or nil, - } - }, - ignore_client_bandwidth = (node.hysteria2_ignore_client_bandwidth == "1") and true or false, - tls = tls - } - end - - if node.protocol == "anytls" then - protocol_table = { - users = { - { - name = (node.username and node.username ~= "") and node.username or "sekai", - password = node.password - } - }, - tls = tls, - } - end - - if node.protocol == "direct" then - protocol_table = { - network = (node.d_protocol ~= "TCP,UDP") and node.d_protocol or nil, - override_address = node.d_address, - override_port = tonumber(node.d_port) - } - end - - if protocol_table then - for key, value in pairs(protocol_table) do - inbound[key] = value - end - end - - local route = { - rules = { - { - ip_is_private = true, - action = node.accept_lan == "1" and "route" or "reject", - outbound = node.accept_lan == "1" and "direct" or nil - } - } - } - - if node.outbound_node then - local outbound = nil - if node.outbound_node == "_iface" and node.outbound_node_iface then - outbound = { - type = "direct", - tag = "outbound", - bind_interface = node.outbound_node_iface, - routing_mark = 255, - } - sys.call(string.format("mkdir -p %s && touch %s/%s", api.TMP_IFACE_PATH, api.TMP_IFACE_PATH, node.outbound_node_iface)) - else - local outbound_node_t = uci:get_all("passwall2", node.outbound_node) - if node.outbound_node == "_socks" or node.outbound_node == "_http" then - outbound_node_t = { - type = node.type, - protocol = node.outbound_node:gsub("_", ""), - address = node.outbound_node_address, - port = tonumber(node.outbound_node_port), - username = (node.outbound_node_username and node.outbound_node_username ~= "") and node.outbound_node_username or nil, - password = (node.outbound_node_password and node.outbound_node_password ~= "") and node.outbound_node_password or nil, - } - end - outbound = require("luci.passwall2.util_sing-box").gen_outbound(nil, outbound_node_t, "outbound") - end - if outbound then - route.final = "outbound" - table.insert(outbounds, 1, outbound) - end - end - - local config = { - log = { - disabled = (not node or node.log == "0") and true or false, - level = node.loglevel or "info", - timestamp = true, - --output = logfile, - }, - inbounds = { inbound }, - outbounds = outbounds, - route = route - } - - for index, value in ipairs(config.outbounds) do - for k, v in pairs(config.outbounds[index]) do - if k:find("_") == 1 then - config.outbounds[index][k] = nil - end - end - end - - return config -end - -function gen_config(var) - local flag = var["-flag"] - local log = var["-log"] or "0" - local loglevel = var["-loglevel"] or "warn" - local logfile = var["-logfile"] or "/dev/null" - local node_id = var["-node"] - local server_host = var["-server_host"] - local server_port = var["-server_port"] - local tcp_proxy_way = var["-tcp_proxy_way"] - local redir_port = var["-redir_port"] - local local_socks_address = var["-local_socks_address"] or "0.0.0.0" - local local_socks_port = var["-local_socks_port"] - local local_socks_username = var["-local_socks_username"] - local local_socks_password = var["-local_socks_password"] - local local_http_address = var["-local_http_address"] or "0.0.0.0" - local local_http_port = var["-local_http_port"] - local local_http_username = var["-local_http_username"] - local local_http_password = var["-local_http_password"] - local dns_listen_port = var["-dns_listen_port"] - local direct_dns_udp_server = var["-direct_dns_udp_server"] - local direct_dns_udp_port = var["-direct_dns_udp_port"] - local direct_dns_query_strategy = var["-direct_dns_query_strategy"] - local direct_ipset = var["-direct_ipset"] - local direct_nftset = var["-direct_nftset"] - local remote_dns_udp_server = var["-remote_dns_udp_server"] - local remote_dns_udp_port = var["-remote_dns_udp_port"] - local remote_dns_tcp_server = var["-remote_dns_tcp_server"] - local remote_dns_tcp_port = var["-remote_dns_tcp_port"] - local remote_dns_doh_url = var["-remote_dns_doh_url"] - local remote_dns_doh_host = var["-remote_dns_doh_host"] - local remote_dns_doh_ip = var["-remote_dns_doh_ip"] - local remote_dns_doh_port = var["-remote_dns_doh_port"] - local remote_dns_detour = var["-remote_dns_detour"] - local remote_dns_query_strategy = var["-remote_dns_query_strategy"] - local remote_dns_fake = var["-remote_dns_fake"] - local remote_dns_client_ip = var["-remote_dns_client_ip"] - local dns_cache = var["-dns_cache"] - local tags = var["-tags"] - local no_run = var["-no_run"] - - local dns_domain_rules = {} - local dns = nil - local inbounds = {} - local outbounds = {} - local rule_set_table = {} - local COMMON = {} - - local CACHE_TEXT_FILE = CACHE_PATH .. "/cache_" .. flag .. ".txt" - - local singbox_settings = uci:get_all(appname, "@global_singbox[0]") or {} - - local route = { - rules = {} - } - - local experimental = nil - - function rule_set_add(w) - local result = nil - if w and #w > 0 then - if w:find("local:") == 1 or w:find("remote:") == 1 then - local _type = w:sub(1, w:find(":") - 1) - w = w:sub(w:find(":") + 1, #w) - local format = nil - local filename = w:sub(-w:reverse():find("/") + 1) - local suffix = "" - local find_doc = filename:reverse():find("%.") - if find_doc then - suffix = filename:sub(-find_doc + 1) - end - if suffix == "srs" then - format = "binary" - elseif suffix == "json" then - format = "source" - end - if format then - local rule_set_tag = filename:sub(1, filename:find("%.") - 1) - if not rule_set_table[rule_set_tag] then - local t = { - type = _type, - tag = rule_set_tag, - format = format, - path = _type == "local" and w or nil, - url = _type == "remote" and w or nil, - --download_detour = _type == "remote" and "", - --update_interval = _type == "remote" and "", - } - rule_set_table[rule_set_tag] = t - result = t - end - end - end - end - return result - end - - local node = nil - if node_id then - node = uci:get_all(appname, node_id) - end - - if local_socks_port then - local inbound = { - type = "socks", - tag = "socks-in", - listen = local_socks_address, - listen_port = tonumber(local_socks_port), - sniff = true - } - if local_socks_username and local_socks_password and local_socks_username ~= "" and local_socks_password ~= "" then - inbound.users = { - { - username = local_socks_username, - password = local_socks_password - } - } - end - table.insert(inbounds, inbound) - end - - if local_http_port then - local inbound = { - type = "http", - tag = "http-in", - listen = local_http_address, - listen_port = tonumber(local_http_port) - } - if local_http_username and local_http_password and local_http_username ~= "" and local_http_password ~= "" then - inbound.users = { - { - username = local_http_username, - password = local_http_password - } - } - end - table.insert(inbounds, inbound) - end - - if redir_port then - local inbound_tproxy = { - type = "tproxy", - tag = "tproxy", - listen = "::", - listen_port = tonumber(redir_port), - sniff = true, - sniff_override_destination = (singbox_settings.sniff_override_destination == "1") and true or false - } - if tcp_proxy_way ~= "tproxy" then - local inbound = { - type = "redirect", - tag = "redirect_tcp", - listen = "::", - listen_port = tonumber(redir_port), - sniff = true, - sniff_override_destination = (singbox_settings.sniff_override_destination == "1") and true or false, - } - table.insert(inbounds, inbound) - - inbound_tproxy.tag = "tproxy_udp" - inbound_tproxy.network = "udp" - end - - table.insert(inbounds, inbound_tproxy) - end - - if node then - if server_host and server_port then - node.address = server_host - node.port = server_port - end - - local function gen_urltest(_node) - local urltest_id = _node[".name"] - local urltest_tag = "urltest-" .. urltest_id - -- existing urltest - for _, v in ipairs(outbounds) do - if v.tag == urltest_tag then - return urltest_tag - end - end - -- new urltest - local ut_nodes = _node.urltest_node - local valid_nodes = {} - for i = 1, #ut_nodes do - local ut_node_id = ut_nodes[i] - local ut_node_tag = "ut-" .. ut_node_id - local is_new_ut_node = true - for _, outbound in ipairs(outbounds) do - if string.sub(outbound.tag, 1, #ut_node_tag) == ut_node_tag then - is_new_ut_node = false - valid_nodes[#valid_nodes + 1] = outbound.tag - break - end - end - if is_new_ut_node then - local ut_node - if ut_node_id:find("Socks_") then - local socks_id = ut_node_id:sub(1 + #"Socks_") - local socks_node = uci:get_all(appname, socks_id) or nil - if socks_node then - ut_node = { - type = "sing-box", - protocol = "socks", - address = "127.0.0.1", - port = socks_node.port, - uot = "1", - remarks = "Socks_" .. socks_node.port - } - end - else - ut_node = uci:get_all(appname, ut_node_id) - end - if ut_node then - local outbound = gen_outbound(flag, ut_node, ut_node_tag, { fragment = singbox_settings.fragment == "1" or nil, record_fragment = singbox_settings.record_fragment == "1" or nil, run_socks_instance = not no_run }) - if outbound then - outbound.tag = outbound.tag .. ":" .. ut_node.remarks - table.insert(outbounds, outbound) - valid_nodes[#valid_nodes + 1] = outbound.tag - end - end - end - end - if #valid_nodes == 0 then return nil end - local outbound = { - type = "urltest", - tag = urltest_tag, - outbounds = valid_nodes, - url = _node.urltest_url or "https://www.gstatic.com/generate_204", - interval = (api.format_go_time(_node.urltest_interval) ~= "0s") and api.format_go_time(_node.urltest_interval) or "3m", - tolerance = (_node.urltest_tolerance and tonumber(_node.urltest_tolerance) > 0) and tonumber(_node.urltest_tolerance) or 50, - idle_timeout = (api.format_go_time(_node.urltest_idle_timeout) ~= "0s") and api.format_go_time(_node.urltest_idle_timeout) or "30m", - interrupt_exist_connections = (_node.urltest_interrupt_exist_connections == "true" or _node.urltest_interrupt_exist_connections == "1") and true or false - } - table.insert(outbounds, outbound) - return urltest_tag - end - - local function set_outbound_detour(node, outbound, outbounds_table, shunt_rule_name) - if not node or not outbound or not outbounds_table then return nil end - local default_outTag = outbound.tag - local last_insert_outbound - - if node.shadowtls == "1" then - local _node = { - type = "sing-box", - protocol = "shadowtls", - shadowtls_version = node.shadowtls_version, - password = (node.shadowtls_version == "2" or node.shadowtls_version == "3") and node.shadowtls_password or nil, - address = node.address, - port = node.port, - tls = "1", - tls_serverName = node.shadowtls_serverName, - utls = node.shadowtls_utls, - fingerprint = node.shadowtls_fingerprint - } - local shadowtls_outbound = gen_outbound(nil, _node, outbound.tag .. "_shadowtls") - if shadowtls_outbound then - last_insert_outbound = shadowtls_outbound - outbound.detour = outbound.tag .. "_shadowtls" - outbound.server = nil - outbound.server_port = nil - end - end - - if node.chain_proxy == "1" and node.preproxy_node then - if outbound["_flag_proxy_tag"] then - --Ignore - else - local preproxy_node = uci:get_all(appname, node.preproxy_node) - if preproxy_node then - local preproxy_outbound = gen_outbound(nil, preproxy_node) - if preproxy_outbound then - preproxy_outbound.tag = preproxy_node[".name"] .. ":" .. preproxy_node.remarks - outbound.tag = preproxy_outbound.tag .. " -> " .. outbound.tag - outbound.detour = preproxy_outbound.tag - last_insert_outbound = preproxy_outbound - default_outTag = outbound.tag - end - end - end - end - if node.chain_proxy == "2" and node.to_node then - local to_node = uci:get_all(appname, node.to_node) - if to_node then - local to_outbound = gen_outbound(nil, to_node) - if to_outbound then - if shunt_rule_name then - to_outbound.tag = outbound.tag - outbound.tag = node[".name"] - else - to_outbound.tag = outbound.tag .. " -> " .. to_outbound.tag - end - - to_outbound.detour = outbound.tag - table.insert(outbounds_table, to_outbound) - default_outTag = to_outbound.tag - end - end - end - return default_outTag, last_insert_outbound - end - - if node.protocol == "_shunt" then - local rules = {} - - local preproxy_rule_name = node.preproxy_enabled == "1" and "main" or nil - local preproxy_tag = preproxy_rule_name - local preproxy_node_id = preproxy_rule_name and node["main_node"] or nil - - local function gen_shunt_node(rule_name, _node_id) - if not rule_name then return nil end - if not _node_id then _node_id = node[rule_name] end - local rule_outboundTag - if _node_id == "_direct" then - rule_outboundTag = "direct" - elseif _node_id == "_blackhole" then - rule_outboundTag = "block" - elseif _node_id == "_default" and rule_name ~= "default" then - rule_outboundTag = "default" - elseif _node_id and _node_id:find("Socks_") then - local socks_id = _node_id:sub(1 + #"Socks_") - local socks_node = uci:get_all(appname, socks_id) or nil - if socks_node then - local _node = { - type = "sing-box", - protocol = "socks", - address = "127.0.0.1", - port = socks_node.port, - uot = "1", - } - local _outbound = gen_outbound(flag, _node, rule_name) - if _outbound then - table.insert(outbounds, _outbound) - rule_outboundTag = _outbound.tag - end - end - elseif _node_id then - local _node = uci:get_all(appname, _node_id) - if not _node then return nil end - - if api.is_normal_node(_node) then - local use_proxy = preproxy_tag and node[rule_name .. "_proxy_tag"] == preproxy_rule_name and _node_id ~= preproxy_node_id - local copied_outbound - for index, value in ipairs(outbounds) do - if value["_id"] == _node_id and value["_flag_proxy_tag"] == (use_proxy and preproxy_tag or nil) then - copied_outbound = api.clone(value) - break - end - end - if copied_outbound then - copied_outbound.tag = rule_name .. ":" .. _node.remarks - table.insert(outbounds, copied_outbound) - rule_outboundTag = copied_outbound.tag - else - if use_proxy then - local pre_proxy = nil - if _node.type ~= "sing-box" then - pre_proxy = true - end - if pre_proxy then - new_port = get_new_port() - table.insert(inbounds, { - type = "direct", - tag = "proxy_" .. rule_name, - listen = "127.0.0.1", - listen_port = new_port, - override_address = _node.address, - override_port = tonumber(_node.port), - }) - if _node.tls_serverName == nil then - _node.tls_serverName = _node.address - end - _node.address = "127.0.0.1" - _node.port = new_port - table.insert(rules, 1, { - inbound = {"proxy_" .. rule_name}, - outbound = preproxy_tag, - }) - end - end - local proxy_table = { - tag = use_proxy and preproxy_tag or nil, - run_socks_instance = not no_run - } - if not proxy_table.tag then - if singbox_settings.fragment == "1" then - proxy_table.fragment = true - end - if singbox_settings.record_fragment == "1" then - proxy_table.record_fragment = true - end - end - local _outbound = gen_outbound(flag, _node, rule_name, proxy_table) - if _outbound then - _outbound.tag = _outbound.tag .. ":" .. _node.remarks - rule_outboundTag, last_insert_outbound = set_outbound_detour(_node, _outbound, outbounds, rule_name) - table.insert(outbounds, _outbound) - if last_insert_outbound then - table.insert(outbounds, last_insert_outbound) - end - end - end - elseif _node.protocol == "_urltest" then - rule_outboundTag = gen_urltest(_node) - elseif _node.protocol == "_iface" then - if _node.iface then - local _outbound = { - type = "direct", - tag = rule_name .. ":" .. _node.remarks, - bind_interface = _node.iface, - routing_mark = 255, - } - table.insert(outbounds, _outbound) - rule_outboundTag = _outbound.tag - sys.call(string.format("mkdir -p %s && touch %s/%s", api.TMP_IFACE_PATH, api.TMP_IFACE_PATH, _node.iface)) - end - end - end - return rule_outboundTag - end - - if preproxy_tag and preproxy_node_id then - local preproxy_outboundTag = gen_shunt_node(preproxy_rule_name, preproxy_node_id) - if preproxy_outboundTag then - preproxy_tag = preproxy_outboundTag - end - end - --default_node - local default_node_id = node.default_node or "_direct" - COMMON.default_outbound_tag = gen_shunt_node("default", default_node_id) - --shunt rule - uci:foreach(appname, "shunt_rules", function(e) - local outboundTag = gen_shunt_node(e[".name"]) - if outboundTag and e.remarks then - if outboundTag == "default" then - outboundTag = COMMON.default_outbound_tag - end - local protocols = nil - if e["protocol"] and e["protocol"] ~= "" then - protocols = {} - string.gsub(e["protocol"], '[^' .. " " .. ']+', function(w) - table.insert(protocols, w) - end) - end - - local inboundTag = nil - if e["inbound"] and e["inbound"] ~= "" then - inboundTag = {} - if e["inbound"]:find("tproxy") then - if redir_port then - if tcp_proxy_way == "tproxy" then - table.insert(inboundTag, "tproxy") - else - table.insert(inboundTag, "redirect_tcp") - table.insert(inboundTag, "tproxy_udp") - end - end - end - if e["inbound"]:find("socks") then - if local_socks_port then - table.insert(inboundTag, "socks-in") - end - end - end - - local rule = { - inbound = inboundTag, - outbound = outboundTag, - protocol = protocols - } - - if e.network then - local network = {} - string.gsub(e.network, '[^' .. "," .. ']+', function(w) - table.insert(network, w) - end) - rule.network = network - end - - if e.source then - local source_ip_cidr = {} - local source_is_private = false - string.gsub(e.source, '[^' .. " " .. ']+', function(w) - if w:find("geoip:") == 1 then - local _geoip = w:sub(1 + #"geoip:") - if _geoip == "private" then - source_is_private = true - end - else - table.insert(source_ip_cidr, w) - end - end) - rule.source_ip_cidr = #source_ip_cidr > 0 and source_ip_cidr or nil - rule.source_ip_is_private = source_is_private and true or nil - end - - if e.sourcePort then - local source_port = {} - local source_port_range = {} - string.gsub(e.sourcePort, '[^' .. "," .. ']+', function(w) - if tonumber(w) and tonumber(w) >= 1 and tonumber(w) <= 65535 then - table.insert(source_port, tonumber(w)) - else - table.insert(source_port_range, w) - end - end) - rule.source_port = #source_port > 0 and source_port or nil - rule.source_port_range = #source_port_range > 0 and source_port_range or nil - end - - if e.port then - local port = {} - local port_range = {} - string.gsub(e.port, '[^' .. "," .. ']+', function(w) - if tonumber(w) and tonumber(w) >= 1 and tonumber(w) <= 65535 then - table.insert(port, tonumber(w)) - else - table.insert(port_range, w) - end - end) - rule.port = #port > 0 and port or nil - rule.port_range = #port_range > 0 and port_range or nil - end - - local rule_set = {} - - if e.domain_list then - local domain_table = { - outboundTag = outboundTag, - domain = {}, - domain_suffix = {}, - domain_keyword = {}, - domain_regex = {}, - rule_set = {}, - invert = e.invert == "1" and true or nil - } - string.gsub(e.domain_list, '[^' .. "\r\n" .. ']+', function(w) - if w:find("#") == 1 then return end - if w:find("geosite:") == 1 then - local _geosite = w:sub(1 + #"geosite:") - local t = rule_set_add("local:" .. srss_path .. "geosite-" .. _geosite .. ".srs") - if t then - geosite_all_tag[_geosite] = true - table.insert(rule_set, t.tag) - table.insert(domain_table.rule_set, t.tag) - end - elseif w:find("regexp:") == 1 then - table.insert(domain_table.domain_regex, w:sub(1 + #"regexp:")) - elseif w:find("full:") == 1 then - table.insert(domain_table.domain, w:sub(1 + #"full:")) - elseif w:find("domain:") == 1 then - table.insert(domain_table.domain_suffix, w:sub(1 + #"domain:")) - elseif w:find("rule-set:", 1, true) == 1 or w:find("rs:") == 1 then - w = w:sub(w:find(":") + 1, #w) - local t = rule_set_add(w) - if t then - table.insert(rule_set, t.tag) - table.insert(domain_table.rule_set, t.tag) - end - else - table.insert(domain_table.domain_keyword, w) - end - end) - rule.domain = #domain_table.domain > 0 and domain_table.domain or nil - rule.domain_suffix = #domain_table.domain_suffix > 0 and domain_table.domain_suffix or nil - rule.domain_keyword = #domain_table.domain_keyword > 0 and domain_table.domain_keyword or nil - rule.domain_regex = #domain_table.domain_regex > 0 and domain_table.domain_regex or nil - rule.rule_set = #domain_table.rule_set > 0 and domain_table.rule_set or nil - - if outboundTag then - table.insert(dns_domain_rules, api.clone(domain_table)) - end - end - - if e.ip_list then - local ip_cidr = {} - local is_private = false - string.gsub(e.ip_list, '[^' .. "\r\n" .. ']+', function(w) - if w:find("#") == 1 then return end - if w:find("geoip:") == 1 then - local _geoip = w:sub(1 + #"geoip:") - if _geoip == "private" then - is_private = true - else - local t = rule_set_add("local:" .. srss_path .. "geoip-" .. _geoip .. ".srs") - if t then - geoip_all_tag[_geoip] = true - table.insert(rule_set, t.tag) - end - end - elseif w:find("rule-set:", 1, true) == 1 or w:find("rs:") == 1 then - w = w:sub(w:find(":") + 1, #w) - local t = rule_set_add(w) - if t then - table.insert(rule_set, t.tag) - end - else - table.insert(ip_cidr, w) - end - end) - - rule.ip_is_private = is_private and true or nil - rule.ip_cidr = #ip_cidr > 0 and ip_cidr or nil - end - rule.rule_set = #rule_set > 0 and rule_set or nil - rule.invert = e.invert == "1" and true or nil - - table.insert(rules, rule) - end - end) - - for index, value in ipairs(rules) do - table.insert(route.rules, rules[index]) - end - elseif node.protocol == "_urltest" then - if node.urltest_node then - COMMON.default_outbound_tag = gen_urltest(node) - end - elseif node.protocol == "_iface" then - if node.iface then - local outbound = { - type = "direct", - tag = node.remarks or node_id, - bind_interface = node.iface, - routing_mark = 255, - } - table.insert(outbounds, outbound) - COMMON.default_outbound_tag = outbound.tag - sys.call(string.format("mkdir -p %s && touch %s/%s", api.TMP_IFACE_PATH, api.TMP_IFACE_PATH, node.iface)) - end - else - local outbound = gen_outbound(flag, node, nil, { fragment = singbox_settings.fragment == "1" or nil, record_fragment = singbox_settings.record_fragment == "1" or nil, run_socks_instance = not no_run }) - if outbound then - outbound.tag = outbound.tag .. ":" .. node.remarks - COMMON.default_outbound_tag, last_insert_outbound = set_outbound_detour(node, outbound, outbounds) - table.insert(outbounds, outbound) - if last_insert_outbound then - table.insert(outbounds, last_insert_outbound) - end - end - end - end - - if COMMON.default_outbound_tag then - route.final = COMMON.default_outbound_tag - end - - if dns_listen_port then - dns = { - servers = {}, - rules = {}, - disable_cache = (dns_cache and dns_cache == "0") and true or false, - disable_expire = false, -- Disable DNS cache expiration. - independent_cache = false, -- Make each DNS server's cache independent for specific purposes. If enabled, it will slightly reduce performance. - reverse_mapping = true, -- After responding to a DNS query, a reverse mapping of the IP address is stored to provide the domain name for routing purposes. - fakeip = nil, - } - - table.insert(dns.servers, { - tag = "block", - address = "rcode://success", - }) - - local remote_strategy = "prefer_ipv6" - if remote_dns_query_strategy == "UseIPv4" then - remote_strategy = "ipv4_only" - elseif remote_dns_query_strategy == "UseIPv6" then - remote_strategy = "ipv6_only" - end - - local remote_server = { - tag = "remote", - address_strategy = "prefer_ipv4", - strategy = remote_strategy, - address_resolver = "direct", - detour = COMMON.default_outbound_tag, - client_subnet = (remote_dns_client_ip and remote_dns_client_ip ~= "") and remote_dns_client_ip or nil, - } - - if remote_dns_detour == "direct" then - remote_server.detour = "direct" - end - - if remote_dns_udp_server then - local server_port = tonumber(remote_dns_udp_port) or 53 - remote_server.address = "udp://" .. remote_dns_udp_server .. ":" .. server_port - end - - if remote_dns_tcp_server then - local server_port = tonumber(remote_dns_tcp_port) or 53 - remote_server.address = "tcp://" .. remote_dns_tcp_server .. ":" .. server_port - end - - if remote_dns_doh_url then - remote_server.address = remote_dns_doh_url - end - - if remote_server.address then - table.insert(dns.servers, remote_server) - end - - local fakedns_tag = "remote_fakeip" - if remote_dns_fake then - dns.fakeip = { - enabled = true, - inet4_range = "198.18.0.0/16", - inet6_range = "fc00::/18", - } - - table.insert(dns.servers, { - tag = fakedns_tag, - address = "fakeip", - strategy = remote_strategy, - }) - - if not experimental then - experimental = {} - end - experimental.cache_file = { - enabled = true, - store_fakeip = true, - path = CACHE_PATH .. "/singbox_" .. flag .. ".db" - } - end - - if direct_dns_udp_server then - local domain = {} - local nodes_domain_text = sys.exec('uci show passwall2 | grep ".address=" | cut -d "\'" -f 2 | grep "[a-zA-Z]$" | sort -u') - string.gsub(nodes_domain_text, '[^' .. "\r\n" .. ']+', function(w) - table.insert(domain, w) - end) - if #domain > 0 then - table.insert(dns_domain_rules, 1, { - outboundTag = "direct", - domain = domain - }) - end - - local direct_strategy = "prefer_ipv6" - if direct_dns_query_strategy == "UseIPv4" then - direct_strategy = "ipv4_only" - elseif direct_dns_query_strategy == "UseIPv6" then - direct_strategy = "ipv6_only" - end - - local port = tonumber(direct_dns_udp_port) or 53 - - table.insert(dns.servers, { - tag = "direct", - address = "udp://" .. direct_dns_udp_server .. ":" .. port, - address_strategy = "prefer_ipv6", - strategy = direct_strategy, - detour = "direct", - }) - end - - local default_dns_flag = "remote" - if node_id and redir_port then - local node = uci:get_all(appname, node_id) - if node.protocol == "_shunt" then - if node.default_node == "_direct" then - default_dns_flag = "direct" - end - end - else default_dns_flag = "direct" - end - dns.final = default_dns_flag - - -- DNS in order of shunt - if dns_domain_rules and #dns_domain_rules > 0 then - for index, value in ipairs(dns_domain_rules) do - if value.outboundTag and (value.domain or value.domain_suffix or value.domain_keyword or value.domain_regex or value.rule_set) then - local dns_rule = { - server = value.outboundTag, - domain = (value.domain and #value.domain > 0) and value.domain or nil, - domain_suffix = (value.domain_suffix and #value.domain_suffix > 0) and value.domain_suffix or nil, - domain_keyword = (value.domain_keyword and #value.domain_keyword > 0) and value.domain_keyword or nil, - domain_regex = (value.domain_regex and #value.domain_regex > 0) and value.domain_regex or nil, - rule_set = (value.rule_set and #value.rule_set > 0) and value.rule_set or nil, - disable_cache = false, - invert = value.invert, - } - if value.outboundTag ~= "block" and value.outboundTag ~= "direct" then - dns_rule.server = "remote" - dns_rule.rewrite_ttl = 30 - if value.outboundTag ~= COMMON.default_outbound_tag and remote_server.address and remote_dns_detour ~= "direct" then - local remote_dns_server = api.clone(remote_server) - remote_dns_server.tag = value.outboundTag - remote_dns_server.detour = value.outboundTag - table.insert(dns.servers, remote_dns_server) - dns_rule.server = remote_dns_server.tag - end - if remote_dns_fake then - local fakedns_dns_rule = api.clone(dns_rule) - fakedns_dns_rule.query_type = { - "A", "AAAA" - } - fakedns_dns_rule.server = fakedns_tag - fakedns_dns_rule.disable_cache = true - fakedns_dns_rule.client_subnet = nil - table.insert(dns.rules, fakedns_dns_rule) - end - end - table.insert(dns.rules, dns_rule) - end - end - end - - if remote_dns_fake and default_dns_flag == "remote" then - -- When default is not direct and enable fakedns, default DNS use FakeDNS. - local fakedns_dns_rule = { - query_type = { - "A", "AAAA" - }, - server = fakedns_tag, - disable_cache = true - } - table.insert(dns.rules, fakedns_dns_rule) - end - - table.insert(inbounds, { - type = "direct", - tag = "dns-in", - listen = "127.0.0.1", - listen_port = tonumber(dns_listen_port), - sniff = true, - }) - table.insert(outbounds, { - type = "dns", - tag = "dns-out", - }) - table.insert(route.rules, 1, { - protocol = "dns", - inbound = { - "dns-in" - }, - outbound = "dns-out" - }) - - local content = flag .. node_id .. jsonc.stringify(route.rules) - if api.cacheFileCompareToLogic(CACHE_TEXT_FILE, content) == false then - --clear ipset/nftset - if direct_ipset then - string.gsub(direct_ipset, '[^' .. "," .. ']+', function(w) - sys.call("ipset -q -F " .. w) - end) - local ipset_prefix_name = "passwall2_" .. node_id .. "_" - local ipset_list = sys.exec("ipset list | grep 'Name: ' | grep '" .. ipset_prefix_name .. "' | awk '{print $2}'") - string.gsub(ipset_list, '[^' .. "\r\n" .. ']+', function(w) - sys.call("ipset -q -F " .. w) - end) - end - if direct_nftset then - string.gsub(direct_nftset, '[^' .. "," .. ']+', function(w) - local split = api.split(w, "#") - if #split > 3 then - local ip_type = split[1] - local family = split[2] - local table_name = split[3] - local set_name = split[4] - sys.call(string.format("nft flush set %s %s %s 2>/dev/null", family, table_name, set_name)) - end - end) - local family = "inet" - local table_name = "passwall2" - local nftset_prefix_name = "passwall2_" .. node_id .. "_" - local nftset_list = sys.exec("nft -a list sets | grep -E '" .. nftset_prefix_name .. "' | awk -F 'set ' '{print $2}' | awk '{print $1}'") - string.gsub(nftset_list, '[^' .. "\r\n" .. ']+', function(w) - sys.call(string.format("nft flush set %s %s %s 2>/dev/null", family, table_name, w)) - end) - end - end - end - - if next(rule_set_table) then - route.rule_set = {} - for k, v in pairs(rule_set_table) do - table.insert(route.rule_set, v) - end - end - - if inbounds or outbounds then - local config = { - log = { - disabled = log == "0" and true or false, - level = loglevel, - timestamp = true, - output = logfile, - }, - dns = dns, - inbounds = inbounds, - outbounds = outbounds, - route = route, - experimental = experimental, - } - table.insert(outbounds, { - type = "direct", - tag = "direct", - routing_mark = 255, - domain_strategy = "prefer_ipv6", - }) - table.insert(outbounds, { - type = "block", - tag = "block" - }) - for index, value in ipairs(config.outbounds) do - if not value["_flag_proxy_tag"] and not value.detour and value["_id"] and value.server and value.server_port and not no_run then - sys.call(string.format("echo '%s' >> %s", value["_id"], api.TMP_PATH .. "/direct_node_list")) - end - for k, v in pairs(config.outbounds[index]) do - if k:find("_") == 1 then - config.outbounds[index][k] = nil - end - end - end - if version_ge_1_11_0 then - -- Migrate logics - -- https://sing-box.sagernet.org/migration/ - local endpoints = {} - for i = #config.outbounds, 1, -1 do - local value = config.outbounds[i] - if value.type == "wireguard" then - -- https://sing-box.sagernet.org/migration/#migrate-wireguard-outbound-to-endpoint - local endpoint = { - type = "wireguard", - tag = value.tag, - system = value.system_interface, - name = value.interface_name, - mtu = value.mtu, - address = value.local_address, - private_key = value.private_key, - peers = { - { - address = value.server, - port = value.server_port, - public_key = value.peer_public_key, - pre_shared_key = value.pre_shared_key, - allowed_ips = {"0.0.0.0/0"}, - reserved = value.reserved - } - }, - domain_strategy = value.domain_strategy, - detour = value.detour - } - endpoints[#endpoints + 1] = endpoint - table.remove(config.outbounds, i) - end - if value.type == "block" or value.type == "dns" then - -- https://sing-box.sagernet.org/migration/#migrate-legacy-special-outbounds-to-rule-actions - table.remove(config.outbounds, i) - end - end - if #endpoints > 0 then - config.endpoints = endpoints - end - - -- https://sing-box.sagernet.org/migration/#migrate-legacy-special-outbounds-to-rule-actions - for i = #config.route.rules, 1, -1 do - local value = config.route.rules[i] - if value.outbound == "block" then - value.action = "reject" - value.outbound = nil - elseif value.outbound == "dns-out" then - value.action = "hijack-dns" - value.outbound = nil - else - value.action = "route" - end - end - - -- https://sing-box.sagernet.org/migration/#migrate-legacy-inbound-fields-to-rule-actions - for i = #config.inbounds, 1, -1 do - local value = config.inbounds[i] - if value.sniff == true then - table.insert(config.route.rules, 1, { - inbound = value.tag, - action = "sniff" - }) - value.sniff = nil - value.sniff_override_destination = nil - end - if value.domain_strategy then - table.insert(config.route.rules, 1, { - inbound = value.tag, - action = "resolve", - strategy = value.domain_strategy, - --server = "" - }) - value.domain_strategy = nil - end - end - - if config.route.final == "block" then - config.route.final = nil - table.insert(config.route.rules, { - action = "reject" - }) - end - end - return jsonc.stringify(config, 1) - end -end - -function gen_proto_config(var) - local local_socks_address = var["-local_socks_address"] or "0.0.0.0" - local local_socks_port = var["-local_socks_port"] - local local_socks_username = var["-local_socks_username"] - local local_socks_password = var["-local_socks_password"] - local local_http_address = var["-local_http_address"] or "0.0.0.0" - local local_http_port = var["-local_http_port"] - local local_http_username = var["-local_http_username"] - local local_http_password = var["-local_http_password"] - local server_proto = var["-server_proto"] - local server_address = var["-server_address"] - local server_port = var["-server_port"] - local server_username = var["-server_username"] - local server_password = var["-server_password"] - - local inbounds = {} - local outbounds = {} - - if local_socks_address and local_socks_port then - local inbound = { - type = "socks", - tag = "socks-in", - listen = local_socks_address, - listen_port = tonumber(local_socks_port), - } - if local_socks_username and local_socks_password and local_socks_username ~= "" and local_socks_password ~= "" then - inbound.users = { - username = local_socks_username, - password = local_socks_password - } - end - table.insert(inbounds, inbound) - end - - if local_http_address and local_http_port then - local inbound = { - type = "http", - tag = "http-in", - tls = nil, - listen = local_http_address, - listen_port = tonumber(local_http_port), - } - if local_http_username and local_http_password and local_http_username ~= "" and local_http_password ~= "" then - inbound.users = { - { - username = local_http_username, - password = local_http_password - } - } - end - table.insert(inbounds, inbound) - end - - if server_proto ~= "nil" and server_address ~= "nil" and server_port ~= "nil" then - local outbound = { - type = server_proto, - tag = "out", - server = server_address, - server_port = tonumber(server_port), - username = (server_username and server_password) and server_username or nil, - password = (server_username and server_password) and server_password or nil, - } - if outbound then table.insert(outbounds, outbound) end - end - - local config = { - log = { - disabled = true, - level = "warn", - timestamp = true, - }, - inbounds = inbounds, - outbounds = outbounds, - } - return jsonc.stringify(config, 1) -end - -_G.gen_config = gen_config -_G.gen_proto_config = gen_proto_config - -if arg[1] then - local func =_G[arg[1]] - if func then - print(func(api.get_function_args(arg))) - if (next(geosite_all_tag) or next(geoip_all_tag)) and not no_run then - convert_geofile() - end - end -end diff --git a/small/luci-app-passwall2/luasrc/passwall2/util_tuic.lua b/small/luci-app-passwall2/luasrc/passwall2/util_tuic.lua deleted file mode 100644 index 1338eece39..0000000000 --- a/small/luci-app-passwall2/luasrc/passwall2/util_tuic.lua +++ /dev/null @@ -1,57 +0,0 @@ -module("luci.passwall2.util_tuic", package.seeall) -local api = require "luci.passwall2.api" -local uci = api.uci -local json = api.jsonc - -function gen_config(var) - local node_id = var["-node"] - if not node_id then - print("-node Cannot be empty!") - return - end - local node = uci:get_all("passwall2", node_id) - local local_addr = var["-local_addr"] - local local_port = var["-local_port"] - local server_host = var["-server_host"] or node.address - local server_port = var["-server_port"] or node.port - local loglevel = var["-loglevel"] or "warn" - - local tuic= { - relay = { - server = server_host .. ":" .. server_port, - ip = node.tuic_ip, - uuid = node.uuid, - password = node.tuic_password, - -- certificates = node.tuic_certificate and { node.tuic_certpath } or nil, - udp_relay_mode = node.tuic_udp_relay_mode, - congestion_control = node.tuic_congestion_control, - heartbeat = node.tuic_heartbeat .. "s", - timeout = node.tuic_timeout .. "s", - gc_interval = node.tuic_gc_interval .. "s", - gc_lifetime = node.tuic_gc_lifetime .. "s", - alpn = node.tuic_tls_alpn, - disable_sni = (node.tuic_disable_sni == "1"), - zero_rtt_handshake = (node.tuic_zero_rtt_handshake == "1"), - send_window = tonumber(node.tuic_send_window), - receive_window = tonumber(node.tuic_receive_window) - }, - ["local"] = { - server = "[::]:" .. local_port, - username = node.tuic_socks_username, - password = node.tuic_socks_password, - dual_stack = (node.tuic_dual_stack == "1") and true or false, - max_packet_size = tonumber(node.tuic_max_package_size) - }, - log_level = loglevel - } - return json.stringify(tuic, 1) -end - -_G.gen_config = gen_config - -if arg[1] then - local func =_G[arg[1]] - if func then - print(func(api.get_function_args(arg))) - end -end diff --git a/small/luci-app-passwall2/luasrc/passwall2/util_xray.lua b/small/luci-app-passwall2/luasrc/passwall2/util_xray.lua deleted file mode 100644 index 20762d5b99..0000000000 --- a/small/luci-app-passwall2/luasrc/passwall2/util_xray.lua +++ /dev/null @@ -1,2104 +0,0 @@ -module("luci.passwall2.util_xray", package.seeall) -local api = require "luci.passwall2.api" -local uci = api.uci -local sys = api.sys -local jsonc = api.jsonc -local appname = api.appname -local fs = api.fs -local CACHE_PATH = api.CACHE_PATH - -local new_port -local function get_new_port() - local cmd_format = ". /usr/share/passwall2/utils.sh ; echo -n $(get_new_port %s tcp)" - local set_port = 0 - if new_port and tonumber(new_port) then - set_port = tonumber(new_port) + 1 - end - new_port = tonumber(sys.exec(string.format(cmd_format, set_port == 0 and "auto" or set_port))) - return new_port -end - -local function get_noise_packets() - local noises = {} - uci:foreach(appname, "xray_noise_packets", function(n) - local noise = (n.enabled == "1") and { - type = n.type, - packet = n.packet, - delay = string.find(n.delay, "-") and n.delay or tonumber(n.delay), - applyTo = n.applyTo - } or nil - table.insert(noises, noise) - end) - if #noises == 0 then noises = nil end - return noises -end - -local function get_domain_excluded() - local path = string.format("/usr/share/%s/domains_excluded", appname) - local content = fs.readfile(path) - if not content then return nil end - local hosts = {} - string.gsub(content, '[^' .. "\n" .. ']+', function(w) - local s = api.trim(w) - if s == "" then return end - if s:find("#") and s:find("#") == 1 then return end - if not s:find("#") or s:find("#") ~= 1 then table.insert(hosts, s) end - end) - if #hosts == 0 then hosts = nil end - return hosts -end - -function gen_outbound(flag, node, tag, proxy_table) - local result = nil - if node then - local node_id = node[".name"] - if tag == nil then - tag = node_id - end - - local proxy_tag = nil - local fragment = nil - local noise = nil - local run_socks_instance = true - if proxy_table ~= nil and type(proxy_table) == "table" then - proxy_tag = proxy_table.tag or nil - fragment = proxy_table.fragment or nil - noise = proxy_table.noise or nil - run_socks_instance = proxy_table.run_socks_instance - end - - if node.type ~= "Xray" then - local relay_port = node.port - new_port = get_new_port() - local config_file = string.format("%s_%s_%s.json", flag, tag, new_port) - if tag and node_id and not tag:find(node_id) then - config_file = string.format("%s_%s_%s_%s.json", flag, tag, node_id, new_port) - end - if run_socks_instance then - sys.call(string.format('/usr/share/%s/app.sh run_socks "%s"> /dev/null', - appname, - string.format("flag=%s node=%s bind=%s socks_port=%s config_file=%s relay_port=%s", - new_port, --flag - node_id, --node - "127.0.0.1", --bind - new_port, --socks port - config_file, --config file - (proxy_tag and relay_port) and tostring(relay_port) or "" --relay port - ) - ) - ) - end - node = {} - node.protocol = "socks" - node.transport = "tcp" - node.address = "127.0.0.1" - node.port = new_port - node.stream_security = "none" - else - if proxy_tag then - node.proxySettings = { - tag = proxy_tag, - transportLayer = true - } - end - end - - if node.type == "Xray" then - if node.tls and node.tls == "1" then - node.stream_security = "tls" - if node.reality and node.reality == "1" then - node.stream_security = "reality" - end - end - end - - if node.protocol == "wireguard" and node.wireguard_reserved then - local bytes = {} - if not node.wireguard_reserved:match("[^%d,]+") then - node.wireguard_reserved:gsub("%d+", function(b) - bytes[#bytes + 1] = tonumber(b) - end) - else - local result = api.bin.b64decode(node.wireguard_reserved) - for i = 1, #result do - bytes[i] = result:byte(i) - end - end - node.wireguard_reserved = #bytes > 0 and bytes or nil - end - - if node.protocol == "hysteria2" then - node.protocol = "hysteria" - node.transport = "hysteria" - node.stream_security = "tls" - end - - result = { - _id = node_id, - _flag = flag, - _flag_proxy_tag = proxy_tag, - tag = tag, - proxySettings = node.proxySettings or nil, - protocol = node.protocol, - mux = { - enabled = (node.mux == "1") and true or false, - concurrency = (node.mux == "1" and ((node.mux_concurrency) and tonumber(node.mux_concurrency) or -1)) or nil, - xudpConcurrency = (node.mux == "1" and ((node.xudp_concurrency) and tonumber(node.xudp_concurrency) or 8)) or nil - } or nil, - streamSettings = (node.streamSettings or node.protocol == "vmess" or node.protocol == "vless" or node.protocol == "socks" or node.protocol == "shadowsocks" or node.protocol == "trojan" or node.protocol == "hysteria") and { - sockopt = { - mark = 255, - tcpFastOpen = (node.tcp_fast_open == "1") and true or nil, - tcpMptcp = (node.tcpMptcp == "1") and true or nil, - dialerProxy = (fragment or noise) and "dialerproxy" or nil - }, - network = node.transport, - security = node.stream_security, - tlsSettings = (node.stream_security == "tls") and { - serverName = node.tls_serverName, - allowInsecure = (node.tls_allowInsecure == "1") and true or false, - fingerprint = (node.type == "Xray" and node.utls == "1" and node.fingerprint and node.fingerprint ~= "") and node.fingerprint or nil, - pinnedPeerCertificateChainSha256 = node.tls_chain_fingerprint and { node.tls_chain_fingerprint } or nil, - echConfigList = (node.ech == "1") and node.ech_config or nil, - echForceQuery = (node.ech == "1") and (node.ech_ForceQuery or "none") or nil - } or nil, - realitySettings = (node.stream_security == "reality") and { - serverName = node.tls_serverName, - publicKey = node.reality_publicKey, - shortId = node.reality_shortId or "", - spiderX = node.reality_spiderX or "/", - fingerprint = (node.type == "Xray" and node.fingerprint and node.fingerprint ~= "") and node.fingerprint or "chrome", - mldsa65Verify = (node.use_mldsa65Verify == "1") and node.reality_mldsa65Verify or nil - } or nil, - rawSettings = ((node.transport == "raw" or node.transport == "tcp") and node.protocol ~= "socks" and (node.tcp_guise and node.tcp_guise ~= "none")) and { - header = { - type = node.tcp_guise, - request = (node.tcp_guise == "http") and { - path = node.tcp_guise_http_path and (function() - local t, r = node.tcp_guise_http_path, {} - for _, v in ipairs(t) do - r[#r + 1] = (v == "" and "/" or v) - end - return r - end)() or {"/"}, - headers = (node.tcp_guise_http_host or node.user_agent) and { - Host = node.tcp_guise_http_host, - ["User-Agent"] = node.user_agent and {node.user_agent} or nil - } or nil - } or nil - } - } or nil, - kcpSettings = (node.transport == "mkcp") and { - mtu = tonumber(node.mkcp_mtu), - tti = tonumber(node.mkcp_tti), - uplinkCapacity = tonumber(node.mkcp_uplinkCapacity), - downlinkCapacity = tonumber(node.mkcp_downlinkCapacity), - congestion = (node.mkcp_congestion == "1") and true or false, - readBufferSize = tonumber(node.mkcp_readBufferSize), - writeBufferSize = tonumber(node.mkcp_writeBufferSize), - seed = (node.mkcp_seed and node.mkcp_seed ~= "") and node.mkcp_seed or nil, - header = { - type = node.mkcp_guise, - domain = node.mkcp_domain - } - } or nil, - wsSettings = (node.transport == "ws") and { - path = node.ws_path or "/", - host = node.ws_host, - headers = node.user_agent and { - ["User-Agent"] = node.user_agent - } or nil, - maxEarlyData = tonumber(node.ws_maxEarlyData) or nil, - earlyDataHeaderName = (node.ws_earlyDataHeaderName) and node.ws_earlyDataHeaderName or nil, - heartbeatPeriod = tonumber(node.ws_heartbeatPeriod) or nil - } or nil, - grpcSettings = (node.transport == "grpc") and { - serviceName = node.grpc_serviceName, - multiMode = (node.grpc_mode == "multi") and true or nil, - idle_timeout = tonumber(node.grpc_idle_timeout) or nil, - health_check_timeout = tonumber(node.grpc_health_check_timeout) or nil, - permit_without_stream = (node.grpc_permit_without_stream == "1") and true or nil, - initial_windows_size = tonumber(node.grpc_initial_windows_size) or nil - } or nil, - httpupgradeSettings = (node.transport == "httpupgrade") and { - path = node.httpupgrade_path or "/", - host = node.httpupgrade_host, - headers = node.user_agent and { - ["User-Agent"] = node.user_agent - } or nil - } or nil, - xhttpSettings = (node.transport == "xhttp") and { - mode = node.xhttp_mode or "auto", - path = node.xhttp_path or "/", - host = node.xhttp_host, - extra = (function() - local extra_tbl = {} - -- Parse xhttp_extra and perform simple fault tolerance. - if node.xhttp_extra then - local success, parsed = pcall(jsonc.parse, api.base64Decode(node.xhttp_extra)) - if success and parsed then - extra_tbl = parsed.extra or parsed - for k, v in pairs(extra_tbl) do - if (type(v) == "table" and next(v) == nil) or v == nil then - extra_tbl[k] = nil - end - end - end - end - -- Handling User-Agent - if node.user_agent and node.user_agent ~= "" then - extra_tbl.headers = extra_tbl.headers or {} - if not extra_tbl.headers["User-Agent"] and not extra_tbl.headers["user-agent"] then - extra_tbl.headers["User-Agent"] = node.user_agent - end - end - -- Clean up empty headers - if extra_tbl.headers and next(extra_tbl.headers) == nil then - extra_tbl.headers = nil - end - return next(extra_tbl) ~= nil and extra_tbl or nil - end)() - } or nil, - hysteriaSettings = (node.transport == "hysteria") and { - version = 2, - auth = node.hysteria2_auth_password, - up = (node.hysteria2_up_mbps and tonumber(node.hysteria2_up_mbps)) and tonumber(node.hysteria2_up_mbps) .. "mbps" or nil, - down = (node.hysteria2_down_mbps and tonumber(node.hysteria2_down_mbps)) and tonumber(node.hysteria2_down_mbps) .. "mbps" or nil, - udphop = (node.hysteria2_hop) and { - port = string.gsub(node.hysteria2_hop, ":", "-"), - interval = (function() - local v = tonumber((node.hysteria2_hop_interval or "30s"):match("^%d+")) - return (v and v >= 5) and v or 30 - end)() - } or nil, - maxIdleTimeout = (function() - local timeoutStr = tostring(node.hysteria2_idle_timeout or "") - local timeout = tonumber(timeoutStr:match("^%d+")) - if timeout and timeout >= 4 and timeout <= 120 then - return timeout - end - return 30 - end)(), - disablePathMTUDiscovery = (node.hysteria2_disable_mtu_discovery) and true or false - } or nil, - udpmasks = (node.transport == "hysteria" and node.hysteria2_obfs_type and node.hysteria2_obfs_type ~= "") and { - { - type = node.hysteria2_obfs_type, - settings = node.hysteria2_obfs_password and { - password = node.hysteria2_obfs_password - } or nil - } - } or nil - } or nil, - settings = { - vnext = (node.protocol == "vmess" or node.protocol == "vless") and { - { - address = node.address, - port = tonumber(node.port), - users = { - { - id = node.uuid, - level = 0, - security = (node.protocol == "vmess") and node.security or nil, - testpre = (node.protocol == "vless") and tonumber(node.preconns) or nil, - encryption = (node.protocol == "vless") and ((node.encryption and node.encryption ~= "") and node.encryption or "none") or nil, - flow = (node.protocol == "vless" - and (node.tls == "1" or (node.encryption and node.encryption ~= "" and node.encryption ~= "none")) - and node.flow and node.flow ~= "") and node.flow or nil - } - } - } - } or nil, - servers = (node.protocol == "socks" or node.protocol == "http" or node.protocol == "shadowsocks" or node.protocol == "trojan") and { - { - address = node.address, - port = tonumber(node.port), - method = (node.method == "chacha20-ietf-poly1305" and "chacha20-poly1305") or - (node.method == "xchacha20-ietf-poly1305" and "xchacha20-poly1305") or - (node.method ~= "" and node.method) or nil, - ivCheck = (node.protocol == "shadowsocks") and node.iv_check == "1" or nil, - uot = (node.protocol == "shadowsocks") and node.uot == "1" or nil, - password = node.password or "", - users = (node.username and node.password) and { - { - user = node.username, - pass = node.password - } - } or nil - } - } or nil, - address = (node.protocol == "wireguard" and node.wireguard_local_address) or (node.protocol == "hysteria" and node.address) or nil, - secretKey = (node.protocol == "wireguard") and node.wireguard_secret_key or nil, - peers = (node.protocol == "wireguard") and { - { - publicKey = node.wireguard_public_key, - endpoint = node.address .. ":" .. node.port, - preSharedKey = node.wireguard_preSharedKey, - keepAlive = node.wireguard_keepAlive and tonumber(node.wireguard_keepAlive) or nil - } - } or nil, - mtu = (node.protocol == "wireguard" and node.wireguard_mtu) and tonumber(node.wireguard_mtu) or nil, - reserved = (node.protocol == "wireguard" and node.wireguard_reserved) and node.wireguard_reserved or nil, - port = (node.protocol == "hysteria" and node.port) and tonumber(node.port) or nil, - version = node.protocol == "hysteria" and 2 or nil - } - } - - if node.protocol == "wireguard" then - result.settings.kernelMode = false - end - - local alpn = {} - if node.alpn and node.alpn ~= "default" then - string.gsub(node.alpn, '[^' .. "," .. ']+', function(w) - table.insert(alpn, w) - end) - end - if alpn and #alpn > 0 then - if result.streamSettings.tlsSettings then - result.streamSettings.tlsSettings.alpn = alpn - end - end - - end - return result -end - -function gen_config_server(node) - local settings = nil - local routing = nil - local outbounds = { - {protocol = "freedom", tag = "direct"}, {protocol = "blackhole", tag = "blocked"} - } - - if node.protocol == "vmess" or node.protocol == "vless" then - if node.uuid then - local clients = {} - for i = 1, #node.uuid do - clients[i] = { - id = node.uuid[i], - flow = (node.protocol == "vless" - and (node.tls == "1" or (node.decryption and node.decryption ~= "" and node.decryption ~= "none")) - and node.flow and node.flow ~= "") and node.flow or nil - } - end - settings = { - clients = clients, - decryption = (node.protocol == "vless") and ((node.decryption and node.decryption ~= "") and node.decryption or "none") or nil - } - end - elseif node.protocol == "socks" then - settings = { - udp = ("1" == node.udp_forward) and true or false, - auth = ("1" == node.auth) and "password" or "noauth", - accounts = ("1" == node.auth) and { - { - user = node.username, - pass = node.password - } - } or nil - } - elseif node.protocol == "http" then - settings = { - allowTransparent = false, - accounts = ("1" == node.auth) and { - { - user = node.username, - pass = node.password - } - } or nil - } - node.transport = "tcp" - node.tcp_guise = "none" - elseif node.protocol == "shadowsocks" then - settings = { - method = node.method, - password = node.password, - ivCheck = ("1" == node.iv_check) and true or false, - network = node.ss_network or "TCP,UDP" - } - elseif node.protocol == "trojan" then - if node.uuid then - local clients = {} - for i = 1, #node.uuid do - clients[i] = { - password = node.uuid[i] - } - end - settings = { - clients = clients - } - end - elseif node.protocol == "dokodemo-door" then - settings = { - network = node.d_protocol, - address = node.d_address, - port = tonumber(node.d_port) - } - end - - if node.fallback and node.fallback == "1" then - local fallbacks = {} - for i = 1, #node.fallback_list do - local fallbackStr = node.fallback_list[i] - if fallbackStr then - local tmp = {} - string.gsub(fallbackStr, '[^,]+', function(w) - table.insert(tmp, w) - end) - local dest = tmp[1] or "" - local path = tmp[2] - local xver = tonumber(tmp[3]) - if not dest:find("%.") then - dest = tonumber(dest) - end - fallbacks[i] = { - path = path, - dest = dest, - xver = xver - } - end - end - settings.fallbacks = fallbacks - end - - routing = { - domainStrategy = "IPOnDemand", - rules = { - { - ip = {"10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16"}, - outboundTag = (node.accept_lan == nil or node.accept_lan == "0") and "blocked" or "direct" - } - } - } - - if node.outbound_node then - local outbound = nil - if node.outbound_node == "_iface" and node.outbound_node_iface then - outbound = { - protocol = "freedom", - tag = "outbound", - streamSettings = { - sockopt = { - mark = 255, - interface = node.outbound_node_iface - } - } - } - sys.call(string.format("mkdir -p %s && touch %s/%s", api.TMP_IFACE_PATH, api.TMP_IFACE_PATH, node.outbound_node_iface)) - else - local outbound_node_t = uci:get_all("passwall2", node.outbound_node) - if node.outbound_node == "_socks" or node.outbound_node == "_http" then - outbound_node_t = { - type = node.type, - protocol = node.outbound_node:gsub("_", ""), - transport = "tcp", - address = node.outbound_node_address, - port = node.outbound_node_port, - username = (node.outbound_node_username and node.outbound_node_username ~= "") and node.outbound_node_username or nil, - password = (node.outbound_node_password and node.outbound_node_password ~= "") and node.outbound_node_password or nil, - } - end - outbound = require("luci.passwall2.util_xray").gen_outbound(nil, outbound_node_t, "outbound") - end - if outbound then - table.insert(outbounds, 1, outbound) - end - end - - local config = { - log = { - loglevel = ("1" == node.log) and node.loglevel or "none" - }, - inbounds = { - { - listen = (node.bind_local == "1") and "127.0.0.1" or nil, - port = tonumber(node.port), - protocol = node.protocol, - settings = settings, - streamSettings = { - network = node.transport, - security = "none", - tlsSettings = ("1" == node.tls) and { - disableSystemRoot = false, - certificates = { - { - certificateFile = node.tls_certificateFile, - keyFile = node.tls_keyFile - } - }, - echServerKeys = (node.ech == "1") and node.ech_key or nil - } or nil, - rawSettings = (node.transport == "raw" or node.transport == "tcp") and { - header = { - type = node.tcp_guise, - request = (node.tcp_guise == "http") and { - path = node.tcp_guise_http_path and (function() - local t, r = node.tcp_guise_http_path, {} - for _, v in ipairs(t) do - r[#r + 1] = (v == "" and "/" or v) - end - return r - end)() or {"/"}, - headers = { - Host = node.tcp_guise_http_host or {} - } - } or nil - } - } or nil, - kcpSettings = (node.transport == "mkcp") and { - mtu = tonumber(node.mkcp_mtu), - tti = tonumber(node.mkcp_tti), - uplinkCapacity = tonumber(node.mkcp_uplinkCapacity), - downlinkCapacity = tonumber(node.mkcp_downlinkCapacity), - congestion = (node.mkcp_congestion == "1") and true or false, - readBufferSize = tonumber(node.mkcp_readBufferSize), - writeBufferSize = tonumber(node.mkcp_writeBufferSize), - seed = (node.mkcp_seed and node.mkcp_seed ~= "") and node.mkcp_seed or nil, - header = { - type = node.mkcp_guise, - domain = node.mkcp_domain - } - } or nil, - wsSettings = (node.transport == "ws") and { - host = node.ws_host or nil, - path = node.ws_path - } or nil, - grpcSettings = (node.transport == "grpc") and { - serviceName = node.grpc_serviceName - } or nil, - httpupgradeSettings = (node.transport == "httpupgrade") and { - path = node.httpupgrade_path or "/", - host = node.httpupgrade_host - } or nil, - xhttpSettings = (node.transport == "xhttp") and { - path = node.xhttp_path or "/", - host = node.xhttp_host, - maxUploadSize = node.xhttp_maxuploadsize, - maxConcurrentUploads = node.xhttp_maxconcurrentuploads - } or nil, - sockopt = { - acceptProxyProtocol = (node.acceptProxyProtocol and node.acceptProxyProtocol == "1") and true or false - } - } - } - }, - outbounds = outbounds, - routing = routing - } - - local alpn = {} - if node.alpn then - string.gsub(node.alpn, '[^' .. "," .. ']+', function(w) - table.insert(alpn, w) - end) - end - if alpn and #alpn > 0 then - if config.inbounds[1].streamSettings.tlsSettings then - config.inbounds[1].streamSettings.tlsSettings.alpn = alpn - end - end - - if "1" == node.tls then - config.inbounds[1].streamSettings.security = "tls" - if "1" == node.reality then - config.inbounds[1].streamSettings.tlsSettings = nil - config.inbounds[1].streamSettings.security = "reality" - config.inbounds[1].streamSettings.realitySettings = { - show = false, - dest = node.reality_dest, - serverNames = node.reality_serverNames or {}, - privateKey = node.reality_private_key, - shortIds = node.reality_shortId or "", - mldsa65Seed = (node.use_mldsa65Seed == "1") and node.reality_mldsa65Seed or nil - } or nil - end - end - - return config -end - -function gen_config(var) - local flag = var["-flag"] - local loglevel = var["-loglevel"] or "warning" - local node_id = var["-node"] - local server_host = var["-server_host"] - local server_port = var["-server_port"] - local tcp_proxy_way = var["-tcp_proxy_way"] - local redir_port = var["-redir_port"] - local local_socks_address = var["-local_socks_address"] or "0.0.0.0" - local local_socks_port = var["-local_socks_port"] - local local_socks_username = var["-local_socks_username"] - local local_socks_password = var["-local_socks_password"] - local local_http_address = var["-local_http_address"] or "0.0.0.0" - local local_http_port = var["-local_http_port"] - local local_http_username = var["-local_http_username"] - local local_http_password = var["-local_http_password"] - local dns_listen_port = var["-dns_listen_port"] - local direct_dns_udp_server = var["-direct_dns_udp_server"] - local direct_dns_udp_port = var["-direct_dns_udp_port"] - local direct_dns_query_strategy = var["-direct_dns_query_strategy"] - local direct_ipset = var["-direct_ipset"] - local direct_nftset = var["-direct_nftset"] - local remote_dns_udp_server = var["-remote_dns_udp_server"] - local remote_dns_udp_port = var["-remote_dns_udp_port"] - local remote_dns_tcp_server = var["-remote_dns_tcp_server"] - local remote_dns_tcp_port = var["-remote_dns_tcp_port"] - local remote_dns_doh_url = var["-remote_dns_doh_url"] - local remote_dns_doh_host = var["-remote_dns_doh_host"] - local remote_dns_doh_ip = var["-remote_dns_doh_ip"] - local remote_dns_doh_port = var["-remote_dns_doh_port"] - local remote_dns_fake = var["-remote_dns_fake"] - local remote_dns_query_strategy = var["-remote_dns_query_strategy"] - local remote_dns_detour = var["-remote_dns_detour"] - local dns_cache = var["-dns_cache"] - local no_run = var["-no_run"] - - local dns_domain_rules = {} - local dns = nil - local fakedns = nil - local inbounds = {} - local outbounds = {} - local routing = nil - local observatory = nil - local burstObservatory = nil - local strategy = nil - local COMMON = {} - - local CACHE_TEXT_FILE = CACHE_PATH .. "/cache_" .. flag .. ".txt" - - local xray_settings = uci:get_all(appname, "@global_xray[0]") or {} - - local node = node_id and uci:get_all(appname, node_id) or nil - local balancers = {} - local rules = {} - - if local_socks_port then - local inbound = { - tag = "socks-in", - listen = local_socks_address, - port = tonumber(local_socks_port), - protocol = "socks", - settings = {auth = "noauth", udp = true}, - sniffing = { - enabled = xray_settings.sniffing_override_dest == "1" or node.protocol == "_shunt" - } - } - if inbound.sniffing.enabled == true then - inbound.sniffing.destOverride = {"http", "tls", "quic"} - inbound.sniffing.routeOnly = xray_settings.sniffing_override_dest ~= "1" or nil - inbound.sniffing.domainsExcluded = xray_settings.sniffing_override_dest == "1" and get_domain_excluded() or nil - end - if local_socks_username and local_socks_password and local_socks_username ~= "" and local_socks_password ~= "" then - inbound.settings.auth = "password" - inbound.settings.accounts = { - { - user = local_socks_username, - pass = local_socks_password - } - } - end - table.insert(inbounds, inbound) - end - - if local_http_port then - local inbound = { - listen = local_http_address, - port = tonumber(local_http_port), - protocol = "http", - settings = {allowTransparent = false} - } - if local_http_username and local_http_password and local_http_username ~= "" and local_http_password ~= "" then - inbound.settings.accounts = { - { - user = local_http_username, - pass = local_http_password - } - } - end - table.insert(inbounds, inbound) - end - - if redir_port then - local inbound = { - port = tonumber(redir_port), - protocol = "dokodemo-door", - settings = {network = "tcp,udp", followRedirect = true}, - streamSettings = {sockopt = {tproxy = "tproxy"}}, - sniffing = { - enabled = xray_settings.sniffing_override_dest == "1" or node.protocol == "_shunt" - } - } - if inbound.sniffing.enabled == true then - inbound.sniffing.destOverride = {"http", "tls", "quic"} - inbound.sniffing.metadataOnly = false - inbound.sniffing.routeOnly = xray_settings.sniffing_override_dest ~= "1" or nil - inbound.sniffing.domainsExcluded = xray_settings.sniffing_override_dest == "1" and get_domain_excluded() or nil - end - if remote_dns_fake then - inbound.sniffing.enabled = true - if not inbound.sniffing.destOverride then - inbound.sniffing.destOverride = {"fakedns"} - inbound.sniffing.metadataOnly = true - else - table.insert(inbound.sniffing.destOverride, "fakedns") - inbound.sniffing.metadataOnly = false - end - end - - local tcp_inbound = api.clone(inbound) - tcp_inbound.tag = "tcp_redir" - tcp_inbound.settings.network = "tcp" - tcp_inbound.streamSettings.sockopt.tproxy = tcp_proxy_way - table.insert(inbounds, tcp_inbound) - - local udp_inbound = api.clone(inbound) - udp_inbound.tag = "udp_redir" - udp_inbound.settings.network = "udp" - table.insert(inbounds, udp_inbound) - end - - local function get_balancer_tag(_node_id) - return "balancer-" .. _node_id - end - - local function gen_loopback(outboundTag, dst_node_id) - if not outboundTag then return nil end - local inboundTag = dst_node_id and "loop-in-" .. dst_node_id or outboundTag .. "-lo" - table.insert(outbounds, { - protocol = "loopback", - tag = outboundTag, - settings = { inboundTag = inboundTag } - }) - return inboundTag - end - - local function gen_balancer(_node, loopback_tag) - local balancer_id = _node[".name"] - local balancer_tag = "balancer-" .. balancer_id - local loopback_dst = balancer_id -- route destination for the loopback outbound - if not loopback_tag or loopback_tag == "" then loopback_tag = balancer_id end - -- existing balancer - for _, v in ipairs(balancers) do - if v.tag == balancer_tag then - gen_loopback(loopback_tag, loopback_dst) - return balancer_tag - end - end - -- new balancer - local blc_nodes = _node.balancing_node - local valid_nodes = {} - for i = 1, #blc_nodes do - local blc_node_id = blc_nodes[i] - local blc_node_tag = "blc-" .. blc_node_id - local is_new_blc_node = true - for _, outbound in ipairs(outbounds) do - if string.sub(outbound.tag, 1, #blc_node_tag) == blc_node_tag then - is_new_blc_node = false - valid_nodes[#valid_nodes + 1] = outbound.tag - break - end - end - if is_new_blc_node then - local blc_node - if blc_node_id:find("Socks_") then - local socks_id = blc_node_id:sub(1 + #"Socks_") - local socks_node = uci:get_all(appname, socks_id) or nil - if socks_node then - blc_node = { - type = "Xray", - protocol = "socks", - address = "127.0.0.1", - port = socks_node.port, - transport = "tcp", - stream_security = "none", - remarks = "Socks_" .. socks_node.port - } - end - else - blc_node = uci:get_all(appname, blc_node_id) - end - if blc_node then - local outbound = gen_outbound(flag, blc_node, blc_node_tag, { fragment = xray_settings.fragment == "1" or nil, noise = xray_settings.noise == "1" or nil, run_socks_instance = not no_run }) - if outbound then - outbound.tag = outbound.tag .. ":" .. blc_node.remarks - table.insert(outbounds, outbound) - valid_nodes[#valid_nodes + 1] = outbound.tag - end - end - end - end - if #valid_nodes == 0 then return nil end - - -- fallback node - local fallback_node_tag = nil - local fallback_node_id = _node.fallback_node - if not fallback_node_id or fallback_node_id == "" then fallback_node_id = nil end - if fallback_node_id then - local is_new_node = true - for _, outbound in ipairs(outbounds) do - if string.sub(outbound.tag, 1, #fallback_node_id) == fallback_node_id then - is_new_node = false - fallback_node_tag = outbound.tag - break - end - end - if is_new_node then - local fallback_node - if fallback_node_id:find("Socks_") then - local socks_id = fallback_node_id:sub(1 + #"Socks_") - local socks_node = uci:get_all(appname, socks_id) or nil - if socks_node then - fallback_node = { - type = "Xray", - protocol = "socks", - address = "127.0.0.1", - port = socks_node.port, - transport = "tcp", - stream_security = "none", - remarks = "Socks_" .. socks_node.port - } - end - else - fallback_node = uci:get_all(appname, fallback_node_id) - end - if fallback_node then - if fallback_node.protocol ~= "_balancing" then - local outbound = gen_outbound(flag, fallback_node, fallback_node_id, { fragment = xray_settings.fragment == "1" or nil, noise = xray_settings.noise == "1" or nil, run_socks_instance = not no_run }) - if outbound then - outbound.tag = outbound.tag .. ":" .. fallback_node.remarks - table.insert(outbounds, outbound) - fallback_node_tag = outbound.tag - end - else - if gen_balancer(fallback_node) then - fallback_node_tag = fallback_node_id - end - end - end - end - end - if _node.balancingStrategy == "leastLoad" then - strategy = { - type = _node.balancingStrategy, - settings = { - expected = _node.expected and tonumber(_node.expected) and tonumber(_node.expected) or 2, - maxRTT = "1s" - } - } - else - strategy = { type = _node.balancingStrategy or "random" } - end - table.insert(balancers, { - tag = balancer_tag, - selector = api.clone(valid_nodes), - fallbackTag = fallback_node_tag, - strategy = strategy - }) - if _node.balancingStrategy == "leastPing" or _node.balancingStrategy == "leastLoad" or fallback_node_tag then - if _node.balancingStrategy == "leastLoad" then - if not burstObservatory then - burstObservatory = { - subjectSelector = { "blc-" }, - pingConfig = { - destination = _node.useCustomProbeUrl and _node.probeUrl or nil, - interval = (api.format_go_time(_node.probeInterval) ~= "0s") and api.format_go_time(_node.probeInterval) or "1m", - sampling = 3, - timeout = "5s" - } - } - end - else - if not observatory then - observatory = { - subjectSelector = { "blc-" }, - probeUrl = _node.useCustomProbeUrl and _node.probeUrl or nil, - probeInterval = (api.format_go_time(_node.probeInterval) ~= "0s") and api.format_go_time(_node.probeInterval) or "1m", - enableConcurrency = true - } - end - end - end - local inbound_tag = gen_loopback(loopback_tag, loopback_dst) - table.insert(rules, { inboundTag = { inbound_tag }, balancerTag = balancer_tag }) - return balancer_tag - end - - local function set_outbound_detour(node, outbound, outbounds_table, shunt_rule_name) - if not node or not outbound or not outbounds_table then return nil end - local default_outTag = outbound.tag - local last_insert_outbound - - if node.chain_proxy == "1" and node.preproxy_node then - if outbound["_flag_proxy_tag"] then - --Ignore - else - local preproxy_node = uci:get_all(appname, node.preproxy_node) - if preproxy_node then - local preproxy_outbound = gen_outbound(nil, preproxy_node) - if preproxy_outbound then - preproxy_outbound.tag = preproxy_node[".name"] .. ":" .. preproxy_node.remarks - outbound.tag = preproxy_outbound.tag .. " -> " .. outbound.tag - outbound.proxySettings = { - tag = preproxy_outbound.tag, - transportLayer = true - } - last_insert_outbound = preproxy_outbound - default_outTag = outbound.tag - end - end - end - end - if node.chain_proxy == "2" and node.to_node then - local to_node = uci:get_all(appname, node.to_node) - if to_node then - local to_outbound = gen_outbound(nil, to_node) - if to_outbound then - if shunt_rule_name then - to_outbound.tag = outbound.tag - outbound.tag = node[".name"] - else - to_outbound.tag = outbound.tag .. " -> " .. to_outbound.tag - end - - to_outbound.proxySettings = { - tag = outbound.tag, - transportLayer = true - } - table.insert(outbounds_table, to_outbound) - default_outTag = to_outbound.tag - end - end - end - return default_outTag, last_insert_outbound - end - - if node then - if server_host and server_port then - node.address = server_host - node.port = server_port - end - if node.protocol == "_shunt" then - local preproxy_rule_name = node.preproxy_enabled == "1" and "main" or nil - local preproxy_tag = preproxy_rule_name - local preproxy_node_id = node["main_node"] - local preproxy_outbound_tag, preproxy_balancer_tag - local preproxy_nodes - - local function gen_shunt_node(rule_name, _node_id) - if not rule_name then return nil, nil end - if not _node_id then _node_id = node[rule_name] end - if _node_id == "_direct" then - return "direct", nil - elseif _node_id == "_blackhole" then - return "blackhole", nil - elseif _node_id == "_default" then - return "default", nil - elseif _node_id and _node_id:find("Socks_") then - local socks_id = _node_id:sub(1 + #"Socks_") - local socks_node = uci:get_all(appname, socks_id) or nil - local socks_tag - if socks_node then - local _node = { - type = "Xray", - protocol = "socks", - address = "127.0.0.1", - port = socks_node.port, - transport = "tcp", - stream_security = "none" - } - local outbound = gen_outbound(flag, _node, rule_name) - if outbound then - if rule_name == "default" then - table.insert(outbounds, 1, outbound) - else - table.insert(outbounds, outbound) - end - socks_tag = outbound.tag - end - end - return socks_tag, nil - elseif _node_id then - local _node = uci:get_all(appname, _node_id) - if not _node then return nil, nil end - - if api.is_normal_node(_node) then - local use_proxy = preproxy_tag and node[rule_name .. "_proxy_tag"] == preproxy_rule_name and _node_id ~= preproxy_node_id - if use_proxy and preproxy_balancer_tag and preproxy_nodes[_node_id] then use_proxy = false end - local copied_outbound - for index, value in ipairs(outbounds) do - if value["_id"] == _node_id and value["_flag_proxy_tag"] == (use_proxy and preproxy_tag or nil) then - copied_outbound = api.clone(value) - break - end - end - if copied_outbound then - copied_outbound.tag = rule_name .. ":" .. _node.remarks - table.insert(outbounds, copied_outbound) - return copied_outbound.tag, nil - else - if use_proxy and _node.type ~= "Xray" then - new_port = get_new_port() - table.insert(inbounds, { - tag = "proxy_" .. rule_name, - listen = "127.0.0.1", - port = new_port, - protocol = "dokodemo-door", - settings = {network = "tcp,udp", address = _node.address, port = tonumber(_node.port)} - }) - if _node.tls_serverName == nil then - _node.tls_serverName = _node.address - end - _node.address = "127.0.0.1" - _node.port = new_port - table.insert(rules, 1, { - inboundTag = {"proxy_" .. rule_name}, - outboundTag = not preproxy_balancer_tag and preproxy_tag or nil, - balancerTag = preproxy_balancer_tag - }) - end - local proxy_table = { - tag = use_proxy and preproxy_tag or nil, - run_socks_instance = not no_run - } - if not proxy_table.tag then - if xray_settings.fragment == "1" then - proxy_table.fragment = true - end - if xray_settings.noise == "1" then - proxy_table.noise = true - end - end - local outbound = gen_outbound(flag, _node, rule_name, proxy_table) - local outbound_tag - if outbound then - outbound.tag = outbound.tag .. ":" .. _node.remarks - outbound_tag, last_insert_outbound = set_outbound_detour(_node, outbound, outbounds, rule_name) - if rule_name == "default" then - table.insert(outbounds, 1, outbound) - else - table.insert(outbounds, outbound) - end - if last_insert_outbound then - table.insert(outbounds, last_insert_outbound) - end - end - return outbound_tag, nil - end - elseif _node.protocol == "_balancing" then - local blc_tag = gen_balancer(_node, rule_name) - if rule_name == "default" then - for i, ob in ipairs(outbounds) do - if ob.protocol == "loopback" and ob.tag == "default" then - if i > 1 then table.insert(outbounds, 1, table.remove(outbounds, i)) end - break - end - end - end - return nil, blc_tag - elseif _node.protocol == "_iface" then - local outbound_tag - if _node.iface then - local outbound = { - protocol = "freedom", - tag = rule_name, - streamSettings = { - sockopt = { - mark = 255, - interface = _node.iface - } - } - } - outbound_tag = outbound.tag - if rule_name == "default" then - table.insert(outbounds, 1, outbound) - else - table.insert(outbounds, outbound) - end - sys.call(string.format("mkdir -p %s && touch %s/%s", api.TMP_IFACE_PATH, api.TMP_IFACE_PATH, _node.iface)) - end - return outbound_tag, nil - end - end - end - - if preproxy_tag and preproxy_node_id then - preproxy_outbound_tag, preproxy_balancer_tag = gen_shunt_node(preproxy_rule_name, preproxy_node_id) - if preproxy_balancer_tag then - local _node_id = preproxy_node_id - preproxy_nodes = {} - while _node_id do - _node = uci:get_all(appname, _node_id) - if not _node then break end - if _node.protocol ~= "_balancing" then - preproxy_nodes[_node_id] = true - break - end - local _blc_nodes = _node.balancing_node - for i = 1, #_blc_nodes do preproxy_nodes[_blc_nodes[i]] = true end - _node_id = _node.fallback_node - end - elseif preproxy_outbound_tag then - preproxy_tag = preproxy_outbound_tag - end - end - --default_node - local default_node_id = node.default_node or "_direct" - local default_outboundTag, default_balancerTag = gen_shunt_node("default", default_node_id) - COMMON.default_outbound_tag = default_outboundTag - COMMON.default_balancer_tag = default_balancerTag - --shunt rule - uci:foreach(appname, "shunt_rules", function(e) - local outboundTag, balancerTag = gen_shunt_node(e[".name"]) - if outboundTag or balancerTag and e.remarks then - if outboundTag == "default" then - outboundTag = default_outboundTag - balancerTag = default_balancerTag - end - local protocols = nil - if e["protocol"] and e["protocol"] ~= "" then - protocols = {} - string.gsub(e["protocol"], '[^' .. " " .. ']+', function(w) - table.insert(protocols, w) - end) - end - local inboundTag = nil - if e["inbound"] and e["inbound"] ~= "" then - inboundTag = {} - if e["inbound"]:find("tproxy") then - if redir_port then - table.insert(inboundTag, "tcp_redir") - table.insert(inboundTag, "udp_redir") - end - end - if e["inbound"]:find("socks") then - if local_socks_port then - table.insert(inboundTag, "socks-in") - end - end - end - local domains = nil - if e.domain_list then - local domain_table = { - shunt_rule_name = e[".name"], - outboundTag = outboundTag, - balancerTag = balancerTag, - domain = {}, - } - domains = {} - string.gsub(e.domain_list, '[^' .. "\r\n" .. ']+', function(w) - if w:find("#") == 1 then return end - if w:find("rule-set:", 1, true) == 1 or w:find("rs:") == 1 then return end - table.insert(domains, w) - table.insert(domain_table.domain, w) - end) - if outboundTag or balancerTag then - table.insert(dns_domain_rules, api.clone(domain_table)) - end - if #domains == 0 then domains = nil end - end - local ip = nil - if e.ip_list then - ip = {} - string.gsub(e.ip_list, '[^' .. "\r\n" .. ']+', function(w) - if w:find("#") == 1 then return end - if w:find("rule-set:", 1, true) == 1 or w:find("rs:") == 1 then return end - table.insert(ip, w) - end) - if #ip == 0 then ip = nil end - end - local source = nil - if e.source then - source = {} - string.gsub(e.source, '[^' .. " " .. ']+', function(w) - table.insert(source, w) - end) - end - local rule = { - ruleTag = e.remarks, - inboundTag = inboundTag, - outboundTag = outboundTag, - balancerTag = balancerTag, - network = e["network"] or "tcp,udp", - source = source, - sourcePort = e["sourcePort"] ~= "" and e["sourcePort"] or nil, - port = e["port"] ~= "" and e["port"] or nil, - protocol = protocols - } - if domains then - local _rule = api.clone(rule) - _rule.ruleTag = _rule.ruleTag .. " Domains" - _rule.domains = domains - table.insert(rules, _rule) - end - if ip then - local _rule = api.clone(rule) - _rule.ruleTag = _rule.ruleTag .. " IP" - _rule.ip = ip - table.insert(rules, _rule) - end - if not domains and not ip then - table.insert(rules, rule) - end - end - end) - - if default_outboundTag or default_balancerTag then - local rule = { - ruleTag = "default", - outboundTag = default_outboundTag, - balancerTag = default_balancerTag - } - if node.domainStrategy == "IPIfNonMatch" then - rule.ip = { "0.0.0.0/0", "::/0" } - else - rule.network = "tcp,udp" - end - table.insert(rules, rule) - end - - routing = { - domainStrategy = node.domainStrategy or "AsIs", - domainMatcher = node.domainMatcher or "hybrid", - balancers = #balancers > 0 and balancers or nil, - rules = rules - } - elseif node.protocol == "_balancing" then - if node.balancing_node then - local balancer_tag = gen_balancer(node) - if balancer_tag then - table.insert(rules, { network = "tcp,udp", balancerTag = balancer_tag }) - end - routing = { - balancers = balancers, - rules = rules - } - COMMON.default_balancer_tag = balancer_tag - end - elseif node.protocol == "_iface" then - if node.iface then - local outbound = { - protocol = "freedom", - tag = node.remarks or node_id, - streamSettings = { - sockopt = { - mark = 255, - interface = node.iface - } - } - } - table.insert(outbounds, outbound) - COMMON.default_outbound_tag = outbound.tag - sys.call(string.format("mkdir -p %s && touch %s/%s", api.TMP_IFACE_PATH, api.TMP_IFACE_PATH, node.iface)) - end - else - local outbound = gen_outbound(flag, node, nil, { fragment = xray_settings.fragment == "1" or nil, noise = xray_settings.noise == "1" or nil, run_socks_instance = not no_run }) - if outbound then - outbound.tag = outbound.tag .. ":" .. node.remarks - COMMON.default_outbound_tag, last_insert_outbound = set_outbound_detour(node, outbound, outbounds) - table.insert(outbounds, outbound) - if last_insert_outbound then - table.insert(outbounds, last_insert_outbound) - end - routing = { - domainStrategy = "AsIs", - domainMatcher = "hybrid", - rules = {} - } - table.insert(routing.rules, { - ruleTag = "default", - outboundTag = COMMON.default_outbound_tag, - network = "tcp,udp" - }) - end - end - end - - if dns_listen_port then - local direct_dns_tag = "dns-in-direct" - local remote_dns_tag = "dns-in-remote" - local remote_fakedns_tag = "dns-in-remote-fakedns" - local default_dns_tag = "dns-in-default" - local dns_servers = {} - - local _remote_dns_proto = "tcp" - - if not routing then - routing = { - domainStrategy = "IPOnDemand", - rules = {} - } - end - - dns = { - tag = "dns-global", - hosts = {}, - disableCache = (dns_cache and dns_cache == "0") and true or false, - disableFallback = true, - disableFallbackIfMatch = true, - servers = {}, - queryStrategy = "UseIP" - } - - local dns_host = "" - if flag == "global" then - dns_host = uci:get(appname, "@global[0]", "dns_hosts") or "" - else - flag = flag:gsub("acl_", "") - local dns_hosts_mode = uci:get(appname, flag, "dns_hosts_mode") or "default" - if dns_hosts_mode == "default" then - dns_host = uci:get(appname, "@global[0]", "dns_hosts") or "" - elseif dns_hosts_mode == "disable" then - dns_host = "" - elseif dns_hosts_mode == "custom" then - dns_host = uci:get(appname, flag, "dns_hosts") or "" - end - end - if #dns_host > 0 then - string.gsub(dns_host, '[^' .. "\r\n" .. ']+', function(w) - local host = sys.exec(string.format("echo -n $(echo %s | awk -F ' ' '{print $1}')", w)) - local key = sys.exec(string.format("echo -n $(echo %s | awk -F ' ' '{print $2}')", w)) - if host ~= "" and key ~= "" then - dns.hosts[host] = key - end - end) - end - - local _remote_dns_ip = nil - - local _remote_dns = { - tag = remote_dns_tag, - queryStrategy = (remote_dns_query_strategy and remote_dns_query_strategy ~= "") and remote_dns_query_strategy or "UseIPv4" - } - - if remote_dns_udp_server then - _remote_dns.address = remote_dns_udp_server - _remote_dns.port = tonumber(remote_dns_udp_port) or 53 - _remote_dns_proto = "udp" - _remote_dns_ip = remote_dns_udp_server - end - - if remote_dns_tcp_server then - _remote_dns.address = "tcp://" .. remote_dns_tcp_server .. ":" .. tonumber(remote_dns_tcp_port) or 53 - _remote_dns.port = tonumber(remote_dns_tcp_port) or 53 - _remote_dns_proto = "tcp" - _remote_dns_ip = remote_dns_tcp_server - end - - if remote_dns_doh_url and remote_dns_doh_host then - if remote_dns_doh_ip and remote_dns_doh_host ~= remote_dns_doh_ip and not api.is_ip(remote_dns_doh_host) then - dns.hosts[remote_dns_doh_host] = remote_dns_doh_ip - end - _remote_dns.address = remote_dns_doh_url - _remote_dns.port = tonumber(remote_dns_doh_port) or 443 - _remote_dns_ip = remote_dns_doh_ip - end - - if _remote_dns.address then - table.insert(dns_servers, { - outboundTag = remote_dns_detour == "direct" and "direct" or nil, - server = _remote_dns - }) - end - - local _remote_fakedns = nil - if remote_dns_fake then - fakedns = {} - local fakedns4 = { - ipPool = "198.18.0.0/16", - poolSize = 65535 - } - local fakedns6 = { - ipPool = "fc00::/18", - poolSize = 65535 - } - if remote_dns_query_strategy == "UseIP" then - table.insert(fakedns, fakedns4) - table.insert(fakedns, fakedns6) - elseif remote_dns_query_strategy == "UseIPv4" then - table.insert(fakedns, fakedns4) - elseif remote_dns_query_strategy == "UseIPv6" then - table.insert(fakedns, fakedns6) - end - _remote_fakedns = { - tag = remote_fakedns_tag, - address = "fakedns", - } - table.insert(dns_servers, { - server = _remote_fakedns - }) - end - - local _direct_dns = nil - if direct_dns_udp_server then - local domain = {} - local nodes_domain_text = sys.exec('uci show passwall2 | grep ".address=" | cut -d "\'" -f 2 | grep "[a-zA-Z]$" | sort -u') - string.gsub(nodes_domain_text, '[^' .. "\r\n" .. ']+', function(w) - table.insert(domain, "full:" .. w) - end) - if #domain > 0 then - table.insert(dns_domain_rules, 1, { - shunt_rule_name = "logic-vpslist", - outboundTag = "direct", - domain = domain - }) - end - - _direct_dns = { - tag = direct_dns_tag, - address = direct_dns_udp_server, - port = tonumber(direct_dns_udp_port) or 53, - queryStrategy = (direct_dns_query_strategy and direct_dns_query_strategy ~= "") and direct_dns_query_strategy or "UseIP", - } - - if _direct_dns.address then - table.insert(dns_servers, { - outboundTag = "direct", - server = _direct_dns - }) - end - end - - if dns_listen_port then - table.insert(inbounds, { - listen = "127.0.0.1", - port = tonumber(dns_listen_port), - protocol = "dokodemo-door", - tag = "dns-in", - settings = { - address = "0.0.0.0", - network = "tcp,udp" - } - }) - local direct_type_dns = { - settings = { - address = direct_dns_udp_server, - port = tonumber(direct_dns_udp_port) or 53, - network = "udp", - nonIPQuery = "skip", - blockTypes = { - 65 - } - }, - proxySettings = { - tag = "direct" - } - } - local remote_type_dns = { - settings = { - address = remote_dns_udp_server, - port = tonumber(remote_dns_udp_port) or 53, - network = _remote_dns_proto or "tcp", - nonIPQuery = "reject" - } - } - local type_dns = direct_type_dns - table.insert(outbounds, { - tag = "dns-out", - protocol = "dns", - proxySettings = type_dns.proxySettings, - settings = type_dns.settings - }) - table.insert(routing.rules, 1, { - inboundTag = { - "dns-in" - }, - outboundTag = "dns-out" - }) - end - - local default_dns_tag_name = remote_dns_tag - if (not COMMON.default_balancer_tag and not COMMON.default_outbound_tag) or COMMON.default_outbound_tag == "direct" then - default_dns_tag_name = direct_dns_tag - end - - if dns_servers and #dns_servers > 0 then - -- Default DNS logic - local default_dns_server = nil - for index, value in ipairs(dns_servers) do - if not default_dns_server and value.server.tag == default_dns_tag_name then - default_dns_server = api.clone(value) - default_dns_server.server.tag = default_dns_tag - if value.server.tag == remote_dns_tag then - if remote_dns_fake then - default_dns_server.server = api.clone(_remote_fakedns) - default_dns_server.server.tag = default_dns_tag - else - default_dns_server.outboundTag = value.outboundTag or COMMON.default_outbound_tag - default_dns_server.balancerTag = COMMON.default_balancer_tag - end - end - table.insert(dns_servers, 1, default_dns_server) - break - end - end - - -- Shunt rule DNS logic - if dns_domain_rules and #dns_domain_rules > 0 then - for index, value in ipairs(dns_domain_rules) do - if value.domain and (value.outboundTag or value.balancerTag) then - local dns_server = nil - local dns_outboundTag = value.outboundTag - local dns_balancerTag = value.balancerTag - if value.outboundTag == "direct" then - dns_server = api.clone(_direct_dns) - else - if remote_dns_fake then - dns_server = api.clone(_remote_fakedns) - else - dns_server = api.clone(_remote_dns) - if remote_dns_detour == "direct" then - dns_outboundTag = "direct" - dns_balancerTag = nil - end - end - end - dns_server.domains = value.domain - if value.shunt_rule_name then - dns_server.tag = "dns-in-" .. value.shunt_rule_name - end - - if dns_server then - table.insert(dns_servers, { - outboundTag = dns_outboundTag, - balancerTag = dns_balancerTag, - server = dns_server - }) - end - end - end - end - - for i = #dns_servers, 1, -1 do - local value = dns_servers[i] - if value.server.tag ~= direct_dns_tag and value.server.tag ~= remote_dns_tag then - -- DNS rule must be at the front, prevents being matched by rules. - if (value.outboundTag or value.balancerTag) and value.server.address ~= "fakedns" then - table.insert(routing.rules, 1, { - inboundTag = { - value.server.tag - }, - outboundTag = value.outboundTag, - balancerTag = value.balancerTag - }) - end - if (value.server.domains and #value.server.domains > 0) or value.server.tag == default_dns_tag then - -- Only keep default DNS server or has domains DNS server. - table.insert(dns.servers, 1, value.server) - end - end - end - end - - local default_rule_index = nil - for index, value in ipairs(routing.rules) do - if value.ruleTag == "default" then - default_rule_index = index - break - end - end - if default_rule_index then - local default_rule = api.clone(routing.rules[default_rule_index]) - table.remove(routing.rules, default_rule_index) - table.insert(routing.rules, default_rule) - end - - local dns_hosts_len = 0 - for key, value in pairs(dns.hosts) do - dns_hosts_len = dns_hosts_len + 1 - end - - if dns_hosts_len == 0 then - dns.hosts = nil - end - - local content = flag .. node_id .. jsonc.stringify(routing.rules) - if api.cacheFileCompareToLogic(CACHE_TEXT_FILE, content) == false then - --clear ipset/nftset - if direct_ipset then - string.gsub(direct_ipset, '[^' .. "," .. ']+', function(w) - sys.call("ipset -q -F " .. w) - end) - local ipset_prefix_name = "passwall2_" .. node_id .. "_" - local ipset_list = sys.exec("ipset list | grep 'Name: ' | grep '" .. ipset_prefix_name .. "' | awk '{print $2}'") - string.gsub(ipset_list, '[^' .. "\r\n" .. ']+', function(w) - sys.call("ipset -q -F " .. w) - end) - end - if direct_nftset then - string.gsub(direct_nftset, '[^' .. "," .. ']+', function(w) - local split = api.split(w, "#") - if #split > 3 then - local ip_type = split[1] - local family = split[2] - local table_name = split[3] - local set_name = split[4] - sys.call(string.format("nft flush set %s %s %s 2>/dev/null", family, table_name, set_name)) - end - end) - local family = "inet" - local table_name = "passwall2" - local nftset_prefix_name = "passwall2_" .. node_id .. "_" - local nftset_list = sys.exec("nft -a list sets | grep -E '" .. nftset_prefix_name .. "' | awk -F 'set ' '{print $2}' | awk '{print $1}'") - string.gsub(nftset_list, '[^' .. "\r\n" .. ']+', function(w) - sys.call(string.format("nft flush set %s %s %s 2>/dev/null", family, table_name, w)) - end) - end - end - end - - if inbounds or outbounds then - local config = { - log = { - --access = string.format("/tmp/etc/%s/%s_access.log", appname, "global"), - --error = string.format("/tmp/etc/%s/%s_error.log", appname, "global"), - --dnsLog = true, - loglevel = loglevel - }, - dns = dns, - fakedns = fakedns, - inbounds = inbounds, - outbounds = outbounds, - observatory = (not burstObservatory) and observatory or nil, - burstObservatory = burstObservatory, - routing = routing, - policy = { - levels = { - [0] = { - -- handshake = 4, - -- connIdle = 300, - -- uplinkOnly = 2, - -- downlinkOnly = 5, - bufferSize = xray_settings.buffer_size and tonumber(xray_settings.buffer_size) or nil, - statsUserUplink = false, - statsUserDownlink = false - } - }, - -- system = { - -- statsInboundUplink = false, - -- statsInboundDownlink = false - -- } - } - } - - if xray_settings.fragment == "1" or xray_settings.noise == "1" then - table.insert(outbounds, { - protocol = "freedom", - tag = "dialerproxy", - settings = { - domainStrategy = (direct_dns_query_strategy and direct_dns_query_strategy ~= "") and direct_dns_query_strategy or "UseIP", - fragment = (xray_settings.fragment == "1") and { - packets = (xray_settings.fragment_packets and xray_settings.fragment_packets ~= "") and xray_settings.fragment_packets, - length = (xray_settings.fragment_length and xray_settings.fragment_length ~= "") and xray_settings.fragment_length, - interval = (xray_settings.fragment_interval and xray_settings.fragment_interval ~= "") and xray_settings.fragment_interval, - maxSplit = (xray_settings.fragment_maxSplit and xray_settings.fragment_maxSplit ~= "") and xray_settings.fragment_maxSplit - } or nil, - noises = (xray_settings.noise == "1") and get_noise_packets() or nil - }, - streamSettings = { - sockopt = { - mark = 255 - } - } - }) - end - - local direct_outbound = { - protocol = "freedom", - tag = "direct", - settings = { - domainStrategy = (direct_dns_query_strategy and direct_dns_query_strategy ~= "") and direct_dns_query_strategy or "UseIP" - }, - streamSettings = { - sockopt = { - mark = 255 - } - } - } - if COMMON.default_outbound_tag == "direct" then - table.insert(outbounds, 1, direct_outbound) - else - table.insert(outbounds, direct_outbound) - end - - local blackhole_outbound = { - protocol = "blackhole", - tag = "blackhole" - } - if COMMON.default_outbound_tag == "blackhole" then - table.insert(outbounds, 1, blackhole_outbound) - else - table.insert(outbounds, blackhole_outbound) - end - - for index, value in ipairs(config.outbounds) do - local s = value.settings - if not value["_flag_proxy_tag"] and value["_id"] and s and not no_run and - ((s.vnext and s.vnext[1] and s.vnext[1].address and s.vnext[1].port) or - (s.servers and s.servers[1] and s.servers[1].address and s.servers[1].port) or - (s.peers and s.peers[1] and s.peers[1].endpoint) or - (s.address and s.port)) then - sys.call(string.format("echo '%s' >> %s", value["_id"], api.TMP_PATH .. "/direct_node_list")) - end - for k, v in pairs(config.outbounds[index]) do - if k:find("_") == 1 then - config.outbounds[index][k] = nil - end - end - end - return jsonc.stringify(config, 1) - end -end - -function gen_proto_config(var) - local local_socks_address = var["-local_socks_address"] or "0.0.0.0" - local local_socks_port = var["-local_socks_port"] - local local_socks_username = var["-local_socks_username"] - local local_socks_password = var["-local_socks_password"] - local local_http_address = var["-local_http_address"] or "0.0.0.0" - local local_http_port = var["-local_http_port"] - local local_http_username = var["-local_http_username"] - local local_http_password = var["-local_http_password"] - local server_proto = var["-server_proto"] - local server_address = var["-server_address"] - local server_port = var["-server_port"] - local server_username = var["-server_username"] - local server_password = var["-server_password"] - - local inbounds = {} - local outbounds = {} - local routing = nil - - if local_socks_address and local_socks_port then - local inbound = { - listen = local_socks_address, - port = tonumber(local_socks_port), - protocol = "socks", - settings = { - udp = true, - auth = "noauth" - } - } - if local_socks_username and local_socks_password and local_socks_username ~= "" and local_socks_password ~= "" then - inbound.settings.auth = "password" - inbound.settings.accounts = { - { - user = local_socks_username, - pass = local_socks_password - } - } - end - table.insert(inbounds, inbound) - end - - if local_http_address and local_http_port then - local inbound = { - listen = local_http_address, - port = tonumber(local_http_port), - protocol = "http", - settings = { - allowTransparent = false - } - } - if local_http_username and local_http_password and local_http_username ~= "" and local_http_password ~= "" then - inbound.settings.accounts = { - { - user = local_http_username, - pass = local_http_password - } - } - end - table.insert(inbounds, inbound) - end - - if server_proto ~= "nil" and server_address ~= "nil" and server_port ~= "nil" then - local outbound = { - protocol = server_proto, - streamSettings = { - network = "tcp", - security = "none" - }, - settings = { - servers = { - { - address = server_address, - port = tonumber(server_port), - users = (server_username and server_password) and { - { - user = server_username, - pass = server_password - } - } or nil - } - } - } - } - if outbound then table.insert(outbounds, outbound) end - end - - table.insert(outbounds, { - protocol = "freedom", tag = "direct", settings = {keep = ""} - }) - - local config = { - log = { - loglevel = "warning" - }, - inbounds = inbounds, - outbounds = outbounds, - routing = routing - } - return jsonc.stringify(config, 1) -end - -function gen_dns_config(var) - local dns_listen_port = var["-dns_listen_port"] - local dns_out_tag = var["-dns_out_tag"] - local direct_dns_udp_server = var["-direct_dns_udp_server"] - local direct_dns_udp_port = var["-direct_dns_udp_port"] - local direct_dns_tcp_server = var["-direct_dns_tcp_server"] - local direct_dns_tcp_port = var["-direct_dns_tcp_port"] - local direct_dns_doh_url = var["-direct_dns_doh_url"] - local direct_dns_doh_host = var["-direct_dns_doh_host"] - local direct_dns_doh_ip = var["-direct_dns_doh_ip"] - local direct_dns_doh_port = var["-direct_dns_doh_port"] - local direct_dns_query_strategy = var["-direct_dns_query_strategy"] - local remote_dns_udp_server = var["-remote_dns_udp_server"] - local remote_dns_udp_port = var["-remote_dns_udp_port"] - local remote_dns_tcp_server = var["-remote_dns_tcp_server"] - local remote_dns_tcp_port = var["-remote_dns_tcp_port"] - local remote_dns_doh_url = var["-remote_dns_doh_url"] - local remote_dns_doh_host = var["-remote_dns_doh_host"] - local remote_dns_doh_ip = var["-remote_dns_doh_ip"] - local remote_dns_doh_port = var["-remote_dns_doh_port"] - local remote_dns_query_strategy = var["-remote_dns_query_strategy"] - local remote_dns_detour = var["-remote_dns_detour"] - local remote_dns_client_ip = var["-remote_dns_client_ip"] - local remote_dns_outbound_socks_address = var["-remote_dns_outbound_socks_address"] - local remote_dns_outbound_socks_port = var["-remote_dns_outbound_socks_port"] - local dns_cache = var["-dns_cache"] - local loglevel = var["-loglevel"] or "warning" - - local inbounds = {} - local outbounds = {} - local dns = nil - local routing = nil - - if dns_listen_port then - routing = { - domainStrategy = "IPOnDemand", - rules = {} - } - - dns = { - tag = "dns-global", - hosts = {}, - disableCache = (dns_cache == "1") and false or true, - disableFallback = true, - disableFallbackIfMatch = true, - servers = {}, - clientIp = (remote_dns_client_ip and remote_dns_client_ip ~= "") and remote_dns_client_ip or nil, - } - - local other_type_dns_proto, other_type_dns_server, other_type_dns_port - - if dns_out_tag == "remote" then - dns.queryStrategy = (remote_dns_query_strategy and remote_dns_query_strategy ~= "") and remote_dns_query_strategy or "UseIPv4" - if remote_dns_detour == "direct" then - dns_out_tag = "direct" - table.insert(outbounds, 1, { - tag = dns_out_tag, - protocol = "freedom", - settings = { - domainStrategy = (direct_dns_query_strategy and direct_dns_query_strategy ~= "") and direct_dns_query_strategy or "UseIP" - }, - streamSettings = { - sockopt = { - mark = 255 - } - } - }) - else - if remote_dns_outbound_socks_address and remote_dns_outbound_socks_port then - table.insert(outbounds, 1, { - tag = dns_out_tag, - protocol = "socks", - streamSettings = { - network = "tcp", - security = "none" - }, - settings = { - servers = { - { - address = remote_dns_outbound_socks_address, - port = tonumber(remote_dns_outbound_socks_port) - } - } - } - }) - end - end - - local _remote_dns = { - tag = "dns-in-remote" - } - - if remote_dns_udp_server then - _remote_dns.address = remote_dns_udp_server - _remote_dns.port = tonumber(remote_dns_udp_port) or 53 - - other_type_dns_proto = "udp" - other_type_dns_server = remote_dns_udp_server - other_type_dns_port = _remote_dns.port - end - - if remote_dns_tcp_server then - _remote_dns.address = "tcp://" .. remote_dns_tcp_server .. ":" .. tonumber(remote_dns_tcp_port) or 53 - _remote_dns.port = tonumber(remote_dns_tcp_port) or 53 - - other_type_dns_proto = "tcp" - other_type_dns_server = remote_dns_tcp_server - other_type_dns_port = _remote_dns.port - end - - if remote_dns_doh_url and remote_dns_doh_host then - if remote_dns_doh_ip and remote_dns_doh_host ~= remote_dns_doh_ip and not api.is_ip(remote_dns_doh_host) then - dns.hosts[remote_dns_doh_host] = remote_dns_doh_ip - end - _remote_dns.address = remote_dns_doh_url - _remote_dns.port = tonumber(remote_dns_doh_port) or 443 - end - - table.insert(dns.servers, _remote_dns) - elseif dns_out_tag == "direct" then - dns.queryStrategy = (direct_dns_query_strategy and direct_dns_query_strategy ~= "") and direct_dns_query_strategy or "UseIP" - table.insert(outbounds, 1, { - tag = dns_out_tag, - protocol = "freedom", - settings = { - domainStrategy = dns.queryStrategy - }, - streamSettings = { - sockopt = { - mark = 255 - } - } - }) - - local _direct_dns = { - tag = "dns-in-direct" - } - - if direct_dns_udp_server then - _direct_dns.address = direct_dns_udp_server - _direct_dns.port = tonumber(direct_dns_udp_port) or 53 - table.insert(routing.rules, 1, { - ip = { - direct_dns_udp_server - }, - port = tonumber(direct_dns_udp_port) or 53, - network = "udp", - outboundTag = "direct" - }) - - other_type_dns_proto = "udp" - other_type_dns_server = direct_dns_udp_server - other_type_dns_port = _direct_dns.port - end - - if direct_dns_tcp_server then - _direct_dns.address = "tcp+local://" .. direct_dns_tcp_server - _direct_dns.port = tonumber(direct_dns_tcp_port) or 53 - - other_type_dns_proto = "tcp" - other_type_dns_server = direct_dns_tcp_server - other_type_dns_port = _direct_dns.port - end - - if direct_dns_doh_url and direct_dns_doh_host then - if direct_dns_doh_ip and direct_dns_doh_host ~= direct_dns_doh_ip and not api.is_ip(direct_dns_doh_host) then - dns.hosts[direct_dns_doh_host] = direct_dns_doh_ip - end - _direct_dns.address = direct_dns_doh_url:gsub("https://", "https+local://") - _direct_dns.port = tonumber(direct_dns_doh_port) or 443 - end - - table.insert(dns.servers, _direct_dns) - end - - local dns_hosts_len = 0 - for key, value in pairs(dns.hosts) do - dns_hosts_len = dns_hosts_len + 1 - end - - if dns_hosts_len == 0 then - dns.hosts = nil - end - - table.insert(inbounds, { - listen = "127.0.0.1", - port = tonumber(dns_listen_port), - protocol = "dokodemo-door", - tag = "dns-in", - settings = { - address = other_type_dns_server or "1.1.1.1", - port = other_type_dns_port or 53, - network = "tcp,udp" - } - }) - - table.insert(outbounds, { - tag = "dns-out", - protocol = "dns", - proxySettings = { - tag = dns_out_tag - }, - settings = { - address = other_type_dns_server or "1.1.1.1", - port = other_type_dns_port or 53, - network = other_type_dns_proto or "tcp", - nonIPQuery = "reject" - } - }) - - table.insert(routing.rules, 1, { - inboundTag = { - "dns-in" - }, - outboundTag = "dns-out" - }) - - table.insert(routing.rules, { - inboundTag = { - "dns-global" - }, - outboundTag = dns_out_tag - }) - end - - if inbounds or outbounds then - local config = { - log = { - --dnsLog = true, - loglevel = loglevel - }, - dns = dns, - inbounds = inbounds, - outbounds = outbounds, - routing = routing - } - return jsonc.stringify(config, 1) - end - -end - -_G.gen_config = gen_config -_G.gen_proto_config = gen_proto_config -_G.gen_dns_config = gen_dns_config - -if arg[1] then - local func =_G[arg[1]] - if func then - print(func(api.get_function_args(arg))) - end -end diff --git a/small/luci-app-passwall2/luasrc/view/passwall2/app_update/app_version.htm b/small/luci-app-passwall2/luasrc/view/passwall2/app_update/app_version.htm deleted file mode 100644 index 0dcbb55961..0000000000 --- a/small/luci-app-passwall2/luasrc/view/passwall2/app_update/app_version.htm +++ /dev/null @@ -1,212 +0,0 @@ -<% -local api = require "luci.passwall2.api" -local com = require "luci.passwall2.com" -local version = {} --%> - - - -
- -
-
- 【 <%=api.get_version()%> 】 - - -
-
-
- -<%for k, v in pairs(com) do - version[k] = api.get_app_version(k)%> -
- -
-
- 【 <%=version[k] ~="" and version[k] or translate("Null") %> 】 - - - -
-
-
-<%end%> diff --git a/small/luci-app-passwall2/luasrc/view/passwall2/cbi/hidevalue.htm b/small/luci-app-passwall2/luasrc/view/passwall2/cbi/hidevalue.htm deleted file mode 100644 index 76a1ff2340..0000000000 --- a/small/luci-app-passwall2/luasrc/view/passwall2/cbi/hidevalue.htm +++ /dev/null @@ -1,3 +0,0 @@ -
" data-index="<%=self.index%>" data-depends="<%=pcdata(self:deplist2json(section))%>" style="display: none !important"> - " /> -
diff --git a/small/luci-app-passwall2/luasrc/view/passwall2/cbi/nodes_listvalue.htm b/small/luci-app-passwall2/luasrc/view/passwall2/cbi/nodes_listvalue.htm deleted file mode 100644 index 2081a531b9..0000000000 --- a/small/luci-app-passwall2/luasrc/view/passwall2/cbi/nodes_listvalue.htm +++ /dev/null @@ -1,145 +0,0 @@ -<%+cbi/valueheader%> -<% --- Template Developers: --- - lwb1978 --- - snowie2000 --- Copyright: copyright(c)2025–2027 --- Description: Passwall(2) UI template - -local json = require "luci.jsonc" - --- 读取值(keylist/vallist/group) -local values = {} -for i, key in pairs(self.keylist) do - values[#values + 1] = { - key = key, - label = self.vallist[i] or key, - group = self.group and self.group[i] or nil - } -end - --- 获取当前配置值(单值) -local current_key = nil -local cval = self:cfgvalue(section) -if type(cval) == "table" then - -- 若意外为table,取第一个 - for k,_ in pairs(cval) do - current_key = k - break - end -elseif type(cval) == "string" then - current_key = (cval:match("%S+")) -- 取第一个 token -end - --- 分离无组节点(ungrouped)与有组节点(grouped),并保持原有顺序 -local ungrouped = {} -local groups = {} -local group_order = {} -for _, item in ipairs(values) do - if not item.group or item.group == "" then - table.insert(ungrouped, item) - else - local g = item.group - if not groups[g] then - groups[g] = {} - table.insert(group_order, g) - end - table.insert(groups[g], item) - end -end - --- 如果没有配置值,默认取第一个(优先无组第一项,否则第一组第一项) -if not current_key then - if #ungrouped > 0 then - current_key = ungrouped[1].key - else - -- 找到 group_order 第一个有节点的项 - for _, g in ipairs(group_order) do - if groups[g] and #groups[g] > 0 then - current_key = groups[g][1].key - break - end - end - end -end - --- 获取当前 label(用于主控件显示) -local function find_label_by_key(k) - if not k then return "" end - for _, v in ipairs(values) do - if v.key == k then return v.label end - end - return "" -end -local current_label = find_label_by_key(current_key) or "" - --- 打包数据给 JS -local dropdown_data = { - current_key = current_key, - current_label = current_label, - ungrouped = ungrouped, - groups = groups, - group_order = group_order, - cbid = cbid, -} -%> - - -
- - - -
- - <%=pcdata(current_label ~= "" and current_label or ("("..translate("Not set")..")"))%> - - -
- - -
- -<%+cbi/valuefooter%> - - diff --git a/small/luci-app-passwall2/luasrc/view/passwall2/cbi/nodes_listvalue_com.htm b/small/luci-app-passwall2/luasrc/view/passwall2/cbi/nodes_listvalue_com.htm deleted file mode 100644 index 072cd98701..0000000000 --- a/small/luci-app-passwall2/luasrc/view/passwall2/cbi/nodes_listvalue_com.htm +++ /dev/null @@ -1,690 +0,0 @@ -<% --- Template Developers: --- - lwb1978 --- - snowie2000 --- Copyright: copyright(c)2025–2027 --- Description: Passwall(2) UI template --- It is the common part of the template and cannot be used independently -%> - - - diff --git a/small/luci-app-passwall2/luasrc/view/passwall2/cbi/nodes_multivalue.htm b/small/luci-app-passwall2/luasrc/view/passwall2/cbi/nodes_multivalue.htm deleted file mode 100644 index 199e67d3ff..0000000000 --- a/small/luci-app-passwall2/luasrc/view/passwall2/cbi/nodes_multivalue.htm +++ /dev/null @@ -1,131 +0,0 @@ -<%+cbi/valueheader%> -<% --- Template Developers: --- - lwb1978 --- Copyright: copyright(c)2025–2027 --- Description: Passwall(2) UI template -local json = require "luci.jsonc" -local cbid = "cbid." .. self.config .. "." .. section .. "." .. self.option - --- 读取 MultiValue -local values = {} -for i, key in pairs(self.keylist) do - values[#values + 1] = { - key = key, - label = self.vallist[i] or key, - group = self.group and self.group[i] or nil - } -end - --- 获取选中值 -local selected = {} -local cval = self:cfgvalue(section) -if type(cval) == "table" then - for _, v in pairs(cval) do - selected[v] = true - end -elseif type(cval) == "string" then - for v in cval:gmatch("%S+") do - selected[v] = true - end -end - --- 按原顺序分组 -local groups = {} -local group_order = {} -for _, item in ipairs(values) do - local g = item.group - if not g or g == "" then - g = translate("default") - end - if not groups[g] then - groups[g] = {} - table.insert(group_order, g) - end - table.insert(groups[g], item) -end - -local total_count = #values -local selected_count = 0 -for _, item in ipairs(values) do - if selected[item.key] then - selected_count = selected_count + 1 - end -end - -local function idSafe(id) - return (id - :gsub("^%s+", "") - :gsub("%s+$", "") - :gsub("%s+", "-") - :gsub("[%z\1-\31\127]", "") - ) -end -%> - -
- - - - -
-
    - <% for _, gname in ipairs(group_order) do local items = groups[gname] %> -
  • - -
    - - <%=pcdata(gname)%> - <% - local g_selected = 0 - for _, it in ipairs(items) do - if selected[it.key] then - g_selected = g_selected + 1 - end - end - %> - - (<%=g_selected%>/<%=#items%>) - -
    - - -
  • - <% end %> -
-
- -
- - - <%:Selected:%> <%=selected_count%>/<%=total_count%> -
-
-<%+cbi/valuefooter%> - - diff --git a/small/luci-app-passwall2/luasrc/view/passwall2/cbi/nodes_multivalue_com.htm b/small/luci-app-passwall2/luasrc/view/passwall2/cbi/nodes_multivalue_com.htm deleted file mode 100644 index 275cb73db6..0000000000 --- a/small/luci-app-passwall2/luasrc/view/passwall2/cbi/nodes_multivalue_com.htm +++ /dev/null @@ -1,478 +0,0 @@ -<% --- Template Developers: --- - lwb1978 --- Copyright: copyright(c)2025–2027 --- Description: Passwall(2) UI template -%> - - - - diff --git a/small/luci-app-passwall2/luasrc/view/passwall2/cbi/nodes_value.htm b/small/luci-app-passwall2/luasrc/view/passwall2/cbi/nodes_value.htm deleted file mode 100644 index 9745dd8348..0000000000 --- a/small/luci-app-passwall2/luasrc/view/passwall2/cbi/nodes_value.htm +++ /dev/null @@ -1,159 +0,0 @@ -<%+cbi/valueheader%> -<% --- Template Developers: --- - lwb1978 --- Copyright: copyright(c)2025–2027 --- Description: Passwall(2) UI template - -local json = require "luci.jsonc" - --- 读取值(keylist/vallist/group) -local values = {{key = "", label = translate("-- Please choose --")}} -for i, key in pairs(self.keylist) do - if key and key ~= "" then - values[#values + 1] = { - key = key, - label = self.vallist[i] or key, - group = self.group and self.group[i] or nil - } - end -end - --- 获取当前配置值(单值) -local current_key = nil -local cval = self:cfgvalue(section) -if type(cval) == "table" then - -- 若意外为table,取第一个 - for k,_ in pairs(cval) do - current_key = k - break - end -elseif type(cval) == "string" then - current_key = (cval:match("%S+")) -- 取第一个 token -end - --- 分离无组节点(ungrouped)与有组节点(grouped),并保持原有顺序 -local ungrouped = {} -local groups = {} -local group_order = {} -local current_key_added = false -for _, item in ipairs(values) do - if not current_key_added and current_key and current_key ~= "" and item.key == current_key then - current_key_added = true - end - if not item.group or item.group == "" then - table.insert(ungrouped, item) - else - local g = item.group - if not groups[g] then - groups[g] = {} - table.insert(group_order, g) - end - table.insert(groups[g], item) - end -end -if not current_key_added and current_key and current_key ~= "" then - table.insert(ungrouped, {key = current_key, label = current_key}) -end - --- 如果没有配置值,默认取第一个(优先无组第一项,否则第一组第一项) -if not current_key then - if #ungrouped > 0 then - current_key = ungrouped[1].key - else - -- 找到 group_order 第一个有节点的项 - for _, g in ipairs(group_order) do - if groups[g] and #groups[g] > 0 then - current_key = groups[g][1].key - break - end - end - end -end - --- 获取当前 label(用于主控件显示) -local function find_label_by_key(k) - if not k then return "" end - for _, v in ipairs(values) do - if v.key == k then return v.label end - end - return "" -end -local current_label = find_label_by_key(current_key) or "" - --- 打包数据给 JS -local dropdown_data = { - current_key = current_key, - current_label = current_label, - ungrouped = ungrouped, - groups = groups, - group_order = group_order, - cbid = cbid, -} -%> - - -
- - - - -
- - <%=pcdata(current_label ~= "" and current_label or current_key)%> - - -
- - -
- -<%+cbi/valuefooter%> - - diff --git a/small/luci-app-passwall2/luasrc/view/passwall2/cbi/nodes_value_com.htm b/small/luci-app-passwall2/luasrc/view/passwall2/cbi/nodes_value_com.htm deleted file mode 100644 index 41b5f8b6d9..0000000000 --- a/small/luci-app-passwall2/luasrc/view/passwall2/cbi/nodes_value_com.htm +++ /dev/null @@ -1,722 +0,0 @@ -<% --- Template Developers: --- - lwb1978 --- Copyright: copyright(c)2025–2027 --- Description: Passwall(2) UI template --- It is the common part of the template and cannot be used independently -%> - - - diff --git a/small/luci-app-passwall2/luasrc/view/passwall2/cbi/optimize_cbi_ui.htm b/small/luci-app-passwall2/luasrc/view/passwall2/cbi/optimize_cbi_ui.htm deleted file mode 100644 index 3fccf13cdf..0000000000 --- a/small/luci-app-passwall2/luasrc/view/passwall2/cbi/optimize_cbi_ui.htm +++ /dev/null @@ -1,22 +0,0 @@ - diff --git a/small/luci-app-passwall2/luasrc/view/passwall2/global/backup.htm b/small/luci-app-passwall2/luasrc/view/passwall2/global/backup.htm deleted file mode 100644 index aec626b8ea..0000000000 --- a/small/luci-app-passwall2/luasrc/view/passwall2/global/backup.htm +++ /dev/null @@ -1,241 +0,0 @@ -<% -local api = require "luci.passwall2.api" --%> - -
-

<%:Backup and Restore%>

-
- <%:Backup or Restore Client and Server Configurations.%> -
- <%:Note: Restoring configurations across different versions may cause compatibility issues.%> -
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
- - - - - - diff --git a/small/luci-app-passwall2/luasrc/view/passwall2/global/faq.htm b/small/luci-app-passwall2/luasrc/view/passwall2/global/faq.htm deleted file mode 100644 index b3c26ff52a..0000000000 --- a/small/luci-app-passwall2/luasrc/view/passwall2/global/faq.htm +++ /dev/null @@ -1,66 +0,0 @@ -<% -local api = require "luci.passwall2.api" --%> - -
-
-
    - <%:DNS related issues:%> -
  • 1. <%:Certain browsers such as Chrome have built-in DNS service, which may affect DNS resolution settings. You can go to 'Settings -> Privacy and security -> Use secure DNS' menu to turn it off.%>
  • -
  • 2. <%:If you are unable to access the internet after reboot, please try clearing the cache of your terminal devices (make sure to close all open browser application windows first, this step is especially important):%> -
    • <%:For Windows systems, open Command Prompt and run the command 'ipconfig /flushdns'.%>
    • -
    • <%:For Mac systems, open Terminal and run the command 'sudo killall -HUP mDNSResponder'.%>
    • -
    • <%:For mobile devices, you can clear it by reconnecting to the network, such as toggling Airplane Mode and reconnecting to WiFi.%>
    • -
    -
  • -
  • 3. <%:Please make sure your device's network settings point both the DNS server and default gateway to this router, to ensure DNS queries are properly routed.%>
  • -
-
-
-
- - diff --git a/small/luci-app-passwall2/luasrc/view/passwall2/global/footer.htm b/small/luci-app-passwall2/luasrc/view/passwall2/global/footer.htm deleted file mode 100644 index 8f0a346b03..0000000000 --- a/small/luci-app-passwall2/luasrc/view/passwall2/global/footer.htm +++ /dev/null @@ -1,125 +0,0 @@ -<% -local api = require "luci.passwall2.api" --%> - - \ No newline at end of file diff --git a/small/luci-app-passwall2/luasrc/view/passwall2/global/status.htm b/small/luci-app-passwall2/luasrc/view/passwall2/global/status.htm deleted file mode 100644 index 03b2e56d0a..0000000000 --- a/small/luci-app-passwall2/luasrc/view/passwall2/global/status.htm +++ /dev/null @@ -1,197 +0,0 @@ -<% -local api = require "luci.passwall2.api" --%> - - - -
-
-
-
-
-
- -
-
-
-

Core
<%:NOT RUNNING%>

-
-
-
-
-
-
-
- -
-
-
-

<%:Baidu Connection%>
<%:Touch Check%>

-
-
-
-
-
-
-
- -
-
-
-

<%:Google Connection%>
<%:Touch Check%>

-
-
-
-
-
-
-
- -
-
-
-

<%:GitHub Connection%>
<%:Touch Check%>

-
-
-
-
- -
diff --git a/small/luci-app-passwall2/luasrc/view/passwall2/haproxy/js.htm b/small/luci-app-passwall2/luasrc/view/passwall2/haproxy/js.htm deleted file mode 100644 index 94c4ae6e43..0000000000 --- a/small/luci-app-passwall2/luasrc/view/passwall2/haproxy/js.htm +++ /dev/null @@ -1,202 +0,0 @@ -<% -local api = require "luci.passwall2.api" --%> - - - - diff --git a/small/luci-app-passwall2/luasrc/view/passwall2/haproxy/status.htm b/small/luci-app-passwall2/luasrc/view/passwall2/haproxy/status.htm deleted file mode 100644 index 639edf434a..0000000000 --- a/small/luci-app-passwall2/luasrc/view/passwall2/haproxy/status.htm +++ /dev/null @@ -1,30 +0,0 @@ -<% -local api = require "luci.passwall2.api" -local haproxy_enable = api.uci_get_type("global_haproxy", "balancing_enable", "0") -local console_port = api.uci_get_type("global_haproxy", "console_port", "") --%> -

- - diff --git a/small/luci-app-passwall2/luasrc/view/passwall2/log/log.htm b/small/luci-app-passwall2/luasrc/view/passwall2/log/log.htm deleted file mode 100644 index 4e6714ed7e..0000000000 --- a/small/luci-app-passwall2/luasrc/view/passwall2/log/log.htm +++ /dev/null @@ -1,44 +0,0 @@ -<% -local api = require "luci.passwall2.api" --%> - -
- - -
diff --git a/small/luci-app-passwall2/luasrc/view/passwall2/node_list/link_add_node.htm b/small/luci-app-passwall2/luasrc/view/passwall2/node_list/link_add_node.htm deleted file mode 100644 index 454e8aacb7..0000000000 --- a/small/luci-app-passwall2/luasrc/view/passwall2/node_list/link_add_node.htm +++ /dev/null @@ -1,541 +0,0 @@ -<% -local api = require "luci.passwall2.api" --%> - - - - - - - -
-
-

<%:Reassign Node Group%>

-
-
- -
-
- <%:default%> - -
- - -
-
-
-
- - -
-
-
- - - -
-
- - - - - - - - - -
-
- - diff --git a/small/luci-app-passwall2/luasrc/view/passwall2/node_list/link_share_man.htm b/small/luci-app-passwall2/luasrc/view/passwall2/node_list/link_share_man.htm deleted file mode 100644 index ece840c679..0000000000 --- a/small/luci-app-passwall2/luasrc/view/passwall2/node_list/link_share_man.htm +++ /dev/null @@ -1,1706 +0,0 @@ -<%+cbi/valueheader%> -<% -local api = require "luci.passwall2.api" -local appname = api.appname -local map = self.map - -local has_ss = api.is_finded("ss-redir") -local has_ss_rust = api.is_finded("sslocal") -local has_singbox = api.finded_com("sing-box") -local has_xray = api.finded_com("xray") -local has_hysteria2 = api.finded_com("hysteria") - -local function get_core(field, candidates) - local v = map:get("@global_subscribe[0]", field) - if not v or v == "" then - for _, c in ipairs(candidates) do - if c[1] then return c[2] end - end - end - return v -end - -local ss_type = get_core("ss_type", {{has_ss,"shadowsocks-libev"},{has_ss_rust,"shadowsocks-rust"},{has_singbox,"sing-box"},{has_xray,"xray"}}) -local trojan_type = get_core("trojan_type", {{has_singbox,"sing-box"},{has_xray,"xray"}}) -local vmess_type = get_core("vmess_type", {{has_xray,"xray"},{has_singbox,"sing-box"}}) -local vless_type = get_core("vless_type", {{has_xray,"xray"},{has_singbox,"sing-box"}}) -local hysteria2_type = get_core("hysteria2_type", {{has_hysteria2,"hysteria2"},{has_singbox,"sing-box"}, {has_xray,"xray"}}) --%> - - - - -<%+cbi/valuefooter%> diff --git a/small/luci-app-passwall2/luasrc/view/passwall2/node_list/node_list.htm b/small/luci-app-passwall2/luasrc/view/passwall2/node_list/node_list.htm deleted file mode 100644 index d00a607674..0000000000 --- a/small/luci-app-passwall2/luasrc/view/passwall2/node_list/node_list.htm +++ /dev/null @@ -1,1060 +0,0 @@ -<% -local api = require "luci.passwall2.api" -local uci = api.uci - -local default_node_type = "" -local shunt_rule_list = {} -local node = api.uci_get_type("global", "node") -if node then - local node_type = api.uci_get_type_id(node, "type") - local node_protocol = api.uci_get_type_id(node, "protocol") - if node_type == "Xray" and node_protocol == "_shunt" then - default_node_type = node_protocol - uci:foreach("passwall2", "shunt_rules", function(e) - if e[".name"] and e.remarks then - shunt_rule_list[#shunt_rule_list + 1] = e - end - end) - end -end --%> - - - - -<% if api.is_js_luci() then -%> - -<%- else %> - -<%- end %> - - - - - - - - -
-
- - - -
-
-
<%:You choose node is:%>
-
- <%- if default_node_type == "_shunt" then - for i, v in ipairs(shunt_rule_list) do - -%> - ')" value="<%=v.remarks%>" /> - <%- - end - -%> - <% else %> - - <% end %> - -
-
-
diff --git a/small/luci-app-passwall2/luasrc/view/passwall2/node_subscribe/js.htm b/small/luci-app-passwall2/luasrc/view/passwall2/node_subscribe/js.htm deleted file mode 100644 index 4fb2293c17..0000000000 --- a/small/luci-app-passwall2/luasrc/view/passwall2/node_subscribe/js.htm +++ /dev/null @@ -1,263 +0,0 @@ -<% -local api = require "luci.passwall2.api" --%> - - - - - diff --git a/small/luci-app-passwall2/luasrc/view/passwall2/rule/geoview.htm b/small/luci-app-passwall2/luasrc/view/passwall2/rule/geoview.htm deleted file mode 100644 index 7362c1c914..0000000000 --- a/small/luci-app-passwall2/luasrc/view/passwall2/rule/geoview.htm +++ /dev/null @@ -1,111 +0,0 @@ -<% -local api = require "luci.passwall2.api" --%> - - - -
-
    - <%:Tips:%> -
  • 1. <%:By entering a domain or IP, you can query the Geo rule list they belong to.%>
  • -
  • 2. <%:By entering a GeoIP or Geosite, you can extract the domains/IPs they contain.%>
  • -
  • 3. <%:Use the GeoIP/Geosite query function to verify if the entered Geo rules are correct.%>
  • -
-
-
- -
- -
- <%:Enter a domain or IP to query the Geo rule list they belong to.%> -
-
-
-
- -
- -
- <%:Enter a GeoIP or Geosite to extract the domains/IPs they contain. Format: geoip:cn or geosite:gfw%> -
-
-
-
- -
- - \ No newline at end of file diff --git a/small/luci-app-passwall2/luasrc/view/passwall2/rule/rule_version.htm b/small/luci-app-passwall2/luasrc/view/passwall2/rule/rule_version.htm deleted file mode 100644 index d90b6ac08a..0000000000 --- a/small/luci-app-passwall2/luasrc/view/passwall2/rule/rule_version.htm +++ /dev/null @@ -1,236 +0,0 @@ -<% -local api = require "luci.passwall2.api" --%> - - - - -
- -
-
- - -

-
-
-
- - diff --git a/small/luci-app-passwall2/luasrc/view/passwall2/server/log.htm b/small/luci-app-passwall2/luasrc/view/passwall2/server/log.htm deleted file mode 100644 index 28d9dd2594..0000000000 --- a/small/luci-app-passwall2/luasrc/view/passwall2/server/log.htm +++ /dev/null @@ -1,47 +0,0 @@ -<% -local api = require "luci.passwall2.api" --%> - -
- - <%:Logs%> - - - -
\ No newline at end of file diff --git a/small/luci-app-passwall2/luasrc/view/passwall2/server/users_list_status.htm b/small/luci-app-passwall2/luasrc/view/passwall2/server/users_list_status.htm deleted file mode 100644 index 390b7d0523..0000000000 --- a/small/luci-app-passwall2/luasrc/view/passwall2/server/users_list_status.htm +++ /dev/null @@ -1,38 +0,0 @@ -<% -local api = require "luci.passwall2.api" --%> - \ No newline at end of file diff --git a/small/luci-app-passwall2/luasrc/view/passwall2/socks_auto_switch/btn.htm b/small/luci-app-passwall2/luasrc/view/passwall2/socks_auto_switch/btn.htm deleted file mode 100644 index 2ad1dbe8d7..0000000000 --- a/small/luci-app-passwall2/luasrc/view/passwall2/socks_auto_switch/btn.htm +++ /dev/null @@ -1,45 +0,0 @@ -<% -local api = require "luci.passwall2.api" --%> - - - -
" data-index="<%=self.index%>" data-depends="<%=pcdata(self:deplist2json(section))%>"> - -
- - -
-
diff --git a/small/luci-app-passwall2/po/zh-cn/passwall2.po b/small/luci-app-passwall2/po/zh-cn/passwall2.po deleted file mode 100644 index 9ff9c11ef5..0000000000 --- a/small/luci-app-passwall2/po/zh-cn/passwall2.po +++ /dev/null @@ -1,2294 +0,0 @@ -msgid "Auto" -msgstr "自动" - -msgid "RUNNING" -msgstr "运行中" - -msgid "NOT RUNNING" -msgstr "未运行" - -msgid "Working..." -msgstr "连接正常" - -msgid "Problem detected!" -msgstr "连接失败" - -msgid "Touch Check" -msgstr "点我检测" - -msgid "Kernel Unsupported" -msgstr "内核不支持" - -msgid "Basic Settings" -msgstr "基本设置" - -msgid "Node List" -msgstr "节点列表" - -msgid "Other Settings" -msgstr "高级设置" - -msgid "Load Balancing" -msgstr "负载均衡" - -msgid "Enter interface" -msgstr "进入界面" - -msgid "Rule Manage" -msgstr "规则管理" - -msgid "Rule List" -msgstr "规则列表" - -msgid "Access control" -msgstr "访问控制" - -msgid "Watch Logs" -msgstr "查看日志" - -msgid "Node Config" -msgstr "节点配置" - -msgid "Running Status" -msgstr "运行状态" - -msgid "Baidu Connection" -msgstr "百度连接" - -msgid "Google Connection" -msgstr "谷歌连接" - -msgid "GitHub Connection" -msgstr "GitHub连接" - -msgid "Instagram Connection" -msgstr "Instagram连接" - -msgid "Node Check" -msgstr "节点检测" - -msgid "Check..." -msgstr "检测中..." - -msgid "Clear" -msgstr "清除" - -msgid "Main switch" -msgstr "主开关" - -msgid "Node" -msgstr "节点" - -msgid "Edit Current Node" -msgstr "编辑当前节点" - -msgid "Localhost Proxy" -msgstr "路由器本机代理" - -msgid "When selected, localhost can transparent proxy." -msgstr "当勾选时,路由器本机可以透明代理。" - -msgid "Client Proxy" -msgstr "客户端代理" - -msgid "When selected, devices in LAN can transparent proxy. Otherwise, it will not be proxy. But you can still use access control to allow the designated device to proxy." -msgstr "当勾选时,局域网内的设备可以透明代理。否则,将不代理。但您仍然可以使用访问控制允许指定的设备代理。" - -msgid "Missing components, transparent proxy is unavailable." -msgstr "缺少组件,透明代理不可用。" - -msgid "Socks Config" -msgstr "Socks 配置" - -msgid "Socks Node" -msgstr "Socks 节点" - -msgid "Current Node" -msgstr "当前节点" - -msgid "Listen Port" -msgstr "监听端口" - -msgid "0 is not use" -msgstr "0为不使用" - -msgid "Current node: %s" -msgstr "当前节点:%s" - -msgid "IP:Port mode acceptable, multi value split with english comma." -msgstr "接受 IP:Port 形式的输入,多个以英文逗号分隔。" - -msgid "Direct DNS Protocol" -msgstr "直连 DNS 协议" - -msgid "Direct DNS" -msgstr "直连 DNS" - -msgid "Direct DNS DoH" -msgstr "直连 DNS DoH" - -msgid "Direct DNS EDNS Client Subnet" -msgstr "直连 DNS EDNS Client Subnet" - -msgid "Remote DNS Protocol" -msgstr "远程 DNS 协议" - -msgid "Remote DNS" -msgstr "远程 DNS" - -msgid "Remote DNS DoH" -msgstr "远程 DNS DoH" - -msgid "Remote DNS EDNS Client Subnet" -msgstr "远程 DNS EDNS Client Subnet" - -msgid "Notify the DNS server when the DNS query is notified, the location of the client (cannot be a private IP address)." -msgstr "用于 DNS 查询时通知 DNS 服务器,客户端所在的地理位置(不能是私有 IP 地址)。" - -msgid "This feature requires the DNS server to support the Edns Client Subnet (RFC7871)." -msgstr "此功能需要 DNS 服务器支持 EDNS Client Subnet(RFC7871)。" - -msgid "Remote DNS Outbound" -msgstr "远程 DNS 出站" - -msgid "Remote" -msgstr "远程" - -msgid "Direct" -msgstr "直连" - -msgid "Direct Query Strategy" -msgstr "直连查询策略" - -msgid "Remote Query Strategy" -msgstr "远程查询策略" - -msgid "Use FakeDNS work in the domain that proxy." -msgstr "需要代理的域名使用 FakeDNS。" - -msgid "Domain Override" -msgstr "域名重写" - -msgid "Direct DNS result write to IPSet" -msgstr "直连 DNS 解析结果写入到 IPSet" - -msgid "Perform the matching direct domain name rules into IP to IPSet/NFTSet, and then connect directly (not entering the core). Maybe conflict with some special circumstances." -msgstr "将匹配到的直连规则的域名解析IP写入到 IPSet/NFTSet,然后直连(不进入内核)。可能和某些特殊情况冲突。" - -msgid "DNS Redirect" -msgstr "DNS 重定向" - -msgid "Force special DNS server to need proxy devices." -msgstr "强制需要代理的设备使用专用 DNS 服务器。" - -msgid "Clear IPSET" -msgstr "清空 IPSET" - -msgid "Clear NFTSET" -msgstr "清空 NFTSET" - -msgid "Try this feature if the rule modification does not take effect." -msgstr "如果修改规则后没有生效,请尝试此功能。" - -msgid "About DNS issues:" -msgstr "关于DNS问题:" - -msgid "Some browsers may have built-in DNS, be sure to close. Example: Chrome. Settings - Security and Privacy - Security - Use secure DNS disabled." -msgstr "部分浏览器可能有内置的DNS,请务必关闭。如:chrome。 设置 - 安全和隐私设置 - 使用安全 DNS 关闭。" - -msgid "Sometimes after restart, you can not internet. At this time, close all browsers (important), Windows Client, please `ipconfig /flushdns`. Please close the WiFi on the phone, cut the flight mode and then cut back." -msgstr "有时候重启后,上不了。这时请先关闭所有浏览器(重要),Windows客户端请`ipconfig /flushdns`。手机端请关闭WIFI,切一下飞行模式再切回来。" - -msgid "The client DNS and the default gateway must point to this router." -msgstr "客户端DNS和默认网关必须指向本路由器。" - -msgid "If you have a wrong DNS process, the consequences are at your own risk!" -msgstr "如果你自行配置了错误的DNS流程,后果自负!" - -msgid "Hide menu method, input example in the address bar:" -msgstr "隐藏菜单方法,地址栏输入例:" - -msgid "After the hidden to the display, input example in the address bar:" -msgstr "当你隐藏后想再次显示,地址栏输入例:" - -msgid "Are you sure to hide?" -msgstr "你确定要隐藏吗?" - -msgid "DNS related issues:" -msgstr "DNS相关问题:" - -msgid "Certain browsers such as Chrome have built-in DNS service, which may affect DNS resolution settings. You can go to 'Settings -> Privacy and security -> Use secure DNS' menu to turn it off." -msgstr "某些浏览器如Chrome等内置此功能,这会影响设置的DNS解析。您可以进入 '设置->私隐和安全->使用安全DNS' 菜单,将其关闭。" - -msgid "If you are unable to access the internet after reboot, please try clearing the cache of your terminal devices (make sure to close all open browser application windows first, this step is especially important):" -msgstr "如果在重启后无法上网,请尝试清除终端设备的缓存(先关闭所有正在使用的浏览器应用程序,这一步尤其重要):" - -msgid "For Windows systems, open Command Prompt and run the command 'ipconfig /flushdns'." -msgstr "对于Windows系统,请在命令提示符中运行命令 'ipconfig /flushdns'." - -msgid "For Mac systems, open Terminal and run the command 'sudo killall -HUP mDNSResponder'." -msgstr "对于Mac系统,在终端中运行命令 'sudo killall -HUP mDNSResponder'." - -msgid "For mobile devices, you can clear it by reconnecting to the network, such as toggling Airplane Mode and reconnecting to WiFi." -msgstr "对于移动设备,可通过重新接入网络的方式清除。比如开关一次飞行模式,重新连接WiFi。" - -msgid "Please make sure your device's network settings point both the DNS server and default gateway to this router, to ensure DNS queries are properly routed." -msgstr "请确认您设备的网络设置,客户端DNS服务器和默认网关应均指向本路由器,以确保DNS查询正确路由。" - -msgid "Browser access:" -msgstr "浏览器访问:" - -msgid "Hide in main menu:" -msgstr "在主菜单中隐藏:" - -msgid "Show in main menu:" -msgstr "在主菜单中显示:" - -msgid "DNS Export Of Multi WAN" -msgstr "国内DNS指定解析出口" - -msgid "Node Export Of Multi WAN" -msgstr "节点指定出口" - -msgid "Only support Multi Wan." -msgstr "只有多线接入才有效。" - -msgid "Not Specify" -msgstr "不指定" - -msgid "custom" -msgstr "自定义" - -msgid "If not available, try clearing the cache." -msgstr "如果无法使用,请尝试清除缓存。" - -msgid "Operation" -msgstr "操作" - -msgid "Add Node" -msgstr "添加节点" - -msgid "Add the node via the link" -msgstr "通过链接添加节点" - -msgid "Enter share links, one per line. Subscription links are not supported!" -msgstr "输入分享链接,支持多个节点,每行一个。请勿输入订阅链接!" - -msgid "Please enter the correct link." -msgstr "请输入正确的链接。" - -msgid "Clear all nodes" -msgstr "清空所有节点" - -msgid "Are you sure to clear all nodes?" -msgstr "你确定要清空所有节点吗?" - -msgid "Error" -msgstr "错误" - -msgid "Delete select nodes" -msgstr "删除选择的节点" - -msgid "To Top" -msgstr "置顶" - -msgid "Select" -msgstr "选择" - -msgid "Selected:" -msgstr "已选:" - -msgid "DeSelect" -msgstr "反选" - -msgid "Select all" -msgstr "全选" - -msgid "DeSelect all" -msgstr "全不选" - -msgid "Are you sure to delete select nodes?" -msgstr "你确定要删除选择的节点吗?" - -msgid "You no select nodes !" -msgstr "你没有选择任何节点!" - -msgid "Are you sure set to" -msgstr "你确定要设为" - -msgid "the server?" -msgstr "服务器吗?" - -msgid "You choose node is:" -msgstr "你选择的节点是:" - -msgid "Timeout" -msgstr "超时" - -msgid "Node Remarks" -msgstr "节点备注" - -msgid "Add Mode" -msgstr "添加方式" - -msgid "Save Order" -msgstr "保存当前顺序" - -msgid "Saved current page order successfully." -msgstr "保存当前页面顺序成功。" - -msgid "Drag to reorder" -msgstr "拖动以重排" - -msgid "Type" -msgstr "类型" - -msgid "_balancing" -msgstr "负载均衡" - -msgid "_shunt" -msgstr "分流" - -msgid "Balancing" -msgstr "负载均衡" - -msgid "Balancing Strategy" -msgstr "负载均衡策略" - -msgid "Fallback Node" -msgstr "后备节点" - -msgid "Use Custom Probe URL" -msgstr "使用自定义探测网址" - -msgid "By default the built-in probe URL will be used, enable this option to use a custom probe URL." -msgstr "默认使用内置的探测网址,启用此选项以使用自定义探测网址。" - -msgid "Probe URL" -msgstr "探测网址" - -msgid "The URL used to detect the connection status." -msgstr "用于检测连接状态的网址。" - -msgid "Probe Interval" -msgstr "探测间隔" - -msgid "The interval between initiating probes." -msgstr "发起探测的间隔。" - -msgid "The time format is numbers + units, such as '10s', '2h45m', and the supported time units are s, m, h, which correspond to seconds, minutes, and hours, respectively." -msgstr "时间格式为数字+单位,比如"10s", "2h45m",支持的时间单位有 smh,分别对应秒、分、时。" - -msgid "When the unit is not filled in, it defaults to seconds." -msgstr "未填写单位时,默认为秒。" - -msgid "Preferred Node Count" -msgstr "优选节点数量" - -msgid "The load balancer selects the optimal number of nodes, and traffic is randomly distributed among them." -msgstr "负载均衡器选出最优节点的个数,流量将在这几个节点中随机分配。" - -msgid "Shunt" -msgstr "分流" - -msgid "Preproxy" -msgstr "前置代理" - -msgid "Preproxy Node" -msgstr "前置代理节点" - -msgid "Set the node to be used as a pre-proxy. Each rule (including Default) has a separate switch that controls whether this rule uses the pre-proxy or not." -msgstr "设置用作前置代理的节点。每条规则(包括默认)都有独立开关控制本规则是否使用前置代理。" - -msgid "Direct Connection" -msgstr "直连" - -msgid "Blackhole" -msgstr "黑洞" - -msgid "Default Preproxy" -msgstr "默认前置代理" - -msgid "There are no available nodes, please add or subscribe nodes first." -msgstr "没有可用节点,请先添加或订阅节点。" - -msgid "No shunt rules? Click me to go to add." -msgstr "没有分流规则?点我前往去添加。" - -msgid "When using, localhost will connect this node first and then use this node to connect the default node." -msgstr "当使用时,本机将首先连接到此节点,然后再使用此节点连接到默认节点落地。" - -msgid "Domain Strategy" -msgstr "域名解析策略" - -msgid "Domain matcher" -msgstr "域名匹配算法" - -msgid "'AsIs': Only use domain for routing. Default value." -msgstr "AsIs:只使用域名进行路由选择。默认值。" - -msgid "'IPIfNonMatch': When no rule matches current domain, resolves it into IP addresses (A or AAAA records) and try all rules again." -msgstr "IPIfNonMatch:当域名没有匹配任何规则时,将域名解析成 IP(A 记录或 AAAA 记录)再次进行匹配。" - -msgid "'IPOnDemand': As long as there is a IP-based rule, resolves the domain into IP immediately." -msgstr "IPOnDemand:当匹配时碰到任何基于 IP 的规则,将域名立即解析为 IP 进行匹配。" - -msgid "Load balancing node list" -msgstr "负载均衡节点列表" - -msgid "Load balancing node list, document" -msgstr "负载均衡节点列表,文档原理" - -msgid "From Share URL" -msgstr "导入分享URL" - -msgid "Build Share URL" -msgstr "导出分享URL" - -msgid "Generate QRCode" -msgstr "生成二维码" - -msgid "Export Config File" -msgstr "导出配置文件" - -msgid "Import Finished" -msgstr "导入完成:" - -msgid "Not a supported scheme:" -msgstr "不支持这种样式的:" - -msgid "Invalid Share URL Format" -msgstr "无效的分享URL信息" - -msgid "Paste Share URL Here" -msgstr "在此处粘贴分享信息" - -msgid "Share URL to clipboard unable." -msgstr "无法分享URL到剪贴板。" - -msgid "Share URL to clipboard successfully." -msgstr "成功复制分享URL到剪贴板。" - -msgid "Faltal on get option, please help in debug:" -msgstr "代码错误,请协助捉虫:" - -msgid "Faltal on set option, please help in debug:" -msgstr "代码错误,请协助捉虫:" - -msgid "Address" -msgstr "地址" - -msgid "Address (Support Domain Name)" -msgstr "地址(支持域名)" - -msgid "Trojan Verify Cert" -msgstr "验证证书" - -msgid "Trojan Cert Path" -msgstr "证书路径" - -msgid "Finger Print" -msgstr "指纹伪造" - -msgid "Avoid using randomized, unless you have to." -msgstr "避免使用 randomized , 除非你必须要。" - -msgid "Original" -msgstr "原版" - -msgid "Transport Plugin" -msgstr "传输层插件" - -msgid "Shadowsocks secondary encryption" -msgstr "Shadowsocks 二次加密" - -msgid "Obfs Type" -msgstr "混淆类型" - -msgid "Obfs Password" -msgstr "混淆密码" - -msgid "Auth Type" -msgstr "认证类型" - -msgid "Auth Password" -msgstr "认证密码" - -msgid "Commands the client to use the BBR flow control algorithm" -msgstr "命令客户端使用 BBR 流量控制算法" - -msgid "PinSHA256" -msgstr "PinSHA256" - -msgid "Certificate fingerprint" -msgstr "证书指纹" - -msgid "Max upload Mbps" -msgstr "最大上行(Mbps)" - -msgid "Max download Mbps" -msgstr "最大下行(Mbps)" - -msgid "QUIC stream receive window" -msgstr "QUIC 流接收窗口" - -msgid "QUIC connection receive window" -msgstr "QUIC 连接接收窗口" - -msgid "QUIC concurrent bidirectional streams" -msgstr "QUIC 并发双向流的最大数量" - -msgid "Disable MTU detection" -msgstr "禁用 MTU 检测" - -msgid "ignoreClientBandwidth" -msgstr "忽略客户端带宽设置" - -msgid "Lazy Start" -msgstr "延迟启动" - -msgid "Encrypt Method" -msgstr "加密方式" - -msgid "Encrypt Key" -msgstr "加密密钥" - -msgid "Latency" -msgstr "延迟" - -msgid "Automatic detection delay" -msgstr "自动检测延迟" - -msgid "Show server address and port" -msgstr "显示服务器地址和端口" - -msgid "URL Test Address" -msgstr "URL 测试地址" - -msgid "URL Test" -msgstr "URL 测试" - -msgid "Test" -msgstr "测试" - -msgid "Node num" -msgstr "节点数量" - -msgid "Self add" -msgstr "自添" - -msgid "Apply" -msgstr "应用" - -msgid "Use" -msgstr "使用" - -msgid "Copy" -msgstr "复制" - -msgid "Delay Settings" -msgstr "定时配置" - -msgid "Open and close Daemon" -msgstr "启动守护进程" - -msgid "Delay Start" -msgstr "开机时延时启动" - -msgid "Units:seconds" -msgstr "单位:秒" - -msgid "Units:minutes" -msgstr "单位:分钟" - -msgid "stop automatically mode" -msgstr "定时关闭模式" - -msgid "stop Time(Every day)" -msgstr "关闭时间(每天)" - -msgid "stop Interval(Hour)" -msgstr "关闭间隔(小时)" - -msgid "start automatically mode" -msgstr "定时开启模式" - -msgid "start Time(Every day)" -msgstr "开启时间(每天)" - -msgid "start Interval(Hour)" -msgstr "开启间隔(小时)" - -msgid "restart automatically mode" -msgstr "定时重启模式" - -msgid "restart Time(Every day)" -msgstr "重启时间(每天)" - -msgid "restart Interval(Hour)" -msgstr "重启间隔(小时)" - -msgid "Forwarding Settings" -msgstr "转发配置" - -msgid "TCP No Redir Ports" -msgstr "TCP不转发端口" - -msgid "UDP No Redir Ports" -msgstr "UDP不转发端口" - -msgid "Fill in the ports you don't want to be forwarded by the agent, with the highest priority." -msgstr "填写你不希望被代理转发的端口,优先级最高。" - -msgid "If you don't want to let the device in the list to go proxy, please choose all." -msgstr "如果您不想让列表中的设备走代理,请选择全部。" - -msgid "The port settings support single ports and ranges.
Separate multiple ports with commas (,).
Example: 21,80,443,1000:2000." -msgstr "以上端口设置支持单端口和端口范围。
多个端口用英文逗号(,)隔开。
例:21,80,443,1000:2000。" - -msgid "TCP Proxy Drop Ports" -msgstr "TCP转发屏蔽端口" - -msgid "UDP Proxy Drop Ports" -msgstr "UDP转发屏蔽端口" - -msgid "TCP Redir Ports" -msgstr "TCP转发端口" - -msgid "UDP Redir Ports" -msgstr "UDP转发端口" - -msgid "No patterns are used" -msgstr "不使用" - -msgid "All" -msgstr "所有" - -msgid "Common Use" -msgstr "常用的" - -msgid "Only Web" -msgstr "仅网页" - -msgid "or more" -msgstr "及以上" - -msgid "or less" -msgstr "及以下" - -msgid "Default" -msgstr "默认" - -msgid "Close" -msgstr "关闭" - -msgid "Hijacking ICMP (PING)" -msgstr "劫持ICMP (PING)" - -msgid "Hijacking ICMPv6 (IPv6 PING)" -msgstr "劫持ICMPv6 (IPv6 PING)" - -msgid "Sniffing" -msgstr "流量嗅探" - -msgid "TCP Proxy Way" -msgstr "TCP代理方式" - -msgid "Auto Switch" -msgstr "自动切换" - -msgid "When there is no server, an automatic reconnect scheme is used" -msgstr "当没有服务器时,则使用自动重连方案" - -msgid "How often to test" -msgstr "多久检测一次" - -msgid "Timeout seconds" -msgstr "超时秒数" - -msgid "Timeout retry num" -msgstr "超时重试次数" - -msgid "Automatic switching cannot be used when this option is checked" -msgstr "当勾选此选项时,不能使用自动切换" - -msgid "Main node" -msgstr "主节点" - -msgid "List of backup nodes" -msgstr "备用节点的列表" - -msgid "Restore Switch" -msgstr "恢复切换" - -msgid "When detects main node is available, switch back to the main node." -msgstr "当检测到主节点可用时,切换回主节点。" - -msgid "If the main node is shunt" -msgstr "如果主节点是分流" - -msgid "Switch it" -msgstr "切掉它" - -msgid "Applying to the default node" -msgstr "应用于默认节点" - -msgid "Applying to the default preproxy node" -msgstr "应用于默认前置节点" - -msgid "Add nodes to the standby node list by keywords" -msgstr "通过关键字添加节点到备用节点列表" - -msgid "Delete nodes in the standby node list by keywords" -msgstr "通过关键字删除备用节点列表的节点" - -msgid "Please enter the node keyword, pay attention to distinguish between spaces, uppercase and lowercase." -msgstr "请输入节点关键字,注意区分空格、大写和小写。" - -msgid "Enable Load Balancing" -msgstr "开启负载均衡" - -msgid "Console Login Auth" -msgstr "控制台登录认证" - -msgid "Console Username" -msgstr "控制台账号" - -msgid "Console Password" -msgstr "控制台密码" - -msgid "Console Port" -msgstr "控制台端口" - -msgid "In the browser input routing IP plus port access, such as:192.168.1.1:1188" -msgstr "在浏览器输入路由IP加端口访问,如:192.168.1.1:1188" - -msgid "Haproxy Port" -msgstr "负载均衡端口" - -msgid "Health Check Type" -msgstr "健康检查类型" - -msgid "Inner implement" -msgstr "内置实现" - -msgid "Health Check Inter" -msgstr "健康检查节点间隔时间" - -msgid "When the URL test is used, the load balancing node will be converted into a Socks node. when node list set customizing, must be a Socks node, otherwise the health check will be invalid." -msgstr "当使用URL测试时,负载均衡节点将转换成Socks节点。下面的节点列表自定义时必须为Socks节点,否则健康检查将无效。" - -msgid "Add a node, Export Of Multi WAN Only support Multi Wan. Load specific gravity range 1-256. Multiple primary servers can be load balanced, standby will only be enabled when the primary server is offline! Multiple groups can be set, Haproxy port same one for each group." -msgstr "添加节点,指定出口功能是为多WAN用户准备的。负载比重范围1-256。多个主服务器可以负载均衡,备用只有在主服务器离线时才会启用!可以设置多个组,负载均衡端口相同则为一组。" - -msgid "Note that the node configuration parameters for load balancing must be consistent when use TCP health check type, otherwise it cannot be used normally!" -msgstr "注意,当使用TCP健康检查时负载均衡的节点配置参数必须一致,否则无法正常使用!" - -msgid "Node Address" -msgstr "节点地址" - -msgid "Node address cannot be empty." -msgstr "节点地址不能为空。" - -msgid "Node Port" -msgstr "节点端口" - -msgid "Node Weight" -msgstr "负载比重" - -msgid "Export Of Multi WAN" -msgstr "多WAN指定出口" - -msgid "Main" -msgstr "主要" - -msgid "Mode" -msgstr "模式" - -msgid "Primary" -msgstr "主要" - -msgid "Standby" -msgstr "备用" - -msgid "Check update" -msgstr "检查更新" - -msgid "Force update" -msgstr "强制更新" - -msgid "The latest version: %s, currently does not support automatic update, if you need to update, please compile or download the ipk and then manually install." -msgstr "最新版本:%s,目前暂不支持自动更新,如需更新,请自行编译或下载ipk然后手动安装。" - -msgid "Enable custom URL" -msgstr "启用自定义规则地址" - -msgid "Rule status" -msgstr "规则版本" - -msgid "Manually update" -msgstr "手动更新" - -msgid "Enable auto update rules" -msgstr "开启自动更新规则" - -msgid "Update Time(every day)" -msgstr "更新时间(每天)" - -msgid "Update Interval(hour)" -msgstr "更新间隔(小时)" - -msgid "Update Mode" -msgstr "更新模式" - -msgid "Loop Mode" -msgstr "循环" - -msgid "Every day" -msgstr "每天" - -msgid "Every Monday" -msgstr "每周一" - -msgid "Every Tuesday" -msgstr "每周二" - -msgid "Every Wednesday" -msgstr "每周三" - -msgid "Every Thursday" -msgstr "每周四" - -msgid "Every Friday" -msgstr "每周五" - -msgid "Every Saturday" -msgstr "每周六" - -msgid "Every Sunday" -msgstr "每周日" - -msgid "hour" -msgstr "小时" - -msgid "Hour" -msgstr "小时" - -msgid "GeoIP Update URL" -msgstr "GeoIP 更新 URL" - -msgid "Geosite Update URL" -msgstr "Geosite 更新 URL" - -msgid "Location of Geo rule files" -msgstr "Geo 资源文件目录" - -msgid "This variable specifies a directory where geoip.dat and geosite.dat files are." -msgstr "此变量指定geoip.dat和geosite.dat文件所在的目录。" - -msgid "Enable Geo Data Parsing" -msgstr "开启 Geo 数据解析" - -msgid "Analyzes and preloads GeoIP/Geosite data to enhance the shunt performance of Sing-box/Xray." -msgstr "分析和预加载 GeoIP/Geosite 数据,以增强 Sing-box/Xray 的分流效果。" - -msgid "Note: Increases resource usage." -msgstr "注:会增加一些系统资源的开销。" - -msgid "Shunt Rule" -msgstr "分流规则" - -msgid "Please note attention to the priority, the higher the order, the higher the priority." -msgstr "请注意优先级问题,排序越上面优先级越高。" - -msgid "Update..." -msgstr "更新中" - -msgid "It is the latest version" -msgstr "已是最新版本" - -msgid "Update successful" -msgstr "更新成功" - -msgid "Click to update" -msgstr "点击更新" - -msgid "Updating..." -msgstr "更新中" - -msgid "Retry" -msgstr "重试" - -msgid "Unexpected error" -msgstr "意外错误" - -msgid "Updating, are you sure to close?" -msgstr "正在更新,你确认要关闭吗?" - -msgid "Downloading..." -msgstr "下载中" - -msgid "Unpacking..." -msgstr "解压中" - -msgid "Moving..." -msgstr "移动中" - -msgid "App Update" -msgstr "组件更新" - -msgid "Please confirm that your firmware supports FPU." -msgstr "请确认你的固件支持FPU。" - -msgid "if you want to run from memory, change the path, /tmp beginning then save the application and update it manually." -msgstr "如果你希望从内存中运行,请更改路径,/tmp 开头,然后保存应用后,再手动更新。" - -msgid "Make sure there is enough space to install %s" -msgstr "确保有足够的空间安装 %s" - -msgid "App Path" -msgstr "程序路径" - -msgid "%s App Path" -msgstr "%s 程序路径" - -msgid "%s Client App Path" -msgstr "%s 客户端程序路径" - -msgid "Node Subscribe" -msgstr "节点订阅" - -msgid "Subscribe Remark" -msgstr "订阅备注(机场)" - -msgid "Subscribe Info" -msgstr "订阅信息" - -msgid "Subscribe URL" -msgstr "订阅网址" - -msgid "Subscribe URL Access Method" -msgstr "订阅网址访问方式" - -msgid "When adding a new subscription, please save and apply before manually subscribing. If you only change the subscription URL, you can subscribe manually, and the system will save it automatically." -msgstr "新增订阅请先保存并应用后再手动订阅;如仅修改订阅地址,可直接手动订阅,系统将自动保存。" - -msgid "Please save and apply before manually subscribing." -msgstr "请先保存并应用后再手动订阅。" - -msgid "Subscribe URL cannot be empty." -msgstr "订阅网址不能为空。" - -msgid "Subscribe via proxy" -msgstr "通过代理订阅" - -msgid "Enable auto update subscribe" -msgstr "开启自动更新订阅" - -msgid "Manual subscription" -msgstr "手动订阅" - -msgid "Delete All Subscribe Node" -msgstr "删除所有订阅节点" - -msgid "Delete the subscribed node" -msgstr "删除已订阅的节点" - -msgid "Are you sure you want to delete all subscribed nodes?" -msgstr "您确定要删除所有已订阅的节点吗?" - -msgid "Manual subscription All" -msgstr "手动订阅全部链接" - -msgid "This remark already exists, please change a new remark." -msgstr "此备注已存在,请改一个新的备注。" - -msgid "Remark cannot be empty." -msgstr "备注不能为空。" - -msgid "URL cannot be empty." -msgstr "网址不能为空。" - -msgid "Filter keyword Mode" -msgstr "过滤关键字模式" - -msgid "Discard List" -msgstr "丢弃列表" - -msgid "Keep List" -msgstr "保留列表" - -msgid "Discard List,But Keep List First" -msgstr "丢弃列表,但保留列表优先" - -msgid "Keep List,But Discard List First" -msgstr "保留列表,但丢弃列表优先" - -msgid "Use global config" -msgstr "使用全局配置" - -msgid "User-Agent" -msgstr "用户代理(User-Agent)" - -msgid "Add" -msgstr "添加" - -msgid "ACLs" -msgstr "访问控制" - -msgid "ACLs is a tools which used to designate specific IP proxy mode." -msgstr "访问控制列表是用于指定特殊IP代理模式的工具。" - -msgid "Example:" -msgstr "例:" - -msgid "IP range" -msgstr "IP 范围" - -msgid "Source Interface" -msgstr "源接口" - -msgid "Use Interface With ACLs" -msgstr "使用接口控制" - -msgid "Remarks" -msgstr "备注" - -msgid "Direct List" -msgstr "直连列表" - -msgid "Proxy List" -msgstr "代理列表" - -msgid "Block List" -msgstr "屏蔽列表" - -msgid "Lan IP List" -msgstr "局域网IP列表" - -msgid "Route Hosts" -msgstr "路由Hosts文件" - -msgid "Join the direct hosts list of domain names will not proxy." -msgstr "加入的域名不走代理,对所有模式有效。且优先级最高。" - -msgid "These had been joined ip addresses will not proxy. Please input the ip address or ip address segment,every line can input only one ip address. For example: 192.168.0.0/24 or 223.5.5.5." -msgstr "加入的IP段不走代理,对所有模式有效。且优先级最高。可输入IP地址或地址段,如:192.168.0.0/24或223.5.5.5,每个地址段一行。" - -msgid "These had been joined websites will use proxy. Please input the domain names of websites, every line can input only one website domain. For example: google.com." -msgstr "加入的域名将走代理。输入网站域名,如:google.com,每个地址段一行。" - -msgid "These had been joined ip addresses will use proxy. Please input the ip address or ip address segment, every line can input only one ip address. For example: 35.24.0.0/24 or 8.8.4.4." -msgstr "加入的IP段将走代理。可输入IP地址或地址段,如:35.24.0.0/24或8.8.4.4,每个地址段一行。" - -msgid "These had been joined websites will be block. Please input the domain names of websites, every line can input only one website domain. For example: twitter.com." -msgstr "加入的域名将屏蔽。输入网站域名,如:twitter.com,每个地址段一行。" - -msgid "The list is the IPv4 LAN IP list, which represents the direct connection IP of the LAN. If you need the LAN IP in the proxy list, please clear it from the list. Do not modify this list by default." -msgstr "列表中为IPv4的局域网IP列表,代表局域网直连IP。如果需要代理列表中的局域网IP,请将其在该列表中清除,并将其添加到代理列表中。默认情况下不要修改这个列表。" - -msgid "The list is the IPv6 LAN IP list, which represents the direct connection IP of the LAN. If you need the LAN IP in the proxy list, please clear it from the list. Do not modify this list by default." -msgstr "列表中为IPv6的局域网IP列表,代表局域网直连IP。如果需要代理列表中的局域网IP,请将其在该列表中清除,并将其添加到代理列表中。默认情况下不要修改这个列表。" - -msgid "Configure routing etc/hosts file, if you don't know what you are doing, please don't change the content." -msgstr "配置路由etc/hosts文件,如果你不知道自己在做什么,请不要改动内容。" - -msgid "These had been joined ip addresses will be block. Please input the ip address or ip address segment, every line can input only one ip address." -msgstr "加入的IP段将屏蔽。可输入IP地址或地址段,每个地址段一行。" - -msgid "Inbound Tag" -msgstr "入站标签" - -msgid "Transparent proxy" -msgstr "透明代理" - -msgid "Not valid domain name, please re-enter!" -msgstr "不是有效域名,请重新输入!" - -msgid "Not valid IP format, please re-enter!" -msgstr "不是有效IP格式,请重新输入!" - -msgid "Not valid IPv4 format, please re-enter!" -msgstr "不是有效IPv4格式,请重新输入!" - -msgid "Not valid IPv6 format, please re-enter!" -msgstr "不是有效IPv6格式,请重新输入!" - -msgid "Not true format, please re-enter!" -msgstr "不是正确的格式,请重新输入!" - -msgid "Plaintext: If this string matches any part of the targeting domain, this rule takes effet. Example: rule 'sina.com' matches targeting domain 'sina.com', 'sina.com.cn' and 'www.sina.com', but not 'sina.cn'." -msgstr "纯字符串: 当此字符串匹配目标域名中任意部分,该规则生效。比如'sina.com'可以匹配'sina.com'、'sina.com.cn'和'www.sina.com',但不匹配'sina.cn'。" - -msgid "Regular expression: Begining with 'regexp:', the rest is a regular expression. When the regexp matches targeting domain, this rule takes effect. Example: rule 'regexp:\\.goo.*\\.com$' matches 'www.google.com' and 'fonts.googleapis.com', but not 'google.com'." -msgstr "正则表达式: 由'regexp:'开始,余下部分是一个正则表达式。当此正则表达式匹配目标域名时,该规则生效。例如'regexp:\\.goo.*\\.com$'匹配'www.google.com'、'fonts.googleapis.com',但不匹配'google.com'。" - -msgid "Subdomain (recommended): Begining with 'domain:' and the rest is a domain. When the targeting domain is exactly the value, or is a subdomain of the value, this rule takes effect. Example: rule 'domain:v2ray.com' matches 'www.v2ray.com', 'v2ray.com', but not 'xv2ray.com'." -msgstr "子域名 (推荐): 由'domain:'开始,余下部分是一个域名。当此域名是目标域名或其子域名时,该规则生效。例如'domain:v2ray.com'匹配'www.v2ray.com'、'v2ray.com',但不匹配'xv2ray.com'。" - -msgid "Full domain: Begining with 'full:' and the rest is a domain. When the targeting domain is exactly the value, the rule takes effect. Example: rule 'domain:v2ray.com' matches 'v2ray.com', but not 'www.v2ray.com'." -msgstr "完整匹配: 由'full:'开始,余下部分是一个域名。当此域名完整匹配目标域名时,该规则生效。例如'full:v2ray.com'匹配'v2ray.com'但不匹配'www.v2ray.com'。" - -msgid "Sing-Box rule-set: Begining with 'rule-set:remote:' or 'rule-set:local:'" -msgstr "Sing-Box 规则集: 由 'rule-set:remote:' 或 'rule-set:local:' 开始" - -msgid "Such as:" -msgstr "例如:" - -msgid "Pre-defined domain list: Begining with 'geosite:' and the rest is a name, such as geosite:google or geosite:cn." -msgstr "预定义域名列表:由'geosite:'开头,余下部分是一个名称,如geosite:google或者geosite:cn。" - -msgid "Annotation: Begining with #" -msgstr "注释: 由 # 开头" - -msgid "Invert match result." -msgstr "反选匹配结果。" - -msgid "Only support Sing-Box." -msgstr "只支持 Sing-Box。" - -msgid "IP: such as '127.0.0.1'." -msgstr "IP: 形如'127.0.0.1'。" - -msgid "CIDR: such as '127.0.0.0/8'." -msgstr "CIDR: 形如'10.0.0.0/8'." - -msgid "GeoIP: such as 'geoip:cn'. It begins with geoip: (lower case) and followed by two letter of country code." -msgstr "GeoIP: 形如'geoip:cn',必须以geoip:(小写)开头,后面跟双字符国家代码,支持几乎所有可以上网的国家。" - -msgid "Clear logs" -msgstr "清空日志" - -msgid "Password" -msgstr "密码" - -msgid "IV Check" -msgstr "IV 检查" - -msgid "UDP over TCP" -msgstr "TCP 封装 UDP" - -msgid "Connection Timeout" -msgstr "连接超时时间" - -msgid "Local Port" -msgstr "本地端口" - -msgid "Fast Open" -msgstr "快速打开" - -msgid "Pre-connections" -msgstr "预连接" - -msgid "Number of early established connections to reduce latency." -msgstr "预连接的数量,用于降低延迟。" - -msgid "plugin" -msgstr "插件" - -msgid "Supports custom SIP003 plugins, Make sure the plugin is installed." -msgstr "支持自定义 SIP003 插件,请确保插件已安装。" - -msgid "opts" -msgstr "插件选项" - -msgid "Protocol" -msgstr "协议名称" - -msgid "Protocol_param" -msgstr "协议参数" - -msgid "Obfs" -msgstr "混淆" - -msgid "Obfs_param" -msgstr "混淆参数" - -msgid "Plugin Name" -msgstr "插件名称" - -msgid "Plugin Arguments" -msgstr "插件参数" - -msgid "Naiveproxy Protocol" -msgstr "Naiveproxy协议" - -msgid "User Level" -msgstr "用户等级(level)" - -msgid "Transport" -msgstr "传输方式" - -msgid "Public Key" -msgstr "公钥" - -msgid "Private Key" -msgstr "私钥" - -msgid "Pre shared key" -msgstr "额外的对称加密密钥" - -msgid "Local Address" -msgstr "本地地址" - -msgid "System interface" -msgstr "系统接口" - -msgid "System interface name" -msgstr "系统接口名称" - -msgid "Decimal numbers separated by \",\" or Base64-encoded strings." -msgstr "用“,”隔开的十进制数字或 Base64 编码字符串。" - -msgid "Camouflage Domain" -msgstr "伪装域名" - -msgid "Camouflage Type" -msgstr "伪装类型" - -msgid "Transport Layer Encryption" -msgstr "传输层加密" - -msgid "Whether or not transport layer encryption is enabled, \"none\" for unencrypted, \"tls\" for using TLS, \"xtls\" for using XTLS." -msgstr "是否启入传输层加密,支持的选项有 \"none\" 表示不加密,\"tls\" 表示使用 TLS,\"xtls\" 表示使用 XTLS。" - -msgid "Original Trojan only supported 'tls', please choose 'tls'." -msgstr "原版Trojan只支持'tls',请选择'tls'。" - -msgid "Transfer mode" -msgstr "传输模式" - -msgid "Do not send server name in ClientHello." -msgstr "不要在 ClientHello 中发送服务器名称." - -msgid "Domain" -msgstr "域名" - -msgid "allowInsecure" -msgstr "允许不安全连接" - -msgid "Whether unsafe connections are allowed. When checked, Certificate validation will be skipped." -msgstr "是否允许不安全连接。当勾选时,将跳过证书验证。" - -msgid "%s Node Use Type" -msgstr "%s 节点使用类型" - -msgid "Set the TUIC proxy server ip address" -msgstr "指定远程TUIC服务器IP" - -msgid "TUIC User Password For Connect Remote Server" -msgstr "用于远程TUIC服务器连接的密码" - -msgid "TUIC UserName For Local Socks" -msgstr "用于本地Socks服务器连接的用户名" - -msgid "TUIC Password For Local Socks" -msgstr "用于本地Socks服务器连接的密码" - -msgid "UDP relay mode" -msgstr "UDP中继模式" - -msgid "Congestion control algorithm" -msgstr "拥塞控制算法" - -msgid "Heartbeat interval(second)" -msgstr "保活心跳包发送间隔(单位:秒)" - -msgid "Timeout for establishing a connection to server(second)" -msgstr "连接超时时间(单位:秒)" - -msgid "Garbage collection interval(second)" -msgstr "UDP数据包片残片清理间隔(单位:秒)" - -msgid "Garbage collection lifetime(second)" -msgstr "UDP数据包残片在服务器的保留时间(单位:秒)" - -msgid "Disable SNI" -msgstr "关闭SNI服务器名称指示" - -msgid "Enable 0-RTT QUIC handshake" -msgstr "客户端启用 0-RTT QUIC 连接握手" - -msgid "TUIC send window" -msgstr "发送窗口(无需确认即可发送的最大字节数:默认8Mb*2)" - -msgid "TUIC receive window" -msgstr "接收窗口(无需确认即可接收的最大字节数:默认8Mb)" - -msgid "TUIC Maximum packet size the socks5 server can receive from external, in bytes" -msgstr "TUIC socks5 服务器可以从外部接收的最大数据包大小(以字节为单位)" - -msgid "Set if the listening socket should be dual-stack" -msgstr "设置监听套接字为双栈" - -msgid "
none: default, no masquerade, data sent is packets with no characteristics.
srtp: disguised as an SRTP packet, it will be recognized as video call data (such as FaceTime).
utp: packets disguised as uTP will be recognized as bittorrent downloaded data.
wechat-video: packets disguised as WeChat video calls.
dtls: disguised as DTLS 1.2 packet.
wireguard: disguised as a WireGuard packet. (not really WireGuard protocol)
dns: Disguising traffic as DNS requests." -msgstr "
none:默认值,不进行伪装,发送的数据是没有特征的数据包。
srtp:伪装成 SRTP 数据包,会被识别为视频通话数据(如 FaceTime)。
utp:伪装成 uTP 数据包,会被识别为 BT 下载数据。
wechat-video:伪装成微信视频通话的数据包。
dtls:伪装成 DTLS 1.2 数据包。
wireguard:伪装成 WireGuard 数据包。(并不是真正的 WireGuard 协议)
dns:把流量伪装成 DNS 请求。" - -msgid "Use it together with the DNS disguised type. You can fill in any domain." -msgstr "配合伪装类型 DNS 使用,可随便填一个域名。" - -msgid "Auth" -msgstr "身份认证" - -msgid "Socks for authentication" -msgstr "Socks认证方式" - -msgid "Socks protocol authentication, support anonymous and password." -msgstr "Socks 协议的认证方式,支持匿名方式和账号密码方式。" - -msgid "anonymous" -msgstr "匿名" - -msgid "User Password" -msgstr "账号密码" - -msgid "Username and Password must be used together!" -msgstr "账号和密码必须同时使用!" - -msgid "Prefer firewall tools" -msgstr "首选防火墙工具" - -msgid "IPv6 TProxy" -msgstr "IPv6透明代理(TProxy)" - -msgid "Experimental feature. Make sure that your node supports IPv6." -msgstr "实验特性,请确保你的节点支持IPv6" - -msgid "Status info" -msgstr "状态信息" - -msgid "Big icon" -msgstr "大图标" - -msgid "Show node check" -msgstr "显示节点检测" - -msgid "Show Show IP111" -msgstr "显示IP111" - -msgid "Destination protocol" -msgstr "目标协议" - -msgid "Destination address" -msgstr "目标地址" - -msgid "Destination port" -msgstr "目标端口" - -msgid "Whether to receive PROXY protocol, when this node want to be fallback or forwarded by proxy, it must be enable, otherwise it cannot be used." -msgstr "是否接收 PROXY protocol,当该节点要被回落或被代理转发时,必须启用,否则不能使用。" - -msgid "outbound node" -msgstr "出站节点" - -msgid "Custom Socks" -msgstr "自定义 Socks" - -msgid "Custom HTTP" -msgstr "自定义 HTTP" - -msgid "Custom Interface" -msgstr "自定义接口" - -msgid "Interface" -msgstr "接口" - -msgid "Bind Local" -msgstr "本机监听" - -msgid "When selected, it can only be accessed localhost." -msgstr "当勾选时,只能本机访问。" - -msgid "Accept LAN Access" -msgstr "接受局域网访问" - -msgid "When selected, it can accessed lan , this will not be safe!" -msgstr "当勾选时,可以直接访问局域网,这将不安全!(非特殊情况不建议开启)" - -msgid "Enable Remote" -msgstr "启用转发" - -msgid "You can forward to Nginx/Caddy/V2ray/Xray WebSocket and more." -msgstr "您可以转发到Nginx/Caddy/V2ray/Xray WebSocket等。" - -msgid "Remote Address" -msgstr "远程地址" - -msgid "Remote Port" -msgstr "远程端口" - -msgid "as:" -msgstr "如:" - -msgid "Public key absolute path" -msgstr "公钥文件绝对路径" - -msgid "Private key absolute path" -msgstr "私钥文件绝对路径" - -msgid "Can't find this file!" -msgstr "找不到这个文件!" - -msgid "Public key and Private key path can not be empty!" -msgstr "公钥和私钥文件路径不能为空!" - -msgid "Server-Side" -msgstr "服务器端" - -msgid "Server Config" -msgstr "服务器配置" - -msgid "Users Manager" -msgstr "用户管理" - -msgid "Logs" -msgstr "日志" - -msgid "Log" -msgstr "日志" - -msgid "Enable Node Log" -msgstr "启用节点日志" - -msgid "Log Level" -msgstr "日志等级" - -msgid "Not enabled log" -msgstr "未启用日志" - -msgid "UDP Forward" -msgstr "UDP转发" - -msgid "DNS Settings" -msgstr "DNS设置" - -msgid "Null" -msgstr "无" - -msgid "You did not fill in the %s path. Please save and apply then update manually." -msgstr "您没有填写 %s 路径。请保存应用后再手动更新。" - -msgid "Not installed %s, Can't unzip!" -msgstr "未安装 %s,无法解压。" - -msgid "Can't determine ARCH, or ARCH not supported." -msgstr "无法确认ARCH架构,或是不支持。" - -msgid "Get remote version info failed." -msgstr "获取远程版本信息失败。" - -msgid "New version found, but failed to get new version download url." -msgstr "发现新版本,但未能获得新版本的下载地址。" - -msgid "Download url is required." -msgstr "请指定下载地址。" - -msgid "File download failed or timed out: %s" -msgstr "文件下载失败或超时:%s" - -msgid "File path required." -msgstr "请指定文件路径。" - -msgid "%s not enough space." -msgstr "%s 空间不足。" - -msgid "Can't find client in file: %s" -msgstr "无法在文件中找到客户端:%s" - -msgid "Client file is required." -msgstr "请指定客户端文件。" - -msgid "The client file is not suitable for current device." -msgstr "客户端文件不适合当前设备。" - -msgid "Can't move new file to path: %s" -msgstr "无法移动新文件到:%s" - -msgid "An XHttpObject in JSON format, used for sharing." -msgstr "JSON 格式的 XHttpObject,用来实现分享。" - -msgid "Enable Mux.Cool" -msgstr "启用 Mux.Cool" - -msgid "Mux concurrency" -msgstr "最大并发连接数" - -msgid "XUDP Mux concurrency" -msgstr "XUDP 最大并发连接数" - -msgid "Padding" -msgstr "填充" - -msgid "Enable early data" -msgstr "启用前置数据" - -msgid "Early data length" -msgstr "前置数据最大长度" - -msgid "Early data header name" -msgstr "前置数据 HTTP 头名" - -msgid "Recommended value: Sec-WebSocket-Protocol" -msgstr "推荐值:Sec-WebSocket-Protocol" - -msgid "Health check" -msgstr "健康检查" - -msgid "Health check timeout" -msgstr "检查超时时间" - -msgid "Permit without stream" -msgstr "无子连接时的健康检查" - -msgid "Initial Windows Size" -msgstr "初始窗口大小" - -msgid "Excluded Domains" -msgstr "排除域名" - -msgid "If the traffic sniffing result is in this list, the destination address will not be overridden." -msgstr "如果流量嗅探结果在此列表中,则不会覆盖目标地址。" - -msgid "Buffer Size" -msgstr "缓冲区大小" - -msgid "Buffer size for every connection (kB)" -msgstr "每一个连接的缓冲区大小(kB)" - -msgid "Handshake Timeout" -msgstr "握手超时 " - -msgid "Idle Timeout" -msgstr "空闲超时 " - -msgid "Hop Interval" -msgstr "端口跳跃时间 " - -msgid "HeartbeatPeriod(second)" -msgstr "心跳周期(单位:秒)" - -msgid "Override the connection destination address" -msgstr "覆盖连接目标地址" - -msgid "Override the connection destination address with the sniffed domain.
Otherwise use sniffed domain for routing only.
If using shunt nodes, configure the domain shunt rules correctly." -msgstr "用探测出的域名覆盖连接目标地址。
否则仅将探测得到的域名用于路由。
如使用分流节点,请正确设置域名分流规则。" - -msgid "Override the connection destination address with the sniffed domain.
When enabled, traffic will match only by domain, ignoring IP rules.
If using shunt nodes, configure the domain shunt rules correctly." -msgstr "用探测出的域名覆盖连接目标地址。
启用后仅使用域名进行流量匹配,将忽略IP规则。
如使用分流节点,请正确设置域名分流规则。" - -msgid "Handshake Server" -msgstr "握手服务器" - -msgid "Handshake Server Port" -msgstr "握手服务器端口" - -msgid "Protocol parameter. Will waste traffic randomly if enabled." -msgstr "协议参数。 如果启用会随机浪费流量。" - -msgid "Protocol parameter. Enable length block encryption." -msgstr "协议参数。启用长度块加密。" - -msgid "TLS Chain Fingerprint (SHA256)" -msgstr "TLS 证书链指纹(SHA256)" - -msgid "Once set, connects only when the server’s chain fingerprint matches." -msgstr "设置后,仅在服务器证书链指纹匹配时连接。" - -msgid "ECH Config" -msgstr "ECH 配置" - -msgid "ECH Key" -msgstr "ECH 密钥" - -msgid "PQ signature schemes" -msgstr "后量子对等证书签名方案" - -msgid "Disable adaptive sizing of TLS records" -msgstr "禁用 TLS 记录的自适应大小调整" - -msgid "ECH Query Policy" -msgstr "ECH 查询策略" - -msgid "Controls the policy used when performing DNS queries for ECH configuration." -msgstr "控制使用 DNS 查询 ECH 配置时的策略。" - -msgid "Enable Multipath TCP, need to be enabled in both server and client configuration." -msgstr "启用 Multipath TCP,需在服务端和客户端配置中同时启用。" - -msgid "Fragment" -msgstr "分片" - -msgid "TCP fragments, which can deceive the censorship system in some cases, such as bypassing SNI blacklists." -msgstr "TCP 分片,在某些情况下可以欺骗审查系统,比如绕过 SNI 黑名单。" - -msgid "Fragment Packets" -msgstr "分片方式" - -msgid " \"1-3\" is for segmentation at TCP layer, applying to the beginning 1 to 3 data writes by the client. \"tlshello\" is for TLS client hello packet fragmentation." -msgstr " \"1-3\" 是 TCP 的流切片,应用于客户端第 1 至第 3 次写数据。\"tlshello\" 是 TLS 握手包切片。" - -msgid "Fragment Length" -msgstr "分片包长" - -msgid "Fragmented packet length (byte)" -msgstr "分片包长 (byte)" - -msgid "Fragment Interval" -msgstr "分片间隔" - -msgid "Fragmentation interval (ms)" -msgstr "分片间隔(ms)" - -msgid "Max Split" -msgstr "最大分片数" - -msgid "Limit the maximum number of splits." -msgstr "限制分片的最大数量。" - -msgid "Split handshake data into multiple TLS records for better censorship evasion. Low overhead. Recommended to enable first." -msgstr "将握手数据拆分为多个 TLS 记录,提升抗封锁能力,几乎不增加延迟,建议优先启用。" - -msgid "Split handshake into multiple TCP segments. Enhances obfuscation. May increase delay. Use only if needed." -msgstr "将 TLS 握手数据分为多个 TCP 包发送,提高伪装性,可能增加延迟,仅在封锁严重时使用。" - -msgid "Noise" -msgstr "噪声" - -msgid "UDP noise, Under some circumstances it can bypass some UDP based protocol restrictions." -msgstr "UDP 噪声,在某些情况下可以绕过一些针对 UDP 协议的限制。" - -msgid "To send noise packets, select \"Noise\" in Xray Settings." -msgstr "在 Xray 设置中勾选 “噪声” 以发送噪声包。" - -msgid "Xray Noise Packets" -msgstr "Xray 噪声数据包" - -msgid "Packet" -msgstr "数据包" - -msgid "Delay (ms)" -msgstr "延迟(ms)" - -msgid "IP Type" -msgstr "IP 类型" - -msgid "If is domain name, The requested domain name will be resolved to IP before connect." -msgstr "如果是域名,域名将在请求发出之前解析为 IP。" - -msgid "Chain Proxy" -msgstr "链式代理" - -msgid "Landing Node" -msgstr "落地节点" - -msgid "Only support a layer of proxy." -msgstr "仅支持一层代理。" - -msgid "" -"Chained proxy works only with Xray or Sing-box nodes.
" -"The chained node must be the same type as your subscription node (Xray with Xray, Sing-box with Sing-box).
" -"You can only use manual or imported nodes as chained nodes." -msgstr "" -"链式代理仅支持 Xray 与 Sing-box 节点。
" -"链式节点需与订阅节点类型一致(Xray 对应 Xray,Sing-box 对应 Sing-box)。
" -"仅支持手动添加或导入的节点用作链式节点。" - -msgid "Set the default domain resolution strategy for the sing-box node." -msgstr "为 sing-box 节点设置默认的域名解析策略。" - -msgid "Prefer IPv4" -msgstr "IPv4 优先" - -msgid "Prefer IPv6" -msgstr "IPv6 优先" - -msgid "IPv4 Only" -msgstr "仅 IPv4" - -msgid "IPv6 Only" -msgstr "仅 IPv6" - -msgid "Maintain" -msgstr "维护" - -msgid "Backup and Restore" -msgstr "备份还原" - -msgid "Backup or Restore Client and Server Configurations." -msgstr "备份或还原客户端及服务端配置。" - -msgid "Note: Restoring configurations across different versions may cause compatibility issues." -msgstr "注意:不同版本间的配置恢复可能会导致兼容性问题。" - -msgid "Create Backup File" -msgstr "创建备份文件" - -msgid "Restore Backup File" -msgstr "恢复备份文件" - -msgid "DL Backup" -msgstr "下载备份" - -msgid "RST Backup" -msgstr "恢复备份" - -msgid "Backup failed!" -msgstr "备份失败!" - -msgid "UL Restore" -msgstr "上传恢复" - -msgid "CLOSE WIN" -msgstr "关闭窗口" - -msgid "Restore to default configuration" -msgstr "恢复默认配置" - -msgid "Do Reset" -msgstr "执行重置" - -msgid "Please select a file first." -msgstr "请先选择一个文件。" - -msgid "Invalid file type. Please upload a .tar.gz file." -msgstr "文件类型无效,请上传一个 .tar.gz 文件。" - -msgid "File size exceeds 10MB limit." -msgstr "文件大小超过 10MB 限制。" - -msgid "Do you want to restore the client to default settings?" -msgstr "是否要恢复客户端默认配置?" - -msgid "Are you sure you want to restore the client to default settings?" -msgstr "是否真的要恢复客户端默认配置?" - -msgid "Configuration file uploaded successfully…" -msgstr "配置文件上传成功…" - -msgid "Configuration restored successfully…" -msgstr "配置还原成功…" - -msgid "Service restarting…" -msgstr "重启服务中…" - -msgid "Configuration file decompression failed, please try again!" -msgstr "配置文件解压失败,请重试!" - -msgid "_urltest" -msgstr "URLTest" - -msgid "URLTest node list" -msgstr "URLTest 节点列表" - -msgid "List of nodes to test, document" -msgstr "要测试的节点列表,文档原理" - -msgid "Test interval" -msgstr "测试间隔" - -msgid "Test interval must be less or equal than idle timeout." -msgstr "测试间隔时间必须小于或等于空闲超时时间。" - -msgid "Test tolerance" -msgstr "测试容差" - -msgid "The test tolerance in milliseconds." -msgstr "测试容差时间(单位:毫秒)。" - -msgid "Idle timeout" -msgstr "空闲超时" - -msgid "The idle timeout." -msgstr "空闲超时时间。" - -msgid "Interrupt existing connections" -msgstr "中断现有连接" - -msgid "Interrupt existing connections when the selected outbound has changed." -msgstr "当选择的出站发生变化时中断现有连接。" - -msgid "Port hopping range" -msgstr "端口跳跃范围" - -msgid "Format as 1000:2000 or 1000-2000 Multiple groups are separated by commas (,)." -msgstr "格式为:1000:2000 或 1000-2000 多组时用逗号(,)隔开。" - -msgid "Use Custom Config" -msgstr "使用自定义配置" - -msgid "Custom Config" -msgstr "自定义配置" - -msgid "Must be JSON text!" -msgstr "必须是 JSON 文本内容!" - -msgid "Geo View" -msgstr "Geo 查询" - -msgid "Query" -msgstr "查询" - -msgid "Querying" -msgstr "查询中" - -msgid "Please enter query content!" -msgstr "请输入查询内容!" - -msgid "No results were found!" -msgstr "未找到任何结果!" - -msgid "Domain/IP Query" -msgstr "域名/IP 查询" - -msgid "GeoIP/Geosite Query" -msgstr "GeoIP/Geosite 查询" - -msgid "Enter a domain or IP to query the Geo rule list they belong to." -msgstr "输入域名/IP,查询它们所在的 Geo 规则列表。" - -msgid "Enter a GeoIP or Geosite to extract the domains/IPs they contain. Format: geoip:cn or geosite:gfw" -msgstr "输入 GeoIP/Geosite,提取它们所包含的域名/IP。格式:geoip:cn 或 geosite:gfw" - -msgid "Tips:" -msgstr "小贴士:" - -msgid "By entering a domain or IP, you can query the Geo rule list they belong to." -msgstr "可以通过输入域名/IP,查询它们所在的 Geo 规则列表。" - -msgid "By entering a GeoIP or Geosite, you can extract the domains/IPs they contain." -msgstr "可以通过输入 GeoIP/Geosite,提取它们所包含的域名/IP。" - -msgid "Use the GeoIP/Geosite query function to verify if the entered Geo rules are correct." -msgstr "利用 GeoIP/Geosite 查询功能,可以验证输入的 Geo 规则是否正确。" - -msgid "Private Key Passphrase" -msgstr "私钥指纹" - -msgid "Host Key" -msgstr "主机密钥" - -msgid "Accept any if empty." -msgstr "留空则不校验。" - -msgid "Host Key Algorithms" -msgstr "主机密钥算法" - -msgid "Client Version" -msgstr "客户端版本" - -msgid "Random version will be used if empty." -msgstr "如留空,则使用随机版本。" - -msgid "The configured type also applies to the core specified when manually importing nodes." -msgstr "配置的类型同样适用于手动导入节点时所指定的核心程序。" - -msgid "Group Name" -msgstr "分组名" - -msgid "Reassign Group" -msgstr "调整分组" - -msgid "Reassign Node Group" -msgstr "调整节点分组" - -msgid "Search nodes..." -msgstr "搜索节点…" - -msgid "Using..." -msgstr "使用中。" - -msgid "Generate configuration file and run" -msgstr "生成配置文件并运行" - -msgid "Start after a delay of %s seconds!" -msgstr "延时 %s 秒后再启动!" - -msgid "The script is already running, do not run it again. Exit." -msgstr "脚本已经在运行,不重复运行,退出." - -msgid "Stop the script and wait for a timeout, then exit without repeating the process." -msgstr "停止脚本等待超时,不重复运行,退出." - -msgid "Warning: The %s application environment is incomplete. Switch to %s. (%s)" -msgstr "警告:%s 应用环境不完整,切换至 %s。(%s)" - -msgid "Note: Dnsmasq (%s) is below 2.90. Upgrading is recommended to improve stability." -msgstr "提示:Dnsmasq (%s) 低于 2.90,建议升级以增强稳定性。" - -msgid "Warning: %s transparent proxy is missing basic dependency %s!" -msgstr "警告:%s 透明代理缺失基础依赖 %s!" - -msgid "Warning: Not compatible with any transparent proxy system environment." -msgstr "警告:不满足任何透明代理系统环境。" - -msgid "%s does not have execute permissions and cannot be started: %s %s" -msgstr "%s 没有执行权限,无法启动:%s %s" - -msgid "%s not found, unable to start..." -msgstr "找不到 %s,无法启动..." - -msgid "Socks node: [%s]%s is an invalid server address and cannot be started!" -msgstr "Socks节点:[%s]%s 是非法的服务器地址,无法启动!" - -msgid "For some reason, the configuration for this Socks service has been lost, and its startup has been aborted!" -msgstr "某种原因,此 Socks 服务的相关配置已失联,启动中止!" - -msgid "Socks node: [%s]%s, start failed %s:%s %s" -msgstr "Socks节点:[%s]%s,启动失败 %s:%s %s" - -msgid "Socks node: [%s]%s, starting %s:%s" -msgstr "Socks节点:[%s]%s,启动 %s:%s" - -msgid "To enable experimental IPv6 transparent proxy (TProxy), please ensure your node and type support IPv6!" -msgstr "开启实验性IPv6透明代理(TProxy),请确认您的节点及类型支持IPv6!" - -msgid "Analyzing the node configuration of the Socks service..." -msgstr "分析 Socks 服务的节点配置..." - -msgid "Log file is too long, clear it!" -msgstr "日志文件过长,清空处理!" - -msgid "The task is currently running automatically as a scheduled task; no reconfiguration of the scheduled task is required." -msgstr "当前为计划任务自动运行,不重新配置定时任务。" - -msgid "Scheduled tasks: Auto stop service." -msgstr "配置定时任务:自动关闭服务。" - -msgid "Scheduled tasks: Auto start service." -msgstr "配置定时任务:自动开启服务。" - -msgid "Scheduled tasks: Auto restart service." -msgstr "配置定时任务:自动重启服务。" - -msgid "Scheduled tasks: Auto update rules." -msgstr "配置定时任务:自动更新规则。" - -msgid "Scheduled tasks: Auto update [%s] subscription." -msgstr "配置定时任务:自动更新 【%s】 订阅。" - -msgid "Auto updates: Starts a cyclical update process." -msgstr "自动更新:启动循环更新进程。" - -msgid "Running in no proxy mode, it only allows scheduled tasks for starting and stopping services." -msgstr "运行于非代理模式,仅允许服务启停的定时任务。" - -msgid "Clear scheduled commands." -msgstr "清除定时执行命令。" - -msgid "Unable to resolve [%s], route table addition failed!" -msgstr "无法解析[%s],路由表添加失败!" - -msgid "[%s] was successfully added to the routing table of interface [%s]!" -msgstr "[%s]添加到接口[%s]路由表成功!" - -msgid "Adding [%s] to the [%s] routing table failed! The reason is that the [%s] gateway cannot be found." -msgstr "[%s]添加到接口[%s]路由表失功!原因是找不到[%s]网关。" - -msgid "Global nodes are not enabled, skip [%s]." -msgstr "全局节点未启用,跳过【%s】" - -msgid "Direct DNS: %s" -msgstr "直连 DNS:%s" - -msgid "Remote DNS: %s" -msgstr "远程 DNS:%s" - -msgid "The program has started. Please stop it and then restart it!" -msgstr "程序已启动,先停止再重新启动!" - -msgid "Running complete!" -msgstr "运行完成!" - -msgid "Clearing and closing related programs and cache complete." -msgstr "清空并关闭相关程序和缓存完成。" - -msgid "Incorrect index listing method (%s), execution terminated!" -msgstr "索引列举方式不正确(%s),终止执行!" - -msgid "parse the traffic splitting rules[%s]-[geoip:%s] add to %s to complete." -msgstr "解析分流规则[%s]-[geoip:%s]加入到 %s 完成" - -msgid "Access Control:" -msgstr "访问控制:" - -msgid "Add node to the load balancer is directly connected to %s[%s]." -msgstr "加入负载均衡的节点到%s[%s]直连完成。" - -msgid "Add all %s nodes to %s[%s] direct connection complete." -msgstr "加入所有%s节点到%s[%s]直连完成。" - -msgid "Starting to load %s firewall rules..." -msgstr "开始加载 %s 防火墙规则..." - -msgid "local network segments (%s) direct connection: %s" -msgstr "本机 %s 网段直连:%s" - -msgid "Add ISP %s DNS to the whitelist: %s" -msgstr "追加ISP %s DNS 到白名单:%s" - -msgid "[%s]" -msgstr "【%s】" - -msgid "[%s]," -msgstr "【%s】," - -msgid "Source iface [%s]," -msgstr "源接口【%s】," - -msgid "IP range [%s]," -msgstr "IP 范围【%s】," - -msgid "All device," -msgstr "所有设备," - -msgid "Does not exist, ignore." -msgstr "不存在,忽略。" - -msgid "not proxy %s port [%s]" -msgstr "不代理 %s 端口 [%s]" - -msgid "not proxy all %s" -msgstr "不代理所有 %s" - -msgid "Use the %s node [%s]" -msgstr "使用 %s 节点[%s]" - -msgid "Using a node that is different from the global configuration, DNS has been forcibly redirected to a dedicated DNS server." -msgstr "使用与全局配置不相同节点,已将DNS强制重定向到专用 DNS 服务器。" - -msgid "Add direct DNS to %s: %s" -msgstr "追加直连 DNS 到 %s: %s" - -msgid "Local" -msgstr "本机" - -msgid "[Local]," -msgstr "【本机】," - -msgid "Clear %s." -msgstr "清除 %s。" - -msgid "Delete %s rules is complete." -msgstr "删除 %s 规则完成。" - -msgid "%s firewall rules load complete!" -msgstr "%s 防火墙规则加载完成!" - -msgid "Socks switch detection: Unknown error." -msgstr "Socks切换检测:未知错误。" - -msgid "Socks switch detection: Unable to connect to the network. Please check if the network is working properly!" -msgstr "Socks切换检测:无法连接到网络,请检查网络是否正常!" - -msgid "Socks switch detection: Primary node 【%s: [%s]】 is normal. Switch to the primary node!" -msgstr "Socks切换检测:%s 主节点【%s:[%s]】正常,切换到主节点!" - -msgid "Socks switch detection: %s node switch complete!" -msgstr "Socks切换检测:%s 节点切换完毕!" - -msgid "Socks switch detection: %s 【%s:[%s]】 normal." -msgstr "Socks切换检测:%s 【%s:[%s]】 正常。" - -msgid "switch to %s test detect!" -msgstr "切换到 %s 检测!" - -msgid "backup node" -msgstr "备用节点" - -msgid "next backup node" -msgstr "下一个备用节点" - -msgid "main node" -msgstr "主节点" - -msgid "Socks switch detection: Unknown error." -msgstr "Socks切换检测:未知错误。" - -msgid "Socks switch detection: %s 【%s:[%s]】 abnormal, %s" -msgstr "Socks切换检测:%s 【%s:[%s]】 异常,%s" - -msgid "Socks switch detection: %s 【%s:[%s]】 normal, switch to this node!" -msgstr "Socks切换检测:%s 【%s:[%s]】 正常,切换到此节点!" - -msgid "Restart dnsmasq service." -msgstr "重启 dnsmasq 服务。" - -msgid "Console Port: %s" -msgstr "控制台端口:%s" - -msgid "Discard one obviously invalid node." -msgstr "丢弃 1 个明显无效的节点" - -msgid "Entrance %s:%s" -msgstr "入口 %s:%s" - -msgid "Node: %s:%s, Weight: %s" -msgstr "节点:%s:%s,权重:%s" - -msgid "Start updating the rules..." -msgstr "开始更新规则..." - -msgid "Download file size verification error. Original file size: %sB. Downloaded file size: %sB." -msgstr "下载文件大小校验出错,原始文件大小 %sB,下载文件大小:%sB。" - -msgid "Downloaded file is empty or an error occurred while reading it." -msgstr "下载的文件为空或读取文件时发生错误。" - -msgid "%s Start updating..." -msgstr "%s 开始更新..." - -msgid "%s version is the same and does not need to be updated." -msgstr "%s 版本一致,无需更新。" - -msgid "%s an error occurred during the file download process. Please try downloading again." -msgstr "%s 下载文件过程出错,尝试重新下载。" - -msgid "%s an error occurred while downloading the file. Please check your network or the download link and try again!" -msgstr "%s 下载文件过程出错,请检查网络或下载链接后重试!" - -msgid "%s update success." -msgstr "%s 更新成功。" - -msgid "%s update failed, please try again later or change URL." -msgstr "%s 更新失败,请稍后再试或更换 URL。" - -msgid "%s update error!" -msgstr "%s 更新发生错误!" - -msgid "Restart the service and apply the new rules." -msgstr "重启服务,应用新的规则。" - -msgid "The rules have been updated..." -msgstr "规则更新完毕..." - -msgid "Socks node list [%s]" -msgstr "Socks 节点列表 [%s]" - -msgid "Backup node list" -msgstr "备用节点的列表" - -msgid "HAProxy node list [%s]" -msgstr "HAProxy 节点列表 [%s]" - -msgid "ACL list [%s]" -msgstr "访问控制列表 [%s]" - -msgid "Shunt [%s] node" -msgstr "分流 [%s] 节点" - -msgid "Xray Load Balancing node [%s] list" -msgstr "Xray 负载均衡节点 [%s] 列表" - -msgid "Xray Load Balancing node [%s] backup node" -msgstr "Xray 负载均衡节点 [%s] 后备节点" - -msgid "Sing-Box URLTest node [%s] list" -msgstr "Sing-Box URLTest 节点 [%s] 列表" - -msgid "Node [%s] preproxy node" -msgstr "节点 [%s] 前置代理节点" - -msgid "Node [%s] landing node" -msgstr "节点 [%s] 落地节点" - -msgid "Skipping the %s node is due to incompatibility with the %s core program or incorrect node usage type settings." -msgstr "跳过 %s 节点,因未适配到 %s 核心程序,或未正确设置节点使用类型。" - -msgid "Skip node: %s. Because Sing-Box does not support the %s protocol's %s transmission method, Xray needs to be used instead." -msgstr "跳过节点:%s,因 Sing-Box 不支持 %s 协议的 %s 传输方式,需更换 Xray。" - -msgid "Xray unsupport %s plugin." -msgstr "Xray 不支持 %s 插件。" - -msgid "Plugin options Incomplete." -msgstr "插件选项不完整。" - -msgid "shadowsocks-libev unsupport 2022 encryption." -msgstr "shadowsocks-libev 不支持2022加密。" - -msgid "Please replace Xray or Sing-Box to support more transmission methods in Shadowsocks." -msgstr "请更换 Xray 或 Sing-Box 来支持 Shadowsocks 更多的传输方式。" - -msgid "unsupport %s plugin." -msgstr "不支持 %s 插件。" - -msgid "Skip the %s node because the %s core program is not installed." -msgstr "跳过 %s 节点,因未安装 %s 核心程序 %s。" - -msgid "Skip the %s node, as %s type nodes require Sing-Box version 1.12 or higher." -msgstr "跳过 %s 节点,因 %s 类型的节点需要 Sing-Box 1.12 以上版本支持。" - -msgid "%s type node subscriptions are not currently supported, skip this node." -msgstr "暂时不支持 %s 类型的节点订阅,跳过此节点。" - -msgid "Update [%s]" -msgstr "更新【%s】" - -msgid "Matching node:" -msgstr "匹配节点:" - -msgid "First Matching node:" -msgstr "第一匹配节点:" - -msgid "Second Matching node:" -msgstr "第二匹配节点:" - -msgid "Third Matching node:" -msgstr "第三匹配节点:" - -msgid "Fourth Matching node:" -msgstr "第四匹配节点:" - -msgid "Fifth Matching node:" -msgstr "第五匹配节点:" - -msgid "Unable to find the best matching node, now replaced with:" -msgstr "无法找到最匹配的节点,当前已更换为:" - -msgid "Unable to find a new node. Please confirm and process manually." -msgstr "无法匹配到新节点,请手动确认处理。" - -msgid "No node information updates are available." -msgstr "没有可用的节点信息更新。" - -msgid "Skip unknown types:" -msgstr "跳过未知类型:" - -msgid "Discard node: %s, Reason:" -msgstr "丢弃节点: %s ,原因:" - -msgid "No usable binary was found." -msgstr "找不到可使用二进制。" - -msgid "Discard filter nodes: %s type node %s" -msgstr "丢弃过滤节点: %s 类型节点 %s" - -msgid "Parsing error, skip this node." -msgstr "解析错误,跳过此节点。" - -msgid "Successfully resolved the [%s] node, number: %s" -msgstr "成功解析【%s】节点,数量:%s" - -msgid "Get subscription content for [%s] is empty. This may be due to an invalid subscription address or a network problem. Please diagnose the issue!" -msgstr "获取到的【%s】订阅内容为空,可能是订阅地址无效,或是网络问题,请诊断!" - -msgid "Proxy" -msgstr "代理" - -msgid "Start subscribing..." -msgstr "开始订阅..." - -msgid "Start subscribing: %s" -msgstr "开始订阅:%s" - -msgid "Subscription: [%s] No changes, no update required." -msgstr "订阅:【%s】没有变化,无需更新。" - -msgid "[%s] Subscription failed. This could be due to an invalid subscription address or a network issue. Please diagnose the problem! [%s]" -msgstr "【%s】订阅失败,可能是订阅地址无效,或是网络问题,请诊断![%s]" - -msgid "Error, restoring service." -msgstr "发生错误, 正在恢复服务。" - -msgid "Subscription complete..." -msgstr "订阅完毕..." diff --git a/small/luci-app-passwall2/po/zh-tw/passwall2.po b/small/luci-app-passwall2/po/zh-tw/passwall2.po deleted file mode 100644 index 7dd040e0a9..0000000000 --- a/small/luci-app-passwall2/po/zh-tw/passwall2.po +++ /dev/null @@ -1,2294 +0,0 @@ -msgid "Auto" -msgstr "自動" - -msgid "RUNNING" -msgstr "運行中" - -msgid "NOT RUNNING" -msgstr "未運行" - -msgid "Working..." -msgstr "連接正常" - -msgid "Problem detected!" -msgstr "連接失敗" - -msgid "Touch Check" -msgstr "點我檢測" - -msgid "Kernel Unsupported" -msgstr "內核不支持" - -msgid "Basic Settings" -msgstr "基本設置" - -msgid "Node List" -msgstr "節點列表" - -msgid "Other Settings" -msgstr "高級設置" - -msgid "Load Balancing" -msgstr "負載均衡" - -msgid "Enter interface" -msgstr "進入界面" - -msgid "Rule Manage" -msgstr "規則管理" - -msgid "Rule List" -msgstr "規則列表" - -msgid "Access control" -msgstr "訪問控制" - -msgid "Watch Logs" -msgstr "查看日誌" - -msgid "Node Config" -msgstr "節點配置" - -msgid "Running Status" -msgstr "運行狀態" - -msgid "Baidu Connection" -msgstr "百度連接" - -msgid "Google Connection" -msgstr "谷歌連接" - -msgid "GitHub Connection" -msgstr "GitHub連接" - -msgid "Instagram Connection" -msgstr "Instagram連接" - -msgid "Node Check" -msgstr "節點檢測" - -msgid "Check..." -msgstr "檢測中..." - -msgid "Clear" -msgstr "清除" - -msgid "Main switch" -msgstr "主開關" - -msgid "Node" -msgstr "節點" - -msgid "Edit Current Node" -msgstr "編輯當前節點" - -msgid "Localhost Proxy" -msgstr "路由器本機代理" - -msgid "When selected, localhost can transparent proxy." -msgstr "當勾選時,路由器本機可以透明代理。" - -msgid "Client Proxy" -msgstr "客戶端代理" - -msgid "When selected, devices in LAN can transparent proxy. Otherwise, it will not be proxy. But you can still use access control to allow the designated device to proxy." -msgstr "當勾選時,局域網內的設備可以透明代理。否則,將不代理。但您仍然可以使用訪問控制允許指定的設備代理。" - -msgid "Missing components, transparent proxy is unavailable." -msgstr "缺少組件,透明代理無法使用。" - -msgid "Socks Config" -msgstr "Socks 配置" - -msgid "Socks Node" -msgstr "Socks 節點" - -msgid "Current Node" -msgstr "當前節點" - -msgid "Listen Port" -msgstr "監聽端口" - -msgid "0 is not use" -msgstr "0為不使用" - -msgid "Current node: %s" -msgstr "當前節點:%s" - -msgid "IP:Port mode acceptable, multi value split with english comma." -msgstr "接受 IP:Port 形式的輸入,多個以英文逗号分隔。" - -msgid "Direct DNS Protocol" -msgstr "直連 DNS 協議" - -msgid "Direct DNS" -msgstr "直連 DNS" - -msgid "Direct DNS DoH" -msgstr "直連 DNS DoH" - -msgid "Direct DNS EDNS Client Subnet" -msgstr "直連 DNS EDNS Client Subnet" - -msgid "Remote DNS Protocol" -msgstr "遠程 DNS 協議" - -msgid "Remote DNS" -msgstr "遠程 DNS" - -msgid "Remote DNS DoH" -msgstr "遠程 DNS DoH" - -msgid "Remote DNS EDNS Client Subnet" -msgstr "遠程 DNS EDNS Client Subnet" - -msgid "Notify the DNS server when the DNS query is notified, the location of the client (cannot be a private IP address)." -msgstr "用於 DNS 查詢時通知 DNS 服務器,客戶端所在的地理位置(不能是私有 IP 地址)。" - -msgid "This feature requires the DNS server to support the Edns Client Subnet (RFC7871)." -msgstr "此功能需要 DNS 服務器支持 EDNS Client Subnet(RFC7871)。" - -msgid "Remote DNS Outbound" -msgstr "遠程 DNS 出站" - -msgid "Remote" -msgstr "遠程" - -msgid "Direct" -msgstr "直連" - -msgid "Direct Query Strategy" -msgstr "直連查詢策略" - -msgid "Remote Query Strategy" -msgstr "遠程查詢策略" - -msgid "Use FakeDNS work in the domain that proxy." -msgstr "需要代理的域名使用 FakeDNS。" - -msgid "Domain Override" -msgstr "域名重寫" - -msgid "Direct DNS result write to IPSet" -msgstr "直連 DNS 解析結果寫入到 IPSet" - -msgid "Perform the matching direct domain name rules into IP to IPSet/NFTSet, and then connect directly (not entering the core). Maybe conflict with some special circumstances." -msgstr "將匹配到的直連規則的域名解析IP寫入到 IPSet/NFTSet,然後直連(不進入內核)。可能和某些特殊情況衝突。" - -msgid "DNS Redirect" -msgstr "DNS 重定向" - -msgid "Force special DNS server to need proxy devices." -msgstr "強制需要代理的設備使用專用 DNS 服務器。" - -msgid "Clear IPSET" -msgstr "清空 IPSET" - -msgid "Clear NFTSET" -msgstr "清空 NFTSET" - -msgid "Try this feature if the rule modification does not take effect." -msgstr "如果修改規則後沒有生效,請嘗試此功能。" - -msgid "About DNS issues:" -msgstr "關於DNS問題:" - -msgid "Some browsers may have built-in DNS, be sure to close. Example: Chrome. Settings - Security and Privacy - Security - Use secure DNS disabled." -msgstr "部分瀏覽器可能有內置的DNS,請務必關閉。如:chrome。 設置 - 安全和隱私設置 - 使用安全 DNS 關閉。" - -msgid "Sometimes after restart, you can not internet. At this time, close all browsers (important), Windows Client, please `ipconfig /flushdns`. Please close the WiFi on the phone, cut the flight mode and then cut back." -msgstr "有時候重啟後,上不了。這時請先關閉所有瀏覽器(重要),Windows客戶端請`ipconfig /flushdns`。手機端請關閉WIFI,切一下飛行模式再切回來。" - -msgid "The client DNS and the default gateway must point to this router." -msgstr "客戶端DNS和默認網關必須指向本路由器。" - -msgid "If you have a wrong DNS process, the consequences are at your own risk!" -msgstr "如果你自行配置了錯誤的DNS流程,後果自负!" - -msgid "Hide menu method, input example in the address bar:" -msgstr "隱藏菜單方法,地址栏輸入例:" - -msgid "After the hidden to the display, input example in the address bar:" -msgstr "當你隱藏後想再次顯示,地址栏輸入例:" - -msgid "Are you sure to hide?" -msgstr "你確定要隱藏吗?" - -msgid "DNS related issues:" -msgstr "DNS相關問題:" - -msgid "Certain browsers such as Chrome have built-in DNS service, which may affect DNS resolution settings. You can go to 'Settings -> Privacy and security -> Use secure DNS' menu to turn it off." -msgstr "某些瀏覽器如Chrome等內置此功能,這会影響設置的DNS解析。您可以進入 '設置->私隱和安全->使用安全DNS' 菜單,將其關閉。" - -msgid "If you are unable to access the internet after reboot, please try clearing the cache of your terminal devices (make sure to close all open browser application windows first, this step is especially important):" -msgstr "如果在重啟後無法上網,請嘗試清除终端設備的缓存(先關閉所有正在使用的瀏覽器應用程序,這一步尤其重要):" - -msgid "For Windows systems, open Command Prompt and run the command 'ipconfig /flushdns'." -msgstr "對於Windows系統,請在命令提示符中運行命令 'ipconfig /flushdns'." - -msgid "For Mac systems, open Terminal and run the command 'sudo killall -HUP mDNSResponder'." -msgstr "對於Mac系統,在终端中運行命令 'sudo killall -HUP mDNSResponder'." - -msgid "For mobile devices, you can clear it by reconnecting to the network, such as toggling Airplane Mode and reconnecting to WiFi." -msgstr "對於移動設備,可通過重新接入網絡的方式清除。比如開關一次飛行模式,重新連接WiFi。" - -msgid "Please make sure your device's network settings point both the DNS server and default gateway to this router, to ensure DNS queries are properly routed." -msgstr "請確認您設備的網絡設置,客戶端DNS服務器和默認網關應均指向本路由器,以確保DNS查詢正確路由。" - -msgid "Browser access:" -msgstr "瀏覽器訪問:" - -msgid "Hide in main menu:" -msgstr "在主菜單中隱藏:" - -msgid "Show in main menu:" -msgstr "在主菜單中顯示:" - -msgid "DNS Export Of Multi WAN" -msgstr "国內DNS指定解析出口" - -msgid "Node Export Of Multi WAN" -msgstr "節點指定出口" - -msgid "Only support Multi Wan." -msgstr "只有多線接入才有效。" - -msgid "Not Specify" -msgstr "不指定" - -msgid "custom" -msgstr "自定义" - -msgid "If not available, try clearing the cache." -msgstr "如果無法使用,請嘗試清除缓存。" - -msgid "Operation" -msgstr "操作" - -msgid "Add Node" -msgstr "添加節點" - -msgid "Add the node via the link" -msgstr "通過鏈接添加節點" - -msgid "Enter share links, one per line. Subscription links are not supported!" -msgstr "輸入分享鏈接,支持多個節點,每行一個。請勿輸入訂閱鏈接!" - -msgid "Please enter the correct link." -msgstr "請輸入正確的鏈接。" - -msgid "Clear all nodes" -msgstr "清空所有節點" - -msgid "Are you sure to clear all nodes?" -msgstr "你確定要清空所有節點吗?" - -msgid "Error" -msgstr "錯誤" - -msgid "Delete select nodes" -msgstr "刪除選择的節點" - -msgid "To Top" -msgstr "置顶" - -msgid "Select" -msgstr "選择" - -msgid "Selected:" -msgstr "已選:" - -msgid "DeSelect" -msgstr "反選" - -msgid "Select all" -msgstr "全選" - -msgid "DeSelect all" -msgstr "全不選" - -msgid "Are you sure to delete select nodes?" -msgstr "你確定要刪除選择的節點吗?" - -msgid "You no select nodes !" -msgstr "你沒有選择任何節點!" - -msgid "Are you sure set to" -msgstr "你確定要設為" - -msgid "the server?" -msgstr "服務器吗?" - -msgid "You choose node is:" -msgstr "你選择的節點是:" - -msgid "Timeout" -msgstr "超時" - -msgid "Node Remarks" -msgstr "節點備注" - -msgid "Add Mode" -msgstr "添加方式" - -msgid "Save Order" -msgstr "儲存當前順序" - -msgid "Saved current page order successfully." -msgstr "儲存目前頁面順序成功。" - -msgid "Drag to reorder" -msgstr "拖曳以重排" - -msgid "Type" -msgstr "類型" - -msgid "_balancing" -msgstr "負載均衡" - -msgid "_shunt" -msgstr "分流" - -msgid "Balancing" -msgstr "負載均衡" - -msgid "Balancing Strategy" -msgstr "負載均衡策略" - -msgid "Fallback Node" -msgstr "後備節點" - -msgid "Use Custom Probe URL" -msgstr "使用自定义探測網址" - -msgid "By default the built-in probe URL will be used, enable this option to use a custom probe URL." -msgstr "默認使用內置的探測網址,啟用此選項以使用自定义探測網址。" - -msgid "Probe URL" -msgstr "探測網址" - -msgid "The URL used to detect the connection status." -msgstr "用於檢測連接状態的網址。" - -msgid "Probe Interval" -msgstr "探測間隔" - -msgid "The interval between initiating probes." -msgstr "發起探測的間隔。" - -msgid "The time format is numbers + units, such as '10s', '2h45m', and the supported time units are s, m, h, which correspond to seconds, minutes, and hours, respectively." -msgstr "時間格式為數字+單位,比如"10s", "2h45m",支持的時間單位有 smh,分别對應秒、分、時。" - -msgid "When the unit is not filled in, it defaults to seconds." -msgstr "未填寫單位時,默認為秒。" - -msgid "Preferred Node Count" -msgstr "優選節點數量" - -msgid "The load balancer selects the optimal number of nodes, and traffic is randomly distributed among them." -msgstr "負載均衡器選出最優節點的個數,流量將在這几個節點中随機分配。" - -msgid "Shunt" -msgstr "分流" - -msgid "Preproxy" -msgstr "前置代理" - -msgid "Preproxy Node" -msgstr "前置代理節點" - -msgid "Set the node to be used as a pre-proxy. Each rule (including Default) has a separate switch that controls whether this rule uses the pre-proxy or not." -msgstr "設置用作前置代理的節點。每条規則(包括默認)都有独立開關控制本規則是否使用前置代理。" - -msgid "Direct Connection" -msgstr "直連" - -msgid "Blackhole" -msgstr "黑洞" - -msgid "Default Preproxy" -msgstr "默認前置代理" - -msgid "There are no available nodes, please add or subscribe nodes first." -msgstr "沒有可用節點,請先添加或訂閱節點。" - -msgid "No shunt rules? Click me to go to add." -msgstr "沒有分流規則?點我前往去添加。" - -msgid "When using, localhost will connect this node first and then use this node to connect the default node." -msgstr "當使用時,本機將首先連接到此節點,然後再使用此節點連接到默認節點落地。" - -msgid "Domain Strategy" -msgstr "域名解析策略" - -msgid "Domain matcher" -msgstr "域名匹配算法" - -msgid "'AsIs': Only use domain for routing. Default value." -msgstr "AsIs:只使用域名进行路由選择。默認值。" - -msgid "'IPIfNonMatch': When no rule matches current domain, resolves it into IP addresses (A or AAAA records) and try all rules again." -msgstr "IPIfNonMatch:當域名沒有匹配任何規則時,將域名解析成 IP(A 記錄或 AAAA 記錄)再次进行匹配。" - -msgid "'IPOnDemand': As long as there is a IP-based rule, resolves the domain into IP immediately." -msgstr "IPOnDemand:當匹配時碰到任何基於 IP 的規則,將域名立即解析為 IP 进行匹配。" - -msgid "Load balancing node list" -msgstr "負載均衡節點列表" - -msgid "Load balancing node list, document" -msgstr "負載均衡節點列表,文檔原理" - -msgid "From Share URL" -msgstr "導入分享URL" - -msgid "Build Share URL" -msgstr "導出分享URL" - -msgid "Generate QRCode" -msgstr "生成二维码" - -msgid "Export Config File" -msgstr "導出配置文件" - -msgid "Import Finished" -msgstr "導入完成:" - -msgid "Not a supported scheme:" -msgstr "不支持這种樣式的:" - -msgid "Invalid Share URL Format" -msgstr "無效的分享URL信息" - -msgid "Paste Share URL Here" -msgstr "在此处粘贴分享信息" - -msgid "Share URL to clipboard unable." -msgstr "無法分享URL到剪贴板。" - -msgid "Share URL to clipboard successfully." -msgstr "成功復制分享URL到剪贴板。" - -msgid "Faltal on get option, please help in debug:" -msgstr "代码錯誤,請協助捉蟲:" - -msgid "Faltal on set option, please help in debug:" -msgstr "代码錯誤,請協助捉蟲:" - -msgid "Address" -msgstr "地址" - -msgid "Address (Support Domain Name)" -msgstr "地址(支持域名)" - -msgid "Trojan Verify Cert" -msgstr "驗證證書" - -msgid "Trojan Cert Path" -msgstr "證書路径" - -msgid "Finger Print" -msgstr "指紋伪造" - -msgid "Avoid using randomized, unless you have to." -msgstr "避免使用 randomized , 除非你必須要。" - -msgid "Original" -msgstr "原版" - -msgid "Transport Plugin" -msgstr "傳輸層插件" - -msgid "Shadowsocks secondary encryption" -msgstr "Shadowsocks 二次加密" - -msgid "Obfs Type" -msgstr "混淆類型" - -msgid "Obfs Password" -msgstr "混淆密碼" - -msgid "Auth Type" -msgstr "認證類型" - -msgid "Auth Password" -msgstr "認證密碼" - -msgid "Commands the client to use the BBR flow control algorithm" -msgstr "命令客戶端使用 BBR 流量控制算法" - -msgid "PinSHA256" -msgstr "PinSHA256" - -msgid "Certificate fingerprint" -msgstr "證書指紋" - -msgid "Max upload Mbps" -msgstr "最大上行(Mbps)" - -msgid "Max download Mbps" -msgstr "最大下行(Mbps)" - -msgid "QUIC stream receive window" -msgstr "QUIC 流接收窗口" - -msgid "QUIC connection receive window" -msgstr "QUIC 連接接收窗口" - -msgid "QUIC concurrent bidirectional streams" -msgstr "QUIC 並發双向流的最大數量" - -msgid "Disable MTU detection" -msgstr "禁用 MTU 檢測" - -msgid "ignoreClientBandwidth" -msgstr "忽略客戶端帶宽設置" - -msgid "Lazy Start" -msgstr "延迟啟動" - -msgid "Encrypt Method" -msgstr "加密方式" - -msgid "Encrypt Key" -msgstr "加密密鑰" - -msgid "Latency" -msgstr "延迟" - -msgid "Automatic detection delay" -msgstr "自動檢測延迟" - -msgid "Show server address and port" -msgstr "顯示服務器地址和端口" - -msgid "URL Test Address" -msgstr "URL 測試地址" - -msgid "URL Test" -msgstr "URL 測試" - -msgid "Test" -msgstr "測試" - -msgid "Node num" -msgstr "節點數量" - -msgid "Self add" -msgstr "自添" - -msgid "Apply" -msgstr "應用" - -msgid "Use" -msgstr "使用" - -msgid "Copy" -msgstr "復制" - -msgid "Delay Settings" -msgstr "定時配置" - -msgid "Open and close Daemon" -msgstr "啟動守護進程" - -msgid "Delay Start" -msgstr "開機時延時啟動" - -msgid "Units:seconds" -msgstr "單位:秒" - -msgid "Units:minutes" -msgstr "單位:分鐘" - -msgid "stop automatically mode" -msgstr "定時關閉模式" - -msgid "stop Time(Every day)" -msgstr "關閉時間(每天)" - -msgid "stop Interval(Hour)" -msgstr "關閉間隔(小時)" - -msgid "start automatically mode" -msgstr "定時開啟模式" - -msgid "start Time(Every day)" -msgstr "開啟時間(每天)" - -msgid "start Interval(Hour)" -msgstr "開啟間隔(小時)" - -msgid "restart automatically mode" -msgstr "定時重啟模式" - -msgid "restart Time(Every day)" -msgstr "重啟時間(每天)" - -msgid "restart Interval(Hour)" -msgstr "重啟間隔(小時)" - -msgid "Forwarding Settings" -msgstr "转發配置" - -msgid "TCP No Redir Ports" -msgstr "TCP不转發端口" - -msgid "UDP No Redir Ports" -msgstr "UDP不转發端口" - -msgid "Fill in the ports you don't want to be forwarded by the agent, with the highest priority." -msgstr "填寫你不希望被代理转發的端口,優先級最高。" - -msgid "If you don't want to let the device in the list to go proxy, please choose all." -msgstr "如果您不想让列表中的設備走代理,請選择全部。" - -msgid "The port settings support single ports and ranges.
Separate multiple ports with commas (,).
Example: 21,80,443,1000:2000." -msgstr "以上端口設置支持單端口和端口範圍。
多個端口用英文逗号(,)隔開。
例:21,80,443,1000:2000。" - -msgid "TCP Proxy Drop Ports" -msgstr "TCP转發屏蔽端口" - -msgid "UDP Proxy Drop Ports" -msgstr "UDP转發屏蔽端口" - -msgid "TCP Redir Ports" -msgstr "TCP转發端口" - -msgid "UDP Redir Ports" -msgstr "UDP转發端口" - -msgid "No patterns are used" -msgstr "不使用" - -msgid "All" -msgstr "所有" - -msgid "Common Use" -msgstr "常用的" - -msgid "Only Web" -msgstr "仅網頁" - -msgid "or more" -msgstr "及以上" - -msgid "or less" -msgstr "及以下" - -msgid "Default" -msgstr "默認" - -msgid "Close" -msgstr "關閉" - -msgid "Hijacking ICMP (PING)" -msgstr "劫持ICMP (PING)" - -msgid "Hijacking ICMPv6 (IPv6 PING)" -msgstr "劫持ICMPv6 (IPv6 PING)" - -msgid "Sniffing" -msgstr "流量嗅探" - -msgid "TCP Proxy Way" -msgstr "TCP代理方式" - -msgid "Auto Switch" -msgstr "自動切換" - -msgid "When there is no server, an automatic reconnect scheme is used" -msgstr "當沒有服務器時,則使用自動重連方案" - -msgid "How often to test" -msgstr "多久檢測一次" - -msgid "Timeout seconds" -msgstr "超時秒數" - -msgid "Timeout retry num" -msgstr "超時重試次數" - -msgid "Automatic switching cannot be used when this option is checked" -msgstr "當勾選此選項時,不能使用自動切換" - -msgid "Main node" -msgstr "主節點" - -msgid "List of backup nodes" -msgstr "備用節點的列表" - -msgid "Restore Switch" -msgstr "恢復切換" - -msgid "When detects main node is available, switch back to the main node." -msgstr "當檢測到主節點可用時,切換回主節點。" - -msgid "If the main node is shunt" -msgstr "如果主節點是分流" - -msgid "Switch it" -msgstr "切掉它" - -msgid "Applying to the default node" -msgstr "應用於默認節點" - -msgid "Applying to the default preproxy node" -msgstr "應用於默認前置節點" - -msgid "Add nodes to the standby node list by keywords" -msgstr "通過關键字添加節點到備用節點列表" - -msgid "Delete nodes in the standby node list by keywords" -msgstr "通過關键字刪除備用節點列表的節點" - -msgid "Please enter the node keyword, pay attention to distinguish between spaces, uppercase and lowercase." -msgstr "請輸入節點關键字,注意区分空格、大寫和小寫。" - -msgid "Enable Load Balancing" -msgstr "開啟負載均衡" - -msgid "Console Login Auth" -msgstr "控制臺登錄認證" - -msgid "Console Username" -msgstr "控制臺账号" - -msgid "Console Password" -msgstr "控制臺密碼" - -msgid "Console Port" -msgstr "控制臺端口" - -msgid "In the browser input routing IP plus port access, such as:192.168.1.1:1188" -msgstr "在瀏覽器輸入路由IP加端口訪問,如:192.168.1.1:1188" - -msgid "Haproxy Port" -msgstr "負載均衡端口" - -msgid "Health Check Type" -msgstr "健康檢查類型" - -msgid "Inner implement" -msgstr "內置實现" - -msgid "Health Check Inter" -msgstr "健康檢查節點間隔時間" - -msgid "When the URL test is used, the load balancing node will be converted into a Socks node. when node list set customizing, must be a Socks node, otherwise the health check will be invalid." -msgstr "當使用URL測試時,負載均衡節點將转換成Socks節點。下面的節點列表自定义時必須為Socks節點,否則健康檢查將無效。" - -msgid "Add a node, Export Of Multi WAN Only support Multi Wan. Load specific gravity range 1-256. Multiple primary servers can be load balanced, standby will only be enabled when the primary server is offline! Multiple groups can be set, Haproxy port same one for each group." -msgstr "添加節點,指定出口功能是為多WAN用戶准備的。負載比重範圍1-256。多個主服務器可以負載均衡,備用只有在主服務器离線時才会啟用!可以設置多個组,負載均衡端口相同則為一组。" - -msgid "Note that the node configuration parameters for load balancing must be consistent when use TCP health check type, otherwise it cannot be used normally!" -msgstr "注意,當使用TCP健康檢查時負載均衡的節點配置參數必須一致,否則無法正常使用!" - -msgid "Node Address" -msgstr "節點地址" - -msgid "Node address cannot be empty." -msgstr "節點地址不能為空。" - -msgid "Node Port" -msgstr "節點端口" - -msgid "Node Weight" -msgstr "負載比重" - -msgid "Export Of Multi WAN" -msgstr "多WAN指定出口" - -msgid "Main" -msgstr "主要" - -msgid "Mode" -msgstr "模式" - -msgid "Primary" -msgstr "主要" - -msgid "Standby" -msgstr "備用" - -msgid "Check update" -msgstr "檢查更新" - -msgid "Force update" -msgstr "強制更新" - -msgid "The latest version: %s, currently does not support automatic update, if you need to update, please compile or download the ipk and then manually install." -msgstr "最新版本:%s,目前暫不支持自動更新,如需更新,請自行编译或下載ipk然後手動安装。" - -msgid "Enable custom URL" -msgstr "啟用自定义規則地址" - -msgid "Rule status" -msgstr "規則版本" - -msgid "Manually update" -msgstr "手動更新" - -msgid "Enable auto update rules" -msgstr "開啟自動更新規則" - -msgid "Update Time(every day)" -msgstr "更新時間(每天)" - -msgid "Update Interval(hour)" -msgstr "更新間隔(小時)" - -msgid "Update Mode" -msgstr "更新模式" - -msgid "Loop Mode" -msgstr "循环" - -msgid "Every day" -msgstr "每天" - -msgid "Every Monday" -msgstr "每周一" - -msgid "Every Tuesday" -msgstr "每周二" - -msgid "Every Wednesday" -msgstr "每周三" - -msgid "Every Thursday" -msgstr "每周四" - -msgid "Every Friday" -msgstr "每周五" - -msgid "Every Saturday" -msgstr "每周六" - -msgid "Every Sunday" -msgstr "每周日" - -msgid "hour" -msgstr "小時" - -msgid "Hour" -msgstr "小時" - -msgid "GeoIP Update URL" -msgstr "GeoIP 更新 URL" - -msgid "Geosite Update URL" -msgstr "Geosite 更新 URL" - -msgid "Location of Geo rule files" -msgstr "Geo 资源文件目錄" - -msgid "This variable specifies a directory where geoip.dat and geosite.dat files are." -msgstr "此變量指定geoip.dat和geosite.dat文件所在的目錄。" - -msgid "Enable Geo Data Parsing" -msgstr "開啟 Geo 數据解析" - -msgid "Analyzes and preloads GeoIP/Geosite data to enhance the shunt performance of Sing-box/Xray." -msgstr "分析和预加载 GeoIP/Geosite 數据,以增強 Sing-box/Xray 的分流效果。" - -msgid "Note: Increases resource usage." -msgstr "注:会增加一些系統资源的開销。" - -msgid "Shunt Rule" -msgstr "分流規則" - -msgid "Please note attention to the priority, the higher the order, the higher the priority." -msgstr "請注意優先級問題,排序越上面優先級越高。" - -msgid "Update..." -msgstr "更新中" - -msgid "It is the latest version" -msgstr "已是最新版本" - -msgid "Update successful" -msgstr "更新成功" - -msgid "Click to update" -msgstr "點击更新" - -msgid "Updating..." -msgstr "更新中" - -msgid "Retry" -msgstr "重試" - -msgid "Unexpected error" -msgstr "意外錯誤" - -msgid "Updating, are you sure to close?" -msgstr "正在更新,你確認要關閉吗?" - -msgid "Downloading..." -msgstr "下載中" - -msgid "Unpacking..." -msgstr "解压中" - -msgid "Moving..." -msgstr "移動中" - -msgid "App Update" -msgstr "组件更新" - -msgid "Please confirm that your firmware supports FPU." -msgstr "請確認你的固件支持FPU。" - -msgid "if you want to run from memory, change the path, /tmp beginning then save the application and update it manually." -msgstr "如果你希望从內存中運行,請更改路径,/tmp 開头,然後保存應用後,再手動更新。" - -msgid "Make sure there is enough space to install %s" -msgstr "確保有足够的空間安装 %s" - -msgid "App Path" -msgstr "程序路径" - -msgid "%s App Path" -msgstr "%s 程序路径" - -msgid "%s Client App Path" -msgstr "%s 客戶端程序路径" - -msgid "Node Subscribe" -msgstr "節點訂閱" - -msgid "Subscribe Remark" -msgstr "訂閱備注(機场)" - -msgid "Subscribe Info" -msgstr "訂閱信息" - -msgid "Subscribe URL" -msgstr "訂閱網址" - -msgid "Subscribe URL Access Method" -msgstr "訂閱網址訪問方式" - -msgid "When adding a new subscription, please save and apply before manually subscribing. If you only change the subscription URL, you can subscribe manually, and the system will save it automatically." -msgstr "新增訂閱請先保存並應用後再手動訂閱;如仅修改訂閱地址,可直接手動訂閱,系統將自動保存。" - -msgid "Please save and apply before manually subscribing." -msgstr "請先保存並應用後再手動訂閱。" - -msgid "Subscribe URL cannot be empty." -msgstr "訂閱網址不能為空。" - -msgid "Subscribe via proxy" -msgstr "通過代理訂閱" - -msgid "Enable auto update subscribe" -msgstr "開啟自動更新訂閱" - -msgid "Manual subscription" -msgstr "手動訂閱" - -msgid "Delete All Subscribe Node" -msgstr "刪除所有訂閱節點" - -msgid "Delete the subscribed node" -msgstr "刪除已訂閱的節點" - -msgid "Are you sure you want to delete all subscribed nodes?" -msgstr "您確定要刪除所有已訂閱的節點吗?" - -msgid "Manual subscription All" -msgstr "手動訂閱全部鏈接" - -msgid "This remark already exists, please change a new remark." -msgstr "此備注已存在,請改一個新的備注。" - -msgid "Remark cannot be empty." -msgstr "備注不能爲空。" - -msgid "URL cannot be empty." -msgstr "網址不能爲空。" - -msgid "Filter keyword Mode" -msgstr "過濾關键字模式" - -msgid "Discard List" -msgstr "丟棄列表" - -msgid "Keep List" -msgstr "保留列表" - -msgid "Discard List,But Keep List First" -msgstr "丟棄列表,但保留列表優先" - -msgid "Keep List,But Discard List First" -msgstr "保留列表,但丟棄列表優先" - -msgid "Use global config" -msgstr "使用全局配置" - -msgid "User-Agent" -msgstr "用戶代理(User-Agent)" - -msgid "Add" -msgstr "添加" - -msgid "ACLs" -msgstr "訪問控制" - -msgid "ACLs is a tools which used to designate specific IP proxy mode." -msgstr "訪問控制列表是用於指定特殊IP代理模式的工具。" - -msgid "Example:" -msgstr "例:" - -msgid "IP range" -msgstr "IP 範圍" - -msgid "Source Interface" -msgstr "源接口" - -msgid "Use Interface With ACLs" -msgstr "使用接口控制" - -msgid "Remarks" -msgstr "備注" - -msgid "Direct List" -msgstr "直連列表" - -msgid "Proxy List" -msgstr "代理列表" - -msgid "Block List" -msgstr "屏蔽列表" - -msgid "Lan IP List" -msgstr "局域網IP列表" - -msgid "Route Hosts" -msgstr "路由Hosts文件" - -msgid "Join the direct hosts list of domain names will not proxy." -msgstr "加入的域名不走代理,對所有模式有效。且優先級最高。" - -msgid "These had been joined ip addresses will not proxy. Please input the ip address or ip address segment,every line can input only one ip address. For example: 192.168.0.0/24 or 223.5.5.5." -msgstr "加入的IP段不走代理,對所有模式有效。且優先級最高。可輸入IP地址或地址段,如:192.168.0.0/24或223.5.5.5,每個地址段一行。" - -msgid "These had been joined websites will use proxy. Please input the domain names of websites, every line can input only one website domain. For example: google.com." -msgstr "加入的域名將走代理。輸入網站域名,如:google.com,每個地址段一行。" - -msgid "These had been joined ip addresses will use proxy. Please input the ip address or ip address segment, every line can input only one ip address. For example: 35.24.0.0/24 or 8.8.4.4." -msgstr "加入的IP段將走代理。可輸入IP地址或地址段,如:35.24.0.0/24或8.8.4.4,每個地址段一行。" - -msgid "These had been joined websites will be block. Please input the domain names of websites, every line can input only one website domain. For example: twitter.com." -msgstr "加入的域名將屏蔽。輸入網站域名,如:twitter.com,每個地址段一行。" - -msgid "The list is the IPv4 LAN IP list, which represents the direct connection IP of the LAN. If you need the LAN IP in the proxy list, please clear it from the list. Do not modify this list by default." -msgstr "列表中為IPv4的局域網IP列表,代表局域網直連IP。如果需要代理列表中的局域網IP,請將其在该列表中清除,並將其添加到代理列表中。默認情況下不要修改這個列表。" - -msgid "The list is the IPv6 LAN IP list, which represents the direct connection IP of the LAN. If you need the LAN IP in the proxy list, please clear it from the list. Do not modify this list by default." -msgstr "列表中為IPv6的局域網IP列表,代表局域網直連IP。如果需要代理列表中的局域網IP,請將其在该列表中清除,並將其添加到代理列表中。默認情況下不要修改這個列表。" - -msgid "Configure routing etc/hosts file, if you don't know what you are doing, please don't change the content." -msgstr "配置路由etc/hosts文件,如果你不知道自己在做什麼,請不要改動內容。" - -msgid "These had been joined ip addresses will be block. Please input the ip address or ip address segment, every line can input only one ip address." -msgstr "加入的IP段將屏蔽。可輸入IP地址或地址段,每個地址段一行。" - -msgid "Inbound Tag" -msgstr "入站標签" - -msgid "Transparent proxy" -msgstr "透明代理" - -msgid "Not valid domain name, please re-enter!" -msgstr "不是有效域名,請重新輸入!" - -msgid "Not valid IP format, please re-enter!" -msgstr "不是有效IP格式,請重新輸入!" - -msgid "Not valid IPv4 format, please re-enter!" -msgstr "不是有效IPv4格式,請重新輸入!" - -msgid "Not valid IPv6 format, please re-enter!" -msgstr "不是有效IPv6格式,請重新輸入!" - -msgid "Not true format, please re-enter!" -msgstr "不是正確的格式,請重新輸入!" - -msgid "Plaintext: If this string matches any part of the targeting domain, this rule takes effet. Example: rule 'sina.com' matches targeting domain 'sina.com', 'sina.com.cn' and 'www.sina.com', but not 'sina.cn'." -msgstr "純字符串: 當此字符串匹配目標域名中任意部分,该規則生效。比如'sina.com'可以匹配'sina.com'、'sina.com.cn'和'www.sina.com',但不匹配'sina.cn'。" - -msgid "Regular expression: Begining with 'regexp:', the rest is a regular expression. When the regexp matches targeting domain, this rule takes effect. Example: rule 'regexp:\\.goo.*\\.com$' matches 'www.google.com' and 'fonts.googleapis.com', but not 'google.com'." -msgstr "正則表达式: 由'regexp:'開始,余下部分是一個正則表达式。當此正則表达式匹配目標域名時,该規則生效。例如'regexp:\\.goo.*\\.com$'匹配'www.google.com'、'fonts.googleapis.com',但不匹配'google.com'。" - -msgid "Subdomain (recommended): Begining with 'domain:' and the rest is a domain. When the targeting domain is exactly the value, or is a subdomain of the value, this rule takes effect. Example: rule 'domain:v2ray.com' matches 'www.v2ray.com', 'v2ray.com', but not 'xv2ray.com'." -msgstr "子域名 (推荐): 由'domain:'開始,余下部分是一個域名。當此域名是目標域名或其子域名時,该規則生效。例如'domain:v2ray.com'匹配'www.v2ray.com'、'v2ray.com',但不匹配'xv2ray.com'。" - -msgid "Full domain: Begining with 'full:' and the rest is a domain. When the targeting domain is exactly the value, the rule takes effect. Example: rule 'domain:v2ray.com' matches 'v2ray.com', but not 'www.v2ray.com'." -msgstr "完整匹配: 由'full:'開始,余下部分是一個域名。當此域名完整匹配目標域名時,该規則生效。例如'full:v2ray.com'匹配'v2ray.com'但不匹配'www.v2ray.com'。" - -msgid "Sing-Box rule-set: Begining with 'rule-set:remote:' or 'rule-set:local:'" -msgstr "Sing-Box 規則集: 由 'rule-set:remote:' 或 'rule-set:local:' 開始" - -msgid "Such as:" -msgstr "例如:" - -msgid "Pre-defined domain list: Begining with 'geosite:' and the rest is a name, such as geosite:google or geosite:cn." -msgstr "预定义域名列表:由'geosite:'開头,余下部分是一個名称,如geosite:google或者geosite:cn。" - -msgid "Annotation: Begining with #" -msgstr "注释: 由 # 開头" - -msgid "Invert match result." -msgstr "反選匹配結果。" - -msgid "Only support Sing-Box." -msgstr "只支持 Sing-Box。" - -msgid "IP: such as '127.0.0.1'." -msgstr "IP: 形如'127.0.0.1'。" - -msgid "CIDR: such as '127.0.0.0/8'." -msgstr "CIDR: 形如'10.0.0.0/8'." - -msgid "GeoIP: such as 'geoip:cn'. It begins with geoip: (lower case) and followed by two letter of country code." -msgstr "GeoIP: 形如'geoip:cn',必須以geoip:(小寫)開头,後面跟双字符国家代码,支持几乎所有可以上網的国家。" - -msgid "Clear logs" -msgstr "清空日誌" - -msgid "Password" -msgstr "密碼" - -msgid "IV Check" -msgstr "IV 檢查" - -msgid "UDP over TCP" -msgstr "TCP 封装 UDP" - -msgid "Connection Timeout" -msgstr "連接超時時間" - -msgid "Local Port" -msgstr "本地端口" - -msgid "Fast Open" -msgstr "快速打開" - -msgid "Pre-connections" -msgstr "預連接" - -msgid "Number of early established connections to reduce latency." -msgstr "預連接的數量,用於降低延遲。" - -msgid "plugin" -msgstr "插件" - -msgid "Supports custom SIP003 plugins, Make sure the plugin is installed." -msgstr "支持自定义 SIP003 插件,請確保插件已安装。" - -msgid "opts" -msgstr "插件選項" - -msgid "Protocol" -msgstr "協議名称" - -msgid "Protocol_param" -msgstr "協議參數" - -msgid "Obfs" -msgstr "混淆" - -msgid "Obfs_param" -msgstr "混淆參數" - -msgid "Plugin Name" -msgstr "插件名称" - -msgid "Plugin Arguments" -msgstr "插件參數" - -msgid "Naiveproxy Protocol" -msgstr "Naiveproxy協議" - -msgid "User Level" -msgstr "用戶等級(level)" - -msgid "Transport" -msgstr "傳輸方式" - -msgid "Public Key" -msgstr "公鑰" - -msgid "Private Key" -msgstr "私鑰" - -msgid "Pre shared key" -msgstr "额外的對称加密密鑰" - -msgid "Local Address" -msgstr "本地地址" - -msgid "System interface" -msgstr "系統接口" - -msgid "System interface name" -msgstr "系統接口名称" - -msgid "Decimal numbers separated by \",\" or Base64-encoded strings." -msgstr "用“,”隔開的十进制數字或 Base64 编码字符串。" - -msgid "Camouflage Domain" -msgstr "伪装域名" - -msgid "Camouflage Type" -msgstr "伪装類型" - -msgid "Transport Layer Encryption" -msgstr "傳輸層加密" - -msgid "Whether or not transport layer encryption is enabled, \"none\" for unencrypted, \"tls\" for using TLS, \"xtls\" for using XTLS." -msgstr "是否啟入傳輸層加密,支持的選項有 \"none\" 表示不加密,\"tls\" 表示使用 TLS,\"xtls\" 表示使用 XTLS。" - -msgid "Original Trojan only supported 'tls', please choose 'tls'." -msgstr "原版Trojan只支持'tls',請選择'tls'。" - -msgid "Transfer mode" -msgstr "傳輸模式" - -msgid "Do not send server name in ClientHello." -msgstr "不要在 ClientHello 中發送服務器名称." - -msgid "Domain" -msgstr "域名" - -msgid "allowInsecure" -msgstr "允許不安全連接" - -msgid "Whether unsafe connections are allowed. When checked, Certificate validation will be skipped." -msgstr "是否允許不安全連接。當勾選時,將跳過證書驗證。" - -msgid "%s Node Use Type" -msgstr "%s 節點使用類型" - -msgid "Set the TUIC proxy server ip address" -msgstr "指定遠程TUIC服務器IP" - -msgid "TUIC User Password For Connect Remote Server" -msgstr "用於遠程TUIC服務器連接的密碼" - -msgid "TUIC UserName For Local Socks" -msgstr "用於本地Socks服務器連接的用戶名" - -msgid "TUIC Password For Local Socks" -msgstr "用於本地Socks服務器連接的密碼" - -msgid "UDP relay mode" -msgstr "UDP中继模式" - -msgid "Congestion control algorithm" -msgstr "拥塞控制算法" - -msgid "Heartbeat interval(second)" -msgstr "保活心跳包發送間隔(單位:秒)" - -msgid "Timeout for establishing a connection to server(second)" -msgstr "連接超時時間(單位:秒)" - -msgid "Garbage collection interval(second)" -msgstr "UDP數据包片残片清理間隔(單位:秒)" - -msgid "Garbage collection lifetime(second)" -msgstr "UDP數据包残片在服務器的保留時間(單位:秒)" - -msgid "Disable SNI" -msgstr "關閉SNI服務器名称指示" - -msgid "Enable 0-RTT QUIC handshake" -msgstr "客戶端啟用 0-RTT QUIC 連接握手" - -msgid "TUIC send window" -msgstr "發送窗口(無需確認即可發送的最大字节數:默認8Mb*2)" - -msgid "TUIC receive window" -msgstr "接收窗口(無需確認即可接收的最大字节數:默認8Mb)" - -msgid "TUIC Maximum packet size the socks5 server can receive from external, in bytes" -msgstr "TUIC socks5 服務器可以从外部接收的最大數据包大小(以字节為單位)" - -msgid "Set if the listening socket should be dual-stack" -msgstr "設置監聽套接字為双栈" - -msgid "
none: default, no masquerade, data sent is packets with no characteristics.
srtp: disguised as an SRTP packet, it will be recognized as video call data (such as FaceTime).
utp: packets disguised as uTP will be recognized as bittorrent downloaded data.
wechat-video: packets disguised as WeChat video calls.
dtls: disguised as DTLS 1.2 packet.
wireguard: disguised as a WireGuard packet. (not really WireGuard protocol)
dns: Disguising traffic as DNS requests." -msgstr "
none:默認值,不进行伪装,發送的數据是沒有特征的數据包。
srtp:伪装成 SRTP 數据包,会被识别為視频通话數据(如 FaceTime)。
utp:伪装成 uTP 數据包,会被识别為 BT 下載數据。
wechat-video:伪装成微信視频通话的數据包。
dtls:伪装成 DTLS 1.2 數据包。
wireguard:伪装成 WireGuard 數据包。(並不是真正的 WireGuard 協議)
dns:把流量伪装成 DNS 請求。" - -msgid "Use it together with the DNS disguised type. You can fill in any domain." -msgstr "配合伪装類型 DNS 使用,可随便填一個域名。" - -msgid "Auth" -msgstr "身份認證" - -msgid "Socks for authentication" -msgstr "Socks認證方式" - -msgid "Socks protocol authentication, support anonymous and password." -msgstr "Socks 協議的認證方式,支持匿名方式和账号密碼方式。" - -msgid "anonymous" -msgstr "匿名" - -msgid "User Password" -msgstr "账号密碼" - -msgid "Username and Password must be used together!" -msgstr "账号和密碼必須同時使用!" - -msgid "Prefer firewall tools" -msgstr "首選防火牆工具" - -msgid "IPv6 TProxy" -msgstr "IPv6透明代理(TProxy)" - -msgid "Experimental feature. Make sure that your node supports IPv6." -msgstr "實驗特性,請確保你的節點支持IPv6" - -msgid "Status info" -msgstr "状態信息" - -msgid "Big icon" -msgstr "大图標" - -msgid "Show node check" -msgstr "顯示節點檢測" - -msgid "Show Show IP111" -msgstr "顯示IP111" - -msgid "Destination protocol" -msgstr "目標協議" - -msgid "Destination address" -msgstr "目標地址" - -msgid "Destination port" -msgstr "目標端口" - -msgid "Whether to receive PROXY protocol, when this node want to be fallback or forwarded by proxy, it must be enable, otherwise it cannot be used." -msgstr "是否接收 PROXY protocol,當该節點要被回落或被代理转發時,必須啟用,否則不能使用。" - -msgid "outbound node" -msgstr "出站節點" - -msgid "Custom Socks" -msgstr "自定义 Socks" - -msgid "Custom HTTP" -msgstr "自定义 HTTP" - -msgid "Custom Interface" -msgstr "自定义接口" - -msgid "Interface" -msgstr "接口" - -msgid "Bind Local" -msgstr "本機監聽" - -msgid "When selected, it can only be accessed localhost." -msgstr "當勾選時,只能本機訪問。" - -msgid "Accept LAN Access" -msgstr "接受局域網訪問" - -msgid "When selected, it can accessed lan , this will not be safe!" -msgstr "當勾選時,可以直接訪問局域網,這將不安全!(非特殊情況不建議開啟)" - -msgid "Enable Remote" -msgstr "啟用转發" - -msgid "You can forward to Nginx/Caddy/V2ray/Xray WebSocket and more." -msgstr "您可以转發到Nginx/Caddy/V2ray/Xray WebSocket等。" - -msgid "Remote Address" -msgstr "遠程地址" - -msgid "Remote Port" -msgstr "遠程端口" - -msgid "as:" -msgstr "如:" - -msgid "Public key absolute path" -msgstr "公鑰文件绝對路径" - -msgid "Private key absolute path" -msgstr "私鑰文件绝對路径" - -msgid "Can't find this file!" -msgstr "找不到這個文件!" - -msgid "Public key and Private key path can not be empty!" -msgstr "公鑰和私鑰文件路径不能為空!" - -msgid "Server-Side" -msgstr "服務器端" - -msgid "Server Config" -msgstr "服務器配置" - -msgid "Users Manager" -msgstr "用戶管理" - -msgid "Logs" -msgstr "日誌" - -msgid "Log" -msgstr "日誌" - -msgid "Enable Node Log" -msgstr "啟用節點日誌" - -msgid "Log Level" -msgstr "日誌等級" - -msgid "Not enabled log" -msgstr "未啟用日誌" - -msgid "UDP Forward" -msgstr "UDP转發" - -msgid "DNS Settings" -msgstr "DNS設置" - -msgid "Null" -msgstr "無" - -msgid "You did not fill in the %s path. Please save and apply then update manually." -msgstr "您沒有填寫 %s 路径。請保存應用後再手動更新。" - -msgid "Not installed %s, Can't unzip!" -msgstr "未安装 %s,無法解压。" - -msgid "Can't determine ARCH, or ARCH not supported." -msgstr "無法確認ARCH架構,或是不支持。" - -msgid "Get remote version info failed." -msgstr "獲取遠程版本信息失敗。" - -msgid "New version found, but failed to get new version download url." -msgstr "發现新版本,但未能獲得新版本的下載地址。" - -msgid "Download url is required." -msgstr "請指定下載地址。" - -msgid "File download failed or timed out: %s" -msgstr "文件下載失敗或超時:%s" - -msgid "File path required." -msgstr "請指定文件路径。" - -msgid "%s not enough space." -msgstr "%s 空間不足。" - -msgid "Can't find client in file: %s" -msgstr "無法在文件中找到客戶端:%s" - -msgid "Client file is required." -msgstr "請指定客戶端文件。" - -msgid "The client file is not suitable for current device." -msgstr "客戶端文件不適合當前設備。" - -msgid "Can't move new file to path: %s" -msgstr "無法移動新文件到:%s" - -msgid "An XHttpObject in JSON format, used for sharing." -msgstr "JSON 格式的 XHttpObject,用來實现分享。" - -msgid "Enable Mux.Cool" -msgstr "啟用 Mux.Cool" - -msgid "Mux concurrency" -msgstr "最大並發連接數" - -msgid "XUDP Mux concurrency" -msgstr "XUDP 最大並發連接數" - -msgid "Padding" -msgstr "填充" - -msgid "Enable early data" -msgstr "啟用前置數据" - -msgid "Early data length" -msgstr "前置數据最大长度" - -msgid "Early data header name" -msgstr "前置數据 HTTP 头名" - -msgid "Recommended value: Sec-WebSocket-Protocol" -msgstr "推荐值:Sec-WebSocket-Protocol" - -msgid "Health check" -msgstr "健康檢查" - -msgid "Health check timeout" -msgstr "檢查超時時間" - -msgid "Permit without stream" -msgstr "無子連接時的健康檢查" - -msgid "Initial Windows Size" -msgstr "初始窗口大小" - -msgid "Excluded Domains" -msgstr "排除域名" - -msgid "If the traffic sniffing result is in this list, the destination address will not be overridden." -msgstr "如果流量嗅探結果在此列表中,則不会覆盖目標地址。" - -msgid "Buffer Size" -msgstr "缓衝区大小" - -msgid "Buffer size for every connection (kB)" -msgstr "每一個連接的缓衝区大小(kB)" - -msgid "Handshake Timeout" -msgstr "握手超時 " - -msgid "Idle Timeout" -msgstr "空闲超時 " - -msgid "Hop Interval" -msgstr "端口跳跃時間 " - -msgid "HeartbeatPeriod(second)" -msgstr "心跳周期(單位:秒)" - -msgid "Override the connection destination address" -msgstr "覆盖連接目標地址" - -msgid "Override the connection destination address with the sniffed domain.
Otherwise use sniffed domain for routing only.
If using shunt nodes, configure the domain shunt rules correctly." -msgstr "用探測出的域名覆盖連接目標地址。
否則仅將探測得到的域名用於路由。
如使用分流節點,請正確設置域名分流規則。" - -msgid "Override the connection destination address with the sniffed domain.
When enabled, traffic will match only by domain, ignoring IP rules.
If using shunt nodes, configure the domain shunt rules correctly." -msgstr "用探測出的域名覆盖連接目標地址。
啟用後仅使用域名进行流量匹配,將忽略IP規則。
如使用分流節點,請正確設置域名分流規則。" - -msgid "Handshake Server" -msgstr "握手服務器" - -msgid "Handshake Server Port" -msgstr "握手服務器端口" - -msgid "Protocol parameter. Will waste traffic randomly if enabled." -msgstr "協議參數。 如果啟用会随機浪费流量。" - -msgid "Protocol parameter. Enable length block encryption." -msgstr "協議參數。啟用长度块加密。" - -msgid "TLS Chain Fingerprint (SHA256)" -msgstr "TLS 憑證鏈指紋(SHA256)" - -msgid "Once set, connects only when the server’s chain fingerprint matches." -msgstr "設定後,僅在伺服器憑證鏈指紋匹配時連接。" - -msgid "ECH Config" -msgstr "ECH 配置" - -msgid "ECH Key" -msgstr "ECH 密鑰" - -msgid "PQ signature schemes" -msgstr "後量子對等證書签名方案" - -msgid "Disable adaptive sizing of TLS records" -msgstr "禁用 TLS 記錄的自適應大小调整" - -msgid "ECH Query Policy" -msgstr "ECH 查詢策略" - -msgid "Controls the policy used when performing DNS queries for ECH configuration." -msgstr "控制使用 DNS 查詢 ECH 配置時的策略。" - -msgid "Enable Multipath TCP, need to be enabled in both server and client configuration." -msgstr "啟用 Multipath TCP,需在服務端和客戶端配置中同時啟用。" - -msgid "Fragment" -msgstr "分片" - -msgid "TCP fragments, which can deceive the censorship system in some cases, such as bypassing SNI blacklists." -msgstr "TCP 分片,在某些情況下可以欺骗审查系統,比如绕過 SNI 黑名單。" - -msgid "Fragment Packets" -msgstr "分片方式" - -msgid " \"1-3\" is for segmentation at TCP layer, applying to the beginning 1 to 3 data writes by the client. \"tlshello\" is for TLS client hello packet fragmentation." -msgstr " \"1-3\" 是 TCP 的流切片,應用於客戶端第 1 至第 3 次寫數据。\"tlshello\" 是 TLS 握手包切片。" - -msgid "Fragment Length" -msgstr "分片包长" - -msgid "Fragmented packet length (byte)" -msgstr "分片包长 (byte)" - -msgid "Fragment Interval" -msgstr "分片間隔" - -msgid "Fragmentation interval (ms)" -msgstr "分片間隔(ms)" - -msgid "Max Split" -msgstr "最大分片數" - -msgid "Limit the maximum number of splits." -msgstr "限制分片的最大數量。" - -msgid "Split handshake data into multiple TLS records for better censorship evasion. Low overhead. Recommended to enable first." -msgstr "將握手數据拆分為多個 TLS 記錄,提升抗封锁能力,几乎不增加延迟,建議優先啟用。" - -msgid "Split handshake into multiple TCP segments. Enhances obfuscation. May increase delay. Use only if needed." -msgstr "將 TLS 握手數据分為多個 TCP 包發送,提高伪装性,可能增加延迟,仅在封锁严重時使用。" - -msgid "Noise" -msgstr "噪聲" - -msgid "UDP noise, Under some circumstances it can bypass some UDP based protocol restrictions." -msgstr "UDP 噪聲,在某些情況下可以绕過一些针對 UDP 協議的限制。" - -msgid "To send noise packets, select \"Noise\" in Xray Settings." -msgstr "在 Xray 設置中勾選 “噪聲” 以發送噪聲包。" - -msgid "Xray Noise Packets" -msgstr "Xray 噪聲數据包" - -msgid "Packet" -msgstr "數据包" - -msgid "Delay (ms)" -msgstr "延迟(ms)" - -msgid "IP Type" -msgstr "IP 類型" - -msgid "If is domain name, The requested domain name will be resolved to IP before connect." -msgstr "如果是域名,域名將在請求發出之前解析為 IP。" - -msgid "Chain Proxy" -msgstr "鏈式代理" - -msgid "Landing Node" -msgstr "落地節點" - -msgid "Only support a layer of proxy." -msgstr "仅支持一層代理。" - -msgid "" -"Chained proxy works only with Xray or Sing-box nodes.
" -"The chained node must be the same type as your subscription node (Xray with Xray, Sing-box with Sing-box).
" -"You can only use manual or imported nodes as chained nodes." -msgstr "" -"鏈式代理仅支持 Xray 与 Sing-box 節點。
" -"鏈式節點需与訂閱節點類型一致(Xray 對應 Xray,Sing-box 對應 Sing-box)。
" -"仅支持手動添加或導入的節點用作鏈式節點。" - -msgid "Set the default domain resolution strategy for the sing-box node." -msgstr "為 sing-box 節點設置默認的域名解析策略。" - -msgid "Prefer IPv4" -msgstr "IPv4 優先" - -msgid "Prefer IPv6" -msgstr "IPv6 優先" - -msgid "IPv4 Only" -msgstr "仅 IPv4" - -msgid "IPv6 Only" -msgstr "仅 IPv6" - -msgid "Maintain" -msgstr "维護" - -msgid "Backup and Restore" -msgstr "備份还原" - -msgid "Backup or Restore Client and Server Configurations." -msgstr "備份或还原客戶端及服務端配置。" - -msgid "Note: Restoring configurations across different versions may cause compatibility issues." -msgstr "注意:不同版本間的配置恢復可能会導致兼容性問題。" - -msgid "Create Backup File" -msgstr "创建備份文件" - -msgid "Restore Backup File" -msgstr "恢復備份文件" - -msgid "DL Backup" -msgstr "下載備份" - -msgid "RST Backup" -msgstr "恢復備份" - -msgid "Backup failed!" -msgstr "備份失敗!" - -msgid "UL Restore" -msgstr "上傳恢復" - -msgid "CLOSE WIN" -msgstr "關閉窗口" - -msgid "Restore to default configuration" -msgstr "恢復默認配置" - -msgid "Do Reset" -msgstr "执行重置" - -msgid "Please select a file first." -msgstr "請先選择一個文件。" - -msgid "Invalid file type. Please upload a .tar.gz file." -msgstr "文件類型無效,請上傳一個 .tar.gz 文件。" - -msgid "File size exceeds 10MB limit." -msgstr "文件大小超過 10MB 限制。" - -msgid "Do you want to restore the client to default settings?" -msgstr "是否要恢復客戶端默認配置?" - -msgid "Are you sure you want to restore the client to default settings?" -msgstr "是否真的要恢復客戶端默認配置?" - -msgid "Configuration file uploaded successfully…" -msgstr "配置文件上傳成功…" - -msgid "Configuration restored successfully…" -msgstr "配置还原成功…" - -msgid "Service restarting…" -msgstr "重啟服務中…" - -msgid "Configuration file decompression failed, please try again!" -msgstr "配置文件解压失敗,請重試!" - -msgid "_urltest" -msgstr "URLTest" - -msgid "URLTest node list" -msgstr "URLTest 節點列表" - -msgid "List of nodes to test, document" -msgstr "要測試的節點列表,文檔原理" - -msgid "Test interval" -msgstr "測試間隔" - -msgid "Test interval must be less or equal than idle timeout." -msgstr "測試間隔時間必須小於或等於空闲超時時間。" - -msgid "Test tolerance" -msgstr "測試容差" - -msgid "The test tolerance in milliseconds." -msgstr "測試容差時間(單位:毫秒)。" - -msgid "Idle timeout" -msgstr "空闲超時" - -msgid "The idle timeout." -msgstr "空闲超時時間。" - -msgid "Interrupt existing connections" -msgstr "中斷现有連接" - -msgid "Interrupt existing connections when the selected outbound has changed." -msgstr "當選择的出站發生變化時中斷现有連接。" - -msgid "Port hopping range" -msgstr "端口跳跃範圍" - -msgid "Format as 1000:2000 or 1000-2000 Multiple groups are separated by commas (,)." -msgstr "格式為:1000:2000 或 1000-2000 多组時用逗号(,)隔開。" - -msgid "Use Custom Config" -msgstr "使用自定义配置" - -msgid "Custom Config" -msgstr "自定义配置" - -msgid "Must be JSON text!" -msgstr "必須是 JSON 文本內容!" - -msgid "Geo View" -msgstr "Geo 查詢" - -msgid "Query" -msgstr "查詢" - -msgid "Querying" -msgstr "查詢中" - -msgid "Please enter query content!" -msgstr "請輸入查詢內容!" - -msgid "No results were found!" -msgstr "未找到任何結果!" - -msgid "Domain/IP Query" -msgstr "域名/IP 查詢" - -msgid "GeoIP/Geosite Query" -msgstr "GeoIP/Geosite 查詢" - -msgid "Enter a domain or IP to query the Geo rule list they belong to." -msgstr "輸入域名/IP,查詢它们所在的 Geo 規則列表。" - -msgid "Enter a GeoIP or Geosite to extract the domains/IPs they contain. Format: geoip:cn or geosite:gfw" -msgstr "輸入 GeoIP/Geosite,提取它们所包含的域名/IP。格式:geoip:cn 或 geosite:gfw" - -msgid "Tips:" -msgstr "小贴士:" - -msgid "By entering a domain or IP, you can query the Geo rule list they belong to." -msgstr "可以通過輸入域名/IP,查詢它们所在的 Geo 規則列表。" - -msgid "By entering a GeoIP or Geosite, you can extract the domains/IPs they contain." -msgstr "可以通過輸入 GeoIP/Geosite,提取它们所包含的域名/IP。" - -msgid "Use the GeoIP/Geosite query function to verify if the entered Geo rules are correct." -msgstr "利用 GeoIP/Geosite 查詢功能,可以驗證輸入的 Geo 規則是否正確。" - -msgid "Private Key Passphrase" -msgstr "私鑰指紋" - -msgid "Host Key" -msgstr "主機密鑰" - -msgid "Accept any if empty." -msgstr "留空則不校驗。" - -msgid "Host Key Algorithms" -msgstr "主機密鑰算法" - -msgid "Client Version" -msgstr "客戶端版本" - -msgid "Random version will be used if empty." -msgstr "如留空,則使用随機版本。" - -msgid "The configured type also applies to the core specified when manually importing nodes." -msgstr "配置的類型同樣適用於手動導入節點時所指定的核心程序。" - -msgid "Group Name" -msgstr "分組名" - -msgid "Reassign Group" -msgstr "調整分組" - -msgid "Reassign Node Group" -msgstr "調整節點分組" - -msgid "Search nodes..." -msgstr "搜尋節點…" - -msgid "Using..." -msgstr "使用中。" - -msgid "Generate configuration file and run" -msgstr "生成配置文件並運行" - -msgid "Start after a delay of %s seconds!" -msgstr "延時 %s 秒後再啟動!" - -msgid "The script is already running, do not run it again. Exit." -msgstr "脚本已经在運行,不重復運行,退出." - -msgid "Stop the script and wait for a timeout, then exit without repeating the process." -msgstr "停止脚本等待超時,不重復運行,退出." - -msgid "Warning: The %s application environment is incomplete. Switch to %s. (%s)" -msgstr "警告:%s 應用環境不完整,切換至 %s。 (%s)" - -msgid "Note: Dnsmasq (%s) is below 2.90. Upgrading is recommended to improve stability." -msgstr "提示:Dnsmasq (%s) 低於 2.90,建議升級以增強穩定性。" - -msgid "Warning: %s transparent proxy is missing basic dependency %s!" -msgstr "警告:%s 透明代理缺少基礎依賴 %s!" - -msgid "Warning: Not compatible with any transparent proxy system environment." -msgstr "警告:不滿足任何透明代理系統環境。" - -msgid "%s does not have execute permissions and cannot be started: %s %s" -msgstr "%s 沒有执行權限,無法啟動:%s %s" - -msgid "%s not found, unable to start..." -msgstr "找不到 %s,無法啟動..." - -msgid "Socks node: [%s]%s is an invalid server address and cannot be started!" -msgstr "Socks節點:[%s]%s 是非法的服務器地址,無法啟動!" - -msgid "For some reason, the configuration for this Socks service has been lost, and its startup has been aborted!" -msgstr "某种原因,此 Socks 服務的相關配置已失联,啟動中止!" - -msgid "Socks node: [%s]%s, start failed %s:%s %s" -msgstr "Socks節點:[%s]%s,啟動失敗 %s:%s %s" - -msgid "Socks node: [%s]%s, starting %s:%s" -msgstr "Socks節點:[%s]%s,啟動 %s:%s" - -msgid "To enable experimental IPv6 transparent proxy (TProxy), please ensure your node and type support IPv6!" -msgstr "開啟實驗性IPv6透明代理(TProxy),請確認您的節點及類型支持IPv6!" - -msgid "Analyzing the node configuration of the Socks service..." -msgstr "分析 Socks 服務的節點配置..." - -msgid "Log file is too long, clear it!" -msgstr "日誌文件過长,清空处理!" - -msgid "The task is currently running automatically as a scheduled task; no reconfiguration of the scheduled task is required." -msgstr "當前為計划任務自動運行,不重新配置定時任務。" - -msgid "Scheduled tasks: Auto stop service." -msgstr "配置定時任務:自動關閉服務。" - -msgid "Scheduled tasks: Auto start service." -msgstr "配置定時任務:自動開啟服務。" - -msgid "Scheduled tasks: Auto restart service." -msgstr "配置定時任務:自動重啟服務。" - -msgid "Scheduled tasks: Auto update rules." -msgstr "配置定時任務:自動更新規則。" - -msgid "Scheduled tasks: Auto update [%s] subscription." -msgstr "配置定時任務:自動更新 【%s】 訂閱。" - -msgid "Auto updates: Starts a cyclical update process." -msgstr "自動更新:啟動循环更新進程。" - -msgid "Running in no proxy mode, it only allows scheduled tasks for starting and stopping services." -msgstr "運行於非代理模式,仅允許服務啟停的定時任務。" - -msgid "Clear scheduled commands." -msgstr "清除定時执行命令。" - -msgid "Unable to resolve [%s], route table addition failed!" -msgstr "無法解析[%s],路由表添加失敗!" - -msgid "[%s] was successfully added to the routing table of interface [%s]!" -msgstr "[%s]添加到接口[%s]路由表成功!" - -msgid "Adding [%s] to the [%s] routing table failed! The reason is that the [%s] gateway cannot be found." -msgstr "[%s]添加到接口[%s]路由表失功!原因是找不到[%s]網關。" - -msgid "Global nodes are not enabled, skip [%s]." -msgstr "全局節點未啟用,跳過【%s】" - -msgid "Direct DNS: %s" -msgstr "直連 DNS:%s" - -msgid "Remote DNS: %s" -msgstr "遠程 DNS:%s" - -msgid "The program has started. Please stop it and then restart it!" -msgstr "程序已啟動,先停止再重新啟動!" - -msgid "Running complete!" -msgstr "運行完成!" - -msgid "Clearing and closing related programs and cache complete." -msgstr "清空並關閉相關程序和缓存完成。" - -msgid "Incorrect index listing method (%s), execution terminated!" -msgstr "索引列举方式不正確(%s),终止执行!" - -msgid "parse the traffic splitting rules[%s]-[geoip:%s] add to %s to complete." -msgstr "解析分流規則[%s]-[geoip:%s]加入到 %s 完成" - -msgid "Access Control:" -msgstr "訪問控制:" - -msgid "Add node to the load balancer is directly connected to %s[%s]." -msgstr "加入負載均衡的節點到%s[%s]直連完成。" - -msgid "Add all %s nodes to %s[%s] direct connection complete." -msgstr "加入所有%s節點到%s[%s]直連完成。" - -msgid "Starting to load %s firewall rules..." -msgstr "開始加载 %s 防火墙規則..." - -msgid "local network segments (%s) direct connection: %s" -msgstr "本機 %s 網段直連:%s" - -msgid "Add ISP %s DNS to the whitelist: %s" -msgstr "追加ISP %s DNS 到白名單:%s" - -msgid "[%s]" -msgstr "【%s】" - -msgid "[%s]," -msgstr "【%s】," - -msgid "Source iface [%s]," -msgstr "源接口【%s】," - -msgid "IP range [%s]," -msgstr "IP 範圍【%s】," - -msgid "All device," -msgstr "所有設備," - -msgid "Does not exist, ignore." -msgstr "不存在,忽略。" - -msgid "not proxy %s port [%s]" -msgstr "不代理 %s 端口 [%s]" - -msgid "not proxy all %s" -msgstr "不代理所有 %s" - -msgid "Use the %s node [%s]" -msgstr "使用 %s 節點[%s]" - -msgid "Using a node that is different from the global configuration, DNS has been forcibly redirected to a dedicated DNS server." -msgstr "使用与全局配置不相同節點,已將DNS強制重定向到專用 DNS 服務器。" - -msgid "Add direct DNS to %s: %s" -msgstr "追加直連 DNS 到 %s: %s" - -msgid "Local" -msgstr "本機" - -msgid "[Local]," -msgstr "【本機】," - -msgid "Clear %s." -msgstr "清除 %s。" - -msgid "Delete %s rules is complete." -msgstr "刪除 %s 規則完成。" - -msgid "%s firewall rules load complete!" -msgstr "%s 防火墙規則加载完成!" - -msgid "Socks switch detection: Unknown error." -msgstr "Socks切換檢測:未知錯誤。" - -msgid "Socks switch detection: Unable to connect to the network. Please check if the network is working properly!" -msgstr "Socks切換檢測:無法連接到網絡,請檢查網絡是否正常!" - -msgid "Socks switch detection: Primary node 【%s: [%s]】 is normal. Switch to the primary node!" -msgstr "Socks切換檢測:%s 主節點【%s:[%s]】正常,切換到主節點!" - -msgid "Socks switch detection: %s node switch complete!" -msgstr "Socks切換檢測:%s 節點切換完毕!" - -msgid "Socks switch detection: %s 【%s:[%s]】 normal." -msgstr "Socks切換檢測:%s 【%s:[%s]】 正常。" - -msgid "switch to %s test detect!" -msgstr "切換到 %s 檢測!" - -msgid "backup node" -msgstr "備用節點" - -msgid "next backup node" -msgstr "下一個備用節點" - -msgid "main node" -msgstr "主節點" - -msgid "Socks switch detection: Unknown error." -msgstr "Socks切換檢測:未知錯誤。" - -msgid "Socks switch detection: %s 【%s:[%s]】 abnormal, %s" -msgstr "Socks切換檢測:%s 【%s:[%s]】 异常,%s" - -msgid "Socks switch detection: %s 【%s:[%s]】 normal, switch to this node!" -msgstr "Socks切換檢測:%s 【%s:[%s]】 正常,切換到此節點!" - -msgid "Restart dnsmasq service." -msgstr "重啟 dnsmasq 服務。" - -msgid "Console Port: %s" -msgstr "控制臺端口:%s" - -msgid "Discard one obviously invalid node." -msgstr "丟棄 1 個明顯無效的節點" - -msgid "Entrance %s:%s" -msgstr "入口 %s:%s" - -msgid "Node: %s:%s, Weight: %s" -msgstr "節點:%s:%s,權重:%s" - -msgid "Start updating the rules..." -msgstr "開始更新規則..." - -msgid "Download file size verification error. Original file size: %sB. Downloaded file size: %sB." -msgstr "下載檔案大小校驗出錯,原始檔案大小 %sB,下載檔案大小:%sB。" - -msgid "Downloaded file is empty or an error occurred while reading it." -msgstr "下載的文件為空或讀取文件時發生錯誤。" - -msgid "%s Start updating..." -msgstr "%s 開始更新..." - -msgid "%s version is the same and does not need to be updated." -msgstr "%s 版本一致,無需更新。" - -msgid "%s an error occurred during the file download process. Please try downloading again." -msgstr "%s 下載檔案過程出錯,嘗試重新下載。" - -msgid "%s an error occurred while downloading the file. Please check your network or the download link and try again!" -msgstr "%s 下載檔案過程出錯,請檢查網頁或下載連結後重試!" - -msgid "%s update success." -msgstr "%s 更新成功。" - -msgid "%s update failed, please try again later or change URL." -msgstr "%s 更新失敗,請稍後再試或更換 URL。" - -msgid "%s update error!" -msgstr "%s 更新發生錯誤!" - -msgid "Restart the service and apply the new rules." -msgstr "重啟服務,應用新的規則。" - -msgid "The rules have been updated..." -msgstr "規則更新完毕..." - -msgid "Socks node list [%s]" -msgstr "Socks 節點列表 [%s]" - -msgid "Backup node list" -msgstr "備用節點的列表" - -msgid "HAProxy node list [%s]" -msgstr "HAProxy 節點列表 [%s]" - -msgid "ACL list [%s]" -msgstr "訪問控制列表 [%s]" - -msgid "Shunt [%s] node" -msgstr "分流 [%s] 節點" - -msgid "Xray Load Balancing node [%s] list" -msgstr "Xray 負載均衡節點 [%s] 列表" - -msgid "Xray Load Balancing node [%s] backup node" -msgstr "Xray 負載均衡節點 [%s] 後備節點" - -msgid "Sing-Box URLTest node [%s] list" -msgstr "Sing-Box URLTest 節點 [%s] 列表" - -msgid "Node [%s] preproxy node" -msgstr "節點 [%s] 前置代理節點" - -msgid "Node [%s] landing node" -msgstr "節點 [%s] 落地節點" - -msgid "Skipping the %s node is due to incompatibility with the %s core program or incorrect node usage type settings." -msgstr "跳過 %s 節點,因未適配到 %s 核心程序,或未正確設置節點使用類型。" - -msgid "Skip node: %s. Because Sing-Box does not support the %s protocol's %s transmission method, Xray needs to be used instead." -msgstr "跳過節點:%s,因 Sing-Box 不支持 %s 協議的 %s 傳輸方式,需更換 Xray。" - -msgid "Xray unsupport %s plugin." -msgstr "Xray 不支持 %s 插件。" - -msgid "Plugin options Incomplete." -msgstr "插件選項不完整。" - -msgid "shadowsocks-libev unsupport 2022 encryption." -msgstr "shadowsocks-libev 不支持2022加密。" - -msgid "Please replace Xray or Sing-Box to support more transmission methods in Shadowsocks." -msgstr "請更換 Xray 或 Sing-Box 來支持 Shadowsocks 更多的傳輸方式。" - -msgid "unsupport %s plugin." -msgstr "不支持 %s 插件。" - -msgid "Skip the %s node because the %s core program is not installed." -msgstr "跳過 %s 節點,因未安装 %s 核心程序 %s。" - -msgid "Skip the %s node, as %s type nodes require Sing-Box version 1.12 or higher." -msgstr "跳過 %s 節點,因 %s 類型的節點需要 Sing-Box 1.12 以上版本支持。" - -msgid "%s type node subscriptions are not currently supported, skip this node." -msgstr "暫時不支持 %s 類型的節點訂閱,跳過此節點。" - -msgid "Update [%s]" -msgstr "更新【%s】" - -msgid "Matching node:" -msgstr "匹配節點:" - -msgid "First Matching node:" -msgstr "第一匹配節點:" - -msgid "Second Matching node:" -msgstr "第二匹配節點:" - -msgid "Third Matching node:" -msgstr "第三匹配節點:" - -msgid "Fourth Matching node:" -msgstr "第四匹配節點:" - -msgid "Fifth Matching node:" -msgstr "第五匹配節點:" - -msgid "Unable to find the best matching node, now replaced with:" -msgstr "無法找到最匹配的節點,當前已更換為:" - -msgid "Unable to find a new node. Please confirm and process manually." -msgstr "無法匹配到新的節點,請手動確認處理。" - -msgid "No node information updates are available." -msgstr "沒有可用的節點信息更新。" - -msgid "Skip unknown types:" -msgstr "跳過未知類型:" - -msgid "Discard node: %s, Reason:" -msgstr "丟棄節點: %s ,原因:" - -msgid "No usable binary was found." -msgstr "找不到可使用二進制。" - -msgid "Discard filter nodes: %s type node %s" -msgstr "丟棄過濾節點: %s 類型節點 %s" - -msgid "Parsing error, skip this node." -msgstr "解析錯誤,跳過此節點。" - -msgid "Successfully resolved the [%s] node, number: %s" -msgstr "成功解析【%s】節點,數量:%s" - -msgid "Get subscription content for [%s] is empty. This may be due to an invalid subscription address or a network problem. Please diagnose the issue!" -msgstr "獲取到的【%s】訂閱內容為空,可能是訂閱地址無效,或是網絡問題,請診斷!" - -msgid "Proxy" -msgstr "代理" - -msgid "Start subscribing..." -msgstr "開始訂閱..." - -msgid "Start subscribing: %s" -msgstr "開始訂閱:%s" - -msgid "Subscription: [%s] No changes, no update required." -msgstr "訂閱:【%s】沒有變化,無需更新。" - -msgid "[%s] Subscription failed. This could be due to an invalid subscription address or a network issue. Please diagnose the problem! [%s]" -msgstr "【%s】訂閱失敗,可能是訂閱地址無效,或是網絡問題,請診斷![%s]" - -msgid "Error, restoring service." -msgstr "發生錯誤, 正在恢復服務。" - -msgid "Subscription complete..." -msgstr "訂閱完毕..." diff --git a/small/luci-app-passwall2/po/zh_Hans b/small/luci-app-passwall2/po/zh_Hans deleted file mode 120000 index 41451e4a19..0000000000 --- a/small/luci-app-passwall2/po/zh_Hans +++ /dev/null @@ -1 +0,0 @@ -zh-cn \ No newline at end of file diff --git a/small/luci-app-passwall2/po/zh_Hant b/small/luci-app-passwall2/po/zh_Hant deleted file mode 120000 index f6e591fd8a..0000000000 --- a/small/luci-app-passwall2/po/zh_Hant +++ /dev/null @@ -1 +0,0 @@ -zh-tw \ No newline at end of file diff --git a/small/luci-app-passwall2/root/etc/config/passwall2_server b/small/luci-app-passwall2/root/etc/config/passwall2_server deleted file mode 100644 index c9526cb285..0000000000 --- a/small/luci-app-passwall2/root/etc/config/passwall2_server +++ /dev/null @@ -1,4 +0,0 @@ - -config global 'global' - option enable '0' - diff --git a/small/luci-app-passwall2/root/etc/hotplug.d/iface/98-passwall2 b/small/luci-app-passwall2/root/etc/hotplug.d/iface/98-passwall2 deleted file mode 100644 index b47c6adb8f..0000000000 --- a/small/luci-app-passwall2/root/etc/hotplug.d/iface/98-passwall2 +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/sh - -[[ "$ACTION" == "ifup" && $(uci get "passwall2.@global[0].enabled") == "1" ]] && [ -f /var/lock/passwall2_ready.lock ] && { - default_device=$(ip route | grep default | awk -F 'dev ' '{print $2}' | awk '{print $1}') - [ "$default_device" == "$DEVICE" ] && { - LOCK_FILE_DIR=/var/lock - [ ! -d ${LOCK_FILE_DIR} ] && mkdir -p ${LOCK_FILE_DIR} - LOCK_FILE="${LOCK_FILE_DIR}/passwall2_ifup.lock" - if [ -s ${LOCK_FILE} ]; then - SPID=$(cat ${LOCK_FILE}) - if [ -e /proc/${SPID}/status ]; then - exit 1 - fi - cat /dev/null > ${LOCK_FILE} - fi - echo $$ > ${LOCK_FILE} - - /etc/init.d/passwall2 restart >/dev/null 2>&1 & - logger -p notice -t network -s "passwall2: restart when $INTERFACE ifup" - - rm -rf ${LOCK_FILE} - } -} diff --git a/small/luci-app-passwall2/root/etc/init.d/passwall2 b/small/luci-app-passwall2/root/etc/init.d/passwall2 deleted file mode 100755 index 320a988d63..0000000000 --- a/small/luci-app-passwall2/root/etc/init.d/passwall2 +++ /dev/null @@ -1,76 +0,0 @@ -#!/bin/sh /etc/rc.common - -START=99 -STOP=15 - -. /usr/share/passwall2/utils.sh -APP_FILE=${APP_PATH}/app.sh -LOCK_FILE_DIR=/var/lock -LOCK_FILE=${LOCK_FILE_DIR}/${CONFIG}.lock - -set_lock() { - [ ! -d "$LOCK_FILE_DIR" ] && mkdir -p $LOCK_FILE_DIR - exec 999>"$LOCK_FILE" - flock -xn 999 -} - -unset_lock() { - flock -u 999 - rm -rf "$LOCK_FILE" -} - -unlock() { - failcount=1 - while [ "$failcount" -le 10 ]; do - if [ -f "$LOCK_FILE" ]; then - let "failcount++" - sleep 1s - [ "$failcount" -ge 10 ] && unset_lock - else - break - fi - done -} - -boot_func() { - local delay=$(uci -q get ${CONFIG}.@global_delay[0].start_delay || echo 1) - if [ "$delay" -gt 0 ]; then - log_i18n 0 "Start after a delay of %s seconds!" "${delay}" - sleep $delay - fi - restart - touch ${LOCK_FILE_DIR}/${CONFIG}_ready.lock -} - -boot() { - boot_func >/dev/null 2>&1 & -} - -start() { - set_lock - [ $? == 1 ] && log_i18n 0 "The script is already running, do not run it again. Exit." && exit 0 - $APP_FILE start - unset_lock -} - -stop() { - unlock - set_lock - [ $? == 1 ] && log_i18n 0 "Stop the script and wait for a timeout, then exit without repeating the process." && exit 0 - $APP_FILE stop - unset_lock -} - -restart() { - set_lock - [ $? == 1 ] && log_i18n 0 "The script is already running, do not run it again. Exit." && exit 0 - $APP_FILE stop - $APP_FILE start - unset_lock -} - -reload() { - echo "Warning: This service does not support configuration reloading" - echo "Performing full restart instead..." - restart -} diff --git a/small/luci-app-passwall2/root/etc/init.d/passwall2_server b/small/luci-app-passwall2/root/etc/init.d/passwall2_server deleted file mode 100755 index 1cf39fea21..0000000000 --- a/small/luci-app-passwall2/root/etc/init.d/passwall2_server +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/sh /etc/rc.common - -START=99 - -start() { - lua /usr/lib/lua/luci/passwall2/server_app.lua start -} - -stop() { - lua /usr/lib/lua/luci/passwall2/server_app.lua stop -} - -restart() { - stop - start -} - -reload() { - echo "Warning: This service does not support configuration reloading" - echo "Performing full restart instead..." - restart -} diff --git a/small/luci-app-passwall2/root/etc/uci-defaults/luci-passwall2 b/small/luci-app-passwall2/root/etc/uci-defaults/luci-passwall2 deleted file mode 100755 index a85b1d90ee..0000000000 --- a/small/luci-app-passwall2/root/etc/uci-defaults/luci-passwall2 +++ /dev/null @@ -1,60 +0,0 @@ -#!/bin/sh - -if [ -e "/etc/config/ucitrack" ]; then - uci -q batch <<-EOF - delete ucitrack.@passwall2[-1] - add ucitrack passwall2 - set ucitrack.@passwall2[-1].init=passwall2 - delete ucitrack.@passwall2_server[-1] - add ucitrack passwall2_server - set ucitrack.@passwall2_server[-1].init=passwall2_server - commit ucitrack -EOF -fi - -uci -q batch <<-EOF - delete firewall.passwall2 - set firewall.passwall2=include - set firewall.passwall2.type='script' - set firewall.passwall2.path='/var/etc/passwall2.include' - - delete firewall.passwall2_server - set firewall.passwall2_server=include - set firewall.passwall2_server.type='script' - set firewall.passwall2_server.path='/var/etc/passwall2_server.include' - - set dhcp.@dnsmasq[0].localuse=1 - commit dhcp - - set uhttpd.main.max_requests=50 - commit uhttpd -EOF - -if [ -x "/sbin/fw3" ]; then - uci -q set firewall.passwall2.reload='1' - uci -q set firewall.passwall2_server.reload='1' -else - uci -q delete firewall.passwall2.reload - uci -q delete firewall.passwall2.fw4_compatible - uci -q delete firewall.passwall2_server.reload - uci -q delete firewall.passwall2_server.fw4_compatible -fi -uci commit firewall - - -[ ! -s "/etc/config/passwall2" ] && cp -f /usr/share/passwall2/0_default_config /etc/config/passwall2 - -chmod +x /usr/share/passwall2/*.sh - -[ "$(uci -q get passwall2.@global_xray[0].sniffing)" == "1" ] && [ "$(uci -q get passwall2.@global_xray[0].route_only)" != "1" ] && uci -q set passwall2.@global_xray[0].sniffing_override_dest=1 -uci -q delete passwall2.@global_xray[0].sniffing -uci -q delete passwall2.@global_xray[0].route_only -uci -q commit passwall2 - -sed -i "s#add_from#group#g" /etc/config/passwall2 2>/dev/null - -rm -f /tmp/luci-indexcache /tmp/luci-indexcache.* -rm -rf /tmp/luci-modulecache/ -killall -HUP rpcd 2>/dev/null - -exit 0 diff --git a/small/luci-app-passwall2/root/usr/share/passwall2/0_default_config b/small/luci-app-passwall2/root/usr/share/passwall2/0_default_config deleted file mode 100644 index db58d39da1..0000000000 --- a/small/luci-app-passwall2/root/usr/share/passwall2/0_default_config +++ /dev/null @@ -1,273 +0,0 @@ - -config global - option enabled '0' - option node_socks_port '1070' - option localhost_proxy '1' - option client_proxy '1' - option socks_enabled '0' - option acl_enable '0' - option node 'myshunt' - option direct_dns_protocol 'auto' - option direct_dns_query_strategy 'UseIP' - option remote_dns_protocol 'tcp' - option remote_dns '1.1.1.1' - option remote_dns_query_strategy 'UseIPv4' - option dns_hosts 'cloudflare-dns.com 1.1.1.1 -dns.google.com 8.8.8.8' - option log_node '1' - option loglevel 'error' - -config global_haproxy - option balancing_enable '0' - -config global_delay - option start_daemon '1' - option start_delay '60' - -config global_forwarding - option tcp_no_redir_ports 'disable' - option udp_no_redir_ports 'disable' - option tcp_redir_ports '1:65535' - option udp_redir_ports '1:65535' - option accept_icmp '0' - option prefer_nft '1' - option tcp_proxy_way 'redirect' - option ipv6_tproxy '0' - -config global_xray - option sniffing_override_dest '0' - -config global_other - option auto_detection_time 'tcping' - option show_node_info '0' - -config global_rules - option auto_update '0' - option geosite_update '1' - option geoip_update '1' - option v2ray_location_asset '/usr/share/v2ray/' - option geoip_url 'https://github.com/Loyalsoldier/geoip/releases/latest/download/geoip.dat' - option geosite_url 'https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geosite.dat' - option enable_geoview '1' - -config global_app - option geoview_file '/usr/bin/geoview' - option xray_file '/usr/bin/xray' - option hysteria_file '/usr/bin/hysteria' - option sing_box_file '/usr/bin/sing-box' - -config global_subscribe - option filter_keyword_mode '1' - list filter_discard_list '距离下次重置剩余' - list filter_discard_list '套餐到期' - list filter_discard_list '过期时间' - list filter_discard_list '剩余流量' - list filter_discard_list 'QQ群' - list filter_discard_list '官网' - -config global_singbox - option sniff_override_destination '0' - -config nodes 'myshunt' - option remarks '分流总节点' - option type 'Xray' - option protocol '_shunt' - option DirectGame '_direct' - option ProxyGame '_default' - option Direct '_direct' - option GooglePlay '_default' - option Proxy '_default' - option GFW '_default' - option China '_direct' - option QUIC '_blackhole' - option default_node '_direct' - option domainStrategy 'IPOnDemand' - option domainMatcher 'hybrid' - -config shunt_rules 'DirectGame' - option remarks 'DirectGame' - option network 'tcp,udp' - option domain_list '# Steam CDN -cm.steampowered.com -steamserver.net - -# Steam CN Huawei CDN -steampipe.steamcontent.tnkjmec.com -# Steam CN BaiShan CDN -st.dl.eccdnx.com -st.dl.bscstorage.net -st.dl.pinyuncloud.com -# Steam CN XinLiuYun(support ipv6) CDN -dl.steam.clngaa.com -# Steam CN Wangsu CDN -cdn.mileweb.cs.steampowered.com.8686c.com -cdn-ws.content.steamchina.com -# Steam CN Tencent CDN -cdn-qc.content.steamchina.com -# Steam CN Aliyun(support ipv6) CDN -cdn-ali.content.steamchina.com -xz.pphimalayanrt.com -lv.queniujq.cn -alibaba.cdn.steampipe.steamcontent.com - -# CN Game geosite domain -geosite:category-games@cn' - - option ip_list '# Steam IP -45.121.184.0/24 -103.10.124.0/23 -103.28.54.0/24 -146.66.152.0/24 -146.66.155.0/24 -153.254.86.0/24 -155.133.224.0/22 -155.133.230.0/24 -155.133.232.0/23 -155.133.234.0/24 -155.133.236.0/22 -155.133.240.0/23 -155.133.244.0/23 -155.133.246.0/24 -155.133.248.0/21 -162.254.192.0/21 -185.25.182.0/23 -190.217.32.0/22 -192.69.96.0/22 -205.196.6.0/24 -208.64.200.0/22 -208.78.164.0/22 -205.185.194.0/24' - -config shunt_rules 'ProxyGame' - option remarks 'ProxyGame' - option domain_list '# steam 商店/客服/聊天/网页布局/API/二维码 代理URL -steamcommunity.com -www.steamcommunity.com -store.steampowered.com -checkout.steampowered.com -api.steampowered.com -help.steampowered.com -login.steampowered.com -store.akamai.steamstatic.com -steambroadcast.akamaized.net -steamvideo-a.akamaihd.net -steamusercontent-a.akamaihd.net -steamstore-a.akamaihd.net -steamcommunity-a.akamaihd.net -steamcdn-a.akamaihd.net -steamuserimages-a.akamaihd.net -community.akamai.steamstatic.com -avatars.akamai.steamstatic.com -community.steamstatic.com -cdn.akamai.steamstatic.com -avatars.steamstatic.com -shared.akamai.steamstatic.com -clan.akamai.steamstatic.com -cdn.cloudflare.steamstatic.com -community.cloudflare.steamstatic.com -store.cloudflare.steamstatic.com -avatars.cloudflare.steamstatic.com -clan.cloudflare.steamstatic.com -shared.cloudflare.steamstatic.com -steam-chat.com -steamcloud-ugc.storage.googleapis.com -steamcloud-eu-ams.storage.googleapis.com -steamcloud-eu-fra.storage.googleapis.com -steamcloud-finland.storage.googleapis.com -steamcloud-saopaulo.storage.googleapis.com -steamcloud-singapore.storage.googleapis.com -steamcloud-sydney.storage.googleapis.com -steamcloud-taiwan.storage.googleapis.com -steamcloud-eu.storage.googleapis.com - -geosite:category-games' - -config shunt_rules 'Direct' - option network 'tcp,udp' - option remarks 'Direct' - option ip_list '114.114.114.114 -114.114.115.115 -223.5.5.5 -223.6.6.6 -119.29.29.29 -180.76.76.76 -' - option domain_list 'apple.com -microsoft.com -dyndns.com -steamcontent.com -dl.steam.clngaa.com -dl.steam.ksyna.com -st.dl.bscstorage.net -st.dl.eccdnx.com -st.dl.pinyuncloud.com -cdn.mileweb.cs.steampowered.com.8686c.com -cdn-ws.content.steamchina.com -cdn-qc.content.steamchina.com -cdn-ali.content.steamchina.com -epicgames-download1-1251447533.file.myqcloud.com' - -config shunt_rules 'GooglePlay' - option remarks 'GooglePlay' - option network 'tcp,udp' - option domain_list 'domain:googleapis.cn -domain:googleapis.com -domain:xn--ngstr-lra8j.com' - -config shunt_rules 'Netflix' - option remarks 'Netflix' - option network 'tcp,udp' - option domain_list 'geosite:netflix' - -config shunt_rules 'OpenAI' - option remarks 'OpenAI' - option network 'tcp,udp' - option domain_list 'geosite:openai' - -config shunt_rules 'Proxy' - option network 'tcp,udp' - option remarks 'Proxy' - option ip_list '149.154.160.0/20 -91.108.4.0/22 -91.108.56.0/24 -109.239.140.0/24 -67.198.55.0/24 -8.8.4.4 -8.8.8.8 -208.67.222.222 -208.67.220.220 -1.1.1.1 -1.1.1.2 -1.0.0.1 -9.9.9.9 -149.112.112.112 -2001:67c:4e8::/48 -2001:b28:f23c::/48 -2001:b28:f23d::/48 -2001:b28:f23f::/48 -2001:b28:f242::/48 -2001:4860:4860::8888 -2001:4860:4860::8844 -2606:4700:4700::1111 -2606:4700:4700::1001 -' - -config shunt_rules 'GFW' - option remarks 'GFW' - option network 'tcp,udp' - option domain_list 'geosite:gfw' - -config shunt_rules 'China' - option remarks 'China' - option network 'tcp,udp' - option ip_list 'geoip:cn' - option domain_list 'geosite:cn' - -config shunt_rules 'QUIC' - option remarks 'QUIC' - option port '443' - option network 'udp' - -config shunt_rules 'UDP' - option remarks 'UDP' - option network 'udp' diff --git a/small/luci-app-passwall2/root/usr/share/passwall2/app.sh b/small/luci-app-passwall2/root/usr/share/passwall2/app.sh deleted file mode 100755 index 985a407277..0000000000 --- a/small/luci-app-passwall2/root/usr/share/passwall2/app.sh +++ /dev/null @@ -1,1166 +0,0 @@ -#!/bin/sh -# Copyright (C) 2022-2025 xiaorouji -# Copyright (C) 2026 Openwrt-Passwall Organization - -. $IPKG_INSTROOT/lib/functions.sh -. $IPKG_INSTROOT/lib/functions/service.sh - -. /usr/share/passwall2/utils.sh -GLOBAL_ACL_PATH=${TMP_ACL_PATH}/default -LUA_UTIL_PATH=/usr/lib/lua/luci/passwall2 -UTIL_SINGBOX=$LUA_UTIL_PATH/util_sing-box.lua -UTIL_SS=$LUA_UTIL_PATH/util_shadowsocks.lua -UTIL_XRAY=$LUA_UTIL_PATH/util_xray.lua -UTIL_NAIVE=$LUA_UTIL_PATH/util_naiveproxy.lua -UTIL_HYSTERIA2=$LUA_UTIL_PATH/util_hysteria2.lua -UTIL_TUIC=$LUA_UTIL_PATH/util_tuic.lua - -check_run_environment() { - local prefer_nft=$(config_t_get global_forwarding prefer_nft 1) - local dnsmasq_info=$(dnsmasq -v 2>/dev/null) - local dnsmasq_ver=$(echo "$dnsmasq_info" | sed -n '1s/.*version \([0-9.]*\).*/\1/p') - # local dnsmasq_opts=$(echo "$dnsmasq_info" | grep -i "Compile time options") - local dnsmasq_ipset=0; [[ "$dnsmasq_info" == *" ipset"* ]] && dnsmasq_ipset=1 - local dnsmasq_nftset=0; [[ "$dnsmasq_info" == *" nftset"* ]] && dnsmasq_nftset=1 - local has_ipt=0; { command -v iptables-legacy || command -v iptables; } >/dev/null && has_ipt=1 - local has_ipset=$(command -v ipset >/dev/null && echo 1 || echo 0) - local has_fw4=$(command -v fw4 >/dev/null && echo 1 || echo 0) - if [ "$prefer_nft" = "1" ]; then - if [ "$dnsmasq_nftset" -eq 1 ] && [ "$has_fw4" -eq 1 ]; then - USE_TABLES="nftables" - elif [ "$has_ipset" -eq 1 ] && [ "$has_ipt" -eq 1 ] && [ "$dnsmasq_ipset" -eq 1 ]; then - log_i18n 0 "Warning: The %s application environment is incomplete. Switch to %s. (%s)" "nftables (fw4)" "iptables" "has_fw4:$has_fw4/dnsmasq_nftset:$dnsmasq_nftset" - USE_TABLES="iptables" - fi - else - if [ "$has_ipset" -eq 1 ] && [ "$has_ipt" -eq 1 ] && [ "$dnsmasq_ipset" -eq 1 ]; then - USE_TABLES="iptables" - elif [ "$dnsmasq_nftset" -eq 1 ] && [ "$has_fw4" -eq 1 ]; then - log_i18n 0 "Warning: The %s application environment is incomplete. Switch to %s. (%s)" "iptables (fw3)" "nftables" "has_ipt:$has_ipt/has_ipset:$has_ipset/dnsmasq_ipset:$dnsmasq_ipset" - USE_TABLES="nftables" - fi - fi - - if [ -n "$USE_TABLES" ]; then - local dep_list - local file_path="/usr/lib/opkg/info" - local file_ext=".control" - [ -d "/lib/apk/packages" ] && { file_path="/lib/apk/packages"; file_ext=".list"; } - - if [ "$USE_TABLES" = "iptables" ]; then - dep_list="iptables-mod-tproxy iptables-mod-socket iptables-mod-iprange iptables-mod-conntrack-extra kmod-ipt-nat" - else - dep_list="kmod-nft-socket kmod-nft-tproxy kmod-nft-nat" - nftflag=1 - local v_num=$(echo "$dnsmasq_ver" | tr -cd '0-9') - if [ "${v_num:-0}" -lt 290 ]; then - log_i18n 0 "Note: Dnsmasq (%s) is below 2.90. Upgrading is recommended to improve stability." "${dnsmasq_ver}" - fi - fi - local pkg - for pkg in $dep_list; do - if [ ! -s "${file_path}/${pkg}${file_ext}" ]; then - log_i18n 0 "Warning: %s transparent proxy is missing basic dependency %s!" "${USE_TABLES}" "${pkg}" - fi - done - else - log_i18n 0 "Warning: Not compatible with any transparent proxy system environment." - fi -} - -first_type() { - [ "${1#/}" != "$1" ] && [ -x "$1" ] && echo "$1" && return - for p in "/bin/$1" "/usr/bin/$1" "${TMP_BIN_PATH:-/tmp}/$1"; do - [ -x "$p" ] && echo "$p" && return - done - command -v "$1" 2>/dev/null || command -v "$2" 2>/dev/null -} - -ln_run() { - local file_func=${1} - local ln_name=${2} - local output=${3} - - shift 3; - if [ "${file_func%%/*}" != "${file_func}" ]; then - [ ! -L "${file_func}" ] && { - ln -s "${file_func}" "${TMP_BIN_PATH}/${ln_name}" >/dev/null 2>&1 - file_func="${TMP_BIN_PATH}/${ln_name}" - } - [ -x "${file_func}" ] || log 1 "$(i18n "%s does not have execute permissions and cannot be started: %s %s" "$(readlink ${file_func})" "${file_func}" "$*")" - fi - #echo "${file_func} $*" >&2 - [ -n "${file_func}" ] || log 1 "$(i18n "%s not found, unable to start..." "${ln_name}")" - ${file_func:-log 1 "${ln_name}"} "$@" >${output} 2>&1 & - process_count=$(ls $TMP_SCRIPT_FUNC_PATH | grep -v "^_" | wc -l) - process_count=$((process_count + 1)) - echo "${file_func:-log 1 "${ln_name}"} $@ >${output}" > $TMP_SCRIPT_FUNC_PATH/$process_count -} - -get_geoip() { - local geoip_code="$1" - local geoip_type_flag="" - local geoip_path="$(config_t_get global_rules v2ray_location_asset)" - geoip_path="${geoip_path%*/}/geoip.dat" - [ -e "$geoip_path" ] || { echo ""; return; } - case "$2" in - "ipv4") geoip_type_flag="-ipv6=false" ;; - "ipv6") geoip_type_flag="-ipv4=false" ;; - esac - if type geoview &> /dev/null; then - geoview -input "$geoip_path" -list "$geoip_code" $geoip_type_flag -lowmem=true - else - echo "" - fi -} - -run_xray() { - local flag node redir_port tcp_proxy_way socks_address socks_port socks_username socks_password http_address http_port http_username http_password - local dns_listen_port direct_dns_query_strategy remote_dns_protocol remote_dns_udp_server remote_dns_tcp_server remote_dns_doh remote_dns_client_ip remote_dns_detour remote_fakedns remote_dns_query_strategy dns_cache write_ipset_direct - local loglevel log_file config_file - local _extra_param="" - eval_set_val $@ - local type=$(echo $(config_n_get $node type) | tr 'A-Z' 'a-z') - if [ "$type" != "xray" ]; then - local bin=$(first_type $(config_t_get global_app xray_file) xray) - [ -n "$bin" ] && type="xray" - fi - [ -z "$type" ] && return 1 - [ -n "$log_file" ] || local log_file="/dev/null" - [ -z "$loglevel" ] && local loglevel=$(config_t_get global loglevel "warning") - [ -n "$flag" ] && pgrep -af "$TMP_BIN_PATH" | awk -v P1="${flag}" 'BEGIN{IGNORECASE=1}$0~P1{print $1}' | xargs kill -9 >/dev/null 2>&1 - [ -n "$flag" ] && _extra_param="${_extra_param} -flag $flag" - [ -n "$socks_address" ] && _extra_param="${_extra_param} -local_socks_address $socks_address" - [ -n "$socks_port" ] && _extra_param="${_extra_param} -local_socks_port $socks_port" - [ -n "$socks_username" ] && [ -n "$socks_password" ] && _extra_param="${_extra_param} -local_socks_username $socks_username -local_socks_password $socks_password" - [ -n "$http_address" ] && _extra_param="${_extra_param} -local_http_address $http_address" - [ -n "$http_port" ] && _extra_param="${_extra_param} -local_http_port $http_port" - [ -n "$http_username" ] && [ -n "$http_password" ] && _extra_param="${_extra_param} -local_http_username $http_username -local_http_password $http_password" - - [ -n "$dns_listen_port" ] && { - _extra_param="${_extra_param} -dns_listen_port ${dns_listen_port}" - [ -n "$dns_cache" ] && _extra_param="${_extra_param} -dns_cache ${dns_cache}" - - local _dns=$(get_first_dns AUTO_DNS 53 | sed 's/#/:/g') - local _dns_address=$(echo ${_dns} | awk -F ':' '{print $1}') - local _dns_port=$(echo ${_dns} | awk -F ':' '{print $2}') - - DIRECT_DNS_UDP_SERVER=${_dns_address} - DIRECT_DNS_UDP_PORT=${_dns_port} - - [ "${write_ipset_direct}" = "1" ] && { - direct_dnsmasq_listen_port=$(get_new_port $(expr $dns_listen_port + 1) udp) - local set_flag="${flag}" - local direct_ipset_conf=${GLOBAL_ACL_PATH}/dns_${flag}_direct.conf - [ -n "$(echo ${flag} | grep '^acl')" ] && { - direct_ipset_conf=${TMP_ACL_PATH}/${sid}/dns_${flag}_direct.conf - set_flag=$(echo ${flag} | awk -F '_' '{print $2}') - } - if [ "${nftflag}" = "1" ]; then - local direct_nftset="4#inet#passwall2#passwall2_${set_flag}_white,6#inet#passwall2#passwall2_${set_flag}_white6" - else - local direct_ipset="passwall2_${set_flag}_white,passwall2_${set_flag}_white6" - fi - run_ipset_dns_server listen_port=${direct_dnsmasq_listen_port} server_dns=${AUTO_DNS} ipset="${direct_ipset}" nftset="${direct_nftset}" config_file=${direct_ipset_conf} - DIRECT_DNS_UDP_PORT=${direct_dnsmasq_listen_port} - DIRECT_DNS_UDP_SERVER="127.0.0.1" - [ -n "${direct_ipset}" ] && _extra_param="${_extra_param} -direct_ipset ${direct_ipset}" - [ -n "${direct_nftset}" ] && _extra_param="${_extra_param} -direct_nftset ${direct_nftset}" - } - _extra_param="${_extra_param} -direct_dns_udp_port ${DIRECT_DNS_UDP_PORT} -direct_dns_udp_server ${DIRECT_DNS_UDP_SERVER} -direct_dns_query_strategy ${direct_dns_query_strategy}" - - DNS_REMOTE_ARGS="" - case "$remote_dns_protocol" in - udp) - local _dns=$(get_first_dns remote_dns_udp_server 53 | sed 's/#/:/g') - local _dns_address=$(echo ${_dns} | awk -F ':' '{print $1}') - local _dns_port=$(echo ${_dns} | awk -F ':' '{print $2}') - DNS_REMOTE_ARGS="-remote_dns_udp_port ${_dns_port} -remote_dns_udp_server ${_dns_address}" - ;; - tcp) - local _dns=$(get_first_dns remote_dns_tcp_server 53 | sed 's/#/:/g') - local _dns_address=$(echo ${_dns} | awk -F ':' '{print $1}') - local _dns_port=$(echo ${_dns} | awk -F ':' '{print $2}') - DNS_REMOTE_ARGS="-remote_dns_tcp_port ${_dns_port} -remote_dns_tcp_server ${_dns_address}" - ;; - doh) - local _doh_url=$(echo $remote_dns_doh | awk -F ',' '{print $1}') - local _doh_host_port=$(lua_api "get_domain_from_url(\"${_doh_url}\")") - #local _doh_host_port=$(echo $_doh_url | sed "s/https:\/\///g" | awk -F '/' '{print $1}') - local _doh_host=$(echo $_doh_host_port | awk -F ':' '{print $1}') - local is_ip=$(lua_api "is_ip(\"${_doh_host}\")") - local _doh_port=$(echo $_doh_host_port | awk -F ':' '{print $2}') - [ -z "${_doh_port}" ] && _doh_port=443 - local _doh_bootstrap=$(echo $remote_dns_doh | cut -d ',' -sf 2-) - [ "${is_ip}" = "true" ] && _doh_bootstrap=${_doh_host} - DNS_REMOTE_ARGS="-remote_dns_doh_port ${_doh_port} -remote_dns_doh_url ${_doh_url} -remote_dns_doh_host ${_doh_host}" - [ -n "$_doh_bootstrap" ] && DNS_REMOTE_ARGS="${DNS_REMOTE_ARGS} -remote_dns_doh_ip ${_doh_bootstrap}" - ;; - esac - [ -n "$remote_dns_detour" ] && DNS_REMOTE_ARGS="${DNS_REMOTE_ARGS} -remote_dns_detour ${remote_dns_detour}" - [ -n "$remote_dns_query_strategy" ] && DNS_REMOTE_ARGS="${DNS_REMOTE_ARGS} -remote_dns_query_strategy ${remote_dns_query_strategy}" - [ -n "$remote_dns_client_ip" ] && DNS_REMOTE_ARGS="${DNS_REMOTE_ARGS} -remote_dns_client_ip ${remote_dns_client_ip}" - [ "$remote_fakedns" = "1" ] && _extra_param="${_extra_param} -remote_dns_fake 1 -remote_dns_fake_strategy ${remote_dns_query_strategy}" - - local independent_dns - if [ -z "${independent_dns}" ]; then - _extra_param="${_extra_param} ${DNS_REMOTE_ARGS}" - else - dns_remote_listen_port=$(get_new_port $(expr ${direct_dnsmasq_listen_port:-${dns_listen_port}} + 1) udp) - V2RAY_DNS_REMOTE_CONFIG="${TMP_PATH}/${flag}_dns_remote.json" - V2RAY_DNS_REMOTE_LOG="${TMP_PATH}/${flag}_dns_remote.log" - V2RAY_DNS_REMOTE_LOG="/dev/null" - DNS_REMOTE_ARGS="${DNS_REMOTE_ARGS} -dns_out_tag remote -dns_listen_port ${dns_remote_listen_port} -remote_dns_outbound_socks_address 127.0.0.1 -remote_dns_outbound_socks_port ${socks_port}" - - lua $UTIL_XRAY gen_dns_config ${DNS_REMOTE_ARGS} > $V2RAY_DNS_REMOTE_CONFIG - ln_run "$(first_type $(config_t_get global_app ${type}_file) ${type})" ${type} $V2RAY_DNS_REMOTE_LOG run -c "$V2RAY_DNS_REMOTE_CONFIG" - _extra_param="${_extra_param} -remote_dns_udp_port ${dns_remote_listen_port} -remote_dns_udp_server 127.0.0.1 -remote_dns_query_strategy ${remote_dns_query_strategy}" - fi - } - [ -n "${redir_port}" ] && { - _extra_param="${_extra_param} -redir_port ${redir_port}" - set_cache_var "node_${node}_redir_port" "${redir_port}" - [ -n "${tcp_proxy_way}" ] && _extra_param="${_extra_param} -tcp_proxy_way ${tcp_proxy_way}" - } - - lua $UTIL_XRAY gen_config -node $node -loglevel $loglevel ${_extra_param} > $config_file - ln_run "$(first_type $(config_t_get global_app ${type}_file) ${type})" ${type} $log_file run -c "$config_file" -} - -run_singbox() { - local flag node redir_port tcp_proxy_way socks_address socks_port socks_username socks_password http_address http_port http_username http_password - local dns_listen_port direct_dns_query_strategy remote_dns_protocol remote_dns_udp_server remote_dns_tcp_server remote_dns_doh remote_dns_client_ip remote_dns_detour remote_fakedns remote_dns_query_strategy dns_cache write_ipset_direct - local loglevel log_file config_file - local _extra_param="" - eval_set_val $@ - local type=$(echo $(config_n_get $node type) | tr 'A-Z' 'a-z') - [ -z "$type" ] && return 1 - [ -n "$log_file" ] || local log_file="/dev/null" - _extra_param="${_extra_param} -log 1 -logfile ${log_file}" - if [ "$log_file" = "/dev/null" ]; then - _extra_param="${_extra_param} -log 0" - else - _extra_param="${_extra_param} -log 1 -logfile ${log_file}" - fi - [ -z "$loglevel" ] && local loglevel=$(config_t_get global loglevel "warn") - [ "$loglevel" = "warning" ] && loglevel="warn" - _extra_param="${_extra_param} -loglevel $loglevel" - - _extra_param="${_extra_param} -tags $($(first_type $(config_t_get global_app sing_box_file) sing-box) version | grep 'Tags:' | awk '{print $2}')" - - [ -n "$flag" ] && pgrep -af "$TMP_BIN_PATH" | awk -v P1="${flag}" 'BEGIN{IGNORECASE=1}$0~P1{print $1}' | xargs kill -9 >/dev/null 2>&1 - [ -n "$flag" ] && _extra_param="${_extra_param} -flag $flag" - [ -n "$socks_address" ] && _extra_param="${_extra_param} -local_socks_address $socks_address" - [ -n "$socks_port" ] && _extra_param="${_extra_param} -local_socks_port $socks_port" - [ -n "$socks_username" ] && [ -n "$socks_password" ] && _extra_param="${_extra_param} -local_socks_username $socks_username -local_socks_password $socks_password" - [ -n "$http_address" ] && _extra_param="${_extra_param} -local_http_address $http_address" - [ -n "$http_port" ] && _extra_param="${_extra_param} -local_http_port $http_port" - [ -n "$http_username" ] && [ -n "$http_password" ] && _extra_param="${_extra_param} -local_http_username $http_username -local_http_password $http_password" - - [ -n "$dns_listen_port" ] && { - local _dns=$(get_first_dns AUTO_DNS 53 | sed 's/#/:/g') - local _dns_address=$(echo ${_dns} | awk -F ':' '{print $1}') - local _dns_port=$(echo ${_dns} | awk -F ':' '{print $2}') - - DIRECT_DNS_UDP_SERVER=${_dns_address} - DIRECT_DNS_UDP_PORT=${_dns_port} - - [ "${write_ipset_direct}" = "1" ] && { - direct_dnsmasq_listen_port=$(get_new_port $(expr $dns_listen_port + 1) udp) - local set_flag="${flag}" - local direct_ipset_conf=${GLOBAL_ACL_PATH}/dns_${flag}_direct.conf - [ -n "$(echo ${flag} | grep '^acl')" ] && { - direct_ipset_conf=${TMP_ACL_PATH}/${sid}/dns_${flag}_direct.conf - set_flag=$(echo ${flag} | awk -F '_' '{print $2}') - } - if [ "${nftflag}" = "1" ]; then - local direct_nftset="4#inet#passwall2#passwall2_${set_flag}_white,6#inet#passwall2#passwall2_${set_flag}_white6" - else - local direct_ipset="passwall2_${set_flag}_white,passwall2_${set_flag}_white6" - fi - run_ipset_dns_server listen_port=${direct_dnsmasq_listen_port} server_dns=${AUTO_DNS} ipset="${direct_ipset}" nftset="${direct_nftset}" config_file=${direct_ipset_conf} - DIRECT_DNS_UDP_PORT=${direct_dnsmasq_listen_port} - DIRECT_DNS_UDP_SERVER="127.0.0.1" - [ -n "${direct_ipset}" ] && _extra_param="${_extra_param} -direct_ipset ${direct_ipset}" - [ -n "${direct_nftset}" ] && _extra_param="${_extra_param} -direct_nftset ${direct_nftset}" - } - _extra_param="${_extra_param} -direct_dns_udp_port ${DIRECT_DNS_UDP_PORT} -direct_dns_udp_server ${DIRECT_DNS_UDP_SERVER} -direct_dns_query_strategy ${direct_dns_query_strategy}" - - case "$remote_dns_protocol" in - udp) - local _dns=$(get_first_dns remote_dns_udp_server 53 | sed 's/#/:/g') - local _dns_address=$(echo ${_dns} | awk -F ':' '{print $1}') - local _dns_port=$(echo ${_dns} | awk -F ':' '{print $2}') - _extra_param="${_extra_param} -remote_dns_udp_port ${_dns_port} -remote_dns_udp_server ${_dns_address}" - ;; - tcp) - local _dns=$(get_first_dns remote_dns_tcp_server 53 | sed 's/#/:/g') - local _dns_address=$(echo ${_dns} | awk -F ':' '{print $1}') - local _dns_port=$(echo ${_dns} | awk -F ':' '{print $2}') - _extra_param="${_extra_param} -remote_dns_tcp_port ${_dns_port} -remote_dns_tcp_server ${_dns_address}" - ;; - doh) - local _doh_url=$(echo $remote_dns_doh | awk -F ',' '{print $1}') - local _doh_host_port=$(lua_api "get_domain_from_url(\"${_doh_url}\")") - #local _doh_host_port=$(echo $_doh_url | sed "s/https:\/\///g" | awk -F '/' '{print $1}') - local _doh_host=$(echo $_doh_host_port | awk -F ':' '{print $1}') - local is_ip=$(lua_api "is_ip(\"${_doh_host}\")") - local _doh_port=$(echo $_doh_host_port | awk -F ':' '{print $2}') - [ -z "${_doh_port}" ] && _doh_port=443 - local _doh_bootstrap=$(echo $remote_dns_doh | cut -d ',' -sf 2-) - [ "${is_ip}" = "true" ] && _doh_bootstrap=${_doh_host} - [ -n "$_doh_bootstrap" ] && _extra_param="${_extra_param} -remote_dns_doh_ip ${_doh_bootstrap}" - _extra_param="${_extra_param} -remote_dns_doh_port ${_doh_port} -remote_dns_doh_url ${_doh_url} -remote_dns_doh_host ${_doh_host}" - ;; - esac - - [ -n "$remote_dns_detour" ] && _extra_param="${_extra_param} -remote_dns_detour ${remote_dns_detour}" - [ -n "$remote_dns_query_strategy" ] && _extra_param="${_extra_param} -remote_dns_query_strategy ${remote_dns_query_strategy}" - [ -n "$remote_dns_client_ip" ] && _extra_param="${_extra_param} -remote_dns_client_ip ${remote_dns_client_ip}" - - [ -n "$dns_listen_port" ] && _extra_param="${_extra_param} -dns_listen_port ${dns_listen_port}" - [ -n "$dns_cache" ] && _extra_param="${_extra_param} -dns_cache ${dns_cache}" - [ "$remote_fakedns" = "1" ] && _extra_param="${_extra_param} -remote_dns_fake 1" - } - - [ -n "${redir_port}" ] && { - _extra_param="${_extra_param} -redir_port ${redir_port}" - set_cache_var "node_${node}_redir_port" "${redir_port}" - [ -n "${tcp_proxy_way}" ] && _extra_param="${_extra_param} -tcp_proxy_way ${tcp_proxy_way}" - } - - lua $UTIL_SINGBOX gen_config -node $node ${_extra_param} > $config_file - ln_run "$(first_type $(config_t_get global_app sing_box_file) sing-box)" "sing-box" "${log_file}" run -c "$config_file" -} - -run_socks() { - local flag node bind socks_port config_file http_port http_config_file relay_port log_file no_run - eval_set_val $@ - [ -n "$config_file" ] && [ -z "$(echo ${config_file} | grep $TMP_PATH)" ] && config_file=$TMP_PATH/$config_file - [ -n "$http_port" ] || http_port=0 - [ -n "$http_config_file" ] && [ -z "$(echo ${http_config_file} | grep $TMP_PATH)" ] && http_config_file=$TMP_PATH/$http_config_file - if [ -n "$log_file" ] && [ -z "$(echo ${log_file} | grep $TMP_PATH)" ]; then - log_file=$TMP_PATH/$log_file - else - log_file="/dev/null" - fi - local type=$(echo $(config_n_get $node type) | tr 'A-Z' 'a-z') - local remarks=$(config_n_get $node remarks) - local server_host=$(config_n_get $node address) - local server_port=$(config_n_get $node port) - [ -n "$relay_port" ] && { - server_host="127.0.0.1" - server_port=$relay_port - } - local error_msg tmp - - if [ -n "$server_host" ] && [ -n "$server_port" ]; then - check_host $server_host - [ $? != 0 ] && { - log 1 "$(i18n "Socks node: [%s]%s is an invalid server address and cannot be started!" "${$remarks}" "${server_host}")" - return 1 - } - tmp="${server_host}:${server_port}" - else - error_msg="$(i18n "For some reason, the configuration for this Socks service has been lost, and its startup has been aborted!")" - fi - - if [ "$type" == "sing-box" ] || [ "$type" == "xray" ]; then - local protocol=$(config_n_get $node protocol) - if [ "$protocol" == "_balancing" ] || [ "$protocol" == "_shunt" ] || [ "$protocol" == "_iface" ] || [ "$protocol" == "_urltest" ]; then - unset error_msg - fi - fi - - [ -n "${error_msg}" ] && { - [ "$bind" != "127.0.0.1" ] && log 1 "$(i18n "Socks node: [%s]%s, start failed %s:%s %s" "${remarks}" "${tmp}" "${bind}" "${socks_port}" "${error_msg}")" - return 1 - } - [ "$bind" != "127.0.0.1" ] && log 1 "$(i18n "Socks node: [%s]%s, starting %s:%s" "${remarks}" "${tmp}" "${bind}" "${socks_port}")" - - case "$type" in - sing-box) - [ "$http_port" != "0" ] && { - http_flag=1 - config_file="${config_file//SOCKS/HTTP_SOCKS}" - local _extra_param="-local_http_address $bind -local_http_port $http_port" - } - [ -n "$relay_port" ] && _extra_param="${_extra_param} -server_host $server_host -server_port $server_port" - [ "${log_file}" != "/dev/null" ] && { - local loglevel=$(config_t_get global loglevel "warn") - [ "$loglevel" = "warning" ] && loglevel="warn" - _extra_param="${_extra_param} -log 1 -loglevel $loglevel -logfile $log_file" - } - [ -n "$no_run" ] && _extra_param="${_extra_param} -no_run 1" - lua $UTIL_SINGBOX gen_config -flag SOCKS_$flag -node $node -local_socks_address $bind -local_socks_port $socks_port ${_extra_param} > $config_file - [ -n "$no_run" ] || ln_run "$(first_type $(config_t_get global_app sing_box_file) sing-box)" "sing-box" /dev/null run -c "$config_file" - ;; - xray) - [ "$http_port" != "0" ] && { - http_flag=1 - config_file="${config_file//SOCKS/HTTP_SOCKS}" - local _extra_param="-local_http_address $bind -local_http_port $http_port" - } - [ -n "$relay_port" ] && _extra_param="${_extra_param} -server_host $server_host -server_port $server_port" - [ -n "$no_run" ] && _extra_param="${_extra_param} -no_run 1" - lua $UTIL_XRAY gen_config -flag SOCKS_$flag -node $node -local_socks_address $bind -local_socks_port $socks_port ${_extra_param} > $config_file - [ -n "$no_run" ] || ln_run "$(first_type $(config_t_get global_app xray_file) xray)" "xray" $log_file run -c "$config_file" - ;; - naiveproxy) - lua $UTIL_NAIVE gen_config -node $node -run_type socks -local_addr $bind -local_port $socks_port -server_host $server_host -server_port $server_port > $config_file - [ -n "$no_run" ] || ln_run "$(first_type naive)" naive $log_file "$config_file" - ;; - ssr) - lua $UTIL_SS gen_config -node $node -local_addr $bind -local_port $socks_port -server_host $server_host -server_port $server_port > $config_file - [ -n "$no_run" ] || ln_run "$(first_type ssr-local)" "ssr-local" $log_file -c "$config_file" -v -u - ;; - ss) - [ -n "$no_run" ] || { - local plugin_sh="${config_file%.json}_plugin.sh" - local _extra_param="-plugin_sh $plugin_sh" - } - lua $UTIL_SS gen_config -node $node -local_addr $bind -local_port $socks_port -server_host $server_host -server_port $server_port -mode tcp_and_udp ${_extra_param} > $config_file - [ -n "$no_run" ] || ln_run "$(first_type ss-local)" "ss-local" $log_file -c "$config_file" -v - ;; - ss-rust) - local _extra_param - [ "$http_port" != "0" ] && { - http_flag=1 - config_file="${config_file//SOCKS/HTTP_SOCKS}" - _extra_param="-local_http_address $bind -local_http_port $http_port" - } - [ -n "$no_run" ] || { - local plugin_sh="${config_file%.json}_plugin.sh" - _extra_param="${_extra_param:+$_extra_param }-plugin_sh $plugin_sh" - } - lua $UTIL_SS gen_config -node $node -local_socks_address $bind -local_socks_port $socks_port -server_host $server_host -server_port $server_port ${_extra_param} > $config_file - [ -n "$no_run" ] || ln_run "$(first_type sslocal)" "sslocal" $log_file -c "$config_file" -v - ;; - hysteria2) - [ "$http_port" != "0" ] && { - http_flag=1 - config_file="${config_file//SOCKS/HTTP_SOCKS}" - local _extra_param="-local_http_address $bind -local_http_port $http_port" - } - lua $UTIL_HYSTERIA2 gen_config -node $node -local_socks_address $bind -local_socks_port $socks_port -server_host $server_host -server_port $server_port ${_extra_param} > $config_file - [ -n "$no_run" ] || ln_run "$(first_type $(config_t_get global_app hysteria_file))" "hysteria" $log_file -c "$config_file" client - ;; - tuic) - lua $UTIL_TUIC gen_config -node $node -local_addr $bind -local_port $socks_port -server_host $server_host -server_port $server_port > $config_file - [ -n "$no_run" ] || ln_run "$(first_type tuic-client)" "tuic-client" $log_file -c "$config_file" - ;; - esac - - # http to socks - [ -z "$http_flag" ] && [ "$http_port" != "0" ] && [ -n "$http_config_file" ] && [ "$type" != "sing-box" ] && [ "$type" != "xray" ] && [ "$type" != "socks" ] && { - local bin=$(first_type $(config_t_get global_app sing_box_file) sing-box) - if [ -n "$bin" ]; then - type="sing-box" - lua $UTIL_SINGBOX gen_proto_config -local_http_port $http_port -server_proto socks -server_address "127.0.0.1" -server_port $socks_port -server_username $_username -server_password $_password > $http_config_file - [ -n "$no_run" ] || ln_run "$bin" ${type} /dev/null run -c "$http_config_file" - else - bin=$(first_type $(config_t_get global_app xray_file) xray) - [ -n "$bin" ] && type="xray" - [ -z "$type" ] && return 1 - lua $UTIL_XRAY gen_proto_config -local_http_port $http_port -server_proto socks -server_address "127.0.0.1" -server_port $socks_port -server_username $_username -server_password $_password > $http_config_file - [ -n "$no_run" ] || ln_run "$bin" ${type} /dev/null run -c "$http_config_file" - fi - } - unset http_flag - - [ -z "$no_run" ] && [ "${server_host}" != "127.0.0.1" ] && [ "$type" != "sing-box" ] && [ "$type" != "xray" ] && echo "${node}" >> $TMP_PATH/direct_node_list -} - -socks_node_switch() { - local flag new_node - eval_set_val $@ - [ -n "$flag" ] && [ -n "$new_node" ] && { - local prefix pf filename - # Kill the SS plugin process - for prefix in "" "HTTP_"; do - pf="$TMP_PATH/${prefix}SOCKS_${flag}_plugin.pid" - [ -s "$pf" ] && kill -9 "$(head -n1 "$pf")" >/dev/null 2>&1 - done - - pgrep -af "$TMP_BIN_PATH" | awk -v P1="${flag}" 'BEGIN{IGNORECASE=1}$0~P1 && !/acl\/|acl_/{print $1}' | xargs kill -9 >/dev/null 2>&1 - for prefix in "" "HTTP_" "HTTP2"; do - rm -rf "$TMP_PATH/${prefix}SOCKS_${flag}"* - done - - for filename in $(ls ${TMP_SCRIPT_FUNC_PATH}); do - cmd=$(cat ${TMP_SCRIPT_FUNC_PATH}/${filename}) - [ -n "$(echo $cmd | grep "${flag}")" ] && rm -f ${TMP_SCRIPT_FUNC_PATH}/${filename} - done - local bind_local=$(config_n_get $flag bind_local 0) - local bind="0.0.0.0" - [ "$bind_local" = "1" ] && bind="127.0.0.1" - local port=$(config_n_get $flag port) - local config_file="SOCKS_${flag}.json" - local log_file="SOCKS_${flag}.log" - local log=$(config_n_get $flag log 1) - [ "$log" == "0" ] && log_file="" - local http_port=$(config_n_get $flag http_port 0) - local http_config_file="HTTP2SOCKS_${flag}.json" - LOG_FILE="/dev/null" - run_socks flag=$flag node=$new_node bind=$bind socks_port=$port config_file=$config_file http_port=$http_port http_config_file=$http_config_file log_file=$log_file - set_cache_var "socks_${flag}" "$new_node" - local USE_TABLES=$(get_cache_var "USE_TABLES") - [ -n "$USE_TABLES" ] && source $APP_PATH/${USE_TABLES}.sh filter_direct_node_list - } -} - -run_global() { - [ -z "$NODE" ] && return 1 - TYPE=$(echo $(config_n_get $NODE type) | tr 'A-Z' 'a-z') - [ -z "$TYPE" ] && return 1 - mkdir -p ${GLOBAL_ACL_PATH} - - if [ $PROXY_IPV6 == "1" ]; then - log_i18n 0 "To enable experimental IPv6 transparent proxy (TProxy), please ensure your node and type support IPv6!" - fi - - TUN_DNS_PORT=15353 - TUN_DNS="127.0.0.1#${TUN_DNS_PORT}" - - V2RAY_ARGS="flag=global node=$NODE redir_port=$REDIR_PORT tcp_proxy_way=${TCP_PROXY_WAY}" - V2RAY_ARGS="${V2RAY_ARGS} dns_listen_port=${TUN_DNS_PORT} direct_dns_query_strategy=${DIRECT_DNS_QUERY_STRATEGY} remote_dns_query_strategy=${REMOTE_DNS_QUERY_STRATEGY} dns_cache=${DNS_CACHE}" - local msg="DNS: ${TUN_DNS} ($(i18n "Direct DNS: %s" "${AUTO_DNS}")" - - [ -n "$REMOTE_DNS_PROTOCOL" ] && { - V2RAY_ARGS="${V2RAY_ARGS} remote_dns_protocol=${REMOTE_DNS_PROTOCOL} remote_dns_detour=${REMOTE_DNS_DETOUR}" - case "$REMOTE_DNS_PROTOCOL" in - udp*) - V2RAY_ARGS="${V2RAY_ARGS} remote_dns_udp_server=${REMOTE_DNS}" - msg="${msg} $(i18n "Remote DNS: %s" "${REMOTE_DNS}")" - ;; - tcp) - V2RAY_ARGS="${V2RAY_ARGS} remote_dns_tcp_server=${REMOTE_DNS}" - msg="${msg} $(i18n "Remote DNS: %s" "${REMOTE_DNS}")" - ;; - doh) - REMOTE_DNS_DOH=$(config_t_get global remote_dns_doh "https://1.1.1.1/dns-query") - V2RAY_ARGS="${V2RAY_ARGS} remote_dns_doh=${REMOTE_DNS_DOH}" - msg="${msg} $(i18n "Remote DNS: %s" "${REMOTE_DNS_DOH}")" - ;; - esac - [ "$REMOTE_FAKEDNS" = "1" ] && { - V2RAY_ARGS="${V2RAY_ARGS} remote_fakedns=1" - msg="${msg} + FakeDNS " - } - - local _remote_dns_client_ip=$(config_t_get global remote_dns_client_ip) - [ -n "${_remote_dns_client_ip}" ] && V2RAY_ARGS="${V2RAY_ARGS} remote_dns_client_ip=${_remote_dns_client_ip}" - } - msg="${msg})" - log 0 ${msg} - - V2RAY_CONFIG=${GLOBAL_ACL_PATH}/global.json - V2RAY_LOG=${GLOBAL_ACL_PATH}/global.log - [ "$(config_t_get global log_node 1)" != "1" ] && V2RAY_LOG="/dev/null" - V2RAY_ARGS="${V2RAY_ARGS} log_file=${V2RAY_LOG} config_file=${V2RAY_CONFIG}" - - node_socks_port=$(config_t_get global node_socks_port 1070) - node_socks_bind_local=$(config_t_get global node_socks_bind_local 1) - node_socks_bind="127.0.0.1" - [ "${node_socks_bind_local}" != "1" ] && node_socks_bind="0.0.0.0" - V2RAY_ARGS="${V2RAY_ARGS} socks_address=${node_socks_bind} socks_port=${node_socks_port}" - set_cache_var "GLOBAL_SOCKS_server" "127.0.0.1:$node_socks_port" - - node_http_port=$(config_t_get global node_http_port 0) - [ "$node_http_port" != "0" ] && V2RAY_ARGS="${V2RAY_ARGS} http_port=${node_http_port}" - - V2RAY_ARGS="${V2RAY_ARGS} write_ipset_direct=${WRITE_IPSET_DIRECT}" - - local run_func - [ -n "${XRAY_BIN}" ] && run_func="run_xray" - [ -n "${SINGBOX_BIN}" ] && run_func="run_singbox" - if [ "${TYPE}" = "xray" ] && [ -n "${XRAY_BIN}" ]; then - run_func="run_xray" - elif [ "${TYPE}" = "sing-box" ] && [ -n "${SINGBOX_BIN}" ]; then - run_func="run_singbox" - fi - - ${run_func} ${V2RAY_ARGS} - - local RUN_NEW_DNSMASQ=1 - RUN_NEW_DNSMASQ=${DNS_REDIRECT} - if [ "${RUN_NEW_DNSMASQ}" == "0" ]; then - #The old logic will be removed in the future. - #Run a copy dnsmasq instance, DNS hijack that don't need a proxy devices. - [ "1" = "0" ] && { - DIRECT_DNSMASQ_PORT=$(get_new_port 11400) - DIRECT_DNSMASQ_CONF=${GLOBAL_ACL_PATH}/direct_dnsmasq.conf - DIRECT_DNSMASQ_CONF_PATH=${GLOBAL_ACL_PATH}/direct_dnsmasq.d - mkdir -p ${DIRECT_DNSMASQ_CONF_PATH} - lua $APP_PATH/helper_dnsmasq.lua copy_instance -LISTEN_PORT ${DIRECT_DNSMASQ_PORT} -DNSMASQ_CONF ${DIRECT_DNSMASQ_CONF} -TMP_DNSMASQ_PATH ${DIRECT_DNSMASQ_CONF_PATH} - ln_run "$(first_type dnsmasq)" "dnsmasq_direct" "/dev/null" -C ${DIRECT_DNSMASQ_CONF} -x ${GLOBAL_ACL_PATH}/direct_dnsmasq.pid - set_cache_var "DIRECT_DNSMASQ_PORT" "${DIRECT_DNSMASQ_PORT}" - } - - #Rewrite the default DNS service configuration - #Modify the default dnsmasq service - lua $APP_PATH/helper_dnsmasq.lua stretch - lua $APP_PATH/helper_dnsmasq.lua add_rule -FLAG "default" -TMP_DNSMASQ_PATH ${GLOBAL_DNSMASQ_CONF_PATH} -DNSMASQ_CONF_FILE ${GLOBAL_DNSMASQ_CONF} \ - -DEFAULT_DNS ${AUTO_DNS} -LOCAL_DNS ${LOCAL_DNS:-${AUTO_DNS}} -TUN_DNS ${TUN_DNS} \ - -NFTFLAG ${nftflag:-0} \ - -NO_LOGIC_LOG ${NO_LOGIC_LOG:-0} - uci -q add_list dhcp.@dnsmasq[0].addnmount=${GLOBAL_DNSMASQ_CONF_PATH} - uci -q commit dhcp - lua $APP_PATH/helper_dnsmasq.lua logic_restart -LOG 1 - else - #Run a copy dnsmasq instance, DNS hijack for that need proxy devices. - GLOBAL_DNSMASQ_PORT=$(get_new_port 11400) - run_copy_dnsmasq flag="default" listen_port=$GLOBAL_DNSMASQ_PORT tun_dns="${TUN_DNS}" - DNS_REDIRECT_PORT=${GLOBAL_DNSMASQ_PORT} - #dhcp.leases to hosts - $APP_PATH/lease2hosts.sh > /dev/null 2>&1 & - fi - - set_cache_var "ACL_GLOBAL_node" "$NODE" - set_cache_var "ACL_GLOBAL_redir_port" "$REDIR_PORT" -} - -start_socks() { - [ "$SOCKS_ENABLED" = "1" ] && { - local ids=$(uci show $CONFIG | grep "=socks" | awk -F '.' '{print $2}' | awk -F '=' '{print $1}') - [ -n "$ids" ] && { - log_i18n 0 "Analyzing the node configuration of the Socks service..." - for id in $ids; do - local enabled=$(config_n_get $id enabled 0) - [ "$enabled" == "0" ] && continue - local node=$(config_n_get $id node) - [ -z "$node" ] && continue - local bind_local=$(config_n_get $id bind_local 0) - local bind="0.0.0.0" - [ "$bind_local" = "1" ] && bind="127.0.0.1" - local port=$(config_n_get $id port) - local config_file="SOCKS_${id}.json" - local log_file="SOCKS_${id}.log" - local log=$(config_n_get $id log 1) - [ "$log" == "0" ] && log_file="" - local http_port=$(config_n_get $id http_port 0) - local http_config_file="HTTP2SOCKS_${id}.json" - run_socks flag=$id node=$node bind=$bind socks_port=$port config_file=$config_file http_port=$http_port http_config_file=$http_config_file log_file=$log_file - set_cache_var "socks_${id}" "$node" - - # Auto switch logic - local enable_autoswitch=$(config_n_get $id enable_autoswitch 0) - [ "$enable_autoswitch" = "1" ] && $APP_PATH/socks_auto_switch.sh ${id} > /dev/null 2>&1 & - done - } - } -} - -clean_log() { - logsnum=$(cat $LOG_FILE 2>/dev/null | wc -l) - [ "$logsnum" -gt 1000 ] && { - echo "" > $LOG_FILE - log_i18n 0 "Log file is too long, clear it!" - } -} - -clean_crontab() { - [ -f "/tmp/lock/${CONFIG}_cron.lock" ] && return - touch /etc/crontabs/root - #sed -i "/${CONFIG}/d" /etc/crontabs/root >/dev/null 2>&1 - sed -i "/$(echo "/etc/init.d/${CONFIG}" | sed 's#\/#\\\/#g')/d" /etc/crontabs/root >/dev/null 2>&1 - sed -i "/$(echo "lua ${APP_PATH}/rule_update.lua log" | sed 's#\/#\\\/#g')/d" /etc/crontabs/root >/dev/null 2>&1 - sed -i "/$(echo "lua ${APP_PATH}/subscribe.lua start" | sed 's#\/#\\\/#g')/d" /etc/crontabs/root >/dev/null 2>&1 - - pgrep -af "${CONFIG}/" | awk '/tasks\.sh/{print $1}' | xargs kill -9 >/dev/null 2>&1 - rm -rf /tmp/lock/${CONFIG}_tasks.lock -} - -start_crontab() { - if [ "$ENABLED_DEFAULT_ACL" == 1 ] || [ "$ENABLED_ACLS" == 1 ]; then - start_daemon=$(config_t_get global_delay start_daemon 0) - [ "$start_daemon" = "1" ] && $APP_PATH/monitor.sh > /dev/null 2>&1 & - fi - - [ -f "/tmp/lock/${CONFIG}_cron.lock" ] && { - rm -rf "/tmp/lock/${CONFIG}_cron.lock" - log_i18n 0 "The task is currently running automatically as a scheduled task; no reconfiguration of the scheduled task is required." - return - } - - clean_crontab - - [ "$ENABLED" != 1 ] && { - /etc/init.d/cron restart - return - } - - stop_week_mode=$(config_t_get global_delay stop_week_mode) - stop_time_mode=$(config_t_get global_delay stop_time_mode) - if [ -n "$stop_week_mode" ]; then - local t="0 $stop_time_mode * * $stop_week_mode" - [ "$stop_week_mode" = "7" ] && t="0 $stop_time_mode * * *" - if [ "$stop_week_mode" = "8" ]; then - update_loop=1 - else - echo "$t /etc/init.d/$CONFIG stop > /dev/null 2>&1 &" >>/etc/crontabs/root - fi - log_i18n 0 "Scheduled tasks: Auto stop service." - fi - - start_week_mode=$(config_t_get global_delay start_week_mode) - start_time_mode=$(config_t_get global_delay start_time_mode) - if [ -n "$start_week_mode" ]; then - local t="0 $start_time_mode * * $start_week_mode" - [ "$start_week_mode" = "7" ] && t="0 $start_time_mode * * *" - if [ "$start_week_mode" = "8" ]; then - update_loop=1 - else - echo "$t /etc/init.d/$CONFIG start > /dev/null 2>&1 &" >>/etc/crontabs/root - fi - log_i18n 0 "Scheduled tasks: Auto start service." - fi - - restart_week_mode=$(config_t_get global_delay restart_week_mode) - restart_time_mode=$(config_t_get global_delay restart_time_mode) - if [ -n "$restart_week_mode" ]; then - local t="0 $restart_time_mode * * $restart_week_mode" - [ "$restart_week_mode" = "7" ] && t="0 $restart_time_mode * * *" - if [ "$restart_week_mode" = "8" ]; then - update_loop=1 - else - echo "$t /etc/init.d/$CONFIG restart > /dev/null 2>&1 &" >>/etc/crontabs/root - fi - log_i18n 0 "Scheduled tasks: Auto restart service." - fi - - autoupdate=$(config_t_get global_rules auto_update) - weekupdate=$(config_t_get global_rules week_update) - dayupdate=$(config_t_get global_rules time_update) - if [ "$autoupdate" = "1" ]; then - local t="0 $dayupdate * * $weekupdate" - [ "$weekupdate" = "7" ] && t="0 $dayupdate * * *" - if [ "$weekupdate" = "8" ]; then - update_loop=1 - else - echo "$t lua $APP_PATH/rule_update.lua log all cron > /dev/null 2>&1 &" >>/etc/crontabs/root - fi - log_i18n 0 "Scheduled tasks: Auto update rules." - fi - - TMP_SUB_PATH=$TMP_PATH/sub_crontabs - mkdir -p $TMP_SUB_PATH - for item in $(uci show ${CONFIG} | grep "=subscribe_list" | cut -d '.' -sf 2 | cut -d '=' -sf 1); do - if [ "$(config_n_get $item auto_update 0)" = "1" ]; then - cfgid=$(uci show ${CONFIG}.$item | head -n 1 | cut -d '.' -sf 2 | cut -d '=' -sf 1) - remark=$(config_n_get $item remark) - week_update=$(config_n_get $item week_update) - time_update=$(config_n_get $item time_update) - echo "$cfgid" >> $TMP_SUB_PATH/${week_update}_${time_update} - log_i18n 0 "Scheduled tasks: Auto update [%s] subscription." "${remark}" - fi - done - - [ -d "${TMP_SUB_PATH}" ] && { - for name in $(ls ${TMP_SUB_PATH}); do - week_update=$(echo $name | awk -F '_' '{print $1}') - time_update=$(echo $name | awk -F '_' '{print $2}') - cfgids=$(echo -n $(cat ${TMP_SUB_PATH}/${name}) | sed 's# #,#g') - local t="0 $time_update * * $week_update" - [ "$week_update" = "7" ] && t="0 $time_update * * *" - if [ "$week_update" = "8" ]; then - update_loop=1 - else - echo "$t lua $APP_PATH/subscribe.lua start $cfgids cron > /dev/null 2>&1 &" >>/etc/crontabs/root - fi - done - rm -rf $TMP_SUB_PATH - } - - if [ "$ENABLED_DEFAULT_ACL" == 1 ] || [ "$ENABLED_ACLS" == 1 ]; then - [ "$update_loop" = "1" ] && { - $APP_PATH/tasks.sh > /dev/null 2>&1 & - log_i18n 0 "Auto updates: Starts a cyclical update process." - } - else - log_i18n 0 "Running in no proxy mode, it only allows scheduled tasks for starting and stopping services." - fi - - /etc/init.d/cron restart -} - -stop_crontab() { - [ -f "/tmp/lock/${CONFIG}_cron.lock" ] && return - clean_crontab - /etc/init.d/cron restart - #log_i18n 0 "Clear scheduled commands." -} - -start_haproxy() { - [ "$(config_t_get global_haproxy balancing_enable 0)" != "1" ] && return - haproxy_path=$TMP_PATH/haproxy - haproxy_conf="config.cfg" - lua $APP_PATH/haproxy.lua -path ${haproxy_path} -conf ${haproxy_conf} -dns ${LOCAL_DNS:-${AUTO_DNS}} - ln_run "$(first_type haproxy)" haproxy "/dev/null" -f "${haproxy_path}/${haproxy_conf}" -} - -run_copy_dnsmasq() { - local flag listen_port tun_dns - eval_set_val $@ - local dnsmasq_conf=$TMP_ACL_PATH/$flag/dnsmasq.conf - local dnsmasq_conf_path=$TMP_ACL_PATH/$flag/dnsmasq.d - mkdir -p $dnsmasq_conf_path - lua $APP_PATH/helper_dnsmasq.lua copy_instance -LISTEN_PORT ${listen_port} -DNSMASQ_CONF ${dnsmasq_conf} - lua $APP_PATH/helper_dnsmasq.lua add_rule -FLAG "${flag}" -TMP_DNSMASQ_PATH ${dnsmasq_conf_path} -DNSMASQ_CONF_FILE ${dnsmasq_conf} \ - -DEFAULT_DNS ${AUTO_DNS} -LOCAL_DNS ${LOCAL_DNS:-${AUTO_DNS}} -TUN_DNS ${tun_dns} \ - -NFTFLAG ${nftflag:-0} \ - -NO_LOGIC_LOG ${NO_LOGIC_LOG:-0} - ln_run "$(first_type dnsmasq)" "dnsmasq_${flag}" "/dev/null" -C $dnsmasq_conf -x $TMP_ACL_PATH/$flag/dnsmasq.pid - set_cache_var "ACL_${flag}_dns_port" "${listen_port}" -} - -run_ipset_dns_server() { - if [ -n "$(first_type chinadns-ng)" ]; then - run_ipset_chinadns_ng $@ - else - run_ipset_dnsmasq $@ - fi -} - -run_ipset_chinadns_ng() { - local listen_port server_dns ipset nftset config_file - eval_set_val $@ - [ ! -s "$TMP_ACL_PATH/vpslist" ] && { - node_servers=$(uci show "${CONFIG}" | grep -E "(.address=|.download_address=)" | cut -d "'" -f 2) - hosts_foreach "node_servers" host_from_url | grep '[a-zA-Z]$' | sort -u | grep -v "engage.cloudflareclient.com" > $TMP_ACL_PATH/vpslist - } - - [ -n "${ipset}" ] && { - set_names=$ipset - vps_set_names="passwall2_vps,passwall2_vps6" - } - [ -n "${nftset}" ] && { - set_names=$(echo ${nftset} | awk -F, '{printf "%s,%s", substr($1,3), substr($2,3)}' | sed 's/#/@/g') - vps_set_names="inet@passwall2@passwall2_vps,inet@passwall2@passwall2_vps6" - } - cat <<-EOF > $config_file - bind-addr 127.0.0.1 - bind-port ${listen_port} - china-dns ${server_dns} - trust-dns ${server_dns} - filter-qtype 65 - add-tagchn-ip ${set_names} - default-tag chn - group vpslist - group-dnl $TMP_ACL_PATH/vpslist - group-upstream ${server_dns} - group-ipset ${vps_set_names} - EOF - ln_run "$(first_type chinadns-ng)" "chinadns-ng" "/dev/null" -C $config_file -v -} - -run_ipset_dnsmasq() { - local listen_port server_dns ipset nftset cache_size dns_forward_max config_file - eval_set_val $@ - cat <<-EOF > $config_file - port=${listen_port} - no-poll - no-resolv - strict-order - cache-size=${cache_size:-0} - dns-forward-max=${dns_forward_max:-1000} - EOF - for i in $(echo ${server_dns} | sed "s#,# #g"); do - echo "server=${i}" >> $config_file - done - [ -n "${ipset}" ] && echo "ipset=${ipset}" >> $config_file - [ -n "${nftset}" ] && echo "nftset=${nftset}" >> $config_file - ln_run "$(first_type dnsmasq)" "dnsmasq" "/dev/null" -C $config_file -} - -kill_all() { - kill -9 $(pidof "$@") >/dev/null 2>&1 -} - -acl_app() { - local items=$(uci show ${CONFIG} | grep "=acl_rule" | cut -d '.' -sf 2 | cut -d '=' -sf 1) - [ -n "$items" ] && { - local index=0 - local item - local redir_port dns_port dnsmasq_port - local ipt_tmp msg msg2 - redir_port=11200 - dns_port=11300 - dnsmasq_port=${GLOBAL_DNSMASQ_PORT:-11400} - for item in $items; do - index=$(expr $index + 1) - local enabled sid remarks sources interface tcp_no_redir_ports udp_no_redir_ports node direct_dns_query_strategy write_ipset_direct remote_dns_protocol remote_dns remote_dns_doh remote_dns_client_ip remote_dns_detour remote_fakedns remote_dns_query_strategy - local _ip _mac _iprange _ipset _ip_or_mac source_list config_file - local sid=$(uci -q show "${CONFIG}.${item}" | grep "=acl_rule" | awk -F '=' '{print $1}' | awk -F '.' '{print $2}') - [ "$(config_n_get $sid enabled)" = "1" ] || continue - eval $(uci -q show "${CONFIG}.${item}" | cut -d'.' -sf 3-) - - if [ -n "${sources}" ]; then - for s in $sources; do - local s2 - is_iprange=$(lua_api "iprange(\"${s}\")") - if [ "${is_iprange}" = "true" ]; then - s2="iprange:${s}" - elif [ -n "$(echo ${s} | grep '^ipset:')" ]; then - s2="ipset:${s}" - else - _ip_or_mac=$(lua_api "ip_or_mac(\"${s}\")") - if [ "${_ip_or_mac}" = "ip" ]; then - s2="ip:${s}" - elif [ "${_ip_or_mac}" = "mac" ]; then - s2="mac:${s}" - fi - fi - [ -n "${s2}" ] && source_list="${source_list}\n${s2}" - unset s2 - done - else - source_list="any" - fi - - local acl_path=${TMP_ACL_PATH}/$sid - mkdir -p ${acl_path} - [ -n "${source_list}" ] && echo -e "${source_list}" | sed '/^$/d' > ${acl_path}/source_list - - node=${node:-default} - tcp_no_redir_ports=${tcp_no_redir_ports:-default} - udp_no_redir_ports=${udp_no_redir_ports:-default} - [ "$tcp_no_redir_ports" = "default" ] && tcp_no_redir_ports=$TCP_NO_REDIR_PORTS - [ "$udp_no_redir_ports" = "default" ] && udp_no_redir_ports=$UDP_NO_REDIR_PORTS - if has_1_65535 "$tcp_no_redir_ports" && has_1_65535 "$udp_no_redir_ports"; then - unset node - fi - - [ -n "$node" ] && { - tcp_proxy_mode="global" - udp_proxy_mode="global" - direct_dns_query_strategy=${direct_dns_query_strategy:-UseIP} - write_ipset_direct=${write_ipset_direct:-1} - remote_dns_protocol=${remote_dns_protocol:-tcp} - remote_dns=${remote_dns:-1.1.1.1} - [ "$remote_dns_protocol" = "doh" ] && remote_dns=${remote_dns_doh:-https://1.1.1.1/dns-query} - remote_dns_detour=${remote_dns_detour:-remote} - remote_fakedns=${remote_fakedns:-0} - remote_dns_query_strategy=${remote_dns_query_strategy:-UseIPv4} - - local GLOBAL_node=$(get_cache_var "ACL_GLOBAL_node") - [ -n "${GLOBAL_node}" ] && GLOBAL_redir_port=$(get_cache_var "ACL_GLOBAL_redir_port") - - if [ "$node" = "default" ]; then - if [ -n "${GLOBAL_node}" ]; then - set_cache_var "ACL_${sid}_node" "${GLOBAL_node}" - set_cache_var "ACL_${sid}_redir_port" "${GLOBAL_redir_port}" - set_cache_var "ACL_${sid}_dns_port" "${GLOBAL_DNSMASQ_PORT}" - set_cache_var "ACL_${sid}_default" "1" - else - log 1 "$(i18n "Global nodes are not enabled, skip [%s]." "${remarks}")" - fi - else - [ "$(config_get_type $node)" = "nodes" ] && { - if [ -n "${GLOBAL_node}" ] && [ "$node" = "${GLOBAL_node}" ]; then - set_cache_var "ACL_${sid}_node" "${GLOBAL_node}" - set_cache_var "ACL_${sid}_redir_port" "${GLOBAL_redir_port}" - set_cache_var "ACL_${sid}_dns_port" "${GLOBAL_DNSMASQ_PORT}" - set_cache_var "ACL_${sid}_default" "1" - else - redir_port=$(get_new_port $(expr $redir_port + 1)) - - local type=$(echo $(config_n_get $node type) | tr 'A-Z' 'a-z') - if [ -n "${type}" ]; then - config_file=$TMP_ACL_PATH/${node}_TCP_UDP_DNS_${redir_port}.json - dns_port=$(get_new_port $(expr $dns_port + 1)) - local acl_socks_port=$(get_new_port $(expr $redir_port + $index)) - local run_func - [ -n "${XRAY_BIN}" ] && run_func="run_xray" - [ -n "${SINGBOX_BIN}" ] && run_func="run_singbox" - if [ "${type}" = "xray" ] && [ -n "${XRAY_BIN}" ]; then - run_func="run_xray" - elif [ "${type}" = "sing-box" ] && [ -n "${SINGBOX_BIN}" ]; then - run_func="run_singbox" - fi - ${run_func} flag=acl_$sid node=$node redir_port=$redir_port tcp_proxy_way=${TCP_PROXY_WAY} socks_address=127.0.0.1 socks_port=$acl_socks_port dns_listen_port=${dns_port} direct_dns_query_strategy=${direct_dns_query_strategy} remote_dns_protocol=${remote_dns_protocol} remote_dns_tcp_server=${remote_dns} remote_dns_udp_server=${remote_dns} remote_dns_doh="${remote_dns}" remote_dns_client_ip=${remote_dns_client_ip} remote_dns_detour=${remote_dns_detour} remote_fakedns=${remote_fakedns} remote_dns_query_strategy=${remote_dns_query_strategy} write_ipset_direct=${write_ipset_direct} config_file=${config_file} - fi - dnsmasq_port=$(get_new_port $(expr $dnsmasq_port + 1)) - run_copy_dnsmasq flag="$sid" listen_port=$dnsmasq_port tun_dns="127.0.0.1#${dns_port}" - #dhcp.leases to hostsMore actions - $APP_PATH/lease2hosts.sh > /dev/null 2>&1 & - - set_cache_var "ACL_${sid}_node" "$node" - set_cache_var "ACL_${sid}_redir_port" "$redir_port" - fi - } - fi - } - unset enabled sid remarks sources interface tcp_no_redir_ports udp_no_redir_ports node direct_dns_query_strategy write_ipset_direct remote_dns_protocol remote_dns remote_dns_doh remote_dns_client_ip remote_dns_detour remote_fakedns remote_dns_query_strategy - unset _ip _mac _iprange _ipset _ip_or_mac source_list config_file - done - unset redir_port dns_port dnsmasq_port - } -} - -start() { - pgrep -f /tmp/etc/passwall2/bin > /dev/null 2>&1 && { - #log_i18n 0 "The program has started. Please stop it and then restart it!" - stop - } - mkdir -p /tmp/etc /tmp/log $TMP_PATH $TMP_BIN_PATH $TMP_SCRIPT_FUNC_PATH $TMP_ROUTE_PATH $TMP_ACL_PATH $TMP_PATH2 - get_config - export V2RAY_LOCATION_ASSET=$(config_t_get global_rules v2ray_location_asset "/usr/share/v2ray/") - export XRAY_LOCATION_ASSET=$V2RAY_LOCATION_ASSET - export ENABLE_DEPRECATED_GEOSITE=true - export ENABLE_DEPRECATED_GEOIP=true - ulimit -n 65535 - start_haproxy - start_socks - nftflag=0 - USE_TABLES="" - check_run_environment - if [ "$ENABLED_DEFAULT_ACL" == 1 ] || [ "$ENABLED_ACLS" == 1 ]; then - [ "$(uci -q get dhcp.@dnsmasq[0].dns_redirect)" == "1" ] && { - uci -q set ${CONFIG}.@global[0].dnsmasq_dns_redirect='1' - uci -q commit ${CONFIG} - uci -q set dhcp.@dnsmasq[0].dns_redirect='0' - uci -q commit dhcp - lua $APP_PATH/helper_dnsmasq.lua restart -LOG 0 - } - fi - [ "$ENABLED_DEFAULT_ACL" == 1 ] && run_global - [ -n "$USE_TABLES" ] && source $APP_PATH/${USE_TABLES}.sh start - set_cache_var "USE_TABLES" "$USE_TABLES" - if [ "$ENABLED_DEFAULT_ACL" == 1 ] || [ "$ENABLED_ACLS" == 1 ]; then - bridge_nf_ipt=$(sysctl -e -n net.bridge.bridge-nf-call-iptables) - set_cache_var "bak_bridge_nf_ipt" "$bridge_nf_ipt" - sysctl -w net.bridge.bridge-nf-call-iptables=0 >/dev/null 2>&1 - [ "$PROXY_IPV6" == "1" ] && { - bridge_nf_ip6t=$(sysctl -e -n net.bridge.bridge-nf-call-ip6tables) - set_cache_var "bak_bridge_nf_ip6t" "$bridge_nf_ip6t" - sysctl -w net.bridge.bridge-nf-call-ip6tables=0 >/dev/null 2>&1 - } - fi - start_crontab - log_i18n 0 "Running complete!" - echolog "\n" -} - -stop() { - clean_log - eval_cache_var - [ -n "$USE_TABLES" ] && source $APP_PATH/${USE_TABLES}.sh stop - delete_ip2route - # Kill the SS plugin process - # kill_all xray-plugin v2ray-plugin obfs-local shadow-tls - local pid_file pid - find "$TMP_PATH" -type f -name '*_plugin.pid' 2>/dev/null | while read -r pid_file; do - read -r pid < "$pid_file" - if [ -n "$pid" ]; then - kill -9 "$pid" >/dev/null 2>&1 - fi - done - pgrep -f "sleep.*(6s|9s|58s)" | xargs kill -9 >/dev/null 2>&1 - pgrep -af "${CONFIG}/" | awk '! /app\.sh|subscribe\.lua|rule_update\.lua|tasks\.sh|ujail/{print $1}' | xargs kill -9 >/dev/null 2>&1 - unset V2RAY_LOCATION_ASSET - unset XRAY_LOCATION_ASSET - stop_crontab - rm -rf $GLOBAL_DNSMASQ_CONF - rm -rf $GLOBAL_DNSMASQ_CONF_PATH - [ "1" = "1" ] && { - #restore logic - bak_dnsmasq_dns_redirect=$(config_t_get global dnsmasq_dns_redirect) - [ -n "${bak_dnsmasq_dns_redirect}" ] && { - uci -q set dhcp.@dnsmasq[0].dns_redirect="${bak_dnsmasq_dns_redirect}" - uci -q commit dhcp - uci -q delete ${CONFIG}.@global[0].dnsmasq_dns_redirect - uci -q commit ${CONFIG} - } - if [ -z "${ACL_default_dns_port}" ] || [ -n "${bak_dnsmasq_dns_redirect}" ]; then - uci -q del_list dhcp.@dnsmasq[0].addnmount="${GLOBAL_DNSMASQ_CONF_PATH}" - uci -q commit dhcp - lua $APP_PATH/helper_dnsmasq.lua restart -LOG 0 - fi - [ -n "${bak_bridge_nf_ipt}" ] && sysctl -w net.bridge.bridge-nf-call-iptables=${bak_bridge_nf_ipt} >/dev/null 2>&1 - [ -n "${bak_bridge_nf_ip6t}" ] && sysctl -w net.bridge.bridge-nf-call-ip6tables=${bak_bridge_nf_ip6t} >/dev/null 2>&1 - } - rm -rf $TMP_PATH - rm -rf /tmp/lock/${CONFIG}_socks_auto_switch* - rm -rf /tmp/lock/${CONFIG}_lease2hosts* - log_i18n 0 "Clearing and closing related programs and cache complete." - exit 0 -} - -get_config() { - ENABLED_DEFAULT_ACL=0 - ENABLED=$(config_t_get global enabled 0) - NODE=$(config_t_get global node) - [ "$ENABLED" == 1 ] && { - [ -n "$NODE" ] && [ "$(config_get_type $NODE)" == "nodes" ] && ENABLED_DEFAULT_ACL=1 - } - ENABLED_ACLS=$(config_t_get global acl_enable 0) - [ "$ENABLED_ACLS" == 1 ] && { - [ "$(uci show ${CONFIG} | grep "@acl_rule" | grep "enabled='1'" | wc -l)" == 0 ] && ENABLED_ACLS=0 - } - SOCKS_ENABLED=$(config_t_get global socks_enabled 0) - REDIR_PORT=$(echo $(get_new_port 1041 tcp,udp)) - TCP_PROXY_WAY=$(config_t_get global_forwarding tcp_proxy_way redirect) - TCP_NO_REDIR_PORTS=$(config_t_get global_forwarding tcp_no_redir_ports 'disable') - UDP_NO_REDIR_PORTS=$(config_t_get global_forwarding udp_no_redir_ports 'disable') - TCP_REDIR_PORTS=$(config_t_get global_forwarding tcp_redir_ports '22,25,53,143,465,587,853,993,995,80,443') - UDP_REDIR_PORTS=$(config_t_get global_forwarding udp_redir_ports '1:65535') - PROXY_IPV6=$(config_t_get global_forwarding ipv6_tproxy 0) - TCP_PROXY_MODE="global" - UDP_PROXY_MODE="global" - LOCALHOST_PROXY=$(config_t_get global localhost_proxy '1') - CLIENT_PROXY=$(config_t_get global client_proxy '1') - DIRECT_DNS_QUERY_STRATEGY=$(config_t_get global direct_dns_query_strategy UseIP) - REMOTE_DNS_PROTOCOL=$(config_t_get global remote_dns_protocol tcp) - REMOTE_DNS_DETOUR=$(config_t_get global remote_dns_detour remote) - REMOTE_DNS=$(config_t_get global remote_dns 1.1.1.1:53 | sed 's/#/:/g' | sed -E 's/\:([^:]+)$/#\1/g') - REMOTE_FAKEDNS=$(config_t_get global remote_fakedns '0') - REMOTE_DNS_QUERY_STRATEGY=$(config_t_get global remote_dns_query_strategy UseIPv4) - WRITE_IPSET_DIRECT=$(config_t_get global write_ipset_direct 1) - DNS_CACHE=$(config_t_get global dns_cache 1) - DNS_REDIRECT=$(config_t_get global dns_redirect 1) - - RESOLVFILE=/tmp/resolv.conf.d/resolv.conf.auto - [ -f "${RESOLVFILE}" ] && [ -s "${RESOLVFILE}" ] || RESOLVFILE=/tmp/resolv.conf.auto - - ISP_DNS=$(cat $RESOLVFILE 2>/dev/null | grep -E -o "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+" | grep -v -E '^(0\.0\.0\.0|127\.0\.0\.1)$' | awk '!seen[$0]++') - ISP_DNS6=$(cat $RESOLVFILE 2>/dev/null | grep -E "([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}" | awk -F % '{print $1}' | awk -F " " '{print $2}' | grep -v -Fx ::1 | grep -v -Fx :: | awk '!seen[$0]++') - - DEFAULT_DNSMASQ_CFGID=$(uci show dhcp.@dnsmasq[0] | awk -F '.' '{print $2}' | awk -F '=' '{print $1}'| head -1) - DEFAULT_DNS=$(uci show dhcp.@dnsmasq[0] | grep "\.server=" | awk -F '=' '{print $2}' | sed "s/'//g" | tr ' ' '\n' | grep -v "\/" | head -2 | sed ':label;N;s/\n/,/;b label') - [ -z "${DEFAULT_DNS}" ] && DEFAULT_DNS=$(echo -n $ISP_DNS | tr ' ' '\n' | head -2 | tr '\n' ',' | sed 's/,$//') - AUTO_DNS=${DEFAULT_DNS:-119.29.29.29} - - DNSMASQ_CONF_DIR=/tmp/dnsmasq.d - DEFAULT_DNSMASQ_CFGID="$(uci -q show "dhcp.@dnsmasq[0]" | awk 'NR==1 {split($0, conf, /[.=]/); print conf[2]}')" - if [ -f "/tmp/etc/dnsmasq.conf.$DEFAULT_DNSMASQ_CFGID" ]; then - DNSMASQ_CONF_DIR="$(awk -F '=' '/^conf-dir=/ {print $2}' "/tmp/etc/dnsmasq.conf.$DEFAULT_DNSMASQ_CFGID")" - if [ -n "$DNSMASQ_CONF_DIR" ]; then - DNSMASQ_CONF_DIR=${DNSMASQ_CONF_DIR%*/} - else - DNSMASQ_CONF_DIR="/tmp/dnsmasq.d" - fi - fi - set_cache_var GLOBAL_DNSMASQ_CONF ${DNSMASQ_CONF_DIR}/dnsmasq-${CONFIG}.conf - set_cache_var GLOBAL_DNSMASQ_CONF_PATH ${GLOBAL_ACL_PATH}/dnsmasq.d - - XRAY_BIN=$(first_type $(config_t_get global_app xray_file) xray) - SINGBOX_BIN=$(first_type $(config_t_get global_app sing_box_file) sing-box) -} - -arg1=$1 -shift -case $arg1 in -run_socks) - run_socks $@ - ;; -socks_node_switch) - socks_node_switch $@ - ;; -start) - start - ;; -stop) - stop - ;; -esac diff --git a/small/luci-app-passwall2/root/usr/share/passwall2/domains_excluded b/small/luci-app-passwall2/root/usr/share/passwall2/domains_excluded deleted file mode 100644 index f2def6f260..0000000000 --- a/small/luci-app-passwall2/root/usr/share/passwall2/domains_excluded +++ /dev/null @@ -1,26 +0,0 @@ -courier.push.apple.com -rbsxbxp-mim.vivox.com -rbsxbxp.www.vivox.com -rbsxbxp-ws.vivox.com -rbspsxp.www.vivox.com -rbspsxp-mim.vivox.com -rbspsxp-ws.vivox.com -rbswxp.www.vivox.com -rbswxp-mim.vivox.com -disp-rbspsp-5-1.vivox.com -disp-rbsxbp-5-1.vivox.com -proxy.rbsxbp.vivox.com -proxy.rbspsp.vivox.com -proxy.rbswp.vivox.com -rbswp.vivox.com -rbsxbp.vivox.com -rbspsp.vivox.com -rbspsp.www.vivox.com -rbswp.www.vivox.com -rbsxbp.www.vivox.com -rbsxbxp.vivox.com -rbspsxp.vivox.com -rbswxp.vivox.com -Mijia Cloud -dlg.io.mi.com -marscdn.c2c.wechat.com diff --git a/small/luci-app-passwall2/root/usr/share/passwall2/haproxy.lua b/small/luci-app-passwall2/root/usr/share/passwall2/haproxy.lua deleted file mode 100644 index 2ab58656bc..0000000000 --- a/small/luci-app-passwall2/root/usr/share/passwall2/haproxy.lua +++ /dev/null @@ -1,238 +0,0 @@ -#!/usr/bin/lua - -local api = require ("luci.passwall2.api") -local appname = "passwall2" -local fs = api.fs -local jsonc = api.jsonc -local uci = api.uci -local sys = api.sys - -local log = api.log - -function get_ip_port_from(str) - local result_port = sys.exec("echo -n " .. str .. " | sed -n 's/^.*[:#]\\([0-9]*\\)$/\\1/p'") - local result_ip = sys.exec(string.format("__host=%s;__varport=%s;", str, result_port) .. "echo -n ${__host%%${__varport:+[:#]${__varport}*}}") - return result_ip, result_port -end - -local new_port -local function get_new_port() - local cmd_format = ". /usr/share/passwall2/utils.sh ; echo -n $(get_new_port %s tcp)" - local set_port = 0 - if new_port and tonumber(new_port) then - set_port = tonumber(new_port) + 1 - end - new_port = tonumber(sys.exec(string.format(cmd_format, set_port == 0 and "auto" or set_port))) - return new_port -end - -local var = api.get_args(arg) -local haproxy_path = var["-path"] -local haproxy_conf = var["-conf"] -local haproxy_dns = var["-dns"] or "119.29.29.29:53,223.5.5.5:53" - -local cpu_thread = sys.exec('echo -n $(cat /proc/cpuinfo | grep "processor" | wc -l)') or "1" -local health_check_type = uci:get(appname, "@global_haproxy[0]", "health_check_type") or "tcp" -local health_check_inter = uci:get(appname, "@global_haproxy[0]", "health_check_inter") or "10" -local console_port = uci:get(appname, "@global_haproxy[0]", "console_port") -local bind_local = uci:get(appname, "@global_haproxy[0]", "bind_local") or "0" -local bind_address = "0.0.0.0" -if bind_local == "1" then bind_address = "127.0.0.1" end - -log(0, "HAProxy: ") -log(1, api.i18n.translatef("Console Port: %s", console_port)) -fs.mkdir(haproxy_path) -local haproxy_file = haproxy_path .. "/" .. haproxy_conf - -local f_out = io.open(haproxy_file, "a") - -local haproxy_config = [[ -global - daemon - log 127.0.0.1 local2 - maxconn 60000 - stats socket {{path}}/haproxy.sock - nbthread {{nbthread}} - external-check - insecure-fork-wanted - -defaults - mode tcp - log global - option tcplog - option dontlognull - option http-server-close - #option forwardfor except 127.0.0.0/8 - option redispatch - retries 2 - timeout http-request 10s - timeout queue 1m - timeout connect 10s - timeout client 1m - timeout server 1m - timeout http-keep-alive 10s - timeout check 10s - maxconn 3000 - -resolvers mydns - resolve_retries 1 - timeout resolve 5s - hold valid 600s -{{dns}} -]] - -haproxy_config = haproxy_config:gsub("{{path}}", haproxy_path) -haproxy_config = haproxy_config:gsub("{{nbthread}}", cpu_thread) - -local mydns = "" -local index = 0 -string.gsub(haproxy_dns, '[^' .. "," .. ']+', function(w) - index = index + 1 - local s = w:gsub("#", ":") - if not s:find(":") then - s = s .. ":53" - end - mydns = mydns .. (index > 1 and "\n" or "") .. " " .. string.format("nameserver dns%s %s", index, s) -end) -haproxy_config = haproxy_config:gsub("{{dns}}", mydns) - -f_out:write(haproxy_config) - -local listens = {} - -uci:foreach(appname, "haproxy_config", function(t) - if t.enabled == "1" then - local server_remark - local server_address - local server_port - local lbss = t.lbss - local listen_port = tonumber(t.haproxy_port) or 0 - local server_node = uci:get_all(appname, lbss) - if server_node and server_node.address and server_node.port then - server_remark = server_node.address .. ":" .. server_node.port - server_address = server_node.address - server_port = server_node.port - t.origin_address = server_address - t.origin_port = server_port - if health_check_type == "passwall_logic" then - if server_node.type ~= "Socks" then - local relay_port = server_node.port - new_port = get_new_port() - local config_file = string.format("haproxy_%s_%s.json", t[".name"], new_port) - sys.call(string.format('/usr/share/%s/app.sh run_socks "%s"> /dev/null', - appname, - string.format("flag=%s node=%s bind=%s socks_port=%s config_file=%s", - new_port, --flag - server_node[".name"], --node - "127.0.0.1", --bind - new_port, --socks port - config_file --config file - ) - ) - ) - server_address = "127.0.0.1" - server_port = new_port - end - end - else - server_address, server_port = get_ip_port_from(lbss) - server_remark = server_address .. ":" .. server_port - t.origin_address = server_address - t.origin_port = server_port - end - if server_address and server_port and listen_port > 0 then - if not listens[listen_port] then - listens[listen_port] = {} - end - t.server_remark = server_remark - t.server_address = server_address - t.server_port = server_port - table.insert(listens[listen_port], t) - else - log(1, api.i18n.translate("Discard one obviously invalid node.")) - end - end -end) - -local sortTable = {} -for i in pairs(listens) do - if i ~= nil then - table.insert(sortTable, i) - end -end -table.sort(sortTable, function(a,b) return (a < b) end) - -for i, port in pairs(sortTable) do - log(1, api.i18n.translatef("Entrance %s:%s", bind_address, port)) - - f_out:write("\n" .. string.format([[ -listen %s - bind %s:%s - mode tcp - balance roundrobin -]], port, bind_address, port)) - - if health_check_type == "passwall_logic" then - f_out:write(string.format([[ - option external-check - external-check command "/usr/share/passwall2/haproxy_check.sh" -]], port, port)) - end - - local count_M, count_B = 1, 1 - for i, o in ipairs(listens[port]) do - local remark = o.server_remark or "" - -- To prevent duplicate names from causing the program to fail to run. - if tostring(o.backup) ~= "1" then - remark = "M" .. count_M .. "-" .. remark - count_M = count_M + 1 - else - remark = "B" .. count_B .. "-" .. remark - count_B = count_B + 1 - end - local server = o.server_address .. ":" .. o.server_port - local server_conf = "server {{remark}} {{server}} weight {{weight}} {{resolvers}} check inter {{inter}} rise 1 fall 3 {{backup}}" - server_conf = server_conf:gsub("{{remark}}", remark) - server_conf = server_conf:gsub("{{server}}", server) - server_conf = server_conf:gsub("{{weight}}", o.lbweight) - local resolvers = "resolvers mydns" - if api.is_ip(o.server_address) then - resolvers = "" - end - server_conf = server_conf:gsub("{{resolvers}}", resolvers) - server_conf = server_conf:gsub("{{inter}}", tonumber(health_check_inter) .. "s") - server_conf = server_conf:gsub("{{backup}}", tostring(o.backup) == "1" and "backup" or "") - - f_out:write(" " .. server_conf .. "\n") - - if o.export ~= "0" then - sys.call(string.format(". /usr/share/passwall2/utils.sh ; add_ip2route %s %s", o.origin_address, o.export)) - end - - log(2, string.format(api.i18n.translatef("Node: %s:%s, Weight: %s", o.origin_address, o.origin_port, o.lbweight))) - end -end - --- Console config -local console_user = uci:get(appname, "@global_haproxy[0]", "console_user") -local console_password = uci:get(appname, "@global_haproxy[0]", "console_password") -local str = [[ -listen console - bind 0.0.0.0:%s - mode http - stats refresh 30s - stats uri / - stats admin if TRUE - %s -]] -f_out:write("\n" .. string.format(str, console_port, (console_user and console_user ~= "" and console_password and console_password ~= "") and "stats auth " .. console_user .. ":" .. console_password or "")) - -f_out:close() - --- Built-in health check URL -if health_check_type == "passwall_logic" then - local probeUrl = uci:get(appname, "@global_haproxy[0]", "health_probe_url") or "https://www.google.com/generate_204" - local f_url = io.open(haproxy_path .. "/Probe_URL", "w") - f_url:write(probeUrl) - f_url:close() -end diff --git a/small/luci-app-passwall2/root/usr/share/passwall2/haproxy_check.sh b/small/luci-app-passwall2/root/usr/share/passwall2/haproxy_check.sh deleted file mode 100755 index 0bf0013eb8..0000000000 --- a/small/luci-app-passwall2/root/usr/share/passwall2/haproxy_check.sh +++ /dev/null @@ -1,36 +0,0 @@ -#!/bin/sh - -export PATH=/usr/sbin:/usr/bin:/sbin:/bin:/root/bin -CONFIG=passwall2 - -listen_address=$1 -listen_port=$2 -server_address=$3 -server_port=$4 - -pgrep -af "${CONFIG}/" | awk '/app\.sh.*(start|stop)/ || /nftables\.sh/ || /iptables\.sh/ { found = 1 } END { exit !found }' && { - exit 0 -} - -probe_file="/tmp/etc/${CONFIG}/haproxy/Probe_URL" -probeUrl="https://www.google.com/generate_204" -if [ -f "$probe_file" ]; then - firstLine=$(head -n 1 "$probe_file" | tr -d ' \t\n') - [ -n "$firstLine" ] && probeUrl="$firstLine" -fi - -extra_params="-x socks5h://${server_address}:${server_port}" -if /usr/bin/curl --help all | grep -q "\-\-retry-all-errors"; then - extra_params="${extra_params} --retry-all-errors" -fi - -status=$(/usr/bin/curl -I -o /dev/null -skL ${extra_params} --connect-timeout 3 --retry 2 --max-time 10 -w "%{http_code}" "${probeUrl}") - -case "$status" in - 200|204) - exit 0 - ;; - *) - exit 1 - ;; -esac diff --git a/small/luci-app-passwall2/root/usr/share/passwall2/helper_dnsmasq.lua b/small/luci-app-passwall2/root/usr/share/passwall2/helper_dnsmasq.lua deleted file mode 100644 index a8247e9de1..0000000000 --- a/small/luci-app-passwall2/root/usr/share/passwall2/helper_dnsmasq.lua +++ /dev/null @@ -1,365 +0,0 @@ -local api = require "luci.passwall2.api" -local appname = "passwall2" -local uci = api.uci -local sys = api.sys -local fs = api.fs -local datatypes = api.datatypes -local TMP = {} - -local function tinsert(table_name, val) - if table_name and type(table_name) == "table" then - if not TMP[table_name] then - TMP[table_name] = {} - end - if TMP[table_name][val] then - return false - end - table.insert(table_name, val) - TMP[table_name][val] = true - return true - end - return false -end - -local function backup_servers() - local DNSMASQ_DNS = uci:get("dhcp", "@dnsmasq[0]", "server") - if DNSMASQ_DNS and #DNSMASQ_DNS > 0 then - uci:set(appname, "@global[0]", "dnsmasq_servers", DNSMASQ_DNS) - api.uci_save(uci, appname, true) - end -end - -local function restore_servers() - local dns_table = {} - local DNSMASQ_DNS = uci:get("dhcp", "@dnsmasq[0]", "server") - if DNSMASQ_DNS and #DNSMASQ_DNS > 0 then - for k, v in ipairs(DNSMASQ_DNS) do - tinsert(dns_table, v) - end - end - local OLD_SERVER = uci:get(appname, "@global[0]", "dnsmasq_servers") - if OLD_SERVER and #OLD_SERVER > 0 then - for k, v in ipairs(OLD_SERVER) do - tinsert(dns_table, v) - end - uci:delete(appname, "@global[0]", "dnsmasq_servers") - api.uci_save(uci, appname, true) - end - if dns_table and #dns_table > 0 then - uci:set_list("dhcp", "@dnsmasq[0]", "server", dns_table) - api.uci_save(uci, "dhcp", true) - end -end - -function stretch() - local dnsmasq_server = uci:get("dhcp", "@dnsmasq[0]", "server") - local dnsmasq_noresolv = uci:get("dhcp", "@dnsmasq[0]", "noresolv") - local _flag - if dnsmasq_server and #dnsmasq_server > 0 then - for k, v in ipairs(dnsmasq_server) do - if not v:find("/") then - _flag = true - end - end - end - if not _flag and dnsmasq_noresolv == "1" then - uci:delete("dhcp", "@dnsmasq[0]", "noresolv") - local RESOLVFILE = "/tmp/resolv.conf.d/resolv.conf.auto" - local file = io.open(RESOLVFILE, "r") - if not file then - RESOLVFILE = "/tmp/resolv.conf.auto" - else - local size = file:seek("end") - file:close() - if size == 0 then - RESOLVFILE = "/tmp/resolv.conf.auto" - end - end - uci:set("dhcp", "@dnsmasq[0]", "resolvfile", RESOLVFILE) - api.uci_save(uci, "dhcp", true) - end -end - -function restart(var) - local LOG = var["-LOG"] - sys.call("/etc/init.d/dnsmasq restart >/dev/null 2>&1") - if LOG == "1" then - api.log(0, api.i18n.translate("Restart dnsmasq service.")) - end -end - -function logic_restart(var) - local LOG = var["-LOG"] - local DEFAULT_DNS = api.get_cache_var("DEFAULT_DNS") - if DEFAULT_DNS then - backup_servers() - --sys.call("sed -i '/list server/d' /etc/config/dhcp >/dev/null 2>&1") - local dns_table = {} - local dnsmasq_server = uci:get("dhcp", "@dnsmasq[0]", "server") - if dnsmasq_server and #dnsmasq_server > 0 then - for k, v in ipairs(dnsmasq_server) do - if v:find("/") then - tinsert(dns_table, v) - end - end - uci:set_list("dhcp", "@dnsmasq[0]", "server", dns_table) - api.uci_save(uci, "dhcp", true) - end - sys.call("/etc/init.d/dnsmasq restart >/dev/null 2>&1") - restore_servers() - else - sys.call("/etc/init.d/dnsmasq restart >/dev/null 2>&1") - end - if LOG == "1" then - api.log(0, api.i18n.translate("Restart dnsmasq service.")) - end -end - -function copy_instance(var) - local LISTEN_PORT = var["-LISTEN_PORT"] - local TMP_DNSMASQ_PATH = var["-TMP_DNSMASQ_PATH"] - local conf_lines = {} - local DEFAULT_DNSMASQ_CFGID = sys.exec("echo -n $(uci -q show dhcp.@dnsmasq[0] | awk 'NR==1 {split($0, conf, /[.=]/); print conf[2]}')") - for line in io.lines("/tmp/etc/dnsmasq.conf." .. DEFAULT_DNSMASQ_CFGID) do - local filter - if line:find("passwall2") then filter = true end - if line:find("ubus") then filter = true end - if line:find("dhcp") then filter = true end - if line:find("server=") == 1 then filter = true end - if line:find("port=") == 1 then filter = true end - if line:find("conf%-dir=") == 1 then - filter = true - if TMP_DNSMASQ_PATH then - local tmp_path = line:sub(1 + #"conf-dir=") - sys.call(string.format("cp -r %s/* %s/ 2>/dev/null", tmp_path, TMP_DNSMASQ_PATH)) - end - end - if line:find("address=") == 1 or (line:find("server=") == 1 and line:find("/")) then filter = nil end - if not filter then - tinsert(conf_lines, line) - end - end - tinsert(conf_lines, "port=" .. LISTEN_PORT) - if TMP_DNSMASQ_PATH then - sys.call("rm -rf " .. TMP_DNSMASQ_PATH .. "/*passwall2*") - end - if var["-return"] == "1" then - return conf_lines - end - if #conf_lines > 0 then - local DNSMASQ_CONF = var["-DNSMASQ_CONF"] - local conf_out = io.open(DNSMASQ_CONF, "a") - conf_out:write(table.concat(conf_lines, "\n")) - conf_out:write("\n") - conf_out:close() - end -end - -function add_rule(var) - local FLAG = var["-FLAG"] - local TMP_DNSMASQ_PATH = var["-TMP_DNSMASQ_PATH"] - local DNSMASQ_CONF_FILE = var["-DNSMASQ_CONF_FILE"] - local LISTEN_PORT = var["-LISTEN_PORT"] - local DEFAULT_DNS = var["-DEFAULT_DNS"] - local LOCAL_DNS = var["-LOCAL_DNS"] - local TUN_DNS = var["-TUN_DNS"] - local NO_LOGIC_LOG = var["-NO_LOGIC_LOG"] - local NFTFLAG = var["-NFTFLAG"] - local CACHE_PATH = api.CACHE_PATH - local CACHE_FLAG = "dnsmasq_" .. FLAG - local CACHE_DNS_PATH = CACHE_PATH .. "/" .. CACHE_FLAG - local CACHE_TEXT_FILE = CACHE_DNS_PATH .. ".txt" - - local list1 = {} - local excluded_domain = {} - local excluded_domain_str = "!" - - local function check_dns(domain, dns) - if domain == "" or domain:find("#") then - return false - end - if not dns then - return - end - for k,v in ipairs(list1[domain].dns) do - if dns == v then - return true - end - end - return false - end - - local function check_ipset(domain, ipset) - if domain == "" or domain:find("#") then - return false - end - if not ipset then - return - end - for k,v in ipairs(list1[domain].ipsets) do - if ipset == v then - return true - end - end - return false - end - - local function set_domain_dns(domain, dns) - if domain == "" or domain:find("#") then - return - end - if not dns then - return - end - if not list1[domain] then - list1[domain] = { - dns = {}, - ipsets = {} - } - end - for line in string.gmatch(dns, '[^' .. "," .. ']+') do - if not check_dns(domain, line) then - table.insert(list1[domain].dns, line) - end - end - end - - local function set_domain_ipset(domain, ipset) - if domain == "" or domain:find("#") then - return - end - if not ipset then - return - end - if not list1[domain] then - list1[domain] = { - dns = {}, - ipsets = {} - } - end - for line in string.gmatch(ipset, '[^' .. "," .. ']+') do - if not check_ipset(domain, line) then - table.insert(list1[domain].ipsets, line) - end - end - end - - local cache_text = "" - local nodes_address_md5 = sys.exec("echo -n $(uci show passwall2 | grep '\\.address') | md5sum") - local new_text = TMP_DNSMASQ_PATH .. DNSMASQ_CONF_FILE .. DEFAULT_DNS .. LOCAL_DNS .. TUN_DNS .. nodes_address_md5 .. NFTFLAG - if fs.access(CACHE_TEXT_FILE) then - for line in io.lines(CACHE_TEXT_FILE) do - cache_text = line - end - end - - if cache_text ~= new_text then - api.remove(CACHE_DNS_PATH .. "*") - end - - local dnsmasq_default_dns = TUN_DNS - - local setflag_4= (NFTFLAG == "1") and "4#inet#passwall2#" or "" - local setflag_6= (NFTFLAG == "1") and "6#inet#passwall2#" or "" - - if not fs.access(CACHE_DNS_PATH) then - fs.mkdir(CACHE_DNS_PATH) - - local fwd_dns - - -- Always use domestic DNS to resolve node domain names - if true then - fwd_dns = LOCAL_DNS - uci:foreach(appname, "nodes", function(t) - local function process_address(address) - if address == "engage.cloudflareclient.com" then return end - if datatypes.hostname(address) then - set_domain_dns(address, fwd_dns) - set_domain_ipset(address, setflag_4 .. "passwall2_vps," .. setflag_6 .. "passwall2_vps6") - end - end - process_address(t.address) - process_address(t.download_address) - end) - end - - if list1 and next(list1) then - local server_out = io.open(CACHE_DNS_PATH .. "/001-server.conf", "a") - local ipset_out = io.open(CACHE_DNS_PATH .. "/ipset.conf", "a") - local set_name = "ipset" - if NFTFLAG == "1" then - set_name = "nftset" - end - for key, value in pairs(list1) do - if value.dns and #value.dns > 0 then - for i, dns in ipairs(value.dns) do - server_out:write(string.format("server=/.%s/%s", key, dns) .. "\n") - end - end - if value.ipsets and #value.ipsets > 0 then - local ipsets_str = "" - for i, ipset in ipairs(value.ipsets) do - ipsets_str = ipsets_str .. ipset .. "," - end - ipsets_str = ipsets_str:sub(1, #ipsets_str - 1) - ipset_out:write(string.format("%s=/.%s/%s", set_name, key, ipsets_str) .. "\n") - end - end - server_out:close() - ipset_out:close() - end - - local f_out = io.open(CACHE_TEXT_FILE, "a") - f_out:write(new_text) - f_out:close() - end - - api.remove(TMP_DNSMASQ_PATH) - fs.symlink(CACHE_DNS_PATH, TMP_DNSMASQ_PATH) - - if DNSMASQ_CONF_FILE ~= "nil" then - local conf_lines = {} - if LISTEN_PORT then - --Copy dnsmasq instance - conf_lines = copy_instance({["-LISTEN_PORT"] = LISTEN_PORT, ["-TMP_DNSMASQ_PATH"] = TMP_DNSMASQ_PATH, ["-return"] = "1"}) - --dhcp.leases to hostsMore actions - local hosts = "/tmp/etc/" .. appname .. "_tmp/dhcp-hosts" - sys.call("touch " .. hosts) - tinsert(conf_lines, "addn-hosts=" .. hosts) - else - --Modify the default dnsmasq service - end - tinsert(conf_lines, string.format("conf-dir=%s", TMP_DNSMASQ_PATH)) - if dnsmasq_default_dns then - for s in string.gmatch(dnsmasq_default_dns, '[^' .. "," .. ']+') do - tinsert(conf_lines, string.format("server=%s", s)) - end - tinsert(conf_lines, "all-servers") - tinsert(conf_lines, "no-poll") - tinsert(conf_lines, "no-resolv") - - if FLAG == "default" then - api.set_cache_var("DEFAULT_DNS", DEFAULT_DNS) - end - end - if #conf_lines > 0 then - local conf_out = io.open(DNSMASQ_CONF_FILE, "a") - conf_out:write(table.concat(conf_lines, "\n")) - conf_out:write("\n") - conf_out:close() - end - end -end - -_G.stretch = stretch -_G.restart = restart -_G.logic_restart = logic_restart -_G.copy_instance = copy_instance -_G.add_rule = add_rule - -if arg[1] then - local func =_G[arg[1]] - if func then - func(api.get_function_args(arg)) - end -end diff --git a/small/luci-app-passwall2/root/usr/share/passwall2/i18n.lua b/small/luci-app-passwall2/root/usr/share/passwall2/i18n.lua deleted file mode 100644 index f2dc933218..0000000000 --- a/small/luci-app-passwall2/root/usr/share/passwall2/i18n.lua +++ /dev/null @@ -1,6 +0,0 @@ -if #arg > 0 then - local api = require "luci.passwall2.api" - local str = arg[1] - table.remove(arg, 1) - print(api.i18n.translatef(str, unpack(arg))) -end diff --git a/small/luci-app-passwall2/root/usr/share/passwall2/iptables.sh b/small/luci-app-passwall2/root/usr/share/passwall2/iptables.sh deleted file mode 100755 index 44a8e13884..0000000000 --- a/small/luci-app-passwall2/root/usr/share/passwall2/iptables.sh +++ /dev/null @@ -1,1159 +0,0 @@ -#!/bin/sh - -DIR="$(cd "$(dirname "$0")" && pwd)" -MY_PATH=$DIR/iptables.sh -IPSET_LOCAL="passwall2_local" -IPSET_WAN="passwall2_wan" -IPSET_LAN="passwall2_lan" -IPSET_VPS="passwall2_vps" - -IPSET_LOCAL6="passwall2_local6" -IPSET_WAN6="passwall2_wan6" -IPSET_LAN6="passwall2_lan6" -IPSET_VPS6="passwall2_vps6" - -. /lib/functions/network.sh - -ipt=$(command -v iptables-legacy || command -v iptables) -ip6t=$(command -v ip6tables-legacy || command -v ip6tables) - -ipt_n="$ipt -t nat -w" -ipt_m="$ipt -t mangle -w" -ip6t_n="$ip6t -t nat -w" -ip6t_m="$ip6t -t mangle -w" -[ -z "$ip6t" -o -z "$(lsmod | grep 'ip6table_nat')" ] && ip6t_n="eval #$ip6t_n" -[ -z "$ip6t" -o -z "$(lsmod | grep 'ip6table_mangle')" ] && ip6t_m="eval #$ip6t_m" -FWI=$(uci -q get firewall.passwall2.path 2>/dev/null) -FAKE_IP="198.18.0.0/16" -FAKE_IP_6="fc00::/18" - -factor() { - if [ -z "$1" ] || [ -z "$2" ]; then - echo "" - elif [ "$1" == "1:65535" ]; then - echo "" - else - echo "$2 $1" - fi -} - -dst() { - echo "-m set $2 --match-set $1 dst" -} - -comment() { - local name=$(echo $1 | sed 's/ /_/g') - echo "-m comment --comment '$name'" -} - -# Resolves invalid IP addresses for ports exceeding 15; it supports single ports and port ranges. -add_port_rules() { - local ipt_cmd="$1" - local port_list="$2" - local target="$3" - echo "$port_list" | grep -vq '[0-9]' && return - port_list=$(echo "$port_list" | tr -d ' ' | sed 's/-/:/g' | tr ',' '\n' | awk '!a[$0]++' | grep -v '^$') - [ -z "$port_list" ] && return - if echo "$port_list" | grep -q '^1:65535$'; then - eval "$ipt_cmd $target" - return - fi - local multiport_ports="" - local range_ports="" - local count=0 - local port - for port in $port_list; do - if echo "$port" | grep -q ':'; then - range_ports="$range_ports $port" - else - multiport_ports="$multiport_ports,$port" - count=$((count + 1)) - if [ "$count" -eq 15 ]; then - eval "$ipt_cmd -m multiport --dport ${multiport_ports#,} $target" - multiport_ports="" - count=0 - fi - fi - done - if [ -n "$multiport_ports" ]; then - eval "$ipt_cmd -m multiport --dport ${multiport_ports#,} $target" - fi - for port in $range_ports; do - eval "$ipt_cmd --dport $port $target" - done -} - -destroy_ipset() { - for i in "$@"; do - ipset -q -F $i - ipset -q -X $i - done -} - -insert_rule_before() { - [ $# -ge 3 ] || { - return 1 - } - local ipt_tmp="${1}"; shift - local chain="${1}"; shift - local keyword="${1}"; shift - local rule="${1}"; shift - local default_index="${1}"; shift - default_index=${default_index:-0} - local _index=$($ipt_tmp -n -L $chain --line-numbers 2>/dev/null | grep "$keyword" | head -n 1 | awk '{print $1}') - if [ -z "${_index}" ] && [ "${default_index}" = "0" ]; then - $ipt_tmp -A $chain $rule - else - if [ -z "${_index}" ]; then - _index=${default_index} - fi - $ipt_tmp -I $chain $_index $rule - fi -} - -insert_rule_after() { - [ $# -ge 3 ] || { - return 1 - } - local ipt_tmp="${1}"; shift - local chain="${1}"; shift - local keyword="${1}"; shift - local rule="${1}"; shift - local default_index="${1}"; shift - default_index=${default_index:-0} - local _index=$($ipt_tmp -n -L $chain --line-numbers 2>/dev/null | grep "$keyword" | awk 'END {print}' | awk '{print $1}') - if [ -z "${_index}" ] && [ "${default_index}" = "0" ]; then - $ipt_tmp -A $chain $rule - else - if [ -n "${_index}" ]; then - _index=$((_index + 1)) - else - _index=${default_index} - fi - $ipt_tmp -I $chain $_index $rule - fi -} - -RULE_LAST_INDEX() { - [ $# -ge 3 ] || { - log_i18n 1 "Incorrect index listing method (%s), execution terminated!" "iptables" - return 1 - } - local ipt_tmp="${1}"; shift - local chain="${1}"; shift - local list="${1}"; shift - local default="${1:-0}"; shift - local _index=$($ipt_tmp -n -L $chain --line-numbers 2>/dev/null | grep "$list" | head -n 1 | awk '{print $1}') - echo "${_index:-${default}}" -} - -REDIRECT() { - local s="-j REDIRECT" - [ -n "$1" ] && { - local s="$s --to-ports $1" - [ "$2" == "MARK" ] && s="-j MARK --set-mark $1" - [ "$2" == "TPROXY" ] && { - local mark="-m mark --mark 1" - s="${mark} -j TPROXY --tproxy-mark 0x1/0x1 --on-port $1" - } - } - echo $s -} - -get_redirect_ipt() { - echo "$(REDIRECT $2 $3)" -} - -get_redirect_ip6t() { - echo "$(REDIRECT $2 $3)" -} - -gen_lanlist() { - cat <<-EOF - 0.0.0.0/8 - 10.0.0.0/8 - 100.64.0.0/10 - 127.0.0.0/8 - 169.254.0.0/16 - 172.16.0.0/12 - 192.168.0.0/16 - 224.0.0.0/4 - 240.0.0.0/4 - EOF -} - -gen_lanlist_6() { - cat <<-EOF - ::/128 - ::1/128 - ::ffff:0:0/96 - ::ffff:0:0:0/96 - 64:ff9b::/96 - 100::/64 - 2001::/32 - 2001:20::/28 - 2001:db8::/32 - 2002::/16 - fc00::/7 - fe80::/10 - ff00::/8 - EOF -} - -get_wan_ips() { - local family="$1" - local NET_ADDR - local iface - local INTERFACES=$(ubus call network.interface dump | jsonfilter -e '@.interface[@.route[0]].interface') - for iface in $INTERFACES; do - local addr - if [ "$family" = "ip6" ]; then - network_get_ipaddr6 addr "$iface" - case "$addr" in - ""|fe80*) continue ;; - esac - else - network_get_ipaddr addr "$iface" - case "$addr" in - ""|"0.0.0.0") continue ;; - esac - fi - - case " $NET_ADDR " in - *" $addr "*) ;; - *) NET_ADDR="${NET_ADDR:+$NET_ADDR }$addr" ;; - esac - done - echo "$NET_ADDR" -} - -gen_shunt_list() { - local node=${1} - local shunt_list4_var_name=${2} - local shunt_list6_var_name=${3} - local _write_ipset_direct=${4} - local _set_name4=${5} - local _set_name6=${6} - [ -z "$node" ] && continue - unset ${shunt_list4_var_name} - unset ${shunt_list6_var_name} - local _SHUNT_LIST4 _SHUNT_LIST6 - local USE_SHUNT_NODE=0 - NODE_PROTOCOL=$(config_n_get $node protocol) - [ "$NODE_PROTOCOL" = "_shunt" ] && USE_SHUNT_NODE=1 - [ "$USE_SHUNT_NODE" = "1" ] && { - local enable_geoview=$(config_t_get global_rules enable_geoview 0) - [ -z "$(first_type geoview)" ] && enable_geoview=0 - local preloading=0 - preloading=$enable_geoview - [ "${preloading}" = "1" ] && { - local default_node=$(config_n_get ${node} default_node _direct) - local default_outbound="redirect" - [ "$default_node" = "_direct" ] && default_outbound="direct" - local shunt_ids=$(uci show $CONFIG | grep "=shunt_rules" | awk -F '.' '{print $2}' | awk -F '=' '{print $1}') - for shunt_id in $shunt_ids; do - local shunt_node=$(config_n_get ${node} "${shunt_id}") - [ -n "$shunt_node" ] && { - local ipset_v4="passwall2_${node}_${shunt_id}" - local ipset_v6="passwall2_${node}_${shunt_id}6" - ipset -! create $ipset_v4 nethash maxelem 1048576 - ipset -! create $ipset_v6 nethash family inet6 maxelem 1048576 - local outbound="redirect" - [ "$shunt_node" = "_direct" ] && outbound="direct" - [ "$shunt_node" = "_default" ] && outbound="${default_outbound}" - _SHUNT_LIST4="${_SHUNT_LIST4} ${ipset_v4}:${outbound}" - _SHUNT_LIST6="${_SHUNT_LIST6} ${ipset_v6}:${outbound}" - - config_n_get $shunt_id ip_list | tr -s "\r\n" "\n" | sed -e "/^$/d" | grep -E "(\.((2(5[0-5]|[0-4][0-9]))|[0-1]?[0-9]{1,2})){3}" | sed -e "s/^/add $ipset_v4 &/g" | awk '{print $0} END{print "COMMIT"}' | ipset -! -R - config_n_get $shunt_id ip_list | tr -s "\r\n" "\n" | sed -e "/^$/d" | grep -E "([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}" | sed -e "s/^/add $ipset_v6 &/g" | awk '{print $0} END{print "COMMIT"}' | ipset -! -R - [ "${enable_geoview}" = "1" ] && { - local _geoip_code=$(config_n_get $shunt_id ip_list | tr -s "\r\n" "\n" | sed -e "/^$/d" | grep -E "^geoip:" | grep -v "^geoip:private" | sed -E 's/^geoip:(.*)/\1/' | sed ':a;N;$!ba;s/\n/,/g') - [ -n "$_geoip_code" ] && { - get_geoip $_geoip_code ipv4 | grep -E "(\.((2(5[0-5]|[0-4][0-9]))|[0-1]?[0-9]{1,2})){3}" | sed -e "s/^/add $ipset_v4 &/g" | awk '{print $0} END{print "COMMIT"}' | ipset -! -R - get_geoip $_geoip_code ipv6 | grep -E "([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}" | sed -e "s/^/add $ipset_v6 &/g" | awk '{print $0} END{print "COMMIT"}' | ipset -! -R - log 1 "$(i18n "parse the traffic splitting rules[%s]-[geoip:%s] add to %s to complete." "${shunt_id}" "${_geoip_code}" "IPSET")" - } - } - } - done - } - [ "${_write_ipset_direct}" = "1" ] && { - _SHUNT_LIST4="${_SHUNT_LIST4} ${_set_name4}:direct" - _SHUNT_LIST6="${_SHUNT_LIST6} ${_set_name6}:direct" - } - [ "${preloading}" = "1" ] && [ -n "$default_node" ] && { - local ipset_v4="passwall2_${node}_default" - local ipset_v6="passwall2_${node}_default6" - ipset -! create $ipset_v4 nethash maxelem 1048576 - ipset -! create $ipset_v6 nethash family inet6 maxelem 1048576 - _SHUNT_LIST4="${_SHUNT_LIST4} ${ipset_v4}:${default_outbound}" - _SHUNT_LIST6="${_SHUNT_LIST6} ${ipset_v6}:${default_outbound}" - } - } - [ -n "${_SHUNT_LIST4}" ] && eval ${shunt_list4_var_name}=\"${_SHUNT_LIST4}\" - [ -n "${_SHUNT_LIST6}" ] && eval ${shunt_list6_var_name}=\"${_SHUNT_LIST6}\" -} - -add_shunt_t_rule() { - local shunt_args=${1} - local t_args=${2} - local t_jump_args=${3} - local t_ports_args=${4} - [ -n "${shunt_args}" ] && { - for j in ${shunt_args}; do - local _set_name=$(echo ${j} | awk -F ':' '{print $1}') - local _outbound=$(echo ${j} | awk -F ':' '{print $2}') - [ -n "${_set_name}" ] && [ -n "${_outbound}" ] && { - local _t_arg="${t_jump_args}" - [ "${_outbound}" = "direct" ] && _t_arg="-j RETURN" - if [ -z "${t_ports_args}" ] || [ "${t_ports_args}" == "1:65535" ]; then - ${t_args} $(dst ${_set_name}) ${_t_arg} - else - add_port_rules "${t_args} $(dst ${_set_name})" "${t_ports_args}" "${_t_arg}" - fi - } - done - } -} - -load_acl() { - log_i18n 1 "Access Control:" - [ "$ENABLED_ACLS" == 1 ] && { - acl_app - for sid in $(ls -F ${TMP_ACL_PATH} | grep '/$' | awk -F '/' '{print $1}' | grep -v 'default'); do - eval $(uci -q show "${CONFIG}.${sid}" | cut -d'.' -sf 3-) - - tcp_no_redir_ports=${tcp_no_redir_ports:-default} - udp_no_redir_ports=${udp_no_redir_ports:-default} - tcp_proxy_mode="global" - udp_proxy_mode="global" - tcp_redir_ports=${tcp_redir_ports:-default} - udp_redir_ports=${udp_redir_ports:-default} - node=${node:-default} - [ "$tcp_no_redir_ports" = "default" ] && tcp_no_redir_ports=$TCP_NO_REDIR_PORTS - [ "$udp_no_redir_ports" = "default" ] && udp_no_redir_ports=$UDP_NO_REDIR_PORTS - [ "$tcp_redir_ports" = "default" ] && tcp_redir_ports=$TCP_REDIR_PORTS - [ "$udp_redir_ports" = "default" ] && udp_redir_ports=$UDP_REDIR_PORTS - - [ -n "$(get_cache_var "ACL_${sid}_node")" ] && node=$(get_cache_var "ACL_${sid}_node") - [ -n "$(get_cache_var "ACL_${sid}_redir_port")" ] && redir_port=$(get_cache_var "ACL_${sid}_redir_port") - [ -n "$(get_cache_var "ACL_${sid}_dns_port")" ] && dns_redirect_port=$(get_cache_var "ACL_${sid}_dns_port") - [ -n "$node" ] && node_remark=$(config_n_get $node remarks) - - write_ipset_direct=${write_ipset_direct:-1} - [ "${write_ipset_direct}" = "1" ] && { - if [ -n "$(get_cache_var "ACL_${sid}_default")" ]; then - local ipset_white=${ipset_global_white} - local ipset_white6=${ipset_global_white6} - shunt_list4=${SHUNT_LIST4} - shunt_list6=${SHUNT_LIST6} - else - local ipset_white="passwall2_${sid}_white" - local ipset_white6="passwall2_${sid}_white6" - ipset -! create $ipset_white nethash maxelem 1048576 - ipset -! create $ipset_white6 nethash family inet6 maxelem 1048576 - - # Shunt rules IP list (import when use shunt node) - gen_shunt_list "${node}" shunt_list4 shunt_list6 ${write_ipset_direct} ${ipset_white} ${ipset_white6} - fi - } - - _acl_list=${TMP_ACL_PATH}/${sid}/source_list - - for i in $(cat $_acl_list); do - local _ipt_source _ipv4 - local msg - if [ -n "${interface}" ]; then - . /lib/functions/network.sh - local gateway device - network_get_gateway gateway "${interface}" - network_get_device device "${interface}" - [ -z "${device}" ] && device="${interface}" - _ipt_source="-i ${device} " - msg=$(i18n "Source iface [%s]," "${device}") - else - msg=$(i18n "Source iface [%s]," $(i18n "All")) - fi - if [ -n "$(echo ${i} | grep '^iprange:')" ]; then - _iprange=$(echo ${i} | sed 's#iprange:##g') - _ipt_source=$(factor ${_iprange} "${_ipt_source}-m iprange --src-range") - msg="${msg}$(i18n "IP range [%s]," "${_iprange}")" - _ipv4="1" - unset _iprange - elif [ -n "$(echo ${i} | grep '^ipset:')" ]; then - _ipset=$(echo ${i} | sed 's#ipset:##g') - msg="${msg}IPset$(i18n "[%s]," "${_ipset}")" - ipset -q list ${_ipset} >/dev/null - if [ $? -eq 0 ]; then - _ipt_source="${_ipt_source}-m set --match-set ${_ipset} src" - unset _ipset - else - log 2 "$(i18n "[%s]," "${remarks}")${msg}$(i18n "Does not exist, ignore.")" - unset _ipset - continue - fi - elif [ -n "$(echo ${i} | grep '^ip:')" ]; then - _ip=$(echo ${i} | sed 's#ip:##g') - _ipt_source=$(factor ${_ip} "${_ipt_source}-s") - msg="${msg}IP$(i18n "[%s]," "${_ip}")" - _ipv4="1" - unset _ip - elif [ -n "$(echo ${i} | grep '^mac:')" ]; then - _mac=$(echo ${i} | sed 's#mac:##g') - _ipt_source=$(factor ${_mac} "${_ipt_source}-m mac --mac-source") - msg="${msg}MAC$(i18n "[%s]," "${_mac}")" - unset _mac - elif [ -n "$(echo ${i} | grep '^any')" ]; then - msg="${msg}$(i18n "All device,")" - else - continue - fi - msg="$(i18n "[%s]," "${remarks}")${msg}" - - ipt_tmp=$ipt_n - [ -n "${is_tproxy}" ] && ipt_tmp=$ipt_m - - [ "$tcp_no_redir_ports" != "disable" ] && { - if ! has_1_65535 "$tcp_no_redir_ports"; then - [ "$_ipv4" != "1" ] && add_port_rules "$ip6t_m -A PSW2 $(comment "$remarks") ${_ipt_source} -p tcp" $tcp_no_redir_ports "-j RETURN" 2>/dev/null - add_port_rules "$ipt_tmp -A PSW2 $(comment "$remarks") ${_ipt_source} -p tcp" $tcp_no_redir_ports "-j RETURN" - log 2 "${msg}$(i18n "not proxy %s port [%s]" "TCP" "${tcp_no_redir_ports}")" - else - # It will return when it ends, so no extra rules are needed. - tcp_proxy_mode="disable" - log 2 "${msg}$(i18n "not proxy all %s" "TCP")" - fi - } - - [ "$udp_no_redir_ports" != "disable" ] && { - if ! has_1_65535 "$udp_no_redir_ports"; then - [ "$_ipv4" != "1" ] && add_port_rules "$ip6t_m -A PSW2 $(comment "$remarks") ${_ipt_source} -p udp" $udp_no_redir_ports "-j RETURN" 2>/dev/null - add_port_rules "$ipt_m -A PSW2 $(comment "$remarks") ${_ipt_source} -p udp" $udp_no_redir_ports "-j RETURN" - log 2 "${msg}$(i18n "not proxy %s port [%s]" "UDP" "${udp_no_redir_ports}")" - else - # It will return when it ends, so no extra rules are needed. - udp_proxy_mode="disable" - log 2 "${msg}$(i18n "not proxy all %s" "UDP")" - fi - } - - if ([ "$tcp_proxy_mode" != "disable" ] || [ "$udp_proxy_mode" != "disable" ]) && [ -n "$dns_redirect_port" ]; then - $ipt_n -A PSW2_DNS $(comment "$remarks") -p udp ${_ipt_source} --dport 53 -j REDIRECT --to-ports $dns_redirect_port - $ip6t_n -A PSW2_DNS $(comment "$remarks") -p udp ${_ipt_source} --dport 53 -j REDIRECT --to-ports $dns_redirect_port 2>/dev/null - $ipt_n -A PSW2_DNS $(comment "$remarks") -p tcp ${_ipt_source} --dport 53 -j REDIRECT --to-ports $dns_redirect_port - $ip6t_n -A PSW2_DNS $(comment "$remarks") -p tcp ${_ipt_source} --dport 53 -j REDIRECT --to-ports $dns_redirect_port 2>/dev/null - [ -z "$(get_cache_var "ACL_${sid}_default")" ] && log 2 "${msg}$(i18n "Using a node that is different from the global configuration, DNS has been forcibly redirected to a dedicated DNS server.")" - else - $ipt_n -A PSW2_DNS $(comment "$remarks") -p udp ${_ipt_source} --dport 53 -j RETURN - $ip6t_n -A PSW2_DNS $(comment "$remarks") -p udp ${_ipt_source} --dport 53 -j RETURN 2>/dev/null - $ipt_n -A PSW2_DNS $(comment "$remarks") -p tcp ${_ipt_source} --dport 53 -j RETURN - $ip6t_n -A PSW2_DNS $(comment "$remarks") -p tcp ${_ipt_source} --dport 53 -j RETURN 2>/dev/null - fi - - [ "$tcp_proxy_mode" != "disable" ] && [ -n "$redir_port" ] && { - msg2="${msg}$(i18n "Use the %s node [%s]" "TCP" "${node_remark}")" - if [ -n "${is_tproxy}" ]; then - msg2="${msg2}(TPROXY:${redir_port})" - ipt_j="-j PSW2_RULE" - else - msg2="${msg2}(REDIRECT:${redir_port})" - ipt_j="$(REDIRECT $redir_port)" - fi - - [ "$accept_icmp" = "1" ] && { - $ipt_n -A PSW2 $(comment "$remarks") -p icmp ${_ipt_source} -d $FAKE_IP $(REDIRECT) - add_shunt_t_rule "${shunt_list4}" "$ipt_n -A PSW2 $(comment "$remarks") -p icmp ${_ipt_source}" "$(REDIRECT)" - $ipt_n -A PSW2 $(comment "$remarks") -p icmp ${_ipt_source} $(REDIRECT) - } - - [ "$accept_icmpv6" = "1" ] && [ "$PROXY_IPV6" == "1" ] && { - $ip6t_n -A PSW2 $(comment "$remarks") -p ipv6-icmp ${_ipt_source} -d $FAKE_IP_6 $(REDIRECT) 2>/dev/null - add_shunt_t_rule "${shunt_list6}" "$ip6t_n -A PSW2 $(comment "$remarks") -p ipv6-icmp ${_ipt_source}" "$(REDIRECT)" 2>/dev/null - $ip6t_n -A PSW2 $(comment "$remarks") -p ipv6-icmp ${_ipt_source} $(REDIRECT) 2>/dev/null - } - - $ipt_tmp -A PSW2 $(comment "$remarks") -p tcp ${_ipt_source} -d $FAKE_IP ${ipt_j} - add_shunt_t_rule "${shunt_list4}" "$ipt_tmp -A PSW2 $(comment "$remarks") -p tcp ${_ipt_source}" "${ipt_j}" $tcp_redir_ports - add_port_rules "$ipt_tmp -A PSW2 $(comment "$remarks") -p tcp ${_ipt_source}" $tcp_redir_ports "${ipt_j}" - [ -n "${is_tproxy}" ] && $ipt_m -A PSW2 $(comment "$remarks") -p tcp ${_ipt_source} $(REDIRECT $redir_port TPROXY) - - [ "$PROXY_IPV6" == "1" ] && [ "$_ipv4" != "1" ] && { - $ip6t_m -A PSW2 $(comment "$remarks") -p tcp ${_ipt_source} -d $FAKE_IP_6 -j PSW2_RULE 2>/dev/null - add_shunt_t_rule "${shunt_list6}" "$ip6t_m -A PSW2 $(comment "$remarks") -p tcp ${_ipt_source}" "${ipt_j}" $tcp_redir_ports 2>/dev/null - add_port_rules "$ip6t_m -A PSW2 $(comment "$remarks") -p tcp ${_ipt_source}" $tcp_redir_ports "-j PSW2_RULE" 2>/dev/null - $ip6t_m -A PSW2 $(comment "$remarks") -p tcp ${_ipt_source} $(REDIRECT $redir_port TPROXY) 2>/dev/null - } - log 2 "${msg2}" - } - $ipt_tmp -A PSW2 $(comment "$remarks") ${_ipt_source} -p tcp -j RETURN - [ "$_ipv4" != "1" ] && $ip6t_m -A PSW2 $(comment "$remarks") ${_ipt_source} -p tcp -j RETURN 2>/dev/null - - [ "$udp_proxy_mode" != "disable" ] && [ -n "$redir_port" ] && { - msg2="${msg}$(i18n "Use the %s node [%s]" "UDP" "${node_remark}")(TPROXY:${redir_port})" - - $ipt_m -A PSW2 $(comment "$remarks") -p udp ${_ipt_source} -d $FAKE_IP -j PSW2_RULE - add_shunt_t_rule "${shunt_list4}" "$ipt_m -A PSW2 $(comment "$remarks") -p udp ${_ipt_source}" "-j PSW2_RULE" $udp_redir_ports - add_port_rules "$ipt_m -A PSW2 $(comment "$remarks") -p udp ${_ipt_source}" $udp_redir_ports "-j PSW2_RULE" - $ipt_m -A PSW2 $(comment "$remarks") -p udp ${_ipt_source} $(REDIRECT $redir_port TPROXY) - - [ "$PROXY_IPV6" == "1" ] && [ "$_ipv4" != "1" ] && { - $ip6t_m -A PSW2 $(comment "$remarks") -p udp ${_ipt_source} -d $FAKE_IP_6 -j PSW2_RULE 2>/dev/null - add_shunt_t_rule "${shunt_list6}" "$ip6t_m -A PSW2 $(comment "$remarks") -p udp ${_ipt_source}" "-j PSW2_RULE" $udp_redir_ports 2>/dev/null - add_port_rules "$ip6t_m -A PSW2 $(comment "$remarks") -p udp ${_ipt_source}" $udp_redir_ports "-j PSW2_RULE" 2>/dev/null - $ip6t_m -A PSW2 $(comment "$remarks") -p udp ${_ipt_source} $(REDIRECT $redir_port TPROXY) 2>/dev/null - } - log 2 "${msg2}" - } - $ipt_m -A PSW2 $(comment "$remarks") ${_ipt_source} -p udp -j RETURN - [ "$_ipv4" != "1" ] && $ip6t_m -A PSW2 $(comment "$remarks") ${_ipt_source} -p udp -j RETURN 2>/dev/null - unset ipt_tmp ipt_j _ipt_source msg msg2 _ipv4 - done - unset enabled sid remarks sources tcp_no_redir_ports udp_no_redir_ports tcp_redir_ports udp_redir_ports node interface write_ipset_direct - unset node_remark _acl_list - done - } - - [ "$ENABLED_DEFAULT_ACL" == 1 ] && [ "$CLIENT_PROXY" == 1 ] && { - local comment_d="$(i18n "Default")" - msg="$(i18n "[%s]," ${comment_d})" - local ipt_tmp=$ipt_n - [ -n "${is_tproxy}" ] && ipt_tmp=$ipt_m - - [ "$TCP_NO_REDIR_PORTS" != "disable" ] && { - add_port_rules "$ip6t_m -A PSW2 $(comment "${comment_d}") -p tcp" $TCP_NO_REDIR_PORTS "-j RETURN" - add_port_rules "$ipt_tmp -A PSW2 $(comment "${comment_d}") -p tcp" $TCP_NO_REDIR_PORTS "-j RETURN" - if ! has_1_65535 "$TCP_NO_REDIR_PORTS"; then - log 2 "${msg}$(i18n "not proxy %s port [%s]" "TCP" "${TCP_NO_REDIR_PORTS}")" - else - TCP_PROXY_MODE="disable" - log 2 "${msg}$(i18n "not proxy all %s" "TCP")" - fi - } - - [ "$UDP_NO_REDIR_PORTS" != "disable" ] && { - add_port_rules "$ip6t_m -A PSW2 $(comment "${comment_d}") -p udp" $UDP_NO_REDIR_PORTS "-j RETURN" - add_port_rules "$ipt_tmp -A PSW2 $(comment "${comment_d}") -p udp" $UDP_NO_REDIR_PORTS "-j RETURN" - if ! has_1_65535 "$UDP_NO_REDIR_PORTS"; then - log 2 "${msg}$(i18n "not proxy %s port [%s]" "UDP" "${UDP_NO_REDIR_PORTS}")" - else - UDP_PROXY_MODE="disable" - log 2 "${msg}$(i18n "not proxy all %s" "UDP")" - fi - } - - if ([ "$TCP_PROXY_MODE" != "disable" ] || [ "$UDP_PROXY_MODE" != "disable" ]) && [ -n "$NODE" ]; then - [ -n "$DNS_REDIRECT_PORT" ] && { - $ipt_n -A PSW2_DNS $(comment "${comment_d}") -p udp --dport 53 -j REDIRECT --to-ports $DNS_REDIRECT_PORT - $ip6t_n -A PSW2_DNS $(comment "${comment_d}") -p udp --dport 53 -j REDIRECT --to-ports $DNS_REDIRECT_PORT 2>/dev/null - $ipt_n -A PSW2_DNS $(comment "${comment_d}") -p tcp --dport 53 -j REDIRECT --to-ports $DNS_REDIRECT_PORT - $ip6t_n -A PSW2_DNS $(comment "${comment_d}") -p tcp --dport 53 -j REDIRECT --to-ports $DNS_REDIRECT_PORT 2>/dev/null - } - fi - - if [ "$TCP_PROXY_MODE" != "disable" ] && [ -n "$NODE" ]; then - msg2="${msg}$(i18n "Use the %s node [%s]" "TCP" "$(config_n_get $NODE remarks)")" - if [ -n "${is_tproxy}" ]; then - msg2="${msg2}(TPROXY:${REDIR_PORT})" - ipt_j="-j PSW2_RULE" - else - msg2="${msg2}(REDIRECT:${REDIR_PORT})" - ipt_j="$(REDIRECT $REDIR_PORT)" - fi - - [ "$accept_icmp" = "1" ] && { - $ipt_n -A PSW2 $(comment "${comment_d}") -p icmp -d $FAKE_IP $(REDIRECT) - add_shunt_t_rule "${SHUNT_LIST4}" "$ipt_n -A PSW2 $(comment "${comment_d}") -p icmp" "$(REDIRECT)" - $ipt_n -A PSW2 $(comment "${comment_d}") -p icmp $(REDIRECT) - } - - [ "$accept_icmpv6" = "1" ] && [ "$PROXY_IPV6" == "1" ] && { - $ip6t_n -A PSW2 $(comment "${comment_d}") -p ipv6-icmp -d $FAKE_IP_6 $(REDIRECT) - add_shunt_t_rule "${SHUNT_LIST6}" "$ip6t_n -A PSW2 $(comment "${comment_d}") -p ipv6-icmp" "$(REDIRECT)" - $ip6t_n -A PSW2 $(comment "${comment_d}") -p ipv6-icmp $(REDIRECT) - } - - $ipt_tmp -A PSW2 $(comment "${comment_d}") -p tcp -d $FAKE_IP ${ipt_j} - add_shunt_t_rule "${SHUNT_LIST4}" "$ipt_tmp -A PSW2 $(comment "${comment_d}") -p tcp" "${ipt_j}" $TCP_REDIR_PORTS - add_port_rules "$ipt_tmp -A PSW2 $(comment "${comment_d}") -p tcp" $TCP_REDIR_PORTS "${ipt_j}" - [ -n "${is_tproxy}" ] && $ipt_m -A PSW2 $(comment "${comment_d}") -p tcp $(REDIRECT $REDIR_PORT TPROXY) - - [ "$PROXY_IPV6" == "1" ] && { - $ip6t_m -A PSW2 $(comment "${comment_d}") -p tcp -d $FAKE_IP_6 -j PSW2_RULE - add_shunt_t_rule "${SHUNT_LIST6}" "$ip6t_m -A PSW2 $(comment "${comment_d}") -p tcp" "-j PSW2_RULE" $TCP_REDIR_PORTS - add_port_rules "$ip6t_m -A PSW2 $(comment "${comment_d}") -p tcp" $TCP_REDIR_PORTS "-j PSW2_RULE" - $ip6t_m -A PSW2 $(comment "${comment_d}") -p tcp $(REDIRECT $REDIR_PORT TPROXY) - } - - log 2 "${msg2}" - fi - - if [ "$UDP_PROXY_MODE" != "disable" ] && [ -n "$NODE" ]; then - msg2="${msg}$(i18n "Use the %s node [%s]" "UDP" "$(config_n_get $NODE remarks)")(TPROXY:${REDIR_PORT})" - - $ipt_m -A PSW2 $(comment "${comment_d}") -p udp -d $FAKE_IP -j PSW2_RULE - add_shunt_t_rule "${SHUNT_LIST4}" "$ipt_m -A PSW2 $(comment "${comment_d}") -p udp" "-j PSW2_RULE" $UDP_REDIR_PORTS - add_port_rules "$ipt_m -A PSW2 $(comment "${comment_d}") -p udp" $UDP_REDIR_PORTS "-j PSW2_RULE" - $ipt_m -A PSW2 $(comment "${comment_d}") -p udp $(REDIRECT $REDIR_PORT TPROXY) - - [ "$PROXY_IPV6" == "1" ] && { - $ip6t_m -A PSW2 $(comment "${comment_d}") -p udp -d $FAKE_IP_6 -j PSW2_RULE - add_shunt_t_rule "${SHUNT_LIST6}" "$ip6t_m -A PSW2 $(comment "${comment_d}") -p udp" "-j PSW2_RULE" $UDP_REDIR_PORTS - add_port_rules "$ip6t_m -A PSW2 $(comment "${comment_d}") -p udp" $UDP_REDIR_PORTS "-j PSW2_RULE" - $ip6t_m -A PSW2 $(comment "${comment_d}") -p udp $(REDIRECT $REDIR_PORT TPROXY) - } - - log 2 "${msg2}" - fi - } -} - -filter_haproxy() { - for item in $(uci show $CONFIG | grep ".lbss=" | cut -d "'" -f 2); do - local ip=$(get_host_ip ipv4 $(echo $item | awk -F ":" '{print $1}') 1) - [ -n "$ip" ] && ipset -q add $IPSET_VPS $ip - done - log_i18n 1 "Add node to the load balancer is directly connected to %s[%s]." "ipset" "${IPSET_VPS}" -} - -filter_vpsip() { - uci show $CONFIG | grep -E "(.address=|.download_address=)" | cut -d "'" -f 2 | grep -E "([0-9]{1,3}[\.]){3}[0-9]{1,3}" | grep -v "^127\.0\.0\.1$" | sed -e "/^$/d" | sed -e "s/^/add $IPSET_VPS &/g" | awk '{print $0} END{print "COMMIT"}' | ipset -! -R - #log 1 "$(i18n "Add all %s nodes to %s[%s] direct connection complete." "IPv4" "ipset" "${$IPSET_VPS}")" - uci show $CONFIG | grep -E "(.address=|.download_address=)" | cut -d "'" -f 2 | grep -E "([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}" | sed -e "/^$/d" | sed -e "s/^/add $IPSET_VPS6 &/g" | awk '{print $0} END{print "COMMIT"}' | ipset -! -R - #log 1 "$(i18n "Add all %s nodes to %s[%s] direct connection complete." "IPv6" "ipset" "${$IPSET_VPS6}")" -} - -filter_server_port() { - local address=${1} - local port=${2} - local stream=${3} - stream=$(echo ${3} | tr 'A-Z' 'a-z') - local _is_tproxy ipt_tmp - ipt_tmp=$ipt_n - _is_tproxy=${is_tproxy} - [ "$stream" == "udp" ] && _is_tproxy="TPROXY" - [ -n "${_is_tproxy}" ] && ipt_tmp=$ipt_m - - for _ipt in 4 6; do - [ "$_ipt" == "4" ] && _ipt=$ipt_tmp - [ "$_ipt" == "6" ] && _ipt=$ip6t_m - $_ipt -n -L PSW2_OUTPUT | grep -q "${address}:${port}" - if [ $? -ne 0 ]; then - $_ipt -I PSW2_OUTPUT $(comment "${address}:${port}") -p $stream -d $address --dport $port -j RETURN 2>/dev/null - fi - done -} - -filter_node() { - local node=${1} - local stream=${2} - if [ -n "$node" ]; then - local address=$(config_n_get $node address) - local port=$(config_n_get $node port) - [ -z "$address" ] && [ -z "$port" ] && { - return 1 - } - filter_server_port $address $port $stream - filter_server_port $address $port $stream - fi -} - -filter_direct_node_list() { - [ ! -s "$TMP_PATH/direct_node_list" ] && return - for _node_id in $(cat $TMP_PATH/direct_node_list | awk '!seen[$0]++'); do - filter_node "$_node_id" TCP - filter_node "$_node_id" UDP - unset _node_id - done -} - -add_firewall_rule() { - log_i18n 0 "Starting to load %s firewall rules..." "iptables" - - ipset -! create $IPSET_LOCAL nethash maxelem 1048576 - ipset -! create $IPSET_WAN nethash maxelem 1048576 - ipset -! create $IPSET_LAN nethash maxelem 1048576 - ipset -! create $IPSET_VPS nethash maxelem 1048576 - - ipset -! create $IPSET_LOCAL6 nethash family inet6 maxelem 1048576 - ipset -! create $IPSET_WAN6 nethash family inet6 maxelem 1048576 - ipset -! create $IPSET_LAN6 nethash family inet6 maxelem 1048576 - ipset -! create $IPSET_VPS6 nethash family inet6 maxelem 1048576 - - ipset -! -R <<-EOF - $(ip address show | grep -w "inet" | awk '{print $2}' | awk -F '/' '{print $1}' | sed -e "s/^/add $IPSET_LOCAL /") - EOF - ipset -! -R <<-EOF - $(ip address show | grep -w "inet6" | awk '{print $2}' | awk -F '/' '{print $1}' | sed -e "s/^/add $IPSET_LOCAL6 /") - EOF - - ipset -! -R <<-EOF - $(gen_lanlist | sed -e "s/^/add $IPSET_LAN /") - EOF - - ipset -! -R <<-EOF - $(gen_lanlist_6 | sed -e "s/^/add $IPSET_LAN6 /") - EOF - - # Ignore special IP ranges - local lan_ifname lan_ip - lan_ifname=$(uci -q -p /tmp/state get network.lan.ifname) - [ -n "$lan_ifname" ] && { - lan_ip=$(ip address show $lan_ifname | grep -w "inet" | awk '{print $2}') - lan_ip6=$(ip address show $lan_ifname | grep -w "inet6" | awk '{print $2}') - #log_i18n 1 "local network segments (%s) direct connection: %s" "IPv4" "${lan_ip}" - #log_i18n 1 "local network segments (%s) direct connection: %s" "IPv6" "${lan_ip6}" - - [ -n "$lan_ip" ] && ipset -! -R <<-EOF - $(echo $lan_ip | sed -e "s/ /\n/g" | sed -e "s/^/add $IPSET_LAN /") - EOF - - [ -n "$lan_ip6" ] && ipset -! -R <<-EOF - $(echo $lan_ip6 | sed -e "s/ /\n/g" | sed -e "s/^/add $IPSET_LAN6 /") - EOF - } - - [ -n "$ISP_DNS" ] && { - for ispip in $ISP_DNS; do - ipset -! add $IPSET_LAN $ispip - log_i18n 1 "$(i18n "Add ISP %s DNS to the whitelist: %s" "IPv4" "${ispip}")" - done - } - - [ -n "$ISP_DNS6" ] && { - for ispip6 in $ISP_DNS6; do - ipset -! add $IPSET_LAN6 $ispip6 - log_i18n 1 "$(i18n "Add ISP %s DNS to the whitelist: %s" "IPv6" "${ispip6}")" - done - } - - local ipset_global_white="passwall2_global_white" - local ipset_global_white6="passwall2_global_white6" - ipset -! create $ipset_global_white nethash maxelem 1048576 timeout 259200 - ipset -! create $ipset_global_white6 nethash family inet6 maxelem 1048576 timeout 259200 - - - # Shunt rules IP list (import when use shunt node) - gen_shunt_list "${NODE}" SHUNT_LIST4 SHUNT_LIST6 ${WRITE_IPSET_DIRECT} ${ipset_global_white} ${ipset_global_white6} - - # Filter all node IPs - filter_vpsip > /dev/null 2>&1 & - filter_haproxy > /dev/null 2>&1 & - - accept_icmp=$(config_t_get global_forwarding accept_icmp 0) - accept_icmpv6=$(config_t_get global_forwarding accept_icmpv6 0) - - if [ "${TCP_PROXY_WAY}" = "redirect" ]; then - unset is_tproxy - elif [ "${TCP_PROXY_WAY}" = "tproxy" ]; then - is_tproxy="TPROXY" - fi - - $ipt_n -N PSW2 - $ipt_n -A PSW2 $(dst $IPSET_LAN) -j RETURN - $ipt_n -A PSW2 $(dst $IPSET_VPS) -j RETURN - - [ "$accept_icmp" = "1" ] && insert_rule_after "$ipt_n" "PREROUTING" "prerouting_rule" "-p icmp -j PSW2" - [ -z "${is_tproxy}" ] && insert_rule_after "$ipt_n" "PREROUTING" "prerouting_rule" "-p tcp -j PSW2" - - $ipt_n -N PSW2_OUTPUT - $ipt_n -A PSW2_OUTPUT $(dst $IPSET_LAN) -j RETURN - $ipt_n -A PSW2_OUTPUT $(dst $IPSET_VPS) -j RETURN - $ipt_n -A PSW2_OUTPUT -m mark --mark 0xff -j RETURN - - $ipt_n -N PSW2_DNS - if [ $(config_t_get global dns_redirect "1") = "0" ]; then - #Only hijack when dest address is local IP - $ipt_n -I PREROUTING $(dst $IPSET_LOCAL) -j PSW2_DNS - else - $ipt_n -I PREROUTING -j PSW2_DNS - fi - - $ipt_m -N PSW2_RULE - $ipt_m -A PSW2_RULE -j CONNMARK --restore-mark - $ipt_m -A PSW2_RULE -m mark --mark 0x1 -j RETURN - $ipt_m -A PSW2_RULE -p tcp -m tcp --syn -j MARK --set-xmark 1 - $ipt_m -A PSW2_RULE -p udp -m conntrack --ctstate NEW,RELATED -j MARK --set-xmark 1 - $ipt_m -A PSW2_RULE -j CONNMARK --save-mark - - $ipt_m -N PSW2 - $ipt_m -A PSW2 $(dst $IPSET_LAN) -j RETURN - $ipt_m -A PSW2 $(dst $IPSET_VPS) -j RETURN - $ipt_m -A PSW2 -m conntrack --ctdir REPLY -j RETURN - - WAN_IP=$(get_wan_ips ip4) - [ -n "${WAN_IP}" ] && { - ipset -F $IPSET_WAN - for wan_ip in $WAN_IP; do - ipset -! add $IPSET_WAN ${wan_ip} - done - $ipt_n -A PSW2 $(comment "WAN_IP_RETURN") $(dst $IPSET_WAN) -j RETURN - $ipt_m -A PSW2 $(comment "WAN_IP_RETURN") $(dst $IPSET_WAN) -j RETURN - } - unset WAN_IP wan_ip - - insert_rule_before "$ipt_m" "PREROUTING" "mwan3" "-j PSW2" - - $ipt_m -N PSW2_OUTPUT - $ipt_m -A PSW2_OUTPUT $(dst $IPSET_LAN) -j RETURN - $ipt_m -A PSW2_OUTPUT $(dst $IPSET_VPS) -j RETURN - $ipt_m -A PSW2_OUTPUT -m conntrack --ctdir REPLY -j RETURN - [ -n "$AUTO_DNS" ] && { - for auto_dns in $(echo $AUTO_DNS | tr ',' ' '); do - local dns_address=$(echo $auto_dns | awk -F '#' '{print $1}') - local dns_port=$(echo $auto_dns | awk -F '#' '{print $2}') - $ipt_m -A PSW2_OUTPUT -p udp -d ${dns_address} --dport ${dns_port:-53} -j RETURN - log_i18n 1 "$(i18n "Add direct DNS to %s: %s" "iptables" "${dns_address}:${dns_port:-53}")" - done - } - $ipt_m -A PSW2_OUTPUT -m mark --mark 0xff -j RETURN - - ip rule add fwmark 1 lookup 100 - ip route add local 0.0.0.0/0 dev lo table 100 - - [ "$accept_icmpv6" = "1" ] && { - $ip6t_n -N PSW2 - $ip6t_n -A PSW2 $(dst $IPSET_LAN6) -j RETURN - $ip6t_n -A PSW2 $(dst $IPSET_VPS6) -j RETURN - $ip6t_n -A PREROUTING -p ipv6-icmp -j PSW2 - - $ip6t_n -N PSW2_OUTPUT - $ip6t_n -A PSW2_OUTPUT $(dst $IPSET_LAN6) -j RETURN - $ip6t_n -A PSW2_OUTPUT $(dst $IPSET_VPS6) -j RETURN - $ip6t_n -A PSW2_OUTPUT -m mark --mark 0xff -j RETURN - } - - $ip6t_n -N PSW2_DNS - if [ $(config_t_get global dns_redirect "1") = "0" ]; then - #Only hijack when dest address is local IP - $ip6t_n -I PREROUTING $(dst $IPSET_LOCAL6) -j PSW2_DNS - else - $ip6t_n -I PREROUTING -j PSW2_DNS - fi - - $ip6t_m -N PSW2_RULE - $ip6t_m -A PSW2_RULE -j CONNMARK --restore-mark - $ip6t_m -A PSW2_RULE -m mark --mark 0x1 -j RETURN - $ip6t_m -A PSW2_RULE -p tcp -m tcp --syn -j MARK --set-xmark 1 - $ip6t_m -A PSW2_RULE -p udp -m conntrack --ctstate NEW,RELATED -j MARK --set-xmark 1 - $ip6t_m -A PSW2_RULE -j CONNMARK --save-mark - - $ip6t_m -N PSW2 - $ip6t_m -A PSW2 $(dst $IPSET_LAN6) -j RETURN - $ip6t_m -A PSW2 $(dst $IPSET_VPS6) -j RETURN - $ip6t_m -A PSW2 -m conntrack --ctdir REPLY -j RETURN - - WAN6_IP=$(get_wan_ips ip6) - [ -n "${WAN6_IP}" ] && { - ipset -F $IPSET_WAN6 - for wan6_ip in $WAN6_IP; do - ipset -! add $IPSET_WAN6 ${wan6_ip} - done - $ip6t_m -A PSW2 $(comment "WAN6_IP_RETURN") $(dst $IPSET_WAN6) -j RETURN - } - unset WAN6_IP wan6_ip - - insert_rule_before "$ip6t_m" "PREROUTING" "mwan3" "-j PSW2" - - $ip6t_m -N PSW2_OUTPUT - $ip6t_m -A PSW2_OUTPUT -m mark --mark 0xff -j RETURN - $ip6t_m -A PSW2_OUTPUT $(dst $IPSET_LAN6) -j RETURN - $ip6t_m -A PSW2_OUTPUT $(dst $IPSET_VPS6) -j RETURN - $ip6t_m -A PSW2_OUTPUT -m conntrack --ctdir REPLY -j RETURN - - ip -6 rule add fwmark 1 table 100 - ip -6 route add local ::/0 dev lo table 100 - - [ "$ENABLED_DEFAULT_ACL" == 1 ] && { - local ipt_tmp=$ipt_n - [ -n "${is_tproxy}" ] && ipt_tmp=$ipt_m - - TCP_LOCALHOST_PROXY=$LOCALHOST_PROXY - UDP_LOCALHOST_PROXY=$LOCALHOST_PROXY - - msg="$(i18n "[Local],")" - [ "$TCP_NO_REDIR_PORTS" != "disable" ] && { - add_port_rules "$ipt_tmp -A PSW2_OUTPUT -p tcp" $TCP_NO_REDIR_PORTS "-j RETURN" - add_port_rules "$ip6t_m -A PSW2_OUTPUT -p tcp" $TCP_NO_REDIR_PORTS "-j RETURN" - if ! has_1_65535 "$TCP_NO_REDIR_PORTS"; then - log 1 "${msg}$(i18n "not proxy %s port [%s]" "TCP" "${TCP_NO_REDIR_PORTS}")" - else - unset TCP_LOCALHOST_PROXY - log 1 "${msg}$(i18n "not proxy all %s" "TCP")" - fi - } - - [ "$UDP_NO_REDIR_PORTS" != "disable" ] && { - add_port_rules "$ipt_m -A PSW2_OUTPUT -p udp" $UDP_NO_REDIR_PORTS "-j RETURN" - add_port_rules "$ip6t_m -A PSW2_OUTPUT -p udp" $UDP_NO_REDIR_PORTS "-j RETURN" - if ! has_1_65535 "$UDP_NO_REDIR_PORTS"; then - log 1 "${msg}$(i18n "not proxy %s port [%s]" "UDP" "${UDP_NO_REDIR_PORTS}")" - else - unset UDP_LOCALHOST_PROXY - log 1 "${msg}$(i18n "not proxy all %s" "UDP")" - fi - } - - if [ -n "$NODE" ] && ([ "$TCP_LOCALHOST_PROXY" = "1" ] || [ "$UDP_LOCALHOST_PROXY" = "1" ]); then - [ -n "$DNS_REDIRECT_PORT" ] && { - $ipt_n -A OUTPUT $(comment "PSW2_DNS") -p udp -o lo --dport 53 -j REDIRECT --to-ports $DNS_REDIRECT_PORT - $ip6t_n -A OUTPUT $(comment "PSW2_DNS") -p udp -o lo --dport 53 -j REDIRECT --to-ports $DNS_REDIRECT_PORT 2>/dev/null - $ipt_n -A OUTPUT $(comment "PSW2_DNS") -p tcp -o lo --dport 53 -j REDIRECT --to-ports $DNS_REDIRECT_PORT - $ip6t_n -A OUTPUT $(comment "PSW2_DNS") -p tcp -o lo --dport 53 -j REDIRECT --to-ports $DNS_REDIRECT_PORT 2>/dev/null - } - fi - - local comment_l="$(i18n "Local")" - - # Loading local router proxy TCP - if [ -n "$NODE" ] && [ "$TCP_LOCALHOST_PROXY" = "1" ]; then - [ "$accept_icmp" = "1" ] && { - $ipt_n -A OUTPUT -p icmp -j PSW2_OUTPUT - $ipt_n -A PSW2_OUTPUT -p icmp -d $FAKE_IP $(REDIRECT) - add_shunt_t_rule "${SHUNT_LIST4}" "$ipt_n -A PSW2_OUTPUT -p icmp" "$(REDIRECT)" - $ipt_n -A PSW2_OUTPUT -p icmp $(REDIRECT) - } - - [ "$accept_icmpv6" = "1" ] && { - $ip6t_n -A OUTPUT -p ipv6-icmp -j PSW2_OUTPUT - $ip6t_n -A PSW2_OUTPUT -p ipv6-icmp -d $FAKE_IP_6 $(REDIRECT) - add_shunt_t_rule "${SHUNT_LIST6}" "$ip6t_n -A PSW2_OUTPUT -p ipv6-icmp" "$(REDIRECT)" - $ip6t_n -A PSW2_OUTPUT -p ipv6-icmp $(REDIRECT) - } - - if [ -n "${is_tproxy}" ]; then - ipt_j="-j PSW2_RULE" - else - ipt_j="$(REDIRECT $REDIR_PORT)" - fi - - $ipt_tmp -A PSW2_OUTPUT -p tcp -d $FAKE_IP ${ipt_j} - add_shunt_t_rule "${SHUNT_LIST4}" "$ipt_tmp -A PSW2_OUTPUT -p tcp" "${ipt_j}" $TCP_REDIR_PORTS - add_port_rules "$ipt_tmp -A PSW2_OUTPUT -p tcp" $TCP_REDIR_PORTS "${ipt_j}" - [ -z "${is_tproxy}" ] && $ipt_n -A OUTPUT -p tcp -j PSW2_OUTPUT - [ -n "${is_tproxy}" ] && { - $ipt_m -A PSW2 $(comment "${comment_l}") -p tcp -i lo $(REDIRECT $REDIR_PORT TPROXY) - $ipt_m -A PSW2 $(comment "${comment_l}") -p tcp -i lo -j RETURN - insert_rule_before "$ipt_m" "OUTPUT" "mwan3" "$(comment mangle-OUTPUT-PSW2) -p tcp -j PSW2_OUTPUT" - } - - [ "$PROXY_IPV6" == "1" ] && { - $ip6t_m -A PSW2_OUTPUT -p tcp -d $FAKE_IP_6 -j PSW2_RULE - add_shunt_t_rule "${SHUNT_LIST6}" "$ip6t_m -A PSW2_OUTPUT -p tcp" "-j PSW2_RULE" $TCP_REDIR_PORTS - add_port_rules "$ip6t_m -A PSW2_OUTPUT -p tcp" $TCP_REDIR_PORTS "-j PSW2_RULE" - $ip6t_m -A PSW2 $(comment "${comment_l}") -p tcp -i lo $(REDIRECT $REDIR_PORT TPROXY) - $ip6t_m -A PSW2 $(comment "${comment_l}") -p tcp -i lo -j RETURN - insert_rule_before "$ip6t_m" "OUTPUT" "mwan3" "$(comment mangle-OUTPUT-PSW2) -p tcp -j PSW2_OUTPUT" - } - - [ -d "${TMP_IFACE_PATH}" ] && { - for iface in $(ls ${TMP_IFACE_PATH}); do - $ipt_n -I PSW2_OUTPUT -o $iface -p tcp -j RETURN - $ipt_m -I PSW2_OUTPUT -o $iface -p tcp -j RETURN - done - } - fi - - # Loading local router proxy UDP - if [ -n "$NODE" ] && [ "$UDP_LOCALHOST_PROXY" = "1" ]; then - $ipt_m -A PSW2_OUTPUT -p udp -d $FAKE_IP -j PSW2_RULE - add_shunt_t_rule "${SHUNT_LIST4}" "$ipt_m -A PSW2_OUTPUT -p udp" "-j PSW2_RULE" $UDP_REDIR_PORTS - add_port_rules "$ipt_m -A PSW2_OUTPUT -p udp" $UDP_REDIR_PORTS "-j PSW2_RULE" - $ipt_m -A PSW2 $(comment "${comment_l}") -p udp -i lo $(REDIRECT $REDIR_PORT TPROXY) - $ipt_m -A PSW2 $(comment "${comment_l}") -p udp -i lo -j RETURN - insert_rule_before "$ipt_m" "OUTPUT" "mwan3" "$(comment mangle-OUTPUT-PSW2) -p udp -j PSW2_OUTPUT" - - [ "$PROXY_IPV6" == "1" ] && { - $ip6t_m -A PSW2_OUTPUT -p udp -d $FAKE_IP_6 -j PSW2_RULE - add_shunt_t_rule "${SHUNT_LIST6}" "$ip6t_m -A PSW2_OUTPUT -p udp" "-j PSW2_RULE" $UDP_REDIR_PORTS - add_port_rules "$ip6t_m -A PSW2_OUTPUT -p udp" $UDP_REDIR_PORTS "-j PSW2_RULE" - $ip6t_m -A PSW2 $(comment "${comment_l}") -p udp -i lo $(REDIRECT $REDIR_PORT TPROXY) - $ip6t_m -A PSW2 $(comment "${comment_l}") -p udp -i lo -j RETURN - insert_rule_before "$ip6t_m" "OUTPUT" "mwan3" "$(comment mangle-OUTPUT-PSW2) -p udp -j PSW2_OUTPUT" - } - - [ -d "${TMP_IFACE_PATH}" ] && { - for iface in $(ls ${TMP_IFACE_PATH}); do - $ipt_n -I PSW2_OUTPUT -o $iface -p udp -j RETURN - $ipt_m -I PSW2_OUTPUT -o $iface -p udp -j RETURN - done - } - fi - - $ipt_m -I OUTPUT $(comment "mangle-OUTPUT-PSW2") -o lo -j RETURN - insert_rule_before "$ipt_m" "OUTPUT" "mwan3" "$(comment mangle-OUTPUT-PSW2) -m mark --mark 1 -j RETURN" - - $ip6t_m -I OUTPUT $(comment "mangle-OUTPUT-PSW2") -o lo -j RETURN - insert_rule_before "$ip6t_m" "OUTPUT" "mwan3" "$(comment mangle-OUTPUT-PSW2) -m mark --mark 1 -j RETURN" - - $ipt_m -A PSW2 -p udp --dport 53 -j RETURN - $ip6t_m -A PSW2 -p udp --dport 53 -j RETURN - } - - load_acl - - filter_direct_node_list > /dev/null 2>&1 & - - log_i18n 0 "%s firewall rules load complete!" "iptables" -} - -del_firewall_rule() { - for ipt in "$ipt_n" "$ipt_m" "$ip6t_n" "$ip6t_m"; do - for chain in "PREROUTING" "OUTPUT"; do - for i in $(seq 1 $($ipt -nL $chain | grep -c PSW2)); do - local index=$($ipt --line-number -nL $chain | grep PSW2 | head -1 | awk '{print $1}') - $ipt -D $chain $index 2>/dev/null - done - done - for chain in "PSW2" "PSW2_OUTPUT" "PSW2_DNS" "PSW2_RULE"; do - $ipt -F $chain 2>/dev/null - $ipt -X $chain 2>/dev/null - done - done - - ip rule del fwmark 1 lookup 100 2>/dev/null - ip route del local 0.0.0.0/0 dev lo table 100 2>/dev/null - - ip -6 rule del fwmark 1 table 100 2>/dev/null - ip -6 route del local ::/0 dev lo table 100 2>/dev/null - - log_i18n 0 "Delete %s rules is complete." "iptables" -} - -flush_ipset() { - log_i18n 0 "Clear %s." "IPSet" - for _name in $(ipset list | grep "Name: " | grep "passwall2_" | awk '{print $2}'); do - destroy_ipset ${_name} - done -} - -flush_include() { - echo '#!/bin/sh' >$FWI -} - -gen_include() { - flush_include - extract_rules() { - local _ipt="${ipt}" - [ "$1" == "6" ] && _ipt="${ip6t}" - [ -z "${_ipt}" ] && return - - echo "*$2" - ${_ipt}-save -t $2 | grep "PSW2" | grep -v "\-j PSW2$" | sed -e "s/^-A \(OUTPUT\|PREROUTING\)/-I \1 1/" - echo 'COMMIT' - } - local __ipt="" - [ -n "${ipt}" ] && { - __ipt=$(cat <<- EOF - $ipt-save -c | grep -v "PSW2" | $ipt-restore -c - $ipt-restore -n <<-EOT - $(extract_rules 4 nat) - $(extract_rules 4 mangle) - EOT - - [ "$accept_icmp" = "1" ] && \$(${MY_PATH} insert_rule_after "$ipt_n" "PREROUTING" "prerouting_rule" "-p icmp -j PSW2") - [ -z "${is_tproxy}" ] && \$(${MY_PATH} insert_rule_after "$ipt_n" "PREROUTING" "prerouting_rule" "-p tcp -j PSW2") - - \$(${MY_PATH} insert_rule_before "$ipt_m" "PREROUTING" "mwan3" "-j PSW2") - - WAN_IP=\$(${MY_PATH} get_wan_ips ip4) - [ ! -z "\${WAN_IP}" ] && { - ipset -F $IPSET_WAN - for wan_ip in \$WAN_IP; do - ipset -! add $IPSET_WAN \${wan_ip} - done - } - EOF - ) - } - local __ip6t="" - [ -n "${ip6t}" ] && { - __ip6t=$(cat <<- EOF - $ip6t-save -c | grep -v "PSW2" | $ip6t-restore -c - $ip6t-restore -n <<-EOT - $(extract_rules 6 nat) - $(extract_rules 6 mangle) - EOT - - [ "$accept_icmpv6" = "1" ] && $ip6t_n -A PREROUTING -p ipv6-icmp -j PSW2 - - \$(${MY_PATH} insert_rule_before "$ip6t_m" "PREROUTING" "mwan3" "-j PSW2") - - WAN6_IP=\$(${MY_PATH} get_wan_ips ip6) - [ ! -z "\${WAN6_IP}" ] && { - ipset -F $IPSET_WAN6 - for wan6_ip in \$WAN6_IP; do - ipset -! add $IPSET_WAN6 \${wan6_ip} - done - } - EOF - ) - } - cat <<-EOF >> $FWI - ${__ipt} - - ${__ip6t} - - return 0 - EOF - return 0 -} - -get_ipt_bin() { - echo $ipt -} - -get_ip6t_bin() { - echo $ip6t -} - -start() { - [ "$ENABLED_DEFAULT_ACL" == 0 -a "$ENABLED_ACLS" == 0 ] && return - add_firewall_rule - gen_include -} - -stop() { - [ -z "$(command -v log_i18n)" ] && . /usr/share/passwall2/utils.sh - del_firewall_rule - [ $(config_t_get global flush_set "0") = "1" ] && { - uci -q delete ${CONFIG}.@global[0].flush_set - uci -q commit ${CONFIG} - flush_ipset - rm -rf /tmp/etc/passwall2_tmp/singbox* - rm -f /tmp/etc/passwall2_tmp/geoip-*.json - } - flush_include -} - -arg1=$1 -shift -case $arg1 in -RULE_LAST_INDEX) - RULE_LAST_INDEX "$@" - ;; -insert_rule_before) - insert_rule_before "$@" - ;; -insert_rule_after) - insert_rule_after "$@" - ;; -get_ipt_bin) - get_ipt_bin - ;; -get_ip6t_bin) - get_ip6t_bin - ;; -get_wan_ips) - get_wan_ips - ;; -filter_direct_node_list) - filter_direct_node_list - ;; -stop) - stop - ;; -start) - start - ;; -*) ;; -esac diff --git a/small/luci-app-passwall2/root/usr/share/passwall2/lease2hosts.sh b/small/luci-app-passwall2/root/usr/share/passwall2/lease2hosts.sh deleted file mode 100755 index be667b37b9..0000000000 --- a/small/luci-app-passwall2/root/usr/share/passwall2/lease2hosts.sh +++ /dev/null @@ -1,50 +0,0 @@ -#!/bin/sh -# dhcp.leases to hosts - -. /usr/share/passwall2/utils.sh -LOCK_FILE=${LOCK_PATH}/${CONFIG}_lease2hosts.lock -LEASE_FILE="/tmp/dhcp.leases" -HOSTS_FILE="$TMP_PATH2/dhcp-hosts" -TMP_FILE="/tmp/dhcp-hosts.tmp" - -exec 99>"$LOCK_FILE" -flock -n 99 -if [ "$?" != 0 ]; then - exit 0 -fi - -reload_dnsmasq_pids() { - local pidfile pid - find $TMP_PATH/acl -type f -name 'dnsmasq.pid' 2>/dev/null | while read pidfile; do - if [ -s "$pidfile" ]; then - read pid < "$pidfile" - if [ -n "$pid" ] && kill -0 "$pid" 2>/dev/null; then - kill -HUP "$pid" - fi - fi - done -} - -while true; do - - if [ -f "$LEASE_FILE" ]; then - awk 'NF >= 4 && $4 != "*" {print $3" "$4}' "$LEASE_FILE" | sort > "$TMP_FILE" - if [ -s "$TMP_FILE" ]; then - if [ ! -f "$HOSTS_FILE" ] || ! cmp -s "$TMP_FILE" "$HOSTS_FILE"; then - mv "$TMP_FILE" "$HOSTS_FILE" - reload_dnsmasq_pids - else - rm -f "$TMP_FILE" - fi - else - if [ -s "$HOSTS_FILE" ]; then - : > "$HOSTS_FILE" - reload_dnsmasq_pids - fi - rm -f "$TMP_FILE" - fi - fi - - sleep 60 - -done 2>/dev/null diff --git a/small/luci-app-passwall2/root/usr/share/passwall2/monitor.sh b/small/luci-app-passwall2/root/usr/share/passwall2/monitor.sh deleted file mode 100755 index e8b85cf4c1..0000000000 --- a/small/luci-app-passwall2/root/usr/share/passwall2/monitor.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/sh - -. /usr/share/passwall2/utils.sh -LOCK_FILE=${LOCK_PATH}/${CONFIG}_monitor.lock - -ENABLED=$(config_t_get global enabled 0) -[ "$ENABLED" != 1 ] && return 1 -ENABLED=$(config_t_get global_delay start_daemon 0) -[ "$ENABLED" != 1 ] && return 1 -sleep 58s -while [ "$ENABLED" -eq 1 ]; do - [ -f "$LOCK_FILE" ] && { - sleep 6s - continue - } - touch $LOCK_FILE - [ -d ${TMP_SCRIPT_FUNC_PATH} ] && { - for filename in $(ls ${TMP_SCRIPT_FUNC_PATH} | grep -v "^_"); do - cmd=$(cat ${TMP_SCRIPT_FUNC_PATH}/${filename}) - cmd_check=$(echo $cmd | awk -F '>' '{print $1}') - [ -n "$(echo $cmd_check | grep "dns2socks")" ] && cmd_check=$(echo $cmd_check | sed "s#:# #g") - icount=$(pgrep -f "$(echo $cmd_check)" | wc -l) - if [ $icount = 0 ]; then - #echo "${cmd} crashed, restarting." >> /tmp/log/passwall2.log - eval $(echo "nohup ${cmd} 2>&1 &") >/dev/null 2>&1 & - fi - done - } - - rm -f $LOCK_FILE - sleep 58s -done diff --git a/small/luci-app-passwall2/root/usr/share/passwall2/nftables.sh b/small/luci-app-passwall2/root/usr/share/passwall2/nftables.sh deleted file mode 100755 index 4ebf1b4f8a..0000000000 --- a/small/luci-app-passwall2/root/usr/share/passwall2/nftables.sh +++ /dev/null @@ -1,1142 +0,0 @@ -#!/bin/sh - -DIR="$(cd "$(dirname "$0")" && pwd)" -MY_PATH=$DIR/nftables.sh -NFTABLE_NAME="inet passwall2" -NFTSET_LOCAL="passwall2_local" -NFTSET_WAN="passwall2_wan" -NFTSET_LAN="passwall2_lan" -NFTSET_VPS="passwall2_vps" - -NFTSET_LOCAL6="passwall2_local6" -NFTSET_WAN6="passwall2_wan6" -NFTSET_LAN6="passwall2_lan6" -NFTSET_VPS6="passwall2_vps6" - -. /lib/functions/network.sh - -FWI=$(uci -q get firewall.passwall2.path 2>/dev/null) -FAKE_IP="198.18.0.0/16" -FAKE_IP_6="fc00::/18" - -factor() { - local ports="$1" - if [ -z "$1" ] || [ -z "$2" ] || [ "$ports" = "1:65535" ]; then - echo "" - # acl mac address - elif echo "$1" | grep -qE '([A-Fa-f0-9]{2}:){5}[A-Fa-f0-9]{2}'; then - echo "$2 {$1}" - else - ports=$(echo "$ports" | tr -d ' ' | sed 's/:/-/g' | tr ',' '\n' | awk '!a[$0]++' | grep -v '^$') - [ -z "$ports" ] && { echo ""; return; } - if echo "$ports" | grep -q '^1-65535$'; then - echo "" - return - fi - local port - local port_list="" - for port in $ports; do - port_list="${port_list},$port" - done - port_list="${port_list#,}" - echo "$2 {$port_list}" - fi -} - -insert_rule_before() { - [ $# -ge 4 ] || { - return 1 - } - local table_name="${1}"; shift - local chain_name="${1}"; shift - local keyword="${1}"; shift - local rule="${1}"; shift - local default_index="${1}"; shift - default_index=${default_index:-0} - local _index=$(nft -a list chain $table_name $chain_name 2>/dev/null | grep "$keyword" | awk -F '# handle ' '{print$2}' | head -n 1 | awk '{print $1}') - if [ -z "${_index}" ] && [ "${default_index}" = "0" ]; then - nft "add rule $table_name $chain_name $rule" - else - if [ -z "${_index}" ]; then - _index=${default_index} - fi - nft "insert rule $table_name $chain_name position $_index $rule" - fi -} - -insert_rule_after() { - [ $# -ge 4 ] || { - return 1 - } - local table_name="${1}"; shift - local chain_name="${1}"; shift - local keyword="${1}"; shift - local rule="${1}"; shift - local default_index="${1}"; shift - default_index=${default_index:-0} - local _index=$(nft -a list chain $table_name $chain_name 2>/dev/null | grep "$keyword" | awk -F '# handle ' '{print$2}' | head -n 1 | awk '{print $1}') - if [ -z "${_index}" ] && [ "${default_index}" = "0" ]; then - nft "add rule $table_name $chain_name $rule" - else - if [ -n "${_index}" ]; then - _index=$((_index + 1)) - else - _index=${default_index} - fi - nft "insert rule $table_name $chain_name position $_index $rule" - fi -} - -RULE_LAST_INDEX() { - [ $# -ge 3 ] || { - log_i18n 1 "Incorrect index listing method (%s), execution terminated!" "nftables" - return 1 - } - local table_name="${1}"; shift - local chain_name="${1}"; shift - local keyword="${1}"; shift - local default="${1:-0}"; shift - local _index=$(nft -a list chain $table_name $chain_name 2>/dev/null | grep "$keyword" | awk -F '# handle ' '{print$2}' | head -n 1 | awk '{print $1}') - echo "${_index:-${default}}" -} - -REDIRECT() { - local s="counter redirect" - [ -n "$1" ] && { - local s="$s to :$1" - [ "$2" == "MARK" ] && s="counter meta mark set $1" - [ "$2" == "TPROXY" ] && { - s="counter meta mark 1 tproxy to :$1" - } - [ "$2" == "TPROXY4" ] && { - s="counter meta mark 1 tproxy ip to :$1" - } - [ "$2" == "TPROXY6" ] && { - s="counter meta mark 1 tproxy ip6 to :$1" - } - - } - echo $s -} - -destroy_nftset() { - for i in "$@"; do - nft flush set $NFTABLE_NAME $i 2>/dev/null - nft delete set $NFTABLE_NAME $i 2>/dev/null - done -} - -gen_nft_tables() { - if ! nft list table "$NFTABLE_NAME" >/dev/null 2>&1; then - local nft_table_file="$TMP_PATH/PSW2_TABLE.nft" - # Set the correct priority to fit fw4 - cat > "$nft_table_file" <<-EOF - table $NFTABLE_NAME { - chain dstnat { - type nat hook prerouting priority dstnat - 1; policy accept; - } - chain mangle_prerouting { - type filter hook prerouting priority mangle - 1; policy accept; - } - chain mangle_output { - type route hook output priority mangle - 1; policy accept; - } - chain nat_output { - type nat hook output priority -1; policy accept; - } - } - EOF - - nft -f "$nft_table_file" - rm -rf "$nft_table_file" - fi -} - -insert_nftset() { - local nftset_name="${1}"; shift - local timeout_argument="${1}"; shift - local default_timeout="365d" - local suffix="" - - if [ -n "$nftset_name" ] && { [ $# -gt 0 ] || [ ! -t 0 ]; }; then - case "$timeout_argument" in - "-1") suffix="" ;; - "0") suffix=" timeout $default_timeout" ;; - *) suffix=" timeout $timeout_argument" ;; - esac - { - if [ $# -gt 0 ]; then - echo "add element $NFTABLE_NAME $nftset_name { " - printf "%s\n" "$@" | awk -v s="$suffix" '{if (NR > 1) printf ",\n";printf "%s%s", $0, s}' - echo " }" - else - local first_line - if IFS= read -r first_line; then - echo "add element $NFTABLE_NAME $nftset_name { " - { echo "$first_line"; cat; } | awk -v s="$suffix" '{if (NR > 1) printf ",\n";printf "%s%s", $0, s}' - echo " }" - fi - fi - } | nft -f - - fi -} - -gen_nftset() { - local nftset_name="${1}"; shift - local ip_type="${1}"; shift - # 0 - don't set defalut timeout - local timeout_argument_set="${1}"; shift - # 0 - don't let element timeout(365 days) when set's timeout parameters be seted - # -1 - follow the set's timeout parameters - local timeout_argument_element="${1}"; shift - local gc_interval_time="1h" - - if ! nft list set $NFTABLE_NAME $nftset_name >/dev/null 2>&1; then - if [ "$timeout_argument_set" == "0" ]; then - nft "add set $NFTABLE_NAME $nftset_name { type $ip_type; flags interval, timeout; auto-merge; }" - else - nft "add set $NFTABLE_NAME $nftset_name { type $ip_type; flags interval, timeout; timeout $timeout_argument_set; gc-interval $gc_interval_time; auto-merge; }" - fi - fi - [ $# -gt 0 ] || [ ! -t 0 ] && insert_nftset "$nftset_name" "$timeout_argument_element" "$@" -} - -gen_lanlist() { - cat <<-EOF - 0.0.0.0/8 - 10.0.0.0/8 - 100.64.0.0/10 - 127.0.0.0/8 - 169.254.0.0/16 - 172.16.0.0/12 - 192.168.0.0/16 - 224.0.0.0/4 - 240.0.0.0/4 - EOF -} - -gen_lanlist_6() { - cat <<-EOF - ::/128 - ::1/128 - ::ffff:0:0/96 - ::ffff:0:0:0/96 - 64:ff9b::/96 - 100::/64 - 2001::/32 - 2001:20::/28 - 2001:db8::/32 - 2002::/16 - fc00::/7 - fe80::/10 - ff00::/8 - EOF -} - -get_wan_ips() { - local family="$1" - local NET_ADDR - local iface - local INTERFACES=$(ubus call network.interface dump | jsonfilter -e '@.interface[@.route[0]].interface') - for iface in $INTERFACES; do - local addr - if [ "$family" = "ip6" ]; then - network_get_ipaddr6 addr "$iface" - case "$addr" in - ""|fe80*) continue ;; - esac - else - network_get_ipaddr addr "$iface" - case "$addr" in - ""|"0.0.0.0") continue ;; - esac - fi - - case " $NET_ADDR " in - *" $addr "*) ;; - *) NET_ADDR="${NET_ADDR:+$NET_ADDR }$addr" ;; - esac - done - echo "$NET_ADDR" -} - -gen_shunt_list() { - local node=${1} - local shunt_list4_var_name=${2} - local shunt_list6_var_name=${3} - local _write_ipset_direct=${4} - local _set_name4=${5} - local _set_name6=${6} - [ -z "$node" ] && continue - unset ${shunt_list4_var_name} - unset ${shunt_list6_var_name} - local _SHUNT_LIST4 _SHUNT_LIST6 - local USE_SHUNT_NODE=0 - NODE_PROTOCOL=$(config_n_get $node protocol) - [ "$NODE_PROTOCOL" = "_shunt" ] && USE_SHUNT_NODE=1 - [ "$USE_SHUNT_NODE" = "1" ] && { - local enable_geoview=$(config_t_get global_rules enable_geoview 0) - [ -z "$(first_type geoview)" ] && enable_geoview=0 - local preloading=0 - preloading=$enable_geoview - [ "${preloading}" = "1" ] && { - local default_node=$(config_n_get ${node} default_node _direct) - local default_outbound="redirect" - [ "$default_node" = "_direct" ] && default_outbound="direct" - local shunt_ids=$(uci show $CONFIG | grep "=shunt_rules" | awk -F '.' '{print $2}' | awk -F '=' '{print $1}') - for shunt_id in $shunt_ids; do - local shunt_node=$(config_n_get ${node} "${shunt_id}") - [ -n "$shunt_node" ] && { - local nftset_v4="passwall2_${node}_${shunt_id}" - local nftset_v6="passwall2_${node}_${shunt_id}6" - gen_nftset $nftset_v4 ipv4_addr 0 0 - gen_nftset $nftset_v6 ipv6_addr 0 0 - local outbound="redirect" - [ "$shunt_node" = "_direct" ] && outbound="direct" - [ "$shunt_node" = "_default" ] && outbound="${default_outbound}" - _SHUNT_LIST4="${_SHUNT_LIST4} ${nftset_v4}:${outbound}" - _SHUNT_LIST6="${_SHUNT_LIST6} ${nftset_v6}:${outbound}" - config_n_get $shunt_id ip_list | tr -s "\r\n" "\n" | sed -e "/^$/d" | grep -E "(\.((2(5[0-5]|[0-4][0-9]))|[0-1]?[0-9]{1,2})){3}" | insert_nftset $nftset_v4 "0" - config_n_get $shunt_id ip_list | tr -s "\r\n" "\n" | sed -e "/^$/d" | grep -E "([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}" | insert_nftset $nftset_v6 "0" - [ "${enable_geoview}" = "1" ] && { - local _geoip_code=$(config_n_get $shunt_id ip_list | tr -s "\r\n" "\n" | sed -e "/^$/d" | grep -E "^geoip:" | grep -v "^geoip:private" | sed -E 's/^geoip:(.*)/\1/' | sed ':a;N;$!ba;s/\n/,/g') - [ -n "$_geoip_code" ] && { - get_geoip $_geoip_code ipv4 | grep -E "(\.((2(5[0-5]|[0-4][0-9]))|[0-1]?[0-9]{1,2})){3}" | insert_nftset $nftset_v4 "0" - get_geoip $_geoip_code ipv6 | grep -E "([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}" | insert_nftset $nftset_v6 "0" - log 1 "$(i18n "parse the traffic splitting rules[%s]-[geoip:%s] add to %s to complete." "${shunt_id}" "${_geoip_code}" "NFTSET")" - } - } - } - done - } - [ "${_write_ipset_direct}" = "1" ] && { - _SHUNT_LIST4="${_SHUNT_LIST4} ${_set_name4}:direct" - _SHUNT_LIST6="${_SHUNT_LIST6} ${_set_name6}:direct" - } - [ "${preloading}" = "1" ] && [ -n "$default_node" ] && { - local nftset_v4="passwall2_${node}_default" - local nftset_v6="passwall2_${node}_default6" - gen_nftset $nftset_v4 ipv4_addr 0 0 - gen_nftset $nftset_v6 ipv6_addr 0 0 - _SHUNT_LIST4="${_SHUNT_LIST4} ${nftset_v4}:${default_outbound}" - _SHUNT_LIST6="${_SHUNT_LIST6} ${nftset_v6}:${default_outbound}" - } - } - [ -n "${_SHUNT_LIST4}" ] && eval ${shunt_list4_var_name}=\"${_SHUNT_LIST4}\" - [ -n "${_SHUNT_LIST6}" ] && eval ${shunt_list6_var_name}=\"${_SHUNT_LIST6}\" -} - -add_shunt_t_rule() { - local shunt_args=${1} - local t_args=${2} - local t_jump_args=${3} - local t_comment=${4} - [ -n "${shunt_args}" ] && { - [ -n "${t_comment}" ] && t_comment="comment \"$t_comment\"" - for j in ${shunt_args}; do - local _set_name=$(echo ${j} | awk -F ':' '{print $1}') - local _outbound=$(echo ${j} | awk -F ':' '{print $2}') - [ -n "${_set_name}" ] && [ -n "${_outbound}" ] && { - local _t_arg="${t_jump_args}" - [ "${_outbound}" = "direct" ] && _t_arg="counter return" - ${t_args} @${_set_name} ${_t_arg} ${t_comment} - } - done - } -} - -load_acl() { - [ "$ENABLED_ACLS" == 1 ] && { - log_i18n 1 "Access Control:" - acl_app - for sid in $(ls -F ${TMP_ACL_PATH} | grep '/$' | awk -F '/' '{print $1}' | grep -v 'default'); do - eval $(uci -q show "${CONFIG}.${sid}" | cut -d'.' -sf 3-) - - tcp_no_redir_ports=${tcp_no_redir_ports:-default} - udp_no_redir_ports=${udp_no_redir_ports:-default} - tcp_proxy_mode="global" - udp_proxy_mode="global" - tcp_redir_ports=${tcp_redir_ports:-default} - udp_redir_ports=${udp_redir_ports:-default} - node=${node:-default} - [ "$tcp_no_redir_ports" = "default" ] && tcp_no_redir_ports=$TCP_NO_REDIR_PORTS - [ "$udp_no_redir_ports" = "default" ] && udp_no_redir_ports=$UDP_NO_REDIR_PORTS - [ "$tcp_redir_ports" = "default" ] && tcp_redir_ports=$TCP_REDIR_PORTS - [ "$udp_redir_ports" = "default" ] && udp_redir_ports=$UDP_REDIR_PORTS - - [ -n "$(get_cache_var "ACL_${sid}_node")" ] && node=$(get_cache_var "ACL_${sid}_node") - [ -n "$(get_cache_var "ACL_${sid}_redir_port")" ] && redir_port=$(get_cache_var "ACL_${sid}_redir_port") - [ -n "$(get_cache_var "ACL_${sid}_dns_port")" ] && dns_redirect_port=$(get_cache_var "ACL_${sid}_dns_port") - [ -n "$node" ] && node_remark=$(config_n_get $node remarks) - - write_ipset_direct=${write_ipset_direct:-1} - [ "${write_ipset_direct}" = "1" ] && { - if [ -n "$(get_cache_var "ACL_${sid}_default")" ]; then - local nftset_white=${nftset_global_white} - local nftset_white6=${nftset_global_white6} - shunt_list4=${SHUNT_LIST4} - shunt_list6=${SHUNT_LIST6} - else - local nftset_white="passwall2_${sid}_white" - local nftset_white6="passwall2_${sid}_white6" - gen_nftset $nftset_white ipv4_addr 3d 3d - gen_nftset $nftset_white6 ipv6_addr 3d 3d - - # Shunt rules IP list (import when use shunt node) - gen_shunt_list "${node}" shunt_list4 shunt_list6 ${write_ipset_direct} ${nftset_white} ${nftset_white6} - fi - } - - _acl_list=${TMP_ACL_PATH}/${sid}/source_list - - for i in $(cat $_acl_list); do - local _ipt_source _ipv4 - local msg - if [ -n "${interface}" ]; then - . /lib/functions/network.sh - local gateway device - network_get_gateway gateway "${interface}" - network_get_device device "${interface}" - [ -z "${device}" ] && device="${interface}" - _ipt_source="iifname ${device} " - msg=$(i18n "Source iface [%s]," "${device}") - else - msg=$(i18n "Source iface [%s]," $(i18n "All")) - fi - if [ -n "$(echo ${i} | grep '^iprange:')" ]; then - _iprange=$(echo ${i} | sed 's#iprange:##g') - _ipt_source=$(factor ${_iprange} "${_ipt_source}ip saddr") - msg="${msg}$(i18n "IP range [%s]," "${_iprange}")" - _ipv4="1" - unset _iprange - elif [ -n "$(echo ${i} | grep '^ipset:')" ]; then - _ipset=$(echo ${i} | sed 's#ipset:##g') - _ipt_source="${_ipt_source}ip daddr @${_ipset}" - msg="${msg}Nftset$(i18n "[%s]," "${_ipset}")" - unset _ipset - elif [ -n "$(echo ${i} | grep '^ip:')" ]; then - _ip=$(echo ${i} | sed 's#ip:##g') - _ipt_source=$(factor ${_ip} "${_ipt_source}ip saddr") - msg="${msg}IP$(i18n "[%s]," "${_ip}")" - _ipv4="1" - unset _ip - elif [ -n "$(echo ${i} | grep '^mac:')" ]; then - _mac=$(echo ${i} | sed 's#mac:##g') - _ipt_source=$(factor ${_mac} "${_ipt_source}ether saddr") - msg="${msg}MAC$(i18n "[%s]," "${_mac}")" - unset _mac - elif [ -n "$(echo ${i} | grep '^any')" ]; then - msg="${msg}$(i18n "All device,")" - else - continue - fi - msg="$(i18n "[%s]," "${remarks}")${msg}" - - [ "$tcp_no_redir_ports" != "disable" ] && { - if ! has_1_65535 "$tcp_no_redir_ports"; then - nft "add rule $NFTABLE_NAME $nft_prerouting_chain ${_ipt_source} ip protocol tcp $(factor $tcp_no_redir_ports "tcp dport") counter return comment \"$remarks\"" - [ "$_ipv4" != "1" ] && nft "add rule $NFTABLE_NAME PSW2_MANGLE_V6 ${_ipt_source} meta l4proto tcp $(factor $tcp_no_redir_ports "tcp dport") counter return comment \"$remarks\"" - log 2 "${msg}$(i18n "not proxy %s port [%s]" "TCP" "${tcp_no_redir_ports}")" - else - # It will return when it ends, so no extra rules are needed. - tcp_proxy_mode="disable" - log 2 "${msg}$(i18n "not proxy all %s" "TCP")" - fi - } - - [ "$udp_no_redir_ports" != "disable" ] && { - if ! has_1_65535 "$udp_no_redir_ports"; then - nft "add rule $NFTABLE_NAME PSW2_MANGLE ip protocol udp ${_ipt_source} $(factor $udp_no_redir_ports "udp dport") counter return comment \"$remarks\"" - [ "$_ipv4" != "1" ] && nft "add rule $NFTABLE_NAME PSW2_MANGLE_V6 meta l4proto udp ${_ipt_source} $(factor $udp_no_redir_ports "udp dport") counter return comment \"$remarks\"" 2>/dev/null - log 2 "${msg}$(i18n "not proxy %s port [%s]" "UDP" "${udp_no_redir_ports}")" - else - # It will return when it ends, so no extra rules are needed. - udp_proxy_mode="disable" - log 2 "${msg}$(i18n "not proxy all %s" "UDP")" - fi - } - - if ([ "$tcp_proxy_mode" != "disable" ] || [ "$udp_proxy_mode" != "disable" ]) && [ -n "$dns_redirect_port" ]; then - [ -n "$dns_redirect_port" ] && { - nft "add rule $NFTABLE_NAME PSW2_DNS ip protocol udp ${_ipt_source} udp dport 53 counter redirect to :$dns_redirect_port comment \"$remarks\"" - nft "add rule $NFTABLE_NAME PSW2_DNS ip protocol tcp ${_ipt_source} tcp dport 53 counter redirect to :$dns_redirect_port comment \"$remarks\"" - nft "add rule $NFTABLE_NAME PSW2_DNS meta l4proto udp ${_ipt_source} udp dport 53 counter redirect to :$dns_redirect_port comment \"$remarks\"" - nft "add rule $NFTABLE_NAME PSW2_DNS meta l4proto tcp ${_ipt_source} tcp dport 53 counter redirect to :$dns_redirect_port comment \"$remarks\"" - [ -z "$(get_cache_var "ACL_${sid}_default")" ] && log 2 "${msg}$(i18n "Using a node that is different from the global configuration, DNS has been forcibly redirected to a dedicated DNS server.")" - } - else - nft "add rule $NFTABLE_NAME PSW2_DNS ip protocol udp ${_ipt_source} udp dport 53 counter return comment \"$remarks\"" - nft "add rule $NFTABLE_NAME PSW2_DNS ip protocol tcp ${_ipt_source} tcp dport 53 counter return comment \"$remarks\"" - nft "add rule $NFTABLE_NAME PSW2_DNS meta l4proto udp ${_ipt_source} udp dport 53 counter return comment \"$remarks\"" - nft "add rule $NFTABLE_NAME PSW2_DNS meta l4proto tcp ${_ipt_source} tcp dport 53 counter return comment \"$remarks\"" - fi - - [ "$tcp_proxy_mode" != "disable" ] && [ -n "$redir_port" ] && { - msg2="${msg}$(i18n "Use the %s node [%s]" "TCP" "${node_remark}")" - if [ -n "${is_tproxy}" ]; then - msg2="${msg2}(TPROXY:${redir_port})" - nft_chain="PSW2_MANGLE" - nft_j="counter jump PSW2_RULE" - else - msg2="${msg2}(REDIRECT:${redir_port})" - nft_chain="PSW2_NAT" - nft_j="$(REDIRECT $redir_port)" - fi - - [ "$accept_icmp" = "1" ] && { - nft "add rule $NFTABLE_NAME PSW2_ICMP_REDIRECT ip protocol icmp ${_ipt_source} ip daddr $FAKE_IP $(REDIRECT) comment \"$remarks\"" - add_shunt_t_rule "${shunt_list4}" "nft add rule $NFTABLE_NAME PSW2_ICMP_REDIRECT ip protocol icmp ${_ipt_source} ip daddr" "$(REDIRECT)" "$remarks" - nft "add rule $NFTABLE_NAME PSW2_ICMP_REDIRECT ip protocol icmp ${_ipt_source} $(REDIRECT) comment \"$remarks\"" - nft "add rule $NFTABLE_NAME PSW2_ICMP_REDIRECT ip protocol icmp ${_ipt_source} return comment \"$remarks\"" - } - - [ "$accept_icmpv6" = "1" ] && [ "$PROXY_IPV6" == "1" ] && { - nft "add rule $NFTABLE_NAME PSW2_ICMP_REDIRECT meta l4proto icmpv6 ${_ipt_source} ip6 daddr $FAKE_IP_6 $(REDIRECT) comment \"$remarks\"" 2>/dev/null - add_shunt_t_rule "${shunt_list6}" "nft add rule $NFTABLE_NAME PSW2_ICMP_REDIRECT meta l4proto icmpv6 ${_ipt_source} ip6 daddr" "$(REDIRECT)" "$remarks" 2>/dev/null - nft "add rule $NFTABLE_NAME PSW2_ICMP_REDIRECT meta l4proto icmpv6 ${_ipt_source} $(REDIRECT) comment \"$remarks\"" 2>/dev/null - nft "add rule $NFTABLE_NAME PSW2_ICMP_REDIRECT meta l4proto icmpv6 ${_ipt_source} return comment \"$remarks\"" 2>/dev/null - } - - nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp ${_ipt_source} ip daddr $FAKE_IP ${nft_j} comment \"$remarks\"" - add_shunt_t_rule "${shunt_list4}" "nft add rule $NFTABLE_NAME $nft_chain ip protocol tcp ${_ipt_source} $(factor $tcp_redir_ports "tcp dport") ip daddr" "${nft_j}" "$remarks" - nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp ${_ipt_source} $(factor $tcp_redir_ports "tcp dport") ${nft_j} comment \"$remarks\"" - [ -n "${is_tproxy}" ] && nft "add rule $NFTABLE_NAME PSW2_MANGLE ip protocol tcp ${_ipt_source} $(REDIRECT $redir_port TPROXY4) comment \"$remarks\"" - - [ "$PROXY_IPV6" == "1" ] && [ "$_ipv4" != "1" ] && { - nft "add rule $NFTABLE_NAME PSW2_MANGLE_V6 meta l4proto tcp ${_ipt_source} ip6 daddr $FAKE_IP_6 counter jump PSW2_RULE comment \"$remarks\"" - add_shunt_t_rule "${shunt_list6}" "nft add rule $NFTABLE_NAME PSW2_MANGLE_V6 meta l4proto tcp ${_ipt_source} $(factor $tcp_redir_ports "tcp dport") ip6 daddr" "counter jump PSW2_RULE" "$remarks" 2>/dev/null - nft "add rule $NFTABLE_NAME PSW2_MANGLE_V6 meta l4proto tcp ${_ipt_source} $(factor $tcp_redir_ports "tcp dport") counter jump PSW2_RULE comment \"$remarks\"" 2>/dev/null - nft "add rule $NFTABLE_NAME PSW2_MANGLE_V6 meta l4proto tcp ${_ipt_source} $(REDIRECT $redir_port TPROXY) comment \"$remarks\"" 2>/dev/null - } - log 2 "${msg2}" - } - nft "add rule $NFTABLE_NAME $nft_prerouting_chain ip protocol tcp ${_ipt_source} counter return comment \"$remarks\"" - [ "$_ipv4" != "1" ] && nft "add rule $NFTABLE_NAME PSW2_MANGLE_V6 meta l4proto tcp ${_ipt_source} counter return comment \"$remarks\"" 2>/dev/null - - [ "$udp_proxy_mode" != "disable" ] && [ -n "$redir_port" ] && { - msg2="${msg}$(i18n "Use the %s node [%s]" "UDP" "${node_remark}")(TPROXY:${redir_port})" - - nft "add rule $NFTABLE_NAME PSW2_MANGLE ip protocol udp ${_ipt_source} ip daddr $FAKE_IP counter jump PSW2_RULE comment \"$remarks\"" - add_shunt_t_rule "${shunt_list4}" "nft add rule $NFTABLE_NAME PSW2_MANGLE ip protocol udp ${_ipt_source} $(factor $udp_redir_ports "udp dport") ip daddr" "counter jump PSW2_RULE" "$remarks" - nft "add rule $NFTABLE_NAME PSW2_MANGLE ip protocol udp ${_ipt_source} $(factor $udp_redir_ports "udp dport") counter jump PSW2_RULE comment \"$remarks\"" - nft "add rule $NFTABLE_NAME PSW2_MANGLE ip protocol udp ${_ipt_source} $(REDIRECT $redir_port TPROXY4) comment \"$remarks\"" - - [ "$PROXY_IPV6" == "1" ] && [ "$_ipv4" != "1" ] && { - nft "add rule $NFTABLE_NAME PSW2_MANGLE_V6 meta l4proto udp ${_ipt_source} ip6 daddr $FAKE_IP_6 counter jump PSW2_RULE comment \"$remarks\"" - add_shunt_t_rule "${shunt_list6}" "nft add rule $NFTABLE_NAME PSW2_MANGLE_V6 meta l4proto udp ${_ipt_source} $(factor $udp_redir_ports "udp dport") ip6 daddr" "counter jump PSW2_RULE" "$remarks" 2>/dev/null - nft "add rule $NFTABLE_NAME PSW2_MANGLE_V6 meta l4proto udp ${_ipt_source} $(factor $udp_redir_ports "udp dport") counter jump PSW2_RULE comment \"$remarks\"" 2>/dev/null - nft "add rule $NFTABLE_NAME PSW2_MANGLE_V6 meta l4proto udp ${_ipt_source} $(REDIRECT $redir_port TPROXY) comment \"$remarks\"" 2>/dev/null - } - log 2 "${msg2}" - } - nft "add rule $NFTABLE_NAME PSW2_MANGLE ip protocol udp ${_ipt_source} counter return comment \"$remarks\"" - [ "$_ipv4" != "1" ] && nft "add rule $NFTABLE_NAME PSW2_MANGLE_V6 meta l4proto udp ${_ipt_source} counter return comment \"$remarks\"" 2>/dev/null - unset nft_chain nft_j _ipt_source msg msg2 _ipv4 - done - unset enabled sid remarks sources tcp_proxy_mode udp_proxy_mode tcp_no_redir_ports udp_no_redir_ports tcp_redir_ports udp_redir_ports node interface write_ipset_direct - unset redir_port node_remark _acl_list - done - } - - [ "$ENABLED_DEFAULT_ACL" == 1 ] && [ "$CLIENT_PROXY" == 1 ] && { - local comment="$(i18n "Default")" - msg="$(i18n "[%s]," ${comment})" - - [ "$TCP_NO_REDIR_PORTS" != "disable" ] && { - nft "add rule $NFTABLE_NAME $nft_prerouting_chain ip protocol tcp $(factor $TCP_NO_REDIR_PORTS "tcp dport") counter return comment \"${comment}\"" - nft "add rule $NFTABLE_NAME PSW2_MANGLE_V6 meta l4proto tcp $(factor $TCP_NO_REDIR_PORTS "tcp dport") counter return comment \"${comment}\"" - if ! has_1_65535 "$TCP_NO_REDIR_PORTS"; then - log 2 "${msg}$(i18n "not proxy %s port [%s]" "TCP" "${TCP_NO_REDIR_PORTS}")" - else - TCP_PROXY_MODE="disable" - log 2 "${msg}$(i18n "not proxy all %s" "TCP")" - fi - } - - [ "$UDP_NO_REDIR_PORTS" != "disable" ] && { - nft "add rule $NFTABLE_NAME PSW2_MANGLE ip protocol udp $(factor $UDP_NO_REDIR_PORTS "udp dport") counter return comment \"${comment}\"" - nft "add rule $NFTABLE_NAME PSW2_MANGLE_V6 counter meta l4proto udp $(factor $UDP_NO_REDIR_PORTS "udp dport") counter return comment \"${comment}\"" - if ! has_1_65535 "$UDP_NO_REDIR_PORTS"; then - log 2 "${msg}$(i18n "not proxy %s port [%s]" "UDP" "${UDP_NO_REDIR_PORTS}")" - else - UDP_PROXY_MODE="disable" - log 2 "${msg}$(i18n "not proxy all %s" "UDP")" - fi - } - - if ([ "$TCP_PROXY_MODE" != "disable" ] || [ "$UDP_PROXY_MODE" != "disable" ]) && [ -n "$NODE" ]; then - [ -n "$DNS_REDIRECT_PORT" ] && { - nft "add rule $NFTABLE_NAME PSW2_DNS ip protocol udp udp dport 53 counter redirect to :$DNS_REDIRECT_PORT comment \"${comment}\"" - nft "add rule $NFTABLE_NAME PSW2_DNS ip protocol tcp tcp dport 53 counter redirect to :$DNS_REDIRECT_PORT comment \"${comment}\"" - nft "add rule $NFTABLE_NAME PSW2_DNS meta l4proto udp udp dport 53 counter redirect to :$DNS_REDIRECT_PORT comment \"${comment}\"" - nft "add rule $NFTABLE_NAME PSW2_DNS meta l4proto tcp tcp dport 53 counter redirect to :$DNS_REDIRECT_PORT comment \"${comment}\"" - } - fi - - if [ "$TCP_PROXY_MODE" != "disable" ] && [ -n "$NODE" ]; then - msg2="${msg}$(i18n "Use the %s node [%s]" "TCP" "$(config_n_get $NODE remarks)")" - if [ -n "${is_tproxy}" ]; then - msg2="${msg2}(TPROXY:${REDIR_PORT})" - nft_chain="PSW2_MANGLE" - nft_j="counter jump PSW2_RULE" - else - msg2="${msg2}(REDIRECT:${REDIR_PORT})" - nft_chain="PSW2_NAT" - nft_j="$(REDIRECT $REDIR_PORT)" - fi - - [ "$accept_icmp" = "1" ] && { - nft "add rule $NFTABLE_NAME PSW2_ICMP_REDIRECT ip protocol icmp ip daddr $FAKE_IP $(REDIRECT) comment \"${comment}\"" - add_shunt_t_rule "${SHUNT_LIST4}" "nft add rule $NFTABLE_NAME PSW2_ICMP_REDIRECT ip protocol icmp ip daddr" "$(REDIRECT)" "${comment}" - nft "add rule $NFTABLE_NAME PSW2_ICMP_REDIRECT ip protocol icmp $(REDIRECT) comment \"${comment}\"" - nft "add rule $NFTABLE_NAME PSW2_ICMP_REDIRECT ip protocol icmp return comment \"${comment}\"" - } - - [ "$accept_icmpv6" = "1" ] && [ "$PROXY_IPV6" == "1" ] && { - nft "add rule $NFTABLE_NAME PSW2_ICMP_REDIRECT meta l4proto icmpv6 ip6 daddr $FAKE_IP_6 $(REDIRECT) comment \"${comment}\"" - add_shunt_t_rule "${SHUNT_LIST6}" "nft add rule $NFTABLE_NAME PSW2_ICMP_REDIRECT meta l4proto icmpv6 ip6 daddr" "$(REDIRECT)" "${comment}" - nft "add rule $NFTABLE_NAME PSW2_ICMP_REDIRECT meta l4proto icmpv6 $(REDIRECT) comment \"${comment}\"" - nft "add rule $NFTABLE_NAME PSW2_ICMP_REDIRECT meta l4proto icmpv6 return comment \"${comment}\"" - } - - nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp ip daddr $FAKE_IP ${nft_j} comment \"${comment}\"" - add_shunt_t_rule "${SHUNT_LIST4}" "nft add rule $NFTABLE_NAME $nft_chain ip protocol tcp $(factor $TCP_REDIR_PORTS "tcp dport") ip daddr" "${nft_j}" "${comment}" - nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp $(factor $TCP_REDIR_PORTS "tcp dport") ${nft_j} comment \"${comment}\"" - [ -n "${is_tproxy}" ] && nft "add rule $NFTABLE_NAME PSW2_MANGLE ip protocol tcp $(REDIRECT $REDIR_PORT TPROXY4) comment \"${comment}\"" - - [ "$PROXY_IPV6" == "1" ] && { - nft "add rule $NFTABLE_NAME PSW2_MANGLE_V6 meta l4proto tcp ip6 daddr $FAKE_IP_6 jump PSW2_RULE comment \"${comment}\"" - add_shunt_t_rule "${SHUNT_LIST6}" "nft add rule $NFTABLE_NAME PSW2_MANGLE_V6 meta l4proto tcp $(factor $TCP_REDIR_PORTS "tcp dport") ip6 daddr" "${nft_j}" "${comment}" - nft "add rule $NFTABLE_NAME PSW2_MANGLE_V6 meta l4proto tcp $(factor $TCP_REDIR_PORTS "tcp dport") counter jump PSW2_RULE comment \"${comment}\"" - nft "add rule $NFTABLE_NAME PSW2_MANGLE_V6 meta l4proto tcp $(REDIRECT $REDIR_PORT TPROXY) comment \"${comment}\"" - } - - log 2 "${msg2}" - fi - - if [ "$UDP_PROXY_MODE" != "disable" ] && [ -n "$NODE" ]; then - msg2="${msg}$(i18n "Use the %s node [%s]" "UDP" "$(config_n_get $NODE remarks)")(TPROXY:${REDIR_PORT})" - - nft "add rule $NFTABLE_NAME PSW2_MANGLE ip protocol udp ip daddr $FAKE_IP counter jump PSW2_RULE comment \"${comment}\"" - add_shunt_t_rule "${SHUNT_LIST4}" "nft add rule $NFTABLE_NAME PSW2_MANGLE ip protocol udp $(factor $UDP_REDIR_PORTS "udp dport") ip daddr" "counter jump PSW2_RULE" "${comment}" - nft "add rule $NFTABLE_NAME PSW2_MANGLE ip protocol udp $(factor $UDP_REDIR_PORTS "udp dport") counter jump PSW2_RULE comment \"${comment}\"" - nft "add rule $NFTABLE_NAME PSW2_MANGLE ip protocol udp $(REDIRECT $REDIR_PORT TPROXY4) comment \"${comment}\"" - - [ "$PROXY_IPV6" == "1" ] && { - nft "add rule $NFTABLE_NAME PSW2_MANGLE_V6 meta l4proto udp ip6 daddr $FAKE_IP_6 jump PSW2_RULE comment \"${comment}\"" - add_shunt_t_rule "${SHUNT_LIST6}" "nft add rule $NFTABLE_NAME PSW2_MANGLE_V6 meta l4proto udp $(factor $UDP_REDIR_PORTS "udp dport") ip6 daddr" "counter jump PSW2_RULE" "${comment}" - nft "add rule $NFTABLE_NAME PSW2_MANGLE_V6 meta l4proto udp $(factor $UDP_REDIR_PORTS "udp dport") counter jump PSW2_RULE comment \"${comment}\"" - nft "add rule $NFTABLE_NAME PSW2_MANGLE_V6 meta l4proto udp $(REDIRECT $REDIR_PORT TPROXY) comment \"${comment}\"" - } - - log 2 "${msg2}" - udp_flag=1 - fi - } -} - -filter_haproxy() { - for item in $(uci show $CONFIG | grep ".lbss=" | cut -d "'" -f 2); do - local ip=$(get_host_ip ipv4 $(echo $item | awk -F ":" '{print $1}') 1) - [ -n "$ip" ] && insert_nftset $NFTSET_VPS "-1" $ip - done - log_i18n 1 "Add node to the load balancer is directly connected to %s[%s]." "nftset" "${NFTSET_VPS}" -} - -filter_vps_addr() { - for server_host in $@; do - local vps_ip4=$(get_host_ip "ipv4" ${server_host}) - local vps_ip6=$(get_host_ip "ipv6" ${server_host}) - [ -n "$vps_ip4" ] && insert_nftset $NFTSET_VPS "-1" $vps_ip4 - [ -n "$vps_ip6" ] && insert_nftset $NFTSET_VPS6 "-1" $vps_ip6 - done -} - -filter_vpsip() { - uci show $CONFIG | grep -E "(.address=|.download_address=)" | cut -d "'" -f 2 | grep -E "([0-9]{1,3}[\.]){3}[0-9]{1,3}" | grep -v "^127\.0\.0\.1$" | sed -e "/^$/d" | insert_nftset $NFTSET_VPS "-1" - #log 1 "$(i18n "Add all %s nodes to %s[%s] direct connection complete." "IPv4" "nftset" "${$NFTSET_VPS}")" - uci show $CONFIG | grep -E "(.address=|.download_address=)" | cut -d "'" -f 2 | grep -E "([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}" | sed -e "/^$/d" | insert_nftset $NFTSET_VPS6 "-1" - #log 1 "$(i18n "Add all %s nodes to %s[%s] direct connection complete." "IPv6" "nftset" "${$NFTSET_VPS6}")" -} - -filter_server_port() { - local address=${1} - local port=${2} - local stream=${3} - stream=$(echo ${3} | tr 'A-Z' 'a-z') - local _is_tproxy - _is_tproxy=${is_tproxy} - [ "$stream" == "udp" ] && _is_tproxy="TPROXY" - - for _ipt in 4 6; do - [ "$_ipt" == "4" ] && _ip_type=ip - [ "$_ipt" == "6" ] && _ip_type=ip6 - nft "list chain $NFTABLE_NAME $nft_output_chain" 2>/dev/null | grep -q "${address}:${port}" - if [ $? -ne 0 ]; then - nft "insert rule $NFTABLE_NAME $nft_output_chain meta l4proto $stream $_ip_type daddr $address $stream dport $port return comment \"${address}:${port}\"" 2>/dev/null - fi - done -} - -filter_node() { - local node=${1} - local stream=${2} - if [ -n "$node" ]; then - local address=$(config_n_get $node address) - local port=$(config_n_get $node port) - [ -z "$address" ] && [ -z "$port" ] && { - return 1 - } - filter_server_port $address $port $stream - filter_server_port $address $port $stream - fi -} - -filter_direct_node_list() { - [ ! -s "$TMP_PATH/direct_node_list" ] && return - for _node_id in $(cat $TMP_PATH/direct_node_list | awk '!seen[$0]++'); do - filter_node "$_node_id" TCP - filter_node "$_node_id" UDP - unset _node_id - done -} - -add_firewall_rule() { - log_i18n 0 "Starting to load %s firewall rules..." "nftables" - gen_nft_tables - gen_nftset $NFTSET_WAN ipv4_addr 0 "-1" - gen_nftset $NFTSET_LOCAL ipv4_addr 0 "-1" - gen_nftset $NFTSET_LAN ipv4_addr 0 "-1" $(gen_lanlist) - gen_nftset $NFTSET_VPS ipv4_addr 0 "-1" - - gen_nftset $NFTSET_WAN6 ipv6_addr 0 "-1" - gen_nftset $NFTSET_LOCAL6 ipv6_addr 0 "-1" - gen_nftset $NFTSET_LAN6 ipv6_addr 0 "-1" $(gen_lanlist_6) - gen_nftset $NFTSET_VPS6 ipv6_addr 0 "-1" - - ip address show | grep -w "inet" | awk '{print $2}' | awk -F '/' '{print $1}' | sed -e "s/ /\n/g" | insert_nftset $NFTSET_LOCAL "-1" - ip address show | grep -w "inet6" | awk '{print $2}' | awk -F '/' '{print $1}' | sed -e "s/ /\n/g" | insert_nftset $NFTSET_LOCAL6 "-1" - - # Ignore special IP ranges - local lan_ifname lan_ip - lan_ifname=$(uci -q -p /tmp/state get network.lan.ifname) - [ -n "$lan_ifname" ] && { - lan_ip=$(ip address show $lan_ifname | grep -w "inet" | awk '{print $2}') - lan_ip6=$(ip address show $lan_ifname | grep -w "inet6" | awk '{print $2}') - #log_i18n 1 "local network segments (%s) direct connection: %s" "IPv4" "${lan_ip}" - #log_i18n 1 "local network segments (%s) direct connection: %s" "IPv6" "${lan_ip6}" - - [ -n "$lan_ip" ] && insert_nftset $NFTSET_LAN "-1" $(echo $lan_ip | sed -e "s/ /\n/g") - [ -n "$lan_ip6" ] && insert_nftset $NFTSET_LAN6 "-1" $(echo $lan_ip6 | sed -e "s/ /\n/g") - } - - [ -n "$ISP_DNS" ] && { - for ispip in $ISP_DNS; do - insert_nftset $NFTSET_LAN "-1" $ispip - log_i18n 1 "$(i18n "Add ISP %s DNS to the whitelist: %s" "IPv4" "${ispip}")" - done - } - - [ -n "$ISP_DNS6" ] && { - for ispip6 in $ISP_DNS6; do - insert_nftset $NFTSET_LAN6 "-1" $ispip6 - log_i18n 1 "$(i18n "Add ISP %s DNS to the whitelist: %s" "IPv6" "${ispip6}")" - done - } - - local nftset_global_white="passwall2_global_white" - local nftset_global_white6="passwall2_global_white6" - gen_nftset $nftset_global_white ipv4_addr 0 0 - gen_nftset $nftset_global_white6 ipv6_addr 0 0 - - # Shunt rules IP list (import when use shunt node) - gen_shunt_list "${NODE}" SHUNT_LIST4 SHUNT_LIST6 ${WRITE_IPSET_DIRECT} ${nftset_global_white} ${nftset_global_white6} - - # Filter all node IPs - filter_vpsip > /dev/null 2>&1 & - filter_haproxy > /dev/null 2>&1 & - # Prevent some conditions - filter_vps_addr $(config_n_get $NODE address) > /dev/null 2>&1 & - filter_vps_addr $(config_n_get $NODE download_address) > /dev/null 2>&1 & - - accept_icmp=$(config_t_get global_forwarding accept_icmp 0) - accept_icmpv6=$(config_t_get global_forwarding accept_icmpv6 0) - - if [ "${TCP_PROXY_WAY}" = "redirect" ]; then - unset is_tproxy - nft_prerouting_chain="PSW2_NAT" - nft_output_chain="PSW2_OUTPUT_NAT" - elif [ "${TCP_PROXY_WAY}" = "tproxy" ]; then - is_tproxy="TPROXY" - nft_prerouting_chain="PSW2_MANGLE" - nft_output_chain="PSW2_OUTPUT_MANGLE" - fi - - nft "add chain $NFTABLE_NAME PSW2_DNS" - nft "flush chain $NFTABLE_NAME PSW2_DNS" - if [ $(config_t_get global dns_redirect "1") = "0" ]; then - #Only hijack when dest address is local IP - nft "insert rule $NFTABLE_NAME dstnat ip daddr @${NFTSET_LOCAL} jump PSW2_DNS" - nft "insert rule $NFTABLE_NAME dstnat ip6 daddr @${NFTSET_LOCAL6} jump PSW2_DNS" - else - nft "insert rule $NFTABLE_NAME dstnat jump PSW2_DNS" - fi - - # for ipv4 ipv6 tproxy mark - nft "add chain $NFTABLE_NAME PSW2_RULE" - nft "flush chain $NFTABLE_NAME PSW2_RULE" - nft "add rule $NFTABLE_NAME PSW2_RULE meta mark set ct mark counter" - nft "add rule $NFTABLE_NAME PSW2_RULE meta mark 1 counter return" - nft "add rule $NFTABLE_NAME PSW2_RULE tcp flags syn meta mark set mark and 0x0 xor 0x1 counter" - nft "add rule $NFTABLE_NAME PSW2_RULE meta l4proto udp ct state new,related meta mark set mark and 0x0 xor 0x1 counter" - nft "add rule $NFTABLE_NAME PSW2_RULE ct mark set mark counter" - - #ipv4 tproxy mode and udp - nft "add chain $NFTABLE_NAME PSW2_MANGLE" - nft "flush chain $NFTABLE_NAME PSW2_MANGLE" - nft "add rule $NFTABLE_NAME PSW2_MANGLE ip daddr @$NFTSET_LAN counter return" - nft "add rule $NFTABLE_NAME PSW2_MANGLE ip daddr @$NFTSET_VPS counter return" - nft "add rule $NFTABLE_NAME PSW2_MANGLE ct direction reply counter return" - - nft "add chain $NFTABLE_NAME PSW2_OUTPUT_MANGLE" - nft "flush chain $NFTABLE_NAME PSW2_OUTPUT_MANGLE" - nft "add rule $NFTABLE_NAME PSW2_OUTPUT_MANGLE ip daddr @$NFTSET_LAN counter return" - nft "add rule $NFTABLE_NAME PSW2_OUTPUT_MANGLE ip daddr @$NFTSET_VPS counter return" - nft "add rule $NFTABLE_NAME PSW2_OUTPUT_MANGLE ct direction reply counter return" - [ -n "$AUTO_DNS" ] && { - for auto_dns in $(echo $AUTO_DNS | tr ',' ' '); do - local dns_address=$(echo $auto_dns | awk -F '#' '{print $1}') - local dns_port=$(echo $auto_dns | awk -F '#' '{print $2}') - nft "add rule $NFTABLE_NAME PSW2_OUTPUT_MANGLE ip protocol udp ip daddr ${dns_address} $(factor ${dns_port:-53} "udp dport") counter return" - log_i18n 1 "$(i18n "Add direct DNS to %s: %s" "nftables" "${dns_address}:${dns_port:-53}")" - done - } - nft "add rule $NFTABLE_NAME PSW2_OUTPUT_MANGLE meta mark 0xff counter return" - - # jump chains - nft "add rule $NFTABLE_NAME mangle_prerouting ip protocol udp counter jump PSW2_MANGLE" - [ -n "${is_tproxy}" ] && nft "add rule $NFTABLE_NAME mangle_prerouting ip protocol tcp counter jump PSW2_MANGLE" - - #ipv4 tcp redirect mode - [ -z "${is_tproxy}" ] && { - nft "add chain $NFTABLE_NAME PSW2_NAT" - nft "flush chain $NFTABLE_NAME PSW2_NAT" - nft "add rule $NFTABLE_NAME PSW2_NAT ip daddr @$NFTSET_LAN counter return" - nft "add rule $NFTABLE_NAME PSW2_NAT ip daddr @$NFTSET_VPS counter return" - nft "add rule $NFTABLE_NAME dstnat ip protocol tcp counter jump PSW2_NAT" - - nft "add chain $NFTABLE_NAME PSW2_OUTPUT_NAT" - nft "flush chain $NFTABLE_NAME PSW2_OUTPUT_NAT" - nft "add rule $NFTABLE_NAME PSW2_OUTPUT_NAT ip daddr @$NFTSET_LAN counter return" - nft "add rule $NFTABLE_NAME PSW2_OUTPUT_NAT ip daddr @$NFTSET_VPS counter return" - nft "add rule $NFTABLE_NAME PSW2_OUTPUT_NAT meta mark 0xff counter return" - } - - #icmp ipv6-icmp redirect - if [ "$accept_icmp" = "1" ]; then - nft "add chain $NFTABLE_NAME PSW2_ICMP_REDIRECT" - nft "flush chain $NFTABLE_NAME PSW2_ICMP_REDIRECT" - nft "add rule $NFTABLE_NAME PSW2_ICMP_REDIRECT ip daddr @$NFTSET_LAN counter return" - nft "add rule $NFTABLE_NAME PSW2_ICMP_REDIRECT ip daddr @$NFTSET_VPS counter return" - - [ "$accept_icmpv6" = "1" ] && { - nft "add rule $NFTABLE_NAME PSW2_ICMP_REDIRECT ip6 daddr @$NFTSET_LAN6 counter return" - nft "add rule $NFTABLE_NAME PSW2_ICMP_REDIRECT ip6 daddr @$NFTSET_VPS6 counter return" - } - - nft "add rule $NFTABLE_NAME dstnat meta l4proto {icmp,icmpv6} counter jump PSW2_ICMP_REDIRECT" - nft "add rule $NFTABLE_NAME nat_output meta l4proto {icmp,icmpv6} counter jump PSW2_ICMP_REDIRECT" - fi - - WAN_IP=$(get_wan_ips ip4) - [ -n "${WAN_IP}" ] && { - nft flush set $NFTABLE_NAME $NFTSET_WAN - insert_nftset $NFTSET_WAN "-1" $WAN_IP - [ -z "${is_tproxy}" ] && nft "add rule $NFTABLE_NAME PSW2_NAT ip daddr @$NFTSET_WAN counter return comment \"WAN_IP_RETURN\"" - nft "add rule $NFTABLE_NAME PSW2_MANGLE ip daddr @$NFTSET_WAN counter return comment \"WAN_IP_RETURN\"" - } - unset WAN_IP - - ip rule add fwmark 1 lookup 100 - ip route add local 0.0.0.0/0 dev lo table 100 - - #ipv6 tproxy mode and udp - nft "add chain $NFTABLE_NAME PSW2_MANGLE_V6" - nft "flush chain $NFTABLE_NAME PSW2_MANGLE_V6" - nft "add rule $NFTABLE_NAME PSW2_MANGLE_V6 ip6 daddr @$NFTSET_LAN6 counter return" - nft "add rule $NFTABLE_NAME PSW2_MANGLE_V6 ip6 daddr @$NFTSET_VPS6 counter return" - nft "add rule $NFTABLE_NAME PSW2_MANGLE_V6 ct direction reply counter return" - - nft "add chain $NFTABLE_NAME PSW2_OUTPUT_MANGLE_V6" - nft "flush chain $NFTABLE_NAME PSW2_OUTPUT_MANGLE_V6" - nft "add rule $NFTABLE_NAME PSW2_OUTPUT_MANGLE_V6 ip6 daddr @$NFTSET_LAN6 counter return" - nft "add rule $NFTABLE_NAME PSW2_OUTPUT_MANGLE_V6 ip6 daddr @$NFTSET_VPS6 counter return" - nft "add rule $NFTABLE_NAME PSW2_OUTPUT_MANGLE_V6 ct direction reply counter return" - nft "add rule $NFTABLE_NAME PSW2_OUTPUT_MANGLE_V6 meta mark 0xff counter return" - - # jump chains - [ "$PROXY_IPV6" == "1" ] && { - nft "add rule $NFTABLE_NAME mangle_prerouting meta nfproto {ipv6} counter jump PSW2_MANGLE_V6" - nft "add rule $NFTABLE_NAME mangle_output meta nfproto {ipv6} counter jump PSW2_OUTPUT_MANGLE_V6 comment \"PSW2_OUTPUT_MANGLE\"" - - WAN6_IP=$(get_wan_ips ip6) - [ -n "${WAN6_IP}" ] && { - nft flush set $NFTABLE_NAME $NFTSET_WAN6 - insert_nftset $NFTSET_WAN6 "-1" $WAN6_IP - nft "add rule $NFTABLE_NAME PSW2_MANGLE_V6 ip6 daddr @$NFTSET_WAN6 counter return comment \"WAN6_IP_RETURN\"" - } - unset WAN6_IP - - ip -6 rule add fwmark 1 table 100 - ip -6 route add local ::/0 dev lo table 100 - } - - [ "$ENABLED_DEFAULT_ACL" == 1 ] && { - TCP_LOCALHOST_PROXY=$LOCALHOST_PROXY - UDP_LOCALHOST_PROXY=$LOCALHOST_PROXY - - msg="$(i18n "[Local],")" - [ "$TCP_NO_REDIR_PORTS" != "disable" ] && { - nft "add rule $NFTABLE_NAME $nft_output_chain ip protocol tcp $(factor $TCP_NO_REDIR_PORTS "tcp dport") counter return" - nft "add rule $NFTABLE_NAME PSW2_OUTPUT_MANGLE_V6 meta l4proto tcp $(factor $TCP_NO_REDIR_PORTS "tcp dport") counter return" - if ! has_1_65535 "$TCP_NO_REDIR_PORTS"; then - log 1 "${msg}$(i18n "not proxy %s port [%s]" "TCP" "${TCP_NO_REDIR_PORTS}")" - else - unset TCP_LOCALHOST_PROXY - log 1 "${msg}$(i18n "not proxy all %s" "TCP")" - fi - } - - [ "$UDP_NO_REDIR_PORTS" != "disable" ] && { - nft "add rule $NFTABLE_NAME PSW2_OUTPUT_MANGLE ip protocol udp $(factor $UDP_NO_REDIR_PORTS "udp dport") counter return" - nft "add rule $NFTABLE_NAME PSW2_OUTPUT_MANGLE_V6 meta l4proto udp $(factor $UDP_NO_REDIR_PORTS "udp dport") counter return" - if ! has_1_65535 "$UDP_NO_REDIR_PORTS"; then - log 1 "${msg}$(i18n "not proxy %s port [%s]" "UDP" "${UDP_NO_REDIR_PORTS}")" - else - unset UDP_LOCALHOST_PROXY - log 1 "${msg}$(i18n "not proxy all %s" "UDP")" - fi - } - - if [ -n "$NODE" ] && ([ "$TCP_LOCALHOST_PROXY" = "1" ] || [ "$UDP_LOCALHOST_PROXY" = "1" ]); then - [ -n "$DNS_REDIRECT_PORT" ] && { - nft "add rule $NFTABLE_NAME nat_output ip protocol udp oif lo udp dport 53 counter redirect to :$DNS_REDIRECT_PORT comment \"PSW2_DNS\"" - nft "add rule $NFTABLE_NAME nat_output ip protocol tcp oif lo tcp dport 53 counter redirect to :$DNS_REDIRECT_PORT comment \"PSW2_DNS\"" - nft "add rule $NFTABLE_NAME nat_output meta l4proto udp oif lo udp dport 53 counter redirect to :$DNS_REDIRECT_PORT comment \"PSW2_DNS\"" - nft "add rule $NFTABLE_NAME nat_output meta l4proto tcp oif lo tcp dport 53 counter redirect to :$DNS_REDIRECT_PORT comment \"PSW2_DNS\"" - } - fi - - local comment_l="$(i18n "Local")" - - # Loading local router proxy TCP - if [ -n "$NODE" ] && [ "$TCP_LOCALHOST_PROXY" = "1" ]; then - [ "$accept_icmp" = "1" ] && { - nft "add rule $NFTABLE_NAME PSW2_ICMP_REDIRECT oif lo ip protocol icmp ip daddr $FAKE_IP counter redirect" - add_shunt_t_rule "${SHUNT_LIST4}" "nft add rule $NFTABLE_NAME PSW2_ICMP_REDIRECT oif lo ip protocol icmp ip daddr" "counter redirect" - nft "add rule $NFTABLE_NAME PSW2_ICMP_REDIRECT oif lo ip protocol icmp counter redirect" - nft "add rule $NFTABLE_NAME PSW2_ICMP_REDIRECT oif lo ip protocol icmp counter return" - } - - [ "$accept_icmpv6" = "1" ] && { - nft "add rule $NFTABLE_NAME PSW2_ICMP_REDIRECT oif lo meta l4proto icmpv6 ip6 daddr $FAKE_IP_6 counter redirect" - add_shunt_t_rule "${SHUNT_LIST6}" "nft add rule $NFTABLE_NAME PSW2_ICMP_REDIRECT oif lo meta l4proto icmpv6 ip6 daddr" "counter redirect" - nft "add rule $NFTABLE_NAME PSW2_ICMP_REDIRECT oif lo meta l4proto icmpv6 counter redirect" - nft "add rule $NFTABLE_NAME PSW2_ICMP_REDIRECT oif lo meta l4proto icmpv6 counter return" - } - - if [ -n "${is_tproxy}" ]; then - nft_chain="PSW2_OUTPUT_MANGLE" - nft_j="counter jump PSW2_RULE" - else - nft_chain="PSW2_OUTPUT_NAT" - nft_j="$(REDIRECT $REDIR_PORT)" - fi - - nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp ip daddr $FAKE_IP ${nft_j}" - add_shunt_t_rule "${SHUNT_LIST4}" "nft add rule $NFTABLE_NAME $nft_chain ip protocol tcp $(factor $TCP_REDIR_PORTS "tcp dport") ip daddr" "${nft_j}" - nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp $(factor $TCP_REDIR_PORTS "tcp dport") ${nft_j}" - [ -z "${is_tproxy}" ] && nft "add rule $NFTABLE_NAME nat_output ip protocol tcp counter jump PSW2_OUTPUT_NAT" - [ -n "${is_tproxy}" ] && { - nft "add rule $NFTABLE_NAME PSW2_MANGLE ip protocol tcp iif lo $(REDIRECT $REDIR_PORT TPROXY4) comment \"${comment_l}\"" - nft "add rule $NFTABLE_NAME PSW2_MANGLE ip protocol tcp iif lo counter return comment \"${comment_l}\"" - nft "add rule $NFTABLE_NAME mangle_output ip protocol tcp counter jump PSW2_OUTPUT_MANGLE comment \"PSW2_OUTPUT_MANGLE\"" - } - - [ "$PROXY_IPV6" == "1" ] && { - nft "add rule $NFTABLE_NAME PSW2_OUTPUT_MANGLE_V6 meta l4proto tcp ip6 daddr $FAKE_IP_6 jump PSW2_RULE" - add_shunt_t_rule "${SHUNT_LIST6}" "nft add rule $NFTABLE_NAME PSW2_OUTPUT_MANGLE_V6 meta l4proto tcp $(factor $TCP_REDIR_PORTS "tcp dport") ip6 daddr" "counter jump PSW2_RULE" - nft "add rule $NFTABLE_NAME PSW2_OUTPUT_MANGLE_V6 meta l4proto tcp $(factor $TCP_REDIR_PORTS "tcp dport") counter jump PSW2_RULE" - nft "add rule $NFTABLE_NAME PSW2_MANGLE_V6 meta l4proto tcp iif lo $(REDIRECT $REDIR_PORT TPROXY) comment \"${comment_l}\"" - nft "add rule $NFTABLE_NAME PSW2_MANGLE_V6 meta l4proto tcp iif lo counter return comment \"${comment_l}\"" - } - - [ -d "${TMP_IFACE_PATH}" ] && { - for iface in $(ls ${TMP_IFACE_PATH}); do - nft "insert rule $NFTABLE_NAME $nft_output_chain ip protocol tcp oif $iface counter return" - nft "insert rule $NFTABLE_NAME PSW2_OUTPUT_MANGLE_V6 ip protocol tcp oif $iface counter return" - done - } - fi - - # Loading local router proxy UDP - if [ -n "$NODE" ] && [ "$UDP_LOCALHOST_PROXY" = "1" ]; then - nft "add rule $NFTABLE_NAME PSW2_OUTPUT_MANGLE ip protocol udp ip daddr $FAKE_IP counter jump PSW2_RULE" - add_shunt_t_rule "${SHUNT_LIST4}" "nft add rule $NFTABLE_NAME PSW2_OUTPUT_MANGLE ip protocol udp $(factor $UDP_REDIR_PORTS "udp dport") ip daddr" "counter jump PSW2_RULE" - nft "add rule $NFTABLE_NAME PSW2_OUTPUT_MANGLE ip protocol udp $(factor $UDP_REDIR_PORTS "udp dport") counter jump PSW2_RULE" - nft "add rule $NFTABLE_NAME PSW2_MANGLE ip protocol udp iif lo $(REDIRECT $REDIR_PORT TPROXY4) comment \"${comment_l}\"" - nft "add rule $NFTABLE_NAME PSW2_MANGLE ip protocol udp iif lo counter return comment \"${comment_l}\"" - nft "add rule $NFTABLE_NAME mangle_output ip protocol udp counter jump PSW2_OUTPUT_MANGLE comment \"PSW2_OUTPUT_MANGLE\"" - - [ "$PROXY_IPV6" == "1" ] && { - nft "add rule $NFTABLE_NAME PSW2_OUTPUT_MANGLE_V6 meta l4proto udp ip6 daddr $FAKE_IP_6 jump PSW2_RULE" - add_shunt_t_rule "${SHUNT_LIST6}" "nft add rule $NFTABLE_NAME PSW2_OUTPUT_MANGLE_V6 meta l4proto udp $(factor $UDP_REDIR_PORTS "udp dport") ip6 daddr" "counter jump PSW2_RULE" - nft "add rule $NFTABLE_NAME PSW2_OUTPUT_MANGLE_V6 meta l4proto udp $(factor $UDP_REDIR_PORTS "udp dport") counter jump PSW2_RULE" - nft "add rule $NFTABLE_NAME PSW2_MANGLE_V6 meta l4proto udp iif lo $(REDIRECT $REDIR_PORT TPROXY) comment \"${comment_l}\"" - nft "add rule $NFTABLE_NAME PSW2_MANGLE_V6 meta l4proto udp iif lo counter return comment \"${comment_l}\"" - } - - [ -d "${TMP_IFACE_PATH}" ] && { - for iface in $(ls ${TMP_IFACE_PATH}); do - nft "insert rule $NFTABLE_NAME $nft_output_chain ip protocol udp oif $iface counter return" - nft "insert rule $NFTABLE_NAME PSW2_OUTPUT_MANGLE_V6 ip protocol udp oif $iface counter return" - done - } - fi - - nft "add rule $NFTABLE_NAME mangle_output oif lo counter return comment \"PSW2_OUTPUT_MANGLE\"" - nft "add rule $NFTABLE_NAME mangle_output meta mark 1 counter return comment \"PSW2_OUTPUT_MANGLE\"" - - nft "add rule $NFTABLE_NAME PSW2_MANGLE ip protocol udp udp dport 53 counter return" - nft "add rule $NFTABLE_NAME PSW2_MANGLE_V6 meta l4proto udp udp dport 53 counter return" - } - - load_acl - - filter_direct_node_list > /dev/null 2>&1 & - - log_i18n 0 "%s firewall rules load complete!" "nftables" -} - -del_firewall_rule() { - for nft in "dstnat" "srcnat" "nat_output" "mangle_prerouting" "mangle_output"; do - local handles=$(nft -a list chain $NFTABLE_NAME ${nft} 2>/dev/null | grep -E "PSW2_" | awk -F '# handle ' '{print$2}') - for handle in $handles; do - nft delete rule $NFTABLE_NAME ${nft} handle ${handle} 2>/dev/null - done - done - - for handle in $(nft -a list chains | grep -E "chain PSW2_" | grep -v "PSW2_RULE" | awk -F '# handle ' '{print$2}'); do - nft delete chain $NFTABLE_NAME handle ${handle} 2>/dev/null - done - - # Need to be removed at the end, otherwise it will show "Resource busy" - nft delete chain $NFTABLE_NAME handle $(nft -a list chains | grep -E "PSW2_RULE" | awk -F '# handle ' '{print$2}') 2>/dev/null - - ip rule del fwmark 1 lookup 100 2>/dev/null - ip route del local 0.0.0.0/0 dev lo table 100 2>/dev/null - - ip -6 rule del fwmark 1 table 100 2>/dev/null - ip -6 route del local ::/0 dev lo table 100 2>/dev/null - - destroy_nftset $NFTSET_LOCAL - destroy_nftset $NFTSET_WAN - destroy_nftset $NFTSET_LAN - destroy_nftset $NFTSET_VPS - - destroy_nftset $NFTSET_LOCAL6 - destroy_nftset $NFTSET_WAN6 - destroy_nftset $NFTSET_LAN6 - destroy_nftset $NFTSET_VPS6 - - log_i18n 0 "Delete %s rules is complete." "nftables" -} - -flush_nftset() { - log_i18n 0 "Clear %s." "NFTSet" - for _name in $(nft -a list sets | grep -E "passwall2_" | awk -F 'set ' '{print $2}' | awk '{print $1}'); do - destroy_nftset ${_name} - done -} - -flush_table() { - nft flush table $NFTABLE_NAME - nft delete table $NFTABLE_NAME -} - -flush_include() { - echo '#!/bin/sh' >$FWI -} - -gen_include() { - flush_include - local nft_chain_file=$TMP_PATH/PSW2_RULE.nft - echo '#!/usr/sbin/nft -f' > $nft_chain_file - nft list table $NFTABLE_NAME >> $nft_chain_file - - local __nft=" " - __nft=$(cat <<- EOF - [ -z "\$(nft list chain $NFTABLE_NAME mangle_prerouting | grep PSW2)" ] && nft -f ${nft_chain_file} - WAN_IP=\$(sh ${MY_PATH} get_wan_ips ip4) - [ ! -z "\${WAN_IP}" ] && { - nft flush set $NFTABLE_NAME $NFTSET_WAN - sh ${MY_PATH} insert_nftset $NFTSET_WAN "-1" \$WAN_IP - } - [ "$PROXY_IPV6" == "1" ] && { - WAN6_IP=\$(sh ${MY_PATH} get_wan_ips ip6) - [ ! -z "\${WAN6_IP}" ] && { - nft flush set $NFTABLE_NAME $NFTSET_WAN6 - sh ${MY_PATH} insert_nftset $NFTSET_WAN6 "-1" \$WAN6_IP - } - } - EOF - ) - - cat <<-EOF >> $FWI - ${__nft} - - return 0 - EOF - return 0 -} - -start() { - [ "$ENABLED_DEFAULT_ACL" == 0 -a "$ENABLED_ACLS" == 0 ] && return - add_firewall_rule - gen_include -} - -stop() { - [ -z "$(command -v log_i18n)" ] && . /usr/share/passwall2/utils.sh - del_firewall_rule - [ $(config_t_get global flush_set "0") = "1" ] && { - uci -q delete ${CONFIG}.@global[0].flush_set - uci -q commit ${CONFIG} - #flush_table - flush_nftset - rm -rf /tmp/etc/passwall2_tmp/singbox* - rm -f /tmp/etc/passwall2_tmp/geoip-*.json - } - flush_include -} - -arg1=$1 -shift -case $arg1 in -insert_nftset) - insert_nftset "$@" - ;; -get_wan_ips) - get_wan_ips "$@" - ;; -filter_direct_node_list) - filter_direct_node_list - ;; -stop) - stop - ;; -start) - start - ;; -*) ;; -esac diff --git a/small/luci-app-passwall2/root/usr/share/passwall2/rule_update.lua b/small/luci-app-passwall2/root/usr/share/passwall2/rule_update.lua deleted file mode 100755 index 3699c9f4d8..0000000000 --- a/small/luci-app-passwall2/root/usr/share/passwall2/rule_update.lua +++ /dev/null @@ -1,220 +0,0 @@ -#!/usr/bin/lua - -local api = require "luci.passwall2.api" -local name = api.appname -local fs = api.fs -local log = api.log -local sys = api.sys -local uci = api.uci -local jsonc = api.jsonc - -local arg1 = arg[1] -local arg2 = arg[2] -local arg3 = arg[3] - -local reboot = 0 -local geoip_update = "0" -local geosite_update = "0" - -local geoip_url = uci:get(name, "@global_rules[0]", "geoip_url") or "https://github.com/Loyalsoldier/geoip/releases/latest/download/geoip.dat" -local geosite_url = uci:get(name, "@global_rules[0]", "geosite_url") or "https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geosite.dat" -local asset_location = uci:get(name, "@global_rules[0]", "v2ray_location_asset") or "/usr/share/v2ray/" -asset_location = asset_location:match("/$") and asset_location or (asset_location .. "/") - -if arg3 == "cron" then - arg2 = nil -end - --- curl -local function curl(url, file) - local http_code = 0 - local header_str = "" - local args = { - "-skL", - "--retry 3", - "--connect-timeout 3", - "--max-time 300", - "--speed-limit 51200 --speed-time 15", - '-A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36"', - "--dump-header -", - "-w '\\n%{http_code}'" - } - if file then - args[#args + 1] = "-o " .. file - end - local return_code, result = api.curl_auto(url, nil, args) - if result and result ~= "" then - local body, code = result:match("^(.-)%s*([0-9]+)$") - if code then - http_code = tonumber(code) or 0 - header_str = body - else - http_code = tonumber(result:match("(%d+)%s*$")) or 0 - end - end - if header_str ~= "" then - header_str = header_str:gsub("\r", "") - end - return http_code, header_str -end - -local function non_file_check(file_path, header_content) - local remote_file_size = nil - local local_file_size = tonumber(fs.stat(file_path, "size")) or 0 - if local_file_size == 0 then - log(2, api.i18n.translate("Downloaded file is empty or an error occurred while reading it.")) - return true - end - if header_content and header_content ~= "" then - for size in header_content:gmatch("[Cc]ontent%-[Ll]ength:%s*(%d+)") do - local s = tonumber(size) - if s and s > 0 then - remote_file_size = s - end - end - end - if remote_file_size and remote_file_size ~= local_file_size then - log(2, api.i18n.translatef("Download file size verification error. Original file size: %sB. Downloaded file size: %sB.", remote_file_size, local_file_size)) - return true - end - return false -end - -local function fetch_geofile(geo_name, geo_type, url) - local tmp_path = "/tmp/" .. geo_name - local asset_path = asset_location .. geo_name - local down_filename = url:match("^.*/([^/?#]+)") - local sha_url = url:gsub(down_filename, down_filename .. ".sha256sum") - local sha_path = tmp_path .. ".sha256sum" - - local function verify_sha256(sha_file) - return sys.call("sha256sum -c " .. sha_file .. " > /dev/null 2>&1") == 0 - end - - local sha_verify, _ = curl(sha_url, sha_path) == 200 - if sha_verify then - local f = io.open(sha_path, "r") - if f then - local content = f:read("*l") - f:close() - if content then - content = content:gsub(down_filename, tmp_path) - f = io.open(sha_path, "w") - if f then - f:write(content) - f:close() - end - end - end - if fs.access(asset_path) then - sys.call(string.format("cp -f %s %s", asset_path, tmp_path)) - if verify_sha256(sha_path) then - log(1, api.i18n.translatef("%s version is the same and does not need to be updated.", geo_type)) - return 0 - end - end - end - - local sret_tmp, header = curl(url, tmp_path) - if sret_tmp == 200 and non_file_check(tmp_path, header) then - log(1, api.i18n.translatef("%s an error occurred during the file download process. Please try downloading again.", geo_type)) - os.remove(tmp_path) - sret_tmp, header = curl(url, tmp_path) - if sret_tmp == 200 and non_file_check(tmp_path, header) then - sret_tmp = 0 - log(1, api.i18n.translatef("%s an error occurred while downloading the file. Please check your network or the download link and try again!", geo_type)) - end - end - if sret_tmp == 200 then - if sha_verify then - if verify_sha256(sha_path) then - sys.call(string.format("mkdir -p %s && cp -f %s %s", asset_location, tmp_path, asset_path)) - reboot = 1 - log(1, api.i18n.translatef("%s update success.", geo_type)) - else - log(1, api.i18n.translatef("%s update failed, please try again later.", geo_type)) - return 1 - end - else - if fs.access(asset_path) and sys.call(string.format("cmp -s %s %s", tmp_path, asset_path)) == 0 then - log(1, api.i18n.translatef("%s version is the same and does not need to be updated.", geo_type)) - return 0 - end - sys.call(string.format("mkdir -p %s && cp -f %s %s", asset_location, tmp_path, asset_path)) - reboot = 1 - log(1, api.i18n.translatef("%s update success.", geo_type)) - end - else - log(1, api.i18n.translatef("%s update failed, please try again later.", geo_type)) - return 1 - end - return 0 -end - -local function fetch_geoip() - fetch_geofile("geoip.dat", "geoip", geoip_url) -end - -local function fetch_geosite() - fetch_geofile("geosite.dat", "geosite", geosite_url) -end - -local function remove_tmp_geofile(name) - os.remove("/tmp/" .. name .. ".dat") - os.remove("/tmp/" .. name .. ".dat.sha256sum") -end - -if arg2 then - string.gsub(arg2, '[^' .. "," .. ']+', function(w) - if w == "geoip" then - geoip_update = "1" - end - if w == "geosite" then - geosite_update = "1" - end - end) -else - geoip_update = uci:get(name, "@global_rules[0]", "geoip_update") or "1" - geosite_update = uci:get(name, "@global_rules[0]", "geosite_update") or "1" -end -if geoip_update == "0" and geosite_update == "0" then - os.exit(0) -end - -log(0, api.i18n.translate("Start updating the rules...")) -local function safe_call(func, err_msg) - xpcall(func, function(e) - log(1, e) - log(1, debug.traceback()) - log(1, err_msg) - end) -end - -if geoip_update == "1" then - log(1, api.i18n.translatef("%s Start updating...", "geoip")) - safe_call(fetch_geoip, api.i18n.translatef("%s update error!", "geoip")) - remove_tmp_geofile("geoip") -end - -if geosite_update == "1" then - log(1, api.i18n.translatef("%s Start updating...", "geosite")) - safe_call(fetch_geosite, api.i18n.translatef("%s update error!", "geosite")) - remove_tmp_geofile("geosite") -end - -uci:set(name, "@global_rules[0]", "geoip_update", geoip_update) -uci:set(name, "@global_rules[0]", "geosite_update", geosite_update) -api.uci_save(uci, name, true) - -if reboot == 1 then - if arg3 == "cron" then - if not fs.access("/var/lock/" .. name .. ".lock") then - sys.call("touch /tmp/lock/" .. name .. "_cron.lock") - end - end - - log(1, api.i18n.translate("Restart the service and apply the new rules.")) - uci:set(name, "@global[0]", "flush_set", "1") - api.uci_save(uci, name, true, true) -end -log(0, api.i18n.translate("The rules have been updated...")) diff --git a/small/luci-app-passwall2/root/usr/share/passwall2/socks_auto_switch.sh b/small/luci-app-passwall2/root/usr/share/passwall2/socks_auto_switch.sh deleted file mode 100755 index 81876cae02..0000000000 --- a/small/luci-app-passwall2/root/usr/share/passwall2/socks_auto_switch.sh +++ /dev/null @@ -1,186 +0,0 @@ -#!/bin/sh - -. /usr/share/passwall2/utils.sh -APP_FILE=${APP_PATH}/app.sh - -flag=0 - -test_url() { - local url=$1 - local try=1 - [ -n "$2" ] && try=$2 - local timeout=2 - [ -n "$3" ] && timeout=$3 - local extra_params=$4 - if /usr/bin/curl --help all | grep -q "\-\-retry-all-errors"; then - extra_params="--retry-all-errors ${extra_params}" - fi - local status=$(/usr/bin/curl -I -o /dev/null -skL ${extra_params} --connect-timeout ${timeout} --retry ${try} -w %{http_code} "$url") - case "$status" in - 204) - status=200 - ;; - esac - echo $status -} - -test_proxy() { - local result=0 - local status=$(test_url "${probe_url}" ${retry_num} ${connect_timeout} "-x socks5h://127.0.0.1:${socks_port}") - if [ "$status" = "200" ]; then - result=0 - else - local status2=$(test_url "https://www.baidu.com" ${retry_num} ${connect_timeout}) - if [ "$status2" = "200" ]; then - result=1 - else - result=2 - ping -c 3 -W 1 223.5.5.5 > /dev/null 2>&1 - [ $? -eq 0 ] && { - result=1 - } - fi - fi - echo $result -} - -test_node() { - local node_id=$1 - local _type=$(echo $(config_n_get ${node_id} type) | tr 'A-Z' 'a-z') - [ -n "${_type}" ] && { - local _tmp_port=$(get_new_port 61080 tcp,udp) - $APP_FILE run_socks flag="test_node_${node_id}" node=${node_id} bind=127.0.0.1 socks_port=${_tmp_port} config_file=test_node_${node_id}.json - local curlx="socks5h://127.0.0.1:${_tmp_port}" - sleep 1s - local _proxy_status=$(test_url "${probe_url}" ${retry_num} ${connect_timeout} "-x $curlx") - # Kill the SS plugin process - local pid_file="/tmp/etc/${CONFIG}/test_node_${node_id}_plugin.pid" - [ -s "$pid_file" ] && kill -9 "$(head -n 1 "$pid_file")" >/dev/null 2>&1 - pgrep -af "test_node_${node_id}" | awk '! /socks_auto_switch\.sh/{print $1}' | xargs kill -9 >/dev/null 2>&1 - rm -rf /tmp/etc/${CONFIG}/test_node_${node_id}*.* - if [ "${_proxy_status}" -eq 200 ]; then - return 0 - fi - } - return 1 -} - -test_auto_switch() { - flag=$((flag + 1)) - local b_nodes=$1 - local now_node=$2 - [ -z "$now_node" ] && { - if [ -n "$(get_cache_var "socks_${id}")" ]; then - now_node=$(get_cache_var "socks_${id}") - else - #log_i18n 0 "Socks switch detection: Unknown error." - return 1 - fi - } - - [ $flag -le 1 ] && { - main_node=$now_node - } - - local status=$(test_proxy) - if [ "$status" = "2" ]; then - log_i18n 0 "Socks switch detection: Unable to connect to the network. Please check if the network is working properly!" - return 2 - fi - - # Check if the main node is usable - if [ "$restore_switch" = "1" ] && [ -n "$main_node" ] && [ "$now_node" != "$main_node" ]; then - test_node ${main_node} - [ $? -eq 0 ] && { - # The main node is working properly; switch to the main node. - log_i18n 0 "Socks switch detection: Primary node 【%s: [%s]】 is normal. Switch to the primary node!" "${id}" "$(config_n_get $main_node type)" "$(config_n_get $main_node remarks)" - $APP_FILE socks_node_switch flag=${id} new_node=${main_node} - [ $? -eq 0 ] && { - log_i18n 0 "Socks switch detection: %s node switch complete!" "${id}" - } - return 0 - } - fi - - if [ "$status" = "0" ]; then - #log_i18n 0 "Socks switch detection: %s 【%s:[%s]】 normal." "${id}" "$(config_n_get $now_node type)" "$(config_n_get $now_node remarks)" - return 0 - elif [ "$status" = "1" ]; then - local new_node msg - if [ "$backup_node_num" -gt 1 ]; then - # When there are multiple backup nodes - local first_node found node - for node in $b_nodes; do - [ -z "$first_node" ] && first_node="$node" # Record the first node. - [ "$found" = "1" ] && { new_node="$node"; break; } # Find the current node and then retrieve the next one. - [ "$node" = "$now_node" ] && found=1 # Mark the current node found. - done - # If the current node is not found, or if the current node is the last node, then take the first node. - [ -z "$new_node" ] && new_node="$first_node" - local msg2="$(i18n "next backup node")" - [ "$now_node" = "$main_node" ] && msg2="$(i18n "backup node")" - msg="$(i18n "switch to %s test detect!" "${msg2}")" - else - # When there is only one backup node, poll with the primary node. - new_node=$([ "$now_node" = "$main_node" ] && echo "$b_nodes" || echo "$main_node") - local msg2="$(i18n "main node")" - [ "$now_node" = "$main_node" ] && msg2="$(i18n "backup node")" - msg="$(i18n "switch to %s test detect!" "${msg2}")" - fi - log_i18n 0 "Socks switch detection: %s 【%s:[%s]】 abnormal, %s" "${id}" "$(config_n_get $now_node type)" "$(config_n_get $now_node remarks)" "${msg}" - test_node ${new_node} - if [ $? -eq 0 ]; then -# [ "$restore_switch" = "0" ] && { -# uci set $CONFIG.${id}.node=$new_node -# [ -z "$(echo $b_nodes | grep $main_node)" ] && uci add_list $CONFIG.${id}.autoswitch_backup_node=$main_node -# uci commit $CONFIG -# } - log_i18n 0 "Socks switch detection: %s 【%s:[%s]】 normal, switch to this node!" "${id}" "$(config_n_get $new_node type)" "$(config_n_get $new_node remarks)" - $APP_FILE socks_node_switch flag=${id} new_node=${new_node} - [ $? -eq 0 ] && { - log_i18n 0 "Socks switch detection: %s node switch complete!" "${id}" - } - return 0 - else - test_auto_switch "${b_nodes}" ${new_node} - fi - fi -} - -start() { - id=$1 - LOCK_FILE=${LOCK_PATH}/${CONFIG}_socks_auto_switch_${id}.lock - main_node=$(config_n_get $id node) - socks_port=$(config_n_get $id port 0) - delay=$(config_n_get $id autoswitch_testing_time 30) - connect_timeout=$(config_n_get $id autoswitch_connect_timeout 3) - retry_num=$(config_n_get $id autoswitch_retry_num 1) - restore_switch=$(config_n_get $id autoswitch_restore_switch 0) - probe_url=$(config_n_get $id autoswitch_probe_url "https://www.google.com/generate_204") - backup_node=$(config_n_get $id autoswitch_backup_node) - if [ -n "$backup_node" ]; then - backup_node=$(echo "$backup_node" | tr -s ' ' '\n' | uniq | tr -s '\n' ' ') - backup_node_num=$(printf "%s\n" "$backup_node" | wc -w) - if [ "$backup_node_num" -eq 1 ]; then - [ "$main_node" = "$backup_node" ] && return - fi - else - return - fi - while [ -n "$backup_node" ]; do - [ -f "$LOCK_FILE" ] && { - sleep 6s - continue - } - pgrep -af "${CONFIG}/" | awk '/app\.sh.*(start|stop)/ || /nftables\.sh/ || /iptables\.sh/ { found = 1 } END { exit !found }' && { - sleep 6s - continue - } - touch $LOCK_FILE - test_auto_switch "$backup_node" - rm -f $LOCK_FILE - sleep ${delay} - done -} - -start $@ diff --git a/small/luci-app-passwall2/root/usr/share/passwall2/subscribe.lua b/small/luci-app-passwall2/root/usr/share/passwall2/subscribe.lua deleted file mode 100755 index 5f21c4779d..0000000000 --- a/small/luci-app-passwall2/root/usr/share/passwall2/subscribe.lua +++ /dev/null @@ -1,2121 +0,0 @@ -#!/usr/bin/lua - ------------------------------------------------- --- @author William Chan ------------------------------------------------- -require 'luci.util' -require 'luci.jsonc' -require 'luci.sys' -local appname = 'passwall2' -local api = require ("luci.passwall2.api") -local datatypes = require "luci.cbi.datatypes" - --- these global functions are accessed all the time by the event handler --- so caching them is worth the effort -local tinsert = table.insert -local ssub, slen, schar, sbyte, sformat, sgsub = string.sub, string.len, string.char, string.byte, string.format, string.gsub -local split = api.split -local jsonParse, jsonStringify = luci.jsonc.parse, luci.jsonc.stringify -local base64Decode = api.base64Decode -local uci = api.uci -local fs = api.fs -local log = api.log -local i18n = api.i18n -uci:revert(appname) - -local has_ss = api.is_finded("ss-redir") -local has_ss_rust = api.is_finded("sslocal") -local has_ssr = api.is_finded("ssr-local") and api.is_finded("ssr-redir") -local has_singbox = api.finded_com("sing-box") -local has_xray = api.finded_com("xray") -local has_hysteria2 = api.finded_com("hysteria") -local allowInsecure_default = true --- Nodes should be retrieved using the core type (if not set on the node subscription page, the default type will be used automatically). -local function get_core(field, candidates) - local v = uci:get(appname, "@global_subscribe[0]", field) - if not v or v == "" then - for _, c in ipairs(candidates) do - if c[1] then return c[2] end - end - end - return v -end -local ss_type_default = get_core("ss_type", {{has_ss,"shadowsocks-libev"},{has_ss_rust,"shadowsocks-rust"},{has_singbox,"sing-box"},{has_xray,"xray"}}) -local trojan_type_default = get_core("trojan_type", {{has_singbox,"sing-box"},{has_xray,"xray"}}) -local vmess_type_default = get_core("vmess_type", {{has_xray,"xray"},{has_singbox,"sing-box"}}) -local vless_type_default = get_core("vless_type", {{has_xray,"xray"},{has_singbox,"sing-box"}}) -local hysteria2_type_default = get_core("hysteria2_type", {{has_hysteria2,"hysteria2"},{has_singbox,"sing-box"},{has_xray,"xray"}}) -local domain_strategy_default = uci:get(appname, "@global_subscribe[0]", "domain_strategy") or "" -local domain_strategy_node = "" -local preproxy_node_group, to_node_group, chain_node_type = "", "", "" --- Determine whether to filter node keywords -local filter_keyword_mode_default = uci:get(appname, "@global_subscribe[0]", "filter_keyword_mode") or "0" -local filter_keyword_discard_list_default = uci:get(appname, "@global_subscribe[0]", "filter_discard_list") or {} -local filter_keyword_keep_list_default = uci:get(appname, "@global_subscribe[0]", "filter_keep_list") or {} -local function is_filter_keyword(value) - if filter_keyword_mode_default == "1" then - for k,v in ipairs(filter_keyword_discard_list_default) do - if value:find(v, 1, true) then - return true - end - end - elseif filter_keyword_mode_default == "2" then - local result = true - for k,v in ipairs(filter_keyword_keep_list_default) do - if value:find(v, 1, true) then - result = false - end - end - return result - elseif filter_keyword_mode_default == "3" then - local result = false - for k,v in ipairs(filter_keyword_discard_list_default) do - if value:find(v, 1, true) then - result = true - end - end - for k,v in ipairs(filter_keyword_keep_list_default) do - if value:find(v, 1, true) then - result = false - end - end - return result - elseif filter_keyword_mode_default == "4" then - local result = true - for k,v in ipairs(filter_keyword_keep_list_default) do - if value:find(v, 1, true) then - result = false - end - end - for k,v in ipairs(filter_keyword_discard_list_default) do - if value:find(v, 1, true) then - result = true - end - end - return result - end - return false -end - -local nodeResult = {} -- update result -local nodes_table = {} -for k, e in ipairs(api.get_valid_nodes()) do - if e.node_type == "normal" then - nodes_table[#nodes_table + 1] = e - end -end - --- To retrieve the current server's dynamic configurations, you can use `get` and `set`. `get` requires access to the node table. -local CONFIG = {} -do - if true then - local szType = "@global[0]" - local option = "node" - - local node_id = uci:get(appname, szType, option) - CONFIG[#CONFIG + 1] = { - log = true, - remarks = i18n.translatef("Node"), - currentNode = node_id and uci:get_all(appname, node_id) or nil, - set = function(o, server) - uci:set(appname, szType, option, server) - o.newNodeId = server - end - } - end - - if true then - local i = 0 - local option = "node" - uci:foreach(appname, "socks", function(t) - i = i + 1 - local id = t[".name"] - local node_id = t[option] - CONFIG[#CONFIG + 1] = { - log = true, - id = id, - remarks = i18n.translatef("Socks node list [%s]", i), - currentNode = node_id and uci:get_all(appname, node_id) or nil, - set = function(o, server) - if not server or server == "" then - if #nodes_table > 0 then - server = nodes_table[1][".name"] - end - end - uci:set(appname, t[".name"], option, server) - o.newNodeId = server - end - } - if t.autoswitch_backup_node and #t.autoswitch_backup_node > 0 then - local flag = i18n.translatef("Socks node list [%s]", i) .. " " .. i18n.translatef("Backup node list") - local currentNodes = {} - local newNodes = {} - for k, node_id in ipairs(t.autoswitch_backup_node) do - if node_id then - local currentNode = uci:get_all(appname, node_id) or nil - if currentNode then - currentNodes[#currentNodes + 1] = { - log = true, - remarks = flag .. "[" .. k .. "]", - currentNode = currentNode, - set = function(o, server) - if server and server ~= "nil" then - table.insert(o.newNodes, server) - end - end - } - end - end - end - CONFIG[#CONFIG + 1] = { - remarks = flag, - currentNodes = currentNodes, - newNodes = newNodes, - set = function(o, newNodes) - if o then - if not newNodes then newNodes = o.newNodes end - uci:set_list(appname, id, "autoswitch_backup_node", newNodes or {}) - end - end - } - end - end) - end - - if true then - local i = 0 - local option = "lbss" - local function is_ip_port(str) - if type(str) ~= "string" then return false end - local ip, port = str:match("^([%d%.]+):(%d+)$") - return ip and datatypes.ipaddr(ip) and tonumber(port) and tonumber(port) <= 65535 - end - uci:foreach(appname, "haproxy_config", function(t) - i = i + 1 - local node_id = t[option] - CONFIG[#CONFIG + 1] = { - log = true, - id = t[".name"], - remarks = i18n.translatef("HAProxy node list [%s]", i), - currentNode = node_id and uci:get_all(appname, node_id) or nil, - set = function(o, server) - -- Modify the LBS value only if it is not in IP:Port format. - if not is_ip_port(t[option]) then - uci:set(appname, t[".name"], option, server) - o.newNodeId = server - end - end, - delete = function(o) - -- Deletion is only performed if the current LBS value is not in IP:port format. - if not is_ip_port(t[option]) then - uci:delete(appname, t[".name"]) - end - end - } - end) - end - - if true then - local i = 0 - uci:foreach(appname, "acl_rule", function(t) - i = i + 1 - local option = "node" - local node_id = t[option] - CONFIG[#CONFIG + 1] = { - log = true, - id = t[".name"], - remarks = i18n.translatef("ACL list [%s]", i), - currentNode = node_id and uci:get_all(appname, node_id) or nil, - set = function(o, server) - uci:set(appname, t[".name"], option, server) - o.newNodeId = server - end - } - end) - end - - uci:foreach(appname, "nodes", function(node) - local node_id = node[".name"] - if node.protocol and node.protocol == '_shunt' then - local rules = {} - uci:foreach(appname, "shunt_rules", function(e) - if e[".name"] and e.remarks then - table.insert(rules, e) - end - end) - table.insert(rules, { - [".name"] = "default_node", - remarks = i18n.translatef("Default") - }) - table.insert(rules, { - [".name"] = "main_node", - remarks = i18n.translatef("Default Preproxy") - }) - - for k, e in pairs(rules) do - local _node_id = node[e[".name"]] or nil - if _node_id and api.parseURL(_node_id) then - else - CONFIG[#CONFIG + 1] = { - log = false, - currentNode = _node_id and uci:get_all(appname, _node_id) or nil, - remarks = i18n.translatef("Shunt [%s] node", e.remarks), - set = function(o, server) - if not server then server = "" end - uci:set(appname, node_id, e[".name"], server) - o.newNodeId = server - end - } - end - - end - elseif node.protocol and node.protocol == '_balancing' then - local flag = i18n.translatef("Xray Load Balancing node [%s] list", node_id) - local currentNodes = {} - local newNodes = {} - if node.balancing_node then - for k, node in pairs(node.balancing_node) do - currentNodes[#currentNodes + 1] = { - log = true, - node = node, - currentNode = node and uci:get_all(appname, node) or nil, - remarks = node, - set = function(o, server) - if o and server and server ~= "nil" then - table.insert(o.newNodes, server) - end - end - } - end - end - CONFIG[#CONFIG + 1] = { - remarks = flag, - currentNodes = currentNodes, - newNodes = newNodes, - set = function(o, newNodes) - if o then - if not newNodes then newNodes = o.newNodes end - uci:set_list(appname, node_id, "balancing_node", newNodes or {}) - end - end - } - - -- Backup Node - local currentNode = uci:get_all(appname, node_id) or nil - if currentNode and currentNode.fallback_node then - CONFIG[#CONFIG + 1] = { - log = true, - id = node_id, - remarks = i18n.translatef("Xray Load Balancing node [%s] backup node", node_id), - currentNode = uci:get_all(appname, currentNode.fallback_node) or nil, - set = function(o, server) - uci:set(appname, node_id, "fallback_node", server) - o.newNodeId = server - end, - delete = function(o) - uci:delete(appname, node_id, "fallback_node") - end - } - end - elseif node.protocol and node.protocol == '_urltest' then - local flag = i18n.translatef("Sing-Box URLTest node [%s] list", node_id) - local currentNodes = {} - local newNodes = {} - if node.urltest_node then - for k, node in pairs(node.urltest_node) do - currentNodes[#currentNodes + 1] = { - log = true, - node = node, - currentNode = node and uci:get_all(appname, node) or nil, - remarks = node, - set = function(o, server) - if o and server and server ~= "nil" then - table.insert(o.newNodes, server) - end - end - } - end - end - CONFIG[#CONFIG + 1] = { - remarks = flag, - currentNodes = currentNodes, - newNodes = newNodes, - set = function(o, newNodes) - if o then - if not newNodes then newNodes = o.newNodes end - uci:set_list(appname, node_id, "urltest_node", newNodes or {}) - end - end - } - else - -- Preproxy Node - local currentNode = uci:get_all(appname, node_id) or nil - if currentNode and currentNode.preproxy_node then - CONFIG[#CONFIG + 1] = { - log = true, - id = node_id, - remarks = i18n.translatef("Node [%s] preproxy node", node_id), - currentNode = uci:get_all(appname, currentNode.preproxy_node) or nil, - set = function(o, server) - uci:set(appname, node_id, "preproxy_node", server) - o.newNodeId = server - end, - delete = function(o) - uci:delete(appname, node_id, "preproxy_node") - end - } - end - -- Landing node - local currentNode = uci:get_all(appname, node_id) or nil - if currentNode and currentNode.to_node then - CONFIG[#CONFIG + 1] = { - log = true, - id = node_id, - remarks = i18n.translatef("Node [%s] landing node", node_id), - currentNode = uci:get_all(appname, currentNode.to_node) or nil, - set = function(o, server) - uci:set(appname, node_id, "to_node", server) - o.newNodeId = server - end, - delete = function(o) - uci:delete(appname, node_id, "to_node") - end - } - end - end - end) - - for k, v in pairs(CONFIG) do - if v.currentNodes and type(v.currentNodes) == "table" then - for kk, vv in pairs(v.currentNodes) do - if vv.currentNode == nil then - CONFIG[k].currentNodes[kk] = nil - end - end - else - if v.currentNode == nil then - if v.delete then - v.delete() - end - CONFIG[k] = nil - end - end - end -end - -local function UrlEncode(szText) - return szText:gsub("([^%w%-_%.%~])", function(c) - return string.format("%%%02X", string.byte(c)) - end) -end - -local function UrlDecode(szText) - return szText and szText:gsub("+", " "):gsub("%%(%x%x)", function(h) - return string.char(tonumber(h, 16)) - end) or nil -end - --- Retrieve subscribe information (remaining data allowance, expiration time). -local subscribe_info = {} -local function get_subscribe_info(cfgid, value) - if type(cfgid) ~= "string" or cfgid == "" or type(value) ~= "string" then - return - end - value = value:gsub("%s+", "") - local date_patterns = {"套餐到期:(.+)", "过期时间:(.+)", "有效期至:(.+)", "到期时间:(.+)", "截止日期:(.+)"} - local expired_date - for _, p in ipairs(date_patterns) do expired_date = value:match(p) or expired_date end - local rem_patterns = {"剩余流量:(.+)", "流量剩余:(.+)", "可用流量:(.+)", "套餐剩余:(.+)"} - local rem_traffic - for _, p in ipairs(rem_patterns) do rem_traffic = value:match(p) or rem_traffic end - subscribe_info[cfgid] = subscribe_info[cfgid] or {expired_date = "", rem_traffic = ""} - if expired_date then - subscribe_info[cfgid]["expired_date"] = expired_date - end - if rem_traffic then - subscribe_info[cfgid]["rem_traffic"] = rem_traffic - end -end - --- Configure the SS protocol implementation type -local function set_ss_implementation(result) - if ss_type_default == "shadowsocks-libev" and has_ss then - result.type = "SS" - elseif ss_type_default == "shadowsocks-rust" and has_ss_rust then - result.type = 'SS-Rust' - elseif ss_type_default == "xray" and has_xray then - result.type = 'Xray' - result.protocol = 'shadowsocks' - result.transport = 'raw' - elseif ss_type_default == "sing-box" and has_singbox then - result.type = 'sing-box' - result.protocol = 'shadowsocks' - else - log(2, i18n.translatef("Skipping the %s node is due to incompatibility with the %s core program or incorrect node usage type settings.", "SS", "SS")) - return nil - end - return result -end - --- Processing data -local function processData(szType, content, add_mode, group) - --log(2, content, add_mode, group) - local result = { - timeout = 60, - add_mode = add_mode, -- `0` for manual configuration, `1` for import, `2` for subscription - group = group - } - --ssr://base64(host:port:protocol:method:obfs:base64pass/?obfsparam=base64param&protoparam=base64param&remarks=base64remarks&group=base64group&udpport=0&uot=0) - if szType == 'ssr' then - if not has_ssr then - log(2, i18n.translatef("Skipping the %s node is due to incompatibility with the %s core program or incorrect node usage type settings.", "SSR", "shadowsocksr-libev")) - return nil - end - result.type = "SSR" - - local dat = split(content, "/%?") - local hostInfo = split(dat[1], ':') - if dat[1]:match('%[(.*)%]') then - result.address = dat[1]:match('%[(.*)%]') - else - result.address = hostInfo[#hostInfo-5] - end - result.port = hostInfo[#hostInfo-4] - result.protocol = hostInfo[#hostInfo-3] - result.method = hostInfo[#hostInfo-2] - result.obfs = hostInfo[#hostInfo-1] - result.password = base64Decode(hostInfo[#hostInfo]) - local params = {} - for _, v in pairs(split(dat[2], '&')) do - local t = split(v, '=') - params[t[1]] = t[2] - end - result.obfs_param = base64Decode(params.obfsparam) - result.protocol_param = base64Decode(params.protoparam) - -- local ssr_group = base64Decode(params.group) - -- if ssr_group then result.ssr_group = ssr_group end - result.remarks = base64Decode(params.remarks) - elseif szType == 'vmess' then - local info = jsonParse(content) - if vmess_type_default == "sing-box" and has_singbox then - result.type = 'sing-box' - elseif vmess_type_default == "xray" and has_xray then - result.type = "Xray" - else - log(2, i18n.translatef("Skipping the %s node is due to incompatibility with the %s core program or incorrect node usage type settings.", "VMess", "VMess")) - return nil - end - result.alter_id = info.aid - result.address = info.add - result.port = info.port - result.protocol = 'vmess' - result.alter_id = info.aid - result.uuid = info.id - result.remarks = info.ps - -- result.mux = 1 - -- result.mux_concurrency = 8 - - if not info.net then info.net = "tcp" end - info.net = string.lower(info.net) - if result.type == "sing-box" and info.net == "raw" then - info.net = "tcp" - elseif result.type == "Xray" and info.net == "tcp" then - info.net = "raw" - end - if info.net == 'h2' or info.net == 'http' then - info.net = "http" - result.transport = (result.type == "Xray") and "xhttp" or "http" - else - result.transport = info.net - end - if info.net == 'ws' then - result.ws_host = info.host - result.ws_path = info.path - if result.type == "sing-box" and info.path then - local ws_path_dat = split(info.path, "?") - local ws_path = ws_path_dat[1] - local ws_path_params = {} - for _, v in pairs(split(ws_path_dat[2], '&')) do - local t = split(v, '=') - ws_path_params[t[1]] = t[2] - end - if ws_path_params.ed and tonumber(ws_path_params.ed) then - result.ws_path = ws_path - result.ws_enableEarlyData = "1" - result.ws_maxEarlyData = tonumber(ws_path_params.ed) - result.ws_earlyDataHeaderName = "Sec-WebSocket-Protocol" - end - end - end - if info.net == "http" then - if result.type == "Xray" then - result.xhttp_mode = "stream-one" - result.xhttp_host = info.host - result.xhttp_path = info.path - else - result.http_host = (info.host and info.host ~= "") and { info.host } or nil - result.http_path = info.path - end - end - if info.net == 'raw' or info.net == 'tcp' then - if info.type and info.type ~= "http" then - info.type = "none" - end - result.tcp_guise = info.type - result.tcp_guise_http_host = (info.host and info.host ~= "") and { info.host } or nil - result.tcp_guise_http_path = (info.path and info.path ~= "") and { info.path } or nil - end - if info.net == 'kcp' or info.net == 'mkcp' then - info.net = "mkcp" - result.mkcp_guise = info.type - result.mkcp_mtu = 1350 - result.mkcp_tti = 50 - result.mkcp_uplinkCapacity = 5 - result.mkcp_downlinkCapacity = 20 - result.mkcp_readBufferSize = 2 - result.mkcp_writeBufferSize = 2 - end - if info.net == 'quic' then - result.quic_guise = info.type - result.quic_key = info.key - result.quic_security = info.securty - end - if info.net == 'grpc' then - result.grpc_serviceName = info.path - end - if info.net == 'xhttp' or info.net == 'splithttp' then - result.xhttp_host = info.host - result.xhttp_path = info.path - result.xhttp_mode = params.mode or "auto" - result.xhttp_extra = params.extra - local success, Data = pcall(jsonParse, params.extra) - if success and Data then - local address = (Data.extra and Data.extra.downloadSettings and Data.extra.downloadSettings.address) - or (Data.downloadSettings and Data.downloadSettings.address) - result.download_address = address and address ~= "" and address or nil - else - result.download_address = nil - end - end - if info.net == 'httpupgrade' then - result.httpupgrade_host = info.host - result.httpupgrade_path = info.path - end - if not info.security then result.security = "auto" end - if info.tls == "tls" or info.tls == "1" then - result.tls = "1" - result.tls_serverName = (info.sni and info.sni ~= "") and info.sni or info.host - info.allowinsecure = info.allowinsecure or info.insecure - if info.allowinsecure and (info.allowinsecure == "1" or info.allowinsecure == "0") then - result.tls_allowInsecure = info.allowinsecure - else - result.tls_allowInsecure = allowInsecure_default and "1" or "0" - end - else - result.tls = "0" - end - - if result.type == "sing-box" and (result.transport == "mkcp" or result.transport == "xhttp") then - log(2, i18n.translatef("Skip node: %s. Because Sing-Box does not support the %s protocol's %s transmission method, Xray needs to be used instead.", result.remarks, szType, result.transport)) - return nil - end - elseif szType == "ss" then - result = set_ss_implementation(result) - if not result then return nil end - - --SS-URI = "ss://" userinfo "@" hostname ":" port [ "/" ] [ "?" plugin ] [ "#" tag ] - --userinfo = websafe-base64-encode-utf8(method ":" password) - --ss://YWVzLTEyOC1nY206dGVzdA@192.168.100.1:8888#Example1 - --ss://cmM0LW1kNTpwYXNzd2Q@192.168.100.1:8888/?plugin=obfs-local%3Bobfs%3Dhttp#Example2 - --ss://2022-blake3-aes-256-gcm:YctPZ6U7xPPcU%2Bgp3u%2B0tx%2FtRizJN9K8y%2BuKlW2qjlI%3D@192.168.100.1:8888#Example3 - --ss://2022-blake3-aes-256-gcm:YctPZ6U7xPPcU%2Bgp3u%2B0tx%2FtRizJN9K8y%2BuKlW2qjlI%3D@192.168.100.1:8888/?plugin=v2ray-plugin%3Bserver#Example3 - --ss://Y2hhY2hhMjAtaWV0Zi1wb2x5MTMwNTp0ZXN0@xxxxxx.com:443?type=ws&path=%2Ftestpath&host=xxxxxx.com&security=tls&fp=&alpn=h3%2Ch2%2Chttp%2F1.1&sni=xxxxxx.com#test-1%40ss - - local idx_sp = content:find("#") or 0 - local alias = "" - if idx_sp > 0 then - alias = content:sub(idx_sp + 1, -1) - end - result.remarks = UrlDecode(alias) - local info = content:sub(1, idx_sp - 1):gsub("/%?", "?") - local params = {} - if info:find("%?") then - local find_index = info:find("%?") - local query = split(info, "%?") - for _, v in pairs(split(query[2], '&')) do - local t = split(v, '=') - if #t >= 2 then params[t[1]] = UrlDecode(t[2]) end - end - if params.plugin then - local plugin_info = params.plugin - local idx_pn = plugin_info:find(";") - if idx_pn then - result.plugin = plugin_info:sub(1, idx_pn - 1) - result.plugin_opts = plugin_info:sub(idx_pn + 1, #plugin_info) - else - result.plugin = plugin_info - end - end - if result.plugin and result.plugin == "simple-obfs" then - result.plugin = "obfs-local" - end - info = info:sub(1, find_index - 1) - end - - local hostInfo = split(base64Decode(UrlDecode(info)), "@") - if hostInfo and #hostInfo > 0 then - local host_port = hostInfo[#hostInfo] - -- [2001:4860:4860::8888]:443 - -- 8.8.8.8:443 - if host_port:find(":") then - local sp = split(host_port, ":") - result.port = sp[#sp] - if api.is_ipv6addrport(host_port) then - result.address = api.get_ipv6_only(host_port) - else - result.address = sp[1] - end - else - result.address = host_port - end - - local userinfo = nil - if #hostInfo > 2 then - userinfo = {} - for i = 1, #hostInfo - 1 do - tinsert(userinfo, hostInfo[i]) - end - userinfo = table.concat(userinfo, '@') - else - userinfo = base64Decode(hostInfo[1]) - end - local method, password - if userinfo:find(":") then - method = userinfo:sub(1, userinfo:find(":") - 1) - password = userinfo:sub(userinfo:find(":") + 1, #userinfo) - else - password = hostInfo[1] -- Some links use plaintext UUIDs as passwords. - end - - -- Determine if the password is URL encoded - local function isURLEncodedPassword(pwd) - if not pwd:find("%%[0-9A-Fa-f][0-9A-Fa-f]") then - return false - end - local ok, decoded = pcall(UrlDecode, pwd) - return ok and UrlEncode(decoded) == pwd - end - - local decoded = UrlDecode(password) - if isURLEncodedPassword(password) and decoded then - password = decoded - end - - local _method = (method or "none"):lower() - method = (_method == "chacha20-poly1305" and "chacha20-ietf-poly1305") or - (_method == "xchacha20-poly1305" and "xchacha20-ietf-poly1305") or _method - - result.method = method - result.password = password - - if has_xray and (result.type ~= 'Xray' and result.type ~= 'sing-box' and params.type) then - result.type = 'Xray' - result.protocol = 'shadowsocks' - elseif has_singbox and (result.type ~= 'Xray' and result.type ~= 'sing-box' and params.type) then - result.type = 'sing-box' - result.protocol = 'shadowsocks' - end - - if result.plugin then - if result.type == 'Xray' then - -- The obfs-local plugin converts data to a format supported by xray. - if result.plugin ~= "obfs-local" then - result.error_msg = i18n.translatef("Xray unsupport %s plugin.", result.plugin) - else - local obfs = result.plugin_opts:match("obfs=([^;]+)") or "" - local obfs_host = result.plugin_opts:match("obfs%-host=([^;]+)") or "" - if obfs == "" or obfs_host == "" then - result.error_msg = "SS " .. result.plugin .. " " .. i18n.translatef("Plugin options Incomplete.") - end - if obfs == "http" then - result.transport = "raw" - result.tcp_guise = "http" - result.tcp_guise_http_host = (obfs_host and obfs_host ~= "") and { obfs_host } or nil - result.tcp_guise_http_path = { "/" } - elseif obfs == "tls" then - result.tls = "1" - result.tls_serverName = obfs_host - result.tls_allowInsecure = "1" - end - result.plugin = nil - result.plugin_opts = nil - end - else - result.plugin_enabled = "1" - end - end - - if result.type == "SS" then - local aead2022_methods = { "2022-blake3-aes-128-gcm", "2022-blake3-aes-256-gcm", "2022-blake3-chacha20-poly1305" } - local aead2022 = false - for k, v in ipairs(aead2022_methods) do - if method:lower() == v:lower() then - aead2022 = true - end - end - if aead2022 then - -- shadowsocks-libev does not support 2022 encryption. - result.error_msg = i18n.translatef("shadowsocks-libev unsupport 2022 encryption.") - end - end - - if params.type then - params.type = string.lower(params.type) - if result.type == "sing-box" and params.type == "raw" then - params.type = "tcp" - elseif result.type == "Xray" and params.type == "tcp" then - params.type = "raw" - end - if params.type == "h2" or params.type == "http" then - params.type = "http" - result.transport = (result.type == "Xray") and "xhttp" or "http" - else - result.transport = params.type - end - if result.type ~= "SS-Rust" and result.type ~= "SS" then - if params.type == 'ws' then - result.ws_host = params.host - result.ws_path = params.path - if result.type == "sing-box" and params.path then - local ws_path_dat = split(params.path, "%?") - local ws_path = ws_path_dat[1] - local ws_path_params = {} - for _, v in pairs(split(ws_path_dat[2], '&')) do - local t = split(v, '=') - ws_path_params[t[1]] = t[2] - end - if ws_path_params.ed and tonumber(ws_path_params.ed) then - result.ws_path = ws_path - result.ws_enableEarlyData = "1" - result.ws_maxEarlyData = tonumber(ws_path_params.ed) - result.ws_earlyDataHeaderName = "Sec-WebSocket-Protocol" - end - end - end - if params.type == "http" then - if result.type == "sing-box" then - result.transport = "http" - result.http_host = (params.host and params.host ~= "") and { params.host } or nil - result.http_path = params.path - elseif result.type == "Xray" then - result.transport = "xhttp" - result.xhttp_mode = "stream-one" - result.xhttp_host = params.host - result.xhttp_path = params.path - end - end - if params.type == 'raw' or params.type == 'tcp' then - result.tcp_guise = params.headerType or "none" - result.tcp_guise_http_host = (params.host and params.host ~= "") and { params.host } or nil - result.tcp_guise_http_path = (params.path and params.path ~= "") and { params.path } or nil - end - if params.type == 'kcp' or params.type == 'mkcp' then - result.transport = "mkcp" - result.mkcp_guise = params.headerType or "none" - result.mkcp_mtu = 1350 - result.mkcp_tti = 50 - result.mkcp_uplinkCapacity = 5 - result.mkcp_downlinkCapacity = 20 - result.mkcp_readBufferSize = 2 - result.mkcp_writeBufferSize = 2 - result.mkcp_seed = params.seed - end - if params.type == 'quic' then - result.quic_guise = params.headerType or "none" - result.quic_key = params.key - result.quic_security = params.quicSecurity or "none" - end - if params.type == 'grpc' then - if params.path then result.grpc_serviceName = params.path end - if params.serviceName then result.grpc_serviceName = params.serviceName end - result.grpc_mode = params.mode or "gun" - end - if params.type == 'xhttp' then - if result.type ~= "Xray" then - result.error_msg = "请更换 Xray 以支持 xhttp 传输方式." - end - result.xhttp_host = params.host - result.xhttp_path = params.path - result.xhttp_mode = params.mode or "auto" - result.use_xhttp_extra = (params.extra and params.extra ~= "") and "1" or nil - result.xhttp_extra = (params.extra and params.extra ~= "") and api.base64Encode(params.extra) or nil - local success, Data = pcall(jsonParse, params.extra) - if success and Data then - local address = (Data.extra and Data.extra.downloadSettings and Data.extra.downloadSettings.address) - or (Data.downloadSettings and Data.downloadSettings.address) - result.download_address = (address and address ~= "") and address:gsub("^%[", ""):gsub("%]$", "") or nil - end - end - result.tls = "0" - if params.security == "tls" or params.security == "reality" then - result.tls = "1" - result.tls_serverName = (params.sni and params.sni ~= "") and params.sni or params.host - result.alpn = params.alpn - if params.fp and params.fp ~= "" then - result.utls = "1" - result.fingerprint = params.fp - end - if params.ech and params.ech ~= "" then - result.ech = "1" - result.ech_config = params.ech - end - if params.security == "reality" then - result.reality = "1" - result.reality_publicKey = params.pbk or nil - result.reality_shortId = params.sid or nil - result.reality_spiderX = params.spx or nil - result.use_mldsa65Verify = (params.pqv and params.pqv ~= "") and "1" or nil - result.reality_mldsa65Verify = params.pqv or nil - end - end - params.allowinsecure = params.allowinsecure or params.insecure - if params.allowinsecure and (params.allowinsecure == "1" or params.allowinsecure == "0") then - result.tls_allowInsecure = params.allowinsecure - else - result.tls_allowInsecure = allowInsecure_default and "1" or "0" - end - else - result.error_msg = i18n.translatef("Please replace Xray or Sing-Box to support more transmission methods in Shadowsocks.") - end - end - - if params["shadow-tls"] then - if result.type ~= "sing-box" and result.type ~= "SS-Rust" then - result.error_msg = ss_type_default .. " " .. i18n.translatef("unsupport %s plugin.", "shadow-tls") - else - -- Parsing SS Shadow-TLS plugin parameters - local function parseShadowTLSParams(b64str, out) - local ok, data = pcall(jsonParse, base64Decode(b64str)) - if not ok or type(data) ~= "table" then return "" end - if type(out) == "table" then - for k, v in pairs(data) do out[k] = v end - end - local t = {} - if data.version then t[#t+1] = "v" .. data.version .. "=1" end - if data.password then t[#t+1] = "passwd=" .. data.password end - for k, v in pairs(data) do - if k ~= "version" and k ~= "password" then - t[#t+1] = k .. "=" .. tostring(v) - end - end - return table.concat(t, ";") - end - - if result.type == "SS-Rust" then - result.plugin_enabled = "1" - result.plugin = "shadow-tls" - result.plugin_opts = parseShadowTLSParams(params["shadow-tls"]) - elseif result.type == "sing-box" then - local shadowtlsOpt = {} - parseShadowTLSParams(params["shadow-tls"], shadowtlsOpt) - if next(shadowtlsOpt) then - result.shadowtls = "1" - result.shadowtls_version = shadowtlsOpt.version or "1" - result.shadowtls_password = shadowtlsOpt.password - result.shadowtls_serverName = shadowtlsOpt.host - if shadowtlsOpt.fingerprint then - result.shadowtls_utls = "1" - result.shadowtls_fingerprint = shadowtlsOpt.fingerprint or "chrome" - end - end - end - end - end - end - elseif szType == "trojan" then - if trojan_type_default == "sing-box" and has_singbox then - result.type = 'sing-box' - result.protocol = 'trojan' - elseif trojan_type_default == "xray" and has_xray then - result.type = 'Xray' - result.protocol = 'trojan' - else - log(2, i18n.translatef("Skipping the %s node is due to incompatibility with the %s core program or incorrect node usage type settings.", "Trojan", "Trojan")) - return nil - end - - local alias = "" - if content:find("#") then - local idx_sp = content:find("#") - alias = content:sub(idx_sp + 1, -1) - content = content:sub(0, idx_sp - 1) - end - result.remarks = UrlDecode(alias) - if content:find("@") then - local Info = split(content, "@") - result.password = UrlDecode(Info[1]) - local port = "443" - Info[2] = (Info[2] or ""):gsub("/%?", "?") - local query = split(Info[2], "%?") - local host_port = query[1] - local params = {} - for _, v in pairs(split(query[2], '&')) do - local t = split(v, '=') - if #t > 1 then - params[string.lower(t[1])] = UrlDecode(t[2]) - end - end - -- [2001:4860:4860::8888]:443 - -- 8.8.8.8:443 - if host_port:find(":") then - local sp = split(host_port, ":") - port = sp[#sp] - if api.is_ipv6addrport(host_port) then - result.address = api.get_ipv6_only(host_port) - else - result.address = sp[1] - end - else - result.address = host_port - end - - local peer, sni = nil, "" - if params.peer then peer = params.peer end - sni = params.sni and params.sni or "" - if params.ws and params.ws == "1" then - result.trojan_transport = "ws" - if params.wshost then result.ws_host = params.wshost end - if params.wspath then result.ws_path = params.wspath end - if sni == "" and params.wshost then sni = params.wshost end - end - result.port = port - - result.tls = '1' - result.tls_serverName = peer and peer or sni - - params.allowinsecure = params.allowinsecure or params.insecure - if params.allowinsecure then - if params.allowinsecure == "1" or params.allowinsecure == "0" then - result.tls_allowInsecure = params.allowinsecure - else - result.tls_allowInsecure = string.lower(params.allowinsecure) == "true" and "1" or "0" - end - else - result.tls_allowInsecure = allowInsecure_default and "1" or "0" - end - - if not params.type then params.type = "tcp" end - params.type = string.lower(params.type) - if result.type == "sing-box" and params.type == "raw" then - params.type = "tcp" - elseif result.type == "Xray" and params.type == "tcp" then - params.type = "raw" - end - if params.type == "h2" or params.type == "http" then - params.type = "http" - result.transport = (result.type == "Xray") and "xhttp" or "http" - else - result.transport = params.type - end - if params.type == 'ws' then - result.ws_host = params.host - result.ws_path = params.path - if result.type == "sing-box" and params.path then - local ws_path_dat = split(params.path, "%?") - local ws_path = ws_path_dat[1] - local ws_path_params = {} - for _, v in pairs(split(ws_path_dat[2], '&')) do - local t = split(v, '=') - ws_path_params[t[1]] = t[2] - end - if ws_path_params.ed and tonumber(ws_path_params.ed) then - result.ws_path = ws_path - result.ws_enableEarlyData = "1" - result.ws_maxEarlyData = tonumber(ws_path_params.ed) - result.ws_earlyDataHeaderName = "Sec-WebSocket-Protocol" - end - end - end - if params.type == "http" then - if result.type == "sing-box" then - result.transport = "http" - result.http_host = (params.host and params.host ~= "") and { params.host } or nil - result.http_path = params.path - elseif result.type == "Xray" then - result.transport = "xhttp" - result.xhttp_mode = "stream-one" - result.xhttp_host = params.host - result.xhttp_path = params.path - end - end - if params.type == 'raw' or params.type == 'tcp' then - result.tcp_guise = params.headerType or "none" - result.tcp_guise_http_host = (params.host and params.host ~= "") and { params.host } or nil - result.tcp_guise_http_path = (params.path and params.path ~= "") and { params.path } or nil - end - if params.type == 'kcp' or params.type == 'mkcp' then - result.transport = "mkcp" - result.mkcp_guise = params.headerType or "none" - result.mkcp_mtu = 1350 - result.mkcp_tti = 50 - result.mkcp_uplinkCapacity = 5 - result.mkcp_downlinkCapacity = 20 - result.mkcp_readBufferSize = 2 - result.mkcp_writeBufferSize = 2 - result.mkcp_seed = params.seed - end - if params.type == 'quic' then - result.quic_guise = params.headerType or "none" - result.quic_key = params.key - result.quic_security = params.quicSecurity or "none" - end - if params.type == 'grpc' then - if params.path then result.grpc_serviceName = params.path end - if params.serviceName then result.grpc_serviceName = params.serviceName end - result.grpc_mode = params.mode or "gun" - end - if params.type == 'xhttp' then - result.xhttp_host = params.host - result.xhttp_path = params.path - end - if params.type == 'httpupgrade' then - result.httpupgrade_host = params.host - result.httpupgrade_path = params.path - end - - result.alpn = params.alpn - - if result.type == "sing-box" and (result.transport == "mkcp" or result.transport == "xhttp") then - log(2, i18n.translatef("Skip node: %s. Because Sing-Box does not support the %s protocol's %s transmission method, Xray needs to be used instead.", result.remarks, szType, result.transport)) - return nil - end - end - elseif szType == "ssd" then - result = set_ss_implementation(result) - if not result then return nil end - result.address = content.server - result.port = content.port - result.password = content.password - result.method = content.encryption - result.plugin = content.plugin - result.plugin_opts = content.plugin_options - result.group = content.airport - result.remarks = content.remarks - elseif szType == "vless" then - if vless_type_default == "sing-box" and has_singbox then - result.type = 'sing-box' - elseif vless_type_default == "xray" and has_xray then - result.type = "Xray" - else - log(2, i18n.translatef("Skipping the %s node is due to incompatibility with the %s core program or incorrect node usage type settings.", "VLESS", "VLESS")) - return nil - end - result.protocol = "vless" - local alias = "" - if content:find("#") then - local idx_sp = content:find("#") - alias = content:sub(idx_sp + 1, -1) - content = content:sub(0, idx_sp - 1) - end - result.remarks = UrlDecode(alias) - if content:find("@") then - local Info = split(content, "@") - result.uuid = UrlDecode(Info[1]) - local port = "443" - Info[2] = (Info[2] or ""):gsub("/%?", "?") - local query = split(Info[2], "%?") - local host_port = query[1] - local params = {} - for _, v in pairs(split(query[2], '&')) do - local t = split(v, '=') - params[t[1]] = UrlDecode(t[2]) - end - -- [2001:4860:4860::8888]:443 - -- 8.8.8.8:443 - if host_port:find(":") then - local sp = split(host_port, ":") - port = sp[#sp] - if api.is_ipv6addrport(host_port) then - result.address = api.get_ipv6_only(host_port) - else - result.address = sp[1] - end - else - result.address = host_port - end - - if not params.type then params.type = "tcp" end - params.type = string.lower(params.type) - if ({ xhttp=true, kcp=true, mkcp=true })[params.type] and result.type ~= "Xray" and has_xray then - result.type = "Xray" - end - if result.type == "sing-box" and params.type == "raw" then - params.type = "tcp" - elseif result.type == "Xray" and params.type == "tcp" then - params.type = "raw" - end - if params.type == "h2" or params.type == "http" then - params.type = "http" - result.transport = (result.type == "Xray") and "xhttp" or "http" - else - result.transport = params.type - end - if params.type == 'ws' then - result.ws_host = params.host - result.ws_path = params.path - if result.type == "sing-box" and params.path then - local ws_path_dat = split(params.path, "%?") - local ws_path = ws_path_dat[1] - local ws_path_params = {} - for _, v in pairs(split(ws_path_dat[2], '&')) do - local t = split(v, '=') - ws_path_params[t[1]] = t[2] - end - if ws_path_params.ed and tonumber(ws_path_params.ed) then - result.ws_path = ws_path - result.ws_enableEarlyData = "1" - result.ws_maxEarlyData = tonumber(ws_path_params.ed) - result.ws_earlyDataHeaderName = "Sec-WebSocket-Protocol" - end - end - end - if params.type == "http" then - if result.type == "sing-box" then - result.transport = "http" - result.http_host = (params.host and params.host ~= "") and { params.host } or nil - result.http_path = params.path - elseif result.type == "Xray" then - result.transport = "xhttp" - result.xhttp_mode = "stream-one" - result.xhttp_host = params.host - result.xhttp_path = params.path - end - end - if params.type == 'raw' or params.type == 'tcp' then - result.tcp_guise = params.headerType or "none" - result.tcp_guise_http_host = (params.host and params.host ~= "") and { params.host } or nil - result.tcp_guise_http_path = (params.path and params.path ~= "") and { params.path } or nil - end - if params.type == 'kcp' or params.type == 'mkcp' then - result.transport = "mkcp" - result.mkcp_guise = params.headerType or "none" - result.mkcp_mtu = 1350 - result.mkcp_tti = 50 - result.mkcp_uplinkCapacity = 5 - result.mkcp_downlinkCapacity = 20 - result.mkcp_readBufferSize = 2 - result.mkcp_writeBufferSize = 2 - end - if params.type == 'quic' then - result.quic_guise = params.headerType or "none" - result.quic_key = params.key - result.quic_security = params.quicSecurity or "none" - end - if params.type == 'grpc' then - if params.path then result.grpc_serviceName = params.path end - if params.serviceName then result.grpc_serviceName = params.serviceName end - result.grpc_mode = params.mode or "gun" - end - if params.type == 'xhttp' or params.type == 'splithttp' then - result.xhttp_host = params.host - result.xhttp_path = params.path - result.xhttp_mode = params.mode or "auto" - result.use_xhttp_extra = (params.extra and params.extra ~= "") and "1" or nil - result.xhttp_extra = (params.extra and params.extra ~= "") and api.base64Encode(params.extra) or nil - local success, Data = pcall(jsonParse, params.extra) - if success and Data then - local address = (Data.extra and Data.extra.downloadSettings and Data.extra.downloadSettings.address) - or (Data.downloadSettings and Data.downloadSettings.address) - result.download_address = (address and address ~= "") and address:gsub("^%[", ""):gsub("%]$", "") or nil - end - end - if params.type == 'httpupgrade' then - result.httpupgrade_host = params.host - result.httpupgrade_path = params.path - end - - result.encryption = params.encryption or "none" - - result.flow = params.flow and params.flow:gsub("-udp443", "") or nil - - result.tls = "0" - if params.security == "tls" or params.security == "reality" then - result.tls = "1" - result.tls_serverName = (params.sni and params.sni ~= "") and params.sni or params.host - result.alpn = params.alpn - if params.fp and params.fp ~= "" then - result.utls = "1" - result.fingerprint = params.fp - end - if params.ech and params.ech ~= "" then - result.ech = "1" - result.ech_config = params.ech - end - if params.security == "reality" then - result.reality = "1" - result.reality_publicKey = params.pbk or nil - result.reality_shortId = params.sid or nil - result.reality_spiderX = params.spx or nil - result.use_mldsa65Verify = (params.pqv and params.pqv ~= "") and "1" or nil - result.reality_mldsa65Verify = params.pqv or nil - end - end - - result.port = port - - params.allowinsecure = params.allowinsecure or params.insecure - if params.allowinsecure and (params.allowinsecure == "1" or params.allowinsecure == "0") then - result.tls_allowInsecure = params.allowinsecure - else - result.tls_allowInsecure = allowInsecure_default and "1" or "0" - end - - if result.type == "sing-box" and (result.transport == "mkcp" or result.transport == "xhttp") then - log(2, i18n.translatef("Skip node: %s. Because Sing-Box does not support the %s protocol's %s transmission method, Xray needs to be used instead.", result.remarks, szType, result.transport)) - return nil - end - end - elseif szType == 'hysteria' then - if has_singbox then - result.type = 'sing-box' - result.protocol = "hysteria" - else - log(2, i18n.translatef("Skip the %s node because the %s core program is not installed.", "Hysteria", "Hysteria", "Sing-Box")) - return nil - end - - local alias = "" - if content:find("#") then - local idx_sp = content:find("#") - alias = content:sub(idx_sp + 1, -1) - content = content:sub(0, idx_sp - 1) - end - result.remarks = UrlDecode(alias) - - local dat = split(content:gsub("/%?", "?"), '%?') - local host_port = dat[1] - local params = {} - for _, v in pairs(split(dat[2], '&')) do - local t = split(v, '=') - if #t > 0 then - params[t[1]] = t[2] - end - end - -- [2001:4860:4860::8888]:443 - -- 8.8.8.8:443 - if host_port:find(":") then - local sp = split(host_port, ":") - result.port = sp[#sp] - if api.is_ipv6addrport(host_port) then - result.address = api.get_ipv6_only(host_port) - else - result.address = sp[1] - end - else - result.address = host_port - end - result.hysteria_obfs = params.obfsParam - result.hysteria_auth_type = "string" - result.hysteria_auth_password = params.auth - result.tls_serverName = params.peer - params.allowinsecure = params.allowinsecure or params.insecure - if params.allowinsecure and (params.allowinsecure == "1" or params.allowinsecure == "0") then - result.tls_allowInsecure = params.allowinsecure - else - result.tls_allowInsecure = allowInsecure_default and "1" or "0" - end - result.hysteria_alpn = params.alpn - result.hysteria_up_mbps = params.upmbps - result.hysteria_down_mbps = params.downmbps - result.hysteria_hop = params.mport - - elseif szType == 'hysteria2' or szType == 'hy2' then - local alias = "" - if content:find("#") then - local idx_sp = content:find("#") - alias = content:sub(idx_sp + 1, -1) - content = content:sub(0, idx_sp - 1) - end - result.remarks = UrlDecode(alias) - local Info = content - if content:find("@") then - local contents = split(content, "@") - result.hysteria2_auth_password = UrlDecode(contents[1]) - Info = (contents[2] or ""):gsub("/%?", "?") - end - local query = split(Info, "%?") - local host_port = query[1] - local params = {} - for _, v in pairs(split(query[2], '&')) do - local t = split(v, '=') - if #t > 1 then - params[string.lower(t[1])] = UrlDecode(t[2]) - end - end - -- [2001:4860:4860::8888]:443 - -- 8.8.8.8:443 - if host_port:find(":") then - local sp = split(host_port, ":") - result.port = sp[#sp] - if api.is_ipv6addrport(host_port) then - result.address = api.get_ipv6_only(host_port) - else - result.address = sp[1] - end - else - result.address = host_port - end - result.tls_serverName = params.sni - params.allowinsecure = params.allowinsecure or params.insecure - if params.allowinsecure and (params.allowinsecure == "1" or params.allowinsecure == "0") then - result.tls_allowInsecure = params.allowinsecure - else - result.tls_allowInsecure = allowInsecure_default and "1" or "0" - end - result.hysteria2_tls_pinSHA256 = params.pinSHA256 - result.hysteria2_hop = params.mport - - if (hysteria2_type_default == "sing-box" and has_singbox) or (hysteria2_type_default == "xray" and has_xray) then - local is_singbox = hysteria2_type_default == "sing-box" and has_singbox - result.type = is_singbox and 'sing-box' or 'Xray' - result.protocol = "hysteria2" - if params["obfs-password"] or params["obfs_password"] then - result.hysteria2_obfs_type = "salamander" - result.hysteria2_obfs_password = params["obfs-password"] or params["obfs_password"] - end - elseif has_hysteria2 then - result.type = "Hysteria2" - if params["obfs-password"] or params["obfs_password"] then - result.hysteria2_obfs = params["obfs-password"] or params["obfs_password"] - end - else - log(2, i18n.translatef("Skipping the %s node is due to incompatibility with the %s core program or incorrect node usage type settings.", "Hysteria2", "Hysteria2")) - return nil - end - elseif szType == 'tuic' then - if has_singbox then - result.type = 'sing-box' - result.protocol = "tuic" - else - log(2, i18n.translatef("Skip the %s node because the %s core program is not installed.", "Tuic", "Tuic", "Sing-Box")) - return nil - end - - local alias = "" - if content:find("#") then - local idx_sp = content:find("#") - alias = content:sub(idx_sp + 1, -1) - content = content:sub(0, idx_sp - 1) - end - result.remarks = UrlDecode(alias) - local Info = content - if content:find("@") then - local contents = split(content, "@") - if contents[1]:find(":") then - local userinfo = split(contents[1], ":") - result.uuid = UrlDecode(userinfo[1]) - result.password = UrlDecode(userinfo[2]) - end - Info = (contents[2] or ""):gsub("/%?", "?") - end - local query = split(Info, "%?") - local host_port = query[1] - local params = {} - for _, v in pairs(split(query[2], '&')) do - local t = split(v, '=') - if #t > 1 then - params[string.lower(t[1])] = UrlDecode(t[2]) - end - end - if host_port:find(":") then - local sp = split(host_port, ":") - result.port = sp[#sp] - if api.is_ipv6addrport(host_port) then - result.address = api.get_ipv6_only(host_port) - else - result.address = sp[1] - end - else - result.address = host_port - end - result.tls_serverName = params.sni - result.tuic_alpn = params.alpn or "default" - result.tuic_congestion_control = params.congestion_control or "cubic" - result.tuic_udp_relay_mode = params.udp_relay_mode or "native" - params.allowinsecure = params.allowinsecure or params.insecure - if params.allowinsecure then - if params.allowinsecure == "1" or params.allowinsecure == "0" then - result.tls_allowInsecure = params.allowinsecure - else - result.tls_allowInsecure = string.lower(params.allowinsecure) == "true" and "1" or "0" - end - else - result.tls_allowInsecure = allowInsecure_default and "1" or "0" - end - elseif szType == "anytls" then - if has_singbox then - result.type = 'sing-box' - result.protocol = "anytls" - else - log(2, i18n.translatef("Skip the %s node because the %s core program is not installed.", "AnyTLS", "AnyTLS", "Sing-Box 1.12")) - return nil - end - - local alias = "" - if content:find("#") then - local idx_sp = content:find("#") - alias = content:sub(idx_sp + 1, -1) - content = content:sub(0, idx_sp - 1) - end - result.remarks = UrlDecode(alias) - if content:find("@") then - local Info = split(content, "@") - result.password = UrlDecode(Info[1]) - local port = "443" - Info[2] = (Info[2] or ""):gsub("/%?", "?") - local query = split(Info[2], "%?") - local host_port = query[1] - local params = {} - for _, v in pairs(split(query[2], '&')) do - local t = split(v, '=') - params[t[1]] = UrlDecode(t[2]) - end - -- [2001:4860:4860::8888]:443 - -- 8.8.8.8:443 - if host_port:find(":") then - local sp = split(host_port, ":") - port = sp[#sp] - if api.is_ipv6addrport(host_port) then - result.address = api.get_ipv6_only(host_port) - else - result.address = sp[1] - end - else - result.address = host_port - end - result.tls = "0" - if (not params.security or params.security == "") and params.sni and params.sni ~= "" then - params.security = "tls" - end - if params.security == "tls" or params.security == "reality" then - result.tls = "1" - result.tls_serverName = params.sni - result.alpn = params.alpn - if params.fp and params.fp ~= "" then - result.utls = "1" - result.fingerprint = params.fp - end - if params.security == "reality" then - result.reality = "1" - result.reality_publicKey = params.pbk or nil - result.reality_shortId = params.sid or nil - end - end - result.port = port - params.allowinsecure = params.allowinsecure or params.insecure - if params.allowinsecure and (params.allowinsecure == "1" or params.allowinsecure == "0") then - result.tls_allowInsecure = params.allowinsecure - else - result.tls_allowInsecure = allowInsecure_default and "1" or "0" - end - local singbox_version = api.get_app_version("sing-box") - local version_ge_1_12 = api.compare_versions(singbox_version:match("[^v]+"), ">=", "1.12.0") - if not has_singbox or not version_ge_1_12 then - log(2, i18n.translatef("Skip the %s node, as %s type nodes require Sing-Box version 1.12 or higher.", result.remarks, szType)) - return nil - end - end - else - log(2, i18n.translatef("%s type node subscriptions are not currently supported, skip this node.", szType)) - return nil - end - if not result.remarks or result.remarks == "" then - if result.address and result.port then - result.remarks = result.address .. ':' .. result.port - else - result.remarks = "NULL" - end - end - return result -end - -local function curl(url, file, ua, mode) - if not url or url == "" then return 404 end - local curl_args = { - "-skL", "-w %{http_code}", "--retry 3", "--connect-timeout 3" - } - if ua and ua ~= "" and ua ~= "curl" then - ua = (ua == "passwall2") and ("passwall2/" .. api.get_version()) or ua - curl_args[#curl_args + 1] = '--user-agent "' .. ua .. '"' - end - curl_args[#curl_args + 1] = get_headers() - local return_code, result - if mode == "direct" then - return_code, result = api.curl_direct(url, file, curl_args) - elseif mode == "proxy" then - return_code, result = api.curl_proxy(url, file, curl_args) - else - return_code, result = api.curl_auto(url, file, curl_args) - end - return tonumber(result) -end - -function get_headers() - local cache_file = "/tmp/etc/" .. appname .. "_tmp/sub_curl_headers" - if fs.access(cache_file) then - return luci.sys.exec("cat " .. cache_file) - end - local headers = {} - - local function readfile(path) - local f = io.open(path, "r") - if not f then return nil end - local c = f:read("*a") - f:close() - return api.trim(c) - end - - headers[#headers + 1] = "x-device-os: OpenWrt" - - local rel = readfile("/etc/openwrt_release") - local os_ver = rel and rel:match("DISTRIB_RELEASE='([^']+)'") - if os_ver then - headers[#headers + 1] = "x-ver-os: " .. os_ver - end - - local model = readfile("/tmp/sysinfo/model") - if model then - headers[#headers + 1] = "x-device-model: " .. model - end - - local mac = readfile("/sys/class/net/eth0/address") - if mac and model then - local raw = mac .. "-" .. model - local p = io.popen("printf '%s' '" .. raw:gsub("'", "'\\''") .. "' | sha256sum") - if p then - local hash = p:read("*l") - p:close() - hash = hash and hash:match("^%w+") - if hash then - headers[#headers + 1] = "x-hwid: " .. hash - end - end - end - - local out = {} - for i = 1, #headers do - out[i] = "-H '" .. headers[i]:gsub("'", "'\\''") .. "'" - end - local headers_str = table.concat(out, " ") - local f = io.open(cache_file, "w"); if f then f:write(headers_str); f:close() end - return headers_str -end - -local function truncate_nodes(group) - for _, config in pairs(CONFIG) do - if config.currentNodes and #config.currentNodes > 0 then - local newNodes = {} - local removeNodesSet = {} - for k, v in pairs(config.currentNodes) do - if v.currentNode and v.currentNode.add_mode == "2" then - if (not group) or (group:lower() == (v.currentNode.group or ""):lower()) then - removeNodesSet[v.currentNode[".name"]] = true - end - end - end - for _, value in ipairs(config.currentNodes) do - if not removeNodesSet[value.currentNode[".name"]] then - newNodes[#newNodes + 1] = value.currentNode[".name"] - end - end - if config.set then - config.set(config, newNodes) - end - else - if config.currentNode and config.currentNode.add_mode == "2" then - if (not group) or (group:lower() == (config.currentNode.group or ""):lower()) then - if config.delete then - config.delete(config) - elseif config.set then - config.set(config, "") - end - end - end - end - end - uci:foreach(appname, "nodes", function(node) - if node.add_mode == "2" then - if (not group) or (group:lower() == (node.group or ""):lower()) then - uci:delete(appname, node['.name']) - end - end - end) - uci:foreach(appname, "subscribe_list", function(o) - if (not group) or (group:lower() == (o.remark or ""):lower()) then - uci:delete(appname, o['.name'], "md5") - end - end) - api.uci_save(uci, appname, true) -end - -local function select_node(nodes, config, parentConfig) - local log_level = 1 - if parentConfig then - log_level = log_level + 1 - end - if config.currentNode then - local server - -- Special priority: cfgid - if config.currentNode[".name"] then - for index, node in pairs(nodes) do - if node[".name"] == config.currentNode[".name"] then - if config.log == nil or config.log == true then - log(log_level, i18n.translatef("Update [%s]", config.remarks) .. " " .. i18n.translatef("Matching node:") .. " " .. node.remarks) - end - server = node[".name"] - break - end - end - end - -- First priority: Type + Notes + IP + Port - if not server then - for index, node in pairs(nodes) do - if config.currentNode.type and config.currentNode.remarks and config.currentNode.address and config.currentNode.port then - if node.type and node.remarks and node.address and node.port then - if node.type == config.currentNode.type and node.remarks == config.currentNode.remarks and (node.address .. ':' .. node.port == config.currentNode.address .. ':' .. config.currentNode.port) then - if config.log == nil or config.log == true then - log(log_level, i18n.translatef("Update [%s]", config.remarks) .. " " .. i18n.translatef("First Matching node:") .. " " .. node.remarks) - end - server = node[".name"] - break - end - end - end - end - end - -- Second priority: Type + IP + Port - if not server then - for index, node in pairs(nodes) do - if config.currentNode.type and config.currentNode.address and config.currentNode.port then - if node.type and node.address and node.port then - if node.type == config.currentNode.type and (node.address .. ':' .. node.port == config.currentNode.address .. ':' .. config.currentNode.port) then - if config.log == nil or config.log == true then - log(log_level, i18n.translatef("Update [%s]", config.remarks) .. " " .. i18n.translatef("Second Matching node:") .. " " .. node.remarks) - end - server = node[".name"] - break - end - end - end - end - end - -- Third priority: IP + Port - if not server then - for index, node in pairs(nodes) do - if config.currentNode.address and config.currentNode.port then - if node.address and node.port then - if node.address .. ':' .. node.port == config.currentNode.address .. ':' .. config.currentNode.port then - if config.log == nil or config.log == true then - log(log_level, i18n.translatef("Update [%s]", config.remarks) .. " " .. i18n.translatef("Third Matching node:") .. " " .. node.remarks) - end - server = node[".name"] - break - end - end - end - end - end - -- Fourth priority: IP - if not server then - for index, node in pairs(nodes) do - if config.currentNode.address then - if node.address then - if node.address == config.currentNode.address then - if config.log == nil or config.log == true then - log(log_level, i18n.translatef("Update [%s]", config.remarks) .. " " .. i18n.translatef("Fourth Matching node:") .. " " .. node.remarks) - end - server = node[".name"] - break - end - end - end - end - end - -- Fifth priority: remarks - if not server then - for index, node in pairs(nodes) do - if config.currentNode.remarks then - if node.remarks then - if node.remarks == config.currentNode.remarks then - if config.log == nil or config.log == true then - log(log_level, i18n.translatef("Update [%s]", config.remarks) .. " " .. i18n.translatef("Fifth Matching node:") .. " " .. node.remarks) - end - server = node[".name"] - break - end - end - end - end - end - if not parentConfig then - -- If that doesn't work, just find one. - if not server then - if #nodes_table > 0 then - if config.log == nil or config.log == true then - log(log_level, i18n.translatef("Update [%s]", config.remarks) .. " " .. i18n.translatef("Unable to find the best matching node, now replaced with:") .. " " .. nodes_table[1].remarks) - end - server = nodes_table[1][".name"] - end - end - end - if server then - if parentConfig then - config.set(parentConfig, server) - else - config.set(config, server) - end - end - else - if not parentConfig then - config.set(config, "") - end - end -end - -local function update_node(manual) - if next(nodeResult) == nil then - log(1, i18n.translatef("No node information updates are available.")) - return - end - - local group = {} - for _, v in ipairs(nodeResult) do - group[v["remark"]:lower()] = true - end - - if manual == 0 and next(group) then - uci:foreach(appname, "nodes", function(node) - -- Do not delete nodes if no new nodes are found or nodes were manually imported... - if node.add_mode == "2" and (node.group and group[node.group:lower()] == true) then - uci:delete(appname, node['.name']) - end - end) - end - for _, v in ipairs(nodeResult) do - local remark = v["remark"] - local list = v["list"] - for _, vv in ipairs(list) do - local cfgid = uci:section(appname, "nodes", api.gen_short_uuid()) - for kkk, vvv in pairs(vv) do - if type(vvv) == "table" and next(vvv) ~= nil then - uci:set_list(appname, cfgid, kkk, vvv) - else - if kkk ~= "group" or vvv ~= "default" then - uci:set(appname, cfgid, kkk, vvv) - end - -- Sing-Box Domain Strategy - if kkk == "type" and vvv == "sing-box" then - uci:set(appname, cfgid, "domain_strategy", domain_strategy_node) - end - -- Subscription Group Chain Agent - if chain_node_type ~= "" and kkk == "type" and vvv == chain_node_type then - if preproxy_node_group ~="" then - uci:set(appname, cfgid, "chain_proxy", "1") - uci:set(appname, cfgid, "preproxy_node", preproxy_node_group) - elseif to_node_group ~= "" then - uci:set(appname, cfgid, "chain_proxy", "2") - uci:set(appname, cfgid, "to_node", to_node_group) - end - end - end - end - end - end - -- Update subscription information - for cfgid, info in pairs(subscribe_info) do - for key, value in pairs(info) do - if value ~= "" then - uci:set(appname, cfgid, key, value) - else - uci:delete(appname, cfgid, key) - end - end - end - api.uci_save(uci, appname, true) - - if next(CONFIG) then - local nodes = {} - uci:foreach(appname, "nodes", function(node) - nodes[#nodes + 1] = node - end) - - for _, config in pairs(CONFIG) do - if config.currentNodes and #config.currentNodes > 0 then - if config.remarks and config.currentNodes[1].log ~= false then - log(1, i18n.translatef("Update [%s]", config.remarks)) - end - for kk, vv in pairs(config.currentNodes) do - select_node(nodes, vv, config) - end - config.set(config) - if not config.newNodes or #config.newNodes == 0 then - log(1, i18n.translatef("[%s]", config.remarks) .. " " .. i18n.translate("Unable to find a new node. Please confirm and process manually.")) - end - else - select_node(nodes, config) - end - end - - api.uci_save(uci, appname, true) - end - - if arg[3] == "cron" then - if not fs.access("/var/lock/" .. appname .. ".lock") then - luci.sys.call("touch /tmp/lock/" .. appname .. "_cron.lock") - end - end - - if manual ~= 1 then - luci.sys.call("/etc/init.d/" .. appname .. " restart > /dev/null 2>&1 &") - end -end - -local function parse_link(raw, add_mode, group, cfgid) - if raw and #raw > 0 then - local nodes, szType - local node_list = {} - -- ssd appear to be in this format, starting with ssd://. - if raw:find('ssd://') then - szType = 'ssd' - local nEnd = select(2, raw:find('ssd://')) - nodes = base64Decode(raw:sub(nEnd + 1, #raw)) - nodes = jsonParse(nodes) - local extra = { - airport = nodes.airport, - port = nodes.port, - encryption = nodes.encryption, - password = nodes.password - } - local servers = {} - -- SS is wrapped inside, so let's just like this. - for _, server in ipairs(nodes.servers) do - tinsert(servers, setmetatable(server, { __index = extra })) - end - nodes = servers - else - -- Formats other than ssd - if add_mode == "1" then - nodes = split(raw, "\n") - else - nodes = split(base64Decode(raw):gsub("\r\n", "\n"), "\n") - end - end - - for _, v in ipairs(nodes) do - if v and (szType == 'ssd' or not string.match(v, "^%s*$")) then - xpcall(function () - local result - if szType == 'ssd' then - result = processData(szType, v, add_mode, group) - elseif not szType then - local node = api.trim(v) - local dat = split(node, "://") - if dat and dat[1] and dat[2] then - if dat[1] == 'vmess' or dat[1] == 'ssr' then - local link = api.trim(dat[2]:gsub("#.*$", "")) - result = processData(dat[1], base64Decode(link), add_mode, group) - else - local link = dat[2]:gsub("&", "&"):gsub("%s*#%s*", "#") -- Some odd links use "&" as "&", and include spaces before and after "#". - result = processData(dat[1], link, add_mode, group) - end - end - else - log(2, i18n.translatef("Skip unknown types:") .. " " .. szType) - end - -- log(2, result) - if result then - if result.error_msg then - log(2, i18n.translatef("Discard node: %s, Reason:", result.remarks) .. " " .. result.error_msg) - elseif not result.type then - log(2, i18n.translatef("Discard node: %s, Reason:", result.remarks) .. " " .. i18n.translatef("No usable binary was found.")) - elseif (add_mode == "2" and is_filter_keyword(result.remarks)) or not result.address or result.remarks == "NULL" or result.address == "127.0.0.1" or - (not datatypes.hostname(result.address) and not (api.is_ip(result.address))) then - log(2, i18n.translatef("Discard filter nodes: %s type node %s", result.type, result.remarks)) - else - tinsert(node_list, result) - end - if add_mode == "2" then - get_subscribe_info(cfgid, result.remarks) - end - end - end, function (err) - --log(2, err) - log(2, v, i18n.translatef("Parsing error, skip this node.")) - end - ) - end - end - if #node_list > 0 then - nodeResult[#nodeResult + 1] = { - remark = group, - list = node_list - } - end - log(2, i18n.translatef("Successfully resolved the [%s] node, number: %s", group, #node_list)) - else - if add_mode == "2" then - log(2, i18n.translatef("Get subscription content for [%s] is empty. This may be due to an invalid subscription address or a network problem. Please diagnose the issue!", group)) - end - end -end - -local execute = function() - do - local subscribe_list = {} - local fail_list = {} - if arg[2] ~= "all" then - string.gsub(arg[2], '[^' .. "," .. ']+', function(w) - subscribe_list[#subscribe_list + 1] = uci:get_all(appname, w) or {} - end) - else - uci:foreach(appname, "subscribe_list", function(o) - subscribe_list[#subscribe_list + 1] = o - end) - end - - local manual_sub = arg[3] == "manual" - - for index, value in ipairs(subscribe_list) do - local cfgid = value[".name"] - local remark = value.remark or "" - local url = value.url or "" - if value.allowInsecure and value.allowInsecure ~= "1" then - allowInsecure_default = nil - end - local filter_keyword_mode = value.filter_keyword_mode or "5" - if filter_keyword_mode == "0" then - filter_keyword_mode_default = "0" - elseif filter_keyword_mode == "1" then - filter_keyword_mode_default = "1" - filter_keyword_discard_list_default = value.filter_discard_list or {} - elseif filter_keyword_mode == "2" then - filter_keyword_mode_default = "2" - filter_keyword_keep_list_default = value.filter_keep_list or {} - elseif filter_keyword_mode == "3" then - filter_keyword_mode_default = "3" - filter_keyword_keep_list_default = value.filter_keep_list or {} - filter_keyword_discard_list_default = value.filter_discard_list or {} - elseif filter_keyword_mode == "4" then - filter_keyword_mode_default = "4" - filter_keyword_keep_list_default = value.filter_keep_list or {} - filter_keyword_discard_list_default = value.filter_discard_list or {} - end - local ss_type = value.ss_type or "global" - if ss_type ~= "global" then - ss_type_default = ss_type - end - local trojan_type = value.trojan_type or "global" - if trojan_type ~= "global" then - trojan_type_default = trojan_type - end - local vmess_type = value.vmess_type or "global" - if vmess_type ~= "global" then - vmess_type_default = vmess_type - end - local vless_type = value.vless_type or "global" - if vless_type ~= "global" then - vless_type_default = vless_type - end - local hysteria2_type = value.hysteria2_type or "global" - if hysteria2_type ~= "global" then - hysteria2_type_default = hysteria2_type - end - local domain_strategy = value.domain_strategy or "global" - if domain_strategy ~= "global" then - domain_strategy_node = domain_strategy - else - domain_strategy_node = domain_strategy_default - end - - -- Subscription Group Chain Agent - local function valid_chain_node(node) - if not node then return "" end - local cp = uci:get(appname, node, "chain_proxy") or "" - local am = uci:get(appname, node, "add_mode") or "0" - chain_node_type = (cp == "" and am ~= "2") and (uci:get(appname, node, "type") or "") or "" - if chain_node_type ~= "Xray" and chain_node_type ~= "sing-box" then - chain_node_type = "" - return "" - end - return node - end - preproxy_node_group = (value.chain_proxy == "1") and valid_chain_node(value.preproxy_node) or "" - to_node_group = (value.chain_proxy == "2") and valid_chain_node(value.to_node) or "" - - local ua = value.user_agent - local access_mode = value.access_mode - local result = (not access_mode) and i18n.translatef("Auto") or (access_mode == "direct" and i18n.translatef("Direct") or (access_mode == "proxy" and i18n.translatef("Proxy") or i18n.translatef("Auto"))) - log(1, i18n.translatef("Start subscribing: %s", '【' .. remark .. '】' .. url .. ' [' .. result .. ']')) - local tmp_file = "/tmp/" .. cfgid - value.http_code = curl(url, tmp_file, ua, access_mode) - if value.http_code ~= 200 then - fail_list[#fail_list + 1] = value - else - if luci.sys.call("[ -f " .. tmp_file .. " ] && sed -i -e '/^[ \t]*$/d' -e '/^[ \t]*\r$/d' " .. tmp_file) == 0 then - local f = io.open(tmp_file, "r") - local stdout = f:read("*all") - f:close() - local raw_data = api.trim(stdout) - local old_md5 = value.md5 or "" - local new_md5 = luci.sys.exec("md5sum " .. tmp_file .. " 2>/dev/null | awk '{print $1}'"):gsub("\n", "") - if not manual_sub and old_md5 == new_md5 then - log(1, i18n.translatef("Subscription: [%s] No changes, no update required.", remark)) - else - parse_link(raw_data, "2", remark, cfgid) - uci:set(appname, cfgid, "md5", new_md5) - end - else - fail_list[#fail_list + 1] = value - end - end - allowInsecure_default = true - luci.sys.call("rm -f " .. tmp_file) - filter_keyword_mode_default = uci:get(appname, "@global_subscribe[0]", "filter_keyword_mode") or "0" - filter_keyword_discard_list_default = uci:get(appname, "@global_subscribe[0]", "filter_discard_list") or {} - filter_keyword_keep_list_default = uci:get(appname, "@global_subscribe[0]", "filter_keep_list") or {} - ss_type_default = uci:get(appname, "@global_subscribe[0]", "ss_type") or "shadowsocks-libev" - trojan_type_default = uci:get(appname, "@global_subscribe[0]", "trojan_type") or "sing-box" - vmess_type_default = uci:get(appname, "@global_subscribe[0]", "vmess_type") or "xray" - vless_type_default = uci:get(appname, "@global_subscribe[0]", "vless_type") or "xray" - hysteria2_type_default = uci:get(appname, "@global_subscribe[0]", "hysteria2_type") or "hysteria2" - end - - if #fail_list > 0 then - for index, value in ipairs(fail_list) do - log(1, i18n.translatef("[%s] Subscription failed. This could be due to an invalid subscription address or a network issue. Please diagnose the problem! [%s]", value.remark, tostring(value.http_code))) - end - end - update_node(0) - end -end - -if arg[1] then - if arg[1] == "start" then - log(0, i18n.translatef("Start subscribing...")) - xpcall(execute, function(e) - log(1, e) - log(1, debug.traceback()) - log(1, i18n.translatef("Error, restoring service.")) - end) - log(0, i18n.translatef("Subscription complete...") .. "\n") - elseif arg[1] == "add" then - local f = assert(io.open("/tmp/links.conf", 'r')) - local raw = f:read('*all') - f:close() - parse_link(raw, "1", arg[2]) - update_node(1) - luci.sys.call("rm -f /tmp/links.conf") - elseif arg[1] == "truncate" then - truncate_nodes(arg[2]) - end -end diff --git a/small/luci-app-passwall2/root/usr/share/passwall2/tasks.sh b/small/luci-app-passwall2/root/usr/share/passwall2/tasks.sh deleted file mode 100755 index 56b1f143f2..0000000000 --- a/small/luci-app-passwall2/root/usr/share/passwall2/tasks.sh +++ /dev/null @@ -1,89 +0,0 @@ -#!/bin/sh -## Loop update script - -. /usr/share/passwall2/utils.sh -LOCK_FILE=${LOCK_PATH}/${CONFIG}_tasks.lock - -CFG_UPDATE_INT=0 - -exec 99>"$LOCK_FILE" -flock -n 99 -if [ "$?" != 0 ]; then - exit 0 -fi - -while true -do - - if [ "$CFG_UPDATE_INT" -ne 0 ]; then - - stop_week_mode=$(config_t_get global_delay stop_week_mode) - stop_interval_mode=$(config_t_get global_delay stop_interval_mode) - stop_interval_mode=$(expr "$stop_interval_mode" \* 60) - if [ -n "$stop_week_mode" ]; then - [ "$stop_week_mode" = "8" ] && { - [ "$(expr "$CFG_UPDATE_INT" % "$stop_interval_mode")" -eq 0 ] && /etc/init.d/$CONFIG stop > /dev/null 2>&1 & - } - fi - - start_week_mode=$(config_t_get global_delay start_week_mode) - start_interval_mode=$(config_t_get global_delay start_interval_mode) - start_interval_mode=$(expr "$start_interval_mode" \* 60) - if [ -n "$start_week_mode" ]; then - [ "$start_week_mode" = "8" ] && { - [ "$(expr "$CFG_UPDATE_INT" % "$start_interval_mode")" -eq 0 ] && /etc/init.d/$CONFIG start > /dev/null 2>&1 & - } - fi - - restart_week_mode=$(config_t_get global_delay restart_week_mode) - restart_interval_mode=$(config_t_get global_delay restart_interval_mode) - restart_interval_mode=$(expr "$restart_interval_mode" \* 60) - if [ -n "$restart_week_mode" ]; then - [ "$restart_week_mode" = "8" ] && { - [ "$(expr "$CFG_UPDATE_INT" % "$restart_interval_mode")" -eq 0 ] && /etc/init.d/$CONFIG restart > /dev/null 2>&1 & - } - fi - - autoupdate=$(config_t_get global_rules auto_update) - weekupdate=$(config_t_get global_rules week_update) - hourupdate=$(config_t_get global_rules interval_update) - hourupdate=$(expr "$hourupdate" \* 60) - if [ "$autoupdate" = "1" ]; then - [ "$weekupdate" = "8" ] && { - [ "$(expr "$CFG_UPDATE_INT" % "$hourupdate")" -eq 0 ] && lua $APP_PATH/rule_update.lua log all cron > /dev/null 2>&1 & - } - fi - - TMP_SUB_PATH=$TMP_PATH/sub_tasks - mkdir -p $TMP_SUB_PATH - for item in $(uci show ${CONFIG} | grep "=subscribe_list" | cut -d '.' -sf 2 | cut -d '=' -sf 1); do - if [ "$(config_n_get $item auto_update 0)" = "1" ]; then - cfgid=$(uci show ${CONFIG}.$item | head -n 1 | cut -d '.' -sf 2 | cut -d '=' -sf 1) - remark=$(config_n_get $item remark) - week_update=$(config_n_get $item week_update) - hour_update=$(config_n_get $item interval_update) - echo "$cfgid" >> $TMP_SUB_PATH/${week_update}_${hour_update} - fi - done - - [ -d "${TMP_SUB_PATH}" ] && { - for name in $(ls ${TMP_SUB_PATH}); do - week_update=$(echo $name | awk -F '_' '{print $1}') - hour_update=$(echo $name | awk -F '_' '{print $2}') - hour_update=$(expr "$hour_update" \* 60) - cfgids=$(echo -n $(cat ${TMP_SUB_PATH}/${name}) | sed 's# #,#g') - [ "$week_update" = "8" ] && { - [ "$(expr "$CFG_UPDATE_INT" % "$hour_update")" -eq 0 ] && lua $APP_PATH/subscribe.lua start $cfgids cron > /dev/null 2>&1 & - } - - done - rm -rf $TMP_SUB_PATH - } - - fi - - CFG_UPDATE_INT=$(expr "$CFG_UPDATE_INT" + 10) - - sleep 600 - -done 2>/dev/null diff --git a/small/luci-app-passwall2/root/usr/share/passwall2/test.sh b/small/luci-app-passwall2/root/usr/share/passwall2/test.sh deleted file mode 100755 index 13dff4bc3c..0000000000 --- a/small/luci-app-passwall2/root/usr/share/passwall2/test.sh +++ /dev/null @@ -1,70 +0,0 @@ -#!/bin/sh - -. /usr/share/passwall2/utils.sh - -test_url() { - local url=$1 - local try=1 - [ -n "$2" ] && try=$2 - local timeout=2 - [ -n "$3" ] && timeout=$3 - local extra_params=$4 - curl --help all | grep "\-\-retry-all-errors" > /dev/null - [ $? == 0 ] && extra_params="--retry-all-errors ${extra_params}" - status=$(/usr/bin/curl -I -o /dev/null -skL $extra_params --connect-timeout ${timeout} --retry ${try} -w %{http_code} "$url") - case "$status" in - 204|\ - 200) - status=200 - ;; - esac - echo $status -} - -test_proxy() { - result=0 - status=$(test_url "https://www.google.com/generate_204" ${retry_num} ${connect_timeout}) - if [ "$status" = "200" ]; then - result=0 - else - status2=$(test_url "https://www.baidu.com" ${retry_num} ${connect_timeout}) - if [ "$status2" = "200" ]; then - result=1 - else - result=2 - ping -c 3 -W 1 223.5.5.5 > /dev/null 2>&1 - [ $? -eq 0 ] && { - result=1 - } - fi - fi - echo $result -} - -url_test_node() { - result=0 - local node_id=$1 - local _type=$(echo $(config_n_get ${node_id} type) | tr 'A-Z' 'a-z') - [ -n "${_type}" ] && { - local _tmp_port=$(get_new_port 61080 tcp,udp) - /usr/share/${CONFIG}/app.sh run_socks flag="url_test_${node_id}" node=${node_id} bind=127.0.0.1 socks_port=${_tmp_port} config_file=url_test_${node_id}.json - local curlx="socks5h://127.0.0.1:${_tmp_port}" - sleep 1s - local url=$(config_t_get global_other url_test_url https://www.google.com/generate_204) - result=$(curl --connect-timeout 3 -o /dev/null -I -skL -w "%{http_code}:%{time_starttransfer}" -x $curlx "${url}") - pgrep -af "url_test_${node_id}" | awk '! /test\.sh/{print $1}' | xargs kill -9 >/dev/null 2>&1 - rm -rf /tmp/etc/${CONFIG}/*url_test_${node_id}*.json - } - echo $result -} - -arg1=$1 -shift -case $arg1 in -test_url) - test_url $@ - ;; -url_test_node) - url_test_node $@ - ;; -esac diff --git a/small/luci-app-passwall2/root/usr/share/passwall2/utils.sh b/small/luci-app-passwall2/root/usr/share/passwall2/utils.sh deleted file mode 100755 index c18c8de71e..0000000000 --- a/small/luci-app-passwall2/root/usr/share/passwall2/utils.sh +++ /dev/null @@ -1,318 +0,0 @@ -#!/bin/sh -# Copyright (C) 2022-2025 xiaorouji -# Copyright (C) 2026 Openwrt-Passwall Organization - -CONFIG=passwall2 -APP_PATH=/usr/share/${CONFIG} -TMP_PATH=/tmp/etc/${CONFIG} -TMP_PATH2=${TMP_PATH}_tmp -LOCK_PATH=/tmp/lock -LOG_FILE=/tmp/log/${CONFIG}.log -TMP_ACL_PATH=${TMP_PATH}/acl -TMP_BIN_PATH=${TMP_PATH}/bin -TMP_IFACE_PATH=${TMP_PATH}/iface -TMP_ROUTE_PATH=${TMP_PATH}/route -TMP_SCRIPT_FUNC_PATH=${TMP_PATH}/script_func - -config_get_type() { - local ret=$(uci -q get "${CONFIG}.${1}" 2>/dev/null) - echo "${ret:=$2}" -} - -config_n_get() { - local ret=$(uci -q get "${CONFIG}.${1}.${2}" 2>/dev/null) - echo "${ret:=$3}" -} - -config_t_get() { - local index=${4:-0} - local ret=$(uci -q get "${CONFIG}.@${1}[${index}].${2}" 2>/dev/null) - echo "${ret:=${3}}" -} - -config_t_set() { - local index=${4:-0} - local ret=$(uci -q set "${CONFIG}.@${1}[${index}].${2}=${3}" 2>/dev/null) -} - -eval_set_val() { - for i in $@; do - for j in $i; do - eval $j - done - done -} - -eval_unset_val() { - for i in $@; do - for j in $i; do - eval unset j - done - done -} - -eval_cache_var() { - [ -s "$TMP_PATH/var" ] && eval $(cat "$TMP_PATH/var") -} - -get_cache_var() { - local key="${1}" - [ -n "${key}" ] && [ -s "$TMP_PATH/var" ] && { - echo $(cat $TMP_PATH/var | grep "^${key}=" | awk -F '=' '{print $2}' | tail -n 1 | awk -F'"' '{print $2}') - } -} - -set_cache_var() { - local key="${1}" - shift 1 - local val="$@" - [ -n "${key}" ] && [ -n "${val}" ] && { - sed -i "/${key}=/d" $TMP_PATH/var >/dev/null 2>&1 - echo "${key}=\"${val}\"" >> $TMP_PATH/var - eval ${key}=\"${val}\" - } -} - -echolog() { - echo -e "$*" >>$LOG_FILE -} - -echolog_date() { - local d="$(date "+%Y-%m-%d %H:%M:%S")" - echolog "$d: $*" -} - -i18n() { - echo "$(lua ${APP_PATH}/i18n.lua "$@")" -} - -log() { - local num="$1" - shift - local content="$@" - local indent="" - if [ "$num" -ge 1 ]; then - for i in $(seq 1 ${num}); do - indent="${indent} " - done - echolog_date "${indent}- ${content}" - else - echolog_date "${content}" - fi -} - -log_i18n() { - local num="$1" - shift - log ${num} "$(i18n "$@")" -} - -lua_api() { - local func=${1} - [ -z "${func}" ] && { - echo "" - return - } - echo $(lua -e "local api = require 'luci.passwall2.api' print(api.${func})") -} - -check_host() { - local f=${1} - a=$(echo $f | grep "\/") - [ -n "$a" ] && return 1 - # Determine if it contains Chinese characters. - local tmp=$(echo -n $f | awk '{print gensub(/[!-~]/,"","g",$0)}') - [ -n "$tmp" ] && return 1 - return 0 -} - -get_enabled_anonymous_secs() { - uci -q show "${CONFIG}" | grep "${1}\[.*\.enabled='1'" | cut -d '.' -sf2 -} - -get_host_ip() { - local host=$2 - local count=$3 - [ -z "$count" ] && count=3 - local isip="" - local ip=$host - if [ "$1" == "ipv6" ]; then - isip=$(echo $host | grep -E "([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}") - if [ -n "$isip" ]; then - isip=$(echo $host | cut -d '[' -f2 | cut -d ']' -f1) - else - isip=$(echo $host | grep -E "([0-9]{1,3}[\.]){3}[0-9]{1,3}") - fi - else - isip=$(echo $host | grep -E "([0-9]{1,3}[\.]){3}[0-9]{1,3}") - fi - [ -z "$isip" ] && { - local t=4 - [ "$1" == "ipv6" ] && t=6 - local vpsrip=$(resolveip -$t -t $count $host | awk 'NR==1{print}') - ip=$vpsrip - } - echo $ip -} - -get_node_host_ip() { - local ip - local address=$(config_n_get $1 address) - [ -n "$address" ] && { - local use_ipv6=$(config_n_get $1 use_ipv6) - local network_type="ipv4" - [ "$use_ipv6" == "1" ] && network_type="ipv6" - ip=$(get_host_ip $network_type $address) - } - echo $ip -} - -get_ip_port_from() { - local __host=${1}; shift 1 - local __ipv=${1}; shift 1 - local __portv=${1}; shift 1 - local __ucipriority=${1}; shift 1 - - local val1 val2 - if [ -n "${__ucipriority}" ]; then - val2=$(config_n_get ${__host} port $(echo $__host | sed -n 's/^.*[:#]\([0-9]*\)$/\1/p')) - val1=$(config_n_get ${__host} address "${__host%%${val2:+[:#]${val2}*}}") - else - val2=$(echo $__host | sed -n 's/^.*[:#]\([0-9]*\)$/\1/p') - val1="${__host%%${val2:+[:#]${val2}*}}" - fi - eval "${__ipv}=\"$val1\"; ${__portv}=\"$val2\"" -} - -host_from_url(){ - local f=${1} - - ## Remove protocol part of url ## - f="${f##http://}" - f="${f##https://}" - f="${f##ftp://}" - f="${f##sftp://}" - - ## Remove username and/or username:password part of URL ## - f="${f##*:*@}" - f="${f##*@}" - - ## Remove rest of urls ## - f="${f%%/*}" - echo "${f%%:*}" -} - -hosts_foreach() { - local __hosts - eval "__hosts=\$${1}"; shift 1 - local __func=${1}; shift 1 - local __default_port=${1}; shift 1 - local __ret=1 - - [ -z "${__hosts}" ] && return 0 - local __ip __port - for __host in $(echo $__hosts | sed 's/[ ,]/\n/g'); do - get_ip_port_from "$__host" "__ip" "__port" - eval "$__func \"${__host}\" \"\${__ip}\" \"\${__port:-${__default_port}}\" \"$@\"" - __ret=$? - [ ${__ret} -ge ${ERROR_NO_CATCH:-1} ] && return ${__ret} - done -} - -get_first_dns() { - local __hosts_val=${1}; shift 1 - __first() { - [ -z "${2}" ] && return 0 - echo "${2}#${3}" - return 1 - } - eval "hosts_foreach \"${__hosts_val}\" __first \"$@\"" -} - -get_last_dns() { - local __hosts_val=${1}; shift 1 - local __first __last - __every() { - [ -z "${2}" ] && return 0 - __last="${2}#${3}" - __first=${__first:-${__last}} - } - eval "hosts_foreach \"${__hosts_val}\" __every \"$@\"" - [ "${__first}" == "${__last}" ] || echo "${__last}" -} - -check_port_exists() { - local port=$1 - local protocol=$2 - [ -n "$protocol" ] || protocol="tcp,udp" - local result= - if [ "$protocol" = "tcp" ]; then - result=$(netstat -tln | grep -c ":$port ") - elif [ "$protocol" = "udp" ]; then - result=$(netstat -uln | grep -c ":$port ") - elif [ "$protocol" = "tcp,udp" ]; then - result=$(netstat -tuln | grep -c ":$port ") - fi - echo "${result}" -} - -get_new_port() { - local port=$1 - [ "$port" == "auto" ] && port=2082 - local protocol=$(echo $2 | tr 'A-Z' 'a-z') - local result=$(check_port_exists $port $protocol) - if [ "$result" != 0 ]; then - local temp= - if [ "$port" -lt 65535 ]; then - temp=$(expr $port + 1) - elif [ "$port" -gt 1 ]; then - temp=$(expr $port - 1) - fi - get_new_port $temp $protocol - else - echo $port - fi -} - -has_1_65535() { - local val="$1" - val=${val//:/-} - case ",$val," in - *,1-65535,*) return 0 ;; - *) return 1 ;; - esac -} - -add_ip2route() { - local ip=$(get_host_ip "ipv4" $1) - [ -z "$ip" ] && { - log 1 "$(i18n "Unable to resolve [%s], route table addition failed!" "${1}")" - return 1 - } - local remarks="${1}" - [ "$remarks" != "$ip" ] && remarks="${1}(${ip})" - - . /lib/functions/network.sh - local gateway device - network_get_gateway gateway "$2" - network_get_device device "$2" - [ -z "${device}" ] && device="$2" - - if [ -n "${gateway}" ]; then - route add -host ${ip} gw ${gateway} dev ${device} >/dev/null 2>&1 - echo "$ip" >> $TMP_ROUTE_PATH/${device} - log 1 "$(i18n "[%s] was successfully added to the routing table of interface [%s]!" "${remarks}" "${device}")" - else - log 1 "$(i18n "Adding [%s] to the [%s] routing table failed! The reason is that the [%s] gateway cannot be found." "${remarks}" "${device}" "${device}")" - fi -} - -delete_ip2route() { - [ -d "${TMP_ROUTE_PATH}" ] && { - for interface in $(ls ${TMP_ROUTE_PATH}); do - for ip in $(cat ${TMP_ROUTE_PATH}/${interface}); do - route del -host ${ip} dev ${interface} >/dev/null 2>&1 - done - done - } -} diff --git a/small/luci-app-passwall2/root/usr/share/rpcd/acl.d/luci-app-passwall2.json b/small/luci-app-passwall2/root/usr/share/rpcd/acl.d/luci-app-passwall2.json deleted file mode 100644 index ec872412aa..0000000000 --- a/small/luci-app-passwall2/root/usr/share/rpcd/acl.d/luci-app-passwall2.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "luci-app-passwall2": { - "description": "Grant UCI access for luci-app-passwall2", - "read": { - "uci": [ "passwall2", "passwall2_server" ] - }, - "write": { - "uci": [ "passwall2", "passwall2_server" ] - } - } -} diff --git a/small/luci-app-passwall2/root/usr/share/ucitrack/luci-app-passwall2-server.json b/small/luci-app-passwall2/root/usr/share/ucitrack/luci-app-passwall2-server.json deleted file mode 100644 index d73b5d1094..0000000000 --- a/small/luci-app-passwall2/root/usr/share/ucitrack/luci-app-passwall2-server.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "config": "passwall2_server", - "init": "passwall2_server" -} diff --git a/small/luci-app-passwall2/root/usr/share/ucitrack/luci-app-passwall2.json b/small/luci-app-passwall2/root/usr/share/ucitrack/luci-app-passwall2.json deleted file mode 100644 index 2ff857b0d1..0000000000 --- a/small/luci-app-passwall2/root/usr/share/ucitrack/luci-app-passwall2.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "config": "passwall2", - "init": "passwall2" -} diff --git a/small/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua b/small/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua index 1a52ee006e..b05e966205 100644 --- a/small/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua +++ b/small/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua @@ -141,6 +141,12 @@ local function set_apply_on_parse(map) end end +local has_xray = is_finded("xray") +local has_hysteria2 = is_finded("hysteria") + +-- 读取当前存储的 xray_hy2_type +local xray_hy2_type = uci:get_first("shadowsocksr", "server_subscribe", "xray_hy2_type") + local has_ss_rust = is_finded("sslocal") or is_finded("ssserver") local has_ss_libev = is_finded("ss-redir") or is_finded("ss-local") @@ -269,6 +275,43 @@ o.rawhtml = true o.template = "shadowsocksr/ssrurl" o.value = sid +-- 新增一个选择框,用于选择 Xray 或 Hysteria2 核心 +o = s:option(ListValue, "xray_hy2_type", string.format("%s", translatef("%s Node Use Type", "Hysteria2"))) +o.description = translate("The configured type also applies to the core specified when manually importing nodes.") +-- 设置默认 Xray 或 Hysteria2 核心 +-- 动态添加选项 +if has_xray then + o:value("xray", translate("Xray")) +end +if has_hysteria2 then + o:value("hysteria2", translate("Hysteria2")) +end +-- 设置默认值 +if xray_hy2_type == "xray" then + o.default = "xray" +elseif xray_hy2_type == "hysteria2" then + o.default = "hysteria2" +end +o.write = function(self, section, value) + -- 更新 Hysteria 节点的 xray_hy2_type + uci:foreach("shadowsocksr", "servers", function(s) + local node_type = uci:get("shadowsocksr", s[".name"], "type") -- 获取节点类型 + if node_type == "hysteria2" then -- 仅修改 Hysteria 节点 + local old_value = uci:get("shadowsocksr", s[".name"], "xray_hy2_type") + if old_value ~= value then + uci:set("shadowsocksr", s[".name"], "xray_hy2_type", value) + end + end + end) + -- 更新 server_subscribe 的 xray_hy2_type + local old_value = uci:get("shadowsocksr", "server_subscribe", "xray_hy2_type") + if old_value ~= value then + uci:set("shadowsocksr", "@server_subscribe[0]", "xray_hy2_type", value) + end + -- 更新当前 section 的 xray_hy2_type + ListValue.write(self, section, value) +end + o = s:option(ListValue, "type", translate("Server Node Type")) if is_finded("xray") or is_finded("v2ray") then o:value("v2ray", translate("V2Ray/XRay")) @@ -315,7 +358,7 @@ o:depends("type", "tun") o.description = translate("Redirect traffic to this network interface") -- 新增一个选择框,用于选择 Shadowsocks 版本 -o = s:option(ListValue, "has_ss_type", string.format("%s", translate("ShadowSocks Node Use Version"))) +o = s:option(ListValue, "has_ss_type", string.format("%s", translatef("%s Node Use Version", "ShadowSocks"))) o.description = translate("Selection ShadowSocks Node Use Version.") -- 设置默认 Shadowsocks 版本 -- 动态添加选项 @@ -343,15 +386,13 @@ o.write = function(self, section, value) end end end) - -- 更新 server_subscribe 的 ss_type local old_value = uci:get("shadowsocksr", "server_subscribe", "ss_type") if old_value ~= value then uci:set("shadowsocksr", "@server_subscribe[0]", "ss_type", value) end - -- 更新当前 section 的 has_ss_type - Value.write(self, section, value) + ListValue.write(self, section, value) end o = s:option(ListValue, "v2ray_protocol", translate("V2Ray/XRay protocol")) @@ -362,6 +403,9 @@ o:value("shadowsocks", translate("ShadowSocks")) if is_finded("xray") then o:value("wireguard", translate("WireGuard")) end +if is_finded("xray") then + o:value("hysteria2", translate("Hysteria2")) +end o:value("socks", translate("Socks")) o:value("http", translate("HTTP")) o:depends("type", "v2ray") @@ -508,17 +552,20 @@ o:depends("type", "ssr") -- [[ Hysteria2 ]]-- o = s:option(Value, "hy2_auth", translate("Users Authentication")) o:depends("type", "hysteria2") +o:depends({type = "v2ray", v2ray_protocol = "hysteria2"}) o.password = true o.rmempty = false o = s:option(Flag, "flag_port_hopping", translate("Enable Port Hopping")) o:depends("type", "hysteria2") +o:depends({type = "v2ray", v2ray_protocol = "hysteria2"}) o.rmempty = true o.default = "0" o = s:option(Value, "port_range", translate("Port hopping range")) o.description = translate("Format as 10000:20000 or 10000-20000 Multiple groups are separated by commas (,).") o:depends({type = "hysteria2", flag_port_hopping = true}) +o:depends({type = "v2ray", v2ray_protocol = "hysteria2", flag_port_hopping = true}) --o.datatype = "portrange" o.rmempty = true @@ -535,12 +582,14 @@ o.rmempty = true o = s:option(Value, "hopinterval", translate("Port Hopping Interval(Unit:Second)")) o:depends({type = "hysteria2", flag_transport = true, flag_port_hopping = true}) +o:depends({type = "v2ray", v2ray_protocol = "hysteria2", flag_port_hopping = true}) o.datatype = "uinteger" o.rmempty = true o.default = "30" o = s:option(Flag, "flag_obfs", translate("Enable Obfuscation")) o:depends("type", "hysteria2") +o:depends({type = "v2ray", v2ray_protocol = "hysteria2"}) o.rmempty = true o.default = "0" @@ -550,61 +599,71 @@ o.rmempty = true o.default = "0" o = s:option(Value, "obfs_type", translate("Obfuscation Type")) -o:depends({type = "hysteria2", flag_obfs = "1"}) +o:depends({type = "hysteria2", flag_obfs = true}) +o:depends({type = "v2ray", v2ray_protocol = "hysteria2", flag_obfs = true}) o.rmempty = true o.placeholder = "salamander" o = s:option(Value, "salamander", translate("Obfuscation Password")) -o:depends({type = "hysteria2", flag_obfs = "1"}) +o:depends({type = "hysteria2", flag_obfs = true}) +o:depends({type = "v2ray", v2ray_protocol = "hysteria2", flag_obfs = true}) o.password = true o.rmempty = true o.placeholder = "cry_me_a_r1ver" o = s:option(Flag, "flag_quicparam", translate("Hysterir QUIC parameters")) o:depends("type", "hysteria2") +o:depends({type = "v2ray", v2ray_protocol = "hysteria2"}) o.rmempty = true o.default = "0" o = s:option(Flag, "disablepathmtudiscovery", translate("Disable QUIC path MTU discovery")) -o:depends({type = "hysteria2",flag_quicparam = "1"}) +o:depends({type = "hysteria2",flag_quicparam = true}) +o:depends({type = "v2ray", v2ray_protocol = "hysteria2", flag_quicparam = true}) o.rmempty = true o.default = false --[[Hysteria2 QUIC parameters setting]] o = s:option(Value, "initstreamreceivewindow", translate("QUIC initStreamReceiveWindow")) -o:depends({type = "hysteria2", flag_quicparam = "1"}) +o:depends({type = "hysteria2", flag_quicparam = true}) +o:depends({type = "v2ray", v2ray_protocol = "hysteria2", flag_quicparam = true}) o.datatype = "uinteger" o.rmempty = true o.default = "8388608" o = s:option(Value, "maxstreamreceivewindow", translate("QUIC maxStreamReceiveWindow")) -o:depends({type = "hysteria2", flag_quicparam = "1"}) +o:depends({type = "hysteria2", flag_quicparam = true}) +o:depends({type = "v2ray", v2ray_protocol = "hysteria2", flag_quicparam = true}) o.datatype = "uinteger" o.rmempty = true o.default = "8388608" o = s:option(Value, "initconnreceivewindow", translate("QUIC initConnReceiveWindow")) -o:depends({type = "hysteria2", flag_quicparam = "1"}) +o:depends({type = "hysteria2", flag_quicparam = true}) +o:depends({type = "v2ray", v2ray_protocol = "hysteria2", flag_quicparam = true}) o.datatype = "uinteger" o.rmempty = true o.default = "20971520" o = s:option(Value, "maxconnreceivewindow", translate("QUIC maxConnReceiveWindow")) -o:depends({type = "hysteria2", flag_quicparam = "1"}) +o:depends({type = "hysteria2", flag_quicparam = true}) +o:depends({type = "v2ray", v2ray_protocol = "hysteria2", flag_quicparam = true}) o.datatype = "uinteger" o.rmempty = true o.default = "20971520" o = s:option(Value, "maxidletimeout", translate("QUIC maxIdleTimeout(Unit:second)")) -o:depends({type = "hysteria2", flag_quicparam = "1"}) +o:depends({type = "hysteria2", flag_quicparam = true}) +o:depends({type = "v2ray", v2ray_protocol = "hysteria2", flag_quicparam = true}) o.rmempty = true o.datatype = "uinteger" o.default = "30" o = s:option(Value, "keepaliveperiod", translate("The keep-alive period.(Unit:second)")) o.description = translate("Default value 0 indicatesno heartbeat.") -o:depends({type = "hysteria2", flag_quicparam = "1"}) +o:depends({type = "hysteria2", flag_quicparam = true}) o:depends({type = "v2ray", v2ray_protocol = "wireguard"}) +o:depends({type = "v2ray", v2ray_protocol = "hysteria2", flag_quicparam = true}) o.rmempty = true o.datatype = "uinteger" o.default = "10" @@ -1068,6 +1127,7 @@ o = s:option(Value, "uplink_capacity", translate("Uplink Capacity(Default:Mbps)" o.datatype = "uinteger" o:depends("transport", "kcp") o:depends("type", "hysteria2") +o:depends({type = "v2ray", v2ray_protocol = "hysteria2"}) o.placeholder = 5 o.rmempty = true @@ -1075,6 +1135,7 @@ o = s:option(Value, "downlink_capacity", translate("Downlink Capacity(Default:Mb o.datatype = "uinteger" o:depends("transport", "kcp") o:depends("type", "hysteria2") +o:depends({type = "v2ray", v2ray_protocol = "hysteria2"}) o.placeholder = 20 o.rmempty = true @@ -1144,6 +1205,7 @@ o:depends({type = "v2ray", v2ray_protocol = "vless", reality = false}) o:depends({type = "v2ray", v2ray_protocol = "vmess", reality = false}) o:depends({type = "v2ray", v2ray_protocol = "trojan", reality = false}) o:depends({type = "v2ray", v2ray_protocol = "shadowsocks", reality = false}) +o:depends({type = "v2ray", v2ray_protocol = "hysteria2", reality = false}) o:depends({type = "v2ray", v2ray_protocol = "socks", socks_ver = "5", reality = false}) o:depends({type = "v2ray", v2ray_protocol = "http", reality = false}) o:depends("type", "trojan") @@ -1269,7 +1331,6 @@ o:value("http/1.1") o:value("h2,http/1.1") o:value("h3,h2,http/1.1") o:depends("tls", true) -o:depends({type = "hysteria2", tls = true}) -- TUIC ALPN o = s:option(ListValue, "tuic_alpn", translate("TUIC ALPN")) @@ -1366,10 +1427,10 @@ o:value("skip", translate("skip")) o:depends("mux", true) -- [[ XHTTP TCP Fast Open ]]-- -o = s:option(Flag, "tcpfastopen", translate("TCP Fast Open"), translate("Enabling TCP Fast Open Requires Server Support.")) -o.rmempty = true -o.default = "0" -o:depends({type = "v2ray", v2ray_protocol = "vless", transport = "xhttp"}) +--o = s:option(Flag, "tcpfastopen", translate("TCP Fast Open"), translate("Enabling TCP Fast Open Requires Server Support.")) +--o.rmempty = true +--o.default = "0" +--o:depends({type = "v2ray", v2ray_protocol = "vless", transport = "xhttp"}) -- [[ MPTCP ]]-- o = s:option(Flag, "mptcp", translate("MPTCP"), translate("Enable Multipath TCP, need to be enabled in both server and client configuration.")) @@ -1403,6 +1464,17 @@ o:depends({type = "v2ray", v2ray_protocol = "shadowsocks"}) o:depends({type = "v2ray", v2ray_protocol = "socks"}) o:depends({type = "v2ray", v2ray_protocol = "http"}) +-- [[ HYSTERIA2_tcpcongestion 连接服务器节点的 TCP 拥塞控制算法 ]]-- +o = s:option(ListValue, "hy2_tcpcongestion", translate("custom_tcpcongestion")) +o.rmempty = true +o.default = "" +o:value("", translate("comment_tcpcongestion_disable")) +o:value("bbr", translate("BBR")) +o:value("brutal", translate("BRUTAL")) +o:value("force-brutal", translate("FORCE BRUTAL")) +o:value("reno", translate("Reno")) +o:value("cubic", translate("CUBIC")) +o:depends({type = "v2ray", v2ray_protocol = "hysteria2"}) -- [[ Cert ]]-- o = s:option(Flag, "certificate", translate("Self-signed Certificate")) @@ -1462,6 +1534,8 @@ o:depends("type", "ssr") o:depends("type", "ss") o:depends("type", "trojan") o:depends("type", "hysteria2") +o:depends({type = "v2ray", v2ray_protocol = "vless", transport = "xhttp"}) +o:depends({type = "v2ray", v2ray_protocol = "hysteria2"}) o = s:option(Flag, "switch_enable", translate("Enable Auto Switch")) o.rmempty = false diff --git a/small/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/servers.lua b/small/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/servers.lua index bc464d575b..5303655a37 100644 --- a/small/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/servers.lua +++ b/small/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/servers.lua @@ -39,6 +39,27 @@ local function optimize_cbi_ui() ]]) end +local has_xray = is_finded("xray") +local has_hysteria2 = is_finded("hysteria") + +local hy2_type_list = {} + +if has_xray then + table.insert(hy2_type_list, { id = "xray", name = translate("Xray") }) +end +if has_hysteria2 then + table.insert(hy2_type_list, { id = "hysteria2", name = translate("Hysteria2") }) +end + +-- 如果用户没有手动设置,则自动选择 +if not xray_hy2_type or xray_hy2_type == "" then + if has_hysteria2 then + xray_hy2_type = "hysteria2" + elseif has_xray then + xray_hy2_type = "xray" + end +end + local has_ss_rust = is_finded("sslocal") or is_finded("ssserver") local has_ss_libev = is_finded("ss-redir") or is_finded("ss-local") @@ -52,7 +73,7 @@ if has_ss_libev then end -- 如果用户没有手动设置,则自动选择 -if ss_type == "" then +if not ss_type or ss_type == "" then if has_ss_rust then ss_type = "ss-rust" elseif has_ss_libev then @@ -103,9 +124,33 @@ o.default = 30 o.rmempty = true o:depends("auto_update", "1") +-- 确保 hy2_type_list 不为空 +if #hy2_type_list > 0 then + o = s:option(ListValue, "xray_hy2_type", string.format("%s", translatef("%s Node Use Type", "Hysteria2"))) + o.description = translate("The configured type also applies to the core specified when manually importing nodes.") + for _, v in ipairs(hy2_type_list) do + o:value(v.id, v.name) -- 存储 "Xray" / "Hysteria2",但 UI 显示完整名称 + end + o.default = xray_hy2_type -- 设置默认值 + o.write = function(self, section, value) + -- 更新 Hysteria 节点的 xray_hy2_type + uci:foreach("shadowsocksr", "servers", function(s) + local node_type = uci:get("shadowsocksr", s[".name"], "type") -- 获取节点类型 + if node_type == "hysteria2" then -- 仅修改 Hysteria 节点 + local old_value = uci:get("shadowsocksr", s[".name"], "xray_hy2_type") + if old_value ~= value then + uci:set("shadowsocksr", s[".name"], "xray_hy2_type", value) + end + end + end) + -- 更新当前 section 的 xray_hy2_type + ListValue.write(self, section, value) + end +end + -- 确保 ss_type_list 不为空 if #ss_type_list > 0 then - o = s:option(ListValue, "ss_type", string.format("%s", translate("ShadowSocks Node Use Version"))) + o = s:option(ListValue, "ss_type", string.format("%s", translatef("%s Node Use Version", "ShadowSocks"))) o.description = translate("Selection ShadowSocks Node Use Version.") for _, v in ipairs(ss_type_list) do o:value(v.id, v.name) -- 存储 "ss-libev" / "ss-rust",但 UI 显示完整名称 @@ -123,7 +168,7 @@ if #ss_type_list > 0 then end end) -- 更新当前 section 的 ss_type - Value.write(self, section, value) + ListValue.write(self, section, value) end end diff --git a/small/luci-app-ssr-plus/luasrc/view/shadowsocksr/ssrurl.htm b/small/luci-app-ssr-plus/luasrc/view/shadowsocksr/ssrurl.htm index 1758b6fd11..b1365614d5 100644 --- a/small/luci-app-ssr-plus/luasrc/view/shadowsocksr/ssrurl.htm +++ b/small/luci-app-ssr-plus/luasrc/view/shadowsocksr/ssrurl.htm @@ -2,10 +2,12 @@ <% local map = self.map local ss_type = map:get("@server_subscribe[0]", "ss_type") +local xray_hy2_type = map:get("@server_subscribe[0]", "xray_hy2_type") -%>