���� JFIF �� � ( %"1"%)+...383,7(-.-
![]() Server : Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/7.4.20 System : Linux st2.domain.com 3.10.0-1127.10.1.el7.x86_64 #1 SMP Wed Jun 3 14:28:03 UTC 2020 x86_64 User : apache ( 48) PHP Version : 7.4.20 Disable Function : NONE Directory : /usr/local/FlashphonerWebCallServer/web/ |
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Flashphoner Web Call Server</title> <link rel="stylesheet" href="css/bootstrap.min.css"> <link rel="stylesheet" href="css/font-awesome.min.css"> <link rel="icon" href="img/favicon.png"> <script src="js/jquery-1.12.4.js"></script> <script src="js/jquery.cookie.js"></script> <script src="js/bootstrap.min.js"></script> <style> .navbar-nav > li { padding-left: 20px; padding-right: 20px; } </style> </head> <body> <!--Modal alert--> <div class="modal fade" id="modalInfo" tabindex="-1" role="dialog"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title text-muted">Warning</h5> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">×</span> </button> </div> <div class="modal-body"> <div id="modalBody"></div> </div> <div class="modal-footer"> <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button> </div> </div> </div> </div> <nav class="navbar navbar-expand navbar-light bg-light"> <div class="collapse navbar-collapse"> <ul class="navbar-nav mr-auto"> <li class="nav-item active"> <a class="nav-link" href="demo.html"><i class="fa fa-play-circle-o fa-lg" aria-hidden="true"></i> Demo</a> </li> <li class="nav-item dropdown"> <a class="nav-link dropdown-toggle" id="securityDrpdwn" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><i class="fa fa-user-secret fa-lg"></i> Security</a> <div class="dropdown-menu" aria-labelledby="securityDrpdwn"> <a class="dropdown-item" href="certificates.html"><i class="fa fa-certificate fa-lg"></i> Certificates</a> <a class="dropdown-item" href="passwords.html"><i class="fa fa-key fa-lg"></i> Set password</a> </div> </li> <li class="nav-item"> <a class="nav-link" href="license.html"><i class="fa fa-files-o fa-lg"></i> License</a> </li> </ul> <ul class="navbar-nav"> <li class="nav-item"> <a class="nav-link"><span id="version"></span></a> </li> <li class="nav-item dropdown"> <a class="nav-link dropdown-toggle" id="user" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><i class="fa fa-user fa-lg"> </i><span id="username"> </span></a> <div class="dropdown-menu" aria-labelledby="user"> <a class="dropdown-item" href="#" id="logout"><i class="fa fa-sign-out fa-lg"></i> Logout</a> </div> </li> </ul> </div> </nav> <div class="container"> <div class="row justify-content-center"> <h1 class="text-center font-weight-bold">Import SSL Certificates</h1> </div> <div class="row justify-content-center"> <div id="certInfo" class="d-none"> <p class="text-primary">Domain:<span id="domain"></span></p> </div> </div> <div class="row justify-content-center"> <form class="col-5"> <fieldset> <p class="font-weight-bold">Step 1. Upload Certificates</p> <div class="form-group mb-3"> <div class="custom-file"> <input type="file" class="custom-file-input" id="uploadCerts" multiple> <label for="uploadCerts" class="custom-file-label">Choose files...</label> </div> </div> <button class="btn btn-primary" type="button" id="uploadCertsBtn">Upload</button> <div class="d-none pt-2" id="publicCertInfo"> <div class="alert alert-info alert-dismissable" role="alert"> <button type="button" class="close" data-dismiss="alert"><span aria-hidden="true">×</span><span class="sr-only">Close</span> </button> <p></p> </div> </div> <p class="font-weight-bold pt-2">Step 2. Upload your private key</p> <div class="form-group mb-3"> <div class="custom-file"> <input type="file" class="custom-file-input" id="uploadPrivateKey" accept=".der, .pem, .pk" disabled> <label for="uploadPrivateKey" class="custom-file-label">Choose file...</label> </div> </div> <button class="btn btn-primary" type="button" id="uploadPrivateKeyBtn" disabled>Import</button> </fieldset> </form> </div> <div class="row justify-content-center"> <a href="#" onclick="resetToDefaults()">Reset to defaults</a> </div> <div class="row justify-content-center"> <h4 id="demo_alert" class="text-danger text-hide">SSL certificates can be updated by admin only!</h4> </div> </div> <script type="text/javascript"> $(document).ready(function() { $("#username").text($.cookie("wcs_user")); if ($("#username").text() != "admin") { $("fieldset").attr('disabled', true); $("fieldset").hide(); $("a:contains('Reset to defaults')").hide(); $("#demo_alert").removeClass("text-hide"); } $("#version").text($.cookie("wcs_version")); $("#logout").click(function(){ $.ajax({ type: "POST", url: "/admin/api/logout", success: function (data, status, xhr) { document.location = "/admin/" } }) }); getCertInfo(); }); var certs; var key; $("#uploadCerts").on('change', function(e) { certs = e.target.files; }); $("#uploadPrivateKey").on('change', function(e) { key = e.target.files; }); $("#uploadCertsBtn").on('click', uploadFiles); $("#uploadPrivateKeyBtn").on('click', uploadKey); function getCertInfo() { $.ajax({ url: "/admin/api/certificate/info", type: "POST", success: function(data, status, xhr) { if (data.result && data.result.info) { if (data.result.info.domain) { $("#certInfo").removeClass("d-none"); $("#domain").text(data.result.info.domain); } if (data.result.info.domains) { $("#certInfo").removeClass("d-none"); for (var i in data.result.info.domains) { $("#domain").text(data.result.info.domains[i]); } } } }, error: function(xhr, status, error) { console.log(error); } }); } function uploadFiles(event) { event.stopPropagation(); event.preventDefault(); var data = new FormData(); $.each(certs, function(k,v) { data.append(k, v); }); $.ajax({ url: "/admin/upload_public_certificates", type: "POST", data: data, cache: false, processData: false, contentType: false, success: function (data, status, xhr) { $("#publicCertInfo p").text(data.info); $("#publicCertInfo").removeClass('d-none'); $('[disabled]').each(function() { $(this).prop('disabled', false); }) }, error: function(xhr, status, error) { $("#modalBody").text(xhr.responseText).addClass("text-danger"); $("#modalInfo").modal(); } }); } function uploadKey(event) { event.stopPropagation(); event.preventDefault(); var data = new FormData(); $.each(key, function(k,v) { data.append(k, v); }); $.ajax({ url: "/admin/upload_private_key", type: "POST", data: data, cache: false, processData: false, contentType: false, success: function (data, status, xhr) { $("#modalBody").text("Certificates has been imported.").addClass("text-success"); // $("#modalInfo").modal(); $('#modalInfo').on('hidden.bs.modal', function () { document.location.reload(true); }).modal(); }, error: function(xhr, status, error) { $("#modalBody").text(xhr.responseText).addClass("text-warning"); $("#modalInfo").modal(); } }); } $('input').on('change', function() { let fileName = $(this).val(); $(this).next('.custom-file-label').html(fileName.substring(fileName.lastIndexOf("\\")+1)); }) function resetToDefaults() { $.ajax({ url: "/admin/api/certificate/reset", type: "POST", success: function (data, status, xhr) { getCertInfo(); } }); } </script> </body> </html>