From 540183a8812107d752f1d2fa1667b817b8b3fb31 Mon Sep 17 00:00:00 2001 From: Dan Ballard Date: Mon, 30 Nov 2020 18:41:13 -0800 Subject: [PATCH] add GetVersion to acn and torProvider --- acn.go | 3 +++ localProvider.go | 4 ++++ tor/torProvider.go | 25 ++++++++++++++++++++++--- 3 files changed, 29 insertions(+), 3 deletions(-) diff --git a/acn.go b/acn.go index c9ae536..3da4f52 100644 --- a/acn.go +++ b/acn.go @@ -55,5 +55,8 @@ type ACN interface { // Get PID GetPID() (int, error) + // GetVersion returns a string of what the ACN returns when asked for a version + GetVersion() string + Close() } diff --git a/localProvider.go b/localProvider.go index a9f67dc..5a08baa 100644 --- a/localProvider.go +++ b/localProvider.go @@ -47,6 +47,10 @@ func (lp *localProvider) GetPID() (int, error) { return 0, nil } +func (lp *localProvider) GetVersion() string { + return "0.1" +} + // WaitTillBootstrapped Blocks until underlying network is bootstrapped func (lp *localProvider) WaitTillBootstrapped() { } diff --git a/tor/torProvider.go b/tor/torProvider.go index 3556f36..21c07b5 100644 --- a/tor/torProvider.go +++ b/tor/torProvider.go @@ -137,6 +137,22 @@ func (tp *torProvider) GetBootstrapStatus() (int, string) { return progress, status } +func (tp *torProvider) GetVersion() string { + tp.lock.Lock() + defer tp.lock.Unlock() + + if tp.t == nil { + return "No Tor" + } + + pinfo, err := tp.t.Control.ProtocolInfo() + + if err == nil { + return pinfo.TorVersion + } + return "No Tor" +} + // WaitTillBootstrapped Blocks until underlying network is bootstrapped func (tp *torProvider) WaitTillBootstrapped() { for true { @@ -290,9 +306,12 @@ func (tp *torProvider) checkVersion() error { if err == nil { log.Debugln("connected to control port") pinfo, err := controlport.ProtocolInfo() - if err == nil && minTorVersionReqs(pinfo.TorVersion) { - log.Debugln("OK version " + pinfo.TorVersion) - return nil + if err == nil { + if minTorVersionReqs(pinfo.TorVersion) { + log.Debugln("OK version " + pinfo.TorVersion) + return nil + } + return fmt.Errorf("Tor version not supported: %v", pinfo.TorVersion) } } }