Página 1 de 1
.
Enviado: 03 Ago 2007 17:19
por Grings
.
Enviado: 03 Ago 2007 20:13
por rochinha
Amiguinho
Na verdade talvez voce tenha ouvido falar nela aqui.
Eu cheguei a criar uma função assim que registra locks, appends, commits, deletes, etc.
A função simplesmente estava encrustrada nos comandos REGLOCK, PPEND, COMMIT, DELETE, etc.
Exemplo:
Código: Selecionar todos
...
#xcommand DELETE ... => LogFile("DELETE"); dbDelete()
...
#xcommand PACK ... => LogFile("PACK"); dbPack()
...
Veja que o que esta colocado acima é somente um exemplo pois não me lembro bem do codigo.
Estas alterações estvm dentro de meu STD.CH.
Enviado: 03 Ago 2007 20:14
por sygecom
Tche, jah perguntou pro Emule... ?
Abraços
Leonardo Machado
Enviado: 03 Ago 2007 20:17
por Maligno
Tche, jah perguntou pro Emule... ?
Função Clipper no eMule?
Há um grande risco desse tipo de função ser encontrada no site
The Oasis.
Enviado: 03 Ago 2007 20:24
por sygecom
Bom, talvez eu fiz confusão....achei que fosse um programinha que usei a uns dois anos atraz....não reparei que o colega falou em Função...
http://baixaki.ig.com.br/download/LogfileTail.htm
Abraços
Leonardo Machado
Enviado: 03 Ago 2007 20:31
por Maligno
Sim, fez confusão, mas deixou uma dica. Empatou.
E deixo outra: se não me falha a memória, no site do Wagner tem uma função desse tipo. Foi há um bom tempo. Não lembro direito, mas acho que foi lá que vi. Link:
http://www.vagucs.com.br/dl.php
Enviado: 06 Ago 2007 12:16
por rochinha
Amiguinho
Faça uso do exemplo a seguir:
Código: Selecionar todos
FUNCTION dbCommitLog( LOG_TIPO, PROCNAME )
LOCAL ret_line := "chr(13)+chr(10)", errfile := "backup.log"
IF LOG_TIPO = 'A'
M->MINHA_INFO := 'ABERTURA'
ELSEIF LOG_TIPO = 'I'
M->MINHA_INFO := 'INCLUSAO'
ELSEIF LOG_TIPO = 'E'
M->MINHA_INFO := 'EXCLUSAO'
ELSEIF LOG_TIPO = 'M'
M->MINHA_INFO := 'MANUTENCAO'
ENDIF
M->MODULO := PROCNAME
IF !FILE(errfile)
errhandle = FCREATE(errfile)
FWRITE(errhandle,"Segue lista de processos detectados."+&ret_line.+&ret_line.)
FWRITE(errhandle,"Data Hora Operador Processo"+&ret_line.)
FWRITE(errhandle,replicate("-",80)+&ret_line.+&ret_line.)
ELSE
errhandle = FOPEN(errfile,1)
length = FSEEK(errhandle,0,2)
FSEEK(errhandle,length)
ENDIF
FWRITE(errhandle,DTOC(DATE())+" "+TIME()+" "+M->OPERADOR+" "+M->MODULO+" "+M->MINHA_INFO+&ret_line.)
FCLOSE(errhandle)
RETURN(.T.)
Código: Selecionar todos
...
#xcommand DELETE ... => dbCommitLog( "E", "" ); dbDelete()
...
#xcommand PACK ... => dbCommitLog( "M", "" ); dbPack()
...
Enviado: 06 Ago 2007 12:24
por Maligno
Dúvida: não seria mais conveniente utilizar um arquivo DBF para armazenar tais informações?
Sugestão: independentemente do tipo do arquivo destino, para efeito de auditoria, seria interessante criar uma certificação para cada registro ou mesmo uma só para todo o arquivo, sendo ele texto simples.
Enviado: 06 Ago 2007 15:49
por angeiras
Olá,
Eu uso um arquivo de auditoria que grava apenas algumas informações em pontos entratégicos do sistema ( alteração de preços, contas a pagar, contas a receber, entrada de mercadoria, etc ), criptogafado. Dessa forma não "atraso" tanto assim a execução do sistema e tenho controle das operações mais importantes dele.
[]s
Manoel Angeiras
Enviado: 06 Ago 2007 15:58
por Maligno
Não estava pensando em criptografia propriamente, mas em certificação. Uso não deixo de mostrar o conteúdo pra quem quiser ver, mas com a certificação, qualquer mínima alteração já denuncia uma tentativa de fraude. Mas é claro que uma criptografia completa de conteúdo é uma opção muito boa também.
Enviado: 06 Ago 2007 16:04
por Stanis Luksys
Maligno escreveu:Mas é claro que uma criptografia completa de conteúdo é uma opção muito boa também.
Eu faço a "auditoria" num dbf normal, a princípio simples de se alterar... A não ser pelo fato de ter uma chavinha criptografada no último campo da tabela. Essa chave é baseada na "soma" de todos os outros campos.
Fuçou num campo, não atualizou a chave, dançou. Hehe.
Falou!
Enviado: 06 Ago 2007 16:11
por Maligno
Um registro só pra manter essa assinatura? Eu faço um pouco diferente. Em todos os DBFs o último campo é uma chave de certificação de conteúdo. Assim, além de ter uma certificação, ainda tenho um modo de detectar corrupções de arquivo, no todo ou mesmo em parte, como normalmente acontece. Em alguns arquivos textos eu insiro uma assinatura no início do arquivo, também para certificação de conteúdo. Mas esse tipo de procedimento é só em arquivos texto.
Enviado: 06 Ago 2007 16:17
por Stanis Luksys
Maligno escreveu:Um registro só pra manter essa assinatura?
Eu escrevi:
A não ser pelo fato de ter uma chavinha criptografada no
último campo da tabela.
Cada "linha" da tabela, tendo somado cada um de seus campos, tem o seu total criptografado, o que gera o conteúdo deste útlimo campo.
Falou!
Enviado: 06 Ago 2007 16:22
por Maligno
Ah, sim. Desculpe. Agora que reparei. Então é do mesmo jeito que eu faço. Só que eu uso CRC32, modificado.
Enviado: 06 Ago 2007 19:16
por Grings
Obrigado a todos, especialmente ao Rochinha. Vou adaptar o código ao que necessito e implementar com as opções sugeridas pelos colegas.