mirror of
https://github.com/signalwire/freeswitch.git
synced 2025-08-13 17:38:59 +00:00
FS-3110 --comment-only phase 2
This commit is contained in:
@@ -1,70 +0,0 @@
|
||||
# Makefile for Sphinx documentation
|
||||
#
|
||||
|
||||
# You can set these variables from the command line.
|
||||
SPHINXOPTS =
|
||||
SPHINXBUILD = sphinx-build
|
||||
PAPER =
|
||||
|
||||
# Internal variables.
|
||||
PAPEROPT_a4 = -D latex_paper_size=a4
|
||||
PAPEROPT_letter = -D latex_paper_size=letter
|
||||
ALLSPHINXOPTS = -d build/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source
|
||||
|
||||
.PHONY: help clean html web pickle htmlhelp latex changes linkcheck
|
||||
|
||||
help:
|
||||
@echo "Please use \`make <target>' where <target> is one of"
|
||||
@echo " html to make standalone HTML files"
|
||||
@echo " pickle to make pickle files (usable by e.g. sphinx-web)"
|
||||
@echo " htmlhelp to make HTML files and a HTML help project"
|
||||
@echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
|
||||
@echo " changes to make an overview over all changed/added/deprecated items"
|
||||
@echo " linkcheck to check all external links for integrity"
|
||||
|
||||
clean:
|
||||
-rm -rf build/*
|
||||
|
||||
html:
|
||||
mkdir -p build/html build/doctrees
|
||||
LD_LIBRARY_PATH=../../../.libs $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) build/html
|
||||
@echo
|
||||
@echo "Build finished. The HTML pages are in build/html."
|
||||
|
||||
pickle:
|
||||
mkdir -p build/pickle build/doctrees
|
||||
LD_LIBRARY_PATH=../../../.libs $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) build/pickle
|
||||
@echo
|
||||
@echo "Build finished; now you can process the pickle files or run"
|
||||
@echo " sphinx-web build/pickle"
|
||||
@echo "to start the sphinx-web server."
|
||||
|
||||
web: pickle
|
||||
|
||||
htmlhelp:
|
||||
mkdir -p build/htmlhelp build/doctrees
|
||||
LD_LIBRARY_PATH=../../../.libs $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) build/htmlhelp
|
||||
@echo
|
||||
@echo "Build finished; now you can run HTML Help Workshop with the" \
|
||||
".hhp project file in build/htmlhelp."
|
||||
|
||||
latex:
|
||||
mkdir -p build/latex build/doctrees
|
||||
LD_LIBRARY_PATH=../../../.libs $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) build/latex
|
||||
@echo
|
||||
@echo "Build finished; the LaTeX files are in build/latex."
|
||||
@echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \
|
||||
"run these through (pdf)latex."
|
||||
|
||||
changes:
|
||||
mkdir -p build/changes build/doctrees
|
||||
LD_LIBRARY_PATH=../../../.libs $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) build/changes
|
||||
@echo
|
||||
@echo "The overview file is in build/changes."
|
||||
|
||||
linkcheck:
|
||||
mkdir -p build/linkcheck build/doctrees
|
||||
LD_LIBRARY_PATH=../../../.libs $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) build/linkcheck
|
||||
@echo
|
||||
@echo "Link check complete; look for any errors in the above output " \
|
||||
"or in build/linkcheck/output.txt."
|
@@ -1,180 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Unbound documentation build configuration file, created by
|
||||
# sphinx-quickstart on Fri Jan 2 19:14:13 2009.
|
||||
#
|
||||
# This file is execfile()d with the current directory set to its containing dir.
|
||||
#
|
||||
# The contents of this file are pickled, so don't put values in the namespace
|
||||
# that aren't pickleable (module imports are okay, they're removed automatically).
|
||||
#
|
||||
# All configuration values have a default value; values that are commented out
|
||||
# serve to show the default value.
|
||||
|
||||
import sys, os
|
||||
|
||||
# If your extensions are in another directory, add it here. If the directory
|
||||
# is relative to the documentation root, use os.path.abspath to make it
|
||||
# absolute, like shown here.
|
||||
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__),'../../')))
|
||||
#print sys.path
|
||||
|
||||
# General configuration
|
||||
# ---------------------
|
||||
|
||||
# Add any Sphinx extension module names here, as strings. They can be extensions
|
||||
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
|
||||
extensions = ['sphinx.ext.autodoc', 'sphinx.ext.doctest']
|
||||
|
||||
# Add any paths that contain templates here, relative to this directory.
|
||||
templates_path = ['_templates']
|
||||
|
||||
# The suffix of source filenames.
|
||||
source_suffix = '.rst'
|
||||
|
||||
# The master toctree document.
|
||||
master_doc = 'index'
|
||||
|
||||
# General substitutions.
|
||||
project = 'pyLDNS'
|
||||
copyright = '2009, Karel Slany, Zdenek Vasicek'
|
||||
|
||||
# The default replacements for |version| and |release|, also used in various
|
||||
# other places throughout the built documents.
|
||||
#
|
||||
# The short X.Y version.
|
||||
version = '1.0'
|
||||
# The full version, including alpha/beta/rc tags.
|
||||
release = '1.0.0'
|
||||
|
||||
# There are two options for replacing |today|: either, you set today to some
|
||||
# non-false value, then it is used:
|
||||
#today = ''
|
||||
# Else, today_fmt is used as the format for a strftime call.
|
||||
today_fmt = '%B %d, %Y'
|
||||
|
||||
# List of documents that shouldn't be included in the build.
|
||||
#unused_docs = []
|
||||
|
||||
# List of directories, relative to source directories, that shouldn't be searched
|
||||
# for source files.
|
||||
#exclude_dirs = []
|
||||
|
||||
# The reST default role (used for this markup: `text`) to use for all documents.
|
||||
#default_role = None
|
||||
|
||||
# If true, '()' will be appended to :func: etc. cross-reference text.
|
||||
#add_function_parentheses = True
|
||||
|
||||
# If true, the current module name will be prepended to all description
|
||||
# unit titles (such as .. function::).
|
||||
#add_module_names = True
|
||||
|
||||
# If true, sectionauthor and moduleauthor directives will be shown in the
|
||||
# output. They are ignored by default.
|
||||
#show_authors = False
|
||||
|
||||
# The name of the Pygments (syntax highlighting) style to use.
|
||||
pygments_style = 'sphinx'
|
||||
|
||||
|
||||
# Options for HTML output
|
||||
# -----------------------
|
||||
|
||||
# The style sheet to use for HTML and HTML Help pages. A file of that name
|
||||
# must exist either in Sphinx' static/ path, or in one of the custom paths
|
||||
# given in html_static_path.
|
||||
html_style = 'default.css'
|
||||
|
||||
# The name for this set of Sphinx documents. If None, it defaults to
|
||||
# "<project> v<release> documentation".
|
||||
#html_title = None
|
||||
|
||||
# A shorter title for the navigation bar. Default is the same as html_title.
|
||||
#html_short_title = None
|
||||
|
||||
# The name of an image file (within the static path) to place at the top of
|
||||
# the sidebar.
|
||||
#html_logo = None
|
||||
|
||||
# The name of an image file (within the static path) to use as favicon of the
|
||||
# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
|
||||
# pixels large.
|
||||
#html_favicon = None
|
||||
|
||||
# Add any paths that contain custom static files (such as style sheets) here,
|
||||
# relative to this directory. They are copied after the builtin static files,
|
||||
# so a file named "default.css" will overwrite the builtin "default.css".
|
||||
html_static_path = ['_static']
|
||||
|
||||
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
|
||||
# using the given strftime format.
|
||||
html_last_updated_fmt = '%b %d, %Y'
|
||||
|
||||
# If true, SmartyPants will be used to convert quotes and dashes to
|
||||
# typographically correct entities.
|
||||
#html_use_smartypants = True
|
||||
|
||||
# Custom sidebar templates, maps document names to template names.
|
||||
#html_sidebars = {}
|
||||
|
||||
# Additional templates that should be rendered to pages, maps page names to
|
||||
# template names.
|
||||
#html_additional_pages = {}
|
||||
|
||||
# If false, no module index is generated.
|
||||
html_use_modindex = False
|
||||
|
||||
# If false, no index is generated.
|
||||
#html_use_index = True
|
||||
|
||||
# If true, the index is split into individual pages for each letter.
|
||||
html_split_index = False
|
||||
|
||||
# If true, the reST sources are included in the HTML build as _sources/<name>.
|
||||
html_copy_source = False
|
||||
|
||||
# If true, an OpenSearch description file will be output, and all pages will
|
||||
# contain a <link> tag referring to it. The value of this option must be the
|
||||
# base URL from which the finished HTML is served.
|
||||
#html_use_opensearch = ''
|
||||
|
||||
# If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml").
|
||||
#html_file_suffix = ''
|
||||
|
||||
# Output file base name for HTML help builder.
|
||||
htmlhelp_basename = 'ldnsdoc'
|
||||
|
||||
|
||||
# Options for LaTeX output
|
||||
# ------------------------
|
||||
|
||||
# The paper size ('letter' or 'a4').
|
||||
#latex_paper_size = 'letter'
|
||||
|
||||
# The font size ('10pt', '11pt' or '12pt').
|
||||
#latex_font_size = '10pt'
|
||||
|
||||
# Grouping the document tree into LaTeX files. List of tuples
|
||||
# (source start file, target name, title, author, document class [howto/manual]).
|
||||
latex_documents = [
|
||||
('index', 'ldns-doc.tex', 'LDNS Documentation',
|
||||
'Karel Slany, Zdenek Vasicek', 'manual'),
|
||||
]
|
||||
|
||||
# The name of an image file (relative to this directory) to place at the top of
|
||||
# the title page.
|
||||
#latex_logo = None
|
||||
|
||||
# For "manual" documents, if this is true, then toplevel headings are parts,
|
||||
# not chapters.
|
||||
#latex_use_parts = False
|
||||
|
||||
# Additional stuff for the LaTeX preamble.
|
||||
#latex_preamble = ''
|
||||
|
||||
# Documents to append as an appendix to all manuals.
|
||||
#latex_appendices = []
|
||||
|
||||
# If false, no module index is generated.
|
||||
#latex_use_modindex = True
|
@@ -1,68 +0,0 @@
|
||||
Resolving the MX records
|
||||
==============================
|
||||
|
||||
This basic example shows how to create a resolver which asks for MX records which contain the information about mail servers.
|
||||
|
||||
::
|
||||
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# MX is a small program that prints out the mx records for a particular domain
|
||||
#
|
||||
import ldns
|
||||
|
||||
resolver = ldns.ldns_resolver.new_frm_file("/etc/resolv.conf")
|
||||
|
||||
dname = ldns.ldns_dname("nic.cz")
|
||||
|
||||
pkt = resolver.query(dname, ldns.LDNS_RR_TYPE_MX, ldns.LDNS_RR_CLASS_IN, ldns.LDNS_RD)
|
||||
if (pkt):
|
||||
mx = pkt.rr_list_by_type(ldns.LDNS_RR_TYPE_MX, ldns.LDNS_SECTION_ANSWER)
|
||||
if (mx):
|
||||
mx.sort()
|
||||
print mx
|
||||
|
||||
Resolving step by step
|
||||
------------------------
|
||||
|
||||
First of all we import :mod:`ldns` extension module which make LDNS functions and classes accessible::
|
||||
|
||||
import ldns
|
||||
|
||||
If importing fails, it means that Python cannot find the module or ldns library.
|
||||
|
||||
Then we create the resolver by :meth:`ldns.ldns_resolver.new_frm_file` constructor ::
|
||||
|
||||
resolver = ldns.ldns_resolver.new_frm_file("/etc/resolv.conf")
|
||||
|
||||
and domain name variable dname::
|
||||
|
||||
dname = ldns.ldns_dname("nic.cz")
|
||||
|
||||
To create a resolver you may also use::
|
||||
|
||||
resolver = ldns.ldns_resolver.new_frm_file(None)
|
||||
|
||||
which behaves in the same manner as the command above.
|
||||
|
||||
In the third step we tell the resolver to query for our domain, type MX, of class IN::
|
||||
|
||||
pkt = resolver.query(dname, ldns.LDNS_RR_TYPE_MX, ldns.LDNS_RR_CLASS_IN, ldns.LDNS_RD)
|
||||
|
||||
The function should return a packet if everything goes well and this packet will contain resource records we asked for.
|
||||
Note that there exists a simplier way. Instead of using a dname variable, we can use a string which will be automatically converted.
|
||||
::
|
||||
|
||||
pkt = resolver.query("fit.vutbr.cz", ldns.LDNS_RR_TYPE_MX, ldns.LDNS_RR_CLASS_IN, ldns.LDNS_RD)
|
||||
|
||||
Now, we test whether the resolver returns a packet and then get all RRs of type MX from the answer packet and store them in list mx::
|
||||
|
||||
if (pkt):
|
||||
mx = pkt.rr_list_by_type(ldns.LDNS_RR_TYPE_MX, ldns.LDNS_SECTION_ANSWER)
|
||||
|
||||
If this list is not empty, we sort and print the content to stdout::
|
||||
|
||||
if (mx):
|
||||
mx.sort()
|
||||
print mx
|
||||
|
@@ -1,45 +0,0 @@
|
||||
#!/usr/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
import ldns
|
||||
import sys
|
||||
|
||||
debug = True
|
||||
|
||||
# Check args
|
||||
argc = len(sys.argv)
|
||||
name = "www.nic.cz"
|
||||
if argc < 2:
|
||||
print "Usage:", sys.argv[0], "domain [resolver_addr]"
|
||||
sys.exit(1)
|
||||
else:
|
||||
name = sys.argv[1]
|
||||
|
||||
# Create resolver
|
||||
resolver = ldns.ldns_resolver.new_frm_file("/etc/resolv.conf")
|
||||
resolver.set_dnssec(True)
|
||||
|
||||
# Custom resolver
|
||||
if argc > 2:
|
||||
# Clear previous nameservers
|
||||
ns = resolver.pop_nameserver()
|
||||
while ns != None:
|
||||
ns = resolver.pop_nameserver()
|
||||
ip = ldns.ldns_rdf.new_frm_str(sys.argv[2], ldns.LDNS_RDF_TYPE_A)
|
||||
resolver.push_nameserver(ip)
|
||||
|
||||
# Resolve DNS name
|
||||
pkt = resolver.query(name, ldns.LDNS_RR_TYPE_A, ldns.LDNS_RR_CLASS_IN)
|
||||
if pkt and pkt.answer():
|
||||
|
||||
# Debug
|
||||
if debug:
|
||||
print "NS returned:", pkt.get_rcode(), "(AA: %d AD: %d)" % ( pkt.ad(), pkt.ad() )
|
||||
|
||||
# SERVFAIL indicated bogus name
|
||||
if pkt.get_rcode() is ldns.LDNS_RCODE_SERVFAIL:
|
||||
print name, "is bogus"
|
||||
|
||||
# Check AD (Authenticated) bit
|
||||
if pkt.get_rcode() is ldns.LDNS_RCODE_NOERROR:
|
||||
if pkt.ad(): print name, "is secure"
|
||||
else: print name, "is insecure"
|
@@ -1,100 +0,0 @@
|
||||
.. _ex_dnssec:
|
||||
|
||||
Querying DNS-SEC validators
|
||||
===========================
|
||||
|
||||
This basic example shows how to query validating resolver and
|
||||
evaluate answer.
|
||||
|
||||
Resolving step by step
|
||||
------------------------
|
||||
|
||||
For DNS queries, we need to initialize ldns resolver (covered in previous example).
|
||||
|
||||
::
|
||||
|
||||
# Create resolver
|
||||
resolver = ldns.ldns_resolver.new_frm_file("/etc/resolv.conf")
|
||||
resolver.set_dnssec(True)
|
||||
|
||||
# Custom resolver
|
||||
if argc > 2:
|
||||
# Clear previous nameservers
|
||||
ns = resolver.pop_nameserver()
|
||||
while ns != None:
|
||||
ns = resolver.pop_nameserver()
|
||||
ip = ldns.ldns_rdf.new_frm_str(sys.argv[2], ldns.LDNS_RDF_TYPE_A)
|
||||
resolver.push_nameserver(ip)
|
||||
|
||||
Note the second line :meth:`resolver.set_dnssec`, which enables DNSSEC OK bit
|
||||
in queries in order to get meaningful results.
|
||||
|
||||
As we have resolver initialized, we can start querying for domain names :
|
||||
|
||||
::
|
||||
|
||||
# Resolve DNS name
|
||||
pkt = resolver.query(name, ldns.LDNS_RR_TYPE_A, ldns.LDNS_RR_CLASS_IN)
|
||||
if pkt and pkt.answer():
|
||||
|
||||
Now we evaluate result, where two flags are crucial :
|
||||
|
||||
* Return code
|
||||
* AD flag (authenticated)
|
||||
|
||||
When return code is `SERVFAIL`, it means that validating resolver marked requested
|
||||
name as **bogus** (or bad configuration).
|
||||
|
||||
**AD** flag is set if domain name is authenticated **(secure)** or false if
|
||||
it's insecure.
|
||||
|
||||
Complete source code
|
||||
--------------------
|
||||
|
||||
.. literalinclude:: ../../../examples/ldns-dnssec.py
|
||||
:language: python
|
||||
|
||||
|
||||
Testing
|
||||
-------
|
||||
|
||||
In order to get meaningful results, you have to enter IP address of validating
|
||||
resolver or setup your own (see howto).
|
||||
|
||||
Execute `./example2.py` with options `domain name` and `resolver IP`,
|
||||
example:
|
||||
|
||||
::
|
||||
|
||||
user@localhost# ./example2.py www.dnssec.cz 127.0.0.1 # Secure (Configured Unbound running on localhost)
|
||||
user@localhost# ./example2.py www.rhybar.cz 127.0.0.1 # Bogus
|
||||
|
||||
Howto setup Unbound as validating resolver
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Install Unbound according to instructions.
|
||||
Modify following options in `unbound.conf` (located in `/etc` or `/usr/local/etc`)/
|
||||
|
||||
|
||||
Uncomment `module-config` and set `validator` before iterator.
|
||||
|
||||
::
|
||||
|
||||
module-config: "validator iterator"
|
||||
|
||||
Download DLV keys and update path in `unbound.conf`::
|
||||
|
||||
# DLV keys
|
||||
# Download from http://ftp.isc.org/www/dlv/dlv.isc.org.key
|
||||
dlv-anchor-file: "/usr/local/etc/unbound/dlv.isc.org.key"
|
||||
|
||||
Update trusted keys (`.cz` for example)::
|
||||
|
||||
# Trusted keys
|
||||
# For current key, see www.dnssec.cz
|
||||
trusted-keys-file: "/usr/local/etc/unbound/trusted.key"
|
||||
|
||||
Now you should have well configured Unbound, so run it::
|
||||
|
||||
user@localhost# unbound -dv
|
||||
|
@@ -1,7 +0,0 @@
|
||||
High-level functions
|
||||
===========================
|
||||
|
||||
This basic example shows how to get name by addr and vice versa.
|
||||
|
||||
.. literalinclude:: ../../../examples/ldns-higher.py
|
||||
:language: python
|
@@ -1,7 +0,0 @@
|
||||
AXFR client with IDN support
|
||||
===============================
|
||||
|
||||
This example shows how to get AXFR working and how to get involved Internationalized Domain Names (IDN)
|
||||
|
||||
.. literalinclude:: ../../../examples/ldns-axfr.py
|
||||
:language: python
|
@@ -1,14 +0,0 @@
|
||||
Examine the results
|
||||
===============================
|
||||
|
||||
This example shows how to go through the obtained results
|
||||
|
||||
.. literalinclude:: ../../../examples/ldns-mx2.py
|
||||
:language: python
|
||||
|
||||
This snippet of code prints::
|
||||
|
||||
nic.cz. 1761 IN MX 20 mx.cznic.org.
|
||||
nic.cz. 1761 IN MX 10 mail.nic.cz.
|
||||
nic.cz. 1761 IN MX 15 mail4.nic.cz.
|
||||
|
@@ -1,12 +0,0 @@
|
||||
Read zone file
|
||||
===============================
|
||||
|
||||
This example shows how to read the content of a zone file
|
||||
|
||||
.. literalinclude:: ../../../examples/ldns-zone.py
|
||||
:language: python
|
||||
|
||||
Zone file ``zone.txt``:
|
||||
|
||||
.. literalinclude:: ../../../examples/zone.txt
|
||||
|
@@ -1,8 +0,0 @@
|
||||
Generate public/private key pair
|
||||
=======================================
|
||||
|
||||
This example shows how generate keys for DNSSEC (i.e. for signing a zone file according DNSSECbis).
|
||||
|
||||
.. literalinclude:: ../../../examples/ldns-keygen.py
|
||||
:language: python
|
||||
|
@@ -1,17 +0,0 @@
|
||||
Signing of a zone file
|
||||
===============================
|
||||
|
||||
This example shows how to sign the content of the given zone file
|
||||
|
||||
.. literalinclude:: ../../../examples/ldns-signzone.py
|
||||
:language: python
|
||||
|
||||
In order to be able sign a zone file, you have to generate a key-pair using ``ldns-keygen.py``. Don't forget to modify tag number.
|
||||
|
||||
Signing consists of three steps
|
||||
|
||||
1. In the first step, the content of a zone file is readed and parsed. This can be done using :class:`ldns.ldns_zone` class.
|
||||
|
||||
2. In the second step, the private and public key is readed and public key is inserted into zone (as DNSKEY).
|
||||
|
||||
3. In the last step, the DNSSEC zone instace is created and all the RRs from zone file are copied here. Then, all the records are signed using :meth:`ldns.ldns_zone.sign` method. If the signing was successfull, the content of DNSSEC zone is written to a file.
|
@@ -1,12 +0,0 @@
|
||||
Tutorials
|
||||
==============================
|
||||
|
||||
Here you can find a set of simple applications which utilizes the ldns library in Python environment.
|
||||
|
||||
`Tutorials`
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
:glob:
|
||||
|
||||
example*
|
@@ -1,22 +0,0 @@
|
||||
PyLDNS documentation
|
||||
=======================================
|
||||
|
||||
PyLDNS provides an `LDNS`_ wrapper (Python extension module) - the thinnest layer over the library possible. Everything you can do from the C API, you can do from Python, but with less effort. The purpose of porting LDNS library to Python is to simplify DNS programming and usage of LDNS, however, still preserve the performance of this library as the speed represents the main benefit of LDNS. The proposed object approach allows the users to be concentrated at the essential part of application only and don't bother with deallocation of objects and so on.
|
||||
|
||||
.. _LDNS: http://www.nlnetlabs.nl/projects/ldns/
|
||||
|
||||
Contents
|
||||
----------
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
install.rst
|
||||
examples/index.rst
|
||||
modules/ldns
|
||||
|
||||
Indices and tables
|
||||
-------------------
|
||||
|
||||
* :ref:`genindex`
|
||||
* :ref:`search`
|
||||
|
@@ -1,46 +0,0 @@
|
||||
Installation
|
||||
===================================
|
||||
|
||||
**Prerequisites**
|
||||
|
||||
Python 2.4 or higher, SWIG 1.3 or higher, GNU make
|
||||
|
||||
**Download**
|
||||
|
||||
You can download the source codes `here`_.
|
||||
The latest release is 1.4.1, Jan 15, 2009.
|
||||
|
||||
.. _here: ldns-1.4.1-py.tar.gz
|
||||
|
||||
**Compiling**
|
||||
|
||||
After downloading, you can compile the library by doing::
|
||||
|
||||
> tar -xzf ldns-1.4.1-py.tar.gz
|
||||
> cd ldns-1.4.1
|
||||
> ./configure --with-pyldns
|
||||
> make
|
||||
|
||||
You need GNU make to compile pyLDNS; SWIG and Python development libraries to compile extension module.
|
||||
|
||||
|
||||
**Testing**
|
||||
|
||||
If the compilation is successfull, you can test the python LDNS extension module by::
|
||||
|
||||
> cd contrib/python
|
||||
> make testenv
|
||||
> ./ldns-mx.py
|
||||
|
||||
This will start a new shell, during which the symbolic links will be working.
|
||||
When you exit the shell, then symbolic links will be deleted.
|
||||
|
||||
In ``contrib/examples`` you can find many simple applications in python which demostrates the capabilities of LDNS library.
|
||||
|
||||
**Installation**
|
||||
|
||||
To install libraries and extension type::
|
||||
|
||||
> cd ldns-1.4.1
|
||||
> make install
|
||||
|
@@ -1,40 +0,0 @@
|
||||
LDNS module documentation
|
||||
================================
|
||||
|
||||
Here you can find the documentation of pyLDNS extension module. This module consists of several classes and a couple of functions.
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
:glob:
|
||||
|
||||
ldns_resolver
|
||||
ldns_pkt
|
||||
ldns_rr
|
||||
ldns_rdf
|
||||
ldns_dname
|
||||
ldns_rr_list
|
||||
ldns_zone
|
||||
ldns_key
|
||||
ldns_key_list
|
||||
ldns_buffer
|
||||
ldns_dnssec
|
||||
ldns_func
|
||||
|
||||
|
||||
|
||||
|
||||
**Differences against libLDNS**
|
||||
|
||||
* You don't need to use ldns-compare functions, instances can be compared using standard operators <, >, = ::
|
||||
|
||||
if (some_rr.owner() == another_rr.rdf(1)):
|
||||
pass
|
||||
|
||||
* Classes contain static methods that create new instances, the name of these methods starts with the new\_ prefix (e.g. :meth:`ldns.ldns_pkt.new_frm_file`).
|
||||
|
||||
* Is it possible to print the content of an object using ``print objinst`` (see :meth:`ldns.ldns_resolver.get_addr_by_name`).
|
||||
|
||||
* Classes contain write_to_buffer method that writes the content into buffer.
|
||||
|
||||
* All the methods that consume parameter of (const ldns_rdf) type allows to use string instead (see :meth:`ldns.ldns_resolver.query`).
|
||||
|
@@ -1,11 +0,0 @@
|
||||
Class ldns_buffer
|
||||
================================
|
||||
|
||||
|
||||
.. automodule:: ldns
|
||||
|
||||
Class ldns_buffer
|
||||
------------------------------
|
||||
.. autoclass:: ldns_buffer
|
||||
:members:
|
||||
:undoc-members:
|
@@ -1,11 +0,0 @@
|
||||
Class ldns_dname
|
||||
================================
|
||||
|
||||
|
||||
.. automodule:: ldns
|
||||
|
||||
Class ldns_dname
|
||||
------------------------------
|
||||
.. autoclass:: ldns_dname
|
||||
:members:
|
||||
:undoc-members:
|
@@ -1,28 +0,0 @@
|
||||
Class ldns_dnssec_zone
|
||||
================================
|
||||
|
||||
.. automodule:: ldns
|
||||
|
||||
Class ldns_dnssec_zone
|
||||
------------------------------
|
||||
.. autoclass:: ldns_dnssec_zone
|
||||
:members:
|
||||
:undoc-members:
|
||||
|
||||
Class ldns_dnssec_name
|
||||
------------------------------
|
||||
.. autoclass:: ldns_dnssec_name
|
||||
:members:
|
||||
:undoc-members:
|
||||
|
||||
Class ldns_dnssec_rrsets
|
||||
------------------------------
|
||||
.. autoclass:: ldns_dnssec_rrsets
|
||||
:members:
|
||||
:undoc-members:
|
||||
|
||||
Class ldns_dnssec_rrs
|
||||
------------------------------
|
||||
.. autoclass:: ldns_dnssec_rrs
|
||||
:members:
|
||||
:undoc-members:
|
@@ -1,253 +0,0 @@
|
||||
Various functions
|
||||
================================
|
||||
|
||||
Here you can find list of functions that are not assigned to the classes.
|
||||
These functions have the same parameters as LDNS functions of the same name.
|
||||
You are encouraged to read the LDNS documentation.
|
||||
|
||||
**List of functions**
|
||||
|
||||
* ldns_algorithm2buffer_str
|
||||
* ldns_bget_keyword_data
|
||||
* ldns_bget_token
|
||||
* ldns_bgetc
|
||||
* ldns_bskipcs
|
||||
* ldns_bubblebabble
|
||||
* ldns_buffer2pkt_wire
|
||||
* ldns_buffer2str
|
||||
* ldns_calc_keytag
|
||||
* ldns_calc_keytag_raw
|
||||
* ldns_cert_algorithm2buffer_str
|
||||
* ldns_convert_dsa_rrsig_asn12rdf
|
||||
* ldns_convert_dsa_rrsig_rdf2asn1
|
||||
* ldns_create_nsec
|
||||
* ldns_create_nsec3
|
||||
* ldns_dname2buffer_wire
|
||||
* ldns_dname2canonical
|
||||
* ldns_dnssec_build_data_chain
|
||||
* ldns_dnssec_chain_nsec3_list
|
||||
* ldns_dnssec_create_nsec
|
||||
* ldns_dnssec_create_nsec3
|
||||
* ldns_dnssec_create_nsec_bitmap
|
||||
* ldns_dnssec_data_chain_deep_free
|
||||
* ldns_dnssec_data_chain_free
|
||||
* ldns_dnssec_data_chain_new
|
||||
* ldns_dnssec_data_chain_print
|
||||
* ldns_dnssec_default_add_to_signatures
|
||||
* ldns_dnssec_default_delete_signatures
|
||||
* ldns_dnssec_default_leave_signatures
|
||||
* ldns_dnssec_default_replace_signatures
|
||||
* ldns_dnssec_derive_trust_tree
|
||||
* ldns_dnssec_derive_trust_tree_dnskey_rrset
|
||||
* ldns_dnssec_derive_trust_tree_ds_rrset
|
||||
* ldns_dnssec_derive_trust_tree_no_sig
|
||||
* ldns_dnssec_derive_trust_tree_normal_rrset
|
||||
* ldns_dnssec_get_dnskey_for_rrsig
|
||||
* ldns_dnssec_get_rrsig_for_name_and_type
|
||||
* ldns_dnssec_nsec3_closest_encloser
|
||||
* ldns_dnssec_pkt_get_rrsigs_for_name_and_type
|
||||
* ldns_dnssec_pkt_get_rrsigs_for_type
|
||||
* ldns_dnssec_pkt_has_rrsigs
|
||||
* ldns_dnssec_remove_signatures
|
||||
* ldns_dnssec_trust_tree_add_parent
|
||||
* ldns_dnssec_trust_tree_contains_keys
|
||||
* ldns_dnssec_trust_tree_depth
|
||||
* ldns_dnssec_trust_tree_free
|
||||
* ldns_dnssec_trust_tree_new
|
||||
* ldns_dnssec_trust_tree_print
|
||||
* ldns_dnssec_verify_denial
|
||||
* ldns_dnssec_verify_denial_nsec3
|
||||
* ldns_fetch_valid_domain_keys
|
||||
* ldns_fget_keyword_data
|
||||
* ldns_fget_keyword_data_l
|
||||
* ldns_fget_token
|
||||
* ldns_fget_token_l
|
||||
* ldns_fskipcs
|
||||
* ldns_fskipcs_l
|
||||
* ldns_get_bit
|
||||
* ldns_get_bit_r
|
||||
* ldns_get_errorstr_by_id
|
||||
* ldns_get_rr_class_by_name
|
||||
* ldns_get_rr_list_addr_by_name
|
||||
* ldns_get_rr_list_hosts_frm_file
|
||||
* ldns_get_rr_list_hosts_frm_fp
|
||||
* ldns_get_rr_list_hosts_frm_fp_l
|
||||
* ldns_get_rr_list_name_by_addr
|
||||
* ldns_get_rr_type_by_name
|
||||
* ldns_getaddrinfo
|
||||
* ldns_hexdigit_to_int
|
||||
* ldns_hexstring_to_data
|
||||
* ldns_init_random
|
||||
* ldns_int_to_hexdigit
|
||||
* ldns_is_rrset
|
||||
* ldns_key2buffer_str
|
||||
* ldns_key2rr
|
||||
* ldns_key2str
|
||||
* ldns_lookup_by_id
|
||||
* ldns_lookup_by_name
|
||||
* ldns_native2rdf_int16
|
||||
* ldns_native2rdf_int16_data
|
||||
* ldns_native2rdf_int32
|
||||
* ldns_native2rdf_int8
|
||||
* ldns_nsec3_add_param_rdfs
|
||||
* ldns_nsec3_algorithm
|
||||
* ldns_nsec3_bitmap
|
||||
* ldns_nsec3_flags
|
||||
* ldns_nsec3_hash_name
|
||||
* ldns_nsec3_hash_name_frm_nsec3
|
||||
* ldns_nsec3_iterations
|
||||
* ldns_nsec3_next_owner
|
||||
* ldns_nsec3_optout
|
||||
* ldns_nsec3_salt
|
||||
* ldns_nsec3_salt_data
|
||||
* ldns_nsec3_salt_length
|
||||
* ldns_nsec_bitmap_covers_type
|
||||
* ldns_nsec_covers_name
|
||||
* ldns_nsec_get_bitmap
|
||||
* ldns_nsec_type_check
|
||||
* ldns_octet
|
||||
* ldns_pkt2buffer_str
|
||||
* ldns_pkt2buffer_wire
|
||||
* ldns_pkt2str
|
||||
* ldns_pkt2wire
|
||||
* ldns_pktheader2buffer_str
|
||||
* ldns_power
|
||||
* ldns_print_rr_rdf
|
||||
* ldns_rbtree_create
|
||||
* ldns_rbtree_delete
|
||||
* ldns_rbtree_find_less_equal
|
||||
* ldns_rbtree_first
|
||||
* ldns_rbtree_free
|
||||
* ldns_rbtree_init
|
||||
* ldns_rbtree_insert
|
||||
* ldns_rbtree_insert_vref
|
||||
* ldns_rbtree_last
|
||||
* ldns_rbtree_next
|
||||
* ldns_rbtree_previous
|
||||
* ldns_rbtree_search
|
||||
* ldns_rdf2buffer_str
|
||||
* ldns_rdf2buffer_str_a
|
||||
* ldns_rdf2buffer_str_aaaa
|
||||
* ldns_rdf2buffer_str_alg
|
||||
* ldns_rdf2buffer_str_apl
|
||||
* ldns_rdf2buffer_str_b64
|
||||
* ldns_rdf2buffer_str_cert_alg
|
||||
* ldns_rdf2buffer_str_class
|
||||
* ldns_rdf2buffer_str_dname
|
||||
* ldns_rdf2buffer_str_hex
|
||||
* ldns_rdf2buffer_str_int16
|
||||
* ldns_rdf2buffer_str_int16_data
|
||||
* ldns_rdf2buffer_str_ipseckey
|
||||
* ldns_rdf2buffer_str_loc
|
||||
* ldns_rdf2buffer_str_nsap
|
||||
* ldns_rdf2buffer_str_nsec
|
||||
* ldns_rdf2buffer_str_period
|
||||
* ldns_rdf2buffer_str_str
|
||||
* ldns_rdf2buffer_str_tsig
|
||||
* ldns_rdf2buffer_str_tsigtime
|
||||
* ldns_rdf2buffer_str_type
|
||||
* ldns_rdf2buffer_str_unknown
|
||||
* ldns_rdf2buffer_str_wks
|
||||
* ldns_rdf2buffer_wire
|
||||
* ldns_rdf2buffer_wire_canonical
|
||||
* ldns_rdf2native_int16
|
||||
* ldns_rdf2native_int32
|
||||
* ldns_rdf2native_int8
|
||||
* ldns_rdf2native_sockaddr_storage
|
||||
* ldns_rdf2native_time_t
|
||||
* ldns_rdf2rr_type
|
||||
* ldns_rdf2str
|
||||
* ldns_rdf2wire
|
||||
* ldns_read_anchor_file
|
||||
* ldns_read_uint16
|
||||
* ldns_read_uint32
|
||||
* ldns_rr2buffer_str
|
||||
* ldns_rr2buffer_wire
|
||||
* ldns_rr2buffer_wire_canonical
|
||||
* ldns_rr2canonical
|
||||
* ldns_rr2str
|
||||
* ldns_rr2wire
|
||||
* ldns_rrsig2buffer_wire
|
||||
* ldns_send
|
||||
* ldns_send_buffer
|
||||
* ldns_set_bit
|
||||
* ldns_sign_public
|
||||
* ldns_sockaddr_storage2rdf
|
||||
* ldns_str2period
|
||||
* ldns_str2rdf_a
|
||||
* ldns_str2rdf_aaaa
|
||||
* ldns_str2rdf_alg
|
||||
* ldns_str2rdf_apl
|
||||
* ldns_str2rdf_b32_ext
|
||||
* ldns_str2rdf_b64
|
||||
* ldns_str2rdf_cert_alg
|
||||
* ldns_str2rdf_class
|
||||
* ldns_str2rdf_dname
|
||||
* ldns_str2rdf_hex
|
||||
* ldns_str2rdf_int16
|
||||
* ldns_str2rdf_int32
|
||||
* ldns_str2rdf_int8
|
||||
* ldns_str2rdf_loc
|
||||
* ldns_str2rdf_nsap
|
||||
* ldns_str2rdf_nsec
|
||||
* ldns_str2rdf_nsec3_salt
|
||||
* ldns_str2rdf_period
|
||||
* ldns_str2rdf_service
|
||||
* ldns_str2rdf_str
|
||||
* ldns_str2rdf_time
|
||||
* ldns_str2rdf_tsig
|
||||
* ldns_str2rdf_type
|
||||
* ldns_str2rdf_unknown
|
||||
* ldns_str2rdf_wks
|
||||
* ldns_tcp_bgsend
|
||||
* ldns_tcp_connect
|
||||
* ldns_tcp_read_wire
|
||||
* ldns_tcp_send
|
||||
* ldns_tcp_send_query
|
||||
* ldns_traverse_postorder
|
||||
* ldns_tsig_algorithm
|
||||
* ldns_tsig_keydata
|
||||
* ldns_tsig_keydata_clone
|
||||
* ldns_tsig_keyname
|
||||
* ldns_tsig_keyname_clone
|
||||
* ldns_udp_bgsend
|
||||
* ldns_udp_connect
|
||||
* ldns_udp_read_wire
|
||||
* ldns_udp_send
|
||||
* ldns_udp_send_query
|
||||
* ldns_update_pkt_new
|
||||
* ldns_update_pkt_tsig_add
|
||||
* ldns_update_prcount
|
||||
* ldns_update_set_adcount
|
||||
* ldns_update_set_prcount
|
||||
* ldns_update_set_upcount
|
||||
* ldns_update_soa_mname
|
||||
* ldns_update_soa_zone_mname
|
||||
* ldns_update_upcount
|
||||
* ldns_update_zocount
|
||||
* ldns_validate_domain_dnskey
|
||||
* ldns_validate_domain_ds
|
||||
* ldns_verify
|
||||
* ldns_verify_rrsig
|
||||
* ldns_verify_rrsig_buffers
|
||||
* ldns_verify_rrsig_buffers_raw
|
||||
* ldns_verify_rrsig_dsa
|
||||
* ldns_verify_rrsig_dsa_raw
|
||||
* ldns_verify_rrsig_keylist
|
||||
* ldns_verify_rrsig_rsamd5
|
||||
* ldns_verify_rrsig_rsamd5_raw
|
||||
* ldns_verify_rrsig_rsasha1
|
||||
* ldns_verify_rrsig_rsasha1_raw
|
||||
* ldns_verify_rrsig_rsasha256_raw
|
||||
* ldns_verify_rrsig_rsasha512_raw
|
||||
* ldns_verify_trusted
|
||||
* ldns_version
|
||||
* ldns_wire2dname
|
||||
* ldns_wire2pkt
|
||||
* ldns_wire2rdf
|
||||
* ldns_wire2rr
|
||||
* ldns_write_uint16
|
||||
* ldns_write_uint32
|
||||
* ldns_write_uint64_as_uint48
|
||||
* mktime_from_utc
|
||||
* qsort_rr_compare_nsec3
|
@@ -1,11 +0,0 @@
|
||||
Class ldns_key
|
||||
================================
|
||||
|
||||
|
||||
.. automodule:: ldns
|
||||
|
||||
Class ldns_key
|
||||
------------------------------
|
||||
.. autoclass:: ldns_key
|
||||
:members:
|
||||
:undoc-members:
|
@@ -1,11 +0,0 @@
|
||||
Class ldns_key_list
|
||||
================================
|
||||
|
||||
|
||||
.. automodule:: ldns
|
||||
|
||||
Class ldns_key_list
|
||||
------------------------------
|
||||
.. autoclass:: ldns_key_list
|
||||
:members:
|
||||
:undoc-members:
|
@@ -1,11 +0,0 @@
|
||||
Class ldns_pkt
|
||||
================================
|
||||
|
||||
|
||||
.. automodule:: ldns
|
||||
|
||||
Class ldns_pkt
|
||||
------------------------------
|
||||
.. autoclass:: ldns_pkt
|
||||
:members:
|
||||
:undoc-members:
|
@@ -1,47 +0,0 @@
|
||||
Class ldns_rdf
|
||||
================================
|
||||
|
||||
|
||||
.. automodule:: ldns
|
||||
|
||||
Class ldns_rdf
|
||||
------------------------------
|
||||
.. autoclass:: ldns_rdf
|
||||
:members:
|
||||
:undoc-members:
|
||||
|
||||
Predefined constants
|
||||
------------------------------
|
||||
|
||||
**RDF TYPE**
|
||||
* LDNS_RDF_TYPE_NONE,
|
||||
* LDNS_RDF_TYPE_DNAME,
|
||||
* LDNS_RDF_TYPE_INT8,
|
||||
* LDNS_RDF_TYPE_INT16,
|
||||
* LDNS_RDF_TYPE_INT32,
|
||||
* LDNS_RDF_TYPE_A,
|
||||
* LDNS_RDF_TYPE_AAAA,
|
||||
* LDNS_RDF_TYPE_STR,
|
||||
* LDNS_RDF_TYPE_APL,
|
||||
* LDNS_RDF_TYPE_B32_EXT,
|
||||
* LDNS_RDF_TYPE_B64,
|
||||
* LDNS_RDF_TYPE_HEX,
|
||||
* LDNS_RDF_TYPE_NSEC,
|
||||
* LDNS_RDF_TYPE_TYPE,
|
||||
* LDNS_RDF_TYPE_CLASS,
|
||||
* LDNS_RDF_TYPE_CERT_ALG,
|
||||
* LDNS_RDF_TYPE_ALG,
|
||||
* LDNS_RDF_TYPE_UNKNOWN,
|
||||
* LDNS_RDF_TYPE_TIME,
|
||||
* LDNS_RDF_TYPE_PERIOD,
|
||||
* LDNS_RDF_TYPE_TSIGTIME,
|
||||
* LDNS_RDF_TYPE_TSIG,
|
||||
* LDNS_RDF_TYPE_INT16_DATA,
|
||||
* LDNS_RDF_TYPE_SERVICE,
|
||||
* LDNS_RDF_TYPE_LOC,
|
||||
* LDNS_RDF_TYPE_WKS,
|
||||
* LDNS_RDF_TYPE_NSAP,
|
||||
* LDNS_RDF_TYPE_IPSECKEY,
|
||||
* LDNS_RDF_TYPE_NSEC3_SALT,
|
||||
* LDNS_RDF_TYPE_NSEC3_NEXT_OWNER
|
||||
|
@@ -1,13 +0,0 @@
|
||||
Class ldns_resolver
|
||||
================================
|
||||
|
||||
.. automodule:: ldns
|
||||
|
||||
Class ldns_resolver
|
||||
------------------------------
|
||||
.. autoclass:: ldns_resolver
|
||||
:members:
|
||||
:undoc-members:
|
||||
|
||||
|
||||
|
@@ -1,18 +0,0 @@
|
||||
Class ldns_rr
|
||||
================================
|
||||
|
||||
|
||||
.. automodule:: ldns
|
||||
|
||||
Class ldns_rr
|
||||
------------------------------
|
||||
.. autoclass:: ldns_rr
|
||||
:members:
|
||||
:undoc-members:
|
||||
|
||||
Class ldns_rr_descriptor
|
||||
------------------------------
|
||||
.. autoclass:: ldns_rr_descriptor
|
||||
:members:
|
||||
:undoc-members:
|
||||
|
@@ -1,11 +0,0 @@
|
||||
Class ldns_rr_list
|
||||
================================
|
||||
|
||||
|
||||
.. automodule:: ldns
|
||||
|
||||
Class ldns_rr_list
|
||||
------------------------------
|
||||
.. autoclass:: ldns_rr_list
|
||||
:members:
|
||||
:undoc-members:
|
@@ -1,11 +0,0 @@
|
||||
Class ldns_zone
|
||||
================================
|
||||
|
||||
|
||||
.. automodule:: ldns
|
||||
|
||||
Class ldns_zone
|
||||
------------------------------
|
||||
.. autoclass:: ldns_zone
|
||||
:members:
|
||||
:undoc-members:
|
Reference in New Issue
Block a user