Prezados amigos:
Tenho um sistema em Access funcionando há 16 anos, numa rede de 10 computadores, estando o sistema dividido em back-end e front-end.
Devido a algumas mudanças na legislação, tive que criar novas rotinas e, agora, a cada registro efetuado no Access ("registro finalizado"), o VBA envia um script (uma hash) a um executável em Delphi ("AssinadorDelphi.exe"), que assina digitalmente a hash e salva o resultado num arquivo.txt numa determinada pasta do servidor (no texto: a mesma string com um enorme adendo no final). Em seguida, o VBA faz a leitura automática dessa hash assinada e gera o respectivo QRCode.
Talvez seja interessante esclarecer que, ao ser acionado pelo VBA, o "AssinadorDelphi.exe" executa uma rotina que dura, no máximo, 3 segundos, liberando, em seguida, o arquivo.txt para o Access.
Até esse ponto, a interação VBA-Delphi está funcionando perfeita e automaticamente. No entanto, o próximo passo a ser implementado está sendo um enorme desafio.
Para a geração da assinatura digital em nome da empresa (mediante certificado digital tipo A1, instalado na CPU1), o arquivo.exe em Delphi deve obrigatoriamente ser executado nessa máquina.
Portanto, eu preciso que as outras 9 máquinas tenham exatamente o mesmo poder de finalizar o registro, gerando a hash assinada e o QRCode, com o uso do único certificado digital que está instalado na CPU1. Esclareço ser (juridicamente)impossível instalar esse certificado digital em mais de uma máquina e, mesmo que isso fosse viabilizado mediante a utilização de algum "supercódigo", tal conduta configuraria um delito cibernético.
De toda a leitura que fiz internet afora, parece-me que a solução está em fazer com que o VBA executado individualmente em cada máquina da rede acione remotamente o "AssinadorDelphi.exe" na CPU1 (via OpenSSH? TelNet? OpenShell?), de forma que a execução desse aplicativo ocorra na RAM da CPU1 e não na máquina cujo VBA emitiu o comando.
O uso do TeamViewer para rodar o Access na CPU1, por exemplo, apesar de obter o resultado almejado (consegui isso em uma máquina há poucos minutos), não soluciona o problema (até cria outros), pois essa prática tornaria inútil a existência dos aplicativos Access front-end, uma vez que todas as máquinas rodariam um único aplicativo Access da CPU1, consumindo recursos e gerando riscos de perda de dados pela simultaneidade de uso.
Imagino que possa haver "uma linha de comando" escondida na manga (do João Paulo, do Avelino Sampaio, do Sérgio Vieira, do Criquio, do Harysohn e de outras feras deste fórum) que permita acionar remotamente o "AssinadorDelphi.exe" via SSH, ou, talvez, a solução esteja na confecção de uma DLL ou de um outro app.exe em VB (C#, Python, etc) que sirva tão somente para abrir esse "buraco de minhoca", tão sonhado por Einstein e Nathan Rosen.
Alguém poderia me dar uma dica?
Obrigado.
EA
Tenho um sistema em Access funcionando há 16 anos, numa rede de 10 computadores, estando o sistema dividido em back-end e front-end.
Devido a algumas mudanças na legislação, tive que criar novas rotinas e, agora, a cada registro efetuado no Access ("registro finalizado"), o VBA envia um script (uma hash) a um executável em Delphi ("AssinadorDelphi.exe"), que assina digitalmente a hash e salva o resultado num arquivo.txt numa determinada pasta do servidor (no texto: a mesma string com um enorme adendo no final). Em seguida, o VBA faz a leitura automática dessa hash assinada e gera o respectivo QRCode.
Talvez seja interessante esclarecer que, ao ser acionado pelo VBA, o "AssinadorDelphi.exe" executa uma rotina que dura, no máximo, 3 segundos, liberando, em seguida, o arquivo.txt para o Access.
Até esse ponto, a interação VBA-Delphi está funcionando perfeita e automaticamente. No entanto, o próximo passo a ser implementado está sendo um enorme desafio.
Para a geração da assinatura digital em nome da empresa (mediante certificado digital tipo A1, instalado na CPU1), o arquivo.exe em Delphi deve obrigatoriamente ser executado nessa máquina.
Portanto, eu preciso que as outras 9 máquinas tenham exatamente o mesmo poder de finalizar o registro, gerando a hash assinada e o QRCode, com o uso do único certificado digital que está instalado na CPU1. Esclareço ser (juridicamente)impossível instalar esse certificado digital em mais de uma máquina e, mesmo que isso fosse viabilizado mediante a utilização de algum "supercódigo", tal conduta configuraria um delito cibernético.
De toda a leitura que fiz internet afora, parece-me que a solução está em fazer com que o VBA executado individualmente em cada máquina da rede acione remotamente o "AssinadorDelphi.exe" na CPU1 (via OpenSSH? TelNet? OpenShell?), de forma que a execução desse aplicativo ocorra na RAM da CPU1 e não na máquina cujo VBA emitiu o comando.
O uso do TeamViewer para rodar o Access na CPU1, por exemplo, apesar de obter o resultado almejado (consegui isso em uma máquina há poucos minutos), não soluciona o problema (até cria outros), pois essa prática tornaria inútil a existência dos aplicativos Access front-end, uma vez que todas as máquinas rodariam um único aplicativo Access da CPU1, consumindo recursos e gerando riscos de perda de dados pela simultaneidade de uso.
Imagino que possa haver "uma linha de comando" escondida na manga (do João Paulo, do Avelino Sampaio, do Sérgio Vieira, do Criquio, do Harysohn e de outras feras deste fórum) que permita acionar remotamente o "AssinadorDelphi.exe" via SSH, ou, talvez, a solução esteja na confecção de uma DLL ou de um outro app.exe em VB (C#, Python, etc) que sirva tão somente para abrir esse "buraco de minhoca", tão sonhado por Einstein e Nathan Rosen.
Alguém poderia me dar uma dica?
Obrigado.
EA