Project

General

Profile

Revision 420b5990

ID420b599040b03a52b566ccc91b7f206bd7290454
Parent 0548a1f2
Child 8ef154dd

Added by Francois POIROTTE about 7 years ago

[#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 <>
Reviewed-by: Francois POIROTTE <>

View differences:

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