!C99Shell v. 1.0 pre-release build #16!

Software: Apache/2.0.54 (Fedora). PHP/5.0.4 

uname -a: Linux mina-info.me 2.6.17-1.2142_FC4smp #1 SMP Tue Jul 11 22:57:02 EDT 2006 i686 

uid=48(apache) gid=48(apache) groups=48(apache)
context=system_u:system_r:httpd_sys_script_t
 

Safe-mode: OFF (not secure)

/home/mnnews/public_html/stat/   drwxr-xr-x
Free 4.04 GB of 27.03 GB (14.96%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     log_func.php (21.41 KB)      -rwxr-xr-x
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
# log_func.php  for ezBOO WebStats 2.0
# 5 june 2001
# 10 September 2001:
# ExtractAgentFunction has been improved
# 15 Dec 2001:
# ExtractAgentFunction has been improved again: no more timeout problem !



##################################################################################
# Archive fucntion is used to clean logtable from old data
# The log table (logezboo) should only contain current month data
# Archive fucntion will bet older (than current) months and create an history table
# with "_h" at the end to store total hist for all previous months
function Archive($table_log) {
// Global variables for SQL connection
global $server;
global
$user;
global
$password;
global
$base;

require(
"config.inc.php");

$c = mysql_connect("$server","$user","$password") or die($msgSqlConnectImpossible);
$db = mysql_select_db("$base") or die($msgBaseConnectImpossible);

// Get Oldest month in the table
$result = mysql_query ("SELECT month(min(date)) FROM $table_log");
$row = mysql_fetch_array ($result);
$today_month = date("n");

// Start archive if months are different
if ($row[0]!=$today_month and $row[0]!= NULL) {
      
# Oldest month in the table
      
$result = mysql_query ("SELECT month(min(date)) FROM $table_log");
      
$row = mysql_fetch_array ($result);
      
$oldest_month = $row[0];

      
# Oldest year in the table
      
$result = mysql_query ("SELECT year(min(date)) FROM $table_log");
      
$row = mysql_fetch_array ($result);
      
$oldest_year = $row[0];

      
$today_year = date("Y");

      while ( (
$oldest_month.$oldest_year != $today_month.$today_year) ) {
       
# Count hits for the oldest month
       
$result = mysql_query ("SELECT COUNT(*) FROM $table_log WHERE MONTH(date)=$oldest_month and YEAR(date)=$oldest_year");
       
$row = mysql_fetch_array ($result);
       echo
$oldest_month." - ".$oldest_year." = ".$row[0]."<br><br>";
       
$hits = $row[0];

       
# Write in history table
       
$table_log_h = $table_log."_h";
       
$wdate = $oldest_year."-".$oldest_month."-01";
       
$result = mysql_query("INSERT INTO $table_log_h (id, date, hits) VALUES ('', '$wdate', '$hits')")
          or die(
$msgCanotWriteArchive);

       
#Clear log table
       
$result = mysql_query("DELETE FROM $table_log WHERE month(date)=$oldest_month AND year(date)=$oldest_year");

       
$oldest_month = $oldest_month + 1;
       if (
$oldest_month == 13) {
         
$oldest_month = 1;
         
$oldest_year = $oldest_year + 1;
       }
      }  
# end while loop
      
echo $msgArchiveCreated."\n";
}  
//end if
mysql_free_result ($result);
mysql_close ($c);        // close sql connection
} # End of function Archive

##################################################################################
# This function will output in html format a table
# with a title ($title) and a list of Items with corresponding
# bar graph representing percentage
# $val must be an array such as:
#    [Total] => 20
#    [Win95] => 12
#    [Win98] => 7
#    [WinNT] => 1
##################################################################################
function ProcessBarGraph($title, $val) {
global
$period;
global
$table;
global
$reqdate;

global
$msgCountrySort;
global
$msgBrowserSort;
global
$msgOsSort;
global
$msgProviderSort;
global
$config;

$url_trunc_size = $config["url_trunc_size"];

echo
"<table width=\"350\" border=\"0\" cellspacing=\"0\" cellpadding=\"3\" class=\"normal\">";
echo
"<tr bgcolor=\"#CCCCCC\">";
echo
"<td colspan=\"2\"><b>".$title."</b></td>";
echo
"<td width=\"0\">"."<div align=\"center\">"."Hits"."</div></td>";
echo
"<td>"."<div align=\"center\">"."%"."</div></td>";
echo
"</tr>";
echo
"<tr>";

$sta = true;

# Find max of percentage
$temparray = $val;
$temparray[Total] = 0;
if (
$val["Total"]>0) $maxpcbar = 100 * max($temparray) / $val["Total"];

while ((
$bar=each($val)) && ($val[Total]<> 0)) {
   if (
$bar[0]<>"Total") {
      if (
$sta) { $color = "#CCCCFF" ; } else { $color = "#FFFFCC" ;}
      
$pcbar = round(100 * $bar[1] / $val["Total"]);
      
$barwidth = round(100 * $pcbar / $maxpcbar);
      echo
"<tr>";
      
# title
      
if (substr($bar[0],0,4)=="http") {
            echo
"<td width=\"180\"  bgcolor=\"$color\">"."<a href=\"read.php?table=".$table."&period=".$period."&reqdate=".$reqdate."&stp=referer&stp2=".urlencode($bar[0])."\">+ </a>"."<a href=\"".$bar[0]."\" target=\"_blank\">".substr($bar[0],7,$url_trunc_size)."</a>"."</td>";
//            echo "<td width=\"180\"  bgcolor=\"$color\">"."<a href=\"".$bar[0]."\" target=\"_blank\">".substr($bar[0],7,20)."</a>"."</td>";
      
} else

      
// Special link for country
      
if ($title==$msgCountrySort ) {
            echo
"<td width=\"180\"  bgcolor=\"$color\">"."<a href=\"read.php?table=".$table."&period=".$period."&reqdate=".$reqdate."&stp=country&stp2=".$bar[0]."\">".$bar[0]."</a>"."</td>";
      } else
      
// Special link for browser
      
if ($title==$msgBrowserSort ) {
            echo
"<td width=\"180\"  bgcolor=\"$color\">"."<a href=\"read.php?table=".$table."&period=".$period."&reqdate=".$reqdate."&stp=wb&stp2=".$bar[0]."\">".$bar[0]."</a>"."</td>";
      } else
      
// Special link for OS
      
if ($title==$msgOsSort ) {
            echo
"<td width=\"180\"  bgcolor=\"$color\">"."<a href=\"read.php?table=".$table."&period=".$period."&reqdate=".$reqdate."&stp=os&stp2=".$bar[0]."\">".$bar[0]."</a>"."</td>";
      } else
      
// Special link for provider
      
if ($title==$msgProviderSort ) {
            echo
"<td width=\"180\"  bgcolor=\"$color\">"."<a href=\"read.php?table=".$table."&period=".$period."&reqdate=".$reqdate."&stp=provider&stp2=".$bar[0]."\">".$bar[0]."</a>"."</td>";
      } else
      
//Regular display: no link
      
echo "<td width=\"180\"  bgcolor=\"$color\">".$bar[0]."</td>";

      
# List of stuff
      
echo "<td width=\"170\"  bgcolor=\"$color\">";
      
# Start of bar graph
      
print("<img src=\"image/bar_1.gif\" width=\"1\" height=\"12\" alt=\"$bar[1] hits  -  $pcbar %\">");
      
# Bar graph itself
      
print("<img src=\"image/bar_1u.gif\" width=\"$barwidth\" height=\"12\" alt=\"$bar[1] hits  -  $pcbar %\">");
      
# End of bar graph
      
print("<img src=\"image/bar_1.gif\" width=\"1\" height=\"12\" alt=\"$bar[1] hits  -  $pcbar %\">");
      echo
"</td>";

      echo
"<td  bgcolor=\"$color\">"."<div align=\"center\">".$bar[1]."</div></td>";
      echo
"<td bgcolor=\"$color\">"."<div align=\"center\">".$pcbar."%</div></td>";

      echo
"</tr>";
      
$sta = !$sta;
   }
}
    
# print total
   
echo "<tr bgcolor=\"#CCCCCC\">";
   echo
"<td colspan=\"4\"><div align=\"right\">Total: ".$val[Total]."</div></td>";
   echo
"<tr>";

echo
"</table>";
}
# end of fucntion ProcessBarGraph

##################################################################################
function MonthSort($table_log, $reqdate) {
// Global variables for SQL connection
global $server;
global
$user;
global
$password;
global
$base;

global
$msgSqlConnectImpossible;
global
$msgBaseConnectImpossible;
global
$msgMonthsArray;

$today_array = getdate($reqdate);

$c = mysql_connect("$server","$user","$password") or die($msgSqlConnectImpossible);
$db = mysql_select_db("$base") or die($msgBaseConnectImpossible);

// Query in history table
$table_log_h = $table_log."_h";
$val_array = array("Total"=>0);
$result = mysql_query ("SELECT UNIX_TIMESTAMP(date),hits FROM $table_log_h order by date ASC");

if (
$result !="") $row = mysql_fetch_array ($result);

if (
$row[0]!= NULL) {
    while (
$row = mysql_fetch_array ($result)) {
       
$date_array = getdate($row[0]);
       
$val_array = $val_array + array($msgMonthsArray[$date_array["mon"]-1]." ".$date_array["year"]=>$row[hits]);
       
$val_array["Total"] = $val_array["Total"] + $row[hits];
    }
# end while
}

// Query in regular table
// Regular table contains only data of current month
// All older data have been passed to the "_h" table via the Archive fucntion
$result = mysql_query ("SELECT count(*) FROM $table_log order by date ASC");
$row = mysql_fetch_array ($result);
$val_array = $val_array + array($msgMonthsArray[date(m)-1]." ".date(Y)=>$row[0]);
$val_array["Total"] = $val_array["Total"] + $row[0];

mysql_free_result ($result);
mysql_close ($c);
return
$val_array;
}

##################################################################################
function DaySort($table_log, $reqdate, $period) {
// Global variables for SQL connection
global $server;
global
$user;
global
$password;
global
$base;

$c = mysql_connect("$server","$user","$password") or die($msgSqlConnectImpossible);
$db = mysql_select_db("$base") or die($msgBaseConnectImpossible);
# select what to search for depending on selected period
switch ($period) {
    case
"semaine":
        
$q_string = "SELECT UNIX_TIMESTAMP(date) FROM $table_log WHERE WEEK(date)=WEEK(FROM_UNIXTIME('$reqdate')) order by date ASC";
        
$result = mysql_query ($q_string);
        break;
    case
"mois":
        
$q_string = "SELECT UNIX_TIMESTAMP(date) FROM $table_log WHERE MONTH(date)=MONTH(FROM_UNIXTIME('$reqdate')) order by date ASC";
        
$result = mysql_query ($q_string);
       break;
}
$val_array = array("Total"=>0);
$last_date_array = array(0,0,0,0,0,0,0,0,0,0);
$nb_lastval = 1;
$today_array = getdate($reqdate);
$i = 0;
while (
$row = mysql_fetch_array ($result)) {
    
$date_array = getdate($row[0]);
    if (
$date_array["year"] == $today_array["year"]) {
       if (
$date_array["mon"] == $today_array["mon"]) {
              if (  (
$last_date_array["mday"] == $date_array["mday"])  ) {
                 
$nb_lastval += 1;
              } else {
                         if (
$i<>0) {
                           
$val_array = $val_array + array($last_date_array["mday"]."/".$last_date_array["mon"]."/".$last_date_array["year"]=>$nb_lastval);
                           
$nb_lastval=1;
                         }
                     }
              
$last_date_array = $date_array;
              
$i += 1;
       }  
# end if mon
    
}  # end if year
} # end while
$val_array = $val_array + array($last_date_array["mday"]."/".$last_date_array["mon"]."/".$last_date_array["year"]=>$nb_lastval);
$val_array["Total"] = $i;
mysql_free_result ($result);
mysql_close ($c);
return
$val_array;
}

##################################################################################
function HourSort($table_log, $reqdate) {
// Global variables for SQL connection
global $server;
global
$user;
global
$password;
global
$base;

$c = mysql_connect("$server","$user","$password") or die($msgSqlConnectImpossible);
$db = mysql_select_db("$base") or die($msgBaseConnectImpossible);
$result = mysql_query ("SELECT UNIX_TIMESTAMP(date) FROM $table_log WHERE DAYOFYEAR(date)=DAYOFYEAR(FROM_UNIXTIME($reqdate)) order by date ASC");

$val_array = array("Total"=>0);
$last_date_array = array(0,0,0,0,0,0,0,0,0,0);
$nb_lastval = 1;
$today_array = getdate($reqdate);

$i = 0;
while (
$row = mysql_fetch_array ($result)) {
    
$date_array = getdate($row[0]);
    if (
$date_array["year"] == $today_array["year"]) {
       if (
$date_array["mon"] == $today_array["mon"]) {
          if (
$date_array["mday"] == $today_array["mday"]) {
              if (  (
$last_date_array["hours"] == $date_array["hours"])  ) {
                 
$nb_lastval += 1;
              } else {
                         if (
$i<>0) {
                           
$val_array = $val_array + array($last_date_array["hours"]." h"=>$nb_lastval);
                           
$nb_lastval=1;
                         }
                     }
              
$last_date_array = $date_array;
              
$i += 1;
          }  
# end if mday
       
}  # end if mon
    
}  # end if year
} # end while

$val_array = $val_array + array($last_date_array["hours"]." h"=>$nb_lastval);
$val_array["Total"] = $i;
mysql_free_result ($result);
mysql_close ($c);
return
$val_array;
}

##################################################################################
# This function will class a given collumn $field
# $field must be equal to a column field (i.e.: provider)
# function output a array like for os:
#    [Total] => 20
#    [Win95] => 12
#    [Win98] => 7
#    [WinNT] => 1
##################################################################################
function ClassAndCountField($table_log, $field,$reqdate,$period) {
// Global variables for SQL connection
global $server;
global
$user;
global
$password;
global
$base;

// Global variables from config.inc.php
global $sites;

$c = mysql_connect("$server","$user","$password") or die($msgSqlConnectImpossible);
$db = mysql_select_db("$base") or die($msgBaseConnectImpossible);
# select what to search for depending on selected period
switch ($period) {
    case
"jour":
        
$q_string = "SELECT $field FROM $table_log WHERE DAYOFYEAR(date)=DAYOFYEAR(FROM_UNIXTIME('$reqdate')) order by $field ASC";
        
$result = mysql_query ($q_string);
        break;
    case
"semaine":
        
$q_string = "SELECT $field FROM $table_log WHERE WEEK(date)=WEEK(FROM_UNIXTIME('$reqdate')) order by $field ASC";
        
$result = mysql_query ($q_string);
        break;
    case
"mois":
        
$q_string = "SELECT $field FROM $table_log WHERE MONTH(date)=MONTH(FROM_UNIXTIME('$reqdate')) order by $field ASC";
        
$result = mysql_query ($q_string);
       break;
}

$val_array = array("Total"=>0);
$lastval = "xxx";
$i = 0;
$nb_lastval = 1;

if (
$field !="referer") {
        while (
$row = mysql_fetch_array ($result)) {
           if (
$lastval == $row[$field]) {
             
$nb_lastval += 1;
           } else {
                if (
$i<>0) {
                      
$val_array = $val_array + array("$lastval"=>$nb_lastval);
                      
$nb_lastval=1;
                }
             }
           
$lastval = $row[$field];
           
$i += 1;
        }
  
$val_array = $val_array + array("$lastval"=>$nb_lastval);
  
$val_array["Total"] = $i;
}  else {
        while (
$row = mysql_fetch_array ($result)) {
          if (  
$row[0]!='' and !eregi($sites[$table_log],$row[0])) {
             if (
$lastval == $row[$field]) {
               
$nb_lastval += 1;
             } else {
                  if (
$i<>0) {
                        
$val_array = $val_array + array("$lastval"=>$nb_lastval);
                        
$nb_lastval=1;
                  }
               }
             
$lastval = $row[$field];
             
$i += 1;
          }
        }

  if (!
eregi($sites[$table_log],$lastval) and $lastval!="" ) {
     
$val_array = $val_array + array("$lastval"=>$nb_lastval);
     
$val_array["Total"] = $i;
  }
}


arsort($val_array);
mysql_free_result ($result);
mysql_close ($c);
return
$val_array;
}
##################################################################################
# This function will attempt to fill empty field in table_log such as
# country, provider, os, wb
##################################################################################
function ProcessEmptyEntry($table_log) {
// Global variables for SQL connection
global $server;
global
$user;
global
$password;
global
$base;

    
// Read the os_list and assign 2 arrays (label and id)
    
global $config;
    
$buffer = split ("\n",$config[os_list]);
    
$i=0;
    foreach(
$buffer as $buffer1) {
       list (
$os_id[$i], $os_label[$i]) = split ('[|]', $buffer1);
       
$i+=1;
    }

    
// Read the browser_list and assign 2 arrays (label and id)
    
$buffer = split ("\n",$config[browser_list]);
    
$i=0;
    foreach(
$buffer as $buffer1) {
       list (
$browser_id[$i], $browser_label[$i]) = split ('[|]', $buffer1);
       
$i+=1;
    }



$c = mysql_connect("$server","$user","$password") or die($msgSqlConnectImpossible);
$db = mysql_select_db("$base") or die($msgBaseConnectImpossible);
# Fill country column
$result = mysql_query ("SELECT * from $table_log WHERE country='' ");
while (
$row = mysql_fetch_array ($result)) {
    
$newval=ExtractCountry($row[host]);
    
$req = mysql_query("UPDATE $table_log SET country='$newval' where id='$row[id]' ");
}
# Fill provider column
$result = mysql_query ("SELECT * from $table_log WHERE provider='' ");
while (
$row = mysql_fetch_array ($result)) {
    
$newval=ExtractProvider($row[host],$row[address]);
    
$req = mysql_query("UPDATE $table_log SET provider='$newval' where id='$row[id]' ");
}
# Fill os column
$result = mysql_query ("SELECT * from $table_log WHERE os='' ");
while (
$row = mysql_fetch_array ($result)) {
    list(
$wb,$newval)=split(";",ExtractAgent($row[agent],$browser_id,$browser_label,$os_id,$os_label));
    
$req = mysql_query("UPDATE $table_log SET os='$newval' where id='$row[id]' ");
}

# Fill wb column
$result = mysql_query ("SELECT * from $table_log WHERE wb='' ");
while (
$row = mysql_fetch_array ($result)) {
    list(
$newval,$os)=split(";",ExtractAgent($row[agent],$browser_id,$browser_label,$os_id,$os_label));
    
$req = mysql_query("UPDATE $table_log SET wb='$newval' where id='$row[id]' ");
}
mysql_free_result ($result);
# mysql_free_result ($req);
mysql_close ($c);
return
True;
}
# end of function ProcessEmptyEntry

##################################################################################
# This function will clear : country, provider, os, wb
##################################################################################
function ClearAll($table_log) {
// Global variables for SQL connection
global $server;
global
$user;
global
$password;
global
$base;

global
$table;
global
$reqdate;
global
$period;
global
$msgContinue;

$c = mysql_connect("$server","$user","$password") or die($msgSqlConnectImpossible);
$db = mysql_select_db("$base") or die($msgBaseConnectImpossible);
$req = mysql_query("UPDATE $table_log SET country=''");
$req = mysql_query("UPDATE $table_log SET provider=''");
$req = mysql_query("UPDATE $table_log SET os=''");
$req = mysql_query("UPDATE $table_log SET wb=''");
# mysql_free_result ($req);
mysql_close ($c);

echo
"<a href=\"".basename($PHP_SELF)."?table=$table&reqdate=$reqdate&reset=0&period=$period"."\">$msgContinue</a>";
echo
"<br>";
exit;

return
True;
}  
# end of ClearAll


##################################################################################
# Use this function to extract domain name from a Host name
#  $hst should be equal to @getHostByAddr($REMOTE_ADDR)
#  for exemple www.ezboo.fr will return ezboo.fr
# but www.ezboo.co.jp will return ezboo.co.jp
##################################################################################
function ExtractProvider($hst, $addressip) {
global
$msgOther;

$hst_array = split("[.]",$hst);
$prov = $hst_array[sizeof($hst_array)-2].'.'.$hst_array[sizeof($hst_array)-1];
if (
$hst != $addressip) {
   if (
$prov == "co.jp" or $prov == "co.uk" ) return $hst_array[sizeof($hst_array)-3].".".$prov;
     else return
$prov ;
} else return
$msgOther;
}  
#end of ExtractProvider

##################################################################################
# Use this function to extract country name from a Host name
#  $hst should be equal to @getHostByAddr($REMOTE_ADDR)
#  for exemple www.ezboo.fr will return France
##################################################################################
function ExtractCountry($hst) {
// Global variables for SQL connection
global $server;
global
$user;
global
$password;
global
$base;

global
$msgSqlConnectImpossible;
global
$msgBaseConnectImpossible;
global
$msgSqlQuerryError;
global
$msgUnknown;

$hst_array = split("[.]",$hst);
$lastval = $hst_array[sizeof($hst_array)-1];  # last value in host name
$table_dom = "liste_domaines";
$c2 = mysql_connect("$server","$user","$password") or die($msgSqlConnectImpossible);
$db2 = mysql_select_db("$base") or die($msgBaseConnectImpossible);
$req2 = mysql_query("select description from $table_dom where domaine='$lastval' ") or die ($msgSqlQuerryError);

# Check that extension exist and return country name
# Otherwise return Unknown
if (mysql_numrows($req2) > 0)
   return
mysql_result($req2,0);
   else return
$msgUnknown;
mysql_close ($c2);
}  
# end of  ExtractCountry



##################################################################################
### Fonction de correction2 du nom de l'agent (navigateur et OS)
### Output syntax is a string like WebBrowser;OS
### You can extract OS and WebBrowser using:
### list($wb,$os)=split(";",ExtractAgent($HTTP_USER_AGENT));
### echo $wb."<br>";
### echo $os."<br>";
##################################################################################
function ExtractAgent($agt,$browser_id,$browser_label,$os_id,$os_label) {

  
// Init default values
  
$new_agt_browser="???";   // Do not change these ??? . It is used in other scripts
  
$new_agt_os="???";        // Do not change these ??? . It is used in other scripts
  // Check for browser
  
for ($cpt = 0; $cpt < count($browser_id) ; $cpt++) {
     if (
ereg($browser_id[$cpt],$agt)) $new_agt_browser=$browser_label[$cpt];
  }
  
// Check for OS
  
for ($cpt = 0; $cpt < count($os_id) ; $cpt++) {
     if (
ereg($os_id[$cpt],$agt)) $new_agt_os=$os_label[$cpt];
  }


  return(
$new_agt_browser.";".$new_agt_os);   # Systax is=  WebBrowser;OS
}   # End of function ExtraireAgent
##################################################################################
?>

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

:: Make Dir ::
 
[ Read-Only ]
:: Make File ::
 
[ Read-Only ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 1.0 pre-release build #16 powered by Captain Crunch Security Team | http://ccteam.ru | Generation time: 0.005 ]--