blob: 0af3c081e980127c42e57298d16625b431b6ae6f [file] [log] [blame]
Sui Chenb65280f2020-06-30 18:14:03 -07001<!DOCTYPE html>
2<!-- Caution: Electron does not allow inline scripts or styles! -->
3<html>
4 <head>
5 <meta charset="UTF-8">
6 <!-- https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP -->
7 <meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self'">
8 <meta http-equiv="X-Content-Security-Policy" content="default-src 'self'; script-src 'self'">
9 <title>DBus &amp; IPMI Request Visualizer</title>
10 </head>
11 <body>
12 <div id="div_title"><span>
13 <b>DBus &amp; IPMI Request Visualizer</b>
Sui Chenc403b032022-03-06 18:03:12 -080014 </span>
15 </div>
Sui Chenb65280f2020-06-30 18:14:03 -070016 <div id="title_mode_select">
Sui Chenc403b032022-03-06 18:03:12 -080017 <span>
18 <input type="radio" id="radio_open_file" name="mode" value="open_file"></input>
19 <label for="radio_open_file">Open an existing file</label>
20 <input type="radio" id="radio_capture" name="mode" value="capture"></input>
21 <label for="radio_capture">Capture on a BMC</label>
Sui Chenb65280f2020-06-30 18:14:03 -070022 </span>
Sui Chenc403b032022-03-06 18:03:12 -080023 </div>
24 <div id="title_open_file">
25 <span><b>File name: </b></span>
26 <span id="file_name"></span>
27 <button id="btn_open_file">Open file</button>
28 <br />
29 </div>
30 <div id="title_capture">
31 <span><b>Capture: </b></span>
32 <input type="text" id="text_hostname" value=""></input>
33 <button id="btn_start_capture">Start Capture</button>
34 <button id="btn_stop_capture">Stop Capture</button>
35 <select id="select_capture_mode">
36 <option value="live">Live</option>
37 <option value="staged">Staged (IPMI detailed)</option>
38 <option value="staged2">Staged (DBus + IPMI)</option>
39 </select>
Sui Chenb65280f2020-06-30 18:14:03 -070040 </div>
Sui Chenc403b032022-03-06 18:03:12 -080041 <div id="title_capture_info">
42 <div id="capture_info">Info will appear here</div>
43 </div>
Sui Chenb65280f2020-06-30 18:14:03 -070044
45 <hr/>
46
Sui Chenc403b032022-03-06 18:03:12 -080047 <div id="div_group_by">
Sui Chenb65280f2020-06-30 18:14:03 -070048 <span id="span_group_by_dbus">
Sui Chenc403b032022-03-06 18:03:12 -080049 Group DBus Requests by:
50 <input type="checkbox" id="dbus_column1" value="Type">Type</input>
51 <input type="checkbox" id="dbus_column2" value="Serial">Serial</input>
52 <input type="checkbox" id="dbus_column3" value="Sender">Sender</input>
53 <input type="checkbox" id="dbus_column4" value="Destination">Destination</input>
54 <input type="checkbox" id="dbus_column5" value="Path"checked>Path</input>
55 <input type="checkbox" id="dbus_column6" value="Interface" checked>Interface</input>
56 <input type="checkbox" id="dbus_column7" value="Member">Member</input>
Sui Chenb65280f2020-06-30 18:14:03 -070057 </span>
58 <span id="span_group_by_ipmi">
Sui Chenc403b032022-03-06 18:03:12 -080059 Group IPMI Requests by:
60 <input type="checkbox" id="c1" value="NetFN" checked>NetFN</input>
61 <input type="checkbox" id="c2" value="CMD" checked>CMD</input>
Sui Chenb65280f2020-06-30 18:14:03 -070062 </span>
63 <div id="span_group_by_boost_asio_handler">
Sui Chenc403b032022-03-06 18:03:12 -080064 Group Asio Handlers by:
65 <input type="checkbox" id="bah1" value="Layout Level" checked>Layout Level</input>
66 <input type="checkbox" id="bah2" value="Description">Description</input>
67 <input type="checkbox" id="bah3" value="Description1">Description w/ addresses removed</input>
Sui Chenb65280f2020-06-30 18:14:03 -070068 </div>
Sui Chenc403b032022-03-06 18:03:12 -080069 </div>
Sui Chenb65280f2020-06-30 18:14:03 -070070
Sui Chenc403b032022-03-06 18:03:12 -080071 <div id="div_canvas">
72 <div id="blocker">
73 <div id="blocker_caption">AAAAA</div>
74 </div>
75 <div id="welcome_screen">
76 <div id="welcome_screen_content">
77 <br/><span>Welcome! Please <button id="btn_open_file2">Open file</button> to get timeline view/s.<span>
78 <br/>
79 <br/>Supported file types:
80 <ol>
81 <li>DBus pcap file</li>
82 <li>Boost ASIO handler log file</li>
83 </ol>
84 One file from each type (2 files in total) can be viewed simultaneously.
85 </div>
86 <hr />
87 <div id="dbus_pcap_status_content">
88 dbus-pcap status goes here
89 </div>
90 <div id="dbus_pcap_error_content">
91 The <b>dbus-pcap</b> script is not found; dbus-vis needs <b>dbus-pcap</b> for parsing PCAP files.<br/><br/>
92 Click to down <b>dbus-pcap</b> from: <br/>
93 https://raw.githubusercontent.com/openbmc/openbmc-tools/08ce0a5bad2b5c970af567c2e9888d444afe3946/dbus-pcap/dbus-pcap<br/><br/>
94 <button id="btn_download_dbus_pcap">Download to dbus-vis folder</button>
95 </div>
96 <div id="scapy_error_content">
97 The <b>scapy</b> Python module is not installed. dbus-vis depends on dbus-pcap, which in turn depends on the scapy Python module.
98
99 Please install it using either of the following commands:<br/>
100 <br/>
101 python3 -m pip install scapy<br/>
102 sudo apt install python3-scapy<br/>
103 <br/>
104 After installation, refresh dbus-vis with Ctrl+R.
105 </div>
106 </div>
107 <canvas id="my_canvas_dbus" width="1400" height="600"></canvas>
108 <canvas id="my_canvas_ipmi" width="1400" height="200"></canvas>
109 <canvas id="my_canvas_boost_asio_handler" width="1400" height="200"></canvas>
110 </div>
Sui Chenb65280f2020-06-30 18:14:03 -0700111
Sui Chenc403b032022-03-06 18:03:12 -0800112 <div id="div_navi_and_replay">
113 <div>
114 <span>
115 Navigation Control:
116 <button id="btn_zoom_in">Zoom In</button>
117 <button id="btn_zoom_out">Zoom Out</button>
118 <button id="btn_pan_left">&lt;&lt;</button>
119 <button id="btn_pan_right">&gt;&gt;</button>
120 <button id="btn_zoom_reset">Reset</button>
121 </span>
122 </div>
123 <div>Keyboard: [Left]/[right] arrow keys to pan; [Up]/[down] arrow keys to zoom in/out; Hold [shift] to move faster<br/>Mouse: [Left click]: highlight an interval; [wheel up/down]: zoom in/out; click overflow triangles to warp to out-of-viewport requests
124 </div>
125 <div id="highlight_hint">Click highlighted region to zoom into the region</div>
126 <div>
127 <input type="checkbox" id="cb_debuginfo">Show Debug Info</input>
128 </div>
129 <br/>
130 <div id="ipmi_replay">
131 <span>Generate replay commands for the </span><span id="highlight_count">0</span><span> highlighted IPMI requests:</span>
132 <br/>
133 <span>For replaying through "ipmitool" on host or BMC:
134 <button id="gen_replay_ipmitool1">Individual calls</button>
135 <button id="gen_replay_ipmitool2">exec command list</button></span>
136 <br/>
137 <span>For replaying through "busctl" on BMC:
138 <button id="gen_replay_ipmid_legacy">Legacy Interface (for btbridged)</button>
139 <button id="gen_replay_ipmid_new">New Interface (for kcsbridged / netipmid)</button></span>
140 <textarea rows="10" cols="150" id="ipmi_replay_output"></textarea>
141 </div>
142 </div> <!-- navi and replay -->
Sui Chenb65280f2020-06-30 18:14:03 -0700143 <br/>
144
Sui Chenc403b032022-03-06 18:03:12 -0800145 <div id="highlighted_messages" class="info_panel">
146 <div id="highlighted_messages_header" class="info_panel_header">Info of selected range</div>
147 <div id="highlighted_messages_content" class="info_panel_content"></div>
148 </div>
149
Sui Chenb65280f2020-06-30 18:14:03 -0700150 <!-- You can also require other files to run in this process -->
151 <script src="./timeline_view.js"></script>
152 <script src="./dbus_timeline_vis.js"></script>
153 <script src="./ipmi_timeline_vis.js"></script>
Sui Chenc403b032022-03-06 18:03:12 -0800154 <script src="./boost_handler_timeline_vis.js"></script>
Sui Chenb65280f2020-06-30 18:14:03 -0700155 <script src="./ipmi_parse.js"></script>
156 <script src="./ipmi_capture.js"></script>
157 <script src="./renderer.js"></script>
Sui Chenc403b032022-03-06 18:03:12 -0800158 <script src="./dbus_pcap_loader.js"></script>
159 <script src="./info_panel.js"></script>
160 <script src="./initialization.js"></script>
161 <link rel="stylesheet" href="./dbus_vis.css">
Sui Chenb65280f2020-06-30 18:14:03 -0700162 </body>
163</html>