mirror of
https://github.com/XTLS/Xray-core.git
synced 2026-05-08 14:13:22 +00:00
48 lines
1.0 KiB
Go
48 lines
1.0 KiB
Go
package strmatcher
|
|
|
|
import (
|
|
"bytes"
|
|
"encoding/gob"
|
|
"io"
|
|
)
|
|
|
|
func init() {
|
|
gob.Register(&RegexMatcher{})
|
|
gob.Register(fullMatcher(""))
|
|
gob.Register(substrMatcher(""))
|
|
gob.Register(domainMatcher(""))
|
|
}
|
|
|
|
func (g *MphMatcherGroup) Serialize(w io.Writer) error {
|
|
data := MphMatcherGroup{
|
|
Ac: g.Ac,
|
|
OtherMatchers: g.OtherMatchers,
|
|
Rules: g.Rules,
|
|
Level0: g.Level0,
|
|
Level0Mask: g.Level0Mask,
|
|
Level1: g.Level1,
|
|
Level1Mask: g.Level1Mask,
|
|
Count: g.Count,
|
|
}
|
|
return gob.NewEncoder(w).Encode(data)
|
|
}
|
|
|
|
func NewMphMatcherGroupFromBuffer(data []byte) (*MphMatcherGroup, error) {
|
|
var gData MphMatcherGroup
|
|
if err := gob.NewDecoder(bytes.NewReader(data)).Decode(&gData); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
g := NewMphMatcherGroup()
|
|
g.Ac = gData.Ac
|
|
g.OtherMatchers = gData.OtherMatchers
|
|
g.Rules = gData.Rules
|
|
g.Level0 = gData.Level0
|
|
g.Level0Mask = gData.Level0Mask
|
|
g.Level1 = gData.Level1
|
|
g.Level1Mask = gData.Level1Mask
|
|
g.Count = gData.Count
|
|
|
|
return g, nil
|
|
}
|