mirror of
https://github.com/fatedier/frp.git
synced 2026-03-14 05:49:15 +08:00
- strings.CutPrefix instead of HasPrefix+TrimPrefix (naming, legacy) - slices.Contains instead of manual loop (plugin/server) - min/max builtins instead of manual comparisons (nathole)
33 lines
870 B
Go
33 lines
870 B
Go
package naming
|
|
|
|
import "strings"
|
|
|
|
// AddUserPrefix builds the wire-level proxy name for frps by prefixing user.
|
|
func AddUserPrefix(user, name string) string {
|
|
if user == "" {
|
|
return name
|
|
}
|
|
return user + "." + name
|
|
}
|
|
|
|
// StripUserPrefix converts a wire-level proxy name to an internal raw name.
|
|
// It strips only one exact "{user}." prefix.
|
|
func StripUserPrefix(user, name string) string {
|
|
if user == "" {
|
|
return name
|
|
}
|
|
if trimmed, ok := strings.CutPrefix(name, user+"."); ok {
|
|
return trimmed
|
|
}
|
|
return name
|
|
}
|
|
|
|
// BuildTargetServerProxyName resolves visitor target proxy name for wire-level
|
|
// protocol messages. serverUser overrides local user when set.
|
|
func BuildTargetServerProxyName(localUser, serverUser, serverName string) string {
|
|
if serverUser != "" {
|
|
return AddUserPrefix(serverUser, serverName)
|
|
}
|
|
return AddUserPrefix(localUser, serverName)
|
|
}
|