Upgrading server dependancies (#8308)
Этот коммит содержится в:
коммит произвёл
Joram Wilander
родитель
b112747de7
Коммит
6d8f122a51
21
vendor/github.com/magiconair/properties/CHANGELOG.md
сгенерированный
поставляемый
21
vendor/github.com/magiconair/properties/CHANGELOG.md
сгенерированный
поставляемый
@@ -1,10 +1,29 @@
|
||||
## Changelog
|
||||
|
||||
### [1.7.6](https://github.com/magiconair/properties/tree/v1.7.6) - 14 Feb 2018
|
||||
|
||||
* [PR #29](https://github.com/magiconair/properties/pull/29): Reworked expansion logic to handle more complex cases.
|
||||
|
||||
See PR for an example.
|
||||
|
||||
Thanks to [@yobert](https://github.com/yobert) for the fix.
|
||||
|
||||
### [1.7.5](https://github.com/magiconair/properties/tree/v1.7.5) - 13 Feb 2018
|
||||
|
||||
* [PR #28](https://github.com/magiconair/properties/pull/28): Support duplicate expansions in the same value
|
||||
|
||||
Values which expand the same key multiple times (e.g. `key=${a} ${a}`) will no longer fail
|
||||
with a `circular reference error`.
|
||||
|
||||
Thanks to [@yobert](https://github.com/yobert) for the fix.
|
||||
|
||||
### [1.7.4](https://github.com/magiconair/properties/tree/v1.7.4) - 31 Oct 2017
|
||||
|
||||
* [Issue #23](https://github.com/magiconair/properties/issues/23): Ignore blank lines with whitespaces
|
||||
|
||||
* [PR #24](https://github.com/magiconair/properties/pull/24): Update keys when DisableExpansion is enabled
|
||||
Thanks to @mgurov for the fix.
|
||||
|
||||
Thanks to [@mgurov](https://github.com/mgurov) for the fix.
|
||||
|
||||
### [1.7.3](https://github.com/magiconair/properties/tree/v1.7.3) - 10 Jul 2017
|
||||
|
||||
|
||||
2
vendor/github.com/magiconair/properties/LICENSE
сгенерированный
поставляемый
2
vendor/github.com/magiconair/properties/LICENSE
сгенерированный
поставляемый
@@ -1,6 +1,6 @@
|
||||
goproperties - properties file decoder for Go
|
||||
|
||||
Copyright (c) 2013-2014 - Frank Schroeder
|
||||
Copyright (c) 2013-2018 - Frank Schroeder
|
||||
|
||||
All rights reserved.
|
||||
|
||||
|
||||
50
vendor/github.com/magiconair/properties/README.md
сгенерированный
поставляемый
50
vendor/github.com/magiconair/properties/README.md
сгенерированный
поставляемый
@@ -1,7 +1,11 @@
|
||||
Overview [](https://travis-ci.org/magiconair/properties)
|
||||
========
|
||||
[](https://github.com/magiconair/properties/releases)
|
||||
[](https://travis-ci.org/magiconair/properties)
|
||||
[](https://raw.githubusercontent.com/magiconair/properties/master/LICENSE)
|
||||
[](http://godoc.org/github.com/magiconair/properties)
|
||||
|
||||
#### Current version: 1.7.4
|
||||
# Overview
|
||||
|
||||
#### Please run `git pull --tags` to update the tags. See [below](#updated-git-tags) why.
|
||||
|
||||
properties is a Go library for reading and writing properties files.
|
||||
|
||||
@@ -27,8 +31,7 @@ details.
|
||||
|
||||
Read the full documentation on [GoDoc](https://godoc.org/github.com/magiconair/properties) [](https://godoc.org/github.com/magiconair/properties)
|
||||
|
||||
Getting Started
|
||||
---------------
|
||||
## Getting Started
|
||||
|
||||
```go
|
||||
import (
|
||||
@@ -83,18 +86,43 @@ func main() {
|
||||
|
||||
```
|
||||
|
||||
Installation and Upgrade
|
||||
------------------------
|
||||
## Installation and Upgrade
|
||||
|
||||
```
|
||||
$ go get -u github.com/magiconair/properties
|
||||
```
|
||||
|
||||
License
|
||||
-------
|
||||
## License
|
||||
|
||||
2 clause BSD license. See [LICENSE](https://github.com/magiconair/properties/blob/master/LICENSE) file for details.
|
||||
|
||||
ToDo
|
||||
----
|
||||
## ToDo
|
||||
|
||||
* Dump contents with passwords and secrets obscured
|
||||
|
||||
## Updated Git tags
|
||||
|
||||
#### 13 Feb 2018
|
||||
|
||||
I realized that all of the git tags I had pushed before v1.7.5 were lightweight tags
|
||||
and I've only recently learned that this doesn't play well with `git describe` 😞
|
||||
|
||||
I have replaced all lightweight tags with signed tags using this script which should
|
||||
retain the commit date, name and email address. Please run `git pull --tags` to update them.
|
||||
|
||||
Worst case you have to reclone the repo.
|
||||
|
||||
```shell
|
||||
#!/bin/bash
|
||||
tag=$1
|
||||
echo "Updating $tag"
|
||||
date=$(git show ${tag}^0 --format=%aD | head -1)
|
||||
email=$(git show ${tag}^0 --format=%aE | head -1)
|
||||
name=$(git show ${tag}^0 --format=%aN | head -1)
|
||||
GIT_COMMITTER_DATE="$date" GIT_COMMITTER_NAME="$name" GIT_COMMITTER_EMAIL="$email" git tag -s -f ${tag} ${tag}^0 -m ${tag}
|
||||
```
|
||||
|
||||
I apologize for the inconvenience.
|
||||
|
||||
Frank
|
||||
|
||||
|
||||
2
vendor/github.com/magiconair/properties/load.go
сгенерированный
поставляемый
2
vendor/github.com/magiconair/properties/load.go
сгенерированный
поставляемый
@@ -218,7 +218,7 @@ func must(p *Properties, err error) *Properties {
|
||||
// with an empty string. Malformed expressions like "${ENV_VAR" will
|
||||
// be reported as error.
|
||||
func expandName(name string) (string, error) {
|
||||
return expand(name, make(map[string]bool), "${", "}", make(map[string]string))
|
||||
return expand(name, []string{}, "${", "}", make(map[string]string))
|
||||
}
|
||||
|
||||
// Interprets a byte buffer either as an ISO-8859-1 or UTF-8 encoded string.
|
||||
|
||||
77
vendor/github.com/magiconair/properties/properties.go
сгенерированный
поставляемый
77
vendor/github.com/magiconair/properties/properties.go
сгенерированный
поставляемый
@@ -19,6 +19,8 @@ import (
|
||||
"unicode/utf8"
|
||||
)
|
||||
|
||||
const maxExpansionDepth = 64
|
||||
|
||||
// ErrorHandlerFunc defines the type of function which handles failures
|
||||
// of the MustXXX() functions. An error handler function must exit
|
||||
// the application after handling the error.
|
||||
@@ -92,7 +94,7 @@ func (p *Properties) Get(key string) (value string, ok bool) {
|
||||
return "", false
|
||||
}
|
||||
|
||||
expanded, err := p.expand(v)
|
||||
expanded, err := p.expand(key, v)
|
||||
|
||||
// we guarantee that the expanded value is free of
|
||||
// circular references and malformed expressions
|
||||
@@ -525,7 +527,7 @@ func (p *Properties) Set(key, value string) (prev string, ok bool, err error) {
|
||||
p.m[key] = value
|
||||
|
||||
// now check for a circular reference
|
||||
_, err = p.expand(value)
|
||||
_, err = p.expand(key, value)
|
||||
if err != nil {
|
||||
|
||||
// revert to the previous state
|
||||
@@ -696,56 +698,65 @@ outer:
|
||||
// check expands all values and returns an error if a circular reference or
|
||||
// a malformed expression was found.
|
||||
func (p *Properties) check() error {
|
||||
for _, value := range p.m {
|
||||
if _, err := p.expand(value); err != nil {
|
||||
for key, value := range p.m {
|
||||
if _, err := p.expand(key, value); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (p *Properties) expand(input string) (string, error) {
|
||||
func (p *Properties) expand(key, input string) (string, error) {
|
||||
// no pre/postfix -> nothing to expand
|
||||
if p.Prefix == "" && p.Postfix == "" {
|
||||
return input, nil
|
||||
}
|
||||
|
||||
return expand(input, make(map[string]bool), p.Prefix, p.Postfix, p.m)
|
||||
return expand(input, []string{key}, p.Prefix, p.Postfix, p.m)
|
||||
}
|
||||
|
||||
// expand recursively expands expressions of '(prefix)key(postfix)' to their corresponding values.
|
||||
// The function keeps track of the keys that were already expanded and stops if it
|
||||
// detects a circular reference or a malformed expression of the form '(prefix)key'.
|
||||
func expand(s string, keys map[string]bool, prefix, postfix string, values map[string]string) (string, error) {
|
||||
start := strings.Index(s, prefix)
|
||||
if start == -1 {
|
||||
return s, nil
|
||||
func expand(s string, keys []string, prefix, postfix string, values map[string]string) (string, error) {
|
||||
if len(keys) > maxExpansionDepth {
|
||||
return "", fmt.Errorf("expansion too deep")
|
||||
}
|
||||
|
||||
keyStart := start + len(prefix)
|
||||
keyLen := strings.Index(s[keyStart:], postfix)
|
||||
if keyLen == -1 {
|
||||
return "", fmt.Errorf("malformed expression")
|
||||
for {
|
||||
start := strings.Index(s, prefix)
|
||||
if start == -1 {
|
||||
return s, nil
|
||||
}
|
||||
|
||||
keyStart := start + len(prefix)
|
||||
keyLen := strings.Index(s[keyStart:], postfix)
|
||||
if keyLen == -1 {
|
||||
return "", fmt.Errorf("malformed expression")
|
||||
}
|
||||
|
||||
end := keyStart + keyLen + len(postfix) - 1
|
||||
key := s[keyStart : keyStart+keyLen]
|
||||
|
||||
// fmt.Printf("s:%q pp:%q start:%d end:%d keyStart:%d keyLen:%d key:%q\n", s, prefix + "..." + postfix, start, end, keyStart, keyLen, key)
|
||||
|
||||
for _, k := range keys {
|
||||
if key == k {
|
||||
return "", fmt.Errorf("circular reference")
|
||||
}
|
||||
}
|
||||
|
||||
val, ok := values[key]
|
||||
if !ok {
|
||||
val = os.Getenv(key)
|
||||
}
|
||||
new_val, err := expand(val, append(keys, key), prefix, postfix, values)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
s = s[:start] + new_val + s[end+1:]
|
||||
}
|
||||
|
||||
end := keyStart + keyLen + len(postfix) - 1
|
||||
key := s[keyStart : keyStart+keyLen]
|
||||
|
||||
// fmt.Printf("s:%q pp:%q start:%d end:%d keyStart:%d keyLen:%d key:%q\n", s, prefix + "..." + postfix, start, end, keyStart, keyLen, key)
|
||||
|
||||
if _, ok := keys[key]; ok {
|
||||
return "", fmt.Errorf("circular reference")
|
||||
}
|
||||
|
||||
val, ok := values[key]
|
||||
if !ok {
|
||||
val = os.Getenv(key)
|
||||
}
|
||||
|
||||
// remember that we've seen the key
|
||||
keys[key] = true
|
||||
|
||||
return expand(s[:start]+val+s[end+1:], keys, prefix, postfix, values)
|
||||
return s, nil
|
||||
}
|
||||
|
||||
// encode encodes a UTF-8 string to ISO-8859-1 and escapes some characters.
|
||||
|
||||
28
vendor/github.com/magiconair/properties/properties_test.go
сгенерированный
поставляемый
28
vendor/github.com/magiconair/properties/properties_test.go
сгенерированный
поставляемый
@@ -90,6 +90,10 @@ var complexTests = [][]string{
|
||||
{"key=value\nkey2=${key}bb", "key", "value", "key2", "valuebb"},
|
||||
{"key=value\nkey2=aa${key}bb", "key", "value", "key2", "aavaluebb"},
|
||||
{"key=value\nkey2=${key}\nkey3=${key2}", "key", "value", "key2", "value", "key3", "value"},
|
||||
{"key=value\nkey2=${key}${key}", "key", "value", "key2", "valuevalue"},
|
||||
{"key=value\nkey2=${key}${key}${key}${key}", "key", "value", "key2", "valuevaluevaluevalue"},
|
||||
{"key=value\nkey2=${key}${key3}\nkey3=${key}", "key", "value", "key2", "valuevalue", "key3", "value"},
|
||||
{"key=value\nkey2=${key3}${key}${key4}\nkey3=${key}\nkey4=${key}", "key", "value", "key2", "valuevaluevalue", "key3", "value", "key4", "value"},
|
||||
{"key=${USER}", "key", os.Getenv("USER")},
|
||||
{"key=${USER}\nUSER=value", "key", "value", "USER", "value"},
|
||||
}
|
||||
@@ -446,6 +450,30 @@ func TestErrors(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestVeryDeep(t *testing.T) {
|
||||
input := "key0=value\n"
|
||||
prefix := "${"
|
||||
postfix := "}"
|
||||
i := 0
|
||||
for i = 0; i < maxExpansionDepth-1; i++ {
|
||||
input += fmt.Sprintf("key%d=%skey%d%s\n", i+1, prefix, i, postfix)
|
||||
}
|
||||
|
||||
p, err := Load([]byte(input), ISO_8859_1)
|
||||
assert.Equal(t, err, nil)
|
||||
p.Prefix = prefix
|
||||
p.Postfix = postfix
|
||||
|
||||
assert.Equal(t, p.MustGet(fmt.Sprintf("key%d", i)), "value")
|
||||
|
||||
// Nudge input over the edge
|
||||
input += fmt.Sprintf("key%d=%skey%d%s\n", i+1, prefix, i, postfix)
|
||||
|
||||
_, err = Load([]byte(input), ISO_8859_1)
|
||||
assert.Equal(t, err != nil, true, "want error")
|
||||
assert.Equal(t, strings.Contains(err.Error(), "expansion too deep"), true)
|
||||
}
|
||||
|
||||
func TestDisableExpansion(t *testing.T) {
|
||||
input := "key=value\nkey2=${key}"
|
||||
p := mustParse(t, input)
|
||||
|
||||
Ссылка в новой задаче
Block a user