# DLDAP

**LDAP (Lightweight Directory Access Protocol)**, é um protocolo de aplicação aberto, livre de fornecedor e padrão de indústria para acessar e manter serviços de informação de diretório distribuído sobre uma rede de Protocolo da Internet (IP). Serviços de diretório desempenham um papel importante no desenvolvimento de aplicações intranet e Internet permitindo o compartilhamento de informações sobre usuários, sistemas, redes, serviços e aplicações através da rede.

O DLDAP tem como objetivo fornecer uma interface amigável para o gerenciamento de uma base LDAP. Com ele, é possível adicionar, remover, alterar e consultar usuários, grupos e máquinas cadastrados em uma base LDAP que deve atender a uma estrutura básica.

Para executar o DLDAP na sua máquina, é só seguir as instruções a seguir.

## 1. Configurações Iniciais

### 1.1 Instalando o cliente OpenLDAP

Primeiramente, instale o cliente do OpenLDAP para realizar consultas, modificações e deleções via terminal.

```bash
# yum install epel-release
# yum update
# yum install openldap openldap-clients
```

{% hint style="info" %}

* `openldap` — Contém as bibliotecas necessárias para executar servidores e clientes OpenLDAP.
* `openldap-clients` — Contém ferramentas de linha de comando para visualizar e modificar diretórios em um servidor LDAP.
  {% endhint %}

### 1.2 Instalando o Dialog

O Dialog é um programa usado para desenhar interfaces amigáveis para o usuário, com botões e menus, a partir de um Shell Script (programa feito para funcionar no interpretador de comandos (prompt) padrão do UNIX/Linux).&#x20;

Para instalar o Dialog no CentOS, execute os seguintes comandos:

```bash
# yum install dialog
```

### 1.3 Instalando o Python

O Python foi utilizado para gerar senhas criptografadas para os usuários da base LDAP. Para instalar o Python, execute o seguinte comando:

```bash
# yum install python3
```

### 1.4 Configurando o arquivo /etc/hosts

Caso ainda não tenha um servidor DNS respondendo pelos servidor LDAP, configure o hostname ldap1 apontando para o IP do servidor LDAP.

```bash
# vim /etc/hosts
----------------------------------
10.3.1.13 ldap1 ldap1.jose.labredes.info
```

### 1.5 Criando o arquivo de configuração *.config*

Coloque aqui os dados da base LDAP que deseja gerenciar, como por exemplo:

```bash
# cd dldap/
# vim .config
--------------
base:dc=jose,dc=labredes,dc=info
user:cn=admin,dc=jose,dc=labredes,dc=info
userPassword:jldap
```

Existe um arquivo ***.config.example*** no repositório da aplicação contendo a estrutura que o arquivo deve manter.

{% hint style="info" %}
IMPORTANTE: Para o DLDAP funcionar corretamente, a base LDAP informada no arquivo ***.config*** deve ter a seguinte estrutura:
{% endhint %}

![Figura 1. Exemplo de base LDAP gerenciável via DLDAP](/files/-LuxQ0T56AB8xMmEVDPi)

{% hint style="success" %}
Se a base configurada no arquivo de configuração seguir essa estrutura e o usuário fornecido tiver permissões para realizar alterações na mesma, o DLDAP irá funcionar corretamente.
{% endhint %}

## 2. Como utilizar a aplicação

Executando o DLDAP:

```bash
# cd dldap/
./dldap.sh
```

Algumas instruções sobre como interagir com as telas geradas pelo Dialog:

* Utilize as setas:arrow\_up::arrow\_down: para navegar pelas opções dos menus.
* Utilize a tecla **TAB** ou as setas:arrow\_right::arrow\_left: para selecionar uma das opções localizadas na parte inferior da janela, geralmente "OK" e "Cancelar/Voltar".
* Utilize a tecla **ENTER** para executar a ação desejada.&#x20;
* Em checklists ou radiolist use a tecla **SPACE** para selecionar as opções desejadas. Em um checklist mais de uma opção pode ser marcada, enquanto em um radiolist apenas uma pode ser selecionada.&#x20;
* A tecla **ESC** pode ser usada para cancelar ações, voltar janelas e sair do programa (caso esteja na tela inicial).

## 3. Recursos utilizados

### 3.1 Dialog

Para construir a aplicação, os seguintes tipos de caixa do Dialog foram utilizados:

#### Menu

```bash
# dialog                                       \
   --title 'Perfil'                          \
   --menu 'Escolha o perfil da instalação:'  \
   0 0 0                                     \
   mínima       'Instala o mínimo'           \
   completa     'Instala tudo'               \
   customizada  'Você escolhe'
```

![Figura 2. Menu Dialog](/files/-Luxd2aL6jnAxkF2KeJY)

#### Checklist

```
# dialog                                      \
   --title 'Seleção dos Componentes'        \
   --checklist 'O que você quer instalar?'  \
   0 0 0                                    \
   syntax  'Arquivos de sintaxe'      on    \
   mouse   'Suporte a mouse'          off   \
   color   'Suporte a cores'          on    \
   beep    'Driver avançado de som'   off
```

![Figura 3. Checklist Dialog](/files/-Luxd2aOMCjEpnaNHRGL)

#### Radiolist

```bash
# dialog                                           \
   --title 'Pergunta'                            \
   --radiolist 'Há quanto tempo você usa o Vim?'  \
   0 0 0                                         \
   iniciante  'até 1 ano'      on                \
   experiente 'mais de 1 ano'  off               \
   guru       'mais de 3 anos' off
```

![Figura 4. Radiolist Dialog](/files/-Luxd2aNBE5DNvZ3mmkB)

#### Msgbox

```bash
# dialog                                            \
   --title 'Parabéns'                             \
   --msgbox 'Instalação finalizada com sucesso.'  \
   6 40
```

![Figura 5. Msgbox Dialog](/files/-Luxd2aM-9ehx7D5Bn-7)

#### Passwordbox

```bash
# dialog                                           \
   --title 'Novo Usuário'                         \
   --passwordbox 'Por favor, forneça uma senha:'  \
   0 0
```

![Figura 6. Passwordbox Dialog](/files/-Luxd2aQhAPilDHuJwwA)

#### Inputbox

```bash
# dialog                                           \
   --title 'Novo usuário'                         \
   --inputbox 'Nome do usuário:'  \
   0 0
```

![Figura 7. Inputbox Dialog](/files/-Luxd2aJfz-2_QXS0GGI)

#### Yesno

```bash
# dialog                                          \
   --title 'AVISO'                              \
   --yesno '\nO Vim foi instalado e configurado.\nVocê quer executá-lo agora?\n' \
   0 0
```

![Figura 8. Yesno Dialog](/files/-Luxd2aP0RfAx47eJi_H)

### 3.2 OpenLDAP client

Para realizar as modificações na base, foram usados os seguintes comandos do pacote **OpenLDAP client**:

#### ldapadd

Utilizado para adicionar objetos na base LDAP.

Formato geral de uma inserção utilizando o **ldapadd**:

```bash
$  ldapadd -x -D 'user' -H ldap://ip_do_servidor -f object.ldif -W
```

#### &#x20;**ldapsearch**

Utilizado para realizar pesquisas na base LDAP.

Formato geral de uma pesquisa utilizando o **ldapsearch:**

```bash
$ ldapsearch -LLL -x -D 'user' -H ldap://ip_do_servidor -b 'base' 'filtro' atributos -W
```

#### ldapmodify

Utilizado para realizar alterações na base LDAP utilizando arquivos **ldif**.

Formato geral de uma alteração na base LDAP via **ldapmodify**:

```bash
$ ldapmodify -x -D 'user' -H ldap://ip_do_servidor -f object.ldif -W
```

#### ldapdelete

Utilizado para remover objetos da base LDAP.

Formato geral de uma exclusão utilizando o **ldapdelete**:

```bash
$ ldapdelete -x -D 'user' -H ldap://ip_do_servidor 'object' -W 
```

## 4. Referências

* JARGAS, Aurelio. **Dialog --tudo**. Disponível em: <https://aurelio.net/shell/dialog/> Acesso em: 15 de novembro de 2019
* JARGAS, Aurelio. **Canivete Suíço do Shell (Bash)**. Disponível em: <https://aurelio.net/shell/canivete/> Acesso em: 22 de novembro de 2019
* DIGITAL OCEAN. **How To Use LDIF Files to Make Changes to an OpenLDAP System.** Disponível em: <https://www.digitalocean.com/community/tutorials/how-to-use-ldif-files-to-make-changes-to-an-openldap-system>. Acesso em: 20 de novembro de 2019


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://josedemelo-if.gitbook.io/dldap/master.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
