Chore: merge branch 'with-tun' into plus-pro

This commit is contained in:
yaling888
2022-04-20 02:40:44 +08:00
73 changed files with 640 additions and 610 deletions

View File

@@ -1,5 +1,4 @@
//go:build build_local
// +build build_local
package script

View File

@@ -1,5 +1,4 @@
//go:build !build_local && cgo
// +build !build_local,cgo
package script

View File

@@ -195,10 +195,10 @@ func CallPyMainFunction(mtd *constant.Metadata) (string, error) {
dstIpGo := ""
srcIpGo := ""
if mtd.SrcIP != nil {
if mtd.SrcIP.IsValid() {
srcIpGo = mtd.SrcIP.String()
}
if mtd.DstIP != nil {
if mtd.DstIP.IsValid() {
dstIpGo = mtd.DstIP.String()
}
srcIp := C.CString(srcIpGo)
@@ -250,10 +250,10 @@ func CallPyShortcut(fn *PyObject, mtd *constant.Metadata) (bool, error) {
dstIpGo := ""
srcIpGo := ""
if mtd.SrcIP != nil {
if mtd.SrcIP.IsValid() {
srcIpGo = mtd.SrcIP.String()
}
if mtd.DstIP != nil {
if mtd.DstIP.IsValid() {
dstIpGo = mtd.DstIP.String()
}
srcIp := C.CString(srcIpGo)

View File

@@ -5,7 +5,7 @@ package script
*/
import "C"
import (
"net"
"net/netip"
"strconv"
"strings"
"unsafe"
@@ -50,9 +50,9 @@ func resolveIPCallbackFn(cHost *C.char) *C.char {
//export geoipCallbackFn
func geoipCallbackFn(cIP *C.char) *C.char {
dstIP := net.ParseIP(C.GoString(cIP))
dstIP, err := netip.ParseAddr(C.GoString(cIP))
if dstIP == nil {
if err != nil {
emptyC := C.CString("")
defer C.free(unsafe.Pointer(emptyC))
@@ -72,7 +72,7 @@ func geoipCallbackFn(cIP *C.char) *C.char {
return lanC
}
record, _ := mmdb.Instance().Country(dstIP)
record, _ := mmdb.Instance().Country(dstIP.AsSlice())
rc := C.CString(strings.ToUpper(record.Country.IsoCode))
defer C.free(unsafe.Pointer(rc))
@@ -91,20 +91,22 @@ func ruleProviderCallbackFn(cProviderName *C.char, cMetadata *C.struct_Metadata)
dstIp := C.GoString(cMetadata.dst_ip)
dstPort := strconv.Itoa(int(cMetadata.dst_port))
dst := net.ParseIP(dstIp)
addrType := constant.AtypDomainName
dst, err := netip.ParseAddr(dstIp)
if dst != nil {
if dst.To4() != nil {
addrType := constant.AtypDomainName
if err == nil {
if dst.Is4() {
addrType = constant.AtypIPv4
} else {
addrType = constant.AtypIPv6
}
}
src, _ := netip.ParseAddr(srcIp)
metadata := &constant.Metadata{
Process: processName,
SrcIP: net.ParseIP(srcIp),
SrcIP: src,
DstIP: dst,
SrcPort: srcPort,
DstPort: dstPort,