🌳
pt0/deployF/k8sF/get1NonWcDnsF.mts
1import * as _ from 'lodash-es'
8export const getCfProxied = (hostname: string) => {
9 const cfProxied = !isWcDnsSuffix(hostname)
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})
14 }
15 return 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) => {
25 const {domainNames} = getKlusterCtx()
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}`))
30 assertTruthy(domainMatch, {hostname, hostDomain, domainNames})
33export const getNonWcDns = (hostname: string) => {
34 const {nonWcHostname} = getKlusterCtx()
36 if (nonWcHostname) {
37 throwIf(() => nonWcHostname != hostname, {nonWcHostname, hostname})
38 validateHostnameInDomainNames(hostname)
39 return true
40 }
42 return getCfProxied(hostname)