Compare commits
5 Commits
Author | SHA1 | Date | |
---|---|---|---|
d0527affc2 | |||
f2ebaf74d9 | |||
b6d8c36f3e | |||
587600d571 | |||
17f293ca4e |
2
package-lock.json
generated
2
package-lock.json
generated
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@pushrocks/smartdns",
|
||||
"version": "3.0.5",
|
||||
"version": "3.0.8",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@pushrocks/smartdns",
|
||||
"version": "3.0.5",
|
||||
"version": "3.0.8",
|
||||
"private": false,
|
||||
"description": "smart dns methods written in TypeScript",
|
||||
"main": "dist/index.js",
|
||||
|
@ -5,7 +5,7 @@ import * as smartdns from '../ts/index';
|
||||
let testDnsly: smartdns.Smartdns;
|
||||
|
||||
tap.test('should create an instance of Dnsly', async () => {
|
||||
testDnsly = new smartdns.Smartdns('google');
|
||||
testDnsly = new smartdns.Smartdns('cloudflare');
|
||||
expect(testDnsly).to.be.instanceOf(smartdns.Smartdns);
|
||||
});
|
||||
|
||||
|
22
ts/index.ts
22
ts/index.ts
@ -1,6 +1,6 @@
|
||||
import * as plugins from './dnsly.plugins';
|
||||
|
||||
export type TDnsProvider = 'google';
|
||||
export type TDnsProvider = 'google' | 'cloudflare';
|
||||
export type TDnsRecordType =
|
||||
| 'A'
|
||||
| 'AAAA'
|
||||
@ -29,7 +29,7 @@ export class Smartdns {
|
||||
/**
|
||||
* constructor for class dnsly
|
||||
*/
|
||||
constructor(dnsProviderArg: TDnsProvider = 'google') {
|
||||
constructor(dnsProviderArg: TDnsProvider = 'cloudflare') {
|
||||
this._setDnsProvider(dnsProviderArg);
|
||||
}
|
||||
|
||||
@ -43,23 +43,25 @@ export class Smartdns {
|
||||
async checkUntilAvailable(
|
||||
recordNameArg: string,
|
||||
recordTypeArg: TDnsRecordType,
|
||||
expectedValue: string
|
||||
expectedValue: string,
|
||||
cyclesArg: number = 50,
|
||||
intervalArg: number = 500
|
||||
) {
|
||||
let cycleArg = 0;
|
||||
let runCycles = 0;
|
||||
let doCheck = async () => {
|
||||
if (cycleArg < 30) {
|
||||
cycleArg++;
|
||||
if (runCycles < cyclesArg) {
|
||||
runCycles++;
|
||||
try {
|
||||
let myRecordArray = await this.getRecord(recordNameArg, recordTypeArg);
|
||||
let myRecord = myRecordArray[0].value[0];
|
||||
if (myRecord === expectedValue) {
|
||||
return true;
|
||||
} else {
|
||||
await plugins.smartdelay.delayFor(2000);
|
||||
await plugins.smartdelay.delayFor(intervalArg);
|
||||
return await doCheck();
|
||||
}
|
||||
} catch (err) {
|
||||
await plugins.smartdelay.delayFor(2000);
|
||||
await plugins.smartdelay.delayFor(intervalArg);
|
||||
return await doCheck();
|
||||
}
|
||||
} else {
|
||||
@ -152,6 +154,10 @@ export class Smartdns {
|
||||
this.dnsServerIp = '8.8.8.8';
|
||||
this.dnsServerPort = 53;
|
||||
plugins.dns.setServers(['8.8.8.8', '8.8.4.4']);
|
||||
} else if (dnsProvider === 'cloudflare') {
|
||||
this.dnsServerIp = '1.1.1.1';
|
||||
this.dnsServerPort = 53;
|
||||
plugins.dns.setServers(['1.1.1.1', '1.0.0.1']);
|
||||
} else {
|
||||
throw new Error('unknown dns provider');
|
||||
}
|
||||
|
Reference in New Issue
Block a user