mirror of
https://github.com/e1732a364fed/v2ray_simple.git
synced 2025-10-10 11:10:20 +08:00

创建新子包netLayer, 将 proxy.Addr改为 netLayer.Addr 修订文档 RoutePolicy等分流机制也放到 netLayer 引入github.com/oschwald/maxminddb-golang 依赖,支持使用 GeoLite2-Country.mmdb 来进行ip分流 另外注意它默认的版本对于 golang.org/x/sys 包的依赖太老了,会导致go1.18中编译不通过,我在 go.mod 文件中新增了下面代码,就能通过编译了 ``` require ( golang.org/x/sys v0.0.0-20220315194320-039c03cc5b86 // indirect ) ``` verysimple的可执行文件的相同目录下,必须有该mmdb文件才能够开启ip分流功能 新配置方式:配置文件新加一行 "route":{ "mycountry":"CN" } mycountry指定的国家的ip会被直连发送,其他地址ip会被发送到代理. 新配置方式,回落,直接在 local 项的 url 的 query部分添加 fallback=:80, 或者 fallback=127.0.0.1:80 即可 回落到指定端口. 将tls_test重新挪动到tlsLayer包中 在main.go中添加了 logLevel变量,并且把关于配置文件的部分挪动到 config.go 出了上面的分流和回落以外,还新增支持了 #xxx 的尾缀,用于配置该url的tag. tag在未来会被用于精准分流 Makefile中新增了 PACK 参数用于编译出 打包版的发行包;可选 tag=embed_geoip 参数用于将mmdb.tgz文件内置到可执行程序里 同时,我开始直接使用go1.18编译本项目,期待性能提升,因为这是新发布的版本,看了介绍据说对 mac m1有20%的提升.
83 lines
3.9 KiB
Go
83 lines
3.9 KiB
Go
/*
|
|
Package tlsLayer 提供tls流量的基本探测功能
|
|
*/
|
|
package tlsLayer
|
|
|
|
var etStrMap map[int]string
|
|
|
|
const (
|
|
et_server_name = 0
|
|
et_max_fragment_length = 1
|
|
et_status_request = 5
|
|
et_supported_groups = 10
|
|
et_signature_algorithms = 13
|
|
et_use_srtp = 14
|
|
et_heartbeat = 15
|
|
et_application_layer_protocol_negotiation = 16
|
|
et_signed_certificate_timestamp = 18
|
|
et_client_certificate_type = 19
|
|
et_server_certificate_type = 20
|
|
et_padding = 21
|
|
et_pre_shared_key = 41
|
|
et_early_data = 42
|
|
et_supported_versions = 43
|
|
et_cookie = 44
|
|
et_psk_key_exchange_modes = 45
|
|
et_certificate_authorities = 47
|
|
et_oid_filters = 48
|
|
et_post_handshake_auth = 49
|
|
et_signature_algorithms_cert = 50
|
|
et_key_share = 51
|
|
)
|
|
|
|
const (
|
|
etstr_server_name = "server_name "
|
|
etstr_max_fragment_length = "max_fragment_length"
|
|
etstr_status_request = "status_request"
|
|
etstr_supported_groups = "supported_groups"
|
|
etstr_signature_algorithms = "signature_algorithms"
|
|
etstr_use_srtp = "use_srtp"
|
|
etstr_heartbeat = "heartbeat"
|
|
etstr_application_layer_protocol_negotiation = "application_layer_protocol_negotiation"
|
|
etstr_signed_certificate_timestamp = "signed_certificate_timestamp"
|
|
etstr_client_certificate_type = "client_certificate_type"
|
|
etstr_server_certificate_type = "server_certificate_type"
|
|
etstr_padding = "padding"
|
|
etstr_pre_shared_key = "pre_shared_key"
|
|
etstr_early_data = "early_data"
|
|
etstr_supported_versions = "supported_versions"
|
|
etstr_cookie = "cookie"
|
|
etstr_psk_key_exchange_modes = "psk_key_exchange_modes"
|
|
etstr_certificate_authorities = "certificate_authorities"
|
|
etstr_oid_filters = "oid_filters"
|
|
etstr_post_handshake_auth = "post_handshake_auth"
|
|
etstr_signature_algorithms_cert = "signature_algorithms_cert"
|
|
etstr_key_share = "key_share"
|
|
)
|
|
|
|
func init() {
|
|
etStrMap = make(map[int]string)
|
|
etStrMap[et_server_name] = etstr_server_name
|
|
etStrMap[et_max_fragment_length] = etstr_max_fragment_length
|
|
etStrMap[et_status_request] = etstr_status_request
|
|
etStrMap[et_supported_groups] = etstr_supported_groups
|
|
etStrMap[et_signature_algorithms] = etstr_signature_algorithms
|
|
etStrMap[et_use_srtp] = etstr_use_srtp
|
|
etStrMap[et_heartbeat] = etstr_heartbeat
|
|
etStrMap[et_application_layer_protocol_negotiation] = etstr_application_layer_protocol_negotiation
|
|
etStrMap[et_signed_certificate_timestamp] = etstr_signed_certificate_timestamp
|
|
etStrMap[et_client_certificate_type] = etstr_client_certificate_type
|
|
etStrMap[et_server_certificate_type] = etstr_server_certificate_type
|
|
etStrMap[et_padding] = etstr_padding
|
|
etStrMap[et_pre_shared_key] = etstr_pre_shared_key
|
|
etStrMap[et_early_data] = etstr_early_data
|
|
etStrMap[et_supported_versions] = etstr_supported_versions
|
|
etStrMap[et_cookie] = etstr_cookie
|
|
etStrMap[et_psk_key_exchange_modes] = etstr_psk_key_exchange_modes
|
|
etStrMap[et_certificate_authorities] = etstr_certificate_authorities
|
|
etStrMap[et_oid_filters] = etstr_oid_filters
|
|
etStrMap[et_post_handshake_auth] = etstr_post_handshake_auth
|
|
etStrMap[et_signature_algorithms_cert] = etstr_signature_algorithms_cert
|
|
etStrMap[et_key_share] = etstr_key_share
|
|
}
|