-
Notifications
You must be signed in to change notification settings - Fork 0
/
cloudtrail.html
111 lines (103 loc) · 5.88 KB
/
cloudtrail.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta content="width=device-width, initial-scale=1, shrink-to-fit=no" name="viewport">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>AWS CloudTrail Visualizer</title>
<!-- Bootstrap core CSS -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css" integrity="sha384-zCbKRCUGaJDkqS1kPbPd7TveP5iyJE0EjAuZQTgFLD2ylzuqKfdKlfG/eSrtxUkn" crossorigin="anonymous">
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/v/bs4/dt-1.12.1/datatables.min.css"/>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.9.0/font/bootstrap-icons.css"/>
<link rel="stylesheet" type="text/css" href="css/main.css"/>
</head>
<body>
<div class="container-fluid">
<div class="row">
<div class="col-sm">
<div>
Toggle column:
<i class="bi bi-eye-slash-fill" id="close-toggle-menu" role="img" aria-label="Close column menu"></i>
<i class="bi bi-search" id="show-advanced-search" role="img" aria-label="Show advanced search"></i>
<i>(Use shift+mouse_wheel to scroll horizontally)</i>
</div>
<div class="shadow-sm p-3 mb-5 bg-white rounded" id="toggle-vis"> </div>
</div>
</div>
<div class="row" style="border: 0px solid red">
<div class="col">
<div class="form-row mb-1 float-right">
<label class="col-lg-3">
Data read from file
</label>
<div class="col-lg-7">
<input class="form-control basicAutoCompleteShowDropdown" placeholder="type to search..." type="text" autocomplete="off">
</div>
<div class="col-lg-2">
<button type="button" class="btn btn-block btn-outline-secondary basicAutoCompleteShowBtn">
Show
</button>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm">
<div id="table-container"></div>
</div>
</div>
<footer class="row">
<div class="col">
<p class="text-right small">based on <a href="https://github.com/derekeder/csv-to-html-table">CSV to HTML Table</a> by
<a href="http://derekeder.com">Derek Eder</a></p>
</div>
</footer>
</div>
<script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.min.js" integrity="sha384-ZvpUoO/+PpLXR1lu4jmpXWu80pZlYUAfxl5NsBMWOEPSjUn/6Z/hRTt8+pR6L4N2" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.bundle.min.js" integrity="sha384-fQybjgWLrvvRgtW6bFlB7jaZrFsaBXjsOMm/tB9LTS58ONXgqbR9W8oWht/amnpF" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap-autocomplete@2.3.7/dist/latest/bootstrap-autocomplete.min.js" integrity="sha256-yYoz9OwGJUuV2927SrBHgg/bdqOF6oA0v781vA0/0FU=" crossorigin="anonymous"></script>
<script src="js/jquery.csv.min.js"></script>
<script src="js/athena-struct-parser.js"></script>
<script type="text/javascript" src="https://cdn.datatables.net/v/dt/dt-1.12.1/datatables.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/js-cookie@3.0.1/dist/js.cookie.min.js" integrity="sha256-0H3Nuz3aug3afVbUlsu12Puxva3CP4EhJtPExqs54Vg=" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.4/moment.min.js" integrity="sha256-CBc3mFM1r0vhX8Z27UzMBwPHRGxrXLyTF+QLzcZCjl0=" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script src="js/csv_to_html_table.js"></script>
<script src="js/struct_format.js"></script>
<script>
let f_blable = value => '<span class="badge badge-secondary">'+value+'</span>';
let f_rw = value => value === 'true' ? '<span class="badge badge-success">'+value+'</span>' : '<span class="badge badge-danger">'+value+'</span>' ;
// let f_source = value => value === 'AWS Internal' ? '<i class="bi-x-circle-fill" role="img" aria-label="AWS Internal"></i>' : value;
let f_source = value => {
if (value === 'AWS Internal') return '<p class="text-danger bi-robot"><br />AWS Internal</p>'
if (value.includes('Terraform/')) return `<p class="text-secondary bi-robot"><br />${value}</p>`
if (value.endsWith('.amazonaws.com')) return `<p class="text-secondary bi-robot"><br />${value}</p>`
if (value.trim().length === 0) return '<i class="text-danger bi-x-circle-fill" role="img" aria-label="NONE"></i>'
return `<i class="bi bi-question-circle-fill"></i><p class="text-light bg-dark">${value}</p>`
}
CsvToHtmlTable.init({
// csv_path: "test.csv", // do not uncomment - detects from cookies
element: "table-container",
allow_download: true,
reorder_columns_simple: ['eventtime', 'eventname', 'eventsource'],
hide_columns: ['eventversion', 'date_parts'],
csv_options: {
separator: ",",
delimiter: '"'
},
datatables_options: {
paging: false
},
custom_formatting: [
[0, struct_format.json.prettyDate],
[1, f_blable],
[4, struct_format.json.prettyPrint],
// [6, f_source], # todo: use client IP to show country flag using https://ipapi.co/
[7, f_source],
[10, struct_format.json.prettyJSON],
[11, struct_format.json.prettyJSON],
[15, f_rw]
]
});
</script>
</body>
</html>