From 7743ad61ea5cdcdb1285dc1c63590c5d951c0f56 Mon Sep 17 00:00:00 2001 From: Madriix Date: Thu, 30 Oct 2025 09:07:25 +0100 Subject: [PATCH 1/2] Added a 'useful percentage' column to the table --- .../IPCloneDetectorAndASNAnalyzer.php | 4 +- IPCloneDetectorAndASNAnalyzer/index.php | 68 ++++++++++++------- 2 files changed, 45 insertions(+), 27 deletions(-) diff --git a/IPCloneDetectorAndASNAnalyzer/IPCloneDetectorAndASNAnalyzer.php b/IPCloneDetectorAndASNAnalyzer/IPCloneDetectorAndASNAnalyzer.php index ad57659..27bc899 100644 --- a/IPCloneDetectorAndASNAnalyzer/IPCloneDetectorAndASNAnalyzer.php +++ b/IPCloneDetectorAndASNAnalyzer/IPCloneDetectorAndASNAnalyzer.php @@ -4,7 +4,7 @@ @author Madrix @description Displays some statistics about ASNs, IPs, and clones. @contact armyndev@outlook.com - @version 1.14 + @version 1.15 @tested 0.9 @minver 0.9 @maxver * @@ -21,7 +21,7 @@ class IPCloneDetectorAndASNAnalyzer */ public $name = "IPCloneDetectorAndASNAnalyzer"; // Name of your plugin public $author = "Madrix"; // Name or handle of your lovely self - public $version = "1.14"; // Version of this plugin + public $version = "1.15"; // Version of this plugin public $description = "Displays some statistics about ASNs, IPs, and clones."; // Description of your beautiful plugin public $email = "armyndev@outlook.com"; // An email people can contact you with in case of problems diff --git a/IPCloneDetectorAndASNAnalyzer/index.php b/IPCloneDetectorAndASNAnalyzer/index.php index 019766e..d292bc7 100644 --- a/IPCloneDetectorAndASNAnalyzer/index.php +++ b/IPCloneDetectorAndASNAnalyzer/index.php @@ -732,6 +732,7 @@ function ipFromAsn($v, $asn) $ipv6Count++; } } + if (isset($obj->user)) { if (isset($obj->user->account)) { $accountCount++; @@ -741,35 +742,52 @@ function ipFromAsn($v, $asn) } } + // éviter division par zéro + if ($usersCount > 0) { + $ipv4CountPercentage = round(($ipv4Count / $usersCount) * 100, 2) . '%'; + $ipv6CountPercentage = round(($ipv6Count / $usersCount) * 100, 2) . '%'; + $accountCountPercentage = round(($accountCount / $usersCount) * 100, 2) . '%'; + $noAccountCountPercentage = round(($noAccountCount / $usersCount) * 100, 2) . '%'; + } else { + $ipv4CountPercentage = $ipv6CountPercentage = $accountCountPercentage = $noAccountCountPercentage = '-'; + } + echo " - - - - - - - - - - - - - - - - - - - - - - - - -
TypeOnline number
Number of total users{$usersCount}
Number of IPv4{$ipv4Count}
Number of IPv6{$ipv6Count}
Number of account{$accountCount}
Number of no account{$noAccountCount}
"; + + Type + Online number + Percentage + + + Number of total users + {$usersCount} + - + + + Number of IPv4 + {$ipv4Count} + {$ipv4CountPercentage} + + + Number of IPv6 + {$ipv6Count} + {$ipv6CountPercentage} + + + Number of account + {$accountCount} + {$accountCountPercentage} + + + Number of no account + {$noAccountCount} + {$noAccountCountPercentage} + + "; ?> +

Bans server corresponding to '~asn:'

From 00703ea8328e9ad50fbc14cd927d55f6ebfc884a Mon Sep 17 00:00:00 2001 From: Madriix Date: Wed, 17 Dec 2025 02:49:56 +0100 Subject: [PATCH 2/2] Improve table styling and layout in index.php Updated multiple tables to use Bootstrap classes for improved appearance and consistency, including table-hover, table-striped, and thead-dark. Adjusted container and column classes for better layout, and enhanced table headers and structure for clarity. Also added code formatting and badges for ban types. --- .../IPCloneDetectorAndASNAnalyzer.php | 4 +- IPCloneDetectorAndASNAnalyzer/index.php | 73 ++++++++++++------- 2 files changed, 47 insertions(+), 30 deletions(-) diff --git a/IPCloneDetectorAndASNAnalyzer/IPCloneDetectorAndASNAnalyzer.php b/IPCloneDetectorAndASNAnalyzer/IPCloneDetectorAndASNAnalyzer.php index 27bc899..d7874d4 100644 --- a/IPCloneDetectorAndASNAnalyzer/IPCloneDetectorAndASNAnalyzer.php +++ b/IPCloneDetectorAndASNAnalyzer/IPCloneDetectorAndASNAnalyzer.php @@ -4,7 +4,7 @@ @author Madrix @description Displays some statistics about ASNs, IPs, and clones. @contact armyndev@outlook.com - @version 1.15 + @version 1.16 @tested 0.9 @minver 0.9 @maxver * @@ -21,7 +21,7 @@ class IPCloneDetectorAndASNAnalyzer */ public $name = "IPCloneDetectorAndASNAnalyzer"; // Name of your plugin public $author = "Madrix"; // Name or handle of your lovely self - public $version = "1.15"; // Version of this plugin + public $version = "1.16"; // Version of this plugin public $description = "Displays some statistics about ASNs, IPs, and clones."; // Description of your beautiful plugin public $email = "armyndev@outlook.com"; // An email people can contact you with in case of problems diff --git a/IPCloneDetectorAndASNAnalyzer/index.php b/IPCloneDetectorAndASNAnalyzer/index.php index d292bc7..5bc33e3 100644 --- a/IPCloneDetectorAndASNAnalyzer/index.php +++ b/IPCloneDetectorAndASNAnalyzer/index.php @@ -379,7 +379,7 @@ function ipFromAsn($v, $asn) -
+

Number of ASN duplicates sorted from largest to smallest

@@ -413,13 +413,13 @@ function ipFromAsn($v, $asn) }); - echo ""; - echo "" . ($asnIsGood ? "" : "") . ""; + echo "
ASNASNameCountry CodeCountIPv4IPv6Good ASN
"; + echo "" . ($asnIsGood ? "" : "") . ""; foreach ($asnCounts as $info) { echo ""; echo ""; - echo ""; + echo ""; echo ""; echo ""; echo ""; @@ -429,7 +429,7 @@ function ipFromAsn($v, $asn) echo ""; } - echo "
ASNASNameCountry CodeCountIPv4IPv6Good ASN
" . (empty($info['asn']) ? '-' : '' . $info['asn'] . '') . "" . (empty($info['asname']) ? 'Localhost ?' : '' . $info['asname']) . '' . "" . (empty($info['asname']) ? 'Localhost ?' : '' . $info['asname']) . '' . "" . (empty($info['country_code']) ? '-' : "{$info['country_code']} ") . "" . (empty($info['asn']) ? $info['count'] : '') . "" . (empty($info['asn']) ? '-' : ipFromAsn(4, $info['asn'])) . "
"; + echo ""; echo "$asnCount different ASNs found"; if ($asnIsGood) @@ -438,7 +438,7 @@ function ipFromAsn($v, $asn)
-
+
+ echo " + - "; + "; foreach ($countryCounts as $countryCode => $count) { $percentage = $totalUsers > 0 ? ($count / $totalUsers) * 100 : 0; @@ -612,7 +613,7 @@ function ipFromAsn($v, $asn) "; - echo "
Country Online number Percentage
"; + echo ""; ?> @@ -646,12 +647,15 @@ function ipFromAsn($v, $asn) } } - echo " + echo "
+ - "; + + + "; foreach ($duplicateList as $entry) { echo " @@ -661,7 +665,7 @@ function ipFromAsn($v, $asn) "; } - echo "
IP Number
of
duplicates
List of names
"; + echo ""; ?>

Show clones based on the first 4 segments of IPv6 addresses

@@ -696,12 +700,15 @@ function ipFromAsn($v, $asn) } } - echo " + echo "
+ - "; + + + "; foreach ($duplicateList as $entry) { echo " @@ -711,7 +718,7 @@ function ipFromAsn($v, $asn) "; } - echo "
IP Number
of
duplicates
List of names
"; + echo ""; ?>
@@ -752,12 +759,15 @@ function ipFromAsn($v, $asn) $ipv4CountPercentage = $ipv6CountPercentage = $accountCountPercentage = $noAccountCountPercentage = '-'; } - echo " + echo "
+ + + @@ -783,6 +793,7 @@ function ipFromAsn($v, $asn) +
Type Online number Percentage
Number of total users {$usersCount}{$noAccountCount} {$noAccountCountPercentage}
"; ?> @@ -790,70 +801,76 @@ function ipFromAsn($v, $asn)

Bans server corresponding to '~asn:'

+ echo " + + + "; foreach ($server_ban as $obj) { $usersCount++; if (isset($obj->name)) { if (strpos($obj->name, "~asn:") !== false && preg_match('/^\%/', $obj->name, $matches) === 1) { echo " - - + + "; } else if (strpos($obj->name, "~asn:") !== false) { echo " - - + + "; } } } - echo "
Type ban Found Affected users duration
{$obj->type}{$obj->name}{$obj->type}{$obj->name} unregistered {$obj->duration_string}
{$obj->type}{$obj->name}{$obj->type}{$obj->name} all {$obj->duration_string}
"; + echo ""; ?>

Bans server corresponding to other type of '~'

+ echo " + + + "; foreach ($server_ban as $obj) { $usersCount++; if (isset($obj->name)) { if (strpos($obj->name, "~asn:") === false && strpos($obj->name, "~") !== false && preg_match('/^\%/', $obj->name, $matches) === 1) { echo " - - + + "; } else if (strpos($obj->name, "~asn:") === false && strpos($obj->name, "~") !== false) { echo " - - + + "; } } } - echo "
Type ban Found Affected users duration
{$obj->type}{$obj->name}{$obj->type}{$obj->name} unregistered {$obj->duration_string}
{$obj->type}{$obj->name}{$obj->type}{$obj->name} all {$obj->duration_string}
"; + echo ""; ?>