Skip to main content

O diretório de configuração

FIREFLO_CONF_DIR decide onde vivem os quatro arquivos de configuração, e move os quatro juntos.
Um valor relativo — incluindo o padrão conf — resolve contra o diretório de trabalho do processo, não contra o artefato.Isso está certo para um checkout e errado para um serviço. Uma unit com WorkingDirectory=/opt/fireflo e sem FIREFLO_CONF_DIR lê /opt/fireflo/conf/, que não é onde alguém editou nada. Uma instalação empacotada define isso como caminho absoluto.
Cada arquivo ainda pode ser movido sozinho, e um override por arquivo vence sobre FIREFLO_CONF_DIR. Origens de ambiente ficam em precedência mais alta que application.properties: Na imagem Docker o diretório de trabalho é /work, então o diretório padrão de configuração é /work/conf. Veja Docker.

Padrões de propriedade em nível de gateway

Qualquer lookup outSms.instance.<name>.<property> que não encontra valor cai para outSms.default.<property> antes do padrão interno. Isso dá uma baseline que todo worker herda, sobrescritível por instância:
A palavra duplicada em outSms.default.default.tlvs.submit está correta. O primeiro default é a camada de fallback; o segundo é parte do nome da propriedade default.tlvs.submit.
Então uma configuração de worker resolve por três camadas, do mais específico primeiro:
1

outSms.instance.<name>.<key>

O valor próprio deste worker, vindo de smsg.properties ou de app_worker_property em modo de banco.
2

outSms.default.<key>

A baseline do deployment inteiro.
3

O padrão codificado

Para onde o fornecedor ou listener cai quando nada define. Listados em Configurações SMPP.
Nem toda configuração pode ser escopada a um listener. Uma que não pode fica na forma nua, lê um global que ninguém define, e portanto lê o padrão codificado independentemente de como você configure.whitelist.tlvs.replace foi assim uma vez, e não carimbou nada por SMPP enquanto durou. Se uma configuração por listener parece não fazer nada, esta é a primeira coisa a checar.

Os quatro arquivos

Em modo db todo file watcher recua e nenhum destes é lido depois do startup, exceto smsg.properties, que continua sendo lido no startup, porque a chave de origem e o datasource precisam vir de algum lugar. Veja Banco de dados.

Endpoints OpenAPI

Enquanto o servidor HTTP está rodando:
Prefira a referência REST API deste site a qualquer documento OpenAPI do qual você gere um cliente. Uma especificação mais antiga ainda está em circulação, tipando custom_tlvs como um array que o parser rejeita e omitindo product inteiramente.