Cloudflare DNSRecord CRUD NodeJS
Installation
npm install @neferett/cloudflaredns
Cloudflare.load({
cloudflareToken: token,
});
How to use
DNS Records:
Creating a new record cloudflare record with a Zone ID
DNSRecords.createRecord(
zoneId,
{
content: "127.0.0.1", name: "test.example.com", ttl: 120, type: EnumRecordType.A
})
.then((record: IRecord) => ...);
Creating without ZoneID but only domain name
Zone.getZoneByDomainName('example.com').then((zone: IZone | undefined) => {
if (zone === undefined) return;
return DNSRecords.createRecord(
zone.id,
{
content: "127.0.0.1", name: "test.example.com", ttl: 120, type: EnumRecordType.A
})
.then((record: IRecord) => ...);
});
Same as Creating processus you can do the same with the following functions:
DNSRecords.updateRecord(
zoneId,
{
content: "127.0.0.2", name: "test.example.com", ttl: 120, type: EnumRecordType.A
})
.then((record: IRecord) => ...);
// Delete method only takes id as parameter
DNSRecords.deleteRecord(
zoneId, {id: recordID}
)
.then((record: IRecord) => ...);
You can read your records by Name or IDs using the following methods:
DNSRecords.getRecordByName(zoneId, 'test.example.com').then((record: IRecord | undefined) => ...)
DNSRecords.getRecordById(zoneId, '45678987654').then((record: IRecord | undefined) => ...)
You can read all your records:
DNSRecords.listRecords(zoneId).then((records:IRecord[]) => ...)
Zones:
To avoid you to always have Zone ID you can retrieve them dynamically:
Zone.getZoneByDomainName('example.com').then((zone: IZone | undefined) => ...)
You can also read them all:
Zone.listZones().then((zones: IZone[]) => ...)
Other Available Methods
// Getting all records linked to a zone
Zone.getLinkedRecords(recordId).then((record: IRecord[]) => ...)
// Dynamic action when using website form with string as method name
recordActionByIDs(action: 'updateRecord' | 'deleteRecord' | 'createRecord' , zoneId: string, record: IRecordBody | {id: string});
License
Licensed under MIT