Support de proxy authentifiant pour OpenNab

2007-10-11
2013-04-29
  • Pierre Nguyen
    Pierre Nguyen
    2007-10-11

    Bonjour,

    merci pour ton OpenNab ! Je l'utilise sur l'intranet de mon entreprise qui utilise un proxy authentifiant pour sortir sur internet. Avec le nabaztag seul, cela ne marchait pas car il ne supporte par l'authentification des proxys.. Mais grâce à OpenNab, je peux enfin connecter mon Nabaztag : il faut modifier quelques options de curl

    - Fichier includes/request.php

    <code>
            function Forward()
            {
                    $url = 'http://'.$this->host.$this->uri;
                    $curlHandle = curl_init($url);
                    if (!$curlHandle)
                            return false;

    // Modif de Thus0
                    curl_setopt($curlHandle, CURLOPT_PROXY, "192.168.0.226:3128");
                    curl_setopt($curlHandle, CURLOPT_PROXYUSERPWD, "monlogin:monpassword");
    // Fin modif de Thus0

                    curl_setopt($curlHandle, CURLOPT_HTTPHEADER, $this->sentHeaders);
                    curl_setopt($curlHandle, CURLOPT_RETURNTRANSFER, 1);
                    curl_setopt($curlHandle, CURLOPT_BINARYTRANSFER, 1);
                    curl_setopt($curlHandle, CURLOPT_CONNECTTIMEOUT, 2);
    //              curl_setopt($curlHandle, CURLOPT_TIMEOUT, 4);
                    curl_setopt($curlHandle, CURLOPT_TIMEOUT, 30);
                    @curl_setopt($curlHandle, CURLOPT_FOLLOWLOCATION, 1);
    </code>

    Pourrais-tu intégrer ces modifs dans la prochaine version de OpenNab ?

    Je te propose les paramètres suivants dans le config/opennab.ini :

    <code>
    ;; Proxy config
    ProxyUser=Thus0
    ProxyPassword=toto123
    ProxyServer=192.168.0.226
    ProxyPort=3128
    </code>

    Ensuite dans la fonction forward de request.php , il faudrait activer les lignes du proxu uniquement si on est en mode 'classic' ou 'violet', du type :

    <code>
    if ($ServerMode=='classic' or $ServerMode='violet') {
      curl_setopt($curlHandle, CURLOPT_PROXY, "$ProxyServer:$ProxyPort");
      curl_setopt($curlHandle, CURLOPT_PROXYUSERPWD, "$ProxyUser:$ProxyPassword");
      // peut-être aussi augmenter le timeout si on passe par le proxy ?
      curl_setopt($curlHandle, CURLOPT_TIMEOUT, 30);
    }
    </code>

    Qu'en penses-tu ?

    a+

    Thus0
    http://www.pervasive-network.org/

     
    • Pierre Nguyen
      Pierre Nguyen
      2007-10-11

      Bon, j'ai posté trop vite... en fait, il faudrait tester si le support du proxy est activé et si de plus c'est un proxy authentifiant : donc en gros, l'idée :

      <code>
      if (isset($ProxyServer)) {
        if ($ServerMode=='classic' or $ServerMode='violet') {
          curl_setopt($curlHandle, CURLOPT_PROXY, "$ProxyServer:$ProxyPort");
          if (isset($ProxyUser)) {
            curl_setopt($curlHandle, CURLOPT_PROXYUSERPWD, "$ProxyUser:$ProxyPassword");
          }
          // peut-être aussi augmenter le timeout si on passe par le proxy ?
          curl_setopt($curlHandle, CURLOPT_TIMEOUT, 30);
        }
      }
      </code>

      a+