Revision 420b5990
[#1634] Adresse IP incorrecte dans fichiers XML
Historiquement, la classe agissait comme un cache pour ne calculer
l'adresse IP à utiliser dans VigiConf qu'une seule fois.
Lorsque le code a été retravaillé, cette optimisation est restée,
faisant apparaitre toutes les machines comme ayant la même IP.
Change-Id: I987892583801dbd61cded6db21156ff3261b4bee
Refs: #1634
Reviewed-on: https://vigilo-dev.si.c-s.fr/review/2534
Tested-by: Build system <qa@vigilo-dev.si.c-s.fr>
Reviewed-by: Francois POIROTTE <francois.poirotte@c-s.fr>
src/plugins/vigilo/inc/abstractmonitoreditem.class.php | ||
---|---|---|
98 | 98 |
|
99 | 99 |
protected function selectAddress() |
100 | 100 |
{ |
101 |
static $address = null; |
|
102 |
|
|
103 |
if (null === $address && $this->agent) { |
|
101 |
if ($this->agent) { |
|
104 | 102 |
$addresses = $this->agent->getIPs(); |
105 | 103 |
if (count($addresses)) { |
106 |
$address = current($addresses);
|
|
104 |
return current($addresses);
|
|
107 | 105 |
} |
108 | 106 |
} |
109 | 107 |
|
110 |
if (null === $address) { |
|
111 |
$address = $this->item->getName(); |
|
112 |
foreach ($this->addresses as $addr) { |
|
113 |
if (!$addr->is_ipv4()) { |
|
114 |
continue; |
|
115 |
} |
|
116 |
|
|
117 |
$textual = $addr->getTextual(); |
|
118 |
if (is_string($textual)) { |
|
119 |
$address = $textual; |
|
120 |
break; |
|
121 |
} |
|
122 |
} |
|
108 |
if (count($this->addresses)) { |
|
109 |
return current($this->addresses); |
|
123 | 110 |
} |
124 | 111 |
|
125 |
return $address;
|
|
112 |
return $this->item->getName();
|
|
126 | 113 |
} |
127 | 114 |
|
128 | 115 |
protected function monitorNetworkInterfaces() |
... | ... | |
161 | 148 |
} |
162 | 149 |
} |
163 | 150 |
|
164 |
// Récupère la liste de toutes les adresses IP pour l'interface. |
|
151 |
// Récupère la liste de toutes les adresses IPv4 pour l'interface.
|
|
165 | 152 |
// Elles serviront plus tard dans selectAddress() pour choisir |
166 | 153 |
// l'adresse IP la plus appropriée pour interroger ce réseau. |
167 | 154 |
foreach ($DB->query($query2) as $nn) { |
168 | 155 |
$query3 = IPAddress::getSQLRequestToSearchForItem("NetworkName", $nn['id']); |
169 | 156 |
foreach ($DB->query($query3) as $ip) { |
170 | 157 |
$addr = new IPAddress(); |
171 |
if ($addr->getFromDB($ip['id'])) { |
|
172 |
$this->addresses[] = $addr; |
|
158 |
if ($addr->getFromDB($ip['id']) && $addr->is_ipv4()) { |
|
159 |
$textual = $addr->getTextual(); |
|
160 |
if (is_string($textual)) { |
|
161 |
$this->addresses[] = $textual; |
|
162 |
} |
|
173 | 163 |
} |
174 | 164 |
} |
175 | 165 |
} |
... | ... | |
179 | 169 |
public function __toString() |
180 | 170 |
{ |
181 | 171 |
return self::sprintf( |
182 |
'<?xml version="1.0"?>' .
|
|
172 |
'<' . '?xml version="1.0"?' . '>' .
|
|
183 | 173 |
'<host name="%s" address="%s" ventilation="%s">%s</host>', |
184 | 174 |
$this->item->getName(), |
185 | 175 |
$this->selectAddress(), |
src/plugins/vigilo/inc/hls.class.php | ||
---|---|---|
48 | 48 |
|
49 | 49 |
public function __toString() |
50 | 50 |
{ |
51 |
return "<?xml version=\"1.0\"?><hlservices>{$this->hlsServices}{$this->hlsHost}</hlservices>"; |
|
51 |
return "<" . "?xml version=\"1.0\"?" . |
|
52 |
"><hlservices>{$this->hlsServices}{$this->hlsHost}</hlservices>"; |
|
52 | 53 |
} |
53 | 54 |
} |
Also available in: Unified diff