<?php
//
// Structure of 'browsers' table
//

//  CREATE TABLE browsers (
//     id int(10) unsigned DEFAULT '0' NOT NULL auto_increment,
//     user_agent varchar(255) NOT NULL,
//     banned CHAR(1) DEFAULT 'N' NOT NULL,
//     timestamp timestamp(14),
//     PRIMARY KEY (id)
//  );

// E-Mail Collectors are user agents used to harvest e-mail addresses
// from a web pages, usually to flood these e-mail addresses with 
// unsolicited commercial e-mail later.

// Default values coming from http://www.siteware.ch/webresources/useragents/collectors/

// INSERT INTO browsers (user_agent, banned) VALUES ('CherryPickerSE/1.0', 'Y'); 
// INSERT INTO browsers (user_agent, banned) VALUES ('CherryPickerElite/1.0', 'Y'); 
// INSERT INTO browsers (user_agent, banned) VALUES ('Crescent Internet ToolPak HTTP OLE Control v.1.0', 'Y'); 
// INSERT INTO browsers (user_agent, banned) VALUES ('EmailCollector/1.0', 'Y'); 
// INSERT INTO browsers (user_agent, banned) VALUES ('EmailSiphon', 'Y'); 
// INSERT INTO browsers (user_agent, banned) VALUES ('EmailWolf 1.00', 'Y'); 
// INSERT INTO browsers (user_agent, banned) VALUES ('ExtractorPro', 'Y'); 



if ( !defined( "_BROWSER_PHP" ) ){
  define("_BROWSER_PHP", 1 );

  require "./common.php";

  function ExtractAgent($agt) {

    if (ereg("MSIE", $agt)) {
     
      $new_agt = "Internet Explorer";
      $agt = strtr($agt, "_", " ");

      $ok = true;
      if     (ereg("3.02;",$agt)) $new_agt .= " 3.02 ;o) ";
      elseif (ereg("4.01;",$agt)) $new_agt .= " 4.01";
      elseif (ereg("4.0;",$agt))  $new_agt .= " 4.0";
      elseif (ereg("4.5;",$agt))  $new_agt .= " 4.5";
      elseif (ereg("5.0;",$agt))  $new_agt .= " 5.0";
      elseif (ereg("5.01;",$agt)) $new_agt .= " 5.01";
      elseif (ereg("5.5;",$agt))  $new_agt .= " 5.5";
      elseif (ereg("6.0;",$agt))  $new_agt .= " 6.0";
      else                        $ok = false;

      if ($ok)
	if     (ereg("Windows 95",$agt))  $new_agt .=  " - Win95";
      elseif (ereg("Windows 98",$agt))  $new_agt .=  " - Win98";
      elseif (ereg("Windows NT",$agt))  $new_agt .=  " - WinNT";
      elseif (ereg("Mac PowerPC",$agt)) $new_agt .=  " - Mac PPC";
	else                              $ok = false;

      if (! $ok) $new_agt = $agt;

    } elseif (ereg("Mozilla/4.",$agt)) {
       
      $new_agt = "Netscape";
    
      $ok = true;
      if     (ereg("4.04",$agt)) $new_agt .= " 4.04";
      elseif (ereg("4.05",$agt)) $new_agt .= " 4.05";
      elseif (ereg("4.06",$agt)) $new_agt .= " 4.06";
      elseif (ereg("4.07",$agt)) $new_agt .= " 4.07";
      elseif (ereg("4.08",$agt)) $new_agt .= " 4.08";
      elseif (ereg("4.51",$agt)) $new_agt .= " 4.51";
      elseif (ereg("4.5",$agt))  $new_agt .= " 4.5";
      elseif (ereg("4.61",$agt)) $new_agt .= " 4.61";
      elseif (ereg("4.6",$agt))  $new_agt .= " 4.6";
      elseif (ereg("4.71",$agt)) $new_agt .= " 4.71";
      elseif (ereg("4.72",$agt)) $new_agt .= " 4.72";
      elseif (ereg("4.7",$agt))  $new_agt .= " 4.7";
      else                       $ok = false;
	
      if ($ok)
	if     (ereg("Win95",$agt))   $new_agt .=  " - Win95";
      elseif (ereg("Win98",$agt))   $new_agt .=  " - Win98";
      elseif (ereg("WinNT",$agt))   $new_agt .=  " - WinNT";
      elseif (ereg("Linux",$agt))   $new_agt .=  " - Linux";
      elseif (ereg("SunOS",$agt))   $new_agt .=  " - SunOS";
      elseif (ereg("PPC",$agt))     $new_agt .=  " - Mac PPC";
      elseif (ereg("FreeBSD",$agt)) $new_agt .=  " - Free BSD";
	else                          $new_agt = $agt;

      if (! $ok) $new_agt = $agt;

    } elseif (ereg("Lynx", $agt)) {
      $new_agt = "Lynx - Linux";
    } elseif (ereg("WWWOFFLE", $agt)) {
      $new_agt = "WWWOFFLE - Linux";
    } else {
      $new_agt = $agt;
    }

    return($new_agt);

  }

  $browser_agent=  ExtractAgent($HTTP_USER_AGENT);
  
  $browser_sSQL = "SELECT id,banned FROM browsers WHERE user_agent='".$browser_agent."'";
  $q->query($DB, $browser_sSQL);
  if($q->numrows()){
    while($browser=$q->getrow()){
      // old browser, update timestamp
      $browser_sSQL = "UPDATE browsers SET timestamp=NOW() WHERE id=$browser[id]";
      $q->query($DB, $browser_sSQL);

      if ($browser[banned]=='Y') {
        // Banned user agent, do not grant access to phorum
        print "This user agent has been denied access to this forum";
        exit();
      }
    }
    $banned_browser_sSQL = "SELECT id FROM browsers WHERE banned=TRUE AND user_agent='".$browser_agent."'";
    $q->query($DB, $browser_sSQL);
    if($q->numrows()){
    while($browser=$q->getrow()){
      // old browser, update timestamp
      $browser_sSQL = "UPDATE browsers SET timestamp=NOW() WHERE id=$browser[id]";
      $q->query($DB, $browser_sSQL);
    }
  }

  }
  else {
    // new browser, store it
    $browser_sSQL = "INSERT INTO browsers (user_agent) VALUES ('".$browser_agent."')";
    $q->query($DB, $browser_sSQL);
  }

}  //close define

?>




