diff --git a/src/frp/utils/version/version.go b/src/frp/utils/version/version.go new file mode 100644 index 00000000..8f1020e4 --- /dev/null +++ b/src/frp/utils/version/version.go @@ -0,0 +1,44 @@ +package version + +import ( + "strconv" + "strings" +) + +var version string = "0.2.0" + +func Full() string { + return version +} + +func Proto(v string) int64 { + arr := strings.Split(v, ".") + if len(arr) < 2 { + return 0 + } + res, _ := strconv.ParseInt(arr[0], 10, 64) + return res +} + +func Major(v string) int64 { + arr := strings.Split(v, ".") + if len(arr) < 2 { + return 0 + } + res, _ := strconv.ParseInt(arr[1], 10, 64) + return res +} + +func Minor(v string) int64 { + arr := strings.Split(v, ".") + if len(arr) < 2 { + return 0 + } + res, _ := strconv.ParseInt(arr[2], 10, 64) + return res +} + +// add every case there if server will not accept client's protocol and return false +func Compat(client string, server string) bool { + return true +} diff --git a/src/frp/utils/version/version_test.go b/src/frp/utils/version/version_test.go new file mode 100644 index 00000000..417cc54c --- /dev/null +++ b/src/frp/utils/version/version_test.go @@ -0,0 +1,42 @@ +package version + +import ( + "fmt" + "strconv" + "strings" + "testing" +) + +func TestFull(t *testing.T) { + version := Full() + arr := strings.Split(version, ".") + if len(arr) != 3 { + t.Errorf("Version string error: %s", version) + } + + proto, err := strconv.ParseInt(arr[0], 10, 64) + if err != nil || proto < 0 { + t.Errorf("Version proto error") + } + + major, err := strconv.ParseInt(arr[1], 10, 64) + if err != nil || major < 0 { + t.Errorf("Version major error") + } + + minor, err := strconv.ParseInt(arr[2], 10, 64) + if err != nil || minor < 0 { + t.Errorf("Version minor error") + } +} + +func TestVersion(t *testing.T) { + proto := Proto(Full()) + major := Major(Full()) + minor := Minor(Full()) + parseVerion := fmt.Sprintf("%d.%d.%d", proto, major, minor) + version := Full() + if parseVerion != version { + t.Errorf("Get version incorrect, version [%s], parseVerion [%s]", version, parseVerion) + } +}