Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

我认为这样更直观 #12

Closed
xaotag opened this issue Nov 5, 2023 · 24 comments
Closed

我认为这样更直观 #12

xaotag opened this issue Nov 5, 2023 · 24 comments

Comments

@xaotag
Copy link

xaotag commented Nov 5, 2023

{
  "providers": [
    {
      "tag": "provider",
      "url": "https://url.to/provider.txt",
      "interval": "24h",  
      "download_detour": "",
      "cache_file": "provider.txt"

      ... // 拨号字段
    }
  ],
"providers1": [
    {
      "tag": "provider",
      "url": "https://url.to/provider.txt",
      "interval": "24h",  
      "download_detour": "",
      "cache_file": "provider.txt"

      ... // 拨号字段
    }
  ],
  {
    // 通过出站组引用,否则订阅不起作用。
    "type": "hk", // selector, loadbalance, urltest...    
    "exclude": "",
    "include": "hk",
    "providers": [
      "provider1"
    ]
  },
 {
    // 通过出站组引用,否则订阅不起作用。
    "type": "usa", // selector, loadbalance, urltest...    
    "exclude": "",
    "include": "usa",
    "providers": [
      "provider",
      "provider1"
    ]
  }
}

更直观,更容易进行多个订阅的合并,也符合clash难民的直觉

@qjebbs
Copy link
Owner

qjebbs commented Nov 15, 2023

Supported:

{
  // 通过出站组引用,否则订阅不起作用。
  "type": "selector", // selector, loadbalance, urltest...    
  "exclude": "",
  "include": "usa",
  "providers": [
    "provider",
    "provider1"
  ]
}

@qjebbs qjebbs closed this as completed Nov 15, 2023
@xaotag
Copy link
Author

xaotag commented Nov 15, 2023

订阅好像不支持hysteria协议

@qjebbs
Copy link
Owner

qjebbs commented Nov 16, 2023

supported, but untested

@xaotag
Copy link
Author

xaotag commented Nov 16, 2023

ERROR[0003] provider[dog]: invalid link 日志表示没有获取到节点,订阅是xxx?flag=sing-box,也就是说订阅flag参数必须是sing-box时,才会加载hysteria节点信息,但是订阅连接请求后是json文件,貌似本项目并不能直接读取json的sing-box原生信息。
不过还是谢谢你提供了这个项目!

@qjebbs
Copy link
Owner

qjebbs commented Nov 16, 2023

目前的实现是根据hy的文档写的,json什么的应该不是标准做法,我也猜不出来他是怎么做的,有没有必要支持。

我没有hy节点,不加flag时获取的内容,可以的话私我一个测试

@xaotag
Copy link
Author

xaotag commented Nov 17, 2023

目前的实现是根据hy的文档写的,json什么的应该不是标准做法,我也猜不出来他是怎么做的,有没有必要支持。

我没有hy节点,不加flag时获取的内容,可以的话私我一个测试

不是的,我这边的订阅,他下发了一个带有clash_api的标准singbox配置文件,所以后缀文件是json。也就是说在它下发的配置文件 可以直接使用sing-box run配合yacd使用

@xaotag
Copy link
Author

xaotag commented Nov 17, 2023

订阅发你邮箱了,不加flag获取不了 hysteria的节点信息,加了就是sing-box的标准配置

@qjebbs
Copy link
Owner

qjebbs commented Nov 17, 2023

目前的实现是根据hy的文档写的,json什么的应该不是标准做法,我也猜不出来他是怎么做的,有没有必要支持。
我没有hy节点,不加flag时获取的内容,可以的话私我一个测试

不是的,我这边的订阅,他下发了一个带有clash_api的标准singbox配置文件,所以后缀文件是json。也就是说在它下发的配置文件 可以直接使用sing-box run配合yacd使用

嗯,支持完整json这不是core的层面的事,ui app才会考虑支持。

订阅发你邮箱了,不加flag获取不了 hysteria的节点信息,加了就是sing-box的标准配置

看到了,只有 ss://链接,没有hy2:// 之类的,那就没法调试了。你重置一下订阅链接,防止泄露。

根本原因是,服务商没有实现 hysteria 的订阅链接支持。

@xaotag
Copy link
Author

xaotag commented Nov 17, 2023

也就是说订阅中需要报告图片里的这种对吗?那它需要进行base编码吗?
Screenshot_2023-11-17-20-47-00-756_com microsoft emmx

@xaotag
Copy link
Author

xaotag commented Nov 19, 2023

WARN[0001] provider[ikunn]: links parsed with error:unsupported link scheme: hysteria2 | unsupported link scheme: hysteria
INFO[0001] provider[ikunn]: 7 links found

有节点但是并不支持

@xaotag
Copy link
Author

xaotag commented Nov 19, 2023

从base的解码来看确实有节点
image

@qjebbs
Copy link
Owner

qjebbs commented Nov 19, 2023

WARN[0001] provider[ikunn]: links parsed with error:unsupported link scheme: hysteria2 | unsupported link scheme: hysteria
INFO[0001] provider[ikunn]: 7 links found

有节点但是并不支持

这提示,应该是没有使用最新的代码编译

@xaotag
Copy link
Author

xaotag commented Nov 19, 2023

WARN[0000] provider[ikunn]: create [ikunn 1香港集群-全网优化(hy2)]: missing obfs password
WARN[0000] provider[ikunn]: create [ikunn 2香港集群-全网优化(hy2)]: missing obfs password
WARN[0000] provider[ikunn]: create [ikunn 5台湾-联通/移动(hy2)]: missing obfs password
WARN[0000] provider[ikunn]: create [ikunn 6日本-东部优化(hy2)]: missing obfs password
WARN[0000] provider[ikunn]: create [ikunn 7日本-联通/移动(hy2)]: missing obfs password
WARN[0000] provider[ikunn]: create [ikunn 8韩国集群-全网优化(hy2)]: missing obfs password
WARN[0000] provider[ikunn]: create [ikunn 9韩国-全网优化(hy2)]: missing obfs password
WARN[0000] provider[ikunn]: create [ikunn 25韩国-全网优化(hy2)]: missing obfs password
WARN[0000] provider[ikunn]: create [ikunn 10日本-全网优化(hy2)]: missing obfs password
WARN[0000] provider[ikunn]: create [ikunn 11美国-全网优化(hy2)]: missing obfs password
WARN[0000] provider[ikunn]: create [ikunn 12美国凤凰城-全网优化(hy2)]: missing obfs password
WARN[0000] provider[ikunn]: create [ikunn 13迪拜-电信/移动/南方联通(hy2)]: missing obfs password
WARN[0000] provider[ikunn]: create [ikunn 14印度-移动/南方联通(hy2)]: missing obfs password
WARN[0000] provider[ikunn]: create [ikunn 15新加坡-全网优化(hy2)]: missing obfs password
WARN[0000] provider[ikunn]: create [ikunn 24新加坡-联通/移动(hy2)]: missing obfs password
WARN[0000] provider[ikunn]: create [ikunn 16德国-电信/联通(hy2)]: missing obfs password
WARN[0000] provider[ikunn]: create [ikunn 17英国-全网优化(hy2)]: missing obfs password
WARN[0000] provider[ikunn]: create [ikunn 18加拿大-全网优化(hy2)]: missing obfs password
WARN[0000] provider[ikunn]: create [ikunn 19悉尼-全网优化(hy2)]: missing obfs password
WARN[0000] provider[ikunn]: create [ikunn 20巴西-全网优化(hy2)]: missing obfs password
WARN[0000] provider[ikunn]: create [ikunn 21智利-全网优化(hy2)]: missing obfs password
WARN[0000] provider[ikunn]: create [ikunn 22土耳其-全网优化(hy2)]: missing obfs password
WARN[0000] provider[ikunn]: create [ikunn 23法国-全网优化(hy2)]: missing obfs password
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x48 pc=0xe410c9]

goroutine 36 [running]:
github.com/sagernet/sing-box/outbound.(*Hysteria2).Tag(0x0?)
	<autogenerated>:1 +0x9
github.com/sagernet/sing-box/provider.(*Filtered).update(0xc0000517a0)
	github.com/sagernet/sing-box/provider/filtered.go:116 +0x1bf
github.com/sagernet/sing-box/provider.(*Filtered).Outbound(0xc0000517a0, {0x0, 0x0})
	github.com/sagernet/sing-box/provider/filtered.go:62 +0x8a
github.com/sagernet/sing-box/outbound.(*myOutboundGroupAdapter).Outbound(0x126ba00?, {0x0, 0x0})
	github.com/sagernet/sing-box/outbound/default.go:291 +0x6f
github.com/sagernet/sing-box/adapter.RealOutbound({0x14c0df0?, 0xc0001d7440?})
	github.com/sagernet/sing-box/adapter/experimental.go:94 +0xce
github.com/sagernet/sing-box/common/healthcheck.(*HealthCheck).checkOutboundBatch(0xc0000d8000, {0x14b8950?, 0xc0000c20a0}, 0xc00021a030, 0x18?, {0x14c0df0?, 0xc0001d7440?})
	github.com/sagernet/sing-box/common/healthcheck/healthcheck.go:222 +0x4e
github.com/sagernet/sing-box/common/healthcheck.(*HealthCheck).checkProviderBatch(0x0?, {0x14b8950, 0xc0000c20a0}, 0xc00006ef88?, 0x1?, {0x14c0818?, 0xc0000d6000?})
	github.com/sagernet/sing-box/common/healthcheck/healthcheck.go:212 +0xa5
github.com/sagernet/sing-box/common/healthcheck.(*HealthCheck).CheckAll(0xc0000d8000, {0x14b8950, 0xc0000c20a0})
	github.com/sagernet/sing-box/common/healthcheck/healthcheck.go:165 +0x14a
created by github.com/sagernet/sing-box/common/healthcheck.(*HealthCheck).checkLoop in goroutine 34
	github.com/sagernet/sing-box/common/healthcheck/healthcheck.go:145 +0xb9
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x48 pc=0xe410c9]

goroutine 105 [running]:
github.com/sagernet/sing-box/outbound.(*Hysteria2).Tag(0x0?)
	<autogenerated>:1 +0x9
github.com/sagernet/sing-box/provider.(*Filtered).update(0xc0000c8000)
	github.com/sagernet/sing-box/provider/filtered.go:116 +0x1bf
github.com/sagernet/sing-box/provider.(*Filtered).Outbounds(0xc0000c8000)
	github.com/sagernet/sing-box/provider/filtered.go:54 +0x85
github.com/sagernet/sing-box/outbound.(*myOutboundGroupAdapter).Outbounds(...)
	github.com/sagernet/sing-box/outbound/default.go:301
github.com/sagernet/sing-box/outbound.(*Selector).ensureSelected(0xc0001d77a0)
	github.com/sagernet/sing-box/outbound/selector.go:154 +0xf7
github.com/sagernet/sing-box/outbound.(*Selector).DialContext(0xc0001d77a0, {0x14b8918, 0xc0002861b0}, {0x12d166e, 0x3}, {{{0x0, 0xffff01010101}, 0xc000012030}, 0x1bb, {0x0, ...}})
	github.com/sagernet/sing-box/outbound/selector.go:113 +0x3f
github.com/sagernet/sing-box/outbound.(*Selector).DialContext(0xc0001d7320, {0x14b8918, 0xc0002861b0}, {0x12d166e, 0x3}, {{{0x0, 0xffff01010101}, 0xc000012030}, 0x1bb, {0x0, ...}})
	github.com/sagernet/sing-box/outbound/selector.go:116 +0xa9
github.com/sagernet/sing-box/common/dialer.(*DetourDialer).DialContext(0xc0003049b8?, {0x14b8918, 0xc0002861b0}, {0x12d166e, 0x3}, {{{0x0, 0xffff01010101}, 0xc000012030}, 0x1bb, {0x0, ...}})
	github.com/sagernet/sing-box/common/dialer/detour.go:47 +0x8f
github.com/sagernet/sing-dns.CreateHTTPSTransport.NewHTTPSTransport.func1({0x14b8918, 0xc0002861b0}, {0x12d166e, 0x3}, {0xc000f081c0?, 0x4a31d0?})
	github.com/sagernet/sing-dns@v0.1.10/transport_https.go:45 +0xd9
net/http.(*Transport).dial(0x31?, {0x14b8918?, 0xc0002861b0?}, {0x12d166e?, 0xc000e86000?}, {0xc000f081c0?, 0xc000190200?})
	net/http/transport.go:1183 +0xd2
net/http.(*Transport).dialConn(0xc0002b1040, {0x14b8918, 0xc0002861b0}, {{}, 0x0, {0xc00004aa20, 0x5}, {0xc000f081c0, 0xb}, 0x0})
	net/http/transport.go:1625 +0x7e8
net/http.(*Transport).dialConnFor(0xc0003dd7d0?, 0xc0004fa4d0)
	net/http/transport.go:1467 +0x9f
created by net/http.(*Transport).queueForDial in goroutine 104
	net/http/transport.go:1436 +0x3cb

谢谢,不过崩溃了

@xaotag
Copy link
Author

xaotag commented Nov 19, 2023

好像和hy2的协议有关系

@qjebbs
Copy link
Owner

qjebbs commented Nov 19, 2023

还是要私一个链接才能测试。

不过,根据提供,应该就是它的obfsParam没提供,或没按标准规定的提供

@xaotag
Copy link
Author

xaotag commented Nov 19, 2023

发你邮箱了

@qjebbs
Copy link
Owner

qjebbs commented Nov 19, 2023

使用最新代码:

  • hy1的链接能用了,因为我做了非规范的兼容allowInsecure。另,url中的mport不在规范内,直接忽略。
  • hy2的不能用,因为singbox的目前实现强制要求"obfs password"的,等上游更新也许哪天就能用了,不在本fork的范围之内。

@xaotag
Copy link
Author

xaotag commented Nov 19, 2023

STATUS=↑:0.5GB,↓:12.2GB,TOT:160GBExpires:2023-12-05
hysteria2://8255f2f7-0254-4ster.prometheusnet01.xyz:4433?insecure=1&sni=&tfo=1&udp=0&mport=21000-40000#%E8%87%AA%E5%8A%A8%E6%9C%80%E4%BC%98%E7%BA%BF%E8%B7

有个问题第一行的信息是否可以通过clash的api在yacd面板中读到

@qjebbs
Copy link
Owner

qjebbs commented Nov 20, 2023

STATUS=↑:0.5GB,↓:12.2GB,TOT:160GBExpires:2023-12-05
hysteria2://8255f2f7-0254-4ster.prometheusnet01.xyz:4433?insecure=1&sni=&tfo=1&udp=0&mport=21000-40000#%E8%87%AA%E5%8A%A8%E6%9C%80%E4%BC%98%E7%BA%BF%E8%B7

有个问题第一行的信息是否可以通过clash的api在yacd面板中读到

已支持 Yacd-meta

@xaotag
Copy link
Author

xaotag commented Nov 20, 2023

ERROR[0001] provider[dog]: fetch provider: unexpected status code: 500 --->报错点
INFO[0001] provider[dog]: load cache file: dog.json
ERROR[0001] provider[dog]: open dog.json: no such file or directory
INFO[0001] router: loaded geoip database: 250 codes
INFO[0001] router: loaded geosite database: 1419 codes
INFO[0001] clash-api: restful api listening at 127.0.0.1:9090
INFO[0001] inbound/tun[tun]: started at tun0
INFO[0001] sing-box started (1.777s)
INFO[0001] [2725745839 0ms] inbound/tun[tun]: inbound packet connection from 172.19.0.1:53013
INFO[0001] [2725745839 0ms] inbound/tun[tun]: inbound packet connection to 192.168.10.1:53
INFO[0001] [3927542647 0ms] inbound/tun[tun]: inbound packet connection from 172.19.0.1:55712
INFO[0001] [3927542647 0ms] inbound/tun[tun]: inbound packet connection to 192.168.10.1:53
ERROR[0001] dns: exchange failed for www.googleapis.com. IN AAAA: Post "https://1.1.1.1/dns-query": no outbound available, providers are not loaded yet
ERROR[0001] dns: exchange failed for www.googleapis.com. IN A: Post "https://1.1.1.1/dns-query": no outbound available, providers are not loaded yet

日志报错 网络状态500,但是curl 命令可以正常拉取,

@qjebbs
Copy link
Owner

qjebbs commented Nov 20, 2023

500是订阅服务器报的,大概是加上ua头,它处理不了就崩掉了。我用的这家表现很正常。

@xaotag
Copy link
Author

xaotag commented Nov 20, 2023

大佬,代码没看明白。本项目provider请求订阅,ua会带上那些信息

@moranno
Copy link

moranno commented Nov 20, 2023

使用最新代码:

* hy1的链接能用了,因为我做了非[规范](https://v1.hysteria.network/zh/docs/uri-scheme/)的兼容`allowInsecure`。另,url中的`mport`不在规范内,直接忽略。

* hy2的不能用,因为singbox的目前实现强制要求"obfs password"的,等上游更新也许哪天就能用了,不在本fork的范围之内。

我看了下mport这个用法在shadowrocket和nekobox中都存在,ports在clashmeta配置文件中存在,是hy原版支持的客户端端口跳跃功能。

参考:
https://github.com/MatsuriDayo/NekoBoxForAndroid/releases/tag/1.2.8

另外不知为啥说singbox的目前实现强制要求"obfs password"的?如果配置中没有下发obfs,应该不会要求需要obfs password吧,参考官方配置案例:

https://sing-box.sagernet.org/zh/manual/proxy-protocol/hysteria2/#client-example

@qjebbs
Copy link
Owner

qjebbs commented Nov 21, 2023

大佬,代码没看明白。本项目provider请求订阅,ua会带上那些信息

ua 已针对你的服务商优化(委屈求全..

我看了下mport这个用法在shadowrokcet和nekobox中都存在,ports在clashmeta配置文件中存在,是hy原版支持的客户端端口跳跃功能。

参考: https://github.com/MatsuriDayo/NekoBoxForAndroid/releases/tag/1.2.8

另外不知为啥说singbox的目前实现强制要求"obfs password"的?如果配置中没有下发obfs,应该不会要求需要obfs password吧,参考官方配置案例:

https://sing-box.sagernet.org/zh/manual/proxy-protocol/hysteria2/#client-example

我只管订阅部分,上游 singbox 对hysteria, hysteria2如何支持,到何种程度,我不管

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants