mirror of
https://github.com/fnproject/fn.git
synced 2022-10-28 21:29:17 +03:00
update vendor/ dir to latest w/o heroku, moby
had to lock a lot of things in place
This commit is contained in:
12
vendor/github.com/aws/aws-sdk-go/example/service/cloudfront/signCookies/README.md
generated
vendored
12
vendor/github.com/aws/aws-sdk-go/example/service/cloudfront/signCookies/README.md
generated
vendored
@@ -1,12 +0,0 @@
|
||||
# Example
|
||||
|
||||
This example shows how the CloudFront CookieSigner can be used to generate signed cookies to provided short term access to restricted resourced fronted by CloudFront.
|
||||
|
||||
# Usage
|
||||
Makes a request for object using CloudFront cookie signing, and outputs the contents of the object to stdout.
|
||||
|
||||
```sh
|
||||
go run signCookies.go -file <privkey file> -id <keyId> -r <resource pattern> -g <object to get>
|
||||
```
|
||||
|
||||
|
||||
77
vendor/github.com/aws/aws-sdk-go/example/service/cloudfront/signCookies/signCookies.go
generated
vendored
77
vendor/github.com/aws/aws-sdk-go/example/service/cloudfront/signCookies/signCookies.go
generated
vendored
@@ -1,77 +0,0 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"net/http"
|
||||
"time"
|
||||
|
||||
"github.com/aws/aws-sdk-go/service/cloudfront/sign"
|
||||
)
|
||||
|
||||
// Makes a request for object using CloudFront cookie signing, and outputs
|
||||
// the contents of the object to stdout.
|
||||
//
|
||||
// Usage example:
|
||||
// go run signCookies.go -file <privkey file> -id <keyId> -r <resource pattern> -g <object to get>
|
||||
func main() {
|
||||
var keyFile string // Private key PEM file
|
||||
var keyID string // Key pair ID of CloudFront key pair
|
||||
var resource string // CloudFront resource pattern
|
||||
var object string // S3 object frontented by CloudFront
|
||||
|
||||
flag.StringVar(&keyFile, "file", "", "private key file")
|
||||
flag.StringVar(&keyID, "id", "", "key pair id")
|
||||
flag.StringVar(&resource, "r", "", "resource to request")
|
||||
flag.StringVar(&object, "g", "", "object to get")
|
||||
flag.Parse()
|
||||
|
||||
// Load the PEM file into memory so it can be used by the signer
|
||||
privKey, err := sign.LoadPEMPrivKeyFile(keyFile)
|
||||
if err != nil {
|
||||
fmt.Println("failed to load key,", err)
|
||||
return
|
||||
}
|
||||
|
||||
// Create the new CookieSigner to get signed cookies for CloudFront
|
||||
// resource requests
|
||||
signer := sign.NewCookieSigner(keyID, privKey)
|
||||
|
||||
// Get the cookies for the resource. These will be used
|
||||
// to make the requests with
|
||||
cookies, err := signer.Sign(resource, time.Now().Add(1*time.Hour))
|
||||
if err != nil {
|
||||
fmt.Println("failed to sign cookies", err)
|
||||
return
|
||||
}
|
||||
|
||||
// Use the cookies in a http.Client to show how they allow the client
|
||||
// to request resources from CloudFront.
|
||||
req, err := http.NewRequest("GET", object, nil)
|
||||
fmt.Println("Cookies:")
|
||||
for _, c := range cookies {
|
||||
fmt.Printf("%s=%s;\n", c.Name, c.Value)
|
||||
req.AddCookie(c)
|
||||
}
|
||||
|
||||
// Send and handle the response. For a successful response the object's
|
||||
// content will be written to stdout. The same process could be applied
|
||||
// to a http service written cookies to the response but useing
|
||||
// http.SetCookie(w, c,) on the ResponseWriter.
|
||||
resp, err := http.DefaultClient.Do(req)
|
||||
if err != nil {
|
||||
fmt.Println("failed to send request", err)
|
||||
return
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
b, err := ioutil.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
fmt.Println("failed to read requested body", err)
|
||||
return
|
||||
}
|
||||
|
||||
fmt.Println("Response:", resp.Status)
|
||||
fmt.Println(string(b))
|
||||
}
|
||||
27
vendor/github.com/aws/aws-sdk-go/example/service/s3/listObjects/README.md
generated
vendored
27
vendor/github.com/aws/aws-sdk-go/example/service/s3/listObjects/README.md
generated
vendored
@@ -1,27 +0,0 @@
|
||||
# Example
|
||||
|
||||
listObjects is an example using the AWS SDK for Go to list objects' key in a S3 bucket.
|
||||
|
||||
|
||||
# Usage
|
||||
|
||||
The example uses the the bucket name provided, and lists all object keys in a bucket.
|
||||
|
||||
```sh
|
||||
go run listObjects.go <bucket>
|
||||
```
|
||||
|
||||
Output:
|
||||
```
|
||||
Page, 0
|
||||
Object: myKey
|
||||
Object: mykey.txt
|
||||
Object: resources/0001/item-01
|
||||
Object: resources/0001/item-02
|
||||
Object: resources/0001/item-03
|
||||
Object: resources/0002/item-01
|
||||
Object: resources/0002/item-02
|
||||
Object: resources/0002/item-03
|
||||
Object: resources/0002/item-04
|
||||
Object: resources/0002/item-05
|
||||
```
|
||||
36
vendor/github.com/aws/aws-sdk-go/example/service/s3/listObjects/listObjects.go
generated
vendored
36
vendor/github.com/aws/aws-sdk-go/example/service/s3/listObjects/listObjects.go
generated
vendored
@@ -1,36 +0,0 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
|
||||
"github.com/aws/aws-sdk-go/aws/session"
|
||||
"github.com/aws/aws-sdk-go/service/s3"
|
||||
)
|
||||
|
||||
// Lists all objects in a bucket using pagination
|
||||
//
|
||||
// Usage:
|
||||
// go run listObjects.go <bucket>
|
||||
func main() {
|
||||
sess := session.New()
|
||||
|
||||
svc := s3.New(sess)
|
||||
|
||||
i := 0
|
||||
err := svc.ListObjectsPages(&s3.ListObjectsInput{
|
||||
Bucket: &os.Args[1],
|
||||
}, func(p *s3.ListObjectsOutput, last bool) (shouldContinue bool) {
|
||||
fmt.Println("Page,", i)
|
||||
i++
|
||||
|
||||
for _, obj := range p.Contents {
|
||||
fmt.Println("Object:", *obj.Key)
|
||||
}
|
||||
return true
|
||||
})
|
||||
if err != nil {
|
||||
fmt.Println("failed to list objects", err)
|
||||
return
|
||||
}
|
||||
}
|
||||
13
vendor/github.com/aws/aws-sdk-go/example/service/s3/listObjectsConcurrently/README.md
generated
vendored
13
vendor/github.com/aws/aws-sdk-go/example/service/s3/listObjectsConcurrently/README.md
generated
vendored
@@ -1,13 +0,0 @@
|
||||
## Example
|
||||
|
||||
listS3EncryptedObjects is an example using the AWS SDK for Go concurrently to list the encrypted objects in the S3 buckets owned by an account.
|
||||
|
||||
## Usage
|
||||
|
||||
The example's `accounts` string slice contains a list of the SharedCredentials profiles which will be used to look up the buckets owned by each profile. Each bucket's objects will be queried.
|
||||
|
||||
```
|
||||
AWS_REGION=us-east-1 go run example/listS3EncryptedObjects/main.go
|
||||
```
|
||||
|
||||
|
||||
@@ -1,228 +0,0 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"sort"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/aws/aws-sdk-go/aws"
|
||||
"github.com/aws/aws-sdk-go/aws/credentials"
|
||||
"github.com/aws/aws-sdk-go/aws/session"
|
||||
"github.com/aws/aws-sdk-go/service/s3"
|
||||
)
|
||||
|
||||
func exit(msg ...interface{}) {
|
||||
fmt.Fprintln(os.Stderr, msg...)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
// Lists all encrypted objects owned by an account. The `accounts` string
|
||||
// contains a list of profiles to use.
|
||||
//
|
||||
// Usage:
|
||||
// go run listObjectsConcurrently.go
|
||||
func main() {
|
||||
accounts := []string{"default", "default2", "otherprofile"}
|
||||
|
||||
// Spin off a worker for each account to retrieve that account's
|
||||
bucketCh := make(chan *Bucket, 5)
|
||||
var wg sync.WaitGroup
|
||||
for _, acc := range accounts {
|
||||
wg.Add(1)
|
||||
go func(acc string) {
|
||||
sess := session.New(&aws.Config{Credentials: credentials.NewSharedCredentials("", acc)})
|
||||
if err := getAccountBuckets(sess, bucketCh, acc); err != nil {
|
||||
fmt.Fprintf(os.Stderr, "failed to get account %s's bucket info, %v\n", acc, err)
|
||||
}
|
||||
wg.Done()
|
||||
}(acc)
|
||||
}
|
||||
// Spin off a goroutine which will wait until all account buckets have been collected and
|
||||
// added to the bucketCh. Close the bucketCh so the for range below will exit once all
|
||||
// bucket info is printed.
|
||||
go func() {
|
||||
wg.Wait()
|
||||
close(bucketCh)
|
||||
}()
|
||||
|
||||
// Receive from the bucket channel printing the information for each bucket to the console
|
||||
// when the bucketCh channel is drained.
|
||||
buckets := []*Bucket{}
|
||||
for b := range bucketCh {
|
||||
buckets = append(buckets, b)
|
||||
}
|
||||
|
||||
sortBuckets(buckets)
|
||||
for _, b := range buckets {
|
||||
if b.Error != nil {
|
||||
fmt.Printf("Bucket %s, owned by: %s, failed: %v\n", b.Name, b.Owner, b.Error)
|
||||
continue
|
||||
}
|
||||
|
||||
encObjs := b.encryptedObjects()
|
||||
fmt.Printf("Bucket: %s, owned by: %s, total objects: %d, failed objects: %d, encrypted objects: %d\n",
|
||||
b.Name, b.Owner, len(b.Objects), len(b.ErrObjects), len(encObjs))
|
||||
if len(encObjs) > 0 {
|
||||
for _, encObj := range encObjs {
|
||||
fmt.Printf("\t%s %s:%s/%s\n", encObj.EncryptionType, b.Region, b.Name, encObj.Key)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func sortBuckets(buckets []*Bucket) {
|
||||
s := sortalbeBuckets(buckets)
|
||||
sort.Sort(s)
|
||||
}
|
||||
|
||||
type sortalbeBuckets []*Bucket
|
||||
|
||||
func (s sortalbeBuckets) Len() int { return len(s) }
|
||||
func (s sortalbeBuckets) Swap(a, b int) { s[a], s[b] = s[b], s[a] }
|
||||
func (s sortalbeBuckets) Less(a, b int) bool {
|
||||
if s[a].Owner == s[b].Owner && s[a].Name < s[b].Name {
|
||||
return true
|
||||
}
|
||||
|
||||
if s[a].Owner < s[b].Owner {
|
||||
return true
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
func getAccountBuckets(sess *session.Session, bucketCh chan<- *Bucket, owner string) error {
|
||||
svc := s3.New(sess)
|
||||
buckets, err := listBuckets(svc)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to list buckets, %v", err)
|
||||
}
|
||||
for _, bucket := range buckets {
|
||||
bucket.Owner = owner
|
||||
if bucket.Error != nil {
|
||||
continue
|
||||
}
|
||||
|
||||
bckSvc := s3.New(sess, &aws.Config{
|
||||
Region: aws.String(bucket.Region),
|
||||
Credentials: svc.Config.Credentials,
|
||||
})
|
||||
bucketDetails(bckSvc, bucket)
|
||||
bucketCh <- bucket
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func bucketDetails(svc *s3.S3, bucket *Bucket) {
|
||||
objs, errObjs, err := listBucketObjects(svc, bucket.Name)
|
||||
if err != nil {
|
||||
bucket.Error = err
|
||||
} else {
|
||||
bucket.Objects = objs
|
||||
bucket.ErrObjects = errObjs
|
||||
}
|
||||
}
|
||||
|
||||
// A Object provides details of an S3 object
|
||||
type Object struct {
|
||||
Bucket string
|
||||
Key string
|
||||
Encrypted bool
|
||||
EncryptionType string
|
||||
}
|
||||
|
||||
// An ErrObject provides details of the error occurred retrieving
|
||||
// an object's status.
|
||||
type ErrObject struct {
|
||||
Bucket string
|
||||
Key string
|
||||
Error error
|
||||
}
|
||||
|
||||
// A Bucket provides details about a bucket and its objects
|
||||
type Bucket struct {
|
||||
Owner string
|
||||
Name string
|
||||
CreationDate time.Time
|
||||
Region string
|
||||
Objects []Object
|
||||
Error error
|
||||
ErrObjects []ErrObject
|
||||
}
|
||||
|
||||
func (b *Bucket) encryptedObjects() []Object {
|
||||
encObjs := []Object{}
|
||||
for _, obj := range b.Objects {
|
||||
if obj.Encrypted {
|
||||
encObjs = append(encObjs, obj)
|
||||
}
|
||||
}
|
||||
return encObjs
|
||||
}
|
||||
|
||||
func listBuckets(svc *s3.S3) ([]*Bucket, error) {
|
||||
res, err := svc.ListBuckets(&s3.ListBucketsInput{})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
buckets := make([]*Bucket, len(res.Buckets))
|
||||
for i, b := range res.Buckets {
|
||||
buckets[i] = &Bucket{
|
||||
Name: *b.Name,
|
||||
CreationDate: *b.CreationDate,
|
||||
}
|
||||
|
||||
locRes, err := svc.GetBucketLocation(&s3.GetBucketLocationInput{
|
||||
Bucket: b.Name,
|
||||
})
|
||||
if err != nil {
|
||||
buckets[i].Error = err
|
||||
continue
|
||||
}
|
||||
|
||||
if locRes.LocationConstraint == nil {
|
||||
buckets[i].Region = "us-east-1"
|
||||
} else {
|
||||
buckets[i].Region = *locRes.LocationConstraint
|
||||
}
|
||||
}
|
||||
|
||||
return buckets, nil
|
||||
}
|
||||
|
||||
func listBucketObjects(svc *s3.S3, bucket string) ([]Object, []ErrObject, error) {
|
||||
listRes, err := svc.ListObjects(&s3.ListObjectsInput{
|
||||
Bucket: &bucket,
|
||||
})
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
objs := make([]Object, 0, len(listRes.Contents))
|
||||
errObjs := []ErrObject{}
|
||||
for _, listObj := range listRes.Contents {
|
||||
objData, err := svc.HeadObject(&s3.HeadObjectInput{
|
||||
Bucket: &bucket,
|
||||
Key: listObj.Key,
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
errObjs = append(errObjs, ErrObject{Bucket: bucket, Key: *listObj.Key, Error: err})
|
||||
continue
|
||||
}
|
||||
|
||||
obj := Object{Bucket: bucket, Key: *listObj.Key}
|
||||
if objData.ServerSideEncryption != nil {
|
||||
obj.Encrypted = true
|
||||
obj.EncryptionType = *objData.ServerSideEncryption
|
||||
}
|
||||
|
||||
objs = append(objs, obj)
|
||||
}
|
||||
|
||||
return objs, errObjs, nil
|
||||
}
|
||||
Reference in New Issue
Block a user