HEX
Server: LiteSpeed
System: Linux atali.colombiahosting.com.co 5.14.0-570.12.1.el9_6.x86_64 #1 SMP PREEMPT_DYNAMIC Tue May 13 06:11:55 EDT 2025 x86_64
User: coopserp (1713)
PHP: 8.2.29
Disabled: dl,exec,passthru,proc_open,proc_close,shell_exec,memory_limit,system,popen,curl_multi_exec,show_source,symlink,link,leak,listen,diskfreespace,tmpfile,ignore_user_abord,highlight_file,source,show_source,fpaththru,virtual,posix_ctermid,posix_getcwd,posix_getegid,posix_geteuid,posix_getgid,posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid,posix,posix_getppid,posix_getpwnam,posix_getpwuid,posix_getrlimit,posix_getsid,posix_getuid,posix_isatty,posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid,posix_setpgid,posix_setsid,posix_setid,posix_times,posix_ttyname,posix_uname,proc_get_status,proc_nice,proc_terminate
Upload Files
File: //var/www/html/correo
<?php
if(!isset($_POST["origen"]) || !isset($_POST["dominio"])){
	die("Acceso denegado.");
}

$origen=$_POST["origen"];
$debug=0;


$forzar=0;
if(isset($_POST["forzar"]) && $_POST["forzar"]){
	$forzar=1;
}

$puerto=3306;

$destino="localhost";
$base="cp_aftlgc";
$baseO="cp_aftlgc";

$usuario=$base;
$clave="CXQzD5Qc";



$opciones = array(
	PDO::ATTR_PERSISTENT => FALSE,
	PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
	PDO::ATTR_EMULATE_PREPARES=>false,
	PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"
);


$cadenaOrigen = "mysql:host=".$origen.";dbname=".$baseO.";port=".$puerto;

try{
	$dbOrigen = new PDO($cadenaOrigen, $usuario, $clave, $opciones);
}catch (PDOException $info){
	exit($info->getMessage());
}

/*
$conexionOrigen=mysql_connect($origen,$usuario,$clave);
$baseOrigen=mysql_select_db($baseO,$conexionOrigen);
*/


$cadenaDestino = "mysql:host=".$destino.";dbname=".$base.";port=".$puerto;

try{
	$dbDestino = new PDO($cadenaDestino, $usuario, $clave, $opciones);
}catch (PDOException $info){
	exit($info->getMessage());
}

/*
$conexionDestino=mysql_connect($destino,$usuario,$clave,TRUE);
$baseDestino=mysql_select_db($base,$conexionDestino);
*/



$dominios = array();
$dominios[]=$_POST["dominio"];

if(count($dominios)){
	if(!$dominios[0]){
		die("Error");
	}

	foreach ($dominios as $dominio){
		$log[]="Procesando dominio: ".$dominio;

		$sql="select id_user, email, signature, mail_inc_pass from awm_accounts where email like :email";
		$stmt = $dbOrigen->prepare($sql);
		$res=$stmt->execute(array(':email'=>'%'.$dominio));

		$registros=0;

		if($res){
                	if($stmt->rowCount()){
				$registros = $stmt->fetchAll();
				if(count($registros)){
					$cuentas = array();
					foreach($registros as $registro){
				                $sqlS="select created_time, last_login, last_login_now, logins_count, def_skin from awm_settings where id_user = :id_user";
				                $stmt = $dbOrigen->prepare($sqlS);
				                $resS=$stmt->execute(array(':id_user'=> $registro["id_user"]));
				                if($resS){
				                        if($stmt->rowCount()){
				                                $registroSetting = $stmt->fetch();
				                                if(count($registroSetting)){
									$registro["settings"]=$registroSetting;
								}
							}
						}
		                	        $cuentas[]=$registro;
					}
				}
			}
		}

		$log[]="SQL:".$sql;
		$log[]="Se encontraron ".count($registros)." cuentas de correo del dominio $dominio";

		if(count($cuentas)){
		        $i=0;
		        foreach($cuentas as $cuenta){
				echo "Revisando correo ".$cuenta["email"]."\n";

                                $sql="select id_user,email, signature from awm_accounts where email = :email";
		               	$stmt = $dbDestino->prepare($sql);
                		$res=$stmt->execute(array(':email'=>$cuenta["email"]));

				$existe=0;
		                if($res){
		                	if($stmt->rowCount()){
						$registro = $stmt->fetch();
						$existe=1;
		                                $log[]="La cuenta de correo ".$cuenta["email"]." ya existe en la base de datos.";
						echo "existe\n";
						$idNuevo=$registro["id_user"];

						if($forzar){
			                                $sql="delete from awm_addr_book where id_user = :id_user";
                        			        $stmt = $dbDestino->prepare($sql);
			                                $res=$stmt->execute(array(':id_user'=>$idNuevo));

                                                        $sql="delete from awm_accounts where id_user = :id_user limit 1";
                                                        $stmt = $dbDestino->prepare($sql);
                                                        $res=$stmt->execute(array(':id_user'=>$idNuevo));

                                                        $sql="delete from awm_settings where id_user = :id_user limit 1";
                                                        $stmt = $dbDestino->prepare($sql);
                                                        $res=$stmt->execute(array(':id_user'=>$idNuevo));

                                                        $sql="delete from a_users where id_user = :id_user limit 1";
                                                        $stmt = $dbDestino->prepare($sql);
                                                        $res=$stmt->execute(array(':id_user'=>$idNuevo));

							$existe=0;
						}


						if($cuenta["signature"]!="" && $existe){
							$sql4="update awm_accounts set signature = :signature where id_user = :id_user";
			                                $stmt = $dbDestino->prepare($sql4);
			                                $res=$stmt->execute(array(':signature'	=> $cuenta["signature"],
										  ':id_user'	=> $idNuevo));
	                                                $log[]="SQL4:".$sql4;
						}
		                        }
		                }


				if(!$existe){
                                        $sql5="insert into a_users (deleted) values(:deleted)";
                                        $stmt = $dbDestino->prepare($sql5);
                                        $res=$stmt->execute(array(':deleted'  => 0));
                                        $idNuevo=$dbDestino->lastInsertId();


					$sqlS="insert into awm_settings (
						id_setting,
						id_user,
						created_time,
						last_login,
						last_login_now, 
						logins_count,
						def_skin,
						def_lang,
						client_timezone) ";

					$sqlS.=" VALUES ( 
                                                :id_setting,
						:id_user,
						:created_time,
						:last_login,
						:last_login_now,
						:logins_count,
						:def_skin,
						:def_lang,
						:client_timezone)";

                                        $stmt = $dbDestino->prepare($sqlS);
					

					$lenguaje="Spanish";
					$timezone="America/Bogota";

                                        $stmt->bindParam(':id_setting'          ,       $idNuevo                                , PDO::PARAM_INT);
                                        $stmt->bindParam(':id_user'		,       $idNuevo                		, PDO::PARAM_INT);
                                        $stmt->bindParam(':created_time'	,       $cuenta["settings"]["created_time"]	, PDO::PARAM_STR);
                                        $stmt->bindParam(':last_login'		,       $cuenta["settings"]["last_login"]	, PDO::PARAM_STR);
                                        $stmt->bindParam(':last_login_now'	,       $cuenta["settings"]["last_login_now"]	, PDO::PARAM_STR);
                                        $stmt->bindParam(':logins_count'	,       $cuenta["settings"]["logins_count"]	, PDO::PARAM_INT);
                                        $stmt->bindParam(':def_skin'		,       $cuenta["settings"]["def_skin"]		, PDO::PARAM_STR);
                                        $stmt->bindParam(':def_lang'            ,       $lenguaje				        , PDO::PARAM_STR);
                                        $stmt->bindParam(':client_timezone'     ,       $timezone				, PDO::PARAM_STR);

                                        $res=$stmt->execute();


                                        $sql6="insert into awm_accounts (
							id_acct,
							id_user,
							id_domain,
							def_acct,
							deleted,
							quota,
							email,
							mail_protocol,
							mail_inc_host,
							mail_inc_port,
							mail_inc_login,
							mail_inc_pass,
							mail_inc_ssl,
							mail_out_host,
							mail_out_port,
							mail_out_login,
							mail_out_pass,
							mail_out_auth,
							mail_out_ssl,
							signature,
							signature_type,
							signature_opt,
							mailbox_size,
							mailing_list,
							id_tenant,
							hide_in_gab,
							is_password_specified,
							allow_mail) ";

					$sql6.=" values ( 
                                                        :id_acct,
                                                        :id_user,
                                                        :id_domain,
                                                        :def_acct,
                                                        :deleted,
                                                        :quota,
                                                        :email,
                                                        :mail_protocol,
                                                        :mail_inc_host,
                                                        :mail_inc_port,
                                                        :mail_inc_login,
                                                        :mail_inc_pass,
                                                        :mail_inc_ssl,
                                                        :mail_out_host,
                                                        :mail_out_port,
                                                        :mail_out_login,
                                                        :mail_out_pass,
                                                        :mail_out_auth,
                                                        :mail_out_ssl,
                                                        :signature,
                                                        :signature_type,
                                                        :signature_opt,
                                                        :mailbox_size,
                                                        :mailing_list,
                                                        :id_tenant,
                                                        :hide_in_gab,
                                                        :is_password_specified,
                                                        :allow_mail)";

					$stmt = $dbDestino->prepare($sql6);

					$aDefault["zero"]=0;
					$aDefault["one"]=1;
					$aDefault["delimiter"]="/";
					$aDefault["quota"]=104857600;
					$aDefault["loopback"]="127.0.0.1";
					$aDefault["imap"]=143;
					$aDefault["smtp"]=25;
					$aDefault["empty"]="";
					$aDefault["days"]=7;
					$aDefault["auth"]=2;

                                        $stmt->bindParam(':id_acct'     		,       $idNuevo        	, PDO::PARAM_INT);
                                        $stmt->bindParam(':id_user'     		,       $idNuevo        	, PDO::PARAM_INT);
                                        $stmt->bindParam(':id_domain'     		,       $aDefault["zero"]	, PDO::PARAM_INT);
                                        $stmt->bindParam(':def_acct'     		,       $aDefault["one"]       	, PDO::PARAM_INT);
                                        $stmt->bindParam(':deleted'     		,       $aDefault["zero"]	, PDO::PARAM_INT);
                                        $stmt->bindParam(':quota'     			,       $aDefault["quota"]     	, PDO::PARAM_INT);
                                        $stmt->bindParam(':email'     			,       $cuenta["email"]        , PDO::PARAM_STR);
                                        $stmt->bindParam(':mail_protocol'     		,       $aDefault["one"]	, PDO::PARAM_INT);
                                        $stmt->bindParam(':mail_inc_host'    		,       $aDefault["loopback"]  	, PDO::PARAM_STR);
                                        $stmt->bindParam(':mail_inc_port'     		,       $aDefault["imap"]	, PDO::PARAM_INT);
                                        $stmt->bindParam(':mail_inc_login'     		,       $cuenta["email"]        , PDO::PARAM_STR);
                                        $stmt->bindParam(':mail_inc_pass'     		,       $cuenta["mail_inc_pass"], PDO::PARAM_STR);
                                        $stmt->bindParam(':mail_inc_ssl'     		,       $aDefault["zero"]	, PDO::PARAM_INT);
                                        $stmt->bindParam(':mail_out_host'     		,       $aDefault["loopback"]  	, PDO::PARAM_STR);
                                        $stmt->bindParam(':mail_out_port'     		,       $aDefault["smtp"]	, PDO::PARAM_INT);
                                        $stmt->bindParam(':mail_out_login'     		,       $aDefault["empty"]	, PDO::PARAM_STR);
                                        $stmt->bindParam(':mail_out_pass'     		,       $aDefault["empty"]	, PDO::PARAM_STR);
                                        $stmt->bindParam(':mail_out_auth'     		,       $aDefault["auth"]	, PDO::PARAM_INT);
                                        $stmt->bindParam(':mail_out_ssl'     		,       $aDefault["zero"]	, PDO::PARAM_INT);
//                                        $stmt->bindParam(':def_order'     		,       $aDefault["zero"]	, PDO::PARAM_INT);
//                                        $stmt->bindParam(':getmail_at_login'     	,      	$aDefault["zero"]	, PDO::PARAM_INT);
//                                        $stmt->bindParam(':mail_mode'     		,       $aDefault["one"]	, PDO::PARAM_INT);
//                                        $stmt->bindParam(':mails_on_server_days'	,	$aDefault["days"]	, PDO::PARAM_INT);
                                        $stmt->bindParam(':signature'     		,       $cuenta["signature"]);
                                        $stmt->bindParam(':signature_type'     		,       $aDefault["zero"]	, PDO::PARAM_INT);
                                        $stmt->bindParam(':signature_opt'     		,       $aDefault["zero"]	, PDO::PARAM_INT);
//                                        $stmt->bindParam(':delimiter'     		,       $aDefault["delimiter"]	, PDO::PARAM_STR);
                                        $stmt->bindParam(':mailbox_size'     		,       $aDefault["zero"]	, PDO::PARAM_INT);
                                        $stmt->bindParam(':mailing_list'     		,       $aDefault["zero"]	, PDO::PARAM_INT);
//                                        $stmt->bindParam(':namespace'     		,       $aDefault["empty"]	, PDO::PARAM_STR);
                                        $stmt->bindParam(':id_tenant'     		,       $aDefault["zero"]	, PDO::PARAM_INT);
                                        $stmt->bindParam(':hide_in_gab'     		,       $aDefault["zero"]	, PDO::PARAM_INT);
                                        $stmt->bindParam(':is_password_specified'     	,       $aDefault["one"]	, PDO::PARAM_INT);
                                        $stmt->bindParam(':allow_mail'     		,       $aDefault["one"]	, PDO::PARAM_INT);


					$res=$stmt->execute();

                                        $log[]="SQL6:".$sql6;
                                }

				if(!isset($idNuevo) || $idNuevo<1){
					die("EERRROR, id no identificado");
				}

                		$log[]="Arreglo cuenta ".print_r($cuenta,true);
		                $log[]="Buscando contactos de la cuenta ".$cuenta["email"];

		                $sql2="select * from awm_addr_book where id_user = :id_user";

				$stmt = $dbOrigen->prepare($sql2);
				$res2 = $stmt->execute(array(':id_user'=> $cuenta["id_user"]));

				$registros=0;
		                if($res2){
                                        if($stmt->rowCount()){
			                        $registros = $stmt->fetchAll();
			                        if(count($registros)){
							if(isset($contactos)){
								unset($contactos);
							}
			                                $contactos = array();
							
			                                foreach($registros as $registro){
			                                        $contactos[]=$registro;
			                                }
			                        }
			                }
				}

                		$log[]="SQL2:".$sql2;
		                $log[]="Se encontraron ".count($registros)." contactos del correo con ID ".$cuenta["id_user"];
		                $i++;
		        	echo "Se encontraron ".count($registros)." contactos del correo con ID ".$cuenta["id_user"]." email: ".$cuenta["email"]."\n\n";


		                //Crearle los contactos
				if(count($contactos)){
		                foreach($contactos as $contacto){
					$sqlE="delete from awm_addr_book where id_user = :id_user and view_email = :view_email and fullname = :fullname";
	                                $stmt = $dbDestino->prepare($sqlE);
        		                $res = $stmt->execute(array(':id_user'=> $idNuevo,':view_email'=>$contacto["view_email"],':fullname'=>$contacto["fullname"]));

					$sql7="insert into awm_addr_book(
					id_user,
					str_id,
					deleted,
					date_created,
					date_modified,
					fullname,
					view_email,
					use_friendly_nm,
					h_email,
					h_street,
					h_city,
					h_state,
					h_zip,
					h_country,
					h_phone,
					h_fax,
					h_mobile,
					h_web,
					b_email,
					b_company,
					b_street,
					b_city,
					b_state,
					b_zip,
					b_country,
					b_job_title,
					b_department,
					b_office,
					b_phone,
					b_fax,
					b_web,
					other_email,
					primary_email,
					birthday_day,
					birthday_month,
					birthday_year,
					id_addr_prev,
					tmp,
					use_frequency,
					auto_create,
					notes,
					id_domain,
					id_tenant,
					type,
					type_id,
					firstname,
					surname,
					nickname,
					skype,
					facebook,
					etag,
					shared_to_all,
					hide_in_gab)";

					$sql7.= " VALUES (
					:id_user,
					:str_id,
					:deleted,
					:date_created,
					:date_modified,
					:fullname,
					:view_email,
					:use_friendly_nm,
					:h_email,
					:h_street,
					:h_city,
					:h_state,
					:h_zip,
					:h_country,
					:h_phone,
					:h_fax,
					:h_mobile,
					:h_web,
					:b_email,
					:b_company,
					:b_street,
					:b_city,
					:b_state,
					:b_zip,
					:b_country,
					:b_job_title,
					:b_department,
					:b_office,
					:b_phone,
					:b_fax,
					:b_web,
					:other_email,
					:primary_email,
					:birthday_day,
					:birthday_month,
					:birthday_year,
					:id_addr_prev,
					:tmp,
					:use_frequency,
					:auto_create,
					:notes,
					:id_domain,
					:id_tenant,
					:type,
					:type_id,
					:firstname,
					:surname,
					:nickname,
					:skype,
					:facebook,
					:etag,
					:shared_to_all,
					:hide_in_gab)";


					$stmt = $dbDestino->prepare($sql7);

					$stmt->bindParam(':id_user'		,	$idNuevo, PDO::PARAM_INT);       
					$stmt->bindParam(':str_id'		,	$contacto["str_id"], PDO::PARAM_STR);
					$stmt->bindParam(':deleted'		,	$contacto["deleted"], PDO::PARAM_INT);
					$stmt->bindParam(':date_created'	,	$contacto["date_created"], PDO::PARAM_STR);
					$stmt->bindParam(':date_modified'	,	$contacto["date_modified"], PDO::PARAM_STR);
					$stmt->bindParam(':fullname'		,	$contacto["fullname"], PDO::PARAM_STR);
					$stmt->bindParam(':view_email'		,	$contacto["view_email"], PDO::PARAM_STR);
					$stmt->bindParam(':use_friendly_nm'	,	$contacto["use_friendly_nm"], PDO::PARAM_INT);			
					$stmt->bindParam(':h_email'		,	$contacto["h_email"], PDO::PARAM_STR);
					$stmt->bindParam(':h_street'		,	$contacto["h_street"], PDO::PARAM_STR);
					$stmt->bindParam(':h_city'		,	$contacto["h_city"], PDO::PARAM_STR);
					$stmt->bindParam(':h_state'		,	$contacto["h_state"], PDO::PARAM_STR);
					$stmt->bindParam(':h_zip'		,	$contacto["h_zip"], PDO::PARAM_STR);
					$stmt->bindParam(':h_country'		,	$contacto["h_country"], PDO::PARAM_STR);
					$stmt->bindParam(':h_phone'		,	$contacto["h_phone"], PDO::PARAM_STR);
					$stmt->bindParam(':h_fax'		,	$contacto["h_fax"], PDO::PARAM_STR);
					$stmt->bindParam(':h_mobile'		,	$contacto["h_mobile"], PDO::PARAM_STR);
					$stmt->bindParam(':h_web'		,	$contacto["h_web"], PDO::PARAM_STR);
					$stmt->bindParam(':b_email'		,	$contacto["b_email"], PDO::PARAM_STR);
					$stmt->bindParam(':b_company'		,	$contacto["b_company"], PDO::PARAM_STR);
					$stmt->bindParam(':b_street'		,	$contacto["b_street"], PDO::PARAM_STR);
					$stmt->bindParam(':b_city'		,	$contacto["b_city"], PDO::PARAM_STR);
					$stmt->bindParam(':b_state'		,	$contacto["b_state"], PDO::PARAM_STR);
					$stmt->bindParam(':b_zip'		,	$contacto["b_zip"], PDO::PARAM_STR);
					$stmt->bindParam(':b_country'		,	$contacto["b_country"], PDO::PARAM_STR);
					$stmt->bindParam(':b_job_title'		,	$contacto["b_job_title"], PDO::PARAM_STR);
					$stmt->bindParam(':b_department'	,	$contacto["b_department"], PDO::PARAM_STR);
					$stmt->bindParam(':b_office'		,	$contacto["b_office"], PDO::PARAM_STR);
					$stmt->bindParam(':b_phone'		,	$contacto["b_phone"], PDO::PARAM_STR);
					$stmt->bindParam(':b_fax'		,	$contacto["b_fax"], PDO::PARAM_STR);
					$stmt->bindParam(':b_web'		,	$contacto["b_web"], PDO::PARAM_STR);
					$stmt->bindParam(':other_email'		,	$contacto["other_email"], PDO::PARAM_STR);
					$stmt->bindParam(':primary_email'	,	$contacto["primary_email"], PDO::PARAM_INT);
					$stmt->bindParam(':birthday_day'	,	$contacto["birthday_day"], PDO::PARAM_INT);
					$stmt->bindParam(':birthday_month'	,	$contacto["birthday_month"], PDO::PARAM_INT);
					$stmt->bindParam(':birthday_year'	,	$contacto["birthday_year"], PDO::PARAM_INT);
					$stmt->bindParam(':id_addr_prev'	,	$contacto["id_addr_prev"], PDO::PARAM_INT);
					$stmt->bindParam(':tmp'			,	$contacto["tmp"], PDO::PARAM_INT);
					$stmt->bindParam(':use_frequency'	,	$contacto["use_frequency"], PDO::PARAM_INT);
					$stmt->bindParam(':auto_create'		,	$contacto["auto_create"], PDO::PARAM_INT);
					$stmt->bindParam(':notes'		,	$contacto["notes"], PDO::PARAM_STR);
					$stmt->bindParam(':id_domain'		,	$contacto["id_domain"], PDO::PARAM_INT);
					$stmt->bindParam(':id_tenant'		,	$contacto["id_tenant"], PDO::PARAM_INT);
					$stmt->bindParam(':type'		,	$contacto["type"], PDO::PARAM_INT);
					$stmt->bindParam(':type_id'		,	$contacto["type_id"], PDO::PARAM_STR);
					$stmt->bindParam(':firstname'		,	$contacto["firstname"], PDO::PARAM_STR);
					$stmt->bindParam(':surname'		,	$contacto["surname"], PDO::PARAM_STR);
					$stmt->bindParam(':nickname'		,	$contacto["nickname"], PDO::PARAM_STR);
					$stmt->bindParam(':skype'		,	$contacto["skype"], PDO::PARAM_STR);
					$stmt->bindParam(':facebook'		,	$contacto["facebook"], PDO::PARAM_STR);
					$stmt->bindParam(':etag'		,	$contacto["etag"], PDO::PARAM_STR);
					$stmt->bindParam(':shared_to_all'	,	$contacto["shared_to_all"], PDO::PARAM_INT);
					$stmt->bindParam(':hide_in_gab'		,	$contacto["hide_in_gab"], PDO::PARAM_INT);

					$res = $stmt->execute();
				}//End for contacts
				}//End if contacts
	                }//End for accounts
        	}//End if accounts
	}//End for domains
}//End if domains

if($debug){
        foreach($log as $registro){
                echo $registro."<br/>";
        }
}
?>