mirror of
https://github.com/status-im/consul.git
synced 2025-01-11 14:24:39 +00:00
agent: use squash mapstructure tag to properly decode embedded structs
This commit is contained in:
parent
5a8703bb00
commit
c958824bb6
@ -348,26 +348,32 @@ type Config struct {
|
|||||||
UnixSockets UnixSocketConfig `mapstructure:"unix_sockets"`
|
UnixSockets UnixSocketConfig `mapstructure:"unix_sockets"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// UnixSocketConfig contains information about a unix socket, and
|
// UnixSocketPermissions contains information about a unix socket, and
|
||||||
// implements the FilePermissions interface.
|
// implements the FilePermissions interface.
|
||||||
type UnixSocketConfig struct {
|
type UnixSocketPermissions struct {
|
||||||
Usr string `mapstructure:"user"`
|
Usr string `mapstructure:"user"`
|
||||||
Grp string `mapstructure:"group"`
|
Grp string `mapstructure:"group"`
|
||||||
Perms string `mapstructure:"mode"`
|
Perms string `mapstructure:"mode"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (u UnixSocketConfig) User() string {
|
func (u UnixSocketPermissions) User() string {
|
||||||
return u.Usr
|
return u.Usr
|
||||||
}
|
}
|
||||||
|
|
||||||
func (u UnixSocketConfig) Group() string {
|
func (u UnixSocketPermissions) Group() string {
|
||||||
return u.Grp
|
return u.Grp
|
||||||
}
|
}
|
||||||
|
|
||||||
func (u UnixSocketConfig) Mode() string {
|
func (u UnixSocketPermissions) Mode() string {
|
||||||
return u.Perms
|
return u.Perms
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// UnixSocketConfig stores information about various unix sockets which
|
||||||
|
// Consul creates and uses for communication.
|
||||||
|
type UnixSocketConfig struct {
|
||||||
|
UnixSocketPermissions `mapstructure:",squash"`
|
||||||
|
}
|
||||||
|
|
||||||
// unixSocketAddr tests if a given address describes a domain socket,
|
// unixSocketAddr tests if a given address describes a domain socket,
|
||||||
// and returns the relevant path part of the string if it is.
|
// and returns the relevant path part of the string if it is.
|
||||||
func unixSocketAddr(addr string) (string, bool) {
|
func unixSocketAddr(addr string) (string, bool) {
|
||||||
|
@ -1016,10 +1016,12 @@ func TestMergeConfig(t *testing.T) {
|
|||||||
"Access-Control-Allow-Origin": "*",
|
"Access-Control-Allow-Origin": "*",
|
||||||
},
|
},
|
||||||
UnixSockets: UnixSocketConfig{
|
UnixSockets: UnixSocketConfig{
|
||||||
|
UnixSocketPermissions{
|
||||||
Usr: "500",
|
Usr: "500",
|
||||||
Grp: "500",
|
Grp: "500",
|
||||||
Perms: "0700",
|
Perms: "0700",
|
||||||
},
|
},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
c := MergeConfig(a, b)
|
c := MergeConfig(a, b)
|
||||||
|
@ -70,7 +70,8 @@ func TestHTTPServer_UnixSocket(t *testing.T) {
|
|||||||
|
|
||||||
// Only testing mode, since uid/gid might not be settable
|
// Only testing mode, since uid/gid might not be settable
|
||||||
// from test environment.
|
// from test environment.
|
||||||
c.UnixSockets = UnixSocketConfig{Perms: "0777"}
|
c.UnixSockets = UnixSocketConfig{}
|
||||||
|
c.UnixSockets.Perms = "0777"
|
||||||
})
|
})
|
||||||
defer os.RemoveAll(dir)
|
defer os.RemoveAll(dir)
|
||||||
defer srv.Shutdown()
|
defer srv.Shutdown()
|
||||||
|
@ -51,22 +51,22 @@ func TestSetFilePermissions(t *testing.T) {
|
|||||||
defer os.Remove(path)
|
defer os.Remove(path)
|
||||||
|
|
||||||
// Bad UID fails
|
// Bad UID fails
|
||||||
if err := setFilePermissions(path, UnixSocketConfig{Usr: "%"}); err == nil {
|
if err := setFilePermissions(path, UnixSocketPermissions{Usr: "%"}); err == nil {
|
||||||
t.Fatalf("should fail")
|
t.Fatalf("should fail")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Bad GID fails
|
// Bad GID fails
|
||||||
if err := setFilePermissions(path, UnixSocketConfig{Grp: "%"}); err == nil {
|
if err := setFilePermissions(path, UnixSocketPermissions{Grp: "%"}); err == nil {
|
||||||
t.Fatalf("should fail")
|
t.Fatalf("should fail")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Bad mode fails
|
// Bad mode fails
|
||||||
if err := setFilePermissions(path, UnixSocketConfig{Perms: "%"}); err == nil {
|
if err := setFilePermissions(path, UnixSocketPermissions{Perms: "%"}); err == nil {
|
||||||
t.Fatalf("should fail")
|
t.Fatalf("should fail")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Allows omitting user/group/mode
|
// Allows omitting user/group/mode
|
||||||
if err := setFilePermissions(path, UnixSocketConfig{}); err != nil {
|
if err := setFilePermissions(path, UnixSocketPermissions{}); err != nil {
|
||||||
t.Fatalf("err: %s", err)
|
t.Fatalf("err: %s", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -74,7 +74,7 @@ func TestSetFilePermissions(t *testing.T) {
|
|||||||
if err := os.Chmod(path, 0700); err != nil {
|
if err := os.Chmod(path, 0700); err != nil {
|
||||||
t.Fatalf("err: %s", err)
|
t.Fatalf("err: %s", err)
|
||||||
}
|
}
|
||||||
if err := setFilePermissions(path, UnixSocketConfig{}); err != nil {
|
if err := setFilePermissions(path, UnixSocketPermissions{}); err != nil {
|
||||||
t.Fatalf("err: %s", err)
|
t.Fatalf("err: %s", err)
|
||||||
}
|
}
|
||||||
fi, err := os.Stat(path)
|
fi, err := os.Stat(path)
|
||||||
@ -86,7 +86,7 @@ func TestSetFilePermissions(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Changes mode if given
|
// Changes mode if given
|
||||||
if err := setFilePermissions(path, UnixSocketConfig{Perms: "0777"}); err != nil {
|
if err := setFilePermissions(path, UnixSocketPermissions{Perms: "0777"}); err != nil {
|
||||||
t.Fatalf("err: %s", err)
|
t.Fatalf("err: %s", err)
|
||||||
}
|
}
|
||||||
fi, err = os.Stat(path)
|
fi, err = os.Stat(path)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user