mirror of
				https://github.com/yggdrasil-network/yggdrasil-go.git
				synced 2025-11-04 11:15:07 +03: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
					
				
					 8 changed files with 48 additions and 34 deletions
				
			
		
							
								
								
									
										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…
	
	Add table
		Add a link
		
	
		Reference in a new issue