[go: nahoru, domu]

Skip to content

Commit

Permalink
Merge pull request #225 from mzpqnxow/jp-domain
Browse files Browse the repository at this point in the history
Fix 153, .jp domains
  • Loading branch information
richardpenman committed Jun 10, 2024
2 parents 4a20a0e + 85db6e5 commit 5958d0d
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 17 deletions.
51 changes: 34 additions & 17 deletions whois/parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -944,23 +944,40 @@ def __init__(self, domain, text):


class WhoisJp(WhoisEntry):
"""Whois parser for .jp domains"""

regex = {
"domain_name": r".*\[Domain Name\]\s*(.+)",
"registrant_org": r".*\[(?:Organization|Registrant)\](.+)",
"creation_date": r"\[(?:Registered Date|Created on|登録年月日)\]\s*(.+)",
"expiration_date": r"\[(?:Expires on|有効期限)\]\s*(.+)",
"name_servers": r".*\[Name Server\]\s*(.+)", # list of name servers
"updated_date": r"\[(?:Last Updated|最終更新)?\]\s?(.+)",
"status": r"\[(?:State|Status|状態)\]\s*(.+)", # list of statuses
}

def __init__(self, domain, text):
if "No match!!" in text:
raise PywhoisError(text)
else:
WhoisEntry.__init__(self, domain, text, self.regex)
"""Parser for .jp domains
For testing, try *both* of:
nintendo.jp
nintendo.co.jp
"""
not_found = "No match!!"
regex = {
"domain_name": r"^(?:a\. )?\[Domain Name\]\s*(.+)",
"registrant_org": r"^(?:g\. )?\[(?:Organization|Registrant)\](.+)",
# 'creation_date': r'\[(?:Registered Date|Created on)\]\s*(.+)',
"organization_type": r"^(?:l\. )?\[Organization Type\]\s*(.+)$",
"creation_date": r"\[(?:Created on)\]\s*(.+)",
"technical_contact_name": r"^(?:n. )?\[(?:Technical Contact)\]\s*(.+)",
"administrative_contact_name": r"^(?:m. )?(?:\[Administrative Contact\]\s*(.+)|Contact Information:\s+^\[Name\](.*))",
# These don't need the X. at the beginning, I just was too lazy to split the pattern off
"administrative_contact_email": r"^(?:X. )?(?:\[Administrative Contact\]\s*(?:.+)|Contact Information:\s+)(?:^\s*.*\s+)*(?:^\[Email\]\s*(.*))",
"administrative_contact_phone": r"^(?:X. )?(?:\[Administrative Contact\]\s*(?:.+)|Contact Information:\s+)(?:^\s*.*\s+)*(?:^\[Phone\]\s*(.*))",
"administrative_contact_fax": r"^(?:X. )?(?:\[Administrative Contact\]\s*(?:.+)|Contact Information:\s+)(?:^\s*.*\s+)*(?:^\[Fax\]\s*(.*))",
"administrative_contact_post_code": r"^(?:X. )?(?:\[Administrative Contact\]\s*(?:.+)|Contact Information:\s+)(?:^\s*.*\s+)*(?:^\[Postal code\]\s*(.*))",
"administrative_contact_postal_address": r"^(?:X. )?(?:\[Administrative Contact\]\s*(?:.+)|Contact Information:\s+)(?:^\s*.*\s+)*(?:^\[Postal Address\]\s*(.*))",
"expiration_date": r"\[Expires on\]\s*(.+)",
"name_servers": r"^(?:p\. )?\[Name Server\]\s*(.+)", # list
"updated_date": r"^\[Last Updated?\]\s?(.+)",
"signing_key": r"^(?:s\. )?\[Signing Key\](.+)$",
"status": r"\[(?:State|Status)\]\s*(.+)", # list
}

def __init__(self, domain: str, text: str):
if self.not_found in text:
raise PywhoisError(text)

super().__init__(domain, text, self.regex)


class WhoisAU(WhoisEntry):
Expand Down
2 changes: 2 additions & 0 deletions whois/whois.py
Original file line number Diff line number Diff line change
Expand Up @@ -210,6 +210,8 @@ def whois(self, query, hostname, flags, many_results=False, quiet=False):
query_bytes = "-T dn,ace -C UTF-8 " + query
elif hostname == NICClient.DK_HOST:
query_bytes = " --show-handles " + query
elif hostname.endswith(".jp"):
query_bytes = query + '/e'
elif hostname.endswith(NICClient.QNICHOST_TAIL) and many_results:
query_bytes = "=" + query
else:
Expand Down

0 comments on commit 5958d0d

Please sign in to comment.