Browse Source

Merge pull request #1767 from Gondnat/addEmailIntoAccessLog

Add email into access log for shadowsocks and vmess
Kslr 6 years ago
parent
commit
2451eedbc4
4 changed files with 13 additions and 1 deletions
  1. 7 0
      common/log/access.go
  2. 1 0
      common/mux/server.go
  3. 3 0
      proxy/shadowsocks/server.go
  4. 2 1
      proxy/vmess/inbound/inbound.go

+ 7 - 0
common/log/access.go

@@ -18,6 +18,7 @@ type AccessMessage struct {
 	To     interface{}
 	Status AccessStatus
 	Reason interface{}
+	Email  string
 }
 
 func (m *AccessMessage) String() string {
@@ -29,5 +30,11 @@ func (m *AccessMessage) String() string {
 	builder.WriteString(serial.ToString(m.To))
 	builder.WriteByte(' ')
 	builder.WriteString(serial.ToString(m.Reason))
+
+	if len(m.Email) > 0 {
+		builder.WriteString("email:")
+		builder.WriteString(m.Email)
+		builder.WriteByte(' ')
+	}
 	return builder.String()
 }

+ 1 - 0
common/mux/server.go

@@ -118,6 +118,7 @@ func (w *ServerWorker) handleStatusNew(ctx context.Context, meta *FrameMetadata,
 		}
 		if inbound := session.InboundFromContext(ctx); inbound != nil && inbound.Source.IsValid() {
 			msg.From = inbound.Source
+			msg.Email = inbound.User.Email
 		}
 		log.Record(msg)
 	}

+ 3 - 0
proxy/shadowsocks/server.go

@@ -139,6 +139,7 @@ func (s *Server) handlerUDPPayload(ctx context.Context, conn internet.Connection
 					To:     dest,
 					Status: log.AccessAccepted,
 					Reason: "",
+					Email:  request.User.Email,
 				})
 			}
 			newError("tunnelling request to ", dest).WriteToLog(session.ExportIDToError(ctx))
@@ -163,6 +164,7 @@ func (s *Server) handleConnection(ctx context.Context, conn internet.Connection,
 			To:     "",
 			Status: log.AccessRejected,
 			Reason: err,
+			Email:  request.User.Email,
 		})
 		return newError("failed to create request from: ", conn.RemoteAddr()).Base(err)
 	}
@@ -180,6 +182,7 @@ func (s *Server) handleConnection(ctx context.Context, conn internet.Connection,
 		To:     dest,
 		Status: log.AccessAccepted,
 		Reason: "",
+		Email:  request.User.Email,
 	})
 	newError("tunnelling request to ", dest).WriteToLog(session.ExportIDToError(ctx))
 

+ 2 - 1
proxy/vmess/inbound/inbound.go

@@ -225,7 +225,6 @@ func (h *Handler) Process(ctx context.Context, network net.Network, connection i
 	reader := &buf.BufferedReader{Reader: buf.NewReader(connection)}
 	svrSession := encoding.NewServerSession(h.clients, h.sessionHistory)
 	request, err := svrSession.DecodeRequestHeader(reader)
-
 	if err != nil {
 		if errors.Cause(err) != io.EOF {
 			log.Record(&log.AccessMessage{
@@ -245,6 +244,7 @@ func (h *Handler) Process(ctx context.Context, network net.Network, connection i
 			To:     "",
 			Status: log.AccessRejected,
 			Reason: "Insecure encryption",
+			Email:  request.User.Email,
 		})
 		return newError("client is using insecure encryption: ", request.Security)
 	}
@@ -255,6 +255,7 @@ func (h *Handler) Process(ctx context.Context, network net.Network, connection i
 			To:     request.Destination(),
 			Status: log.AccessAccepted,
 			Reason: "",
+			Email:  request.User.Email,
 		})
 	}