添加全部节点重载快捷按钮

This commit is contained in:
兔姬桑
2022-09-04 22:42:11 +08:00
parent e58cd84585
commit 85cc6f9959
3 changed files with 53 additions and 37 deletions

View File

@@ -231,21 +231,34 @@ class NodeController extends Controller
}
}
if (! empty($ret)) {
if ($ret) {
return Response::json(['status' => 'success', 'message' => '获取地理位置更新成功!']);
}
return Response::json(['status' => 'fail', 'message' => '获取地理位置更新失败!']);
return Response::json(['status' => 'fail', 'message' => '【存在】获取地理位置更新失败!']);
}
// 重载节点
public function reload(Node $node): JsonResponse
public function reload($id): JsonResponse
{
if (reloadNode::dispatchNow($node)) {
$ret = false;
if ($id) {
$node = Node::findOrFail($id);
$ret = reloadNode::dispatchNow($node);
} else {
foreach (Node::whereStatus(1)->whereType(4)->get() as $node) {
$result = reloadNode::dispatchNow($node);
if ($result && ! $ret) {
$ret = true;
}
}
}
if ($ret) {
return Response::json(['status' => 'success', 'message' => '重载成功!']);
}
return Response::json(['status' => 'fail', 'message' => '重载失败!']);
return Response::json(['status' => 'fail', 'message' => '【存在】重载失败!']);
}
// 节点流量监控

View File

@@ -18,9 +18,16 @@
<h3 class="panel-title">节点列表</h3>
@canany(['admin.node.geo', 'admin.node.create'])
<div class="panel-actions btn-group">
@can('admin.node.reload')
@if($nodeList->where('type',4)->count())
<button type="button" onclick="reload(0)" class="btn btn-info">
<i id="reload_0" class="icon wb-reload" aria-hidden="true"></i> 重载【全部】后端
</button>
@endif
@endcan
@can('admin.node.geo')
<button type="button" onclick="refreshGeo(0)" class="btn btn-info">
<i id="geo0" class="icon wb-map" aria-hidden="true"></i> 刷新【全部】节点地理信息
<button type="button" onclick="refreshGeo(0)" class="btn btn-outline-default">
<i id="geo_0" class="icon wb-map" aria-hidden="true"></i> 刷新【全部】节点地理信息
</button>
@endcan
@can('admin.node.create')
@@ -84,16 +91,15 @@
@endif
@else
@if ($node->status)
{{-- 节点完全不可见 --}}
<i class="red-600 fa-solid fa-cloud-question" aria-hidden="true"></i>
<i class="red-600 fa-solid fa-gear" aria-hidden="true"></i>
@else
{{-- 节点 关闭 --}}
<i class="red-600 fa-solid fa-cloud-exclamation" aria-hidden="true"></i>
<i class="red-600 fa-solid fa-handshake-simple-slash" aria-hidden="true"></i>
@endif
@endif
</td>
<td>
@canany(['admin.node.edit', 'admin.node.destroy', 'admin.node.monitor', 'admin.node.geo', 'admin.node.ping', 'admin.node.check', 'admin.node.reload'])
@canany(['admin.node.edit', 'admin.node.clone', 'admin.node.destroy', 'admin.node.monitor', 'admin.node.geo', 'admin.node.ping', 'admin.node
.check', 'admin.node.reload'])
<button type="button" class="btn btn-primary dropdown-toggle" data-boundary="viewport" data-toggle="dropdown" aria-expanded="false">
<i class="icon wb-wrench" aria-hidden="true"></i>
</button>
@@ -126,19 +132,19 @@
@endcan
@can('admin.node.ping')
<a class="dropdown-item" href="javascript:pingNode('{{$node->id}}')" role="menuitem">
<i id="ping{{$node->id}}" class="icon wb-order" aria-hidden="true"></i> 检测延迟
<i id="ping_{{$node->id}}" class="icon wb-order" aria-hidden="true"></i> 检测延迟
</a>
@endcan
@can('admin.node.check')
<a class="dropdown-item" href="javascript:checkNode('{{$node->id}}')" role="menuitem">
<i id="node{{$node->id}}" class="icon wb-signal" aria-hidden="true"></i> 连通性检测
<i id="node_{{$node->id}}" class="icon wb-signal" aria-hidden="true"></i> 连通性检测
</a>
@endcan
@if($node->type === 4)
@can('admin.node.reload')
<hr/>
<a class="dropdown-item" href="javascript:reload('{{$node->id}}')" role="menuitem">
<i id="reload{{$node->id}}" class="icon wb-reload" aria-hidden="true"></i> 重载后端
<i id="reload_{{$node->id}}" class="icon wb-reload" aria-hidden="true"></i> 重载后端
</a>
@endcan
@endif
@@ -166,8 +172,13 @@
<span class="badge badge-lg badge-danger"><i class="fa-solid fa-store-slash" aria-hidden="true"></i></span>
@endif
</td>
<td colspan="5">
@canany(['admin.node.edit', 'admin.node.destroy', 'admin.node.monitor', 'admin.node.geo', 'admin.node.ping', 'admin.node.check', 'admin.node.reload'])
<td colspan="2">
@if (!$childNode->status || !$node->status)
<i class="red-600 fa-solid fa-handshake-simple-slash" aria-hidden="true"></i>
@endif
</td>
<td colspan="3">
@canany(['admin.node.edit', 'admin.node.clone', 'admin.node.destroy', 'admin.node.monitor', 'admin.node.geo', 'admin.node.ping', 'admin.node.check'])
<button type="button" class="btn btn-primary dropdown-toggle" data-boundary="viewport" data-toggle="dropdown" aria-expanded="false">
<i class="icon wb-wrench" aria-hidden="true"></i>
</button>
@@ -196,27 +207,19 @@
<hr/>
@can('admin.node.geo')
<a class="dropdown-item" href="javascript:refreshGeo('{{$childNode->id}}')" role="menuitem">
<i id="geo{{$childNode->id}}" class="icon wb-map" aria-hidden="true"></i> 刷新地理
<i id="geo_{{$childNode->id}}" class="icon wb-map" aria-hidden="true"></i> 刷新地理
</a>
@endcan
@can('admin.node.ping')
<a class="dropdown-item" href="javascript:pingNode('{{$childNode->id}}')" role="menuitem">
<i id="ping{{$childNode->id}}" class="icon wb-order" aria-hidden="true"></i> 检测延迟
<i id="ping_{{$childNode->id}}" class="icon wb-order" aria-hidden="true"></i> 检测延迟
</a>
@endcan
@can('admin.node.check')
<a class="dropdown-item" href="javascript:checkNode('{{$childNode->id}}')" role="menuitem">
<i id="node{{$childNode->id}}" class="icon wb-signal" aria-hidden="true"></i> 连通性检测
<i id="node_{{$childNode->id}}" class="icon wb-signal" aria-hidden="true"></i> 连通性检测
</a>
@endcan
@if($childNode->type === 4)
@can('admin.node.reload')
<hr/>
<a class="dropdown-item" href="javascript:reload('{{$childNode->id}}')" role="menuitem">
<i id="reload{{$childNode->id}}" class="icon wb-reload" aria-hidden="true"></i> 重载后端
</a>
@endcan
@endif
</div>
@endcan
</td>
@@ -254,7 +257,7 @@
url: '{{route('admin.node.check', '')}}/' + id,
data: {_token: '{{csrf_token()}}'},
beforeSend: function() {
$('#node' + id).removeClass('wb-signal').addClass('wb-loop icon-spin');
$('#node_' + id).removeClass('wb-signal').addClass('wb-loop icon-spin');
},
success: function(ret) {
if (ret.status === 'success') {
@@ -273,7 +276,7 @@
}
},
complete: function() {
$('#node' + id).removeClass('wb-loop icon-spin').addClass('wb-signal');
$('#node_' + id).removeClass('wb-loop icon-spin').addClass('wb-signal');
},
});
}
@@ -287,7 +290,7 @@
url: '{{route('admin.node.ping', '')}}/' + id,
data: {_token: '{{csrf_token()}}'},
beforeSend: function() {
$('#ping' + id).removeClass('wb-order').addClass('wb-loop icon-spin');
$('#ping_' + id).removeClass('wb-order').addClass('wb-loop icon-spin');
},
success: function(ret) {
if (ret.status === 'success') {
@@ -301,7 +304,7 @@
}
},
complete: function() {
$('#ping' + id).removeClass('wb-loop icon-spin').addClass('wb-order');
$('#ping_' + id).removeClass('wb-loop icon-spin').addClass('wb-order');
},
});
}
@@ -323,7 +326,7 @@
url: '{{route('admin.node.reload', '')}}/' + id,
data: {_token: '{{csrf_token()}}'},
beforeSend: function() {
$('#reload' + id).removeClass('wb-reload').addClass('wb-loop icon-spin');
$('#reload_' + id).removeClass('wb-reload').addClass('wb-loop icon-spin');
},
success: function(ret) {
if (ret.status === 'success') {
@@ -333,7 +336,7 @@
}
},
complete: function() {
$('#reload' + id).removeClass('wb-loop icon-spin').addClass('wb-reload');
$('#reload_' + id).removeClass('wb-loop icon-spin').addClass('wb-reload');
},
});
}
@@ -349,7 +352,7 @@
url: '{{route('admin.node.geo', '')}}/' + id,
data: {_token: '{{csrf_token()}}'},
beforeSend: function() {
$('#geo' + id).removeClass('wb-map').addClass('wb-loop icon-spin');
$('#geo_' + id).removeClass('wb-map').addClass('wb-loop icon-spin');
},
success: function(ret) {
if (ret.status === 'success') {
@@ -359,7 +362,7 @@
}
},
complete: function() {
$('#geo' + id).removeClass('wb-loop icon-spin').addClass('wb-map');
$('#geo_' + id).removeClass('wb-loop icon-spin').addClass('wb-map');
},
});
}

View File

@@ -44,7 +44,7 @@ Route::prefix('admin')->name('admin.')->group(function () {
Route::post('check/{node}', 'NodeController@checkNode')->name('check'); // 节点阻断检测
Route::post('ping/{node}', 'NodeController@pingNode')->name('ping'); // 节点ping测速
Route::get('refreshGeo/{id}', 'NodeController@refreshGeo')->name('geo'); // 更新节点
Route::post('reload/{node}', 'NodeController@reload')->name('reload'); // 更新节点
Route::post('reload/{id}', 'NodeController@reload')->name('reload'); // 更新节点
Route::resource('auth', 'NodeAuthController')->except(['create', 'show', 'edit']); // 节点授权相关
Route::resource('cert', 'CertController')->except('show'); // 节点域名tls相关