| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- // Package core provides an entry point to use Xray core functionalities.
- //
- // Xray makes it possible to accept incoming network connections with certain
- // protocol, process the data, and send them through another connection with
- // the same or a difference protocol on demand.
- //
- // It may be configured to work with multiple protocols at the same time, and
- // uses the internal router to tunnel through different inbound and outbound
- // connections.
- package core
- import (
- "fmt"
- "runtime"
- "runtime/debug"
- "github.com/xtls/xray-core/common/serial"
- )
- var (
- Version_x byte = 26
- Version_y byte = 2
- Version_z byte = 6
- )
- var (
- build = "Custom"
- codename = "Xray, Penetrates Everything."
- 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 {
- return fmt.Sprintf("%v.%v.%v", Version_x, Version_y, Version_z)
- }
- // VersionStatement returns a list of strings representing the full version info.
- func VersionStatement() []string {
- return []string{
- serial.Concat("Xray ", Version(), " (", codename, ") ", build, " (", runtime.Version(), " ", runtime.GOOS, "/", runtime.GOARCH, ")"),
- intro,
- }
- }
|