AnalogJ / lexicon

Manipulate DNS records on various DNS providers in a standardized way.
MIT License
1.48k stars 306 forks source link
cli clouddns cloudflare cloudxns constellix digitalocean dns dns-provider dns-service dnsimple dnspod gandi godaddy letsencrypt lexicon pypi ssl-certificate transip vultr yandex

============ |logo_named|

Manipulate DNS records on various DNS providers in a standardized/agnostic way.

|build_status| |coverage_status| |docker_pulls| |pypy_version| |pypy_python_support| |github_license|

.. |logo_named| image:: https://raw.githubusercontent.com/AnalogJ/lexicon/master/docs/images/logo_named.svg :alt: Lexicon .. |build_status| image:: https://img.shields.io/azure-devops/build/AnalogJ/8425f0f5-0178-4d8c-b1fd-11db7e11b6a7/1/master :target: https://dev.azure.com/AnalogJ/lexicon/_build/latest?definitionId=1&branchName=master .. |coverage_status| image:: https://img.shields.io/coverallsCoverage/github/AnalogJ/lexicon :target: https://coveralls.io/github/AnalogJ/lexicon?branch=master .. |docker_pulls| image:: https://img.shields.io/docker/pulls/analogj/lexicon :target: https://hub.docker.com/r/analogj/lexicon .. |pypy_version| image:: https://img.shields.io/pypi/v/dns-lexicon :target: https://pypi.python.org/pypi/dns-lexicon .. |pypy_python_support| image:: https://img.shields.io/pypi/pyversions/dns-lexicon :target: https://pypi.python.org/pypi/dns-lexicon .. |github_license| image:: https://img.shields.io/github/license/AnalogJ/lexicon :target: https://github.com/AnalogJ/lexicon/blob/master/LICENSE

.. contents:: Table of Contents :local:

.. tag: intro-begin

Why using Lexicon?

Lexicon provides a way to manipulate DNS records on multiple DNS providers in a standardized way.

Lexicon can be used as:

.. code-block:: bash

# Create a TXT entry in domain.net zone hosted by CloudFlare
lexicon cloudflare create domain.net TXT --name foo --content bar

.. code-block:: python

# Create a TXT entry in domain.net zone hosted by CloudFlare
from lexicon.client import Client
from lexicon.config import ConfigResolver

config = ConfigResolver().with_env().with_dict({
    "provider_name" : "cloudflare",
    "domain": "domain.net",
})

with Client(config) as operations:
    operations.create_record("TXT", "foo", "bar")

Lexicon was designed to be used in automation, specifically letsencrypt.

Supported providers

Only DNS providers who have an API can be supported by lexicon.

The current supported providers are:

.. This section is autogenerated and should not been modified directly. However you should add a reference to the provider API in the list below, using the following syntax: .. _provider: URL_API

.. tag: providers-table-begin

+-----------------+-----------------+-----------------+-----------------+-----------------+ | aliyun | aurora | azure | cloudflare | cloudns | +-----------------+-----------------+-----------------+-----------------+-----------------+ | cloudxns | conoha | constellix | ddns | digitalocean | +-----------------+-----------------+-----------------+-----------------+-----------------+ | dinahosting | directadmin | dnsimple | dnsmadeeasy | dnspark | +-----------------+-----------------+-----------------+-----------------+-----------------+ | dnspod | dnsservices | dreamhost | duckdns | dynu | +-----------------+-----------------+-----------------+-----------------+-----------------+ | easydns | easyname | euserv | exoscale | flexibleengine | +-----------------+-----------------+-----------------+-----------------+-----------------+ | gandi | gehirn | glesys | godaddy | googleclouddns | +-----------------+-----------------+-----------------+-----------------+-----------------+ | gransy | gratisdns | henet | hetzner | hostingde | +-----------------+-----------------+-----------------+-----------------+-----------------+ | hover | infoblox | infomaniak | internetbs | inwx | +-----------------+-----------------+-----------------+-----------------+-----------------+ | joker | linode | linode4 | localzone | luadns | +-----------------+-----------------+-----------------+-----------------+-----------------+ | memset | misaka | mythicbeasts | namecheap | namecom | +-----------------+-----------------+-----------------+-----------------+-----------------+ | namesilo | netcup | nfsn | njalla | nsone | +-----------------+-----------------+-----------------+-----------------+-----------------+ | oci | onapp | online | ovh | plesk | +-----------------+-----------------+-----------------+-----------------+-----------------+ | pointhq | porkbun | powerdns | qcloud | rackspace | +-----------------+-----------------+-----------------+-----------------+-----------------+ | rage4 | rcodezero | route53 | safedns | sakuracloud | +-----------------+-----------------+-----------------+-----------------+-----------------+ | softlayer | timeweb | transip | ultradns | valuedomain | +-----------------+-----------------+-----------------+-----------------+-----------------+ | vercel | vultr | webgo | wedos | yandex | +-----------------+-----------------+-----------------+-----------------+-----------------+ | yandexcloud | zeit | zilore | zonomi | | +-----------------+-----------------+-----------------+-----------------+-----------------+

.. tag: providers-table-end

.. _aliyun: https://help.aliyun.com/document_detail/29739.html .. _arvancloud: https://www.arvancloud.ir/api/cdn/4.0 .. _aurora: https://www.pcextreme.com/aurora/dns .. _azure: https://docs.microsoft.com/en-us/rest/api/dns/ .. _cloudflare: https://api.cloudflare.com/#endpoints .. _cloudns: https://www.cloudns.net/wiki/article/56/ .. _cloudxns: https://www.cloudxns.net/support/lists/cid/17.html .. _conoha: https://www.conoha.jp/docs/ .. _constellix: https://api-docs.constellix.com/?version=latest .. _ddns: https://www.rfc-editor.org/rfc/rfc2136 .. _digitalocean: https://developers.digitalocean.com/documentation/v2/#create-a-new-domain .. _dinahosting: https://en.dinahosting.com/api .. _directadmin: https://www.directadmin.com/features.php?id=504 .. _dnsimple: https://developer.dnsimple.com/v2/ .. _dnsmadeeasy: https://api-docs.dnsmadeeasy.com/?version=latest .. _dnspark: https://dnspark.zendesk.com/entries/31210577-rest-api-dns-documentation .. _dnspod: https://support.dnspod.cn/support/api .. _dnsservices: https://dns.services/userapi .. _dreamhost: https://help.dreamhost.com/hc/en-us/articles/217560167-api_overview .. _duckdns: https://www.duckdns.org/spec.jsp .. _dynu: https://www.dynu.com/support/api .. _easydns: http://docs.sandbox.rest.easydns.net/ .. _easyname: https://www.easyname.com/en .. _euserv: https://support.euserv.com/api-doc/ .. _exoscale: https://community.exoscale.com/documentation/dns/api/ .. _flexibleengine: https://registry.terraform.io/providers/FlexibleEngineCloud/flexibleengine/latest/docs/data-sources/dns_zone_v2 .. _gandi: http://doc.livedns.gandi.net/ .. _gehirn: https://support.gehirn.jp/apidocs/gis/dns/index.html .. _glesys: https://github.com/glesys/api/wiki/ .. _godaddy: https://developer.godaddy.com/getstarted#access .. _googleclouddns: https://cloud.google.com/dns/api/v1/ .. _gransy: https://subreg.cz/manual/ .. _gratisdns: .. _henet: https://dns.he.net/ .. _hetzner: https://dns.hetzner.com/api-docs/ .. _hostingde: .. _hover: https://www.hover.com/ .. _infoblox: https://docs.infoblox.com/display/ilp/infoblox+documentation+portal .. _infomaniak: https://www.infomaniak.com .. _internetbs: https://internetbs.net/resellerregistrardomainnameapi .. _inwx: https://www.inwx.de/en/offer/api .. _joker: https://joker.com/faq/index.php?action=show&cat=39 .. _linode: https://www.linode.com/api/dns .. _linode4: https://developers.linode.com/api/docs/v4#tag/domains .. _localzone: .. _luadns: http://www.luadns.com/api.html .. _memset: https://www.memset.com/apidocs/methods_dns.html .. _misaka: https://misaka.io/dns/ .. _mythicbeasts: https://www.mythic-beasts.com/support/api/dnsv2 .. _namecheap: https://www.namecheap.com/support/api/methods.aspx .. _namecom: https://www.name.com/api-docs .. _namesilo: https://www.namesilo.com/api_reference.php .. _netcup: https://ccp.netcup.net/run/webservice/servers/endpoint.php .. _nfsn: .. _njalla: https://njal.la/api/ .. _nsone: https://ns1.com/api/ .. _oci: https://docs.oracle.com/en-us/iaas/Content/DNS/home.htm .. _onapp: https://docs.onapp.com/display/55api/onapp+5.5+api+guide .. _online: .. _ovh: https://api.ovh.com/ .. _plesk: https://docs.plesk.com/en-us/onyx/api-rpc/about-xml-api.28709/ .. _pointhq: https://pointhq.com/api/docs .. _porkbun: https://kb.porkbun.com/article/190-getting-started-with-the-porkbun-dns-api .. _powerdns: https://doc.powerdns.com/md/httpapi/api_spec/ .. _qcloud: https://cloud.tencent.com/document/product/1427/56194 .. _rackspace: https://developer.rackspace.com/docs/cloud-dns/v1/developer-guide/ .. _rage4: https://gbshouse.uservoice.com/knowledgebase/articles/109834-rage4-dns-developers-api .. _rcodezero: https://my.rcodezero.at/api-doc .. _route53: https://docs.aws.amazon.com/route53/latest/apireference/welcome.html .. _safedns: https://developers.ukfast.io/documentation/safedns .. _sakuracloud: https://developer.sakura.ad.jp/cloud/api/1.1/ .. _softlayer: https://sldn.softlayer.com/article/rest#http_request_types .. _timeweb: https://timeweb.cloud/api-docs .. _transip: https://api.transip.nl/rest/docs.html .. _ultradns: https://ultra-portalstatic.ultradns.com/static/docs/rest-api_user_guide.pdf .. _valuedomain: https://www.value-domain.com/service/api/ .. _vercel: https://vercel.com/docs/api#endpoints/dns .. _vultr: https://www.vultr.com/api/#tag/dns .. _webgo: https://www.webgo.de/ .. _wedos: https://www.wedos.com/cs/ .. _yandex: https://yandex.com/dev/domain/doc/reference/dns-add.html .. _yandexcloud: https://cloud.yandex.com/en/docs/dns/api-ref/DnsZone/ .. _zeit: .. _zilore: https://zilore.com/en/help/api .. _zonomi: http://zonomi.com/app/dns/dyndns.jsp

.. tag: intro-end

Documentation

Online documentation (user guide, configuration reference) is available in the Lexicon documentation_.

For a quick start, please have a look in particular at the User guide_.

.. _Lexicon documentation: https://dns-lexicon.readthedocs.io .. _User guide: https://dns-lexicon.readthedocs.io/en/latest/user_guide.html

Contributing

If you want to help in the Lexicon development, you are welcome!

Please have a look at the Developer guide_ page to know how to start.

.. _Developer guide: https://dns-lexicon.readthedocs.io/en/latest/developer_guide.html

Licensing

.. _Logo: https://thenounproject.com/term/transform/397964