func main() { flag.Parse() if veryVerbose { verbose = true raft.SetLogLevel(raft.Debug) } if machines != "" { cluster = strings.Split(machines, ",") } else if machinesFile != "" { b, err := ioutil.ReadFile(machinesFile) if err != nil { fatal("Unable to read the given machines file: %s", err) } cluster = strings.Split(string(b), ",") } // Setup commands. registerCommands() // Read server info from file or grab it from user. if err := os.MkdirAll(dirPath, 0744); err != nil { fatal("Unable to create path: %s", err) } info = getInfo(dirPath) // security type st := securityType(SERVER) clientSt := securityType(CLIENT) if st == -1 || clientSt == -1 { fatal("Please specify cert and key file or cert and key file and CAFile or none of the three") } // Create etcd key-value store etcdStore = store.CreateStore(maxSize) startRaft(st) if webPort != -1 { // start web etcdStore.SetMessager(&storeMsg) go webHelper() go web.Start(raftServer, webPort) } startClientTransport(info.ClientPort, clientSt) }
func main() { flag.Parse() if cpuprofile != "" { runCPUProfile() } if veryVerbose { verbose = true raft.SetLogLevel(raft.Debug) } parseCorsFlag() if machines != "" { cluster = strings.Split(machines, ",") } else if machinesFile != "" { b, err := ioutil.ReadFile(machinesFile) if err != nil { fatalf("Unable to read the given machines file: %s", err) } cluster = strings.Split(string(b), ",") } // Check TLS arguments raftTLSConfig, ok := tlsConfigFromInfo(argInfo.RaftTLS) if !ok { fatal("Please specify cert and key file or cert and key file and CAFile or none of the three") } etcdTLSConfig, ok := tlsConfigFromInfo(argInfo.EtcdTLS) if !ok { fatal("Please specify cert and key file or cert and key file and CAFile or none of the three") } argInfo.Name = strings.TrimSpace(argInfo.Name) if argInfo.Name == "" { fatal("ERROR: server name required. e.g. '-n=server_name'") } // Check host name arguments argInfo.RaftURL = sanitizeURL(argInfo.RaftURL, raftTLSConfig.Scheme) argInfo.EtcdURL = sanitizeURL(argInfo.EtcdURL, etcdTLSConfig.Scheme) argInfo.WebURL = sanitizeURL(argInfo.WebURL, "http") argInfo.RaftListenHost = sanitizeListenHost(argInfo.RaftListenHost, argInfo.RaftURL) argInfo.EtcdListenHost = sanitizeListenHost(argInfo.EtcdListenHost, argInfo.EtcdURL) // Read server info from file or grab it from user. if err := os.MkdirAll(dirPath, 0744); err != nil { fatalf("Unable to create path: %s", err) } info := getInfo(dirPath) // Create etcd key-value store etcdStore = store.CreateStore(maxSize) snapConf = newSnapshotConf() // Create etcd and raft server e = newEtcdServer(info.Name, info.EtcdURL, info.EtcdListenHost, &etcdTLSConfig, &info.EtcdTLS) r = newRaftServer(info.Name, info.RaftURL, info.RaftListenHost, &raftTLSConfig, &info.RaftTLS) startWebInterface() r.ListenAndServe() e.ListenAndServe() }