鱿鱼url_rewrite_program。标准输入总是空的。无法使用 wgets 解析鱿鱼消息
Squid url_rewrite_program. stdin always empty. Unable to parse squid msg with wgets
我正在尝试通过 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 settings Proxy connection settings localhost:3128)。 wgets (stdio.h) 命令不会读取任何数据。
根据 squid access.log 的说法,url 被称为:
1555677518.894 44096 ::1 TCP_TUNNEL/200 39 连接 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 稳定版,但结果相同。
发现一个旧的 post 有类似的问题,但没有解决:Squid url_rewrite_program
提前致谢!
答案是在这里找到的:
https://serverfault.com/questions/937515/how-to-set-up-url-rewriting-under-squid-3-5-on-windows-10
空输出的原因是 Cygwin 如何模拟 Cygwin 二进制文件(squid)和本机 Windows 二进制文件之间的管道。
将 OS 更改为 Unix (Debian) 并重新编译应用程序。工作正常:)
我正在尝试通过 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 settings Proxy connection settings localhost:3128)。 wgets (stdio.h) 命令不会读取任何数据。
根据 squid access.log 的说法,url 被称为: 1555677518.894 44096 ::1 TCP_TUNNEL/200 39 连接 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 稳定版,但结果相同。
发现一个旧的 post 有类似的问题,但没有解决:Squid url_rewrite_program
提前致谢!
答案是在这里找到的: https://serverfault.com/questions/937515/how-to-set-up-url-rewriting-under-squid-3-5-on-windows-10 空输出的原因是 Cygwin 如何模拟 Cygwin 二进制文件(squid)和本机 Windows 二进制文件之间的管道。 将 OS 更改为 Unix (Debian) 并重新编译应用程序。工作正常:)