本文整理汇总了PHP中IPAddress类的典型用法代码示例。如果您正苦于以下问题:PHP IPAddress类的具体用法?PHP IPAddress怎么用?PHP IPAddress使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了IPAddress类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: ImportNetworkEquipment
/**
* @test
*/
public function ImportNetworkEquipment()
{
global $DB;
self::restore_database();
// Load session rights
$_SESSION['glpidefault_entity'] = 0;
Session::initEntityProfiles(2);
Session::changeProfile(4);
$pfUnmanaged = new PluginFusioninventoryUnmanaged();
$networkEquipment = new NetworkEquipment();
$networkPort = new NetworkPort();
$networkName = new NetworkName();
$iPAddress = new IPAddress();
$input = array('name' => 'switch', 'entities_id' => 0, 'item_type' => 'NetworkEquipment', 'sysdescr' => 'Cisco machin chose', 'locations_id' => 1, 'is_dynamic' => 1, 'serial' => 'XXS6BEF3', 'comment' => 'this is a comment', 'plugin_fusioninventory_configsecurities_id' => 1);
$unmanageds_id = $pfUnmanaged->add($input);
// * Add networkport
$input = array();
$input['itemtype'] = 'PluginFusioninventoryUnmanaged';
$input['items_id'] = $unmanageds_id;
$input['instantiation_type'] = 'NetworkPortEthernet';
$input['name'] = 'general';
$input['mac'] = '00:00:00:43:ae:0f';
$input['is_dynamic'] = 1;
$networkports_id = $networkPort->add($input);
$input = array();
$input['items_id'] = $networkports_id;
$input['itemtype'] = 'NetworkPort';
$input['name'] = '';
$input['is_dynamic'] = 1;
$networknames_id = $networkName->add($input);
$input = array();
$input['entities_id'] = 0;
$input['itemtype'] = 'NetworkName';
$input['items_id'] = $networknames_id;
$input['name'] = '192.168.20.1';
$input['is_dynamic'] = 1;
$iPAddress->add($input);
$pfUnmanaged->import($unmanageds_id);
$cnt = countElementsInTable("glpi_networkequipments");
$this->assertEquals(1, $cnt, "May have network equipment added");
$cnt = countElementsInTable("glpi_plugin_fusioninventory_unmanageds");
$this->assertEquals(0, $cnt, "Unknown device may be deleted");
$networkEquipment->getFromDB(1);
$this->assertEquals('XXS6BEF3', $networkEquipment->fields['serial'], "Serial");
$this->assertEquals('switch', $networkEquipment->fields['name'], "Name");
$this->assertEquals(1, $networkEquipment->fields['is_dynamic'], "is_dynamic");
$this->assertEquals(1, $networkEquipment->fields['locations_id'], "locations_id");
$this->assertEquals('this is a comment', $networkEquipment->fields['comment'], "comment");
$networkPort->getFromDB(1);
$a_reference = array('name' => 'general', 'id' => '1', 'items_id' => '1', 'itemtype' => 'NetworkEquipment', 'entities_id' => '0', 'is_recursive' => '0', 'logical_number' => '0', 'instantiation_type' => 'NetworkPortEthernet', 'mac' => '00:00:00:43:ae:0f', 'comment' => '', 'is_deleted' => '0', 'is_dynamic' => '1');
$this->assertEquals($a_reference, $networkPort->fields, "Networkport");
$networkName->getFromDB(1);
$a_reference = array('id' => '1', 'entities_id' => '0', 'items_id' => '1', 'itemtype' => 'NetworkPort', 'comment' => NULL, 'fqdns_id' => '0', 'is_deleted' => '0', 'is_dynamic' => '1', 'name' => '');
$this->assertEquals($a_reference, $networkName->fields, "Networkname");
$iPAddress->getFromDB(1);
$a_reference = array('name' => '192.168.20.1', 'id' => '1', 'entities_id' => '0', 'items_id' => '1', 'itemtype' => 'NetworkName', 'version' => '4', 'binary_0' => '0', 'binary_1' => '0', 'binary_2' => '65535', 'binary_3' => '3232240641', 'is_deleted' => '0', 'is_dynamic' => '1', 'mainitems_id' => '1', 'mainitemtype' => 'NetworkEquipment');
$this->assertEquals($a_reference, $iPAddress->fields, "IPAddress");
}
示例2: addIPAddress
/**
* @param $ipaddress IPAddress object
**/
static function addIPAddress(IPAddress $ipaddress)
{
$linkObject = new self();
$input = array('ipaddresses_id' => $ipaddress->getID());
$entity = $ipaddress->getEntityID();
$ipnetworks_ids = IPNetwork::searchNetworksContainingIP($ipaddress, $entity);
if ($ipnetworks_ids !== false) {
// Beware that invalid IPaddresses don't have any valid address !
foreach (IPNetwork::searchNetworksContainingIP($ipaddress, $entity) as $ipnetworks_id) {
$input['ipnetworks_id'] = $ipnetworks_id;
$linkObject->add($input);
}
}
}
示例3: fromBinary
public static function fromBinary(&$binaryData, &$offsetIndex = 0)
{
self::parseIdentifier($binaryData[$offsetIndex], Identifier::OCTETSTRING, $offsetIndex++);
$contentLength = self::parseContentLength($binaryData, $offsetIndex);
if ($contentLength < 2) {
throw new ParserException('Can not parse Subject Alternative Names: The Sequence within the octet string after the Object identifier ' . OID::CERT_EXT_SUBJECT_ALT_NAME . " is too short ({$contentLength} octets)", $offsetIndex);
}
$offsetOfSequence = $offsetIndex;
$sequence = Sequence::fromBinary($binaryData, $offsetIndex);
$offsetOfSequence += $sequence->getNumberOfLengthOctets() + 1;
if ($sequence->getObjectLength() != $contentLength) {
throw new ParserException('Can not parse Subject Alternative Names: The Sequence length does not match the length of the surrounding octet string', $offsetIndex);
}
$parsedObject = new self();
/** @var \FG\ASN1\Object $object */
foreach ($sequence as $object) {
if ($object->getType() == DNSName::IDENTIFIER) {
$domainName = DNSName::fromBinary($binaryData, $offsetOfSequence);
$parsedObject->addDomainName($domainName);
} elseif ($object->getType() == IPAddress::IDENTIFIER) {
$ip = IPAddress::fromBinary($binaryData, $offsetOfSequence);
$parsedObject->addIP($ip);
} else {
throw new ParserException('Could not parse Subject Alternative Name: Only DNSName and IP SANs are currently supported', $offsetIndex);
}
}
$parsedObject->getBinary();
// Determine the number of content octets and object sizes once (just to let the equality unit tests pass :/ )
return $parsedObject;
}
示例4: __construct
public function __construct()
{
parent::__construct();
// Try to set better auth than AUTH_PUBLIC depending on the origin of the IP
if (S::i('auth') < AUTH_INTERNAL && IPAddress::getInstance()->is_x_internal()) {
S::set('auth', AUTH_INTERNAL);
}
}
示例5: logm
/**
* Log an array of category/message pairs
*/
public static function logm($categoryMessagePairs)
{
$scribe = Z_CONFIG::$LOG_TO_SCRIBE;
$cli = Z_Core::isCommandLine();
// Scribe and CLI need additional info
if ($scribe || $cli) {
// Parse timestamp into date and milliseconds
$ts = microtime(true);
if (strpos($ts, '.') === false) {
$ts .= '.';
}
list($ts, $msec) = explode('.', $ts);
$date = new DateTime(date(DATE_RFC822, $ts));
$date->setTimezone(new DateTimeZone(Z_CONFIG::$LOG_TIMEZONE));
$date = $date->format('Y-m-d H:i:s') . '.' . str_pad($msec, 4, '0');
// Get remote IP address
if (!$cli) {
$ipAddress = IPAddress::getIP();
}
// Get server hostname
if ($scribe) {
$host = gethostname();
if (strpos($host, '.') !== false) {
$host = substr($host, 0, strpos($host, '.'));
}
}
}
$messages = array();
foreach ($categoryMessagePairs as $pair) {
// Scribe
if ($scribe) {
$messages[] = array('category' => $pair[0], 'message' => "{$date} [{$ipAddress}] [{$host}] " . $pair[1]);
} else {
if ($cli) {
$messages[] = array('category' => $pair[0], 'message' => $date . " " . $pair[1]);
} else {
$messages[] = array('category' => $pair[0], 'message' => $pair[1]);
}
}
}
if (Z_CONFIG::$LOG_TO_SCRIBE) {
self::logToScribe($messages);
} else {
self::logToErrorLog($messages);
}
}
示例6: getPortIDfromDeviceIP
function getPortIDfromDeviceIP($IP, $ifDescr, $sysdescr, $sysname, $model)
{
global $DB;
$pfUnmanaged = new PluginFusioninventoryUnmanaged();
$NetworkPort = new NetworkPort();
$networkName = new NetworkName();
$iPAddress = new IPAddress();
$PortID = "";
// search port have ifdescr + ip (in most cases not find it)
$queryPort = "SELECT `glpi_networkports`.`id`\n FROM `glpi_plugin_fusioninventory_networkports`\n LEFT JOIN `glpi_networkports`\n ON `glpi_plugin_fusioninventory_networkports`.`networkports_id`=\n `glpi_networkports`.`id`\n LEFT JOIN `glpi_networknames`\n ON `glpi_networknames`.`items_id`=`glpi_networkports`.`id`\n AND `glpi_networknames`.`itemtype`='NetworkPort'\n LEFT JOIN `glpi_ipaddresses`\n ON `glpi_ipaddresses`.`items_id`=`glpi_networknames`.`id`\n AND `glpi_ipaddresses`.`itemtype`='NetworkName'\n\n WHERE (`ifdescr`='" . $ifDescr . "'\n OR `glpi_networkports`.`name`='" . $ifDescr . "')\n AND `glpi_networkports`.`itemtype`='NetworkEquipment'\n AND `glpi_ipaddresses`.`name`='" . $IP . "'";
$resultPort = $DB->query($queryPort);
if ($DB->numrows($resultPort) == 0) {
// Search a management port of networkequipment have this IP
$queryManagement = "SELECT `glpi_networkports`.`itemtype`,\n `glpi_networkports`.`items_id` FROM `glpi_networkports`\n LEFT JOIN `glpi_networknames`\n ON `glpi_networknames`.`items_id`=`glpi_networkports`.`id`\n AND `glpi_networknames`.`itemtype`='NetworkPort'\n LEFT JOIN `glpi_ipaddresses`\n ON `glpi_ipaddresses`.`items_id`=`glpi_networknames`.`id`\n AND `glpi_ipaddresses`.`itemtype`='NetworkName'\n\n WHERE `glpi_ipaddresses`.`name`='" . $IP . "'\n AND `instantiation_type`='NetworkPortAggregate'\n LIMIT 1";
$resultManagement = $DB->query($queryManagement);
if ($DB->numrows($resultManagement) == 1) {
$dataManagement = $DB->fetch_assoc($resultManagement);
// Seach a port have this ifdescr for this same networkequipment
$queryPort = "SELECT `glpi_networkports`.`id`\n FROM `glpi_plugin_fusioninventory_networkports`\n LEFT JOIN `glpi_networkports`\n ON `glpi_plugin_fusioninventory_networkports`.`networkports_id`=\n `glpi_networkports`.`id`\n WHERE `glpi_networkports`.`itemtype`='" . $dataManagement['itemtype'] . "'\n AND `glpi_networkports`.`items_id`='" . $dataManagement['items_id'] . "'\n AND (`ifdescr`='" . $ifDescr . "'\n OR `glpi_networkports`.`name`='" . $ifDescr . "')\n LIMIT 1";
$resultPort = $DB->query($queryPort);
if ($DB->numrows($resultPort) == 1) {
$dataPort = $DB->fetch_assoc($resultPort);
$PortID = $dataPort["id"];
}
}
} else {
$dataPort = $DB->fetch_assoc($resultPort);
$PortID = $dataPort['id'];
}
// Detect IP Phone
if ($PortID == "") {
if (strstr($model, "Phone") || $model == '') {
$queryPort = "SELECT glpi_networkports.* FROM `glpi_phones`\n LEFT JOIN `glpi_networkports`\n ON `glpi_phones`.`id`=`glpi_networkports`.`items_id`\n LEFT JOIN `glpi_networknames`\n ON `glpi_networknames`.`items_id`=`glpi_networkports`.`id`\n AND `glpi_networknames`.`itemtype`='NetworkPort'\n LEFT JOIN `glpi_ipaddresses`\n ON `glpi_ipaddresses`.`items_id`=`glpi_networknames`.`id`\n AND `glpi_ipaddresses`.`itemtype`='NetworkName'\n\n WHERE `glpi_ipaddresses`.`name`='" . $IP . "'\n AND `glpi_networkports`.`itemtype`='Phone'\n AND `glpi_phones`.`name`='" . $sysname . "'\n LIMIT 1";
$resultPort = $DB->query($queryPort);
if ($DB->numrows($resultPort) == 1) {
$dataPort = $DB->fetch_assoc($resultPort);
if (isset($dataPort['id'])) {
$PortID = $dataPort["id"];
}
}
}
}
if ($PortID == "") {
$query = "SELECT * FROM `glpi_plugin_fusioninventory_unmanageds`\n WHERE `ip`='" . $IP . "'\n LIMIT 1";
$result = $DB->query($query);
if ($DB->numrows($result) == "1") {
$data = $DB->fetch_assoc($result);
// Search port and add if required
$query1 = "SELECT *\n FROM `glpi_networkports`\n WHERE `itemtype`='PluginFusioninventoryUnmanaged'\n AND `items_id`='" . $data['id'] . "'\n AND `name`='" . $ifDescr . "'\n LIMIT 1";
$result1 = $DB->query($query1);
if ($DB->numrows($result1) == "1") {
$data1 = $DB->fetch_assoc($result1);
$PortID = $data1['id'];
} else {
// Add port
$input = array();
$input['items_id'] = $data['id'];
$input['itemtype'] = 'PluginFusioninventoryUnmanaged';
$input['ip'] = $IP;
$input['name'] = $ifDescr;
$input['instantiation_type'] = 'NetworkPortEthernet';
$PortID = $NetworkPort->add($input);
}
// Update unmanaged device
$input = array();
$input['id'] = $data['id'];
$input['ip'] = $IP;
if (strstr($model, "Phone")) {
$input['item_type'] = 'Phone';
}
if ($sysname != '') {
$input['name'] = $sysname;
}
if ($sysdescr != '') {
$input['sysdescr'] = $sysdescr;
}
$pfUnmanaged->update($input);
return $PortID;
}
$query0 = "SELECT `glpi_networkports`.* FROM `glpi_networkports`\n LEFT JOIN `glpi_networknames`\n ON `glpi_networknames`.`items_id`=`glpi_networkports`.`id`\n AND `glpi_networknames`.`itemtype`='NetworkPort'\n LEFT JOIN `glpi_ipaddresses`\n ON `glpi_ipaddresses`.`items_id`=`glpi_networknames`.`id`\n AND `glpi_ipaddresses`.`itemtype`='NetworkName'\n\n WHERE `glpi_networkports`.`itemtype`='PluginFusioninventoryUnmanaged'\n AND `glpi_ipaddresses`.`name`='" . $IP . "'\n LIMIT 1";
$result0 = $DB->query($query0);
if ($DB->numrows($result0) == 1) {
$data0 = $DB->fetch_assoc($result0);
// Search port and add if required
$query1 = "SELECT *\n FROM `glpi_networkports`\n WHERE `itemtype`='PluginFusioninventoryUnmanaged'\n AND `items_id`='" . $data0['items_id'] . "'\n AND `name`='" . $ifDescr . "'\n LIMIT 1";
$result1 = $DB->query($query1);
if ($DB->numrows($result1) == "1") {
$data1 = $DB->fetch_assoc($result1);
$PortID = $data1['id'];
} else {
// Add port
$input = array();
$input['items_id'] = $data0['items_id'];
$input['itemtype'] = 'PluginFusioninventoryUnmanaged';
$input['name'] = $ifDescr;
$input['instantiation_type'] = 'NetworkPortEthernet';
$PortID = $NetworkPort->add($input);
$input = array();
$input['itemtype'] = 'NetworkPort';
$input['items_id'] = $PortID;
//.........这里部分代码省略.........
示例7: vote
public function vote($answer)
{
XDB::startTransaction();
XDB::execute('INSERT INTO qdj_votes
SET qdj = {?}, uid = {?}, rank = 0, rule = "null"', $this->id(), S::user()->id());
$vote = XDB::insertID();
// Get the rank
$rank = XDB::query('SELECT COUNT(*)+1
FROM qdj_votes
WHERE qdj = {?} AND rank != 0', $this->id())->fetchOneCell();
if ($rank == 1) {
if ($this->writer === null) {
$this->select(QDJSelect::all());
}
XDB::execute('INSERT INTO qdj_votes
SET qdj = {?}, uid = {?}, rank = 0, rule = 10', $this->id(), $this->writer->id());
}
$rule = null;
switch ($rank) {
case 1:
$rule = '1';
break;
case 2:
$rule = '2';
break;
case 3:
$rule = '3';
break;
case 13:
$rule = '4';
break;
case 42:
$rule = '5';
break;
case 69:
$rule = '6';
break;
case 314:
$rule = '7';
break;
case substr(strrchr(IPAddress::get(), '.'), 1):
$rule = '8';
break;
case date('d') + date('m'):
$rule = '9';
break;
}
XDB::execute('UPDATE qdj_votes
SET rank = {?}, rule = {?}
WHERE vote_id = {?}', $rank, $rule, $vote);
XDB::commit();
if ($answer == 1) {
XDB::execute('UPDATE qdj SET count1 = count1+1 WHERE id={?}', $this->id());
} else {
XDB::execute('UPDATE qdj SET count2 = count2+1 WHERE id={?}', $this->id());
}
}
示例8: showForItem
//.........这里部分代码省略.........
echo "</tr>\n";
}
//Software licenses
$params = array('is_dynamic' => 1, 'is_deleted' => 1, 'computers_id' => $ID);
$first = true;
$query = "SELECT `csv`.`id` AS `id`,\n `sv`.`name` AS `version`,\n `s`.`name` AS `software`\n FROM `glpi_computers_softwarelicenses` AS csv\n LEFT JOIN `glpi_softwarelicenses` AS sv\n ON (`csv`.`softwarelicenses_id` = `sv`.`id`)\n LEFT JOIN `glpi_softwares` AS s\n ON (`sv`.`softwares_id` = `s`.`id`)\n WHERE `csv`.`is_deleted` = '1'\n AND `csv`.`is_dynamic` = '1'\n AND `csv`.`computers_id` = '{$ID}'";
foreach ($DB->request($query) as $line) {
$header = true;
if ($first) {
echo "<tr><th colspan='2'>" . SoftwareLicense::getTypeName(2) . "</th>" . "</tr>\n";
$first = false;
}
echo "<tr class='tab_bg_1'><td class='center' width='10'>";
echo "<input type='checkbox' name='Computer_SoftwareLicense[" . $line['id'] . "]'></td>";
echo "<td class='left' width='95%'>" . $line['software'] . " " . $line['version'] . "</td>";
echo "</tr>\n";
}
}
$first = true;
$item = new NetworkPort();
$params = array('is_dynamic' => 1, 'is_deleted' => 1, 'items_id' => $ID, 'itemtype' => $itemtype);
$params['FIELDS'] = array('id');
foreach ($DB->request('glpi_networkports', $params) as $line) {
$item->getFromDB($line['id']);
$header = true;
if ($first) {
echo "<tr><th colspan='2'>" . NetworkPort::getTypeName(2) . "</th></tr>\n";
$first = false;
}
echo "<tr class='tab_bg_1'><td class='center' width='10'>";
echo "<input type='checkbox' name='NetworkPort[" . $line['id'] . "]'></td>";
echo "<td class='left' width='95%'>" . $item->getName() . "</td>";
echo "</tr>\n";
}
$first = true;
$item = new NetworkName();
$params = array('`glpi_networknames`.`is_dynamic`' => 1, '`glpi_networknames`.`is_deleted`' => 1, '`glpi_networknames`.`itemtype`' => 'NetworkPort', '`glpi_networknames`.`items_id`' => '`glpi_networkports`.`id`', '`glpi_networkports`.`items_id`' => $ID, '`glpi_networkports`.`itemtype`' => $itemtype);
$params['FIELDS'] = array('glpi_networknames' => 'id');
foreach ($DB->request(array('glpi_networknames', 'glpi_networkports'), $params) as $line) {
$item->getFromDB($line['id']);
$header = true;
if ($first) {
echo "<tr><th colspan='2'>" . NetworkName::getTypeName(2) . "</th></tr>\n";
$first = false;
}
echo "<tr class='tab_bg_1'><td class='center' width='10'>";
echo "<input type='checkbox' name='NetworkName[" . $line['id'] . "]'></td>";
echo "<td class='left' width='95%'>" . $item->getName() . "</td>";
echo "</tr>\n";
}
$first = true;
$item = new IPAddress();
$params = array('`glpi_ipaddresses`.`is_dynamic`' => 1, '`glpi_ipaddresses`.`is_deleted`' => 1, '`glpi_ipaddresses`.`itemtype`' => 'Networkname', '`glpi_ipaddresses`.`items_id`' => '`glpi_networknames`.`id`', '`glpi_networknames`.`itemtype`' => 'NetworkPort', '`glpi_networknames`.`items_id`' => '`glpi_networkports`.`id`', '`glpi_networkports`.`items_id`' => $ID, '`glpi_networkports`.`itemtype`' => $itemtype);
$params['FIELDS'] = array('glpi_ipaddresses' => 'id');
foreach ($DB->request(array('glpi_ipaddresses', 'glpi_networknames', 'glpi_networkports'), $params) as $line) {
$item->getFromDB($line['id']);
$header = true;
if ($first) {
echo "<tr><th colspan='2'>" . IPAddress::getTypeName(2) . "</th></tr>\n";
$first = false;
}
echo "<tr class='tab_bg_1'><td class='center' width='10'>";
echo "<input type='checkbox' name='IPAddress[" . $line['id'] . "]'></td>";
echo "<td class='left' width='95%'>" . $item->getName() . "</td>";
echo "</tr>\n";
}
$types = Item_Devices::getDeviceTypes();
$nb = 0;
foreach ($types as $old => $type) {
$nb += countElementsInTable(getTableForItemType($type), "`items_id`='{$ID}'\n AND `itemtype`='{$itemtype}'\n AND `is_dynamic`='1'\n AND `is_deleted`='1'");
}
if ($nb) {
$header = true;
echo "<tr><th colspan='2'>" . _n('Component', 'Components', 2) . "</th></tr>\n";
foreach ($types as $old => $type) {
$associated_type = str_replace('Item_', '', $type);
$associated_table = getTableForItemType($associated_type);
$fk = getForeignKeyFieldForTable($associated_table);
$query = "SELECT `i`.`id`,\n `t`.`designation` AS `name`\n FROM `" . getTableForItemType($type) . "` AS i\n LEFT JOIN `{$associated_table}` AS t\n ON (`t`.`id` = `i`.`{$fk}`)\n WHERE `itemtype` = '{$itemtype}'\n AND `items_id` = '{$ID}'\n AND `is_dynamic` = '1'\n AND `is_deleted` = '1'";
foreach ($DB->request($query) as $data) {
echo "<tr class='tab_bg_1'><td class='center' width='10'>";
echo "<input type='checkbox' name='" . $type . "[" . $data['id'] . "]'></td>";
echo "<td class='left' width='95%'>";
printf(__('%1$s: %2$s'), $associated_type::getTypeName(), $data['name']);
echo "</td></tr>\n";
}
}
}
if ($header) {
echo "</table>";
Html::openArrowMassives('lock_form', true);
Html::closeArrowMassives(array('unlock' => _sx('button', 'Unlock')));
} else {
echo "<tr class='tab_bg_2'>";
echo "<td class='center' colspan='2'>" . __('No locked item') . "</td></tr>";
echo "</table>";
}
Html::closeForm();
echo "</div>\n";
}
示例9: updateNetworkPort
/**
* @param $mac
* @param $name
* @param $computers_id
* @param $instantiation_type
* @param $inst_input
* @param $ips
* @param $check_name
* @param $dohistory
* @param $already_known_ports
* @return ID
*/
private static function updateNetworkPort($mac, $name, $computers_id, $instantiation_type, $inst_input, $ips, $check_name, $dohistory, $already_known_ports)
{
global $DB;
$network_port = new NetworkPort();
// Then, find or create the base NetworkPort
$query = "SELECT `id`, `is_dynamic`\n FROM `glpi_networkports`\n WHERE `itemtype` = 'Computer'\n AND `items_id` = '{$computers_id}'\n AND `mac` = '{$mac}'";
// If there is virtual ports, then, filter by port's name
if ($check_name) {
$query .= " AND `name` = '{$name}'";
}
if (count($already_known_ports) > 0) {
$query .= " AND `id` NOT IN (" . implode(',', $already_known_ports) . ")";
}
// We order by is_dynamic to be sure to get the static ones first !
$query .= " ORDER BY `is_dynamic`, `id`";
$ports = $DB->request($query);
if ($ports->numrows() == 0) {
$port_input = array('name' => $name, 'mac' => $mac, 'items_id' => $computers_id, 'itemtype' => 'Computer', '_no_history' => !$dohistory, 'instantiation_type' => $instantiation_type, '_create_children' => 1, 'is_dynamic' => 1, 'is_deleted' => 0);
$networkports_id = $network_port->add($port_input, array(), $dohistory);
if ($networkports_id === false) {
return -1;
}
$inst_input['networkports_id'] = $networkports_id;
$instantiation = $network_port->getInstantiation();
$instantiation->update($inst_input);
unset($instantiation);
} else {
$line = $ports->next();
$networkports_id = $line['id'];
$network_port->getFromDB($networkports_id);
if (!$check_name && $network_port->fields['name'] != $name) {
$port_input = array('id' => $network_port->getID(), 'name' => $name, 'is_dynamic' => 1);
$network_port->update($port_input);
}
if ($network_port->fields['instantiation_type'] != $instantiation_type && $network_port->fields['is_dynamic'] == 1) {
$network_port->switchInstantiationType($instantiation_type);
$inst_input['networkports_id'] = $network_port->getID();
$instantiation = $network_port->getInstantiation();
$instantiation->add($inst_input);
unset($instantiation);
}
if ($network_port->fields['instantiation_type'] == $instantiation_type) {
$instantiation = $network_port->getInstantiation();
$inst_input['id'] = $instantiation->getID();
$inst_input['networkports_id'] = $network_port->getID();
$instantiation->update($inst_input);
unset($instantiation);
}
}
if ($network_port->isNewItem()) {
return -1;
}
$network_name = new NetworkName();
$query = "SELECT `id`, `is_dynamic`\n FROM `glpi_networknames`\n WHERE `itemtype` = 'NetworkPort'\n AND `items_id` = '{$networkports_id}'\n ORDER BY `is_dynamic`";
if (!$ips || count($ips) == 0) {
foreach ($DB->request($query) as $line) {
if ($line['is_dynamic']) {
$network_name->delete($line, true, $dohistory);
}
}
} else {
$names = $DB->request($query);
if ($names->numrows() == 0) {
$name_input = array('itemtype' => 'NetworkPort', 'items_id' => $networkports_id, 'is_dynamic' => 1, 'is_deleted' => 0, '_no_history' => !$dohistory, 'name' => 'OCS-INVENTORY-NG');
$networknames_id = $network_name->add($name_input);
} else {
$line = $names->next();
$networknames_id = $line['id'];
foreach ($names as $line) {
if ($line['is_dynamic'] == 1 && $line['id'] != $networknames_id) {
$network_port->delete($line, true, $dohistory);
}
}
}
$ip_address = new IPAddress();
$already_known_addresses = array();
$query = "SELECT `id`, `name`, `is_dynamic`, `mainitems_id`\n FROM `glpi_ipaddresses`\n WHERE `itemtype` = 'NetworkName'\n AND `items_id` = '{$networknames_id}'\n ORDER BY `is_dynamic`";
foreach ($DB->request($query) as $line) {
if (in_array($line['name'], $ips) && !empty($line['mainitems_id'])) {
$already_known_addresses[] = $line['id'];
$ips = array_diff($ips, array($line['name']));
} elseif ($line['is_dynamic'] == 1) {
$ip_address->delete($line, true, $dohistory);
}
}
}
if ($ips) {
foreach ($ips as $ip) {
//.........这里部分代码省略.........
示例10: _handleFileRequest
/**
* Handle S3 request
*
* Permission-checking provided by items()
*/
private function _handleFileRequest($item)
{
if (!$this->permissions->canAccess($this->objectLibraryID, 'files')) {
$this->e403();
}
$this->allowMethods(array('HEAD', 'GET', 'POST', 'PATCH'));
if (!$item->isAttachment()) {
$this->e400("Item is not an attachment");
}
// File info for client sync
//
// Use of HEAD method is deprecated after 2.0.8/2.1b1 due to
// compatibility problems with proxies and security software
if ($this->method == 'HEAD' || $this->method == 'GET' && $this->fileMode == 'info') {
$info = Zotero_S3::getLocalFileItemInfo($item);
if (!$info) {
$this->e404();
}
/*
header("Last-Modified: " . gmdate('r', $info['uploaded']));
header("Content-Type: " . $info['type']);
*/
header("Content-Length: " . $info['size']);
header("ETag: " . $info['hash']);
header("X-Zotero-Filename: " . $info['filename']);
header("X-Zotero-Modification-Time: " . $info['mtime']);
header("X-Zotero-Compressed: " . ($info['zip'] ? 'Yes' : 'No'));
header_remove("X-Powered-By");
} else {
if ($this->method == 'GET' || $this->method == 'POST' && $this->fileView) {
if ($this->fileView) {
$info = Zotero_S3::getLocalFileItemInfo($item);
if (!$info) {
$this->e404();
}
// For zip files, redirect to files domain
if ($info['zip']) {
$url = Zotero_Attachments::getTemporaryURL($item, !empty($_GET['int']));
if (!$url) {
$this->e500();
}
header("Location: {$url}");
exit;
}
}
// For single files, redirect to S3
$url = Zotero_S3::getDownloadURL($item, 60);
if (!$url) {
$this->e404();
}
Zotero_S3::logDownload($item, $this->userID, IPAddress::getIP());
header("Location: {$url}");
exit;
} else {
if ($this->method == 'POST' || $this->method == 'PATCH') {
if (!$item->isImportedAttachment()) {
$this->e400("Cannot upload file for linked file/URL attachment item");
}
$libraryID = $item->libraryID;
$type = Zotero_Libraries::getType($libraryID);
if ($type == 'group') {
$groupID = Zotero_Groups::getGroupIDFromLibraryID($libraryID);
$group = Zotero_Groups::get($groupID);
if (!$group->userCanEditFiles($this->userID)) {
$this->e403("You do not have file editing access");
}
} else {
$group = null;
}
// If not the client, require If-Match or If-None-Match
if (!$this->httpAuth) {
if (empty($_SERVER['HTTP_IF_MATCH']) && empty($_SERVER['HTTP_IF_NONE_MATCH'])) {
$this->e428("If-Match/If-None-Match header not provided");
}
if (!empty($_SERVER['HTTP_IF_MATCH'])) {
if (!preg_match('/^"?([a-f0-9]{32})"?$/', $_SERVER['HTTP_IF_MATCH'], $matches)) {
$this->e400("Invalid ETag in If-Match header");
}
if (!$item->attachmentStorageHash) {
$info = Zotero_S3::getLocalFileItemInfo($item);
$this->e412("ETag set but file does not exist");
}
if ($item->attachmentStorageHash != $matches[1]) {
$this->e412("ETag does not match current version of file");
}
} else {
if ($_SERVER['HTTP_IF_NONE_MATCH'] != "*") {
$this->e400("Invalid value for If-None-Match header");
}
if ($this->attachmentStorageHash) {
$this->e412("If-None-Match: * set but file exists");
}
}
}
//
//.........这里部分代码省略.........
示例11: 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;
}
}
}
//.........这里部分代码省略.........
示例12: login
public function login()
{
// TODO: Change to POST only
if (empty($_REQUEST['username'])) {
$this->error(403, 'NO_USER_NAME', "Username not provided");
} else {
if (empty($_REQUEST['password'])) {
$this->error(403, 'NO_PASSWORD', "Password not provided");
}
}
$username = $_REQUEST['username'];
$password = $_REQUEST['password'];
$authData = array('username' => $username, 'password' => $password);
$userID = Zotero_Users::authenticate('password', $authData);
if (!$userID) {
StatsD::increment("sync.login.failure");
if (isset($_SERVER['HTTP_X_ZOTERO_VERSION']) && $_SERVER['HTTP_X_ZOTERO_VERSION'] == "2.0b6") {
die("Username/password not accepted");
}
$this->error(403, 'INVALID_LOGIN', "Username/password not accepted");
}
StatsD::increment("sync.login.success");
$sessionID = md5($userID . uniqid(rand(), true) . $password);
$ip = IPAddress::getIP();
$sql = "INSERT INTO sessions (sessionID, userID, ipAddress)\n\t\t\t\t\tVALUES (?,?,INET_ATON(?))";
Zotero_DB::query($sql, array($sessionID, $userID, $ip));
Z_Core::$MC->set("syncSession_{$sessionID}", array('sessionID' => $sessionID, 'userID' => $userID), $this->sessionLifetime - 600);
$this->responseXML->sessionID = $sessionID;
$this->end();
}
示例13: getAvailableDisplayOptions
/**
* Get available display options array
*
* @since version 0.84
*
* @return all the options
**/
static function getAvailableDisplayOptions()
{
$options[__('Global displays')] = array('characteristics' => array('name' => __('Characteristics'), 'default' => true), 'internet' => array('name' => __('Internet information'), 'default' => true), 'dynamic_import' => array('name' => __('Automatic inventory'), 'default' => false));
$options[__('Common options')] = NetworkPortInstantiation::getGlobalInstantiationNetworkPortDisplayOptions();
$options[__('Internet information')] = array('names' => array('name' => NetworkName::getTypeName(2), 'default' => false), 'aliases' => array('name' => NetworkAlias::getTypeName(2), 'default' => false), 'ipaddresses' => array('name' => IPAddress::getTypeName(2), 'default' => true), 'ipnetworks' => array('name' => IPNetwork::getTypeName(2), 'default' => true));
foreach (self::getNetworkPortInstantiations() as $portType) {
$portTypeName = $portType::getTypeName(0);
$options[$portTypeName] = $portType::getInstantiationNetworkPortDisplayOptions();
}
return $options;
}
示例14: executeActions
//.........这里部分代码省略.........
break;
case 'groups_id_validate':
$output['_add_validation']['group'][] = $action->fields["value"];
break;
case 'users_id_validate':
$output['_add_validation'][] = $action->fields["value"];
break;
case 'validation_percent':
$output[$action->fields["field"]] = $action->fields["value"];
break;
default:
$output['_add_validation'][] = $action->fields["value"];
break;
}
break;
case "assign":
$output[$action->fields["field"]] = $action->fields["value"];
// Special case of users_id_requester
if ($action->fields["field"] === '_users_id_requester') {
// Add groups of requester
if (!isset($output['_groups_id_of_requester'])) {
$output['_groups_id_of_requester'] = array();
}
foreach (Group_User::getUserGroups($action->fields["value"]) as $g) {
$output['_groups_id_of_requester'][$g['id']] = $g['id'];
}
}
break;
case "append":
$actions = $this->getActions();
$value = $action->fields["value"];
if (isset($actions[$action->fields["field"]]["appendtoarray"]) && isset($actions[$action->fields["field"]]["appendtoarrayfield"])) {
$value = $actions[$action->fields["field"]]["appendtoarray"];
$value[$actions[$action->fields["field"]]["appendtoarrayfield"]] = $action->fields["value"];
}
$output[$actions[$action->fields["field"]]["appendto"]][] = $value;
// Special case of users_id_requester
if ($action->fields["field"] === '_users_id_requester') {
// Add groups of requester
if (!isset($output['_groups_id_of_requester'])) {
$output['_groups_id_of_requester'] = array();
}
foreach (Group_User::getUserGroups($action->fields["value"]) as $g) {
$output['_groups_id_of_requester'][$g['id']] = $g['id'];
}
}
break;
case 'fromuser':
if ($action->fields['field'] == 'locations_id' && isset($output['users_locations'])) {
$output['locations_id'] = $output['users_locations'];
}
break;
case 'fromitem':
if ($action->fields['field'] == 'locations_id' && isset($output['items_locations'])) {
$output['locations_id'] = $output['items_locations'];
}
if ($action->fields['field'] == 'groups_id' && isset($output['items_groups'])) {
$output['groups_id'] = $output['items_groups'];
}
break;
case 'compute':
// Value could be not set (from test)
$urgency = isset($output['urgency']) ? $output['urgency'] : 3;
$impact = isset($output['impact']) ? $output['impact'] : 3;
// Apply priority_matrix from config
$output['priority'] = Ticket::computePriority($urgency, $impact);
break;
case "affectbyip":
case "affectbyfqdn":
case "affectbymac":
if (!isset($output["entities_id"])) {
$output["entities_id"] = $params["entities_id"];
}
if (isset($this->regex_results[0])) {
$regexvalue = RuleAction::getRegexResultById($action->fields["value"], $this->regex_results[0]);
} else {
$regexvalue = $action->fields["value"];
}
switch ($action->fields["action_type"]) {
case "affectbyip":
$result = IPAddress::getUniqueItemByIPAddress($regexvalue, $output["entities_id"]);
break;
case "affectbyfqdn":
$result = FQDNLabel::getUniqueItemByFQDN($regexvalue, $output["entities_id"]);
break;
case "affectbymac":
$result = NetworkPortInstantiation::getUniqueItemByMac($regexvalue, $output["entities_id"]);
break;
default:
$result = array();
}
if (!empty($result)) {
$output["items_id"][$result["itemtype"]][] = $result["id"];
}
break;
}
}
}
return $output;
}
示例15: getSearchOptions
function getSearchOptions()
{
global $CFG_GLPI;
$tab = parent::getSearchOptions();
$optionIndex = 10;
// From 10 to 14
foreach (self::getMotives() as $motive => $name) {
$tab[$optionIndex]['table'] = $this->getTable();
$tab[$optionIndex]['field'] = $motive;
$tab[$optionIndex]['name'] = $name;
$tab[$optionIndex]['datatype'] = 'bool';
$optionIndex++;
}
$tab[20]['table'] = $this->getTable();
$tab[20]['field'] = 'ip';
$tab[20]['datatype'] = 'ip';
$tab[20]['name'] = IPAddress::getTypeName(1);
$tab[21]['table'] = $this->getTable();
$tab[21]['field'] = 'netmask';
$tab[21]['datatype'] = 'string';
$tab[21]['name'] = IPNetmask::getTypeName(1);
$tab[22]['table'] = $this->getTable();
$tab[22]['field'] = 'subnet';
$tab[22]['datatype'] = 'string';
$tab[22]['name'] = __('Network address');
$tab[23]['table'] = $this->getTable();
$tab[23]['field'] = 'gateway';
$tab[23]['datatype'] = 'string';
$tab[23]['name'] = IPAddress::getTypeName(1);
if (TableExists('glpi_networkinterfaces')) {
$tab[24]['table'] = 'glpi_networkinterfaces';
$tab[24]['field'] = 'name';
$tab[24]['datatype'] = 'dropdown';
$tab[24]['name'] = __('Network interface');
}
return $tab;
}