本文整理汇总了PHP中IPAddress::setAddressFromString方法的典型用法代码示例。如果您正苦于以下问题:PHP IPAddress::setAddressFromString方法的具体用法?PHP IPAddress::setAddressFromString怎么用?PHP IPAddress::setAddressFromString使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IPAddress
的用法示例。
在下文中一共展示了IPAddress::setAddressFromString方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: createNetworkNameFromItem
/**
* @param $itemtype
* @param $items_id
* @param $main_items_id
* @param $main_itemtype
* @param $entities_id
* @param $IP
**/
function createNetworkNameFromItem($itemtype, $items_id, $main_items_id, $main_itemtype, $entities_id, $IP)
{
global $migration;
// Using gethostbyaddr() allows us to define its reald internet name according to its IP.
// But each gethostbyaddr() may reach several milliseconds. With very large number of
// Networkports or NetworkeEquipment, the migration may take several minutes or hours ...
//$computerName = gethostbyaddr($IP);
$computerName = $IP;
if ($computerName != $IP) {
$position = strpos($computerName, ".");
$name = substr($computerName, 0, $position);
$domain = substr($computerName, $position + 1);
$query = "SELECT `id`\n FROM `glpi_fqdns`\n WHERE `fqdn` = '{$domain}'";
$result = $DB->query($query);
if ($DB->numrows($result) == 1) {
$data = $DB->fetch_assoc($result);
$domainID = $data['id'];
}
} else {
$name = "migration-" . str_replace('.', '-', $computerName);
$domainID = 0;
}
$IPaddress = new IPAddress();
if ($IPaddress->setAddressFromString($IP)) {
$input = array('name' => $name, 'fqdns_id' => $domainID, 'entities_id' => $entities_id, 'items_id' => $items_id, 'itemtype' => $itemtype);
$networknames_id = $migration->insertInTable('glpi_networknames', $input);
$input = $IPaddress->setArrayFromAddress(array('entities_id' => $entities_id, 'itemtype' => 'NetworkName', 'items_id' => $networknames_id), "version", "name", "binary");
$migration->insertInTable($IPaddress->getTable(), $input);
} else {
// Don't add the NetworkName if the address is not valid
addNetworkPortMigrationError($items_id, 'invalid_address');
logNetworkPortError('invalid IP address', $items_id, $main_itemtype, $main_items_id, "{$IP}");
}
unset($IPaddress);
}
示例2: prepareInput
/**
* @param $input
**/
function prepareInput($input)
{
// In case of entity transfer, $input['network'] is not defined
if (!isset($input['network']) && isset($this->fields['network'])) {
$input['network'] = $this->fields['network'];
}
// In case of entity transfer, $input['gateway'] is not defined
if (!isset($input['gateway']) && isset($this->fields['gateway'])) {
$input['gateway'] = $this->fields['gateway'];
}
// If $this->fields["id"] is not set then, we are adding a new network
// Or if $this->fields["network"] != $input["network"] we a updating the network
$address = new IPAddress();
$netmask = new IPNetmask();
// Don't validate an empty network
if (empty($input["network"])) {
return array('error' => __('Invalid network address'), 'input' => false);
}
if (!isset($this->fields["id"]) || !isset($this->fields["network"]) || $input["network"] != $this->fields["network"]) {
$network = explode("/", $input["network"]);
if (count($network) != 2) {
return array('error' => __('Invalid input format for the network'), 'input' => false);
}
if (!$address->setAddressFromString(trim($network[0]))) {
return array('error' => __('Invalid network address'), 'input' => false);
}
if (!$netmask->setNetmaskFromString(trim($network[1]), $address->getVersion())) {
return array('error' => __('Invalid subnet mask'), 'input' => false);
}
// After checking that address and netmask are valid, modify the address to be the "real"
// network address : the first address of the network. This is not required for SQL, but
// that looks better for the human
self::computeNetworkRangeFromAdressAndNetmask($address, $netmask, $address);
// Now, we look for already existing same network inside the database
$params = array("address" => $address, "netmask" => $netmask);
if (isset($this->fields["id"])) {
$params["exclude IDs"] = $this->fields["id"];
}
if (isset($this->fields["entities_id"])) {
$entities_id = $this->fields["entities_id"];
} else {
if (isset($input["entities_id"])) {
$entities_id = $input["entities_id"];
} else {
$entities_id = -1;
}
}
// TODO : what is the best way ? recursive or not ?
$sameNetworks = self::searchNetworks("equals", $params, $entities_id, false);
// Check unicity !
if ($sameNetworks && count($sameNetworks) > 0) {
return array('error' => __('Network already defined in visible entities'), 'input' => false);
}
// Then, update $input to reflect the network and the netmask
$input = $address->setArrayFromAddress($input, "version", "address", "address");
$input = $netmask->setArrayFromAddress($input, "", "netmask", "netmask");
// We check to see if the network is modified
$previousAddress = new IPAddress();
$previousAddress->setAddressFromArray($this->fields, "version", "address", "address");
$previousNetmask = new IPNetmask();
$previousNetmask->setAddressFromArray($this->fields, "version", "netmask", "netmask");
if ($previousAddress->equals($address) && $previousNetmask->equals($netmask)) {
$this->networkUpdate = false;
} else {
$this->networkUpdate = true;
}
} else {
// If netmask and address are not modified, then, load them from DB to check the validity
// of the gateway
$this->networkUpdate = false;
$address->setAddressFromArray($this->fields, "version", "address", "address");
$netmask->setAddressFromArray($this->fields, "version", "netmask", "netmask");
$entities_id = $this->fields['entities_id'];
}
// Update class for the CommonImplicitTree update ...
$this->data_for_implicit_update = array('address' => $address, 'netmask' => $netmask, 'entities_id' => $entities_id);
$returnValue = array();
// If the gateway has been altered, or the network information (address or netmask) changed,
// then, we must revalidate the gateway !
if (!isset($this->fields["gateway"]) || $input["gateway"] != $this->fields["gateway"] || $this->networkUpdate) {
$gateway = new IPAddress();
if (!empty($input["gateway"])) {
if (!$gateway->setAddressFromString($input["gateway"]) || !self::checkIPFromNetwork($gateway, $address, $netmask)) {
$returnValue['error'] = __('Invalid gateway address');
if (!empty($this->fields["gateway"])) {
if (!$gateway->setAddressFromString($this->fields["gateway"]) || !self::checkIPFromNetwork($gateway, $address, $netmask)) {
$gateway->disableAddress();
}
} else {
$gateway->disableAddress();
}
}
}
$input = $gateway->setArrayFromAddress($input, "", "gateway", "gateway");
}
$returnValue['input'] = $input;
return $returnValue;
//.........这里部分代码省略.........
示例3: showForm
function showForm($ID, $options = array())
{
global $CFG_GLPI, $DB;
if (!self::canView()) {
return false;
}
$this->check($ID, READ);
$recursiveItems = $this->recursivelyGetItems();
if (count($recursiveItems) > 0) {
$lastItem = $recursiveItems[count($recursiveItems) - 1];
$lastItem_entities_id = $lastItem->getField('entities_id');
} else {
$lastItem_entities_id = $_SESSION['glpiactive_entity'];
}
$options['entities_id'] = $lastItem_entities_id;
$this->showFormHeader($options);
$options['canedit'] = false;
$options['candel'] = false;
$number_errors = 0;
foreach (self::getMotives() as $key => $name) {
if ($this->fields[$key] == 1) {
$number_errors++;
}
}
$motives = self::getMotives();
$interface_cell = "td";
$address_cell = "td";
$network_cell = "td";
$gateway_cell = "td";
$address = new IPAddress();
$netmask = new IPNetmask();
$number_real_errors = 0;
if (!$address->setAddressFromString($this->fields['ip']) || !$netmask->setNetmaskFromString($this->fields['netmask'], $address->getVersion())) {
unset($address);
unset($netmask);
} else {
$network = new IPNetwork();
$params = array("address" => $address, "netmask" => $netmask);
if (isset($this->fields["address"])) {
$params["exclude IDs"] = $this->fields["address"];
}
if (isset($this->fields["entities_id"])) {
$entity = $this->fields["entities_id"];
} else {
$entity = -1;
}
$networkports_ids = IPNetwork::searchNetworks("equals", $params, $entity, false);
if (count($networkports_ids) == 0) {
unset($network);
} else {
$network->getFromDB($networkports_ids[0]);
}
}
if ($this->fields['unknown_interface_type'] == 1) {
$options['canedit'] = true;
$number_real_errors++;
$interface_cell = "th";
echo "<tr class='tab_bg_1'><th>" . $motives['unknown_interface_type'] . "</th>\n" . "<td>" . __('Transform this network port to');
echo "</td><td colspan=2>";
Dropdown::showItemTypes('transform_to', NetworkPort::getNetworkPortInstantiations(), array('value' => "NetworkPortEthernet"));
echo "</td></tr>\n";
}
if ($this->fields['invalid_network'] == 1) {
$number_real_errors++;
$network_cell = "th";
$address_cell = "th";
echo "<tr class='tab_bg_1'><th>" . $motives['invalid_network'] . "</th>\n<td colspan=3>";
if (isset($network)) {
printf(__('Network port information conflicting with %s'), $network->getLink());
} else {
if (!isset($address) || !isset($netmask)) {
_e('Invalid address or netmask');
} else {
_e('No conflicting network');
}
echo " <a href='" . Toolbox::getItemTypeFormURL('IPNetwork') . "'>" . __('you may have to add a network') . "</a>";
}
echo "</td></tr>\n";
}
if ($this->fields['invalid_gateway'] == 1) {
$number_real_errors++;
$gateway_cell = "th";
echo "<tr class='tab_bg_1'><th>" . $motives['invalid_gateway'] . "</th>\n<td colspan=3>";
if (isset($network)) {
printf(__('Append a correct gateway to the network %s'), $network->getLink());
} else {
printf(__('%1$s: %2$s'), __('Unknown network'), "<a href='" . Toolbox::getItemTypeFormURL('IPNetwork') . "'>" . __('Add a network') . "\n </a>");
}
echo "</td></tr>\n";
}
if ($this->fields['invalid_address'] == 1) {
$number_real_errors++;
$address_cell = "th";
echo "<tr class='tab_bg_1'><th>" . $motives['invalid_address'] . "</th>\n<td colspan=3>";
$networkPort = new NetworkPort();
if ($networkPort->getFromDB($this->getID())) {
$number_real_errors++;
echo "<a href='" . $networkPort->getLinkURL() . "'>" . __('Add a correct IP to the network port') . "</a>";
} else {
_e('Unknown network port');
//.........这里部分代码省略.........
示例4: filterValues
/**
* Check float and decimal values
*
* @param $display display or not messages in and addAfterRedirect (true by default)
*
* @return input the data checked
**/
function filterValues($display = true)
{
// MoYo : comment it because do not understand why filtering is disable
// if (in_array('CommonDBRelation', class_parents($this))) {
// return true;
// }
//Type mismatched fields
$fails = array();
if (isset($this->input) && is_array($this->input) && count($this->input)) {
foreach ($this->input as $key => $value) {
$unset = false;
$regs = array();
$searchOption = $this->getSearchOptionByField('field', $key);
if (isset($searchOption['datatype']) && (is_null($value) || $value == '' || $value == 'NULL')) {
switch ($searchOption['datatype']) {
case 'date':
case 'datetime':
// don't use $unset', because this is not a failure
$this->input[$key] = 'NULL';
break;
}
} else {
if (isset($searchOption['datatype']) && !is_null($value) && $value != '' && $value != 'NULL') {
switch ($searchOption['datatype']) {
case 'integer':
case 'count':
case 'number':
case 'decimal':
$value = str_replace(',', '.', $value);
if ($searchOption['datatype'] == 'decimal') {
$this->input[$key] = floatval(Toolbox::cleanDecimal($value));
} else {
$this->input[$key] = intval(Toolbox::cleanInteger($value));
}
if (!is_numeric($this->input[$key])) {
$unset = true;
}
break;
case 'bool':
if (!in_array($value, array(0, 1))) {
$unset = true;
}
break;
case 'ip':
$address = new IPAddress();
if (!$address->setAddressFromString($value)) {
$unset = true;
} else {
if (!$address->is_ipv4()) {
$unset = true;
}
}
break;
case 'mac':
preg_match("/([0-9a-fA-F]{1,2}([:-]|\$)){6}\$/", $value, $regs);
if (empty($regs)) {
$unset = true;
}
// Define the MAC address to lower to reduce complexity of SQL queries
$this->input[$key] = strtolower($value);
break;
case 'date':
case 'datetime':
// Date is already "reformat" according to getDateFormat()
$pattern = "/^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})";
$pattern .= "([_][01][0-9]|2[0-3]:[0-5][0-9]:[0-5]?[0-9])?/";
preg_match($pattern, $value, $regs);
if (empty($regs)) {
$unset = true;
}
break;
case 'itemtype':
//Want to insert an itemtype, but the associated class doesn't exists
if (!class_exists($value)) {
$unset = true;
}
case 'email':
case 'string':
if (strlen($value) > 255) {
$this->input[$key] = substr($value, 0, 254);
}
break;
default:
//Plugins can implement their own checks
if (!$this->checkSpecificValues($searchOption['datatype'], $value)) {
$unset = true;
}
// Copy value if check have update it
$this->input[$key] = $value;
break;
}
}
}
//.........这里部分代码省略.........