From e26285eefc36fd887c881cd68299e74c72eedbc2 Mon Sep 17 00:00:00 2001 From: bingtianbaihua Date: Fri, 30 Dec 2016 16:16:07 +0800 Subject: [PATCH] added heartbeat conf --- conf/frpc.ini | 5 +++++ conf/frps.ini | 4 ++++ src/models/client/config.go | 28 ++++++++++++++++++++++++++++ src/models/server/config.go | 10 ++++++++++ 4 files changed, 47 insertions(+) diff --git a/conf/frpc.ini b/conf/frpc.ini index 4ae5a4a..967ce9a 100644 --- a/conf/frpc.ini +++ b/conf/frpc.ini @@ -22,6 +22,11 @@ auth_token = 123 # for privilege mode privilege_token = 12345678 +# [optional] heartbeat conf +# heartbeat_interval default value is 20, heartbeat_timeout default value is 90 +heartbeat_interval = 20 +heartbeat_timeout = 90 + # ssh is the proxy name same as server's configuration [ssh] diff --git a/conf/frps.ini b/conf/frps.ini index da87186..b91bf02 100644 --- a/conf/frps.ini +++ b/conf/frps.ini @@ -30,6 +30,10 @@ log_max_days = 3 privilege_mode = true privilege_token = 12345678 +# [optional]heartbeat conf +# heartbeat_timeout default value is 90 +heartbeat_timeout = 90 + # only allow frpc to bind ports you list, if you set nothing, there won't be any limit privilege_allow_ports = 2000-3000,3001,3003,4000-50000 diff --git a/src/models/client/config.go b/src/models/client/config.go index 03eabde..2d62ad7 100644 --- a/src/models/client/config.go +++ b/src/models/client/config.go @@ -98,6 +98,34 @@ func LoadConf(confFile string) (err error) { authToken = tmpStr } + tmpStr, ok = conf.Get("common", "heartbeat_timeout") + if ok { + v, err := strconv.ParseInt(tmpStr, 10, 64) + if err != nil { + return fmt.Errorf("Parse conf error: heartbeat_timeout is incorrect") + } else { + HeartBeatTimeout = v + } + } + + tmpStr, ok = conf.Get("common", "heartbeat_interval") + if ok { + v, err := strconv.ParseInt(tmpStr, 10, 64) + if err != nil { + return fmt.Errorf("Parse conf error: heartbeat_interval is incorrect") + } else { + HeartBeatInterval = v + } + } + + if HeartBeatInterval <= 0 { + return fmt.Errorf("Parse conf error: heartbeat_interval is incorrect") + } + + if HeartBeatTimeout < HeartBeatInterval { + return fmt.Errorf("Parse conf error: heartbeat_timeout is incorrect, heartbeat_timeout is less than heartbeat_interval") + } + // proxies for name, section := range conf { if name != "common" { diff --git a/src/models/server/config.go b/src/models/server/config.go index 12f5824..8fe799a 100644 --- a/src/models/server/config.go +++ b/src/models/server/config.go @@ -237,6 +237,16 @@ func loadCommonConf(confFile string) error { if ok { SubDomainHost = strings.ToLower(strings.TrimSpace(SubDomainHost)) } + + tmpStr, ok = conf.Get("common", "heartbeat_timeout") + if ok { + v, err := strconv.ParseInt(tmpStr, 10, 64) + if err != nil { + return fmt.Errorf("Parse conf error: heartbeat_timeout is incorrect") + } else { + HeartBeatTimeout = v + } + } return nil }