2016-02-05 03:45:37 +01:00
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
|
|
|
"flag"
|
|
|
|
"fmt"
|
|
|
|
"os"
|
|
|
|
"bufio"
|
|
|
|
|
|
|
|
"src.agwa.name/ctwatch"
|
|
|
|
"src.agwa.name/ctwatch/cmd"
|
|
|
|
)
|
|
|
|
|
2016-02-05 05:16:25 +01:00
|
|
|
var stateDir = flag.String("state_dir", cmd.DefaultStateDir("ctwatch"), "Directory for storing state")
|
|
|
|
|
2016-02-05 03:45:37 +01:00
|
|
|
func main() {
|
|
|
|
flag.Parse()
|
|
|
|
|
2016-02-05 17:13:11 +01:00
|
|
|
if flag.NArg() == 0 {
|
|
|
|
fmt.Fprintf(os.Stderr, "Usage: %s [flags] domain ...\n", os.Args[0])
|
|
|
|
fmt.Fprintf(os.Stderr, "\n")
|
|
|
|
fmt.Fprintf(os.Stderr, "To read domain list from stdin, use '-'. To monitor all domains, use '.'.\n")
|
|
|
|
fmt.Fprintf(os.Stderr, "See '%s -help' for a list of valid flags.\n", os.Args[0])
|
|
|
|
os.Exit(2)
|
|
|
|
}
|
|
|
|
|
|
|
|
var matcher ctwatch.Matcher
|
2016-02-05 05:16:25 +01:00
|
|
|
if flag.NArg() == 1 && flag.Arg(0) == "-" {
|
2016-02-05 17:13:11 +01:00
|
|
|
var domains []string
|
2016-02-05 03:45:37 +01:00
|
|
|
scanner := bufio.NewScanner(os.Stdin)
|
|
|
|
for scanner.Scan() {
|
|
|
|
domains = append(domains, scanner.Text())
|
|
|
|
}
|
|
|
|
if err := scanner.Err(); err != nil {
|
2016-02-05 05:16:25 +01:00
|
|
|
fmt.Fprintf(os.Stderr, "%s: Error reading standard input: %s\n", os.Args[0], err)
|
|
|
|
os.Exit(3)
|
2016-02-05 03:45:37 +01:00
|
|
|
}
|
2016-02-05 17:13:11 +01:00
|
|
|
matcher = ctwatch.NewDomainMatcher(domains)
|
|
|
|
} else if flag.NArg() == 1 && flag.Arg(0) == "." { // "." as in root zone
|
2016-02-05 03:45:37 +01:00
|
|
|
matcher = ctwatch.MatchAll{}
|
|
|
|
} else {
|
2016-02-05 17:13:11 +01:00
|
|
|
matcher = ctwatch.NewDomainMatcher(flag.Args())
|
2016-02-05 03:45:37 +01:00
|
|
|
}
|
|
|
|
|
2016-02-05 05:16:25 +01:00
|
|
|
cmd.Main(*stateDir, matcher)
|
2016-02-05 03:45:37 +01:00
|
|
|
}
|