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/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/postgresql" "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/sqlserver" "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(sqlserver.NewMatcher()) registerTCPMatcher(redis.NewMatcher()) registerTCPMatcher(redis_protected.NewMatcher()) registerTCPMatcher(netbios.NewMatcher()) registerTCPMatcher(smb.NewMatcher()) registerTCPMatcher(cassandra.NewMatcher()) registerTCPMatcher(imap.NewMatcher()) registerTCPMatcher(oracle.NewMatcher()) registerTCPMatcher(postgresql.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 }