%PDF- %PDF-
Direktori : /backups/router/usr/local/opnsense/mvc/app/views/OPNsense/IPsec/ |
Current File : //backups/router/usr/local/opnsense/mvc/app/views/OPNsense/IPsec/settings.volt |
<script> $( document ).ready(function() { $('[id*="save_"]').each(function(){ $(this).closest('tr').hide(); }); mapDataToFormUI({'mainform': '/api/ipsec/settings/get'}).done(function(){ formatTokenizersUI(); $('.selectpicker').selectpicker('refresh'); updateServiceControlUI('ipsec'); $("#reconfigureAct").SimpleActionButton({ onPreAction: function() { const dfObj = new $.Deferred(); saveFormToEndpoint("/api/ipsec/settings/set", 'mainform', function(){ dfObj.resolve(); }); return dfObj; } }); }); function showDialogAlert(type, title, message) { BootstrapDialog.show({ type: type, title: title, message: message, buttons: [{ label: '{{ lang._('Close') }}', action: function(dialogRef) { dialogRef.close(); } }] }); } function fetchAndDownloadConfig(apiUrl, filename) { ajaxGet(apiUrl, null, function(response, status) { if (status === "success" && response.status === "success") { const content = response.content; const a_tag = $('<a></a>') .attr('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(content)) .attr('download', filename) .appendTo('body'); a_tag[0].click(); a_tag.remove(); } else { showDialogAlert(BootstrapDialog.TYPE_WARNING, "{{ lang._('Download Error') }}", response.message || "{{ lang._('Failed to download the configuration file.') }}"); } }).fail(function(xhr, status, error) { showDialogAlert(BootstrapDialog.TYPE_DANGER, "{{ lang._('Download Request Failed') }}", error); }); } let warningAcknowledged = false; $("#downloadConfig").click(function() { const apiUrl = '/api/ipsec/connections/swanctl'; const timestamp = new Date().toISOString().replace(/[-:]/g, '').replace('T', '-').split('.')[0]; const filename = "swanctl.conf_" + timestamp + ".txt"; if (warningAcknowledged) { fetchAndDownloadConfig(apiUrl, filename); } else { BootstrapDialog.show({ type: BootstrapDialog.TYPE_WARNING, title: "{{ lang._('Warning') }}", message: "{{ lang._('The file you are about to download may contain sensitive data. Please handle it with care.') }}", buttons: [{ label: '{{ lang._('Cancel') }}', action: function(dialogRef) { dialogRef.close(); } }, { label: '{{ lang._('Download') }}', cssClass: 'btn-primary', action: function(dialogRef) { dialogRef.close(); warningAcknowledged = true; fetchAndDownloadConfig(apiUrl, filename); } }] }); } }); $('a[data-toggle="tab"]').on('shown.bs.tab', function (e) { const activeTab = $(e.target).attr('href'); if (activeTab === '#configTab') { $('#reconfigureAct').hide(); $('#downloadConfig').show(); } else { $('#reconfigureAct').show(); $('#downloadConfig').hide(); } }); }); </script> <ul class="nav nav-tabs" role="tablist" id="maintabs"> {{ partial("layout_partials/base_tabs_header",['formData':formSettings]) }} <li><a data-toggle="tab" href="#configTab" role="tab">{{ lang._('swanctl.conf') }}</a></li> </ul> <form id="mainform"> <div class="content-box tab-content"> {{ partial("layout_partials/base_tabs_content",['formData':formSettings]) }} <div id="configTab" class="tab-pane fade"/> </div> </form> <div class="content-box tab-content"> <div class="col-md-12"> <br/> <button class="btn btn-primary" id="reconfigureAct" data-endpoint='/api/ipsec/service/reconfigure' data-label="{{ lang._('Apply') }}" data-error-title="{{ lang._('Error reconfiguring IPsec') }}" type="button" ></button> <button class="btn btn-primary" id="downloadConfig" style="display: none;"> {{ lang._('Download') }} </button> <br/><br/> </div> </div>