2012-05-09 11:51:29 +02:00
< ? php
2015-05-29 17:08:54 +02:00
$config = parse_ini_file ( 'bin/bancount.cfg' );
2012-05-09 11:51:29 +02:00
echo " <!DOCTYPE html> \n " ;
echo " <html lang='en'> \n " ;
echo " <head> \n " ;
2015-05-29 17:08:54 +02:00
echo " \t <title> " , $config [ 'title' ], " </title> \n " ;
2012-05-09 11:51:29 +02:00
echo " \t <meta http-equiv='content-type' content='text/html; charset=utf-8' /> \n " ;
2015-05-29 17:08:54 +02:00
echo " \t <meta name='description' content= " , $config [ 'title' ], " /> \n " ;
2012-05-09 11:51:29 +02:00
echo " \t <!-- CSS/STYLESHEET --> \n " ;
echo " \t <link rel='stylesheet' href='/bancount.css' type='text/css' /> \n " ;
echo " </head> \n " ;
echo " <body> \n " ;
echo " <div id='header'> \n " ;
2015-05-29 15:21:27 +02:00
2012-05-09 11:51:29 +02:00
// Fail2BanCount - Displays information from the database
// I won't claim this is all my original code, as it has
// been borrowed from various places online. Use it as you
// like.
// Database connection info
2015-05-29 15:21:27 +02:00
$db_host = '127.0.0.1' ;
2015-05-29 17:08:54 +02:00
$db_user = $config [ 'mysqluser' ];
$db_pwd = $config [ 'mysqlpw' ];
$database = $config [ 'mysqldb' ];
2012-05-09 11:51:29 +02:00
// Page variable
$page = htmlspecialchars ( $_GET [ " page " ]);
$orderby = htmlspecialchars ( $_GET [ " orderby " ]);
// Connect to MySQL
if ( ! mysql_connect ( $db_host , $db_user , $db_pwd ))
die ( " Can't connect to database " );
// Select the database
if ( ! mysql_select_db ( $database ))
die ( " Can't select database " );
// Get some information from the database
// Find IPs banned more than once
$multiplebans = mysql_query ( " SELECT ip,COUNT(*) count,country FROM bans GROUP BY ip HAVING count > 1 ORDER BY count DESC " );
if ( ! $multiplebans ) {
die ( " Query failed. " );
}
// Find the IPs currently banned
2015-05-29 16:22:37 +02:00
$currentbans = mysql_query ( " SELECT service,ip,ban_date,ban_time,country FROM bans WHERE bans.id NOT IN ( SELECT unbans.id FROM unbans WHERE bans.id=unbans.id) " );
2012-05-09 11:51:29 +02:00
if ( ! $currentbans ) {
die ( " Query failed. " );
}
// Find the total number of IPs banned
$totalbans = mysql_query ( " SELECT MAX(id) FROM bans " );
if ( ! $totalbans ) {
die ( " Query failed. " );
}
while ( $row = mysql_fetch_array ( $totalbans )) {
$numbans = $row [ 'MAX(id)' ];
}
// Find the total number of IPs unbanned
$totalunbans = mysql_query ( " SELECT MAX(id) FROM unbans " );
if ( ! $totalunbans ) {
die ( " Query failed. " );
}
while ( $row = mysql_fetch_array ( $totalunbans )) {
$numunbans = $row [ 'MAX(id)' ];
}
// Find multiple country bans
$countrybans = mysql_query ( " SELECT country,COUNT(*) count FROM bans GROUP BY country ORDER BY count DESC LIMIT 10 " );
if ( ! $countrybans ) {
die ( " Query failed. " );
}
// Display every IP banned
// Order by ID
2015-05-29 16:22:37 +02:00
$allbans = mysql_query ( " SELECT id,service,ip,ban_date,ban_time,country FROM bans ORDER BY id " );
2012-05-09 11:51:29 +02:00
if ( ! $multiplebans ) {
die ( " Query failed. " );
}
// Order by IP
2015-05-29 16:22:37 +02:00
$allbans_ip = mysql_query ( " SELECT id,service,ip,ban_date,ban_time,country FROM bans ORDER BY ip " );
2012-05-09 11:51:29 +02:00
if ( ! $multiplebans ) {
die ( " Query failed. " );
}
// Order by Date
2015-05-29 16:22:37 +02:00
$allbans_date = mysql_query ( " SELECT id,service,ip,ban_date,ban_time,country FROM bans ORDER BY ban_date " );
2012-05-09 11:51:29 +02:00
if ( ! $multiplebans ) {
die ( " Query failed. " );
}
// Order by Time
2015-05-29 16:22:37 +02:00
$allbans_time = mysql_query ( " SELECT id,service,ip,ban_date,ban_time,country FROM bans ORDER BY ban_time " );
2012-05-09 11:51:29 +02:00
if ( ! $multiplebans ) {
die ( " Query failed. " );
}
// Order by Country
2015-05-29 16:22:37 +02:00
$allbans_country = mysql_query ( " SELECT id,service,ip,ban_date,ban_time,country FROM bans ORDER BY country " );
2012-05-09 11:51:29 +02:00
if ( ! $multiplebans ) {
die ( " Query failed. " );
}
2015-05-27 12:31:27 +02:00
// Find the number of currently banned IP's using subtraction.
// I'm sure I can do this with a single MySQL query and get
2012-05-09 11:51:29 +02:00
// rid of the above 2 queries all together.
$currentlybanned = $numbans - $numunbans ;
// Print some HTML
2015-05-29 17:08:54 +02:00
echo " \t <h1> " , $config [ 'title' ], " </h1> \n " ;
2012-05-09 11:51:29 +02:00
echo " </div> \n " ;
echo " <div id='container'> \n " ;
echo " \t <h3> $numbans IPs have been banned.</h3> \n " ;
// Menu
echo " \t <div class='table'> \n " ;
echo " \t \t <div class='row'> \n " ;
2015-05-27 12:31:27 +02:00
echo " \t \t \t <a href='?page=home' class='menu'>Home</a> \n " ;
echo " \t \t \t <a href='?page=allbans' class='menu'>All Bans</a> \n " ;
2012-05-09 11:51:29 +02:00
echo " \t \t </div> \n " ;
echo " \t </div> \n " ;
switch ( $page ) {
default :
// Begin creating the first table of IPs that have been banned
// more than once.
echo " \t <div class='table'> \n " ;
echo " \t \t <div class='row'> \n " ;
echo " \t \t \t <div class='cell-header'> \n \t \t \t \t IP \n \t \t \t </div> \n " ;
echo " \t \t \t <div class='cell-header'> \n \t \t \t \t Bans \n \t \t \t </div> \n " ;
echo " \t \t \t <div class='cell-header'> \n \t \t \t \t Country \n \t \t \t </div> \n " ;
echo " \t \t </div> \n " ;
// Print the data obtained from the MySQL database
// Print the first table
while ( $row = mysql_fetch_row ( $multiplebans )) {
echo " \t \t <div class='row'> \n " ;
foreach ( $row as $cell )
echo " \t \t \t <div class='cell'> \n \t \t \t \t $cell\n\t\t\t </div> \n " ;
echo " \t \t </div> \n " ;
}
echo " \t </div> \n " ;
mysql_free_result ( $multiplebans );
// Use correct grammer
if ( $currentlybanned != 1 ) {
$grammer = " IPs are " ;
} else {
$grammer = " IP is " ;
}
echo " \t <h3>Currently $currentlybanned $grammer banned.</h3> \n " ;
// Only print the second table if we have an IP
// currently banned.
if ( $numbans > $numunbans ) {
// Print the data obtained from the MySQL database
// Table title
echo " \t <h2>Currently Banned</h2> \n " ;
// Create the second table, of currently banned IPs
echo " \t <div class='table'> \n " ;
echo " \t \t <div class='row'> \n " ;
2015-05-29 16:22:37 +02:00
echo " \t \t \t <div class='cell-header'> \n \t \t \t \t Service \n \t \t \t </div> \n " ;
2012-05-09 11:51:29 +02:00
echo " \t \t \t <div class='cell-header'> \n \t \t \t \t IP \n \t \t \t </div> \n " ;
echo " \t \t \t <div class='cell-header'> \n \t \t \t \t Date \n \t \t \t </div> \n " ;
echo " \t \t \t <div class='cell-header'> \n \t \t \t \t Time \n \t \t \t </div> \n " ;
echo " \t \t \t <div class='cell-header'> \n \t \t \t \t Country \n \t \t \t </div> \n " ;
echo " \t \t </div> \n " ;
2015-05-27 12:31:27 +02:00
// Print out the second table
2012-05-09 11:51:29 +02:00
while ( $row = mysql_fetch_row ( $currentbans )) {
echo " \t \t <div class='row'> \n " ;
foreach ( $row as $cell )
echo " \t \t \t <div class='cell'> \n \t \t \t \t $cell\n\t\t\t </div> \n " ;
echo " \t \t </div> \n " ;
}
echo " \t </div> \n " ;
mysql_free_result ( $currentbans );
}
// Print more HTML
echo " \t <h2>Top 10 Countries</h2> \n " ;
// Begin creating the second table of counrtys that have been banned
// more than once.
echo " \t <div class='table'> \n " ;
echo " \t \t <div class='row'> \n " ;
echo " \t \t \t <div class='cell-header'> \n \t \t \t \t Country \n \t \t \t </div> \n " ;
echo " \t \t \t <div class='cell-header'> \n \t \t \t \t Bans \n \t \t \t </div> \n " ;
echo " \t \t </div> \n " ;
// Print the first table
while ( $row = mysql_fetch_row ( $countrybans )) {
echo " \t \t <div class='row'> \n " ;
foreach ( $row as $cell )
echo " \t \t \t <div class='cell'> \n \t \t \t \t $cell\n\t\t\t </div> \n " ;
echo " \t \t </div> \n " ;
}
echo " \t </div> \n " ;
mysql_free_result ( $countrybans );
break ;
case " allbans " :
echo " \t <div class='table'> \n " ;
echo " \t \t <div class='row'> \n " ;
2015-05-27 12:31:27 +02:00
echo " \t \t \t <a href='?page=allbans&orderby=id' class='cell-header'> \n \t \t \t \t \n \t \t \t </a> \n " ;
2015-05-29 16:22:37 +02:00
echo " \t \t \t <a href='?page=allbans&orderby=ip' class='cell-header'> \n \t \t \t \t <u>Service</u> \n \t \t \t </a> \n " ;
2015-05-27 12:31:27 +02:00
echo " \t \t \t <a href='?page=allbans&orderby=ip' class='cell-header'> \n \t \t \t \t <u>IP</u> \n \t \t \t </a> \n " ;
echo " \t \t \t <a href='?page=allbans&orderby=date' class='cell-header'> \n \t \t \t \t <u>Ban Date</u> \n \t \t \t </a> \n " ;
echo " \t \t \t <a href='?page=allbans&orderby=time' class='cell-header'> \n \t \t \t \t <u>Ban Time</u> \n \t \t \t </a> \n " ;
echo " \t \t \t <a href='?page=allbans&orderby=country' class='cell-header'> \n \t \t \t \t <u>Country</u> \n \t \t \t </a> \n " ;
2012-05-09 11:51:29 +02:00
echo " \t \t </div> \n " ;
switch ( $orderby ) {
default :
case " id " :
while ( $row = mysql_fetch_row ( $allbans )) {
echo " \t \t <div class='row'> \n " ;
foreach ( $row as $cell )
echo " \t \t \t <div class='cell'> \n \t \t \t \t $cell\n\t\t\t </div> \n " ;
echo " \t \t </div> \n " ;
}
case " ip " :
while ( $row = mysql_fetch_row ( $allbans_ip )) {
echo " \t \t <div class='row'> \n " ;
foreach ( $row as $cell )
echo " \t \t \t <div class='cell'> \n \t \t \t \t $cell\n\t\t\t </div> \n " ;
echo " \t \t </div> \n " ;
}
break ;
case " date " :
while ( $row = mysql_fetch_row ( $allbans_date )) {
echo " \t \t <div class='row'> \n " ;
foreach ( $row as $cell )
echo " \t \t \t <div class='cell'> \n \t \t \t \t $cell\n\t\t\t </div> \n " ;
echo " \t \t </div> \n " ;
}
break ;
case " time " :
while ( $row = mysql_fetch_row ( $allbans_time )) {
echo " \t \t <div class='row'> \n " ;
foreach ( $row as $cell )
echo " \t \t \t <div class='cell'> \n \t \t \t \t $cell\n\t\t\t </div> \n " ;
echo " \t \t </div> \n " ;
}
break ;
case " country " :
while ( $row = mysql_fetch_row ( $allbans_country )) {
echo " \t \t <div class='row'> \n " ;
foreach ( $row as $cell )
echo " \t \t \t <div class='cell'> \n \t \t \t \t $cell\n\t\t\t </div> \n " ;
echo " \t \t </div> \n " ;
}
break ;
}
echo " \t </div> \n " ;
break ;
}
echo " </div> \n " ;
echo " <div id='footer'> \n " ;
2015-05-29 17:02:32 +02:00
echo " \t © " , date ( " Y " ), " released under GNU GPL base on <a href='http://kylefberry.net'>k6b</a> work this version are made by Knah Tsaeb \n " ;
2012-05-09 11:51:29 +02:00
echo " </div> \n " ;
echo " </body> \n " ;
echo " </html> \n " ;
?>