summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJules <jules@asdf.us>2015-01-20 16:15:50 -0500
committerJules <jules@asdf.us>2015-01-20 16:15:50 -0500
commit63bb3591a247f165f2942993fd3c43f56bfe6f07 (patch)
tree7ac2b9f04fedfdc3d027b06e52269589e581a46d
parent80dbff4ebb59282fd83c69b5e9407413006858e0 (diff)
stats for remote users
-rw-r--r--index.html1
-rw-r--r--xdcc.pl29
2 files changed, 30 insertions, 0 deletions
diff --git a/index.html b/index.html
index 73803cc..16170e5 100644
--- a/index.html
+++ b/index.html
@@ -48,6 +48,7 @@ People can request files from you using these CTCP commands:
/ctcp <i>nick</i> XDCC remove 3 <i># remove from queue</i>
/ctcp <i>nick</i> XDCC cancel <i># cancel file transfer</i>
/ctcp <i>nick</i> XDCC queue
+/ctcp <i>nick</i> XDCC stats
/ctcp <i>nick</i> XDCC help
/ctcp <i>nick</i> XDCC about</pre>
diff --git a/xdcc.pl b/xdcc.pl
index f8ed92d..f1eb47c 100644
--- a/xdcc.pl
+++ b/xdcc.pl
@@ -69,6 +69,7 @@ my $help_remote = <<EOF;
/ctcp %nick XDCC %_remove%_ 3 # remove yourself from queue
/ctcp %nick XDCC %_cancel%_ # cancel the current transfer
/ctcp %nick XDCC %_queue%_
+/ctcp %nick XDCC %_stats%_
/ctcp %nick XDCC %_help%_
/ctcp %nick XDCC %_about%_
EOF
@@ -136,7 +137,9 @@ my $messages = {
'xdcc_autoget_tip' => '[%_XDCC%_] Tip: in irssi, type %_/set dcc_autoget ON%_',
'xdcc_cancelled' => '[%_XDCC%_] File transfer cancelled',
+ 'xdcc_stats' => '[%_XDCC%_] %s ... %_%s%_',
'xdcc_log' => "[%_XDCC%_] %s",
+ 'xdcc_hr' => "[%_XDCC%_] ----",
'xdcc_help' => $help_remote,
'xdcc_help_control' => $help_control,
'xdcc_about' => $help_about,
@@ -159,6 +162,7 @@ sub ctcp_reply {
elsif ($cmd eq "cancel") { xdcc_cancel($server, $nick) }
elsif ($cmd eq "queue") { xdcc_queue($server, $nick) }
elsif ($cmd eq "list") { xdcc_list($server, $nick) }
+ elsif ($cmd eq "stats") { xdcc_stats_remote($server, $nick) }
elsif ($cmd eq "describe") { xdcc_describe($server, $nick, $index, $desc) }
elsif ($cmd eq "version") { xdcc_message($server, $nick, 'xdcc_version') }
elsif ($cmd eq "help") { xdcc_help($server, $nick) }
@@ -322,6 +326,31 @@ sub xdcc_queue {
}
xdcc_message( $server, $nick, 'queue_length', scalar @queue, scalar @queue == 1 ? "" : "s" )
}
+sub xdcc_stats_remote {
+ my ($server, $nick) = @_;
+ xdcc_message( $server, $nick, 'xdcc_stats', "xdcc.pl version", $VERSION);
+
+ if (xdcc_is_trusted($server, $nick)) {
+ my @channel_names = map { $_->{'name'} } @channels;
+ xdcc_message( $server, $nick, 'xdcc_stats', 'trusted channels', join(' ', @channel_names));
+ }
+ xdcc_message( $server, $nick, 'xdcc_stats', "files sent", $stats->{files_sent});
+ xdcc_message( $server, $nick, 'xdcc_hr');
+
+ xdcc_message( $server, $nick, 'xdcc_log', 'top files');
+ map { xdcc_message( $server, $nick, 'xdcc_stats', $_->[0], $_->[1]) }
+ sort { $b->[1] <=> $a->[1] }
+ map { [$_, $stats->{files}->{$_}] }
+ keys %{ $stats->{files} };
+ xdcc_message( $server, $nick, 'xdcc_hr');
+
+ xdcc_message( $server, $nick, 'xdcc_log', 'top users');
+ map { xdcc_message( $server, $nick, 'xdcc_stats', $_->[0], $_->[1]) }
+ sort { $b->[1] <=> $a->[1] }
+ map { [$_, $stats->{users}->{$_}] }
+ keys %{ $stats->{users} };
+ xdcc_message( $server, $nick, 'xdcc_hr');
+}
sub xdcc_advance {
if ($timeout) { Irssi::timeout_remove($timeout) }
undef $timeout;