1import * as _ from 'lodash-es' 8export const getCfProxied = (hostname: string) => { 11 const numDots = _.chain(hostname).split('.').value().length - 1 12 if (cfProxied && numDots >= 3) { 13 throw new PtErr('CF-proxied hostname has 3+ dots; add a wildcard SAN (e.g. *.<parent-domain>) to klustCertsH', {hostname, numDots, cfProxied}) 18const getHostnameDomain = (hostname: string) => { 19 const parts = hostname.split('.') 20 // Return last 2 parts (e.g., "foo.drawinggame.org" -> "drawinggame.org") 21 return parts.slice(-2).join('.') 24const validateHostnameInDomainNames = (hostname: string) => { 26 if (!domainNames?.length) return // no domainNames configured, skip validation 28 const hostDomain = getHostnameDomain(hostname) 29 const domainMatch = domainNames.some((d: string) => hostDomain === d || hostname.endsWith(`.${d}`)) 33export const getNonWcDns = (hostname: string) => { 37 throwIf(() => nonWcHostname != hostname, {nonWcHostname, hostname}) 38 validateHostnameInDomainNames(hostname) 42 return getCfProxied(hostname)