我正在尝试通过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
谢谢!
答案 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)并重新编译了应用程序。效果很好:)