Neste artigo pretendo dar uma mão sobre como rodar o sistema hoteleiro da PCSystems, o SishHotel (e seus módulos irmãos, Reserva, Faturamento, etc) no LINUX. Vamos abordar tanto a instalação do servidor quanto das estações de trabalho (clientes) dando mais estabilidade e segurança ao seu empreendimento uma vez que o Brasil é um planeta à parte (por culpa das questões fiscais) na implantação de outras tecnologias de código aberto mundialmente difundidas, retendo alguns segmentos nas mãos de algumas partes muito específicas.

 Em primeiro lugar este procedimento não é endossado pela PCSystems, então ao tentar entrar em contato telefônico ou eletrônico com o suporte desta desejando mais informações sobre a instalação em linux é mais garantido que receba uma negativa e seja informado que não funciona. Então não espere suporte para linux. Você precisará de um especialista pago por você mesmo para tal.

 Mas não é exatamente verdade que seja impossível fazer executar, então enquanto as minhas orelhas já estão queimando, eu vou detalhar neste artigo como fazer para rodar tanto o servidor quanto o cliente em linux. E as meninas do suporte vão amar (SQN).

Trabalhei por algum tempo em um ambiente de hotelaria e este precisou migrar toda sua estrutura de windows para linux em caráter de urgência (tema para uma outra hora).

Naquela época fui intimado a fazer esse milagre acontecer e como missão dada é missão cumprida, passei a mão em alguns spins *buntu 14.04 (que era o LTS da época) e fui aos trabalhos. Usei primariamente tanto o kubuntu quanto o xubuntu (cada um para sua aplicação específica). A impressora térmica usada na época era da bematech, o que também me rendeu dias de dor de cabeça para entender porquê alguns cupons simplesmente se recusavam a sair, a má vontade era tremenda por parte do suporte da bematech, então fujam dessa marca e pulem direto para a DARUMA que além de fazer os drivers compatíveis com a camada WINE de sua plataforma, ainda entram (ao menos no meu atendimento entraram) em conferencia com você e o suporte do software para sanar eventuais embaraços.

Eu consegui fazer a impressora bematech funcionar (o que levou dias sem a ajuda deles) por essas razão mais para a frente quando foi necessária a troca dos equipamentos, optamos pela daruma.

O xubuntu é super lite e por essa razão foi usado nas máquinas da recepção, reservas e nas máquinas com pouca memória  Já nos setores administrativos a preferência foi pelo kubuntu por conta da sua praticidade na criação de novas tarefas in-shell para necessidades específicas da empresa (falaremos sobre estas num artigo separado). Como ambos lembram muito a interface do sistema de redmond, ficamos com esses 2 para a equipe trabalhar sem traumas na migração. 

O SisHotel usa o firebird para sustentar o seu banco de dados. quando eu conheci o sishotel cerca de 10 ou 11 atrás este usava o firebird 2.0 e uma quantidade expressiva de UDF's auxiliares, mas desde meu último contato com este, qualquer versão de produção acima da 2.5 vai servir, então basta em seu **buntu 14.04, 18.04 ou 20.04 instalar a versão recomendada pela distro OU a versão oficial do site do firebird. =Eu= particularmente acho a versão oficial firebird 2.5.9 (apesar de estar saindo da faixa de produção da firebird) mais estável e rápida.

Durante a instalação do firebird você precisará escolher se vai trabalhar com a versão classic, super classic ou super server. Não vou abordar aqui a diferença entre essas 3 nem inclinar alguém sobre a minha preferência uma vez que ao ler este artigo eu entendo que o leitor tenha um mínimo conhecimento de linux+redes+servidores. Lembrem-se, banco de dados de terceiros é coisa séria e em sistemas como na hotelaria e companhias aéreas um transtorno causado por um "estamos sem sistema" podem ir bem além de um "ligue mais tarde" ou  "volte amanhã" por isso recomendo zelo na sua escolha, além disso para o banco da pcsystems não vai fazer diferença alguma uma vez que ele roda até naquele firebird enxuto que rodaria em qualquer windows a partir do xp. 

Um outro fato curioso é que esse banco já rodou por 5 anos tem nenhum crash por conta da plataforma (linux) sendo o único grande crash culpa da queda de energia um momento de acesso pesado (isso mesmo meus amados, a empresa não tinha um no-break para o servidor, naquela data). Nas estações de trabalho onde o uso era ainda mais pesado a únicas vezes em que foram necessárias reinstalações de sistema, foram por conta de hd's queimados (em casos semelhantes de queda de energia elétrica), nem mesmo a queima de outros dispositivos (placa mãe, ram, processador, psu) causaram problemas maiores uma vez que diferentemente do windows, na maioria das distribuições linux, você pode tirar o hd de uma máquina e transportar para uma outra e o sistema não precisará ser reinstalado, funcionando novamente de onde parou como se nada tivesse acontecido. 

Dessa forma o linux não apenas barateia o seu custo como também diminui seu downtime a níveis de poucos minutos ao ano (mesmo caso que alguém tenha a brilhante ideia de economizar nos-breaks e nos poucos hotéis por onde passei para dar consultoria / manutenção isso não era incomum).

Uma vez instalado o firebird você vai precisar conectar o banco de dados a ele. O banco de dados pode ser exatamente o que estava na máquina windows (você já entendeu que está por sua conta e a pcsystems não vai lhe ajudar na migração não é? Então, excelente, não incomode as meninas do suporte com isso e vamos continuar.).

Como eu costumo falar, o banco de dados dorme no windows e acorda no linux, (mais ou menos como quando você era criança que dormia na sala e era teleportado para o quarto durante o sono).

Mas antes de contectar caso seu estabelecimento não seja bem pequeno onde uma máquina seja a única para servidor e estação (aí nesse caso existem soluções extremamente mais baratas sishotel, cmnet e outros do mesmo patamar, ainda mais que o cmnet e daruma estão no mesmo nicho, então qualquer coisa que saia da especificação deles por uma vírgula, vão mandar você reclamar com o bispo, nesse caso a equipe que cuida do sishotel é mais zelosa com o seu empreendimento, ponto para a pcsystems), vamos abrir a porta 3050 do firebird para acesso remoto:

 

Basta mudar a configuração abaixo, no arquivo firebird.conf ,de :

#RemoteServiceName = gds_db
#RemoteServicePort = 3050

para

#RemoteServiceName = gds_db
RemoteServicePort = 3050

Nenhuma outra configuração do arquivo firebird.conf deve ser mudada além desta. ele trabalhara perfeitamente sem maiores alterações

 

Agora o pulo do gato que a pcsystems não conta, você precisa instalar algumas UDF's e são eles:

RFunc64

UDF64

e a FreeADHoc 

 

Dependendo da sua distribuição escolhida, as bibliotecas já assembladas que estão circulando na internet devem rodar a contento, caso não, basta pegar os códigos fontes em seus respectivos sites e recompilar.

Então deve-se copiar para dentro da pasta UDF de sua instalação do firebird e estas podem estar alguns lugares diferentes conforme a sua instalação, tipo estes exemplos abaixo:

 

/usr/lib/firebird/2.5/UDF/ (normalmente esta estrutura é encontrada no firebird 32 bits e a pcsystems tem abandonado o suporte a esta versão)

/usr/lib/x86_64-linux-gnu/firebird/2.5/UDF/ 

/opt/firebird/UDF (versão oficial) 

Depois vamos conectar o banco de dados (adivinhem qual é a senha que usam até hoje além de usar o nome do banco como SYSDBA?) 

sudo isql (ou sudo isql-fb conforme a sua base de instalação)

e no prompt que lhe será apresentado pelo isql(fb)

SQL> connect "/home/administrador/home/pcsystems/sishotel/dados/sishotel.fdb" user 'SYSDBA' password 'AqUeLaSeNhAFaMoSa';

 

Já para as estações de trabalho duas boas opções seriam Xubuntu (qualquer versão acima de 14.04, lembrando que estamos oficialmente na 20.04) ou o KDE Neon, evitem lubuntu e principalmente evitem a main distro ubuntu tanto para server quanto para estação. 

Para rodar o cliente nas estações será necessário o WINE, qualquer versão >= 1.8 que vai rodar todos os módulos necessários para o interfaceamento entre usuários e sistema de maneira satisfatória e (quase) sem glitches (bem, boa parte dos glitches vem de graça), A parte boa é que alguns ajustes manuais no linux tipo programar um script de inicialização corrigem os bugs mais irritantes. Um que mais me incomodava era a capacidade (não se culpa do sishotel ou do windows) do sishotel de largar processos zumbis para trás deixando a máquina (windows) pesada e evitando a abertura correta do sistema. Uma simples rotina para matar qualquer processo com o nome do módulo que se vai executar, evita que isso aconteça (coisa que não serial trivial de se fazer no windows) então podemos dizer que o sistema uma vez bem ajustado, roda melhor no linux do que no próprio windows.

 

Conforme o exemplo abaixo:

---corta---

#!/bin/bash
# Hotel

killall hotel.exe || sleep 1 && /pathdesuaescolha/pcsystems/sishotel/hotel.exe && killall hotel.exe

 ---corta---

O script acima mata qualquer processo do módulo hotel antes de executar o seu módulo de trabalho e ao fechar também elimina qualquer vestígio do módulo hotel na RAM.

 Um outro fato curioso é que (principalmente na versão 64 do sistema da pcsystems) os módulos do sishotel em geral rodam mais rápido no linux, mesmo sendo interfaceado on-the-fly do que no próprio windows. O teste foi feito comparando lado a lado numa mesma estação de trabalho acesso ao servidor linux e ao servidor windows durante a migração e as algumas estações que eram windows e migraram para linux, as estações baseadas em windows por vezes apresentavam rendimento sofrível por conta de lags, processos zumbi e o fator humano de ser impossível manter as máquinas livres de contaminação por fator externo.

 Opa! Mas nenhum móduilo está rodando ainda, Por quê?

 

Dentro da pasta caminhodesuaescolha/pcsystesm/sistehotel, o leitor encontrará vários arquivos .ini

 

dentro de cada um deles, levando em conta que o seu servidor está no endereço 192.168.0.254, encontrará linhas semelhantes a:

 

edtPastaDados_FileName=192.168.0.254:C:\PCSYSTEMS\SisHotel\dados\sishotel.fdb

troque cada uma dessas linhas em cada arquivo por:

 

edtPastaDados_FileName=192.168.0.254:/home/administrador/pcsystems/sishotel/dados/sishotel.fdb

 

E agora mesmo depois de trocado ainda não entra?

 

O pcsystem tem algumas mazelas, uma delas é o fato que de ele não reconhece a diferença entre arquivos com letras maiúsculas e minusculas, por mais que no windows você possa misturar as letras entre maiusculas e minusculas assim como no linux para fins estéticos, no windows o sistema vai entender tudo como se fossem sempre letras minusculas quando essa diferença é usada na estrutura de arquivos e diretórios, mas no linux e ambientes POSIX em geral, isso faz diferença e muita! Como a turma da pcsystemas acha "engraçadinho" colocar algumas letras maiusculas no nome dos arquivos o mais provável é que dependendo de como o adm copiou os arquivos, vai receber uma enxurrada de erros durante a tentativa de execução, para isso vamos ter que renomear todos os arquivos da pcsystems para minusculas, todinhos mesmos! Mas como eu até que sou um cara legal eu não vou deixar você ter esse trabalho de chines, vamos ver como:

 

Vá até o diretório onde está o subdiretório pcsystems (e seus sequenciais) e copie e cole os seguintes comandos:

sudo apt-get install rename -y

find pcsystems -depth -exec rename 's/(.*)\/([^\/]*)/$1\/\L$2/' {} \;

Em alguns (muitos) segundos, toda a sua estrutura de arquivos que estiver debaixo da estrututra /pcsystems/ terá sido renomeada para minusculas e seus problemas acabaram (por enquanto)

 Em cada estação de trabalho instale estes módulos:

sudo apt-get install libnotify-bin
sudo apt-get install libp11-kit-gnome-keyring:i386

Prefira sempre escolher no seu desktop linux, temas que possam incluir a rolagem de janela, uma vez que os módulos do SisHotel por vezes podem cobrir a tela de login, dessa maneira o usuário final não fica perdido. 

 Nas estações, vocês tem duas opções:

 

Copiar o sistema (exceto o banco de dados) em cada máquina (má ideia) 

Criar um compartilhamento SMB / CIFS em um diretório compartilhado para usando a camada mais rasteira possível de compartilhamento de modo que fique visível ao mais simples cliente tal como uma estação windows xp, já que o sishotel não trabalha bem com recursos avançado de rede nem mesmo entre máquinas avançadas.

Eu não vou abordar nessa página como criar um compartilhamento samba, já que iria inflar o artigo ainda mais e entendo que este artigo é direcionado a quem não está começando do zero.

Mas uma vez criada sua rede SMB, você terá que no arquivo de configuração do servidor desabilitar as extensões UNIX e descer o nível da rede a NT1.

Eu particularmente prefiro nas estações montar a estrutura de arquivos do servidor já no fstab usando as credenciais da conta original do diretório onde tudo ficará hospedado e setar ali mesmo as autorizações (chmod). Com isso você dá aos usuários (recepção, setor de reservas, etc) rigorosamente apenas as autorizações que você deseja para cada caso e também em caso de instabilidade na rede, fica muito fácil consertar qualquer problema na rede fazendo o que eles sempre souberam fazer no windows, que é reiniciar a máquina, e tudo volta ao normal.

 

Na parte 2 desse artigo voltaremos com algumas dicas de otimização e algumas telas de exemplo.

 

Um grande abraço e fiquem com Deus,

Vinicius Beltrão