# 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](https://2137356061-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lt-Vbi8eGBSYwoxt4n9%2F-Lux6uavUivdxvXmaazQ%2F-LuxQ0T56AB8xMmEVDPi%2Fbase.png?alt=media\&token=4e256c37-380a-45b5-8b90-6894ca6aaa3d)

{% 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](https://2137356061-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lt-Vbi8eGBSYwoxt4n9%2F-Lux6uavUivdxvXmaazQ%2F-Luxd2aL6jnAxkF2KeJY%2Fmenu.png?alt=media\&token=56c1a556-39b8-41f5-98ca-f5ba7d5a750c)

#### 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](https://2137356061-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lt-Vbi8eGBSYwoxt4n9%2F-Lux6uavUivdxvXmaazQ%2F-Luxd2aOMCjEpnaNHRGL%2Fchecklist.png?alt=media\&token=37f2bb07-549a-4758-86d8-f504f5a0521b)

#### 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](https://2137356061-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lt-Vbi8eGBSYwoxt4n9%2F-Lux6uavUivdxvXmaazQ%2F-Luxd2aNBE5DNvZ3mmkB%2Fradiolist.png?alt=media\&token=dc754868-780f-4cf6-9f3f-585979ed64a0)

#### Msgbox

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

![Figura 5. Msgbox Dialog](https://2137356061-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lt-Vbi8eGBSYwoxt4n9%2F-Lux6uavUivdxvXmaazQ%2F-Luxd2aM-9ehx7D5Bn-7%2Fmessagebox.png?alt=media\&token=7cfc4cee-1949-4ec9-a377-a3c550141f52)

#### Passwordbox

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

![Figura 6. Passwordbox Dialog](https://2137356061-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lt-Vbi8eGBSYwoxt4n9%2F-Lux6uavUivdxvXmaazQ%2F-Luxd2aQhAPilDHuJwwA%2Fpasswordbox.png?alt=media\&token=cd33e735-eb6e-4a20-b403-84528f046e7f)

#### Inputbox

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

![Figura 7. Inputbox Dialog](https://2137356061-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lt-Vbi8eGBSYwoxt4n9%2F-Lux6uavUivdxvXmaazQ%2F-Luxd2aJfz-2_QXS0GGI%2Finputbox.png?alt=media\&token=5596c678-e6c0-4b1f-9b73-e60cfbc0716e)

#### Yesno

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

![Figura 8. Yesno Dialog](https://2137356061-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lt-Vbi8eGBSYwoxt4n9%2F-Lux6uavUivdxvXmaazQ%2F-Luxd2aP0RfAx47eJi_H%2Fyesorno.png?alt=media\&token=3e988c5a-6091-4aca-9be4-2f908cbd7b7a)

### 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
