where('id', $id)->first();
#select registrar data
foreach (Capsule::table('tblregistrars')->where('registrar', $domain_select_data->registrar)->get() as $registrar_data) {
$data[$registrar_data->setting] = decrypt($registrar_data->value);
}
return $data;
}
#*********************Create Epp Connection**************************#
function switchepp_clientloginepp_hook($params)
{
try {
$certFile = __DIR__ . '/cert/cert.pem';
$client = new Net_EPP_Client();
$use_ssl = true;
if (file_exists($certFile)) {
$context = stream_context_create();
stream_context_set_option($context, 'ssl', 'verify_peer', false);
stream_context_set_option($context, 'ssl', 'allow_self_signed', true);
stream_context_set_option($context, 'ssl', 'local_cert', $certFile);
stream_context_set_option($context, 'ssl', 'passphrase', $params['passphrase']);
$client->connect($params['eppurl'], $params['eppport'], 300, $use_ssl, $context) or die("Not connected with epp server");
} else {
$context = false;
$client->connect($params['eppurl'], $params['eppport'], 300, $use_ssl, $context) or die("Not connected with epp server");
}
} catch (Exception $e) {
$port = $params['eppport'];
throw new exception("Connection Error: " . $e->getMessage());
}
return $client;
}
#*********************Epp client login**************************#
function switchepp_loggedinepp_hook($client, $params)
{
$xml = '
' . $params['registrar_id'] . '
' . $params['registrar_password'] . '
1.0
en
urn:ietf:params:xml:ns:domain-1.0
urn:ietf:params:xml:ns:contact-1.0
urn:ietf:params:xml:ns:host-1.0
urn:ietf:params:xml:ns:secDNS-1.1
urn:ietf:params:xml:ns:rgp-1.0
urn:ietf:params:xml:ns:changePoll-1.0
https://www.nic.ch/epp/balance-1.0
urn:ietf:params:xml:ns:epp:unhandled-namespaces-1.0
' . rand(9999999, 100000) . '
';
$response = $client->request($xml);
logModuleCall('SWITCH EPP', 'login', $xml, $response);
$result = new SimpleXMLElement($response);
if ($result->response->result->attributes()->code >= 2000) {
throw new exception($result->response->result->msg . '. ' . $result->response->result->extValue->reason);
}
return $result;
}
function switchepp_write_xml_hook($client, $xml, $action, $extra = NULL)
{
$response = $client->request($xml);
if (empty($extra)) {
logModuleCall('SWITCH EPP hook', 'domain update extension(DNSSEC)', $xml, $response);
$result = new SimpleXMLElement($response);
if ($result->response->result->attributes()->code >= 2000) {
throw new exception($result->response->result->msg . '. ' . $result->response->result->extValue->reason);
}
return $result;
}
}
function switchepp_logoutepp_hook($client, $params)
{
$xml = '
' . $params['registrar_id'] . '
';
$response = $client->request($xml);
logModuleCall('SWITCH EPP', 'logout', $xml, $response);
}
function switchepp_generateDigestRandomString_hook($length = 15)
{
$characters = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
$charactersLength = strlen($characters);
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, $charactersLength - 1)];
}
return $randomString;
}
if (isset($_POST['updatednsdata']) && isset($_POST['dnscheck']) && !empty($whmcs->get_req_var('id'))) {
$params = [];
$dnscheck = $whmcs->get_req_var('dnscheck');
$domain_zoneid = $whmcs->get_req_var('id');
$domaindata = Capsule::table('dns_manager2_zone')->where('id', $domain_zoneid)->first();
$domainname = $domaindata->name;
$domaindetail = Capsule::table('tbldomains')->where('domain', $domainname)->first();
$settingArr = getSwitchEPP_settinghook($domaindetail->id);
$params = array_merge($params, $settingArr);
$client = switchepp_clientloginepp_hook($params); #Epp Connection
$login = switchepp_loggedinepp_hook($client, $params);
/*$digestType = $params['digest_type'];
if (empty($digestType))
$digestType = 1;
if ($digestType == 1) {
$string = switchepp_generateDigestRandomString_hook(40);
$digest = strtoupper(bin2hex($string));
$digest = substr($digest, 0, 40);
} elseif ($digestType == 2) {
$string = switchepp_generateDigestRandomString_hook(64);
$digest = strtoupper(bin2hex($string));
$digest = substr($digest, 0, 64);
} elseif ($digestType == 3 || $digestType == 4) {
$string = switchepp_generateDigestRandomString_hook(96);
$digest = strtoupper(bin2hex($string));
$digest = substr($digest, 0, 96);
}*/
//$params['algorithm'] = (!empty($params['algorithm'])) ? $params['algorithm'] : '5';
//$params['algorithm'] = 13;
$algorithm = $whmcs->get_req_var('algotype');
$digestType = $whmcs->get_req_var('digesttype');
$digest = $whmcs->get_req_var('digest');
$keytag = $whmcs->get_req_var('keytag');
if ($dnscheck == 'disableDnssec') {
$dnssec = '
true
';
}
if ($dnscheck == 'enableDnssec') {
$dnssec = '
' . $keytag . '
' . $algorithm . '
' . $digestType . '
' . $digest . '
';
}
try {
$xmlUpdate = '
' . $domainname . '
' . $dnssec . '
clientref-' . rand(1000, 9999) . '
';
$update_domain = switchepp_write_xml_hook($client, $xmlUpdate, __FUNCTION__ . ' (Domain update)');
} catch (Exception $ex) {
$error = $ex->getMessage();
}
switchepp_logoutepp_hook($client, $params);
}
});
function hook_changedns($vars)
{
global $whmcs;
if ($whmcs->get_req_var('m') == 'DNSManager3' && $whmcs->get_req_var('mg-action') == 'dnssec' && !empty($whmcs->get_req_var('id'))) {
$domaindata = Capsule::table('dns_manager2_zone')->where('id', $_GET['id'])->first();
$domaindetail = Capsule::table('tbldomains')->where('domain', $domaindata->name)->first();
$check = end(explode('.', $domaindata->name));
if ($domaindetail->registrar == 'switchepp') {
return <<
jQuery(document).ready(function () {
var checkdns = "";
jQuery(".customNav").next('div').find('a').each(function(){
if(jQuery(this).data("id") == "enableDNSSecButton"){
if(jQuery(this).hasClass('lu-d-none'))
checkdns = "disableDnssec";
}else if(jQuery(this).data("id") == "disableDNSSecButton"){
if(jQuery(this).hasClass('lu-d-none'))
checkdns = "enableDnssec";
}
});
dnsmanage(checkdns);
});
function dnsmanage(checkdns){
var intervalcheck = setInterval(function(){
if(jQuery(".toast-message").html()){
jQuery("body").append("");
cleartimedcheck();
}
});
function cleartimedcheck(){
clearInterval(intervalcheck);
}
var intervalId = setInterval(function(){
var tbody = jQuery("#delegationSignerRecordsDataTable table tbody");
console.log(tbody.children().length);
console.log(jQuery("#customdnssec").val());
console.log(checkdns);
if (tbody.children().length != 0 && jQuery("#customdnssec").val() == "yes" && checkdns == "enableDnssec") {
cleartime();
var getkeytagtd = jQuery('#delegationSignerRecordsDataTable table tbody tr').eq(1).find('td').eq(0).text();
var getsecondtd = jQuery('#delegationSignerRecordsDataTable table tbody tr').eq(1).find('td').eq(1).text();
var getthirdtd = jQuery('#delegationSignerRecordsDataTable table tbody tr').eq(1).find('td').eq(2).text();
var digest = jQuery('#delegationSignerRecordsDataTable table tbody tr').eq(1).find('td').eq(3).find('input').val();
var algo = getsecondtd.split(" - ")[0];
var digesttype = getthirdtd.split(" - ")[0];
jQuery.ajax({
"url": "",
"type": "post",
"data": "updatednsdata=true&dnscheck="+checkdns+"&algotype="+algo+"&digesttype="+digesttype+"&digest="+digest+"&keytag="+getkeytagtd,
"success": function (response) {
setTimeout(function(){
jQuery(".customNav").next('div').find('a').each(function(){
if(jQuery(this).data("id") == "enableDNSSecButton"){
jQuery(this).attr('onClick','dnsmanage("enableDnssec")');
}else if(jQuery(this).data("id") == "disableDNSSecButton"){
jQuery(this).attr('onClick','dnsmanage("disableDnssec")');
}
});
}, 3000);
}
});
}else if(tbody.children().length == 0 && jQuery("#customdnssec").val() == "yes" && checkdns == "disableDnssec"){
cleartime();
jQuery.ajax({
"url": "",
"type": "post",
"data": "updatednsdata=true&dnscheck="+checkdns,
"success": function (response) {
setTimeout(function(){
jQuery(".customNav").next('div').find('a').each(function(){
if(jQuery(this).data("id") == "enableDNSSecButton"){
jQuery(this).attr('onClick','dnsmanage("enableDnssec")');
}else if(jQuery(this).data("id") == "disableDNSSecButton"){
jQuery(this).attr('onClick','dnsmanage("disableDnssec")');
}
});
}, 3000);
}
});
}
}, 3000);
function cleartime(){
clearInterval(intervalId);
jQuery("#customdnssec").remove();
var checkdns = "";
jQuery(".customNav").next('div').find('a').each(function(){
if(jQuery(this).data("id") == "enableDNSSecButton"){
if(jQuery(this).hasClass('lu-d-none'))
checkdns = "disableDnssec";
}else if(jQuery(this).data("id") == "disableDNSSecButton"){
if(jQuery(this).hasClass('lu-d-none'))
checkdns = "enableDnssec";
}
});
dnsmanage(checkdns);
}
}
HTML;
}
}
}
add_hook('ClientAreaHeadOutput', 1, 'hook_changedns');