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.
    • T
      tomaswaldow
      last edited by

      
      function FindProxyForURL(url,host){
      
        // 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";
      
        // Regra deafult com proxy em ordem de fail-ver 
        return "PROXY 1.2.3.4:3128; PROXY 5.6.7.8:3128";
      }
      
      

      Pode usar esse, muda conforme precisa.
      Na ultima linha coloca as redes que vai usar, no caso ele tante o primeiro e se não encontra vai no segundo.

      E os ips que não vão usar cria uma linha fazendo o bypass para cada IP.

      Tomas @ 2W Consultoria

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

        vou testar tomas

        obrigado fera

        1 Reply Last reply Reply Quote 0
        • 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
                                            • First post
                                              Last post
                                            Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.