jCommon — Biblioteca Core Crítica
Shared unit mais crítica do projeto. 99.6% dos 1.635 BPLs dependem dela. Nunca modificar sem avaliar impacto global.
Localização
source/jCommon/
Units (17 units críticas)
| Unit | Responsabilidade |
|---|---|
jSessao.pas | Loader de módulos BPL — LoadPackage + GetProcAddress('iniciar') |
jDB.pas | Abstração de banco — TFDConnection, TFDQuery. ⚠️ SQL injection via Format() |
jBase.pas | Configuração base — credenciais, constantes. ⚠️ FTP hardcoded |
jSeguranca.pas | Autenticação e controle de acesso |
jLicenca.pas | Controle de licenças do ERP |
jMenu.pas | Construção dinâmica do menu |
jReport.pas | Engine de relatórios (carrega FastReport/ReportBuilder BPLs) |
jMessage.pas | Mensagens e erros padronizados |
jAuditoria.pas | Log de auditoria de operações |
jClasses.pas | Classes base customizadas |
jUtils.pas | Funções utilitárias gerais |
jValidate.pas | Regras de validação |
jRequisicoes.pas | Cliente HTTP (comunicação com APIs Java) |
jChave.pas | Geração e validação de chaves |
jBigInteger.pas | Aritmética de grandes números |
jExplorer.pas | Explorador de arquivos/diretórios |
jTraducao.pas | Internacionalização / localização |
jSessao.pas — Loader BPL
É o coração da arquitetura BPL:
// Carrega um módulo sob demanda
procedure TGerenciadorProgramas.AbrirModulo(NomeBPL: string);
begin
hLib := LoadPackage(NomeBPL);
Proc := GetProcAddress(hLib, 'iniciar');
Proc(); // executa o módulo
end;
// Descarrega após uso
procedure TGerenciadorProgramas.DescarregarModulo;
begin
FinalizePackage(hLib);
FreeLibrary(hLib);
end;
jDB.pas — Abstração de Banco
Wrapper sobre FireDAC para acesso ao Banco de Dados:
- Gerencia conexões TFDConnection
- Executa TFDQuery / TFDStoredProc
- ⚠️ Problema: usa
Format()para montar SQL — vulnerabilidade de SQL injection sistêmica em todos os módulos
jReport.pas — Motor de Relatórios
- Carrega BPLs de layout de relatório (pasta
Leiautes/) - Suporta FastReport e ReportBuilder (migração incompleta)
- Loader equivalente ao jSessao, mas para relatórios
Impacto de Modificações
jCommon alterado
│
▼
Recompilar 1.629 BPLs dependentes
│
▼
Novo deploy de todos os módulos
Regra: nunca modificar jCommon sem revisão de impacto em todo o sistema.
Dependentes
- Desktop Delphi — carregamento de módulos
- jPesquisa — depende de jCommon para busca
- jFaturamento — depende de jCommon para DB e sessão
- jFinanceiro, jCaixa, jBoleto — todos dependem
- Todos os 104 famílias de módulos BPL