summaryrefslogtreecommitdiff
path: root/config/server.go
diff options
context:
space:
mode:
Diffstat (limited to 'config/server.go')
-rw-r--r--config/server.go66
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
+}