ezDnsShim


NameezDnsShim JSON
Version 0.9.0 PyPI version JSON
download
home_pagehttps://github.com/rabuchaim/ezDnsShim
SummaryezDnsShim
upload_time2024-01-22 03:45:31
maintainerRicardo Abuchaim
docs_urlNone
authorRicardo Abuchaim
requires_python>=3.7
licenseMIT
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # 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"
}
        
Elapsed time: 0.32127s