Compare commits

..

4 Commits

2 changed files with 40 additions and 15 deletions

View File

@@ -7,8 +7,6 @@ import { assertSameOrigin } from "@/lib/api/security";
import { import {
parseSubscriptionStatusDetailsFromInfo, parseSubscriptionStatusDetailsFromInfo,
pleskCliCall, pleskCliCall,
suspendPleskSubscription,
unsuspendPleskSubscription,
} from "@/lib/plesk/client"; } from "@/lib/plesk/client";
import { createSupabaseRouteClient } from "@/lib/supabase/route"; import { createSupabaseRouteClient } from "@/lib/supabase/route";
@@ -101,17 +99,27 @@ export async function POST(
encryptedSecret: instance.encrypted_secret, encryptedSecret: instance.encrypted_secret,
} as const; } as const;
if (action === "suspend") { const domainIdentifier = subscription.plesk_subscription_id;
await suspendPleskSubscription( const siteArgs =
connection, action === "suspend"
subscription.plesk_subscription_id, ? ["--suspend", domainIdentifier]
); : ["--on", domainIdentifier];
} else {
await unsuspendPleskSubscription( console.info("[domain_action] site CLI", {
connection, action,
subscription.plesk_subscription_id, command: "site",
); args: siteArgs,
} domain_id: domain.id,
subscription_id: subscription.id,
});
const siteResult = await pleskCliCall(connection, "site", siteArgs);
console.info("[domain_action] site CLI result", {
code: siteResult.code,
stdout: siteResult.stdout,
stderr: siteResult.stderr,
});
const fallbackStatus = action === "suspend" ? "suspended" : "active"; const fallbackStatus = action === "suspend" ? "suspended" : "active";
let refreshedStatus = fallbackStatus; let refreshedStatus = fallbackStatus;
@@ -121,13 +129,30 @@ export async function POST(
try { try {
const infoResult = await pleskCliCall(connection, "subscription", [ const infoResult = await pleskCliCall(connection, "subscription", [
"--info", "--info",
subscription.plesk_subscription_id, domainIdentifier,
]); ]);
console.info("[domain_action] subscription info result", {
code: infoResult.code,
stdout: infoResult.stdout,
stderr: infoResult.stderr,
});
const parsed = parseSubscriptionStatusDetailsFromInfo( const parsed = parseSubscriptionStatusDetailsFromInfo(
infoResult.stdout ?? "", infoResult.stdout ?? "",
); );
refreshedStatus = parsed.status; refreshedStatus = parsed.status;
refreshedStatusRaw = parsed.statusRaw; refreshedStatusRaw = parsed.statusRaw;
if (
action === "unsuspend" &&
refreshedStatus === "suspended" &&
(refreshedStatusRaw ?? "").toLowerCase().includes("subscriber")
) {
throw new Error(
"Domain remains suspended because its subscriber/customer account is suspended.",
);
}
} catch (refreshError) { } catch (refreshError) {
refreshErrorMessage = refreshErrorMessage =
refreshError instanceof Error refreshError instanceof Error

View File

@@ -289,7 +289,7 @@ export async function unsuspendPleskSubscription(
subscriptionName: string, subscriptionName: string,
) { ) {
return pleskCliCall(connection, "subscription", [ return pleskCliCall(connection, "subscription", [
"--webspace-on", "--unsuspend",
subscriptionName, subscriptionName,
]); ]);
} }