init
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
"use server";
|
||||
|
||||
import { revalidatePath } from "next/cache";
|
||||
|
||||
import { requireAdminAccess } from "@/lib/session";
|
||||
import { createNode, deleteNode, updateNode } from "@/lib/store";
|
||||
|
||||
function boolFromForm(value: FormDataEntryValue | null) {
|
||||
return value === "on";
|
||||
}
|
||||
|
||||
export async function createNodeAction(formData: FormData) {
|
||||
await requireAdminAccess();
|
||||
await createNode({
|
||||
slug: String(formData.get("slug") ?? "").trim(),
|
||||
name: String(formData.get("name") ?? "").trim(),
|
||||
authToken: String(formData.get("auth_token") ?? "").trim() || null,
|
||||
hy2Listen: String(formData.get("hy2_listen") ?? "").trim() || "",
|
||||
serverHost: String(formData.get("server_host") ?? "").trim(),
|
||||
serverPort: Number(formData.get("server_port") ?? 443),
|
||||
clientName:
|
||||
String(formData.get("client_name") ?? "").trim() ||
|
||||
String(formData.get("name") ?? "").trim(),
|
||||
bandwidthUpMbps: Number(formData.get("bandwidth_up_mbps") ?? 30),
|
||||
bandwidthDownMbps: Number(formData.get("bandwidth_down_mbps") ?? 30),
|
||||
skipCertVerify: boolFromForm(formData.get("skip_cert_verify")),
|
||||
sni: String(formData.get("sni") ?? "").trim() || null,
|
||||
trafficStatsUrl: String(formData.get("traffic_stats_url") ?? "").trim(),
|
||||
trafficStatsListen:
|
||||
String(formData.get("traffic_stats_listen") ?? "").trim() || ":9999",
|
||||
trafficStatsSecret:
|
||||
String(formData.get("traffic_stats_secret") ?? "").trim(),
|
||||
enabled: boolFromForm(formData.get("enabled")),
|
||||
pollIntervalSeconds: Number(formData.get("poll_interval_seconds") ?? 15),
|
||||
});
|
||||
|
||||
revalidatePath("/admin/nodes");
|
||||
revalidatePath("/admin/dashboard");
|
||||
}
|
||||
|
||||
export async function updateNodeAction(formData: FormData) {
|
||||
await requireAdminAccess();
|
||||
await updateNode({
|
||||
id: Number(formData.get("id")),
|
||||
slug: String(formData.get("slug") ?? "").trim(),
|
||||
name: String(formData.get("name") ?? "").trim(),
|
||||
authToken: String(formData.get("auth_token") ?? "").trim(),
|
||||
hy2Listen: String(formData.get("hy2_listen") ?? "").trim() || "",
|
||||
serverHost: String(formData.get("server_host") ?? "").trim(),
|
||||
serverPort: Number(formData.get("server_port") ?? 443),
|
||||
clientName:
|
||||
String(formData.get("client_name") ?? "").trim() ||
|
||||
String(formData.get("name") ?? "").trim(),
|
||||
bandwidthUpMbps: Number(formData.get("bandwidth_up_mbps") ?? 30),
|
||||
bandwidthDownMbps: Number(formData.get("bandwidth_down_mbps") ?? 30),
|
||||
skipCertVerify: boolFromForm(formData.get("skip_cert_verify")),
|
||||
sni: String(formData.get("sni") ?? "").trim() || null,
|
||||
trafficStatsUrl: String(formData.get("traffic_stats_url") ?? "").trim(),
|
||||
trafficStatsListen:
|
||||
String(formData.get("traffic_stats_listen") ?? "").trim() || ":9999",
|
||||
trafficStatsSecret: String(formData.get("traffic_stats_secret") ?? "").trim(),
|
||||
enabled: boolFromForm(formData.get("enabled")),
|
||||
pollIntervalSeconds: Number(formData.get("poll_interval_seconds") ?? 15),
|
||||
});
|
||||
|
||||
revalidatePath("/admin/nodes");
|
||||
revalidatePath("/admin/dashboard");
|
||||
}
|
||||
|
||||
export async function deleteNodeAction(formData: FormData) {
|
||||
await requireAdminAccess();
|
||||
await deleteNode(Number(formData.get("id")));
|
||||
revalidatePath("/admin/nodes");
|
||||
revalidatePath("/admin/dashboard");
|
||||
}
|
||||
Reference in New Issue
Block a user