Merge pull request 'fix(actions): use plesk bin site for suspend/unsuspend domain state' (#20) from fix/domain-actions-use-site-cli into master
Reviewed-on: http://gitea.lan:3000/robbond/pleskSaas/pulls/20
This commit was merged in pull request #20.
This commit is contained in:
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user