mirror of
				https://github.com/juanfont/headscale.git
				synced 2025-11-04 10:01:05 +01:00 
			
		
		
		
	Added cmd to expire preauth keys (requested in #78)
This commit is contained in:
		
							parent
							
								
									226cb89d97
								
							
						
					
					
						commit
						05e08e0ac7
					
				@ -19,6 +19,7 @@ func init() {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	preauthkeysCmd.AddCommand(listPreAuthKeys)
 | 
						preauthkeysCmd.AddCommand(listPreAuthKeys)
 | 
				
			||||||
	preauthkeysCmd.AddCommand(createPreAuthKeyCmd)
 | 
						preauthkeysCmd.AddCommand(createPreAuthKeyCmd)
 | 
				
			||||||
 | 
						preauthkeysCmd.AddCommand(expirePreAuthKeyCmd)
 | 
				
			||||||
	createPreAuthKeyCmd.PersistentFlags().Bool("reusable", false, "Make the preauthkey reusable")
 | 
						createPreAuthKeyCmd.PersistentFlags().Bool("reusable", false, "Make the preauthkey reusable")
 | 
				
			||||||
	createPreAuthKeyCmd.PersistentFlags().Bool("ephemeral", false, "Preauthkey for ephemeral nodes")
 | 
						createPreAuthKeyCmd.PersistentFlags().Bool("ephemeral", false, "Preauthkey for ephemeral nodes")
 | 
				
			||||||
	createPreAuthKeyCmd.Flags().StringP("expiration", "e", "", "Human-readable expiration of the key (30m, 24h, 365d...)")
 | 
						createPreAuthKeyCmd.Flags().StringP("expiration", "e", "", "Human-readable expiration of the key (30m, 24h, 365d...)")
 | 
				
			||||||
@ -119,3 +120,42 @@ var createPreAuthKeyCmd = &cobra.Command{
 | 
				
			|||||||
		fmt.Printf("Key: %s\n", k.Key)
 | 
							fmt.Printf("Key: %s\n", k.Key)
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var expirePreAuthKeyCmd = &cobra.Command{
 | 
				
			||||||
 | 
						Use:   "expire",
 | 
				
			||||||
 | 
						Short: "Expire a preauthkey",
 | 
				
			||||||
 | 
						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)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							k, err := h.GetPreAuthKey(n, args[0])
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								log.Fatalf("Error getting the key: %s", err)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							err = h.MarkExpirePreAuthKey(k)
 | 
				
			||||||
 | 
							if strings.HasPrefix(o, "json") {
 | 
				
			||||||
 | 
								JsonOutput(k, err, o)
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								fmt.Println(err)
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							fmt.Println("Expired")
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -67,6 +67,19 @@ func (h *Headscale) GetPreAuthKeys(namespaceName string) (*[]PreAuthKey, error)
 | 
				
			|||||||
	return &keys, nil
 | 
						return &keys, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (h *Headscale) GetPreAuthKey(namespace string, key string) (*PreAuthKey, error) {
 | 
				
			||||||
 | 
						pak, err := h.checkKeyValidity(key)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if pak.Namespace.Name != namespace {
 | 
				
			||||||
 | 
							return nil, errors.New("Namespace mismatch")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return pak, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (h *Headscale) MarkExpirePreAuthKey(k *PreAuthKey) error {
 | 
					func (h *Headscale) MarkExpirePreAuthKey(k *PreAuthKey) error {
 | 
				
			||||||
	if err := h.db.Model(&k).Update("Expiration", time.Now()).Error; err != nil {
 | 
						if err := h.db.Model(&k).Update("Expiration", time.Now()).Error; err != nil {
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user