Skip to content

Commit 1a9409d

Browse files
committed
Optimize
1 parent d8044e5 commit 1a9409d

File tree

1 file changed

+24
-20
lines changed

1 file changed

+24
-20
lines changed

IPBanCore/Windows/IPBanWindowsEventViewer.cs

Lines changed: 24 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -103,35 +103,36 @@ public void Dispose()
103103
public IReadOnlyCollection<IPAddressLogEvent> ProcessEventViewerXml(string xml)
104104
{
105105
Logger.Trace("Processing event viewer xml: {0}", xml);
106-
List<IPAddressLogEvent> events = [];
107106
XmlDocument doc = ParseXml(xml);
107+
var extractedEvents = ExtractEventViewerXml(doc);
108108

109-
foreach (var evt in ExtractEventViewerXml(doc))
109+
foreach (var extractedEvent in extractedEvents)
110110
{
111-
if (evt is not null &&
112-
evt.IPAddress is not null &&
113-
(evt.Type == IPAddressEventType.FailedLogin ||
114-
evt.Type == IPAddressEventType.SuccessfulLogin))
111+
if (extractedEvent is not null &&
112+
extractedEvent.IPAddress is not null &&
113+
(extractedEvent.Type == IPAddressEventType.FailedLogin ||
114+
extractedEvent.Type == IPAddressEventType.SuccessfulLogin))
115115
{
116-
if (!FindSourceAndUserNameForInfo(evt, doc))
116+
if (!FindSourceAndUserNameForInfo(extractedEvent, doc))
117117
{
118118
// bad ip address
119119
continue;
120120
}
121-
else if (evt.Type == IPAddressEventType.SuccessfulLogin &&
122-
!string.IsNullOrWhiteSpace(evt.UserName) &&
123-
evt.UserName.Contains("anonymous", StringComparison.OrdinalIgnoreCase))
121+
else if (extractedEvent.Type == IPAddressEventType.SuccessfulLogin &&
122+
!string.IsNullOrWhiteSpace(extractedEvent.UserName) &&
123+
extractedEvent.UserName.Contains("anonymous", StringComparison.OrdinalIgnoreCase))
124124
{
125-
Logger.Debug("Ignoring anonymous login from windows event viewer: {0}", evt.UserName);
126-
evt.Type = IPAddressEventType.None;
125+
Logger.Debug("Ignoring anonymous login from windows event viewer: {0}", extractedEvent.UserName);
126+
extractedEvent.Type = IPAddressEventType.None;
127127
}
128-
service.AddIPAddressLogEvents(new IPAddressLogEvent[] { evt });
129-
Logger.Debug("Event viewer found: {0}, {1}, {2}, {3}", evt.IPAddress, evt.Source, evt.UserName, evt.Type);
128+
129+
Logger.Debug("Event viewer found: {0}, {1}, {2}, {3}", extractedEvent.IPAddress, extractedEvent.Source, extractedEvent.UserName, extractedEvent.Type);
130130
}
131-
events.Add(evt);
132131
}
133132

134-
return events;
133+
service.AddIPAddressLogEvents(extractedEvents);
134+
135+
return extractedEvents;
135136
}
136137

137138
private static bool FindSourceAndUserNameForInfo(IPAddressLogEvent info, XmlDocument doc)
@@ -166,12 +167,13 @@ private static bool FindSourceAndUserNameForInfo(IPAddressLogEvent info, XmlDocu
166167
return true;
167168
}
168169

169-
private IEnumerable<IPAddressLogEvent> ExtractEventViewerXml(XmlDocument doc)
170+
private List<IPAddressLogEvent> ExtractEventViewerXml(XmlDocument doc)
170171
{
172+
List<IPAddressLogEvent> events = [];
171173
XmlNode keywordsNode = doc.SelectSingleNode("//Keywords");
172174
if (keywordsNode is null)
173175
{
174-
yield break;
176+
return [];
175177
}
176178

177179
string keywordsText = keywordsNode.InnerText;
@@ -285,11 +287,13 @@ private IEnumerable<IPAddressLogEvent> ExtractEventViewerXml(XmlDocument doc)
285287
failedLoginMinimumTimespan = group.MinimumTimeBetweenLoginAttemptsTimeSpan;
286288

287289
IPAddressEventType eventType = (successfulLogin ? IPAddressEventType.SuccessfulLogin : IPAddressEventType.FailedLogin);
288-
yield return new IPAddressLogEvent(ipAddress, userName, source, count, eventType,
290+
events.Add(new IPAddressLogEvent(ipAddress, userName, source, count, eventType,
289291
timestamp is null ? default : timestamp.Value, false, string.Empty,
290-
failedLoginThreshold, logLevel, logData, notificationFlags, failedLoginMinimumTimespan);
292+
failedLoginThreshold, logLevel, logData, notificationFlags, failedLoginMinimumTimespan));
291293
}
292294
}
295+
296+
return events;
293297
}
294298

295299
private static XmlDocument ParseXml(string xml)

0 commit comments

Comments
 (0)