mirror of
https://github.com/rancher/os.git
synced 2025-09-17 07:30:42 +00:00
Decompress user-data if it is gzipped
Fixes #2391
(cherry picked from commit 05c2a40aa5
)
This commit is contained in:
@@ -182,6 +182,11 @@ func fetchAndSave(ds datasource.Datasource) error {
|
|||||||
log.Errorf("Failed fetching user-data from datasource: %v", err)
|
log.Errorf("Failed fetching user-data from datasource: %v", err)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
userDataBytes, err = decompressIfGzip(userDataBytes)
|
||||||
|
if err != nil {
|
||||||
|
log.Errorf("Failed decompressing user-data from datasource: %v", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
log.Infof("Fetching meta-data from datasource of type %v", ds.Type())
|
log.Infof("Fetching meta-data from datasource of type %v", ds.Type())
|
||||||
metadata, err = ds.FetchMetadata()
|
metadata, err = ds.FetchMetadata()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -367,3 +372,13 @@ func composeToCloudConfig(bytes []byte) ([]byte, error) {
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const gzipMagicBytes = "\x1f\x8b"
|
||||||
|
|
||||||
|
func decompressIfGzip(userdataBytes []byte) ([]byte, error) {
|
||||||
|
if !bytes.HasPrefix(userdataBytes, []byte(gzipMagicBytes)) {
|
||||||
|
return userdataBytes, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return config.DecompressGzip(userdataBytes)
|
||||||
|
}
|
||||||
|
@@ -18,7 +18,12 @@ func DecodeBase64Content(content string) ([]byte, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func DecodeGzipContent(content string) ([]byte, error) {
|
func DecodeGzipContent(content string) ([]byte, error) {
|
||||||
gzr, err := gzip.NewReader(bytes.NewReader([]byte(content)))
|
byteContent := []byte(content)
|
||||||
|
return DecompressGzip(byteContent)
|
||||||
|
}
|
||||||
|
|
||||||
|
func DecompressGzip(content []byte) ([]byte, error) {
|
||||||
|
gzr, err := gzip.NewReader(bytes.NewReader(content))
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("Unable to decode gzip: %q", err)
|
return nil, fmt.Errorf("Unable to decode gzip: %q", err)
|
||||||
|
Reference in New Issue
Block a user