From fb56b30d16269c57ab5f8b9fc7205f3a919f528b Mon Sep 17 00:00:00 2001 From: "iVampireSP.com" Date: Tue, 7 Feb 2023 01:34:57 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=20IP=20Port=20=E6=94=AF?= =?UTF-8?q?=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/Admin/ModuleController.php | 3 ++ app/Models/Module.php | 14 +++++++- ...07_012306_add_ip_port_to_modules_table.php | 32 +++++++++++++++++++ .../views/admin/modules/create.blade.php | 4 +++ resources/views/admin/modules/edit.blade.php | 4 +++ 5 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 database/migrations/2023_02_07_012306_add_ip_port_to_modules_table.php diff --git a/app/Http/Controllers/Admin/ModuleController.php b/app/Http/Controllers/Admin/ModuleController.php index 72d07b3..c3c5308 100644 --- a/app/Http/Controllers/Admin/ModuleController.php +++ b/app/Http/Controllers/Admin/ModuleController.php @@ -54,6 +54,7 @@ public function store(Request $request): RedirectResponse $module->name = $request->input('name'); $module->api_token = $api_token; $module->url = $request->input('url'); + $module->ip_port = $request->input('ip_port'); $module->status = $request->input('status'); $module->wecom_key = $request->input('wecom_key'); @@ -68,6 +69,7 @@ private function rules(): array 'id' => 'required|string|max:255', 'name' => 'required|string|max:255', 'url' => 'required|url', + 'ip_port' => 'nullable|string|max:255', 'status' => 'required|string|in:up,down,maintenance', 'balance' => 'nullable|numeric', 'wecom_key' => 'nullable|string|max:255', @@ -116,6 +118,7 @@ public function update(Request $request, Module $module): RedirectResponse $module->id = $request->input('id'); $module->name = $request->input('name'); $module->url = $request->input('url'); + $module->ip_port = $request->input('ip_port'); $module->status = $request->input('status'); $module->wecom_key = $request->input('wecom_key'); diff --git a/app/Models/Module.php b/app/Models/Module.php index 6f80d90..c9efd6f 100644 --- a/app/Models/Module.php +++ b/app/Models/Module.php @@ -83,7 +83,19 @@ public function remote($func, $requests): array public function http(): PendingRequest { - return Http::module($this->api_token, $this->url.'/remote')->acceptJson()->timeout(5); + $http = Http::module($this->api_token, $this->url.'/remote')->acceptJson()->timeout(5); + + if ($this->ip_port) { + // 如果设置了 ip_port 则使用 ip_port + $http->baseUrl($this->ip_port . '/remote'); + + // 添加 Host 头 + $http->withHeaders([ + 'Host' => parse_url($this->url, PHP_URL_HOST), + ]); + } + + return $http; } private function getResponse(Response $response): array diff --git a/database/migrations/2023_02_07_012306_add_ip_port_to_modules_table.php b/database/migrations/2023_02_07_012306_add_ip_port_to_modules_table.php new file mode 100644 index 0000000..c92eedb --- /dev/null +++ b/database/migrations/2023_02_07_012306_add_ip_port_to_modules_table.php @@ -0,0 +1,32 @@ +string('ip_port')->nullable()->after('url'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down(): void + { + Schema::table('modules', function (Blueprint $table) { + $table->dropColumn('ip_port'); + }); + } +}; diff --git a/resources/views/admin/modules/create.blade.php b/resources/views/admin/modules/create.blade.php index 65fcee8..dd55eb1 100644 --- a/resources/views/admin/modules/create.blade.php +++ b/resources/views/admin/modules/create.blade.php @@ -22,6 +22,10 @@ +
+ + +
diff --git a/resources/views/admin/modules/edit.blade.php b/resources/views/admin/modules/edit.blade.php index 896b391..ce3f9bd 100644 --- a/resources/views/admin/modules/edit.blade.php +++ b/resources/views/admin/modules/edit.blade.php @@ -25,6 +25,10 @@
+
+ + +