mirror of
https://github.com/fatedier/frp.git
synced 2026-03-20 23:43:30 +08:00
add persistent proxy/visitor store with CRUD API and web UI (#5188)
This commit is contained in:
33
pkg/naming/names.go
Normal file
33
pkg/naming/names.go
Normal file
@@ -0,0 +1,33 @@
|
||||
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
|
||||
}
|
||||
prefix := user + "."
|
||||
if strings.HasPrefix(name, prefix) {
|
||||
return strings.TrimPrefix(name, prefix)
|
||||
}
|
||||
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)
|
||||
}
|
||||
27
pkg/naming/names_test.go
Normal file
27
pkg/naming/names_test.go
Normal file
@@ -0,0 +1,27 @@
|
||||
package naming
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestAddUserPrefix(t *testing.T) {
|
||||
require := require.New(t)
|
||||
require.Equal("test", AddUserPrefix("", "test"))
|
||||
require.Equal("alice.test", AddUserPrefix("alice", "test"))
|
||||
}
|
||||
|
||||
func TestStripUserPrefix(t *testing.T) {
|
||||
require := require.New(t)
|
||||
require.Equal("test", StripUserPrefix("", "test"))
|
||||
require.Equal("test", StripUserPrefix("alice", "alice.test"))
|
||||
require.Equal("alice.test", StripUserPrefix("alice", "alice.alice.test"))
|
||||
require.Equal("bob.test", StripUserPrefix("alice", "bob.test"))
|
||||
}
|
||||
|
||||
func TestBuildTargetServerProxyName(t *testing.T) {
|
||||
require := require.New(t)
|
||||
require.Equal("alice.test", BuildTargetServerProxyName("alice", "", "test"))
|
||||
require.Equal("bob.test", BuildTargetServerProxyName("alice", "bob", "test"))
|
||||
}
|
||||
Reference in New Issue
Block a user