码桶

发现社区成员的开源项目

dns_batch.js1 KB
import { logAudit } from '../../_audit.js';

export async function onRequestPost(context) {
    const { cfHeaders } = context.data;
    const { zoneId } = context.params;
    const body = await context.request.json();

    const response = await fetch(`https://api.cloudflare.com/client/v4/zones/${zoneId}/dns_records/batch`, {
        method: 'POST',
        headers: {
            ...cfHeaders,
            'Content-Type': 'application/json'
        },
        body: JSON.stringify(body)
    });

    const data = await response.json();
    if (data.success) {
        const username = context.data.user?.username || 'client';
        const deleteCount = body.deletes?.length || 0;
        const createCount = body.posts?.length || 0;
        await logAudit(context.env.CF_DNS_KV, username, 'dns.batch', `Batch: ${createCount} created, ${deleteCount} deleted (zone: ${zoneId})`);
    }
    return new Response(JSON.stringify(data), {
        status: response.status,
        headers: { 'Content-Type': 'application/json' }
    });
}