package main import ( "flag" "fmt" "os" "strings" "github.com/edgeai/gateway/internal/auth" "github.com/edgeai/gateway/internal/observability" ) func main() { dbPath := flag.String("db", "/tmp/edgeai-data/auth.db", "auth database path") appID := flag.String("app", "test", "application ID") tenantID := flag.String("tenant", "default", "tenant ID") name := flag.String("name", "test", "key name") models := flag.String("models", "", "allowed models (comma-separated, empty=all)") priorities := flag.String("priorities", "0,1,2,3", "allowed priorities (comma-separated)") isAdmin := flag.Bool("admin", false, "is admin key") keyValue := flag.String("key", "", "specific API key value (auto-generated if empty)") flag.Parse() observability.SetLogLevel("info") logger := observability.GetLogger() a, err := auth.NewAuthenticator(*dbPath, logger) if err != nil { fmt.Fprintf(os.Stderr, "error: %v\n", err) os.Exit(1) } defer a.Close() var allowedModels []string if *models != "" { allowedModels = strings.Split(*models, ",") } var allowedPriorities []int for _, p := range strings.Split(*priorities, ",") { p = strings.TrimSpace(p) if p != "" { var v int fmt.Sscanf(p, "%d", &v) allowedPriorities = append(allowedPriorities, v) } } apiKey := *keyValue if apiKey == "" { apiKey = auth.GenerateAPIKey() } identity := &auth.AppIdentity{ AppID: *appID, TenantID: *tenantID, Name: *name, AllowedModels: allowedModels, AllowedPriorities: allowedPriorities, IsAdmin: *isAdmin, } if err := a.AddKey(apiKey, identity); err != nil { fmt.Fprintf(os.Stderr, "AddKey error: %v\n", err) os.Exit(1) } fmt.Printf("API key created successfully:\n key: %s\n app: %s\n name: %s\n admin: %v\n", apiKey, *appID, *name, *isAdmin) }