@@ -16,19 +16,11 @@ import (
16
16
)
17
17
18
18
type Config struct {
19
- RuleEngine rules.Evaluator
20
- Auditor audit.Auditor
21
- CertManager tls.Manager
22
- Logger * slog.Logger
23
- }
24
-
25
- // EnhancedConfig extends Config with unprivileged mode support
26
- type EnhancedConfig struct {
27
19
RuleEngine rules.Evaluator
28
20
Auditor audit.Auditor
29
21
CertManager tls.Manager
30
22
Logger * slog.Logger
31
- Unprivileged bool // If true, use user namespace instead of privileged namespaces
23
+ Unprivileged bool // Enable unprivileged mode ( user namespace + iptables)
32
24
}
33
25
34
26
type Jail struct {
@@ -40,6 +32,11 @@ type Jail struct {
40
32
}
41
33
42
34
func New (ctx context.Context , config Config ) (* Jail , error ) {
35
+ // Validate unprivileged mode if requested
36
+ if config .Unprivileged && runtime .GOOS != "linux" {
37
+ return nil , fmt .Errorf ("unprivileged mode only supports Linux, got: %s" , runtime .GOOS )
38
+ }
39
+
43
40
// Setup TLS config and write CA certificate to file
44
41
tlsConfig , caCertPath , configDir , err := config .CertManager .SetupTLSAndWriteCACert ()
45
42
if err != nil {
@@ -71,61 +68,6 @@ func New(ctx context.Context, config Config) (*Jail, error) {
71
68
"REQUESTS_CA_BUNDLE" : caCertPath , // Python requests
72
69
"NODE_EXTRA_CA_CERTS" : caCertPath , // Node.js
73
70
},
74
- })
75
- if err != nil {
76
- return nil , fmt .Errorf ("failed to create commander: %v" , err )
77
- }
78
-
79
- // Create cancellable context for jail
80
- ctx , cancel := context .WithCancel (ctx )
81
-
82
- return & Jail {
83
- commander : commander ,
84
- proxyServer : proxyServer ,
85
- logger : config .Logger ,
86
- ctx : ctx ,
87
- cancel : cancel ,
88
- }, nil
89
- }
90
-
91
- // NewEnhanced creates a jail that can run in either privileged or unprivileged mode
92
- func NewEnhanced (ctx context.Context , config EnhancedConfig ) (* Jail , error ) {
93
- config .Logger .Debug ("Creating enhanced jail" , "unprivileged" , config .Unprivileged )
94
-
95
- // Validate platform support for unprivileged mode
96
- if config .Unprivileged && runtime .GOOS != "linux" {
97
- return nil , fmt .Errorf ("unprivileged mode only supports Linux, got: %s" , runtime .GOOS )
98
- }
99
-
100
- // Setup TLS config and write CA certificate to file
101
- tlsConfig , caCertPath , configDir , err := config .CertManager .SetupTLSAndWriteCACert ()
102
- if err != nil {
103
- return nil , fmt .Errorf ("failed to setup TLS and CA certificate: %v" , err )
104
- }
105
-
106
- // Create proxy server
107
- proxyServer := proxy .NewProxyServer (proxy.Config {
108
- HTTPPort : 8080 ,
109
- HTTPSPort : 8443 ,
110
- Auditor : config .Auditor ,
111
- RuleEngine : config .RuleEngine ,
112
- Logger : config .Logger ,
113
- TLSConfig : tlsConfig ,
114
- })
115
-
116
- // Create appropriate commander based on configuration
117
- commander , err := newEnhancedNamespaceCommander (namespace.Config {
118
- Logger : config .Logger ,
119
- HttpProxyPort : 8080 ,
120
- HttpsProxyPort : 8443 ,
121
- Env : map [string ]string {
122
- "SSL_CERT_FILE" : caCertPath ,
123
- "SSL_CERT_DIR" : configDir ,
124
- "CURL_CA_BUNDLE" : caCertPath ,
125
- "GIT_SSL_CAINFO" : caCertPath ,
126
- "REQUESTS_CA_BUNDLE" : caCertPath ,
127
- "NODE_EXTRA_CA_CERTS" : caCertPath ,
128
- },
129
71
}, config .Unprivileged )
130
72
if err != nil {
131
73
return nil , fmt .Errorf ("failed to create commander: %v" , err )
@@ -182,19 +124,7 @@ func (j *Jail) Close() error {
182
124
}
183
125
184
126
// newNamespaceCommander creates a new namespace instance for the current platform
185
- func newNamespaceCommander (config namespace.Config ) (namespace.Commander , error ) {
186
- switch runtime .GOOS {
187
- case "darwin" :
188
- return namespace .NewMacOS (config )
189
- case "linux" :
190
- return namespace .NewLinux (config )
191
- default :
192
- return nil , fmt .Errorf ("unsupported platform: %s" , runtime .GOOS )
193
- }
194
- }
195
-
196
- // newEnhancedNamespaceCommander creates the appropriate commander based on mode and platform
197
- func newEnhancedNamespaceCommander (config namespace.Config , unprivileged bool ) (namespace.Commander , error ) {
127
+ func newNamespaceCommander (config namespace.Config , unprivileged bool ) (namespace.Commander , error ) {
198
128
switch runtime .GOOS {
199
129
case "darwin" :
200
130
if unprivileged {
0 commit comments