diff --git a/pkg/vpn/main.go b/pkg/vpn/main.go index de8e61f2f6ea178acf69b3dccf07a7a2e5dcc281..9ddd9fd1eb5a8025243d3e999ec354259e9b1ffe 100644 --- a/pkg/vpn/main.go +++ b/pkg/vpn/main.go @@ -29,6 +29,7 @@ import ( // Bitmask holds the bitmask client data type Bitmask struct { tempdir string + onGateway string statusCh chan string managementClient *openvpn.MgmtClient bonafide *bonafide.Bonafide @@ -49,7 +50,7 @@ func Init() (*Bitmask, error) { if err != nil { return nil, err } - b := Bitmask{tempdir, statusCh, nil, bonafide, launch, "", nil} + b := Bitmask{tempdir, "", statusCh, nil, bonafide, launch, "", nil} /* TODO -- we still want to do this, since it resets the fw/vpn if running diff --git a/pkg/vpn/status.go b/pkg/vpn/status.go index a4d7ada3cc8ff1eedae8ec25f1b730946195e90f..cc2fb62d960a22141e41538ffd902653bde1428c 100644 --- a/pkg/vpn/status.go +++ b/pkg/vpn/status.go @@ -18,6 +18,7 @@ package vpn import ( "fmt" "log" + "strings" "github.com/apparentlymart/go-openvpn-mgmt/openvpn" ) @@ -66,10 +67,14 @@ func (b *Bitmask) eventHandler(eventCh <-chan openvpn.Event) { if !ok { continue } - status, ok := statusNames[stateEvent.NewState()] + statusName := stateEvent.NewState() + status, ok := statusNames[statusName] if ok { b.statusCh <- status } + if statusName == "CONNECTED" { + b.onGateway = strings.Split(stateEvent.String(), ": ")[1] + } } b.statusCh <- Off }