12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- package log
- import (
- "context"
- "strings"
- "github.com/xtls/xray-core/common/serial"
- )
- type logKey int
- const (
- accessMessageKey logKey = iota
- )
- type AccessStatus string
- const (
- AccessAccepted = AccessStatus("accepted")
- AccessRejected = AccessStatus("rejected")
- )
- type AccessMessage struct {
- From interface{}
- To interface{}
- Status AccessStatus
- Reason interface{}
- Email string
- Detour string
- }
- func (m *AccessMessage) String() string {
- builder := strings.Builder{}
- builder.WriteString("from")
- builder.WriteByte(' ')
- builder.WriteString(serial.ToString(m.From))
- builder.WriteByte(' ')
- builder.WriteString(string(m.Status))
- builder.WriteByte(' ')
- builder.WriteString(serial.ToString(m.To))
- if len(m.Detour) > 0 {
- builder.WriteString(" [")
- builder.WriteString(m.Detour)
- builder.WriteByte(']')
- }
- if reason := serial.ToString(m.Reason); len(reason) > 0 {
- builder.WriteString(" ")
- builder.WriteString(reason)
- }
- if len(m.Email) > 0 {
- builder.WriteString(" email: ")
- builder.WriteString(m.Email)
- }
- return builder.String()
- }
- func ContextWithAccessMessage(ctx context.Context, accessMessage *AccessMessage) context.Context {
- return context.WithValue(ctx, accessMessageKey, accessMessage)
- }
- func AccessMessageFromContext(ctx context.Context) *AccessMessage {
- if accessMessage, ok := ctx.Value(accessMessageKey).(*AccessMessage); ok {
- return accessMessage
- }
- return nil
- }
|