Server IP : 23.254.227.96 / Your IP : 216.73.216.7 Web Server : Apache/2.4.62 (Unix) OpenSSL/1.1.1k System : Linux hwsrv-1277026.hostwindsdns.com 4.18.0-477.13.1.el8_8.x86_64 #1 SMP Tue May 30 14:53:41 EDT 2023 x86_64 User : viralblo ( 1001) PHP Version : 8.1.31 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /usr/local/cwpsrv/var/services/users/cwp_theme/original/js/modules/ |
Upload File : |
console.log(); let ssl_list = JSON.parse('{{mod.listssl|raw}}'); let uchip = null; let ssl_table = null; $(document).ready(function() { {% if mod.isie == 1 %} uchip = new $.Uchip(); {% else %} uchip = new Uchip(); {% endif %} listSLL(ssl_list); }); function listSLL(list){ ssl_list = list; let table_content = ''; let index = 0; if(ssl_list.length > 0){ let html_content = ''; let index = 0; ssl_list.forEach(function(ssl){ let extra_san = '<span style="font-weight:600">{{langmod.SSLNONELABEL}}</span>'; if(ssl.san.length > 0){ extra_san = ''; ssl.san.forEach(function(san){ extra_san += '<span class="label label-primary" title="' + san + '.' + ssl.domain + '" data-toggle="tooltip" data-placement="top" aria-hidden="true">' + san + '</span>'; }); } let expiration = '-'; if(ssl.sslinfo.expiration_info.date != '-'){ expiration = moment.unix(ssl.sslinfo.expiration_info.date).format('MMM DD YYYY'); if(ssl.sslinfo.expiration_info.is_expired === true){ expiration += '<span class="label label-danger" style="margin-left:5px;">{{langmod.SSLEXPD}}</span>'; }else{ expiration += '<span class="fa-stack fa-xs info-expiration" data-toggle="tooltip" data-placement="top" title="' + ssl.sslinfo.expiration_info.days_until + ' {{langmod.SSLDAYL}}">' + '<i class="fa fa-circle-thin fa-stack-2x"></i>' + '<i class="fa fa-info fa-stack-1x"></i>' + '</span>'; } } html_content += '<tr id="trssl_' + index + '">' + '<td>' + // '<a class="btn btn-xs btn-primary mr5" style="margin-right: 5px;" onclick="return infomodal(' + ssl.domain + ',0)"><i class="fa fa-info"></i> </a>' + ssl.domain + ' [<a href="https://' + ssl.domain + '" class="ssl-go-link" target="_blank">{{langmod.SSLGO}}</a>]' + '</td>' + '<td class="ssl-extra-san">' + extra_san + '</td>' + // '<td><b>' + ssl.sslinfo.issuer + '</b></td>' + '<td>' + expiration + '</td>' + '<td width="300">' + '<div class="domain-actions-wrapper">' + '<button class="btn btn-xs btn-warning forcerenew" data-toggle="tooltip" data-placement="top" title="{{langmod.SSLREWNOW}}" onclick="return forcerenew(this,\''+ ssl.domain +'\')"><i class="fa fa-retweet" aria-hidden="true"></i> {{langmod.LMRENEW}}</button>' + '<div class="dropdown" data-toggle="tooltip" data-placement="top" title="{{langmod.SSLTESTTIT}}">' + '<button class="btn btn-primary btn-xs dropdown-toggle" type="button" data-toggle="dropdown"><i class="fa fa-flask" aria-hidden="true"></i> {{langmod.SSLTEST}} ' + '<span class="caret"></span></button>' + '<ul class="dropdown-menu" style="left:-10rem;">' + '<li><a target="_blank" href="https://www.sslshopper.com/ssl-checker.html?hostname=' + ssl.domain + '">SSL Shopper</a></li>' + '<li><a target="_blank" href="https://www.geocerts.com/ssl_checker?domain=' + ssl.domain + '&port=443">GeoCerts</a></li>' + '<li><a target="_blank" href="https://www.ssllabs.com/ssltest/analyze.html?d=' + ssl.domain + '">Qualys SSL Labs</a></li>' + '<li><a target="_blank" href="https://www.sslcerty.com/certificate?h=' + ssl.domain + '">SSLCerty</a></li>' + '</ul>' + '</div>' + '<div class="dropdown" data-toggle="tooltip" data-placement="top" title="{{langmod.SSLINFOTIT}}">' + '<button class="btn btn-success btn-xs dropdown-toggle" id="info_btn_' + index + '" type="button" data-toggle="dropdown"><i class="fa fa-info" aria-hidden="true"></i> Info ' + '<span class="caret"></span></button>' + '<ul class="dropdown-menu" style="left:-10rem;">' + '<li><a href="javascript:void(0)" onclick="return infomodal(' + index + ',\'' + ssl.domain + '\',\'info\')">Certificate information</a></li>' + '<li><a href="javascript:void(0)" onclick="return infomodal(' + index + ',\'' + ssl.domain + '\',\'cert\',\'SSLCertificateFile\')">SSLCertificateFile</a></li>' + '<li><a href="javascript:void(0)" onclick="return infomodal(' + index + ',\'' + ssl.domain + '\',\'key\',\'SSLCertificateKeyFile\')">SSLCertificateKeyFile</a></li>' + '<li><a href="javascript:void(0)" onclick="return infomodal(' + index + ',\'' + ssl.domain + '\',\'bundle\',\'SSLCertificateChainFile\')">SSLCertificateChainFile</a></li>' + '</ul>' + '</div>' + '<button title="{{langmod.SSLDELETE}}" class="btn btn-danger btn-xs" data-san=\'' + JSON.stringify(ssl.san) + '\' id="btn_del_' + index + '" data-toggle="tooltip" data-placement="top" title="{{langmod.SSLDELETE}}" onclick="return deletessl(0,\'' + ssl.domain + '\',' + index + ')"><i class="fa fa-trash" aria-hidden="true"></i> {{langmod.SSLDELETE}}</button>' + '</div>' + '</td>' + '</tr>'; index++; }); let table_html = '<table class="table table-striped" id="ssl_table">' + '<thead>' + '<tr>' + '<th>{{langmod.LMDOMAIN}}</th>' + '<th>Additionals (SAN)</th>' + // '<th>Signed By</th>' + '<th>{{langmod.LMEXP}}</th>' + '<th width="300">{{langmod.SSLACTIONS}}</th>' + '</tr>' + '</thead>' + '<tbody id="sslbody">' + html_content + '</tbody>' + '</table>'; $('#ssl_list_wrapper').html(table_html); $('#ssl_table').DataTable().destroy(); ssl_table = $('#ssl_table').DataTable(); $('[data-toggle="tooltip"]').tooltip(); }else{ $('#ssl_list_wrapper').html('<div class="empty_list"><h4 class="text-success">{{langmod.SSLNOTCREATED}}</h4></div>'); } } function renderInfo(response){ let html_info = '<strong>SUBJECT:</strong> <span class="domain">' + response.subject + '</span><br />'; if(response.aliases.length > 0){ html_info += '<strong>ALIASES: </strong >' + response.aliases.map(function(san){ return san.replace('DNS:',''); }).join(', ') + '<br />'; } let issuers = response.issuer.map(function(issuer){ return issuer.param + '=' + issuer.value; }).join(', '); html_info += '<strong>{{langmod.SSLVALIFLAB}}:</strong> ' + response.valid_from + '<br />' + '<strong>{{langmod.SSLVALIULAB}}:</strong> ' + response.valid_until + '<br />' + '<strong>{{langmod.SSLSIGNLAB}}:</strong> ' + response.signature + '<br />' + '<strong>{{langmod.SSLPUBKLAB}}:</strong> ' + response.public_key + '<br />' + '<strong>{{langmod.SSLISSUERLAB}}:</strong> ' + issuers + '<br />'; if(response.self_signed == true){ html_info += '<div style="color:#FF0000"><strong>{{langmod.SSLSEFLSIGNED}}</strong></div>'; } if(response.is_expired == true){ html_info += '<div style="color:#FF0000"><strong>{{langmod.SSLEXPIREDLAB}}</strong></div>'; } return '<div class="info_certificate_body">' + html_info + '</div>'; } function renderFileHTML(response, title, domain, type){ return '<div class="file-content-ssl">' + '<div class="file-content-ssl-header"><h4>' + title + ' (' + domain + '.' + type + ')</h4>' + '<div><span class="text-success copied-message">{{langmod.SSLCOPIEDLAB}}</span><span class="copy-file" onclick="copyFileContent()" data-toggle="tooltip" data-placement="top" title="{{langmod.SSLCOPYTITLE}}"><i class="fa fa-copy"></i></span></div>' + '</div>' + '<pre>' + response.result + '</pre>' + '<input type="text" value="' + response.result + '" id="file_content">' + '</div>'; } function copyFileContent(){ $('#file_content').show(); var copyText = document.getElementById('file_content'); copyText.select(); document.execCommand("copy"); $('#file_content').hide(); $('.copied-message').fadeIn('fast', function(){ setTimeout(function(){ $('.copied-message').fadeOut('fast'); }, 3500); }); } function infomodal(index, domain, type, title){ uchip.handleButton('#info_btn_' + index, 'fa-info'); uchip.call('module=letsencrypt&acc=infomodal', { data:'domain=' + domain + '&type=' + type, callback: function(response){ if(type == 'info'){ $('#modalinfo_twice .modal-body').html(renderInfo(response)); }else{ $('#modalinfo_twice .modal-body').html(renderFileHTML(response, title, domain, type)); } $('#modalinfo_twice').modal('toggle'); setTimeout(function(){ $('[data-toggle="tooltip"]').tooltip(); }, 100); uchip.handleButton('#info_btn_' + index, 'fa-info', true); } }); } function installDomain(elem){ uchip.handleButton(elem, 'fa-lock'); $('#btn_install_title').text('Installing...'); let domain = $('#domain_lets').val(); let additionals = []; $('.san-checkbox:checked').each(function(){ additionals.push($(this).val()); }); let path = $('#domain_lets').find('option:selected').data('path'); let data = 'domain=' + domain + '&additionals=' + additionals.join(',') + '&path=' + path; uchip.call('module=letsencrypt&acc=addssl', { data: data, callback: function(response){ if(response.result == 'success'){ if (response.ssl_status.san_excluded.length > 0 && response.ssl_status.san_excluded[0] !== ""){ noti_bubble('{{langmod.SSLCREATED1}}<br>' + '{{langmod.SSLCREATED2}}:<br>' + response.ssl_status.san_excluded.join(', '),'{{langmod.SSLALEROK}}','warning',false,false,'9500',true); }else{ noti_bubble('{{langmod.SSLOK}}','{{langmod.SSLALEROK}}','success',false,false,'3000',true); } ssl_list.push(response.domaindata); listSLL(ssl_list); cancelInstallation(domain); }else{ let message = '{{langmod.SSLERRORDO}}'; if(response.code == 2){ message = '{{langmod.SSLINVALIDPATH}}'; }else if(response.code == 1){ message = '{{langmod.SSLINVALIDOM}}'; }else if(response.code == 3){ message = '{{langmod.SSLERRODNS}}'; } uchip.handleButton(elem, 'fa-lock', true); $('#btn_install_title').text('{{langmod.LMINSTALL}}'); noti_bubble(message,'{{langmod.SSLVALIDATEERROR}}','error',false,false,'3000',true); } } }); } function validatevhost(elem){ let domain = $(elem).val(); $('#services_toinstall').slideUp(); if($(elem).val() == ''){ $('#btn-lets-add').attr('disabled',true); $('#btn-lets-add').addClass('disabled'); }else{ $(elem).prop('disabled',true); $(elem).addClass('disabled'); uchip.handleButton('#btn-lets-add', 'fa-lock'); let optselected = $(elem).find('option:selected'); let is_subdomain = optselected.data('is_subdomain'); let subdomains = optselected.data('subdomains'); $('#btn_install_title').text('{{langmod.SSLVALID}}'); uchip.call('module=letsencrypt&acc=validatedomain', { data:'domain=' + domain + '&is_subdomain=' + is_subdomain, callback: function(response){ if(response.result == 'success'){ uchip.handleButton('#btn-lets-add', 'fa-lock', true); if(!is_subdomain && response.subdomains.length > 0){ let html_san = ''; response.subdomains.forEach(function(sub, i){ html_san += '<div class="checkbox">' + '<input type="checkbox" class="san-checkbox" id="' + sub + '_san" value="' + sub + '">' + '<label for="' + sub + '_san">' + sub + '</label>' + '</div>'; }); $('#services_toinstall_items').html(html_san); $('#services_toinstall').slideDown(); } }else{ let message = '{{langmod.SLLUNKERROR}}'; if(response.hasOwnProperty('code')){ if(response.code == 1){ message = '{{langmod.SSLTRYUPDT}}'; }else{ message = '{{langmod.SSLERRODNS}}'; } } uchip.handleButton('#btn-lets-add', 'fa-lock', true); $('#btn-lets-add').prop('disabled',true); $('#btn-lets-add').addClass('disabled'); noti_bubble(message,'{{langmod.SSLVALIDATEERROR}}','error',false,false,'5000',true); } $('#btn_install_title').text('{{langmod.LMINSTALL}}'); $(elem).prop('disabled',false); $(elem).removeClass('disabled'); } }); } return; } function cancelInstallation(nossl){ $('#btn-lets-add').find('.fa').removeClass('fa-spinner fa-spin'); $('#btn-lets-add').find('.fa').addClass('fa-lock'); $('#btn_install_title').text('{{langmod.LMINSTALL}}'); $('.san-checkbox').each(function(){ $(this).prop('checked', false); }); if (Array.isArray(nossl)){ let select_html = '<select class="form-control" id="domain_lets" onchange="return validatevhost(this)">' + '<option value="">{{langmod.LMCHOOSE}}</option>' + nossl.map(function (item) { return '<option data-is_subdomain="' + item.is_subdomain + '" data-path="' + item.path + '" data-subdomains="' + item.subdomains + '" value="' + item.domain + '">' + item.domain + '</option>' }).join('') + '</select>'; $('#sel_domain_container').html(select_html); }else{ $("#domain_lets option[value='" + nossl + "']").remove(); } $('#services_toinstall').slideUp(); } function deletessl(st, domain, index){ if(st == 0){ let san = $('#btn_del_' + index).data('san'); let strbody = '<p>{{langmod.SSLDELETE1}}:<br>' + '<strong id="descron">' + domain + '</strong>'; if(san.length > 0){ strbody += '<br><br>{{langmod.SSLDELETE2}}:<br><b>' + san.join(',') + '</b><br>'; } strbody += '<br>{{langmod.SSLDELETE3}}</p>'; let strfooter = '<button type="button" class="btn btn-white" data-dismiss="modal">{{ langmod.SSLCLOSE }}</button>' + '<button type="button" class="btn btn-primary" id="btnyesdel" onclick="return deletessl(1,\''+domain+'\',' + index + ')">{{langmod.LMYES}}</button>'; $('#deleteletsencrypt .modal-body').html(strbody); $('#deleteletsencrypt .modal-footer').html(strfooter); $('#deleteletsencrypt').modal('toggle'); return false; }else{ $('#deleteletsencrypt').modal('hide'); uchip.handleButton('#btn_del_' + index,'fa-trash'); let tr = $('#trssl_' + index); tr.find('.btn').prop('disabled', true).addClass('disabled'); tr.addClass('deleting_tr'); uchip.call('module=letsencrypt&acc=deletessl', { data:'domain=' + domain, callback: function(response){ if(response.result == 'success'){ tr.slideUp('fast', function(){ ssl_table.row(this).remove().draw(); ssl_list.splice(index, 1); }); noti_bubble('{{langmod.SSLOK}}','{{langmod.SSLALEROK}}','success',false,false,'3000',true); cancelInstallation(response.nossl); }else{ tr.find('.btn').prop('disabled', false).removeClass('disabled'); tr.removeClass('deleting_tr'); uchip.handleButton('#btn_del_' + index,'fa-trash', true); noti_bubble('An unknown error occurred, please try again.','{{langmod.SSLVALIDATEERROR}}','error',false,false,'3000',true); } } }); // $.ajaxSetup({ headers: { 'csrftoken' : '{{ tokenajax }}' } }); // $.ajax({ // type: "POST", // url: "./{{users}}/index.php?module=letsencrypt&acc=delete", // data: "domain="+domain, // complete: function(datos){ // $("#sslbody").html(datos.responseText); // noti_bubble('{{langmod.SSLOK}}','{{langmod.SSLALEROK}}','success',false,false,'3000',true); // $("#deletemodal").modal('hide'); // return false; // } // }); // return false; } } function forcerenew(elem, domain){ uchip.handleButton(elem, 'fa-retweet'); uchip.call('module=letsencrypt&acc=forcerenew', { data:'domain=' + domain, callback: function(response){ if(response.result == 'success'){ if(response.ssl_status.san_excluded.length > 0){ noti_bubble('{{langmod.SSLRENEW1}}<br>' + '{{langmod.SSLRENEW2}}:<br>' + response.ssl_status.san_excluded.join(', '),'{{langmod.SSLALEROK}}','warning',false,false,'9500',true); }else{ noti_bubble('{{langmod.SSLOK}}','{{langmod.SSLALEROK}}','success',false,false,'3000',true); } listSLL(response.list); }else{ let message = '{{langmod.SSLRENEW3}}'; if(response.code == 4){ message = '{{langmod.SSLRENEW4}}'; }else if(response.code == 3){ message = '{{langmod.SSLERRODNS}}'; }else if(response.code == 5){ message = '{{langmod.SSLRENEW5}}'; } noti_bubble(message ,'{{langmod.SSLVALIDATEERROR}}','error',false,false,'3000',true); } } }); } // CECILIO MORALES JS function updlistssl(){ $.ajaxSetup({ headers: { 'csrftoken' : '{{ tokenajax }}' } }); $.ajax({ type: "POST", url: "./{{users}}/index.php?module=letsencrypt&acc=list", complete: function(datos){ $("#sslbody").html(datos.responseText); return false; } }); } $("#forceallrenew").click(function () { $("#forceallrenew").attr('disabled', true); $("#forceallrenew").addClass('disabled'); $.ajaxSetup({ headers: { 'csrftoken' : '{{ tokenajax }}' } }); $.ajax({ type: "POST", url: "./{{users}}/index.php?module=letsencrypt&acc=forceallrenew", complete: function(datos){ updlistssl(); $("#forceallrenew").attr('disabled', false); $("#forceallrenew").removeClass('disabled'); return false; } }); });