Skip to content

Commit 3bbe74d

Browse files
committed
Merge pull request #116 from moul/fix-115
Fix #115
2 parents ec0792d + fd4fc92 commit 3bbe74d

File tree

2 files changed

+19
-11
lines changed

2 files changed

+19
-11
lines changed

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -1051,6 +1051,7 @@ $ scw inspect myserver | jq '.[0].public_ip.address'
10511051
* `scw inspect TYPE:xxx TYPE:yyy` will only refresh cache for `TYPE`
10521052
* Sorting cache search by Levenshtein distance ([#87](https://github.com/scaleway/scaleway-cli/issues/87))
10531053
* Allow set up api endpoint using the environment variable $scaleway_api_endpoint
1054+
* Use TLS and verify can now be disabled using `SCALEWAY_TLSVERIFY=0` env var ([#115](https://github.com/scaleway/scaleway-cli/issues/115))
10541055

10551056
#### Fixes
10561057

pkg/api/api.go

+18-11
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ package api
99

1010
import (
1111
"bytes"
12+
"crypto/tls"
1213
"encoding/json"
1314
"fmt"
1415
"net/http"
@@ -43,6 +44,7 @@ type ScalewayAPI struct {
4344
// Cache is used to quickly resolve identifiers from names
4445
Cache *ScalewayCache
4546

47+
client *http.Client
4648
anonuuid anonuuid.AnonUUID
4749
}
4850

@@ -543,13 +545,23 @@ func NewScalewayAPI(apiEndPoint, accountEndPoint, organization, token string) (*
543545
return nil, err
544546
}
545547
s := &ScalewayAPI{
548+
// exposed
546549
ComputeAPI: apiEndPoint,
547550
AccountAPI: accountEndPoint,
548551
APIUrl: apiEndPoint,
549552
Organization: organization,
550553
Token: token,
551554
Cache: cache,
552-
anonuuid: *anonuuid.New(),
555+
556+
// internal
557+
anonuuid: *anonuuid.New(),
558+
client: &http.Client{},
559+
}
560+
561+
if os.Getenv("SCALEWAY_TLSVERIFY") == "0" {
562+
s.client.Transport = &http.Transport{
563+
TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
564+
}
553565
}
554566

555567
return s, nil
@@ -564,20 +576,18 @@ func (s *ScalewayAPI) Sync() {
564576
func (s *ScalewayAPI) GetResponse(resource string) (*http.Response, error) {
565577
uri := fmt.Sprintf("%s/%s", strings.TrimRight(s.APIUrl, "/"), resource)
566578
log.Debugf("GET %s", uri)
567-
client := &http.Client{}
568579
req, err := http.NewRequest("GET", uri, nil)
569580
if err != nil {
570581
return nil, err
571582
}
572583
req.Header.Set("X-Auth-Token", s.Token)
573584
req.Header.Set("Content-Type", "application/json")
574-
return client.Do(req)
585+
return s.client.Do(req)
575586
}
576587

577588
// PostResponse returns an http.Response object for the updated resource
578589
func (s *ScalewayAPI) PostResponse(resource string, data interface{}) (*http.Response, error) {
579590
uri := fmt.Sprintf("%s/%s", strings.TrimRight(s.APIUrl, "/"), resource)
580-
client := &http.Client{}
581591
payload := new(bytes.Buffer)
582592
encoder := json.NewEncoder(payload)
583593
if err := encoder.Encode(data); err != nil {
@@ -596,13 +606,12 @@ func (s *ScalewayAPI) PostResponse(resource string, data interface{}) (*http.Res
596606
}
597607
req.Header.Set("X-Auth-Token", s.Token)
598608
req.Header.Set("Content-Type", "application/json")
599-
return client.Do(req)
609+
return s.client.Do(req)
600610
}
601611

602612
// PatchResponse returns an http.Response object for the updated resource
603613
func (s *ScalewayAPI) PatchResponse(resource string, data interface{}) (*http.Response, error) {
604614
uri := fmt.Sprintf("%s/%s", strings.TrimRight(s.APIUrl, "/"), resource)
605-
client := &http.Client{}
606615
payload := new(bytes.Buffer)
607616
encoder := json.NewEncoder(payload)
608617
if err := encoder.Encode(data); err != nil {
@@ -621,13 +630,12 @@ func (s *ScalewayAPI) PatchResponse(resource string, data interface{}) (*http.Re
621630
}
622631
req.Header.Set("X-Auth-Token", s.Token)
623632
req.Header.Set("Content-Type", "application/json")
624-
return client.Do(req)
633+
return s.client.Do(req)
625634
}
626635

627636
// PutResponse returns an http.Response object for the updated resource
628637
func (s *ScalewayAPI) PutResponse(resource string, data interface{}) (*http.Response, error) {
629638
uri := fmt.Sprintf("%s/%s", strings.TrimRight(s.APIUrl, "/"), resource)
630-
client := &http.Client{}
631639
payload := new(bytes.Buffer)
632640
encoder := json.NewEncoder(payload)
633641
if err := encoder.Encode(data); err != nil {
@@ -646,21 +654,20 @@ func (s *ScalewayAPI) PutResponse(resource string, data interface{}) (*http.Resp
646654
}
647655
req.Header.Set("X-Auth-Token", s.Token)
648656
req.Header.Set("Content-Type", "application/json")
649-
return client.Do(req)
657+
return s.client.Do(req)
650658
}
651659

652660
// DeleteResponse returns an http.Response object for the deleted resource
653661
func (s *ScalewayAPI) DeleteResponse(resource string) (*http.Response, error) {
654662
uri := fmt.Sprintf("%s/%s", strings.TrimRight(s.APIUrl, "/"), resource)
655-
client := &http.Client{}
656663
log.Debugf("DELETE %s", uri)
657664
req, err := http.NewRequest("DELETE", uri, nil)
658665
if err != nil {
659666
return nil, err
660667
}
661668
req.Header.Set("X-Auth-Token", s.Token)
662669
req.Header.Set("Content-Type", "application/json")
663-
return client.Do(req)
670+
return s.client.Do(req)
664671
}
665672

666673
// GetServers gets the list of servers from the ScalewayAPI

0 commit comments

Comments
 (0)