IBQUOTA

(Impressão Barrada por QUOTA de usuário)


HOME

Documentação

Download

Contribuições

Links

Contato


Versão Atual:
GIT IBQUOTA 3.1


Versão Antiga:
IBQUOTA 2.4.1




Modelagem de Implementa��o do IBQUOTA 2


Descri��o das fun��es PERL


Fun��o Descri��o Respons�vel Status
LER_CONFIGURACOES L� as vari�veis GLOBAIS do sistema, do arquivo de configura��o ibquota.conf. PATH_LPR; PATH_LPSTAT; PATH_LPRM; TEMPO_DE_ESPERA; PATH_MYSQL; HOST_BANCO; PORTA_BANCO; USUARIO_BANCO; SENHA_BANCO; NOME_BANCO; Se alguma destas vari�veis n�o pude ser preenchida com sucesso, gravar no arquivo de log, ibquota.log, o erro ocorrido. Rodrigo Zadra Armond OK
INICIALIZA
_QUOTA_PADRAO
Inicializa as quotas de impress�o automaticamente de acordo com a tabela "INICIALIZACAO". Deve ser observado que h� tipos de pol�ticas que possuem as seguintes peculiaridades:
QUOTA_ACUMULATIVA: Se este campo estiver setado (1) a nova quota ser�: quota antiga mais quota padr�o.
QUOTA_INFINITA: Se estiver setado (1), n�o fazer nada.
OBS: No campo "tabela_modulo_perl" est� o nome da tabela onde as quotas de usu�rios dever�o ser inicializadas.
OBS1: Limitar a quantidade maxima de quota de um usu�rio, quando este estiver com quota_acululativa setado. Limitar em 16000.
Valcir C. OK
GRAVA_LOG
(mensagem)
Grava a "mensagem" no arquivo de log, ibquota.log. Rodrigo Zadra Armond OK
REMOVE_JOB
(impressora, job)
Remove o job especificado da impressora. Utilizado para remover jobs da impressora VIRTUAL. Valcir C. OK
TESTA_JOB
(nome_arq_job)
Testar: se o arquivo tempor�rio do job existe; Valcir C. OK
MONTA_ARQUIVO
_JOB
(job)
Retornar o nome do arquivo tempor�rio na fila de impress�o virtual de um job especificado. Lembre-se que o arquivo tem o formato d00001-001 (quase sempre), onde o "00001" � o n�mero do job. Valcir C. OK
NUMERO_PAGINAS
_JOB
(arquivo_job)
Se o tipo do job for PostScript, chamar a fun��o PSCOUNTER(). Se for PCL, chamar a PCLCOUNTER(). Se for outro tipo retornar ZERO e gravar a mensagem de log "Formato de arquivo invalido.". O parametro "arquivo_job" dever ter o path inteiro do arquivo. Valcir C. OK
FORMATO_ARQ
(arquivo_job)
Retorna o formato do arquivo. O parametro deve tb conter o path do arquivo. Valcir C. OK
PSCOUNTER
(arquivo_job)
Retorna o n�mero de p�ginas do arquivo PS. Valcir C. OK
PCLCOUNTER
(arquivo_job)
Retorna o n�mero de p�ginas do arquivo PCL. Rodrigo Zadra Armond OK
LISTA_IMPRESSORAS Retorna a lista de impressoras cadastradas no sistema QUE esteja atribu�da a pelo menos um grupo de usu�rios. Valcir C. OK
LISTA_JOBS
_IMPRESSORA
(impressora)
Retorna uma lista com os jobs da impressora especificada. Valcir C. OK
DONO_JOB
(impressora,job)
Retorna o dono do job. Valcir C. OK
TABELA_QUOTA_IMPRESSAO
(impressora, login)
Retorna o nome da tabela de quotas do usu�rio, que se encontra no campo "tabela_modulo_perl" da tabela tipo_politica. Valcir C. OK
VALOR_PAGINA_IMPRESSAO
(impressora, login)
Retorna o valor de cada pagina. Se quota infinita retornar 0. Valcir C. OK
QUOTA_LOGIN
(impressora, login)
Retorna a quota de impress�o do usu�rio (login) para a impressora especificada. Se a quota for infinita, retornar "-1". Esta fun��o serve para a maioria das pol�ticas de impress�o. Ela acessa a tabela de quotas do usu�rio que se encontra no campo "tabela_modulo_perl" que se encontra na tabela tipo_politica. Se a tabela contida no campo "tabela_modulo_perl" n�o existir retornar "0" e gravar no log que a mesma n�o existe. Valcir C. OK
IMPRIME_BANNER
(login, impressora)
Se o tipo de pol�tica aceitar banner: ler o arquivo de banner e trocar os s�mbolos.
Veja tabela de s�mbolos:
_USUARIO_ = Nome do dono do job.
_JOB_ = N�mero do job.
_IMPRESSORA_ = Nome da impressora.
_PAGINAS_ = Quantidade de p�ginas do job.
_QUOTA_ATUAL_ = Imprime a quota atual do
                usu�rio (j� debitado a
                impress�o corrente).
_DATA_ = Data atual.
_HORA_ = Hora Atual.

OBS: O Banner ser� impresso diretamente na impressora REAL.
Valcir C. OK
DEBITA_QUOTA
_USUARIO
(arquivo_job,login, impressora)
Verifica o valor da impress�o por p�gina e debita da quota do usu�rio(login). Evetuar os logs de impressoes. Se quota infinita retornar 1. Se quota insuficiente retornar 0. Se quota suficiente retornar 1. Valcir C. OK
TESTA_QUOTA
_INFINITA
(login, impressora)
Atrav�s do login e impressora verificar se a pol�tica est� setada como quota infinita. Se for quota infinita retornar 1. Valcir C. OK
TESTA_QUOTA
_ACUMULATIVA
(login, impressora)
Atrav�s do login e impressora verificar se a pol�tica est� setada como quota acumulativa. Se for quota acumulativa retornar 1. Valcir C. OK
EXECUTA_MODULO
_IMPRESSAO_USUARIO
(login,impressora, arquivo)
Identifica e executa a fun��o que controla o m�dulo de impress�o. Se o campo "funcao_perl" estiver em branco ou conter a string "padrao" chamar a fun��o "IMPRIME_JOB" Valcir C. OK
IMPRIME_JOB
(login,impressora, arquivo)
Imprime o arquivo passado por parametro. Verifica se quota infinita. Verifica quota do usuario. Verifica BANNER. Est� fun��o serve para a maioria das politicas de impress�o. Valcir C. OK
MANDA_ARQ_IMPRESSORA
(impressora,arquivo,login)
Imprime o arquivo passado por parametro na impressora REAL. A impressora passador por parametro � a VIRTUAL. Imprimir o arquivo como o login sendo o dono do job. Valcir C. OK
DORMIR(segundos) Coloca o IBQUOTA para "dormir" os seguntos especificados. Utilizando o comando sleep do Sistema Operacional. Valcir C. OK
NOME_ESTACAO_JOB Retorna o nome da esta��o que enviou o JOB. Valcir C. OK
DIA_DO_MES Retorna o dia do mes. Valcir C. OK
SPOOL_IMPRESSORA(impressora) Retorna o path da fila de impress�o da impressora Virtual especificada. Ex "/usr/local/cups/var/spool/" Valcir C. OK
MANDA_ARQ
_IMPRESSORA (impressora,arquivo_job,login)
Manda o arquivo literalmente para a impressora, utiliza o comando LPR. Retorna 0 se tudo ok e 1 se houve algum problema. Valcir C. OK
EXECUTA_BANCO(sql) Executa a variavel sql passada como parametro e retorna de resultado uma lista. Se houver erro mostrar o variavel sql na tela e retornar NULL. Decidir o acesso ao banco, via script ou via DBI. Valcir C. 50%
GRAVA_LOG_
IMPRESSOES
(login,impressora,erro)
Preenche o registro da tabela "impressoes". Valcir C. OK
-


C�digo fonte do "main" do IBQUOTA 2

#!/usr/bin/perl -w
#
# IBQUOTA 2.0
# 29/03/04 - Valcir C.
#
# Inserir cabecalho padrao, com a GPL


# Variavel com valores das configuracoes utilizadas no script
%configuracoes=("PATH_LPR"," ","PATH_LPSTAT"," ",
                "PATH_LPRM"," ","TEMPO_DE_ESPERA"," ",
                "PATH_MYSQL"," ","USUARIO_BANCO"," ",
                "SENHA_BANCO"," ","NOME_BANCO"," ",
                "HOST_BANCO"," ","PORTA_BANCO"," ");

#Adiciona as funcoes utilizadas
require "funcoes.pl";

#use DBI();

#Ler as configuracoes
&LER_CONFIGURACOES();

$dia = &DIA_DO_MES();
$hoje = $dia;

while (1 == 1) { # "infinito"
   #Verifica se eh um novo dia, se sim, executar a funcao INICIALIZA_QUOTA_PADRAO
   $hoje = &DIA_DO_MES;
   if ($hoje != $dia) {
      &INICIALIZA_QUOTA_PADRAO();
      $dia = $hoje;
   }
  @impressoras = &LISTA_IMPRESSORAS();
  foreach $impressora (@impressoras) {
    @jobs = &LISTA_JOBS_IMPRESSORA($impressora);
    #Verifica se ha jobs
    if ($#jobs < 1) {
     next; # proxima impressora
    }
    $SPOOL_IMPRESSORA=&SPOOL_IMPRESSORA($impressora);
    foreach $job (@jobs) {
      $arquivo_job = &MONTA_ARQUIVO_JOB($job);
      if (&TESTA_JOB($SPOOL_IMPRESSORA + $arquivo_job) == 0) {
        # Arquivo tempor�rio de impress�o inexistente
        &GRAVA_LOG(4); #Arquivo temporario do job nao identificado
        &REMOVE_JOB($impressora,$job);
        next; # proximo job
      }
      $dono_job = &DONO_JOB($arquivo_job);
      if ($dono_job == NULL) { # Login n�o cadastrado
        &GRAVA_LOG(4); #Arquivo temporario do job nao identificado
        &REMOVE_JOB($impressora,$job);
        next; # proximo job
      }
      &EXECUTA_MODULO_IMPRESSAO_USUARIO($dono_job,$impressora,$arquivo_job);
    }
  }
  &DORMIR($configuracoes{'TEMPO_DE_ESPERA'});
}


Descri��o das p�ginas do GERENCIADOR GR�FICO(GG)


Fun��o / P�gina Descri��o Respons�vel Status
ibquotagg.gif Logo do Gerenciador Gr�fico do IBQUOTA. Valcir C. -
cabecalho.php Retorna o c�digo HTML do cabe�alho. Valcir C. OK
menu Fun��o que retorna o c�digo HTML do menu lateral esquerdo. Valcir C. OK
rodape.php Retorna o c�digo HTML do rodap�. Valcir C. OK
inc_usuario.php Cadastra Usu�rio. Verificar se n�o h� mais de um usu�rio com o mesmo login. Atribuir um grupo. Valcir C. OK
alt_usuario.php Alterar Usu�rio, apenas o login. Valcir C. OK
exc_usuario.php Excluir Usu�rio. Excluir o hist�rico deste usu�rio. Valcir C. OK
inc_grupo.php Cadastra Grupo. Verificar se n�o h� mais de um grupo com o mesmo nome. Carlos A N Pereira OK
alt_grupo.php Alterar Grupo. Carlos A N Pereira OK
exc_grupo.php Excluir Grupo. Verificar todos os usu�rios deste grupo e apag�-los. Incluindo o hist�rico dos mesmos. Carlos A N Pereira OK
cad_impressora.php Cadastra Impressora. Verificar se n�o h� mais de uma impressora com o mesmo nome. Valcir C. OK
alt_impressora.php Alterar Impressora. Valcir C. OK
exc_impressora.php Excluir Impressora. Verificar todas as pol�ticas que utilizam esta impressora e apag�-las. Incluindo o hist�rico das mesmas. Valcir C. OK
atribuir_politica.php Atribuir uma pol�tica de impress�o a um grupo de usu�rios. Valcir C. 95%
alt_quota_usuario.php Alterar quota de impress�o de um usu�rio especifico. Verificar se o usu�rio j� possui quota infinita. NONE -
rel_impressoes.php Relat�rio: Impress�es, apresentar todas as impress�es (com o sem sucesso) da �ltima para a primeira. Valcir C. OK
rel_imp_usuario.php Relat�rio: Impress�es por usu�rio. Dado um usu�rio, mostrar as impress�es deste. Valcir C. OK
rel_imp_grupo.php Relat�rio: Impress�es por grupo. Dado um grupo, mostrar as impress�es realizadas pelos usu�rios deste grupo. Valcir C. OK
rel_imp_impressora.php Relat�rio: Impress�es por impressora. Dado uma impressora, mostrar as impress�es realizadas pelos usu�rios que imprimiu. Valcir C. OK
rel_dezultimas.php Relat�rio: 10 �ltimas Impress�es com ou sem sucesso. Com reload de 8 segundos. NONE -
rel_imp_erro.php Relat�rio: Impress�es sem sucesso. Mostrar as impress�es com o status de erro setado. NONE -
rel_geral.php Relat�rio: Gerencial. Mostrar o total de p�ginas impressas, quantidade de p�ginas impressas por cada grupo. Quantidade de p�ginas impressas por impressora. NONE -
NONE -


Tabela de c�digo de status de Impress�o(status_impressao)


C�digo Descri��o ERRO
1 OK - Impresso com sucesso 0
2 Usu�rio n�o cadastrado 1
3 Usu�rio sem quota 1
4 Arquivo tempor�rio de impress�o n�o encontrado 1
5 Formato de arquivo n�o PS (postscript) 1
6 Formato de arquivo n�o PCL 1
7 N�o foi poss�vel determinar quantidade de p�ginas 1
8 Usuario com Quota insuficiente 1
9 Fun��o da tabela de modulos de impress�o inexistente 1
10
*ERRO=0: Arquivo impresso.
*ERRO=1: Impress�o cancelada.


Copyleft 2003. IB - UNICAMP