<?
/*
  Ben's spam tracking thingy v.61 - January 26, 2004
  Copyright (c) 2001-04 Ben Livingston <ben at smallclaim dot info>
  Released under the GNU General Public License Version 2
  Viewable online at http://www.gnu.org/copyleft/gpl.html

  To begin suing spammers, I needed some way to track who I called,
  faxed, emailed, etc. This rudimentary script gets the job done.

  Requires: MySQL, PHP (anything else?)

  Setup: create a new database and user, run the MySQL create table
  script at http://smallclaim.info/spamtracker/mysql.txt
  
  WARNING: THE DELETE FUNCTION DOESN'T VERIFY!
*/

/* user-defined variables */

define('DB_HOST','localhost');
define('DB_USER','spam_r');
define('DB_PASS','no.pass');
define('DB_NAME','spam');
define('SPAM_MBOX','/home/ben/public_html/spam/mbox');


/* begin functions */

function display_header() { ?>
<html><head><title>Spam tracking thing</title></head>
<body>
<form method="get" action="<? echo $_SERVER['PHP_SELF']; ?>">
[<a href="<? echo $_SERVER['PHP_SELF'?>">Home</a>]
[<a href="<? echo $_SERVER['PHP_SELF'?>?add=company">Add Company</a>]
[<a href="<? echo $_SERVER['PHP_SELF'?>?show=incoming">Show Incoming Spam</a>]
[<a href="<? echo $_SERVER['PHP_SELF'?>?check=incoming">Compare Keywords</a>]
<input type="text" name="q">
<input type="submit" VALUE="Search">
</form>

<? }

function 
display_footer() {
  
#echo "<p>If you found this page through Google, it likely means you're tracking a spammer. I may be suing them; check out <a href=\"http://smallclaim.info/\">smallclaim.info</a> to find out.</p>";
  
echo "</body></html>\n";
}

function 
search($q) {
  echo 
"You searched for <b><i>$q</i></b>. Try this search on [<a href=\"http://www.google.com/search?q=$q\">Google</a>] [<a href=\"http://groups.google.com/groups?q=$q\">Google Groups</a>] [<a href=\"http://groups.google.com/groups?q=$q&meta=group%3Dnews.admin.net-abuse.email\">NANAE</a>] [<a href=\"http://www.rokso.org/spammers.lasso?-database=spammers.db&-layout=list&-response=roksolist.lasso&-noresultserror=norecords.lasso&-operator=cn&status=live&-clientusername=guest&-clientpassword=guest&evidence=$q&-search=Search&-search=\">ROKSO</a>].<br><br>";
  
$result mysql(DB_NAME,"SELECT * FROM action WHERE action LIKE '%$q%'")
    or die(
'Bad query: '.mysql_errno());
  if (
mysql_num_rows($result)) {
    while (
$row mysql_fetch_object($result)) {
      echo 
'Action: <a href="' $_SERVER['PHP_SELF'] . '?show=company&id=$row->company_id">' $row->action_id '</a> - ' stripslashes($row->action) . "<br>\n";
    }
  }
  
$result mysql(DB_NAME,"SELECT spam_id,company_id FROM spam WHERE spam LIKE '%$q%'")
    or die(
'Bad query: '.mysql_error());
  if (
mysql_num_rows($result)) {
    while (
$row mysql_fetch_object($result)) {
      echo 
'Spam: <a href="' $_SERVER['PHP_SELF'] . '?show=spam&id=' $row->spam_id '">' $row->spam_id '</a> [<a href="' $_SERVER['PHP_SELF'] . '?show=company&id=' $row->company_id '">company</a>]<br>' "\n";
    }
  }
  
$result mysql(DB_NAME,"SELECT incoming_id FROM incoming WHERE spam LIKE '%$q%' ORDER BY incoming_id DESC")
    or die(
'Bad query: '.mysql_error());
  if (
mysql_num_rows($result)) {
    while (
$row mysql_fetch_object($result)) {
      echo 
'Incoming: <a href="' $_SERVER['PHP_SELF'] . "?show=incoming&id=$row->incoming_id\">$row->incoming_id</a> \n";
      echo 
'[<a href="' $_SERVER['PHP_SELF'] . "?delete=incoming&id=$row->incoming_id\">delete</a>]<br>\n";
    }
  }
}

function 
display_list() {
  global 
$status_array;
  
#$result = mysql("$db_name","SELECT company.*,COUNT(DISTINCT action.action_id) AS action,COUNT(DISTINCT spam.spam_id) AS spam FROM company,action,spam WHERE company.company_id=action.company_id AND company.company_id=spam.company_id GROUP BY company.company_id;")
  # $result = mysql(DB_NAME,"SELECT company.*,COUNT(DISTINCT action.action_id) AS action,COUNT(DISTINCT spam.spam_id) AS spam,COUNT(DISTINCT keyword.keyword_id) AS keyword FROM company LEFT JOIN action ON (action.company_id=company.company_id) LEFT JOIN spam ON (spam.company_id=company.company_id) LEFT JOIN keyword ON (keyword.company_id=company.company_id) GROUP BY company.company_id ORDER BY action DESC, spam DESC;")
  // This is becoming slow. Ben changed this Jan 9, 2004 to speed it up.
  
$result mysql(DB_NAME,"SELECT company.*,COUNT(DISTINCT action.action_id) AS action,COUNT(DISTINCT keyword.keyword_id) AS keyword FROM company LEFT JOIN action ON (action.company_id=company.company_id) LEFT JOIN keyword ON (keyword.company_id=company.company_id) GROUP BY company.company_id ORDER BY action DESC;")
  
# $result = mysql(DB_NAME,"SELECT company.*,COUNT(DISTINCT action.action_id) AS action,COUNT(DISTINCT spam.spam_id) AS spam,COUNT(DISTINCT keyword.keyword_id) AS keyword FROM company LEFT JOIN action ON (action.company_id=company.company_id) LEFT JOIN spam ON (spam.company_id=company.company_id) LEFT JOIN keyword ON (keyword.company_id=company.company_id) GROUP BY company.company_id ORDER BY action DESC, spam DESC;")';
    
or die(mysql_error());
  echo 
"<h1>COMPANIES</h1>\n\n";
  if (
mysql_num_rows($result)) {
    echo 
"<table>\n<tr>\n<th>Actions</th>\n<th>Keyword</th>\n<th>Company</th>\n<th>Status</th>\n</tr>";
    
//echo "<table>\n<tr>\n<th>Spams</th>\n<th>Actions</th>\n<th>Keyword</th>\n<th>Company</th>\n<th>Status</th>\n</tr>";
    
while($row mysql_fetch_object($result)) {
      echo 
"<tr>\n<td>$row->action</td>\n<td>$row->keyword</td>\n";
      
//echo "<tr>\n<td>$row->spam</td>\n<td>$row->action</td>\n<td>$row->keyword</td>\n";
      
echo '<td><a href="' $_SERVER['PHP_SELF'] . "?show=company&id=$row->company_id\">";
      if (
$row->name) echo $row->name;
        else echo 
$row->company_id;
      echo 
"</a></td><td>";
      echo 
$status_array[$row->status];
      echo 
"</td></tr>\n";
    }
    echo 
"</table>\n\n";
  }
}

function 
display_company($id) {
  global 
$status_array;
  
$result mysql(DB_NAME,"SELECT * FROM company WHERE company_id='$id'")
    or die(
'Bad query: '.mysql_errno());
  if (
mysql_num_rows($result)) {
    
$row mysql_fetch_object($result);
    if (
$row->name) echo "<h1>$row->name</h1>\n";
    if (
$row->status) echo "<p><b>Status:</b> " $status_array[$row->status] . "</p>\n";
  }
  echo 
'[<a href="' $_SERVER['PHP_SELF'] . "?modify=company&id=$id\">Modify company</a>] \n";
  echo 
'[<a href="' $_SERVER['PHP_SELF'] . "?add=spam&company=$id\">Add spam</a>] \n";
  echo 
'[<a href="' $_SERVER['PHP_SELF'] . "?add=action&company=$id\">Add action</a>] \n";
  echo 
'[<a href="' $_SERVER['PHP_SELF'] . "?add=keyword&company=$id\">Add keyword</a>] \n";
  
$result mysql(DB_NAME,"SELECT * FROM action WHERE company_id='$id'")
    or die(
'Bad query: '.mysql_errno());
  if (
mysql_num_rows($result)) {
    echo 
"<h1>Actions</h1>\n";
    while(
$row mysql_fetch_object($result)) {
      echo 
'[<a href="' $_SERVER['PHP_SELF'] . "?modify=action&id=$row->action_id\">modify</a>][<a href=\"" $_SERVER['PHP_SELF'] . "?delete=action&id=$row->action_id&company=$id\">delete</a>] ";
      echo 
"$row->date: " stripslashes($row->action) . "<br>\n";
    }
  }
  
$result mysql(DB_NAME,"SELECT * FROM keyword WHERE company_id='$id'")
    or die(
'Bad query: '.mysql_errno());
  if (
mysql_num_rows($result)) {
    echo 
"<h1>Keywords</h1>\n";
    while(
$row mysql_fetch_object($result)) {
      echo 
'[<a href="' $_SERVER['PHP_SELF'] . "?modify=keyword&id=$row->keyword_id\">modify</a>][<a href=\"" $_SERVER['PHP_SELF'] . "?delete=keyword&id=$row->keyword_id&company=$id\">delete</a>] ";
      echo 
stripslashes($row->keyword) . "<br>\n";
    }
  }
  
$result mysql(DB_NAME,"SELECT spam_id,date FROM spam WHERE company_id='$id' ORDER BY spam_id DESC")
    or die(
'Bad query: '.mysql_errno());
  if (
mysql_num_rows($result)) {
    echo 
"<h1>Spam</h1>\n";
    while(
$row mysql_fetch_object($result)) {
      echo 
"[<a href=\"" $_SERVER['PHP_SELF'] . "?modify=spam&id=$row->spam_id\">modify</a>][<a href=\"" $_SERVER['PHP_SELF'] . "?delete=spam&id=$row->spam_id&company=$id\">delete</a>] " date("Y-m-d",$row->spam_id) . ": <a href=\"" $_SERVER['PHP_SELF'] . "?show=spam&id=$row->spam_id\">Spam $row->spam_id</a><br>\n\n";
    }
  }
}

function 
display_spam($id,$db='spam') {
  
$result mysql(DB_NAME,"SELECT * FROM $db WHERE " $db ."_id='$id'")
    or die(
'Bad query: '.mysql_errno());
  if (
mysql_num_rows($result)) {
    
$row mysql_fetch_object($result);
    echo 
"[<a href=\"" $_SERVER['PHP_SELF'] . "?modify=$db&id=$id\">Modify $db</a>] \n";
    echo 
"[<a href=\"" $_SERVER['PHP_SELF'] . "?delete=$db&id=$id&company=$row->company_id\">Delete $db</a>]<br>\n";
    echo 
"<table>\n";
    if (
$row->company_id) echo "<tr><td align=\"right\">Company:</td><td><a href=\"" $_SERVER['PHP_SELF'] . "?show=company&id=$row->company_id\">$row->company_id</a></td></tr>";
    echo 
"<tr><td align=\"right\">ID:</td><td>" $row->{$db."_id"} . "</td></tr>\n";
    echo 
"<tr><td align=\"right\">Date:</td><td>$row->date</td></tr>\n";
    echo 
"</table>\n\n";
    
$spam $row->spam;
  }
  echo 
"<h1>" strtoupper($db) . "</h1>\n";
  echo 
"<pre>" htmlspecialchars($spam) . "\n</pre>\n";
}

function 
company($id='') {
  global 
$status_array;
  if (
$id) {
    
$result mysql(DB_NAME"SELECT * FROM company WHERE company_id=$id");
    if (!
mysql_num_rows($result)) die("The company ID supplied didn't exist. Quit lying to me.");
    
$row mysql_fetch_object($result);
    echo 
"<form action=\"" $_SERVER['PHP_SELF'] . "?modify=company\" method=\"post\">\n\n";
    echo 
"<input type=\"hidden\" name=\"id\" VALUE=\"$id\">\n";
  }
  else
    echo 
"<form action=\"" $_SERVER['PHP_SELF'] . "?add=company\" method=\"post\">\n\n";
  echo 
"<table border=\"0\">\n"
  echo 
"<tr><td align=\"right\" valign=\"top\">Company:</td><td><input type=\"text\" name=\"name\"";
  if (
$row->name) echo " VALUE=\"" $row->name "\"";
  echo 
"></td></tr>\n";
  echo 
"<tr><td align=\"right\" valign=\"top\">Status:</td><td><select name=\"status\">\n";
  foreach(
$status_array as $key => $value) {
    echo 
"<option value=\"$key\"";
    if (
$row->status == $key) echo ' SELECTED';
    echo 
">$value\n";
  }
  echo 
"</select></td></tr>\n";
  echo 
"<tr><td align=\"right\" valign=\"top\">Notes:</td><td><textarea name=\"notes\" ROWS=\"15\" COLS=\"60\" NOWRAp>";
  if (
$row->notes) echo stripslashes($row->notes);
  echo 
"</textarea></td></tr>\n";
  echo 
"<tr><td>&nbsp;</td><td><input type=\"submit\" name=\"submit\" VALUE=\"";
  if (
$id)
    echo 
"Modify";
  else
    echo 
"Add";
  echo 
" Company\"></td></tr>\n";
  echo 
"</table>\n\n</form>\n\n";
}

function 
add_company($name,$status='',$notes='') {
  
$id time();
  
mysql(DB_NAME,"INSERT INTO company (company_id,name,status,notes) VALUES ('" addslashes($id) . "','" addslashes($name) . "','" addslashes($status) . "','" addslashes($notes) . "')")
    or die(
'Bad query: '.mysql_error());
  
display_company($id);
}

function 
modify_company($id,$name,$status='',$notes='') {
  
mysql(DB_NAME,"UPDATE company SET name='" addslashes($name) . "',status='" addslashes($status) . "',notes='" addslashes($notes) . "' WHERE company_id='" addslashes($id) . "'")
    or die(
'Bad query: '.mysql_error());
}

function 
action($id='',$company='') {
  if (
$id) {
    
$result mysql(DB_NAME"SELECT * FROM action WHERE action_id=$id");
    if (!
mysql_num_rows($result)) die("The action ID supplied didn't exist. Quit lying to me.");
    
$row mysql_fetch_object($result);
    echo 
"<form action=\"" $_SERVER['PHP_SELF'] . "?modify=action\" method=\"post\">\n\n";
    echo 
"<input type=\"hidden\" name=\"id\" value=\"$id\">\n";
    
$company $row->company_id;
  }
  else
    echo 
'<form action="' $_SERVER['PHP_SELF'] . '?add=action" method="post">' "\n\n";
  echo 
"<input type=\"hidden\" name=\"company\" VALUE=\"$company\">\n\n";
  echo 
"<table border=\"0\">\n"
  echo 
"<tr><td align=\"right\" valign=\"top\">Date:</td><td><input type=\"text\" name=\"date\"";
  if (
$row->date) echo " VALUE=\"" $row->date "\"";
  echo 
"></td></tr>\n";
  echo 
"<tr><td align=\"right\" valign=\"top\">Action:</td><td><input type=\"text\" name=\"action\"";
  if (
$row->action) echo " VALUE=\"$row->action\"";
  echo 
"></td></tr>\n";
  echo 
"<tr><td>&nbsp;</td><td><input type=\"submit\" name=\"submit\" VALUE=\"";
  if (
$id)
    echo 
"Modify";
  else
    echo 
"Add";
  echo 
" Action\"></td></tr>\n";
  echo 
"</table>\n\n</form>\n\n";
}

function 
add_action($company,$date,$action) {
  
$id time();
  
mysql(DB_NAME,"INSERT INTO action (action_id,company_id,date,action) VALUES ('" addslashes($id) . "','" addslashes($company) . "','" addslashes($date) . "','" addslashes($action) . "')")
    or die(
'Bad query: '.mysql_error());
}

function 
modify_action($id,$company='',$date,$action) {
  
mysql(DB_NAME,"UPDATE action SET date='" addslashes($date) . "',action='" addslashes($action) . "' WHERE action_id='" addslashes($id) . "'")
    or die(
'Bad query: '.mysql_error());
}

function 
keyword($id='',$company='') {
  if (
$id) {
    
$result mysql(DB_NAME"SELECT * FROM keyword WHERE keyword_id=$id");
    if (!
mysql_num_rows($result)) die("The keyword ID supplied didn't exist. Quit lying to me.");
    
$row mysql_fetch_object($result);
    echo 
"<form action=\"" $_SERVER['PHP_SELF'] . "?modify=keyword\" method=\"post\">\n\n";
    echo 
"<input type=\"hidden\" name=\"id\" VALUE=\"$id\">\n";
    
$company $row->company_id;
  }
  else
    echo 
"<form action=\"" $_SERVER['PHP_SELF'] . "?add=keyword\" method=\"post\">\n\n";
  echo 
"<input type=\"hidden\" name=\"company\" VALUE=\"$company\">\n\n";
  echo 
"<table border=\"0\">\n"
  echo 
"<tr><td align=\"right\" valign=\"top\">Keyword:</td><td><input type=\"text\" name=\"keyword\"";
  if (
$row->keyword) echo " VALUE=\"$row->keyword\"";
  echo 
"></td></tr>\n";
  echo 
"<tr><td>&nbsp;</td><td><input type=\"submit\" name=\"submit\" VALUE=\"";
  if (
$id)
    echo 
"Modify";
  else
    echo 
"Add";
  echo 
" Keyword\"></td></tr>\n";
  echo 
"</table>\n\n</form>\n\n";
}

function 
add_keyword($company,$keyword) {
  
$id time();
  
mysql(DB_NAME,"INSERT INTO keyword (keyword_id,company_id,keyword) VALUES ('" addslashes($id) . "','" addslashes($company) . "','" addslashes($keyword) . "')")
    or die(
'Bad query: '.mysql_error());
}

function 
modify_keyword($id,$company='',$keyword) {
  
mysql(DB_NAME,"UPDATE keyword SET keyword='" addslashes($keyword) . "' WHERE keyword_id='" addslashes($id) . "'")
    or die(
'Bad query: '.mysql_error());
}

function 
delete($delete,$id) {
  
mysql(DB_NAME,"DELETE FROM $delete WHERE " $delete "_id='$id'")
    or die(
'Bad query: '.mysql_error());
}

function 
spam($id='',$company='') {
  if (
$id) {
    
$result mysql(DB_NAME"SELECT * FROM spam WHERE spam_id=$id");
    if (!
mysql_num_rows($result)) die("The ID supplied didn't exist. Quit lying to me.");
    
$row mysql_fetch_object($result);
    echo 
"<form action=\"" $_SERVER['PHP_SELF'] . "?modify=spam\" method=\"post\">\n\n";
    echo 
"<input type=\"hidden\" name=\"id\" VALUE=\"$id\">\n";
    
$company $row->company_id;
  }
  else
    echo 
"<form action=\"" $_SERVER['PHP_SELF'] ."?add=spam\" method=\"post\">\n\n";
  echo 
"<input type=\"hidden\" name=\"company\" VALUE=\"$company\">\n\n";
  echo 
"<table border=\"0\">\n"
  echo 
"<tr><td align=\"right\" valign=\"top\">Date:</td><td><input type=\"text\" name=\"date\"";
  if (
$row->date) echo " VALUE=\"" $row->date "\"";
  echo 
"></td></tr>\n";
  echo 
"<tr><td align=\"right\" valign=\"top\">Spam:</td><td><textarea name=\"spam\" ROWS=\"15\" COLS=\"60\" NOWRAp>";
  if (
$row->spam) echo stripslashes($row->spam);
  echo 
"</textarea></td></tr>\n";
  echo 
"<tr><td>&nbsp;</td><td><input type=\"submit\" name=\"submit\" VALUE=\"";
  if (
$id)
    echo 
"Modify";
  else
    echo 
"Add";
  echo 
" Spam\"></td></tr>\n";
  echo 
"</table>\n\n</form>\n\n";
}

function 
add_spam($company,$date='',$spam) {
  
$id time();
  
mysql(DB_NAME,"INSERT INTO spam (spam_id,company_id,date,spam) VALUES ('" addslashes($id) . "','" addslashes($company) . "','" addslashes($date) . "','" addslashes($spam) . "')")
    or die(
'Bad query: '.mysql_error());
}

function 
modify_spam($id,$date,$spam) {
  
mysql(DB_NAME,"UPDATE spam SET date='" addslashes($date) . "',spam='" addslashes($spam) . "' WHERE spam_id='" addslashes($id) . "'")
    or die(
'Bad query: '.mysql_error());
}


function 
insert_spam($id$message) {
/*
    Does the database insert for the input_new_spam() function.
    If date received is already an incoming_id in incoming table, adds one second.
*/
    
mysql(DB_NAME,"INSERT INTO incoming (incoming_id,spam) VALUES ('$id','" addslashes($message) . "');")
        or 
$error mysql_errno();
    if (
$error == '1062') {
        echo 
"Duplicate entry $id. Adding 1.<br>";
        
$id++;
        
insert_spam($id,$message);
    }
    elseif (
$error) {
        die (
mysql_error());
    }
    
//echo htmlspecialchars($message);
    
return;
}

function 
input_new_spam($spam_mbox) {
/*
    Reads an mbox full of spam and adds it all to the incoming database.
*/
    
$fd fopen($spam_mbox,"r+")
      or die(
"error opening $spam_box for reading and writing.");
    for (
$count 0; !feof($fd), $buffer fgets($fd4096); $message .= $buffer) {
        if (!
$one_time) {
            
$id  strtotime(ereg_replace('^From [^ ]+ [[:alpha:]]{3} ([[:alpha:]]{3} [0-9]{2}) (.*) ([0-9]{4})''\\1 \\3 \\2'$buffer));
            
$one_time=1;
        }
        if ((
$blank_line) && (ereg("^From ",$buffer))) {
            
$blank_line=0;
            
$count++;
            
$message insert_spam($id,$message);
            
$id  strtotime(ereg_replace('^From [^ ]+ [[:alpha:]]{3} ([[:alpha:]]{3} [0-9]{2}) (.*) ([0-9]{4})''\\1 \\3 \\2'$buffer));
        }
        elseif (
ereg("^\n$",$buffer)) $blank_line=1;
        
/* elseif (ereg("^Subject: suable spam.*",$buffer)) $buffer = "Subject: failure notice\n"; */
    
}
    
// one last message to insert.
    
if ($message) {
      
$count++;
      
insert_spam($id,$message);
    }
    
// report on number of messages parsed
    
echo "$count messages parsed.<br>\n";
    
// clear out file
    
rewind ($fd);
    if (
ftruncate($fd,0))
      echo 
"Spam file successfully cleared out.<br>\n";
    else
      echo 
"Error: could not clear out spam file. Contact an admin.<BR>\n";

    
fclose ($fd);
    
//check_incoming();
}


function 
check_incoming($spam_mbox='') {
/*
    Compares all keywords against the incoming database and moves
    matches from incoming to spam database.
*/
    
if ($spam_mbox) echo "<p>[<a href=\"" $_SERVER['PHP_SELF'] . "?input=incoming\">Input new spam from $spam_mbox</a>]</p>\n\n";
    
$result mysql(DB_NAME,"SELECT keyword.*,company.name AS name FROM keyword,company WHERE company.company_id=keyword.company_id")
        or die(
'Bad query: '.mysql_errno());
    if (
mysql_num_rows($result)) {
        while (
$keyword mysql_fetch_object($result)) {
            
$result2 mysql(DB_NAME,"SELECT * FROM incoming WHERE spam LIKE '%$keyword->keyword%'")
                or die(
'Bad query: '.mysql_errno());
            while (
$spam mysql_fetch_object($result2)) {
                
mysql(DB_NAME,"INSERT INTO spam (spam_id,spam,company_id) SELECT incoming_id,spam,'$keyword->company_id' FROM incoming WHERE incoming_id='$spam->incoming_id'")
                    or die(
'Bad query: '.mysql_error());
                
mysql(DB_NAME,"DELETE FROM incoming WHERE incoming_id='$spam->incoming_id'")
                    or die(
'Bad query: '.mysql_error());
                echo 
"<p>Keyword <b>$keyword->keyword</b>: Added spam id #<a href=\"" $_SERVER['PHP_SELF'] . "?show=spam&id=$spam->incoming_id\">$spam->incoming_id</a> to <a href=\"" $_SERVER['PHP_SELF'] . "?show=company&id=$keyword->company_id\"> $keyword->name</a>.</p>";
            }
        }
    }
    
$result mysql_query("SELECT incoming_id FROM incoming")
        or die(
mysql_error());
    
$total mysql_num_rows($result);
    echo 
"<p>Total incoming: $total</p>\n\n";
    for (; 
$x<$total$x++) {
        
$id mysql_result($result,$x);
        echo 
"<a href=\"" $_SERVER['PHP_SELF'] . "?show=incoming&id=$id\">$id</a><br>";
    }
}

function 
show_incoming() {
/*
    Displays a list of messages in the incoming spam database.
*/
    
$result mysql_query("SELECT incoming_id FROM incoming ORDER BY incoming_id DESC")
        or die(
mysql_error());
    
$total mysql_num_rows($result);
    echo 
"<p>Total incoming: $total</p>\n\n";
    for (; 
$x<$total$x++) {
        
$id mysql_result($result,$x);
        echo 
"<a href=\"" $_SERVER['PHP_SELF'] . "?show=incoming&id=$id\">$id</a> ";
        echo 
"[<a href=\"" $_SERVER['PHP_SELF'] . "?delete=incoming&id=$id\">delete</a>]<br>";
    }
}

/* begin main program */

display_header();
$f mysql_pconnect(DB_HOST,DB_USER,DB_PASS);
mysql_select_db(DB_NAME);
$status_array = array ("Not pursuing","Need more research","Ready to file","Awaiting service","Awaiting trial");

if (
$_REQUEST['q'])
  
search($_REQUEST['q']);
  
elseif (
$_REQUEST['add']=='company') {
  if (
$_REQUEST['name']) add_company($_REQUEST['name'],$_REQUEST['status'],$_REQUEST['notes']);
  else 
company();

elseif (
$_REQUEST['add']=='spam') {
  if (
$_REQUEST['company']) {
    if (
$_REQUEST['spam']) {
      
add_spam($_REQUEST['company'],$_REQUEST['date'],$_REQUEST['spam']);
      
display_company($_REQUEST['company']);
    }
    else 
spam('',$_REQUEST['company']);
  }
  else echo 
"Error: no company id";
}
elseif (
$_REQUEST['add']=='action') {
  if (
$_REQUEST['company']) {
    if (
$_REQUEST['action']) {
      
add_action($_REQUEST['company'],$_REQUEST['date'],$_REQUEST['action']);
      
display_company($_REQUEST['company']);
    }
    else 
action('',$_REQUEST['company']);
  }
  else echo 
"Error: no company id";
}
elseif (
$_REQUEST['add']=='keyword') {
  if (
$_REQUEST['company']) {
    if (
$_REQUEST['keyword']) {
      
add_keyword($_REQUEST['company'],$_REQUEST['keyword']);
      
display_company($_REQUEST['company']);
    }
    else 
keyword('',$_REQUEST['company']);
  }
  else echo 
"Error: no company id";
}

elseif (
$_REQUEST['modify']=='company') {
  if (
$_REQUEST['id']) {
    if (
$_REQUEST['name']) {
      
modify_company($_REQUEST['id'],$_REQUEST['name'],$_REQUEST['status'],$_REQUEST['notes']);
      
display_company($_REQUEST['id']);
    }
    else 
company($_REQUEST['id']);
  }
}
elseif (
$modify=='spam') {
  if (
$_REQUEST['id']) {
    if (
$_REQUEST['spam']) {
      
modify_spam($_REQUEST['id'],$_REQUEST['date'],$_REQUEST['spam']);
      
display_company($_REQUEST['company']);
    }
    else 
spam($_REQUEST['id']);
  }
}
elseif (
$_REQUEST['modify']=='action') {
  if (
$_REQUEST['id']) {
    if (
$_REQUEST['action']) {
      
modify_action($_REQUEST['id'],$_REQUEST['company'],$_REQUEST['date'],$_REQUEST['action']);
      
display_company($_REQUEST['company']);
    }
    else 
action($_REQUEST['id']);
  }
  else echo 
"Error: no action id.";
}
elseif (
$_REQUEST['modify']=='keyword') {
  if (
$_REQUEST['id']) {
    if (
$_REQUEST['keyword']) {
      
modify_keyword($_REQUEST['id'],$_REQUEST['company'],$_REQUEST['keyword']);
      
display_company($_REQUEST['company']);
    }
    else 
keyword($_REQUEST['id']);
  }
  else echo 
"Error: no keyword id.";
}
elseif ((
$_REQUEST['show']=='company') && ($_REQUEST['id']))
  
display_company($_REQUEST['id']);
elseif ((
$_REQUEST['show']=='spam') && ($_REQUEST['id']))
  
display_spam($_REQUEST['id']);
elseif ((
$_REQUEST['show']=='incoming') && (is_numeric($_REQUEST['id'])))
  
display_spam($_REQUEST['id'],'incoming');
elseif ((
$_REQUEST['delete']) && (is_numeric($_REQUEST['id']))) {
  
delete($_REQUEST['delete'], $_REQUEST['id']);
  if (
$_REQUEST['company'])
    
display_company($_REQUEST['company']);
  else
    
show_incoming();
}
elseif (
$_REQUEST['input'] == 'incoming') {
  
input_new_spam(SPAM_MBOX);
}
elseif (
$_REQUEST['show'] == 'incoming')
  
show_incoming();
elseif (
$_REQUEST['check'] == 'incoming')
  
check_incoming(SPAM_MBOX);
else
  
display_list();

display_footer();

?>