Browse Source

log access in socks and http

v2ray 9 years ago
parent
commit
5eae540e5c
3 changed files with 11 additions and 4 deletions
  1. 1 0
      proxy/http/server.go
  2. 9 4
      proxy/socks/server.go
  3. 1 0
      proxy/socks/server_udp.go

+ 1 - 0
proxy/http/server.go

@@ -123,6 +123,7 @@ func (this *Server) handleConnection(conn *hub.Connection) {
 		log.Warning("HTTP: Malformed proxy host (", host, "): ", err)
 		return
 	}
+	log.Access(conn.RemoteAddr(), request.URL, log.AccessAccepted, "")
 	if strings.ToUpper(request.Method) == "CONNECT" {
 		this.handleConnect(request, dest, reader, conn)
 	} else {

+ 9 - 4
proxy/socks/server.go

@@ -110,14 +110,15 @@ func (this *Server) handleConnection(connection *hub.Connection) {
 		return
 	}
 
+	cliendAddr := connection.RemoteAddr().String()
 	if err != nil && err == protocol.Socks4Downgrade {
-		this.handleSocks4(reader, writer, auth4)
+		this.handleSocks4(clientAddr, reader, writer, auth4)
 	} else {
-		this.handleSocks5(reader, writer, auth)
+		this.handleSocks5(clientAddr, reader, writer, auth)
 	}
 }
 
-func (this *Server) handleSocks5(reader *v2io.BufferedReader, writer *v2io.BufferedWriter, auth protocol.Socks5AuthenticationRequest) error {
+func (this *Server) handleSocks5(clientAddr string, reader *v2io.BufferedReader, writer *v2io.BufferedWriter, auth protocol.Socks5AuthenticationRequest) error {
 	expectedAuthMethod := protocol.AuthNotRequired
 	if this.config.AuthType == AuthTypePassword {
 		expectedAuthMethod = protocol.AuthUserPass
@@ -161,6 +162,7 @@ func (this *Server) handleSocks5(reader *v2io.BufferedReader, writer *v2io.Buffe
 		}
 		if status != byte(0) {
 			log.Warning("Socks: Invalid user account: ", upRequest.AuthDetail())
+			log.Access(clientAddr, "", log.AccessRejected, proxy.ErrorInvalidAuthentication)
 			return proxy.ErrorInvalidAuthentication
 		}
 	}
@@ -209,6 +211,7 @@ func (this *Server) handleSocks5(reader *v2io.BufferedReader, writer *v2io.Buffe
 
 	dest := request.Destination()
 	log.Info("Socks: TCP Connect request to ", dest)
+	log.Access(clientAddr, dest, log.AccessAccepted, "")
 
 	this.transport(reader, writer, dest)
 	return nil
@@ -246,7 +249,7 @@ func (this *Server) handleUDP(reader io.Reader, writer *v2io.BufferedWriter) err
 	return nil
 }
 
-func (this *Server) handleSocks4(reader *v2io.BufferedReader, writer *v2io.BufferedWriter, auth protocol.Socks4AuthenticationRequest) error {
+func (this *Server) handleSocks4(clientAddr string, reader *v2io.BufferedReader, writer *v2io.BufferedWriter, auth protocol.Socks4AuthenticationRequest) error {
 	result := protocol.Socks4RequestGranted
 	if auth.Command == protocol.CmdBind {
 		result = protocol.Socks4RequestRejected
@@ -257,6 +260,7 @@ func (this *Server) handleSocks4(reader *v2io.BufferedReader, writer *v2io.Buffe
 
 	if result == protocol.Socks4RequestRejected {
 		log.Warning("Socks: Unsupported socks 4 command ", auth.Command)
+		log.Access(clientAddr, "", log.AccessRejected, ErrorUnsupportedSocksCommand)
 		return ErrorUnsupportedSocksCommand
 	}
 
@@ -264,6 +268,7 @@ func (this *Server) handleSocks4(reader *v2io.BufferedReader, writer *v2io.Buffe
 	writer.SetCached(false)
 
 	dest := v2net.TCPDestination(v2net.IPAddress(auth.IP[:]), auth.Port)
+	log.Access(clientAddr, dest, log.AccessAccepted, "")
 	this.transport(reader, writer, dest)
 	return nil
 }

+ 1 - 0
proxy/socks/server_udp.go

@@ -43,6 +43,7 @@ func (this *Server) handleUDPPayload(payload *alloc.Buffer, source v2net.Destina
 	}
 
 	log.Info("Socks: Send packet to ", request.Destination(), " with ", request.Data.Len(), " bytes")
+	log.Access(source, request.Destination, log.AccessAccepted, "")
 	this.udpServer.Dispatch(source, request.Destination(), request.Data, func(destination v2net.Destination, payload *alloc.Buffer) {
 		response := &protocol.Socks5UDPRequest{
 			Fragment: 0,