diff options
| -rw-r--r-- | index.html | 5 | ||||
| -rw-r--r-- | xdcc.pl | 51 |
2 files changed, 50 insertions, 6 deletions
@@ -6,7 +6,7 @@ XDCC server for <tt>irssi</tt>. <p> -Run a fileserver. People can request DCC sends over CTCP. Trusted users can upload files. +Run a fileserver. People can request DCC sends over CTCP. Trusted users can also upload files. <p> Download it here! → → → <a href="xdcc.pl" style="color:blue!important"><i>xdcc.pl</i></a> @@ -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 info 1 <i># file information</i> /ctcp <i>nick</i> XDCC stats /ctcp <i>nick</i> XDCC help /ctcp <i>nick</i> XDCC about</pre> @@ -89,5 +90,5 @@ Greetings to all on #sally and thanks as always to Khaled Mardam-Bey for inventi <p> <hr> +<span style="float:right"><a href="https://github.com/julescarbon/xdcc.pl/"><i>Push to Master<i></a></span> <i>Last updated 20 January 2015 — <a href="/dither/">Julie LaLa</a></i> - @@ -156,7 +156,7 @@ sub ctcp_reply { if ($cmd eq "get") { xdcc_enqueue($server, $nick, $index) } elsif ($cmd eq "send") { xdcc_enqueue($server, $nick, $index) } elsif ($cmd eq "batch") { xdcc_batch($server, $nick, $index) } - elsif ($cmd eq "info") { xdcc_info($server, $nick, $index) } + elsif ($cmd eq "info") { xdcc_info_remote($server, $nick, $index) } elsif ($cmd eq "remove") { xdcc_remove($server, $nick, $index) } elsif ($cmd eq "delete") { xdcc_delete($server, $nick, $index) } elsif ($cmd eq "cancel") { xdcc_cancel($server, $nick) } @@ -291,12 +291,54 @@ sub xdcc_describe { xdcc_message( $server, $nick, 'xdcc_described', $file->{id}+1, $file->{'fn'} ); } } -sub xdcc_info { +sub xdcc_info_remote { my ($server, $nick, $index) = @_; + my $info = xdcc_get_info(index); + if (! $info) { return; } + xdcc_message( $server, $nick, 'xdcc_stats', '#', $info->{id} ); + xdcc_message( $server, $nick, 'xdcc_stats', 'name', $info->{name} ); + xdcc_message( $server, $nick, 'xdcc_stats', 'date', $info->{date} ); + xdcc_message( $server, $nick, 'xdcc_stats', 'size', $info->{size} ); + xdcc_message( $server, $nick, 'xdcc_stats', 'desc', $info->{desc} ); +} +sub xdcc_info { + my ($index) = @_; + my $info = xdcc_get_info(index); + if (! $info) { return; } + Irssi::printformat(MSGLEVEL_CLIENTCRAP, 'xdcc_stats', '#', $info->{id} ); + Irssi::printformat(MSGLEVEL_CLIENTCRAP, 'xdcc_stats', 'name', $info->{name} ); + Irssi::printformat(MSGLEVEL_CLIENTCRAP, 'xdcc_stats', 'date', $info->{date} ); + Irssi::printformat(MSGLEVEL_CLIENTCRAP, 'xdcc_stats', 'size', $info->{size} ); + Irssi::printformat(MSGLEVEL_CLIENTCRAP, 'xdcc_stats', 'desc', $info->{desc} ); +} +sub xdcc_get_info { + my ($index) = @_; my $id = int $index; - return if (! $id); + return if ($id < 1 || $id > scalar @files); $id -= 1; - # get stat data + my $file = $files[$id]; + + my @stats = stat($file->{path}); + my $size = $stats[7]; + my $date = $stats[9]; + + my ($m,$h,$d,$n,$y) = (localtime $date)[1..5]; + my @months = qw[Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec]; + my $ymd = sprintf "%d-%s-%d %d:%02d", $d, $months[$n], 1900+$y, $h, $m; + + my $bytes; + if ($size < 1024) { $bytes = $size + " b." } + elsif ($size < 1024*1024) { $bytes = floor($size/1024) + " kb." } + elsif ($size < 1024*1024*1024) { $bytes = sprintf("%0.1d",floor((10*$size)/(1024*1024))) + " kb." } + + return { + id => $id+1, + name => $file->{fn}, + nick => $file->{nick}, + date => $ymd, + size => $size, + desc => $file->{desc}, + } } sub xdcc_list { my ($server, $nick) = @_; @@ -551,6 +593,7 @@ sub xdcc { if ($cmd eq "add") { xdcc_add($fn, $desc, $server->{nick}) } elsif ($cmd eq "del") { xdcc_del($fn) } + elsif ($cmd eq "info") { xdcc_info($fn) } elsif ($cmd eq "list") { xdcc_report() } elsif ($cmd eq "reset") { xdcc_reset() } elsif ($cmd eq "stats") { xdcc_stats() } |
