mirror of
https://github.com/passbolt/go-passbolt-cli.git
synced 2025-05-11 18:48:21 +00:00
Added flags for passing client cert and client private key as file contents instead of paths
This commit is contained in:
parent
0273cee2ba
commit
78ed21f62b
2 changed files with 34 additions and 13 deletions
45
cmd/root.go
45
cmd/root.go
|
@ -2,7 +2,6 @@ package cmd
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"io/ioutil"
|
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"time"
|
"time"
|
||||||
|
@ -61,8 +60,10 @@ func init() {
|
||||||
rootCmd.PersistentFlags().Duration("mfaDelay", time.Second*10, "Delay between MFA Attempts, only used in noninteractive modes")
|
rootCmd.PersistentFlags().Duration("mfaDelay", time.Second*10, "Delay between MFA Attempts, only used in noninteractive modes")
|
||||||
|
|
||||||
rootCmd.PersistentFlags().Bool("tlsSkipVerify", false, "Allow servers with self-signed certificates")
|
rootCmd.PersistentFlags().Bool("tlsSkipVerify", false, "Allow servers with self-signed certificates")
|
||||||
rootCmd.PersistentFlags().String("tlsClientPrivateKeyFile", "", "Client private key for mtls")
|
rootCmd.PersistentFlags().String("tlsClientPrivateKeyFile", "", "Client private key path for mtls")
|
||||||
rootCmd.PersistentFlags().String("tlsClientCertFile", "", "Client certificate for mtls")
|
rootCmd.PersistentFlags().String("tlsClientCertFile", "", "Client certificate path for mtls")
|
||||||
|
rootCmd.PersistentFlags().String("tlsClientPrivateKey", "", "Client private key for mtls")
|
||||||
|
rootCmd.PersistentFlags().String("tlsClientCert", "", "Client certificate for mtls")
|
||||||
|
|
||||||
viper.BindPFlag("debug", rootCmd.PersistentFlags().Lookup("debug"))
|
viper.BindPFlag("debug", rootCmd.PersistentFlags().Lookup("debug"))
|
||||||
viper.BindPFlag("timeout", rootCmd.PersistentFlags().Lookup("timeout"))
|
viper.BindPFlag("timeout", rootCmd.PersistentFlags().Lookup("timeout"))
|
||||||
|
@ -82,6 +83,18 @@ func init() {
|
||||||
viper.BindPFlag("tlsClientPrivateKey", rootCmd.PersistentFlags().Lookup("tlsClientPrivateKey"))
|
viper.BindPFlag("tlsClientPrivateKey", rootCmd.PersistentFlags().Lookup("tlsClientPrivateKey"))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func fileToContent(file, contentFlag string) {
|
||||||
|
if viper.GetBool("debug") {
|
||||||
|
fmt.Fprintln(os.Stderr, "Loading file:", file)
|
||||||
|
}
|
||||||
|
content, err := os.ReadFile(file)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Fprintln(os.Stderr, "Error Loading File: ", err)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
viper.Set(contentFlag, string(content))
|
||||||
|
}
|
||||||
|
|
||||||
// initConfig reads in config file and ENV variables if set.
|
// initConfig reads in config file and ENV variables if set.
|
||||||
func initConfig() {
|
func initConfig() {
|
||||||
if cfgFile != "" {
|
if cfgFile != "" {
|
||||||
|
@ -115,18 +128,26 @@ func initConfig() {
|
||||||
// Read in Private Key from File if userprivatekeyfile is set
|
// Read in Private Key from File if userprivatekeyfile is set
|
||||||
userprivatekeyfile, err := rootCmd.PersistentFlags().GetString("userPrivateKeyFile")
|
userprivatekeyfile, err := rootCmd.PersistentFlags().GetString("userPrivateKeyFile")
|
||||||
if err == nil && userprivatekeyfile != "" {
|
if err == nil && userprivatekeyfile != "" {
|
||||||
if viper.GetBool("debug") {
|
fileToContent(userprivatekeyfile, "userPrivateKey")
|
||||||
fmt.Fprintln(os.Stderr, "Loading Private Key from File:", userprivatekeyfile)
|
|
||||||
}
|
|
||||||
content, err := ioutil.ReadFile(userprivatekeyfile)
|
|
||||||
if err != nil {
|
|
||||||
fmt.Fprintln(os.Stderr, "Error Loading Private Key from File: ", err)
|
|
||||||
os.Exit(1)
|
|
||||||
}
|
|
||||||
viper.Set("userprivatekey", string(content))
|
|
||||||
} else if err != nil && viper.GetBool("debug") {
|
} else if err != nil && viper.GetBool("debug") {
|
||||||
fmt.Fprintln(os.Stderr, "Getting Private Key File Flag:", err)
|
fmt.Fprintln(os.Stderr, "Getting Private Key File Flag:", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Read in Client Certificate Private Key from File if tlsClientPrivateKeyFile is set
|
||||||
|
tlsclientprivatekeyfile, err := rootCmd.PersistentFlags().GetString("tlsClientPrivateKeyFile")
|
||||||
|
if err == nil && tlsclientprivatekeyfile != "" {
|
||||||
|
fileToContent(tlsclientprivatekeyfile, "tlsClientPrivateKey")
|
||||||
|
} else if err != nil && viper.GetBool("debug") {
|
||||||
|
fmt.Fprintln(os.Stderr, "Getting Client Certificate Private key File Flag:", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Read in Client Certificate from File if tlsClientCertFile is set
|
||||||
|
tlsclientcertfile, err := rootCmd.PersistentFlags().GetString("tlsClientCertFile")
|
||||||
|
if err == nil && tlsclientcertfile != "" {
|
||||||
|
fileToContent(tlsclientcertfile, "tlsClientCert")
|
||||||
|
} else if err != nil && viper.GetBool("debug") {
|
||||||
|
fmt.Fprintln(os.Stderr, "Getting Client Certificate File Flag:", err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func SetVersionInfo(version, commit, date string, dirty bool) {
|
func SetVersionInfo(version, commit, date string, dirty bool) {
|
||||||
|
|
|
@ -22,7 +22,7 @@ func GetClientCertificate() (tls.Certificate, error) {
|
||||||
if !certExists && keyExists {
|
if !certExists && keyExists {
|
||||||
return tls.Certificate{}, fmt.Errorf("Client TLS cert is empty, but client TLS private key was set.")
|
return tls.Certificate{}, fmt.Errorf("Client TLS cert is empty, but client TLS private key was set.")
|
||||||
}
|
}
|
||||||
return tls.LoadX509KeyPair(cert, key)
|
return tls.X509KeyPair([]byte(cert), []byte(key))
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetHttpClient() (*http.Client, error) {
|
func GetHttpClient() (*http.Client, error) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue