github.com/vmware/govmomi@v0.51.0/cli/sso/lpp/info.go (about) 1 // © Broadcom. All Rights Reserved. 2 // The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. 3 // SPDX-License-Identifier: Apache-2.0 4 5 package lpp 6 7 import ( 8 "context" 9 "flag" 10 "fmt" 11 "io" 12 13 "github.com/vmware/govmomi/cli" 14 "github.com/vmware/govmomi/cli/flags" 15 "github.com/vmware/govmomi/cli/sso" 16 "github.com/vmware/govmomi/ssoadmin" 17 "github.com/vmware/govmomi/ssoadmin/types" 18 ) 19 20 type info struct { 21 *flags.ClientFlag 22 *flags.OutputFlag 23 } 24 25 func init() { 26 cli.Register("sso.lpp.info", &info{}) 27 } 28 29 func (cmd *info) Register(ctx context.Context, f *flag.FlagSet) { 30 cmd.ClientFlag, ctx = flags.NewClientFlag(ctx) 31 cmd.ClientFlag.Register(ctx, f) 32 33 cmd.OutputFlag, ctx = flags.NewOutputFlag(ctx) 34 cmd.OutputFlag.Register(ctx, f) 35 } 36 37 func (cmd *info) Description() string { 38 return `Get SSO local password policy. 39 40 Examples: 41 govc sso.lpp.info 42 govc sso.lpp.info -json` 43 } 44 45 func (cmd *info) Process(ctx context.Context) error { 46 if err := cmd.ClientFlag.Process(ctx); err != nil { 47 return err 48 } 49 return cmd.OutputFlag.Process(ctx) 50 } 51 52 type lppInfo struct { 53 LocalPasswordPolicy *types.AdminPasswordPolicy 54 } 55 56 func (r *lppInfo) Write(w io.Writer) error { 57 fmt.Fprintf( 58 w, 59 "Description: %s\n"+ 60 "MinLength: %d\n"+ 61 "MaxLength: %d\n"+ 62 "MinAlphabeticCount: %d\n"+ 63 "MinUppercaseCount: %d\n"+ 64 "MinLowercaseCount: %d\n"+ 65 "MinNumericCount: %d\n"+ 66 "MinSpecialCharCount: %d\n"+ 67 "MaxIdenticalAdjacentCharacters: %d\n"+ 68 "ProhibitedPreviousPasswordsCount: %d\n"+ 69 "PasswordLifetimeDays: %d\n", 70 r.LocalPasswordPolicy.Description, 71 r.LocalPasswordPolicy.PasswordFormat.LengthRestriction.MinLength, 72 r.LocalPasswordPolicy.PasswordFormat.LengthRestriction.MaxLength, 73 r.LocalPasswordPolicy.PasswordFormat.AlphabeticRestriction.MinAlphabeticCount, 74 r.LocalPasswordPolicy.PasswordFormat.AlphabeticRestriction.MinUppercaseCount, 75 r.LocalPasswordPolicy.PasswordFormat.AlphabeticRestriction.MinLowercaseCount, 76 r.LocalPasswordPolicy.PasswordFormat.MinNumericCount, 77 r.LocalPasswordPolicy.PasswordFormat.MinSpecialCharCount, 78 r.LocalPasswordPolicy.PasswordFormat.MaxIdenticalAdjacentCharacters, 79 r.LocalPasswordPolicy.ProhibitedPreviousPasswordsCount, 80 r.LocalPasswordPolicy.PasswordLifetimeDays, 81 ) 82 return nil 83 } 84 85 func (r *lppInfo) Dump() any { 86 return r.LocalPasswordPolicy 87 } 88 89 func (cmd *info) Run(ctx context.Context, f *flag.FlagSet) error { 90 return sso.WithClient(ctx, cmd.ClientFlag, func(c *ssoadmin.Client) error { 91 var err error 92 var pol lppInfo 93 pol.LocalPasswordPolicy, err = c.GetLocalPasswordPolicy(ctx) 94 if err != nil { 95 return err 96 } 97 return cmd.WriteResult(&pol) 98 }) 99 }