> For the complete documentation index, see [llms.txt](https://josedemelo-if.gitbook.io/dldap/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://josedemelo-if.gitbook.io/dldap/master.md).

# 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
