func main() { switch kingpin.MustParse(app.Parse(os.Args[1:])) { case master.FullCommand(): println("listening on", (*masterIp)+":"+strconv.Itoa(*masterPort)) m.RunMaster((*masterIp) + ":" + strconv.Itoa(*masterPort)) case sender.FullCommand(): var wg sync.WaitGroup sendChan, err := s.NewSendChannel(*sendToChanName, *senderAgentPort, &wg) if err != nil { panic(err) } file := os.Stdin if *sendFile != "" { file, err = os.Open(*sendFile) if err != nil { log.Fatal(err) } defer file.Close() } counter := 0 scanner := bufio.NewScanner(file) for scanner.Scan() { sendChan <- scanner.Bytes() counter++ } if err := scanner.Err(); err != nil { log.Fatal(err) } close(sendChan) wg.Wait() case receiver.FullCommand(): target := r.FindTarget(*receiveFromChanName, *receiverMaster) rc := r.NewReceiveChannel(*receiveFromChanName, 0) recvChan, err := rc.GetDirectChannel(target, 128) if err != nil { panic(err) } for m := range recvChan { println(string(m)) } case agent.FullCommand(): agentServer := a.NewAgentServer(agentOption) agentServer.Run() } }
func main() { master.Flag("cert.file", "A PEM eoncoded certificate file").Default("").StringVar(&masterCerts.CertFile) master.Flag("key.file", "A PEM encoded private key file.").Default("").StringVar(&masterCerts.KeyFile) master.Flag("ca.file", "A PEM eoncoded CA's certificate file.").Default("").StringVar(&masterCerts.CaFile) agent.Flag("cert.file", "A PEM eoncoded certificate file").Default("").StringVar(&agentOption.CertFiles.CertFile) agent.Flag("key.file", "A PEM encoded private key file.").Default("").StringVar(&agentOption.CertFiles.KeyFile) agent.Flag("ca.file", "A PEM eoncoded CA's certificate file.").Default("").StringVar(&agentOption.CertFiles.CaFile) sender.Flag("cert.file", "A PEM eoncoded certificate file").Default("").StringVar(&senderCerts.CertFile) sender.Flag("key.file", "A PEM encoded private key file.").Default("").StringVar(&senderCerts.KeyFile) sender.Flag("ca.file", "A PEM eoncoded CA's certificate file.").Default("").StringVar(&senderCerts.CaFile) receiver.Flag("cert.file", "A PEM eoncoded certificate file").Default("").StringVar(&receiverCerts.CertFile) receiver.Flag("key.file", "A PEM encoded private key file.").Default("").StringVar(&receiverCerts.KeyFile) receiver.Flag("ca.file", "A PEM eoncoded CA's certificate file.").Default("").StringVar(&receiverCerts.CaFile) switch kingpin.MustParse(app.Parse(os.Args[1:])) { case master.FullCommand(): println("listening on", *masterAddress) m.RunMaster(masterCerts.MakeTLSConfig(), *masterAddress) case sender.FullCommand(): tlsConfig := senderCerts.MakeTLSConfig() util.SetupHttpClient(tlsConfig) var wg sync.WaitGroup sendChan, err := s.NewDirectSendChannel(tlsConfig, *sendToChanName, *senderAgentAddress, &wg) if err != nil { panic(err) } file := os.Stdin if *sendFile != "" { file, err = os.Open(*sendFile) if err != nil { log.Fatal(err) } defer file.Close() } counter := 0 scanner := bufio.NewScanner(file) for scanner.Scan() { sendChan <- scanner.Bytes() counter++ } if err := scanner.Err(); err != nil { log.Fatal(err) } close(sendChan) wg.Wait() case receiver.FullCommand(): tlsConfig := receiverCerts.MakeTLSConfig() util.SetupHttpClient(tlsConfig) target := r.FindTarget(*receiveFromChanName, *receiverMaster) rc := r.NewReceiveChannel(tlsConfig, *receiveFromChanName, 0) recvChan, err := rc.GetDirectChannel(target, 128) if err != nil { panic(err) } for m := range recvChan { println(string(m)) } case agent.FullCommand(): if agentOption.CertFiles.IsEnabled() { if *agentOption.Host == "" { log.Fatalf("Usage Note: --host option is needed in 2-way SSL mode and must match CN in the certificate.") } } agentServer := a.NewAgentServer(agentOption) agentServer.Run() } }