Files
2026-04-29 15:17:10 -07:00

229 lines
8.3 KiB
PHP

<?PHP
function display($data){
$home_dir=dirname(__FILE__);
$high1=$high2=$link=NULL;
include('/path/to/config/.tidysearch.php');
if (!isset($data['HostID'])){$data['HostID']=0;}
if (!isset($data['hits'])){$data['hits']=0;}
if (isset($data['KWords'])){$words=$data['KWords'];}else{$words=$data['title'];}
if (!is_null($data['Star'])){
$star=$data['Star'];
$lk="<A HREF='".$data['link']."' TARGET='_blank'>";
}else{
$star=NULL;
$lk="<A HREF='".$data['link']."' TARGET='_blank'>";
}
echo "
<abbr title='Keywords: ".$words."'>
".$lk."
".$data['SiteName']."
</A>
".$link."<BR>
".$lk."
<B>".$data['title']."</B>
</A>
</abbr>
<details>
<summary>Read More".$data['lang']."&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;".$star."&nbsp;&nbsp;".$data['share']."</summary>
<p>".$data['description']."</p>
</details>
<FONT SIZE='-1' COLOR='grey'>
".$data['date']." (S:".pad_5($data['SiteID'])." B:".pad_3($data['BotID'])." P:".pad_8($data['PageID'])." H:".pad_3($data['HostID']).") ".pad_2($data['hits'])."
</FONT>
<BR>";
}
function paging($ref,$pp,$rec_count,$qq,$off){
$pages=round($rec_count/10,0,PHP_ROUND_HALF_DOWN)+1;
$prev_p=$next_p=0;
$page['page']=$pp;
$jump_prev=$pp/10;
$jump_next=$pp*10;
$prev_p=$pp-1;
if ($prev_p==0){$prev_p=$pages-1;}
if ($jump_prev<1){$jump_prev=$pages-10;}
$next_p=$pp+1;
if ($next_p==$pages){$next_p=1;}
if ($jump_next<0){$jump_next=1;}
/////////////////////////////////////
$page['start']=($page['page']*10)-9;
$page['end']=$page['start']+9;
if (isset($qq)){$home="/?qq=".$qq;}else{$home="/";}
/////////////////////////////////////
$page[0]="<FONT SIZE='-2'>
<abbr title='Jump 10 pages (".$jump_prev.")'>
<A HREF='?pp=".$jump_prev."' class='navigator'> << </A>
</abbr>
<abbr title='Previous Page (".$prev_p.")'>
<A HREF='?pp=".$prev_p."' class='navigator'> &#8249; </A>
</abbr>
<abbr title='Home (Clear)'>
<A HREF='".$home."' class='navigator'> H </A>
</abbr>
<abbr title='Next Page (".$next_p.")'>
<A HREF='?pp=".$next_p."' class='navigator'> &#8250; </A>
</abbr>
<abbr title='Jump 10 pages (".$jump_next.")'>
<A HREF='?pp=".$jump_next."' class='navigator'> >> </A>
</abbr>
</FONT>
";
if (!is_null($qq)){
$page[0]="
<abbr title='Previous Page (".$prev_p.")'>
<A HREF='?qq=".$qq."&pp=".$prev_p."' class='navigator'> &#8249; </A>
</abbr>
<abbr title='Home (Clear)'>
<A HREF='".$home."' class='navigator'> H </A>
</abbr>
<abbr title='Next Page (".$next_p.")'>
<A HREF='?qq=".$qq."&pp=".$next_p."' class='navigator'> &#8250; </A>
</abbr>";
}
unset($qq,$next_p,$prev_p,$dbt2,$page['page'],$pages,$pp,$rec_count);
memory_get_usage();
return $page;
}
/* Highlight found search strings to display */
function highlightStr($haystack,$needle,$highlightColorValue){
if (isset($haystack)){
$haystack=html_entity_decode($haystack,ENT_QUOTES|ENT_HTML5,'UTF-8');
if (isset($haystack) and isset($needle)){
if (strlen($haystack) < 1 || strlen($needle) < 1) {
return $haystack;
}
preg_match_all("/$needle+/i",$haystack,$matches);
if (is_array($matches[0]) && count($matches[0]) >= 1) {
foreach ($matches[0] as $match) {
$haystack = str_replace($match,'<span STYLE="color:'.$highlightColorValue.';background-color:white;"><B>'.$match.'</B></span>',$haystack);
}
}
return $haystack;
}else{
return "Error";
}
}else{
return NULL;
}
}
function log_files($notes,$name){
$entry=html_entity_decode($notes,ENT_QUOTES|ENT_HTML5,'UTF-8')."\n";
if (!file_exists($name)){touch ($name);}
$data_file=$name;
$handle=fopen($name, 'r');
$new_data_file=fopen($data_file, 'a+') or die('Cannot open file: '.$data_file);
fwrite($new_data_file, $entry);
fclose($new_data_file);
fclose($handle);
}
/* Below, used to send messages VIA XMPP server */
function send_group($BName,$Group,$Send,$Server){
if (isset($_SERVER['SERVER_ADDR']) and $_SERVER['SERVER_ADDR']!=="127.0.0.1"){
$ERROR=shell_exec("echo '".$Send."' | sendxmpp --username netbot --password 4cUTyfWwN5wc7St --jserver ".$Server." --resource ".$BName." --message-type=headline --chatroom ".$Group."");
return $ERROR;
}
}
function send_user($BName,$recitp,$Send){
include('/path/to/config/.tidysearch.php');
$ERROR=shell_exec("echo '".$Send."' | ".$ChatPRG." --username='".$ChatUser."' --password='".$ChatPW."' --jserver='".$ChatServer."' --resource ".$BName." --message-type=headline ".$recitp);
}
function pad_2($ThisNumber){if (isset($ThisNumber)){return str_pad($ThisNumber,2,"0",STR_PAD_LEFT);}else{return "00";}}
function pad_3($ThisNumber){if (isset($ThisNumber)){return str_pad($ThisNumber,3,"0",STR_PAD_LEFT);}else{return "000";}}
function pad_5($ThisNumber){if (isset($ThisNumber)){return str_pad($ThisNumber,5,"0",STR_PAD_LEFT);}else{return "00000";}}
function pad_8($ThisNumber){if (isset($ThisNumber)){return str_pad($ThisNumber,8,"0",STR_PAD_LEFT);}else{return "00000000";}}
/* Test external sites */
function channel_data($url){
$ch=curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_CERTINFO, true);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_REFERER, 'http://search.mpaq.org');
$config['useragent']='TidyBot (TidySearch http://search.mpaq.org)';
$logFile=fopen("/tmp/Curl.log", "a");
curl_setopt($ch, CURLOPT_STDERR, $logFile);
$config['cookie_file']="/tmp/cookie.txt";
curl_setopt($ch, CURLOPT_COOKIEFILE, $config['cookie_file']);
curl_setopt($ch, CURLOPT_COOKIEJAR, $config['cookie_file']);
curl_setopt($ch, CURLOPT_USERAGENT, $config['useragent']);
$response=curl_exec($ch);
if (curl_errno($ch)){
$send="Channel Failed: ".__LINE__."\nresponse: ".$response."\ncurl_error: ".curl_error($ch);
return false;
}else{
curl_close($ch);
return trim($response);
}
}
function test_channel($url){
$home_dir=dirname(__FILE__);
include('/path/to/config/.tidysearch.php');
$curl_test = array(
CURLOPT_HEADER => true, // we want headers
CURLOPT_NOBODY => true, // we don't need body
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_TIMEOUT => 1, // timeout on response
CURLOPT_USERAGENT => "TidySearch-".$version." (TidySearch Engine at http://search.mpaq.org)", // who am i
CURLOPT_CONNECTTIMEOUT => 1, // timeout on connect
CURLOPT_MAXREDIRS => 10, // stop after 10 redirects
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_SSL_VERIFYHOST => false
);
$ch=curl_init($url);
curl_setopt_array($ch,$curl_test);
$output=curl_exec($ch);
$httpcode=curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($httpcode==200 or $httpcode==301){
return true;
}else{
return $httpcode;
}
return $httpcode;
}
function Hosts($BotID){
$home_dir=dirname(__FILE__);
include('/path/to/config/.tidysearch.php');
$con=mysqli_connect($dbro['host'],$dbro['user'],$dbro['passw'],"TidySearch");
$sql="SELECT * FROM `Hosts` WHERE `HostID`!=".$BotID." AND type='sites' ORDER BY `Hosts`.`HostID` DESC;";
$ret=mysqli_query($con,$sql);
while($row=mysqli_fetch_array($ret)){
$HostID=$row['HostID'];
$LAN=$row['LAN_IP'];
$API=$row['API_IP'];
}
$con->close();
if (test_channel($API)){$host=$API;}
if (test_channel($LAN)){$host=$LAN;}
return $host;
}
function time_check($StartTime){
$interval = date_diff(date_create($StartTime),date_create(date('H:i:s')));
return $interval->format('%R%H:%i:%s');
}
/* A MySQL database that needs to move to PostSQL with language codes */
function lang($code){
$home_dir=__DIR__;
include('/path/to/config/.tidysearch.php');
$lang=$flag=$img=NULL;
if (!isset($code) or $code==""){return NULL;}
$con=mysqli_connect($dbro['host'],$dbro['user'],$dbro['passw'],"users");
$sql="SELECT * FROM `_lang` WHERE `code` LIKE '%".$code."%' or `lang` LIKE '".$code."';";
$row=mysqli_fetch_assoc(mysqli_query($con,$sql));
if (isset($row['lang'])){$lang=$row['lang'];}else{$lang="Language ".$code;}
if (isset($row['flag'])){$flag=$row['flag'];}
if (isset($flag) and file_exists("/var/www/00_00/icons/flags/".$flag)){
$img="<abbr title='".$row['lang']."'><IMG SRC='/icons/flags/".$flag."' ALT='".$lang."' style='width: 15px;padding:1px;border:thin solid black;'></abbr>";
$lang=NULL;
}
$con->close();
unset($code,$flag,$con);
return $lang." ".$img;
}
?>