Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

tresni/dnspython-dnscrypt

Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
11 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

dnspython-dnscrypt

This library is designed to make using DNSCrypt in Python easy and compatible with dnspython. It provides a dns.resolver.Resolver-style interface which mixes-in the dns.query.udp and dns.query.tcp functions.

>>> import dnscrypt
>>> r = dnscrypt.Resolver('208.67.222.222', '2.dnscrypt-cert.opendns.com',
... 'B735:1140:206F:225D:3E2B:D822:D7FD:691E:A1C3:3CC8:D666:8D0C:BE04:BFAB:CA43:FB79',
... port=53, timeout=5)
>>> print r.query('www.google.com')
<dns.resolver.Answer object at 0x103b6f450>
>>> import dns.message
>>> r.udp(dns.message.make_query('google.com', 'A'))
<DNS message, ID 16075>

Class Methods

__init__(self, address, provider_name, provider_pk, private_key=None, port=53, timeout=5)

address
The IP address of the DNSCrypt resolver
port
The port to use for communication with the DNSCrypt resolver
provider_name
The provider name for the DNSCrypt resolver. Takes the format <version>.dnscrypt-cert.<zone>.
provider_pk
The provider's hex-encoded public key or DNS hostname where to retreive the public key
private_key
A hex-encoded private key if you want to reuse a key you already have. Otherwise, a new key will be generated for each Resolver instance.
timeout
Timeout in seconds for DNS lookups

address, provider_name, and provider_pk are required. All other arguments are optional.

query(qname, rdtype=1, rdclass=1, tcp=False, source=None, raise_on_no_answer=True, source_port=0)

Analogous to dns.resolver.Resolver.query for dnspython.

tcp(self, query, timeout=None, af=None, source=None, source_port=0, one_rr_per_rrset=False)

Analogous to dns.query.tcp for dnspython. There is no where argument, but is otherwise identical in function/form.

udp(self, query, timeout=None, af=None, source=None, source_port=0, ignore_unexpected=False, one_rr_per_rrset=False)

Analogous to dns.query.udp for dnspython. There is no where argument, but is otherwise identical in function/form.

Differences from dnspython

The biggest thing is that this is a very basic implementation of dns.resolver.Resolver. While it's designed to look/feel the same, it is not a drop in replacement. (e.g. I did not implement the use_tsig/use_edns/set_flags functions, instead use dns.message.Message and dnscrypt.resolver.tcp or dnscrypt.resolver.udp.)

About

DNSCrypt library for use with dnspython

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.