diff options
Diffstat (limited to 'config/server.go')
| -rw-r--r-- | config/server.go | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/config/server.go b/config/server.go new file mode 100644 index 0000000..7883b33 --- /dev/null +++ b/config/server.go @@ -0,0 +1,66 @@ +package config + +import ( + "errors" +) + +// Permissions map. Each SSH user has a list of permissions which +// log files it is allowed to follow and which ones not. +type Permissions struct { + // The default user permissions. + Default []string + // The per user special permissions. + Users map[string][]string +} + +// ServerConfig represents the server configuration. +type ServerConfig struct { + // The SSH server bind port. + SSHBindAddress string + // The max amount of concurrent user connection allowed to connect to the server. + MaxConnections int + // The max amount of concurrent cats per server. + MaxConcurrentCats int + // The max amount of concurrent tails per server. + MaxConcurrentTails int + // The user permissions. + Permissions Permissions `json:",omitempty"` + // The mapr log format + MapreduceLogFormat string `json:",omitempty"` + // The default path of the server host key + HostKeyFile string + // The host key size in bits + HostKeyBits int +} + +// Create a new default server configuration. +func newDefaultServerConfig() *ServerConfig { + defaultPermissions := []string{"^/.*"} + defaultBindAddress := "0.0.0.0" + + return &ServerConfig{ + SSHBindAddress: defaultBindAddress, + MaxConnections: 10, + MaxConcurrentCats: 2, + MaxConcurrentTails: 50, + HostKeyFile: "./cache/ssh_host_key", + HostKeyBits: 4096, + Permissions: Permissions{ + Default: defaultPermissions, + }, + } +} + +// ServerUserPermissions retrieves the permission set of a given user. +func ServerUserPermissions(userName string) (permissions []string, err error) { + permissions = Server.Permissions.Default + if p, ok := Server.Permissions.Users[userName]; ok { + permissions = p + } + + if len(permissions) == 0 { + err = errors.New("Empty set of permission, user won't be able to open any files") + } + + return +} |
