浏览代码

Feat: whois detect run against domain status as well [skip ci]

SukkaW 1 年之前
父节点
当前提交
4f0604413f
共有 2 个文件被更改,包括 40 次插入2 次删除
  1. 20 2
      Build/lib/is-domain-alive.test.ts
  2. 20 0
      Build/lib/is-domain-alive.ts

+ 20 - 2
Build/lib/is-domain-alive.test.ts

@@ -38,6 +38,24 @@ describe('whoisExists', () => {
       }
     })).toBe('No entries found for the selected source(s).');
   });
+
+  it('nosuchpool.cl', async () => {
+    expect(noWhois({
+      'whois.nic.cl': {
+        'Domain Status': [],
+        'Name Server': [],
+        'nosuchpool.cl': 'no entries found.',
+        text: [
+          '%%',
+          '%% This is the NIC Chile Whois server (whois.nic.cl).',
+          '%%',
+          '%% Rights restricted by copyright.',
+          '%% See https://www.nic.cl/normativa/politica-publicacion-de-datos-cl.pdf',
+          '%%'
+        ]
+      }
+    })).toBe('nosuchpool.cl: no entries found.');
+  });
 });
 
 describe('isDomainAlive', function () {
@@ -75,8 +93,8 @@ describe('isDomainAlive', function () {
   //   expect((await isDomainAlive('.tayfundogdas.me', true))[1]).toEqual(true);
   // });
 
-  it('9s6q.cn', async () => {
+  it('nosuchpool.cl', async () => {
     process.env.DEBUG = 'true';
-    expect((await isDomainAlive('.9s6q.cn', true))[1]).toEqual(false);
+    expect((await isDomainAlive('.nosuchpool.cl', true))[1]).toEqual(false);
   });
 });

+ 20 - 0
Build/lib/is-domain-alive.ts

@@ -282,6 +282,26 @@ export function noWhois(whois: whoiser.WhoisSearchResult): null | string {
         continue;
       }
 
+      if (key === 'Domain Status') {
+        if (Array.isArray(whois[key])) {
+          for (const status of whois[key]) {
+            if (whoisNotFoundKeywordTest(status.toLowerCase())) {
+              return key + ': ' + status;
+            }
+          }
+        }
+
+        continue;
+      }
+
+      if (typeof whois[key] === 'string' && whois[key]) {
+        if (whoisNotFoundKeywordTest(whois[key].toLowerCase())) {
+          return key + ': ' + whois[key];
+        }
+
+        continue;
+      }
+
       if (typeof whois[key] === 'object' && !Array.isArray(whois[key])) {
         const tmp = noWhois(whois[key]);
         if (tmp) {