增加设置指定访问某个用户的服务/代理
This commit is contained in:
parent
2406ecdfea
commit
18c0792b85
@ -380,6 +380,8 @@ frp 提供了一种新的代理类型 **xtcp** 用于应对在希望传输大量
|
||||
role = visitor
|
||||
# 要访问的 xtcp 代理的名字
|
||||
server_name = p2p_ssh
|
||||
# 要访问的 xtcp 代理属于哪个用户
|
||||
server_user = test
|
||||
sk = abcdefg
|
||||
# 绑定本地端口用于访问 ssh 服务
|
||||
bind_addr = 127.0.0.1
|
||||
|
@ -45,6 +45,7 @@ var (
|
||||
|
||||
serverAddr string
|
||||
user string
|
||||
serverUser string // Used to choose custom user's service
|
||||
protocol string
|
||||
token string
|
||||
logLevel string
|
||||
@ -158,6 +159,7 @@ func parseClientCommonCfgFromCmd() (cfg config.ClientCommonConf, err error) {
|
||||
}
|
||||
|
||||
cfg.User = user
|
||||
cfg.ServerUser = serverUser
|
||||
cfg.Protocol = protocol
|
||||
cfg.LogLevel = logLevel
|
||||
cfg.LogFile = logFile
|
||||
@ -231,3 +233,13 @@ func startService(cfg config.ClientCommonConf, pxyCfgs map[string]config.ProxyCo
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func getProxyPrefix(customServerUser, customUser string) string{
|
||||
if customServerUser != "" {
|
||||
return customServerUser + "."
|
||||
}
|
||||
if customUser != "" {
|
||||
return customUser + "."
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
@ -27,6 +27,7 @@ import (
|
||||
func init() {
|
||||
stcpCmd.PersistentFlags().StringVarP(&serverAddr, "server_addr", "s", "127.0.0.1:7000", "frp server's address")
|
||||
stcpCmd.PersistentFlags().StringVarP(&user, "user", "u", "", "user")
|
||||
stcpCmd.PersistentFlags().StringVarP(&serverUser, "server_user", "", "", "server user")
|
||||
stcpCmd.PersistentFlags().StringVarP(&protocol, "protocol", "p", "tcp", "tcp or kcp or websocket")
|
||||
stcpCmd.PersistentFlags().StringVarP(&token, "token", "t", "", "auth token")
|
||||
stcpCmd.PersistentFlags().StringVarP(&logLevel, "log_level", "", "info", "log level")
|
||||
@ -61,12 +62,9 @@ var stcpCmd = &cobra.Command{
|
||||
proxyConfs := make(map[string]config.ProxyConf)
|
||||
visitorConfs := make(map[string]config.VisitorConf)
|
||||
|
||||
var prefix string
|
||||
if user != "" {
|
||||
prefix = user + "."
|
||||
}
|
||||
|
||||
if role == "server" {
|
||||
prefix := getProxyPrefix("", user)
|
||||
|
||||
cfg := &config.StcpProxyConf{}
|
||||
cfg.ProxyName = prefix + proxyName
|
||||
cfg.ProxyType = consts.StcpProxy
|
||||
@ -83,6 +81,8 @@ var stcpCmd = &cobra.Command{
|
||||
}
|
||||
proxyConfs[cfg.ProxyName] = cfg
|
||||
} else if role == "visitor" {
|
||||
prefix := getProxyPrefix(serverUser, user)
|
||||
|
||||
cfg := &config.StcpVisitorConf{}
|
||||
cfg.ProxyName = prefix + proxyName
|
||||
cfg.ProxyType = consts.StcpProxy
|
||||
|
@ -27,6 +27,7 @@ import (
|
||||
func init() {
|
||||
sudpCmd.PersistentFlags().StringVarP(&serverAddr, "server_addr", "s", "127.0.0.1:7000", "frp server's address")
|
||||
sudpCmd.PersistentFlags().StringVarP(&user, "user", "u", "", "user")
|
||||
stcpCmd.PersistentFlags().StringVarP(&serverUser, "server_user", "", "", "server user")
|
||||
sudpCmd.PersistentFlags().StringVarP(&protocol, "protocol", "p", "tcp", "tcp or kcp or websocket")
|
||||
sudpCmd.PersistentFlags().StringVarP(&token, "token", "t", "", "auth token")
|
||||
sudpCmd.PersistentFlags().StringVarP(&logLevel, "log_level", "", "info", "log level")
|
||||
@ -61,12 +62,9 @@ var sudpCmd = &cobra.Command{
|
||||
proxyConfs := make(map[string]config.ProxyConf)
|
||||
visitorConfs := make(map[string]config.VisitorConf)
|
||||
|
||||
var prefix string
|
||||
if user != "" {
|
||||
prefix = user + "."
|
||||
}
|
||||
|
||||
if role == "server" {
|
||||
prefix := getProxyPrefix("", user)
|
||||
|
||||
cfg := &config.SudpProxyConf{}
|
||||
cfg.ProxyName = prefix + proxyName
|
||||
cfg.ProxyType = consts.SudpProxy
|
||||
@ -83,6 +81,8 @@ var sudpCmd = &cobra.Command{
|
||||
}
|
||||
proxyConfs[cfg.ProxyName] = cfg
|
||||
} else if role == "visitor" {
|
||||
prefix := getProxyPrefix(serverUser, user)
|
||||
|
||||
cfg := &config.SudpVisitorConf{}
|
||||
cfg.ProxyName = prefix + proxyName
|
||||
cfg.ProxyType = consts.SudpProxy
|
||||
|
@ -27,6 +27,7 @@ import (
|
||||
func init() {
|
||||
xtcpCmd.PersistentFlags().StringVarP(&serverAddr, "server_addr", "s", "127.0.0.1:7000", "frp server's address")
|
||||
xtcpCmd.PersistentFlags().StringVarP(&user, "user", "u", "", "user")
|
||||
stcpCmd.PersistentFlags().StringVarP(&serverUser, "server_user", "", "", "server user")
|
||||
xtcpCmd.PersistentFlags().StringVarP(&protocol, "protocol", "p", "tcp", "tcp or kcp or websocket")
|
||||
xtcpCmd.PersistentFlags().StringVarP(&token, "token", "t", "", "auth token")
|
||||
xtcpCmd.PersistentFlags().StringVarP(&logLevel, "log_level", "", "info", "log level")
|
||||
@ -61,12 +62,9 @@ var xtcpCmd = &cobra.Command{
|
||||
proxyConfs := make(map[string]config.ProxyConf)
|
||||
visitorConfs := make(map[string]config.VisitorConf)
|
||||
|
||||
var prefix string
|
||||
if user != "" {
|
||||
prefix = user + "."
|
||||
}
|
||||
|
||||
if role == "server" {
|
||||
prefix := getProxyPrefix("", user)
|
||||
|
||||
cfg := &config.XtcpProxyConf{}
|
||||
cfg.ProxyName = prefix + proxyName
|
||||
cfg.ProxyType = consts.XtcpProxy
|
||||
@ -83,6 +81,8 @@ var xtcpCmd = &cobra.Command{
|
||||
}
|
||||
proxyConfs[cfg.ProxyName] = cfg
|
||||
} else if role == "visitor" {
|
||||
prefix := getProxyPrefix(serverUser, user)
|
||||
|
||||
cfg := &config.XtcpVisitorConf{}
|
||||
cfg.ProxyName = prefix + proxyName
|
||||
cfg.ProxyType = consts.XtcpProxy
|
||||
|
@ -85,9 +85,14 @@ type ClientCommonConf struct {
|
||||
// value is true.
|
||||
TcpMux bool `json:"tcp_mux"`
|
||||
// User specifies a prefix for proxy names to distinguish them from other
|
||||
// clients. If this value is not "", proxy names will automatically be
|
||||
// changed to "{user}.{proxy_name}". By default, this value is "".
|
||||
// clients when the value of "server_user" not set. If this value is not "",
|
||||
// proxy names will automatically be changed to "{user}.{proxy_name}". By
|
||||
// default, this value is "".
|
||||
User string `json:"user"`
|
||||
// User specifies a custom prefix for proxy names. If this value is not "",
|
||||
// proxy names will automatically be changed to "{server_user}.{proxy_name}".
|
||||
// By default, this value is "".
|
||||
ServerUser string `json:"server_user"`
|
||||
// DnsServer specifies a DNS server address for FRPC to use. If this value
|
||||
// is "", the default DNS will be used. By default, this value is "".
|
||||
DnsServer string `json:"dns_server"`
|
||||
@ -137,6 +142,7 @@ func GetDefaultClientConf() ClientCommonConf {
|
||||
PoolCount: 1,
|
||||
TcpMux: true,
|
||||
User: "",
|
||||
ServerUser: "",
|
||||
DnsServer: "",
|
||||
LoginFailExit: true,
|
||||
Start: make(map[string]struct{}),
|
||||
@ -244,6 +250,10 @@ func UnmarshalClientConfFromIni(content string) (cfg ClientCommonConf, err error
|
||||
cfg.User = tmpStr
|
||||
}
|
||||
|
||||
if tmpStr, ok = conf.Get("common", "server_user"); ok {
|
||||
cfg.ServerUser = tmpStr
|
||||
}
|
||||
|
||||
if tmpStr, ok = conf.Get("common", "dns_server"); ok {
|
||||
cfg.DnsServer = tmpStr
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user