Răsfoiți Sursa

加入自定义订阅信息开关(订阅的时候会显示到期时间和剩余流量)

admin 7 ani în urmă
părinte
comite
dfd7f2324e

+ 35 - 1
app/Http/Controllers/SubscribeController.php

@@ -93,6 +93,12 @@ class SubscribeController extends Controller
                 break;
             }
 
+            // 展示到期时间和剩余流量
+            if (self::$systemConfig['is_custom_subscribe']) {
+                $scheme .= $this->expireDate($user);
+                $scheme .= $this->lastTraffic($user);
+            }
+
             // 获取分组名称
             if ($node->type == 1) {
                 $group = SsGroup::query()->where('id', $node['group_id'])->first();
@@ -128,7 +134,7 @@ class SubscribeController extends Controller
                     "tls"  => $node->v2_tls == 1 ? "tls" : ""
                 ];
 
-                $scheme = 'vmess://' . base64url_encode(json_encode($v2_json));
+                $scheme .= 'vmess://' . base64url_encode(json_encode($v2_json));
             }
         }
 
@@ -151,4 +157,32 @@ class SubscribeController extends Controller
     {
         return base64url_encode('ssr://' . base64url_encode('8.8.8.8:8888:origin:none:plain:' . base64url_encode('0000') . '/?obfsparam=&protoparam=&remarks=' . base64url_encode('无可用节点或账号被封禁或订阅被封禁') . '&group=' . base64url_encode('VPN') . '&udpport=0&uot=0') . "\n");
     }
+
+    /**
+     * 过期时间
+     *
+     * @param object $user
+     *
+     * @return string
+     */
+    private function expireDate($user)
+    {
+        $text = '到期时间:' . $user->expire_time;
+
+        return base64url_encode('ssr://' . base64url_encode('8.8.8.8:8888:origin:none:plain:' . base64url_encode('0000') . '/?obfsparam=&protoparam=&remarks=' . base64url_encode($text) . '&group=' . base64url_encode('VPN') . '&udpport=0&uot=0') . "\n");
+    }
+
+    /**
+     * 剩余流量
+     *
+     * @param object $user
+     *
+     * @return string
+     */
+    private function lastTraffic($user)
+    {
+        $text = '剩余流量:' . flowAutoShow($user->transfer_enable - $user->u - $user->d);
+
+        return base64url_encode('ssr://' . base64url_encode('8.8.8.8:8888:origin:none:plain:' . base64url_encode('0000') . '/?obfsparam=&protoparam=&remarks=' . base64url_encode($text) . '&group=' . base64url_encode('VPN') . '&udpport=0&uot=0') . "\n");
+    }
 }

+ 26 - 1
resources/views/admin/system.blade.php

@@ -359,10 +359,20 @@
                                                             <label for="rand_subscribe" class="col-md-3 control-label">随机订阅</label>
                                                             <div class="col-md-9">
                                                                 <input type="checkbox" class="make-switch" @if($rand_subscribe) checked @endif id="rand_subscribe" data-on-color="success" data-off-color="danger" data-on-text="启用" data-off-text="关闭">
-                                                                <span class="help-block"> 启用后,订阅时将随机返回节点信息,否则按节点排序返回 </span>
+                                                                <span class="help-block"> 启用后,订阅时将随机返回节点信息,否则按节点排序返回(仅支持Shadowrocket、Quantumult) </span>
                                                             </div>
                                                         </div>
                                                     </div>
+                                                    <div class="form-group">
+                                                        <div class="col-md-6 col-sm-6 col-xs-12">
+                                                            <label for="is_custom_subscribe" class="col-md-3 control-label">高级订阅</label>
+                                                            <div class="col-md-9">
+                                                                <input type="checkbox" class="make-switch" @if($is_custom_subscribe) checked @endif id="is_custom_subscribe" data-on-color="success" data-off-color="danger" data-on-text="启用" data-off-text="关闭">
+                                                                <span class="help-block"> 启用后,订阅信息顶部将显示过期时间、剩余流量 </span>
+                                                            </div>
+                                                        </div>
+                                                        <div class="col-md-6 col-sm-6 col-xs-12"></div>
+                                                    </div>
                                                 </div>
                                             </form>
                                         </div>
@@ -1171,6 +1181,21 @@
             }
         });
 
+        // 启用、禁用自定义订阅
+        $('#is_custom_subscribe').on({
+            'switchChange.bootstrapSwitch': function(event, state) {
+                var is_custom_subscribe = state ? 1 : 0;
+
+                $.post("{{url('admin/setConfig')}}", {_token:'{{csrf_token()}}', name:'is_custom_subscribe', value:is_custom_subscribe}, function (ret) {
+                    layer.msg(ret.message, {time:1000}, function() {
+                        if (ret.status == 'fail') {
+                            window.location.reload();
+                        }
+                    });
+                });
+            }
+        });
+
         // 启用、禁用PushBear
         $('#is_push_bear').on({
             'switchChange.bootstrapSwitch': function(event, state) {