mirror of
https://gitee.com/IrisVega/frp.git
synced 2024-11-01 22:31:29 +08:00
Merge pull request #334 from fatedier/start
client: add login_fail_exit params, default is true
This commit is contained in:
commit
150682ec63
@ -2,8 +2,8 @@ sudo: false
|
|||||||
language: go
|
language: go
|
||||||
|
|
||||||
go:
|
go:
|
||||||
- 1.7.5
|
- 1.7.x
|
||||||
- 1.8
|
- 1.8.x
|
||||||
|
|
||||||
install:
|
install:
|
||||||
- make
|
- make
|
||||||
|
@ -106,9 +106,20 @@ func NewControl(svr *Service, pxyCfgs map[string]config.ProxyConf) *Control {
|
|||||||
// 7. In controler(): start new reader(), writer(), manager()
|
// 7. In controler(): start new reader(), writer(), manager()
|
||||||
// controler() will keep running
|
// controler() will keep running
|
||||||
func (ctl *Control) Run() error {
|
func (ctl *Control) Run() error {
|
||||||
err := ctl.login()
|
for {
|
||||||
if err != nil {
|
err := ctl.login()
|
||||||
return err
|
if err != nil {
|
||||||
|
// if login_fail_exit is true, just exit this program
|
||||||
|
// otherwise sleep a while and continues relogin to server
|
||||||
|
if config.ClientCommonCfg.LoginFailExit {
|
||||||
|
return err
|
||||||
|
} else {
|
||||||
|
ctl.Warn("login to server fail: %v", err)
|
||||||
|
time.Sleep(30 * time.Second)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
break
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
go ctl.controler()
|
go ctl.controler()
|
||||||
|
@ -1,92 +1,9 @@
|
|||||||
# [common] is integral section
|
|
||||||
[common]
|
[common]
|
||||||
# A literal address or host name for IPv6 must be enclosed
|
server_addr = 127.0.0.1
|
||||||
# in square brackets, as in "[::1]:80", "[ipv6-host]:http" or "[ipv6-host%zone]:80"
|
|
||||||
server_addr = 0.0.0.0
|
|
||||||
server_port = 7000
|
server_port = 7000
|
||||||
|
|
||||||
# if you want to connect frps by http proxy, you can set http_proxy here or in global environment variables
|
|
||||||
# http_proxy = http://user:pwd@192.168.1.128:8080
|
|
||||||
|
|
||||||
# console or real logFile path like ./frpc.log
|
|
||||||
log_file = ./frpc.log
|
|
||||||
|
|
||||||
# trace, debug, info, warn, error
|
|
||||||
log_level = info
|
|
||||||
|
|
||||||
log_max_days = 3
|
|
||||||
|
|
||||||
# for authentication
|
|
||||||
privilege_token = 12345678
|
|
||||||
|
|
||||||
# connections will be established in advance, default value is zero
|
|
||||||
pool_count = 5
|
|
||||||
|
|
||||||
# if tcp stream multiplexing is used, default is true, it must be same with frps
|
|
||||||
tcp_mux = true
|
|
||||||
|
|
||||||
# your proxy name will be changed to {user}.{proxy}
|
|
||||||
user = your_name
|
|
||||||
|
|
||||||
# heartbeat configure, it's not recommended to modify the default value
|
|
||||||
# the default value of heartbeat_interval is 10 and heartbeat_timeout is 90
|
|
||||||
# heartbeat_interval = 30
|
|
||||||
# heartbeat_timeout = 90
|
|
||||||
|
|
||||||
# ssh is the proxy name same as server's configuration
|
|
||||||
# if user in [common] section is not empty, it will be changed to {user}.{proxy} such as your_name.ssh
|
|
||||||
[ssh]
|
[ssh]
|
||||||
# tcp | udp | http | https, default is tcp
|
|
||||||
type = tcp
|
type = tcp
|
||||||
local_ip = 127.0.0.1
|
local_ip = 127.0.0.1
|
||||||
local_port = 22
|
local_port = 22
|
||||||
# true or false, if true, messages between frps and frpc will be encrypted, default is false
|
remote_port = 6000
|
||||||
use_encryption = false
|
|
||||||
# if true, message will be compressed
|
|
||||||
use_compression = false
|
|
||||||
# remote port listen by frps
|
|
||||||
remote_port = 6001
|
|
||||||
|
|
||||||
[dns]
|
|
||||||
type = udp
|
|
||||||
local_ip = 114.114.114.114
|
|
||||||
local_port = 53
|
|
||||||
remote_port = 6002
|
|
||||||
use_encryption = false
|
|
||||||
use_compression = false
|
|
||||||
|
|
||||||
# Resolve your domain names to [server_addr] so you can use http://web01.yourdomain.com to browse web01 and http://web02.yourdomain.com to browse web02
|
|
||||||
[web01]
|
|
||||||
type = http
|
|
||||||
local_ip = 127.0.0.1
|
|
||||||
local_port = 80
|
|
||||||
use_encryption = false
|
|
||||||
use_compression = true
|
|
||||||
# http username and password are safety certification for http protocol
|
|
||||||
# if not set, you can access this custom_domains without certification
|
|
||||||
http_user = admin
|
|
||||||
http_pwd = admin
|
|
||||||
# if domain for frps is frps.com, then you can access [web01] proxy by URL http://test.frps.com
|
|
||||||
subdomain = web01
|
|
||||||
custom_domains = web02.yourdomain.com
|
|
||||||
# locations is only useful for http type
|
|
||||||
locations = /,/pic
|
|
||||||
host_header_rewrite = example.com
|
|
||||||
|
|
||||||
[web02]
|
|
||||||
type = https
|
|
||||||
local_ip = 127.0.0.1
|
|
||||||
local_port = 8000
|
|
||||||
use_encryption = false
|
|
||||||
use_compression = false
|
|
||||||
subdomain = web01
|
|
||||||
custom_domains = web02.yourdomain.com
|
|
||||||
|
|
||||||
[unix_domain]
|
|
||||||
type = tcp
|
|
||||||
remote_port = 6001
|
|
||||||
# if plugin is defined, local_ip and local_port is useless
|
|
||||||
# plugin will handle connections got from frps
|
|
||||||
plugin = unix_domain_socket
|
|
||||||
# params set with prefix "plugin_" that plugin needed
|
|
||||||
plugin_unix_path = /var/run/docker.sock
|
|
||||||
|
96
conf/frpc_full.ini
Normal file
96
conf/frpc_full.ini
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
# [common] is integral section
|
||||||
|
[common]
|
||||||
|
# A literal address or host name for IPv6 must be enclosed
|
||||||
|
# in square brackets, as in "[::1]:80", "[ipv6-host]:http" or "[ipv6-host%zone]:80"
|
||||||
|
server_addr = 0.0.0.0
|
||||||
|
server_port = 7000
|
||||||
|
|
||||||
|
# if you want to connect frps by http proxy, you can set http_proxy here or in global environment variables
|
||||||
|
# http_proxy = http://user:pwd@192.168.1.128:8080
|
||||||
|
|
||||||
|
# console or real logFile path like ./frpc.log
|
||||||
|
log_file = ./frpc.log
|
||||||
|
|
||||||
|
# trace, debug, info, warn, error
|
||||||
|
log_level = info
|
||||||
|
|
||||||
|
log_max_days = 3
|
||||||
|
|
||||||
|
# for authentication
|
||||||
|
privilege_token = 12345678
|
||||||
|
|
||||||
|
# connections will be established in advance, default value is zero
|
||||||
|
pool_count = 5
|
||||||
|
|
||||||
|
# if tcp stream multiplexing is used, default is true, it must be same with frps
|
||||||
|
tcp_mux = true
|
||||||
|
|
||||||
|
# your proxy name will be changed to {user}.{proxy}
|
||||||
|
user = your_name
|
||||||
|
|
||||||
|
# decide if exit program when first login failed, otherwise continuous relogin to frps
|
||||||
|
# default is true
|
||||||
|
login_fail_exit = true
|
||||||
|
|
||||||
|
# heartbeat configure, it's not recommended to modify the default value
|
||||||
|
# the default value of heartbeat_interval is 10 and heartbeat_timeout is 90
|
||||||
|
# heartbeat_interval = 30
|
||||||
|
# heartbeat_timeout = 90
|
||||||
|
|
||||||
|
# ssh is the proxy name same as server's configuration
|
||||||
|
# if user in [common] section is not empty, it will be changed to {user}.{proxy} such as your_name.ssh
|
||||||
|
[ssh]
|
||||||
|
# tcp | udp | http | https, default is tcp
|
||||||
|
type = tcp
|
||||||
|
local_ip = 127.0.0.1
|
||||||
|
local_port = 22
|
||||||
|
# true or false, if true, messages between frps and frpc will be encrypted, default is false
|
||||||
|
use_encryption = false
|
||||||
|
# if true, message will be compressed
|
||||||
|
use_compression = false
|
||||||
|
# remote port listen by frps
|
||||||
|
remote_port = 6001
|
||||||
|
|
||||||
|
[dns]
|
||||||
|
type = udp
|
||||||
|
local_ip = 114.114.114.114
|
||||||
|
local_port = 53
|
||||||
|
remote_port = 6002
|
||||||
|
use_encryption = false
|
||||||
|
use_compression = false
|
||||||
|
|
||||||
|
# Resolve your domain names to [server_addr] so you can use http://web01.yourdomain.com to browse web01 and http://web02.yourdomain.com to browse web02
|
||||||
|
[web01]
|
||||||
|
type = http
|
||||||
|
local_ip = 127.0.0.1
|
||||||
|
local_port = 80
|
||||||
|
use_encryption = false
|
||||||
|
use_compression = true
|
||||||
|
# http username and password are safety certification for http protocol
|
||||||
|
# if not set, you can access this custom_domains without certification
|
||||||
|
http_user = admin
|
||||||
|
http_pwd = admin
|
||||||
|
# if domain for frps is frps.com, then you can access [web01] proxy by URL http://test.frps.com
|
||||||
|
subdomain = web01
|
||||||
|
custom_domains = web02.yourdomain.com
|
||||||
|
# locations is only useful for http type
|
||||||
|
locations = /,/pic
|
||||||
|
host_header_rewrite = example.com
|
||||||
|
|
||||||
|
[web02]
|
||||||
|
type = https
|
||||||
|
local_ip = 127.0.0.1
|
||||||
|
local_port = 8000
|
||||||
|
use_encryption = false
|
||||||
|
use_compression = false
|
||||||
|
subdomain = web01
|
||||||
|
custom_domains = web02.yourdomain.com
|
||||||
|
|
||||||
|
[unix_domain_socket]
|
||||||
|
type = tcp
|
||||||
|
remote_port = 6001
|
||||||
|
# if plugin is defined, local_ip and local_port is useless
|
||||||
|
# plugin will handle connections got from frps
|
||||||
|
plugin = unix_domain_socket
|
||||||
|
# params set with prefix "plugin_" that plugin needed
|
||||||
|
plugin_unix_path = /var/run/docker.sock
|
@ -1,10 +0,0 @@
|
|||||||
[common]
|
|
||||||
server_addr = 0.0.0.0
|
|
||||||
server_port = 7000
|
|
||||||
#privilege_token = 12345678
|
|
||||||
|
|
||||||
[ssh]
|
|
||||||
type = tcp
|
|
||||||
local_ip = 127.0.0.1
|
|
||||||
local_port = 22
|
|
||||||
remote_port = 6000
|
|
@ -1,51 +1,2 @@
|
|||||||
# [common] is integral section
|
|
||||||
[common]
|
[common]
|
||||||
# A literal address or host name for IPv6 must be enclosed
|
|
||||||
# in square brackets, as in "[::1]:80", "[ipv6-host]:http" or "[ipv6-host%zone]:80"
|
|
||||||
bind_addr = 0.0.0.0
|
|
||||||
bind_port = 7000
|
bind_port = 7000
|
||||||
|
|
||||||
# if you want to support virtual host, you must set the http port for listening (optional)
|
|
||||||
vhost_http_port = 80
|
|
||||||
vhost_https_port = 443
|
|
||||||
|
|
||||||
# if you want to configure or reload frps by dashboard, dashboard_port must be set
|
|
||||||
dashboard_port = 7500
|
|
||||||
|
|
||||||
# dashboard user and pwd for basic auth protect, if not set, both default value is admin
|
|
||||||
dashboard_user = admin
|
|
||||||
dashboard_pwd = admin
|
|
||||||
|
|
||||||
# dashboard assets directory(only for debug mode)
|
|
||||||
# assets_dir = ./static
|
|
||||||
# console or real logFile path like ./frps.log
|
|
||||||
log_file = ./frps.log
|
|
||||||
|
|
||||||
# trace, debug, info, warn, error
|
|
||||||
log_level = info
|
|
||||||
|
|
||||||
log_max_days = 3
|
|
||||||
|
|
||||||
# privilege mode is the only supported mode since v0.10.0
|
|
||||||
privilege_token = 12345678
|
|
||||||
|
|
||||||
# heartbeat configure, it's not recommended to modify the default value
|
|
||||||
# the default value of heartbeat_timeout 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
|
|
||||||
|
|
||||||
# pool_count in each proxy will change to max_pool_count if they exceed the maximum value
|
|
||||||
max_pool_count = 5
|
|
||||||
|
|
||||||
# authentication_timeout means the timeout interval (seconds) when the frpc connects frps
|
|
||||||
# if authentication_timeout is zero, the time is not verified, default is 900s
|
|
||||||
authentication_timeout = 900
|
|
||||||
|
|
||||||
# if subdomain_host is not empty, you can set subdomain when type is http or https in frpc's configure file
|
|
||||||
# when subdomain is test, the host used by routing is test.frps.com
|
|
||||||
subdomain_host = frps.com
|
|
||||||
|
|
||||||
# if tcp stream multiplexing is used, default is true
|
|
||||||
tcp_mux = true
|
|
||||||
|
51
conf/frps_full.ini
Normal file
51
conf/frps_full.ini
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
# [common] is integral section
|
||||||
|
[common]
|
||||||
|
# A literal address or host name for IPv6 must be enclosed
|
||||||
|
# in square brackets, as in "[::1]:80", "[ipv6-host]:http" or "[ipv6-host%zone]:80"
|
||||||
|
bind_addr = 0.0.0.0
|
||||||
|
bind_port = 7000
|
||||||
|
|
||||||
|
# if you want to support virtual host, you must set the http port for listening (optional)
|
||||||
|
vhost_http_port = 80
|
||||||
|
vhost_https_port = 443
|
||||||
|
|
||||||
|
# if you want to configure or reload frps by dashboard, dashboard_port must be set
|
||||||
|
dashboard_port = 7500
|
||||||
|
|
||||||
|
# dashboard user and pwd for basic auth protect, if not set, both default value is admin
|
||||||
|
dashboard_user = admin
|
||||||
|
dashboard_pwd = admin
|
||||||
|
|
||||||
|
# dashboard assets directory(only for debug mode)
|
||||||
|
# assets_dir = ./static
|
||||||
|
# console or real logFile path like ./frps.log
|
||||||
|
log_file = ./frps.log
|
||||||
|
|
||||||
|
# trace, debug, info, warn, error
|
||||||
|
log_level = info
|
||||||
|
|
||||||
|
log_max_days = 3
|
||||||
|
|
||||||
|
# privilege mode is the only supported mode since v0.10.0
|
||||||
|
privilege_token = 12345678
|
||||||
|
|
||||||
|
# heartbeat configure, it's not recommended to modify the default value
|
||||||
|
# the default value of heartbeat_timeout 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
|
||||||
|
|
||||||
|
# pool_count in each proxy will change to max_pool_count if they exceed the maximum value
|
||||||
|
max_pool_count = 5
|
||||||
|
|
||||||
|
# authentication_timeout means the timeout interval (seconds) when the frpc connects frps
|
||||||
|
# if authentication_timeout is zero, the time is not verified, default is 900s
|
||||||
|
authentication_timeout = 900
|
||||||
|
|
||||||
|
# if subdomain_host is not empty, you can set subdomain when type is http or https in frpc's configure file
|
||||||
|
# when subdomain is test, the host used by routing is test.frps.com
|
||||||
|
subdomain_host = frps.com
|
||||||
|
|
||||||
|
# if tcp stream multiplexing is used, default is true
|
||||||
|
tcp_mux = true
|
@ -1,7 +0,0 @@
|
|||||||
[common]
|
|
||||||
bind_addr = 0.0.0.0
|
|
||||||
bind_port = 7000
|
|
||||||
vhost_http_port = 80
|
|
||||||
vhost_https_port = 443
|
|
||||||
dashboard_port = 7500
|
|
||||||
#privilege_token = 12345678
|
|
@ -38,6 +38,7 @@ type ClientCommonConf struct {
|
|||||||
PoolCount int
|
PoolCount int
|
||||||
TcpMux bool
|
TcpMux bool
|
||||||
User string
|
User string
|
||||||
|
LoginFailExit bool
|
||||||
HeartBeatInterval int64
|
HeartBeatInterval int64
|
||||||
HeartBeatTimeout int64
|
HeartBeatTimeout int64
|
||||||
}
|
}
|
||||||
@ -56,6 +57,7 @@ func GetDeaultClientCommonConf() *ClientCommonConf {
|
|||||||
PoolCount: 1,
|
PoolCount: 1,
|
||||||
TcpMux: true,
|
TcpMux: true,
|
||||||
User: "",
|
User: "",
|
||||||
|
LoginFailExit: true,
|
||||||
HeartBeatInterval: 30,
|
HeartBeatInterval: 30,
|
||||||
HeartBeatTimeout: 90,
|
HeartBeatTimeout: 90,
|
||||||
}
|
}
|
||||||
@ -134,6 +136,13 @@ func LoadClientCommonConf(conf ini.File) (cfg *ClientCommonConf, err error) {
|
|||||||
cfg.User = tmpStr
|
cfg.User = tmpStr
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tmpStr, ok = conf.Get("common", "login_fail_exit")
|
||||||
|
if ok && tmpStr == "false" {
|
||||||
|
cfg.LoginFailExit = false
|
||||||
|
} else {
|
||||||
|
cfg.LoginFailExit = true
|
||||||
|
}
|
||||||
|
|
||||||
tmpStr, ok = conf.Get("common", "heartbeat_timeout")
|
tmpStr, ok = conf.Get("common", "heartbeat_timeout")
|
||||||
if ok {
|
if ok {
|
||||||
v, err = strconv.ParseInt(tmpStr, 10, 64)
|
v, err = strconv.ParseInt(tmpStr, 10, 64)
|
||||||
|
Loading…
Reference in New Issue
Block a user