Squid url_rewrite_program.Стандарт всегда пуст.Невозможно проанализировать сообщение squid с помощью wgets - PullRequest
0 голосов
/ 19 апреля 2019

Я пытаюсь перенаправить запрос из Squid в мое приложение (написанное на C) с помощью squid.conf:

http_port 3128
# some default configuration out of the box
url_rewrite_program /cygdrive/c/app.exe /cygdrive/c/app.conf
url_rewrite_children 1 startup=1 idle=1

Приложение работает правильно. Но stdin никогда не заполняется Squid (путем установки InternetProps -> Подключения -> Настройки Lan Настройки прокси-соединения localhost: 3128). И команда wgets (stdio.h) не будет читать данные.

Согласно squid access.log, URL назывался: 1555677518.894 44096 :: 1 TCP_TUNNEL / 200 39 CONNECT www.google.com.ua:443 - HIER_DIRECT / 172.217.16.3 -

Вот код, который я использую:

int main(int argc, char* argv[]) {
  char str[1000]
  while(1) {
    if (fgets(str, 100, stdin)!=NULL) {
      // do smth
    }
    // wait millis
  }
}

, если вызвать приложение вручную и написать что-то в stdin, то работает нормально. Я использую Squid 3.5.28, построенный с Cygwin, также попробовал 2.7 стабильный, но тот же результат.

Найден старый пост с похожей проблемой, но он не был решен: Squid url_rewrite_program

Заранее спасибо!

1 Ответ

0 голосов
/ 21 мая 2019

Ответ был найден здесь: https://serverfault.com/questions/937515/how-to-set-up-url-rewriting-under-squid-3-5-on-windows-10 Причиной пустого вывода было то, как Cygwin моделирует трубопровод между двоичным файлом Cygwin (squid) и собственным двоичным файлом Windows. Изменил ОС на Unix (Debian) и перекомпилировал приложение. Работает нормально :)

...