zimbraAddressAvailable.php 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. <?php
  2. define('IS_AJAX', isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest');
  3. if(!IS_AJAX) {
  4. die(print_r($_SERVER));
  5. }
  6. $pos = strpos($_SERVER['HTTP_REFERER'],getenv('HTTP_HOST'));
  7. if($pos===false) {
  8. die('Restricted access');
  9. }
  10. require_once(__DIR__ . '/../../../init.php');
  11. require_once("api/Zm/Auth.php");
  12. require_once("api/Zm/Account.php");
  13. use WHMCS\Database\Capsule;
  14. $whmcs = App::self();
  15. $account_name = $_GET['name'] . "@" . $_GET['domain'];
  16. $productID = $_GET['pid'];
  17. $accessData = array('zimbraServer' => '', 'adminUser' => '', 'adminPass' => '');
  18. $serverGroupIDObj = Capsule::table('tblproducts')
  19. ->select('servergroup')
  20. ->where('id', '=', $productID)
  21. ->get();
  22. $serverGroupID = $serverGroupIDObj[0]->servergroup;
  23. $serverIDObj = Capsule::table('tblservergroupsrel')
  24. ->select('serverid')
  25. ->where('groupid', '=', $serverGroupID)
  26. ->get();
  27. $serverID = $serverIDObj[0]->serverid;
  28. $server = Capsule::table('tblservers')
  29. ->select('ipaddress', 'username', 'password')
  30. ->where('id', '=', $serverID)
  31. ->where('active', '=', 1)
  32. ->get();
  33. $accessData['zimbraServer'] = $server[0]->ipaddress;
  34. $accessData['adminUser'] = $server[0]->username;
  35. $adminPassCrypt = $server[0]->password;
  36. $adminPassDecrypt = localAPI('DecryptPassword', array('password2' => $adminPassCrypt));
  37. if ($adminPassDecrypt['result'] == 'success') {
  38. $accessData['adminPass'] = $adminPassDecrypt['password'];
  39. }
  40. $api = new Zm_Auth($accessData['zimbraServer'], $accessData['adminUser'], $accessData['adminPass'], "admin");
  41. $login = $api->login();
  42. if(is_a($login, "Exception")) {
  43. logModuleCall(
  44. 'zimbrasingle',
  45. __FUNCTION__,
  46. $accessData,
  47. "Error : cannot login to " . $accessData['zimbraServer'],
  48. $login->getMessage()
  49. );
  50. exit();
  51. } else {
  52. $apiAccountManager = new Zm_Account($api);
  53. if( $apiAccountManager->accountExists($account_name)) {
  54. echo 'no';
  55. } else {
  56. echo 'yes';
  57. }
  58. }