Clipper On Line • Ver Tópico - SeFaz Class e ACBrLib não foram feitas para Servidores Linux

SeFaz Class e ACBrLib não foram feitas para Servidores Linux

Discussão sobre desenvolvimento de software para atender as exigências da legislação fiscal e tributária (ECF, TEF, SINTEGRA, NF-e, ECD, EFD, etc.)

Moderador: Moderadores

 

SeFaz Class e ACBrLib não foram feitas para Servidores Linux

Mensagempor NiltonGM » 28 Jun 2021 13:32

A tecnologia muda constantemente, a maneira de trabalhar com redes e servidores mudou também, constantemente bato nessa tecla no forum do ACBrLib, (sou assinante), infelizmente eles não cortaram o cordão umbilical com Delphi que os prendem a servidores em redes locais. Isso não é só com eles, nós também em Harbour, ficamos presos no mundo Windows e sua maravilhosa GUI, mas o mundo CLOUD é Linux CentOS Server, Ubuntu Server... Minha maior dificuldade é conseguir uma biblioteca (paga ou Open Source) que rode em Linux sem GUI em servidores Cloud (VPS). Antes que alguém diga: "Ah, ACBrLib tem suas DLL's para Linux", tem sim, mas são para Desktop com interface gráfica (GUI), ninguém conseguiu fazer ACBrLib rodar 100% em servidores Linux sem GUI porque suas dependências dependem da GUI, como o report Fort.
Por isso, faço um convite (ou seria um desafio?) ao nosso amigo Zeh (José Quintas) e/ou qualquer um com conhecimentos necessários a desenvolver a SeFaz Class em Linux (Ubuntu Server que é o mais comum e fácil), uma SeFaz Class que não dependesse das DLL's da Microsoft para se conectar com a Sefaz. Se a Sefaz class rodasse em Linux eu faria um aplicativo monitor que rodasse como um serviço no Linux, monitoraria uns diretórios e qualquer XML ou JSON colocado lá com algumas instruções em arquivos JSON, o hb-monitor faria a emissão do DFe (bem semelhante ao ACBrMonitor). Qualquer aplicação para web em qualquer linguagem poderia usar o hb-monitor para emissão de DFe.

Dificuldade: É quase impossível fazer uma aplicação em Harbour rodar como um serviço em um servidor Linux, estou apanhando muito, os colaboradores do Harbour até tentaram uma solução para me ajudar, mas muito complexa para fazer essa mágica acontecer, de modo que para um usuário DEV comum que só quer fazer uma aplicação iniciar como um serviço, torna-se demasiadamente complexa em um serviço em Harbour. https://github.com/harbour/core/issues/248
Talvez alguém aqui tenha conhecimentos suficientes para tornar isso possível e mais fácil.

Falando de Web:
PHP tem uma boa classe para NFe, PHP não é minha praia e a comunidade de PHP não é muito de compartilhar, quem lapidou essa classe guardou para si e a maioria são programadores de empresas que ganham $ com APIs.
Python, tem algumas classes, a maioria inacabada porque não há ninguém usando em produção e em larga escala, tentei usar, é preciso mexer em tudo, praticamente teria que começar do zero porque dar manutenção onde você não domina bem a linguagem não é fácil.

Para resolver meu problema rapidamente é só eu usar um servidor Windows em uma VPS em nuvens, eu resolveria o meu problema, mas não o da maioria, porque a diferença de preço é gritante, veja:
VPS VM VALOR/MÊS RAM SSD vCPU
Linux VPS 4 R$ 90,00 4 GB 80 GB 2
Windows VPS 4 R$ 213,00 4 GB 110 GB 2 ** IDEAL A VPS 8 R$ 347,00/MÊS
Nilton Medeiros
nilton@sistrom.com.br
Avatar de usuário

NiltonGM
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 393
Data de registro: 05 Jun 2014 23:47
Cidade/Estado: Caieiras/SP
Curtiu: 249 vezes
Mens.Curtidas: 24 vezes

SeFaz Class e ACBrLib não foram feitas para Servidores Linux

Mensagempor Itamar M. Lins Jr. » 28 Jun 2021 13:38

Olá!
A SefazClass roda 90% no Linux.
O problema é apenas ativar a CHAVE. Se é que precisa, talvez via algum aplicativo de linha de comando. Basta dar uma vasculhada no pessoal de advocacia que já faz uso continuo disso.

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

SeFaz Class e ACBrLib não foram feitas para Servidores Linux

Mensagempor Itamar M. Lins Jr. » 28 Jun 2021 13:45

Olá!
Outra opção seria gerar o LIB do ACBr com a extensão ".a" para LINKAR no seu projeto. Não é a extensão ".SO"
Ou fazer a parte visual "se for preciso" usando Hwgui. Mas pensando bem, não tem dor de cabeça não. Ou ".so" ou ".a" vai funcionar usando ACBr(lib) no Linux.

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

SeFaz Class e ACBrLib não foram feitas para Servidores Linux

Mensagempor Itamar M. Lins Jr. » 28 Jun 2021 13:49

Olá!
É quase impossível fazer uma aplicação em Harbour rodar como um serviço em um servidor Linux, estou apanhando muito,

Não sei qual é essa dificuldade. Uso Letodbf e tem exemplos disso no Linux. uHTTPD entre outros.
Até usando sockets tem exemplos.

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

SeFaz Class e ACBrLib não foram feitas para Servidores Linux

Mensagempor NiltonGM » 28 Jun 2021 14:39

Itamar M. Lins Jr. escreveu:Olá!
A SefazClass roda 90% no Linux.
O problema é apenas ativar a CHAVE. Se é que precisa, talvez via algum aplicativo de linha de comando. Basta dar uma vasculhada no pessoal de advocacia que já faz uso continuo disso.

Saudações,
Itamar M. Lins Jr.


Fala Itamar, beleza? Não, não roda, a não ser se reescrece-la, como estou sugerindo aqui. Veja, a Sefaz class faz uso de DLL para Microsoft, usa funções que só rodam sob MS Windows, como:
win_OleCreateObject( "MSXML2.DOMDocument.5.0" )
// "msxml5.dll", "msxml5r.dll", "capicom.dll"
Nilton Medeiros
nilton@sistrom.com.br
Avatar de usuário

NiltonGM
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 393
Data de registro: 05 Jun 2014 23:47
Cidade/Estado: Caieiras/SP
Curtiu: 249 vezes
Mens.Curtidas: 24 vezes

SeFaz Class e ACBrLib não foram feitas para Servidores Linux

Mensagempor Itamar M. Lins Jr. » 28 Jun 2021 14:40

Olá!
Deixando aqui guardado.
Precisa para usar ACBr no Linux.
sudo apt install libgcrypt11-dev libxml2 libxslt1-dev libltdl-dev libxmlsec1 libssl1.0-dev 


Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

SeFaz Class e ACBrLib não foram feitas para Servidores Linux

Mensagempor NiltonGM » 28 Jun 2021 14:43

Itamar M. Lins Jr. escreveu:Olá!
Outra opção seria gerar o LIB do ACBr com a extensão ".a" para LINKAR no seu projeto. Não é a extensão ".SO"
Ou fazer a parte visual "se for preciso" usando Hwgui. Mas pensando bem, não tem dor de cabeça não. Ou ".so" ou ".a" vai funcionar usando ACBr(lib) no Linux.

Saudações,
Itamar M. Lins Jr.


Falando assim, parece fácil, mas não sei quem que pegaria os fontes feitos em Pascal e suas dependências em Delphi e transformá-las em lib de Harbour, eu sinceramente não sei como fazer isso.
Nilton Medeiros
nilton@sistrom.com.br
Avatar de usuário

NiltonGM
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 393
Data de registro: 05 Jun 2014 23:47
Cidade/Estado: Caieiras/SP
Curtiu: 249 vezes
Mens.Curtidas: 24 vezes

SeFaz Class e ACBrLib não foram feitas para Servidores Linux

Mensagempor NiltonGM » 28 Jun 2021 14:50

Itamar M. Lins Jr. escreveu:Olá!
Outra opção seria gerar o LIB do ACBr com a extensão ".a" para LINKAR no seu projeto. Não é a extensão ".SO"
Ou fazer a parte visual "se for preciso" usando Hwgui. Mas pensando bem, não tem dor de cabeça não. Ou ".so" ou ".a" vai funcionar usando ACBr(lib) no Linux.

Saudações,
Itamar M. Lins Jr.


Acho que você não leu ou não entendeu o que eu disse: reescrever a lib SeFaz Class para rodar em servidores Linux sem interface gráfica, a HWGUI é para Windows, janelas gráficas, não gera códigos para Linux sem interface gráfica. O maior problema é rodar o Harbour como um serviço no Linux, uma aplicação que não "pendura" o terminal, é executado na inicialização do Sistema Operacional e trabalha em oculto sem interface com usuário (GUI), a única interface são arquivos de logs quando há falhas.
Nilton Medeiros
nilton@sistrom.com.br
Avatar de usuário

NiltonGM
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 393
Data de registro: 05 Jun 2014 23:47
Cidade/Estado: Caieiras/SP
Curtiu: 249 vezes
Mens.Curtidas: 24 vezes

SeFaz Class e ACBrLib não foram feitas para Servidores Linux

Mensagempor NiltonGM » 28 Jun 2021 14:58

Itamar M. Lins Jr. escreveu:Olá!
Deixando aqui guardado.
Precisa para usar ACBr no Linux.
sudo apt install libgcrypt11-dev libxml2 libxslt1-dev libltdl-dev libxmlsec1 libssl1.0-dev 


Saudações,
Itamar M. Lins Jr.


Eu já tentei tudo isso, inclusive rodando o XVfb para simular uma interface gráfica no Ubuntu Server para que a ACBrLib funcionasse, mas na prática não funciona, você até consegue carregar a dll ".SO", mas dá erro ao inicializar a LIB, ora da própria LIB, ora da linguagem.
Nilton Medeiros
nilton@sistrom.com.br
Avatar de usuário

NiltonGM
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 393
Data de registro: 05 Jun 2014 23:47
Cidade/Estado: Caieiras/SP
Curtiu: 249 vezes
Mens.Curtidas: 24 vezes

SeFaz Class e ACBrLib não foram feitas para Servidores Linux

Mensagempor Itamar M. Lins Jr. » 28 Jun 2021 15:20

Olá!
Pela suas respostas, acredito que vc está perdido mesmo.
Vc não entendeu ainda como é simples.
Function main
Do while .t.
Inkey(.6)
hb_memowrit("ola.txt","nada")
EndDo

Se compilar isso com -gtnul irá criar um daemon no Linux.
Onde está a dificuldade ?
A cada 6 milesimos de segundo ele vai criar esse arquivo no HD na pasta em que for rodado. Vc apaga ele cria novamente.
Para matar um processo(daemon/etc) vc usa "kill", é pq vc tem pouco tempo de Linux. Mas usando ai que vc vai entendendo.
Usa o ps para achar ps -aux|grep nomedoseudaemon
Para filtrar seu daemon e achar o PID dele e matar ele.
kill -9 PID(nomedoseudaemon) -> IDENTIFICADOR DE PROCESSOS.(DAEMON)
Baixe o ACBr ai no seu CPU via SVN e veja que ele usa o LAZARUS não mais o Delphi como padrão e roda no Linux. Isso desde muito tempo.
Não sei como é o seu suporte, não sei se está conversando com pessoal do ACBr que usa Linux de fato, mas eu tenho aqui e já importei ele no Lazarus.
Vc tem acesso a LIB do ACBr ? É apenas "descobrir" os comandos. Acabei de importar o PFX pelo Firefox. Agora preciso entender como é feito para conversar com os provedores da SEFAZ. Só isso! E está praticamente liberado o uso da SefazClass. Do ACBr, basta conversar com o povo do suporte.
SefazClas é uma LIB não faz uso de tela nenhuma!

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

SeFaz Class e ACBrLib não foram feitas para Servidores Linux

Mensagempor Itamar M. Lins Jr. » 28 Jun 2021 15:24

Olá!
Quer rodar qualquer coisa no Linux e liberar o terminal use "&" no final!
Tipo "start" (bat) ou run(clipper) que vc está acostumado.

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

SeFaz Class e ACBrLib não foram feitas para Servidores Linux

Mensagempor NiltonGM » 29 Jun 2021 14:56

Itamar M. Lins Jr. escreveu:Olá!
Quer rodar qualquer coisa no Linux e liberar o terminal use "&" no final!
Tipo "start" (bat) ou run(clipper) que vc está acostumado.

Saudações,
Itamar M. Lins Jr.


Oi, Itamar, Aí sim! Vou testar esse "&" "ê comercial" no final para ver se libera o terminal, se funcionar os meus problemas com Harbour como serviço estão solucionados.

Sobre SEFAZ-CLASS: Eu sei que ela não faz uso de tela, minha questão são as dependências que ela necessita do Windows Microsoft para o SOAP com a Sefaz e com o certificado, como as DLLs capicom.dll, msxml5.dll e msxml5r.dll, sobre isso eu gostaria muito que o criador dela, nosso ilustre José Quintas pudesse responder se seria possível reescrevê-la para Linux ou você mesmo se tiver um bom conhecimento disso em Linux.
Essa é uma cópia do readme.txt da Sefaz Class:
1) Copiar as DLLs
Se Windows 32 bits: copiar para c:\windows\system32
Se Windows 64 bits: copiar para c:\windows\syswow64
E LInux????

2) Registrar
Tem que ser na pasta conforme acima, porque tem mais de um regsvr32.exe no Windows
E como administrador. Pelo menos uma delas não aceita registrar como usuário comum.
regsvr32.exe capicom.dll
regsvr32.exe msxml5.dll
E no Linux???

3) Somente certificados válidos, remova certificados vencidos
Os certificados são pré instalados no Windows (pelos navegadores)? Não usa direto o arquivo de certificado .pfx? E no Linux??


Na própria classe o método que faz o SOAP com webservice da Sefaz se chama "MicrosoftXmlSoapPost()", só pelo nome já dá pra ver que não vai rodar no Linux, mais adentro desse método temos uma chamada a classe/dll da MS "win_OleCreateObject()" para criar o objeto de conexão com o webservice da Sefaz. Com certeza isso não vai rodar no Linux. É nesse sentido que gostaria de ver com vocês a possibilidade de reescrever para Linux.

Agora falando da ACBRLIB. Quanto a ACBrLib, tenho a biblioteca completa e atualizada, para Linux, Windows, 32 e 64 bits. Eu já testei e a turma de PHP também já testou em SERVIDOR LINUX, não roda mesmo, estou falando de ambiente de PRODUÇÃO sem tela gráfica e não de desenvolvimento. Eu mesmo tenho instalado o Lazarus para compilar, tanto no Windows como no Linux, o problema não é rodar a LIB em ambiente de desenvolvimento num desktop Linux com tela gráfica, o problema é no ambiente de PRODUÇÃO em Linux Server sem interface gráfica, o componente FortesReport que faz parte da biblioteca ACBrLib necessita obrigatoriamente da Interface gráfica, tem a ver com a geração dos PDF das DANFe/DACTe/DAMDFe. Mesmo que você não use a geração de PDFs, essa lib não roda. Como eu disse, vc pode até carregar ela sem erro, mas ao executar uma função, dá pau, eu testei com Python sem sucesso e outras pessoas tentaram em PHP também sem sucesso.
Nilton Medeiros
nilton@sistrom.com.br
Avatar de usuário

NiltonGM
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 393
Data de registro: 05 Jun 2014 23:47
Cidade/Estado: Caieiras/SP
Curtiu: 249 vezes
Mens.Curtidas: 24 vezes

SeFaz Class e ACBrLib não foram feitas para Servidores Linux

Mensagempor Itamar M. Lins Jr. » 29 Jun 2021 15:27

Olá!
com certeza isso não vai rodar no Linux.

Isso mesmo, mas é como eu disse antes, é 10% e 90% está ok, roda tranquilo no Linux.

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

SeFaz Class e ACBrLib não foram feitas para Servidores Linux

Mensagempor Itamar M. Lins Jr. » 29 Jun 2021 15:39

Olá!
sem interface gráfica, o componente FortesReport que faz parte da biblioteca ACBrLib necessita obrigatoriamente da Interface gráfica,

Entenda que vai acontecer com qualquer produto!
Ora se tem que ver a NFe ? e Imprimir a NFe e mandar por email a NFe ?
Vc precisa mudar a abordagem diante desse impasse. Como vc vai ver a NFe ? Na NFe sai uma frase por exemplo "Não ENVIADA..." e outros problemas.
Veja bem que vc vai precisar fazer essa interação, mas acredito que vc está contando com o NAVEGADOR para fazer isso via Python, PHP etc.
Ou melhor vc pode comprar esses serviços de emissão e impressão e guarda dos documentos.

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

SeFaz Class e ACBrLib não foram feitas para Servidores Linux

Mensagempor JoséQuintas » 29 Jun 2021 19:04

De forma direta e objetiva:

Não entendi merd. nenhuma....

Nem sequer entendi se o Harbour entra no meio dessa história toda.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18009
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Próximo



Retornar para Legislação Fiscal e Tributária

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 2 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro