63 lines
954 B
Go
63 lines
954 B
Go
|
package matching
|
||
|
|
||
|
type headerTerm int
|
||
|
type matchType int
|
||
|
type protocolType int
|
||
|
|
||
|
//headerTerm -- ENUM for header terminator
|
||
|
const (
|
||
|
CRLF2 headerTerm = iota
|
||
|
ZER0
|
||
|
)
|
||
|
|
||
|
//Family -- ENUM for Address Family
|
||
|
const (
|
||
|
BYTES matchType = iota
|
||
|
REGEX
|
||
|
)
|
||
|
|
||
|
const (
|
||
|
pHTTP = iota + 1
|
||
|
pTLS
|
||
|
pSSH
|
||
|
)
|
||
|
|
||
|
//Protocol --
|
||
|
type Protocol struct {
|
||
|
HeaderTerm headerTerm
|
||
|
MatchType matchType
|
||
|
Type protocolType
|
||
|
SearchRegex string
|
||
|
SearchBytes []byte
|
||
|
}
|
||
|
|
||
|
//NewProtocol -- Constructor
|
||
|
func NewProtocol() (p *Protocol) {
|
||
|
p = new(Protocol)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
//Protocols --
|
||
|
type Protocols struct {
|
||
|
protocols []*Protocol
|
||
|
}
|
||
|
|
||
|
func (p *Protocols) add(protocol *Protocol) []*Protocol {
|
||
|
p.protocols = append(p.protocols, protocol)
|
||
|
return p.protocols
|
||
|
}
|
||
|
|
||
|
//NewProtocols --
|
||
|
func NewProtocols() (p *Protocols) {
|
||
|
p = new(Protocols)
|
||
|
p.protocols = make([]*Protocol, 0)
|
||
|
|
||
|
newp := NewProtocol()
|
||
|
newp.MatchType = REGEX
|
||
|
newp.HeaderTerm = CRLF2
|
||
|
newp.MatchType = pHTTP
|
||
|
p.add(newp)
|
||
|
|
||
|
return
|
||
|
}
|