乌贼url_rewrite_program。标准输入总是空的。无法使用wgets解析鱿鱼味精

时间:2019-04-19 13:31:51

标签: c stdin squid

我正在尝试通过squid.conf将请求从Squid重定向到我的应用程序(用C编写):

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-> Connections-> Lan设置Proxy连接设置localhost:3128)。 wgets(stdio.h)命令不会读取任何数据。

根据鱿鱼的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中写入smth可以正常工作。 我使用的是使用Cygwin构建的Squid 3.5.28,也尝试过2.7稳定,但结果相同。

找到了一个存在类似问题的旧帖子,但未解决:Wikipedia

谢谢!

1 个答案:

答案 0 :(得分:0)

在这里找到答案: https://serverfault.com/questions/937515/how-to-set-up-url-rewriting-under-squid-3-5-on-windows-10 空输出的原因是Cygwin如何在Cygwin二进制(squid)和本机Windows二进制之间建立管道模型。 将操作系统更改为Unix(Debian)并重新编译了应用程序。效果很好:)