diff --git a/conf/frpc.ini b/conf/frpc.ini index 4ae5a4ab..967ce9a8 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 da871860..b91bf02f 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 03eabde2..2d62ad79 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 12f58248..8fe799a9 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 }