From 239ce9e65ab2e01de782394c704cc8cfe81e6662 Mon Sep 17 00:00:00 2001 From: WizWiz <27927279+wizwizdev@users.noreply.github.com> Date: Mon, 29 Apr 2024 02:30:25 +0330 Subject: [PATCH] Update search.php --- search.php | 316 ++++++++++++++++++++++++++++++----------------------- 1 file changed, 179 insertions(+), 137 deletions(-) diff --git a/search.php b/search.php index 8c46b6f..a21e23a 100644 --- a/search.php +++ b/search.php @@ -12,167 +12,207 @@ if(isset($_REQUEST['id'])){ $config_link = $_REQUEST['id']; - if(preg_match('/^vmess:\/\/(.*)/',$config_link,$match)){ - $jsonDecode = json_decode(base64_decode($match[1]),true); - $connectionLink = $config_link; - $config_link = $jsonDecode['id']; - }elseif(preg_match('/^vless:\/\/(.*?)\@/',$config_link,$match)){ - $connectionLink = $config_link; - $config_link = $match[1]; - }elseif(preg_match('/^trojan:\/\/(.*?)\@/',$config_link,$match)){ - $connectionLink = $config_link; - $config_link = $match[1]; - }elseif(!preg_match('/[a-f0-9]{8}\-[a-f0-9]{4}\-4[a-f0-9]{3}\-(8|9|a|b)[a-f0-9]{3}\-[a-f0-9]{12}/', $config_link) - && !(preg_match('/^[a-zA-Z0-9]{5,15}/',$config_link))){ - form("متن وارد شده معتبر نمی باشد"); - exit(); - } + if(preg_match('/^vmess:\/\/(.*)/',$config_link,$match)){ + $jsonDecode = json_decode(base64_decode($match[1]),true); + $connectionLink = $config_link; + $marzbanText = $match[1]; + $config_link = $jsonDecode['id']; + }elseif(preg_match('/^vless:\/\/(.*?)\@/',$config_link,$match)){ + $connectionLink = $config_link; + $marzbanText = $config_link = $match[1]; + }elseif(preg_match('/^trojan:\/\/(.*?)\@/',$config_link,$match)){ + $connectionLink = $config_link; + $marzbanText = $config_link = $match[1]; + }elseif(!preg_match('/[a-f0-9]{8}\-[a-f0-9]{4}\-4[a-f0-9]{3}\-(8|9|a|b)[a-f0-9]{3}\-[a-f0-9]{12}/', $config_link) + && !(preg_match('/^[a-zA-Z0-9]{5,15}/',$config_link))){ + form("متن وارد شده معتبر نمی باشد"); + exit(); + } + $config_link = htmlspecialchars(stripslashes(trim($config_link))); $stmt = $connection->prepare("SELECT * FROM `server_config`"); $stmt->execute(); $serversList = $stmt->get_result(); $stmt->close(); $found = false; + $isMarzban = false; while($row = $serversList->fetch_assoc()){ $serverId = $row['id']; - $response = getJson($serverId); - if($response->success){ - $list = json_encode($response->obj); - - if(strpos($list, $config_link)){ + $serverType = $row['type']; + + if($serverType == "marzban"){ + $usersList = getMarzbanJson($serverId)->users; + if(strstr(json_encode($usersList, JSON_UNESCAPED_UNICODE), $marzbanText) && !empty($marzbanText)){ $found = true; - $list = $response->obj; - if(!isset($list[0]->clientStats)){ - foreach($list as $keys=>$packageInfo){ - if(strpos($packageInfo->settings, $config_link)!=false){ - $remark = $packageInfo->remark; - $upload = sumerize2($packageInfo->up); - $download = sumerize2($packageInfo->down); - $state = $packageInfo->enable == true?"فعال 🟢":"غیر فعال 🔴"; - $totalUsed = sumerize2($packageInfo->up + $packageInfo->down); - $total = $packageInfo->total!=0?sumerize2($packageInfo->total):"نامحدود"; - $expiryTime = $packageInfo->expiryTime != 0?jdate("Y-m-d H:i:s",substr($packageInfo->expiryTime,0,-3)):"نامحدود"; - $leftMb = $packageInfo->total!=0?sumerize2($packageInfo->total - $packageInfo->up - $packageInfo->down):"نامحدود"; - $expiryDay = $packageInfo->expiryTime != 0? - floor( - (substr($packageInfo->expiryTime,0,-3)-time())/(60 * 60 * 24)) - : - "نامحدود"; - if(is_numeric($expiryDay)){ - if($expiryDay<0) $expiryDay = 0; - } - break; + $isMarzban = true; + + foreach($usersList as $key => $config){ + if(strstr(json_encode($config->links, JSON_UNESCAPED_UNICODE), $marzbanText)){ + $remark = $config->username; + $total = $config->data_limit!=0?sumerize($config->data_limit):"نامحدود"; + $totalUsed = sumerize($config->used_traffic); + $state = $config->status == "active"?$buttonValues['active']:$buttonValues['deactive']; + $expiryTime = $config->expire != 0?jdate("Y-m-d H:i:s",$config->expire):"نامحدود"; + $leftMb = $config->data_limit!=0?$config->data_limit - $config->used_traffic:"نامحدود"; + + if(is_numeric($leftMb)){ + if($leftMb<0) $leftMb = 0; + else $leftMb = sumerize($leftMb); } - } - } - else{ - $keys = -1; - $settings = array_column($list,'settings'); - foreach($settings as $key => $value){ - if(strpos($value, $config_link)!= false){ - $keys = $key; - break; + + $expiryDay = $config->expire != 0? + floor( + ($config->expire - time())/(60 * 60 * 24) + ): + "نامحدود"; + if(is_numeric($expiryDay)){ + if($expiryDay<0) $expiryDay = 0; } - } - if($keys == -1){ - $found = false; break; } - $clientsSettings = json_decode($list[$keys]->settings,true)['clients']; - if(!is_array($clientsSettings)){ - form("با عرض پوزش، متأسفانه مشکلی رخ داده است، لطفا مجدد اقدام کنید"); - exit(); + } + break; + } + }else{ + $response = getJson($serverId); + if($response->success){ + $list = json_encode($response->obj); + + if(strpos($list, $config_link)){ + $found = true; + $list = $response->obj; + if(!isset($list[0]->clientStats)){ + foreach($list as $keys=>$packageInfo){ + if(strpos($packageInfo->settings, $config_link)!=false){ + $remark = $packageInfo->remark; + $upload = sumerize2($packageInfo->up); + $download = sumerize2($packageInfo->down); + $state = $packageInfo->enable == true?"فعال 🟢":"غیر فعال 🔴"; + $totalUsed = sumerize2($packageInfo->up + $packageInfo->down); + $total = $packageInfo->total!=0?sumerize2($packageInfo->total):"نامحدود"; + $expiryTime = $packageInfo->expiryTime != 0?jdate("Y-m-d H:i:s",substr($packageInfo->expiryTime,0,-3)):"نامحدود"; + $leftMb = $packageInfo->total!=0?sumerize2($packageInfo->total - $packageInfo->up - $packageInfo->down):"نامحدود"; + $expiryDay = $packageInfo->expiryTime != 0? + floor( + (substr($packageInfo->expiryTime,0,-3)-time())/(60 * 60 * 24)) + : + "نامحدود"; + if(is_numeric($expiryDay)){ + if($expiryDay<0) $expiryDay = 0; + } + break; + } + } } - $settingsId = array_column($clientsSettings,'id'); - $settingKey = array_search($config_link,$settingsId); - - if(!isset($clientsSettings[$settingKey]['email'])){ - $packageInfo = $list[$keys]; - $remark = $packageInfo->remark; - $upload = sumerize2($packageInfo->up); - $download = sumerize2($packageInfo->down); - $state = $packageInfo->enable == true?"فعال 🟢":"غیر فعال 🔴"; - $totalUsed = sumerize2($packageInfo->up + $packageInfo->down); - $total = $packageInfo->total!=0?sumerize2($packageInfo->total):"نامحدود"; - $expiryTime = $packageInfo->expiryTime != 0?jdate("Y-m-d H:i:s",substr($packageInfo->expiryTime,0,-3)):"نامحدود"; - $leftMb = $packageInfo->total!=0?sumerize2($packageInfo->total - $packageInfo->up - $packageInfo->down):"نامحدود"; - if(is_numeric($leftMb)){ - if($leftMb<0){ - $leftMb = 0; - }else{ - $leftMb = sumerize2($packageInfo->total - $packageInfo->up - $packageInfo->down); + else{ + $keys = -1; + $settings = array_column($list,'settings'); + foreach($settings as $key => $value){ + if(strpos($value, $config_link)!= false){ + $keys = $key; + break; } } - - - $expiryDay = $packageInfo->expiryTime != 0? - floor( - (substr($packageInfo->expiryTime,0,-3)-time())/(60 * 60 * 24) - ): - "نامحدود"; - if(is_numeric($expiryDay)){ - if($expiryDay<0) $expiryDay = 0; + if($keys == -1){ + $found = false; + break; + } + $clientsSettings = json_decode($list[$keys]->settings,true)['clients']; + if(!is_array($clientsSettings)){ + form("با عرض پوزش، متأسفانه مشکلی رخ داده است، لطفا مجدد اقدام کنید"); + exit(); } - }else{ - $email = $clientsSettings[$settingKey]['email']; - $clientState = $list[$keys]->clientStats; - $emails = array_column($clientState,'email'); - $emailKey = array_search($email,$emails); - if($clientState[$emailKey]->total != 0 || $clientState[$emailKey]->up != 0 || $clientState[$emailKey]->down != 0 || $clientState[$emailKey]->expiryTime != 0){ - $upload = sumerize2($clientState[$emailKey]->up); - $download = sumerize2($clientState[$emailKey]->down); - $total = $clientState[$emailKey]->total==0 && $list[$keys]->total !=0?$list[$keys]->total:$clientState[$emailKey]->total; - $leftMb = $total!=0?($total - $clientState[$emailKey]->up - $clientState[$emailKey]->down):"نامحدود"; + $settingsId = array_column($clientsSettings,'id'); + $settingKey = array_search($config_link,$settingsId); + + if(!isset($clientsSettings[$settingKey]['email'])){ + $packageInfo = $list[$keys]; + $remark = $packageInfo->remark; + $upload = sumerize2($packageInfo->up); + $download = sumerize2($packageInfo->down); + $state = $packageInfo->enable == true?"فعال 🟢":"غیر فعال 🔴"; + $totalUsed = sumerize2($packageInfo->up + $packageInfo->down); + $total = $packageInfo->total!=0?sumerize2($packageInfo->total):"نامحدود"; + $expiryTime = $packageInfo->expiryTime != 0?jdate("Y-m-d H:i:s",substr($packageInfo->expiryTime,0,-3)):"نامحدود"; + $leftMb = $packageInfo->total!=0?sumerize2($packageInfo->total - $packageInfo->up - $packageInfo->down):"نامحدود"; if(is_numeric($leftMb)){ if($leftMb<0){ $leftMb = 0; }else{ - $leftMb = sumerize2($total - $clientState[$emailKey]->up - $clientState[$emailKey]->down); + $leftMb = sumerize2($packageInfo->total - $packageInfo->up - $packageInfo->down); } } - $totalUsed = sumerize2($clientState[$emailKey]->up + $clientState[$emailKey]->down); - $total = $total!=0?sumerize2($total):"نامحدود"; - $expTime = $clientState[$emailKey]->expiryTime == 0 && $list[$keys]->expiryTime?$list[$keys]->expiryTime:$clientState[$emailKey]->expiryTime; - $expiryTime = $expTime != 0?jdate("Y-m-d H:i:s",substr($expTime,0,-3)):"نامحدود"; - $expiryDay = $expTime != 0? + + + $expiryDay = $packageInfo->expiryTime != 0? floor( - ((substr($expTime,0,-3)-time())/(60 * 60 * 24)) + (substr($packageInfo->expiryTime,0,-3)-time())/(60 * 60 * 24) ): "نامحدود"; if(is_numeric($expiryDay)){ if($expiryDay<0) $expiryDay = 0; } - $state = $clientState[$emailKey]->enable == true?"فعال 🟢":"غیر فعال 🔴"; - $remark = $email; - } - elseif($list[$keys]->total != 0 || $list[$keys]->up != 0 || $list[$keys]->down != 0 || $list[$keys]->expiryTime != 0){ - $upload = sumerize2($list[$keys]->up); - $download = sumerize2($list[$keys]->down); - $leftMb = $list[$keys]->total!=0?($list[$keys]->total - $list[$keys]->up - $list[$keys]->down):"نامحدود"; - if(is_numeric($leftMb)){ - if($leftMb<0){ - $leftMb = 0; - }else{ - $leftMb = sumerize2($list[$keys]->total - $list[$keys]->up - $list[$keys]->down); + }else{ + $email = $clientsSettings[$settingKey]['email']; + $clientState = $list[$keys]->clientStats; + $emails = array_column($clientState,'email'); + $emailKey = array_search($email,$emails); + if($clientState[$emailKey]->total != 0 || $clientState[$emailKey]->up != 0 || $clientState[$emailKey]->down != 0 || $clientState[$emailKey]->expiryTime != 0){ + $upload = sumerize2($clientState[$emailKey]->up); + $download = sumerize2($clientState[$emailKey]->down); + $total = $clientState[$emailKey]->total==0 && $list[$keys]->total !=0?$list[$keys]->total:$clientState[$emailKey]->total; + $leftMb = $total!=0?($total - $clientState[$emailKey]->up - $clientState[$emailKey]->down):"نامحدود"; + if(is_numeric($leftMb)){ + if($leftMb<0){ + $leftMb = 0; + }else{ + $leftMb = sumerize2($total - $clientState[$emailKey]->up - $clientState[$emailKey]->down); + } } + $totalUsed = sumerize2($clientState[$emailKey]->up + $clientState[$emailKey]->down); + $total = $total!=0?sumerize2($total):"نامحدود"; + $expTime = $clientState[$emailKey]->expiryTime == 0 && $list[$keys]->expiryTime?$list[$keys]->expiryTime:$clientState[$emailKey]->expiryTime; + $expiryTime = $expTime != 0?jdate("Y-m-d H:i:s",substr($expTime,0,-3)):"نامحدود"; + $expiryDay = $expTime != 0? + floor( + ((substr($expTime,0,-3)-time())/(60 * 60 * 24)) + ): + "نامحدود"; + if(is_numeric($expiryDay)){ + if($expiryDay<0) $expiryDay = 0; + } + $state = $clientState[$emailKey]->enable == true?"فعال 🟢":"غیر فعال 🔴"; + $remark = $email; } - $totalUsed = sumerize2($list[$keys]->up + $list[$keys]->down); - $total = $list[$keys]->total!=0?sumerize2($list[$keys]->total):"نامحدود"; - $expiryTime = $list[$keys]->expiryTime != 0?jdate("Y-m-d H:i:s",substr($list[$keys]->expiryTime,0,-3)):"نامحدود"; - $expiryDay = $list[$keys]->expiryTime != 0? - floor( - ((substr($list[$keys]->expiryTime,0,-3)-time())/(60 * 60 * 24)) - ): - "نامحدود"; - if(is_numeric($expiryDay)){ - if($expiryDay<0) $expiryDay = 0; + elseif($list[$keys]->total != 0 || $list[$keys]->up != 0 || $list[$keys]->down != 0 || $list[$keys]->expiryTime != 0){ + $upload = sumerize2($list[$keys]->up); + $download = sumerize2($list[$keys]->down); + $leftMb = $list[$keys]->total!=0?($list[$keys]->total - $list[$keys]->up - $list[$keys]->down):"نامحدود"; + if(is_numeric($leftMb)){ + if($leftMb<0){ + $leftMb = 0; + }else{ + $leftMb = sumerize2($list[$keys]->total - $list[$keys]->up - $list[$keys]->down); + } + } + $totalUsed = sumerize2($list[$keys]->up + $list[$keys]->down); + $total = $list[$keys]->total!=0?sumerize2($list[$keys]->total):"نامحدود"; + $expiryTime = $list[$keys]->expiryTime != 0?jdate("Y-m-d H:i:s",substr($list[$keys]->expiryTime,0,-3)):"نامحدود"; + $expiryDay = $list[$keys]->expiryTime != 0? + floor( + ((substr($list[$keys]->expiryTime,0,-3)-time())/(60 * 60 * 24)) + ): + "نامحدود"; + if(is_numeric($expiryDay)){ + if($expiryDay<0) $expiryDay = 0; + } + $state = $list[$keys]->enable == true?"فعال 🟢":"غیر فعال 🔴"; + $remark = $list[$keys]->remark; } - $state = $list[$keys]->enable == true?"فعال 🟢":"غیر فعال 🔴"; - $remark = $list[$keys]->remark; } } + break; } - break; } } } @@ -188,7 +228,7 @@ ?> @@ -206,6 +246,7 @@ function showForm($type){ $download = $download != 0 && $total != "نامحدود"? round(100 * $download / $total,2):0; $upload = $upload != 0 && $total != "نامحدود"? round(100 * $upload / $total,2):0; $leftMb = $leftMb != "نامحدود" && $total != "نامحدود"?round(100 * $leftMb / $total,2):"100"; + $totalUsed = $totalUsed != "نامحدود" && $total != "نامحدود"?round(100 * $totalUsed / $total,2):"100"; ?>
@@ -217,7 +258,7 @@ function showForm($type){
- +
@@ -225,17 +266,18 @@ function showForm($type){ -

حجم دانلود

+

50) echo "yellow "; elseif($download > 70) echo "red "; echo $download . "%";?>, #e2eafc 0);"> -
-
- -
- -

حجم آپلود

-
30) echo "yellow "; elseif($upload >= 50) echo "#ed254e "; echo $upload . "%";?>, #e2eafc 0);"> -
+
+ +
+ +

حجم آپلود

+
30) echo "yellow "; elseif($upload >= 50) echo "#ed254e "; echo $upload . "%";?>, #e2eafc 0);"> +
+
+