mirror of
https://github.com/fosrl/pangolin.git
synced 2026-08-15 00:39:43 +02:00
Handle overlapping fullDomain properly
This commit is contained in:
@@ -48,7 +48,9 @@ async function getDomainForSiteResource(
|
|||||||
eq(siteResources.orgId, orgId),
|
eq(siteResources.orgId, orgId),
|
||||||
// exclude looking at the ones on exit nodes if this is an inference resource,
|
// exclude looking at the ones on exit nodes if this is an inference resource,
|
||||||
// and vice versa, so inference and non-inference resources can share a full-domain
|
// and vice versa, so inference and non-inference resources can share a full-domain
|
||||||
ne(siteResources.requiresExitNodeConnection, !isInference),
|
isInference
|
||||||
|
? ne(siteResources.mode, "inference")
|
||||||
|
: eq(siteResources.mode, "inference"),
|
||||||
siteResourceId
|
siteResourceId
|
||||||
? ne(siteResources.siteResourceId, siteResourceId)
|
? ne(siteResources.siteResourceId, siteResourceId)
|
||||||
: isNotNull(siteResources.siteResourceId)
|
: isNotNull(siteResources.siteResourceId)
|
||||||
|
|||||||
@@ -289,7 +289,9 @@ export async function updatePublicResources(
|
|||||||
if (existingResource) {
|
if (existingResource) {
|
||||||
let domain;
|
let domain;
|
||||||
if (
|
if (
|
||||||
["http", "ssh", "rdp", "vnc", "inference"].includes(resourceData.mode || "")
|
["http", "ssh", "rdp", "vnc", "inference"].includes(
|
||||||
|
resourceData.mode || ""
|
||||||
|
)
|
||||||
) {
|
) {
|
||||||
if (resourceData["full-domain"]?.startsWith("*.")) {
|
if (resourceData["full-domain"]?.startsWith("*.")) {
|
||||||
const isLicensed = await isLicensedOrSubscribed(
|
const isLicensed = await isLicensedOrSubscribed(
|
||||||
@@ -374,14 +376,22 @@ export async function updatePublicResources(
|
|||||||
name: resourceData.name || "Unnamed Resource",
|
name: resourceData.name || "Unnamed Resource",
|
||||||
|
|
||||||
mode: resourceData.mode,
|
mode: resourceData.mode,
|
||||||
proxyPort: ["http", "ssh", "rdp", "vnc", "inference"].includes(
|
proxyPort: [
|
||||||
resourceData.mode || ""
|
"http",
|
||||||
)
|
"ssh",
|
||||||
|
"rdp",
|
||||||
|
"vnc",
|
||||||
|
"inference"
|
||||||
|
].includes(resourceData.mode || "")
|
||||||
? null
|
? null
|
||||||
: resourceData["proxy-port"],
|
: resourceData["proxy-port"],
|
||||||
fullDomain: ["http", "ssh", "rdp", "vnc", "inference"].includes(
|
fullDomain: [
|
||||||
resourceData.mode || ""
|
"http",
|
||||||
)
|
"ssh",
|
||||||
|
"rdp",
|
||||||
|
"vnc",
|
||||||
|
"inference"
|
||||||
|
].includes(resourceData.mode || "")
|
||||||
? resourceData["full-domain"]
|
? resourceData["full-domain"]
|
||||||
: null,
|
: null,
|
||||||
subdomain: domain ? domain.subdomain : null,
|
subdomain: domain ? domain.subdomain : null,
|
||||||
@@ -571,14 +581,22 @@ export async function updatePublicResources(
|
|||||||
.set({
|
.set({
|
||||||
name: resourceData.name || "Unnamed Resource",
|
name: resourceData.name || "Unnamed Resource",
|
||||||
mode: resourceData.mode,
|
mode: resourceData.mode,
|
||||||
proxyPort: ["http", "ssh", "rdp", "vnc", "inference"].includes(
|
proxyPort: [
|
||||||
resourceData.mode || ""
|
"http",
|
||||||
)
|
"ssh",
|
||||||
|
"rdp",
|
||||||
|
"vnc",
|
||||||
|
"inference"
|
||||||
|
].includes(resourceData.mode || "")
|
||||||
? null
|
? null
|
||||||
: resourceData["proxy-port"],
|
: resourceData["proxy-port"],
|
||||||
fullDomain: ["http", "ssh", "rdp", "vnc", "inference"].includes(
|
fullDomain: [
|
||||||
resourceData.mode || ""
|
"http",
|
||||||
)
|
"ssh",
|
||||||
|
"rdp",
|
||||||
|
"vnc",
|
||||||
|
"inference"
|
||||||
|
].includes(resourceData.mode || "")
|
||||||
? resourceData["full-domain"]
|
? resourceData["full-domain"]
|
||||||
: null,
|
: null,
|
||||||
subdomain: domain ? domain.subdomain : null,
|
subdomain: domain ? domain.subdomain : null,
|
||||||
@@ -1090,7 +1108,9 @@ export async function updatePublicResources(
|
|||||||
|
|
||||||
let domain;
|
let domain;
|
||||||
if (
|
if (
|
||||||
["http", "ssh", "rdp", "vnc", "inference"].includes(resourceData.mode || "")
|
["http", "ssh", "rdp", "vnc", "inference"].includes(
|
||||||
|
resourceData.mode || ""
|
||||||
|
)
|
||||||
) {
|
) {
|
||||||
if (resourceData["full-domain"]?.startsWith("*.")) {
|
if (resourceData["full-domain"]?.startsWith("*.")) {
|
||||||
const isLicensed = await isLicensedOrSubscribed(
|
const isLicensed = await isLicensedOrSubscribed(
|
||||||
@@ -1188,14 +1208,22 @@ export async function updatePublicResources(
|
|||||||
status: resourceStatusFromSite,
|
status: resourceStatusFromSite,
|
||||||
name: resourceData.name || "Unnamed Resource",
|
name: resourceData.name || "Unnamed Resource",
|
||||||
mode: resourceData.mode,
|
mode: resourceData.mode,
|
||||||
proxyPort: ["http", "ssh", "rdp", "vnc", "inference"].includes(
|
proxyPort: [
|
||||||
resourceData.mode || ""
|
"http",
|
||||||
)
|
"ssh",
|
||||||
|
"rdp",
|
||||||
|
"vnc",
|
||||||
|
"inference"
|
||||||
|
].includes(resourceData.mode || "")
|
||||||
? null
|
? null
|
||||||
: resourceData["proxy-port"],
|
: resourceData["proxy-port"],
|
||||||
fullDomain: ["http", "ssh", "rdp", "vnc", "inference"].includes(
|
fullDomain: [
|
||||||
resourceData.mode || ""
|
"http",
|
||||||
)
|
"ssh",
|
||||||
|
"rdp",
|
||||||
|
"vnc",
|
||||||
|
"inference"
|
||||||
|
].includes(resourceData.mode || "")
|
||||||
? resourceData["full-domain"]
|
? resourceData["full-domain"]
|
||||||
: null,
|
: null,
|
||||||
subdomain: domain ? domain.subdomain : null,
|
subdomain: domain ? domain.subdomain : null,
|
||||||
@@ -2148,8 +2176,8 @@ export async function getDomain(
|
|||||||
// resource (and vice versa) - only conflicts within the
|
// resource (and vice versa) - only conflicts within the
|
||||||
// same routing category are rejected.
|
// same routing category are rejected.
|
||||||
isInference
|
isInference
|
||||||
? eq(resources.mode, "inference")
|
? ne(resources.mode, "inference")
|
||||||
: ne(resources.mode, "inference"),
|
: eq(resources.mode, "inference"),
|
||||||
resourceId
|
resourceId
|
||||||
? ne(resources.resourceId, resourceId)
|
? ne(resources.resourceId, resourceId)
|
||||||
: isNotNull(resources.resourceId)
|
: isNotNull(resources.resourceId)
|
||||||
|
|||||||
@@ -518,10 +518,9 @@ export async function createSiteResource(
|
|||||||
.where(
|
.where(
|
||||||
and(
|
and(
|
||||||
eq(siteResources.fullDomain, fullDomain),
|
eq(siteResources.fullDomain, fullDomain),
|
||||||
ne(
|
mode == "inference"
|
||||||
siteResources.requiresExitNodeConnection,
|
? ne(siteResources.mode, "inference")
|
||||||
mode == "inference"
|
: eq(siteResources.mode, "inference")
|
||||||
)
|
|
||||||
)
|
)
|
||||||
); // exclude looking at the ones on exit nodes if this is an inference resource
|
); // exclude looking at the ones on exit nodes if this is an inference resource
|
||||||
|
|
||||||
|
|||||||
@@ -484,10 +484,9 @@ export async function updateSiteResource(
|
|||||||
.where(
|
.where(
|
||||||
and(
|
and(
|
||||||
eq(siteResources.fullDomain, fullDomain),
|
eq(siteResources.fullDomain, fullDomain),
|
||||||
ne(
|
mode == "inference"
|
||||||
siteResources.requiresExitNodeConnection,
|
? ne(siteResources.mode, "inference")
|
||||||
mode == "inference"
|
: eq(siteResources.mode, "inference")
|
||||||
)
|
|
||||||
)
|
)
|
||||||
); // exclude looking at the ones on exit nodes if this is an inference resource
|
); // exclude looking at the ones on exit nodes if this is an inference resource
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user