增加 获取服务器列表
This commit is contained in:
parent
5a1356e26f
commit
4579c2c4b5
@ -1,105 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Remote;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Requests\Remote\Server\StatusRequest;
|
||||
use App\Models\Server\Status;
|
||||
use Illuminate\Support\Facades\Cache;
|
||||
|
||||
class ServerController extends Controller
|
||||
{
|
||||
// protected $cache;
|
||||
|
||||
// public function __construct() {
|
||||
// $this->cache = Cache::tags(['remote']);
|
||||
|
||||
// // 临时修改 prefix
|
||||
// $this->cache->setPrefix('remote_' . auth('remote')->id());
|
||||
// }
|
||||
|
||||
// public function all() {
|
||||
// return $this->cache->get('servers', function () {
|
||||
// return [];
|
||||
// });
|
||||
// }
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
// //
|
||||
// $servers = $this->cache->get('servers', function () {
|
||||
// return [];
|
||||
// });
|
||||
|
||||
$servers = Status::module()->get();
|
||||
|
||||
return $this->success($servers);
|
||||
}
|
||||
|
||||
/**
|
||||
* Store a newly created resource in storage.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function store(Request $request, Status $server)
|
||||
{
|
||||
//
|
||||
$request->validate([
|
||||
'name' => 'required|string',
|
||||
'ip' => 'sometimes|ip',
|
||||
// status only allow online or offline
|
||||
'status' => 'required|in:online,offline,maintenance',
|
||||
]);
|
||||
|
||||
$server = $server->create([
|
||||
'name' => $request->name,
|
||||
'ip' => $request->ip,
|
||||
'status' => $request->status,
|
||||
'module_id' => auth('remote')->id()
|
||||
]);
|
||||
|
||||
return $this->success($server);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Update the specified resource in storage.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param int $id
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function update(StatusRequest $request, Status $server)
|
||||
{
|
||||
// only allow name,ip,status
|
||||
$request->validate([
|
||||
'name' => 'sometimes|string',
|
||||
'ip' => 'sometimes|ip',
|
||||
'status' => 'sometimes|in:online,offline,maintenance',
|
||||
]);
|
||||
|
||||
$server->update($request->only(['name', 'ip', 'status']));
|
||||
|
||||
return $this->updated($server);
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the specified resource from storage.
|
||||
*
|
||||
* @param int $id
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function destroy(Status $status)
|
||||
{
|
||||
// delete
|
||||
$status->provider()->delete();
|
||||
return $this->deleted();
|
||||
|
||||
}
|
||||
}
|
@ -7,61 +7,7 @@
|
||||
|
||||
class ServerController extends Controller
|
||||
{
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
// get all servers from cache
|
||||
// $servers = Cache::remember('servers', now()->addMinutes(5), function () {
|
||||
// return \App\Models\Server::all();
|
||||
// });
|
||||
}
|
||||
|
||||
/**
|
||||
* Store a newly created resource in storage.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function store(Request $request)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Display the specified resource.
|
||||
*
|
||||
* @param int $id
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function show($id)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the specified resource in storage.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param int $id
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function update(Request $request, $id)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the specified resource from storage.
|
||||
*
|
||||
* @param int $id
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function destroy($id)
|
||||
{
|
||||
//
|
||||
public function __invoke() {
|
||||
return $this->success(Cache::get('servers', []));
|
||||
}
|
||||
}
|
||||
|
@ -34,20 +34,35 @@ public function __construct()
|
||||
public function handle()
|
||||
{
|
||||
//
|
||||
Module::whereNotNull('url')->chunk(100, function ($modules) {
|
||||
Module::whereNotNull('url')->chunk(100, function ($modules) {
|
||||
$servers = [];
|
||||
|
||||
foreach ($modules as $module) {
|
||||
$http = Http::remote($module->api_token, $module->url);
|
||||
// dd($module->url);
|
||||
$response = $http->get('remote');
|
||||
|
||||
if ($response->successful()) {
|
||||
Cache::set('module_' . $module->id, $response->status());
|
||||
$json = $response->json();
|
||||
|
||||
if (isset($json['data']['servers'])) {
|
||||
// 只保留 name, status
|
||||
$servers = array_merge($servers, array_map(function ($server) {
|
||||
return [
|
||||
'name' => $server['name'],
|
||||
'status' => $server['status'],
|
||||
'updated_at' => $server['updated_at'],
|
||||
];
|
||||
}, $json['data']['servers']));
|
||||
}
|
||||
// $module->update([
|
||||
// 'data' => $response->json()
|
||||
// ]);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Cache servers
|
||||
Cache::put('servers', $servers, now()->addMinutes(10));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -1,43 +0,0 @@
|
||||
<?php
|
||||
|
||||
use App\Models\Module\Provider;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('server_status', function (Blueprint $table) {
|
||||
$table->id();
|
||||
|
||||
$table->string('name');
|
||||
|
||||
$table->string('ip')->nullable();
|
||||
|
||||
$table->string('status');
|
||||
|
||||
$table->string('module_id')->index();
|
||||
$table->foreign('module_id')->references('id')->on('modules')->onDelete('cascade');
|
||||
|
||||
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::dropIfExists('server_status');
|
||||
}
|
||||
};
|
@ -4,12 +4,14 @@
|
||||
use App\Http\Controllers\User\DropController;
|
||||
use App\Http\Controllers\User\TaskController;
|
||||
use App\Http\Controllers\Remote\ModuleController;
|
||||
use App\Http\Controllers\ServerController;
|
||||
use App\Http\Controllers\UserController;
|
||||
use App\Http\Controllers\User\WorkOrder\ReplyController;
|
||||
use App\Http\Controllers\User\WorkOrder\WorkOrderController;
|
||||
|
||||
Route::name('api.')->middleware(['api', 'auth:sanctum'])->group(function () {
|
||||
Route::apiResource('users', UserController::class);
|
||||
Route::get('servers', ServerController::class);
|
||||
|
||||
|
||||
Route::apiResource('drops', DropController::class);
|
||||
|
Loading…
Reference in New Issue
Block a user