# Criando o Módulo

Compreender como o modulo é organizado dentro do sistema é o primeiro passo para desenvolver.

Para tanto, tenha em mente que cada modulo deve ser representado por um diretório com nome exclusivo, escrito em minúsculo e armazenado no diretório **/modulos/servidores**.

Dentro do diretório são armazenados os arquivos do modulo, sendo os mais importantes **moduloExemplo.php** (nome do modulo) e **funcoes.php** (nome padrão).

*\*index.php é apenas uma proteção para o diretório*

Junto desse material você recebeu os arquivos de exemplo para o desenvolvimento do primeiro modulo, que desmembramos abaixo.

#### Arquivo /modulos/servidores/moduloExemplo/moduloExemplo.php

Esse é o arquivo inicial do modulo, deve ser armazenado dentro do diretório do modulo que está sendo criado.

**Seu nome deve ser o mesmo nome do diretório acrescido de .php Aqui se inicia a configuração do modulo.**

#### Variável $modulo\_servidor\['moduloExemplo']

```php
<?php 
# CONFIGURAÇÃO DE IDENTIFICAÇÃO DO MÓDULO.

$modulo_servidor['moduloExemplo']=array(

	'nome'=>"moduloExemplo",			/* informar o nome do modulo conforme nome do arquivo (respeitando maiusculas e minúsculas).
										   Não usar caracteres especiais ou espaços */
	
	'nome_visivel'=>"Modulo de Exemplo Servidor" /*Nome do seu módulo visível no painel HOSTMGR*/
);
```

É uma variável do tipo array que recebe informações básicas sobre o modulo.

A chave desse array e o valor da chave “nome” devem ser o nome do seu modulo, ou seja, o nome dado ao diretório do modulo e ao arquivo editado, nesse caso, “**moduloExemplo**”.

Quanto a chave “nome\_visivel”, é o nome do modulo que será exibido ao usuário do sistema quando da utilização do modulo no hostmgr.

#### Variável $modulo\_servidor\_campos\['moduloExemplo']

```php
$modulo_servidor_campos['moduloExemplo']=array(

	array('textfield',	'Login:',		'login',	300,	'',	true,	'',						''),
	array('password',	'Senha:',		'senha',	300,	'',	false,	'',						'Para não alterar, deixe em branco'),
	array('textarea',	'Access Remote Key:',	'hash',		300,	10,	false,	'',						''),
	array('checkbox',	'&nbsp;',		'ssl',		300,	10,	false,	array('SIM','Usar conexão segura SSL'),		''),
);
```

São os campos de configuração do módulo.

Neste array são gerados os campos que o administrador deverá preencher ao criar um servidor com esse modulo de integração.

Os campos comumente cadastrados são: Email, Login, Senha, Chave de Acesso, Token, dentre outros dados configuráveis que você possa precisar para se conectar ao servidor e API que serão integrados.

As configurações serão realizadas em **configurações -> servidores -> servidor -> configurações do modulo**, quando em uso.

Os campos são gerados na ordem cadastrada seguindo a regra de um array/campo por linha como no arquivo de exemplo.

#### Variável $modulo\_servidor\_produto\['moduloExemplo']

```php
$modulo_servidor_produto['moduloExemplo']=array(
	array('textfield',	'Plano no WHM (package):',	'plano',	300,	'',		true,	'',		''),
	array('textfield',	'Feature List (ACL):',	'featurelist',	300,	'',		false,	'',		'Se o produto for uma revenda. <strong>Deixe em branco para "Default"</strong>'),

);
```

Contem informações sobre os campos de configuração do modulo. Neste array são gerados os campos de configuração dos produtos que utilizarão o modulo de integração. Os campos serão preenchidos ao configurar o produto.

Os campos comumente cadastrados são: espaço, plano, ouvintes, dentre outros limites que possa ser configurado para cada conta/plano específico.

Os campos ficam localizados em configurações -> produtos e serviços -> produto -> configurações do modulo.


---

# 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://hostmgr.gitbook.io/desenvolvedores/modulos-de-integracao/provisionamento-servidores/criando-o-modulo.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.
