func main() { flag.Parse() logClient, err := client.New(*logUri, &http.Client{ Transport: &httpclient.Transport{ ConnectTimeout: 10 * time.Second, RequestTimeout: 30 * time.Second, ResponseHeaderTimeout: 30 * time.Second, MaxIdleConnsPerHost: 10, DisableKeepAlives: false, }, }, jsonclient.Options{}) if err != nil { log.Fatal(err) } matcher, err := createMatcherFromFlags() if err != nil { log.Fatal(err) } opts := scanner.ScannerOptions{ Matcher: matcher, BatchSize: *batchSize, NumWorkers: *numWorkers, ParallelFetch: *parallelFetch, StartIndex: *startIndex, Quiet: *quiet, } scanner := scanner.NewScanner(logClient, opts) if *printChains { scanner.Scan(logFullChain, logFullChain) } else { scanner.Scan(logCertInfo, logPrecertInfo) } }
func main() { flag.Parse() logClient := client.New(*logUri) matcher, err := createMatcherFromFlags() if err != nil { log.Fatal(err) } opts := scanner.ScannerOptions{ Matcher: matcher, BatchSize: *batchSize, NumWorkers: *numWorkers, ParallelFetch: *parallelFetch, StartIndex: *startIndex, Quiet: *quiet, } scanner := scanner.NewScanner(logClient, opts) if *printChains { scanner.Scan(logFullChain, logFullChain) } else { scanner.Scan(logCertInfo, logPrecertInfo) } }
func main() { flag.Parse() logClient := client.New(*logUri) matcher, err := createMatcherFromFlags() if err != nil { log.Fatal(err) } opts := scanner.ScannerOptions{ Matcher: matcher, BatchSize: *batchSize, NumWorkers: *numWorkers, ParallelFetch: *parallelFetch, StartIndex: *startIndex, Quiet: *quiet, TickTime: time.Duration(*tickTime) * time.Second, Tickers: []scanner.Ticker{scanner.LogTicker{}}, } scanner := scanner.NewScanner(logClient, opts) scanner.Scan(logCertInfo, logPrecertInfo) }
func main() { flag.Parse() var sctFileWriter io.Writer var err error if *sctInputFile != "" { sctFileWriter, err = os.Create(*sctInputFile) if err != nil { log.Fatal(err) } } else { sctFileWriter = ioutil.Discard } sctWriter := zlib.NewWriter(sctFileWriter) defer func() { err := sctWriter.Close() if err != nil { log.Fatal(err) } }() transport := &httpclient.Transport{ ConnectTimeout: 10 * time.Second, RequestTimeout: 30 * time.Second, ResponseHeaderTimeout: 30 * time.Second, MaxIdleConnsPerHost: 10, DisableKeepAlives: false, } fetchLogClient, err := client.New(*sourceLogUri, &http.Client{ Transport: transport, }, jsonclient.Options{}) if err != nil { log.Fatal(err) } matcher, err := createMatcher() if err != nil { log.Fatal(err) } opts := scanner.ScannerOptions{ Matcher: matcher, BatchSize: *batchSize, NumWorkers: *numWorkers, ParallelFetch: *parallelFetch, StartIndex: *startIndex, Quiet: *quiet, } scanner := scanner.NewScanner(fetchLogClient, opts) certs := make(chan *ct.LogEntry, *batchSize**parallelFetch) precerts := make(chan *ct.LogEntry, *batchSize**parallelFetch) addedCerts := make(chan *preload.AddedCert, *batchSize**parallelFetch) var sctWriterWG sync.WaitGroup sctWriterWG.Add(1) go sctWriterJob(addedCerts, sctWriter, &sctWriterWG) submitLogClient, err := client.New(*targetLogUri, &http.Client{ Transport: transport, }, jsonclient.Options{}) if err != nil { log.Fatal(err) } backgroundCtx := context.Background() var submitterWG sync.WaitGroup for w := 0; w < *parallelSubmit; w++ { submitterWG.Add(2) go certSubmitterJob(backgroundCtx, addedCerts, submitLogClient, certs, &submitterWG) go precertSubmitterJob(backgroundCtx, addedCerts, submitLogClient, precerts, &submitterWG) } addChainFunc := func(entry *ct.LogEntry) { certs <- entry } addPreChainFunc := func(entry *ct.LogEntry) { precerts <- entry } scanner.Scan(addChainFunc, addPreChainFunc) close(certs) close(precerts) submitterWG.Wait() close(addedCerts) sctWriterWG.Wait() }
func main() { flag.Parse() var sctFileWriter io.Writer var err error if *sctInputFile != "" { sctFileWriter, err = os.Create(*sctInputFile) if err != nil { log.Fatal(err) } } else { sctFileWriter = ioutil.Discard } sctWriter := zlib.NewWriter(sctFileWriter) defer func() { err := sctWriter.Close() if err != nil { log.Fatal(err) } }() fetchLogClient := client.New(*sourceLogUri) matcher, err := createMatcher() if err != nil { log.Fatal(err) } opts := scanner.ScannerOptions{ Matcher: matcher, BatchSize: *batchSize, NumWorkers: *numWorkers, ParallelFetch: *parallelFetch, StartIndex: *startIndex, Quiet: *quiet, } scanner := scanner.NewScanner(fetchLogClient, opts) certs := make(chan *ct.LogEntry, *batchSize**parallelFetch) precerts := make(chan *ct.LogEntry, *batchSize**parallelFetch) addedCerts := make(chan *preload.AddedCert, *batchSize**parallelFetch) var sctWriterWG sync.WaitGroup sctWriterWG.Add(1) go sctWriterJob(addedCerts, sctWriter, &sctWriterWG) submitLogClient := client.New(*targetLogUri) var submitterWG sync.WaitGroup for w := 0; w < *parallelSubmit; w++ { submitterWG.Add(2) go certSubmitterJob(addedCerts, submitLogClient, certs, &submitterWG) go precertSubmitterJob(addedCerts, submitLogClient, precerts, &submitterWG) } addChainFunc := func(entry *ct.LogEntry) { certs <- entry } addPreChainFunc := func(entry *ct.LogEntry) { precerts <- entry } scanner.Scan(addChainFunc, addPreChainFunc) close(certs) close(precerts) submitterWG.Wait() close(addedCerts) sctWriterWG.Wait() }