overflow_discovery/matcher/matcher.go
crusader 9527a68c71 ing
2017-12-04 18:37:39 +09:00

105 lines
3.3 KiB
Go

package matcher
import (
cnsm "git.loafle.net/commons_go/network_service_matcher"
"git.loafle.net/commons_go/network_service_matcher/activedirectory"
"git.loafle.net/commons_go/network_service_matcher/cassandra"
"git.loafle.net/commons_go/network_service_matcher/dns"
"git.loafle.net/commons_go/network_service_matcher/ftp"
"git.loafle.net/commons_go/network_service_matcher/http"
"git.loafle.net/commons_go/network_service_matcher/imap"
"git.loafle.net/commons_go/network_service_matcher/ldap"
"git.loafle.net/commons_go/network_service_matcher/mongodb"
"git.loafle.net/commons_go/network_service_matcher/mssql"
"git.loafle.net/commons_go/network_service_matcher/mysql"
"git.loafle.net/commons_go/network_service_matcher/netbios"
"git.loafle.net/commons_go/network_service_matcher/oracle"
"git.loafle.net/commons_go/network_service_matcher/pop"
"git.loafle.net/commons_go/network_service_matcher/redis"
redis_protected "git.loafle.net/commons_go/network_service_matcher/redis/protected"
"git.loafle.net/commons_go/network_service_matcher/rmi"
"git.loafle.net/commons_go/network_service_matcher/smb"
"git.loafle.net/commons_go/network_service_matcher/smtp"
snmp_v2 "git.loafle.net/commons_go/network_service_matcher/snmp/v2"
snmp_v3 "git.loafle.net/commons_go/network_service_matcher/snmp/v3"
"git.loafle.net/commons_go/network_service_matcher/ssh"
"git.loafle.net/commons_go/network_service_matcher/telnet"
"git.loafle.net/commons_go/network_service_matcher/wmi"
)
var (
AllMatchers []cnsm.Matcher
TCPMatchers []cnsm.Matcher
UDPMatchers []cnsm.UDPMatcher
TCPPrePacketMatchers []cnsm.Matcher
TCPNotPrePacketMatchers []cnsm.Matcher
)
func init() {
//TCP
registerTCPMatcher(smtp.NewMatcher())
registerTCPMatcher(ldap.NewMatcher())
registerTCPMatcher(activedirectory.NewMatcher())
registerTCPMatcher(mongodb.NewMatcher())
registerTCPMatcher(mysql.NewMatcher())
registerTCPMatcher(mssql.NewMatcher())
registerTCPMatcher(redis.NewMatcher())
registerTCPMatcher(redis_protected.NewMatcher())
registerTCPMatcher(netbios.NewMatcher())
registerTCPMatcher(smb.NewMatcher())
registerTCPMatcher(cassandra.NewMatcher())
registerTCPMatcher(imap.NewMatcher())
registerTCPMatcher(oracle.NewMatcher())
registerTCPMatcher(pop.NewMatcher())
registerTCPMatcher(wmi.NewMatcher())
registerTCPMatcher(ftp.NewMatcher())
registerTCPMatcher(http.NewMatcher())
registerTCPMatcher(rmi.NewMatcher())
registerTCPMatcher(ssh.NewMatcher())
registerTCPMatcher(telnet.NewMatcher())
// UDP
registerUDPMatcher(dns.NewMatcher())
registerUDPMatcher(snmp_v2.NewMatcher())
registerUDPMatcher(snmp_v3.NewMatcher())
}
func registerTCPMatcher(m cnsm.Matcher) {
AllMatchers = append(AllMatchers, m)
TCPMatchers = append(TCPMatchers, m)
if m.IsPrePacket() {
TCPPrePacketMatchers = append(TCPPrePacketMatchers, m)
} else {
TCPNotPrePacketMatchers = append(TCPNotPrePacketMatchers, m)
}
}
func registerUDPMatcher(m cnsm.UDPMatcher) {
AllMatchers = append(AllMatchers, m)
UDPMatchers = append(UDPMatchers, m)
}
func GetTCPMatchers(isPrePacket bool) []cnsm.Matcher {
if isPrePacket {
return TCPPrePacketMatchers
}
return TCPNotPrePacketMatchers
}
func GetUDPMatchers() []cnsm.UDPMatcher {
return UDPMatchers
}
func GetMatcherByName(serName string) cnsm.Matcher {
for _, m := range AllMatchers {
if m.ServiceName() == serName {
return m
}
}
return nil
}