Add scheme

This commit is contained in:
Owen
2026-04-09 17:54:07 -04:00
parent a730f4da1d
commit c027c8958b
5 changed files with 25 additions and 34 deletions

View File

@@ -231,7 +231,7 @@ export const siteResources = pgTable("siteResources", {
niceId: varchar("niceId").notNull(),
name: varchar("name").notNull(),
mode: varchar("mode").$type<"host" | "cidr" | "http" | "https">().notNull(), // "host" | "cidr" | "http" | "https"
protocol: varchar("protocol"), // only for port mode
scheme: varchar("scheme").$type<"http" | "https">(), // only for when we are doing https or http mode
proxyPort: integer("proxyPort"), // only for port mode
destinationPort: integer("destinationPort"), // only for port mode
destination: varchar("destination").notNull(), // ip, cidr, hostname; validate against the mode

View File

@@ -259,7 +259,7 @@ export const siteResources = sqliteTable("siteResources", {
niceId: text("niceId").notNull(),
name: text("name").notNull(),
mode: text("mode").$type<"host" | "cidr" | "http" | "https">().notNull(), // "host" | "cidr" | "http" | "https"
protocol: text("protocol"), // only for port mode
scheme: text("scheme").$type<"http" | "https">(), // only for when we are doing https or http mode
proxyPort: integer("proxyPort"), // only for port mode
destinationPort: integer("destinationPort"), // only for port mode
destination: text("destination").notNull(), // ip, cidr, hostname

View File

@@ -660,9 +660,14 @@ export function generateSubnetProxyTargetV2(
destination = `${destination}/32`;
}
if (!siteResource.alias || !siteResource.aliasAddress) {
if (
!siteResource.alias ||
!siteResource.aliasAddress ||
!siteResource.destinationPort ||
!siteResource.scheme
) {
logger.debug(
`Site resource ${siteResource.siteResourceId} is in HTTP/HTTPS mode but is missing alias or alias address, skipping alias target generation.`
`Site resource ${siteResource.siteResourceId} is in HTTP/HTTPS mode but is missing alias or alias address or destinationPort, skipping alias target generation.`
);
return;
}
@@ -675,9 +680,15 @@ export function generateSubnetProxyTargetV2(
disableIcmp,
resourceId: siteResource.siteResourceId,
protocol: siteResource.mode, // will be either http or https,
httpTargets: [],
tlsCert: "",
tlsKey: ""
httpTargets: [
{
destAddr: siteResource.destination,
destPort: siteResource.destinationPort,
scheme: siteResource.scheme
}
],
// tlsCert: "",
// tlsKey: ""
};
}

View File

@@ -38,7 +38,7 @@ const createSiteResourceSchema = z
name: z.string().min(1).max(255),
mode: z.enum(["host", "cidr", "http", "https"]),
siteId: z.int(),
// protocol: z.enum(["tcp", "udp"]).optional(),
scheme: z.enum(["http", "https"]).optional(),
// proxyPort: z.int().positive().optional(),
destinationPort: z.int().positive().optional(),
destination: z.string().min(1),
@@ -167,7 +167,7 @@ export async function createSiteResource(
name,
siteId,
mode,
// protocol,
scheme,
// proxyPort,
destinationPort,
destination,
@@ -232,30 +232,6 @@ export async function createSiteResource(
);
}
// // check if resource with same protocol and proxy port already exists (only for port mode)
// if (mode === "port" && protocol && proxyPort) {
// const [existingResource] = await db
// .select()
// .from(siteResources)
// .where(
// and(
// eq(siteResources.siteId, siteId),
// eq(siteResources.orgId, orgId),
// eq(siteResources.protocol, protocol),
// eq(siteResources.proxyPort, proxyPort)
// )
// )
// .limit(1);
// if (existingResource && existingResource.siteResourceId) {
// return next(
// createHttpError(
// HttpCode.CONFLICT,
// "A resource with the same protocol and proxy port already exists"
// )
// );
// }
// }
// make sure the alias is unique within the org if provided
if (alias) {
const [conflict] = await db
@@ -300,6 +276,7 @@ export async function createSiteResource(
name,
mode,
destination,
scheme,
destinationPort,
enabled,
alias,

View File

@@ -52,7 +52,7 @@ const updateSiteResourceSchema = z
.optional(),
// mode: z.enum(["host", "cidr", "port"]).optional(),
mode: z.enum(["host", "cidr", "http", "https"]).optional(),
// protocol: z.enum(["tcp", "udp"]).nullish(),
scheme: z.enum(["http", "https"]).nullish(),
// proxyPort: z.int().positive().nullish(),
destinationPort: z.int().positive().nullish(),
destination: z.string().min(1).optional(),
@@ -182,6 +182,7 @@ export async function updateSiteResource(
siteId, // because it can change
niceId,
mode,
scheme,
destination,
destinationPort,
alias,
@@ -354,6 +355,7 @@ export async function updateSiteResource(
siteId,
niceId,
mode,
scheme,
destination,
destinationPort,
enabled,
@@ -458,6 +460,7 @@ export async function updateSiteResource(
name: name,
siteId: siteId,
mode: mode,
scheme,
destination: destination,
destinationPort: destinationPort,
enabled: enabled,