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