Ir para conteúdo
  • Cadastre-se

leoprates

Membros Pro
  • Total de ítens

    47
  • Registro em

  • Última visita

  • Days Won

    1

leoprates last won the day on 6 Abril 2013

leoprates had the most liked content!

Sobre leoprates

Últimos Visitantes

O bloco dos últimos visitantes está desativado e não está sendo visualizado por outros usuários.

leoprates's Achievements

  1. Pessoal, O Lucas que faz o serviço da nuvem para nós conseguiu resolver. Ele viu que hoje o Daniel enviou o passo a passo e no fim enviou a versão das ferramentas. Ao testar com o node 12 funcionou. Antes disso testamos da 14 para cima .
  2. Daniel, vou seguir os passos que você recomendou. Apenas uma dúvida, no link da instalação (https://acbr.sourceforge.io/ACBrLib/ComoInstalarDistribuir.html) é dito que devo "copiar as Bibliotecas, para algum dos diretórios do LibPath do Sistema operacional, como por exemplo: /usr/lib64". A quais bibliotecas esse trecho se refere? Seriam das libs openssl, libxml2 e libgtk2.0-0?
  3. Bom dia pessoal! Seria possível o Daniel InfoCotidiano me passar o passo a passo de como ele configurou o ambiente dele? Testei de diversas maneiras no WSL Ubuntu, em uma VM, com Docker, e também pedi para o pessoal de infraestrutura que lida com nossos serviços na nuvem usando AWS testar, mas todos sempre encontram o mesmo problema que eu.
  4. Mais uma coisa, quando testo o certificado com openssl s_client ele retorna "verify error:num=20:unable to get local issuer certificate"
  5. Renato, testando o certificado com o curl tenho retornos diferentes quando usando o PFX e quando o transforme em PEM. Certificado PFX root@maure:/home/node/Projeto# curl -I --cert ./tmp/certificado/certificado.pfx --pass minha_senha https://hom1.nfe.fazenda.gov.br/NFeDistribuicaoDFe/NFeDistribuicaoDFe.asmx curl: (58) could not load PEM client certificate, OpenSSL error error:0480006C:PEM routines::no start line, (no key found, wrong pass phrase, or wrong file format?) Certificado PEM + key curl -I --cert ./tmp/certificado/certificado.pem --key ./tmp/certificado/chave-privada.pem -k https://hom1.nfe.fazenda.gov.br/NFeDistribuicaoDFe/NFeDistribuicaoDFe.asmx Enter PEM pass phrase: HTTP/1.1 405 Method Not Allowed Cache-Control: private Content-Length: 3508 Content-Type: text/html; charset=utf-8 Server: Microsoft-IIS/8.5 X-AspNet-Version: 4.0.30319 X-Powered-By: ASP.NET Date: Tue, 17 Oct 2023 12:15:45 GMT
  6. Instalei a versão 1.1.1f do OpenSSL e continuo na mesma situação. SSLType eu testei cada um deles e, os que são compativeis, retornam sempre a mesma mensagem do log em anexo. ACBrLibNFE-20231016.log
  7. Boa tarde a todos! Seguindo a última recomendação do Renato e do Daniel e também reinstalando meu ubuntu do zero, o erro de Segmentation Fault parou de ocorrer. Agora, apenas o erro abaixo está sendo exibido. Daniel, poderia me enviar seu acbrlib.ini para eu verificar se pode ser alguma propriedade não preenchida ou preenchida de maneira incorreta? O openssl está na versão correta "OpenSSL 1.1.1q 5 Jul 2022". Tentei deixar um arquivo em anexo com os comandos que utilizei na configuração do ambiente, porém o servidor não permite o envio (então enviarei como .rar) Log: 16/10/23 16:40:42:979 - TLibNFeConfig.AplicarConfiguracoes: ./tmp/acbrlib.ini 16/10/23 16:40:42:979 - Travar 16/10/23 16:40:42:979 - TLibNFeConfig.AplicarConfiguracoes - Feito 16/10/23 16:40:42:979 - Destravar 16/10/23 16:40:42:979 - SetRetorno(0, ) 16/10/23 16:40:42:980 - NFe_DistribuicaoDFePorUltNSU(35,06319316000127,000000000000001) 16/10/23 16:40:42:980 - Travar 16/10/23 16:40:42:980 - NFe_DistribuicaoDFePorUltNSU, Executar 16/10/23 16:40:42:998 - Destravar 16/10/23 16:40:42:998 - SetRetorno(-16, WebService Distribuição de DFe: - Inativo ou Inoperante tente novamente. Erro Interno: -2 Erro HTTP: 500 URL: https://hom1.nfe.fazenda.gov.br/NFeDistribuicaoDFe/NFeDistribuicaoDFe.asmx error:140AB18E:SSL routines:func(171):reason(398) MotivoRetornadoDoWebService: "") 16/10/23 16:40:42:999 - LIB_Finalizar 16/10/23 16:40:42:999 - Finalizar comandos.rar
  8. Boa tarde Renato! Testei a execução do método da Distribuição com o ambiente mais limpo possível (utilizei o exemplo do SVN). Executando o script no windows com a DLL o código funciona corretamente (assim como meu código com serverless, caso testado no windows). Ao executar no linux com a lib SO ele retorna o erro Segmentation Fault. Criei um repo no github com o código e um readme.md para facilitar a simulação para vocês. Segue o link: https://github.com/Maurelima/acbr-demo-linux.git
  9. Claro! Estou enviando um link para download, pois ao tentar anexar o arquivo aqui é exibido um erro. https://mega.nz/file/tjQAWaja#6dOBC3sxUqYrxLQGrXy6beboGcG7ChKENbTq5qMy1JU
  10. Debugando com segfault-handler o retorno é o log abaixo: NFE_DistribuicaoDFePorUltNSU PID 24905 received SIGSEGV for address: 0x18 /home/node/erp-cloud-recepcao-xml-automatica/.esbuild/.build/node_modules/segfault-handler/build/Release/segfault-handler.node(+0x37a5)[0x7f4bb009f7a5] /lib/x86_64-linux-gnu/libpthread.so.0(+0x14420)[0x7f4bb23b2420] /lib/x86_64-linux-gnu/libpthread.so.0(pthread_rwlock_wrlock+0x16)[0x7f4bb23abd46] node(CRYPTO_THREAD_write_lock+0x9)[0x1966af9] node(ossl_x509v3_cache_extensions+0x3e)[0x19dbbde] node(X509_get_extension_flags+0x11)[0x19dca81] /usr/local/lib/libssl.so(+0x6c4a5)[0x7f4b904c84a5] /usr/local/lib/libssl.so(SSL_CTX_use_certificate+0x2a)[0x7f4b904a021a] /home/node/erp-cloud-recepcao-xml-automatica/assets/acbr/dllacbrnfe/bin/Linux/libacbrnfe64.so(+0x50a452)[0x7f4b92425452] Segmentation fault
  11. Criei um novo ambiente do zero e o problema continua. (recepcao-2) root@maure:/home/node/erp-cloud-recepcao-xml-automatica# openssl version OpenSSL 1.1.1q 5 Jul 2022 Ou da o erro de segmentation ou o do log 13/10/23 14:24:56:644 - NFe_DistribuicaoDFePorUltNSU(35,06319316000127,000000000000001) 13/10/23 14:24:56:644 - Travar 13/10/23 14:24:56:644 - NFe_DistribuicaoDFePorUltNSU, Executar 13/10/23 14:24:56:700 - Destravar 13/10/23 14:24:56:700 - SetRetorno(-16, WebService Distribuição de DFe: - Inativo ou Inoperante tente novamente. Erro Interno: -2 Erro HTTP: 500 URL: https://hom1.nfe.fazenda.gov.br/NFeDistribuicaoDFe/NFeDistribuicaoDFe.asmx error:140AB18E:SSL routines:func(171):reason(398) MotivoRetornadoDoWebService: "") 13/10/23 14:24:56:703 - LIB_UltimoRetorno 13/10/23 14:24:56:703 - MoverStringParaPChar. StrLen:272, BufLen:39000 13/10/23 14:24:56:703 - Codigo:-16, Mensagem:WebService Distribui[195][167][195][163]o de DFe:[CR][LF]- Inativo ou Inoperante tente novamente.[LF]Erro Interno: -2[LF]Erro HTTP: 500[LF]URL: https://hom1.nfe.fazenda.gov.br/NFeDistribuicaoDFe/NFeDistribuicaoDFe.asmx[LF]error:140AB18E:SSL routines:func(171):reason(398)[LF][LF] MotivoRetornadoDoWebService: ""
  12. Olá, Diego! No windows tem funcionado sem problema. Meu microsserviço de emissão de NFE funciona no mesmo ambiente que o de recepção de XML e não da problema com o SSL. Para sanarmos essa possibilidade removi o openssl instalado, vou criar um novo ambiente no WSL com conda e instalar todas as dependências do zero para testar. Logo menos retorno. De já, obrigado pelo retorno!
  13. Bom dia Renato! Alterei as const para let mas não funcionou. Os métodos que utilizo antes desse são o NFE_Inicializar e o NFE_ConfigGravarValor que funcionam corretamente. Simplifiquei ao máximo o método NFe_DistribuicaoDFePorUltNSU mas ao chegar nele é acusado o erro Segmentation fault ou é gerado o log em anexo. ACBrLibNFE-20231013.log
  14. Ainda com relação ao problema, na maioria das vezes (independente do tamanho so buffer) o erro Segmentation Fault é retornado. No entanto, algumas vezes o código executa e retorna o erro: 'WebService Distribuição de DFe:- Inativo ou Inoperante tente novamente.\n' + 'Erro Interno: -2\n' + 'Erro HTTP: 500\n' + 'URL: https://hom1.nfe.fazenda.gov.br/NFeDistribuicaoDFe/NFeDistribuicaoDFe.asmx\n' + 'error:140AB18E:SSL routines:func(171):reason(398)'. Diego, peço desculpas por ter enviado o código por escrito. Tentei enviar por arquivo e não consegui. Todas as tentativas a página me deu erro com código -200.
  15. Pessoal, tentei implementar as sugestões, porém ainda recebo o erro de Segmentation fault. Vou deixar o código abaixo para que possam avaliar. import ref from "ref-napi"; import acbrDLL from "../acbrDLL"; import EnvProtocol from './protocols/Env.protocol'; import { AcbrProtocol } from './protocols/Acbr.protocol'; import AcbrIniProtocol from './protocols/AcbrIni.protocol'; import { Result } from "./Result"; import { Util } from './Util'; interface IResponse { success: boolean; data?: object | any | undefined; message?: string | undefined; } type ResponseDFes = { success: boolean; DistribuicaoDFe: any; message?: string; }; class Acbr implements AcbrProtocol { constructor( private readonly acbrIni: AcbrIniProtocol, private readonly env: EnvProtocol, private readonly result: Result, private readonly utilResult: Util ) { } private readonly BUFF_LENGTH = 16000; private readonly chaveCrypt: string = ""; private aloc_sResposta = Buffer.alloc(this.BUFF_LENGTH); private aloc_esTamanho = ref.alloc(ref.types.int, this.BUFF_LENGTH); init() { let result: number = 0; result = acbrDLL.NFE_Inicializar(this.acbrIni.path, this.chaveCrypt); this.result.check(result, "NFE_Inicializar"); this.setup(); } private setup() { this.acbrIni.setValue( "DFe", "Senha", "minha_senha" ); this.acbrIni.setValue( "Email", "Nome", this.env.getProperty("MAIL_DESCRIPTION")!! ); this.acbrIni.setValue( "Email", "Servidor", this.env.getProperty("MAIL_SERVER")!! ); this.acbrIni.setValue( "Email", "Usuario", this.env.getProperty("MAIL_USER")!! ); this.acbrIni.setValue( "Email", "Senha", this.env.getProperty("MAIL_PASSWORD")!! ); this.acbrIni.setValue( "Email", "Porta", this.env.getProperty("MAIL_PORT")!! ); this.acbrIni.setValue("Email", "SSL", this.env.getProperty("MAIL_SSL")!!); this.acbrIni.setValue("Email", "TLS", this.env.getProperty("MAIL_TLS")!!); } finish() { const result = acbrDLL.NFE_Finalizar(); this.result.check(result, "NFE_Finalizar"); } async getFinalResponse(length: number): Promise<IResponse> { return new Promise((resolve, reject) => { const aloc_sResposta = Buffer.alloc(length); const aloc_esTamanho = ref.alloc(ref.types.int, length); acbrDLL.NFE_UltimoRetorno.async( //@ts-ignore aloc_sResposta, aloc_esTamanho, (err: any, result: any) => { try { if (err) throw new Error(err); this.utilResult.checkResult(result); resolve({ success: true, message: Util.sTrim(aloc_sResposta.toString()), }); } catch (error) { reject({ success: false, message: error, }); } } ); }); } async checkPointerResponse( result: number, alocResposta: Buffer, alocLength: ref.Pointer<number> ): Promise<any> { try { this.utilResult.checkResult(result, "NFE_DistribuicaoDFePorUltNSU"); let message = Util.sTrim(alocResposta.toString()) || ""; const bufferLength = alocLength.deref(); let looping = true; if (bufferLength <this. BUFF_LENGTH) { looping = false; } else { if (message.length < bufferLength && message.length > this.BUFF_LENGTH) { looping = false; } else { if (message.length >= bufferLength) { looping = false; } } } if (looping === true) { // Aumentar o tamanho do buffer em 30% const novoTamanho = Math.round(bufferLength * 1.3); this.aloc_sResposta = Buffer.alloc(novoTamanho); this.aloc_esTamanho = ref.alloc(ref.types.int, novoTamanho); const resUltimoRetorno = await this.getFinalResponse(novoTamanho); if (!resUltimoRetorno.success) throw new Error(resUltimoRetorno.message); message = resUltimoRetorno.message || ""; } return { success: true, data: message, }; } catch (error) { return { success: false, data: error, }; } } getDFesPorUltNSU = async (num_ult_nsu_recebido: string) => { console.log("getDFesPorUltNSU"); return new Promise<ResponseDFes>(async (resolve, reject) => { const ufAutor = 35; const cnpjcpf = "06319316000127"; console.log('NFE_DistribuicaoDFePorUltNSU') acbrDLL.NFE_DistribuicaoDFePorUltNSU.async( ufAutor, cnpjcpf, num_ult_nsu_recebido, // @ts-ignore this.aloc_sResposta, this.aloc_esTamanho, async (err: any, result: number) => { try { if (err) { console.error(err); reject(err); } const response = await this.checkPointerResponse( result, this.aloc_sResposta, this.aloc_esTamanho ); console.log({ response }); } catch (error: any) { console.error(error); reject({ success: false, message: error.message, }); } } ); }); }; } export default Acbr;
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.