# ezDnsShim v1.0.0
ezDnsShim é uma biblioteca em Python3 para trabalhar com o servidor de DNS desenvolvido e utilizado pelo Registro.br para gerenciar os domínios da internet brasileira. Retorna a resposta em JSON ao invés de XML, tudo consolidado em um único arquivo python com códígo fonte comentado e sem dependências de outras bibliotecas, pure python! [For an English version, click here](https://github.com/rabuchaim/ezDnsShim/README-English.md)
O DnsShim é um servidor de DNS de código aberto, desenvolvido em Java pelo Registro.br e pode ser utillizado por qualquer empresa ou provedor de serviços de internet. Consiste em um servidor de DNS autoritativo MASTER que fica isolado, sem possibilidade de acesso externo. A gerência das zonas de DNS são feitas somente nesse servidor DnsShim, ele faz as publicações nos servidores de DNS autoritativos secundários que ficam disponíveis ao público e respondendo com autoridade sobre as zona de DNS ali cadastradas. Esses servidores autoritativos secundários utilizam o bind e ficam recebendo as atualizações do MASTER sempre que houver uma nova publicação.
O protocolo de comunicação com esse servidor é baseado em XML. A bibliteca ezDnsShim retorna uma variável do tipo dict (como um json) que facilita muito a gerência desse serviço. Há tratamentos de exceptions com mensagens de erro claras e disponíveis em Português e Inglês.
O código foi baseado na biblioteca ```pydnsshim v1.5```, também desenvolvida pelo Registro.br e disponível para download em https://www.registro.br/dnsshim
## How Easy?
```python
from ezdnsshim import ezDnsShimClient
user_to_add = 'dnsadmin'
conn = ezDnsShimClient(server='127.0.0.1',port=9999)
response = conn.addUser(username=user_to_add,password='*********')
if response['status'] == responseCode.OK:
print(f"Username {user_to_add} created with success!")
else:
print(f"Failed to add the username {user_to_add} - Reason: {response['msg']} - Status Code: {response['status']}")
sys.exit(1)
with ezDnsShimClient(server='127.0.0.1',port=9999,username='dnsadmin',password='*********',debug=False,keep_alive=True) as conn:
if conn.isAuthenticated:
print(f"LOGGED IN! SessionID {conn.sessionId}")
zone_to_add = 'mynewdnszone1.com.br'
if not conn.zoneExists(zone=zone_to_add):
response = conn.newZone(zone=zone_to_add,slaveGroup='slavegroup-sa-east')
if response['status'] == responseCode.OK:
print(f"Your new zone '{zone_to_add}' was created with success! [{response['elapsedTime]}'s]")
print(json.dumps(response,indent=4,sort_keys=False))
else:
print(f"The zone {zone_to_add} already exists on this server!")
```
Output:
```bash
LOGGED IN! SessionID 1527298117
Your new zone 'mynewdnszone1.com.br' was created with success! [0.18062's]
{
"status": 1,
"newZone": {
"zone": "mynewdnszone1.com.br",
"slaves": {
"slave": [
{
"slaveAddress": "10.10.10.61",
"slavePort": "53"
},
{
"slaveAddress": "10.10.10.71",
"slavePort": "53"
}
]
},
"key": "20240122002100-ZSK-257-61062",
"keytag": "61062",
"digestType": "SHA256",
"digest": "2f90743ef64d8f30544b58f1ae124cab1bf95660304897bb52b0e01e97a658f1"
},
"elapsedTime": 0.18062
}
```
## Fase final de testes
Está sendo realizado os últimos testes e estamos implementado algumas validações e blindagens contra erros de input do usuário. A biblioteca estará disponivel até o final de Jan/2024.
Raw data
{
"_id": null,
"home_page": "https://github.com/rabuchaim/ezDnsShim",
"name": "ezDnsShim",
"maintainer": "Ricardo Abuchaim",
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": "ricardoabuchaim@gmail.com",
"keywords": "",
"author": "Ricardo Abuchaim",
"author_email": "ricardoabuchaim@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/3b/07/82890a929fc41316346734aeab1ab9fab1decf4fc5d4404863ff71cdbd9f/ezDnsShim-0.9.0.tar.gz",
"platform": null,
"description": "# ezDnsShim v1.0.0\nezDnsShim \u00e9 uma biblioteca em Python3 para trabalhar com o servidor de DNS desenvolvido e utilizado pelo Registro.br para gerenciar os dom\u00ednios da internet brasileira. Retorna a resposta em JSON ao inv\u00e9s de XML, tudo consolidado em um \u00fanico arquivo python com c\u00f3d\u00edgo fonte comentado e sem depend\u00eancias de outras bibliotecas, pure python! [For an English version, click here](https://github.com/rabuchaim/ezDnsShim/README-English.md)\n\nO DnsShim \u00e9 um servidor de DNS de c\u00f3digo aberto, desenvolvido em Java pelo Registro.br e pode ser utillizado por qualquer empresa ou provedor de servi\u00e7os de internet. Consiste em um servidor de DNS autoritativo MASTER que fica isolado, sem possibilidade de acesso externo. A ger\u00eancia das zonas de DNS s\u00e3o feitas somente nesse servidor DnsShim, ele faz as publica\u00e7\u00f5es nos servidores de DNS autoritativos secund\u00e1rios que ficam dispon\u00edveis ao p\u00fablico e respondendo com autoridade sobre as zona de DNS ali cadastradas. Esses servidores autoritativos secund\u00e1rios utilizam o bind e ficam recebendo as atualiza\u00e7\u00f5es do MASTER sempre que houver uma nova publica\u00e7\u00e3o. \n\nO protocolo de comunica\u00e7\u00e3o com esse servidor \u00e9 baseado em XML. A bibliteca ezDnsShim retorna uma vari\u00e1vel do tipo dict (como um json) que facilita muito a ger\u00eancia desse servi\u00e7o. H\u00e1 tratamentos de exceptions com mensagens de erro claras e dispon\u00edveis em Portugu\u00eas e Ingl\u00eas.\n\nO c\u00f3digo foi baseado na biblioteca ```pydnsshim v1.5```, tamb\u00e9m desenvolvida pelo Registro.br e dispon\u00edvel para download em https://www.registro.br/dnsshim\n\n## How Easy?\n\n```python\nfrom ezdnsshim import ezDnsShimClient\n\nuser_to_add = 'dnsadmin'\n\nconn = ezDnsShimClient(server='127.0.0.1',port=9999)\nresponse = conn.addUser(username=user_to_add,password='*********')\nif response['status'] == responseCode.OK:\n print(f\"Username {user_to_add} created with success!\")\nelse:\n print(f\"Failed to add the username {user_to_add} - Reason: {response['msg']} - Status Code: {response['status']}\")\n sys.exit(1)\n \nwith ezDnsShimClient(server='127.0.0.1',port=9999,username='dnsadmin',password='*********',debug=False,keep_alive=True) as conn:\n if conn.isAuthenticated: \n print(f\"LOGGED IN! SessionID {conn.sessionId}\")\n zone_to_add = 'mynewdnszone1.com.br'\n if not conn.zoneExists(zone=zone_to_add):\n response = conn.newZone(zone=zone_to_add,slaveGroup='slavegroup-sa-east')\n if response['status'] == responseCode.OK:\n print(f\"Your new zone '{zone_to_add}' was created with success! [{response['elapsedTime]}'s]\")\n print(json.dumps(response,indent=4,sort_keys=False))\n else:\n print(f\"The zone {zone_to_add} already exists on this server!\")\n```\nOutput:\n```bash\nLOGGED IN! SessionID 1527298117\nYour new zone 'mynewdnszone1.com.br' was created with success! [0.18062's]\n{\n \"status\": 1,\n \"newZone\": {\n \"zone\": \"mynewdnszone1.com.br\",\n \"slaves\": {\n \"slave\": [\n {\n \"slaveAddress\": \"10.10.10.61\",\n \"slavePort\": \"53\"\n },\n {\n \"slaveAddress\": \"10.10.10.71\",\n \"slavePort\": \"53\"\n }\n ]\n },\n \"key\": \"20240122002100-ZSK-257-61062\",\n \"keytag\": \"61062\",\n \"digestType\": \"SHA256\",\n \"digest\": \"2f90743ef64d8f30544b58f1ae124cab1bf95660304897bb52b0e01e97a658f1\"\n },\n \"elapsedTime\": 0.18062\n}\n```\n## Fase final de testes\n\nEst\u00e1 sendo realizado os \u00faltimos testes e estamos implementado algumas valida\u00e7\u00f5es e blindagens contra erros de input do usu\u00e1rio. A biblioteca estar\u00e1 disponivel at\u00e9 o final de Jan/2024.\n\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "ezDnsShim",
"version": "0.9.0",
"project_urls": {
"Homepage": "https://github.com/rabuchaim/ezDnsShim"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "3b0782890a929fc41316346734aeab1ab9fab1decf4fc5d4404863ff71cdbd9f",
"md5": "cabd739119e6c32242e465c66ec89282",
"sha256": "5410eea89d9a10422b930507bc8ae13e3ee2336273f543399ff4053d693cd399"
},
"downloads": -1,
"filename": "ezDnsShim-0.9.0.tar.gz",
"has_sig": false,
"md5_digest": "cabd739119e6c32242e465c66ec89282",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 4698,
"upload_time": "2024-01-22T03:45:31",
"upload_time_iso_8601": "2024-01-22T03:45:31.725799Z",
"url": "https://files.pythonhosted.org/packages/3b/07/82890a929fc41316346734aeab1ab9fab1decf4fc5d4404863ff71cdbd9f/ezDnsShim-0.9.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-01-22 03:45:31",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "rabuchaim",
"github_project": "ezDnsShim",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "ezdnsshim"
}