Explorar o código

1.修正用户标签重复问题
2.添加、编辑节点时域名合法性校验
3.为namesilo自动更新域名dns做准备:本次更新记得执行一遍 php composer.phar install

bingo %!s(int64=7) %!d(string=hai) anos
pai
achega
d5987183b5

+ 35 - 3
app/Console/Commands/AutoBanSubscribeJob.php

@@ -22,9 +22,41 @@ class AutoBanSubscribeJob extends Command
     {
         /*
          * 客户端请求头有多种,常见如下:
-         * SSR、SSRR安卓客户端:okhttp/3.8.0
-         * Shadowrocket:Shadowrocket/516 CFNetwork/893.14.2 Darwin/17.3.0
-         * ShadowsocksR win版:Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.3319.102 Safari/537.36
+         * SSR、SSRR安卓客户端:
+         *      okhttp/3.8.0
+         *      Mozilla/5.0 (Linux; U; Android 4.4.4; zh-cn; MX4 Pro Build/KTU84P) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30
+         *
+         * Shadowrocket:
+         *      Shadowrocket/516 CFNetwork/893.14.2 Darwin/17.3.0
+         *      Shadowrocket/510 CFNetwork/893.14.2 Darwin/17.3.0
+         *      Shadowrocket/510 CFNetwork/889.9 Darwin/17.2.0
+         *      Shadowrocket/510 CFNetwork/811.5.4 Darwin/16.7.0
+         *      Shadowrocket/510 CFNetwork/811.5.4 Darwin/16.6.0
+         *      Shadowrocket/510 CFNetwork/808.0.2 Darwin/16.0.0
+         *      Shadowrocket/510 CFNetwork/758.4.3 Darwin/15.5.0
+         *      Shadowrocket/510 CFNetwork/897.15 Darwin/17.5.0
+         *      Shadowrocket/2.1.11 (iPhone; iOS 10.3.3; Scale/3.00)
+         *      Shadowrocket/2.1.10 (iPhone; iOS 11.1.2; Scale/2.00)
+         *      Shadowrocket/2.1.12 (iPhone; iOS 10.3.2; Scale/3.00)
+         *      Mozilla/5.0 (iPhone; CPU iPhone OS 8_4 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12H143 Safari/600.1.4
+         * ShadowsocksR win版:
+         *      Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.3319.102 Safari/537.36
+         *      Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36
+         *      Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko
+         * 梅林固件:
+         *      curl/7.21.7 (arm-unknown-linux-gnu) libcurl/7.54.1 OpenSSL/1.0.2n zlib/1.2.5
+         *      curl/7.21.7 (arm-unknown-linux-gnu) libcurl/7.54.1 OpenSSL/1.0.2l zlib/1.2.5
+         *  curl/7.59.0
+         * curl/7.60.0
+         * curl/7.37.1
+         * Mac SSR:
+         *      ShadowsocksX-NG-R
+         *      ShadowsocksX-NG-R 1.4.1-R8 Version 4
+         *      ShadowsocksX-NG-R 1.4.3-R8 Version 2
+         *      ShadowsocksX-NG-R 1.4.3-R8 Version 3
+         *      Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36
+         *      Mozilla/5.0 (Linux; Android 8.0.0; BLA-AL00 Build/HUAWEIBLA-AL00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/62.0.3202.84 Mobile Safari/537.36 MicroMessenger/6.6.1.1220(0x26060135) NetType/4G Language/zh_CN
+         * 带Cloudflare CDN:Cf-Connecting-Ip Cf-Ray Cf-Visitor
          */
 
         $config = $this->systemConfig();

+ 3 - 1
app/Console/Commands/AutoDecGoodsTrafficJob.php

@@ -24,8 +24,9 @@ class AutoDecGoodsTrafficJob extends Command
     {
         $orderList = Order::query()->with(['user', 'goods'])->where('status', 2)->where('is_expire', 0)->get();
         if (!$orderList->isEmpty()) {
-            // 用户默认标签
             $config = $this->systemConfig();
+
+            // 用户默认标签
             $defaultLabels = [];
             if ($config['initial_labels_for_user']) {
                 $defaultLabels = explode(',', $config['initial_labels_for_user']);
@@ -53,6 +54,7 @@ class AutoDecGoodsTrafficJob extends Command
 
                     // 合并默认标签
                     $labels = $defaultLabels ? array_merge($goodsLabels, $defaultLabels) : $goodsLabels;
+                    $labels = array_unique($labels); // 去重
                     foreach ($labels as $vo) {
                         $userLabel = new UserLabel();
                         $userLabel->user_id = $order->user->id;

+ 8 - 8
app/Console/Commands/AutoDisableExpireUserJob.php

@@ -20,17 +20,17 @@ class autoDisableExpireUserJob extends Command
     public function handle()
     {
         // 到期账号禁用
-      $config = $this->systemConfig();
-      if ($config['is_ban_status']) {
-        User::query()->where('enable', 1)->where('expire_time', '<=', date('Y-m-d'))->update(['enable' => 0, 'status' => -1]);
-      }
-      else{
-        User::query()->where('enable', 1)->where('expire_time', '<=', date('Y-m-d'))->update(['enable' => 0]);
-      }
+        $config = $this->systemConfig();
+
+        if ($config['is_ban_status']) {
+            User::query()->where('enable', 1)->where('expire_time', '<=', date('Y-m-d'))->update(['enable' => 0, 'status' => -1]);
+        } else {
+            User::query()->where('enable', 1)->where('expire_time', '<=', date('Y-m-d'))->update(['enable' => 0]);
+        }
 
         Log::info('定时任务:' . $this->description);
     }
-  
+
     // 系统配置
     private function systemConfig()
     {

+ 1 - 0
app/Console/Commands/AutoRegetPortJob.php

@@ -26,6 +26,7 @@ class AutoRegetPortJob extends Command
             if (!$userList->isEmpty()) {
                 foreach ($userList as $user) {
                     $port = $config['is_rand_port'] ? $this->getRandPort() : $this->getOnlyPort();
+
                     User::query()->where('id', $user->id)->update(['port' => $port]);
                 }
             }

+ 1 - 0
app/Console/Commands/AutoReopenUserJob.php

@@ -32,6 +32,7 @@ class AutoReopenUserJob extends Command
 
         // SSR(R)被启用说明用户购买了流量
         User::query()->where('enable', 1)->where('ban_time', -1)->update(['ban_time' => 0]); // 重置ban_time
+
         $userList = User::query()->where('status', '>=', 0)->where('enable', 0)->where('ban_time', -1)->whereRaw("u + d < transfer_enable")->get();
         if (!$userList->isEmpty()) {
             foreach ($userList as $user) {

+ 54 - 61
app/Http/Controllers/AdminController.php

@@ -9,7 +9,6 @@ use App\Http\Models\Invite;
 use App\Http\Models\Label;
 use App\Http\Models\Level;
 use App\Http\Models\Order;
-use App\Http\Models\OrderGoods;
 use App\Http\Models\ReferralApply;
 use App\Http\Models\ReferralLog;
 use App\Http\Models\SsConfig;
@@ -495,6 +494,18 @@ class AdminController extends Controller
                 return Response::json(['status' => 'fail', 'data' => '', 'message' => '添加失败:IPv6地址不合法']);
             }
 
+            if ($request->get('server')) {
+                $domain = $request->get('server');
+                $domain = explode('.', $domain);
+                $domainSuffix = end($domain); // 取得域名后缀
+
+                if (!in_array($domainSuffix, \config('domains'))) {
+                    return Response::json(['status' => 'fail', 'data' => '', 'message' => '绑定域名不合法']);
+                }
+            }
+
+            // TODO:判断是否已存在绑定了相同域名的节点,提示是否要强制替换,或者不提示之前强制将其他节点的绑定域名置为空,然后发起域名绑定请求,或者请求进入队列
+
             DB::beginTransaction();
             try {
                 $ssNode = new SsNode();
@@ -574,90 +585,72 @@ class AdminController extends Controller
         $id = $request->get('id');
 
         if ($request->method() == 'POST') {
-            $name = $request->get('name');
-            $labels = $request->get('labels');
-            $group_id = $request->get('group_id', 0);
-            $country_code = $request->get('country_code', 'un');
-            $server = $request->get('server', '');
-            $ip = $request->get('ip');
-            $ipv6 = $request->get('ipv6');
-            $desc = $request->get('desc', '');
-            $method = $request->get('method');
-            $protocol = $request->get('protocol');
-            $protocol_param = $request->get('protocol_param');
-            $obfs = $request->get('obfs');
-            $obfs_param = $request->get('obfs_param');
-            $traffic_rate = $request->get('traffic_rate');
-            $bandwidth = $request->get('bandwidth');
-            $traffic = $request->get('traffic');
-            $monitor_url = $request->get('monitor_url');
-            $is_subscribe = $request->get('is_subscribe', 1);
-            $compatible = $request->get('compatible');
-            $single = $request->get('single', 0);
-            $single_force = $request->get('single_force');
-            $single_port = $request->get('single_port');
-            $single_passwd = $request->get('single_passwd');
-            $single_method = $request->get('single_method');
-            $single_protocol = $request->get('single_protocol');
-            $single_obfs = $request->get('single_obfs');
-            $sort = $request->get('sort');
-            $status = $request->get('status');
-
-            if (false === filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {
+            if (false === filter_var($request->get('ip'), FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {
                 return Response::json(['status' => 'fail', 'data' => '', 'message' => '添加失败:IPv4地址不合法']);
             }
 
-            if ($request->get('ipv6') && false === filter_var($ipv6, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) {
+            if ($request->get('ipv6') && false === filter_var($request->get('ipv6'), FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) {
                 return Response::json(['status' => 'fail', 'data' => '', 'message' => '添加失败:IPv6地址不合法']);
             }
 
+            if ($request->get('server')) {
+                $domain = $request->get('server');
+                $domain = explode('.', $domain);
+                $domainSuffix = end($domain); // 取得域名后缀
+
+                if (!in_array($domainSuffix, \config('domains'))) {
+                    return Response::json(['status' => 'fail', 'data' => '', 'message' => '绑定域名不合法']);
+                }
+            }
+
             DB::beginTransaction();
             try {
                 $data = [
-                    'name'            => $name,
-                    'group_id'        => $group_id,
-                    'country_code'    => $country_code,
-                    'server'          => $server,
-                    'ip'              => $ip,
-                    'ipv6'            => $ipv6,
-                    'desc'            => $desc,
-                    'method'          => $method,
-                    'protocol'        => $protocol,
-                    'protocol_param'  => $protocol_param,
-                    'obfs'            => $obfs,
-                    'obfs_param'      => $obfs_param,
-                    'traffic_rate'    => $traffic_rate,
-                    'bandwidth'       => $bandwidth,
-                    'traffic'         => $traffic,
-                    'monitor_url'     => $monitor_url,
-                    'is_subscribe'    => $is_subscribe,
-                    'compatible'      => $compatible,
-                    'single'          => $single,
-                    'single_force'    => $single ? $single_force : 0,
-                    'single_port'     => $single ? $single_port : '',
-                    'single_passwd'   => $single ? $single_passwd : '',
-                    'single_method'   => $single ? $single_method : '',
-                    'single_protocol' => $single ? $single_protocol : '',
-                    'single_obfs'     => $single ? $single_obfs : '',
-                    'sort'            => $sort,
-                    'status'          => $status
+                    'name'            => $request->get('name'),
+                    'group_id'        => $request->get('group_id', 0),
+                    'country_code'    => $request->get('country_code', 'un'),
+                    'server'          => $request->get('server', ''),
+                    'ip'              => $request->get('ip'),
+                    'ipv6'            => $request->get('ipv6', ''),
+                    'desc'            => $request->get('desc', ''),
+                    'method'          => $request->get('method'),
+                    'protocol'        => $request->get('protocol'),
+                    'protocol_param'  => $request->get('protocol_param'),
+                    'obfs'            => $request->get('obfs'),
+                    'obfs_param'      => $request->get('obfs_param'),
+                    'traffic_rate'    => $request->get('traffic_rate'),
+                    'bandwidth'       => $request->get('bandwidth'),
+                    'traffic'         => $request->get('traffic'),
+                    'monitor_url'     => $request->get('monitor_url'),
+                    'is_subscribe'    => $request->get('is_subscribe', 1),
+                    'compatible'      => $request->get('compatible'),
+                    'single'          => $request->get('single', 0),
+                    'single_force'    => $request->get('single') ? $request->get('single_force') : 0,
+                    'single_port'     => $request->get('single') ? $request->get('single_port') : '',
+                    'single_passwd'   => $request->get('single') ? $request->get('single_passwd') : '',
+                    'single_method'   => $request->get('single') ? $request->get('single_method') : '',
+                    'single_protocol' => $request->get('single') ? $request->get('single_protocol') : '',
+                    'single_obfs'     => $request->get('single') ? $request->get('single_obfs') : '',
+                    'sort'            => $request->get('sort', 0),
+                    'status'          => $request->get('status')
                 ];
 
                 SsNode::query()->where('id', $id)->update($data);
 
                 // 建立分组关联
-                if ($group_id) {
+                if ($request->get('group_id')) {
                     // 先删除该节点所有关联
                     SsGroupNode::query()->where('node_id', $id)->delete();
 
                     // 建立关联
                     $ssGroupNode = new SsGroupNode();
-                    $ssGroupNode->group_id = $group_id;
+                    $ssGroupNode->group_id = $request->get('group_id');
                     $ssGroupNode->node_id = $id;
                     $ssGroupNode->save();
                 }
 
                 // 生成节点标签
+                $labels = $request->get('labels');
                 SsNodeLabel::query()->where('node_id', $id)->delete(); // 删除所有该节点的标签
                 if (!empty($labels)) {
                     foreach ($labels as $label) {

+ 2 - 0
app/Http/Controllers/SubscribeController.php

@@ -45,6 +45,8 @@ class SubscribeController extends Controller
             exit($this->noneNode());
         }
 
+        // TODO:需要加入防探测机制
+
         // 更新访问次数
         $subscribe->increment('times', 1);
 

+ 1 - 0
composer.json

@@ -14,6 +14,7 @@
         "maatwebsite/excel": "~2.1.0",
         "mews/captcha": "^2.1",
         "mews/purifier": "^2.0",
+        "openlss/lib-array2xml": "^0.5.1",
         "overtrue/laravel-lang": "~3.0",
         "paypal/rest-api-sdk-php": "*",
         "youzan/open-sdk": "^1.0"

+ 51 - 2
composer.lock

@@ -1,10 +1,10 @@
 {
     "_readme": [
         "This file locks the dependencies of your project to a known state",
-        "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
+        "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
     ],
-    "content-hash": "ae800cd483f8bd48860981b10cf83432",
+    "content-hash": "ed05dd5d06cf68df91ee4f5973fd5fdb",
     "packages": [
         {
             "name": "barryvdh/laravel-ide-helper",
@@ -1644,6 +1644,55 @@
             ],
             "time": "2017-06-28T20:53:48+00:00"
         },
+        {
+            "name": "openlss/lib-array2xml",
+            "version": "0.5.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/nullivex/lib-array2xml.git",
+                "reference": "c8b5998a342d7861f2e921403f44e0a2f3ef2be0"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://files.phpcomposer.com/files/nullivex/lib-array2xml/c8b5998a342d7861f2e921403f44e0a2f3ef2be0.zip",
+                "reference": "c8b5998a342d7861f2e921403f44e0a2f3ef2be0",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.2"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-0": {
+                    "LSS": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "Apache-2.0"
+            ],
+            "authors": [
+                {
+                    "name": "Bryan Tong",
+                    "email": "[email protected]",
+                    "homepage": "http://bryantong.com"
+                },
+                {
+                    "name": "Tony Butler",
+                    "email": "[email protected]",
+                    "homepage": "http://openlss.org"
+                }
+            ],
+            "description": "Array2XML conversion library credit to lalit.org",
+            "homepage": "http://openlss.org",
+            "keywords": [
+                "array",
+                "array conversion",
+                "xml",
+                "xml conversion"
+            ],
+            "time": "2016-11-10T19:10:18+00:00"
+        },
         {
             "name": "overtrue/laravel-lang",
             "version": "3.0.8",

+ 37 - 0
config/domains.php

@@ -0,0 +1,37 @@
+<?php
+
+// 常见域名后缀
+return [
+    'com', 'net', 'org', 'couk', 'io', 'computer', 'ac', 'academy', 'actor', 'ae', 'aero', 'af', 'ag', 'agency',
+    'ai', 'am', 'archi', 'arpa', 'as', 'asia', 'associates', 'at', 'au', 'aw', 'ax', 'az', 'bar', 'bargains',
+    'bayern', 'be', 'berlin', 'bg', 'bi', 'bike', 'biz', 'bj', 'blackfriday', 'bn', 'boutique', 'build', 'builders',
+    'bw', 'by', 'ca', 'cab', 'camera', 'camp', 'capital', 'cards', 'careers', 'cat', 'catering', 'cc', 'center',
+    'ceo', 'cf', 'ch', 'cheap', 'christmas', 'ci', 'cl', 'cleaning', 'clothing', 'club', 'cn', 'co', 'codes',
+    'coffee', 'college', 'cologne', 'community', 'company', 'construction', 'contractors', 'cooking', 'cool',
+    'coop', 'country', 'cruises', 'cx', 'cz', 'dating', 'de', 'democrat', 'desi', 'diamonds', 'directory', 'dk',
+    'dm', 'domains', 'dz', 'ec', 'edu', 'education', 'ee', 'email', 'engineering', 'enterprises', 'equipment',
+    'es', 'estate', 'eu', 'eus', 'events', 'expert', 'exposed', 'farm', 'feedback', 'fi', 'fish', 'fishing',
+    'flights', 'florist', 'fo', 'foo', 'foundation', 'fr', 'frogans', 'futbol', 'ga', 'gal', 'gd', 'gg', 'gi',
+    'gift', 'gl', 'glass', 'gop', 'gov', 'graphics', 'gripe', 'gs', 'guitars', 'guru', 'gy', 'haus', 'hk', 'hn',
+    'holiday', 'horse', 'house', 'hr', 'ht', 'hu', 'id', 'ie', 'il', 'im', 'immobilien', 'in', 'industries',
+    'institute', 'int', 'international', 'iq', 'ir', 'is', 'it', 'je', 'jobs', 'jp', 'kaufen', 'ke', 'kg', 'ki',
+    'kitchen', 'kiwi', 'koeln', 'kr', 'kz', 'la', 'land', 'lease', 'li', 'lighting', 'limo', 'link', 'london',
+    'lt', 'lu', 'luxury', 'lv', 'ly', 'ma', 'management', 'mango', 'marketing', 'md', 'me', 'media', 'menu', 'mg',
+    'miami', 'mk', 'ml', 'mn', 'mo', 'mobi', 'moda', 'monash', 'mp', 'ms', 'mu', 'museum', 'mx', 'my', 'na', 'name',
+    'nc', 'nf', 'ng', 'ninja', 'nl', 'no', 'nu', 'nz', 'om', 'onl', 'paris', 'partners', 'parts', 'pe', 'pf',
+    'photo', 'photography', 'photos', 'pics', 'pictures', 'pl', 'plumbing', 'pm', 'post', 'pr', 'pro', 'productions',
+    'properties', 'pt', 'pub', 'pw', 'qa', 'quebec', 're', 'recipes', 'reisen', 'rentals', 'repair', 'report',
+    'rest', 'reviews', 'rich', 'ro', 'rocks', 'rodeo', 'rs', 'ru', 'ruhr', 'sa', 'saarland', 'sb', 'sc', 'se',
+    'services', 'sexy', 'sg', 'sh', 'shoes', 'si', 'singles', 'sk', 'sm', 'sn', 'so', 'social', 'solar', 'solutions',
+    'soy', 'st', 'su', 'supplies', 'supply', 'support', 'sx', 'sy', 'systems', 'tattoo', 'tc', 'technology', 'tel',
+    'tf', 'th', 'tienda', 'tips', 'tk', 'tl', 'tm', 'tn', 'to', 'today', 'tools', 'town', 'toys', 'tr', 'training',
+    'travel', 'tv', 'tw', 'tz', 'ua', 'ug', 'uk', 'university', 'us', 'uy', 'black', 'blue', 'info', 'kim', 'pink',
+    'red', 'shiksha', 'uz', 'vacations', 'vc', 've', 'vegas', 'ventures', 'vg', 'viajes', 'villas', 'vision', 'vodka',
+    'voting', 'voyage', 'vu', 'wang', 'watch', 'wed', 'wf', 'wien', 'wiki', 'works', 'ws', 'xxx', 'xyz', 'yt', 'za',
+    'zm', 'zone', 'dj', 'do', 'eg', 'eh', 'er', 'et', 'fj', 'fk', 'fm', 'gallery', 'gb', 'ge', 'gf', 'gh', 'gm',
+    'gn', 'gp', 'gq', 'gr', 'gt', 'gu', 'gw', 'hm', 'jetzt', 'jm', 'jo', 'kh', 'km', 'kn', 'kp', 'kred', 'kw', 'ky',
+    'lb', 'lk', 'lr', 'ls', 'mc', 'mf', 'mh', 'mil', 'mm', 'moe', 'mq', 'mr', 'mt', 'mv', 'mw', 'mz', 'nagoya', 'ne',
+    'neustar', 'ni', 'np', 'nr', 'nyc', 'okinawa', 'pa', 'pg', 'ph', 'pk', 'pn', 'ps', 'py', 'qpon', 'ren', 'rw',
+    'sd', 'sj', 'sl', 'sohu', 'sr', 'ss', 'sv', 'sz', 'td', 'tg', 'tj', 'tokyo', 'tp', 'trade', 'tt', 'um', 'uno',
+    'va', 'vi', 'vi', 'vn', 'webcam', 'ye', 'yokohoma', 'ryukyu', 'meet', 'vote', 'lc', 'voto', 'wed', 'zw'
+];

+ 1 - 1
resources/views/admin/addNode.blade.php

@@ -39,7 +39,7 @@
                                                         </div>
                                                     </div>
                                                     <div class="form-group">
-                                                        <label for="server" class="col-md-3 control-label"> 域名地址 </label>
+                                                        <label for="server" class="col-md-3 control-label"> 绑定域名 </label>
                                                         <div class="col-md-8">
                                                             <input type="text" class="form-control" name="server" id="server" placeholder="服务器域名地址,填则优先取域名地址">
                                                         </div>

+ 1 - 1
resources/views/admin/editNode.blade.php

@@ -37,7 +37,7 @@
                                                         </div>
                                                     </div>
                                                     <div class="form-group">
-                                                        <label for="server" class="col-md-3 control-label"> 域名地址 </label>
+                                                        <label for="server" class="col-md-3 control-label"> 绑定域名 </label>
                                                         <div class="col-md-8">
                                                             <input type="text" class="form-control" name="server" value="{{$node->server}}" id="server" placeholder="服务器域名地址,填则优先取域名地址">
                                                         </div>

+ 3 - 3
resources/views/admin/nodeList.blade.php

@@ -39,9 +39,9 @@
                                 <tr>
                                     <th> <span class="node-id"><a href="javascript:showIdTips();">ID</a></span> </th>
                                     <th> 节点名称 </th>
-                                    <th> 域名 </th>
                                     <th> IP </th>
-                                    <th> 负载 </th>
+                                    <th> 绑定域名 </th>
+                                    <th> 状态 </th>
                                     <th> 在线 </th>
                                     <th> <span class="node-flow"><a href="javascript:showFlowTips();">产生流量</a></span> </th>
                                     <th> 流量比例 </th>
@@ -59,8 +59,8 @@
                                             <tr class="odd gradeX">
                                                 <td> {{$node->id}} </td>
                                                 <td> <span class="label {{$node->status ? 'label-danger' : 'label-default'}}" title="维护中">{{$node->name}}</span> </td>
-                                                <td> <span class="label {{$node->status ? 'label-danger' : 'label-default'}}">{{$node->server}}</span> </td>
                                                 <td> <span class="label {{$node->status ? 'label-danger' : 'label-default'}}">{{$node->ip}}</span> </td>
+                                                <td> <span class="label {{$node->status ? 'label-danger' : 'label-default'}}">{{$node->server}}</span> </td>
                                                 <td> <span class="label {{$node->status ? 'label-danger' : 'label-default'}}">{{$node->load}}</span> </td>
                                                 <td> <span class="label {{$node->status ? 'label-danger' : 'label-default'}}">{{$node->online_users}}</span> </td>
                                                 <td> {{$node->transfer}} </td>

+ 3 - 3
resources/views/admin/userList.blade.php

@@ -46,9 +46,9 @@
                                     <option value="" @if(Request::get('pay_way') == '') selected @endif>付费方式</option>
                                     <option value="0" @if(Request::get('pay_way') == '0') selected @endif>免费</option>
                                     <option value="1" @if(Request::get('pay_way') == '1') selected @endif>月付</option>
-                                    <option value="2" @if(Request::get('pay_way') == '2') selected @endif>半年付</option>
-                                    <option value="3" @if(Request::get('pay_way') == '3') selected @endif>年付</option>
-                                    <option value="4" @if(Request::get('pay_way') == '4') selected @endif>其他</option>
+                                    <option value="2" @if(Request::get('pay_way') == '2') selected @endif>付</option>
+                                    <option value="3" @if(Request::get('pay_way') == '3') selected @endif>年付</option>
+                                    <option value="4" @if(Request::get('pay_way') == '4') selected @endif>年付</option>
                                 </select>
                             </div>
                             <div class="col-md-2 col-sm-2">