55 "fmt"
66 "net/http"
77 "os"
8- "sync"
9- "time"
108
119 "github.com/florianl/go-nflog/v2"
1210)
@@ -47,8 +45,6 @@ type IPTables interface {
4745 ClearChain (table , chain string ) error
4846}
4947
50- var fileMutex sync.Mutex
51-
5248// Run the agent
5349// TODO: move all inputs into a struct
5450func Run (ctx context.Context , configFilePath string , hostDNSServer DNSServer ,
@@ -67,15 +63,15 @@ func Run(ctx context.Context, configFilePath string, hostDNSServer DNSServer,
6763 apiclient := & ApiClient {Client : & http.Client {}, APIURL : config .APIURL }
6864
6965 // TODO: pass in an iowriter/ use log library
70- writeLog (fmt .Sprintf ("read config %v" , config ))
66+ WriteLog (fmt .Sprintf ("read config %v" , config ))
7167
72- writeLog (fmt .Sprintf ("%s %s" , StepSecurityLogCorrelationPrefix , config .CorrelationId ))
68+ WriteLog (fmt .Sprintf ("%s %s" , StepSecurityLogCorrelationPrefix , config .CorrelationId ))
7369
7470 // TODO: fix the cache and time
7571 Cache := InitCache (10 * 60 * 1000000000 ) // 10 * 60 seconds
7672
7773 allowedEndpoints := addImplicitEndpoints (config .Endpoints )
78-
74+
7975 // Start DNS servers and get confirmation
8076 dnsProxy := DNSProxy {
8177 Cache : & Cache ,
@@ -93,20 +89,20 @@ func Run(ctx context.Context, configFilePath string, hostDNSServer DNSServer,
9389 if cmd == nil {
9490 procMon := & ProcessMonitor {CorrelationId : config .CorrelationId , Repo : config .Repo , ApiClient : apiclient , WorkingDirectory : config .WorkingDirectory }
9591 go procMon .MonitorProcesses (errc )
96- writeLog ("started process monitor" )
92+ WriteLog ("started process monitor" )
9793 }
9894
9995 dnsConfig := DnsConfig {}
10096
10197 var ipAddressEndpoints []ipAddressEndpoint
102-
98+
10399 // hydrate dns cache
104100 if config .EgressPolicy == EgressPolicyBlock {
105101 for _ , endpoint := range allowedEndpoints {
106102 // this will cause domain, IP mapping to be cached
107103 ipAddress , err := dnsProxy .getIPByDomain (endpoint .domainName )
108104 if err != nil {
109- writeLog (fmt .Sprintf ("Error resolving allowed domain %v" , err ))
105+ WriteLog (fmt .Sprintf ("Error resolving allowed domain %v" , err ))
110106 RevertChanges (iptables , nflog , cmd , resolvdConfigPath , dockerDaemonConfigPath , dnsConfig )
111107 return err
112108 }
@@ -118,21 +114,21 @@ func Run(ctx context.Context, configFilePath string, hostDNSServer DNSServer,
118114
119115 // Change DNS config on host, causes processes to use agent's DNS proxy
120116 if err := dnsConfig .SetDNSServer (cmd , resolvdConfigPath , tempDir ); err != nil {
121- writeLog (fmt .Sprintf ("Error setting DNS server %v" , err ))
117+ WriteLog (fmt .Sprintf ("Error setting DNS server %v" , err ))
122118 RevertChanges (iptables , nflog , cmd , resolvdConfigPath , dockerDaemonConfigPath , dnsConfig )
123119 return err
124120 }
125121
126- writeLog ("updated resolved" )
122+ WriteLog ("updated resolved" )
127123
128124 // Change DNS for docker, causes process in containers to use agent's DNS proxy
129125 if err := dnsConfig .SetDockerDNSServer (cmd , dockerDaemonConfigPath , tempDir ); err != nil {
130- writeLog (fmt .Sprintf ("Error setting DNS server for docker %v" , err ))
126+ WriteLog (fmt .Sprintf ("Error setting DNS server for docker %v" , err ))
131127 RevertChanges (iptables , nflog , cmd , resolvdConfigPath , dockerDaemonConfigPath , dnsConfig )
132128 return err
133129 }
134130
135- writeLog ("set docker config" )
131+ WriteLog ("set docker config" )
136132
137133 if config .EgressPolicy == EgressPolicyAudit {
138134 netMonitor := NetworkMonitor {
@@ -144,20 +140,20 @@ func Run(ctx context.Context, configFilePath string, hostDNSServer DNSServer,
144140
145141 // Start network monitor
146142 go netMonitor .MonitorNetwork (nflog , errc ) // listens for NFLOG messages
147- //writeLog("started net monitor")
148- writeLog ("before audit rules" )
143+
144+ WriteLog ("before audit rules" )
149145
150146 // Add logging to firewall, including NFLOG rules
151147 if err := AddAuditRules (iptables ); err != nil {
152- writeLog (fmt .Sprintf ("Error adding firewall rules %v" , err ))
148+ WriteLog (fmt .Sprintf ("Error adding firewall rules %v" , err ))
153149 RevertChanges (iptables , nflog , cmd , resolvdConfigPath , dockerDaemonConfigPath , dnsConfig )
154150 return err
155151 }
156152
157- writeLog ("added audit rules" )
153+ WriteLog ("added audit rules" )
158154 } else if config .EgressPolicy == EgressPolicyBlock {
159155
160- writeLog (fmt .Sprintf ("Allowed domains:%v" , config .Endpoints ))
156+ WriteLog (fmt .Sprintf ("Allowed domains:%v" , config .Endpoints ))
161157
162158 netMonitor := NetworkMonitor {
163159 CorrelationId : config .CorrelationId ,
@@ -170,13 +166,13 @@ func Run(ctx context.Context, configFilePath string, hostDNSServer DNSServer,
170166 go netMonitor .MonitorNetwork (nflog , errc ) // listens for NFLOG messages
171167
172168 if err := addBlockRulesForGitHubHostedRunner (ipAddressEndpoints ); err != nil {
173- writeLog (fmt .Sprintf ("Error setting firewall for allowed domains %v" , err ))
169+ WriteLog (fmt .Sprintf ("Error setting firewall for allowed domains %v" , err ))
174170 RevertChanges (iptables , nflog , cmd , resolvdConfigPath , dockerDaemonConfigPath , dnsConfig )
175171 return err
176172 }
177173 }
178174
179- writeLog ("done" )
175+ WriteLog ("done" )
180176
181177 // Write the status file
182178 writeStatus ("Initialized" )
@@ -186,7 +182,7 @@ func Run(ctx context.Context, configFilePath string, hostDNSServer DNSServer,
186182 case <- ctx .Done ():
187183 return nil
188184 case e := <- errc :
189- writeLog (fmt .Sprintf ("Error in Initialization %v" , e ))
185+ WriteLog (fmt .Sprintf ("Error in Initialization %v" , e ))
190186 RevertChanges (iptables , nflog , cmd , resolvdConfigPath , dockerDaemonConfigPath , dnsConfig )
191187 return e
192188
@@ -210,29 +206,17 @@ func RevertChanges(iptables *Firewall, nflog AgentNflogger,
210206 cmd Command , resolvdConfigPath , dockerDaemonConfigPath string , dnsConfig DnsConfig ) {
211207 err := RevertFirewallChanges (iptables )
212208 if err != nil {
213- writeLog (fmt .Sprintf ("Error in RevertChanges %v" , err ))
209+ WriteLog (fmt .Sprintf ("Error in RevertChanges %v" , err ))
214210 }
215211 err = dnsConfig .RevertDNSServer (cmd , resolvdConfigPath )
216212 if err != nil {
217- writeLog (fmt .Sprintf ("Error in reverting DNS server changes %v" , err ))
213+ WriteLog (fmt .Sprintf ("Error in reverting DNS server changes %v" , err ))
218214 }
219215 err = dnsConfig .RevertDockerDNSServer (cmd , dockerDaemonConfigPath )
220216 if err != nil {
221- writeLog (fmt .Sprintf ("Error in reverting docker DNS server changes %v" , err ))
217+ WriteLog (fmt .Sprintf ("Error in reverting docker DNS server changes %v" , err ))
222218 }
223- writeLog ("Reverted changes" )
224- }
225-
226- func writeLog (message string ) {
227- fileMutex .Lock ()
228- defer fileMutex .Unlock ()
229-
230- f , _ := os .OpenFile ("/home/agent/agent.log" ,
231- os .O_APPEND | os .O_CREATE | os .O_WRONLY , 0644 )
232-
233- defer f .Close ()
234-
235- f .WriteString (fmt .Sprintf ("%s:%s\n " , time .Now ().String (), message ))
219+ WriteLog ("Reverted changes" )
236220}
237221
238222func writeStatus (message string ) {
0 commit comments