locked
Analisar logs Forefront TMG RRS feed

  • Pergunta

  • Pessoal,

    É o seguinte, uso Forefront TMG Standard e configurei os logs para um banco MSSQL Enterprise em outro servidor, até aí sem problemas.

    Na hora que consulto a tabela de logs com um select, por exemplo, ele me traz o IP em um formato estranho, andei lendo e vi que uma forma única de armazenamento.

    No ISA eu consegui criar um CAST que convertia o bigint armazenado no banco em uma string com o IP mas não consegui fazer isso no Forefront, até andei lendo o material de apoio mas não consigo realmente converter esses IP's.

    Achei esse material que tem uma fórmula, só que eu não consigo usar a fórmula e sou meio leigo em Excel, pode ser isso.

    http://blogs.technet.com/b/isablog/archive/2010/03/31/how-to-view-tmg-logs-when-using-sql-server-express-for-logging.aspx

     

    Alguém pode me ajudar com isso??

    segunda-feira, 19 de setembro de 2011 05:32

Respostas

  • Bom, postei aqui e ninguém respondeu então procurei minhas formas de resolver.

    Procurei a internet inteira e ninguém ajudava, então resolvi analisar a lógica de conversão dos endereços.

     

    Criei uma função no SQL que convertia números hexadecimais pra decimais e depois fiz uma consulta usando a minha função com um substring e um concate. 


    Pra quem precisar segue aí:

    Criar essa função antes:

    CREATE function hex2dec(@str varchar(16))    
    returns varchar(255) as begin    
        
    select @str=upper(@str)    
    declare @i int, @len int, @char char(1), @output varchar(255)    
    select @len=len(@str)    
    ,@i=@len    
    ,@output=case    
    when @len>0    
    then 0    
    end    
    while (@i>0)    
    begin    
    select @char=substring(@str,@i,1), @output=@output    
    +(ASCII(@char)    
    -(case    
    when @char between 'A' and 'F'    
    then 55    
    else    
    case    
    when @char between '0' and '9'    
    then 48 end    
    end))    
    *power(16.,@len-@i)    
    ,@i=@i-1    
    end    
    return @output    
    end
    


    Consultar o log usando a função:

    SELECT dbo.HEX2DEC(SUBSTRING(CAST(ClientIP AS VARCHAR(255)), 1, 2)) + '.' + dbo.HEX2DEC(SUBSTRING(CAST(ClientIP AS VARCHAR(255)), 3, 2)) 
    + '.' + dbo.HEX2DEC(SUBSTRING(CAST(ClientIP AS VARCHAR(255)), 5, 2))  + '.' + dbo.HEX2DEC(SUBSTRING(CAST(ClientIP AS VARCHAR(255)), 7, 2)) AS ClientIPv4, WebProxyLog.*
    FROM WebProxyLog
    
    


    Espero poder ajudar alguém!

    Grande abraço.

    terça-feira, 20 de setembro de 2011 18:56