/usr/src/rmw/cpanel/RemoteMxWizard/php
Edit: /usr/src/rmw/cpanel/RemoteMxWizard/php/whm.func.php (8884B)
$type) {
if (!empty($Pservices['record'][$key]) && !empty($Pservices['destination'][$key])) {
if ($Pservices['settoselect'][$key] == 'yes') {$settoselect=1;} else {$settoselect=0;}
$ConfFileContent .= "SERVICER".$ii."==".$type.":".$Pservices['record'][$key].":".$Pservices['destination'][$key].":".$settoselect."\n";
$ii++;
} elseif (empty($Pservices['record'][$key]) && empty($Pservices['destination'][$key])) {
continue;
} else {
$returnError = true;
}
}
if ($returnError) {
$return['errors'][] = 'Missing values in the Provider Additional Records';
}
}
//
if (empty($return['errors'])) {
if (file_put_contents($Pconffile,$ConfFileContent)) {
$return['status'] = true;
} else {
$return['errors'][] = 'Cannot save the provider configuration';
}
}
}
return $return;
}
function RemoveMailProviderConf($CpToken,$ConfFile) {
if ($CpToken == $_ENV['cp_security_token']) {
if (validateConfFileName($ConfFile)) {
if (file_exists('/usr/local/cpanel/base/3rdparty/RemoteMxWizard/mail_providers/'.$ConfFile)) {
if (unlink('/usr/local/cpanel/base/3rdparty/RemoteMxWizard/mail_providers/'.$ConfFile)) {
return true;
}
}
}
}
return false;
}
function ValidateProviderConf($CpTokens,$ConfigFile) {
if ($CpTokens == $_ENV['cp_security_token']) {
$ProviderConfig = GetMailProviderConf($ConfigFile);
if (empty($ProviderConfig['NAME'])) {
$return['errors'][] = 'The provider name cannot be empty.';
}
if (empty($ProviderConfig['DESCRIPTION'])) {
$return['errors'][] = 'The provider description cannot be empty.';
}
if (isset($ProviderConfig['MXs']) && is_array($ProviderConfig['MXs'])) {
foreach ($ProviderConfig['MXs'] as $mx=>$pri) {
if (!checkdnsrr($mx, 'ANY')) {
$return['errors'][] = 'No public DNS records found for the domain: '.$mx;
}
if (!checkIfNumber($pri)) {
$return['errors'][] = $mx.' priority must be a number.';
}
}
} else {
$return['errors'][] = 'The provider MXs cannot be empty.';
}
if (!empty($ProviderConfig['BACKUPMX'])) {
if (!checkIfNumber($ProviderConfig['BACKUPMX'])) {
$return['errors'][] = 'The MX Backup priority must be a number.';
} elseif ( isset($ProviderConfig['MXs']) && ( (int)max($ProviderConfig['MXs']) > (int)$ProviderConfig['BACKUPMX'] ) ) {
$return['errors'][] = 'The MX Backup should have the highest priority.';
}
}
if (isset($ProviderConfig['SERVICERS']) && is_array($ProviderConfig['SERVICERS'])) {
foreach ($ProviderConfig['SERVICERS'] as $service) {
if ($service[1] && $service[2] && $service[0] != 'TXT') {
$services[$service[2]][$service[0]] = $service[0];
}
}
foreach ($services as $serviceDomain=>$typeArr) {
foreach ($typeArr as $type) {
if ( ($type == 'CNAME') && (!checkdnsrr($serviceDomain, 'A') && !checkdnsrr($serviceDomain, 'CNAME')) ) {
$return['errors'][] = 'No CNAME or A record found for the service domain: '.$serviceDomain;
} elseif ($type == 'A' && !ifValidIpAddress($serviceDomain) ) {
$return['errors'][] = 'Invalid ip address '.$serviceDomain;
}
}
}
}
}
$return['status'] = (isset($return['errors'])) ? false : true;
return $return;
}
function checkIfNumber($string) {
$number = trim($string);
if ( (int)($number) || ctype_digit($number) || is_numeric($number) ) {
return true;
} else {
return false;
}
}
function addNewMailProvider($CpToken) {
$return['newfile'] = false;
if ($CpToken == $_ENV['cp_security_token']) {
$ConfFileName = trim($_POST['addnewprovider']);
if (preg_match('/^[a-z0-9 ]+$/i', $ConfFileName)) {
$filename = strtolower(preg_replace('!\s+!', '_', $ConfFileName));
$Pconffile = '/usr/local/cpanel/base/3rdparty/RemoteMxWizard/mail_providers/'.$filename.'.conf';
if (!file_exists($Pconffile)) {
$ConfFileContent = "PNAME==\nDESCRIPTION==\nBACKUPMX==\nSPFR==\nSTATUS==0\n";
if (file_put_contents($Pconffile,$ConfFileContent)) {
$return['newfile'] = $filename.'.conf';
} else {
$return['error'] = 'Error creating the new provider';
}
} else {
$return['error'] = 'This provider name is already exist';
}
} else {
$return['error'] = 'You can use only alphanumeric characters for the new provider';
}
} else {
$return['error'] = 'Invalid cPanel security token';
}
return $return;
}
function validateConfFileName($confFile) {
if (preg_match('/^[a-z0-9_.]+$/i', $confFile)) {
preg_match('/\.[^\.]+[conf]$/i', $confFile, $ext);
if ($ext[0] == '.conf') {
if (file_exists('/usr/local/cpanel/base/3rdparty/RemoteMxWizard/mail_providers/'.$confFile)) {
return true;
}
}
}
return false;
}
function fileToProviderName($file) {
return ucwords(str_replace('_', ' ', rtrim($file, '.conf')));
}
function ifValidIpAddress($ip) {
if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_RES_RANGE)) {
return true;
} else {
return preg_match("/([0-9\.]+)\.([0-9]+)(\/|\-)([0-9]+)$/", $ip);
}
}
?>