1<h2>Connection <%= fmt_string(connection.name) %> <%= fmt_maybe_vhost(connection.vhost) %></h1>
2
3<% if (!disable_stats) { %>
4<div class="section">
5<h2>Overview</h2>
6<div class="hider updatable">
7  <%= data_rates('data-rates-conn', connection, 'Data rates') %>
8
9<h3>Details</h3>
10<table class="facts facts-l">
11<% if (nodes_interesting) { %>
12<tr>
13  <th>Node</th>
14  <td><%= fmt_node(connection.node) %></td>
15</tr>
16<% } %>
17
18<% if (connection.client_properties.connection_name) { %>
19<tr>
20  <th>Client-provided name</th>
21  <td><%= fmt_string(connection.client_properties.connection_name) %></td>
22</tr>
23<% } %>
24
25<tr>
26 <th>Username</th>
27 <td><%= fmt_string(connection.user) %></td>
28</tr>
29<tr>
30 <th>Protocol</th>
31 <td><%= connection.protocol %></td>
32</tr>
33<tr>
34  <th>Connected at</th>
35  <td><%= fmt_timestamp(connection.connected_at) %></td>
36</tr>
37
38<% if (connection.ssl) { %>
39<tr>
40 <th>SSL</th>
41 <td><%= fmt_boolean(connection.ssl) %></td>
42</tr>
43<% } %>
44
45<% if (connection.auth_mechanism) { %>
46<tr>
47 <th>Authentication</th>
48 <td><%= connection.auth_mechanism %></td>
49</tr>
50<% } %>
51</table>
52
53<% if (connection.state) { %>
54<table class="facts">
55<tr>
56 <th>State</th>
57 <td><%= fmt_object_state(connection) %></td>
58</tr>
59<tr>
60 <th>Heartbeat</th>
61 <td><%= fmt_time(connection.timeout, 's') %></td>
62</tr>
63<tr>
64 <th>Frame max</th>
65 <td><%= connection.frame_max %> bytes</td>
66</tr>
67</table>
68
69<% } %>
70
71</div>
72</div>
73
74<% if (connection.ssl) { %>
75<div class="section">
76<h2>SSL</h2>
77<div class="hider">
78
79<table class="facts">
80  <tr>
81    <th>Protocol Version</th>
82    <td><%= connection.ssl_protocol %></td>
83  </tr>
84  <tr>
85    <th>Key Exchange Algorithm</th>
86    <td><%= connection.ssl_key_exchange %></td>
87  </tr>
88  <tr>
89    <th>Cipher Algorithm</th>
90    <td><%= connection.ssl_cipher %></td>
91  </tr>
92  <tr>
93    <th>Hash Algorithm</th>
94    <td><%= connection.ssl_hash %></td>
95  </tr>
96</table>
97
98<% if (connection.peer_cert_issuer != '') { %>
99<table class="facts">
100  <tr>
101    <th>Peer Certificate Issuer</th>
102    <td><%= connection.peer_cert_issuer %></td>
103  </tr>
104  <tr>
105    <th>Peer Certificate Subject</th>
106    <td><%= connection.peer_cert_subject %></td>
107  </tr>
108  <tr>
109    <th>Peer Certificate Validity</th>
110    <td><%= connection.peer_cert_validity %></td>
111  </tr>
112</table>
113<% } %>
114</div>
115</div>
116<% } %>
117
118<div class="section">
119  <h2 class="updatable">Publishers (<%=(publishers.length)%>) </h2>
120  <div class="hider updatable">
121    <%= format('streamPublishersList', {'publishers': publishers, 'mode' : 'connection'}) %>
122  </div>
123</div>
124
125<div class="section">
126  <h2 class="updatable" >Consumers (<%=(consumers.length)%>)</h2>
127  <div class="hider updatable">
128    <%= format('streamConsumersList', {'consumers': consumers}) %>
129  </div>
130</div>
131
132<% if (properties_size(connection.client_properties) > 0) { %>
133<div class="section-hidden">
134<h2>Client properties</h2>
135<div class="hider">
136<%= fmt_table_long(connection.client_properties) %>
137</div>
138</div>
139<% } %>
140
141<% if(connection.reductions || connection.garbage_collection) { %>
142<div class="section-hidden">
143<h2>Runtime Metrics (Advanced)</h2>
144 <div class="hider updatable">
145 <%= data_reductions('reductions-rates-conn', connection) %>
146 <table class="facts">
147    <% if (connection.garbage_collection.min_bin_vheap_size) { %>
148        <tr>
149        <th>Minimum binary virtual heap size in words (min_bin_vheap_size)</th>
150        <td><%= connection.garbage_collection.min_bin_vheap_size %></td>
151        </tr>
152    <% } %>
153
154    <% if (connection.garbage_collection.min_heap_size) { %>
155        <tr>
156        <th>Minimum heap size in words (min_heap_size)</th>
157        <td><%= connection.garbage_collection.min_heap_size %></td>
158        </tr>
159    <% } %>
160
161    <% if (connection.garbage_collection.fullsweep_after) { %>
162        <tr>
163        <th>Maximum generational collections before fullsweep (fullsweep_after)</th>
164        <td><%= connection.garbage_collection.fullsweep_after %></td>
165        </tr>
166    <% } %>
167
168    <% if (connection.garbage_collection.minor_gcs) { %>
169        <tr>
170        <th>Number of minor GCs (minor_gcs)</th>
171        <td><%= connection.garbage_collection.minor_gcs %></td>
172        </tr>
173    <% } %>
174 </table>
175 </div>
176</div>
177
178<% } %>
179<% } %>
180
181<div class="section-hidden">
182  <h2>Close this connection</h2>
183  <div class="hider">
184    <form action="#/connections" method="delete" class="confirm">
185      <input type="hidden" name="name" value="<%= fmt_string(connection.name) %>"/>
186      <table class="form">
187        <tr>
188          <th><label>Reason:</label></th>
189          <td>
190            <input type="text" name="reason" value="Closed via management plugin" class="wide"/>
191          </td>
192        </tr>
193      </table>
194      <input type="submit" value="Force Close"/>
195    </form>
196  </div>
197</div>
198