Como uso o Squid para redirecionar uma solicitação incomig para outro host?

1

Estou tentando integrar uma instalação interna do GitLab com um webhook de entrada do Slack, mas tenho um problema, a máquina em que o GitLab pode acessar apenas outras máquinas na mesma rede. Eu tenho VM que está na mesma rede e tem acesso externo.

O webhook do Slack é um URL como este:

https://hooks.slack.com/services/T18QMD0NM/C09PY5XKO/52lDzmkoxL51p9NLRqxQ9Kq2

Mas, como não consigo usar isso no GitLab, configurei o serviço Slack no GitLab para fazer solicitações ao seguinte URL:

https://192.168.1.220:3128/services/T18QMD0NM/C09PY5XKO/52lDzmkoxL51p9NLRqxQ9Kq2

192.168.1.220 é o endereço IP da VM e 3128 é onde o Squid está escutando.

Como faço para usar o Squid para encaminhar todas as solicitações recebidas para hooks.slack.com ?

P.S: Eu tenho uma instalação limpa do Squid, não alterei nenhuma configuração.

    
por Ricardo Amaral 02.07.2015 / 19:58

1 resposta

3

Suponho que a melhor maneira de resolver seu problema é direcionar seu GitLab para usar um proxy HTTP de saída.

Você pode consultar este link para configurar o proxy http na sua instalação do GitLab.

- Atualizar

#!/usr/bin/perl
use strict;

# Turn off buffering to STDOUT
$| = 1;

# Read from STDIN
while (<>) {

    my @elems = split; # splits $_ on whitespace by default

    # The URL is the first whitespace-separated element.
    my $url = $elems[0];

    # Handle local IP links and translate them to https://hooks.slack.com
    # with the rest of the URL intact (if present) and ignore warnings.
    # 192.168.1.220:3128
    if ($url =~ m#^https://192\.168\.1\.220(/.*)?#i) {

        $url = "https://hooks.slack.com${1}";

        print "$url\n";

    }    
}

Adicione a seguinte linha de código no seu arquivo squid.conf:

redirect_program /path/to/the/script/above/redirect_program.pl

E finalmente recarregue / reconfigure o squid usando:

/path/to/executable/squid -k reconfigure
    
por 02.07.2015 / 20:23