@@ -132,16 +132,15 @@ processors:
132
132
if (!(ctx.o365audit.Actions instanceof List)) {
133
133
ctx.o365audit.Actions = [ctx.o365audit.Actions];
134
134
}
135
- /*
136
- * Actions contains both a human readable `QueryTime` using AM/PM and an ISO8601 format `QueryTime`
137
- * We remove the AM/PM containing `QueryTime` to avoid duplicate field errors on flattening.
138
- */
139
- def regex = /,"QueryTime":"[0-9\/]+\s[0-9]+:[0-9]+:[0-9]+\s[AP]M"|"QueryTime":"[0-9\/]+\s[0-9]+:[0-9]+:[0-9]+\s[AP]M",/;
135
+
136
+ // Actions contains both a human readable `QueryTime` using AM/PM and an ISO8601 format `QueryTime`
137
+ // We remove the AM/PM containing `QueryTime` to avoid duplicate field errors on flattening.
138
+ def queryTimePattern = /,"QueryTime":"[0-9\/]+\s[0-9]+:[0-9]+:[0-9]+\s[AP]M"|"QueryTime":"[0-9\/]+\s[0-9]+:[0-9]+:[0-9]+\s[AP]M",/;
140
139
for (def e: ctx.o365audit.Actions) {
141
140
if (e instanceof Map) {
142
141
actions.add(e);
143
142
} else if (e instanceof String) {
144
- ctx._tmp.action_strings.add(regex .matcher(e).replaceAll(''));
143
+ ctx._tmp.action_strings.add(queryTimePattern .matcher(e).replaceAll(''));
145
144
}
146
145
}
147
146
if (actions.length == ctx.o365audit.Actions.length) {
@@ -1801,70 +1800,61 @@ processors:
1801
1800
- append :
1802
1801
field : event.type
1803
1802
value : access
1804
- if : ctx.o365audit?.RecordType != null && ctx.o365audit?.RecordType == "50"
1803
+ if : ctx.o365audit?.RecordType == "50"
1805
1804
- append :
1806
1805
field : event.category
1807
1806
value : email
1808
- if : ctx.o365audit?.RecordType != null && ctx.o365audit?.RecordType == "50"
1807
+ if : ctx.o365audit?.RecordType == "50"
1809
1808
- rename :
1810
1809
field : o365audit.Messages
1811
1810
target_field : o365audit.ExchangeAggregatedMessages
1812
1811
tag : rename_messages_exchange
1813
- description : ' Move generic Messages field to the ExchangeAggregatedMessages field type'
1814
- if : ctx.o365audit?.Messages != null && ctx.o365audit?.RecordType != null && ctx.o365audit? .RecordType == "50"
1812
+ description : ' move generic Messages field to the ExchangeAggregatedMessages field type'
1813
+ if : ctx.o365audit?.Messages != null && ctx.o365audit.RecordType == "50"
1815
1814
- script :
1816
1815
tag : convert_exchange_message_size_to_long
1817
1816
if : ctx.o365audit?.ExchangeAggregatedMessages != null
1818
1817
lang : painless
1819
1818
source : |
1820
1819
for (def i = 0; i < ctx.o365audit.ExchangeAggregatedMessages.length; i++) {
1821
- if (ctx.o365audit.ExchangeAggregatedMessages[i].MessageItems != null) {
1822
- for (def j = 0; j < ctx.o365audit.ExchangeAggregatedMessages[i].MessageItems.length; j++) {
1823
- def size = ctx.o365audit.ExchangeAggregatedMessages[i].MessageItems[j].SizeInBytes;
1824
- if (size instanceof String) {
1825
- ctx.o365audit.ExchangeAggregatedMessages[i].MessageItems[j].SizeInBytes = Long.parseLong(size);
1826
- } else {
1827
- ctx.o365audit.ExchangeAggregatedMessages[i].MessageItems[j].SizeInBytes = (long)size;
1828
- }
1820
+ if (ctx.o365audit.ExchangeAggregatedMessages[i].MessageItems == null) {
1821
+ continue;
1822
+ }
1823
+ for (def j = 0; j < ctx.o365audit.ExchangeAggregatedMessages[i].MessageItems.length; j++) {
1824
+ def size = ctx.o365audit.ExchangeAggregatedMessages[i].MessageItems[j].SizeInBytes;
1825
+ if (size instanceof String) {
1826
+ ctx.o365audit.ExchangeAggregatedMessages[i].MessageItems[j].SizeInBytes = Long.parseLong(size);
1827
+ } else {
1828
+ ctx.o365audit.ExchangeAggregatedMessages[i].MessageItems[j].SizeInBytes = (long)size;
1829
1829
}
1830
1830
}
1831
1831
}
1832
1832
1833
- - remove :
1834
- field : o365audit.Messages
1835
- tag : remove_messages_field
1836
- if : ctx.o365audit?.Messages != null
1837
- description : ' remove o365audit.Messages if we have not explicitly renamed them based on record type'
1838
-
1839
1833
- rename :
1840
1834
field : o365audit.Folders
1841
1835
target_field : o365audit.ExchangeAggregatedFolders
1842
1836
tag : rename_folders_exchange
1843
- description : ' Move generic Folders field to the O365 ExchangeAggregatedFolders field type'
1844
- if : ctx.o365audit?.Folders != null && ctx.o365audit?.RecordType != null && ctx.o365audit? .RecordType == "50"
1837
+ description : ' move generic Folders field to the O365 ExchangeAggregatedFolders field type'
1838
+ if : ctx.o365audit?.Folders != null && ctx.o365audit.RecordType == "50"
1845
1839
- script :
1846
1840
tag : convert_exchange_folder_size_to_long
1847
1841
if : ctx.o365audit?.ExchangeAggregatedFolders != null
1848
1842
lang : painless
1849
1843
source : |
1850
1844
for (def i = 0; i < ctx.o365audit.ExchangeAggregatedFolders.length; i++) {
1851
- if (ctx.o365audit.ExchangeAggregatedFolders[i].FolderItems != null) {
1852
- for (def j = 0; j < ctx.o365audit.ExchangeAggregatedFolders[i].FolderItems.length; j++) {
1853
- def size = ctx.o365audit.ExchangeAggregatedFolders[i].FolderItems[j].SizeInBytes;
1854
- if (size instanceof String) {
1855
- ctx.o365audit.ExchangeAggregatedFolders[i].FolderItems[j].SizeInBytes = Long.parseLong(size);
1856
- } else {
1857
- ctx.o365audit.ExchangeAggregatedFolders[i].FolderItems[j].SizeInBytes = (long)size;
1858
- }
1845
+ if (ctx.o365audit.ExchangeAggregatedFolders[i].FolderItems == null) {
1846
+ continue;
1847
+ }
1848
+ for (def j = 0; j < ctx.o365audit.ExchangeAggregatedFolders[i].FolderItems.length; j++) {
1849
+ def size = ctx.o365audit.ExchangeAggregatedFolders[i].FolderItems[j].SizeInBytes;
1850
+ if (size instanceof String) {
1851
+ ctx.o365audit.ExchangeAggregatedFolders[i].FolderItems[j].SizeInBytes = Long.parseLong(size);
1852
+ } else {
1853
+ ctx.o365audit.ExchangeAggregatedFolders[i].FolderItems[j].SizeInBytes = (long)size;
1859
1854
}
1860
1855
}
1861
1856
}
1862
1857
1863
- - remove :
1864
- field : o365audit.Folders
1865
- tag : remove_folders_field
1866
- if : ctx.o365audit?.Folders != null
1867
- description : ' Remove o365audit.Folders if we have not explicitly renamed them based on record type'
1868
1858
- script :
1869
1859
description : Handle _tmp.entities.ThreatDetectionMethods containing list of lists.
1870
1860
lang : painless
0 commit comments