function luc_url_monitoring() { global $wpdb, $StatPressV_Option; $table_name = STATPRESS_V_TABLE_NAME; $querylimit = 20; $pa = luc_page_posts(); $action = "urlmonitoring"; // Number of distinct "no author post or page URL" $Num = $wpdb->get_var("SELECT COUNT(*)\r\n\t\t\t\tFROM {$table_name}\r\n\t\t\t\tWHERE realpost=0 AND (spider ='' OR spider LIKE 'Unknown Spam Bot')\r\n\t\t\t\t"); $NumPage = ceil($Num / $querylimit); echo "<div class='wrap'><h2>" . __('URL Monitoring', 'statpress') . "</h2>\r\n\t </br> This page is designed to help you secure your website:<div title='Indeed this page shows all URLs that have access to your website or your blog and who are not posts or pages written by an author of your website.Some are legitimate as /category or the robots like Google. Nevertheless, they are all shown so you can secure your blog or your site by selecting the ones you want to block access to your site.'>Learn more</div>"; luc_print_pp_pa_link(0, 0, $action, $NumPage, $pa); $LimitValue = $pa * $querylimit - $querylimit; ?> <table class='widefat' > <thead> <tr> <th scope='col'>Date</th> <th scope='col'>Time</th> <th scope='col'>IP</th> <th scope='col'>Country</th> <th scope='col' width="30%">URL requested</th> <th scope='col' width="30%">Agent</th> <th scope='col'>Spider</th> <th scope='col'>OS</th> <th scope='col'>Browser</th> </tr> </thead> <tbody> <?php $qry = $wpdb->get_results("SELECT date,time,ip,urlrequested,agent,os,browser,spider,country,realpost\r\n\t\t\tFROM {$table_name}\r\n\t\t\tWHERE realpost=0 AND (spider ='' OR spider LIKE 'Unknown Spam Bot')\r\n\t\t\tORDER BY id DESC\r\n\t\t\tLIMIT {$LimitValue}, {$querylimit};"); foreach ($qry as $rk) { echo "<tr>\r\n\t\t\t<td>" . luc_hdate($rk->date) . "</td>\r\n\t\t\t<td>" . $rk->time . "</td>\r\n\t\t\t<td>" . luc_create_href($rk->ip, 'ip') . "</td>\r\n\t\t\t<td>" . luc_HTML_IMG($rk->country, 'country', false) . "</td>\r\n\t\t\t<td>" . $rk->urlrequested . "</td>\r\n\t\t\t<td><a href='http://www.google.com/search?q=%22User+Agent%22+" . urlencode($rk->agent) . "' target='_blank' title='Search for User Agent string on Google...'> " . $rk->agent . "</a> </td>\r\n\t\t\t<td>" . luc_HTML_IMG($rk->spider, 'spider', false) . "</td>\r\n\t\t\t<td>" . luc_HTML_IMG($rk->os, 'os', $text_OS) . "</td>\r\n\t\t\t<td>" . luc_HTML_IMG($rk->browser, 'browser', $text_browser) . "</td>"; } ?> </tbody> </table> <?php echo "</div>"; luc_print_pp_pa_link(0, 0, $action, $NumPage, $pa); luc_StatPressV_load_time($start); }
function luc_spyvisitors() { global $wpdb; global $StatPressV_Option; $action = "spyvisitors"; $table_name = STATPRESS_V_TABLE_NAME; // number of IP or bot by page $LIMIT = $StatPressV_Option['StatPressV_SpyVisitor_IP_Per_Page'] ? $StatPressV_Option['StatPressV_SpyVisitor_IP_Per_Page'] : 20; $LIMIT_PROOF = $StatPressV_Option['StatPressV_SpyVisitor_Visits_Per_IP'] ? $StatPressV_Option['StatPressV_SpyVisitor_Visits_Per_IP'] : 20; $pp = luc_page_periode(); // Number of distinct ip (unique visitors) $NumIP = $wpdb->get_var("SELECT count(distinct ip)\n\t\t\t\t\t\t\t\t\tFROM {$table_name}\n\t\t\t\t\t\t\t\t\tWHERE spider='' ;"); $NP = ceil($NumIP / $LIMIT); $LimitValue = $pp * $LIMIT - $LIMIT; $sql = "SELECT *\n\t\t\t\t\tFROM {$table_name} as T1\n\t\t\t\t\tJOIN\n\t\t\t\t\t\t(SELECT max(id) as MaxId,ip\n\t\t\t\t\t\t\tFROM {$table_name}\n\t\t\t\t\t\t\tWHERE spider=''\n\t\t\t\t\t\t\tGROUP BY ip\n\t\t\t\t\t\t\tORDER BY MaxId DESC LIMIT {$LimitValue}, {$LIMIT}\n\t\t\t\t\t\t) as T2\n\t\t\t\t\tON T1.ip = T2.ip\n\t\t\t\t\tORDER BY MaxId DESC, id DESC;\n\t\t\t\t"; $qry = $wpdb->get_results($sql); if ($StatPressV_Option['StatPressV_Use_GeoIP'] == 'checked' & function_exists('geoip_open')) { // Open the database to read and save info if (file_exists(luc_GeoIP_dbname('city'))) { $gic = geoip_open(luc_GeoIP_dbname('city'), GEOIP_STANDARD); $geoip_isok = true; } } echo "<div class='wrap'><h2>" . __('Visitor Spy', 'statpress') . "</h2>"; ?> <script> function ttogle(thediv){ if (document.getElementById(thediv).style.display=="inline") { document.getElementById(thediv).style.display="none" } else {document.getElementById(thediv).style.display="inline"} } </script> <?php $MaxId = 0; $num_row = 0; // Add pagination luc_insert_pagination_options("spyvisitors", $NumIP, $LIMIT); luc_print_pp_link($NP, $pp, $action); echo '<table class="widefat" id="mainspytab" name="mainspytab" width="99%" border="0" cellspacing="0" cellpadding="4">'; foreach ($qry as $rk) { // Visitor Spy if ($MaxId != $rk->MaxId) { if ($geoip_isok === true) { $gir = GeoIP_record_by_addr($gic, $rk->ip); } echo "<thead><tr><th scope='colgroup' colspan='2'>"; if ($rk->country != '') { echo "HTTP country " . luc_HTML_IMG($rk->country, 'country', false); } else { echo "Hostip country <IMG SRC='http://api.hostip.info/flag.php?ip=" . $rk->ip . "' border=0 width=18 height=12> "; } if ($geoip_isok === true) { $lookupsvc = "GeoIP details"; } else { $lookupsvc = "Hostip details"; } echo "\t<strong><span><font size='2' color='#7b7b7b'> " . $rk->ip . " </font></span></strong>\n\t\t\t\t\t<span style='color:#006dca;cursor:pointer;border-bottom:1px dotted #AFD5F9;font-size:8pt;'\n\t\t\t\t\t\tonClick=ttogle('" . $rk->ip . "');>" . $lookupsvc . "</span></div>\n\t\t\t\t\t<div id='" . $rk->ip . "' name='" . $rk->ip . "'>"; if ($geoip_isok === true) { echo "\t<small><br>\n\t\t\t\t\t\t\tCountry: " . utf8_encode($gir->country_name) . " (" . $gir->country_code . ")<br>\n\t\t\t\t\t\t\tCity: " . utf8_encode($gir->city) . "<br>\n\t\t\t\t\t\t\tLatitude/Longitude: <a href='http://maps.google.com/maps?q=" . $gir->latitude . "+" . $gir->longitude . "' target='_blank' title='Lookup latitude/longitude location on Google Maps...'>" . $gir->latitude . " " . $gir->longitude . "</a>\n\t\t\t\t\t\t</small>"; } else { echo "\t<iframe style='overflow:hide;border:0px;width:100%;height:35px;font-family:helvetica;paddng:0;'\n\t\t\t\t\t\t\tscrolling='no' marginwidth=0 marginheight=0 src=http://api.hostip.info/get_html.php?ip=" . $rk->ip . ">\n\t\t\t\t\t\t</iframe>"; } echo "\t<small>\n\t\t\t\t\t\t<br>" . $rk->os . "\n\t\t\t\t\t\t<br>" . $rk->browser . "\n\t\t\t\t\t\t<br>" . gethostbyaddr($rk->ip) . "\n\t\t\t\t\t\t<br>" . $rk->agent . "\n\t\t\t\t\t</small></div></th></tr></thead><tbody>\n\t\t\t\t\t<script> document.getElementById('" . $rk->ip . "').style.display='none';</script>\n\t\t\t\t\t<tr>\n\t\t\t\t\t<td>" . luc_hdate($rk->date) . " " . $rk->time . "</td>\n\t\t\t\t\t<td>" . (isset($rk->post_title) ? $rk->post_title : luc_post_title_Decode(urldecode($rk->urlrequested))) . ""; if ($rk->searchengine != '') { echo "<br><small>arrived from <b>" . $rk->searchengine . "</b> searching <a target='_blank' href='" . $rk->referrer . "' >" . urldecode($rk->search) . "</a></small>"; } elseif ($rk->referrer != '' && strpos($rk->referrer, $home) === false) { echo "<br><small>arrived from <a target='_blank' href='" . $rk->referrer . "' >" . $rk->referrer . "</a></small>"; } echo "</div></td></tr>\n"; $MaxId = $rk->MaxId; $num_row = 1; } elseif ($num_row < $LIMIT_PROOF) { echo "<tr><td>" . luc_hdate($rk->date) . " " . $rk->time . "</td>\n\t\t\t\t\t\t<td>" . (isset($rk->post_title) ? $rk->post_title : luc_post_title_Decode(urldecode($rk->urlrequested))) . ""; if ($rk->searchengine != '') { echo "<br><small>arrived from <b>" . $rk->searchengine . "</b> searching <a target='_blank' href='" . $rk->referrer . "' >" . urldecode($rk->search) . "</a></small>"; } elseif ($rk->referrer != '' && strpos($rk->referrer, $home) === false) { echo "<br><small>arrived from <a target='_blank' href='" . $rk->referrer . "' >" . $rk->referrer . "</a></small>"; } $num_row += 1; echo "</td></tr></tbody>"; } } echo "</div></td></tr>\n</table>"; luc_print_pp_link($NP, $pp, $action); echo "</div>"; luc_StatPressV_load_time(); }
function luc_main_table_latest_spambots() { global $wpdb, $StatPressV_Option; $table_name = STATPRESS_V_TABLE_NAME; $querylimit = isset($_POST['spambotsrows']) ? $_POST['spambotsrows'] : $StatPressV_Option['StatPressV_Rows_Per_Latest']; ?> <table class='widefat' > <thead> <tr> <th scope='col'>Date</th> <th scope='col'>Time</th> <th scope='col'>IP</th> <th scope='col'></th> <th scope='col' width="30%">Page</th> <th scope='col' width="30%">Agent</th> </tr> </thead> <tbody> <?php $qry = $wpdb->get_results("SELECT date, time, ip, urlrequested, spider, agent\r\n\t\t\tFROM {$table_name}\r\n\t\t\tWHERE spider LIKE '%spam bot'\r\n\t\t\tORDER BY id DESC\r\n\t\t\tLIMIT {$querylimit};"); foreach ($qry as $rk) { echo "<tr>\r\n\t\t\t\t\t<td>" . luc_hdate($rk->date) . "</td>\r\n\t\t\t\t\t<td>" . $rk->time . "</td>\r\n\t\t\t\t\t<td>" . luc_create_href($rk->ip, 'ip') . "</td>\r\n\t\t\t\t\t<td>" . luc_HTML_IMG($rk->spider, 'spider', false) . "</td>\r\n\t\t\t\t\t<td>" . (isset($rk->post_title) ? $rk->post_title : luc_post_title_Decode(urldecode($rk->urlrequested))) . "</td>\r\n\t\t\t\t<td> " . $rk->agent . "</td>\r\n\t\t\t\t</tr>"; } ?> </tbody> </table> <?php if (isset($_POST['spambotsrows'])) { die; } }
function luc_display_by_IP($ip) { global $wpdb; $table_name = STATPRESS_V_TABLE_NAME; $qry_s = "SELECT *\n\t\t\t\tFROM {$table_name}\n\t\t\t\tWHERE ip = '{$ip}'\n\t\t\t\tORDER BY id DESC\n\t\t\t\t"; $qry = $wpdb->get_results($qry_s); $num = $wpdb->num_rows; $qry_sa = "SELECT DISTINCT agent\n\t\t\t\tFROM {$table_name}\n\t\t\t\tWHERE ip = '{$ip}'\n\t\t\t\tORDER BY agent ASC ;\n\t\t\t\t"; $qrya = $wpdb->get_results($qry_sa); if ($_POST['markbot'] == 'Mark as spambot') { luc_BanBot('ip', $ip); } if ($_POST['banip'] == 'Ban IP address') { luc_BanIP($ip); } $text_OS = $StatPressV_Option['StatPressV_Dont_Show_OS_name'] != 'checked' ? true : false; $text_browser = $StatPressV_Option['StatPressV_Dont_Show_Browser_name'] != 'checked' ? true : false; $text = "Report for " . $ip . " "; ?> <form method=post> <div class='wrap'><table style="width:100%"><tr><td><h2> <?php _e($text); ?> </h2></td> <td width=50px align='right'> <input type=submit name=banip value='Ban IP address' > </td> </tr> </table> <table class='widefat'> <thead> <tr> <th scope='col' colspan='2'></th> </thead> <tbody> <tr> <td>Records in database:</td> <td> <?php _e($num); ?> </td> </tr> <tr> <td>Latest hit:</td> <td> <?php _e(luc_hdate($qry[0]->date) . " " . $qry[0]->time); ?> </td> </tr> <tr> <td>First hit:</td> <td> <?php _e(luc_hdate($qry[$num - 1]->date) . " " . $qry[$num - 1]->time); ?> </td> </tr> <tr> <td>User agent(s):</td> <td> <?php _e(luc_print_uas($qrya)); ?> </td> </tr> </tbody> </table> <?php $geoip = luc_GeoIP_get_data($ip); if ($geoip !== false) { ?> <table class='widefat'> <thead><tr><th scope='col' colspan='4'>GeoIP Information</th></tr></thead> <tbody> <tr> <td><strong>Country:</strong></td> <td> <?php _e($geoip['cn'] . " (" . $geoip['cc'] . ")"); ?> <IMG style='border:0px;height:16px;' alt='$cn' title='$cn' SRC=' <?php _e(STATPRESS_V_PLUGIN_URL . "/images/domain/" . strtolower($geoip['cc']) . '.png'); ?> '></td> <td><strong>Continent Code:</strong></td> <td> <?php _e($geoip['continent_code']); ?> </td> </tr> <tr> <td><strong>Region:</strong></td> <td> <?php _e($geoip['region']); ?> </td> <td><strong>Area Code: (USA Only)</strong></td> <td> <?php _e($geoip['area_code']); ?> </td> </tr> <tr> <td><strong>City:</strong></td> <td> <?php _e($geoip['city']); ?> </td> <td><strong>Postal Code: (USA Only)</strong></td> <td> <?php _e($geoip['postal_code']); ?> </td> </tr> <tr> <td><strong>Latitude/Longitude</strong></td> <td> <a href='http://maps.google.com/maps?q=<?php _e($geoip['latitude'] . "+" . $geoip['longitude']); ?> ' target='_blank' title='Lookup latitude/longitude location on Google Maps...'><?php _e($geoip['latitude'] . " " . $geoip['longitude']); ?> </a></td> <td><strong>Metro Code: (USA Only)</strong></td> <td> <?php _e($geoip['metro_code']); ?> </td> </tr> </tbody> </table> <?php } ?> <table class='widefat'> <thead> <tr> <th scope='col' colspan='6'>URLs Requested</th> </tr> </thead> <thead> <tr> <th scope='col'>Date</th> <th scope='col'>Time</th> <th scope='col'>OS</th> <th scope='col'>Browser</th> <th scope='col'>Agent</th> <th scope='col'>Referrer</th> <th scope='col'>URL Requested</th> </tr> </thead> <tbody> <?php foreach ($qry as $rk) { ?> <tr> <td> <?php _e(luc_hdate($rk->date)); ?> </td> <td> <?php _e($rk->time); ?> </td> <td> <?php _e(luc_HTML_IMG($rk->os, 'os', $text_OS)); ?> </td> <td> <?php _e(luc_HTML_IMG($rk->browser, 'browser', $text_browser)); ?> </td> <td> <?php _e($rk->agent); ?> </td> <td> <?php _e($rk->referrer); ?> </td> <td> <?php _e(luc_post_title_Decode($rk->urlrequested)); ?> </td> </tr> </tbody> <?php } ?> </table> </div> </form> <?php luc_StatPressV_load_time(); }