Agora explicaremos, mais ou menos por cima, o que cada script faz.
Todos os scripts aceitam dois argumentos IMPORTANTES. O primeiro é o
-Pimpressora que obviamente indica qual a
impressora. Depois temos a opção -nusuário que
indica qual o usuário que está tentando realizar a impressão.
- as Primeiro chama-se o
arruma_lock.pl com a opção -s. Depois pegamos
os contadores iniciais da impressora. Note que existem dois
contadores. O primeiro diz quantas páginas foram impressas nesta
impressora (desde sempre) e o outro diz quantas páginas foram
impressas desde que a impressora foi ligado por último. Para pegar
esses contadores utilizamos a função &pega_contador()
no módulo funções_comuns.pm. Imprimimos todas as
informações nos logs devidos e caímos fora.
- filtro Aqui é feita toda a parte REAL da
sistema (inclusive a impressão). Primeiro pegamos o arquivo dado
pelo usuário e filtramos ele com o filtro
/etc/magicfilter/varzea-filter que filtra os arquivos
para impressão. Depois de filtrarmos os arquivos pegamos o
postscript resultante e contamos suas páginas. Aqui utilizamos
dois métodos para contagem de páginas, se a contagem der errada
então a impressão é cancelada e um email é mandado para o usuário
explicando o motivo do cancelamento. Depois disso o arquivo do
usuário já está liberado para imprimir, então basta verificar a
quota. Se o usuário não tiver quota de papel suficiente então a
impressão é cancelada e o usuário recebe um email, também
explicando que sua quotap acabou, caso contrário a nova quota é
setada. Antes que a impressão seja realizada o lock é
colocado (conforme explicado na seção anterior). Depois disso
logamos mais umas coisas no log e mandamos imprimir.
- ae Aqui o lock é verificado para pegarmos
casos em que a impressão, por algum motivo, imprimiu menos folhas
do que o esperado. Agora chamamos novamente o
arruma_lock.pl desta vez com opção -e. Lá
primeiro verificasse as informações do lock, como contador da
impressora antes de começar a imprimir e número de páginas que o
usuário queria imprimir. Então perguntamos para impressora
novamente qual é valor do contador. Para verificar a corretude da
quantidade de quota retirada basta verificar se o contador novo
menos o contador velho resulta no número de páginas que o usuário
mandou imprimir.
Se for então tudo ocorreu bem então podemos finalizar este
impressão. Caso contrário, verificamos quantas folhas faltou
para o fim da impressão, e devolvemos esta quantidade da quota
do usuário, já enviando-lhe um email a respeito do problema.
Livio Baldini Soares
2001-02-05