mirror of
				https://github.com/v2fly/v2ray-core.git
				synced 2025-11-04 03:39:24 +00:00 
			
		
		
		
	refactor code
This commit is contained in:
		
							parent
							
								
									cac97be224
								
							
						
					
					
						commit
						dd9ef0c65e
					
				@ -12,7 +12,6 @@ type JsonVUser struct {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type JsonVConfig struct {
 | 
			
		||||
	RunAs    string      `json:"runas"`
 | 
			
		||||
	Port     uint8       `json:"port"`
 | 
			
		||||
	Clients  []JsonVUser `json:"users"`
 | 
			
		||||
	Protocol string      `json:"protocol"`
 | 
			
		||||
@ -32,6 +31,5 @@ func (*JsonVConfigUnmarshaller) Unmarshall(data []byte) (*core.VConfig, error) {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	var vconfig = new(core.VConfig)
 | 
			
		||||
	vconfig.RunAs = core.VUser{}
 | 
			
		||||
	return vconfig, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										66
									
								
								io/socks/socks.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								io/socks/socks.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,66 @@
 | 
			
		||||
// Package socks contains protocol definition and io lib for SOCKS5 protocol
 | 
			
		||||
package socks
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
  "fmt"
 | 
			
		||||
  "io"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
  socksVersion = uint8(5)
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// Authentication request header of Socks5 protocol
 | 
			
		||||
type Socks5AuthenticationRequest struct {
 | 
			
		||||
  version byte
 | 
			
		||||
  authMethods [256]byte
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func ReadAuthentication(reader io.Reader) (auth Socks5AuthenticationRequest, err error) {
 | 
			
		||||
  buffer := make([]byte, 2)
 | 
			
		||||
  nBytes, err := reader.Read(buffer)
 | 
			
		||||
  if err != nil {
 | 
			
		||||
    return
 | 
			
		||||
  }
 | 
			
		||||
  if nBytes < 2 {
 | 
			
		||||
    err = fmt.Errorf("Expected 2 bytes read, but actaully %d bytes read", nBytes)
 | 
			
		||||
    return
 | 
			
		||||
  }
 | 
			
		||||
  
 | 
			
		||||
  auth.version = buffer[0]
 | 
			
		||||
  if auth.version != socksVersion {
 | 
			
		||||
    err = fmt.Errorf("Unknown SOCKS version %d", auth.version)
 | 
			
		||||
    return
 | 
			
		||||
  }
 | 
			
		||||
  
 | 
			
		||||
  nMethods := buffer[1]
 | 
			
		||||
  if nMethods <= 0 {
 | 
			
		||||
    err = fmt.Errorf("Zero length of authentication methods")
 | 
			
		||||
    return
 | 
			
		||||
  }
 | 
			
		||||
  
 | 
			
		||||
  buffer = make([]byte, nMethods)
 | 
			
		||||
  nBytes, err = reader.Read(buffer)
 | 
			
		||||
  copy(auth.authMethods[:nBytes], buffer)
 | 
			
		||||
  return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type Socks5AuthenticationResponse struct {
 | 
			
		||||
  version byte
 | 
			
		||||
  authMethod byte
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (r *Socks5AuthenticationResponse) ToBytes() []byte {
 | 
			
		||||
  buffer := make([]byte, 2 /* size of Socks5AuthenticationResponse */)
 | 
			
		||||
  buffer[0] = r.version
 | 
			
		||||
  buffer[1] = r.authMethod
 | 
			
		||||
  return buffer
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func WriteAuthentication(writer io.Writer, response Socks5AuthenticationResponse) error {
 | 
			
		||||
  _, err := writer.Write(response.ToBytes())
 | 
			
		||||
  if err != nil {
 | 
			
		||||
    return err
 | 
			
		||||
  }
 | 
			
		||||
  return nil
 | 
			
		||||
}
 | 
			
		||||
@ -1,4 +1,5 @@
 | 
			
		||||
package io
 | 
			
		||||
// Package vmess contains protocol definition, io lib for VMess.
 | 
			
		||||
package vmess
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"net"
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user