goproxy icon indicating copy to clipboard operation
goproxy copied to clipboard

商业版goproxy使用--auth-file出现异常问题

Open nginxzzz opened this issue 4 years ago • 5 comments

商业版goproxy sps模式使用--auth-file认证, 接口根据文档返回upstream字段,日志提示functions.go:178: bind crashed runtime error: invalid memory address or nil pointer dereference,无法正常工作。 接口不中不返回upstream则可正常使用,不会报错

Expected Behavior

二级代理模式,goproxy部署为一级代理(sps模式,上级为其他http代理), 接受客户端(proxifier)连接

Current Behavior

1,使用curl -x hello:[email protected]:10000 时, goproxy日志中提示" functions.go:178: bind crashed runtime error: invalid memory address or nil pointer dereference" 2, 使用proxifier工具也同样有此提示(附上proxifier日志), 并且提示错误 3, 客户端连gorpoxy的上级可以正常工作,说明goproxy上级配置没有问题 4, 测试了baidu等网址,同样错误

// 这是proxifier日志 [41:21] 测试已开始。 代理服务器 地址: 192.168.2.1:10000 协议: HTTPS 验证: 基础 用户名: hello [41:21] 正在开始: 测试 1: 连接到代理服务器 [41:21] IP 地址: 192.168.2.1 [41:21] 已建立连接 [41:21] 测试已通过。 [41:21] 正在开始: 测试 2: 通过代理服务器连接 [41:21] 已通过代理服务器与 www.google.com:80 建立了连接。 [41:22] 错误: 代理服务器的连接被意外关闭。 请确保目标主机是 Web 服务器。 此错误也可能表示代理服务器不能正常运行。 [41:22] 测试已失败。 [41:22] 测试已完成。

// 这是goproxy 日志 2021/08/25 03:41:21.797050 sps.go:1091: user hello rate, current: 1/s, max: 20/s, ip:192.168.2.1 2021/08/25 03:41:22.847175 sps.go:1325: rate limit 3000 bytes/s ,192.168.2.1 , www.google.com:80 2021/08/25 03:41:22.847175 sps.go:1394: conn 192.168.2.1:53720 - 192.168.3.1:1234 connected [www.google.com:80] 2021/08/25 03:41:22.861951 sps.go:1355: conn 192.168.2.1:53720 - 192.168.3.1:1234 released [www.google.com:80] 2021/08/25 03:41:22.861951 functions.go:178: bind crashed runtime error: invalid memory address or nil pointer dereference

Possible Solution

可能是--auth-file校验有问题, 单独测试了命令行使用-T -P连接上级代理时可以正常工作

Steps to Reproduce

Context (Environment)

  1. proxy version is : commercial_11.0
  2. full command is :?
  3. system is : winserver 2019 (vesion1809)
  4. full log is: 2021/08/25 03:41:21.797050 sps.go:1091: user hello rate, current: 1/s, max: 20/s, ip:192.168.2.1 2021/08/25 03:41:22.847175 sps.go:1325: rate limit 3000 bytes/s ,192.168.2.1 , www.google.com:80 2021/08/25 03:41:22.847175 sps.go:1394: conn 192.168.2.1:53720 - 192.168.3.1:1234 connected [www.google.com:80] 2021/08/25 03:41:22.861951 sps.go:1355: conn 192.168.2.1:53720 - 192.168.3.1:1234 released [www.google.com:80] 2021/08/25 03:41:22.861951 functions.go:178: bind crashed runtime error: invalid memory address or nil pointer dereference

Detailed Description

// goproxy配置 sps
-p :10000
--forever
--log proxy.log --auth-url http://192.168.1.10/auth.php

// auth.php $alluser=[
"hello"=>"test",
"user2"=>"pass2",
"user3"=>"pass3",
"user4"=>"pass4",
];
$proxy_ip=$_GET['local_addr'];
$user_ip=$_GET['client_addr'];
$service=$_GET['service'];
$is_sps=$_GET['sps']=='1';
$user=$_GET['user'];
$pass=$_GET['pass'];
$target=$_GET['target'];
//业务逻辑判断
//....
$ok=true;

//设置认证结果
if($ok){
header("userconns:1000");
header("ipconns:2000");
header("userrate:3000");
header("iprate:8000");
header("UPSTREAM:http://admin:[email protected]:1234?parent-type=tcp");
header("HTTP/1.1 204 No Content");
}

Possible Implementation

nginxzzz avatar Aug 25 '21 04:08 nginxzzz

你这是api认证,并不是--auth-file认证。

snail007 avatar Aug 25 '21 06:08 snail007

问题已经复现和定位,下个版本会修复。

snail007 avatar Aug 25 '21 07:08 snail007

感谢处理, 是auth-url, 是我写错了

nginxzzz avatar Aug 25 '21 07:08 nginxzzz

老板 api可以付费对接你的吗

aa1008611 avatar Apr 09 '22 21:04 aa1008611

商业版可以对接你自己写的API。

snail007 avatar Apr 10 '22 01:04 snail007