Netgate Discussion Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Search
    • Register
    • Login

    Wpad no pfsense

    Scheduled Pinned Locked Moved Portuguese
    32 Posts 4 Posters 9.5k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • R
      reinaldo.feitosa
      last edited by

      @isaiasbertin:

      Reinaldo bacana seu script

      você o tomas recomendo usar como, tenho sites e ips não não vão usar o proxy, é melhor usar no script ou fazer uma outro processo no pfsense se houver

      como posso usar aptar uma parte do Tomas

      
       // Dominio sem proxy
        //if (shExpMatch(host, "site.a.b.c") || shExpMatch(host, "site.x.y.z")) return "DIRECT";
      
        // IP sem proxy
        //if (myIpAddress(), "0.0.0.0.0", "255.255.255.0") return "DIRECT";
      
      

      podes dar uma dica

      Tem várias formas pra fazer isso é uma questão de lógica.

      Fiz uma alteração na primeira rede com o exemplo do Tomas junto.

      
      function FindProxyForURL(url, host){
         var host_ip;
      
         host_ip= dnsResolve(host);
         if (isInNet(myIpAddress(), "192.168.7.0", "255.255.255.0")) 
            if (isInNet(host_ip, "127.0.0.1", "255.255.255.255"))
               return "DIRECT";
            else if (isInNet(host_ip, "192.168.7.0", "255.255.255.0"))
               return "DIRECT";
            else if (shExpMatch(host, "site.a.b.c") || shExpMatch(host, "site.x.y.z")) 
               return "DIRECT";
            else if myIpAddress() = "0.0.0.0.0"
               return "DIRECT";
            else
               return "PROXY 192.168.7.1:3128";
         else if (isInNet(myIpAddress(), "192.168.12.0", "255.255.255.0"))
            if (isInNet(host_ip, "127.0.0.1", "255.255.255.255"))
               return "DIRECT";
            else if (isInNet(host_ip, "192.168.12.0", "255.255.255.0"))
               return "DIRECT";
            else 
               return "PROXY 192.168.12.1:3128";
         else if (isInNet(myIpAddress(), "192.168.13.0", "255.255.255.0"))
            if (isInNet(host_ip, "127.0.0.1", "255.255.255.255"))
               return "DIRECT";
            else if (isInNet(host_ip, "192.168.13.0", "255.255.255.0"))
               return "DIRECT";
            else 
               return "PROXY 192.168.13.1:3128";
         else if (isInNet(myIpAddress(), "192.168.14.0", "255.255.255.0"))
            if (isInNet(host_ip, "127.0.0.1", "255.255.255.255"))
               return "DIRECT";
            else if (isInNet(host_ip, "192.168.14.0", "255.255.255.0"))
               return "DIRECT";
            else 
               return "PROXY 192.168.14.1:3128";
         else if (isInNet(myIpAddress(), "192.168.15.0", "255.255.255.0"))
            if (isInNet(host_ip, "127.0.0.1", "255.255.255.255"))
               return "DIRECT";
            else if (isInNet(host_ip, "192.168.15.0", "255.255.255.0"))
               return "DIRECT";
            else 
               return "PROXY 192.168.15.1:3128";
         else if (isInNet(myIpAddress(), "192.168.16.0", "255.255.255.0"))
            if (isInNet(host_ip, "127.0.0.1", "255.255.255.255"))
               return "DIRECT";
            else if (isInNet(host_ip, "192.168.16.0", "255.255.255.0"))
               return "DIRECT";
      }
      
      

      Eu separei o proxy por rede, mas poderia ser mesmo pra todas as redes. Seria o exemplo do Tomas com uma observação o proxy teria que ser a primeira linha, pois na ultima sem nenhum condição ele vai retornar o proxy para os ips e redes que passou para direct nas condições acima
      o correto seria:

      
      function FindProxyForURL(url,host){
      
        // Regra deafult com proxy em ordem de fail-ver 
        return "PROXY 1.2.3.4:3128; PROXY 5.6.7.8:3128";
      
        // If the requested website is hosted within the internal network, send direct.
        if (isPlainHostName(host) ||
          isInNet(dnsResolve(host), "10.0.0.0", "255.0.0.0") ||
          isInNet(dnsResolve(host), "172.16.0.0",  "255.240.0.0") ||
          isInNet(dnsResolve(host), "192.168.0.0",  "255.255.0.0") ||
          isInNet(dnsResolve(host), "127.0.0.0", "255.255.255.0"))
        return "DIRECT";
      
      

      // Dominio sem proxy
        //if (shExpMatch(host, "site.a.b.c") || shExpMatch(host, "site.x.y.z")) return "DIRECT";

      // IP sem proxy
        //if (myIpAddress(), "0.0.0.0.0", "255.255.255.0") return "DIRECT";

      }

      1 Reply Last reply Reply Quote 0
      • I
        isaiasbertin
        last edited by

        Bacana Reinaldo

        vou fazer os teste feras.

        1 Reply Last reply Reply Quote 0
        • T
          tomaswaldow
          last edited by

          Não está errado não, a regra default tem que ser a última, não pode ser a primeira.
          Senão não faz sentido a outras linhas, pois elas verificam o destino se é local, etc.

          A regra lá é em fail over, vai tentar um e caso não encontre tenta o segundo, sem precisar como "if" para ver que rede está.

          Pode ver no site: http://findproxyforurl.com/example-pac-file/

          Tomas @ 2W Consultoria

          1 Reply Last reply Reply Quote 0
          • R
            reinaldo.feitosa
            last edited by

            @Tomas:

            Não está errado não, a regra default tem que ser a última, não pode ser a primeira.
            Senão não faz sentido a outras linhas, pois elas verificam o destino se é local, etc.

            A regra lá é em fail over, vai tentar um e caso não encontre tenta o segundo, sem precisar como "if" para ver que rede está.

            Pode ver no site: http://findproxyforurl.com/example-pac-file/

            Tomas, analisando a lógica do java script ele retorna o valor da functcion no return e não no final da function como outra linguagens.

            Se foce como o pascal por exemplo o return teria sempre o ultimo valor, por isso fiz esta confusão. Pelo que analisei no primeiro return que ele encontra ja termina a function com o retorno. Desta forma no meu script não precisa de tantos else if, pois eu usei isso pra isolar cada condição.

            Vou rescrever o meu script e posto aqui

            1 Reply Last reply Reply Quote 0
            • T
              tomaswaldow
              last edited by

              Então, eu não gosto desses "if", acho que acaba complicando.
              Da forma que passei fica mais simples.

              Tomas @ 2W Consultoria

              1 Reply Last reply Reply Quote 0
              • marcellocM
                marcelloc
                last edited by

                @reinaldo.feitosa:

                // Regra deafult com proxy em ordem de fail-ver
                  return "PROXY 1.2.3.4:3128; PROXY 5.6.7.8:3128";

                aqui você está chamando a função return e não definindo um valor pra ela, por isso seu script parava sempre no primeiro teste.

                Treinamentos de Elite: http://sys-squad.com

                Help a community developer! ;D

                1 Reply Last reply Reply Quote 0
                • T
                  tomaswaldow
                  last edited by

                  Marcello, este exemplo peguei do site: http://findproxyforurl.com/example-pac-file/

                  La consta como abaixo:
                  // DEFAULT RULE: All other traffic, use below proxies, in fail-over order.
                  return "PROXY 4.5.6.7:8080; PROXY 7.8.9.10:8080";

                  Pra mim está funcionando.

                  Tomas @ 2W Consultoria

                  1 Reply Last reply Reply Quote 0
                  • marcellocM
                    marcelloc
                    last edited by

                    No final, não no começo.

                    Treinamentos de Elite: http://sys-squad.com

                    Help a community developer! ;D

                    1 Reply Last reply Reply Quote 0
                    • T
                      tomaswaldow
                      last edited by

                      Certo, entendi.

                      Tomas @ 2W Consultoria

                      1 Reply Last reply Reply Quote 0
                      • I
                        isaiasbertin
                        last edited by

                        colocar esta condição sempre no final do script certo

                        // DEFAULT RULE: All other traffic, use below proxies, in fail-over order.
                        return "PROXY 4.5.6.7:8080; PROXY 7.8.9.10:8080";

                        1 Reply Last reply Reply Quote 0
                        • T
                          tomaswaldow
                          last edited by

                          Sim, mas só se for usar mais de uma rede.
                          Para uma rede só não precisa colocar os dois IPs.

                          Para ma rede pode ser: return "PROXY 192.168.1.1:3128";

                          Tomas @ 2W Consultoria

                          1 Reply Last reply Reply Quote 0
                          • R
                            reinaldo.feitosa
                            last edited by

                            @marcelloc:

                            @reinaldo.feitosa:

                            // Regra deafult com proxy em ordem de fail-ver
                              return "PROXY 1.2.3.4:3128; PROXY 5.6.7.8:3128";

                            aqui você está chamando a função return e não definindo um valor pra ela, por isso seu script parava sempre no primeiro teste.

                            Sim Marcelo, agora entendi, em outras linguagens o valor é definido e o return só acontece no final da function, por isso fiz confusão. Agora entendi que o return esta saindo da funciona então não precisa de tantos else if.

                            1 Reply Last reply Reply Quote 0
                            • I
                              isaiasbertin
                              last edited by

                              Tomas para colocar mais de um ip fora do proxy

                              if (myIpAddress(), "192.168.2.2", "255.255.255.0", "192.168.2.3", "255.255.255.0") return "DIRECT";

                              é desta forma?

                              1 Reply Last reply Reply Quote 0
                              • T
                                tomaswaldow
                                last edited by

                                @isaiasbertin:

                                Tomas para colocar mais de um ip fora do proxy

                                if (myIpAddress(), "192.168.2.2", "255.255.255.0", "192.168.2.3", "255.255.255.0") return "DIRECT";

                                é desta forma?

                                Teste dessa forma ou faça um ip por linha.

                                if (myIpAddress(), "192.168.2.2", "255.255.255.0") || (myIpAddress(), "192.168.2.3", "255.255.255.0")) return "DIRECT";

                                Tomas @ 2W Consultoria

                                1 Reply Last reply Reply Quote 0
                                • I
                                  isaiasbertin
                                  last edited by

                                  OK posso adicionar máquinas por máquinas nesta opção, outra coisa será que tem como criar uma lista de máquinas um aquivo com todos os IPS e chamar este arquivo via este scripts

                                  1 Reply Last reply Reply Quote 0
                                  • T
                                    tomaswaldow
                                    last edited by

                                    Não é mais facil somente desmarcar a opção no navegador dessas máquinas?

                                    Tomas @ 2W Consultoria

                                    1 Reply Last reply Reply Quote 0
                                    • R
                                      reinaldo.feitosa
                                      last edited by

                                      @isaiasbertin:

                                      OK posso adicionar máquinas por máquinas nesta opção, outra coisa será que tem como criar uma lista de máquinas um aquivo com todos os IPS e chamar este arquivo via este scripts

                                      Isaias, não seria mais fácil criar uma regra liberando tudo para as máquinas do que tirar eles do proxy?
                                      Qual a necessidade de tirar algumas máquinas do proxy?

                                      1 Reply Last reply Reply Quote 0
                                      • I
                                        isaiasbertin
                                        last edited by

                                        Na realidade estou testando pois tem momentos que tenho que colocação máquinas fora do proxy e tirar site do proxy exemplo conectividade social

                                        Estou fazendo teste quero ter todas as possibilidades  o melhor é liberar no proxy mesmo

                                        Vou fazer os tese e posto

                                        1 Reply Last reply Reply Quote 0
                                        • T
                                          tomaswaldow
                                          last edited by

                                          @isaiasbertin:

                                          Na realidade estou testando pois tem momentos que tenho que colocação máquinas fora do proxy e tirar site do proxy exemplo conectividade social
                                          Estou fazendo teste quero ter todas as possibilidades  o melhor é liberar no proxy mesmo
                                          Vou fazer os tese e posto

                                          Pra que? Tenho escritório de contabilidade sem problema com Conectividade, não precisa "tirar" do proxy….
                                          Só fazer uma regra liberando a porta se estiver usando o programa antigo e se for a ver~soa web funciona sem problema  via proxy.

                                          Tomas @ 2W Consultoria

                                          1 Reply Last reply Reply Quote 0
                                          • marcellocM
                                            marcelloc
                                            last edited by

                                            @isaiasbertin:

                                            tirar site do proxy exemplo conectividade social

                                            Seria mais simples colocar o site da conectividade social na exception no lugar de ficar escrevendo um livro no wpad.

                                            Outro detalhe importante é que o navegador faz cache do wpad, o que dificulta o processo de atualização do script.

                                            Treinamentos de Elite: http://sys-squad.com

                                            Help a community developer! ;D

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post
                                            Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.