admin %!s(int64=7) %!d(string=hai) anos
pai
achega
a9eee92b92

+ 8 - 17
app/Http/Controllers/SubscribeController.php

@@ -123,20 +123,20 @@ class SubscribeController extends Controller
         return Response::json(['status' => 'success', 'data' => '', 'message' => '操作成功']);
     }
 
-    // 获取订阅信息
-    public function index(Request $request, $code)
+    // 通过订阅码获取订阅信息
+    public function getSubscribeByCode(Request $request, $code)
     {
         if (empty($code)) {
             return Redirect::to('login');
         }
 
         // 校验合法性
-        $subscribe = UserSubscribe::query()->with('user')->where('code', $code)->where('status', 1)->first();
+        $subscribe = UserSubscribe::query()->with('user')->where('status', 1)->where('code', $code)->first();
         if (!$subscribe) {
             exit($this->noneNode());
         }
 
-        $user = User::query()->where('id', $subscribe->user_id)->whereIn('status', [0, 1])->where('enable', 1)->first();
+        $user = User::query()->whereIn('status', [0, 1])->where('enable', 1)->where('id', $subscribe->user_id)->first();
         if (!$user) {
             exit($this->noneNode());
         }
@@ -160,23 +160,14 @@ class SubscribeController extends Controller
             $query->where('ss_node.type', 1);
         }
 
-        $nodeList = $query->where('ss_node.status', 1)
-            ->where('ss_node.is_subscribe', 1)
-            ->whereIn('ss_node_label.label_id', $userLabelIds)
-            ->groupBy('ss_node.id')
-            ->orderBy('ss_node.sort', 'desc')
-            ->orderBy('ss_node.id', 'asc')
-            ->get()
-            ->toArray();
+        $nodeList = $query->where('ss_node.status', 1)->where('ss_node.is_subscribe', 1)->whereIn('ss_node_label.label_id', $userLabelIds)->groupBy('ss_node.id')->orderBy('ss_node.sort', 'desc')->orderBy('ss_node.id', 'asc')->get()->toArray();
         if (empty($nodeList)) {
             exit($this->noneNode());
         }
 
         // 打乱数组
         if (self::$systemConfig['rand_subscribe']) {
-            if (self::$systemConfig['subscribe_max']) {
-                shuffle($nodeList);
-            }
+            shuffle($nodeList);
         }
 
         // 控制客户端最多获取节点数
@@ -226,7 +217,7 @@ class SubscribeController extends Controller
                     "type" => $node['v2_type'],
                     "host" => $node['v2_host'],
                     "path" => $node['v2_path'],
-                    "tls"  => $node['v2_tls'] == 1 ? "tls" : ""
+                    "tls"  => $node['v2_tls'] ? "tls" : ""
                 ];
 
                 $scheme .= 'vmess://' . base64url_encode(json_encode($v2_json)) . "\n";
@@ -250,7 +241,7 @@ class SubscribeController extends Controller
     // 抛出无可用的节点信息,用于兼容防止客户端订阅失败
     private function noneNode()
     {
-        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");
+        return base64url_encode('ssr://' . base64url_encode('1.1.1.1:8888:origin:none:plain:' . base64url_encode('0000') . '/?obfsparam=&protoparam=&remarks=' . base64url_encode('无可用节点或账号被封禁或订阅被封禁') . '&group=' . base64url_encode('错误') . '&udpport=0&uot=0') . "\n");
     }
 
     /**

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

@@ -346,7 +346,7 @@
                                                                         <button class="btn btn-success" type="button" onclick="setSubscribeMax()">修改</button>
                                                                     </span>
                                                                 </div>
-                                                                <span class="help-block"> 客户端订阅时取得几个节点 </span>
+                                                                <span class="help-block"> 客户端订阅时取得几个节点,为0时返回全部节点 </span>
                                                             </div>
                                                         </div>
                                                     </div>
@@ -355,14 +355,14 @@
                                                             <label for="mix_subscribe" class="col-md-3 control-label">混合订阅</label>
                                                             <div class="col-md-9">
                                                                 <input type="checkbox" class="make-switch" @if($mix_subscribe) checked @endif id="mix_subscribe" data-on-color="success" data-off-color="danger" data-on-text="启用" data-off-text="关闭">
-                                                                <span class="help-block"> 启用后,订阅信息中将包含V2Ray节点信息(Vmess) </span>
+                                                                <span class="help-block"> 启用后,订阅信息中将包含V2Ray节点信息(仅支持Shadowrocket、Quantumult、v2rayN) </span>
                                                             </div>
                                                         </div>
                                                         <div class="col-md-6 col-sm-6 col-xs-12">
                                                             <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"> 启用后,订阅时将随机返回节点信息,否则按节点排序返回(仅支持Shadowrocket、Quantumult) </span>
+                                                                <span class="help-block"> 启用后,订阅时将随机返回节点信息,否则按节点排序返回 </span>
                                                             </div>
                                                         </div>
                                                     </div>

+ 95 - 96
resources/views/user/index.blade.php

@@ -52,106 +52,105 @@
                                         <a href="javascript:;" class="btn blue mt-clipboard" data-clipboard-action="copy" data-clipboard-target="#mt-target-1">
                                             {{trans('home.copy_subscribe_address')}}
                                         </a>
-                                    @else
-                                        <h3>{{trans('home.subscribe_baned')}}</h3>
-                                    @endif
-
-                                    <div class="tabbable-line">
-                                        <ul class="nav nav-tabs ">
-                                            <li class="active">
-                                                <a href="#tools1" data-toggle="tab"> <i class="fa fa-apple"></i> Mac </a>
-                                            </li>
-                                            <li>
-                                                <a href="#tools2" data-toggle="tab"> <i class="fa fa-windows"></i> Windows </a>
-                                            </li>
-                                            <li>
-                                                <a href="#tools3" data-toggle="tab"> <i class="fa fa-linux"></i> Linux </a>
-                                            </li>
-                                            <li>
-                                                <a href="#tools4" data-toggle="tab"> <i class="fa fa-apple"></i> iOS </a>
-                                            </li>
-                                            <li>
-                                                <a href="#tools5" data-toggle="tab"> <i class="fa fa-android"></i> Android </a>
-                                            </li>
-                                            <li>
-                                                <a href="#tools6" data-toggle="tab"> <i class="fa fa-gamepad"></i> Games </a>
-                                            </li>
-                                        </ul>
-                                        <div class="tab-content" style="font-size:16px;">
-                                            <div class="tab-pane active" id="tools1">
-                                                <ol>
-                                                    <li> <a href="{{asset('clients/ShadowsocksX-NG-R8-1.4.4.dmg')}}" target="_blank">点击此处</a>下载客户端并启动 </li>
-                                                    <li> 点击状态栏纸飞机 -> 服务器 -> 编辑订阅 </li>
-                                                    <li> 点击窗口左下角 “+”号 新增订阅,完整复制本页上方“订阅服务”处地址,将其粘贴至“订阅地址”栏,点击右下角“OK” </li>
-                                                    <li> 点击纸飞机 -> 服务器 -> 手动更新订阅 </li>
-                                                    <li> 点击纸飞机 -> 服务器,选定合适服务器 </li>
-                                                    <li> 点击纸飞机 -> 打开Shadowsocks </li>
-                                                    <li> 点击纸飞机 -> PAC自动模式 </li>
-                                                    <li> 点击纸飞机 -> 代理设置->从 GFW List 更新 PAC </li>
-                                                    <li> 打开系统偏好设置 -> 网络,在窗口左侧选定显示为“已连接”的网络,点击右下角“高级...” </li>
-                                                    <li> 切换至“代理”选项卡,勾选“自动代理配置”和“不包括简单主机名”,点击右下角“好”,再次点击右下角“应用” </li>
-                                                </ol>
-                                            </div>
-                                            <div class="tab-pane" id="tools2">
-                                                <ol>
-                                                    <li> <a href="{{asset('clients/ShadowsocksR-win.zip')}}" target="_blank">点击此处</a>下载客户端并启动 </li>
-                                                    <li> 运行 ShadowsocksR 文件夹内的 ShadowsocksR.exe </li>
-                                                    <li> 右击桌面右下角状态栏(或系统托盘)纸飞机 -> 服务器订阅 -> SSR服务器订阅设置 </li>
-                                                    <li> 点击窗口左下角 “Add” 新增订阅,完整复制本页上方 “订阅服务” 处地址,将其粘贴至“网址”栏,点击“确定” </li>
-                                                    <li> 右击纸飞机 -> 服务器订阅 -> 更新SSR服务器订阅(不通过代理) </li>
-                                                    <li> 右击纸飞机 -> 服务器,选定合适服务器 </li>
-                                                    <li> 右击纸飞机 -> 系统代理模式 -> PAC模式 </li>
-                                                    <li> 右击纸飞机 -> PAC -> 更新PAC为GFWList </li>
-                                                    <li> 右击纸飞机 -> 代理规则 -> 绕过局域网和大陆 </li>
-                                                    <li> 右击纸飞机,取消勾选“服务器负载均衡” </li>
-                                                </ol>
-                                            </div>
-                                            <div class="tab-pane" id="tools3">
-                                                <ol>
-                                                    <li> <a href="{{asset('clients/Shadowsocks-qt5-3.0.1.zip')}}" target="_blank">点击此处</a>下载客户端并启动 </li>
-                                                    <li> 单击状态栏小飞机,找到服务器 -> 编辑订阅,复制黏贴订阅地址 </li>
-                                                    <li> 更新订阅设置即可 </li>
-                                                </ol>
-                                            </div>
-                                            <div class="tab-pane" id="tools4">
-                                                <ol>
-                                                    @if(Agent::is('iPhone') || Agent::is('iPad'))
-                                                        @if(Agent::is('Safari'))
-                                                            <li> <a href="{{$ipa_list}}" target="_blank">点击此处在线安装</a></li>
+                                        <div class="tabbable-line">
+                                            <ul class="nav nav-tabs ">
+                                                <li class="active">
+                                                    <a href="#tools1" data-toggle="tab"> <i class="fa fa-apple"></i> Mac </a>
+                                                </li>
+                                                <li>
+                                                    <a href="#tools2" data-toggle="tab"> <i class="fa fa-windows"></i> Windows </a>
+                                                </li>
+                                                <li>
+                                                    <a href="#tools3" data-toggle="tab"> <i class="fa fa-linux"></i> Linux </a>
+                                                </li>
+                                                <li>
+                                                    <a href="#tools4" data-toggle="tab"> <i class="fa fa-apple"></i> iOS </a>
+                                                </li>
+                                                <li>
+                                                    <a href="#tools5" data-toggle="tab"> <i class="fa fa-android"></i> Android </a>
+                                                </li>
+                                                <li>
+                                                    <a href="#tools6" data-toggle="tab"> <i class="fa fa-gamepad"></i> Games </a>
+                                                </li>
+                                            </ul>
+                                            <div class="tab-content" style="font-size:16px;">
+                                                <div class="tab-pane active" id="tools1">
+                                                    <ol>
+                                                        <li> <a href="{{asset('clients/ShadowsocksX-NG-R8-1.4.4.dmg')}}" target="_blank">点击此处</a>下载客户端并启动 </li>
+                                                        <li> 点击状态栏纸飞机 -> 服务器 -> 编辑订阅 </li>
+                                                        <li> 点击窗口左下角 “+”号 新增订阅,完整复制本页上方“订阅服务”处地址,将其粘贴至“订阅地址”栏,点击右下角“OK” </li>
+                                                        <li> 点击纸飞机 -> 服务器 -> 手动更新订阅 </li>
+                                                        <li> 点击纸飞机 -> 服务器,选定合适服务器 </li>
+                                                        <li> 点击纸飞机 -> 打开Shadowsocks </li>
+                                                        <li> 点击纸飞机 -> PAC自动模式 </li>
+                                                        <li> 点击纸飞机 -> 代理设置->从 GFW List 更新 PAC </li>
+                                                        <li> 打开系统偏好设置 -> 网络,在窗口左侧选定显示为“已连接”的网络,点击右下角“高级...” </li>
+                                                        <li> 切换至“代理”选项卡,勾选“自动代理配置”和“不包括简单主机名”,点击右下角“好”,再次点击右下角“应用” </li>
+                                                    </ol>
+                                                </div>
+                                                <div class="tab-pane" id="tools2">
+                                                    <ol>
+                                                        <li> <a href="{{asset('clients/ShadowsocksR-win.zip')}}" target="_blank">点击此处</a>下载客户端并启动 </li>
+                                                        <li> 运行 ShadowsocksR 文件夹内的 ShadowsocksR.exe </li>
+                                                        <li> 右击桌面右下角状态栏(或系统托盘)纸飞机 -> 服务器订阅 -> SSR服务器订阅设置 </li>
+                                                        <li> 点击窗口左下角 “Add” 新增订阅,完整复制本页上方 “订阅服务” 处地址,将其粘贴至“网址”栏,点击“确定” </li>
+                                                        <li> 右击纸飞机 -> 服务器订阅 -> 更新SSR服务器订阅(不通过代理) </li>
+                                                        <li> 右击纸飞机 -> 服务器,选定合适服务器 </li>
+                                                        <li> 右击纸飞机 -> 系统代理模式 -> PAC模式 </li>
+                                                        <li> 右击纸飞机 -> PAC -> 更新PAC为GFWList </li>
+                                                        <li> 右击纸飞机 -> 代理规则 -> 绕过局域网和大陆 </li>
+                                                        <li> 右击纸飞机,取消勾选“服务器负载均衡” </li>
+                                                    </ol>
+                                                </div>
+                                                <div class="tab-pane" id="tools3">
+                                                    <ol>
+                                                        <li> <a href="{{asset('clients/Shadowsocks-qt5-3.0.1.zip')}}" target="_blank">点击此处</a>下载客户端并启动 </li>
+                                                        <li> 单击状态栏小飞机,找到服务器 -> 编辑订阅,复制黏贴订阅地址 </li>
+                                                        <li> 更新订阅设置即可 </li>
+                                                    </ol>
+                                                </div>
+                                                <div class="tab-pane" id="tools4">
+                                                    <ol>
+                                                        @if(Agent::is('iPhone') || Agent::is('iPad'))
+                                                            @if(Agent::is('Safari'))
+                                                                <li> <a href="{{$ipa_list}}" target="_blank">点击此处在线安装</a></li>
+                                                            @else
+                                                                <li> <a href="javascript:onlineInstallWarning();">点击此处在线安装</a></li>
+                                                            @endif
+                                                            <li> 请从站长处获取 App Store 账号密码 </li>
+                                                            <li> 打开 Shadowrocket,点击右上角 “+”号 添加节点,类型选择 Subscribe </li>
+                                                            <li> 完整复制本页上方 “订阅服务” 处地址,将其粘贴至 “URL”栏,点击右上角 “完成” </li>
+                                                            <li> 左划新增的服务器订阅,点击 “更新” </li>
+                                                            <li> 选定合适服务器节点,点击右上角连接开关,屏幕上方状态栏出现“VPN”图标 </li>
+                                                            <li> 当进行海外游戏时请将 Shadowrocket “首页” 页面中的 “全局路由” 切换至 “代理”,并确保“设置”页面中的“UDP”已开启转发 </li>
                                                         @else
-                                                            <li> <a href="javascript:onlineInstallWarning();">点击此处在线安装</a></li>
+                                                            <li> 请使用 Safari浏览器 访问本页面 </li>
                                                         @endif
-                                                        <li> 请从站长处获取 App Store 账号密码 </li>
-                                                        <li> 打开 Shadowrocket,点击右上角 “+”号 添加节点,类型选择 Subscribe </li>
-                                                        <li> 完整复制本页上方 “订阅服务” 处地址,将其粘贴至 “URL”栏,点击右上角 “完成” </li>
-                                                        <li> 左划新增的服务器订阅,点击 “更新” </li>
-                                                        <li> 选定合适服务器节点,点击右上角连接开关,屏幕上方状态栏出现“VPN”图标 </li>
-                                                        <li> 当进行海外游戏时请将 Shadowrocket “首页” 页面中的 “全局路由” 切换至 “代理”,并确保“设置”页面中的“UDP”已开启转发 </li>
-                                                    @else
-                                                        <li> 请使用 Safari浏览器 访问本页面 </li>
-                                                    @endif
-                                                </ol>
-                                            </div>
-                                            <div class="tab-pane" id="tools5">
-                                                <ol>
-                                                    <li> <a href="{{asset('clients/ShadowsocksRR-3.5.1.1.apk')}}" target="_blank">点击此处</a>下载客户端并启动 </li>
-                                                    <li> 单击左上角的shadowsocksR进入配置文件页,点击右下角的“+”号,点击“添加/升级SSR订阅”,完整复制本页上方“订阅服务”处地址,填入订阅信息并保存 </li>
-                                                    <li> 选中任意一个节点,返回软件首页 </li>
-                                                    <li> 在软件首页处找到“路由”选项,并将其改为“绕过局域网及中国大陆地址” </li>
-                                                    <li> 点击右上角的小飞机图标进行连接,提示是否添加(或创建)VPN连接,点同意(或允许) </li>
-                                                </ol>
-                                            </div>
-                                            <div class="tab-pane" id="tools6">
-                                                <ol>
-                                                    <li> <a href="{{asset('clients/SSTap-beta-setup-1.0.9.7.zip')}}" target="_blank">点击此处</a>下载客户端并安装 </li>
-                                                    <li> 打开 SSTap,选择 <i class="fa fa-cog"></i> -> SSR订阅 -> SSR订阅管理,添加订阅地址 </li>
-                                                    <li> 添加完成后,再次选择 <i class="fa fa-cog"></i> - SSR订阅 - 手动更新SSR订阅,即可同步节点列表。</li>
-                                                    <li> 在代理模式中选择游戏或「不代理中国IP」,点击「连接」即可加速。</li>
-                                                    <li> 需要注意的是,一旦连接成功,客户端会自动缩小到任务栏,可在设置中关闭。</li>
-                                                </ol>
+                                                    </ol>
+                                                </div>
+                                                <div class="tab-pane" id="tools5">
+                                                    <ol>
+                                                        <li> <a href="{{asset('clients/ShadowsocksRR-3.5.1.1.apk')}}" target="_blank">点击此处</a>下载客户端并启动 </li>
+                                                        <li> 单击左上角的shadowsocksR进入配置文件页,点击右下角的“+”号,点击“添加/升级SSR订阅”,完整复制本页上方“订阅服务”处地址,填入订阅信息并保存 </li>
+                                                        <li> 选中任意一个节点,返回软件首页 </li>
+                                                        <li> 在软件首页处找到“路由”选项,并将其改为“绕过局域网及中国大陆地址” </li>
+                                                        <li> 点击右上角的小飞机图标进行连接,提示是否添加(或创建)VPN连接,点同意(或允许) </li>
+                                                    </ol>
+                                                </div>
+                                                <div class="tab-pane" id="tools6">
+                                                    <ol>
+                                                        <li> <a href="{{asset('clients/SSTap-beta-setup-1.0.9.7.zip')}}" target="_blank">点击此处</a>下载客户端并安装 </li>
+                                                        <li> 打开 SSTap,选择 <i class="fa fa-cog"></i> -> SSR订阅 -> SSR订阅管理,添加订阅地址 </li>
+                                                        <li> 添加完成后,再次选择 <i class="fa fa-cog"></i> - SSR订阅 - 手动更新SSR订阅,即可同步节点列表。</li>
+                                                        <li> 在代理模式中选择游戏或「不代理中国IP」,点击「连接」即可加速。</li>
+                                                        <li> 需要注意的是,一旦连接成功,客户端会自动缩小到任务栏,可在设置中关闭。</li>
+                                                    </ol>
+                                                </div>
                                             </div>
                                         </div>
-                                    </div>
+                                    @else
+                                        <h3>{{trans('home.subscribe_baned')}}</h3>
+                                    @endif
                                 </div>
                             </div>
                         </div>

+ 1 - 1
routes/web.php

@@ -1,6 +1,6 @@
 <?php
 
-Route::get('s/{code}', 'SubscribeController@index'); // 节点订阅地址
+Route::get('s/{code}', 'SubscribeController@getSubscribeByCode'); // 节点订阅地址
 
 Route::group(['middleware' => ['isForbidden', 'affiliate']], function () {
     Route::get('lang/{locale}', 'AuthController@switchLang'); // 语言切换