mirror of
https://github.com/yggdrasil-network/yggdrasil-go.git
synced 2024-11-30 13:35:19 +00:00
Merge pull request #497 from Slex/issues/488
Implement feature from https://github.com/yggdrasil-network/yggdrasil…
This commit is contained in:
commit
f26f071901
2
build
2
build
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
set -ef
|
set -ef
|
||||||
|
|
||||||
PKGSRC=${PKGSRC:-github.com/yggdrasil-network/yggdrasil-go/src/yggdrasil}
|
PKGSRC=${PKGSRC:-github.com/yggdrasil-network/yggdrasil-go/src/version}
|
||||||
PKGNAME=${PKGNAME:-$(sh contrib/semver/name.sh)}
|
PKGNAME=${PKGNAME:-$(sh contrib/semver/name.sh)}
|
||||||
PKGVER=${PKGVER:-$(sh contrib/semver/version.sh --bare)}
|
PKGVER=${PKGVER:-$(sh contrib/semver/version.sh --bare)}
|
||||||
|
|
||||||
|
@ -25,6 +25,7 @@ import (
|
|||||||
"github.com/yggdrasil-network/yggdrasil-go/src/crypto"
|
"github.com/yggdrasil-network/yggdrasil-go/src/crypto"
|
||||||
"github.com/yggdrasil-network/yggdrasil-go/src/multicast"
|
"github.com/yggdrasil-network/yggdrasil-go/src/multicast"
|
||||||
"github.com/yggdrasil-network/yggdrasil-go/src/tuntap"
|
"github.com/yggdrasil-network/yggdrasil-go/src/tuntap"
|
||||||
|
"github.com/yggdrasil-network/yggdrasil-go/src/version"
|
||||||
"github.com/yggdrasil-network/yggdrasil-go/src/yggdrasil"
|
"github.com/yggdrasil-network/yggdrasil-go/src/yggdrasil"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -119,7 +120,7 @@ func main() {
|
|||||||
normaliseconf := flag.Bool("normaliseconf", false, "use in combination with either -useconf or -useconffile, outputs your configuration normalised")
|
normaliseconf := flag.Bool("normaliseconf", false, "use in combination with either -useconf or -useconffile, outputs your configuration normalised")
|
||||||
confjson := flag.Bool("json", false, "print configuration from -genconf or -normaliseconf as JSON instead of HJSON")
|
confjson := flag.Bool("json", false, "print configuration from -genconf or -normaliseconf as JSON instead of HJSON")
|
||||||
autoconf := flag.Bool("autoconf", false, "automatic mode (dynamic IP, peer with IPv6 neighbors)")
|
autoconf := flag.Bool("autoconf", false, "automatic mode (dynamic IP, peer with IPv6 neighbors)")
|
||||||
version := flag.Bool("version", false, "prints the version of this build")
|
ver := flag.Bool("version", false, "prints the version of this build")
|
||||||
logging := flag.String("logging", "info,warn,error", "comma-separated list of logging levels to enable")
|
logging := flag.String("logging", "info,warn,error", "comma-separated list of logging levels to enable")
|
||||||
logto := flag.String("logto", "stdout", "file path to log to, \"syslog\" or \"stdout\"")
|
logto := flag.String("logto", "stdout", "file path to log to, \"syslog\" or \"stdout\"")
|
||||||
flag.Parse()
|
flag.Parse()
|
||||||
@ -127,10 +128,10 @@ func main() {
|
|||||||
var cfg *config.NodeConfig
|
var cfg *config.NodeConfig
|
||||||
var err error
|
var err error
|
||||||
switch {
|
switch {
|
||||||
case *version:
|
case *ver:
|
||||||
fmt.Println("Build name:", yggdrasil.BuildName())
|
fmt.Println("Build name:", version.BuildName())
|
||||||
fmt.Println("Build version:", yggdrasil.BuildVersion())
|
fmt.Println("Build version:", version.BuildVersion())
|
||||||
os.Exit(0)
|
return
|
||||||
case *autoconf:
|
case *autoconf:
|
||||||
// Use an autoconf-generated config, this will give us random keys and
|
// Use an autoconf-generated config, this will give us random keys and
|
||||||
// port numbers, and will use an automatically selected TUN/TAP interface.
|
// port numbers, and will use an automatically selected TUN/TAP interface.
|
||||||
@ -174,7 +175,7 @@ func main() {
|
|||||||
case "stdout":
|
case "stdout":
|
||||||
logger = log.New(os.Stdout, "", log.Flags())
|
logger = log.New(os.Stdout, "", log.Flags())
|
||||||
case "syslog":
|
case "syslog":
|
||||||
if syslogger, err := gsyslog.NewLogger(gsyslog.LOG_NOTICE, "DAEMON", yggdrasil.BuildName()); err == nil {
|
if syslogger, err := gsyslog.NewLogger(gsyslog.LOG_NOTICE, "DAEMON", version.BuildName()); err == nil {
|
||||||
logger = log.New(syslogger, "", log.Flags())
|
logger = log.New(syslogger, "", log.Flags())
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
|
@ -19,6 +19,7 @@ import (
|
|||||||
|
|
||||||
"github.com/hjson/hjson-go"
|
"github.com/hjson/hjson-go"
|
||||||
"github.com/yggdrasil-network/yggdrasil-go/src/defaults"
|
"github.com/yggdrasil-network/yggdrasil-go/src/defaults"
|
||||||
|
"github.com/yggdrasil-network/yggdrasil-go/src/version"
|
||||||
)
|
)
|
||||||
|
|
||||||
type admin_info map[string]interface{}
|
type admin_info map[string]interface{}
|
||||||
@ -53,9 +54,17 @@ func main() {
|
|||||||
server := flag.String("endpoint", endpoint, "Admin socket endpoint")
|
server := flag.String("endpoint", endpoint, "Admin socket endpoint")
|
||||||
injson := flag.Bool("json", false, "Output in JSON format (as opposed to pretty-print)")
|
injson := flag.Bool("json", false, "Output in JSON format (as opposed to pretty-print)")
|
||||||
verbose := flag.Bool("v", false, "Verbose output (includes public keys)")
|
verbose := flag.Bool("v", false, "Verbose output (includes public keys)")
|
||||||
|
ver := flag.Bool("version", false, "Prints the version of this build")
|
||||||
flag.Parse()
|
flag.Parse()
|
||||||
args := flag.Args()
|
args := flag.Args()
|
||||||
|
|
||||||
|
if *ver {
|
||||||
|
fmt.Println("Build name:", version.BuildName())
|
||||||
|
fmt.Println("Build version:", version.BuildVersion())
|
||||||
|
fmt.Println("To get the version number of the running Yggdrasil node, run", os.Args[0], "getSelf")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
if len(args) == 0 {
|
if len(args) == 0 {
|
||||||
flag.Usage()
|
flag.Usage()
|
||||||
return
|
return
|
||||||
|
@ -18,6 +18,7 @@ import (
|
|||||||
"github.com/yggdrasil-network/yggdrasil-go/src/config"
|
"github.com/yggdrasil-network/yggdrasil-go/src/config"
|
||||||
"github.com/yggdrasil-network/yggdrasil-go/src/crypto"
|
"github.com/yggdrasil-network/yggdrasil-go/src/crypto"
|
||||||
"github.com/yggdrasil-network/yggdrasil-go/src/util"
|
"github.com/yggdrasil-network/yggdrasil-go/src/util"
|
||||||
|
"github.com/yggdrasil-network/yggdrasil-go/src/version"
|
||||||
"github.com/yggdrasil-network/yggdrasil-go/src/yggdrasil"
|
"github.com/yggdrasil-network/yggdrasil-go/src/yggdrasil"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -86,8 +87,8 @@ func (a *AdminSocket) Init(c *yggdrasil.Core, state *config.NodeState, log *log.
|
|||||||
"self": Info{
|
"self": Info{
|
||||||
ip: Info{
|
ip: Info{
|
||||||
"box_pub_key": c.EncryptionPublicKey(),
|
"box_pub_key": c.EncryptionPublicKey(),
|
||||||
"build_name": yggdrasil.BuildName(),
|
"build_name": version.BuildName(),
|
||||||
"build_version": yggdrasil.BuildVersion(),
|
"build_version": version.BuildVersion(),
|
||||||
"coords": fmt.Sprintf("%v", c.Coords()),
|
"coords": fmt.Sprintf("%v", c.Coords()),
|
||||||
"subnet": subnet.String(),
|
"subnet": subnet.String(),
|
||||||
},
|
},
|
||||||
|
22
src/version/version.go
Normal file
22
src/version/version.go
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
package version
|
||||||
|
|
||||||
|
var buildName string
|
||||||
|
var buildVersion string
|
||||||
|
|
||||||
|
// BuildName gets the current build name. This is usually injected if built
|
||||||
|
// from git, or returns "unknown" otherwise.
|
||||||
|
func BuildName() string {
|
||||||
|
if buildName == "" {
|
||||||
|
return "yggdrasilctl"
|
||||||
|
}
|
||||||
|
return buildName
|
||||||
|
}
|
||||||
|
|
||||||
|
// BuildVersion gets the current build version. This is usually injected if
|
||||||
|
// built from git, or returns "unknown" otherwise.
|
||||||
|
func BuildVersion() string {
|
||||||
|
if buildVersion == "" {
|
||||||
|
return "unknown"
|
||||||
|
}
|
||||||
|
return buildVersion
|
||||||
|
}
|
@ -241,24 +241,6 @@ func (c *Core) GetSessions() []Session {
|
|||||||
return sessions
|
return sessions
|
||||||
}
|
}
|
||||||
|
|
||||||
// BuildName gets the current build name. This is usually injected if built
|
|
||||||
// from git, or returns "unknown" otherwise.
|
|
||||||
func BuildName() string {
|
|
||||||
if buildName == "" {
|
|
||||||
return "yggdrasil"
|
|
||||||
}
|
|
||||||
return buildName
|
|
||||||
}
|
|
||||||
|
|
||||||
// BuildVersion gets the current build version. This is usually injected if
|
|
||||||
// built from git, or returns "unknown" otherwise.
|
|
||||||
func BuildVersion() string {
|
|
||||||
if buildVersion == "" {
|
|
||||||
return "unknown"
|
|
||||||
}
|
|
||||||
return buildVersion
|
|
||||||
}
|
|
||||||
|
|
||||||
// ConnListen returns a listener for Yggdrasil session connections.
|
// ConnListen returns a listener for Yggdrasil session connections.
|
||||||
func (c *Core) ConnListen() (*Listener, error) {
|
func (c *Core) ConnListen() (*Listener, error) {
|
||||||
c.sessions.listenerMutex.Lock()
|
c.sessions.listenerMutex.Lock()
|
||||||
|
@ -10,11 +10,9 @@ import (
|
|||||||
|
|
||||||
"github.com/yggdrasil-network/yggdrasil-go/src/config"
|
"github.com/yggdrasil-network/yggdrasil-go/src/config"
|
||||||
"github.com/yggdrasil-network/yggdrasil-go/src/crypto"
|
"github.com/yggdrasil-network/yggdrasil-go/src/crypto"
|
||||||
|
"github.com/yggdrasil-network/yggdrasil-go/src/version"
|
||||||
)
|
)
|
||||||
|
|
||||||
var buildName string
|
|
||||||
var buildVersion string
|
|
||||||
|
|
||||||
// The Core object represents the Yggdrasil node. You should create a Core
|
// The Core object represents the Yggdrasil node. You should create a Core
|
||||||
// object for each Yggdrasil node you plan to run.
|
// object for each Yggdrasil node you plan to run.
|
||||||
type Core struct {
|
type Core struct {
|
||||||
@ -164,10 +162,10 @@ func (c *Core) Start(nc *config.NodeConfig, log *log.Logger) (*config.NodeState,
|
|||||||
Previous: *nc,
|
Previous: *nc,
|
||||||
}
|
}
|
||||||
|
|
||||||
if name := BuildName(); name != "unknown" {
|
if name := version.BuildName(); name != "unknown" {
|
||||||
c.log.Infoln("Build name:", name)
|
c.log.Infoln("Build name:", name)
|
||||||
}
|
}
|
||||||
if version := BuildVersion(); version != "unknown" {
|
if version := version.BuildVersion(); version != "unknown" {
|
||||||
c.log.Infoln("Build version:", version)
|
c.log.Infoln("Build version:", version)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9,6 +9,7 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/yggdrasil-network/yggdrasil-go/src/crypto"
|
"github.com/yggdrasil-network/yggdrasil-go/src/crypto"
|
||||||
|
"github.com/yggdrasil-network/yggdrasil-go/src/version"
|
||||||
)
|
)
|
||||||
|
|
||||||
type nodeinfo struct {
|
type nodeinfo struct {
|
||||||
@ -99,8 +100,8 @@ func (m *nodeinfo) setNodeInfo(given interface{}, privacy bool) error {
|
|||||||
m.myNodeInfoMutex.Lock()
|
m.myNodeInfoMutex.Lock()
|
||||||
defer m.myNodeInfoMutex.Unlock()
|
defer m.myNodeInfoMutex.Unlock()
|
||||||
defaults := map[string]interface{}{
|
defaults := map[string]interface{}{
|
||||||
"buildname": BuildName(),
|
"buildname": version.BuildName(),
|
||||||
"buildversion": BuildVersion(),
|
"buildversion": version.BuildVersion(),
|
||||||
"buildplatform": runtime.GOOS,
|
"buildplatform": runtime.GOOS,
|
||||||
"buildarch": runtime.GOARCH,
|
"buildarch": runtime.GOARCH,
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user