IPManagerIntegration.php 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. <?php
  2. namespace MGModule\DNSManager2\mgLibs\custom\helpers;
  3. use \MGModule\DNSManager2\addon;
  4. use \MGModule\DNSManager2\mgLibs\MySQL\query;
  5. class IPManagerIntegration
  6. {
  7. private static $check = null;
  8. static function check()
  9. {
  10. if(!is_null(self::$check)) {
  11. return self::$check;
  12. }
  13. if(!file_exists(dirname(addon::getMainDIR()) . DS . 'ipmanager2')) {
  14. self::$check = false;
  15. return false;
  16. };
  17. if(AddonHelper::isAddonTurnedON('ipmanager2')
  18. && version_compare('2.0.5', AddonHelper::getAddonVerison('ipmanager2'), '<=')) {
  19. self::$check = true;
  20. return true;
  21. }
  22. self::$check = false;
  23. return false;
  24. }
  25. static function getIPPoolsForService($serviceid) { //ipv4 only
  26. if(self::check() === false) {
  27. return array();
  28. }
  29. return query::query('SELECT ip_manager_ip_pools.pool, ip_manager_ip_pools.mask
  30. FROM ip_manager_assigned_pools
  31. INNER JOIN ip_manager_ip_pools ON ip_manager_ip_pools.id = ip_manager_assigned_pools.pool_id
  32. WHERE ip_manager_assigned_pools.service_id = :serviceid', array('serviceid' => $serviceid))->fetchAll();
  33. }
  34. static function getIPPoolsForClient($clientid) {
  35. if(self::check() === false) {
  36. return array();
  37. }
  38. return query::query('SELECT ip_manager_ip_pools.pool, ip_manager_ip_pools.mask
  39. FROM ip_manager_assigned_pools
  40. INNER JOIN ip_manager_ip_pools ON ip_manager_ip_pools.id = ip_manager_assigned_pools.pool_id
  41. INNER JOIN tblhosting ON tblhosting.id = ip_manager_assigned_pools.service_id
  42. WHERE tblhosting.userid = :userid', array('userid' => $clientid))->fetchAll();
  43. }
  44. static function isIPInNetwork($ip, $net_addr, $net_mask = false) //ipv4 only
  45. {
  46. if($net_mask === false) {
  47. $ex = explode('/', $net_addr);
  48. $net_addr = $ex[0];
  49. $net_mask = $ex[1];
  50. }
  51. if($net_mask <= 0) {
  52. return false;
  53. }
  54. $ip_binary_string = sprintf("%032b", ip2long($ip));
  55. $net_binary_string = sprintf("%032b", ip2long($net_addr));
  56. return (substr_compare($ip_binary_string, $net_binary_string, 0, $net_mask) === 0);
  57. }
  58. }