Add ability to specific http scheme when connecting

Add ability to specific http scheme when connecting to a remote database, when import / exporting / running sql.
This commit is contained in:
Tobie Morgan Hitchcock 2017-11-24 20:07:31 +00:00
parent f1e4e3961a
commit 17cecae390
4 changed files with 35 additions and 4 deletions

View file

@ -61,11 +61,20 @@ var exportCmd = &cobra.Command{
defer fle.Close() defer fle.Close()
// Check to see if the http request type has
// been specified as eith 'http' or 'https'
// as these are the only supported schemes.
if opts.DB.Type != "http" && opts.DB.Type != "https" {
log.Fatalln("Connection failed - please specify 'http' or 'https' for the scheme.")
return
}
// Configure the export connection endpoint url // Configure the export connection endpoint url
// and specify the authentication header using // and specify the authentication header using
// basic auth for root login. // basic auth for root login.
url := fmt.Sprintf("https://%s@%s:%s/export", opts.Auth.Auth, opts.DB.Host, opts.DB.Port) url := fmt.Sprintf("%s://%s@%s:%s/export", opts.DB.Type, opts.Auth.Auth, opts.DB.Host, opts.DB.Port)
// Create a new http request object that we // Create a new http request object that we
// can use to connect to the export endpoint // can use to connect to the export endpoint
@ -133,6 +142,7 @@ var exportCmd = &cobra.Command{
func init() { func init() {
exportCmd.PersistentFlags().StringVarP(&opts.Auth.Auth, "auth", "a", "root:root", "Master authentication details to use when connecting.") exportCmd.PersistentFlags().StringVarP(&opts.Auth.Auth, "auth", "a", "root:root", "Master authentication details to use when connecting.")
exportCmd.PersistentFlags().StringVar(&opts.DB.Type, "scheme", "https", "HTTP connection scheme to use to connect to the database.")
exportCmd.PersistentFlags().StringVar(&opts.DB.Host, "host", "surreal.io", "Database server host to connect to.") exportCmd.PersistentFlags().StringVar(&opts.DB.Host, "host", "surreal.io", "Database server host to connect to.")
exportCmd.PersistentFlags().StringVar(&opts.DB.Port, "port", "80", "Database server port to connect to.") exportCmd.PersistentFlags().StringVar(&opts.DB.Port, "port", "80", "Database server port to connect to.")

View file

@ -60,11 +60,20 @@ var importCmd = &cobra.Command{
defer fle.Close() defer fle.Close()
// Check to see if the http request type has
// been specified as eith 'http' or 'https'
// as these are the only supported schemes.
if opts.DB.Type != "http" && opts.DB.Type != "https" {
log.Fatalln("Connection failed - please specify 'http' or 'https' for the scheme.")
return
}
// Configure the export connection endpoint url // Configure the export connection endpoint url
// and specify the authentication header using // and specify the authentication header using
// basic auth for root login. // basic auth for root login.
url := fmt.Sprintf("https://%s@%s:%s/import", opts.Auth.Auth, opts.DB.Host, opts.DB.Port) url := fmt.Sprintf("%s://%s@%s:%s/import", opts.DB.Type, opts.Auth.Auth, opts.DB.Host, opts.DB.Port)
// Create a new http request object that we // Create a new http request object that we
// can use to connect to the import endpoint // can use to connect to the import endpoint
@ -123,6 +132,7 @@ var importCmd = &cobra.Command{
func init() { func init() {
importCmd.PersistentFlags().StringVarP(&opts.Auth.Auth, "auth", "a", "root:root", "Master authentication details to use when connecting.") importCmd.PersistentFlags().StringVarP(&opts.Auth.Auth, "auth", "a", "root:root", "Master authentication details to use when connecting.")
importCmd.PersistentFlags().StringVar(&opts.DB.Type, "scheme", "https", "HTTP connection scheme to use to connect to the database.")
importCmd.PersistentFlags().StringVar(&opts.DB.Host, "host", "surreal.io", "Database server host to connect to.") importCmd.PersistentFlags().StringVar(&opts.DB.Host, "host", "surreal.io", "Database server host to connect to.")
importCmd.PersistentFlags().StringVar(&opts.DB.Port, "port", "80", "Database server port to connect to.") importCmd.PersistentFlags().StringVar(&opts.DB.Port, "port", "80", "Database server port to connect to.")

View file

@ -50,7 +50,7 @@ var sqlCmd = &cobra.Command{
// creating the file, then return an error. // creating the file, then return an error.
if fle, err = os.OpenFile(args[0], os.O_RDONLY, 0644); err != nil { if fle, err = os.OpenFile(args[0], os.O_RDONLY, 0644); err != nil {
log.Fatalln("Import failed - please check the filepath and try again.") log.Fatalln("SQL failed - please check the filepath and try again.")
return return
} }
@ -60,11 +60,20 @@ var sqlCmd = &cobra.Command{
defer fle.Close() defer fle.Close()
// Check to see if the http request type has
// been specified as eith 'http' or 'https'
// as these are the only supported schemes.
if opts.DB.Type != "http" && opts.DB.Type != "https" {
log.Fatalln("Connection failed - please specify 'http' or 'https' for the scheme.")
return
}
// Configure the export connection endpoint url // Configure the export connection endpoint url
// and specify the authentication header using // and specify the authentication header using
// basic auth for root login. // basic auth for root login.
url := fmt.Sprintf("http://%s@%s:%s/sql", opts.Auth.Auth, opts.DB.Host, opts.DB.Port) url := fmt.Sprintf("%s://%s@%s:%s/sql", opts.DB.Type, opts.Auth.Auth, opts.DB.Host, opts.DB.Port)
// Create a new http request object that we // Create a new http request object that we
// can use to connect to the import endpoint // can use to connect to the import endpoint
@ -141,6 +150,7 @@ var sqlCmd = &cobra.Command{
func init() { func init() {
sqlCmd.PersistentFlags().StringVarP(&opts.Auth.Auth, "auth", "a", "root:root", "Master authentication details to use when connecting.") sqlCmd.PersistentFlags().StringVarP(&opts.Auth.Auth, "auth", "a", "root:root", "Master authentication details to use when connecting.")
sqlCmd.PersistentFlags().StringVar(&opts.DB.Type, "scheme", "https", "HTTP connection scheme to use to connect to the database.")
sqlCmd.PersistentFlags().StringVar(&opts.DB.Host, "host", "surreal.io", "Database server host to connect to.") sqlCmd.PersistentFlags().StringVar(&opts.DB.Host, "host", "surreal.io", "Database server host to connect to.")
sqlCmd.PersistentFlags().StringVar(&opts.DB.Port, "port", "80", "Database server port to connect to.") sqlCmd.PersistentFlags().StringVar(&opts.DB.Port, "port", "80", "Database server port to connect to.")

View file

@ -79,6 +79,7 @@ type Options struct {
Key []byte // Data encryption key Key []byte // Data encryption key
Code string // Data encryption key string Code string // Data encryption key string
Path string // Path to store the data file Path string // Path to store the data file
Type string // HTTP scheme type to use
Host string // Surreal host to connect to Host string // Surreal host to connect to
Port string // Surreal port to connect to Port string // Surreal port to connect to
Base string // Base key to use in KV stores Base string // Base key to use in KV stores