浏览代码

Test & fix the get defaults for sites

Owen Schwartz 9 月之前
父节点
当前提交
edcae190b2

+ 1 - 1
server/routers/external.ts

@@ -46,11 +46,11 @@ authenticated.put("/org/:orgId/site", verifyOrgAccess, site.createSite);
 authenticated.get("/org/:orgId/sites", verifyOrgAccess, site.listSites);
 authenticated.get("/org/:orgId/site/:niceId", verifyOrgAccess, site.getSite);
 
+authenticated.get("/org/:orgId/pickSiteDefaults", verifyOrgAccess, site.pickSiteDefaults);
 authenticated.get("/site/:siteId", verifySiteAccess, site.getSite);
 authenticated.get("/site/:siteId/roles", verifySiteAccess, site.listSiteRoles);
 authenticated.post("/site/:siteId", verifySiteAccess, site.updateSite);
 authenticated.delete("/site/:siteId", verifySiteAccess, site.deleteSite);
-authenticated.delete("/site/pickSiteDefaults", site.pickSiteDefaults);
 
 authenticated.put(
     "/org/:orgId/site/:siteId/resource",

+ 4 - 2
server/routers/site/pickSiteDefaults.ts

@@ -66,8 +66,10 @@ export async function pickSiteDefaults(
             .where(eq(sites.exitNodeId, exitNode.exitNodeId));
 
         // TODO: we need to lock this subnet for some time so someone else does not take it
-        const subnets = sitesQuery.map((site) => site.subnet);
-        const newSubnet = findNextAvailableCidr(subnets, 28, exitNode.address);
+        let subnets = sitesQuery.map((site) => site.subnet);
+        // exclude the exit node address by replacing after the / with a /28
+        subnets.push(exitNode.address.replace(/\/\d+$/, "/29"));
+        const newSubnet = findNextAvailableCidr(subnets, 29, exitNode.address);
         if (!newSubnet) {
             return next(
                 createHttpError(

+ 3 - 2
src/app/[orgId]/sites/[niceId]/components/CreateSite.tsx

@@ -76,7 +76,7 @@ export function CreateSiteForm() {
             setIsLoading(false);
 
             api
-            .get(`/site/pickSiteDefaults`)
+            .get(`/org/${orgId}/pickSiteDefaults`)
             .catch((e) => {
                 toast({
                     title: "Error creating site..."
@@ -93,7 +93,8 @@ export function CreateSiteForm() {
         const res = await api
             .put(`/org/${orgId}/site/`, {
                 name: data.name,
-                // subdomain: data.subdomain,
+                subnet: siteDefaults?.subnet,
+                exitNodeId: siteDefaults?.exitNodeId,
                 pubKey: keypair?.publicKey,
             })
             .catch((e) => {