delete bulk and export/import
Signed-off-by: ale <ale@manalejandro.com>
Este commit está contenido en:
26
app/api/domains/[domain]/bulk-delete/route.js
Archivo normal
26
app/api/domains/[domain]/bulk-delete/route.js
Archivo normal
@@ -0,0 +1,26 @@
|
||||
import { NextResponse } from 'next/server';
|
||||
import ovhService from '@/lib/ovh-service';
|
||||
|
||||
export async function POST(request, { params }) {
|
||||
try {
|
||||
const { domain } = await params;
|
||||
const { recordIds } = await request.json();
|
||||
|
||||
if (!recordIds || recordIds.length === 0) {
|
||||
return NextResponse.json(
|
||||
{ success: false, error: 'Record IDs are required' },
|
||||
{ status: 400 }
|
||||
);
|
||||
}
|
||||
|
||||
const results = await ovhService.bulkDeleteRecords(domain, recordIds);
|
||||
|
||||
return NextResponse.json({ success: true, results });
|
||||
} catch (error) {
|
||||
console.error('Error bulk deleting DNS records:', error);
|
||||
return NextResponse.json(
|
||||
{ success: false, error: error.message },
|
||||
{ status: 500 }
|
||||
);
|
||||
}
|
||||
}
|
||||
27
app/api/domains/[domain]/export/route.js
Archivo normal
27
app/api/domains/[domain]/export/route.js
Archivo normal
@@ -0,0 +1,27 @@
|
||||
import { NextResponse } from 'next/server';
|
||||
import ovhService from '@/lib/ovh-service';
|
||||
|
||||
export async function GET(request, { params }) {
|
||||
try {
|
||||
const { domain } = await params;
|
||||
|
||||
// Get all records
|
||||
const records = await ovhService.getDNSRecords(domain);
|
||||
|
||||
// Export to BIND9 format
|
||||
const zoneFile = ovhService.exportToBind9(domain, records);
|
||||
|
||||
return new NextResponse(zoneFile, {
|
||||
headers: {
|
||||
'Content-Type': 'text/plain',
|
||||
'Content-Disposition': `attachment; filename="${domain}.zone"`
|
||||
}
|
||||
});
|
||||
} catch (error) {
|
||||
console.error('Error exporting DNS zone:', error);
|
||||
return NextResponse.json(
|
||||
{ success: false, error: error.message },
|
||||
{ status: 500 }
|
||||
);
|
||||
}
|
||||
}
|
||||
37
app/api/domains/[domain]/import/route.js
Archivo normal
37
app/api/domains/[domain]/import/route.js
Archivo normal
@@ -0,0 +1,37 @@
|
||||
import { NextResponse } from 'next/server';
|
||||
import ovhService from '@/lib/ovh-service';
|
||||
|
||||
export async function POST(request, { params }) {
|
||||
try {
|
||||
const { domain } = await params;
|
||||
const { zoneContent, replaceAll = false } = await request.json();
|
||||
|
||||
if (!zoneContent) {
|
||||
return NextResponse.json(
|
||||
{ success: false, error: 'Zone content is required' },
|
||||
{ status: 400 }
|
||||
);
|
||||
}
|
||||
|
||||
const results = await ovhService.importFromBind9(domain, zoneContent, replaceAll);
|
||||
|
||||
const successCount = results.filter(r => r.success).length;
|
||||
const failureCount = results.filter(r => !r.success).length;
|
||||
|
||||
return NextResponse.json({
|
||||
success: true,
|
||||
results,
|
||||
summary: {
|
||||
total: results.length,
|
||||
success: successCount,
|
||||
failed: failureCount
|
||||
}
|
||||
});
|
||||
} catch (error) {
|
||||
console.error('Error importing DNS zone:', error);
|
||||
return NextResponse.json(
|
||||
{ success: false, error: error.message },
|
||||
{ status: 500 }
|
||||
);
|
||||
}
|
||||
}
|
||||
Referencia en una nueva incidencia
Block a user