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