This library aims to implement the TransIP API in Python.
- Make sure you have an account at TransIP
- Enable the API (https://www.transip.nl/cp/mijn-account/#api)
- Whitelist your IP.
- Generate a new key-pair.
- Copy-paste the private key into a file.
- Either reformat the key to PKCS#1 format using
$ openssl rsa -in input.key -out decrypted_key
or install cryptography using$ pip install cryptography
. - Put the private key in a file called
decrypted_key
beside thisREADME.rst
file.
$ python setup.py install
The command-line interpreter doesn't do much yet. By default it does a getDomainNames() call, but with the '-u' option it's also possible to add or update DNS records. When calling it with '-h', it will show all available options.
$ transip-api [example.com, example.org, example.net] $ transip-api -h usage: transip-api [-h] [-l LOGINNAME] [-s] [-a] [-u] [-d] [--domain-name DOMAIN_NAME] [--entry-name ENTRY_NAME] [--entry-expire ENTRY_EXPIRE] [--entry-type ENTRY_TYPE] [--entry-content ENTRY_CONTENT] [--api-key PRIVATE_KEY_FILE] optional arguments: -h, --help show this help message and exit -l LOGINNAME, --login-name LOGINNAME TransIP username -s, --show-dns-entries show all DNS entries for a domain -a, --add-dns-entry add an entry in the DNS -u, --update-dns-entry update an entry in the DNS -d, --delete-dns-entry delete an entry in the DNS --domain-name DOMAIN_NAME domain name to use --entry-name ENTRY_NAME name of the DNS entry --entry-expire ENTRY_EXPIRE expire time of the DNS entry --entry-type ENTRY_TYPE type of the DNS entry --entry-content ENTRY_CONTENT content of the DNS entry --api-key PRIVATE_KEY_FILE TransIP private key
Example of adding/updating a record:
$ transip-api -l githubuser -u --api-key privatekey --domain-name example.com --entry-name testentry --entry-expire 86400 --entry-type A --entry-content 127.0.0.1 Request finished successfully.
Further documentation can be found in the docs
directory, or on https://transip-api.readthedocs.io/en/latest/.
Question:
When using the library I get SSL errors such as:
urllib2.URLError: <urlopen error [Errno 1] _ssl.c:510: error:14077458:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 unrecognized name>
Answer:
The suds library has fairly limited SSL support which is dependent on the Python version, to work around this the suds_requests library can be used which replaces urllib2 with the requests library. Additionally the requests library automatically pools connections which makes the library slightly faster to use.To install:
pip install suds_requests