Pular para o conteúdo principal

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)​

UnitResponsabilidade
jSessao.pasLoader de módulos BPL — LoadPackage + GetProcAddress('iniciar')
jDB.pasAbstração de banco — TFDConnection, TFDQuery. ⚠️ SQL injection via Format()
jBase.pasConfiguração base — credenciais, constantes. ⚠️ FTP hardcoded
jSeguranca.pasAutenticação e controle de acesso
jLicenca.pasControle de licenças do ERP
jMenu.pasConstrução dinâmica do menu
jReport.pasEngine de relatórios (carrega FastReport/ReportBuilder BPLs)
jMessage.pasMensagens e erros padronizados
jAuditoria.pasLog de auditoria de operações
jClasses.pasClasses base customizadas
jUtils.pasFunções utilitárias gerais
jValidate.pasRegras de validação
jRequisicoes.pasCliente HTTP (comunicação com APIs Java)
jChave.pasGeração e validação de chaves
jBigInteger.pasAritmética de grandes números
jExplorer.pasExplorador de arquivos/diretórios
jTraducao.pasInternacionalizaçã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​