mirror of
https://github.com/ProxyPanel/ProxyPanel.git
synced 2026-04-11 15:10:54 +00:00
添加节点地图 + 修复系统设置页面元素错误+代码简写规范化
This commit is contained in:
@@ -18,6 +18,7 @@ use App\Models\SsNodeOnlineLog;
|
||||
use App\Models\SsNodePing;
|
||||
use App\Models\SsNodeTrafficDaily;
|
||||
use App\Models\SsNodeTrafficHourly;
|
||||
use App\Models\UserGroup;
|
||||
use App\Models\UserTrafficDaily;
|
||||
use App\Models\UserTrafficHourly;
|
||||
use App\Models\UserTrafficLog;
|
||||
@@ -112,7 +113,7 @@ class NodeController extends Controller {
|
||||
$node->relay_server = $request->input('relay_server');
|
||||
$node->relay_port = $request->input('relay_port');
|
||||
$node->level = $request->input('level');
|
||||
$node->speed_limit = intval($request->input('speed_limit')) * Mbps;
|
||||
$node->speed_limit = (int) $request->input('speed_limit') * Mbps;
|
||||
$node->client_limit = $request->input('client_limit');
|
||||
$node->description = $request->input('description');
|
||||
$node->method = $request->input('method');
|
||||
@@ -121,18 +122,18 @@ class NodeController extends Controller {
|
||||
$node->obfs = $request->input('obfs');
|
||||
$node->obfs_param = $request->input('obfs_param');
|
||||
$node->traffic_rate = $request->input('traffic_rate');
|
||||
$node->is_subscribe = intval($request->input('is_subscribe'));
|
||||
$node->is_ddns = intval($request->input('is_ddns'));
|
||||
$node->is_relay = intval($request->input('is_relay'));
|
||||
$node->is_udp = intval($request->input('is_udp'));
|
||||
$node->is_subscribe = (int) $request->input('is_subscribe');
|
||||
$node->is_ddns = (int) $request->input('is_ddns');
|
||||
$node->is_relay = (int) $request->input('is_relay');
|
||||
$node->is_udp = (int) $request->input('is_udp');
|
||||
$node->push_port = $request->input('push_port');
|
||||
$node->detection_type = $request->input('detection_type');
|
||||
$node->compatible = intval($request->input('compatible'));
|
||||
$node->single = intval($request->input('single'));
|
||||
$node->compatible = (int) $request->input('compatible');
|
||||
$node->single = (int) $request->input('single');
|
||||
$node->port = $request->input('port');
|
||||
$node->passwd = $request->input('passwd');
|
||||
$node->sort = $request->input('sort');
|
||||
$node->status = intval($request->input('status'));
|
||||
$node->status = (int) $request->input('status');
|
||||
$node->v2_alter_id = $request->input('v2_alter_id');
|
||||
$node->v2_port = $request->input('v2_port');
|
||||
$node->v2_method = $request->input('v2_method');
|
||||
@@ -140,13 +141,14 @@ class NodeController extends Controller {
|
||||
$node->v2_type = $request->input('v2_type');
|
||||
$node->v2_host = $request->input('v2_host')?: '';
|
||||
$node->v2_path = $request->input('v2_path');
|
||||
$node->v2_tls = intval($request->input('v2_tls'));
|
||||
$node->v2_tls = (int) $request->input('v2_tls');
|
||||
$node->tls_provider = $request->input('tls_provider');
|
||||
$node->save();
|
||||
|
||||
DB::commit();
|
||||
// 生成节点标签
|
||||
$this->makeLabels($node->id, $request->input('labels'));
|
||||
$this->getNodeGeo($node->id);
|
||||
|
||||
return Response::json(['status' => 'success', 'message' => '添加成功']);
|
||||
}catch(Exception $e){
|
||||
@@ -156,13 +158,13 @@ class NodeController extends Controller {
|
||||
return Response::json(['status' => 'fail', 'message' => '添加失败:'.$e->getMessage()]);
|
||||
}
|
||||
}else{
|
||||
$view['method_list'] = Helpers::methodList();
|
||||
$view['protocol_list'] = Helpers::protocolList();
|
||||
$view['obfs_list'] = Helpers::obfsList();
|
||||
$view['country_list'] = Country::query()->orderBy('code')->get();
|
||||
$view['level_list'] = Level::query()->orderBy('level')->get();
|
||||
$view['label_list'] = Label::query()->orderByDesc('sort')->orderBy('id')->get();
|
||||
$view['dv_list'] = NodeCertificate::query()->orderBy('id')->get();
|
||||
$view['methodList'] = Helpers::methodList();
|
||||
$view['protocolList'] = Helpers::protocolList();
|
||||
$view['obfsList'] = Helpers::obfsList();
|
||||
$view['countryList'] = Country::query()->orderBy('code')->get();
|
||||
$view['levelList'] = Level::query()->orderBy('level')->get();
|
||||
$view['labelList'] = Label::query()->orderByDesc('sort')->orderBy('id')->get();
|
||||
$view['dvList'] = NodeCertificate::query()->orderBy('id')->get();
|
||||
|
||||
return Response::view('admin.node.nodeInfo', $view);
|
||||
}
|
||||
@@ -238,6 +240,36 @@ class NodeController extends Controller {
|
||||
}
|
||||
}
|
||||
|
||||
// 获取节点地理位置
|
||||
private function getNodeGeo($id): bool {
|
||||
$nodes = SsNode::query()->whereStatus(1);
|
||||
if($id){
|
||||
$nodes = $nodes->whereId($id)->get();
|
||||
}else{
|
||||
$nodes = $nodes->get();
|
||||
}
|
||||
$result = 0;
|
||||
foreach($nodes as $node){
|
||||
$data = getIPInfo($node->is_ddns == 1? gethostbyname($node->server) : $node->ip);
|
||||
if($data){
|
||||
$ret = SsNode::query()->whereId($node->id)->update(['geo' => $data['latitude'].','.$data['longitude']]);
|
||||
if($ret){
|
||||
$result++;
|
||||
}
|
||||
}
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
// 刷新节点地理位置
|
||||
public function refreshGeo(Request $request): JsonResponse {
|
||||
if($this->getNodeGeo($request->input('id', 0))){
|
||||
return Response::json(['status' => 'success', 'message' => '获取地理位置更新成功!']);
|
||||
}
|
||||
return Response::json(['status' => 'fail', 'message' => '获取地理位置更新失败!']);
|
||||
}
|
||||
|
||||
|
||||
// 编辑节点
|
||||
public function editNode(Request $request) {
|
||||
$id = $request->input('id');
|
||||
@@ -261,7 +293,7 @@ class NodeController extends Controller {
|
||||
'relay_server' => $request->input('relay_server'),
|
||||
'relay_port' => $request->input('relay_port'),
|
||||
'level' => $request->input('level'),
|
||||
'speed_limit' => intval($request->input('speed_limit')) * Mbps,
|
||||
'speed_limit' => (int) $request->input('speed_limit') * Mbps,
|
||||
'client_limit' => $request->input('client_limit'),
|
||||
'description' => $request->input('description'),
|
||||
'method' => $request->input('method'),
|
||||
@@ -270,18 +302,18 @@ class NodeController extends Controller {
|
||||
'obfs' => $request->input('obfs'),
|
||||
'obfs_param' => $request->input('obfs_param'),
|
||||
'traffic_rate' => $request->input('traffic_rate'),
|
||||
'is_subscribe' => intval($request->input('is_subscribe')),
|
||||
'is_ddns' => intval($request->input('is_ddns')),
|
||||
'is_relay' => intval($request->input('is_relay')),
|
||||
'is_udp' => intval($request->input('is_udp')),
|
||||
'is_subscribe' => (int) $request->input('is_subscribe'),
|
||||
'is_ddns' => (int) $request->input('is_ddns'),
|
||||
'is_relay' => (int) $request->input('is_relay'),
|
||||
'is_udp' => (int) $request->input('is_udp'),
|
||||
'push_port' => $request->input('push_port'),
|
||||
'detection_type' => $request->input('detection_type'),
|
||||
'compatible' => intval($request->input('compatible')),
|
||||
'single' => intval($request->input('single')),
|
||||
'compatible' => (int) $request->input('compatible'),
|
||||
'single' => (int) $request->input('single'),
|
||||
'port' => $request->input('port'),
|
||||
'passwd' => $request->input('passwd'),
|
||||
'sort' => $request->input('sort'),
|
||||
'status' => intval($request->input('status')),
|
||||
'status' => (int) $request->input('status'),
|
||||
'v2_alter_id' => $request->input('v2_alter_id'),
|
||||
'v2_port' => $request->input('v2_port'),
|
||||
'v2_method' => $request->input('v2_method'),
|
||||
@@ -289,7 +321,7 @@ class NodeController extends Controller {
|
||||
'v2_type' => $request->input('v2_type'),
|
||||
'v2_host' => $request->input('v2_host')?: '',
|
||||
'v2_path' => $request->input('v2_path'),
|
||||
'v2_tls' => intval($request->input('v2_tls')),
|
||||
'v2_tls' => (int) $request->input('v2_tls'),
|
||||
'tls_provider' => $request->input('tls_provider')
|
||||
];
|
||||
|
||||
@@ -300,6 +332,7 @@ class NodeController extends Controller {
|
||||
// TODO:更新节点绑定的域名DNS(将节点IP更新到域名DNS 的A记录)
|
||||
|
||||
DB::commit();
|
||||
$this->getNodeGeo($id);
|
||||
|
||||
return Response::json(['status' => 'success', 'message' => '编辑成功']);
|
||||
}catch(Exception $e){
|
||||
@@ -315,13 +348,13 @@ class NodeController extends Controller {
|
||||
}
|
||||
|
||||
$view['node'] = $node;
|
||||
$view['method_list'] = Helpers::methodList();
|
||||
$view['protocol_list'] = Helpers::protocolList();
|
||||
$view['obfs_list'] = Helpers::obfsList();
|
||||
$view['country_list'] = Country::query()->orderBy('code')->get();
|
||||
$view['level_list'] = Level::query()->orderBy('level')->get();
|
||||
$view['label_list'] = Label::query()->orderByDesc('sort')->orderBy('id')->get();
|
||||
$view['dv_list'] = NodeCertificate::query()->orderBy('id')->get();
|
||||
$view['methodList'] = Helpers::methodList();
|
||||
$view['protocolList'] = Helpers::protocolList();
|
||||
$view['obfsList'] = Helpers::obfsList();
|
||||
$view['countryList'] = Country::query()->orderBy('code')->get();
|
||||
$view['levelList'] = Level::query()->orderBy('level')->get();
|
||||
$view['labelList'] = Label::query()->orderByDesc('sort')->orderBy('id')->get();
|
||||
$view['dvList'] = NodeCertificate::query()->orderBy('id')->get();
|
||||
|
||||
return view('admin.node.nodeInfo', $view)->with(compact('node'));
|
||||
}
|
||||
@@ -351,14 +384,20 @@ class NodeController extends Controller {
|
||||
UserTrafficLog::query()->whereNodeId($id)->delete();
|
||||
NodeAuth::query()->whereNodeId($id)->delete();
|
||||
NodeRule::query()->whereNodeId($id)->delete();
|
||||
$RuleGroupList = RuleGroup::query()->get();
|
||||
foreach($RuleGroupList as $RuleGroup){
|
||||
foreach(RuleGroup::all() as $RuleGroup){
|
||||
$nodes = explode(',', $RuleGroup->nodes);
|
||||
if(in_array($id, $nodes, true)){
|
||||
$nodes = implode(',', array_diff($nodes, [$id]));
|
||||
RuleGroup::query()->whereId($RuleGroup->id)->update(['nodes' => $nodes]);
|
||||
}
|
||||
}
|
||||
foreach(UserGroup::all() as $UserGroup){
|
||||
$nodes = explode(',', $UserGroup->nodes);
|
||||
if(in_array($id, $nodes, true)){
|
||||
$nodes = implode(',', array_diff($nodes, [$id]));
|
||||
UserGroup::query()->whereId($UserGroup->id)->update(['nodes' => $nodes]);
|
||||
}
|
||||
}
|
||||
|
||||
DB::commit();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user