|
|
@@ -12,6 +12,7 @@ package core
|
|
|
import (
|
|
|
"fmt"
|
|
|
"runtime"
|
|
|
+ "runtime/debug"
|
|
|
|
|
|
"github.com/xtls/xray-core/common/serial"
|
|
|
)
|
|
|
@@ -28,6 +29,34 @@ var (
|
|
|
intro = "A unified platform for anti-censorship."
|
|
|
)
|
|
|
|
|
|
+func init() {
|
|
|
+ // Manually injected
|
|
|
+ if build != "Custom" {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ info, ok := debug.ReadBuildInfo()
|
|
|
+ if !ok {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ var isDirty bool
|
|
|
+ var foundBuild bool
|
|
|
+ for _, setting := range info.Settings {
|
|
|
+ switch setting.Key {
|
|
|
+ case "vcs.revision":
|
|
|
+ if len(setting.Value) < 7 {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ build = setting.Value[:7]
|
|
|
+ foundBuild = true
|
|
|
+ case "vcs.modified":
|
|
|
+ isDirty = setting.Value == "true"
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if isDirty && foundBuild {
|
|
|
+ build += "-dirty"
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
// Version returns Xray's version as a string, in the form of "x.y.z" where x, y and z are numbers.
|
|
|
// ".z" part may be omitted in regular releases.
|
|
|
func Version() string {
|