all: imp code
This commit is contained in:
parent
ef715c58cb
commit
fbe728c9aa
|
@ -531,7 +531,7 @@ func closeDNSServer() {
|
||||||
if Context.stats != nil {
|
if Context.stats != nil {
|
||||||
err := Context.stats.Close()
|
err := Context.stats.Close()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Debug("closing stats: %s", err)
|
log.Error("closing stats: %s", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -539,7 +539,7 @@ func closeDNSServer() {
|
||||||
// TODO(s.chzhen): Pass context.
|
// TODO(s.chzhen): Pass context.
|
||||||
err := Context.queryLog.Shutdown(context.TODO())
|
err := Context.queryLog.Shutdown(context.TODO())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Debug("closing query log: %s", err)
|
log.Error("closing query log: %s", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -223,7 +223,12 @@ func (l *queryLog) decodeVTokenAndAddRule(
|
||||||
vToken, err := dec.Token()
|
vToken, err := dec.Token()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if err != io.EOF {
|
if err != io.EOF {
|
||||||
l.logger.DebugContext(ctx, "decodeResultRuleKey", "key", key, slogutil.KeyError, err)
|
l.logger.DebugContext(
|
||||||
|
ctx,
|
||||||
|
"decoding result rule key",
|
||||||
|
"key", key,
|
||||||
|
slogutil.KeyError, err,
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
return newRules, nil
|
return newRules, nil
|
||||||
|
@ -239,11 +244,13 @@ func (l *queryLog) decodeVTokenAndAddRule(
|
||||||
// decodeResultRules parses the dec's tokens into logEntry ent interpreting it
|
// decodeResultRules parses the dec's tokens into logEntry ent interpreting it
|
||||||
// as a slice of the result rules.
|
// as a slice of the result rules.
|
||||||
func (l *queryLog) decodeResultRules(ctx context.Context, dec *json.Decoder, ent *logEntry) {
|
func (l *queryLog) decodeResultRules(ctx context.Context, dec *json.Decoder, ent *logEntry) {
|
||||||
|
const msgPrefix = "decoding result rules"
|
||||||
|
|
||||||
for {
|
for {
|
||||||
delimToken, err := dec.Token()
|
delimToken, err := dec.Token()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if err != io.EOF {
|
if err != io.EOF {
|
||||||
l.logger.DebugContext(ctx, "decodeResultRules", slogutil.KeyError, err)
|
l.logger.DebugContext(ctx, msgPrefix+"; token", slogutil.KeyError, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return
|
return
|
||||||
|
@ -254,7 +261,7 @@ func (l *queryLog) decodeResultRules(ctx context.Context, dec *json.Decoder, ent
|
||||||
} else if d != '[' {
|
} else if d != '[' {
|
||||||
l.logger.DebugContext(
|
l.logger.DebugContext(
|
||||||
ctx,
|
ctx,
|
||||||
"decodeResultRules",
|
msgPrefix,
|
||||||
slogutil.KeyError, unexpectedDelimiterError(d),
|
slogutil.KeyError, unexpectedDelimiterError(d),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -262,7 +269,7 @@ func (l *queryLog) decodeResultRules(ctx context.Context, dec *json.Decoder, ent
|
||||||
err = l.decodeResultRuleToken(ctx, dec, ent)
|
err = l.decodeResultRuleToken(ctx, dec, ent)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if err != io.EOF && !errors.Is(err, ErrEndOfToken) {
|
if err != io.EOF && !errors.Is(err, ErrEndOfToken) {
|
||||||
l.logger.DebugContext(ctx, "decodeResultRules", slogutil.KeyError, err)
|
l.logger.DebugContext(ctx, msgPrefix+"; rule token", slogutil.KeyError, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return
|
return
|
||||||
|
@ -313,11 +320,13 @@ func (l *queryLog) decodeResultRuleToken(
|
||||||
// rewrites currently has the highest priority along the entire filtering
|
// rewrites currently has the highest priority along the entire filtering
|
||||||
// pipeline.
|
// pipeline.
|
||||||
func (l *queryLog) decodeResultReverseHosts(ctx context.Context, dec *json.Decoder, ent *logEntry) {
|
func (l *queryLog) decodeResultReverseHosts(ctx context.Context, dec *json.Decoder, ent *logEntry) {
|
||||||
|
const msgPrefix = "decoding result reverse hosts"
|
||||||
|
|
||||||
for {
|
for {
|
||||||
itemToken, err := dec.Token()
|
itemToken, err := dec.Token()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if err != io.EOF {
|
if err != io.EOF {
|
||||||
l.logger.DebugContext(ctx, "decodeResultReverseHosts", slogutil.KeyError, err)
|
l.logger.DebugContext(ctx, msgPrefix+"; token", slogutil.KeyError, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return
|
return
|
||||||
|
@ -333,7 +342,7 @@ func (l *queryLog) decodeResultReverseHosts(ctx context.Context, dec *json.Decod
|
||||||
|
|
||||||
l.logger.DebugContext(
|
l.logger.DebugContext(
|
||||||
ctx,
|
ctx,
|
||||||
"decodeResultReverseHosts",
|
msgPrefix,
|
||||||
slogutil.KeyError, unexpectedDelimiterError(v),
|
slogutil.KeyError, unexpectedDelimiterError(v),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -367,11 +376,13 @@ func (l *queryLog) decodeResultReverseHosts(ctx context.Context, dec *json.Decod
|
||||||
// decodeResultIPList parses the dec's tokens into logEntry ent interpreting it
|
// decodeResultIPList parses the dec's tokens into logEntry ent interpreting it
|
||||||
// as the result IP addresses list.
|
// as the result IP addresses list.
|
||||||
func (l *queryLog) decodeResultIPList(ctx context.Context, dec *json.Decoder, ent *logEntry) {
|
func (l *queryLog) decodeResultIPList(ctx context.Context, dec *json.Decoder, ent *logEntry) {
|
||||||
|
const msgPrefix = "decoding result ip list"
|
||||||
|
|
||||||
for {
|
for {
|
||||||
itemToken, err := dec.Token()
|
itemToken, err := dec.Token()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if err != io.EOF {
|
if err != io.EOF {
|
||||||
l.logger.DebugContext(ctx, "decodeResultIPList", slogutil.KeyError, err)
|
l.logger.DebugContext(ctx, msgPrefix+"; token", slogutil.KeyError, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return
|
return
|
||||||
|
@ -387,7 +398,7 @@ func (l *queryLog) decodeResultIPList(ctx context.Context, dec *json.Decoder, en
|
||||||
|
|
||||||
l.logger.DebugContext(
|
l.logger.DebugContext(
|
||||||
ctx,
|
ctx,
|
||||||
"decodeResultIPList",
|
msgPrefix,
|
||||||
slogutil.KeyError, unexpectedDelimiterError(v),
|
slogutil.KeyError, unexpectedDelimiterError(v),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -412,6 +423,8 @@ func (l *queryLog) decodeResultDNSRewriteResultKey(
|
||||||
dec *json.Decoder,
|
dec *json.Decoder,
|
||||||
ent *logEntry,
|
ent *logEntry,
|
||||||
) {
|
) {
|
||||||
|
const msgPrefix = "decoding result dns rewrite result key"
|
||||||
|
|
||||||
var err error
|
var err error
|
||||||
|
|
||||||
switch key {
|
switch key {
|
||||||
|
@ -420,11 +433,7 @@ func (l *queryLog) decodeResultDNSRewriteResultKey(
|
||||||
vToken, err = dec.Token()
|
vToken, err = dec.Token()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if err != io.EOF {
|
if err != io.EOF {
|
||||||
l.logger.DebugContext(
|
l.logger.DebugContext(ctx, msgPrefix+"; token", slogutil.KeyError, err)
|
||||||
ctx,
|
|
||||||
"decodeResultDNSRewriteResultKey",
|
|
||||||
slogutil.KeyError, err,
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return
|
return
|
||||||
|
@ -452,11 +461,7 @@ func (l *queryLog) decodeResultDNSRewriteResultKey(
|
||||||
// decoding and correct the values.
|
// decoding and correct the values.
|
||||||
err = dec.Decode(&ent.Result.DNSRewriteResult.Response)
|
err = dec.Decode(&ent.Result.DNSRewriteResult.Response)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
l.logger.DebugContext(
|
l.logger.DebugContext(ctx, msgPrefix+"; response", slogutil.KeyError, err)
|
||||||
ctx,
|
|
||||||
"decodeResultDNSRewriteResultKey response",
|
|
||||||
slogutil.KeyError, err,
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ent.parseDNSRewriteResultIPs()
|
ent.parseDNSRewriteResultIPs()
|
||||||
|
@ -472,11 +477,13 @@ func (l *queryLog) decodeResultDNSRewriteResult(
|
||||||
dec *json.Decoder,
|
dec *json.Decoder,
|
||||||
ent *logEntry,
|
ent *logEntry,
|
||||||
) {
|
) {
|
||||||
|
const msgPrefix = "decoding result dns rewrite result"
|
||||||
|
|
||||||
for {
|
for {
|
||||||
key, err := parseKeyToken(dec)
|
key, err := parseKeyToken(dec)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if err != io.EOF && !errors.Is(err, ErrEndOfToken) {
|
if err != io.EOF && !errors.Is(err, ErrEndOfToken) {
|
||||||
l.logger.DebugContext(ctx, "decodeResultDNSRewriteResult", slogutil.KeyError, err)
|
l.logger.DebugContext(ctx, msgPrefix+"; token", slogutil.KeyError, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return
|
return
|
||||||
|
@ -550,13 +557,15 @@ func parseKeyToken(dec *json.Decoder) (key string, err error) {
|
||||||
|
|
||||||
// decodeResult decodes a token of "Result" type to logEntry struct.
|
// decodeResult decodes a token of "Result" type to logEntry struct.
|
||||||
func (l *queryLog) decodeResult(ctx context.Context, dec *json.Decoder, ent *logEntry) {
|
func (l *queryLog) decodeResult(ctx context.Context, dec *json.Decoder, ent *logEntry) {
|
||||||
|
const msgPrefix = "decoding result"
|
||||||
|
|
||||||
defer translateResult(ent)
|
defer translateResult(ent)
|
||||||
|
|
||||||
for {
|
for {
|
||||||
key, err := parseKeyToken(dec)
|
key, err := parseKeyToken(dec)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if err != io.EOF && !errors.Is(err, ErrEndOfToken) {
|
if err != io.EOF && !errors.Is(err, ErrEndOfToken) {
|
||||||
l.logger.DebugContext(ctx, "decodeResult", slogutil.KeyError, err)
|
l.logger.DebugContext(ctx, msgPrefix+"; token", slogutil.KeyError, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return
|
return
|
||||||
|
@ -582,7 +591,7 @@ func (l *queryLog) decodeResult(ctx context.Context, dec *json.Decoder, ent *log
|
||||||
}
|
}
|
||||||
|
|
||||||
if err = handler(val, ent); err != nil {
|
if err = handler(val, ent); err != nil {
|
||||||
l.logger.DebugContext(ctx, "decodeResult handler", slogutil.KeyError, err)
|
l.logger.DebugContext(ctx, msgPrefix+"; handler", slogutil.KeyError, err)
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -701,6 +710,8 @@ func (l *queryLog) resultDecHandler(
|
||||||
|
|
||||||
// decodeLogEntry decodes string str to logEntry ent.
|
// decodeLogEntry decodes string str to logEntry ent.
|
||||||
func (l *queryLog) decodeLogEntry(ctx context.Context, ent *logEntry, str string) {
|
func (l *queryLog) decodeLogEntry(ctx context.Context, ent *logEntry, str string) {
|
||||||
|
const msgPrefix = "decoding log entry"
|
||||||
|
|
||||||
dec := json.NewDecoder(strings.NewReader(str))
|
dec := json.NewDecoder(strings.NewReader(str))
|
||||||
dec.UseNumber()
|
dec.UseNumber()
|
||||||
|
|
||||||
|
@ -708,7 +719,7 @@ func (l *queryLog) decodeLogEntry(ctx context.Context, ent *logEntry, str string
|
||||||
keyToken, err := dec.Token()
|
keyToken, err := dec.Token()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if err != io.EOF {
|
if err != io.EOF {
|
||||||
l.logger.DebugContext(ctx, "decodeLogEntry err", slogutil.KeyError, err)
|
l.logger.DebugContext(ctx, msgPrefix+"; token", slogutil.KeyError, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return
|
return
|
||||||
|
@ -720,8 +731,8 @@ func (l *queryLog) decodeLogEntry(ctx context.Context, ent *logEntry, str string
|
||||||
|
|
||||||
key, ok := keyToken.(string)
|
key, ok := keyToken.(string)
|
||||||
if !ok {
|
if !ok {
|
||||||
err = fmt.Errorf("decodeLogEntry: keyToken is %T (%[1]v) and not string", keyToken)
|
err = fmt.Errorf("%s: keyToken is %T (%[2]v) and not string", msgPrefix, keyToken)
|
||||||
l.logger.DebugContext(ctx, "decodeLogEntry", slogutil.KeyError, err)
|
l.logger.DebugContext(ctx, msgPrefix, slogutil.KeyError, err)
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -743,7 +754,7 @@ func (l *queryLog) decodeLogEntry(ctx context.Context, ent *logEntry, str string
|
||||||
}
|
}
|
||||||
|
|
||||||
if err = handler(val, ent); err != nil {
|
if err = handler(val, ent); err != nil {
|
||||||
l.logger.DebugContext(ctx, "decodeLogEntry handler", slogutil.KeyError, err)
|
l.logger.DebugContext(ctx, msgPrefix+"; handler", slogutil.KeyError, err)
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
|
@ -121,11 +121,11 @@ func TestDecodeLogEntry(t *testing.T) {
|
||||||
}, {
|
}, {
|
||||||
name: "bad_filter_id_old_rule",
|
name: "bad_filter_id_old_rule",
|
||||||
log: `{"IP":"127.0.0.1","T":"2020-11-25T18:55:56.519796+03:00","QH":"an.yandex.ru","QT":"A","QC":"IN","CP":"","Answer":"Qz+BgAABAAEAAAAAAmFuBnlhbmRleAJydQAAAQABwAwAAQABAAAACgAEAAAAAA==","Result":{"IsFiltered":true,"Reason":3,"FilterID":1.5},"Elapsed":837429}`,
|
log: `{"IP":"127.0.0.1","T":"2020-11-25T18:55:56.519796+03:00","QH":"an.yandex.ru","QT":"A","QC":"IN","CP":"","Answer":"Qz+BgAABAAEAAAAAAmFuBnlhbmRleAJydQAAAQABwAwAAQABAAAACgAEAAAAAA==","Result":{"IsFiltered":true,"Reason":3,"FilterID":1.5},"Elapsed":837429}`,
|
||||||
want: `level=DEBUG msg="decodeResult handler" err="strconv.ParseInt: parsing \"1.5\": invalid syntax"`,
|
want: `level=DEBUG msg="decoding result; handler" err="strconv.ParseInt: parsing \"1.5\": invalid syntax"`,
|
||||||
}, {
|
}, {
|
||||||
name: "bad_is_filtered",
|
name: "bad_is_filtered",
|
||||||
log: `{"IP":"127.0.0.1","T":"2020-11-25T18:55:56.519796+03:00","QH":"an.yandex.ru","QT":"A","QC":"IN","CP":"","Answer":"Qz+BgAABAAEAAAAAAmFuBnlhbmRleAJydQAAAQABwAwAAQABAAAACgAEAAAAAA==","Result":{"IsFiltered":trooe,"Reason":3},"Elapsed":837429}`,
|
log: `{"IP":"127.0.0.1","T":"2020-11-25T18:55:56.519796+03:00","QH":"an.yandex.ru","QT":"A","QC":"IN","CP":"","Answer":"Qz+BgAABAAEAAAAAAmFuBnlhbmRleAJydQAAAQABwAwAAQABAAAACgAEAAAAAA==","Result":{"IsFiltered":trooe,"Reason":3},"Elapsed":837429}`,
|
||||||
want: `level=DEBUG msg="decodeLogEntry err" err="invalid character 'o' in literal true (expecting 'u')"`,
|
want: `level=DEBUG msg="decoding log entry; token" err="invalid character 'o' in literal true (expecting 'u')"`,
|
||||||
}, {
|
}, {
|
||||||
name: "bad_elapsed",
|
name: "bad_elapsed",
|
||||||
log: `{"IP":"127.0.0.1","T":"2020-11-25T18:55:56.519796+03:00","QH":"an.yandex.ru","QT":"A","QC":"IN","CP":"","Answer":"Qz+BgAABAAEAAAAAAmFuBnlhbmRleAJydQAAAQABwAwAAQABAAAACgAEAAAAAA==","Result":{"IsFiltered":true,"Reason":3},"Elapsed":-1}`,
|
log: `{"IP":"127.0.0.1","T":"2020-11-25T18:55:56.519796+03:00","QH":"an.yandex.ru","QT":"A","QC":"IN","CP":"","Answer":"Qz+BgAABAAEAAAAAAmFuBnlhbmRleAJydQAAAQABwAwAAQABAAAACgAEAAAAAA==","Result":{"IsFiltered":true,"Reason":3},"Elapsed":-1}`,
|
||||||
|
@ -137,7 +137,7 @@ func TestDecodeLogEntry(t *testing.T) {
|
||||||
}, {
|
}, {
|
||||||
name: "bad_time",
|
name: "bad_time",
|
||||||
log: `{"IP":"127.0.0.1","T":"12/09/1998T15:00:00.000000+05:00","QH":"an.yandex.ru","QT":"A","QC":"IN","CP":"","Answer":"Qz+BgAABAAEAAAAAAmFuBnlhbmRleAJydQAAAQABwAwAAQABAAAACgAEAAAAAA==","Result":{"IsFiltered":true,"Reason":3},"Elapsed":837429}`,
|
log: `{"IP":"127.0.0.1","T":"12/09/1998T15:00:00.000000+05:00","QH":"an.yandex.ru","QT":"A","QC":"IN","CP":"","Answer":"Qz+BgAABAAEAAAAAAmFuBnlhbmRleAJydQAAAQABwAwAAQABAAAACgAEAAAAAA==","Result":{"IsFiltered":true,"Reason":3},"Elapsed":837429}`,
|
||||||
want: `level=DEBUG msg="decodeLogEntry handler" err="parsing time \"12/09/1998T15:00:00.000000+05:00\" as \"2006-01-02T15:04:05Z07:00\": cannot parse \"12/09/1998T15:00:00.000000+05:00\" as \"2006\""`,
|
want: `level=DEBUG msg="decoding log entry; handler" err="parsing time \"12/09/1998T15:00:00.000000+05:00\" as \"2006-01-02T15:04:05Z07:00\": cannot parse \"12/09/1998T15:00:00.000000+05:00\" as \"2006\""`,
|
||||||
}, {
|
}, {
|
||||||
name: "bad_host",
|
name: "bad_host",
|
||||||
log: `{"IP":"127.0.0.1","T":"2020-11-25T18:55:56.519796+03:00","QH":6,"QT":"A","QC":"IN","CP":"","Answer":"Qz+BgAABAAEAAAAAAmFuBnlhbmRleAJydQAAAQABwAwAAQABAAAACgAEAAAAAA==","Result":{"IsFiltered":true,"Reason":3},"Elapsed":837429}`,
|
log: `{"IP":"127.0.0.1","T":"2020-11-25T18:55:56.519796+03:00","QH":6,"QT":"A","QC":"IN","CP":"","Answer":"Qz+BgAABAAEAAAAAAmFuBnlhbmRleAJydQAAAQABwAwAAQABAAAACgAEAAAAAA==","Result":{"IsFiltered":true,"Reason":3},"Elapsed":837429}`,
|
||||||
|
@ -157,7 +157,7 @@ func TestDecodeLogEntry(t *testing.T) {
|
||||||
}, {
|
}, {
|
||||||
name: "very_bad_client_proto",
|
name: "very_bad_client_proto",
|
||||||
log: `{"IP":"127.0.0.1","T":"2020-11-25T18:55:56.519796+03:00","QH":"an.yandex.ru","QT":"A","QC":"IN","CP":"dog","Answer":"Qz+BgAABAAEAAAAAAmFuBnlhbmRleAJydQAAAQABwAwAAQABAAAACgAEAAAAAA==","Result":{"IsFiltered":true,"Reason":3},"Elapsed":837429}`,
|
log: `{"IP":"127.0.0.1","T":"2020-11-25T18:55:56.519796+03:00","QH":"an.yandex.ru","QT":"A","QC":"IN","CP":"dog","Answer":"Qz+BgAABAAEAAAAAAmFuBnlhbmRleAJydQAAAQABwAwAAQABAAAACgAEAAAAAA==","Result":{"IsFiltered":true,"Reason":3},"Elapsed":837429}`,
|
||||||
want: `level=DEBUG msg="decodeLogEntry handler" err="invalid client proto: \"dog\""`,
|
want: `level=DEBUG msg="decoding log entry; handler" err="invalid client proto: \"dog\""`,
|
||||||
}, {
|
}, {
|
||||||
name: "bad_answer",
|
name: "bad_answer",
|
||||||
log: `{"IP":"127.0.0.1","T":"2020-11-25T18:55:56.519796+03:00","QH":"an.yandex.ru","QT":"A","QC":"IN","CP":"","Answer":0.9,"Result":{"IsFiltered":true,"Reason":3},"Elapsed":837429}`,
|
log: `{"IP":"127.0.0.1","T":"2020-11-25T18:55:56.519796+03:00","QH":"an.yandex.ru","QT":"A","QC":"IN","CP":"","Answer":0.9,"Result":{"IsFiltered":true,"Reason":3},"Elapsed":837429}`,
|
||||||
|
@ -165,7 +165,7 @@ func TestDecodeLogEntry(t *testing.T) {
|
||||||
}, {
|
}, {
|
||||||
name: "very_bad_answer",
|
name: "very_bad_answer",
|
||||||
log: `{"IP":"127.0.0.1","T":"2020-11-25T18:55:56.519796+03:00","QH":"an.yandex.ru","QT":"A","QC":"IN","CP":"","Answer":"Qz+BgAABAAEAAAAAAmuBnlhbmRleAJydQAAAQABwAwAAQABAAAACgAEAAAAAA==","Result":{"IsFiltered":true,"Reason":3},"Elapsed":837429}`,
|
log: `{"IP":"127.0.0.1","T":"2020-11-25T18:55:56.519796+03:00","QH":"an.yandex.ru","QT":"A","QC":"IN","CP":"","Answer":"Qz+BgAABAAEAAAAAAmuBnlhbmRleAJydQAAAQABwAwAAQABAAAACgAEAAAAAA==","Result":{"IsFiltered":true,"Reason":3},"Elapsed":837429}`,
|
||||||
want: `level=DEBUG msg="decodeLogEntry handler" err="illegal base64 data at input byte 61"`,
|
want: `level=DEBUG msg="decoding log entry; handler" err="illegal base64 data at input byte 61"`,
|
||||||
}, {
|
}, {
|
||||||
name: "bad_rule",
|
name: "bad_rule",
|
||||||
log: `{"IP":"127.0.0.1","T":"2020-11-25T18:55:56.519796+03:00","QH":"an.yandex.ru","QT":"A","QC":"IN","CP":"","Answer":"Qz+BgAABAAEAAAAAAmFuBnlhbmRleAJydQAAAQABwAwAAQABAAAACgAEAAAAAA==","Result":{"IsFiltered":true,"Reason":3,"Rule":false},"Elapsed":837429}`,
|
log: `{"IP":"127.0.0.1","T":"2020-11-25T18:55:56.519796+03:00","QH":"an.yandex.ru","QT":"A","QC":"IN","CP":"","Answer":"Qz+BgAABAAEAAAAAAmFuBnlhbmRleAJydQAAAQABwAwAAQABAAAACgAEAAAAAA==","Result":{"IsFiltered":true,"Reason":3,"Rule":false},"Elapsed":837429}`,
|
||||||
|
@ -177,11 +177,11 @@ func TestDecodeLogEntry(t *testing.T) {
|
||||||
}, {
|
}, {
|
||||||
name: "bad_reverse_hosts",
|
name: "bad_reverse_hosts",
|
||||||
log: `{"IP":"127.0.0.1","T":"2020-11-25T18:55:56.519796+03:00","QH":"an.yandex.ru","QT":"A","QC":"IN","CP":"","Answer":"Qz+BgAABAAEAAAAAAmFuBnlhbmRleAJydQAAAQABwAwAAQABAAAACgAEAAAAAA==","Result":{"IsFiltered":true,"Reason":3,"ReverseHosts":[{}]},"Elapsed":837429}`,
|
log: `{"IP":"127.0.0.1","T":"2020-11-25T18:55:56.519796+03:00","QH":"an.yandex.ru","QT":"A","QC":"IN","CP":"","Answer":"Qz+BgAABAAEAAAAAAmFuBnlhbmRleAJydQAAAQABwAwAAQABAAAACgAEAAAAAA==","Result":{"IsFiltered":true,"Reason":3,"ReverseHosts":[{}]},"Elapsed":837429}`,
|
||||||
want: `level=DEBUG msg=decodeResultReverseHosts err="unexpected delimiter: \"{\""`,
|
want: `level=DEBUG msg="decoding result reverse hosts" err="unexpected delimiter: \"{\""`,
|
||||||
}, {
|
}, {
|
||||||
name: "bad_ip_list",
|
name: "bad_ip_list",
|
||||||
log: `{"IP":"127.0.0.1","T":"2020-11-25T18:55:56.519796+03:00","QH":"an.yandex.ru","QT":"A","QC":"IN","CP":"","Answer":"Qz+BgAABAAEAAAAAAmFuBnlhbmRleAJydQAAAQABwAwAAQABAAAACgAEAAAAAA==","Result":{"IsFiltered":true,"Reason":3,"ReverseHosts":["example.net"],"IPList":[{}]},"Elapsed":837429}`,
|
log: `{"IP":"127.0.0.1","T":"2020-11-25T18:55:56.519796+03:00","QH":"an.yandex.ru","QT":"A","QC":"IN","CP":"","Answer":"Qz+BgAABAAEAAAAAAmFuBnlhbmRleAJydQAAAQABwAwAAQABAAAACgAEAAAAAA==","Result":{"IsFiltered":true,"Reason":3,"ReverseHosts":["example.net"],"IPList":[{}]},"Elapsed":837429}`,
|
||||||
want: `level=DEBUG msg=decodeResultIPList err="unexpected delimiter: \"{\""`,
|
want: `level=DEBUG msg="decoding result ip list" err="unexpected delimiter: \"{\""`,
|
||||||
}}
|
}}
|
||||||
|
|
||||||
for _, tc := range testCases {
|
for _, tc := range testCases {
|
||||||
|
|
|
@ -75,7 +75,7 @@ func (l *queryLog) searchMemory(
|
||||||
l.logger.ErrorContext(
|
l.logger.ErrorContext(
|
||||||
ctx,
|
ctx,
|
||||||
"enriching memory record",
|
"enriching memory record",
|
||||||
"time", e.Time,
|
"at", e.Time,
|
||||||
"client_ip", e.IP,
|
"client_ip", e.IP,
|
||||||
"client_id", e.ClientID,
|
"client_id", e.ClientID,
|
||||||
slogutil.KeyError, err,
|
slogutil.KeyError, err,
|
||||||
|
|
Loading…
Reference in New Issue