Skip to content

Hackeando o GIL para Linux

qua, 2013/04/10

Entendendo a Razão

Primeiramente, por quê hackear o GIL? Como descrevi no post Servidor GIL (e Cadsus Simplificado) em Linux, podemos usar um sistema operacional Linux para servir o banco de dados do GIL, só que com isso vem um problema: O executável do GIL, o GIL.exe, não está preparado para um servidor Linux.

Como assim? Calma, vou explicar bem direitinho! Para o GIL acessar seu banco de dados ele precisa de três informações: o IP do servidor, o diretório onde se encontra o banco de dados e o nome do arquivo do banco de dados, algo como o seguinte:

192.168.1.55:/var/lib/firebird/gil/bdgil.fdb

Êpa! Mas péra aê! Eu já vi algo parecido antes! É verdade, você já viu algo “parecido” no arquivo de configuração do GIL, o Gil.ini. Neste arquivo temos a seguinte linha:

Diretorio=192.168.1.55:/var/lib/firebird/gil

OK, mas onde está o resto? está faltando “/bdgil.fdb”. Pois é! É aí onde mora o problema do GIL.exe. Dentro dele tem o resto do caminho para o banco de dados do GIL, mas em formato Windows. Por causa das barras, sabe. Em Linux as barras são normais, iguais às barras de datas (/). Não somente em Linux, mas em vários sistemas operacionais, como Unix e Mac OS. Eu até arriscaria dizer que todos os sistemas operacionais são assim, exceto o Windows. Como o tio Bill quer ser diferente, inventou de usar barras ao contrário (\) em seu SO. Ou seja, no GIL.exe tem “\bdgil.fdb”! E é essa maldita barra ao contrário, que o Datasus poderia ter feito sem ela, que atrapalha tudo!

Com o GIL.exe do jeito que ele é originalmente, o GIL pede ao servidor Linux o seguinte:

/var/lib/firebird/gil\bdgil.fdb

O servidor, logicamente, não entende bulhufas! Dando um erro bem bonitinho no cliente. Seria muito, mas muito interessante mesmo, que o Datasus fizesse o favor de remover essa maldita barra ao contrário do GIL.exe. Aí era só colocar ela no Gil.ini e pronto! Não seria necessário esse procedimento que vou explicar. Não seria necessário nem eu estar fazendo esse post!

Mas como a realidade é outra, vamos a diante, nosso objetivo é fazer com que o GIL solicite ao servidor Linux o seguinte:

/var/lib/firebird/gil/bdgil.fdb

E para isto precisamos mudar a barra no GIL.exe. Entendeu?

Editor Hexadecimal

Você vai precisar instalar em seu computador um editor hexadecimal:
Windows: HxD – Freeware Hex Editor and Disk Editor
Linux Gnome: Bless Hex Editor
Linux KDE: Okteta

Hackeando

Pegue, de uma das máquinas com GIL instalado, uma cópia do arquivo GIL.exe e abra-o com o seu editor hexadecimal. Utilize a ferramenta de busca do editor, geralmente acessada através do conjunto de teclas CTRL+F, para encontrar a sentença hexadecimal abaixo:

6C 6C 00 00 00 FF FF FF FF 01 00 00 00 5C 00 00 00 FF FF FF FF 09 00 00 00 62 64 67 69 6C 2E 66 64 62

Após encontrar esta sentença, nela você terá que substituir o 5C por 2F, substituindo assim a barra ao contrário (\) por uma barra convencional (/). Observe do lado direito do editor que é mostrado, dentre outros caracteres, o texto “\bdgil.fdb”, o qual é alterado para “/bdgil.fdb”.

Depois de editar, é só salvar o arquivo e substituí-lo no cliente GIL. Alternativamente, você pode salvar com um nome diferente, algo como GIL-Linux.exe ou, como eu costumo fazer, gil-xxxx-linux.exe, sendo que xxxx é a versão do GIL em questão.

Versões Antigas do GIL

Para versões do GIL anteriores à versão 4.0.30, existe mais um problema com as tais barras. Agora o problema encontra-se no caminho para o arquivo do banco de dados do Cadsus Simplificado. O problema é semelhante, pois, onde o GIL deveria solicitar:

/var/lib/firebird/cadsus/banco/DB_CNS.GDB

Ele solicita algo que o servidor Linux não compreende:

/var/lib/firebird/cadsus\banco\DB_CNS.GDB

Hackeando Novamente

Para corrigir o problema do caminho para o arquivo do banco de dados do Cadsus Simplificado, abra o executável do GIL com o editor exadecimal e busque pela sentença exadecimal abaixo:

11 00 00 00 5C 62 61 6E 63 6F 5C

Da mesma forma você terá que substituir 5C por 2F, mas aqui são duas vezes, pois são duas barras. Observe do lado direito do editor que é mostrado o texto “\banco\DB_CNS.GDB”, o qual é alterado para “/banco/DB_CNS.GDB”.

Agora é só salvar e utilizar.

Anúncios

From → GIL

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: