CleanPOP
Mit diesem Skript können Email-Rückläufer in einem Mail-Postfach schnell und einfach bereits von einem Webserver aus gelöscht werden, ohne daß diese zuerst in ein Mail-Programm geladen werden müssen. Mehr Infos dazu hier.
<?php
/*
======================================================================
Titel : CleanPOP
Lizenz : GPL
Homepage : http://www.pepilog.de/artikel/cleanpop.htm
Autor : Pepino
Beschreibung : Löschen von Mail-Rückläufern in Postfach
======================================================================
*/
$servername = "pop.mailserver.de";
$serverport = "110";
$mailboxtype = "pop";
$username = "abc";
$userpassword = "xyz";
// ===== CONFIGURE NOTHING BELOW THIS LINE =====
// connecting to pop/imap mailserver
$connection = @imap_open("{".$servername.":".$serverport."/".$mailboxtype."}INBOX", $username, $userpassword);
$mnum=imap_num_msg($connection);
echo "No. of messages: " . $mnum . "<br>\n";
$spamnum=0;
$i=1;
if($mnum>=$i)
{
while($i<=$mnum)
{
// get imap_fetch header and put single lines into array
$header = explode("\r\n", imap_fetchheader($connection, $i));
// browse array for additional headers
if (is_array($header) && count($header))
{
// look into every line of header
foreach ($header as $line)
{
// separate name and value
eregi("^([^:]*): (.*)", $line, $arg);
//echo $arg[1] . ": " . $arg[2] . "<br>\n";
$field_name = $arg[1];
$field_body = $arg[2];
// actions depending on header-line
switch($field_name)
{
case 'Return-Path':
case 'X-Return-Path':
case 'X-Envelope-From':
if (trim($field_body)=="<>")
{
//echo("FOUND SPAM: Message #$i deleted. - ");
//echo $field_name . ": " . htmlentities($field_body) . "<br>\n";
$spamnum++;
imap_delete($connection,$i);
}
break;
default:
// nix
}
$field_name = "";
$field_body = "";
unset($arg);
}
}
$i++;
}
}
if ($spamnum>0) echo("FOUND SPAM: $spamnum Message(s) deleted.");
imap_expunge($connection);
imap_close($connection);
if ($spamnum>0) echo("... READY!");
?>
Now Playing
Dieses Skript liest eine von SpyAmp generierte HTML-Seite aus und extrahiert die darin enthaltenen Daten, die dann beliebig weiterverarbeitet werden können (z.B. Eintrag in eine DB).
Voraussetzung hierfür ist die IP-Adresse (oder auch dynamische URL) des Computers, auf dem SpyAmp läuft und der konfigurierte Port des SpyAmp-Webservers.
<?
/*
======================================================================
Titel : NowPlaying
Lizenz : GPL
Homepage : http://www.pepilog.de/
Autor : Pepino
Beschreibung : Anzeige des aktuellen Songs aus Winamp
Systemvoraussetzung : SpyAmp 2.0.2
(http://www.pepilog.de/artikel/spyamp.htm)
======================================================================
*/
// ip-address of the spyamp-computer : "127.0.0.1"
// configured port of the spyamp-plugin: "1111"
$fp = fsockopen ("127.0.0.1", 1111, $errno, $errstr, 2);
if ($fp)
{
fputs ($fp, "GET / HTTP/1.0\r\n\r\n");
$inhalt = "";
while (!feof($fp))
{
$inhalt .= fgets($fp,128);
}
fclose($fp);
// find title in content
$suchstring = "<th>Title<td>";
$startpos = strpos($inhalt, $suchstring) + strlen($suchstring);
$suchstring = "<tr>";
$endpos = strpos($inhalt, $suchstring, $startpos);
$titel = substr($inhalt, $startpos, $endpos-$startpos);
// find length in content
$suchstring = "<th>Position<td>";
$startpos = strpos($inhalt, $suchstring) + strlen($suchstring);
$suchstring = "of ";
$startpos = strpos($inhalt, $suchstring, $startpos) + strlen($suchstring);
$suchstring = "<tr>";
$endpos = strpos($inhalt, $suchstring, $startpos);
$titel_len = substr($inhalt, $startpos, $endpos-$startpos);
// find status in content
$suchstring = "<th>Status<td>";
$startpos = strpos($inhalt, $suchstring) + strlen($suchstring);
$suchstring = "</table>";
$endpos = strpos($inhalt, $suchstring, $startpos);
$status = substr($inhalt, $startpos, $endpos-$startpos);
// find quality in content
$suchstring = "<th>Quality<td>";
$startpos = strpos($inhalt, $suchstring) + strlen($suchstring);
$suchstring = "<tr>";
$endpos = strpos($inhalt, $suchstring, $startpos);
$quality = substr($inhalt, $startpos, $endpos-$startpos);
// if status is "Playing", then display the collected data
if ((strcmp($status, "Playing")==0))
{
?>
<!-- nowplaying -->
Titel : <?php echo $titel;?> <br />
Länge : <?php echo $titel_len;?> Minuten <br />
Qualität: <?php echo $quality; ?><br />
<!-- end nowplaying -->
<?php
}
}
?>
Referrer-Umleiter
Um bestimmte Besucher von Suchmaschinen in Abhängigkeit der gesuchten Begriffe umleiten zu können, habe ich ein kleines Skript geschrieben, das genau dies tut.
In einer extra Text-Datei können die gewünschten Begriffe (z.B. Suchworte, Domain-Namen, etc.) zeilenweise gelistet werden und alle Besucher, mit einem dieser Begriffe im Referrer-String werden dann auf die Seite "/umleitung.htm" umgeleitet.
Dort könnte dann z.B. eine Erklärung für die erfolgte Umleitung abgegeben werden.
Bitte beachten: Vor diesem Skript darf es keine Ausgabe an den Browser geben!
<?php
/*
======================================================================
Titel : Referrer-Umleiter
Lizenz : GPL
Homepage : http://www.pepilog.de/
Autor : Pepino
Beschreibung : Umleitung von Besuchern anhand des Referrers
Erklärung : In "spamList.txt" stehen die Begriffe, bei
denen die Besucher umgeleitet werden sollen
zeilenweise
======================================================================
*/
$referrer = $HTTP_SERVER_VARS["HTTP_REFERER"];
if(strlen($referrer)>1 && !strstr($HTTP_SERVER_VARS["REQUEST_URI"], "umleitung.htm"))
{
$data=file('/kompletter/pfad/zu/spamList.txt');
for($i=0;$i<count($data);$i++)
{
if (stristr($referrer, trim($data[$i])))
{
header("Location: umleitung.htm");
exit;
}
}
}
?>
fakeMail
Angeregt durch den Artikel vom Schockwellenreiter habe ich auf die Schnelle das fakemail-Skript in PHP umgesetzt.
Ich habe dabei versucht, die vom Schocki-Skript benutzten Variablen einigermaßen zu übernehmen.
Bei Fragen und/oder Anregungen stehe ich natürlich jederzeit zur Verfügung!
Das Makro wird wie folgt aufgerufen:
fakeMail(numberOfMails, trenner, prefix, postfix)
Alle Parameter sind optional und mit mehr oder weniger sinnvollen Werten vorbesetzt: numberOfMails ist die Anzahl der generierten Adressen, Default is 20, trenner sind die Trennzeichen zwischen den Mails, per Default wird ein Komma und ein Leerzeichen (", ") eingefügt. Mit prefix und postfix (die per Default nichts tun, kann man eventuell die Ausgabe zwischen HTML-Kommentaren verstecken.
Wie solcherart erzeugte Mail-Adressen ausschauen, kann man auf jeder Seite des Pepilogs am unteren Ende sehen.
<?php
/*
======================================================================
Titel : fakemail
Lizenz : GPL
Homepage : http://www.pepilog.de/
Autor : Pepino
Idee : Schockwellenreiter
Beschreibung : Automatisch generierte Mail-Adressen für
Spammer
======================================================================
*/
function fakeMail($mailamount=20, $break=", ", $prefix="", $postfix="")
{
function generate_string($length)
{
$erg = "";
srand ((double)microtime()*1000000);
for($x = 0; $x < $length; $x++)
{
$i = rand(1, 26)-1;
$erg .= chr($i+97);
}
return $erg;
}
// define TLD-List
$tldList = array('com', 'net', 'org', 'mil', 'edu', 'de', 'biz', 'de',
'ch', 'at', 'ru', 'de', 'tv', 'com', 'st', 'br', 'fr',
'de', 'nl', 'dk', 'ar', 'jp', 'eu', 'it', 'es', 'com', 'us', 'ca', 'pl');
$result="";
// generate the amount of addresses
for($x = 0; $x < $mailamount; $x++)
{
// initialize the random-generator
srand ((double)microtime()*1000000);
// generate username
$nameLength = rand(3, 10);
$mailName = generate_string($nameLength);
// generate servername
$serverNameLength = rand(4, 20);
$serverName = generate_string($serverNameLength);
// take one TLD
$tldName = $tldList[rand(0, count($tldList)-1)];
// generate Link to Mail-Address
$myMail = $mailName . "@" . $serverName . "." . $tldName;
$myMail = "<a href=\"mailto:" . $myMail . "\">" . $myMail . "</a>";
// combine all generated addresses to one string
if ($x == $mailamount-1) $result = $result . $myMail;
else $result = $result . $myMail . $break;
}
return ($prefix . $result . $postfix);
}
echo fakeMail(10, ", ");
?>
blo.gs: Ping
Dieses kleine PHP-Skript ermöglicht das Melden eines neuen Beitrages bei http://blo.gs/.
Einfach den Titel des Weblogs in die Variable $name und die Adresse in die Variable $address eintragen.
Wenn nun diese wenigen Zeilen z.B. beim Eintragen eines neuen Beitrages aufgerufen werden, geht automatisch eine Nachricht an http://blo.gs/ und die eigene Website wird dort gelistet.
<?php
/*
======================================================================
Titel : blo.gs-Ping
Lizenz : GPL
Homepage : http://www.pepilog.de/
Autor : Pepino
Beschreibung : Automatischer blo.gs-Ping für Weblogs
======================================================================
*/
/* sendToHost
* ~~~~~~~~~~
* Params:
* $host - Just the hostname. No http:// or
/path/to/file.html portions
* $method - get or post, case-insensitive
* $path - The /path/to/file.html part
* $data - The query string, without initial question mark
* $useragent - If true, 'MSIE' will be sent as
the User-Agent (optional)
*
* Examples:
* sendToHost('www.google.com','get','/search','q=php_imlib');
* sendToHost('www.example.com','post','/some_script.cgi',
* 'param=First+Param&second=Second+param');
*/
function sendToHost($host,$method,$path,$data,$useragent=0)
{
// Supply a default method of GET if the one passed was empty
if (empty($method))
$method = 'GET';
$method = strtoupper($method);
$fp = fsockopen($host,80);
if ($fp)
{
if ($method == 'GET')
$path .= '?' . $data;
fputs($fp, "$method $path HTTP/1.1\n");
fputs($fp, "Host: $host\n");
fputs($fp, "Content-type: application/x-www-form-urlencoded\n");
fputs($fp, "Content-length: " . strlen($data) . "\n");
if ($useragent)
fputs($fp, "User-Agent: MSIE\n");
fputs($fp, "Connection: close\n\n");
if ($method == 'POST')
fputs($fp, $data);
while (!feof($fp))
$buf .= fgets($fp,128);
fclose($fp);
}
return $buf;
}
$name = "Name of the Weblog";
$address = "http://www.address-of-the-weblog.com/";
sendToHost('ping.blo.gs','get','','name='.$name.'&url='.$address);
?>