From 241acb367f11556d18a86830f5a609eba0b5be37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nagy=20K=C3=A1roly=20G=C3=A1briel?= Date: Mon, 31 May 2021 14:00:56 +0300 Subject: [PATCH] implement partial config generation. Closes #4 --- cmd/generate.go | 6 ++++-- wireguard/peers.go | 14 +++++++++++--- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/cmd/generate.go b/cmd/generate.go index 1bed7e7..f0d8585 100644 --- a/cmd/generate.go +++ b/cmd/generate.go @@ -34,8 +34,9 @@ var generateCmd = &cobra.Command{ Long: `Generate will create the configs file in the specified folder`, Run: func(cmd *cobra.Command, args []string) { out, _ := cmd.Flags().GetString("output") - id, _ := cmd.Flags().GetInt("id") - err := thePeers.GenerateConfigs(out, id) + id, _ := cmd.Flags().GetInt("network_id") + peername, _ := cmd.Flags().GetString("peer_name") + err := thePeers.GenerateConfigs(out, id, peername) if err != nil { fmt.Println("generate", err) } @@ -45,5 +46,6 @@ var generateCmd = &cobra.Command{ func init() { generateCmd.Flags().StringP("output", "o", "output", "Directory where to output configs.") generateCmd.Flags().IntP("network_id", "i", 0, "ID of the network to generate") + generateCmd.Flags().StringP("peer_name", "p", "", "Generate config for this peer") rootCmd.AddCommand(generateCmd) } diff --git a/wireguard/peers.go b/wireguard/peers.go index ae6cfbb..dabc4ac 100644 --- a/wireguard/peers.go +++ b/wireguard/peers.go @@ -131,13 +131,21 @@ func (p Peers) DeletePeer(pr string) { //GenerateConfigs will generate the Wireguard mesh //configs in the specified folder -func (p Peers) GenerateConfigs(folder string, id int) error { +func (p Peers) GenerateConfigs(folder string, id int, peername string) error { var err error if err = os.MkdirAll(folder, 0775); err != nil { return err } - for i := range p { - err = p.dumpConfig(p[i], folder, id) + if peername == "" { + for i := range p { + err = p.dumpConfig(p[i], folder, id) + } + } else { + for j := range p { + if p[j].Name == peername { + err = p.dumpConfig(p[j], folder, id) + } + } } return err }