修复bug,增加lite版本

This commit is contained in:
Mob2003
2023-04-02 21:43:50 +08:00
parent e48ed59a73
commit ec51f136eb
29 changed files with 428 additions and 141 deletions
+28 -43
View File
@@ -4,7 +4,8 @@ import (
"encoding/base64"
"errors"
"fmt"
"github.com/dlclark/regexp2"
"regexp"
"net"
"strconv"
)
@@ -25,68 +26,52 @@ func ParseAddr(str string) (cfg *Addr, err error) {
}
}()
r, _ := regexp2.Compile(`^(http://|socks5://)?(\S+):(\S+)@(\S+):(\d+)`, 0)
m, err := r.FindStringMatch(str)
if err != nil {
return nil, errors.New("配置解析错误," + err.Error())
}
r, _ := regexp.Compile(`^(http://|socks5://)?(\S+):(\S+)@(\S+):(\d+)`)
m := r.FindAllStringSubmatch(str, 1)
if m != nil {
var res_v []string
for _, v := range m.Groups() {
res_v = append(res_v, v.String())
}
addr, err := net.ResolveTCPAddr("tcp", res_v[4]+":"+res_v[5])
addr, err := net.ResolveTCPAddr("tcp", m[0][4]+":"+m[0][5])
if err != nil {
return nil, errors.New("配置解析错误 " + res_v[4] + ":" + res_v[5] + " 不是有效的 地址:端口")
return nil, errors.New("配置解析错误 " + m[0][4] + ":" + m[0][5] + " 不是有效的 地址:端口")
}
return &Addr{
scheam: res_v[1],
user: res_v[2],
passwd: res_v[3],
ip: res_v[4],
scheam: m[0][1],
user: m[0][2],
passwd: m[0][3],
ip: m[0][4],
port: addr.Port,
}, nil
}
r, _ = regexp2.Compile(`^(http://|socks5://)?(\S+):(\S+)@(\d+)`, 0)
m, err = r.FindStringMatch(str)
if err != nil {
return nil, errors.New("配置解析错误," + err.Error())
}
if m != nil {
var res_v []string
for _, v := range m.Groups() {
res_v = append(res_v, v.String())
}
port, _ := strconv.Atoi(res_v[4])
r, _ = regexp.Compile(`^(http://|socks5://)?(\S+):(\S+)@(\d+)`)
m = r.FindAllStringSubmatch(str, 1)
if m != nil {
port, _ := strconv.Atoi(m[0][4])
return &Addr{
scheam: res_v[1],
user: res_v[2],
passwd: res_v[3],
scheam: m[0][1],
user: m[0][2],
passwd: m[0][3],
ip: "",
port: port,
}, nil
}
r, _ = regexp2.Compile(`^(http://|socks5://)?(\S+):(\S+)$`, 0)
m, err = r.FindStringMatch(str)
if err != nil {
return nil, errors.New("配置解析错误," + err.Error())
}
r, _ = regexp.Compile(`^(http://|socks5://)?(\S+):(\S+)$`)
m = r.FindAllStringSubmatch(str, 1)
if m != nil {
var res_v []string
for _, v := range m.Groups() {
res_v = append(res_v, v.String())
}
addr, err := net.ResolveTCPAddr("tcp", res_v[2]+":"+res_v[3])
addr, err := net.ResolveTCPAddr("tcp", m[0][2]+":"+m[0][3])
if err != nil {
return nil, errors.New("配置解析错误 " + res_v[1] + ":" + res_v[2] + " 不是有效的 地址:端口")
return nil, errors.New("配置解析错误 " + m[0][1] + ":" + m[0][2] + " 不是有效的 地址:端口")
}
return &Addr{
scheam: res_v[1],
scheam: m[0][1],
user: "",
passwd: "",
ip: res_v[2],
ip: m[0][2],
port: addr.Port,
}, nil
}
+12 -11
View File
@@ -4,15 +4,16 @@ import (
"bytes"
"errors"
"fmt"
"github.com/dlclark/regexp2"
"github.com/google/uuid"
"math/rand"
"net"
"rakshasa/aes"
"regexp"
"strings"
"sync"
"sync/atomic"
"time"
"github.com/google/uuid"
)
var Debug bool = false
@@ -28,10 +29,10 @@ var EnableTermVt bool
// 数据包结构 包长(2byteUUID+UUID+MsgId+Ttl+cmd包
type Msg struct {
From string
To string
MsgId uint32
Ttl uint8
From string
To string
MsgId uint32
Ttl uint8
CmdOpteion uint8
CmdId uint32
CmdData []byte
@@ -311,13 +312,13 @@ func ResolveTCPAddr(str string) ([]string, error) {
dst = append(dst[:i], dst[i+1:]...)
} else {
if _, err := net.ResolveTCPAddr("tcp", addr); err != nil {
if i>0{
r, _ := regexp2.Compile(`^[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}`, 0)
match,_ :=r.MatchString(addr)
if !match{
if i > 0 {
r, _ := regexp.Compile(`^[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}`)
match := r.MatchString(addr)
if !match {
return nil, fmt.Errorf("参数错误 格式为\"ip:端口\",多个地址以逗号隔开,错误详情%v", err)
}
}else{
} else {
return nil, fmt.Errorf("参数错误 格式为\"ip:端口,第二个地址可以是UUID\",多个地址以逗号隔开,错误详情%v", err)
}