# Configuração do Cardscan Web Server

## Introdução

Esse manual descreve a configuração dos componentes do lado do servidor do *GBS CardScan*. O GBS Cardscan é uma aplicação que permite o usuário criar layouts e processar fichas com informações biométricas e biográficas.

O procedimento de configuração deve ser feito somente depois do passo de instalação. Para mais informações, consulte o [Manual de Instalação do GBS Apps](/componentes-web/gbsappssetup.md).

## Configuração

Os passos de configuração são:

1. Configure o Tomcat;
2. Configure os Certificados;
3. Gere a senha criptografada;
4. Finalize as configurações no arquivo config.properties.

Todos os passos são descritos abaixo. Um exemplo do arquivo `config.properties` pode ser visto na seção [Exemplo do Arquivo de Configuração](#exemplo-do-arquivo-de-configuracao).

{% hint style="danger" %}
Todas as linhas devem estar presentes no arquivo de configuração. Comentar ou deletar linhas pode causar comportamentos inesperados. Para informações adicionais, contate o Time de Suporte da Griaule.
{% endhint %}

### Configuração do Tomcat

Edite o arquivo de configuração do Tomcat para configurar os certificados e a porta que a aplicação usará.

```sh
vi /var/lib/tomcats/cardscan/conf/server.xml
```

Para mudar a porta, procure por `connector port=`. Essa é a porta para operações backend.

A porta padrão do GBS CardScan é `8087`.

### Configuração de Certificados

Para habilitar autenticação SSL, procure por `connector port=` no arquivo `/conf/server.xml`.

Existem duas entradas. A comentada é a configuração para SSL. Remova os delimitadores de comentários `<!--` e `-->`, então ajuste os seguintes parâmetros:

```properties
port="58194"
keystoreFile="/home/griaule/keystore"
keystorePass="password"
keyAlias="1"
clientAuth="true"
truststoreFile="/home/griaule/keystore"
truststorePass="password"
```

O parâmetro `port` deve ser a porta de rede desejada para a aplicação.

Mude o caminho do `keystoreFile` e o `truststoreFile` para os valores apropriados. Faça o mesmo para o `keystorePass` e o `truststorePass`.

O parâmetro `clientAuth="true"` irá requerer autenticação do servidor para o cliente e do cliente para o servidor. Isso significa que o cliente necessitará importar o certificado no navegador para poder acessar a aplicação.

{% hint style="warning" %}
Quando **clientAuth** é definida como *true*, o administrador do sistema deve fornecer o arquivo **certificate.pfx** para os usuários finais.
{% endhint %}

### Criptografia da senha do Banco de Dados

No arquivo `config.properties`, o parâmetro `jdbc.password` é uma senha criptografada. Para gerar a senha criptografada, siga os seguintes passos:

1. Vá para o seguinte diretório:

   ```sh
   cd /var/lib/tomcats/cardscan/webapps/gbs-cardscan-server/WEB-INF/lib
   ```
2. Execute o comando:

   ```sh
   java -cp gbs-common-db-<versão>.jar com.griaule.commons.util.EncryptUtil <senhaDesejada>
   ```
3. A senha criptografada aparecerá depois da mensagem: *"Encrypted password is:"*

{% hint style="info" %}
Guarde a senha criptografada. Ela será usada em configurações posteriores.
{% endhint %}

### Arquivo de Configuração da Aplicação

Para configurar o arquivo, abra-o com:

```sh
vi /var/lib/tomcats/cardscan/conf/config.properties
```

As mudanças mais importantes nesse arquivo são os parâmetros `jdbc.url`, `jdbc.username`, `jdbc.password` e `gbds.url`. Configure-os de acordo com seu ambiente.

O arquivo de configuração completa é mostrado na seção [Exemplo do Arquivo de Configuração](#exemplo-do-arquivo-de-configuracao)

{% hint style="info" %}
Lembre-se de substituir a senha criptografada gerada na seção [Criptografia da senha do Banco de Dados](#criptografia-da-senha-do-banco-de-dados) neste arquivo.
{% endhint %}

#### Configurando a checagem de números de ID lidos por OCR

Ao importar cartões de uma pasta de um servidor, é possível verificar se o número de ID lido por OCR do cartão está dentro de um intervalo indicado pelo nome da pasta do servidor.

Para fazer isso, no servidor, nomeie a pasta de acordo com o seguinte padrão:

```html
<nome_da_pasta>_<id_inicial>_<id_final>
```

Por exemplo, se o nome da pasta for `cartoes_1000_2000`, o sistema verificará se o número de ID lido por OCR está entre 1000 e 2000. Os que não estiverem dentro desse intervalo receberão o status `Revisão manual pendente` e aguardarão a revisão manual.

Para habilitar esse recurso, no arquivo `config.properties`, adicione:

```properties
findRgInRegion=true
check.folder=true
keyId=<nome_chave>
remove.point.character=true
```

Isso fará:

* `findRgInRegion`: Otimizar o OCR para ler uma região maior e procurar pela chave desejada.
* `check.folder`: Validar se o número de ID está dentro do intervalo esperado. Caso não esteja, o cartão será marcado para revisão manual.
* `keyId`: Nome da chave que o sistema procurará. Exemplo: `RG`.
* `remove.point.character`: Remover todos os pontos `.` e hífens `-` do número de ID.

#### Configurações do CardScan

O último passo é configurar o IP e a porta da aplicação que o usuário final irá acessar. Ele deve ser o mesmo IP e porta configurado na seção [Configuração do Tomcat](#configuracao-do-tomcat).

```properties
cardscan.ip=<ip>
cardscan.port=<port>
cardscan.protocol=<protocol>
```

{% hint style="warning" %}
Certifique-se de que os parâmetros de configuração `cardscan.ip`, `cardscan.port` e `cardscan.protocol` estejam corretamente especificados no arquivo `config.properties`. Em diversos casos, o IP será o mesmo para diversas aplicações. Contudo, cada aplicação possuirá uma porta **diferente e única**.
{% endhint %}

## Finalizando as Configurações

Após completar todos os passos de configuração, volte para o [Manual de Instalação do GBS Apps - Seção de Configuração](/componentes-web/gbsappssetup.md#configuracoes).

## Exemplo do Arquivo de Configuração

Essa seção mostra um exemplo do arquivo `config.properties`.

```properties
# GBS Cardscan Server

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://192.168.0.200:3306
jdbc.username=root
#jdbc.password=CDrt8vbewA2YAubPNOLZkw==
#jdbc.password=SescVYZrpjEiiqEdviFwiQ==
jdbc.password=CDrt8vbewA2YAubPNOLZkw==
jdbc.dialect=org.hibernate.dialect.MySQLDialect
jdbc.showSql=false

gbds.url=http://192.168.0.200:8085
gbds.user=ranger
gbds.key=Griaule.123
gbds.logLevel=DEBUG
gbds.timeout=300

bcc.localPort=64041

fingerprint.useSDK=true

locale=en_us

segmentation.debug=true
segmentation.sizeFactor=2000.0
segmentation.fingerprint.minQuality=10
segmentation.fingerprint.extraction=false
segmentation.finishAction=CHECK

config.saveOriginalImagesOnDatabase=true
config.saveOriginalImagesOnGBDS=true
config.keepDatabaseOriginalImagesOnGBDSOK=true
config.keepDatabaseBiometricsOnGBDSOK=true
config.jpegQuality=95
config.threadNumber=8
config.maxZipFileSize=2048000000

# 2GB
config.useNSOCR=false

# Face quality warnings and errors
faceQuality.NO_EYES_AND_MOUTH=error
faceQuality.NO_CROP=error
faceQuality.NOT_SATURATED=error
faceQuality.FACE_TURNED_DOWN=error
faceQuality.FACE_TURNED_UP=error
faceQuality.FACE_TURNED_LEFT=error
faceQuality.FACE_TURNED_RIGHT=error
faceQuality.LOOKING_DOWN=error
faceQuality.LOOKING_UP=error
faceQuality.LOOKING_LEFT=error
faceQuality.LOOKING_RIGHT=error
faceQuality.USING_HEAVY_GLASSES=error
faceQuality.EYE_OBSTRUCTION=error
faceQuality.FACE_CORRECT_POSITION=error
faceQuality.NUMBER_OF_FACES=error
faceQuality.SHOULDER_CORRECT_POSITION=error
faceQuality.SHOULDER_TURNED_LEFT=error
faceQuality.SHOULDER_TURNED_RIGHT=error
faceQuality.TOO_CLOSED_EYES=error
faceQuality.TOO_OPENED_EYES=error
faceQuality.OPENED_MOUTH=error
faceQuality.SHOWING_TEETH=error
faceQuality.SMILING=error
faceQuality.RED_EYE=error
faceQuality.BLURRED_PICTURE=error
faceQuality.BUSY_BACKGROUND=error
faceQuality.CROP_OUT_OF_ORIGINAL_PICTURE=error
faceQuality.qtdeMinErrors=0

# Turns on face ICAO analysis
useICAO=true

zip.baseDir=/home/griaule

server.id=cardscan3
config.send.searchType=ALL_FINGERS
label.cardscan.use=true

cardscan.ip=192.168.0.189
cardscan.port=8087
cardscan.protocol=http

findRgInRegion=false
remove.point.character=false
```


---

# 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://docs.griaule.com/componentes-web/cardscanwebconfig.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.
