github.com/braveheart12/insolar-09-08-19@v0.8.7/docker/genconfig/genconfig.go (about) 1 package main 2 3 import ( 4 "fmt" 5 "io/ioutil" 6 "os" 7 8 "gopkg.in/yaml.v2" 9 10 "github.com/insolar/insolar/configuration" 11 ) 12 13 // getenv + default value 14 func GetEnvDefault(key, defaultVal string) string { 15 val, ok := os.LookupEnv(key) 16 if !ok { 17 return defaultVal 18 } 19 return val 20 } 21 22 // Return '<host>:<port>' on public docker interface 23 func getURI(port uint) string { 24 host := GetEnvDefault("IP", "127.0.0.1") 25 return fmt.Sprintf("%s:%d", host, port) 26 } 27 28 const ( 29 defaultConfigPath = "/etc/insolar/insolard.yaml" 30 defaultTranportListenPort = 7900 31 defaultLogLevel = "info" 32 defaultMetricsListenPort = 8001 33 defaultRPCListenPort = 18182 34 defaultInsgorundListenPort = 18181 35 defaultAPIListenPort = 19191 36 defaultJaegerEndpointPort = 6831 37 defaultKeysPath = "/etc/insolar/keys.json" 38 defaultCertPath = "/etc/insolar/cert.json" 39 defaultDataDir = "/var/lib/insolar/" 40 defaultTransportFixedAddress = "" 41 ) 42 43 func main() { 44 hld := configuration.NewHolder() 45 err := hld.LoadFromFile(defaultConfigPath) 46 if err != nil { 47 fmt.Println("Failed to open configuration:") 48 fmt.Println(err.Error()) 49 os.Exit(1) 50 } 51 cfg := hld.Configuration 52 53 insgorundListen := GetEnvDefault("INSGORUND_ENDPOINT", "insgorund:"+string(defaultInsgorundListenPort)) 54 55 insolardMetricsListen := getURI(defaultMetricsListenPort) 56 insolardRPCListen := getURI(defaultRPCListenPort) 57 insolardAPIListen := getURI(defaultAPIListenPort) 58 59 insolardTransportListen := GetEnvDefault("INSOLARD_TRANSPORT_LISTEN", getURI(defaultTranportListenPort)) 60 insolardLogLevel := GetEnvDefault("INSOLARD_LOG_LEVEL", defaultLogLevel) 61 insolardTracerEndpoint := GetEnvDefault("INSOLARD_JAEGER_ENDPOINT", getURI(defaultJaegerEndpointPort)) 62 insolardTransportFixedAddress := GetEnvDefault("INSOLARD_TRANSPORT_FIXED_ADDRESS", defaultTransportFixedAddress) 63 64 fmt.Println("[debug] cfg->host->transport->address ==", insolardTransportListen) 65 fmt.Println("[debug] cfg->log->level ==", insolardLogLevel) 66 fmt.Println("[debug] cfg->log->formatter == json") 67 fmt.Println("[debug] cfg->metrics->listenaddress ==", insolardMetricsListen) 68 fmt.Println("[debug] cfg->logicrunner->rpclisten ==", insolardRPCListen) 69 fmt.Println("[debug] cfg->logicrunner->goplugin->runnerlisten ==", insgorundListen) 70 fmt.Println("[debug] cfg->apirunner->address ==", insolardAPIListen) 71 fmt.Println("[debug] cfg->tracer->jaeger->agentendpoint ==", insolardTracerEndpoint) 72 73 // transport related 74 cfg.Host.Transport.Address = insolardTransportListen 75 cfg.Host.Transport.FixedPublicAddress = insolardTransportFixedAddress 76 // logger related 77 cfg.Log.Level = insolardLogLevel 78 // metrics related 79 cfg.Metrics.ListenAddress = insolardMetricsListen 80 cfg.Log.Formatter = "json" // ?? 81 // logic runner related 82 cfg.LogicRunner.RPCListen = insolardRPCListen 83 cfg.LogicRunner.GoPlugin.RunnerListen = insgorundListen 84 // api runner related 85 cfg.APIRunner.Address = insolardAPIListen 86 // with tracer 87 cfg.Tracer.Jaeger.AgentEndpoint = insolardTracerEndpoint 88 // unstructured 89 cfg.KeysPath = defaultKeysPath 90 cfg.CertificatePath = defaultCertPath 91 cfg.Ledger.Storage.DataDirectory = defaultDataDir 92 93 data, err := yaml.Marshal(cfg) 94 if err != nil { 95 fmt.Println("Failed to marshall configuration:") 96 fmt.Println(err.Error()) 97 os.Exit(1) 98 } 99 err = ioutil.WriteFile(defaultConfigPath, data, 0666) 100 if err != nil { 101 fmt.Println("Failed to save configuration:") 102 fmt.Println(err.Error()) 103 os.Exit(1) 104 } 105 os.Exit(0) 106 }