Feature: add tunnels

This commit is contained in:
Dreamacro
2022-11-18 22:57:33 +08:00
parent de264c42a8
commit 5b07d7b776
10 changed files with 416 additions and 35 deletions

View File

@ -147,6 +147,15 @@ func preHandleMetadata(metadata *C.Metadata) error {
}
func resolveMetadata(ctx C.PlainContext, metadata *C.Metadata) (proxy C.Proxy, rule C.Rule, err error) {
if metadata.SpecialProxy != "" {
var exist bool
proxy, exist = proxies[metadata.SpecialProxy]
if !exist {
err = fmt.Errorf("proxy %s not found", metadata.SpecialProxy)
return
}
}
switch mode {
case Direct:
proxy = proxies["DIRECT"]
@ -249,6 +258,8 @@ func handleUDPConn(packet *inbound.PacketAdapter) {
pc := statistic.NewUDPTracker(rawPc, statistic.DefaultManager, metadata, rule)
switch true {
case metadata.SpecialProxy != "":
log.Infoln("[UDP] %s --> %s using %s", metadata.SourceAddress(), metadata.RemoteAddress(), metadata.SpecialProxy)
case rule != nil:
log.Infoln(
"[UDP] %s --> %s match %s(%s) using %s",
@ -320,6 +331,8 @@ func handleTCPConn(connCtx C.ConnContext) {
defer remoteConn.Close()
switch true {
case metadata.SpecialProxy != "":
log.Infoln("[TCP] %s --> %s using %s", metadata.SourceAddress(), metadata.RemoteAddress(), metadata.SpecialProxy)
case rule != nil:
log.Infoln(
"[TCP] %s --> %s match %s(%s) using %s",