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  }