Skip to main content

TonicDNS CLI tool

Project description

====================================
tonicdnscli is TonicDNS Client tool.
====================================

This command line tool for TonicDNS API.
TonicDNS is RESTful API for PowerDNS.
Convert readble text record to JSON, and create or delete zone records with TonicDNS.


Requirements
------------

* Python 2.7 or Python 3.2 later.


Setup
-----
::

$ git clone https://github.com/mkouhei/tonicdnscli
$ cd tonicdnscli
$ sudo python setup.py install


History
-------

0.8 (2012-07-08)
^^^^^^^^^^^^^^^^

* Add Creating zone

* Sub-command 'zone_create'
* Support MASTER, SLAVE, NATIVE
* execute next process:

#. creating template
#. creating zone
#. deleting template

* Remove template_create_update sub-command
* Add Deleting zone

* Sub-command 'zone_delete'

* Add options of soa sub-command
* Add option '--domain' to bulk_create, bulk_delete sub-commands

0.7.1 (2012-06-29)
^^^^^^^^^^^^^^^^^^

* Fix bug module import
* Fix bug that assert is always true of test_pep8

0.7 (2012-06-29)
^^^^^^^^^^^^^^^^

* Add default timeout
* Update unit tests
* Tool of adding user account of TonicDNS

0.6.2 (2012-06-17)
^^^^^^^^^^^^^^^^^^

* New feature of getting all zones
* Add pre-commit hook script
* Rename method name that test_getJSON to test_setJSON
* Refactoring of http connect

0.6.1.1 (2012-05-23)
^^^^^^^^^^^^^^^^^^^^

* Fix README

0.6.1 (2012-05-23)
^^^^^^^^^^^^^^^^^^

* Fix issue#2
* Refactoring

0.6 (2012-05-15)
^^^^^^^^^^^^^^^^

* Update SOA

0.5.2 (2012-05-11)
^^^^^^^^^^^^^^^^^^

* create or delete a specific record

0.5.1 (2012-05-07)
^^^^^^^^^^^^^^^^^^

* Fix bug get fail when resolver is SLAVE

0.5 (2012-05-04)
^^^^^^^^^^^^^^^^

* templates CRUD

0.4.4 (2012-05-01)
^^^^^^^^^^^^^^^^^^

* not distribute util3.py (alternative print for python3)

0.4.3 (2012-05-01)
^^^^^^^^^^^^^^^^^^

* search target conent and type
* retrieve all zone

0.4.2 (2012-04-28)
^^^^^^^^^^^^^^^^^^

* Add search records
* Format of stdout of retrieve records

0.4.1 (2012-04-27)
^^^^^^^^^^^^^^^^^^

* Fix bug processing last data only, when separate file

0.4 (2012-04-26)
^^^^^^^^^^^^^^^^

* default option config file $HOME/.tdclirc


0.3.2 (2012-04-25)
^^^^^^^^^^^^^^^^^^

* Add unittest of pep8, converter.py, tdauth.py (partially)
* Add exception error handling
* Refactoring (Thanks Henrich)


0.3.1 (2012-04-23)
^^^^^^^^^^^^^^^^^^

* Add manpage


0.3 (2012-04-21)
^^^^^^^^^^^^^^^^

* New command line style, add sub-command, change options

* Change optparse to argparse
* new sub-command : show|get|create|delete


0.2 (2012-04-20)
^^^^^^^^^^^^^^^^

* Support Python3
* Add option `-P` as password prompt with echo turned off

0.1 (2012-04-20)
~~~~~~~~~~~~~~~~
* first release


Usage
-----

Input file (example.org.txt)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^

examples/example.org.txt::

# name type content ttl priority
test0.example.org A 10.10.10.10 86400
test1.example.org A 10.10.10.11 86400
test2.example.org A 10.10.10.12 86400
example.org MX mx.example.org 86400 0
example.org MX mx2.example.org 86400 10
mx.example.org A 10.10.11.10 3600
mx2.example.org A 10.10.11.10 3600


Setting default options to config file
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

An alternative method of command options that use the config file.
Copy examples/tdclirc.sample to `$HOME/.tdclirc`. `password` key to set password in plain text, it is recommended that you remove this line, `-P` option is used.::

[global]
server: ns.example.org

[auth]
username: tonicuser
password: tonicpw


Print converted JSON
^^^^^^^^^^^^^^^^^^^^

Convert to JSON and print.::

$ tonicdnscli show sample/example.org.txt
{
"records": [
{
"content": "10.10.10.10",
"name": "test0.example.org",
"ttl": "86400",
"type": "A"
},
{
"content": "10.10.10.11",
"name": "test1.example.org",
"ttl": "86400",
"type": "A"
},
{
"content": "10.10.10.12",
"name": "test2.example.org",
"ttl": "86400",
"type": "A"
},
(snip)

Retrieve all zones
^^^^^^^^^^^^^^^^^^

Get all zones and print.::

$ tonicdnscli get -u tonicusername -P
==============================================================================
name type notified_serial
==============================================================================
example.org MASTER 2012052201
example.net MASTER 2012060502


Retrieve records
^^^^^^^^^^^^^^^^

Get records of specific zone and print.::

$ tonicdnscli get -s ns.example.org -d example.org -u tonicusername -P
domain: example.org
serial: 2012042403
DNS : MASTER
==============================================================================
name type content ttl prio
==============================================================================
example.org SOA
> ns.example.org hostmaster.example.org 2012042403 86400
example.org NS ns.example.org 86400
example.org NS ns2.example.org 86400
ns.example.org A 192.168.0.100 86400
ns2.example.org A 192.168.0.101 86400
www.example.org A 192.168.0.1 86400
==============================================================================


Create single record
^^^^^^^^^^^^^^^^^^^^

Create single record with specific zone.::

$ tonicdnscli create -s ns.example.org -u tonicusername -P \
create --domain example.org --name www2.example.org --rtype A \
--content 10.10.10.10
true

Create records
^^^^^^^^^^^^^^

Create multi records with specific zone.::

$ tonicdnscli bulk_create -s ns.example.org -u tonicusername -P \
examples/example.org.txt
true

Delete single records
^^^^^^^^^^^^^^^^^^^^^

Delete single record with specific zone.::

$ tonicdnscli delete -s ns.example.org -u tonicusername -P \
--domain example.org --name www2.example.org --rtype A \
--content 10.10.10.10
true

Delete records
^^^^^^^^^^^^^^

Delete multi records with specific zone.::

$ tonicdnscli bulk_delete -s ns.example.org -u tonicusername -P \
examples/example.org.txt
true

Update SOA
^^^^^^^^^^

Update SOA record or speficie zone.::

$ tonicdnscli soa -s ns.example.org -u tonicusername -P \
--domain example.org
true
true


Create zone for MASTER
^^^^^^^^^^^^^^^^^^^^^^

Master DNS server IP address with `--dnsaddr` option.::

$ tonicdnscli zone_create -s ns.example.org -u tonicusername -P \
--domain example.net --dnsaddr 192.168.0.100
true
true
true


Create zone for SLAVE
^^^^^^^^^^^^^^^^^^^^^

Require `-S` option.::

$ tonicdnscli zone_create -s ns.example.org -u tonicusername -P \
--domain example.net --dnsaddr 192.168.0.100 -S
true
true
true

Create zone for NATIVE
^^^^^^^^^^^^^^^^^^^^^^

Require `-N` option.::

$ tonicdnscli zone_create -s ns.example.org -u tonicusername -P \
--domain example.net --dnsaddr 192.168.0.100 -N
true
true
true

Delete zone
^^^^^^^^^^^

Delete specific zone.::

$ tonicdnscli zone_delete -s ns.example.org -u tonicusername -P \
--domain example.com
true


Retrieve templates
^^^^^^^^^^^^^^^^^^

Get tepmlates and print.::

$ tonicdnscli tmpl_get -s ns.example.org -u tonicusername -P
identifier : example_net
description:
==============================================================================
name type content ttl prio
example.net SOA
> ns.example.net hostmaster.example.net 2012070501 3600 900 86400 3600 3600
example.net NS ns.example.net 3600
ns.example.net A 192.168.0.100 3600
==============================================================================
identifier : example2_net
description:
(snip)


Delete template
^^^^^^^^^^^^^^^

Delete specific template.::

$ tonicdnscli tmpl_delete -s ns.example.org -u tonicusername -P \
--template example_com
true


Contribute
----------

Firstly copy pre-commit hook script.::

$ cp -f utils/pre-commit.txt .git/hooks/pre-commit

Next install python2.7 later, and nosetests. Below in Debian GNU/Linux Sid system,::

$ sudo apt-get install python python-nose

Then checkout 'devel' branch for development, commit your changes. Before pull request, execute git rebase.


See also
--------

* `TonicDNS <https://github.com/Cysource/TonicDNS>`_
* `PowerDNS <http://www.powerdns.com>`_
ToDo
====

Features
--------

* Checking existing records When create or delete records.
* Updating records.
* Validation input data.

Improvement
-----------

* Add unittest.
* Specify timeout value.
* Change minimock to Mock for being compatible Python2.7 and Python3.2.
* Check specifying priority with creating MX|SRV record.

Known bug
---------

* When using in preference --config option than $HOME/.tdclirc.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tonicdnscli-0.8.tar.gz (30.3 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page