36 lines
910 B
Go
36 lines
910 B
Go
package scan
|
|
|
|
import (
|
|
"github.com/Ullaakut/cameradar/v6"
|
|
"github.com/Ullaakut/cameradar/v6/internal/scan/nmap"
|
|
"github.com/Ullaakut/cameradar/v6/internal/scan/skip"
|
|
)
|
|
|
|
// Config configures how Cameradar discovers RTSP streams.
|
|
type Config struct {
|
|
SkipScan bool
|
|
Targets []string
|
|
Ports []string
|
|
ScanSpeed int16
|
|
}
|
|
|
|
// Reporter reports scan progress and debug information.
|
|
type Reporter interface {
|
|
Debug(step cameradar.Step, message string)
|
|
Progress(step cameradar.Step, message string)
|
|
}
|
|
|
|
// New builds a stream scanner based on the provided configuration.
|
|
func New(config Config, reporter Reporter) (cameradar.StreamScanner, error) {
|
|
expandedTargets, err := expandTargetsForScan(config.Targets)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
if config.SkipScan {
|
|
return skip.New(expandedTargets, config.Ports), nil
|
|
}
|
|
|
|
return nmap.New(config.ScanSpeed, expandedTargets, config.Ports, reporter)
|
|
}
|