mirror of
https://github.com/fluencelabs/tendermint
synced 2025-06-14 22:01:20 +00:00
configure laddr & seed node from command line.
This commit is contained in:
@ -21,8 +21,7 @@ var Config Config_
|
|||||||
|
|
||||||
func initFlags(printHelp *bool) {
|
func initFlags(printHelp *bool) {
|
||||||
flag.BoolVar(printHelp, "help", false, "Print this help message.")
|
flag.BoolVar(printHelp, "help", false, "Print this help message.")
|
||||||
flag.StringVar(&Config.IP, "ip", Config.IP, "Listen IP. (0.0.0.0 means any)")
|
flag.StringVar(&Config.LAddr, "laddr", Config.LAddr, "Listen address. (0.0.0.0:0 means any interface, any port)")
|
||||||
flag.IntVar(&Config.Port, "port", Config.Port, "Listen port. (0 means any)")
|
|
||||||
flag.StringVar(&Config.Seed, "seed", Config.Seed, "Address of seed node")
|
flag.StringVar(&Config.Seed, "seed", Config.Seed, "Address of seed node")
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -64,9 +63,8 @@ func init() {
|
|||||||
/* Default configuration */
|
/* Default configuration */
|
||||||
|
|
||||||
var defaultConfig = Config_{
|
var defaultConfig = Config_{
|
||||||
IP: "0.0.0.0",
|
LAddr: "0.0.0.0:0",
|
||||||
Port: 8770,
|
Seed: "",
|
||||||
Seed: "",
|
|
||||||
Db: DbConfig{
|
Db: DbConfig{
|
||||||
Type: "level",
|
Type: "level",
|
||||||
Dir: AppDir + "/data",
|
Dir: AppDir + "/data",
|
||||||
@ -77,8 +75,7 @@ var defaultConfig = Config_{
|
|||||||
/* Configuration types */
|
/* Configuration types */
|
||||||
|
|
||||||
type Config_ struct {
|
type Config_ struct {
|
||||||
IP string
|
LAddr string
|
||||||
Port int
|
|
||||||
Seed string
|
Seed string
|
||||||
Db DbConfig
|
Db DbConfig
|
||||||
Twilio TwilioConfig
|
Twilio TwilioConfig
|
||||||
@ -98,11 +95,11 @@ type DbConfig struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (cfg *Config_) validate() error {
|
func (cfg *Config_) validate() error {
|
||||||
if cfg.IP == "" {
|
if cfg.LAddr == "" {
|
||||||
return errors.New("IP must be set")
|
cfg.LAddr = defaultConfig.LAddr
|
||||||
}
|
}
|
||||||
if cfg.Port == 0 {
|
if cfg.Seed == "" {
|
||||||
return errors.New("Port must be set")
|
cfg.Seed = defaultConfig.Seed
|
||||||
}
|
}
|
||||||
if cfg.Db.Type == "" {
|
if cfg.Db.Type == "" {
|
||||||
return errors.New("Db.Type must be set")
|
return errors.New("Db.Type must be set")
|
||||||
|
2
log.go
2
log.go
@ -10,7 +10,7 @@ var log seelog.LoggerInterface
|
|||||||
func init() {
|
func init() {
|
||||||
// TODO: replace with configuration file in the ~/.tendermint directory.
|
// TODO: replace with configuration file in the ~/.tendermint directory.
|
||||||
config := `
|
config := `
|
||||||
<seelog type="asyncloop" minlevel="debug">
|
<seelog type="sync" minlevel="debug">
|
||||||
<outputs formatid="colored">
|
<outputs formatid="colored">
|
||||||
<console/>
|
<console/>
|
||||||
</outputs>
|
</outputs>
|
||||||
|
4
main.go
4
main.go
@ -1,7 +1,6 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
"os"
|
"os"
|
||||||
"os/signal"
|
"os/signal"
|
||||||
"time"
|
"time"
|
||||||
@ -176,7 +175,8 @@ func main() {
|
|||||||
|
|
||||||
// Create & start node
|
// Create & start node
|
||||||
n := NewNode()
|
n := NewNode()
|
||||||
l := p2p.NewDefaultListener("tcp", fmt.Sprintf("%v:%v", config.Config.IP, config.Config.Port))
|
log.Warnf(">> %v", config.Config.LAddr)
|
||||||
|
l := p2p.NewDefaultListener("tcp", config.Config.LAddr)
|
||||||
n.AddListener(l)
|
n.AddListener(l)
|
||||||
n.Start()
|
n.Start()
|
||||||
|
|
||||||
|
@ -32,38 +32,48 @@ type DefaultListener struct {
|
|||||||
|
|
||||||
const (
|
const (
|
||||||
numBufferedConnections = 10
|
numBufferedConnections = 10
|
||||||
|
defaultExternalPort = 8770
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewDefaultListener(protocol string, listenAddr string) Listener {
|
func splitHostPort(addr string) (host string, port int) {
|
||||||
listenHost, listenPortStr, err := net.SplitHostPort(listenAddr)
|
host, portStr, err := net.SplitHostPort(addr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
listenPort, err := strconv.Atoi(listenPortStr)
|
port, err = strconv.Atoi(portStr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
return host, port
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewDefaultListener(protocol string, lAddr string) Listener {
|
||||||
|
// Local listen IP & port
|
||||||
|
lAddrIP, lAddrPort := splitHostPort(lAddr)
|
||||||
|
|
||||||
|
// Create listener
|
||||||
|
listener, err := net.Listen(protocol, lAddr)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
// Actual listener local IP & port
|
||||||
|
listenerIP, listenerPort := splitHostPort(listener.Addr().String())
|
||||||
|
log.Infof("Local listener: %v:%v", listenerIP, listenerPort)
|
||||||
|
|
||||||
// Determine external address...
|
// Determine external address...
|
||||||
var extAddr *NetAddress
|
var extAddr *NetAddress
|
||||||
// If the listenHost is INADDR_ANY, try UPnP
|
// If the lAddrIP is INADDR_ANY, try UPnP
|
||||||
if listenHost == "" || listenHost == "0.0.0.0" {
|
if lAddrIP == "" || lAddrIP == "0.0.0.0" {
|
||||||
extAddr = getUPNPExternalAddress(listenPort, listenPort)
|
extAddr = getUPNPExternalAddress(lAddrPort, listenerPort)
|
||||||
}
|
}
|
||||||
// Otherwise just use the local address...
|
// Otherwise just use the local address...
|
||||||
if extAddr == nil {
|
if extAddr == nil {
|
||||||
extAddr = getNaiveExternalAddress(listenPort)
|
extAddr = getNaiveExternalAddress(listenerPort)
|
||||||
}
|
}
|
||||||
if extAddr == nil {
|
if extAddr == nil {
|
||||||
panic("Could not determine external address!")
|
panic("Could not determine external address!")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create listener
|
|
||||||
listener, err := net.Listen(protocol, listenAddr)
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
dl := &DefaultListener{
|
dl := &DefaultListener{
|
||||||
listener: listener,
|
listener: listener,
|
||||||
extAddr: extAddr,
|
extAddr: extAddr,
|
||||||
@ -135,6 +145,11 @@ func getUPNPExternalAddress(externalPort, internalPort int) *NetAddress {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// UPnP can't seem to get the external port, so let's just be explicit.
|
||||||
|
if externalPort == 0 {
|
||||||
|
externalPort = defaultExternalPort
|
||||||
|
}
|
||||||
|
|
||||||
externalPort, err = nat.AddPortMapping("tcp", externalPort, internalPort, "tendermint", 0)
|
externalPort, err = nat.AddPortMapping("tcp", externalPort, internalPort, "tendermint", 0)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Infof("Could not get UPNP external address: %v", err)
|
log.Infof("Could not get UPNP external address: %v", err)
|
||||||
|
Reference in New Issue
Block a user