package config import ( "os" "path" "path/filepath" "strings" cmn "github.com/tendermint/tmlibs/common" ) /****** these are for production settings ***********/ func EnsureRoot(rootDir string) { if err := cmn.EnsureDir(rootDir, 0700); err != nil { cmn.PanicSanity(err.Error()) } if err := cmn.EnsureDir(rootDir+"/data", 0700); err != nil { cmn.PanicSanity(err.Error()) } configFilePath := path.Join(rootDir, "config.toml") // Write default config file if missing. if !cmn.FileExists(configFilePath) { // Ask user for moniker // moniker := cfg.Prompt("Type hostname: ", "anonymous") cmn.MustWriteFile(configFilePath, []byte(defaultConfig("anonymous")), 0644) } } var defaultConfigTmpl = `# This is a TOML config file. # For more information, see https://github.com/toml-lang/toml proxy_app = "tcp://127.0.0.1:46658" moniker = "__MONIKER__" fast_sync = true db_backend = "leveldb" log_level = "state:info,*:error" [rpc] laddr = "tcp://0.0.0.0:46657" [p2p] laddr = "tcp://0.0.0.0:46656" seeds = "" ` func defaultConfig(moniker string) string { return strings.Replace(defaultConfigTmpl, "__MONIKER__", moniker, -1) } /****** these are for test settings ***********/ func ResetTestRoot(testName string) *Config { rootDir := os.ExpandEnv("$HOME/.tendermint_test") rootDir = filepath.Join(rootDir, testName) // Remove ~/.tendermint_test_bak if cmn.FileExists(rootDir + "_bak") { if err := os.RemoveAll(rootDir + "_bak"); err != nil { cmn.PanicSanity(err.Error()) } } // Move ~/.tendermint_test to ~/.tendermint_test_bak if cmn.FileExists(rootDir) { if err := os.Rename(rootDir, rootDir+"_bak"); err != nil { cmn.PanicSanity(err.Error()) } } // Create new dir if err := cmn.EnsureDir(rootDir, 0700); err != nil { cmn.PanicSanity(err.Error()) } if err := cmn.EnsureDir(rootDir+"/data", 0700); err != nil { cmn.PanicSanity(err.Error()) } configFilePath := path.Join(rootDir, "config.toml") genesisFilePath := path.Join(rootDir, "genesis.json") privFilePath := path.Join(rootDir, "priv_validator.json") // Write default config file if missing. if !cmn.FileExists(configFilePath) { // Ask user for moniker cmn.MustWriteFile(configFilePath, []byte(testConfig("anonymous")), 0644) } if !cmn.FileExists(genesisFilePath) { cmn.MustWriteFile(genesisFilePath, []byte(testGenesis), 0644) } // we always overwrite the priv val cmn.MustWriteFile(privFilePath, []byte(testPrivValidator), 0644) config := TestConfig().SetRoot(rootDir) return config } var testConfigTmpl = `# This is a TOML config file. # For more information, see https://github.com/toml-lang/toml proxy_app = "dummy" moniker = "__MONIKER__" fast_sync = false db_backend = "memdb" log_level = "info" [rpc] laddr = "tcp://0.0.0.0:36657" [p2p] laddr = "tcp://0.0.0.0:36656" seeds = "" ` func testConfig(moniker string) (testConfig string) { testConfig = strings.Replace(testConfigTmpl, "__MONIKER__", moniker, -1) return } var testGenesis = `{ "genesis_time": "0001-01-01T00:00:00.000Z", "chain_id": "tendermint_test", "validators": [ { "pub_key": { "type": "ed25519", "data":"3B3069C422E19688B45CBFAE7BB009FC0FA1B1EA86593519318B7214853803C8" }, "power": 10, "name": "" } ], "app_hash": "" }` var testPrivValidator = `{ "address": "D028C9981F7A87F3093672BF0D5B0E2A1B3ED456", "pub_key": { "type": "ed25519", "data": "3B3069C422E19688B45CBFAE7BB009FC0FA1B1EA86593519318B7214853803C8" }, "priv_key": { "type": "ed25519", "data": "27F82582AEFAE7AB151CFB01C48BB6C1A0DA78F9BDDA979A9F70A84D074EB07D3B3069C422E19688B45CBFAE7BB009FC0FA1B1EA86593519318B7214853803C8" }, "last_height": 0, "last_round": 0, "last_step": 0 }`