quarta-feira, 12 de junho de 2013

Instalando Jasmine para bilhetagem de impressão.

Esse é um post antigo que estava no meu antigo blog, notei que até hoje ele é muito acessado, então dei um ctrl+c e um ctrl+v nele, espero que ainda seja útil:


A muito tempo venho tentando encontrar um software que me forneça informações sobre o que os usuários da minha rede andam imprimindo, e essa é uma necessidade não só minha mas de vários administradores de rede por esse mundão a fora, bem depois de muita pesquisa e muito teste encontrei alguns que supriram minhas necessidades, e o mais importante fosse de graça.

Hoje vou falar sobre um deles, chamado Jasmine, ele foi desenvolvido em PHP, Perl, python e MySQL, roda em plataforma Unix e funciona em conjunto com o CUPS, e quando sai uma impressão ele pega todos os dados e joga em uma base de dados em MySQL que posteriormente pode ser consultada em qualquer browser de internet via PHP.

O JASmine está na versão 0.0.3 e pode ser baixado no próprio site no endereço:

http://jasmine.berlios.de/dokuwiki/doku.php

Ele é composto em 3 partes:

A primeira parte é um banco de dados em MySQL.

A segunda parte é um script em Perl para escutar as impressoras e guardar as informações de impressão na base de dados MySQL, utiliza também o programa pkpgcounter feito em python que conta números de páginas de impressão independente do formato (ex: PostScript, RAW, PCL, etc…).

A última parte é a página em PHP5 que fica conectada ao banco de dados e nos fornece as informações referentes as impressões, algumas delas estão citadas abaixo:

Nome do usuário, quantidade de folhas, hora e data da impressão.
título do arquivo impresso (receita-bolo.doc, eu_e_aninha.jpg)
total de impressão de cada usuário, cada impressora, cada servidor(se tiver mais que 1).

Sua instalação e configuração é simples porem requer um pouco de conhecimento na plataforma Linux e seus comandos básicos.

Pré requisitos:

- cups (e suas dependencias, pacotes de PPD’s e etc)
- httpd
- mysql-server
- python
- python-imaging
- php
- php-mysql
- php-gd
- perl
- python-devel

No CentOS podemos usar o comando yum e instalar todos os pacotes de uma só vez:
# yum install –y cups httpd  mysql-server python python-imaging php php-mysql  php-gd python-devel perl

Após instalar, vamos para o Jasmine . . .

Vamos primeiro baixar e configurar o banco do Jasmine:
# cd /tmp/
# wget http://nayco3.free.fr/Jasmine/Releases/0.0.3/JASmine-MySQL-0.0.3.tar.bz2

O mysql-server após a istalação vem sem senha para o usuario root, alguns SOs possuem scripts para configurar isso , mas, manualmente vamos alterar para não ter problemas de acesso indesejado ao banco de dados e/ou comprometimento de segurança.
# mysqladmin -u root password senha_nova

vamos descompactar o arquivo baixado:
#  tar -zvjf JASmine-MySQL-0.0.3.tar.bz2
# cd JASmine-MySQL-0.0.3

Vamos criar a base de dados do jasmine e importar os dados do jasmine:
# mysql -u root -p
# password: *****
# mysql> CREATE DATABASE print;
# mysql> GRANT ALL ON print.* TO jasmine@localhost IDENTIFIED BY ‘sql_password’;
# mysql> FLUSH PRIVILEGES;
# mysql> exit;
# mysql -u root -p print < jasmine.sql
# password: *****

Agora vamos configurar e instalar o backend do Jasmine para o cups:
# cd /tmp/
# wget http://nayco3.free.fr/Jasmine/Releases/0.0.3/JASmine-Backend-0.0.3.tar.bz2
# tar -xvjf JASmine-Backend-0.0.3.tar.bz2
# cd JASmine-Backend-0.0.3

Dentro da pasta JASmine-Backend vamos descompactar o programa pkpgcounter-2.10.tar.gz e instalar usando o python. Lembre-se que o Python deve estar instalado no seu servidor, senão não será possível instalar o pkpgcounter.
# tar -xvzf pkpgcounter-2.10.tar.gz
# cd pkpgcpunter-2.10
# python setup.py install

Depois de instalar o pkpgcounter vamos voltar na pasta JASmine-Backend e vamos copiar o script em Perl chamado jasmine para a pasta /usr/lib/cups/backend, depois de copiado vamos na pasta backend em /usr/lib/cups/backend e vamos atribuir a permissão 755 no arquivo jasmine. Lembre-se que o Perl deve estar instalado no seu servidor senão o script não vai funcionar.
# cd ..
# cp jasmine /usr/lib/cups/backend/
# cd /usr/lib/cups/backend
# chmod 755 jasmine
# chown root jasmine

Vamos editar o arquivo jasmine e configurar nosso banco de dados. Use o editor de sua preferência, aqui estou usando o vim.
# vim jasmine

Procure pelas linhas do MySQL:
my $Dbhost=”MYSQL_HOST”; —-> Host onde se encontra o banco de dados.
my $Dblogin=”MYSQL_LOGIN”; —-> Login do usuário que vai acessar o banco.
my $Dbpassword=”MYSQL_PASS”; —-> Senha do usuário que vai acessar o banco.
my $DBdatabase=”MYSQL_DB”; —-> Nome do banco de dados do Jasmine.

E altere para:
my $DBhost=”localhost”;
my $DBlogin=”jasmine”;
my $DBpassword=”sql_password”;
my $Dbdatabase=”print”;
Procure pela linha:
my $Debug_Mode=1;

E altere para:
my $Debug_Mode=0;

Salve o arquivo e feche, reinicie o CUPS com o comando:
# /etc/init.d/cups restart

Agora vamos para etapa final, que é o JASmine-Web-0.0.3.

Lembre-se: O Apache deve estar instalado com suporte a php e funcionando.
# cd /tmp/
# wget http://nayco3.free.fr/Jasmine/Releases/0.0.3/JASmine-Web-0.0.3.tar.bz2

Descompacte a pasta JASmine-Web-0.0.3.tar.bz2, renomeie a pasta JASmine-Web-0.0.3 para jasmine e coloque na pasta onde o apache procura o site. ex: /srv/www/html/.
# tar xjf JASmine-Web-0.0.3.tar.bz2 -C /var/www/html/
# cd /var/www
# mv JASmine-Web-0.0.3 jasmine

Entre na pasta jasmine que você acabou de mover, procure pelo arquivo config.php.dist e copie para o mesmo diretório com o nome config.php.
# cd jasmine
# cp config.php.dist config.php

Agora vamos editar o arquivo config.php e configurar nosso banco de dados. Use o editor de sua preferência, no meu caso estou usando o vi.
# vim config.php

Procure pelas linhas:
// Database vars
$DB_host=”MYSQL_SERVER”; —> nome do host onde esta o banco de dados.
$DB_login=”MYSQL_USER”; —-> login do usuário que vai acessar o banco.
$DB_pass=”MYSQL_PASSWORD”; —-> senha do usuário que vai acessar o banco.
$DB_db=”MYSQL_DB”; —-> nome do banco de dados.

Altere para:
// Database vars
$DB_host=”localhost”;
$DB_login=”jasmine”;
$DB_pass=”sql_password”;
$DB_db=”print”;

Salve o arquivo e feche. Reinicie o httpd com o comando:
# service httpd restart

Praticamente a instalação terminou, agora é so acessar o CUPS e instalar as impressoras (http://localhost:631).

Obs.: por padrão a intarface de configuração web do cups so pode ser acessada de dentro do Server, ou seja pelo localhost, se quiser acessar de outra maquina tem que configurar o arquivo /etc/cups/cupsd.conf.

Um detalhe importantíssimo para o correto funcionamento é que a URI(endereço da impressora) inicie com “jasmine:”

Exemplo de URI cups = socket://ip_do_servidor:9100
Exemplo de URI cups + jasmine = jasmine:socket://ip_do_servidor:9100
Para verificar os relatórios de acessar o http://ip_do_servidor/jasmine/