Browse Source

Merge pull request #165 from v2board/dev

1.2.4
tokumeikoi 5 năm trước cách đây
mục cha
commit
495a5f89c5

+ 1 - 0
.gitignore

@@ -9,6 +9,7 @@
 .env.backup
 .phpunit.result.cache
 .idea
+.lock
 Homestead.json
 Homestead.yaml
 npm-debug.log

+ 7 - 2
app/Console/Commands/ResetTraffic.php

@@ -69,11 +69,16 @@ class ResetTraffic extends Command
         $users = [];
         foreach ($user->get() as $item) {
             $expireDay = date('d', $item->expired_at);
-            if ($expireDay === date('d') || (string)$lastDay === '29' || (string)$lastDay === '30') {
+            $today = date('d');
+            if ($expireDay === $today) {
+                array_push($users, $item->id);
+            }
+
+            if (($today === $lastDay) && $expireDay >= $lastDay) {
                 array_push($users, $item->id);
             }
         }
-        $user->whereIn('id', $users)->update([
+        User::whereIn('id', $users)->update([
             'u' => 0,
             'd' => 0
         ]);

+ 2 - 2
app/Console/Commands/SendRemindMail.php

@@ -49,7 +49,7 @@ class SendRemindMail extends Command
 
     private function remindExpire($user)
     {
-        if (($user->expired_at - 86400) < time() && $user->expired_at > time()) {
+        if ($user->expired_at !== NULL && ($user->expired_at - 86400) < time() && $user->expired_at > time()) {
             SendEmailJob::dispatch([
                 'email' => $user->email,
                 'subject' => '在' . config('v2board.app_name', 'V2board') . '的服务即将到期',
@@ -66,7 +66,7 @@ class SendRemindMail extends Command
     {
         if ($this->remindTrafficIsWarnValue(($user->u + $user->d), $user->transfer_enable)) {
             $sendCount = MailLog::where('created_at', '>=', strtotime(date('Y-m-1')))
-                ->where('template_name', 'mail.sendRemindTraffic')
+                ->where('template_name', 'like', '%remindTraffic%')
                 ->count();
             if ($sendCount > 0) return;
             SendEmailJob::dispatch([

+ 3 - 0
app/Http/Controllers/Admin/ConfigController.php

@@ -106,6 +106,9 @@ class ConfigController extends Controller
             abort(500, '修改失败');
         }
         \Artisan::call('config:cache');
+        if (function_exists('opcache')) {
+            opcache_reset();
+        }
         return response([
             'data' => true
         ]);

+ 16 - 0
app/Http/Controllers/Admin/ServerController.php

@@ -4,6 +4,7 @@ namespace App\Http\Controllers\Admin;
 
 use App\Http\Requests\Admin\ServerSave;
 use App\Http\Requests\Admin\ServerUpdate;
+use App\Services\ServerService;
 use Illuminate\Http\Request;
 use App\Http\Controllers\Controller;
 use App\Models\ServerGroup;
@@ -41,6 +42,12 @@ class ServerController extends Controller
             $params['tags'] = json_encode($params['tags']);
         }
 
+        if (isset($params['dnsSettings'])) {
+            if (!is_object(json_decode($params['dnsSettings']))) {
+                abort(500, 'DNS规则配置格式不正确');
+            }
+        }
+
         if (isset($params['ruleSettings'])) {
             if (!is_object(json_decode($params['ruleSettings']))) {
                 abort(500, '审计规则配置格式不正确');
@@ -190,4 +197,13 @@ class ServerController extends Controller
             'data' => true
         ]);
     }
+
+    public function viewConfig(Request $request)
+    {
+        $serverService = new ServerService();
+        $config = $serverService->getConfig($request->input('node_id'), 23333);
+        return response([
+            'data' => $config
+        ]);
+    }
 }

+ 51 - 0
app/Http/Controllers/Client/ClientController.php

@@ -38,6 +38,12 @@ class ClientController extends Controller
             if (strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 'clash') !== false) {
                 die($this->clash($user, $server));
             }
+            if (strpos($_SERVER['HTTP_USER_AGENT'], 'Surfboard') !== false) {
+                die($this->surge($user, $server));
+            }
+            if (strpos($_SERVER['HTTP_USER_AGENT'], 'Surge') !== false) {
+                die($this->surge($user, $server));
+            }
         }
         die($this->origin($user, $server));
     }
@@ -89,6 +95,51 @@ class ClientController extends Controller
         return base64_encode($uri);
     }
 
+    private function surge($user, $server)
+    {
+        $proxies = '';
+        $proxyGroup = '';
+        foreach ($server as $item) {
+            // [Proxy]
+            $proxies .= $item->name . ' = vmess, ' . $item->host . ', ' . $item->port . ', username=' . $user->v2ray_uuid . ', tls=' . ($item->tls ? "true" : "false");
+            if ($item->network == 'ws') {
+                $proxies .= ', ws=true';
+                if ($item->networkSettings) {
+                    $wsSettings = json_decode($item->networkSettings);
+                    if (isset($wsSettings->path)) $proxies .= ', ws-path=' . $wsSettings->path;
+                    if (isset($wsSettings->headers->Host)) $proxies .= ', ws-headers=' . $wsSettings->headers->Host;
+                }
+            }
+            $proxies .= "\r\n";
+            // [Proxy Group]
+            $proxyGroup .= $item->name . ', ';
+        }
+
+        try {
+            $rules = '';
+            foreach (glob(base_path() . '/resources/rules/' . '*.surge.conf') as $file) {
+                $rules = file_get_contents("$file");
+            }
+        } catch (\Exception $e) {}
+
+        // Subscription link
+        $subsURL = 'http';
+        if (isset( $_SERVER['HTTPS'] ) && strtolower( $_SERVER['HTTPS'] ) == 'on') {
+            $subsURL .= 's';
+        }
+        $subsURL .= '://';
+        if ($_SERVER['SERVER_PORT'] != ('80' || '443')) {
+            $subsURL .= $_SERVER['SERVER_NAME'] . ':' . $_SERVER['SERVER_PORT'] . $_SERVER['REQUEST_URI'];
+        } else {
+            $subsURL .= $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
+        }
+
+        $rules = str_replace('{subs_link}',$subsURL,$rules);
+        $rules = str_replace('{proxies}',$proxies,$rules);
+        $rules = str_replace('{proxy_group}',rtrim($proxyGroup, ', '),$rules);
+        return $rules;
+    }
+
     private function clash($user, $server)
     {
         $proxy = [];

+ 14 - 14
app/Http/Controllers/User/OrderController.php

@@ -77,15 +77,15 @@ class OrderController extends Controller
     private function getSurplusValue(User $user)
     {
         $plan = Plan::find($user->plan_id);
-        switch ($plan->type) {
-            case 0: return $this->getSurplusValueByCycle($user, $plan);
-            case 1: return $this->getSurplusValueByOneTime($user, $plan);
+        if ($user->expired_at === NULL) {
+            return $this->getSurplusValueByOneTime($user, $plan);
+        } else {
+            return $this->getSurplusValueByCycle($user, $plan);
         }
     }
 
     private function getSurplusValueByOneTime(User $user, Plan $plan)
     {
-        $trafficUnitPrice = 0;
         $trafficUnitPrice = $plan->onetime_price / $plan->transfer_enable;
         if ($user->discount && $trafficUnitPrice) {
             $trafficUnitPrice = $trafficUnitPrice - ($trafficUnitPrice * $user->discount / 100);
@@ -97,22 +97,22 @@ class OrderController extends Controller
 
     private function getSurplusValueByCycle(User $user, Plan $plan)
     {
-        $dayPrice = 0;
+        $price = 0;
         if ($plan->month_price) {
-            $dayPrice = $plan->month_price / 2592000;
+            $price = $plan->month_price / (31536000 / 12);
         } else if ($plan->quarter_price) {
-            $dayPrice = $plan->quarter_price / 7862400;
+            $price = $plan->quarter_price / (31536000 / 4);
         } else if ($plan->half_year_price) {
-            $dayPrice = $plan->half_year_price / 15811200;
+            $price = $plan->half_year_price / (31536000 / 2);
         } else if ($plan->year_price) {
-            $dayPrice = $plan->year_price / 31536000;
+            $price = $plan->year_price / 31536000;
         }
         // exclude discount
-        if ($user->discount && $dayPrice) {
-            $dayPrice = $dayPrice - ($dayPrice * $user->discount / 100);
+        if ($user->discount && $price) {
+            $price = $price - ($price * $user->discount / 100);
         }
         $remainingDay = $user->expired_at - time();
-        $result = $remainingDay * $dayPrice;
+        $result = $remainingDay * $price;
         return $result > 0 ? $result : 0;
     }
 
@@ -431,7 +431,7 @@ class OrderController extends Controller
 
     private function stripeAlipay($order)
     {
-        $currency = config('stripe_currency', 'hkd');
+        $currency = config('v2board.stripe_currency', 'hkd');
         $exchange = Helper::exchange('CNY', strtoupper($currency));
         if (!$exchange) {
             abort(500, '货币转换超时,请稍后再试');
@@ -463,7 +463,7 @@ class OrderController extends Controller
 
     private function stripeWepay($order)
     {
-        $currency = config('stripe_currency', 'hkd');
+        $currency = config('v2board.stripe_currency', 'hkd');
         $exchange = Helper::exchange('CNY', strtoupper($currency));
         if (!$exchange) {
             abort(500, '货币转换超时,请稍后再试');

+ 2 - 7
app/Http/Controllers/User/UserController.php

@@ -4,6 +4,7 @@ namespace App\Http\Controllers\User;
 
 use App\Http\Controllers\Controller;
 use App\Http\Requests\User\UserUpdate;
+use App\Http\Requests\User\UserChangePassword;
 use Illuminate\Http\Request;
 use App\Models\User;
 use App\Models\Plan;
@@ -23,14 +24,8 @@ class UserController extends Controller
         ]);
     }
 
-    public function changePassword(Request $request)
+    public function changePassword(UserChangePassword $request)
     {
-        if (empty($request->input('old_password'))) {
-            abort(500, '旧密码不能为空');
-        }
-        if (empty($request->input('new_password'))) {
-            abort(500, '新密码不能为空');
-        }
         $user = User::find($request->session()->get('id'));
         if (!Helper::multiPasswordVerify(
             $user->password_algo,

+ 1 - 1
app/Http/Requests/Admin/ConfigSave.php

@@ -44,7 +44,7 @@ class ConfigSave extends FormRequest
         'stripe_sk_live' => '',
         'stripe_pk_live' => '',
         'stripe_webhook_key' => '',
-        'stripe_currency' => 'in:hkd,usd,sgd',
+        'stripe_currency' => 'in:hkd,usd,sgd,eur,gbp',
         // bitpayx
         'bitpayx_enable' => 'in:0,1',
         'bitpayx_appsecret' => '',

+ 2 - 1
app/Http/Requests/Admin/ServerSave.php

@@ -20,7 +20,8 @@ class ServerSave extends FormRequest
         'network' => 'required|in:tcp,kcp,ws,http,domainsocket,quic',
         'networkSettings' => '',
         'ruleSettings' => '',
-        'tlsSettings' => ''
+        'tlsSettings' => '',
+        'dnsSettings' => ''
     ];
     /**
      * Get the validation rules that apply to the request.

+ 30 - 0
app/Http/Requests/User/UserChangePassword.php

@@ -0,0 +1,30 @@
+<?php
+
+namespace App\Http\Requests\User;
+
+use Illuminate\Foundation\Http\FormRequest;
+
+class UserChangePassword extends FormRequest
+{
+    /**
+     * Get the validation rules that apply to the request.
+     *
+     * @return array
+     */
+    public function rules()
+    {
+        return [
+            'old_password' => 'required',
+            'new_password' => 'required|min:8'
+        ];
+    }
+
+    public function messages()
+    {
+        return [
+            'old_password.required' => '旧密码不能为空',
+            'new_password.required' => '新密码不能为空',
+            'new_password.min' => '密码必须大于8位数'
+        ];
+    }
+}

+ 1 - 0
app/Http/Routes/AdminRoute.php

@@ -29,6 +29,7 @@ class AdminRoute
             $router->post('/server/drop', 'Admin\\ServerController@drop');
             $router->post('/server/update', 'Admin\\ServerController@update');
             $router->post('/server/copy', 'Admin\\ServerController@copy');
+            $router->post('/server/viewConfig', 'Admin\\ServerController@viewConfig');
             // Order
             $router->get ('/order/fetch', 'Admin\\OrderController@fetch');
             $router->post('/order/repair', 'Admin\\OrderController@repair');

+ 25 - 3
app/Services/ServerService.php

@@ -8,7 +8,7 @@ use App\Models\Server;
 class ServerService
 {
 
-    CONST SERVER_CONFIG = '{"api":{"services":["HandlerService","StatsService"],"tag":"api"},"stats":{},"inbound":{"port":443,"protocol":"vmess","settings":{"clients":[]},"sniffing":{"enabled": true,"destOverride": ["http","tls"]},"streamSettings":{"network":"tcp"},"tag":"proxy"},"inboundDetour":[{"listen":"0.0.0.0","port":23333,"protocol":"dokodemo-door","settings":{"address":"0.0.0.0"},"tag":"api"}],"log":{"loglevel":"debug","access":"access.log","error":"error.log"},"outbound":{"protocol":"freedom","settings":{}},"outboundDetour":[{"protocol":"blackhole","settings":{},"tag":"block"}],"routing":{"rules":[{"inboundTag":"api","outboundTag":"api","type":"field"}]},"policy":{"levels":{"0":{"handshake":4,"connIdle":300,"uplinkOnly":5,"downlinkOnly":30,"statsUserUplink":true,"statsUserDownlink":true}}}}';
+    CONST SERVER_CONFIG = '{"api":{"services":["HandlerService","StatsService"],"tag":"api"},"dns":{},"stats":{},"inbound":{"port":443,"protocol":"vmess","settings":{"clients":[]},"sniffing":{"enabled":true,"destOverride":["http","tls"]},"streamSettings":{"network":"tcp"},"tag":"proxy"},"inboundDetour":[{"listen":"0.0.0.0","port":23333,"protocol":"dokodemo-door","settings":{"address":"0.0.0.0"},"tag":"api"}],"log":{"loglevel":"debug","access":"access.log","error":"error.log"},"outbound":{"protocol":"freedom","settings":{}},"outboundDetour":[{"protocol":"blackhole","settings":{},"tag":"block"}],"routing":{"rules":[{"inboundTag":"api","outboundTag":"api","type":"field"}]},"policy":{"levels":{"0":{"handshake":4,"connIdle":300,"uplinkOnly":5,"downlinkOnly":30,"statsUserUplink":true,"statsUserDownlink":true}}}}';
 
     public function getAvailableUsers($groupId)
     {
@@ -43,6 +43,24 @@ class ServerService
         $json->inboundDetour[0]->port = (int)$localPort;
         $json->inbound->port = (int)$server->server_port;
         $json->inbound->streamSettings->network = $server->network;
+        $this->setDns($server, $json);
+        $this->setNetwork($server, $json);
+        $this->setRule($server, $json);
+        $this->setTls($server, $json);
+
+        return $json;
+    }
+
+    private function setDns(Server $server, object $json)
+    {
+        if ($server->dnsSettings) {
+            $dns = json_decode($server->dnsSettings);
+            $json->dns = $dns;
+        }
+    }
+
+    private function setNetwork(Server $server, object $json)
+    {
         if ($server->networkSettings) {
             switch ($server->network) {
                 case 'tcp':
@@ -65,7 +83,10 @@ class ServerService
                     break;
             }
         }
+    }
 
+    private function setRule(Server $server, object $json)
+    {
         if ($server->ruleSettings) {
             $rules = json_decode($server->ruleSettings);
             // domain
@@ -85,7 +106,10 @@ class ServerService
                 array_push($json->routing->rules, $protocolObj);
             }
         }
+    }
 
+    private function setTls(Server $server, object $json)
+    {
         if ((int)$server->tls) {
             $tlsSettings = json_decode($server->tlsSettings);
             $json->inbound->streamSettings->security = 'tls';
@@ -102,7 +126,5 @@ class ServerService
             }
             $json->inbound->streamSettings->tlsSettings->certificates[0] = $tls;
         }
-
-        return $json;
     }
 }

+ 6 - 0
composer.json

@@ -63,5 +63,11 @@
         "post-create-project-cmd": [
             "@php artisan key:generate --ansi"
         ]
+    },
+    "repositories": {
+        "packagist": {
+            "type": "composer",
+            "url": "https://mirrors.aliyun.com/composer/"
+        }
     }
 }

+ 1 - 1
config/app.php

@@ -236,5 +236,5 @@ return [
     | The only modification by laravel config
     |
     */
-    'version' => '1.2.3'
+    'version' => '1.2.4'
 ];

+ 3 - 2
database/install.sql

@@ -129,12 +129,13 @@ CREATE TABLE `v2_server` (
   `tls` tinyint(4) NOT NULL DEFAULT '0',
   `tags` varchar(255) DEFAULT NULL,
   `rate` varchar(11) NOT NULL,
-  `network` varchar(11) NOT NULL,
+  `network` text NOT NULL,
   `settings` text,
   `rules` text,
   `networkSettings` text,
   `tlsSettings` text,
   `ruleSettings` text,
+  `dnsSettings` text,
   `show` tinyint(1) NOT NULL DEFAULT '0',
   `created_at` int(11) NOT NULL,
   `updated_at` int(11) NOT NULL,
@@ -243,4 +244,4 @@ CREATE TABLE `v2_user` (
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
 
--- 2020-03-17 14:16:01
+-- 2020-03-30 09:56:24

+ 4 - 0
database/update.sql

@@ -200,3 +200,7 @@ ADD `tlsSettings` text COLLATE 'utf8_general_ci' NULL AFTER `tls`;
 
 ALTER TABLE `v2_order`
 ADD `balance_amount` int(11) NULL COMMENT '使用余额' AFTER `refund_amount`;
+
+ALTER TABLE `v2_server`
+CHANGE `network` `network` text COLLATE 'utf8_general_ci' NOT NULL AFTER `rate`,
+ADD `dnsSettings` text COLLATE 'utf8_general_ci' NULL AFTER `ruleSettings`;

+ 0 - 25
docker-compose.yml.example

@@ -1,25 +0,0 @@
-version: '3'
-
-services:
-  db:
-    image: mysql
-    command: --default-authentication-plugin=mysql_native_password
-    environment:
-      - MYSQL_ROOT_PASSWORD=123456
-    volumes:
-      - ./docker/mysql:/var/lib/mysql
-      - ./install.sql:/install.sql
-  phpfpm:
-    image: bitnami/php-fpm
-    volumes:
-      - .:/app
-  nginx:
-    image: nginx
-    depends_on:
-      - phpfpm
-    volumes:
-      - .:/app
-      - ./docker/nginx:/etc/nginx/conf.d
-    ports:
-      - 8964:80
-

+ 0 - 2
docker/mysql/.gitignore

@@ -1,2 +0,0 @@
-*
-!.gitignore

+ 0 - 3
docker/nginx/.gitignore

@@ -1,3 +0,0 @@
-*
-!.gitignore
-!nginx.conf

+ 0 - 52
docker/nginx/nginx.conf

@@ -1,52 +0,0 @@
-server {
-    # 监听 HTTP 协议默认的 [80] 端口。
-    listen 80;
-    # 绑定主机名 [example.com]。
-    server_name localhost;
-    # 服务器站点根目录 [/example.com/public]。
-    root /app/public;
-
-    # 添加几条有关安全的响应头;与 Google+ 的配置类似,详情参见文末。
-    add_header X-Frame-Options "SAMEORIGIN";
-    add_header X-XSS-Protection "1; mode=block";
-    add_header X-Content-Type-Options "nosniff";
-
-    # 站点默认页面;可指定多个,将顺序查找。
-    # 例如,访问 http://example.com/ Nginx 将首先尝试「站点根目录/index.html」是否存在,不存在则继续尝试「站点根目录/index.htm」,以此类推...
-    index index.html index.htm index.php;
-
-    # 指定字符集为 UTF-8
-    charset utf-8;
-
-    # Laravel 默认重写规则;删除将导致 Laravel 路由失效且 Nginx 响应 404。
-    location / {
-        try_files $uri $uri/ /index.php?$query_string;
-    }
-
-    # 关闭 [/favicon.ico] 和 [/robots.txt] 的访问日志。
-    # 并且即使它们不存在,也不写入错误日志。
-    location = /favicon.ico { access_log off; log_not_found off; }
-    location = /robots.txt  { access_log off; log_not_found off; }
-
-    # 将 [404] 错误交给 [/index.php] 处理,表示由 Laravel 渲染美观的错误页面。
-    error_page 404 /index.php;
-
-    # URI 符合正则表达式 [\.php$] 的请求将进入此段配置
-    location ~ \.php$ {
-        # 配置 FastCGI 服务地址,可以为 IP:端口,也可以为 Unix socket。
-        fastcgi_pass phpfpm:9000;
-        # 配置 FastCGI 的主页为 index.php。
-        fastcgi_index index.php;
-        # 配置 FastCGI 参数 SCRIPT_FILENAME 为 $realpath_root$fastcgi_script_name。
-        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
-        # 引用更多默认的 FastCGI 参数。
-        include fastcgi_params;
-    }
-    # 通俗地说,以上配置将所有 URI 以 .php 结尾的请求,全部交给 PHP-FPM 处理。
-
-    # 除符合正则表达式 [/\.(?!well-known).*] 之外的 URI,全部拒绝访问
-    # 也就是说,拒绝公开以 [.] 开头的目录,[.well-known] 除外
-    location ~ /\.(?!well-known).* {
-        deny all;
-    }
-}

+ 3 - 0
init.sh

@@ -0,0 +1,3 @@
+wget https://getcomposer.org/download/1.9.0/composer.phar
+php composer.phar install -vvv
+php artisan v2board:install

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
public/assets/admin/umi.css


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
public/assets/admin/umi.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
public/assets/user/antd.chunk.css


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
public/assets/user/umi.js


+ 817 - 0
resources/rules/default.surge.conf

@@ -0,0 +1,817 @@
+#!MANAGED-CONFIG {subs_link} interval=43200 strict=true
+
+[General]
+loglevel = notify
+interface = 127.0.0.1
+skip-proxy = localhost, *.local, 0.0.0.0/8, 10.0.0.0/8, 17.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.168.0.0/16, 192.88.99.0/24, 198.18.0.0/15, 198.51.100.0/24, 203.0.113.0/24, 224.0.0.0/4, 240.0.0.0/4, 255.255.255.255/32
+ipv6 = false
+dns-server = 1.2.4.8, 114.114.114.114, 223.5.5.5, 8.8.8.8, system
+exclude-simple-hostnames = true
+enhanced-mode-by-rule = true
+
+[Proxy]
+{proxies}
+
+[Proxy Group]
+Proxy = select, auto, fallback, {proxy_group}
+auto = url-test, {proxy_group}, url=http://www.gstatic.com/generate_204, interval=600
+fallback = fallback, {proxy_group}, url=http://www.gstatic.com/generate_204, interval=600
+
+[Host]
+localhost = 127.0.0.1
+store.steampowered.com = 23.50.18.229
+autodraw.com = 216.239.38.21
+www.w3schools.com = 192.229.173.207
+
+[Rule]
+# REJECT Start
+
+// Tracking-Protection
+DOMAIN-SUFFIX,google-analytics.com,REJECT
+DOMAIN-SUFFIX,adjust.com,REJECT
+DOMAIN-SUFFIX,appsflyer.com,REJECT
+DOMAIN-SUFFIX,umengcloud.com,REJECT
+DOMAIN-SUFFIX,umeng.com,REJECT
+DOMAIN-SUFFIX,cnzz.com,REJECT
+DOMAIN-SUFFIX,growingio.com,REJECT
+DOMAIN-SUFFIX,inmobi.com,REJECT
+DOMAIN-SUFFIX,inmobi.cn,REJECT
+DOMAIN-SUFFIX,lnk0.com,REJECT
+DOMAIN-SUFFIX,serving-sys.com,REJECT
+DOMAIN,cdn.segment.com,REJECT
+DOMAIN,data.flurry.com,REJECT
+DOMAIN,static.jpush.cn,REJECT
+DOMAIN,js.users.51.la,REJECT
+
+// Advertisement-Protection
+DOMAIN-SUFFIX,googleadservices.com,REJECT
+DOMAIN-SUFFIX,googlesyndication.com,REJECT
+DOMAIN-SUFFIX,googleadsserving.cn,REJECT
+DOMAIN-SUFFIX,admaster.com.cn,REJECT
+DOMAIN-SUFFIX,adinall.com,REJECT
+DOMAIN-SUFFIX,aerserv.com,REJECT
+DOMAIN-SUFFIX,adview.cn,REJECT
+DOMAIN-SUFFIX,cocounion.com,REJECT
+DOMAIN-SUFFIX,ctrmi.com,REJECT
+DOMAIN-SUFFIX,doubleclick.net,REJECT
+DOMAIN-SUFFIX,irs01.com,REJECT
+DOMAIN-SUFFIX,kejet.net,REJECT
+DOMAIN-SUFFIX,miaozhen.com,REJECT
+DOMAIN-SUFFIX,moatads.com,REJECT
+DOMAIN-SUFFIX,mopub.com,REJECT
+DOMAIN-SUFFIX,qchannel01.cn,REJECT
+DOMAIN-SUFFIX,tanx.com,REJECT
+DOMAIN-SUFFIX,tuanxue360.net,REJECT
+DOMAIN,ad.12306.cn,REJECT
+DOMAIN,adxserver.ad.cmvideo.cn,REJECT
+DOMAIN,ads-twitter.com,REJECT
+DOMAIN,adshow.58.com,REJECT
+DOMAIN,ads.simplepath.com,REJECT
+DOMAIN,ads.nexage.com,REJECT
+DOMAIN,adplatform.vrtcal.com,REJECT
+DOMAIN,ad.jiemian.com,REJECT
+DOMAIN,ggs.myzaker.com,REJECT
+DOMAIN,adshows.21cn.com,REJECT
+DOMAIN,ad-cn.jovcloud.com,REJECT
+DOMAIN,sugar.zhihu.com,REJECT
+
+// Baidu
+DOMAIN-SUFFIX,baidustatic.com,REJECT
+DOMAIN,hm.baidu.com,REJECT
+DOMAIN,hmma.baidu.com,REJECT
+DOMAIN,mobads.baidu.com,REJECT
+DOMAIN,mobads-logs.baidu.com,REJECT
+DOMAIN,wn.pos.baidu.com,REJECT
+// -Baidu_high-acc-ip
+DOMAIN,ps.map.baidu.com,REJECT
+DOMAIN,sv.map.baidu.com,REJECT
+DOMAIN,offnavi.map.baidu.com,REJECT
+DOMAIN,newvector.map.baidu.com,REJECT
+DOMAIN,ulog.imap.baidu.com,REJECT
+DOMAIN,newloc.map.n.shifen.com,REJECT
+
+// Ali
+DOMAIN,adash-c.ut.taobao.com,REJECT
+DOMAIN,adashxgc.ut.taobao.com,REJECT
+DOMAIN,adashbc.ut.taobao.com,REJECT
+DOMAIN,adash.man.aliyuncs.com,REJECT
+DOMAIN,apoll.m.taobao.com,REJECT
+DOMAIN,amdc.m.taobao.com,REJECT
+
+// Tencent
+DOMAIN,pingma.qq.com,REJECT
+DOMAIN,mi.gdt.qq.com,REJECT
+// -TencentVideo
+DOMAIN-SUFFIX,l.qq.com,REJECT
+DOMAIN,mtrace.qq.com,REJECT
+
+// 163
+DOMAIN-SUFFIX,analytics.126.net,REJECT
+DOMAIN,iadmat.nosdn.127.net,REJECT
+DOMAIN,static.ws.126.net,REJECT
+
+// AutoNavi
+DOMAIN,nbsdk-baichuan.alicdn.com,REJECT
+
+// iQiyi
+DOMAIN-SUFFIX,cupid.iqiyi.com,REJECT
+DOMAIN,ifacelog.iqiyi.com,REJECT
+DOMAIN,mbdlog.iqiyi.com,REJECT
+DOMAIN,msg.71.am,REJECT
+IP-CIDR,101.227.97.240/32,REJECT,no-resolve
+IP-CIDR,101.227.200.28/32,REJECT,no-resolve
+IP-CIDR,124.192.153.42/32,REJECT,no-resolve
+
+// Youku
+DOMAIN-SUFFIX,atm.youku.com,REJECT
+DOMAIN,ad.mobile.youku.com,REJECT
+DOMAIN,iyes.youku.com,REJECT
+
+// Sohu
+DOMAIN-SUFFIX,ads.sohu.com,REJECT
+// -SohuVideo
+DOMAIN-SUFFIX,aty.sohu.com,REJECT
+DOMAIN,imp.optaim.com,REJECT
+DOMAIN,v2.reachmax.cn,REJECT
+DOMAIN,data.vod.itc.cn,REJECT
+
+// Hunan_TV
+DOMAIN-SUFFIX,da.mgtv.com,REJECT
+DOMAIN-SUFFIX,da.hunantv.com,REJECT
+DOMAIN-SUFFIX,log.hunantv.com,REJECT
+DOMAIN,log.v2.hunantv.com,REJECT
+DOMAIN,v2.log.hunantv.com,REJECT
+
+// PPTV
+DOMAIN,asimgs.pplive.cn,REJECT
+
+// Le
+DOMAIN-SUFFIX,webp2p.letv.com,REJECT
+DOMAIN,ark.letv.com,REJECT
+DOMAIN,g3.letv.com,REJECT
+DOMAIN,n.mark.letv.com,REJECT
+
+// XiMaLaYa
+DOMAIN,ad.ximalaya.com,REJECT
+DOMAIN,adse.ximalaya.com,REJECT
+
+// Moji
+DOMAIN,ad.api.moji.com,REJECT
+DOMAIN,v1.log.moji.com,REJECT
+
+// Kugou and Kuwo
+DOMAIN,adserviceretry.kugou.com,REJECT
+DOMAIN,ads.service.kugou.com,REJECT
+DOMAIN,adsfile.bssdlbig.kugou.com,REJECT
+DOMAIN,log.stat.kugou.com,REJECT
+DOMAIN,log.web.kugou.com,REJECT
+DOMAIN,kgmobilestat.kugou.com,REJECT
+DOMAIN,kgmobilestatbak.kugou.com,REJECT
+DOMAIN,mobilelog.kugou.com,REJECT
+DOMAIN,mobilead.kuwo.cn,REJECT
+DOMAIN,rich.kuwo.cn,REJECT
+
+// Internet Service Provider Hijack
+DOMAIN-SUFFIX,cszlks.com,REJECT
+DOMAIN-SUFFIX,freedrive.cn,REJECT
+DOMAIN-SUFFIX,fkku194.com,REJECT
+DOMAIN-SUFFIX,fjlqqc.com,REJECT
+DOMAIN-SUFFIX,kumihua.com,REJECT
+DOMAIN-SUFFIX,mlnbike.com,REJECT
+DOMAIN-SUFFIX,quanliyouxi.cn,REJECT
+DOMAIN-SUFFIX,feih.com.cn,REJECT
+DOMAIN-SUFFIX,51chumoping.com,REJECT
+IP-CIDR,47.89.59.182/32,REJECT,no-resolve
+// -ChinaNet
+IP-CIDR,61.160.200.223/32,REJECT,no-resolve
+IP-CIDR,61.160.200.242/32,REJECT,no-resolve
+IP-CIDR,61.160.200.252/32,REJECT,no-resolve
+IP-CIDR,111.175.220.164/32,REJECT,no-resolve
+IP-CIDR,124.232.160.178/32,REJECT,no-resolve
+IP-CIDR,175.6.223.15/32,REJECT,no-resolve
+IP-CIDR,183.59.53.237/32,REJECT,no-resolve
+IP-CIDR,218.93.127.37/32,REJECT,no-resolve
+IP-CIDR,221.231.6.79/32,REJECT,no-resolve
+IP-CIDR,222.186.61.91/32,REJECT,no-resolve
+IP-CIDR,222.186.61.95/32,REJECT,no-resolve
+IP-CIDR,222.186.61.96/32,REJECT,no-resolve
+// -ChinaUnicom
+// -Dr.Peng
+IP-CIDR,10.72.25.13/32,REJECT,no-resolve
+IP-CIDR,115.182.16.79/32,REJECT,no-resolve
+IP-CIDR,118.144.88.126/32,REJECT,no-resolve
+IP-CIDR,118.144.88.215/32,REJECT,no-resolve
+IP-CIDR,124.14.21.147/32,REJECT,no-resolve
+IP-CIDR,124.14.21.151/32,REJECT,no-resolve
+IP-CIDR,180.166.52.24/32,REJECT,no-resolve
+IP-CIDR,220.115.251.25/32,REJECT,no-resolve
+IP-CIDR,222.73.156.235/32,REJECT,no-resolve
+
+// Blacklist
+DOMAIN-SUFFIX,makeding.com,REJECT
+DOMAIN-SUFFIX,mairuan.com,REJECT
+
+# REJECT End
+
+# Proxy Start
+
+// Apple
+DOMAIN-SUFFIX,appsto.re,Proxy
+DOMAIN-SUFFIX,me.com,Proxy
+DOMAIN,s.mzstatic.com,Proxy
+DOMAIN,gspe1-ssl.ls.apple.com,Proxy,force-remote-dns
+DOMAIN,news-events.apple.com,Proxy,force-remote-dns
+DOMAIN,news-client.apple.com,Proxy,force-remote-dns
+DOMAIN,lookup-api.apple.com,Proxy
+DOMAIN,api-glb-sea.smoot.apple.com,Proxy
+DOMAIN,books.itunes.apple.com,Proxy
+DOMAIN,hls.itunes.apple.com,Proxy
+
+// Google
+DOMAIN-SUFFIX,1e100.net,Proxy,force-remote-dns
+DOMAIN-SUFFIX,abc.xyz,Proxy,force-remote-dns
+DOMAIN-SUFFIX,admob.com,Proxy,force-remote-dns
+DOMAIN-SUFFIX,agoogleaday.com,Proxy,force-remote-dns
+DOMAIN-SUFFIX,ampproject.org,Proxy,force-remote-dns
+DOMAIN-SUFFIX,ampproject.com,Proxy,force-remote-dns
+DOMAIN-SUFFIX,ampproject.net,Proxy,force-remote-dns
+DOMAIN-SUFFIX,android.com,Proxy,force-remote-dns
+DOMAIN-SUFFIX,androidify.com,Proxy,force-remote-dns
+DOMAIN-SUFFIX,appspot.com,Proxy,force-remote-dns
+DOMAIN-SUFFIX,blogger.com,Proxy,force-remote-dns
+DOMAIN-SUFFIX,blogblog.com,Proxy,force-remote-dns
+DOMAIN-SUFFIX,certificate-transparency.org,Proxy,force-remote-dns
+DOMAIN-SUFFIX,chrome.com,Proxy,force-remote-dns
+DOMAIN-SUFFIX,chromecast.com,Proxy,force-remote-dns
+DOMAIN-SUFFIX,chromeexperiments.com,Proxy,force-remote-dns
+DOMAIN-SUFFIX,chromercise.com,Proxy,force-remote-dns
+DOMAIN-SUFFIX,chromestatus.com,Proxy,force-remote-dns
+DOMAIN-SUFFIX,chromium.org,Proxy,force-remote-dns
+DOMAIN-SUFFIX,com.google,Proxy,force-remote-dns
+DOMAIN-SUFFIX,data-vocabulary.org,Proxy,force-remote-dns
+DOMAIN-SUFFIX,deja.com,Proxy,force-remote-dns
+DOMAIN-SUFFIX,digisfera.com,Proxy,force-remote-dns
+DOMAIN-SUFFIX,domains.google,Proxy,force-remote-dns
+DOMAIN-SUFFIX,feedburner.com,Proxy,force-remote-dns
+DOMAIN-SUFFIX,g.co,Proxy,force-remote-dns
+DOMAIN-SUFFIX,get.how,Proxy,force-remote-dns
+DOMAIN-SUFFIX,getmdl.io,Proxy,force-remote-dns
+DOMAIN-SUFFIX,ggpht.com,Proxy,force-remote-dns
+DOMAIN-SUFFIX,gmail.com,Proxy,force-remote-dns
+DOMAIN-SUFFIX,gmodules.com,Proxy,force-remote-dns
+DOMAIN-SUFFIX,goo.gl,Proxy,force-remote-dns
+DOMAIN-SUFFIX,google.com,Proxy,force-remote-dns
+DOMAIN-SUFFIX,googleapis.com,Proxy,force-remote-dns
+DOMAIN-SUFFIX,googleartproject.com,Proxy,force-remote-dns
+DOMAIN-SUFFIX,googleblog.com,Proxy,force-remote-dns
+DOMAIN-SUFFIX,googlecode.com,Proxy,force-remote-dns
+DOMAIN-SUFFIX,googlecommerce.com,Proxy,force-remote-dns
+DOMAIN-SUFFIX,googledomains.com,Proxy,force-remote-dns
+DOMAIN-SUFFIX,googleearth.com,Proxy,force-remote-dns
+DOMAIN-SUFFIX,googledrive.com,Proxy,force-remote-dns
+DOMAIN-SUFFIX,googlegroups.com,Proxy,force-remote-dns
+DOMAIN-SUFFIX,googlehosted.com,Proxy,force-remote-dns
+DOMAIN-SUFFIX,googleideas.com,Proxy,force-remote-dns
+DOMAIN-SUFFIX,googlelabs.com,Proxy,force-remote-dns
+DOMAIN-SUFFIX,googlemail.com,Proxy,force-remote-dns
+DOMAIN-SUFFIX,googleplay.com,Proxy,force-remote-dns
+DOMAIN-SUFFIX,googleplus.com,Proxy,force-remote-dns
+DOMAIN-SUFFIX,googlesource.com,Proxy,force-remote-dns
+DOMAIN-SUFFIX,googlesyndication.com,Proxy,force-remote-dns
+DOMAIN-SUFFIX,googletagmanager.com,Proxy,force-remote-dns
+DOMAIN-SUFFIX,googletagservices.com,Proxy,force-remote-dns
+DOMAIN-SUFFIX,googleusercontent.com,Proxy,force-remote-dns
+DOMAIN-SUFFIX,googlevideo.com,Proxy,force-remote-dns
+DOMAIN-SUFFIX,googlezip.net,Proxy,force-remote-dns
+DOMAIN-SUFFIX,gstatic.com,Proxy,force-remote-dns
+DOMAIN-SUFFIX,gstatic.cn,Proxy,force-remote-dns
+DOMAIN-SUFFIX,gvt0.com,Proxy,force-remote-dns
+DOMAIN-SUFFIX,gvt1.com,Proxy,force-remote-dns
+DOMAIN-SUFFIX,blogspot.com,Proxy,force-remote-dns
+DOMAIN-SUFFIX,html5rocks.com,Proxy,force-remote-dns
+DOMAIN-SUFFIX,iam.soy,Proxy,force-remote-dns
+DOMAIN-SUFFIX,igoogle.com,Proxy,force-remote-dns
+DOMAIN-SUFFIX,like.com,Proxy,force-remote-dns
+DOMAIN-SUFFIX,nic.google,Proxy,force-remote-dns
+DOMAIN-SUFFIX,panoramio.com,Proxy,force-remote-dns
+DOMAIN-SUFFIX,picasaweb.com,Proxy,force-remote-dns
+DOMAIN-SUFFIX,polymer-project.org,Proxy,force-remote-dns
+DOMAIN-SUFFIX,thinkwithgoogle.com,Proxy,force-remote-dns
+DOMAIN-SUFFIX,tiltbrush.com,Proxy,force-remote-dns
+DOMAIN-SUFFIX,recaptcha.net,Proxy,force-remote-dns
+DOMAIN-SUFFIX,registry.google,Proxy,force-remote-dns
+DOMAIN-SUFFIX,tensorflow.org,Proxy,force-remote-dns
+DOMAIN-SUFFIX,webmproject.org,Proxy,force-remote-dns
+DOMAIN-SUFFIX,whatbrowser.org,Proxy,force-remote-dns
+DOMAIN-SUFFIX,withgoogle.com,Proxy,force-remote-dns
+DOMAIN-SUFFIX,youtu.be,Proxy,force-remote-dns
+DOMAIN-SUFFIX,youtube.com,Proxy,force-remote-dns
+DOMAIN-SUFFIX,youtube-nocookie.com,Proxy,force-remote-dns
+DOMAIN-SUFFIX,ytimg.com,Proxy,force-remote-dns
+DOMAIN-SUFFIX,zynamics.com,Proxy,force-remote-dns
+
+// A
+DOMAIN-SUFFIX,amazon.com,Proxy
+DOMAIN-SUFFIX,amazonaws.com,Proxy
+DOMAIN-SUFFIX,archive.org,Proxy
+DOMAIN-SUFFIX,archive.is,Proxy
+DOMAIN-SUFFIX,archive.li,Proxy
+DOMAIN-SUFFIX,archives.gov,Proxy
+DOMAIN-SUFFIX,appdownloader.net,Proxy
+DOMAIN-SUFFIX,apk-dl.com,Proxy
+DOMAIN-SUFFIX,apkfind.com,Proxy
+DOMAIN-SUFFIX,apkpure.com,Proxy
+DOMAIN-SUFFIX,apigee.com,Proxy
+DOMAIN-SUFFIX,aol.com,Proxy
+DOMAIN-SUFFIX,aolcdn.com,Proxy
+DOMAIN-SUFFIX,anthonycalzadilla.com,Proxy
+DOMAIN-SUFFIX,android-x86.org,Proxy
+DOMAIN-SUFFIX,ancsconf.org,Proxy
+DOMAIN-SUFFIX,allconnected.co,Proxy
+DOMAIN-SUFFIX,apkleecher.com,Proxy
+DOMAIN-SUFFIX,appsonplaystore.com,Proxy
+DOMAIN-SUFFIX,awsstatic.com,Proxy
+DOMAIN-SUFFIX,async.be,Proxy
+DOMAIN-SUFFIX,appshopper.com,Proxy
+DOMAIN-SUFFIX,armorgames.com,Proxy
+DOMAIN-SUFFIX,avanquest.com,Proxy
+DOMAIN-SUFFIX,adaymag.com,Proxy
+DOMAIN-SUFFIX,app-measurement.com,Proxy
+DOMAIN-SUFFIX,akamaiedge.net,Proxy
+
+// B
+DOMAIN-SUFFIX,bbc.com,Proxy
+DOMAIN-SUFFIX,books.com.tw,Proxy
+DOMAIN-SUFFIX,bloomberg.com,Proxy
+DOMAIN-SUFFIX,bloglovin.com,Proxy
+DOMAIN-SUFFIX,bitshare.com,Proxy
+DOMAIN-SUFFIX,bitcointalk.org,Proxy
+DOMAIN-SUFFIX,bit.do,Proxy
+DOMAIN-SUFFIX,bit.ly,Proxy
+DOMAIN-SUFFIX,bigsound.org,Proxy
+DOMAIN-SUFFIX,bbtoystore.com,Proxy
+DOMAIN-SUFFIX,boxun.com,Proxy
+DOMAIN-SUFFIX,bandwagonhost.com,Proxy
+DOMAIN-SUFFIX,bitvise.com,Proxy
+DOMAIN-SUFFIX,blessing.studio,Proxy
+DOMAIN-SUFFIX,btso.pw,Proxy
+DOMAIN-SUFFIX,binance.com,Proxy
+DOMAIN-SUFFIX,binance.cloud,Proxy
+DOMAIN-SUFFIX,bitstamp.net,Proxy
+DOMAIN-SUFFIX,beechat.io,Proxy
+DOMAIN-SUFFIX,bing.com,Proxy
+DOMAIN-SUFFIX,businessweek.com,Proxy
+DOMAIN-SUFFIX,bitfinex.com,Proxy
+DOMAIN-SUFFIX,bibox.com,Proxy
+DOMAIN-SUFFIX,bitmex.com,Proxy
+DOMAIN-SUFFIX,box.com,Proxy
+
+// C
+DOMAIN-SUFFIX,cnn.com,Proxy
+DOMAIN-SUFFIX,cdninstagram.com,Proxy
+DOMAIN-SUFFIX,cbc.ca,Proxy
+DOMAIN-SUFFIX,census.gov,Proxy
+DOMAIN-SUFFIX,cloudfront.net,Proxy
+DOMAIN-SUFFIX,cn-proxy.com,Proxy
+DOMAIN-SUFFIX,cccat.cc,Proxy
+DOMAIN-SUFFIX,codepen.io,Proxy
+DOMAIN-SUFFIX,cbsistatic.com,Proxy
+DOMAIN-SUFFIX,coinegg.com,Proxy
+DOMAIN-SUFFIX,css.network,Proxy
+DOMAIN-SUFFIX,cradio.live,Proxy
+
+// D
+DOMAIN-SUFFIX,dw.com,Proxy
+DOMAIN-SUFFIX,duckduckgo.com,Proxy
+DOMAIN-SUFFIX,dropbox.com,Proxy
+DOMAIN-SUFFIX,dropboxstatic.com,Proxy
+DOMAIN-SUFFIX,dropboxusercontent.com,Proxy
+DOMAIN-SUFFIX,disconnect.me,Proxy
+DOMAIN-SUFFIX,dcmilitary.com,Proxy
+DOMAIN-SUFFIX,digitaltrends.com,Proxy
+DOMAIN-SUFFIX,daolan.net,Proxy
+DOMAIN-SUFFIX,dol.gov,Proxy
+DOMAIN-SUFFIX,disqus.com,Proxy
+DOMAIN-SUFFIX,discuss.com.hk,Proxy
+DOMAIN-SUFFIX,discord.gg,Proxy
+DOMAIN-SUFFIX,discordapp.com,Proxy
+DOMAIN-SUFFIX,discordapp.net,Proxy
+DOMAIN-SUFFIX,doub.io,Proxy
+DOMAIN-SUFFIX,dnvod.tv,Proxy
+DOMAIN-SUFFIX,dailymotion.com,Proxy
+DOMAIN-SUFFIX,dwnews.com,Proxy
+DOMAIN-SUFFIX,dwnews.net,Proxy
+DOMAIN-SUFFIX,devmate.com,Proxy
+
+// E
+DOMAIN-SUFFIX,extmatrix.com,Proxy
+DOMAIN-SUFFIX,easybib.com,Proxy
+DOMAIN-SUFFIX,easybib.com,Proxy
+DOMAIN-SUFFIX,economist.com,Proxy
+DOMAIN-SUFFIX,edgecastcdn.net,Proxy
+DOMAIN-SUFFIX,everhelper.me,Proxy
+DOMAIN-SUFFIX,envato-static.com,Proxy
+
+// F
+DOMAIN-SUFFIX,facebook.com,Proxy,force-remote-dns
+DOMAIN-SUFFIX,facebook.net,Proxy,force-remote-dns
+DOMAIN-SUFFIX,fbcdn.net,Proxy,force-remote-dns
+DOMAIN-SUFFIX,fb.com,Proxy
+DOMAIN-SUFFIX,fb.me,Proxy
+DOMAIN-SUFFIX,freeopenProxy.com,Proxy
+DOMAIN-SUFFIX,fzlm.net,Proxy
+DOMAIN-SUFFIX,flitto.com,Proxy
+DOMAIN-SUFFIX,flipkart.com,Proxy
+DOMAIN-SUFFIX,flickr.com,Proxy
+DOMAIN-SUFFIX,staticflickr.com,Proxy
+DOMAIN-SUFFIX,fdlstatic.com,Proxy
+DOMAIN-SUFFIX,fastly.net,Proxy
+DOMAIN-SUFFIX,flumeapp.com,Proxy
+DOMAIN-SUFFIX,free-proxy.cz,Proxy
+DOMAIN-SUFFIX,fc2.com,Proxy
+DOMAIN-SUFFIX,firebaseio.com,Proxy
+DOMAIN-SUFFIX,flightradar24.com,Proxy
+
+// G
+DOMAIN-SUFFIX,getcloudapp.com,Proxy
+DOMAIN-SUFFIX,gunsamerica.com,Proxy
+DOMAIN-SUFFIX,gravatar.com,Proxy
+DOMAIN-SUFFIX,getlantern.org,Proxy
+DOMAIN-SUFFIX,getfoxyProxy.org,Proxy
+DOMAIN-SUFFIX,go.com,Proxy
+DOMAIN-SUFFIX,go.jp,Proxy
+DOMAIN-SUFFIX,gfw.press,Proxy
+DOMAIN-SUFFIX,getdropbox.com,Proxy
+DOMAIN-SUFFIX,github.io,Proxy
+DOMAIN-SUFFIX,gitbooks.io,Proxy
+DOMAIN-SUFFIX,greatfire.org,Proxy
+DOMAIN-SUFFIX,getsync.com,Proxy
+DOMAIN-SUFFIX,gumroad.com,Proxy
+DOMAIN-SUFFIX,gdax.com,Proxy
+DOMAIN-SUFFIX,gate.io,Proxy
+DOMAIN-SUFFIX,gracecode.com,Proxy
+DOMAIN,gist.github.com,Proxy
+
+// H
+DOMAIN-SUFFIX,howtoforge.com,Proxy
+DOMAIN-SUFFIX,hootsuite.com,Proxy
+DOMAIN-SUFFIX,homedepot.com,Proxy
+DOMAIN-SUFFIX,hulu.com,Proxy
+DOMAIN-SUFFIX,hk01.com,Proxy
+DOMAIN-SUFFIX,huobi.com,Proxy
+DOMAIN-SUFFIX,huobi.pro,Proxy
+DOMAIN-SUFFIX,huobipro.com,Proxy
+DOMAIN-SUFFIX,hitbtc.com,Proxy
+
+// I
+DOMAIN-SUFFIX,instagram.com,Proxy
+DOMAIN-SUFFIX,icoco.com,Proxy
+DOMAIN-SUFFIX,imgur.com,Proxy
+DOMAIN-SUFFIX,instructables.com,Proxy
+DOMAIN-SUFFIX,ift.tt,Proxy
+DOMAIN-SUFFIX,is.gd,Proxy
+DOMAIN-SUFFIX,imgbus.com,Proxy
+DOMAIN-SUFFIX,i-scmp.com,Proxy
+DOMAIN-SUFFIX,iask.ca,Proxy
+DOMAIN-SUFFIX,issuu.com,Proxy
+DOMAIN-SUFFIX,ixquick.com,Proxy
+DOMAIN-SUFFIX,init.shop,Proxy
+DOMAIN-SUFFIX,initiummall.com,Proxy
+DOMAIN-SUFFIX,ipfs.io,Proxy
+
+// J
+DOMAIN-SUFFIX,jwpcdn.com,Proxy
+DOMAIN-SUFFIX,jwpltx.com,Proxy
+
+// K
+DOMAIN-SUFFIX,kenengba.com,Proxy
+DOMAIN-SUFFIX,keepvid.com,Proxy
+DOMAIN-SUFFIX,kobo.com,Proxy
+DOMAIN-SUFFIX,kucoin.com,Proxy
+
+// L
+DOMAIN-SUFFIX,line.me,Proxy
+DOMAIN-SUFFIX,line-apps.com,Proxy
+DOMAIN-SUFFIX,line-cdn.net,Proxy
+DOMAIN-SUFFIX,line-scdn.net,Proxy
+DOMAIN-SUFFIX,logmein.com,Proxy
+DOMAIN-SUFFIX,lvv2.com,Proxy
+DOMAIN-SUFFIX,live.com,Proxy
+DOMAIN-SUFFIX,linkcoin.pro,Proxy
+
+// M
+DOMAIN-SUFFIX,mp3buscador.com,Proxy
+DOMAIN-SUFFIX,medium.com,Proxy
+DOMAIN-SUFFIX,mlssoccer.com,Proxy
+DOMAIN-SUFFIX,marketwatch.com,Proxy
+DOMAIN-SUFFIX,nih.gov,Proxy
+DOMAIN-SUFFIX,mycnnews.com,Proxy
+DOMAIN-SUFFIX,maplestage.com,Proxy
+DOMAIN-SUFFIX,mozilla.net,Proxy
+DOMAIN-SUFFIX,mobypicture.com,Proxy
+DOMAIN-SUFFIX,msn.com,Proxy
+
+// N
+DOMAIN-SUFFIX,nytimes.com,Proxy
+DOMAIN-SUFFIX,nytimg.com,Proxy
+DOMAIN-SUFFIX,nyti.ms,Proxy
+DOMAIN-SUFFIX,nytstyle.com,Proxy
+DOMAIN-SUFFIX,nyt.com,Proxy
+DOMAIN-SUFFIX,nrk.no,Proxy
+DOMAIN-SUFFIX,newipnow.com,Proxy
+DOMAIN-SUFFIX,ndr.de,Proxy
+DOMAIN-SUFFIX,nasa.gov,Proxy
+DOMAIN-SUFFIX,netflix.com,Proxy
+DOMAIN-SUFFIX,netflix.net,Proxy
+DOMAIN-SUFFIX,nflxext.com,Proxy
+DOMAIN-SUFFIX,nflximg.com,Proxy
+DOMAIN-SUFFIX,nflximg.net,Proxy
+DOMAIN-SUFFIX,nflxvideo.net,Proxy
+DOMAIN-SUFFIX,nflxso.net,Proxy
+DOMAIN-SUFFIX,nintendo.com,Proxy
+DOMAIN-SUFFIX,nssurge.com,Proxy
+DOMAIN-SUFFIX,neverware.com,Proxy
+DOMAIN-SUFFIX,ngrok.cc,Proxy
+DOMAIN-SUFFIX,naver.jp,Proxy
+
+// O
+DOMAIN-SUFFIX,onlineyoutube.com,Proxy
+DOMAIN-SUFFIX,osha.gov,Proxy
+DOMAIN-SUFFIX,optimizely.com,Proxy
+DOMAIN-SUFFIX,owncloud.org,Proxy
+DOMAIN-SUFFIX,ow.ly,Proxy
+DOMAIN-SUFFIX,oup.com,Proxy
+DOMAIN-SUFFIX,ok.ru,Proxy
+DOMAIN-SUFFIX,oloadcdn.net,Proxy
+DOMAIN-SUFFIX,okex.com,Proxy
+
+// P
+DOMAIN-SUFFIX,psiphon3.com,Proxy
+DOMAIN-SUFFIX,puffinbrowser.com,Proxy
+DOMAIN-SUFFIX,pubu.com.tw,Proxy
+DOMAIN-SUFFIX,proxfree.com,Proxy
+DOMAIN-SUFFIX,popo.tw,Proxy
+DOMAIN-SUFFIX,pokemon.com,Proxy
+DOMAIN-SUFFIX,pastebin.com,Proxy
+DOMAIN-SUFFIX,pandora.com,Proxy
+DOMAIN-SUFFIX,pinterest.com,Proxy
+DOMAIN-SUFFIX,pinimg.com,Proxy
+DOMAIN-SUFFIX,pandora.com,Proxy
+DOMAIN-SUFFIX,potatso.com,Proxy
+DOMAIN-SUFFIX,pscp.tv,Proxy
+DOMAIN-SUFFIX,putty.org,Proxy
+DOMAIN-SUFFIX,pixiv.net,Proxy
+DOMAIN-SUFFIX,pixiv.org,Proxy
+DOMAIN-SUFFIX,pixnet.net,Proxy
+DOMAIN-SUFFIX,pentoy.hk,Proxy
+DOMAIN-SUFFIX,psu.edu,Proxy
+DOMAIN-SUFFIX,poloniex.com,Proxy
+
+// R
+DOMAIN-SUFFIX,rsf.org,Proxy
+DOMAIN-SUFFIX,rileyguide.com,Proxy
+DOMAIN-SUFFIX,rfi.fr,Proxy
+DOMAIN-SUFFIX,reuters.com,Proxy
+DOMAIN-SUFFIX,readmoo.com,Proxy
+DOMAIN-SUFFIX,readingtimes.com.tw,Proxy
+DOMAIN-SUFFIX,resilio.com,Proxy
+DOMAIN-SUFFIX,rawgit.com,Proxy
+DOMAIN-SUFFIX,rackcdn.com,Proxy
+DOMAIN-SUFFIX,rthk.hk,Proxy
+
+// S
+DOMAIN-SUFFIX,scribd.com,Proxy
+DOMAIN-SUFFIX,sydneytoday.com,Proxy
+DOMAIN-SUFFIX,surrenderat20.net,Proxy
+DOMAIN-SUFFIX,surfeasy.com.au,Proxy
+DOMAIN-SUFFIX,sugarsync.com,Proxy
+DOMAIN-SUFFIX,stumbleupon.com,Proxy
+DOMAIN-SUFFIX,storify.com,Proxy
+DOMAIN-SUFFIX,startpage.com,Proxy
+DOMAIN-SUFFIX,starp2p.com,Proxy
+DOMAIN-SUFFIX,state.gov,Proxy
+DOMAIN-SUFFIX,spike.com,Proxy
+DOMAIN-SUFFIX,sowers.org.hk,Proxy
+DOMAIN-SUFFIX,soundcloud.com,Proxy
+DOMAIN-SUFFIX,sockslist.net,Proxy
+DOMAIN-SUFFIX,snapchat.com,Proxy
+DOMAIN-SUFFIX,smh.com.au,Proxy
+DOMAIN-SUFFIX,slideshare.net,Proxy
+DOMAIN-SUFFIX,skype.com,Proxy
+DOMAIN-SUFFIX,sketchappsources.com,Proxy
+DOMAIN-SUFFIX,sidelinesnews.com,Proxy
+DOMAIN-SUFFIX,shadowsocks.org,Proxy
+DOMAIN-SUFFIX,search.com,Proxy
+DOMAIN-SUFFIX,sciencemag.org,Proxy
+DOMAIN-SUFFIX,ssa.gov,Proxy
+DOMAIN-SUFFIX,shutterstock.com,Proxy
+DOMAIN-SUFFIX,sciencedaily.com,Proxy
+DOMAIN-SUFFIX,signalsitemap.com,Proxy
+DOMAIN-SUFFIX,surge.run,Proxy
+DOMAIN-SUFFIX,swtch.com,Proxy
+DOMAIN-SUFFIX,scmp.com,Proxy
+DOMAIN-SUFFIX,stel.com,Proxy
+DOMAIN-SUFFIX,steamcommunity.com,Proxy
+DOMAIN-SUFFIX,slack.com,Proxy
+DOMAIN-SUFFIX,slack-edge.com,Proxy
+DOMAIN-SUFFIX,slack-msgs.com,Proxy
+DOMAIN-SUFFIX,sndcdn.com,Proxy
+
+// T
+DOMAIN-SUFFIX,twtkr.com,Proxy,force-remote-dns
+DOMAIN-SUFFIX,twimg.com,Proxy,force-remote-dns
+DOMAIN-SUFFIX,twitthat.com,Proxy,force-remote-dns
+DOMAIN-SUFFIX,twitterrific.com,Proxy,force-remote-dns
+DOMAIN-SUFFIX,twittercounter.com,Proxy,force-remote-dns
+DOMAIN-SUFFIX,twittergadget.com,Proxy,force-remote-dns
+DOMAIN-SUFFIX,twitterfeed.com,Proxy,force-remote-dns
+DOMAIN-SUFFIX,twitter4j.org,Proxy,force-remote-dns
+DOMAIN-SUFFIX,twttr.com,Proxy,force-remote-dns
+DOMAIN-SUFFIX,twitter.com,Proxy,force-remote-dns
+DOMAIN-SUFFIX,t.co,Proxy,force-remote-dns
+DOMAIN-SUFFIX,tv.com,Proxy
+DOMAIN-SUFFIX,tumblr.com,Proxy
+DOMAIN-SUFFIX,tmblr.co,Proxy
+DOMAIN-SUFFIX,txmblr.com,Proxy
+DOMAIN-SUFFIX,turbobit.net,Proxy
+DOMAIN-SUFFIX,tt-rss.org,Proxy
+DOMAIN-SUFFIX,trulyergonomic.com,Proxy
+DOMAIN-SUFFIX,trendsmap.com,Proxy
+DOMAIN-SUFFIX,transparency.org,Proxy
+DOMAIN-SUFFIX,traffichaus.com,Proxy
+DOMAIN-SUFFIX,torrentz.eu,Proxy
+DOMAIN-SUFFIX,torrentproject.se,Proxy
+DOMAIN-SUFFIX,torrentprivacy.com,Proxy
+DOMAIN-SUFFIX,torproject.org,Proxy
+DOMAIN-SUFFIX,torcn.com,Proxy
+DOMAIN-SUFFIX,tokyocn.com,Proxy
+DOMAIN-SUFFIX,togetter.com,Proxy
+DOMAIN-SUFFIX,tinychat.com,Proxy
+DOMAIN-SUFFIX,tiny.cc,Proxy
+DOMAIN-SUFFIX,time.com,Proxy
+DOMAIN-SUFFIX,thewgo.org,Proxy
+DOMAIN-SUFFIX,thepiratebay.org,Proxy
+DOMAIN-SUFFIX,thebobs.com,Proxy
+DOMAIN-SUFFIX,telegram.org,Proxy
+DOMAIN-SUFFIX,telegram.me,Proxy
+DOMAIN-SUFFIX,telegram.show,Proxy
+DOMAIN-SUFFIX,technorati.com,Proxy
+DOMAIN-SUFFIX,talkboxapp.com,Proxy
+DOMAIN-SUFFIX,talkonly.net,Proxy
+DOMAIN-SUFFIX,talk853.com,Proxy
+DOMAIN-SUFFIX,tabtter.jp,Proxy
+DOMAIN-SUFFIX,tablesgenerator.com,Proxy
+DOMAIN-SUFFIX,tomshardware.com,Proxy
+DOMAIN-SUFFIX,theverge.com,Proxy
+DOMAIN-SUFFIX,twishort.com,Proxy
+DOMAIN-SUFFIX,tdesktop.com,Proxy
+DOMAIN-SUFFIX,t.me,Proxy
+DOMAIN-SUFFIX,tv-static.net,Proxy
+DOMAIN-SUFFIX,theinitium.com,Proxy
+DOMAIN-SUFFIX,trellocdn.com,Proxy
+DOMAIN-SUFFIX,tvcdn.de,Proxy
+DOMAIN-SUFFIX,textnow.me,Proxy
+
+// U
+DOMAIN-SUFFIX,ustream.tv,Proxy
+DOMAIN-SUFFIX,uspto.gov,Proxy
+DOMAIN-SUFFIX,usma.edu,Proxy
+DOMAIN-SUFFIX,us.to,Proxy
+DOMAIN-SUFFIX,urlparser.com,Proxy
+DOMAIN-SUFFIX,uProxy.org,Proxy
+DOMAIN-SUFFIX,uploaded.net,Proxy
+DOMAIN-SUFFIX,untraceable.us,Proxy
+DOMAIN-SUFFIX,unpo.org,Proxy
+DOMAIN-SUFFIX,unblocksites.co,Proxy
+DOMAIN-SUFFIX,unblockdmm.com,Proxy
+DOMAIN-SUFFIX,uhdwallpapers.org,Proxy
+DOMAIN-SUFFIX,ugo.com,Proxy
+DOMAIN-SUFFIX,udn.com,Proxy
+DOMAIN-SUFFIX,uchicago.edu,Proxy
+DOMAIN-SUFFIX,usgs.gov,Proxy
+DOMAIN-SUFFIX,umblr.com,Proxy
+DOMAIN-SUFFIX,unpkg.com,Proxy
+
+// V
+DOMAIN-SUFFIX,vpngate.net,Proxy
+DOMAIN-SUFFIX,vocativ.com,Proxy
+DOMAIN-SUFFIX,visibletweets.com,Proxy
+DOMAIN-SUFFIX,vimperator.org,Proxy
+DOMAIN-SUFFIX,vimeo.com,Proxy
+DOMAIN-SUFFIX,vimeocdn.com,Proxy
+DOMAIN-SUFFIX,vidinfo.org,Proxy
+DOMAIN-SUFFIX,videomega.tv,Proxy
+DOMAIN-SUFFIX,vid.me,Proxy
+DOMAIN-SUFFIX,viber.com,Proxy
+DOMAIN-SUFFIX,veoh.com,Proxy
+DOMAIN-SUFFIX,venchina.com,Proxy
+DOMAIN-SUFFIX,vansky.com,Proxy
+DOMAIN-SUFFIX,vanpeople.com,Proxy
+DOMAIN-SUFFIX,van001.com,Proxy
+DOMAIN-SUFFIX,v2ray.com,Proxy
+DOMAIN-SUFFIX,verizonwireless.com,Proxy
+DOMAIN-SUFFIX,vzw.com,Proxy
+DOMAIN-SUFFIX,voachinese.com,Proxy
+DOMAIN-SUFFIX,vnet.link,Proxy
+DOMAIN-SUFFIX,voanews.com,Proxy
+DOMAIN-SUFFIX,vanilla-js.com,Proxy
+DOMAIN-SUFFIX,vjmedia.com.hk,Proxy
+
+// W
+DOMAIN-SUFFIX,wwitv.com,Proxy
+DOMAIN-SUFFIX,wsj.com,Proxy
+DOMAIN-SUFFIX,wsj.net,Proxy
+DOMAIN-SUFFIX,wordpress.com,Proxy
+DOMAIN-SUFFIX,wp.com,Proxy
+DOMAIN-SUFFIX,wow.com,Proxy
+DOMAIN-SUFFIX,worldcat.org,Proxy
+DOMAIN-SUFFIX,wn.com,Proxy
+DOMAIN-SUFFIX,wikipedia.org,Proxy
+DOMAIN-SUFFIX,wikipedia.com,Proxy
+DOMAIN-SUFFIX,wikimedia.org,Proxy
+DOMAIN-SUFFIX,wikileaks.info,Proxy
+DOMAIN-SUFFIX,wikileaks-forum.com,Proxy
+DOMAIN-SUFFIX,wikileaks.org,Proxy
+DOMAIN-SUFFIX,westpoint.edu,Proxy
+DOMAIN-SUFFIX,westca.com,Proxy
+DOMAIN-SUFFIX,wenxuecity.com,Proxy
+DOMAIN-SUFFIX,webwarper.net,Proxy
+DOMAIN-SUFFIX,websnapr.com,Proxy
+DOMAIN-SUFFIX,weblagu.com,Proxy
+DOMAIN-SUFFIX,webfreer.com,Proxy
+DOMAIN-SUFFIX,web2project.net,Proxy
+DOMAIN-SUFFIX,wattpad.com,Proxy
+DOMAIN-SUFFIX,winudf.com,Proxy
+DOMAIN-SUFFIX,web.de,Proxy
+DOMAIN-SUFFIX,wanqu.co,Proxy
+DOMAIN-SUFFIX,whoer.net,Proxy
+DOMAIN-SUFFIX,whatsapp.net,Proxy,force-remote-dns
+DOMAIN-SUFFIX,whatsapp.com,Proxy,force-remote-dns
+DOMAIN-SUFFIX,webpagefx.com,Proxy
+
+// X
+DOMAIN-SUFFIX,xuite.net,Proxy
+DOMAIN-SUFFIX,xanga.com,Proxy
+
+// Y
+DOMAIN-SUFFIX,yahoo.com,Proxy
+DOMAIN-SUFFIX,yimg.com,Proxy
+DOMAIN-SUFFIX,yourlisten.com,Proxy
+DOMAIN-SUFFIX,youmaker.com,Proxy
+DOMAIN-SUFFIX,yorkbbs.ca,Proxy
+DOMAIN-SUFFIX,yidio.com,Proxy
+DOMAIN-SUFFIX,yes-news.com,Proxy
+DOMAIN-SUFFIX,yesasia.com,Proxy
+DOMAIN-SUFFIX,yeeyi.com,Proxy
+DOMAIN-SUFFIX,yasni.co.uk,Proxy
+DOMAIN-SUFFIX,yastatic.net,Proxy
+
+// Z
+DOMAIN-SUFFIX,zacebook.com,Proxy
+DOMAIN-SUFFIX,zalmos.com,Proxy
+DOMAIN-SUFFIX,zaobao.com.sg,Proxy
+DOMAIN-SUFFIX,zeutch.com,Proxy
+DOMAIN-SUFFIX,zeronet.io,Proxy
+DOMAIN-SUFFIX,zdassets.com,Proxy
+DOMAIN-SUFFIX,zhowkev.in,Proxy
+DOMAIN-SUFFIX,zb.com,Proxy
+
+
+// 0-9
+DOMAIN-SUFFIX,4everProxy.com,Proxy
+DOMAIN-SUFFIX,4shared.com,Proxy
+DOMAIN-SUFFIX,6park.com,Proxy
+
+// Telegram
+IP-CIDR,91.108.0.0/16,Proxy,no-resolve
+IP-CIDR,149.154.0.0/16,Proxy,no-resolve
+
+// LINE
+IP-CIDR,103.2.28.0/20,Proxy,no-resolve
+IP-CIDR,119.235.224.0/20,Proxy,no-resolve
+IP-CIDR,125.209.222.0/16,Proxy,no-resolve
+IP-CIDR,147.92.128.0/21,Proxy,no-resolve
+IP-CIDR,203.104.128.0/19,Proxy,no-resolve
+
+// Others Proxy
+IP-CIDR,18.0.0.0/8,Proxy,no-resolve
+IP-CIDR,31.0.0.0/8,Proxy,no-resolve
+IP-CIDR,35.0.0.0/8,Proxy,no-resolve
+IP-CIDR,52.0.0.0/8,Proxy,no-resolve
+IP-CIDR,54.0.0.0/8,Proxy,no-resolve
+IP-CIDR,64.0.0.0/8,Proxy,no-resolve
+IP-CIDR,75.0.0.0/8,Proxy,no-resolve
+IP-CIDR,158.0.0.0/8,Proxy,no-resolve
+IP-CIDR,169.0.0.0/8,Proxy,no-resolve
+IP-CIDR,174.0.0.0/8,Proxy,no-resolve
+IP-CIDR,199.0.0.0/8,Proxy,no-resolve
+
+# Proxy End
+
+GEOIP, CN, DIRECT
+FINAL, Proxy
+
+[URL Rewrite]
+// Redirect_Google_Service
+^https?://(www.)?g.cn https://www.google.com 302
+^https?://(www.)?google.cn https://www.google.com 302

Một số tệp đã không được hiển thị bởi vì quá nhiều tập tin thay đổi trong này khác