Metadata-Version: 2.1
Name: auroradns-cli
Version: 0.2.0
Summary: A simple CLI client for AuroraDNS
Home-page: https://www.pcextreme.nl/dns-health-checks
Author: Loek Geleijn
Author-email: loek@pcextreme.nl
License: UNKNOWN
Keywords: pcextreme auroradns auroradns-cli auroradns_cli
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: POSIX
Requires-Python: >=3
Description-Content-Type: text/markdown
Requires-Dist: apache-libcloud
Requires-Dist: pycurl (>=7.43.0.2)
Requires-Dist: tldextract
Requires-Dist: urllib3

# auroradns-cli
A command line api client for PCextreme's AuroraDNS service based on Apache
Libcloud.

# Usage
```
usage: auroradns-cli.py [action] [aruments] (--help for more information)

AuroraDNS Command Line Interface

positional arguments:
  {list-zones,get-record,create-record,delete-record,update-record,create-zone,delete-zone,set-hostname}
                        Specify the action to perform.

optional arguments:
  -h, --help            show this help message and exit
  --details             print details
  --extras              print extras
  --force               don't prompt

authentication:
  --apikey APIKEY, -a APIKEY
                        dns api key
  --secretkey SECRETKEY, -s SECRETKEY
                        dns secret key

record arguments:
  -n NAME, --name NAME  dns name field, defaults to apex
  -d DATA, --data DATA  dns data/content field
  -p PRIO, --prio PRIO  dns record PRIO, mandatory for MX and SRV record types
  -t TYPE, --type TYPE  dns record type, defaults to A/AAAA based on DATA, mandatory otherwise
  --ttl TTL             dns record TTL
  --recordid RECORDID   dns record ID

zone arguments:
  -z ZONE, --zone ZONE  dns ZONE name
  --zoneid ZONEID       dns zone ID
```

## Examples
List all records in a zone:
```
./auroradns-cli.py get-record --zone=mydomain.net
name              type       priority   ttl        data
----------------- ---------- ---------- ---------- ----------------------------------------------------------------------
@                 A                     900        203.0.113.20
*                 A                     900        203.0.113.20
@                 AAAA                  900        2001:db8:1337::5054:efff:fe0c:c675
*                 AAAA                  900        2001:db8:1337::5054:efff:fe0c:c675
@                 MX         10         900        primary.mail.pcextreme.nl
@                 MX         20         900        fallback.mail.pcextreme.nl
@                 NS                    3600       ns081.auroradns.eu
@                 NS                    3600       ns082.auroradns.nl
@                 NS                    3600       ns083.auroradns.info
@                 SOA                   4800       ns081.auroradns.eu admin.auroradns.eu 2019011401 86400 7200 604800 300
```

Filter on specific record types and ttl:
```
./auroradns-cli.py get-record --zone=mydomain.net --type=AAAA --ttl=900
name          type       priority   ttl        data
------------- ---------- ---------- ---------- ----------------------------------
@             AAAA                  900        2001:db8:1337::5054:efff:fe0c:c675
*             AAAA                  900        2001:db8:1337::5054:efff:fe0c:c675
```

Create a new dns-record, IPv6 and IPv4 records are validated and record type is
automatically set to AAAA or A if not specified. TTL defaults to zone default:
```
./auroradns-cli.py create-record --zone=mydomain.net --name=test123 --data=2001:db8:1337:dbfd:5054:3eff:feba:c1f3
Record created: test123.mydomain.net. 3600 IN AAAA 2001:db8:1337:dbfd:5054:3eff:feba:c1f3
```

Delete a record, multiple records can be removed if the filters
return multiple results:
```
./auroradns-cli.py delete-record --zone=mydomain.net --name=mysubdomain --type=A
name                 type       priority   ttl        data
-------------------- ---------- ---------- ---------- ----------------------------
mysubdomain          AAAA                  3600       2001:db8:1337::5054:15ff:feb8:6a0e

Warning, you are about to delete the records shown above, this cannot be undone.
Type _uppercase_ yes to confirm: YES

Deleted record id 9f020b67-5b77-46e8-832c-0792280e3260: mysubdomain.mydomain.net. 3600 IN A 203.0.113.10
```

Automatically create or update AAAA-/A-records for the host
```
./auroradns-cli.py set-hostname
Record created: mysubdomain.mydomain.net. 3600 IN AAAA 2001:db8:1337::5054:15ff:feb8:6a0e
Record updated: mysubdomain.mydomain.net. 3600 IN A 203.0.113.10
```

# Authentication
You can either pass the `--apikey APIKEY` and `--secretkey SECRETKEY` command
line argumenrs or set the `DNS_API_KEY` and `DNS_SECRET_KEY` environment
variables:

```
export DNS_API_KEY=MYAPIKEY; export DNS_SECRET_KEY=MYSECRETKEY
```

# Setup
```
pip3 install auroradns-cli
```

## Requirements
### Ubuntu 16+
```
apt install python3 python3-pip python3-dev libcurl4-openssl-dev libssl-dev
```

### CentOS 7
```
yum install python36 python36-pip python36-devel libcurl libcurl-devel openssl openssl-libs openssl-devel
```

If you get the following error: `ImportError: pycurl: libcurl link-time ssl backend (nss) is different from compile-time ssl backend (openssl)`, reinstall pycurl with `--global-option="--with-nss"`:
```
pip3 uninstall pycurl
pip3 install pycurl>=7.43.0.2 --global-option="--with-nss"
```

# License
* MIT License

This is my first python project ever so there's probably a lot of code in here
that doesn't even come close to being pythonic and some design choices that
may seem very strange but they seemed logical to me at the time. So no
guarantees on this whatsoever, use at your own risk. If this works for you,
great, enjoy! If not, send me a message and I'll try to fix the issue.


