zimbraAddressAvailable.php 1.7 KB

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