add email into access log for shadowsocks, vmess and mux

pull/1767/head
Gondnat 6 years ago
parent de43bc7eb9
commit dd048bfb29

@ -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()
}

@ -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)
}

@ -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))

@ -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,
})
}

Loading…
Cancel
Save