Trabalhar com lightsquid ou como fazer estatísticas personalizadas para usuários

Então, eu tinha uma tarefa no trabalho: dar a cada usuário a oportunidade de ver seus logs de Internet. Parece que a tarefa é esta - deve ser discutida por todos os lados em qualquer fórum e pelo menos deve haver uma solução pronta, no máximo, instruções passo a passo. Mas não consegui encontrar nem um nem outro. Então eu tive que reinventar minha própria roda. Abaixo está uma instrução quase passo a passo para resolver este problema usando lightsquid e scripts. Cuidado com muitos scripts.



O que você precisa



  • Servidor Ubuntu instalado (pessoalmente na minha implementação é a versão 13.04)
  • Apache2 instalado
  • Instalado configurado e já coletando estatísticas do squid (no meu caso é 2.7)




Vamos estipular preliminarmente as condições:



  • O usuário é identificado por seu endereço IP
  • Cada usuário só pode ver suas próprias estatísticas
  • As estatísticas são exibidas por meio da interface WEB




Começar



Precisa se acalmar


O primeiro passo é fazer o download do LightSquid

wget http://downloads.sourceforge.net/project/lightsquid/lightsquid/1.8/lightsquid-1.8.tgz







Descompacte-o. Eu preferi descompactar para root / var, na verdade, você também pode em / www (se precisar de gráficos, etc.)

tar -zxf lightsquid-1.8.tgz / var / lightsquid




Definimos recursivamente 755 direitos para o usuário e grupo de dados www no diretório e seu conteúdo

chmod -R 755 / var / lightsquid

chown -R www-data: www-data / var / lightsquid





Tornamos os scripts do programa executáveis:

chmod + x * .cgi

chmod + x * .pl





Se você realmente precisa de gráficos, você precisa instalar o pacote libgd-gd2-perl

sudo apt-get install libgd-gd2-perl




Agora você precisa ajustar a configuração do LightSquid

nano /var/lightsquid/lightsquid.cfg




Editando caminhos na seção GLOBAL VARIABLES

#caminho para arquivos `cfg` adicionais

$ cfgpath =" / var / lightsquid ";

#caminho para a pasta `tpl`

$ tplpath =" / var / lightsquid / tpl ";

#caminho para a pasta `lang`

$ langpath =" / var / lightsquid / lang ";

#caminho para a pasta `report`

$ reportpath =" / var / lightsquid / report ";

#path to access.log

$ logpath = "/ var / log / squid";

#caminho para a pasta `ip2name`

$ ip2namepath =" / var / lightsquid / ip2name ";





Na seção VARIÁVEIS DA WEB, defina o idioma de interface desejado. Neste caso, russo.

$ lang = "ru";




Bem, todo o lightsquid deve estar pronto para ir. Se você tiver logs do squid, poderá analisá-los para que possa vê-los posteriormente no relatório:

/ var / lightsquid # ./lightparser.pl access.log.59 && ./lightparser.pl access.log.58 && ./lightparser.pl access.log.57 && ./lightparser.pl access.log.56 &&. /lightparser.pl access.log.55 && ./lightparser.pl access.log.54 && ./lightparser.pl access.log.53 ... etc.




O próprio processo



Porque LightSquid com a ajuda de scripts cgi gera arquivos html marcados, então os entrega ao servidor, o servidor ao usuário, e o usuário, por sua vez, vê TODAS as estatísticas de TODOS os usuários - isso não é bom. Portanto, existe uma tarefa, "interceptar" a saída, fazer seus próprios arquivos html com preferência e cortesias e dar o arquivo processado ao usuário.



Primeiro script PHP


Crie um arquivo:



nano /var/www/index.php




Teremos o primeiro script em PHP: esta será a página inicial que mostrará ao usuário a primeira página "processada" do ligsquid. Nós inserimos os dados:



<?php
$year = " {$_GET['year']}";
$month = " {$_GET['month']}";
$day = " {$_GET['day']}";
$ip_host = "{$_SERVER['REMOTE_ADDR']}";
$str = "sudo /var/lightsquid/my_scr/index.sh ".$ip_host.$year.$month.$day;
echo exec($str);
include "/var/lightsquid/my_tmp/".$ip_host."log_file.html"
?>

      
      







O princípio é o seguinte. Recebemos quaisquer parâmetros através do PHP, neste caso o ano, mês, dia, na página inicial esses parâmetros estão vazios, mas se você mudar para outro mês ou ano, eles serão preenchidos imediatamente.

A seguir, nós mesmos descobriremos o IP do host que solicitou esta página. Precisamos desse ip para formar dados SOMENTE nele e, em geral, para navegar de alguma forma entre os arquivos que criamos, pois vincularemos o nome do arquivo ao seu endereço IP.

Em seguida, formamos uma string. Que inicia o próximo script (descrito abaixo) e transfere parâmetros de IP, ano, mês, dia para ele.

Chamamos esse script de execução.



Mostramos a página html. Observe que o nome da página é formado a partir do endereço IP do host e do prefixo "log_file.html"



Segundo script de shell


Este script implementará o lançamento do script lightsquid cgi e gravará o resultado da execução (script cgi) em um arquivo separado. E então inicializa o lançamento de outro script com a transferência de parâmetros para ele (sobre os quais a seguir).



Crie um arquivo

nano /var/lightsquid/my_scr/index.sh




Tornando-o executável

chmod + x index.sh





Uma nota importante, como o script deve ser executado sob os direitos do usuário www-data. Em seguida, você deve adicionar a seguinte linha ao arquivo / etc / sudoers no bloco de especificação de privilégio de usuário #:

www-data ALL = (ALL) NOPASSWD: /var/lightsquid/my_scr/index.sh





Em seguida, gravamos os próprios dados no arquivo

#!/bin/sh
$1 #ip 
$2 #
$3 #
$4 #

str="log_file"
param="year="$2"&month="$3"&day="$4

LOG_FILE=/var/lightsquid/my_tmp/$1$str.html
{
export REQUEST_METHOD=GET
export QUERY_STRING=$param
/var/lightsquid/index.cgi
}> $LOG_FILE 2>&1
/var/lightsquid/my_scr/index.py $1

      
      







Razyasnyu:

Pegue os parâmetros IP, ano, dia, mês

na variável escreve a string «log_file»

Form um pedido e escreve em uma variável

Execute o script cgi que é fornecido parâmetros, o resultado do script é salvo em um arquivo chamado host IP + «log_file.html»

Chama outro script, passamos parâmetros para ele.



Terceiro script Python


Porque a página gerada contém muitos links desnecessários e incorretos (por exemplo, refere-se a cgi que não podemos interceptar), e assim por diante, este arquivo precisa ser corrigido. substitua todos os links pelos nossos e exclua algumas linhas.



Crie um arquivo:

nano /var/lightsquid/my_scr/index.py




Tornamos o arquivo executável.

chmod + x index.sh





Nós gravamos os seguintes dados nele:



#!/usr/bin/env python
#coding: utf-8

import sys #  sys         

ip_host = sys.argv[1] #  IP 
#       lightsquid

seach_ip = ip_host

path_file = '/var/lightsquid/my_tmp/'+ ip_host + 'log_file.html' #    

count_line = sum(1 for l in open(path_file, 'r')) #    
#len(open(path_file, 'r').readlines())            #       

file = open(path_file, 'r') #  
lines = file.readlines()    #    
file.close()                # 


i = 0
for i in range(count_line): #  0     
if "day_detail.cgi" in lines[i]:  #       cgi
        lines[i] = lines[i].replace('day_detail.cgi','day_detail.php') #   ,      
    if "group_detail.cgi" in lines[i]: #     
        lines[i] = " <code><TD> </TD></code>"  #             
    if "index.cgi" in lines[i]:
        lines[i] = lines[i].replace('index.cgi','index.php')
    if "month_detail.cgi" in lines[i]:
        lines[i] = lines[i].replace('month_detail.cgi','month_detail.php')
    if "graph.cgi" in lines[i]:
        lines[i] = " "
    if "topsites.cgi" in lines[i]:
        lines[i] = lines[i].replace('topsites.cgi','topsites.php')


file = open('/var/lightsquid/my_tmp/' + ip_host + 'log_file.html','w')
file.writelines(lines)
file.close

      
      







Em geral, indentação (quatro espaços) é muito importante em Python para quem não sabe :)

Deixe-me explicar um pouco o script.

Obtemos o endereço IP do usuário que solicitou as estatísticas (este endereço IP é transmitido aqui a partir do script anterior).

Em seguida, abra o arquivo gerado pelo script lightsquid cgi, descubra

quantas linhas ele contém,

fazemos um loop, neste loop verificamos cada linha para ver se estão de acordo com nossos requisitos. Ou seja, ele muda os caminhos dos links de cgi para php, também não preciso que os usuários não vejam os grupos, então deixo esta coluna geralmente vazia ().

Bem, é isso, nós escrevemos de volta o arquivo já processado.



E então, descobri uma maneira de como tudo deveria ser feito. Mas são necessários 27 scripts para funcionar totalmente. Claro, era possível amontoar tudo em um script e, em geral, seriam apenas 3, mas não compliquei minha vida. A seguir gostaria de dar o resto dos scripts, mas com uma breve análise deles e sem etapas desnecessárias para criá-los (já que ações semelhantes foram descritas acima).



O resto dos saltos



Tudo relacionado a bigfiles


bigfiles.php


<?php
$year = " {$_GET['year']}";
$month = " {$_GET['month']}";
$day = " {$_GET['day']}";
$ip_host = "{$_SERVER['REMOTE_ADDR']}";
$str = "sudo /var/lightsquid/my_scr/my_bigfiles.sh ".$ip_host.$year.$month.$day;
echo exec($str);
include "/var/lightsquid/my_tmp/".$ip_host."log_file.html"
?>

      
      







my_bigfiles.sh


#!/bin/sh
$1 #ip 
$2 #
$3 #
$4 #

str="log_file"
param="year="$2"&month="$3"&day="$4"&user="$1


LOG_FILE=/var/lightsquid/my_tmp/$1$str.html
{
export REQUEST_METHOD=GET
export QUERY_STRING=$param
/var/lightsquid/bigfiles.cgi
}> $LOG_FILE 2>&1

/var/lightsquid/my_scr/my_bigfiles.py $1


      
      







my_bigfiles.py


#!/usr/bin/env python
#coding: utf-8

import sys #  sys         

ip_host = sys.argv[1] #  IP 

seach_ip = ip_host

path_file = '/var/lightsquid/my_tmp/'+ ip_host + 'log_file.html' #    

count_line = sum(1 for l in open(path_file, 'r')) #    
#len(open(path_file, 'r').readlines())            #       

file = open(path_file, 'r') #  
lines = file.readlines()    #    
file.close()                # 


i = 0
for i in range(count_line): #  0     
    if "index.cgi" in lines[i]:
        lines[i] = lines[i].replace('index.cgi','index.php')
    if "user_detail.cgi" in lines[i]:
        lines[i] = lines[i].replace('user_detail.cgi','user_detail.php')

file = open('/var/lightsquid/my_tmp/' + ip_host + 'log_file.html','w')
file.writelines(lines)
file.close


      
      







Tudo relacionado a day_detail


bigfiles.php


<?php
$year = " {$_GET['year']}";
$month = " {$_GET['month']}";
$day = " {$_GET['day']}";
$ip_host = "{$_SERVER['REMOTE_ADDR']}";
$str = "sudo /var/lightsquid/my_scr/my_day_detail.sh ".$ip_host.$year.$month.$day;
echo exec($str);
include "/var/lightsquid/my_tmp/".$ip_host."log_file.html"
?>


      
      









!/bin/sh
$1 #ip 
$2 #
$3 #
$4 #
str="log_file"  #   
param="year="$2"&month="$3"&day="$4  #       

LOG_FILE=/var/lightsquid/my_tmp/$1$str.html  #       
{
export REQUEST_METHOD=GET
export QUERY_STRING=$param
 /var/lightsquid/day_detail.cgi
}> $LOG_FILE 2>&1

/var/lightsquid/my_scr/my_day_detail.py $1  #   ,      ;)


      
      









#!/usr/bin/env python
#coding: utf-8

import sys #  sys         

ip_host = sys.argv[1] #  IP 
#       lightsquid
#    ip    

seach_ip = ip_host

path_file = '/var/lightsquid/my_tmp/'+ ip_host + 'log_file.html' #    

count_line = sum(1 for l in open(path_file, 'r')) #    
    #len(open(path_file, 'r').readlines())            #       

file = open(path_file, 'r') #  
lines = file.readlines()    #    
file.close()                # 

for i in range(count_line): #  0     
    if "tr bgcolor=" + "\42" + "cornsilk" + "\42" in lines[i] or "tr bgcolor=" + "\42" + "beige" + "\42" in lines[i]:  #     1  2 ,   
        if seach_ip in lines[i+3]: continue   #     ip     ,        
        else:
            lines[i] = " "
            lines[i+1] = " "
            lines[i+2] = " "
            lines[i+3] = " "
            lines[i+4] = " "
            lines[i+5] = " "
            lines[i+6] = " "
            lines[i+7] = " "
            lines[i+8] = " "
            lines[i+9] = " "
            lines[i+10] = " "
            lines[i+11] = " "
            lines[i+12] = " "
            lines[i+13] = " "
            lines[i+14] = " "
            lines[i+15] = " "
            lines[i+16] = " "
    if "user_time.cgi" in lines[i]:
        lines[i] = lines[i].replace('user_time.cgi','user_time.php')
    if "index.cgi" in lines[i]:
        lines[i] = lines[i].replace('index.cgi','index.php')
    if "user_detail.cgi" in lines[i]:
        lines[i] = lines[i].replace('user_detail.cgi','user_detail.php')
    if "topsites.cgi" in lines[i]:
        lines[i] = " "
    if "bigfiles.cgi" in lines[i]:
        lines[i] = " "
    if "group_detail.cgi" in lines[i]: #     
        lines[i] = " <TD> </TD>"  #             
    if "get.cgi" in lines[i]:
        lines[i] = lines[i].replace('get.cgi?png=datetime','datetime.png')

file = open('/var/lightsquid/my_tmp/' + ip_host + 'log_file.html','w')
file.writelines(lines)
file.close


      
      





Considero necessário esclarecer este roteiro.

O script obtém o IP do usuário que solicitou os dados.

Porque o arquivo que gera cgi é do mesmo tipo, decidi vincular a busca pela linha que eu precisava à cor da linha, são dois deles "cornsilk"



e "beige"



. Se houver uma linha onde há essa cor, então movemos três linhas para baixo, há um endereço IP. Comparamos um ou o errado e, se não for o certo, simplesmente apagamos todas as 16 linhas. (Isso é exatamente quanto a descrição de uma linha no relatório leva).



Tudo relacionado a month_detail


month_detail.php


<?php
$year = " {$_GET['year']}";
$month = " {$_GET['month']}";
$mode = " {$_GET['mode']}";
$ip_host = "{$_SERVER['REMOTE_ADDR']}";
$str = "sudo /var/lightsquid/my_scr/my_month_detail.sh ".$ip_host.$year.$month.$mode;
echo exec($str);
include "/var/lightsquid/my_tmp/".$ip_host."log_file.html"
?>

      
      







my_month_detail.sh


!/bin/sh
$1 #ip 
$2 #
$3 #
$4 #
str="log_file"  #   
param="year="$2"&month="$3"&mode="$4  #       


LOG_FILE=/var/lightsquid/my_tmp/$1$str.html  #       
{
export REQUEST_METHOD=GET
export QUERY_STRING=$param
 /var/lightsquid/month_detail.cgi
}> $LOG_FILE 2>&1

/var/lightsquid/my_scr/my_month_detail.py $1 $3  #   ,      ;)


      
      







my_month_detail.py


#!/usr/bin/env python
#coding: utf-8

import sys #  sys         

ip_host = sys.argv[1] #  IP 
month = sys.argv[2]
#       lightsquid
#    ip    

seach_ip = ip_host

path_file = '/var/lightsquid/my_tmp/'+ ip_host + 'log_file.html' #    

count_line = sum(1 for l in open(path_file, 'r')) #    
    #len(open(path_file, 'r').readlines())            #       

file = open(path_file, 'r') #  
lines = file.readlines()    #    
file.close()                # 

for i in range(count_line): #  0     
    if "tr bgcolor=" + "\42" + "cornsilk" + "\42" in lines[i] or "tr bgcolor=" + "\42" + "beige" + "\42" in lines[i]:  #     1  2 ,   
        if seach_ip in lines[i+3]: continue   #     ip     ,        
        else:
            if month == "all":  #   .      ,     ,     ,    
                lines[i] = " "
                lines[i+1] = " "
                lines[i+2] = " "
                lines[i+3] = " "
                lines[i+4] = " "
                lines[i+5] = " "
                lines[i+6] = " "
                lines[i+7] = " "
                lines[i+8] = " "
                lines[i+9] = " "
                lines[i+10] = " "
                lines[i+11] = " "
                lines[i+12] = " "
                lines[i+13] = " "
                lines[i+14] = " "
            else:
                lines[i] = " "
                lines[i+1] = " "
                lines[i+2] = " "
                lines[i+3] = " "
                lines[i+4] = " "
                lines[i+5] = " "
                lines[i+6] = " "
                lines[i+7] = " "
                lines[i+8] = " "
                lines[i+9] = " "
                lines[i+10] = " "
                lines[i+11] = " "
                lines[i+12] = " "
                lines[i+13] = " "
                lines[i+14] = " "
                lines[i+15] = " "

for i in range(count_line): #  0     
    if  lines[i]<> " ":
        if "index.cgi" in lines[i]:
            lines[i] = lines[i].replace('index.cgi','index.php')
        if "user_time.cgi" in lines[i]:
            lines[i] = lines[i].replace('user_time.cgi','user_time.php')
        if "graph.cgi" in lines[i]:
            lines[i] = '<TD></TD>'
        if "user_month.cgi" in lines[i]:
            lines[i] = lines[i].replace('user_month.cgi','user_month.php')
        if "user_detail.cgi" in lines[i]:
            lines[i] = lines[i].replace('user_detail.cgi','user_detail.php')
        if "get.cgi" in lines[i]:
            lines[i] = lines[i].replace('get.cgi?png=datetime','datetime.png')
        if "get.cgi" in lines[i]:
            lines[i] = lines[i].replace('get.cgi?png=graph','graph.png')

file = open('/var/lightsquid/my_tmp/' + ip_host + 'log_file.html','w')
file.writelines(lines)
file.close


      
      





Nesse script, quase igual ao descrito acima, só que a diferença é esta, são recebidos parâmetros diferentes (ano e mês), pois o número de linhas que formam os dados é diferente. dependendo do parâmetro recebido, month = sys.argv[2]



escolhemos a ação.



Tudo relacionado a topsites


topsites.php


<?php
$year = " {$_GET['year']}";
$month = " {$_GET['month']}";
$day = " {$_GET['day']}";
$mode = " {$_GET['mode']}";
$order = " {$_GET['order']}";
$ip_host = "{$_SERVER['REMOTE_ADDR']}";
$str = "sudo /var/lightsquid/my_scr/my_topsites.sh ".$ip_host.$year.$month.$mode.$order;
echo exec($str);
include "/var/lightsquid/my_tmp/".$ip_host."log_file.html"
?>


      
      







my_topsites.sh


#!/bin/sh
$1 #ip 
$2 #
$3 #
$4 #\
$5 #\
$6 #
str="log_file"  #   

if [ $5 = "hits" -o $4 = "size" ]
then
param="year="$2"&month="$3"&day=&mode="$4"&order="$5
else
param="year="$2"&month="$3"&mode="$4  #       
fi


LOG_FILE=/var/lightsquid/my_tmp/$1$str.html  #       
{
export REQUEST_METHOD=GET
export QUERY_STRING=$param
 /var/lightsquid/topsites.cgi
}> $LOG_FILE 2>&1

/var/lightsquid/my_scr/my_topsites.py $1  #   ,      ;)


      
      





Aqui é um pouco mais complicado, também diferentes parâmetros são passados ​​para o script e, dependendo dos parâmetros aceitos pelo script, ele forma uma solicitação para o script cgi.



my_topsites.py


!/usr/bin/env python
#coding: utf-8

import sys #  sys         

ip_host = sys.argv[1] #  IP 

seach_ip = ip_host

path_file = '/var/lightsquid/my_tmp/'+ ip_host + 'log_file.html' #    

count_line = sum(1 for l in open(path_file, 'r')) #    
#len(open(path_file, 'r').readlines())            #       

file = open(path_file, 'r') #  
lines = file.readlines()    #    
file.close()                # 


i = 0
for i in range(count_line): #  0     
    if "whousesite.cgi" in lines[i]: #     
        lines[i] = " <TD> </TD>"  #             
    if "index.cgi" in lines[i]:
        lines[i] = lines[i].replace('index.cgi','index.php')
    if "topsites.cgi" in lines[i]:
        lines[i] = lines[i].replace('topsites.cgi','topsites.php')

file = open('/var/lightsquid/my_tmp/' + ip_host + 'log_file.html','w')
file.writelines(lines)
file.close


      
      







Tudo relacionado a user_detail


user_detail.php


<?php
$year = " {$_GET['year']}";
$month = " {$_GET['month']}";
$day = " {$_GET['day']}";
$mode = " {$_GET['mode']}";
$ip_host = "{$_SERVER['REMOTE_ADDR']}";
$str = "sudo /var/lightsquid/my_scr/my_user_detail.sh ".$ip_host.$year.$month.$day.$mode;
echo exec($str);
include "/var/lightsquid/my_tmp/".$ip_host."log_file.html"
?>

      
      







user_detail.sh


#!/bin/sh
$1 #ip 
$2 #
$3 #
$4 #\
str="log_file"  #   

if [ $4 = "month" -o $4 = "year" ]
then
param="year="$2"&month="$3"&user="$1"&mode="$4  #       
else
param="year="$2"&month="$3"&day="$4"&user="$1
fi


LOG_FILE=/var/lightsquid/my_tmp/$1$str.html  #       
{
export REQUEST_METHOD=GET
export QUERY_STRING=$param
 /var/lightsquid/user_detail.cgi
}> $LOG_FILE 2>&1

/var/lightsquid/my_scr/my_user_detail.py $1  #   ,      ;)


      
      







user_detail.py


#!/usr/bin/env python
#coding: utf-8

import sys #  sys         

ip_host = sys.argv[1] #  IP 

seach_ip = ip_host

path_file = '/var/lightsquid/my_tmp/'+ ip_host + 'log_file.html' #    

count_line = sum(1 for l in open(path_file, 'r')) #    
#len(open(path_file, 'r').readlines())            #       

file = open(path_file, 'r') #  
lines = file.readlines()    #    
file.close()                # 

i = 0
for i in range(count_line): #  0     
    if "index.cgi" in lines[i]:
        lines[i] = lines[i].replace('index.cgi','index.php')
    if "user_time.cgi" in lines[i]:
        lines[i] = lines[i].replace('user_time.cgi','user_time.php')
    if "bigfiles.cgi" in lines[i]:
        lines[i] = lines[i].replace('bigfiles.cgi','bigfiles.php')
    if "get.cgi" in lines[i]:
        lines[i] = lines[i].replace('get.cgi?png=datetime','datetime.png')

file = open('/var/lightsquid/my_tmp/' + ip_host + 'log_file.html','w')
file.writelines(lines)
file.close


      
      







Tudo relacionado a user_month


user_month.php


<?php
$year = " {$_GET['year']}";
$month = " {$_GET['month']}";

$ip_host = "{$_SERVER['REMOTE_ADDR']}";
$str = "sudo /var/lightsquid/my_scr/my_user_month.sh ".$ip_host.$year.$month;
echo exec($str);
include "/var/lightsquid/my_tmp/".$ip_host."log_file.html"
?>

      
      







user_month.sh


#!/bin/sh
$1 #ip 
$2 #
$3 #

str="log_file"
param="year="$2"&month="$3"&user="$1

LOG_FILE=/var/lightsquid/my_tmp/$1$str.html
{
export REQUEST_METHOD=GET
export QUERY_STRING=$param
/var/lightsquid/user_month.cgi
}> $LOG_FILE 2>&1

/var/lightsquid/my_scr/my_user_month.py $1

      
      







user_month.py


#!/usr/bin/env python
#coding: utf-8

import sys #  sys         

ip_host = sys.argv[1] #  IP 
#       lightsquid
#    ip    

seach_ip = ip_host

path_file = '/var/lightsquid/my_tmp/'+ ip_host + 'log_file.html' #    

count_line = sum(1 for l in open(path_file, 'r')) #    
#len(open(path_file, 'r').readlines())            #       

file = open(path_file, 'r') #  
lines = file.readlines()    #    
file.close()                # 


i = 0
for i in range(count_line): #  0     
    if "user_detail.cgi" in lines[i]:  #       cgi
        lines[i] = lines[i].replace('user_detail.cgi','user_detail.php') #   ,      
    if "index.cgi" in lines[i]:
        lines[i] = lines[i].replace('index.cgi','index.php')
    if "graph.cgi" in lines[i]:
        lines[i] = lines[i].replace('graph.cgi','graph.php')


file = open('/var/lightsquid/my_tmp/' + ip_host + 'log_file.html','w')
file.writelines(lines)
file.close

      
      







Tudo relacionado a user_time


user_time.php



<?php
$year = " {$_GET['year']}";
$month = " {$_GET['month']}";
$day = " {$_GET['day']}";
$mode = " {$_GET['mode']}";
$ip_host = "{$_SERVER['REMOTE_ADDR']}";
$str = "sudo /var/lightsquid/my_scr/my_user_time.sh ".$ip_host.$year.$month.$mode;
echo exec($str);
include "/var/lightsquid/my_tmp/".$ip_host."log_file.html"
?>

      
      







user_time.sh


#!/bin/sh
$1 #ip 
$2 #
$3 #
$4 #\
str="log_file"  #   

if [ $4 = "month" -o $4 = "year" ]
then
param="year="$2"&month="$3"&user="$1"&mode="$4  #       
else
param="year="$2"&month="$3"&day="$4"&user="$1
fi


LOG_FILE=/var/lightsquid/my_tmp/$1$str.html  #       
{
export REQUEST_METHOD=GET
export QUERY_STRING=$param
 /var/lightsquid/user_time.cgi
}> $LOG_FILE 2>&1

/var/lightsquid/my_scr/my_user_time.py $1  #   ,      ;)


      
      







user_time.py


#!/usr/bin/env python
#coding: utf-8

import sys #  sys         

ip_host = sys.argv[1] #  IP 
#       lightsquid
#    ip    

seach_ip = ip_host

path_file = '/var/lightsquid/my_tmp/'+ ip_host + 'log_file.html' #    

count_line = sum(1 for l in open(path_file, 'r')) #    
#len(open(path_file, 'r').readlines())            #       

file = open(path_file, 'r') #  
lines = file.readlines()    #    
file.close()                # 


i = 0
for i in range(count_line): #  0     
    if "index.cgi" in lines[i]:
        lines[i] = lines[i].replace('index.cgi','index.php')

file = open('/var/lightsquid/my_tmp/' + ip_host + 'log_file.html','w')
file.writelines(lines)
file.close


      
      







Resultado





Bem, isso é tudo, espero que ninguém esteja cansado da quantidade de scripts. Espero que este artigo ajude alguém a resolver o mesmo problema, e talvez ele o melhore.



All Articles