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');