fix: signal key transfer

This commit is contained in:
braginini
2021-04-15 14:57:15 +02:00
parent cb60efef8d
commit 303f955e32
4 changed files with 79 additions and 33 deletions

View File

@@ -1,12 +1,10 @@
package cmd
import "golang.zx2c4.com/wireguard/wgctrl/wgtypes"
type Config struct {
// Wireguard private key of local peer
PrivateKey wgtypes.Key
PrivateKey string
// configured remote peers (Wireguard public keys)
Peers []string
Peers string
StunURL string
TurnURL string
TurnUser string

View File

@@ -7,9 +7,11 @@ import (
log "github.com/sirupsen/logrus"
"github.com/spf13/cobra"
"github.com/wiretrustee/wiretrustee/engine"
"github.com/wiretrustee/wiretrustee/signal"
"golang.zx2c4.com/wireguard/wgctrl/wgtypes"
sig "github.com/wiretrustee/wiretrustee/signal"
"os"
"os/signal"
"strings"
"syscall"
)
const (
@@ -19,6 +21,8 @@ const (
var (
cfgFile string
config = &Config{}
upCmd = &cobra.Command{
Use: "up",
Short: "start wiretrustee",
@@ -29,51 +33,69 @@ var (
os.Exit(ExitSetupFailed)
}*/
c := defaultConfig()
//c := defaultConfig()
//todo print config
//todo connect to signal
ctx := context.Background()
signalClient, err := signal.NewClient(c.SignalAddr, ctx)
signalClient, err := sig.NewClient(config.SignalAddr, ctx)
if err != nil {
log.Errorf("error while connecting to the Signal Exchange Service %s: %s", c.SignalAddr, err)
log.Errorf("error while connecting to the Signal Exchange Service %s: %s", config.SignalAddr, err)
os.Exit(ExitSetupFailed)
}
//todo proper close handling
defer func() { signalClient.Close() }()
stunURL, _ := ice.ParseURL(fmt.Sprintf("stun:%s", c.StunURL))
turnURL, _ := ice.ParseURL(fmt.Sprintf("turn:%s", c.StunURL))
turnURL.Password = c.TurnPwd
turnURL.Username = c.TurnUser
stunURL, _ := ice.ParseURL(config.StunURL)
turnURL, _ := ice.ParseURL(config.TurnURL)
turnURL.Password = config.TurnPwd
turnURL.Username = config.TurnUser
urls := []*ice.URL{turnURL, stunURL}
s := c.PrivateKey.PublicKey().String()
engine := engine.NewEngine(signalClient, urls, config.WgIface, config.WgAddr)
engine := engine.NewEngine(signalClient, urls, c.WgIface, c.WgAddr)
err = engine.Start(s, c.Peers)
err = engine.Start(config.PrivateKey, strings.Split(config.Peers, ","))
signalClient.WaitConnected()
//signalClient.WaitConnected()
select {}
SetupCloseHandler(signalClient)
},
}
)
func SetupCloseHandler(signalClient *sig.Client) {
c := make(chan os.Signal)
signal.Notify(c, os.Interrupt, syscall.SIGTERM)
<-c
fmt.Println("\r- Ctrl+C pressed in Terminal")
signalClient.Close()
os.Exit(0)
}
func init() {
upCmd.PersistentFlags().StringVar(&cfgFile, "config", "", "config file (default is $HOME/.wiretrustee.yaml)")
//upCmd.PersistentFlags().StringVar(&cfgFile, "config", "", "config file (default is $HOME/.wiretrustee.yaml)")
upCmd.PersistentFlags().StringVar(&config.WgAddr, "address", "", "IP address of a peer in CIDR notation (e.g. 10.30.30.1/24)")
upCmd.PersistentFlags().StringVar(&config.PrivateKey, "key", "", "Peers Wireguard private key")
upCmd.PersistentFlags().StringVar(&config.Peers, "peers", "", "A comma separated list of peers (Wireguard public keys) to connect to")
upCmd.MarkPersistentFlagRequired("key")
upCmd.MarkPersistentFlagRequired("ip")
upCmd.MarkPersistentFlagRequired("peers")
upCmd.PersistentFlags().StringVar(&config.WgIface, "interface", "wiretrustee0", "Wireguard interface name")
upCmd.PersistentFlags().StringVar(&config.StunURL, "stun", "stun:stun.wiretrustee.com:3468", "A comma separated list of STUN servers including protocol (e.g. stun:stun.wiretrustee.com:3468")
upCmd.PersistentFlags().StringVar(&config.TurnURL, "turn", "turn:stun.wiretrustee.com:3468", "A comma separated list of TURN servers including protocol (e.g. stun:stun.wiretrustee.com:3468")
upCmd.PersistentFlags().StringVar(&config.TurnPwd, "turnUser", "wiretrustee", "A comma separated list of TURN servers including protocol (e.g. stun:stun.wiretrustee.com:3468")
upCmd.PersistentFlags().StringVar(&config.TurnUser, "turnPwd", "wt2021hello@", "A comma separated list of TURN servers including protocol (e.g. stun:stun.wiretrustee.com:3468")
upCmd.PersistentFlags().StringVar(&config.SignalAddr, "signal", "signal.wiretrustee.com:10000", "Signal server URL (e.g. signal.wiretrustee.com:10000")
//upCmd.MarkPersistentFlagRequired("config")
fmt.Printf("")
}
func defaultConfig() *Config {
key, _ := wgtypes.ParseKey("OCVgR9VJT4y4tBscRQ6SYHWocQlykUMCDI6APjp3ilY=")
return &Config{
PrivateKey: key,
Peers: []string{"uRoZAk1g90WXXvazH0SS6URZ2/Kmhx+hbVhUt2ipzlU="},
PrivateKey: "OCVgR9VJT4y4tBscRQ6SYHWocQlykUMCDI6APjp3ilY=",
Peers: "uRoZAk1g90WXXvazH0SS6URZ2/Kmhx+hbVhUt2ipzlU=",
SignalAddr: "signal.wiretrustee.com:10000",
StunURL: "stun.wiretrustee.com:3468",
TurnURL: "stun.wiretrustee.com:3468",