<?php
/** // #!/usr/local/bin/php
* @file pop_killer.cli.php
* @brief Ce script permet de supprimer tous les messages d'un compte pop.
*
* @see http://abcdrfc.free.fr/rfc-vf/rfc1939.html
* @author hughes monget
* @see http://monget.com/
*/
set_time_limit(0);
/**
* CONST
*/
define('ENUM_SERVER', 'ENUM_SERVER');
define('ENUM_LOGIN', 'ENUM_LOGIN');
define('ENUM_PASSWORD', 'ENUM_PASSWORD');
define('INT_BUFFER_LENGTH', 1024);
define('INT_POP_PORT_NUMBER', 110);
define('STR_OK', '+OK');
define('STR_ERROR', '+ERR');
/**
* FUNCTIONS
*/
function write($s)
{
$ss = preg_replace_callback('/^(PASS )(.*)$/', create_function('$a', 'return ($a[1].str_repeat(\'*\', strlen($a[2])));'), $s);
print($ss);
return $s;
}
function add_account(&$arr_arr_str_account_list, $str_server, $str_login, $str_password)
{
$arr_arr_str_account_list[] = array
(
'ENUM_SERVER' => $str_server,
'ENUM_LOGIN' => $str_login,
'ENUM_PASSWORD' => $str_password
);
}
function kill_account($arr_arr_str_account_list)
{
foreach ($arr_arr_str_account_list as $arr_str_account)
{
$res_server = fsockopen($arr_str_account[ENUM_SERVER], INT_POP_PORT_NUMBER, $int_error_number, $str_error_message);
if (!$res_server)
{
print('Connexion problem "' . $arr_str_account[ENUM_SERVER] . '" : ' . $str_error_message . ' (' . strval($int_error_number) . ')' . PHP_EOL);
}
else
{
print fgets($res_server, INT_BUFFER_LENGTH);
fwrite($res_server, write(sprintf("USER %s\r\n", $arr_str_account[ENUM_LOGIN])));
print fgets($res_server, INT_BUFFER_LENGTH);
fwrite($res_server, write(sprintf("PASS %s\r\n", $arr_str_account[ENUM_PASSWORD])));
$str_answer = write(fgets($res_server, INT_BUFFER_LENGTH));
if (strpos($str_answer, STR_OK) !== FALSE)
{
//$int_message_count = intval(preg_replace('#^.*?([[:digit:]]+).*$#', '\\1', $str_answer));
// Récupération du nombre de messages.
fwrite($res_server, write("STAT\r\n"));
$str_answer = write(fgets($res_server, INT_BUFFER_LENGTH));
if (preg_match('#[[:digit:]]+#', $str_answer, $arr_str_match))
{
$int_message_count = intval($arr_str_match[0]);
if ($int_message_count > 0)
{
for ($ii = 1; $ii <= $int_message_count; $ii++)
{
fwrite($res_server, write(sprintf("DELE %d\r\n", $ii)));
$str_answer = write(fgets($res_server, INT_BUFFER_LENGTH));
}
}
}
}
fwrite($res_server, write("QUIT\r\n"));
fclose($res_server);
}
}
}
/**
* MAIN
*/
function main()
{
$arr_arr_str_liste = array();
add_account($arr_arr_str_account_list, 'pop.laposte.net', 'mister.kludge', 'toto2001');
kill_account($arr_arr_str_account_list);
}
$str_serveur = (empty($_REQUEST['serveur'])) ? '' : trim($_REQUEST['serveur']);
$str_compte = (empty($_REQUEST['compte'])) ? '' : trim($_REQUEST['compte']);
$str_password = (empty($_REQUEST['password'])) ? '' : trim($_REQUEST['password']);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<title>Supprimer tous les messages d'un compte POP</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<style type="text/css">
<!--
table
{
border-collapse: collapse;
}
td
{
border: 1px solid #000;
padding: 5px 5px;
}
.texte
{
width: 300px;
}
-->
</style>
</head>
<body>
<form method="get" action="">
<table>
<tr>
<td>
<label for="serveur">Serveur POP</label>
</td>
<td>
<input type="text" class="texte" name="serveur" id="serveur" value="<?php echo htmlspecialchars($str_serveur) ?>" />
</td>
</tr>
<tr>
<td>
<label for="compte">Nom du compte</label>
</td>
<td>
<input type="text" class="texte" name="compte" id="compte" value="<?php echo htmlspecialchars($str_compte) ?>" />
</td>
</tr>
<tr>
<td>
<label for="password">Password</label>
</td>
<td>
<input type="password" class="texte" name="password" id="password" value="<?php echo $str_password ?>" />
</td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="Supprimer" />
</td>
</tr>
</table>
</form>
<?php
if ($str_serveur && $str_compte && $str_password)
{
echo '<pre>';
$arr_arr_str_liste = array();
add_account($arr_arr_str_account_list, $str_serveur, $str_compte, $str_password);
kill_account($arr_arr_str_account_list);
echo '</pre>';
}
echo '<hr />';
highlight_file(__FILE__);
?>
</body>
</html>