ing
This commit is contained in:
parent
5f46929717
commit
ec0e83e38b
|
@ -10,6 +10,8 @@ import (
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
omd "git.loafle.net/overflow/model/discovery"
|
omd "git.loafle.net/overflow/model/discovery"
|
||||||
|
omm "git.loafle.net/overflow/model/meta"
|
||||||
|
omu "git.loafle.net/overflow/model/util"
|
||||||
ouej "git.loafle.net/overflow/util-go/encoding/json"
|
ouej "git.loafle.net/overflow/util-go/encoding/json"
|
||||||
ounc "git.loafle.net/overflow/util-go/net/cidr"
|
ounc "git.loafle.net/overflow/util-go/net/cidr"
|
||||||
"git.loafle.net/overflow_scanner/probe/discovery/types"
|
"git.loafle.net/overflow_scanner/probe/discovery/types"
|
||||||
|
@ -40,13 +42,15 @@ type DiscoverySession interface {
|
||||||
AddHost(discoveredBy string, host *omd.Host, meta map[string]string) *omd.Host
|
AddHost(discoveredBy string, host *omd.Host, meta map[string]string) *omd.Host
|
||||||
AddPort(discoveredBy string, port *omd.Port, meta map[string]string) *omd.Port
|
AddPort(discoveredBy string, port *omd.Port, meta map[string]string) *omd.Port
|
||||||
AddService(discoveredBy string, service *omd.Service, meta map[string]string) *omd.Service
|
AddService(discoveredBy string, service *omd.Service, meta map[string]string) *omd.Service
|
||||||
|
AddServiceUnknown(discoveredBy string, port *omd.Port) *omd.Service
|
||||||
|
|
||||||
DiscoveredHost(address string) *omd.Host
|
DiscoveredHost(address string) *omd.Host
|
||||||
DiscoveredAllHosts(includeMac bool) map[string]*omd.Host
|
DiscoveredAllHosts(includeMac bool) map[string]*omd.Host
|
||||||
DiscoveredPort(host *omd.Host, portNumber int) map[string]*omd.Port
|
DiscoveredPort(host *omd.Host, portNumber int) map[string]*omd.Port
|
||||||
DiscoveredAllPorts() map[*omd.Host]map[json.Number]map[string]*omd.Port
|
DiscoveredAllPorts() map[*omd.Host]map[json.Number]map[string]*omd.Port
|
||||||
DiscoveredService(port *omd.Port, name string) map[string]*omd.Service
|
DiscoveredService(port *omd.Port, name string) *omd.Service
|
||||||
DiscoveredAllServices() map[*omd.Port]map[string]map[string]*omd.Service
|
DiscoveredServices(port *omd.Port) map[string]*omd.Service
|
||||||
|
DiscoveredAllServices() map[*omd.Port]map[string]*omd.Service
|
||||||
|
|
||||||
StopChan() <-chan struct{}
|
StopChan() <-chan struct{}
|
||||||
}
|
}
|
||||||
|
@ -73,7 +77,7 @@ type ofDiscoverySession struct {
|
||||||
hosts map[string]*omd.Host
|
hosts map[string]*omd.Host
|
||||||
includeMachosts map[string]*omd.Host
|
includeMachosts map[string]*omd.Host
|
||||||
ports map[*omd.Host]map[json.Number]map[string]*omd.Port
|
ports map[*omd.Host]map[json.Number]map[string]*omd.Port
|
||||||
services map[*omd.Port]map[string]map[string]*omd.Service
|
services map[*omd.Port]map[string]*omd.Service
|
||||||
|
|
||||||
stopChan chan struct{}
|
stopChan chan struct{}
|
||||||
}
|
}
|
||||||
|
@ -91,7 +95,7 @@ func (ds *ofDiscoverySession) init(request types.DiscoveryRequest) {
|
||||||
ds.hosts = make(map[string]*omd.Host)
|
ds.hosts = make(map[string]*omd.Host)
|
||||||
ds.includeMachosts = make(map[string]*omd.Host)
|
ds.includeMachosts = make(map[string]*omd.Host)
|
||||||
ds.ports = make(map[*omd.Host]map[json.Number]map[string]*omd.Port)
|
ds.ports = make(map[*omd.Host]map[json.Number]map[string]*omd.Port)
|
||||||
ds.services = make(map[*omd.Port]map[string]map[string]*omd.Service)
|
ds.services = make(map[*omd.Port]map[string]*omd.Service)
|
||||||
|
|
||||||
ds.stopChan = make(chan struct{})
|
ds.stopChan = make(chan struct{})
|
||||||
}
|
}
|
||||||
|
@ -353,6 +357,24 @@ func (ds *ofDiscoverySession) AddService(discoveredBy string, service *omd.Servi
|
||||||
return s
|
return s
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (ds *ofDiscoverySession) AddServiceUnknown(discoveredBy string, port *omd.Port) *omd.Service {
|
||||||
|
if nil == ds.DiscoveredServices(port) {
|
||||||
|
s := omd.NewService(
|
||||||
|
port,
|
||||||
|
omm.ToMetaCryptoType(omm.MetaCryptoTypeEnumNONE),
|
||||||
|
omd.UnknownServiceKey,
|
||||||
|
)
|
||||||
|
s.Name = ""
|
||||||
|
s.ServiceType = omm.MetaServiceTypeEnumUNKNOWN.String()
|
||||||
|
s.ServiceVendor = ""
|
||||||
|
s.ServiceVersion = ""
|
||||||
|
s.DiscoveredDate = omu.NowPtr()
|
||||||
|
return ds.AddService(discoveredBy, s, nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (ds *ofDiscoverySession) DiscoveredHost(address string) *omd.Host {
|
func (ds *ofDiscoverySession) DiscoveredHost(address string) *omd.Host {
|
||||||
ds.discoveredMtx.RLock()
|
ds.discoveredMtx.RLock()
|
||||||
defer ds.discoveredMtx.RUnlock()
|
defer ds.discoveredMtx.RUnlock()
|
||||||
|
@ -398,7 +420,7 @@ func (ds *ofDiscoverySession) DiscoveredAllPorts() map[*omd.Host]map[json.Number
|
||||||
return ds.ports
|
return ds.ports
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ds *ofDiscoverySession) DiscoveredService(port *omd.Port, name string) map[string]*omd.Service {
|
func (ds *ofDiscoverySession) DiscoveredService(port *omd.Port, name string) *omd.Service {
|
||||||
ds.discoveredMtx.RLock()
|
ds.discoveredMtx.RLock()
|
||||||
defer ds.discoveredMtx.RUnlock()
|
defer ds.discoveredMtx.RUnlock()
|
||||||
|
|
||||||
|
@ -407,12 +429,29 @@ func (ds *ofDiscoverySession) DiscoveredService(port *omd.Port, name string) map
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
portServices, ok := ds.services[p]
|
services, ok := ds.services[p]
|
||||||
if !ok {
|
if !ok {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
services, ok := portServices[name]
|
s, ok := services[name]
|
||||||
|
if !ok {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return s
|
||||||
|
}
|
||||||
|
|
||||||
|
func (ds *ofDiscoverySession) DiscoveredServices(port *omd.Port) map[string]*omd.Service {
|
||||||
|
ds.discoveredMtx.RLock()
|
||||||
|
defer ds.discoveredMtx.RUnlock()
|
||||||
|
|
||||||
|
p, _ := ds.findPort(port)
|
||||||
|
if nil == p {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
services, ok := ds.services[p]
|
||||||
if !ok {
|
if !ok {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -420,7 +459,7 @@ func (ds *ofDiscoverySession) DiscoveredService(port *omd.Port, name string) map
|
||||||
return services
|
return services
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ds *ofDiscoverySession) DiscoveredAllServices() map[*omd.Port]map[string]map[string]*omd.Service {
|
func (ds *ofDiscoverySession) DiscoveredAllServices() map[*omd.Port]map[string]*omd.Service {
|
||||||
return ds.services
|
return ds.services
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -498,22 +537,20 @@ func (ds *ofDiscoverySession) findService(service *omd.Service) (s *omd.Service,
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
portServices, ok := ds.services[p]
|
services, ok := ds.services[p]
|
||||||
if !ok {
|
if !ok {
|
||||||
ds.services[p] = make(map[string]map[string]*omd.Service)
|
ds.services[p] = make(map[string]*omd.Service)
|
||||||
portServices = ds.services[p]
|
services = ds.services[p]
|
||||||
|
} else {
|
||||||
|
if _, ok := services[omd.UnknownServiceKey]; ok {
|
||||||
|
delete(services, omd.UnknownServiceKey)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
services, ok := portServices[service.Key]
|
s, ok = services[service.Key]
|
||||||
if !ok {
|
if !ok {
|
||||||
portServices[service.Key] = make(map[string]*omd.Service)
|
services[service.Key] = service
|
||||||
services = portServices[service.Key]
|
s = services[service.Key]
|
||||||
}
|
|
||||||
|
|
||||||
s, ok = services[service.MetaCryptoType.Key]
|
|
||||||
if !ok {
|
|
||||||
services[service.MetaCryptoType.Key] = service
|
|
||||||
s = services[service.MetaCryptoType.Key]
|
|
||||||
modified = true
|
modified = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -93,6 +93,11 @@ LOOP:
|
||||||
s,
|
s,
|
||||||
matchCtx.GetAttributes(),
|
matchCtx.GetAttributes(),
|
||||||
)
|
)
|
||||||
|
} else {
|
||||||
|
discoverySession.AddServiceUnknown(
|
||||||
|
"Service Matcher",
|
||||||
|
targetPort,
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
|
Loading…
Reference in New Issue
Block a user