Announcement

Collapse
No announcement yet.

Ajout de car non solicités dans des champs Oreon

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Ajout de car non solicités dans des champs Oreon

    Bonjour,

    j'ai déjà posté cette demande dans un autre sujet de discussion qui est maintenant réglé, malheuresement, pour moi ce n'est pas encore le cas.

    Depuis mon passage à la version 1.2.1, j'ai un phénomène qui me dérange et rend mon système Oreon+Nagios non fonctionnel.

    En effet, dès que je crée par exemple une commande de notification avec les éléments suivants:

    Code:
     command name:  test
    command line: 
    coucou
    "coucou"
    'coucou'
    J'enregistre et je constate que la command line a été modifiée :

    Code:
    coucou \"coucou\" \'coucou\'
    Un caractère \ a été placé à mon insu et me provoque des effets néfaste sur le fonctionnement de Nagios.

    Merci d'avance pour votre aide, car après de de multiples essais, je suis bloqué et cette situation est vraiment désagréable.

    Merci

    Thierry

  • #2
    Je viens de tester sur mon Oreon.

    Ma commande une fois enregistree
    name : test
    line : coucou "coucou" 'coucou'

    Apres generation dans le cfg ->
    # 'test' command definition 33
    define command{
    command_name test
    command_line coucou "coucou" 'coucou'
    }

    Dans mon fichier command.class :
    Code:
    	function get_name()	{
    		return stripslashes($this->command_name);
    	}
    	
    	function get_line()	{
    		return stripslashes($this->command_line);
    	}
    
    	function set_name($name)	{
    		$this->command_name = $name;
    	}
    	
    	function set_line($line)	{
    		$this->command_line = $line;
    	}
    Dans mon fichier include/exporte/commands.php

    Code:
    				$str .= "define command{\n";
    				if ($cmd->get_name()){$str .= print_line("command_name", $cmd->get_name());}
    				if ($cmd->get_line()){$str .= print_line("command_line", $cmd->get_line());}
    				$str .= "}\n\n";
    Romain Le Merlus
    Centreon Forge
    MERETHIS

    Comment


    • #3
      Salut Romain,

      merci pour le coup de main.
      J'ai regardé dans mes fichiers de conf (je suis en version 1.2.1).
      Il me semble que j'ai comme toi :

      dans le fichier /usr/local/oreon/class/Command.class.php:

      Code:
      // Get
        
              function get_id()       {
                      return $this->command_id;
              }
      
              function get_name()     {
                      return stripslashes($this->command_name);
              }
      
              function get_line()     {
                      return stripslashes($this->command_line);
              }
      
              function get_type()     {
                      return $this->command_type;
              }
      
              function get_errCode()  {
                      return $this->errCode;
              }
      Et dans le second fichier /usr/local/oreon/include/export/commands.php:

      Code:
      function Create_command( $oreon, $path)
      {
              $handle = create_file( $path ."checkcommands.cfg", $oreon->user->get_firstname(), $oreon->user->get_lastname());
              if (!isset($oreon->commands) && !count($oreon->commands))       {
                      return ;
              } else {
                      $i = 0;
                      $str = NULL;
                      foreach ($oreon->commands as $cmd)      { 
                              if (!strcmp($cmd->get_type(), "2")){
                                      $str .= "# '" . $cmd->get_name() . "' command definition " . $i . "\n";
                                      $str .= "define command{\n";
                                      if ($cmd->get_name()){$str .= print_line("command_name", $cmd->get_name());}
                                      if ($cmd->get_line()){$str .= print_line("command_line", $cmd->get_line());}
                                      $str .= "}\n\n"; 
                                      $i++;
                              }
                              unset($cmd);
                      }
              }
              write_in_file($handle, $str, $path . "checkcommands.cfg");
              fclose($handle);
      }
      Par contre, j'ai toujours cet effet néfaste.
      Je ne comprend pas bien quel fonction est chargée par Oreon lorsque l'on rempli un champ au travers de l'interface si on crée ou modifie un commande de check (notification ou check).

      As-tu cette information ?
      Quelle fonction mérite d'être oscultée ?

      Merci d'avance pour ton aide.

      Thierry

      Comment


      • #4
        Le fonctionnement est simple :

        Tu saisies ton text, tu sauves, on appele le constructeur dans command.class.php (verifie a ce niveau qu'il n'y a pas de addslashes dans le set de line), on verifie que tous les champs sont bons, on sauve en base avec OreonDatabase.class.php ou la on fait un addslashes.

        Ensuite quand on a besoin de l'element on le recupere avec le get_line() de l'object command qui inclue un stripslashes automatiquement.

        Le seul truc que je voie est que tu as un addslashes dans le constructeur de command. Enleve et teste si c'est le cas.
        Romain Le Merlus
        Centreon Forge
        MERETHIS

        Comment


        • #5
          Salut Romain,

          merci pour ces précisions.
          J'avais une ligne addslashes dans le fichier Command.class.php en ligne 57.

          Code:
                          $this->command_line = addslashes($command["command_line"]);
          je l'ai modifié

          Code:
                          $this->command_line = stripslashes($command["command_line"]);
          Est c'est tout bon!

          Merci beaucoup

          Thierry

          Comment


          • #6
            Logiquement tu n'as pas besoin de mettre un stripslashes, cela devrait suffir :

            Code:
            $this->command_line = $command["command_line"];
            Effectivement, il t'en rajoutait en double et n'en n'enlevait qu'un a la generation... C'etait du a des tests qu'on avait fait a ce sujet deja...
            Romain Le Merlus
            Centreon Forge
            MERETHIS

            Comment


            • #7
              Salut Romain,

              désolé, mais mon cas de figure apparait à nouveau, mais dans un autre champ:

              Le champ "Check_command_arguments" dans la description d'un service.

              A nouveau, si je place les arguments suivants:

              Code:
              !coucou!'coucou'!"coucou"
              j'obtiens dans le champ dès que je sauve ma modification:

              Code:
               	 !coucou!\'coucou\'!\"coucou\"
              Donc, ce soucis de addslashes et stripslashes semble être présent ailleurs dans le code, j'ai cherché un moment, mais je n'ai pas trouvé !

              :?: As-tu une idée comment je peux régler ce problème définitivement ?

              Merci d'avance

              Thierry

              Comment


              • #8
                Alors si je teste voila chez moi :

                check_graph_traffic!coucou!'coucou'!"coucou"

                Je sais c enervant :lol:

                Donc, j'ai regarde, pas de addslashes en trop, tu peux toujours essaier en mettant un stripslashes() dans l'exportedb de service

                Ligne 66
                $cc_arg = stripslashes($oreon->services[$sv->get_service_template()]->get_check_command_arg());

                Ligne 70
                $str .= print_line("check_command", $oreon->commands[$sv->get_check_command()]->get_name() . stripslashes($sv->get_check_command_arg()));
                Romain Le Merlus
                Centreon Forge
                MERETHIS

                Comment


                • #9
                  :cry: Dommage, cela ne résoud pas mon problème.

                  Question: je suis en version 1.2.1 et je n'ai pas les mêmes numéros de lignes que toi.
                  Dans mon fichier export/services.php, les lignes que tu me proposes de modifier sont placées aux lignes 64 et 68 alors que toi tu les as en ligne 66 et 70

                  As-tu une idée ?

                  Thierry

                  Comment


                  • #10
                    Et bien modifie celle la alors :lol:
                    Romain Le Merlus
                    Centreon Forge
                    MERETHIS

                    Comment


                    • #11
                      EUH!

                      on c'est pas bien compris, je les ai modifiées, mais le résulat attendu n'a pas été au RDV.

                      Du coup, je me suis posé la question que si j'ai pas les mêmes lignes que toi, il se peut bien que d'autres lignes de codes ne soient pas les mêmes.

                      Sur ta station de test, est-tu en 1.2.1 ?

                      As-tu une autre idées pour ces "\" non désirés ?

                      Merci

                      Thierry

                      Comment


                      • #12
                        En fait je suis sur la version en dev la.

                        Les \ se trouvent dans confiuration->service mais sont ils toujours present dans le services.cfg ?
                        Si tu veux les enlever dans la partie configuration, rajoute des stripslashes dans la page /oreon/service.php
                        Romain Le Merlus
                        Centreon Forge
                        MERETHIS

                        Comment


                        • #13
                          Salut Romain,

                          Pour ton information, les modifications proposées ont un effet de bord innatendu.

                          En effet, suite aux modifications dans le fichier services.php, le fichier généré services.cfg est faux.
                          Les services prennent comme arguements, la valeur proposée dans le template en lieu et place ce celle spécifiée dans le service.

                          J'ai donc du revenir en arrière.

                          Thierry

                          Comment


                          • #14
                            Salut Romain,

                            pour répondre à ta question:

                            Les \ se trouvent dans confiuration->service mais sont ils toujours present dans le services.cfg ?
                            Tout à fait, les \ que je vois dans le champs configuration -> service -> check_command_arguments, je les retrouves dans le fichier de configuration nagios service.cfg. D'où mon problème, car cela fausse la syntaxe des arguments, et le plugin check_nt ne le supporte pas bien du tout.

                            Concernant ton autre proposition:
                            Si tu veux les enlever dans la partie configuration, rajoute des stripslashes dans la page /oreon/service.php
                            Je suis passé au travers de ce fichier, et je ne suis malheuresement pas à l'aise pour poser comme cela des stripslashes dans tous les coins.
                            Peux-tu m'aider sur ce coup là ?

                            Merci

                            Thierry

                            Comment


                            • #15
                              Salut Romain,

                              mes problèmes associés à des caractères \ se généralise.
                              Apparrement, selon tes indications, tu ne reproduis pas ce problèmes avec ton installation.

                              :?: Dans ce cas, peux-tu m'envoyer un tarball de ton tree Oreon afin que je le place dans ma situation pour voir si cela corrige mes soucis ?

                              Merci d'avance pour ton aide

                              Thierry

                              Comment

                              Working...
                              X