public function setNetwork($subnet, $netmask = null) { if ($netmask === null && strpos($subnet, '/') === false) { throw new Zend_Validate_Exception('If the netmask is not specified then the CIDR (e.g. /24) must be provided'); } if ($netmask === null) { $cidr = substr($subnet, strpos($subnet, '/') + 1); $subnet = substr($subnet, 0, strpos($subnet, '/')); try { $ipVersion = App_Util_Ip::getIpVersion($subnet); if ($ipVersion == App_Util_Ip::v4) { $netmask = App_Util_Ip::long2ipv4($cidr); } else { $netmask = App_Util_Ip::long2ipv6($cidr); } } catch (\Application\Exceptions\InvalidArgumentException $e) { throw new Zend_Validate_Exception('Invalid CIDR specified'); } } else { // Only for IPv6 we want to convert the prefix to IP, for other cases everything is fine if (App_Util_Ip::getIpVersion($subnet) == App_Util_Ip::v6) { $maskPrefix = explode("/", $netmask); if (count($maskPrefix) == 2) { $netmask = $maskPrefix[1]; } $netmask = App_Util_Ip::long2ipv6($netmask); } } // Final conversion to be able to make bytewise operations try { // this is kind of evil but it works fine for ipv4. For newer php // versions dtr_pton is not working as expected for some ips $this->_version = App_Util_Ip::getIpVersion($subnet); if ($this->_version == App_Util_Ip::v4) { $this->_subnet = ip2long($subnet); $this->_netmask = ip2long($netmask); } else { $this->_subnet = App_Util_Ip::dtr_pton($subnet); $this->_netmask = App_Util_Ip::dtr_pton($netmask); } } catch (Exception $e) { throw new Zend_Validate_Exception("Unexpected error. Incorrect address"); } }
/** * Lists all sims matching a criteria */ public function indexAction() { $dumpSim = new SimModel(); $this->_helper->allowed('list', $dumpSim); $filters = $this->_getFilterParams(); if (isset($filters['subscriptionID'])) { $filters['id'] = $filters['subscriptionID']; } $this->_checkFilterParams($filters, SimFilterFields::getWhiteList()); if (isset($filters[SimFilterFields::CURRENT_IP]) && App_Util_Ip::getIpVersion($filters[SimFilterFields::CURRENT_IP]) == App_Util_Ip::v6) { $filters[SimFilterFields::CURRENT_IP] = App_Util_Ip::ipv6Expand($filters[SimFilterFields::CURRENT_IP]); } if (isset($filters[SimFilterFields::STATIC_IP]) && App_Util_Ip::getIpVersion($filters[SimFilterFields::STATIC_IP]) == App_Util_Ip::v6) { $filters[SimFilterFields::STATIC_IP] = App_Util_Ip::ipv6Expand($filters[SimFilterFields::STATIC_IP]); } $filterList = $this->_simSrv->buildFilterList($filters); $filterHelper = $this->_helper->getHelper('filterNotAllowedFilters'); $filterHelper->setThrowExOnNotAllowed(true); $filterHelper->direct('filter_by', $filterList); $params = $this->_getPaginatorParams(); $simList = $this->_simSrv->listAll($filterList, $params, null, \App::getOrgUserLogged()); if ($simList instanceof Application\Model\Stream\StreamResultModel) { $this->view->subscriptionData = array(); $simList->getIterator()->addPlugin(new Stream\Plugin\Sim\Permissions()); foreach ($simList as $value) { $subscriptionData = $value->exportData(); $subscriptionData = $this->_mapToSdp($subscriptionData); // Make the data available on the view $this->view->subscriptionData[] = $subscriptionData; } //$this->view->count = $simList->getCount(); } else { if ($simList instanceof Application\Model\GroupListModel) { $groups = $simList->getGroups(); $this->view->data = $simList; } } }
/** * @expectedException Application\Exceptions\InvalidArgumentException */ public function testBadIPv6MaskShouldTriggerException() { App_Util_Ip::getIpVersion("fe80:1:2:3:a:bad:1deaf:dad"); }
/** * Lists all sims matching a criteria */ public function indexAction() { $dumpSim = new SimModel(); $this->_helper->allowed('list', $dumpSim); $filters = $this->_mapToFilter($this->_getFilterParams()); foreach (array(SimFilterFields::PROVISION_DATE, SimFilterFields::ACTIVATION_DATE) as $key) { if (isset($filters[$key])) { $filters[$key] = "!<" . $filters[$key]; } } try { if (isset($filters[SimFilterFields::CURRENT_IP]) && App_Util_Ip::getIpVersion($filters[SimFilterFields::CURRENT_IP]) == App_Util_Ip::v6) { $filters[SimFilterFields::CURRENT_IP] = App_Util_Ip::ipv6Expand($filters[SimFilterFields::CURRENT_IP]); } } catch (InvalidArgumentException $ex) { throw new InvalidArgumentException("Invalid parameter value: ip."); } try { if (isset($filters[SimFilterFields::STATIC_IP]) && App_Util_Ip::getIpVersion($filters[SimFilterFields::STATIC_IP]) == App_Util_Ip::v6) { $filters[SimFilterFields::STATIC_IP] = App_Util_Ip::ipv6Expand($filters[SimFilterFields::STATIC_IP]); } } catch (InvalidArgumentException $ex) { throw new InvalidArgumentException("Invalid parameter value: staticIp."); } $this->_checkFilterParams($filters, SimFilterFields::getWhiteList()); $filterList = $this->_simSrv->buildFilterList($filters); $filterHelper = $this->_helper->getHelper('filterNotAllowedFilters'); $filterHelper->setThrowExOnNotAllowed(true); $filterHelper->direct('filter_by', $filterList); $params = $this->_getPaginatorParams(); $simList = $this->_simSrv->listAll($filterList, $params, null, \App::getOrgUserLogged()); if ($simList instanceof Application\Model\Stream\StreamResultModel) { $this->view->subscriptionData = array(); $simList->getIterator()->addPlugin(new Stream\Plugin\Sim\Permissions()); foreach ($simList as $value) { $subscriptionData = $value->exportData(); $subscriptionData = $this->_mapToSdp($subscriptionData); // Make the data available on the view $this->view->subscriptionData[] = $subscriptionData; } //$this->view->count = $simList->getCount(); if (empty($this->view->subscriptionData)) { $this->getResponse()->setHttpResponseCode(204); $this->_helper->viewRenderer->setNoRender(TRUE); } } }