github.com/vmware/govmomi@v0.51.0/cli/host/cert/install.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 cert 6 7 import ( 8 "bytes" 9 "context" 10 "flag" 11 "io" 12 "os" 13 "path/filepath" 14 15 "github.com/vmware/govmomi/cli" 16 "github.com/vmware/govmomi/cli/flags" 17 ) 18 19 type install struct { 20 *flags.HostSystemFlag 21 } 22 23 func init() { 24 cli.Register("host.cert.import", &install{}) 25 } 26 27 func (cmd *install) Register(ctx context.Context, f *flag.FlagSet) { 28 cmd.HostSystemFlag, ctx = flags.NewHostSystemFlag(ctx) 29 cmd.HostSystemFlag.Register(ctx, f) 30 } 31 32 func (cmd *install) Usage() string { 33 return "FILE" 34 } 35 36 func (cmd *install) Description() string { 37 return `Install SSL certificate FILE on HOST. 38 39 If FILE name is "-", read certificate from stdin.` 40 } 41 42 func (cmd *install) Process(ctx context.Context) error { 43 if err := cmd.HostSystemFlag.Process(ctx); err != nil { 44 return err 45 } 46 return nil 47 } 48 49 func (cmd *install) Run(ctx context.Context, f *flag.FlagSet) error { 50 host, err := cmd.HostSystem() 51 if err != nil { 52 return err 53 } 54 55 m, err := host.ConfigManager().CertificateManager(ctx) 56 if err != nil { 57 return err 58 } 59 60 var cert string 61 62 name := f.Arg(0) 63 if name == "-" || name == "" { 64 var buf bytes.Buffer 65 if _, err := io.Copy(&buf, os.Stdin); err != nil { 66 return err 67 } 68 cert = buf.String() 69 } else { 70 b, err := os.ReadFile(filepath.Clean(name)) 71 if err != nil { 72 return err 73 } 74 cert = string(b) 75 } 76 77 return m.InstallServerCertificate(ctx, cert) 78 }