@@ -20,59 +20,93 @@ import (
20
20
"path"
21
21
)
22
22
23
- func (sp * Planner ) sharePath () string {
24
- return path .Join ("/mnt" , string (sp .SmbShare .UID ))
23
+ // Paths for relevant files and dirs within the containers.
24
+ type Paths struct {
25
+ planner * Planner
25
26
}
26
27
27
- func (sp * Planner ) containerConfigPath () string {
28
- cpath := path .Join (sp .containerConfigDir (), "config.json" )
29
- if sp .UserSecuritySource ().Configured {
30
- upath := path .Join (sp .usersConfigDir (), sp .usersConfigFileName ())
31
- cpath += ":" + upath
28
+ // Paths returns an instance of the Paths type for our intended configuration.
29
+ func (planner * Planner ) Paths () * Paths {
30
+ return & Paths {planner }
31
+ }
32
+
33
+ // Share path.
34
+ func (p * Paths ) Share () string {
35
+ return path .Join ("/mnt" , string (p .planner .SmbShare .UID ))
36
+ }
37
+
38
+ // ContainerConfigs returns a slice containing all configuration
39
+ // files that the samba-container should process.
40
+ func (p * Paths ) ContainerConfigs () []string {
41
+ paths := []string {p .containerConfig ()}
42
+ if uc := p .usersConfig (); uc != "" {
43
+ paths = append (paths , uc )
44
+ }
45
+ return paths
46
+ }
47
+
48
+ func (p * Paths ) containerConfig () string {
49
+ return path .Join (p .ContainerConfigDir (), "config.json" )
50
+ }
51
+
52
+ func (p * Paths ) usersConfig () string {
53
+ if ! p .planner .UserSecuritySource ().Configured {
54
+ return ""
32
55
}
33
- return cpath
56
+ return path . Join ( p . UsersConfigDir (), p . UsersConfigBaseName ())
34
57
}
35
58
36
- func (* Planner ) containerConfigDir () string {
59
+ // ContainerConfigDir absolute path.
60
+ func (* Paths ) ContainerConfigDir () string {
37
61
return "/etc/container-config"
38
62
}
39
63
40
- func (* Planner ) usersConfigFileName () string {
64
+ // UsersConfigBaseName file name component.
65
+ func (* Paths ) UsersConfigBaseName () string {
41
66
return "users.json"
42
67
}
43
68
44
- func (* Planner ) usersConfigDir () string {
69
+ // UsersConfigDir absolute path.
70
+ func (* Paths ) UsersConfigDir () string {
45
71
return "/etc/container-users"
46
72
}
47
73
48
- func (* Planner ) winbindSocketsDir () string {
74
+ // WinbindSocketsDir absolute path.
75
+ func (* Paths ) WinbindSocketsDir () string {
49
76
return "/run/samba/winbindd"
50
77
}
51
78
52
- func (* Planner ) sambaStateDir () string {
79
+ // SambaStateDir absolute path.
80
+ func (* Paths ) SambaStateDir () string {
53
81
return "/var/lib/samba"
54
82
}
55
83
56
- func (* Planner ) osRunDir () string {
84
+ // OSRunDir absolute path.
85
+ func (* Paths ) OSRunDir () string {
57
86
return "/run"
58
87
}
59
88
60
- func (* Planner ) joinJSONSourceDir (index int ) string {
89
+ // JoinJSONSourceDir absolute path based on the given index value.
90
+ func (* Paths ) JoinJSONSourceDir (index int ) string {
61
91
return fmt .Sprintf ("/var/tmp/join/%d" , index )
62
92
}
63
93
64
- func (* Planner ) joinJSONFileName () string {
94
+ // JoinJSONBaseName file name component.
95
+ func (* Paths ) JoinJSONBaseName () string {
65
96
return "join.json"
66
97
}
67
98
68
- func (sp * Planner ) joinJSONSourcePath (index int ) string {
69
- return path .Join (sp .joinJSONSourceDir (index ), sp .joinJSONFileName ())
99
+ // JoinJSONSource absolute path based on the given index value.
100
+ func (p * Paths ) JoinJSONSource (index int ) string {
101
+ return path .Join (p .JoinJSONSourceDir (index ), p .JoinJSONBaseName ())
70
102
}
71
103
72
- func (* Planner ) serviceWatchStateDir () string {
104
+ // ServiceWatchStateDir absolute path.
105
+ func (* Paths ) ServiceWatchStateDir () string {
73
106
return "/var/lib/svcwatch"
74
107
}
75
108
76
- func (sp * Planner ) serviceWatchJSONPath () string {
77
- return path .Join (sp .serviceWatchStateDir (), "status.json" )
109
+ // ServiceWatchJSON file absolute path.
110
+ func (p * Paths ) ServiceWatchJSON () string {
111
+ return path .Join (p .ServiceWatchStateDir (), "status.json" )
78
112
}
0 commit comments