Viewing File: /usr/local/cpanel/whostmgr/docroot/js2-min/manageservicecrts.js

(function(window){"use strict";var EVENT=window.EVENT;var CPANEL=window.CPANEL;var domain_browser_box;var progress_panel;var service_cert={};var service_description={};var service_group={};var services_ssl_table;var PAGE=window.PAGE;var nvdata=PAGE.nvdata;PAGE.filter_value="default";var service_table_sort=nvdata&&nvdata.service_table_sort||{key:"service_description"};var sendInstall=function(form){form=DOM.get(form);var progress=new CPANEL.ajax.Progress_Panel(null,{show_status:true,status_html:LOCALE.maketext("Installing …")});progress.show_from_source(form);var install_data=CPANEL.dom.get_data_from_form(form);if(typeof install_data.service!=="object"){install_data.service=[install_data.service]}var batch=install_data.service.map((function(cur_svc){var cur_install={func:"install_service_ssl_certificate",data:Object.create(install_data)};cur_install.data.service=cur_svc;return cur_install}));var callback={success:_installSuccess,failure:_installFailure,argument:install_data};callback.argument=install_data;callback.argument.progress_panel=progress;CPANEL.api({batch:batch,callback:callback})};var _installFailure=function(o){var message_html;var batch_results=o.cpanel_data;o.argument.progress_panel.hide();if(batch_results&&typeof batch_results==="object"){var service_list=o.argument.service;var succeeded=[];var failed=[];for(var r=0;r<batch_results.length;r++){var cur_service=service_list[r];var description=service_description[cur_service];if(batch_results[r].cpanel_status){succeeded.push(description);service_cert[cur_service]=o.argument.crt}else{failed.push({name:description,error:batch_results[r].cpanel_error})}}if(succeeded.length){message_html=LOCALE.maketext("The system successfully updated the SSL certificate for [list_and_quoted,_1]; however, it failed to update the following [numerate,_2,service,services]:",succeeded,failed.length)}else{message_html=LOCALE.maketext("The SSL certificate update failed.")}message_html+=Handlebars.compile(DOM.get("batch_failure_template").text)({service:failed})}CPANEL.ajax.show_api_error(message_html||o)};var _installSuccess=function(o){o.argument.progress_panel.hide();var service_names_html=o.argument.service.map((function(sn){return service_description[sn].html_encode()}));var notice=new CPANEL.widgets.Dynamic_Page_Notice({closable:true,level:"success",content:LOCALE.maketext("You have successfully updated the SSL certificate for [list_and_quoted,_1].",service_names_html)});var scroll_window=true;o.argument.service.forEach((function(cur_svc){service_cert[cur_svc]=o.argument.crt.trim();if(cur_svc==="cpanel"){_display_restart_cpsrvd_dialog();scroll_window=false}}));if(scroll_window){var windowScroll=new CPANEL.animate.WindowScroll("ssl_table_area");windowScroll.animate()}_load_table_data()};var _display_restart_cpsrvd_dialog=function(){var restart_control=new CPANEL.ajax.Common_Dialog(null,{effect:CPANEL.ajax.FADE_MODAL,show_status:true,close:true,status_html:LOCALE.maketext("Restarting [asis,cpsrvd] …")});restart_control.setHeader(CPANEL.widgets.Dialog.applyDialogHeader(LOCALE.maketext("Restart [asis,cpsrvd]")));restart_control.setBody("");restart_control.render(document.body);restart_control.form.innerHTML=Handlebars.compile(DOM.get("display_restart_dialog").text)({});var deferred_refresh=function(){setTimeout((function(){parent.location.reload()}),1e4)};restart_control.submitEvent.subscribe((function(e){CPANEL.api({func:"restartservice",data:{service:"cpsrvd"},callback:CPANEL.ajax.build_page_callback(deferred_refresh)});CPANEL.api({func:"restartservice",data:{service:"cpdavd"},callback:CPANEL.ajax.build_page_callback(deferred_refresh)})}));restart_control.show_from_source(DOM.get("sslbrowse"))};var _reset_certificate_form=function(args){var form=DOM.get("mainform");var record=args.record;if(record){CPANEL.dom.set_form_el_value(form.service,record.getData("service_name"))}form.crt.value="";form.key.value="";form.cabundle.value="";CPANEL.sharedjs.sslinstall.runValidation();CPANEL.sharedjs.sslinstall.updateUI()};var _update_record_certificate=function(args){var form=DOM.get("mainform");_reset_certificate_form(args);var windowScroll=new CPANEL.animate.WindowScroll(form);windowScroll.animate()};var _apply_record_cert_to_another_service=function(args){CPANEL.sharedjs.sslinstall.showFormProgressOverlay();var windowScroll=new CPANEL.animate.WindowScroll("mainform");windowScroll.animate();var record=args.record;CPANEL.api({func:"fetch_service_ssl_components",api_data:{filter:[["service","eq",record.getData("service_name")]]},callback:CPANEL.ajax.build_page_callback(CPANEL.sharedjs.sslinstall.populate_form_with_ssl_components,{on_error:CPANEL.sharedjs.sslinstall.hideFormProgressOverlay})})};var _confirm_reset_record_certificate=function(args){var record=args.record;var clicked_el=args.clicked_el;var confirmation=new CPANEL.ajax.Common_Dialog(null,{effect:CPANEL.ajax.FADE_MODAL,show_status:true,close:true,status_html:LOCALE.maketext("Resetting SSL certificate for “[_1]” …",record.getData("service_description"))});DOM.addClass(confirmation.element,"reset-confirmation");confirmation.setHeader(CPANEL.widgets.Dialog.applyDialogHeader(LOCALE.maketext("Confirm SSL Certificate Reset")));confirmation.setBody("");confirmation.render(document.body);confirmation.form.innerHTML=Handlebars.compile(DOM.get("reset_confirm_template").text)({service:record.getData("service_description")});confirmation.submitEvent.subscribe((function(e){_do_reset(record.getData("service_name"),confirmation)}));confirmation.show_from_source(clicked_el)};var _do_reset=function(service_name,dialog_box){var callback=CPANEL.ajax.build_page_callback(_on_reset_success,{hide_on_return:dialog_box});callback.argument={service:service_name,progress_panel:progress_panel};CPANEL.api({func:"reset_service_ssl_certificate",data:{service:service_name},callback:callback})};var _on_reset_success=function(o){var service_name=o.argument.service;service_cert[service_name]=o.cpanel_data.certificate;_load_table_data();if(service_name==="cpanel"){_display_restart_cpsrvd_dialog();scroll_window=false}new CPANEL.widgets.Dynamic_Page_Notice({level:"success",content:LOCALE.maketext("You have successfully reset the SSL certificate for “[_1]”.",service_description[service_name].html_encode())})};var _toggle_record_certificate_details=function(args){args.datatable.toggleRowExpansion(args.row)};var link_class_action={"update-link":_update_record_certificate,"details-link":_toggle_record_certificate_details,"other-service-link":_apply_record_cert_to_another_service,"reset-link":_confirm_reset_record_certificate};var _table_link_listener=function(e,args){var link=this;var row_el=DOM.getAncestorByTagName(link,"tr");var record=args.datatable.getRecord(row_el);var link_classes=link.className.split(/\s+/);var link_class=link_classes.filter((function(c){return c in link_class_action}))[0];link_class_action[link_class]({record:record,clicked_el:link,datatable:args.datatable,row:row_el})};var _attach_table_click_listeners=function(){var links=CPANEL.Y.all("#services_ssl_table .action-links a");EVENT.on(links,"click",_table_link_listener,{datatable:services_ssl_table})};var _render_services_ssl_table=function(table_id){if(!services_ssl_table){services_ssl_table=new YAHOO.widget.RowExpansionDataTable(table_id,table_columns,new YAHOO.util.LocalDataSource,{initialLoad:false,sortedBy:service_table_sort,rowExpansionTemplate:function(args){var svcName=args.data.getData("service_name");return CPANEL.widgets.ssltable.detailsExpand(args,{})}});CPANEL.nvdata.register("service_table_sort",(function(){var sort=services_ssl_table.get("sortedBy");return{key:sort.key,dir:sort.dir}}));services_ssl_table.subscribe("postRenderEvent",_attach_table_click_listeners)}};var _save_nvdata_on_column_sort=function(){CPANEL.nvdata.save()};var _load_table_data=function(){var service_names=Object.keys(service_cert);var table_data=service_names.filter((function(name){if(PAGE.filter_value&&PAGE.filter_value!==service_group[name]){return}return true})).map((function(name){var cert_text=service_cert[name];var cert_parse;try{cert_parse=CPANEL.ssl.parseCertificateText(cert_text)}catch(e){cert_parse={}}return{service_name:name,service_description:service_description[name],certificate_text:service_cert[name],certificate_domains:cert_parse.domains||[],certificate_key_type:cert_parse.getKeyType(),certificate_not_after:cert_parse.notAfter}}));var datasource=new YAHOO.util.LocalDataSource(table_data,{responseSchema:{fields:table_data_fields}});services_ssl_table.unsubscribe("columnSortEvent",_save_nvdata_on_column_sort);var resubscribe=function(){this.unsubscribe("columnSortEvent",resubscribe);this.subscribe("columnSortEvent",_save_nvdata_on_column_sort)};services_ssl_table.subscribe("columnSortEvent",resubscribe);CPANEL.widgets.ssltable.loadTableAndSort(services_ssl_table,{datasource:datasource})};var table_data_fields=["service_name","service_description","service_description","certificate_domains","grouptype","certificate_text","certificate_key_type",{key:"certificate_not_after",parser:CPANEL.widgets.ssltable.parseUnixDate}];var sort_domains=function(a,b,desc){return CPANEL.widgets.ssltable.sorterStringArray(a.getData("certificate_domains"),b.getData("certificate_domains"))*(desc?-1:1)};function sort_key_type(a,b,desc){return CPANEL.widgets.ssltable.sorterKeyType(a.getData("certificate_key_type"),b.getData("certificate_key_type"))*(desc?-1:1)}var format_domains=function(elCell,oRecord,oColumn,oData){var items=oData.map((function(i){return{text:i}}));elCell.innerHTML=CPANEL.widgets.ssltable.listTemplate({items:items})};function format_actions(el,rec,col){el.innerHTML=actions_template}function filterTable(filterKey){if(services_ssl_table){PAGE.filter_value=filterKey;_load_table_data()}}var actions_template=DOM.get("table_action_template").text;var table_columns=[{key:"service_description",label:LOCALE.maketext("Service"),sortable:true},{key:"certificate_domains",label:LOCALE.maketext("Certificate Properties"),sortable:true,sortOptions:{sortFunction:sort_domains},formatter:format_domains},{key:"certificate_not_after",label:LOCALE.maketext("Certificate Expiration"),sortable:true,formatter:CPANEL.widgets.ssltable.formatCertificateExpiration},{key:"certificate_key_type",label:LOCALE.maketext("Certificate Key"),sortable:true,sortOptions:{sortFunction:sort_key_type},formatter:CPANEL.widgets.ssltable.formatCertificateKeyType},{key:"actions",label:LOCALE.maketext("Actions"),sortable:false,formatter:format_actions}];var TABS={CERTS:"certificates"};var file_selector=document.getElementById("sslfilebrowse");var sslcrt=document.getElementById("sslcrt");var sslprivatekey=document.getElementById("sslkey");var sslpassword=document.getElementById("sslpassword");var sslpassword_success=document.getElementById("sslpassword_success");var passwordblock=document.getElementById("sslpasswordblock");var btnInstall=document.getElementById("btnInstall");var sslbrowse_btn=document.getElementById("sslbrowse");var password_validator;var current_asn1;var current_p12;var reader=new FileReader;reader.onload=function(evt){sslcrt.value="";sslprivatekey.value="";CPANEL.sharedjs.sslinstall.clearValidation();var byte_buffer=new forge.util.ByteBuffer(evt.target.result);var parsed;try{current_asn1=forge.asn1.fromDer(byte_buffer);parsed=_attemptParseCert("")}catch(err){_display_error(LOCALE.maketext("Your browser failed to parse “[_1]” as [asis,DER] because of an error: [_2]",_upload_filename(),err.message));return}if(!parsed){DOM.get("sslpassword_label").textContent=LOCALE.maketext("Enter the password for “[_1]”:",_upload_filename());sslpassword_success.style.display="none";passwordblock.style.display="block";sslpassword.disabled=false;password_validator=new CPANEL.validate.validator(LOCALE.maketext("[asis,PKCS #12] Password"));password_validator.add("sslpassword",(function(){return!!current_p12}),(function(){if(sslpassword.value.length){return LOCALE.maketext("The password you entered does not match “[_1]”.",_upload_filename())}return LOCALE.maketext("“[_1]” is encrypted. Enter this archive’s password to proceed.",_upload_filename())}));password_validator.attach();password_validator.verify();sslpassword.focus()}else{btnInstall.focus()}};reader.onerror=function(evt){_display_error(LOCALE.maketext("Your browser failed to load “[_1]” because of an error ([_2]): [_3]",_upload_filename(),evt.target.error.name,evt.target.error.message))};function _upload_filename(){return file_selector.files[0]&&file_selector.files[0].name}function _certPasswordOnInput(event){if(event.keyCode&&event.keyCode===13){event.preventDefault()}var password=sslpassword.value;var cert;var parsed=_attemptParseCert(password);if(parsed){sslpassword.disabled=true;btnInstall.focus()}}function _attemptParseCert(password){if(current_asn1){current_p12=CPANEL.pkcs12.pkcs12FromAsn1(current_asn1,password);if(current_p12){sslpassword_success.textContent=LOCALE.maketext("You have entered the correct password for “[_1]”.",_upload_filename());sslpassword_success.style.display="block";DOM.get("btnInstall").disabled=false;if(password_validator){password_validator.verify()}try{sslcrt.value=CPANEL.pkcs12.extractOnlyCertificatePem(current_p12)}catch(err){_display_error(LOCALE.maketext("Your browser failed to parse a certificate from “[_1]” because of an error: [_2]",_upload_filename(),err.message))}try{sslprivatekey.value=CPANEL.pkcs12.extractOnlyPrivateKeyPem(current_p12)}catch(err){_display_error(LOCALE.maketext("Your browser failed to parse a key from “[_1]” because of an error: [_2]",_upload_filename(),err.message))}CPANEL.sharedjs.sslinstall.updateUI({});CPANEL.sharedjs.sslinstall.runValidation();file_selector.value="";return true}}return}function _display_error(str){new CPANEL.widgets.Dynamic_Page_Notice({level:"error",content:str.html_encode()})}function _handleFileSelect(file_sel){passwordblock.style.display="none";sslpassword.value=null;var files=file_sel.files;var file=files[0];current_asn1=null;current_p12=null;reader.readAsArrayBuffer(file)}var last_tab;function _viewTab(tabName){last_tab=tabName;var defaultSGLinks=document.querySelectorAll(".install-service-group");var serviceCheckboxes=document.querySelectorAll(".install-service-group input[type=checkbox]");serviceCheckboxes.forEach((function(e){e.checked=false}));window.PAGE.resetSSLForm();var HIDE_FOR_IOS=[document.getElementById("service_ssl_explanation"),document.getElementById("sslcrt_description"),document.getElementById("sslkey_description"),sslbrowse_btn,document.getElementById("sslcab_section"),document.querySelector("#mainform .middle-buttons"),document.getElementById("clear-bottom")].concat(Array.from(defaultSGLinks)).filter((function(e){return e!==null}));HIDE_FOR_IOS.forEach((function(e){e.style.display=null}));serviceCheckboxes.forEach((function(e){e.disabled=false}));window.PAGE.filterTable("default");document.body.classList.remove("no-reset-links");document.getElementById("sslpasswordblock").style.display="none";document.getElementById("btnInstall").disabled=false}EVENT.onDOMReady((function(){var myTabs=new YAHOO.widget.TabView("tabSet");myTabs.getTab(0).addListener("click",(function(){_viewTab(TABS.CERTS)}));window.PAGE.certPasswordOnInput=_certPasswordOnInput;PAGE.sendInstall=sendInstall;for(var s=0;s<PAGE.services.length;s++){var service_data=PAGE.services[s];service_cert[service_data.name]=service_data.certificate_text;service_description[service_data.name]=service_data.description;service_group[service_data.name]=service_data.grouptype}_render_services_ssl_table("services_ssl_table");DOM.setStyle("fetch-cert","display","");_viewTab(TABS.CERTS)}));PAGE.handleFileSelect=_handleFileSelect;PAGE.filterTable=filterTable;PAGE.resetSSLForm=function(){_reset_certificate_form({})}})(window);
Back to Directory File Manager