Cloudflare-DDNS-Sync is a simple module that updates Cloudflare DNS records.
For a more detailed overview, have a look at the Documentation
You may also have a look at the official CLI version of Cloudflare-DDNS-Sync.
- Node
- Cloudflare Account
To install Cloudflare-DDNS-Sync simply run:
npm install cloudflare-ddns-sync
in your project folder.
Hint: If a record is not existing, CDS will automatically create it when syncing.
const Cddnss = require('cloudflare-ddns-sync').default;
// either email and key or token
const cddnss = new Cddnss({
email: 'your@email.com',
key: '<your-cloudflare-api-key>',
token: '<your-cloudflare-api-token>',
});
const records = [
{
name: 'test-1.domain.com',
type: 'A', // optional
proxied: true, // optional
ttl: 1, // optional
priority: 0, // optional
content: '1.2.3.4', // optional
},
{
name: 'test-2.domain.com',
},
];
cddnss.syncRecords(records).then((result) => {
console.log(result);
});
import Cddnss, {Record, RecordData} from 'cloudflare-ddns-sync';
// either email and key or token
const cddnss = new Cddnss({
email: 'your@email.com',
key: '<your-cloudflare-api-key>',
token: '<your-cloudflare-api-token>',
});
const records: Array<Record> = [
{
name: 'test-1.yourdomain.com',
type: 'A', // optional
proxied: true, // optional
ttl: 1, // optional
priority: 0, // optional
content: '1.2.3.4', // optional
},
{
name: 'test-2.yourdomain.com',
},
];
cddnss.syncRecords(records).then((result: Array<RecordData>) => {
console.log(result);
});
Cron expressions have the following syntax:
* * * * * *
┬ ┬ ┬ ┬ ┬ ┬
│ │ │ │ │ │
│ │ │ │ │ └──── weekday (0-7, sunday is 0 or 7)
│ │ │ │ └────── month (1-12)
│ │ │ └──────── day (1-31)
│ │ └────────── hour (0-23)
│ └──────────── minute (0-59)
└────────────── second (0-59) [optional]
- getIp(): Promise<string>
- getIpv6(): Promise<string>
- getRecordDataForDomain(domain: string): Promise<Array<RecordData>>
- getRecordDataForDomains(domains: Array<string>): Promise<DomainRecordList>
- getRecordDataForRecord(record: Record): Promise<RecordData>
- getRecordDataForRecords(records: Array<Record>): Promise<Array<RecordData>>
- removeRecord(recordName: string, recordType?: string): Promise<void>
- stopSyncOnIpChange(changeListenerId: string): void
- syncByCronTime(cronExpression: string, records: Array<Record>, callback: MultiSyncCallback, ip?: string): ScheduledTask
- syncOnIpChange(records: Array<Record>, callback: multisynccallback): Promise<string>
- syncRecord(record: Record, ip?: string): Promise<RecordData>
- syncRecords(records: Array<Record>, ip?: string): Promise<Array<RecordData>>
For a more detailed view, have a look at the Documentation
- Go to Cloudflare
- Log In
- In the upper right corner: click on the user icon
- Go to "My Profile"
- In the "API Tokens"-Section: click on the "View"-Button of the Global Key
- Enter your password and fill the captcha
- Copy the API Key
In order to run the tests there are two ways to do so
- Open the
test-data.json
which can be found undersrc/tests/test-service/
- Configure the email, cloudflare api key and the domain
- Run
npm test
- Run
npm test -- --email="your@email.com" --key="your_cloudflare_api_key" --domain="yourdomain.com"