Page 1 of 1

Bug Dnsmasq : enregistrements dns et alias (+Fix)

New postPosted: Thu Jun 30, 2016 8:05 am
by corpo
Bonjour à tous (j'ai rempli un bug sur bugs.articatech.com)

J'ai trouvé un bug dans la dernière version d'Artica : quand on ajoute un enregistrement DNS dans le serveur DNS simple, si on ne spécifie pas d'alias, il en est quand même créé un si l'hôte est un FQDN.
intranet.domaine.com se retrouve avec un alias intranet (ce qui est problématique s'il existe intranet.domaine2.com, car seul le dernier défini devient accessible)
Par contre, si on spécifie un alias, il est correctement créé et l'alias "automatique" n'est pas utilisé.
Si on spécifie plusieurs alias, seul le dernier est conservé.

Ces résultats sont visibles dans le fichier /etc/hosts

Le soucis réside dans le fichier exec.virtuals-ip.php, dans la fonction etc_hosts().

Il faut remplacer
Code: Select all
$q=new mysql_squid_builder();

$sql="SELECT * FROM dnsmasq_records";
$results=$q->QUERY_SQL($sql);
if(!$q->ok){echo $q->mysql_error."\n"; return; }

while ($ligne = mysql_fetch_assoc($results)) {
   $ipaddr=trim($ligne["ipaddr"]);
   $hostname=trim($ligne["hostname"]);
   
   if(strpos($hostname, ".")>0){
         $hostname_EXPLODED=explode(".",$hostname);.
         $alias=$hostname_EXPLODED[0];.
   }
   
   $results2=$q->QUERY_SQL("SELECT hostname FROM dnsmasq_cname WHERE recordid={$ligne["ID"]}");
   $aliases=array();
   while ($ligne2 = mysql_fetch_assoc($results2)) {
      if(trim($ligne2["hostname"])==null){continue;}
      $alias=$ligne2["hostname"];
      break;
   }
   $lineExe=trim("{$ipaddr}\t{$hostname}\t{$alias}");
   $GLOBALS["SCRIPTS"][]="$echo \"$lineExe\" >> /etc/hosts";

}


par

Code: Select all
$q=new mysql_squid_builder();

$sql="SELECT * FROM dnsmasq_records";
$results=$q->QUERY_SQL($sql);
if(!$q->ok){echo $q->mysql_error."\n"; return; }

while ($ligne = mysql_fetch_assoc($results)) {
   $ipaddr=trim($ligne["ipaddr"]);
   $hostname=trim($ligne["hostname"]);
   $alias="";
   
   $results2=$q->QUERY_SQL("SELECT hostname FROM dnsmasq_cname WHERE recordid={$ligne["ID"]}");
   while ($ligne2 = mysql_fetch_assoc($results2)) {
      $alias.=$ligne2["hostname"]."\t";
   }

   $lineExe=trim("{$ipaddr}\t{$hostname}\t{$alias}");
   $GLOBALS["SCRIPTS"][]="$echo \"$lineExe\" >> /etc/hosts";

}

Re: Bug Dnsmasq : enregistrements dns et alias (+Fix)

New postPosted: Thu Jun 30, 2016 9:42 am
by admin
Merci, on a fait les modifications dans notre code