Pārlūkot izejas kodu

节点订阅功能&配置

bingo 8 gadi atpakaļ
vecāks
revīzija
59af7968df

+ 4 - 6
app/Http/Controllers/SubscribeController.php

@@ -65,10 +65,10 @@ class SubscribeController extends BaseController
 
         $node_ids = SsGroupNode::whereIn('group_id', $group_ids)->select(['node_id'])->get();
         $nodeList = SsNode::whereIn('id', $node_ids)->get();
-        $scheme = '';
+        $scheme = self::$config['subscribe_max'] > 0 ? 'MAX=' . self::$config['subscribe_max'] . "\n" : '';
         foreach ($nodeList as $node) {
             $obfs_param = $user->obfs_param ? $this->base64url_encode($user->obfs_param) : '';
-            //$protocol_param = $user->protocol_param ? $this->base64url_encode($user->protocol_param) : '';
+            $protocol_param = $user->protocol_param ? $this->base64url_encode($user->protocol_param) : '';
 
             // 生成ssr scheme
             $ssr_str = '';
@@ -76,16 +76,14 @@ class SubscribeController extends BaseController
             $ssr_str .= ':' . $user->protocol . ':' . $user->method;
             $ssr_str .= ':' . $user->obfs . ':' . $this->base64url_encode($user->passwd);
             $ssr_str .= '/?obfsparam=' . $obfs_param;
-            //$ssr_str .= '&protoparam=' . $protocol_param;
+            $ssr_str .= '&protoparam=' . $protocol_param;
             $ssr_str .= '&remarks=' . $this->base64url_encode($node->name);
             $ssr_str .= '&group=' . $this->base64url_encode('VPN');
-            //$ssr_str .= '&udpport=0';
-            //$ssr_str .= '&uot=0';
             $ssr_str = $this->base64url_encode($ssr_str);
             $scheme .= 'ssr://' . $ssr_str . "\n";
         }
 
-        exit($scheme);
+        exit($this->base64url_encode($scheme));
     }
 
 }

+ 25 - 0
resources/views/admin/system.blade.php

@@ -191,6 +191,18 @@
                                                             <span class="help-block"> 24小时内可以通过邮件激活账号次数 </span>
                                                         </div>
                                                     </div>
+                                                    <div class="form-group">
+                                                        <label for="subscribe_max" class="col-md-2 control-label">订阅节点数</label>
+                                                        <div class="col-md-3">
+                                                            <div class="input-group">
+                                                                <input class="form-control" type="text" name="subscribe_max" value="{{$subscribe_max}}" id="subscribe_max" />
+                                                                <span class="input-group-btn">
+                                                                    <button class="btn btn-success" type="button" onclick="setSubscribeMax()">修改</button>
+                                                                </span>
+                                                            </div>
+                                                            <span class="help-block"> 客户端订阅时随机取得几个节点 </span>
+                                                        </div>
+                                                    </div>
                                                 </div>
                                             </form>
                                         </div>
@@ -644,6 +656,19 @@
             });
         }
 
+        // 设置节点订阅随机展示节点数
+        function setSubscribeMax() {
+            var subscribe_max = $("#subscribe_max").val();
+
+            $.post("{{url('admin/setConfig')}}", {_token:'{{csrf_token()}}', name:'subscribe_max', value:subscribe_max}, function (ret) {
+                if (ret.status == 'success') {
+                    layer.msg(ret.message, function() {
+                        window.location.reload();
+                    });
+                }
+            });
+        }
+
         // 设置流量警告阈值
         function setTrafficWarningPercent() {
             var traffic_warning_percent = $("#traffic_warning_percent").val();

+ 2 - 0
sql/db.sql

@@ -246,6 +246,7 @@ INSERT INTO `config` VALUES ('25', 'expire_warning', 0);
 INSERT INTO `config` VALUES ('26', 'expire_days', 15);
 INSERT INTO `config` VALUES ('27', 'reset_traffic', 1);
 INSERT INTO `config` VALUES ('28', 'default_days', 7);
+INSERT INTO `config` VALUES ('29', 'subscribe_max', 3);
 
 
 -- ----------------------------
@@ -529,6 +530,7 @@ CREATE TABLE `user_subscribe` (
   `code` varchar(255) DEFAULT '' COMMENT '订阅地址唯一识别码',
   `times` int(11) NOT NULL DEFAULT '0' COMMENT '地址请求次数',
   `created_at` datetime DEFAULT NULL COMMENT '创建时间',
+  `updated_at` datetime DEFAULT NULL COMMENT '最后更新时间',
   PRIMARY KEY (`id`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
 

+ 2 - 0
sql/update/20171019.sql

@@ -1,3 +1,5 @@
 ALTER TABLE `user_subscribe_log`
 ADD COLUMN `request_header` text COMMENT '请求头部信息' AFTER `request_time`;
 
+ALTER TABLE `user_subscribe`
+ADD COLUMN `updated_at` datetime DEFAULT NULL COMMENT '最后更新时间' AFTER `created_at`;