Viewing File: /usr/local/cpanel/base/frontend/jupiter/domains/services/domains.min.js
define(["angular","lodash","cjt/util/locale","cjt/io/uapi-request","cjt/io/api2-request","cjt/io/uapi","cjt/io/api2","cjt/modules","cjt/services/APICatcher","cjt/services/cpanel/nvDataService"],(function(e,n,t,a,o){"use strict";var i=e.module("cpanel.domains.domains.service",["cjt2.services.apicatcher","cjt2.services.cpanel.nvdata"]),r="domain_recommendations_prioritized_tlds";i.value("PAGE",PAGE),i.value("DOMAIN_TYPE_CONSTANTS",{SUBDOMAIN:"subdomain",ADDON:"addon",ALIAS:"alias",MAIN:"main_domain"});var m={documentRoot:!0};i.factory("domains",["$q","$timeout","APICatcher","DOMAIN_TYPE_CONSTANTS","PAGE","nvDataService",function(i,d,s,u,c,p){var l,D,f,h,g,v,A={},y=null;function _(e){window.mixpanel&&"function"==typeof window.mixpanel.track&&window.mixpanel.track(e,{})}var S,b=function(e){var n=this;Object.keys(e).forEach((function(t){n[t]=e[t]})),n.protocol=n.isHttpsRedirecting?"https":"http",n.isWildcard=n.domain&&"*"===n.domain.substr(0,1),n.canBeSuggested=!n.isWildcard},R=[{label:t.maketext("Subdomain"),value:u.SUBDOMAIN,requiresCustomDocumentRoot:!0,stat:"subdomains"},{label:t.maketext("Addon"),value:u.ADDON,requiresCustomDocumentRoot:!0,dependantStat:"subdomains",stat:"addon_domains"},{label:t.maketext("Alias"),value:u.ALIAS,stat:"aliases"}],N=function(){};function T(e,n){for(var t in e)if(e.hasOwnProperty(t)&&e[t].id===n)return e[t]}function w(e){for(var n in R)if(R.hasOwnProperty(n)&&R[n].value===e)return R[n]}function O(e){if(e){var n=null===e.maximum?void 0:Number(e.maximum),t=Number(e.usage);if(!isNaN(n))if(0===n||t/n>=1)return!0;return!1}}function I(e){if(!Array.isArray(e))return null;for(var n=0;n<e.length;n++)if(1===e[n].period&&e[n].register)return{display:e[n].register.display_value,value:parseFloat(e[n].register.value)};return null}function j(e){var n=(e||"").trim().toLowerCase();return n?"."===n.charAt(0)?n:"."+n:""}return(N.prototype=s)._cacheDomain=function(n){l||(l=[]);var t=new b(n);if(A[t.domain]){var a=A[t.domain];e.extend(a,t)}else A[t.domain]=t,l.push(t);return n},N.prototype._uncacheDomain=function(e){if(!l)return!1;for(var n=this._getDomainObject(e),t=l.length-1;t>=0;t--)l[t].domain===n.domain&&l.splice(t,1);delete A[n.domain]},N.prototype.getCurrentDomains=function(){return l},N.prototype.invalidate=function(){l=null,A={}},N.prototype._getDomainObject=function(e){return"string"==typeof e?this.findDomainByName(e):e},N.prototype._getSubDomainObject=function(e){return"string"==typeof e?this.findDomainByName(e+"."+this.getMainDomain().domain):e},N.prototype._associateAddonDomains=function(){var n=this;e.forEach(h,(function(e){var t=n._getSubDomainObject(e.subdomain);t&&(t.associatedAddonDomain=e.domain)}))},N.prototype.addSubdomain=function(n){var t=this,a=new o.Class;a.initialize("SubDomain","addsubdomain");var i=n.subdomain.substr(0,n.subdomain.length-(n.domain.length+1));return a.addArgument("domain",i),a.addArgument("rootdomain",n.domain),a.addArgument("canoff","1"),a.addArgument("disallowdot","0"),a.addArgument("dir",n.fullDocumentRoot),t.promise(a).then((function(a){var o=n.newDomainName;return t.fetchSingleDomainData(o).then((function(a){return a=e.extend(a,{subdomain:a.subdomain,rootDomain:n.domain,type:u.SUBDOMAIN,canEdit:c.hasWebServerRole&&m,canRemove:!0}),t._cacheDomain(a)}))}))},N.prototype.addAddonDomain=function(n){var t=this,a=new o.Class;return a.initialize("AddonDomain","addaddondomain"),a.addArgument("subdomain",n.subdomain),a.addArgument("newdomain",n.newDomainName),a.addArgument("ftp_is_optional","1"),a.addArgument("dir",n.documentRoot),a.addArgument("create_temporary_domain",n.createTemporaryDomain),t.promise(a).then((function(a){const o=a.data?a.data[0].domain:null;return t.fetchSingleDomainData(n.newDomainName||o).then((function(a){var o=e.extend(e.copy(a),{type:u.ADDON,subdomain:a.subdomain,canEdit:c.hasWebServerRole&&m,canRemove:!0,canRename:!0,is_temporary:"1"===String(a.is_temporary)||"1"===String(n.createTemporaryDomain)});return t._cacheDomain(e.extend(e.copy(a),{domain:a.rootDomain,subdomain:a.subdomain,type:u.SUBDOMAIN,associatedAddonDomain:o,canEdit:c.hasWebServerRole&&m,canRemove:!0,is_temporary:"1"===String(a.is_temporary)||"1"===String(n.createTemporaryDomain)})),"1"===String(n.createTemporaryDomain)&&_("CP_USR:DOMAINS-TEMP_DOMAIN-CREATED"),t._cacheDomain(o)}))}))},N.prototype.addAliasDomain=function(n){var t=this,a=new o.Class;return a.initialize("Park","park"),a.addArgument("domain",n.newDomainName),t.promise(a).then((function(){var a=e.copy(t.getMainDomain());return a.domain=n.newDomainName,a.type=u.ALIAS,a.canRemove=!0,a.canRename=!0,t._cacheDomain(a)}))},N.prototype.add=function(e){var n,t=this;return e.domainType===u.SUBDOMAIN?n=t.addSubdomain(e):e.domainType===u.ADDON?n=t.addAddonDomain(e):e.domainType===u.ALIAS&&(n=t.addAliasDomain(e)),n.then((function(n){var a=w(e.domainType),o=T(t.getUsageStats(),a.stat);return o&&o.usage++,t.updateDomainTypeLimits(),n})),n},N.prototype.generateFullDocumentRoot=function(e){var n="1"===c.requirePublicHTMLSubs.toString(),t=this.getMainDomain().homedir+"/";return n&&(t+="public_html/"),t+=e?e.replace(/^\//,""):""},N.prototype.getMainDomain=function(){return D},N.prototype.findDomainByName=function(e){return A[e]},N.prototype.fetchSingleDomainData=function(e){var n=this,t=new a.Class;return t.initialize("DomainInfo","single_domain_data"),t.addArgument("domain",e),t.addArgument("return_https_redirect_status",1),n.promise(t).then((function(e){var t=0;return"addon_domain"===e.data.type?t=u.ADDON:"sub_domain"===e.data.type&&(t=u.SUBDOMAIN),n.formatSingleDomain(e.data,t)}))},N.prototype.fetchDomains=function(){var e=this,t=new a.Class;return t.initialize("DomainInfo","domains_data"),t.addArgument("return_https_redirect_status",1),e.promise(t).then((function(t){var a=e.formatSingleDomain(t.data.main_domain);a.type=u.MAIN,a.canRemove=!1,a.canRename=!(!c.features||!c.features.primarydomain_rename),D=a,e._cacheDomain(D),g=[];var o=t.data.sub_domains||[];return o.forEach((function(n){var t=e.formatSingleDomain(n,u.SUBDOMAIN);this.push(t),e._cacheDomain(t)}),g),h=[],(o=t.data.addon_domains||[]).forEach((function(t){var a=e.formatSingleDomain(t,u.ADDON);a.canRename=!0,this.push(a),e._cacheDomain(a);var o=n.assign({},a);o.domain=o.rootDomain,o.type=u.SUBDOMAIN,g.push(o),e._cacheDomain(o)}),h),f=[],t.data.parked_domains.forEach((function(n){var a=e.formatSingleDomain(t.data.main_domain,u.ALIAS);a.domain=n,a.canRename=!0,this.push(a),e._cacheDomain(a)}),f),D}))},N.prototype.formatSingleDomain=function(e,n){var t={domain:e.domain,homedir:e.homedir,documentRoot:e.documentroot||e.dir,rootDomain:e.servername,isHttpsRedirecting:parseInt(e.is_https_redirecting),hasValidHTTPSAliases:parseInt(e.all_aliases_valid),nonHTTPS:!parseInt(e.can_https_redirect),redirectsTo:"not redirected"===e.status?null:e.status,type:e.type,realRootDomain:c.mainDomain,is_temporary:"1"===String(e.is_temporary)};if(n){t.type=n,t.homedir=this.getMainDomain().homedir;var a=this.getMainDomain().domain;if(n===u.SUBDOMAIN){var o=e.domain.match(/.*\.(.+\..+)$/);a=o?o[1]:a}var i=t.rootDomain?t.rootDomain.substr(0,t.rootDomain.lastIndexOf("."+a)):null;t.canRemove=!0,n!==u.ALIAS&&(t.canEdit=c.hasWebServerRole&&m,t.subdomain=i),n===u.SUBDOMAIN?t.rootDomain=a:n===u.ALIAS&&(t.rootDomain=c.mainDomain)}return t},N.prototype.get=function(){var e=this;return S||(l?i.resolve(l):(l=[],S=e.fetchDomains().then((function(){return e._associateAddonDomains(),l})).finally((function(){S=null}))))},N.prototype.getResourceUsageStats=function(){var e=new a.Class;return e.initialize("ResourceUsage","get_usages"),this.promise(e).then((function(e){return e.data}))},N.prototype.getDomainTypes=function(){return R},N.prototype.getUsageStats=function(){return v},N.prototype.updateDomainTypeLimits=function(){var e=this,n=e.getUsageStats();return e.getDomainTypes().forEach((function(e){var t=T(n,e.stat);e.overLimit=O(t),"1"!==c.hasWebServerRole&&e.requiresCustomDocumentRoot?e.overLimit=!0:!e.overLimit&&e.dependantStat&&(e.overLimit=e.overLimit||O(T(n,e.dependantStat)))})),e.getDomainTypes()},N.prototype.getTypes=function(){var e=this;return e.getUsageStats()?i.resolve(e.getDomainTypes()):e.getResourceUsageStats().then((function(n){return v=n,e.updateDomainTypeLimits(),e.getDomainTypes()}))},N.prototype.updateDocumentRoot=function(e,n){var t=this,a=t._getDomainObject(e);["subdomain","rootDomain"].forEach((function(e){if(!a[e])throw new Error(e+" is required but undefined on "+a.domain)}));var i=a.rootDomain;a.type===u.ADDON&&(i=a.realRootDomain);var r=new o.Class;return r.initialize("SubDomain","changedocroot"),r.addArgument("subdomain",a.subdomain),r.addArgument("rootdomain",i),r.addArgument("dir",n),t.promise(r).then((function(e){return a.documentRoot=n,t.fetchSingleDomainData(a.domain).then((function(e){var n=e.documentRoot;if(a.type===u.ADDON){var o=t._getSubDomainObject(a.subdomain);o&&(o.documentRoot=n)}else if(a.associatedAddonDomain){t._getDomainObject(a.associatedAddonDomain).documentRoot=n}return a.documentRoot=n,a}))}))},N.prototype.removeSubdomain=function(e){var n,t=this._getDomainObject(e),a=new RegExp("."+t.rootDomain+"$");n=t.domain.match(a)?t.subdomain+"_"+t.rootDomain:t.domain;var i=new o.Class;return i.initialize("SubDomain","delsubdomain"),i.addArgument("domain",n),this.promise(i)},N.prototype.removeAddonDomain=function(e){var n=this,t=n._getDomainObject(e),a=new o.Class;return a.initialize("AddonDomain","deladdondomain"),a.addArgument("domain",t.domain),a.addArgument("subdomain",t.subdomain+"_"+n.getMainDomain().domain),n.promise(a)},N.prototype.removeAliasDomain=function(e){var n=this._getDomainObject(e),t=new o.Class;return t.initialize("Park","unpark"),t.addArgument("domain",n.domain),this.promise(t)},N.prototype.removeRedirect=function(e){var n=this._getDomainObject(e),t=new a.Class;return t.initialize("Mime","delete_redirect"),t.addArgument("domain",n.domain),t.addArgument("src",n.redirectTo),t.addArgument("redirect",n.documentRoot),this.promise(t).then((function(){n.redirectTo=""}))},N.prototype._removeDomainAdjustStats=function(e){var n=this,t=n._getDomainObject(e);if(t){t.type===u.ADDON&&n._removeDomainAdjustStats(t.subdomain+"."+n.getMainDomain().domain),n._uncacheDomain(t);var a=w(t.type),o=T(n.getUsageStats(),a.stat);o&&o.usage--,n.updateDomainTypeLimits()}},N.prototype.remove=function(e){var t=this,a=t._getDomainObject(e),o=!1,r=[];return a.type===u.SUBDOMAIN?r.push(t.removeSubdomain(a)):a.type===u.ADDON?r.push(t.removeAddonDomain(a)):a.type===u.ALIAS&&(a.redirectTo&&r.push(t.removeRedirect(a)),r.push(t.removeAliasDomain(a))),i.all(r).then((function(e){t._removeDomainAdjustStats(a)}),(function(e){if(n.isArray(e))e.forEach((function(e){if(e&&e.error)throw o=!0,e.error}));else if(e&&e.error)throw o=!0,e.error})).finally((function(){o||t._uncacheDomain(a)}))},N.prototype.getDocumentRootPattern=function(){return new RegExp("^[^"+n.escapeRegExp('%?* :|"<>\\')+"]+$")},N.prototype.canRedirectHTTPS=function(){return"1"===c.canRedirectHTTPS},N.prototype.toggleHTTPSRedirect=function(e,n){var t=new a.Class;if(t.initialize("SSL","toggle_ssl_redirect_for_domains"),t.addArgument("state",e?1:0),n){var o=n;t.addArgument("domains",o)}else{for(var i=[],r=0;r<l.length;r++)l[r].selected&&!l[r].associatedAddonDomain&&void 0===l[r].associatedAddonDomain&&i.push(l[r].domain);var m=i.join(",");t.addArgument("domains",m)}return this.promise(t)},N.prototype.replaceTemporaryDomain=function(n){var t=this,o=new a.Class;return o.initialize("Domain","convert_temporary_to_registered"),o.addArgument("domain",n.domain),o.addArgument("registered",n.newDomainName),o.addArgument("docroot",n.documentRoot),t.promise(o).then((function(){return t.fetchSingleDomainData(n.newDomainName).then((function(a){a.canRename=!0,t._cacheDomain(a),t._cacheDomain(e.extend(e.copy(a),{domain:a.rootDomain,type:u.SUBDOMAIN,associatedAddonDomain:a})),t._uncacheDomain(n);var o=w(a.type),i=T(t.getUsageStats(),o.stat);i&&i.usage++,t.updateDomainTypeLimits(),_("CP_USR:DOMAINS-TEMP_DOMAIN-CONVERTED")}))}))},N.prototype.fetchDomainRecommendations=function(e,n,t){var o=new a.Class;if(o.initialize("DomainRecommendations","domain_suggestions"),o.addArgument("search_field",e),n&&o.addArgument("page_size",n),t&&t.length){var i=t.map((function(e){return(e||"").replace(/^\./,"")})).filter((function(e){return e.length}));if(i.length){o.addArgument("tld",i[0]);for(var r=1;r<i.length;r++)o.addArgument("tld-"+r,i[r])}}return this.promise(o).then((function(e){return e.data}))},N.prototype.fetchDomainPurchaseUrl=function(e,n){var t=new a.Class;return t.initialize("DomainRecommendations","purchase_domain"),t.addArgument("domain",e),t.addArgument("period",n),t.addArgument("skip_backend_track",1),this.promise(t).then((function(e){return e.data}))},N.prototype.fetchRecommendations=function(e,n){var t=i.defer(),a=!1,o=d((function(){a=!0,t.reject(new Error("Domain recommendations request timed out after 10000ms"))}),1e4);return this.fetchDomainRecommendations(e,10,n).then((function(e){if(!a){var n=e&&e.suggestions?e.suggestions:{},o=Object.keys(n),i=o.slice(0,2),r=[],m=null;i.forEach((function(e){r.push({domain:e});var t=I(n[e].pricing);t&&(null===m||t.value<m.value)&&(m=t)}));var d=o.map((function(e){var t=I(n[e].pricing);return{domain:e,price:t?t.display:"",priceValue:t?t.value:0,isPremium:!!n[e].is_premium}}));t.resolve({banner:{recommendations:r,lowestPrice:m?m.display:""},explore:{featured:d.slice(0,2),available:d.slice(2)}})}})).catch((function(e){t.reject(e)})).finally((function(){d.cancel(o)})),t.promise},N.prototype.fetchStoreConfig=function(){var e=new a.Class;return e.initialize("DomainRecommendations","get_store_config"),this.promise(e).then((function(e){return e.data}))},N.prototype.fetchSupportedTlds=function(){var e=new a.Class;return e.initialize("DomainRecommendations","supported_tlds"),this.promise(e).then((function(e){return e.data&&Array.isArray(e.data.tlds)?e.data.tlds:[]}))},N.prototype.getPrioritizedTlds=function(){return p.get(r).then((function(e){var n=Array.isArray(e)?e[0]:null;return(n&&n.value?String(n.value):"").split("|").map(j).filter((function(e){return e.length}))})).catch((function(e){return console.error("Failed to load prioritised TLDs:",e),[]}))},N.prototype.setPrioritizedTlds=function(n){var t=(e.isArray(n)?n:[]).map(j).filter((function(e){return e.length})).join("|");return p.set(r,t,{nocache:!0}).then((function(e){e&&e.error&&console.error("Failed to save prioritised TLDs:",e.error)})).catch((function(e){console.error("Failed to save prioritised TLDs:",e)}))},N.prototype.renameDomain=function(e){var n=this,t=new a.Class;return t.initialize("Domain","rename_domain"),t.addArgument("domain",e.domain),t.addArgument("new_domain",e.newDomainName),n.promise(t).then((function(){return n.fetchSingleDomainData(e.newDomainName).then((function(t){t.canRename=!0,n._cacheDomain(t),n._uncacheDomain(e)}))}))},N.prototype.setPendingAddDomain=function(e){y=e||null},N.prototype.consumePendingAddDomain=function(){var e=y;return y=null,e},new N}])}));Back to Directory