|
@@ -12,33 +12,33 @@ import { addPeer } from "../gerbil/peers";
|
|
|
import { addTargets } from "../newt/targets";
|
|
|
import { pickPort } from "./helpers";
|
|
|
|
|
|
-// Regular expressions for validation
|
|
|
-const DOMAIN_REGEX =
|
|
|
- /^[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;
|
|
|
-const IPV4_REGEX =
|
|
|
- /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;
|
|
|
-const IPV6_REGEX = /^(?:[A-F0-9]{1,4}:){7}[A-F0-9]{1,4}$/i;
|
|
|
-
|
|
|
-// Schema for domain names and IP addresses
|
|
|
-const domainSchema = z
|
|
|
- .string()
|
|
|
- .min(1, "Domain cannot be empty")
|
|
|
- .max(255, "Domain name too long")
|
|
|
- .refine(
|
|
|
- (value) => {
|
|
|
- // Check if it's a valid IP address (v4 or v6)
|
|
|
- if (IPV4_REGEX.test(value) || IPV6_REGEX.test(value)) {
|
|
|
- return true;
|
|
|
- }
|
|
|
-
|
|
|
- // Check if it's a valid domain name
|
|
|
- return DOMAIN_REGEX.test(value);
|
|
|
- },
|
|
|
- {
|
|
|
- message: "Invalid domain name or IP address format",
|
|
|
- path: ["domain"]
|
|
|
- }
|
|
|
- );
|
|
|
+// // Regular expressions for validation
|
|
|
+// const DOMAIN_REGEX =
|
|
|
+// /^[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;
|
|
|
+// const IPV4_REGEX =
|
|
|
+// /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;
|
|
|
+// const IPV6_REGEX = /^(?:[A-F0-9]{1,4}:){7}[A-F0-9]{1,4}$/i;
|
|
|
+//
|
|
|
+// // Schema for domain names and IP addresses
|
|
|
+// const domainSchema = z
|
|
|
+// .string()
|
|
|
+// .min(1, "Domain cannot be empty")
|
|
|
+// .max(255, "Domain name too long")
|
|
|
+// .refine(
|
|
|
+// (value) => {
|
|
|
+// // Check if it's a valid IP address (v4 or v6)
|
|
|
+// if (IPV4_REGEX.test(value) || IPV6_REGEX.test(value)) {
|
|
|
+// return true;
|
|
|
+// }
|
|
|
+//
|
|
|
+// // Check if it's a valid domain name
|
|
|
+// return DOMAIN_REGEX.test(value);
|
|
|
+// },
|
|
|
+// {
|
|
|
+// message: "Invalid domain name or IP address format",
|
|
|
+// path: ["domain"]
|
|
|
+// }
|
|
|
+// );
|
|
|
|
|
|
const updateTargetParamsSchema = z
|
|
|
.object({
|
|
@@ -48,7 +48,7 @@ const updateTargetParamsSchema = z
|
|
|
|
|
|
const updateTargetBodySchema = z
|
|
|
.object({
|
|
|
- ip: domainSchema.optional(),
|
|
|
+ ip: z.string().min(1).max(255),
|
|
|
method: z.string().min(1).max(10).optional().nullable(),
|
|
|
port: z.number().int().min(1).max(65535).optional(),
|
|
|
enabled: z.boolean().optional()
|