Current File : //etc/zpanel/panel/spfdkim.php |
<?php
require('/etc/sentora/panel/cnf/db.php');
include('/etc/sentora/panel/dryden/db/driver.class.php');
include('/etc/sentora/panel/dryden/debug/logger.class.php');
include('/etc/sentora/panel/dryden/runtime/dataobject.class.php');
include('/etc/sentora/panel/dryden/runtime/hook.class.php');
include('/etc/sentora/panel/dryden/sys/versions.class.php');
include('/etc/sentora/panel/dryden/ctrl/options.class.php');
include('/etc/sentora/panel/dryden/fs/director.class.php');
include('/etc/sentora/panel/dryden/fs/filehandler.class.php');
include('/etc/sentora/panel/inc/dbc.inc.php');
try {
$zdbh = new db_driver("mysql:host=" . $host . ";dbname=" . $dbname . "", $user, $pass);
} catch (PDOException $e) {
exit();
}
$change_flag=false;
$change_domain_list="";
$rows = $zdbh->prepare("select * from x_vhosts where vh_type_in='1' AND vh_deleted_ts IS NULL");
$rows->execute();
if ($rows->fetchColumn() != 0)
{
$rows = $zdbh->prepare("select * from x_vhosts where vh_type_in='1' AND vh_deleted_ts IS NULL");
$rows->execute();
while($dbvals=$rows->fetch())
{
$domain_added_flag=false;
// echo $dbvals['vh_name_vc']."\n";
// **************************** starting of the code for spf generation *********************************************** //
$rows_spf = $zdbh->prepare("select * from x_dns where dn_name_vc='".$dbvals['vh_name_vc']."' AND dn_type_vc='TXT' AND dn_target_vc like '%spf%' AND dn_deleted_ts IS NULL");
$rows_spf->execute();
if ($rows_spf->fetchColumn() != 0)
{
echo "Domain ".$dbvals['vh_name_vc']." SPF record already exists \n";
}else
{
$type_newspf = "TXT";
$defspf = "@";
$ip = ctrl_options::GetSystemOption('server_ip');
$domain=$dbvals['vh_name_vc'];
$time = time();
$targetspf ="v=spf1 a mx mx:".$domain." ip4:".$ip." ~all";
$sql1="INSERT INTO x_dns (dn_acc_fk,
dn_name_vc,
dn_vhost_fk,
dn_type_vc,
dn_host_vc,
dn_ttl_in,
dn_target_vc,
dn_priority_in,
dn_weight_in,
dn_port_in,
dn_created_ts) VALUES (
'".$dbvals['vh_acc_fk']."','"
.$domain."','"
.$dbvals['vh_id_pk']."','"
.$type_newspf."','"
.$defspf."','3600','"
.$targetspf."','0','0','0','"
.$time."')";
$sql2 = $zdbh->prepare($sql1);
$sql2->execute();
$change_flag=true;
$domain_added_flag=true;
echo "Domain ".$dbvals['vh_name_vc']." SPF record added now.\n";
}
// **************************** Ending of the code for spf generation *********************************************** //
// **************************** starting of the code for dkim generation *********************************************** //
$rows_dkim = $zdbh->prepare("select * from x_dns where dn_name_vc='".$dbvals['vh_name_vc']."' AND dn_type_vc='TXT' AND dn_target_vc like '%dkim%' AND dn_deleted_ts IS NULL");
$rows_dkim->execute();
if ($rows_dkim->fetchColumn() != 0)
{
echo "Domain ".$dbvals['vh_name_vc']." dkim record already exists \n";
}else
{
$cmd="whereis sh | awk '{print $2}'";
$sh_url=trim(shell_exec($cmd),"\n");
$domain=$dbvals['vh_name_vc'];
$output = shell_exec("$sh_url /root/dkim.sh $domain");
/* while( !file_exists("/etc/opendkim/keys/".$domain."/default.txt") )
{
sleep(1);
} */
sleep(5);
if(file_exists("/etc/opendkim/keys/".$domain."/default.txt"))
{
$myfile = fopen("/etc/opendkim/keys/".$domain."/default.txt", "r") or die("Unable to open file!");
$line = fread($myfile,filesize("/etc/opendkim/keys/$domain/default.txt"));
fclose($myfile);
$data=explode('"',$line);
$join =$data[1].$data[3];
$target=str_replace(" ","",$join);
$time = time();
$type_new = "TXT";
$def = "default._domainkey";
$sql_ins="INSERT INTO x_dns (dn_acc_fk,
dn_name_vc,
dn_vhost_fk,
dn_type_vc,
dn_host_vc,
dn_ttl_in,
dn_target_vc,
dn_priority_in,
dn_weight_in,
dn_port_in,
dn_created_ts) VALUES (
'".$dbvals['vh_acc_fk']."','"
.$domain."','"
.$dbvals['vh_id_pk']."','"
.$type_new."','"
.$def."','3600','"
.$target."','0','0','0','"
.$time."')";
$sql1 = $zdbh->prepare($sql_ins);
$sql1->execute();
$change_flag=true;
$domain_added_flag=true;
echo "Domain ".$dbvals['vh_name_vc']." DKIM record added now.\n";
}
else
{
echo "Domain ".$dbvals['vh_name_vc']." DKIM Not Generating.\n";
}
}
// **************************** Ending of the code for dkim generation *********************************************** //
// **************************** starting of the code for spf generation *********************************************** //
$rows_dmarc = $zdbh->prepare("select * from x_dns where dn_name_vc='".$dbvals['vh_name_vc']."' AND dn_type_vc='TXT' AND dn_target_vc like '%DMARC%' AND dn_deleted_ts IS NULL");
$rows_dmarc->execute();
if ($rows_dmarc->fetchColumn() != 0)
{
echo "Domain ".$dbvals['vh_name_vc']." DMARC Record already exists \n";
}else
{
$type_newspf = "TXT";
$defspf = "_dmarc";
$domain=$dbvals['vh_name_vc'];
$time = time();
$targetspf ="v=DMARC1; p=none;";
$sql3="INSERT INTO x_dns (dn_acc_fk,
dn_name_vc,
dn_vhost_fk,
dn_type_vc,
dn_host_vc,
dn_ttl_in,
dn_target_vc,
dn_priority_in,
dn_weight_in,
dn_port_in,
dn_created_ts) VALUES (
'".$dbvals['vh_acc_fk']."','"
.$domain."','"
.$dbvals['vh_id_pk']."','"
.$type_newspf."','"
.$defspf."','3600','"
.$targetspf."','0','0','0','"
.$time."')";
$sql4 = $zdbh->prepare($sql3);
$sql4->execute();
$change_flag=true;
$domain_added_flag=true;
echo "Domain ".$dbvals['vh_name_vc']." dmarc record added now.\n";
}
// **************************** Ending of the code of DMARC generation *********************************************** //
if($domain_added_flag)
{
$change_domain_list.=$dbvals['vh_id_pk'].",";
}
}
if($change_flag)
{
$records_list=rtrim($change_domain_list,",");
$sql = "UPDATE x_settings SET so_value_tx=:newlist WHERE so_name_vc='dns_hasupdates'";
$sql = $zdbh->prepare($sql);
$sql->bindParam(':newlist', $records_list);
$sql->execute();
// $change_domain_list=rtrim($change_domain_list,",");
$sql_update = $zdbh->prepare("UPDATE x_settings SET so_value_tx='true' WHERE so_name_vc='apache_changed'");
$sql_update->execute();
$cmd="whereis php | awk '{print $2}'";
$php_url=trim(shell_exec($cmd),"\n");
shell_exec("$php_url /etc/sentora/panel/bin/daemon.php");
shell_exec("/usr/sbin/service named restart");
}
}
else
{
echo "Vhosts does not exists.";
exit();
}
?>