Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var CreateNamespaceCmd = &cobra.Command{ Use: "create NAME", Short: "Creates a new namespace", Args: func(cmd *cobra.Command, args []string) error { if len(args) < 1 { return fmt.Errorf("Missing parameters") } return nil }, Run: func(cmd *cobra.Command, args []string) { o, _ := cmd.Flags().GetString("output") h, err := getHeadscaleApp() if err != nil { log.Fatalf("Error initializing: %s", err) } namespace, err := h.CreateNamespace(args[0]) if strings.HasPrefix(o, "json") { JsonOutput(namespace, err, o) return } if err != nil { fmt.Printf("Error creating namespace: %s\n", err) return } fmt.Printf("Namespace created\n") }, }
View Source
var CreatePreAuthKeyCmd = &cobra.Command{ Use: "create", Short: "Creates a new preauthkey in the specified namespace", 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") h, err := getHeadscaleApp() if err != nil { log.Fatalf("Error initializing: %s", err) } reusable, _ := cmd.Flags().GetBool("reusable") ephemeral, _ := cmd.Flags().GetBool("ephemeral") e, _ := cmd.Flags().GetString("expiration") var expiration *time.Time if e != "" { duration, err := durafmt.ParseStringShort(e) if err != nil { log.Fatalf("Error parsing expiration: %s", err) } exp := time.Now().UTC().Add(duration.Duration()) expiration = &exp } k, err := h.CreatePreAuthKey(n, reusable, ephemeral, expiration) if strings.HasPrefix(o, "json") { JsonOutput(k, err, o) return } if err != nil { fmt.Println(err) return } fmt.Printf("Key: %s\n", k.Key) }, }
View Source
var DestroyNamespaceCmd = &cobra.Command{ Use: "destroy NAME", Short: "Destroys a namespace", Args: func(cmd *cobra.Command, args []string) error { if len(args) < 1 { return fmt.Errorf("Missing parameters") } return nil }, Run: func(cmd *cobra.Command, args []string) { o, _ := cmd.Flags().GetString("output") h, err := getHeadscaleApp() if err != nil { log.Fatalf("Error initializing: %s", err) } err = h.DestroyNamespace(args[0]) if strings.HasPrefix(o, "json") { JsonOutput(map[string]string{"Result": "Namespace destroyed"}, err, o) return } if err != nil { fmt.Printf("Error destroying namespace: %s\n", err) return } fmt.Printf("Namespace destroyed\n") }, }
View Source
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 { 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") h, err := getHeadscaleApp() if err != nil { log.Fatalf("Error initializing: %s", err) } route, err := h.EnableNodeRoute(n, args[0], args[1]) if strings.HasPrefix(o, "json") { JsonOutput(route, err, o) return } if err != nil { fmt.Println(err) return } fmt.Printf("Enabled route %s\n", route) }, }
View Source
var ListNamespacesCmd = &cobra.Command{ Use: "list", Short: "List all the namespaces", Run: func(cmd *cobra.Command, args []string) { o, _ := cmd.Flags().GetString("output") h, err := getHeadscaleApp() if err != nil { log.Fatalf("Error initializing: %s", err) } namespaces, err := h.ListNamespaces() if strings.HasPrefix(o, "json") { JsonOutput(namespaces, err, o) return } if err != nil { fmt.Println(err) return } fmt.Printf("ID\tName\n") for _, n := range *namespaces { fmt.Printf("%d\t%s\n", n.ID, n.Name) } }, }
View Source
var ListNodesCmd = &cobra.Command{ Use: "list", Short: "List the nodes in a given namespace", 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") h, err := getHeadscaleApp() if err != nil { log.Fatalf("Error initializing: %s", err) } machines, err := h.ListMachinesInNamespace(n) if strings.HasPrefix(o, "json") { JsonOutput(machines, err, o) return } if err != nil { log.Fatalf("Error getting nodes: %s", err) } fmt.Printf("name\t\tlast seen\t\tephemeral\n") for _, m := range *machines { var ephemeral bool if m.AuthKey != nil && m.AuthKey.Ephemeral { ephemeral = true } var lastSeen time.Time if m.LastSeen != nil { lastSeen = *m.LastSeen } fmt.Printf("%s\t%s\t%t\n", m.Name, lastSeen.Format("2006-01-02 15:04:05"), ephemeral) } }, }
View Source
var ListPreAuthKeys = &cobra.Command{ Use: "list", Short: "List the preauthkeys for this namespace", 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") h, err := getHeadscaleApp() if err != nil { log.Fatalf("Error initializing: %s", err) } keys, err := h.GetPreAuthKeys(n) if strings.HasPrefix(o, "json") { JsonOutput(keys, err, o) return } if err != nil { fmt.Printf("Error getting the list of keys: %s\n", err) return } for _, k := range *keys { expiration := "-" if k.Expiration != nil { expiration = k.Expiration.Format("2006-01-02 15:04:05") } fmt.Printf( "key: %s, namespace: %s, reusable: %v, ephemeral: %v, expiration: %s, created_at: %s\n", k.Key, k.Namespace.Name, k.Reusable, k.Ephemeral, expiration, k.CreatedAt.Format("2006-01-02 15:04:05"), ) } }, }
View Source
var ListRoutesCmd = &cobra.Command{ Use: "list NODE", Short: "List the routes exposed by this node", Args: func(cmd *cobra.Command, args []string) error { if len(args) < 1 { 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") h, err := getHeadscaleApp() if err != nil { log.Fatalf("Error initializing: %s", err) } routes, err := h.GetNodeRoutes(n, args[0]) if strings.HasPrefix(o, "json") { JsonOutput(routes, err, o) return } if err != nil { fmt.Println(err) return } fmt.Println(routes) }, }
View Source
var NamespaceCmd = &cobra.Command{
Use: "namespace",
Short: "Manage the namespaces of Headscale",
}
View Source
var NodeCmd = &cobra.Command{
Use: "node",
Short: "Manage the nodes of Headscale",
}
View Source
var PreauthkeysCmd = &cobra.Command{
Use: "preauthkey",
Short: "Handle the preauthkeys in Headscale",
}
View Source
var RegisterCmd = &cobra.Command{ Use: "register machineID", Short: "Registers a machine to your network", Args: func(cmd *cobra.Command, args []string) error { if len(args) < 1 { 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") h, err := getHeadscaleApp() if err != nil { log.Fatalf("Error initializing: %s", err) } m, err := h.RegisterMachine(args[0], n) if strings.HasPrefix(o, "json") { JsonOutput(m, err, o) return } if err != nil { fmt.Printf("Cannot register machine: %s\n", err) return } fmt.Printf("Machine registered\n") }, }
View Source
var RoutesCmd = &cobra.Command{
Use: "routes",
Short: "Manage the routes of Headscale",
}
View Source
var ServeCmd = &cobra.Command{ Use: "serve", Short: "Launches the headscale server", Args: func(cmd *cobra.Command, args []string) error { return nil }, Run: func(cmd *cobra.Command, args []string) { h, err := getHeadscaleApp() if err != nil { log.Fatalf("Error initializing: %s", err) } go h.ExpireEphemeralNodes(5000) err = h.Serve() if err != nil { log.Fatalf("Error initializing: %s", err) } }, }
Functions ¶
func JsonOutput ¶
func LoadConfig ¶
Types ¶
type ErrorOutput ¶
type ErrorOutput struct {
Error string
}
Click to show internal directories.
Click to hide internal directories.