Jump to content


Senior Member
  • Content Count

  • Joined

  • Last visited

  • Days Won


souzadavi last won the day on May 1

souzadavi had the most liked content!

Community Reputation

5 Neutral

About souzadavi

  • Rank

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. @Patty unfortunately it's not possible to add new brands. Is really bad! Other talk about it at: From credit card whmcs I didn't find a way to use other credit card brands...On database the WHMCS do not save right the credit card brand. There is some similar request for WHMCS since 2016, https://requests.whmcs.com/topic/new-credit-card-brand-and-bins WHMCS develop team is never available to talk.... I developed other CIELO API 3.0 gateway module from invoice... So there it's possible to use other credit card brands... I will send the link in PM...
  2. I get it done with the resource: https://www.softaculous.com/docs/api/api/#import-an-installation-from-remote-server If somebody need the script i can send it, let me know.. PS.: the whmcs oficial ticket support team never help is really bad!
  3. @Kian I didn't find a way to call a php file safely from ajax. On the button I tried to use the function runModuleCommand but it doesn't find the softaculous function. onclick="runModuleCommand('custom','softaculousclone')"I I think because the function isnt on cpanel server modules. So do you know how can I call a ajax php function from that button "Bath Time" safe? thanks
  4. I'using another hook, my script is like that: add_hook('AdminClientServicesTabFields', 1, function($vars) { $id = $vars['id']; $output .= <<<HTML <script src='/assets/js/softaculous_clone.js'></script> <script type="text/javascript"> $(document).ready(function(){ $("#modcmdbtns").append(' <button type="button" class="btn btn-danger" onclick="softaculous_clone($id);" id="btnCloneSoftaculous"><i class="fa fa-wordpress" aria-hidden="true"></i> Clone WP</button>'); }); </script> HTML; echo $output; }); My guess is about the .js file, how could it does to be safe. I`m trying to use customs function, to call the php function, but i'm not sure if is the right way. function softaculous_clone(idService){ var data = { id: idService, modop: "custom", a: "softaculous_clone", } var request = new XMLHttpRequest(); request.open('POST', '/clientarea.php?action=productdetails', true); request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); request.onload = function() { if (request.status >= 200 && request.status < 400) cb(request.responseText); else console.log(1, 'Houve um erro :('); }; request.onerror = function() { console.log(2, 'Houve um erro :('); }; request.send(data); } thanks, any information will be very appreciated.
  5. Thanks very much to replied... I would like to set a button to install automatic WordPress site from Softaculous clone process. https://www.softaculous.com/docs/api/api/#clone-an-installed-script The PHP function to create the button action should I call from jquery also? Or there is another better way to do? thanks.
  6. Hello guys, I would like to developed a new module command button inside of cPanel server module. I attached under here a image to see where I would like to have a new button. I didn't figured out how to create it, please any one know could get it done? I would like only some directions to get it done... thanks
  7. Hello guys please could you add a class at link on footer of viewinvoicetemplate.tpl to default template? SEARCH FOR: <a href="clientarea.php"> REPLACE FOR: <a href="clientarea.php" class="btn btn-success"> RESULT: Thanks
  8. Hello, I'm trying to use the addon: https://docs.whmcs.com/Licensing_Addon looks easy but I'm getting so many errors. I using the examplo code file. But i'm getting the follows errors: - Domain Invalid - License Suspended - License Suspended for Duplicate Trials Use (7,11) My CODE in under here: /**************** INICIO LICENCA ***************/ function meuCartaoPagamento_check_license($licensekey, $localkey='') { $whmcsurl = 'https://whmcs.meudominio.com.br/'; $licensing_secret_key = 'secretKey'; $localkeydays = 90; $allowcheckfaildays = 5; $check_token = time() . md5(mt_rand(100000000, mt_getrandmax()) . $licensekey); $checkdate = date("Ymd"); $domain = $_SERVER['SERVER_NAME']; $usersip = isset($_SERVER['SERVER_ADDR']) ? $_SERVER['SERVER_ADDR'] : $_SERVER['LOCAL_ADDR']; $dirpath = dirname(__FILE__); $verifyfilepath = 'modules/servers/licensing/verify.php'; $localkeyvalid = false; if ($localkey) { $localkey = str_replace("\n", '', $localkey); # Remove the line breaks $localdata = substr($localkey, 0, strlen($localkey) - 32); # Extract License Data $md5hash = substr($localkey, strlen($localkey) - 32); # Extract MD5 Hash if ($md5hash == md5($localdata . $licensing_secret_key)) { $localdata = strrev($localdata); # Reverse the string $md5hash = substr($localdata, 0, 32); # Extract MD5 Hash $localdata = substr($localdata, 32); # Extract License Data $localdata = base64_decode($localdata); $localkeyresults = json_decode($localdata, true); $originalcheckdate = $localkeyresults['checkdate']; if ($md5hash == md5($originalcheckdate . $licensing_secret_key)) { $localexpiry = date("Ymd", mktime(0, 0, 0, date("m"), date("d") - $localkeydays, date("Y"))); if ($originalcheckdate > $localexpiry) { $localkeyvalid = true; $results = $localkeyresults; $validdomains = explode(',', $results['validdomain']); if (!in_array($_SERVER['SERVER_NAME'], $validdomains)) { $localkeyvalid = false; $localkeyresults['status'] = "Invalid"; $results = array(); } $validips = explode(',', $results['validip']); if (!in_array($usersip, $validips)) { $localkeyvalid = false; $localkeyresults['status'] = "Invalid"; $results = array(); } $validdirs = explode(',', $results['validdirectory']); if (!in_array($dirpath, $validdirs)) { $localkeyvalid = false; $localkeyresults['status'] = "Invalid"; $results = array(); } } } } } if (!$localkeyvalid) { $responseCode = 0; $postfields = array( 'licensekey' => $licensekey, 'domain' => $domain, 'ip' => $usersip, 'dir' => $dirpath, ); if ($check_token) $postfields['check_token'] = $check_token; $query_string = ''; foreach ($postfields AS $k=>$v) { $query_string .= $k.'='.urlencode($v).'&'; } if (function_exists('curl_exec')) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $whmcsurl . $verifyfilepath); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $query_string); curl_setopt($ch, CURLOPT_TIMEOUT, 30); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $data = curl_exec($ch); $responseCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); } else { $responseCodePattern = '/^HTTP\/\d+\.\d+\s+(\d+)/'; $fp = @fsockopen($whmcsurl, 80, $errno, $errstr, 5); if ($fp) { $newlinefeed = "\r\n"; $header = "POST ".$whmcsurl . $verifyfilepath . " HTTP/1.0" . $newlinefeed; $header .= "Host: ".$whmcsurl . $newlinefeed; $header .= "Content-type: application/x-www-form-urlencoded" . $newlinefeed; $header .= "Content-length: ".@strlen($query_string) . $newlinefeed; $header .= "Connection: close" . $newlinefeed . $newlinefeed; $header .= $query_string; $data = $line = ''; @stream_set_timeout($fp, 20); @fputs($fp, $header); $status = @socket_get_status($fp); while (!@feof($fp)&&$status) { $line = @fgets($fp, 1024); $patternMatches = array(); if (!$responseCode && preg_match($responseCodePattern, trim($line), $patternMatches) ) { $responseCode = (empty($patternMatches[1])) ? 0 : $patternMatches[1]; } $data .= $line; $status = @socket_get_status($fp); } @fclose ($fp); } } if ($responseCode != 200) { $localexpiry = date("Ymd", mktime(0, 0, 0, date("m"), date("d") - ($localkeydays + $allowcheckfaildays), date("Y"))); if ($originalcheckdate > $localexpiry) { $results = $localkeyresults; } else { $results = array(); $results['status'] = "Invalid"; $results['description'] = "Remote Check Failed"; return $results; } } else { preg_match_all('/<(.*?)>([^<]+)<\/\\1>/i', $data, $matches); $results = array(); foreach ($matches[1] AS $k=>$v) { $results[$v] = $matches[2][$k]; } } if (!is_array($results)) { die("Invalid License Server Response"); } if ($results['md5hash']) { if ($results['md5hash'] != md5($licensing_secret_key . $check_token)) { $results['status'] = "Invalid"; $results['description'] = "MD5 Checksum Verification Failed"; return $results; } } if ($results['status'] == "Active") { $results['checkdate'] = $checkdate; $data_encoded = json_encode($results); $data_encoded = base64_encode($data_encoded); $data_encoded = md5($checkdate . $licensing_secret_key) . $data_encoded; $data_encoded = strrev($data_encoded); $data_encoded = $data_encoded . md5($data_encoded . $licensing_secret_key); $data_encoded = wordwrap($data_encoded, 80, "\n", true); $results['localkey'] = $data_encoded; } $results['remotecheck'] = true; } unset($postfields,$data,$matches,$whmcsurl,$licensing_secret_key,$checkdate,$usersip,$localkeydays,$allowcheckfaildays,$md5hash); return $results; } function meuCartaoPagamento_licenca($licensekey){ $localkey = ""; $base = __DIR__."/meuCartaoPagamento-licenca.txt"; if (!file_exists($base)) { ///first check $results = meuCartaoPagamento_check_license($licensekey); $localkey = $results['localkey']; }else{ /// LER O ARQUIVO $handle = fopen($base, "r"); if ($handle) { $txt = explode("::", trim(fgets($handle))); fclose($handle); if($txt == false){ }else{ $licensekey = $txt[0]; $localkey = $txt[1]; $results = meuCartaoPagamento_check_license($licensekey, $localkey); } } } if(isset($results['localkey']) && $results['status'] == "Active"){ $textfile = fopen($base, "w") or die("Não foi possível abrir o arquivo."); $contents = $licensekey."::".$results['localkey']."::".date('Y h:i:s A'); fwrite($textfile, $contents); fclose($textfile); } // Interpret response switch ($results['status']) { case "Active": return "Active"; case "Invalid": return "Invalid". print_r($results, true)."TxtFile:".$licensekey."::".$localkey; //break; case "Expired": //die("Chave de Licença Expirada"); return "Expired". print_r($results, true); //break; case "Suspended": //die("Chave de Licença Suspensa"); return "Suspended". print_r($results, true); //break; default: //die("Resposta Inválida"); return "Erro". print_r($results, true); //break; } } /**************** FIM LICENCA ***************/ To stop the errors i disabled the domain check. So my products details is: But I still getting error, any help will be appreciated. My Check code is right? Thanks.
  9. Hi @brian! i thought you are from WHMCS team. Sorry about it. The other thing I did to fix this problem is changing the cron on cPanel. Cron's was running other php version of WHMCS. Crons was 7.2 and WHMCS was 7.3. And for some how the cron error message was sent to me every 5 minutes. After change bootstrap file and php version the annoying error message is gone. In cPanel command crons config's: /opt/cpanel/ea-php73/root/usr/bin/php -q /home/username/WHMCScronsFolders/pop.php
  10. I think the problem is because I'm using custom cron folder. The pop.php file dont find the file boostrap.php.... Looks like is a small bug in pop.php file. I just copy the file boostrap.php from my custom's cron folder to the WHMCS root folder. @brian! please could you fix it own pop.php file? The pop.php file should consider custom cron folder. thanks
  11. I got this error too for long time.... looking the log a found it: [02-Oct-2019 10:16:33 America/Sao_Paulo] PHP Warning: main(/home/link/whmcs/bootstrap.php): failed to open stream: No such file or directory in /home/link/whmcs/pop.php on line 0 [02-Oct-2019 10:16:33 America/Sao_Paulo] PHP Fatal error: main(): Failed opening required '/home/link/whmcs/bootstrap.php' (include_path='.:/opt/cpanel/ea-php73/root/usr/share/pear') in /home/link/whmcs/pop.php on line 0 There is any way to fix it? thanks
  12. I'm trying to add on: /whmcs/assets/js/jquery.payment.js { type: 'elo', patterns: [4011|438935|45(1416|76)|50(4175|6699|67|90[4-7])|63(6297|6368)], format: defaultFormat, length: [12, 13, 14, 15, 16, 17, 18, 19], cvcLength: [3], luhn: true }, But still not working, there is another place to add the brands type?? thanks
  13. They change so many things in credit card process. And they didn't post any news about how this was changed. I've been working around it. And I did some fix in my credit card module. The example in github https://github.com/WHMCS/developer-docs/blob/master/payment-gateways/tokenised-remote-storage.md help me out how to fix it.
  14. In this new version I cant add new type of brands. Before 7.8 i did a Hooks that work fine. There is anyway to add new credit card brands in WHMCS 7.8? My hook that was working before 7.8: add_hook('ClientAreaPageCart', 1, function($vars) { $array = array('Visa', 'Master', 'Amex', 'Elo', 'Aura', 'JCB', 'Diners','Discover','Hipercard', 'Elo Débito'); return array("acceptedcctypes" => $array); }); Thanks
  • Create New...

Important Information

By using this site, you agree to our Terms of Use & Guidelines and understand your posts will initially be pre-moderated