Skip to content

Commit

Permalink
nop
Browse files Browse the repository at this point in the history
  • Loading branch information
davidquan111 committed Jul 5, 2020
1 parent b4f5c8c commit a60d77e
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 32 deletions.
11 changes: 6 additions & 5 deletions dns.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,11 @@ func dns_tcpOverUdp(cConn *net.TCPConn, host string, buffer []byte) {
log.Println("Start dns_tcpOverUdp")
defer cConn.Close()

var err error
var WLen, RLen, payloadLen, CuteBi_XorCrypt_passwordSub int
var payloadLen, CuteBi_XorCrypt_passwordSub int
var pkgLen uint16
for {
//cConn.SetReadDeadline(time.Now().Add(tcp_timeout))
RLen, err = cConn.Read(buffer[payloadLen:])
RLen, err := cConn.Read(buffer[payloadLen:])
if RLen <= 0 || err != nil {
return
}
Expand Down Expand Up @@ -48,11 +47,13 @@ func dns_tcpOverUdp(cConn *net.TCPConn, host string, buffer []byte) {
return
}
defer sConn.Close()
if WLen, err = sConn.Write(buffer[2:payloadLen]); WLen <= 0 || err != nil {
if WLen, err := sConn.Write(buffer[2:payloadLen]); WLen <= 0 || err != nil {
return
}
sConn.SetReadDeadline(time.Now().Add(udp_timeout))
if RLen, err = sConn.Read(buffer[2:]); RLen <= 0 || err != nil {

RLen, err := sConn.Read(buffer[2:])
if RLen <= 0 || err != nil {
return
}
//包长度转换
Expand Down
2 changes: 1 addition & 1 deletion tcp.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ func tcpForward(fromConn, toConn *net.TCPConn, payload []byte) {
}

func getProxyHost(header []byte) string {
hostSub := bytes.Index(header, proxyKey)
var hostSub int = bytes.Index(header, proxyKey)
if hostSub < 0 {
return ""
}
Expand Down
51 changes: 25 additions & 26 deletions udp.go
Original file line number Diff line number Diff line change
Expand Up @@ -57,15 +57,15 @@ func (udpSess *UdpSession) udpServerToClient() {

func (udpSess *UdpSession) writeToServer(httpUDP_data []byte) int {
var (
udpAddr net.UDPAddr
err error
WLen int
pkgSub, httpUDP_protocol_head_len int
pkgLen uint16
udpAddr net.UDPAddr
pkgSub int
httpUDP_protocol_head_len int
pkgLen uint16
)
for pkgSub = 0; pkgSub+2 < len(httpUDP_data); pkgSub += 2 + int(pkgLen) {
pkgLen = uint16(httpUDP_data[pkgSub]) | (uint16(httpUDP_data[pkgSub+1]) << 8) //2字节储存包的长度,包括socks5头
//log.Println("pkgSub: ", pkgSub, ", pkgLen: ", pkgLen, " ", uint16(len(httpUDP_data)))
// 2字节储存包的长度,包括socks5头
pkgLen = uint16(httpUDP_data[pkgSub]) | (uint16(httpUDP_data[pkgSub+1]) << 8)
// log.Println("pkgSub: ", pkgSub, ", pkgLen: ", pkgLen, " ", uint16(len(httpUDP_data)))
if pkgSub+2+int(pkgLen) > len(httpUDP_data) || pkgLen <= 10 {
return 0
}
Expand All @@ -87,45 +87,44 @@ func (udpSess *UdpSession) writeToServer(httpUDP_data []byte) int {
httpUDP_protocol_head_len = 24
}
//log.Println("WriteToUdpAddr: ", udpAddr.String())
if WLen, err = udpSess.udpSConn.WriteToUDP(httpUDP_data[pkgSub+httpUDP_protocol_head_len:pkgSub+2+int(pkgLen)], &udpAddr); err != nil || WLen <= 0 {
if len, err := udpSess.udpSConn.WriteToUDP(httpUDP_data[pkgSub+httpUDP_protocol_head_len:pkgSub+2+int(pkgLen)], &udpAddr); err != nil || len <= 0 {
return -1
}
}
return int(pkgSub)
return pkgSub
}

func (udpSess *UdpSession) udpClientToServer(httpUDP_data []byte) {
var payload_len, RLen, WLen int
var err error
WLen = udpSess.writeToServer(httpUDP_data)
if WLen == -1 {
var wlen = udpSess.writeToServer(httpUDP_data)
if wlen < 0 {
udpSess.udpSConn.Close()
udpSess.cConn.Close()
return
}
payload := make([]byte, 65536)
if WLen < len(httpUDP_data) {
payload_len = copy(payload, httpUDP_data[WLen:])
payloadLen := 0
if wlen < len(httpUDP_data) {
payloadLen = copy(payload, httpUDP_data[wlen:])
}
for {
udpSess.cConn.SetReadDeadline(time.Now().Add(udp_timeout))
udpSess.udpSConn.SetReadDeadline(time.Now().Add(udp_timeout))
RLen, err = udpSess.cConn.Read(payload[payload_len:])
if err != nil || RLen <= 0 {
rlen, err := udpSess.cConn.Read(payload[payloadLen:])
if err != nil || rlen <= 0 {
break
}
if CuteBi_XorCrypt_password != nil {
udpSess.c2s_CuteBi_XorCrypt_passwordSub = CuteBi_XorCrypt(payload[payload_len:payload_len+RLen], udpSess.c2s_CuteBi_XorCrypt_passwordSub)
udpSess.c2s_CuteBi_XorCrypt_passwordSub = CuteBi_XorCrypt(payload[payloadLen:payloadLen+rlen], udpSess.c2s_CuteBi_XorCrypt_passwordSub)
}
payload_len += RLen
//log.Println("Read Client: ", payload_len)
WLen = udpSess.writeToServer(payload[:payload_len])
if WLen == -1 {
payloadLen += rlen
//log.Println("Read Client: ", payloadLen)
wlen = udpSess.writeToServer(payload[:payloadLen])
if wlen == -1 {
break
} else if WLen < payload_len {
payload_len = copy(payload, payload[WLen:payload_len])
} else if wlen < payloadLen {
payloadLen = copy(payload, payload[wlen:payloadLen])
} else {
payload_len = 0
payloadLen = 0
}
}
udpSess.udpSConn.Close()
Expand Down Expand Up @@ -155,7 +154,7 @@ func (udpSess *UdpSession) initUdp(httpUDP_data []byte) bool {
func handleUdpSession(cConn *net.TCPConn, httpUDP_data []byte) {
udpSess := new(UdpSession)
udpSess.cConn = cConn
if udpSess.initUdp(httpUDP_data) == false {
if !udpSess.initUdp(httpUDP_data) {
cConn.Close()
log.Println("Is not httpUDP protocol or Decrypt failed")
return
Expand Down

0 comments on commit a60d77e

Please sign in to comment.