mirror of
https://github.com/v2fly/v2ray-core.git
synced 2026-01-02 15:25:28 -05:00
Dokodemo proxy
This commit is contained in:
32
common/net/json/network.go
Normal file
32
common/net/json/network.go
Normal file
@@ -0,0 +1,32 @@
|
||||
package json
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"strings"
|
||||
|
||||
v2net "github.com/v2ray/v2ray-core/common/net"
|
||||
)
|
||||
|
||||
type NetworkList []string
|
||||
|
||||
func (this *NetworkList) UnmarshalJSON(data []byte) error {
|
||||
var strList []string
|
||||
err := json.Unmarshal(data, &strList)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
*this = make([]string, len(strList))
|
||||
for idx, str := range strList {
|
||||
(*this)[idx] = strings.ToLower(str)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (this *NetworkList) HasNetwork(network v2net.Network) bool {
|
||||
for _, value := range *this {
|
||||
if value == string(network) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
12
common/net/network.go
Normal file
12
common/net/network.go
Normal file
@@ -0,0 +1,12 @@
|
||||
package net
|
||||
|
||||
const (
|
||||
TCPNetwork = Network("tcp")
|
||||
UDPNetwork = Network("udp")
|
||||
)
|
||||
|
||||
type Network string
|
||||
|
||||
type NetworkList interface {
|
||||
HasNetwork(Network) bool
|
||||
}
|
||||
@@ -22,10 +22,14 @@ func NewTimeOutReader(timeout int, connection net.Conn) *TimeOutReader {
|
||||
}
|
||||
|
||||
func (reader *TimeOutReader) Read(p []byte) (n int, err error) {
|
||||
deadline := time.Duration(reader.timeout) * time.Second
|
||||
reader.connection.SetReadDeadline(time.Now().Add(deadline))
|
||||
if reader.timeout > 0 {
|
||||
deadline := time.Duration(reader.timeout) * time.Second
|
||||
reader.connection.SetReadDeadline(time.Now().Add(deadline))
|
||||
}
|
||||
n, err = reader.connection.Read(p)
|
||||
reader.connection.SetReadDeadline(emptyTime)
|
||||
if reader.timeout > 0 {
|
||||
reader.connection.SetReadDeadline(emptyTime)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user