diff -u -r -N yasuck-0.0.1.orig/docs/ChangeLog yasuck-0.0.1/docs/ChangeLog --- yasuck-0.0.1.orig/docs/ChangeLog 2004-09-17 17:01:35.000000000 -0500 +++ yasuck-0.0.1/docs/ChangeLog 2004-09-17 23:25:11.690058232 -0500 @@ -4,6 +4,15 @@ *yasuck-0.0.1 (17 Sep 2004) + 17 Sep 2004; Mike Green docs/ChangeLog, + includes/app.functions.php, includes/globals.php, yasuck, + patch-0.0.1-01: + + Added --skipmsgs, --poster, and --subject arguments. These arguments + skip adding the entire message text to the database and allow searchs + on the poster or subject. Added MAXMISSES to abort if it is determined + that the network may be down. Updated ChangeLog and created patch. + 17 Sep 2004; Mike Green docs/ChangeLog: First rough cut release. diff -u -r -N yasuck-0.0.1.orig/includes/app.functions.php yasuck-0.0.1/includes/app.functions.php --- yasuck-0.0.1.orig/includes/app.functions.php 2004-09-17 16:56:12.000000000 -0500 +++ yasuck-0.0.1/includes/app.functions.php 2004-09-17 23:15:56.306489368 -0500 @@ -16,7 +16,15 @@ } if (in_array("--debug",$args)) { - define(DEBUG,true); } else { define(DEBUG,false); } + define(DEBUG,true); + } else { + define(DEBUG,false); + } +if (in_array("--skipmsgs",$args)) { + define(SKIPMSGS,true); + } else { + define(SKIPMSGS,false); + } if (in_array("--sanity",$args)) { die(sanityCheck()); } if (in_array("--help",$args)) { die(helpMessage()); } if (in_array("--init",$args)) { die(initializeDatabase()); } @@ -29,6 +37,7 @@ $arg = $args[$j]; switch($arg) { case "--debug": + case "--skipmsgs": continue; break; case "--end": @@ -47,6 +56,14 @@ if (substr($board,0,2) == "--") { die(helpMessage()); } continue; break; + case "--poster": + $j++; + $text = $args[$j]; + if (empty($text)) { die(helpMessage()); } + if (substr($text,0,2) == "--") { die(helpMessage()); } + define(AUTHOR_SEARCH,true); + define(AUTHOR_TEXT,$text); + break; case "--start": $j++; $start = $args[$j]; @@ -63,6 +80,14 @@ if (substr($board,0,2) == "--") { die(helpMessage()); } continue; break; + case "--subject": + $j++; + $text = $args[$j]; + if (empty($text)) { die(helpMessage()); } + if (substr($text,0,2) == "--") { die(helpMessage()); } + define(SUBJECT_SEARCH,true); + define(SUBJECT_TEXT,$text); + break; default: die(helpMessage()); break; @@ -148,6 +173,8 @@ if ($board == '') { die("No board specified for status check.\n"); } +checkDatabase(); + $msg = ''; $info_ar = queryBoardInfo($board); if ($info_ar === false or !is_array($info_ar)) { @@ -219,25 +246,6 @@ /***************************************************************************** * * *****************************************************************************/ -function toggleLock($board_id='',$lock=1) { - -if ($board_id == '' or !is_numeric($board_id)) { return false; } -if (!$lock == 1 and !$lock == 0) { return false; } - -$board_id = addslashes($board_id); -$lock = addslashes($lock); -$sql = "update " . DBN . ".board_ids set locked=$lock -where board_id=$board_id limit 1"; -if (!$qid = db_query($sql)) { return false; } -if (! db_affected_rows() == 1) { return false; } - -return true; - -} - -/***************************************************************************** - * * - *****************************************************************************/ function getUa() { $randomize = false; @@ -327,14 +335,17 @@ $fname = $_SERVER['argv'][0]; $msg = "Usage: $fname action args [--start msg] [--end msg] - --debug Turn on verbose debug messages - --end MSG End with message number MSG (optional) - --get BOARD Retrieve messages from board BOARD - --help Display this help message - --init Initialize database (destructive) - --sanity Run sanity check and display results - --start MSG Start with message number MSG (optional) - --status BOARD Display status of board BOARD database\n"; + --debug Turn on verbose debug messages + --end MSG End with message number MSG (optional) + --get BOARD Retrieve messages from board BOARD + --help Display this help message + --init Initialize database (destructive) + --poster POSTER Only retrieve messages posted by POSTER + --sanity Run sanity check and display results + --skipmsgs Don't import messages (subject/poster only) + --start MSG Start with message number MSG (optional) + --status BOARD Display status of board BOARD database + --subject SUBJECT Only retrieve messages with subject SUBJECT\n"; die($msg); @@ -412,7 +423,7 @@ $poster_ids = "create table " . DBN . ".poster_ids ( poster_id int(10) unsigned NOT NULL auto_increment, -poster_name varchar(50) NOT NULL default '', +poster_name varchar(100) NOT NULL default '', PRIMARY KEY (poster_id), UNIQUE KEY poster_name (poster_name))"; @@ -821,13 +832,21 @@ echo "$message_id(no page) "; return false; } +if (!$subject = parseMsgSubject($page)) { + echo "$message_id(subject) "; + return false; + } +if (SUBJECT_SEARCH and defined('SUBJECT_TEXT')) { + $pos = strpos(strtolower($subject),strtolower(SUBJECT_TEXT)); + if ($pos === false) { return true; } + } if (!$author = parseMsgAuthor($page)) { echo "$message_id(author) "; return false; } -if (!$subject = parseMsgSubject($page)) { - echo "$message_id(subject) "; - return false; +if (AUTHOR_SEARCH and defined('AUTHOR_TEXT')) { + $pos = strpos(strtolower($author),strtolower(AUTHOR_TEXT)); + if ($pos === false) { return true; } } if (!$msgdate = parseMsgDate($page)) { echo "$message_id(msgdate) "; @@ -843,12 +862,15 @@ echo "$message_id(thread_id) "; return false; } -$msgtext = parseMsgText($page); -if ($msgtext === false) { - echo "$message_id(msgtext) "; - return false; +if (!SKIPMSGS) { + $msgtext = parseMsgText($page); + if ($msgtext === false) { + echo "$message_id(msgtext) "; + return false; + } + } else { + $msgtext = ""; } - $insert_msg = false; $update_msg = false; if (messageIdExists($board_id,$message_id)) { @@ -922,7 +944,7 @@ $sql = "select board_id,ticker_id,low_msg,high_msg,last_msg,locked from " . DBN . ".board_ids where board_name='$board_name' limit 1"; -if (!$qid = db_query($sql)) { return false; } +if (!$qid = db_query($sql)) { die(mysql_error()); return false; } $num = db_num_rows($qid); if ($num !== 1) { // Attempt to initialize the board. Hmm, loopy? @@ -1013,6 +1035,7 @@ defined('RETRIES') ? $rt = true : $rt = false; defined('USER_AGENT') ? $ua = true : $ua = false; defined('SOCKTIMEOUT') ? $to = true : $to = false; +defined('MAXMISSES') ? $mm = true : $mm = false; if (!$dbh or DBH == '') { $msg .= " Database host not defined (DBH).\n"; @@ -1048,6 +1071,9 @@ if (!$to or SOCKTIMEOUT == '' or !is_numeric(SOCKTIMEOUT)) { $msg .= " Invalid or undefined socket timeout value (SOCKTIMEOUT)\n"; } +if (!$mm or MAXMISSES == '' or !is_numeric(MAXMISSES)) { + $msg .= " Invalid or undefined maximum misses value (MAXMISSES)\n"; + } if (!$ua or USER_AGENT == '') { $msg .= " Invalid or undefined user agent (USER_AGENT)\n"; } @@ -1075,6 +1101,25 @@ /***************************************************************************** * * *****************************************************************************/ +function toggleLock($board_id='',$lock=1) { + +if ($board_id == '' or !is_numeric($board_id)) { return false; } +if (!$lock == 1 and !$lock == 0) { return false; } + +$board_id = addslashes($board_id); +$lock = addslashes($lock); +$sql = "update " . DBN . ".board_ids set locked=$lock +where board_id=$board_id limit 1"; +if (!$qid = db_query($sql)) { return false; } +if (! db_affected_rows() == 1) { return false; } + +return true; + +} + +/***************************************************************************** + * * + *****************************************************************************/ function updateCounters($board_id='',$message_id='') { if (!is_numeric($board_id) or !is_numeric($message_id)) { return false; } diff -u -r -N yasuck-0.0.1.orig/includes/globals.php yasuck-0.0.1/includes/globals.php --- yasuck-0.0.1.orig/includes/globals.php 2004-09-17 17:02:30.000000000 -0500 +++ yasuck-0.0.1/includes/globals.php 2004-09-17 23:14:26.431152496 -0500 @@ -21,13 +21,14 @@ define(USER_AGENT,'Mozilla/5.0 (compatible; Konqueror/3.3)'); define(YAHOOHOST,'finance.messages.yahoo.com'); define(SOCKTIMEOUT,10); -define(FETCHSLEEP,"1,3"); -//define(FETCHSLEEP,0); +//define(FETCHSLEEP,"1,3"); +define(FETCHSLEEP,1); define(RETRIES,5); // misc settings define(RANDOM_UA,INCDIR . "/agents.txt"); define(RANDOMIZE_UA,true); +define(MAXMISSES,50); // debug settings define(DEBUGUA,false); diff -u -r -N yasuck-0.0.1.orig/yasuck yasuck-0.0.1/yasuck --- yasuck-0.0.1.orig/yasuck 2004-09-17 17:02:54.000000000 -0500 +++ yasuck-0.0.1/yasuck 2004-09-17 23:19:02.189230896 -0500 @@ -44,7 +44,8 @@ } // start sucking -echo "Retrieving messages: Board($board) Start($start) End($end)\n\n"; +$maxmisses = 0; +echo "Retrieving messages: Board($board) Start($start) End($end)\n"; for($j = $start; $j <= $end; $j++) { if (!$page = retrieveMsg($board_id,$ticker_id,$j)) { echo "$j(retrieval failure) "; @@ -52,7 +53,14 @@ } if (!parseMsgExists($page)) { echo "$j(missing) "; + $maxmisses++; + if ($maxmisses > MAXMISSES) { + toggleLock($board_id,0); + die("Hit MAXMISSES (" . MAXMISSES . ") - aborting.\n"); + } continue; + } else { + $maxmisses = 0; } processMessage($board_id,$j,$page); //if (processMessage($board_id,$j,$page)) {