DefaultIPHelper.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. <?php
  2. namespace MGModule\DNSManager2\mgLibs\custom\manager\additionalMethods;
  3. use \MGModule\DNSManager2 as main;
  4. use MGModule\DNSManager2\mgLibs\custom\dns\utils\IP;
  5. use MGModule\DNSManager2\mgLibs\custom\manager\ZoneCreator;
  6. use MGModule\DNSManager2\models\custom\zone\ZoneTypeEnum;
  7. class DefaultIPHelper
  8. {
  9. private $zone;
  10. private $item = false;
  11. private $package = false;
  12. private $zoneLinked;
  13. public function getDefaultIpBySpecificDomain($domain, $typeId){
  14. $ip = false;
  15. $checkIfServiceExist = main\mgLibs\MySQL\query::select(array('*'), 'tblhosting', array('domain' => $domain->domain, 'userid' => $domain->userid, 'domainstatus' => 'Active'))->fetchAll();
  16. $IPList = $this->makeIpList($checkIfServiceExist[0]['assignedips']);
  17. try
  18. {
  19. if(!empty($checkIfServiceExist) && $checkIfServiceExist[0]['server']){
  20. $dnsPackageId = $this->findDnsPackageByProductId($checkIfServiceExist[0]['packageid'], $typeId);
  21. $package = new main\models\custom\package\Package($dnsPackageId);
  22. $server = new main\models\whmcs\servers\server($checkIfServiceExist[0]['server']);
  23. $IPListPackages = $this->getPackageServerIPs($package->getServers());
  24. $ip = $this->getDefaultIp($checkIfServiceExist[0]['dedicatedip'], $IPList, $server->ip, $IPListPackages);
  25. } else {
  26. $simulateCreation = new ZoneCreator($domain->domain, ZoneTypeEnum::DOMAIN, $domain->id, false, $domain->clientID());
  27. if($simulateCreation->server)
  28. {
  29. $serverDefaultIP = unserialize($simulateCreation->server->getSettings('module_configuration'))['default_ip'];
  30. if (!empty($serverDefaultIP))
  31. $ip = $serverDefaultIP;
  32. }
  33. }
  34. }
  35. catch(\Exception $e)
  36. {
  37. logModuleCall(
  38. 'DNS Manager', __FUNCTION__, $e->getMessage(), $e->getTraceAsString()
  39. );
  40. return $ip;
  41. }
  42. return $ip;
  43. }
  44. private function findDnsPackageByProductId($productId, $typeId){
  45. $checkIfServiceExist = main\mgLibs\MySQL\query::select(array('packageid'), 'dns_manager2_packageitem', array('relid' => $productId, 'type' => $typeId))->fetchAll();
  46. return $checkIfServiceExist[0]['packageid'];
  47. }
  48. public function getPackageServerIPs($packageServers){
  49. $IPListPackages = [];
  50. foreach($packageServers as $packageServer)
  51. {
  52. $defaultIP = unserialize($packageServer->getServer()->getSettings('module_configuration')->value)['default_ip'];
  53. if($defaultIP != null)
  54. array_push($IPListPackages, $defaultIP);
  55. }
  56. return $IPListPackages;
  57. }
  58. public function getDefaultIp($dedicatedIp, $IPList, $serverIp, $IPListPackages){
  59. $ip = false;
  60. if($dedicatedIp)
  61. {
  62. $ip = $dedicatedIp;
  63. }
  64. elseif($IPList)
  65. {
  66. $ip = reset($IPList);
  67. }
  68. elseif($serverIp)
  69. {
  70. $ip = $serverIp;
  71. }
  72. elseif($IPListPackages)
  73. {
  74. $ip = reset($IPListPackages);
  75. }
  76. return $ip;
  77. }
  78. public function makeIpList($assingedips){
  79. $IPList = [];
  80. foreach(explode(" ",$assingedips) as $ip)
  81. {
  82. if($ip) {
  83. $ipo = new IP(trim($ip));
  84. $ip = (string) $ipo;
  85. array_push($IPList, trim($ip));
  86. }
  87. }
  88. return $IPList;
  89. }
  90. }