Add --all flag to routes enable command to enable all advertised routes
@@ -16,6 +16,9 @@ func init() {
if err != nil {
log.Fatalf(err.Error())
}
+
+ enableRouteCmd.Flags().BoolP("all", "a", false, "Enable all routes advertised by the node")
+
routesCmd.AddCommand(listRoutesCmd)
routesCmd.AddCommand(enableRouteCmd)
}
@@ -71,24 +74,64 @@ var enableRouteCmd = &cobra.Command{
Use: "enable node-name route",
Short: "Allows exposing a route declared by this node to the rest of the nodes",
Args: func(cmd *cobra.Command, args []string) error {
+ all, err := cmd.Flags().GetBool("all")
+ if err != nil {
+ log.Fatalf("Error getting namespace: %s", err)
+ }
+
+ if all {
+ if len(args) < 1 {
+ return fmt.Errorf("Missing parameters")
+ }
+ return nil
+ } else {
if len(args) < 2 {
return fmt.Errorf("Missing parameters")
}
return nil
+ }
},
Run: func(cmd *cobra.Command, args []string) {
n, err := cmd.Flags().GetString("namespace")
if err != nil {
log.Fatalf("Error getting namespace: %s", err)
}
+
o, _ := cmd.Flags().GetString("output")
+ all, err := cmd.Flags().GetBool("all")
+ if err != nil {
+ log.Fatalf("Error getting namespace: %s", err)
+ }
+
h, err := getHeadscaleApp()
if err != nil {
log.Fatalf("Error initializing: %s", err)
}
+ if all {
+ availableRoutes, err := h.GetAdvertisedNodeRoutes(n, args[0])
+ if err != nil {
+ fmt.Println(err)
+ return
+ }
+
+ for _, availableRoute := range *availableRoutes {
+ err = h.EnableNodeRoute(n, args[0], availableRoute.String())
+ if err != nil {
+ fmt.Println(err)
+ return
+ }
+
+ if strings.HasPrefix(o, "json") {
+ JsonOutput(availableRoute, err, o)
+ } else {
+ fmt.Printf("Enabled route %s\n", availableRoute)
+ }
+ }
+ } else {
err = h.EnableNodeRoute(n, args[0], args[1])
+
if strings.HasPrefix(o, "json") {
JsonOutput(args[1], err, o)
return
@@ -99,5 +142,6 @@ var enableRouteCmd = &cobra.Command{
return
}
fmt.Printf("Enabled route %s\n", args[1])
+ }
},
}
