From 667e02460cf9ff1a983a603d2d1ac20169065970 Mon Sep 17 00:00:00 2001 From: xboard Date: Thu, 6 Feb 2025 17:48:17 +0800 Subject: [PATCH 1/4] feat: add traffic.before_process hook --- .../Controllers/V2/Admin/PluginController.php | 15 +++++---------- app/Services/UserService.php | 6 ++++++ 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/app/Http/Controllers/V2/Admin/PluginController.php b/app/Http/Controllers/V2/Admin/PluginController.php index 4be814e..8fcc6f8 100644 --- a/app/Http/Controllers/V2/Admin/PluginController.php +++ b/app/Http/Controllers/V2/Admin/PluginController.php @@ -134,16 +134,11 @@ class PluginController extends Controller 'code' => 'required|string' ]); - try { - $this->pluginManager->disable($request->input('code')); - return response()->json([ - 'message' => '插件禁用成功' - ]); - } catch (\Exception $e) { - return response()->json([ - 'message' => '插件禁用失败:' . $e->getMessage() - ], 400); - } + $this->pluginManager->disable($request->input('code')); + return response()->json([ + 'message' => '插件禁用成功' + ]); + } /** diff --git a/app/Services/UserService.php b/app/Services/UserService.php index 5cb45c5..a733bfc 100644 --- a/app/Services/UserService.php +++ b/app/Services/UserService.php @@ -8,6 +8,7 @@ use App\Jobs\TrafficFetchJob; use App\Models\Order; use App\Models\Plan; use App\Models\User; +use App\Services\Plugin\HookManager; class UserService { @@ -172,6 +173,11 @@ class UserService public function trafficFetch(array $server, string $protocol, array $data) { + list($server, $protocol, $data) = HookManager::filter('traffic.before_process', [ + $server, + $protocol, + $data + ]); $timestamp = strtotime(date('Y-m-d')); collect($data)->chunk(1000)->each(function ($chunk) use ($timestamp, $server, $protocol) { From 7c0434d18267cc87353e5b16f1bd02b3ccac9126 Mon Sep 17 00:00:00 2001 From: xboard Date: Thu, 6 Feb 2025 18:17:16 +0800 Subject: [PATCH 2/4] feat(plugin): add subscribe.url hook --- app/Services/Plugin/HookManager.php | 4 ++-- app/Utils/Helper.php | 11 ++++++++--- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/app/Services/Plugin/HookManager.php b/app/Services/Plugin/HookManager.php index decad6e..4147962 100644 --- a/app/Services/Plugin/HookManager.php +++ b/app/Services/Plugin/HookManager.php @@ -45,9 +45,9 @@ class HookManager * @param mixed ...$args 其他参数 * @return mixed */ - public static function filter(string $hook, mixed $value, mixed ...$args): mixed + public static function filter(string $hook, mixed $value): mixed { - return Eventy::filter($hook, $value, ...$args); + return Eventy::filter($hook, $value); } /** diff --git a/app/Utils/Helper.php b/app/Utils/Helper.php index befc068..a88bc46 100644 --- a/app/Utils/Helper.php +++ b/app/Utils/Helper.php @@ -2,6 +2,9 @@ namespace App\Utils; +use App\Services\Plugin\HookManager; +use Illuminate\Support\Arr; + class Helper { public static function uuidToBase64($uuid, $length) @@ -111,12 +114,14 @@ class Helper public static function getSubscribeUrl(string $token, $subscribeUrl = null) { $path = route('client.subscribe', ['token' => $token], false); - if(!$subscribeUrl){ + if (!$subscribeUrl) { $subscribeUrls = explode(',', admin_setting('subscribe_url')); - $subscribeUrl = \Arr::random($subscribeUrls); + $subscribeUrl = Arr::random($subscribeUrls); $subscribeUrl = self::replaceByPattern($subscribeUrl); } - return $subscribeUrl ? rtrim($subscribeUrl, '/') . $path : url($path); + + $finalUrl = $subscribeUrl ? rtrim($subscribeUrl, '/') . $path : url($path); + return HookManager::filter('subscribe.url', [$finalUrl, $token]); } public static function randomPort($range): int { From 85d834432a48935bb691f2929ef4cb96e43e1b87 Mon Sep 17 00:00:00 2001 From: xboard Date: Thu, 6 Feb 2025 19:04:38 +0800 Subject: [PATCH 3/4] chore: update dockerfile --- Dockerfile | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/Dockerfile b/Dockerfile index e1e4bf6..443b45f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,11 +1,16 @@ FROM phpswoole/swoole:php8.2-alpine COPY --from=mlocati/php-extension-installer /usr/bin/install-php-extensions /usr/local/bin/ -RUN install-php-extensions pcntl bcmath zip redis \ - && apk --no-cache add shadow sqlite mysql-client mysql-client mysql-dev mariadb-connector-c git patch supervisor redis \ - && addgroup -S -g 1000 www && adduser -S -G www -u 1000 www \ - && (getent group redis || addgroup -S redis) \ - && (getent passwd redis || adduser -S -G redis -H -h /data redis) + +# Install PHP extensions one by one with lower optimization level for ARM64 compatibility +RUN CFLAGS="-O1" install-php-extensions pcntl && \ + CFLAGS="-O1" install-php-extensions bcmath && \ + install-php-extensions zip && \ + install-php-extensions redis && \ + apk --no-cache add shadow sqlite mysql-client mysql-dev mariadb-connector-c git patch supervisor redis && \ + addgroup -S -g 1000 www && adduser -S -G www -u 1000 www && \ + (getent group redis || addgroup -S redis) && \ + (getent passwd redis || adduser -S -G redis -H -h /data redis) WORKDIR /www COPY .docker / From 1dfd7fa8c5773b93cbf61a2b21321469dfda8dbe Mon Sep 17 00:00:00 2001 From: xboard Date: Fri, 7 Feb 2025 13:06:01 +0800 Subject: [PATCH 4/4] fix: subscribe.url hook --- app/Utils/Helper.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Utils/Helper.php b/app/Utils/Helper.php index a88bc46..7e187e6 100644 --- a/app/Utils/Helper.php +++ b/app/Utils/Helper.php @@ -121,7 +121,7 @@ class Helper } $finalUrl = $subscribeUrl ? rtrim($subscribeUrl, '/') . $path : url($path); - return HookManager::filter('subscribe.url', [$finalUrl, $token]); + return HookManager::filter('subscribe.url', $finalUrl); } public static function randomPort($range): int {