%PDF- %PDF-
Direktori : /backups/router/usr/local/opnsense/mvc/app/views/OPNsense/Diagnostics/ |
Current File : //backups/router/usr/local/opnsense/mvc/app/views/OPNsense/Diagnostics/vip.volt |
<script> $( document ).ready(function() { $("#grid-vips").UIBootgrid({ search:'/api/diagnostics/interface/get_vip_status', options:{ requestHandler: function(request){ if ( $('#mode_filter').val().length > 0) { request['mode'] = $('#mode_filter').val(); } return request; }, responseHandler: function (data) { if (typeof data.carp === 'object') { $("#carp_demotion_level").text(data.carp.demotion); $(".carp_action").hide(); if (data.carp.allow == '0') { $("#carp_allowed").html('<span class="fa fa-fw fa-times"></span>'); $("#carp_status_enable").show(); } else { $("#carp_allowed").html('<span class="fa fa-fw fa-check"></span>'); $("#carp_status_disable").show(); } if (data.carp.maintenancemode == '1') { $("#carp_maintenance_mode").html('<span class="fa fa-fw fa-check"></span>'); $("#carp_status_maintenance > b").text("{{ lang._('Leave Persistent CARP Maintenance Mode') }}"); } else { $("#carp_maintenance_mode").html(''); $("#carp_status_maintenance > b").text("{{ lang._('Enter Persistent CARP Maintenance Mode') }}"); } $("#carp_status_maintenance").show(); if (data.carp.status_msg !== '') { $("#carp_status_msg").html($("<div>").html(data.carp.status_msg).text()).show(); } else { $("#carp_status_msg").hide(); } } return data; }, formatters: { vhid: function (column, row) { return row.vhid_txt; }, status: function (column, row) { let icon = 'fa fa-info-circle fa-fw'; if (row.status == 'MASTER') { icon = 'fa fa-play fa-fw text-success'; } else if (row.status == 'BACKUP') { icon = 'fa fa-play fa-fw text-muted'; } else if (row.status == 'DISABLED') { icon = 'fa fa-remove fa-fw text-danger'; } return '<span class="'+icon+'"></span> ' + row.status_txt; }, } } }); $("#grid-pfsyncnodes").UIBootgrid({ search:'/api/diagnostics/interface/get_pfsync_nodes', }); $("#mode_filter").change(function(){ $('#grid-vips').bootgrid('reload'); }); $("#mode_filter_container").detach().prependTo('#grid-vips-header > .row > .actionBar > .actions'); $(".carp_action").each(function(){ $(this).SimpleActionButton({onAction: function(data, status){ $('#grid-vips').bootgrid('reload'); }}); }); }); </script> <ul class="nav nav-tabs" data-tabs="tabs" id="maintabs"> <li class="active"><a data-toggle="tab" href="#addresses">{{ lang._('Addresses') }}</a></li> <li><a data-toggle="tab" href="#pfsync">{{ lang._('pfSync nodes') }}</a></li> </ul> <div class="tab-content content-box"> <div id="addresses" class="tab-pane fade in active"> <div class="hidden"> <!-- filter per type container --> <div id="mode_filter_container" class="btn-group"> <select id="mode_filter" data-title="{{ lang._('Filter type') }}" class="selectpicker" multiple="multiple" data-width="200px"> <option value="ipalias">{{ lang._('IP Alias') }}</option> <option value="carp" selected="selected">{{ lang._('CARP') }}</option> </select> </div> </div> <div id="carp_status_msg" class="alert alert-warning" style="display: none; margin: 10px;" role="alert"> </div> <table id="grid-vips" class="table table-condensed table-hover table-striped"> <thead> <tr> <th data-column-id="interface" data-type="string">{{ lang._('Interface') }}</th> <th data-column-id="vhid" data-type="string" data-formatter="vhid" >{{ lang._('VHID') }}</th> <th data-column-id="subnet" data-type="string" data-identifier="true">{{ lang._('Address') }}</th> <th data-column-id="status" data-type="string" data-formatter="status">{{ lang._('Status') }}</th> </tr> </thead> <tbody> </tbody> </table> <table class="table table-condensed" > <tbody> <tr> <td style="width:200px;">{{ lang._('Carp allowed')}}</td> <td id='carp_allowed' style="width:50px;">-</td> <td> <button class="btn btn-primary carp_action" id="carp_status_enable" style="display: none;" data-endpoint='/api/diagnostics/interface/carp_status/enable' data-label="{{ lang._('Enable CARP') }}" data-error-title="{{ lang._('Error changing status') }}" type="button" ></button> <button class="btn btn-primary carp_action" id="carp_status_disable" style="display: none;" data-endpoint='/api/diagnostics/interface/carp_status/disable' data-label="{{ lang._('Temporarily Disable CARP') }}" data-error-title="{{ lang._('Error changing status') }}" type="button" ></button> </td> </tr> <tr> <td>{{ lang._('Persistent maintenance mode')}}</td> <td id='carp_maintenance_mode'>-</td> <td> <button class="btn btn-primary carp_action" id="carp_status_maintenance" style="display: none;" data-endpoint='/api/diagnostics/interface/carp_status/maintenance' data-label="{{ lang._('Toggle') }}" data-error-title="{{ lang._('Error changing status') }}" type="button" ></button> </td> </tr> <tr> <td>{{ lang._('Current CARP demotion level')}}</td> <td id='carp_demotion_level'>-</td> </tr> </tbody> </table> </div> <div id="pfsync" class="tab-pane fade in"> <table id="grid-pfsyncnodes" class="table table-condensed table-hover table-striped"> <thead> <tr> <th data-column-id="creatorid" data-type="string">{{ lang._('Hostid') }}</th> <th data-column-id="this" data-type="boolean" data-formatter="boolean" >{{ lang._('This node') }}</th> </tr> </thead> <tbody> </tbody> </table> </div> </div>