TonicDNS client tool
License
mkouhei/tonicdnscli
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
master
Could not load branches
Nothing to show
Could not load tags
Nothing to show
{{ refName }}
default
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code
-
Clone
Use Git or checkout with SVN using the web URL.
Work fast with our official CLI. Learn more about the CLI.
- Open with GitHub Desktop
- Download ZIP
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
==================================== 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 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 zone: example.org SOA record: ns.example.org hostmaster.example.org 2012042403 ttl: 86400 change date: 1341314161 example.org +------+------+-----------------+-------+------+-------------+ | name | type | content | ttl | prio | change date | +------+------+-----------------+-------+------+-------------+ | | NS | ns.example.org | 86400 | - | - | | | NS | ns2.example.org | 86400 | - | - | | ns. | A | 192.168.0.100 | 86400 | - | - | | ns2. | A | 192.168.0.101 | 86400 | - | - | | www. | A | 192.168.0.1 | 86400 | - | - | +------+------+-----------------+-------+------+-------------+ Create single record ^^^^^^^^^^^^^^^^^^^^ Create single record with specific zone.:: $ tonicdnscli create -s ns.example.org -u tonicusername -P \ --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 Update single record ^^^^^^^^^^^^^^^^^^^^ Update single record with specific zone.:: $ tonicdnscli update -s ns.example.org -u tonicdnsusername -P \ --domain example.org --name www2.example.org --rtype A --content 10.10.10.10 --new-content 10.10.10.11 true (<- delete record) true (<- create record) 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.11 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 (<- create record) true (<- delete record) If you want to update automatically, append next variable to global section of ~/.tdclirc.:: [global] (snip) soa_update: 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 (<- create template) true (<- create zone) true (<- delete template) 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 (<- create template) true (<- create zone) true (<- delete template) 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 py.test. Below in Debian GNU/Linux Sid system,:: $ sudo apt-get install python python-pytest 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>`_