diff options
Diffstat (limited to 'scripts/hitcount.pl')
| -rw-r--r-- | scripts/hitcount.pl | 114 | 
1 files changed, 65 insertions, 49 deletions
| diff --git a/scripts/hitcount.pl b/scripts/hitcount.pl index 545aee0..19a4d87 100644 --- a/scripts/hitcount.pl +++ b/scripts/hitcount.pl @@ -2,20 +2,23 @@  use strict;  use vars qw($VERSION %IRSSI); -my @rev = split(/ /, "$Revision: 1.3.2.2 $n"); -$VERSION = "1.3"; +my @rev = split(/ /, '$Revision: 1.4 $n'); +$VERSION = "1.4";  %IRSSI = ( -	    authors     => 'Riku "Shrike" Lindblad', -	    contact     => 'shrike\@addiktit.net, Shrike on IRCNet/QNet/EFNet/DALNet', -	    name        => 'hitcount', -	    description => 'Add a apache page hitcounter to statusbar', -	    license     => 'Free', -	    changed     => '$Date: 2002/03/05 18:19:28 $ ', -	  ); +    authors     => 'Riku "Shrike" Lindblad', +    contact     => 'shrike\@addiktit.net, Shrike on IRCNet/QNet/EFNet/DALNet', +    name        => 'hitcount', +    description => 'Add a apache page hitcounter to statusbar', +    sbitems     => 'hitcount', +    license     => 'Free', +    changed     => '$Date: 2017/03/07 $ ', +);  # Changelog:  # -# $Log: hitcount.pl,v $ +# Revision 1.4  2017/03/07 bw1 +# bug fix +#  # Revision 1.3.2.2  2002/03/05 18:19:28  shrike  # Added use vars qw($VERSION %IRSSI);  # @@ -54,59 +57,65 @@ use Irssi::TextUI;  # Debug level - higher levels print out more crap  my $debug_level = 0;  # current hitcount -my ($total_hitcount, $my_hitcount) = (0); +my ($total_hitcount, $my_hitcount) = (0,0);  # change prefixes -my ($my_prefix, $total_prefix) = (""); +my ($my_prefix, $total_prefix) = ("","");  # change from last update -my ($my_change, $total_change) = (0); +my ($my_change, $total_change) = (0,0);  # hitcount on last update -my ($last_total_hitcount, $last_my_hitcount, $last_refresh) = (0); +my ($last_total_hitcount, $last_my_hitcount, $last_refresh) = (0,0,0);  # set default variables -my ($filename, $regexp, $refresh) = ("/var/log/apache/access.log", "/", 60); +my ($filename, $regexp, $refresh) = ("/var/log/httpd/access.log", "/", 60); +# marker for the refresh +my $refresh_tag; +# read the access_log and count rows, regexp matches  sub get_hitcount {      my $filename = Irssi::settings_get_str('hitcount_access_log');      my $regexp = Irssi::settings_get_str('hitcount_regexp'); -    Irssi::print("Finding match for \"".my $regexp."\"", MSGLEVEL_CLIENTERROR) if($debug_level > 2); +    Irssi::print("Finding match for \"$regexp\"", MSGLEVEL_CLIENTERROR) if($debug_level > 2); -    ($total_hitcount, $my_hitcount) = (0); +    ($total_hitcount, $my_hitcount) = (0,0);      # Go through the access log and count matches to the given regexp -    if(open STUFF, "<", $filename) -    { -   	while (<STUFF>)  -	{ -	    $total_hitcount++; -	    if(/$regexp/ois) -	    { -		# DEBUG -		Irssi::print("Matched $_", MSGLEVEL_CLIENTERROR) if($debug_level > 3); -		$my_hitcount++; -	    } -	} -	close STUFF; -    } -    else -    { -	Irssi::print("Failed to open <$filename: $!", MSGLEVEL_CLIENTERROR); +    if(open STUFF, "<", $filename) { +        while (<STUFF>) { +            $total_hitcount++; +            #if(m#$regexp#ois) +            if(m<GET $regexp >) { +                # DEBUG +                Irssi::print("Matched $_", MSGLEVEL_CLIENTERROR) if($debug_level > 3); +                $my_hitcount++; +            } +        } +        close STUFF; +    } else { +        Irssi::print("Failed to open <$filename: $!", MSGLEVEL_CLIENTERROR);      } +      return($my_hitcount,$total_hitcount);  } +# show the result  sub hitcount {      my ($item, $get_size_only) = @_; -    # DEBUG -    Irssi::print("$get_size_only | $last_my_hitcount/$last_total_hitcount | $my_hitcount/$total_hitcount | $my_prefix$my_change $total_prefix$total_change", MSGLEVEL_CLIENTERROR) if($debug_level > 0); +    $item->default_handler($get_size_only,  +        "{sb Hits: $last_my_hitcount/$last_total_hitcount ". +        "$my_prefix$my_change/$total_prefix$total_change}", '', 0); +} + +# repeat refresh by interval time +sub refresh_hitcount {      my ($my_hitcount, $my_total_hitcount) = get_hitcount(); -    if($my_hitcount eq '') { $my_hitcount = 0; } -          # Calculate change since last update -    $my_change = $my_hitcount - $last_my_hitcount; -    $total_change = $total_hitcount - $last_total_hitcount; +    if ($last_total_hitcount >0) { +        $my_change = $my_hitcount - $last_my_hitcount; +        $total_change = $total_hitcount - $last_total_hitcount; +    }      # Get correct prefix for change      $my_prefix = "+" if($my_change > 0); @@ -116,7 +125,14 @@ sub hitcount {      $total_prefix = "-" if($total_change < 0);      $total_prefix = "" if($total_change == 0); -    $item->default_handler($get_size_only, undef, "$last_my_hitcount $last_total_hitcount $my_prefix$my_change $total_prefix$total_change", 1); +    # DEBUG +    Irssi::print( +        "$last_my_hitcount/$last_total_hitcount | $my_hitcount/$total_hitcount ". +        "| $my_prefix$my_change $total_prefix$total_change",  +        MSGLEVEL_CLIENTERROR) if($debug_level > 0); + +    # show it +    Irssi::statusbar_items_redraw('hitcount');      # last hitcount = current hitcount      $last_my_hitcount = $my_hitcount; @@ -128,28 +144,28 @@ sub hitcount {      $my_total_hitcount = 0;  } -sub refresh_hitcount { -    get_hitcount(); -    Irssi::statusbar_items_redraw('hitcount'); -} -  sub read_settings {      my $time = Irssi::settings_get_int('hitcount_refresh');      return if ($time == $last_refresh);      $last_refresh = $time; -    Irssi::timeout_remove(my $refresh_tag) if (my $refresh_tag); +     +    Irssi::timeout_remove($refresh_tag) if ($refresh_tag);      $refresh_tag = Irssi::timeout_add($time*1000, 'refresh_hitcount', undef); + +    refresh_hitcount();  }  # default values  Irssi::settings_add_str('misc', 'hitcount_regexp', $regexp);  Irssi::settings_add_int('misc', 'hitcount_refresh', $refresh);  Irssi::settings_add_str('misc', 'hitcount_access_log', $filename); +  # sub to call, string on statusbar, func on statusbar -Irssi::statusbar_item_register('hitcount', '{sb Hits: $0%K/%N$1 $2%K/%N$3}', 'hitcount'); +Irssi::statusbar_item_register('hitcount', 0, 'hitcount'); + +Irssi::print("Hitcounter version ".$rev[1]." loaded");  read_settings();  Irssi::signal_add('setup changed', 'read_settings'); -Irssi::print("Hitcounter version ".$rev[1]." loaded"); | 
