console.log();
let ssl_list = JSON.parse('{{mod.ssl_list|raw}}');
let ssl_table = null;
$(document).ready(function() {
{% if mod.isie == 1 %}
uchip = new $.Uchip();
{% else %}
uchip = new Uchip();
{% endif %}
$('[data-toggle="tooltip"]').tooltip()
$('#countryName').select2();
lisSSL(ssl_list);
$('#countryName').on('select2:select', function (e) {
var data = e.params.data;
if(data.id != ''){
$('#select2-countryName-container').addClass('val-selected');
}else{
$('#select2-countryName-container').removeClass('val-selected');
}
});
initDomTags('#commonName');
initDomTags('#domain_install');
});
function installSSL(){
if(uchip.validator('.reqinstall')){
uchip.handleButton('.btninstall-gen', 'fa-cogs');
uchip.handleButton('.btninsatll-cnl', 'fa-ban');
uchip.call('module=sslwizard&acc=preinstall', {
data:'cert=' + Base64.encode($('#certificate_install').val()) + '&priv=' + Base64.encode($('#privkey_install').val()) + '&bundle=' + Base64.encode($('#bundle_install').val()),
callback: function(response){
if(response.result == 'success'){
renderPreInstallInfo(response.ssl_data);
$('#preinstall_info').modal('show');
}else{
let message = '{{langmod.SSLWLABEL15}}';
if(response.hasOwnProperty('code') && response.code == '1'){
message = '{{langmod.SSLWLABEL63}}';
}
noti_bubble(message,'{{langmod.SSLWLABEL14}}','error',false,false,'3000',true);
}
uchip.handleButton('.btninstall-gen', 'fa-cogs', true);
uchip.handleButton('.btninsatll-cnl', 'fa-ban', true);
}
});
}
}
function renderPreInstallInfo(data){
let domains = data.instalables.filter(function(dom){
return dom.hasOwnProperty('is_domain') && dom.is_domain == '1';
});
let sub_domains = data.instalables.filter(function(dom){
return dom.hasOwnProperty('is_sub') && dom.is_sub == '1';
});
let sans = data.instalables.filter(function(dom){
return dom.hasOwnProperty('is_san') && dom.is_san == '1';
});
let html = '
{{langmod.SSLWLABEL21}}: ' + data.commonName + '
' +
' {{langmod.SSLWLABEL73}}: ' + moment.unix(data.validfrom).format("DD MMM, YYYY") + '
' +
' {{langmod.SSLWLABEL74}}: ' + moment.unix(data.validto).format("DD MMM, YYYY") + '
' +
' {{langmod.SSLWLABEL77}}: ' + data.issuer + '
';
if(domains.length > 0){
let dom_html = domains.map(function(dom){
return '' +
'' +
'' +
'
';
})
html += ' ' +
'{{langmod.SSLWLABEL82}} (' + dom_html.length + ')
' +
'' + dom_html.join('') + '
';
}
if(sub_domains.length > 0){
let dom_html = sub_domains.map(function(dom){
return '' +
'' +
'' +
'
';
})
html += ' ' +
'{{langmod.SSLWLABEL83}} (' + dom_html.length + ')
' +
'' + dom_html.join('') + '
';
}
if(sans.length > 0){
let dom_html = sans.map(function(dom){
return '' +
'' +
'' +
'
';
})
html += ' ' +
'{{langmod.SSLWLABEL84}} (' + dom_html.length + ')
' +
'' + dom_html.join('') + '
';
}
html += '' +
'' +
'' +
'
';
$("#preinstall_info_body").html(html);
}
function getToInstall(selector){
let toinstall = [];
$(selector).each(function(){
if($(this).is(':checked')){
let type = $(this).data('type');
let item = {
domain: $(this).val(),
type: type
};
if(type != 'domain'){
item.parent = $(this).data('parent');
}
toinstall.push(item);
}
});
return toinstall;
}
function continueInstall(){
let toinstall = [];
let domains = getToInstall('.dom-to-install');
let subdomains = getToInstall('.subdom-to-install');
toinstall = toinstall.concat(getToInstall('.dom-to-install'), getToInstall('.subdom-to-install'), getToInstall('.san-to-install'));
if(toinstall.length > 0){
$('#preinstall_info').modal('hide');
uchip.handleButton('.btninstall-gen', 'fa-cogs');
uchip.handleButton('.btninsatll-cnl', 'fa-ban');
$('#install_form_wrapper').fadeOut('fast', function(){
$('#installing_loader_wrapper').fadeIn('fast');
});
let data = 'cert=' + Base64.encode($('#certificate_install').val()) + '&priv=' + Base64.encode($('#privkey_install').val()) +
'&bundle=' + Base64.encode($('#bundle_install').val()) + '&services=' + JSON.stringify(toinstall);
uchip.call('module=sslwizard&acc=mkinstall', {
data: data,
callback: function(response){
if(response && response.hasOwnProperty('result') && response.result == 'success'){
cancelInstall();
noti_bubble('{{langmod.SSLWLABEL68}}','{{langmod.SSLWLABEL12}}','success',false,false,'3000',true);
}else{
let message = '{{langmod.SSLWLABEL15}}';
if(response.hasOwnProperty('code') && response.code == '1'){
message = '{{langmod.SSLWLABEL63}}';
}
noti_bubble(message,'{{langmod.SSLWLABEL14}}','error',false,false,'3000',true);
$('#installing_loader_wrapper').fadeOut('fast', function(){
$('#install_form_wrapper').fadeIn('fast');
});
}
uchip.handleButton('.btninstall-gen', 'fa-cogs', true);
uchip.handleButton('.btninsatll-cnl', 'fa-ban', true);
}
});
}else{
noti_bubble('{{langmod.SSLWLABEL65}}','{{langmod.SSLWLABEL10}}','error',false,false,'3000',true);
}
}
function initDomTags(selector){
$(selector).tagsinput({
tagClass: 'cwp-tags-input'
});
$(selector).on('beforeItemAdd', function(event) {
if(!validSSLDomain(event.item)){
event.cancel = true;
noti_bubble('{{langmod.SSLWLABEL11}}','{{langmod.SSLWLABEL10}}','error',false,false,'4500',true);
}
});
}
function lisSSL(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 = '{{langmod.SSLWLABEL70}}';
let expiration = '-';
if(ssl.hasOwnProperty('san') && ssl.san.length > 0){
extra_san = ssl.san.map(function(san){
return '' + san + '';
}).join(' ')
}
html_content += '';
index++;
});
let table_html = '' +
'' +
'' +
'{{langmod.SSLWLABEL47}} | ' +
'{{langmod.SSLWLABEL48}} | ' +
'{{langmod.SSLWLABEL87}} | ' +
'{{langmod.SSLWLABEL49}} | ' +
'{{langmod.SSLWLABEL50}} | ' +
'
' +
'' +
'' +
html_content +
'' +
'
';
$('#table_ssl_wrapper').html(table_html);
$('#ssl_table').DataTable().destroy();
ssl_table = $('#ssl_table').dataTable();
$('[data-toggle="tooltip"]').tooltip();
}else{
$('#table_ssl_wrapper').html('{{langmod.SSLWLABEL88}}
');
}
}
function deletessl(st, domain, index){
if(st == 0){
let san = $('#btn_del_' + index).data('san');
let strbody = '{{langmod.SSLWLABEL54}}:
' +
'' + domain + '';
if(san.length > 0){
strbody += '
{{langmod.SSLWLABEL56}}:
' + san.join('
') + '
';
}
strbody += '
{{langmod.SSLWLABEL57}}
';
let strfooter = '' +
'';
$('#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();
});
noti_bubble('{{langmod.SSLWLABEL69}}','{{langmod.SSLWLABEL15}}','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('{{langmod.SSLWLABEL15}}','{{langmod.SSLWLABEL14}}','error',false,false,'3000',true);
}
}
});
}
}
function showInstallForm(){
uchip.slideToggle('#ssl_install_wrapper','#ssl_list_wrapper');
}
function cancelInstall(){
uchip.slideToggle('#ssl_list_wrapper', '#ssl_install_wrapper', function(){
$('#installing_loader_wrapper').hide();
$('#install_form_wrapper').show();
$('#certificate_install').val('');
$('#privkey_install').val('');
$('#bundle_install').val('');
uchip.validator('.reqinstall', true);
});
}
function renderInfo(response){
let html_info = '{{langmod.SSLWLABEL71}}: ' + response.subject + '
';
if(response.aliases.length > 0){
html_info += '{{langmod.SSLWLABEL72}}: ' + response.aliases.map(function(san){
return san.replace('DNS:','');
}).join(', ') + '
';
}
let issuers = response.issuer.map(function(issuer){
return issuer.param + '=' + issuer.value;
}).join(', ');
html_info += '{{langmod.SSLWLABEL73}}: ' + response.valid_from + '
' +
'{{langmod.SSLWLABEL74}}: ' + response.valid_until + '
' +
'{{langmod.SSLWLABEL75}}: ' + response.signature + '
' +
'{{langmod.SSLWLABEL76}}: ' + response.public_key + '
' +
'{{langmod.SSLWLABEL77}}: ' + issuers + '
';
if(response.self_signed == true){
html_info += '{{langmod.SSLWLABEL78}}
';
}
if(response.is_expired == true){
html_info += '{{langmod.SSLWLABEL79}}
';
}
return '' + html_info + '
';
}
function renderFileHTML(response, title, domain, type){
return '' +
'' +
'' +
'
';
}
function copyFileContent(){
$('#file_content').show();
var copyText = document.getElementById('file_content');
copyText.select();
document.execCommand("copy");
noti_bubble('{{langmod.SSLWLABEL32}}','','success',false,false,'3000',true);
}
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 emailCSR(elem){
if($(elem).is(':checked')){
$('#email_send_csr').slideDown();
}else{
$('#email_send_csr').slideUp();
uchip.validator('#emailAddressSend', true);
}
}
function showNewCSR(){
uchip.slideToggle('#ssl_csr_wrapper','#ssl_list_wrapper');
}
function cancelNewCSR(){
uchip.slideToggle('#ssl_list_wrapper','#ssl_csr_wrapper', function(){
cleanFormCSR();
});
}
function cleanFormCSR(){
$('.reqcsr').val('');
$('#countryName').val(null).trigger('change');
$("#commonName").tagsinput('removeAll');
}
function handleReload(bind){
window.onbeforeunload = bind === true ? function(e) {
return 'Are you sure you want to leave? You are in the middle of something.';
} : null;
}
function validSSLDomain(domain) {
// console.log('domain', domain);
// let re = /^(\*\.)?([\w\d]+\.)+[\w\d]+$/;
//let re = /^(\*\.)?(?!:\/\/)(?!.{256,})(([a-z0-9][a-z0-9_-]*?\.)+?[a-z]{2,6}?)$/i;
let re = /^(\*\.)?(?!:\/\/)(?!.{256,})(([a-z0-9][a-z0-9_-]*?\.)+?[a-z]{2,10}?)$/i;
return re.test(domain);
}
function copyCSR(elem){
let field = document.getElementById(elem);
field.select();
document.execCommand('copy');
noti_bubble('{{langmod.SSLWLABEL32}}','','success',false,false,'3000',true);
}
function copiedCSR(elem){
if($(elem).is(':checked')){
$('#copied_csr_btn').prop('disabled', false);
$('#copied_csr_btn').removeClass('disabled');
handleReload(false);
}else{
$('#copied_csr_btn').prop('disabled', true);
$('#copied_csr_btn').addClass('disabled');
handleReload(true);
}
}
function genCSRContinue(){
uchip.slideToggle('#ssl_list_wrapper','#ssl_csr_generated', function(){
cleanFormCSR();
$('#copied_csr_check').prop('checked', false);
});
}
function processNewCSR(){
let valid_email_send = !($('#emailsend').is(':checked') && !uchip.validator('#emailAddressSend'));
if(uchip.validator('.reqcsr') && valid_email_send){
let data = '';
$('.reqcsr').each(function(){
data += $(this).attr('id') + '=' + $(this).val() + '&';
});
uchip.handleButton('.btncsr-gen', 'fa-cogs');
uchip.handleButton('.btncsr-cnl', 'fa-ban');
data += 'key_size=' + $('#key_size').val() + '&emailsend=' + ($('#emailsend').is(':checked') ? '1' : '0') + '&email_receiver=' + $('#emailAddressSend').val();
uchip.call('module=sslwizard&acc=generatecsr', {
data: data,
callback: function(response){
if(response.result == 'success'){
noti_bubble('{{langmod.SSLWLABEL13}}','{{langmod.SSLWLABEL12}}','success',false,false,'3000',true);
uchip.slideToggle('#ssl_csr_generated', '#ssl_csr_wrapper', function(){
$('#csr_csr').val(response.csr);
$('#csr_priv').val(response.priv);
handleReload(true);
});
}else{
let message = '{{langmod.SSLWLABEL15}}';
noti_bubble(message,'{{langmod.SSLWLABEL14}}','error',false,false,'3000',true);
}
uchip.handleButton('.btncsr-gen', 'fa-cogs', true);
uchip.handleButton('.btncsr-cnl', 'fa-ban', true);
}
});
}
}