...
1
2
3
4 package notmain
5
6 import (
7 "bufio"
8 "flag"
9 "fmt"
10 "io"
11 "log"
12 "os"
13
14 "github.com/letsencrypt/boulder/cmd"
15 "github.com/letsencrypt/boulder/identifier"
16 "github.com/letsencrypt/boulder/policy"
17 "github.com/letsencrypt/boulder/sa"
18 )
19
20 func init() {
21 cmd.RegisterCommand("reversed-hostname-checker", main, nil)
22 }
23
24 func main() {
25 inputFilename := flag.String("input", "", "File containing a list of reversed hostnames to check, newline separated. Defaults to stdin")
26 policyFile := flag.String("policy", "test/hostname-policy.yaml", "File containing a hostname policy in yaml.")
27 flag.Parse()
28
29 var input io.Reader
30 var err error
31 if *inputFilename == "" {
32 input = os.Stdin
33 } else {
34 input, err = os.Open(*inputFilename)
35 if err != nil {
36 log.Fatalf("opening %s: %s", *inputFilename, err)
37 }
38 }
39
40 scanner := bufio.NewScanner(input)
41 logger := cmd.NewLogger(cmd.SyslogConfig{StdoutLevel: 7})
42 logger.Info(cmd.VersionString())
43 pa, err := policy.New(nil, logger)
44 if err != nil {
45 log.Fatal(err)
46 }
47 err = pa.LoadHostnamePolicyFile(*policyFile)
48 if err != nil {
49 log.Fatalf("reading %s: %s", *policyFile, err)
50 }
51 var errors bool
52 for scanner.Scan() {
53 n := sa.ReverseName(scanner.Text())
54 err := pa.WillingToIssueWildcards([]identifier.ACMEIdentifier{identifier.DNSIdentifier(n)})
55 if err != nil {
56 errors = true
57 fmt.Printf("%s: %s\n", n, err)
58 }
59 }
60 if errors {
61 os.Exit(1)
62 }
63 }
64
View as plain text