sk-matrix-project/backend/golang/matrix-dnslog-service/pkg/handler/handler.go
2023-03-24 16:12:11 +08:00

55 lines
986 B
Go

package handler
import (
"encoding/hex"
"matrix-common/pkg/logger"
"matrix-dnslog-service/pkg/cache"
"matrix-dnslog-service/pkg/handler/type"
"strings"
)
func ProcessHandler(data string) {
handlers := []_type.Handler{
appendData,
endData,
}
datum := strings.Split(data, ".")
if len(datum) != 5 {
return
}
command := strings.ToLower(datum[0])
id := strings.ToLower(datum[1])
seq := datum[2]
d := datum[3]
for _, handler := range handlers {
if handler(command, id, seq, d) {
return
}
}
}
var appendData = func(command, id, seq, data string) bool {
if command != "a" {
return false
}
cache.Append(id, seq, data)
return true
}
var endData = func(command, id, seq, data string) bool {
if command != "e" {
return false
}
datum := cache.Get(id)
if len(datum) == 0 {
return false
}
originalData, _ := hex.DecodeString(datum)
datum = string(originalData)
logger.Log().Infof("[dnslog] (完成) id: %s \n数据: %s", id, datum)
return true
}