From 791e47a3a4720d6ffce5dfe06f89c19db904b6aa Mon Sep 17 00:00:00 2001 From: Sledge Sulaweyo Date: Mon, 2 Jul 2018 20:58:53 +0200 Subject: [PATCH 01/11] Create rtom_allsessions_097_spdd Add 0.9.7 compatible version --- plugins/rtorrent/rtom_allsessions_097_spdd | 157 +++++++++++++++++++++ 1 file changed, 157 insertions(+) create mode 100644 plugins/rtorrent/rtom_allsessions_097_spdd diff --git a/plugins/rtorrent/rtom_allsessions_097_spdd b/plugins/rtorrent/rtom_allsessions_097_spdd new file mode 100644 index 00000000..a33db538 --- /dev/null +++ b/plugins/rtorrent/rtom_allsessions_097_spdd @@ -0,0 +1,157 @@ +#!/usr/bin/perl -w +# +# xmlrpc based munin plugin for monitoring rtorrent's upload/download speed +# prerequisites: +# - rtorrent 0.9.7 or newer compiled with --with-xmlrpc-c +# check http://libtorrent.rakshasa.no/wiki/RTorrentXMLRPCGuide for further informations +# +# written by Gabor Hudiczius +# web: http://projects.cyla.homeip.net/rtwi/wiki/rTorrentOMeter +# email: ghudiczius@gmail.com +# +# 0.0.0 - 071218 +# initial release +# +# 0.0.1 - 071220 +# minor textbugs fixed +# +# 0.1.0d - 080519 +# full rewrite in perl +# support for scgi_port and scgi_local +# configurable via munin env variables +# different ul/dl scale can be set for asymmetric connections +# using get_(up|down)_total, and derive +# +# 0.2.0 - 080619 +# upload and download limit displayed on the graph +# +# +# Parameters: +# +# config required +# +# +# Configurable variables +# +# src "socket" when using scgi_socket, or anything else when using scgi_port +# socket rTorrent's rpc socket (scgi_local) - using scgi_local - needed, when "src" is set to "socket" +# diff "yes" for using bps for upload and Bps for download, or anything else for using Bps for both +# +# +# Configuration example +# +# [rtom_allsessions_*] +# user username +# env.src socket +# env.socket /home/user/torrent/.socket/rpc.socket,/home/user/torrent/.socket/rpc.socket +# env.category Category +# +# [rtom_allsessions_*] +# user username +# env.port 5000,5001,5002,5003 +# env.category Category +# +#%# family=auto + + +if ( $ARGV[0] and $ARGV[0] eq "autoconf" ) { + exit 1; +} + +if ( $ARGV[0] and $ARGV[0] eq "config" ) { + my $diff = $ENV{"diff"} || ""; + my $category = $ENV{"category"} || ""; + print "graph_order down up\n"; + print "graph_title rTorrent speeds\n"; + print "graph_args --base 1024\n"; + print "graph_vlabel Bytes per \${graph_period}\n"; + print "graph_category torrent ".${category}."\n"; + print "down.label Download B/s\n"; + print "down.info Download speed in Bytes per seconds\n"; + print "down.type DERIVE\n"; + print "down.min 0\n"; + print "down.draw AREA\n"; + if ( ( defined $diff ) && ( $diff eq "yes" ) ) { + print "up.label Upload b/s\n"; + print "up.info Upload speed in bits per seconds\n"; + print "up.cdef up,8,*\n"; + } else { + print "up.label Upload B/s\n"; + print "up.info Upload speed in Bytes per seconds\n"; + } + print "up.type DERIVE\n"; + print "up.min 0\n"; + print "up.draw LINE2\n"; + exit 0; +} + +use IO::Socket; +my $src = $ENV{"src"} || ""; +my @sockets = split /,/, $ENV{"socket"} || ""; +my $ip = $ENV{"ip"} || "127.0.0.1"; +my @ports = split /,/, $ENV{"port"} || ""; + +my $pattern = qr/<(int|i4|i8|ex\.i8)>([-]{0,1}\d+)<\/(int|i4|i8|ex\.i8)><\/value>/; +my $line = "system.multicallmethodNamethrottle.global_up.totalparamsmethodNamethrottle.global_down.totalparamsmethodNamethrottle.global_up.max_rateparamsmethodNamethrottle.global_down.max_rateparams"; +my $llen = length $line; +my $header = "CONTENT_LENGTH\000${llen}\000SCGI\001\000"; +my $hlen = length $header; + +my $up = -1; +my $down = -1; + +if ( ( defined $src ) && ( $src eq "socket" ) ) { + for $socket (@sockets) + { + socket( SOCK, PF_UNIX, SOCK_STREAM, 0 ) or die; + connect( SOCK, sockaddr_un( $socket ) ) or die $!; + my $line = "${hlen}:${header},${line}"; + print SOCK $line; + flush SOCK; + my $up_tmp = -1; + my $down_tmp = -1; + while (( $up_tmp == -1 ) && ( $line = ) ) { + if ( $line =~ /$pattern/ ) { + $up_tmp = $2; + } + } + while (( $down_tmp == -1 ) && ( $line = ) ) { + if ( $line =~ /$pattern/ ) { + $down_tmp = $2; + } + } + close (SOCK); + $up = $up + $up_tmp; + $down = $down + $down_tmp; + } +} else { + for $port (@ports) + { + socket( SOCK, PF_INET, SOCK_STREAM, getprotobyname( "tcp" ) ); + connect( SOCK, sockaddr_in( $port, inet_aton( $ip ) ) ); + my $line = "${hlen}:${header},${line}"; + print SOCK $line; + flush SOCK; + my $up_tmp = -1; + my $down_tmp = -1; + while (( $up_tmp == -1 ) && ( $line = ) ) { + if ( $line =~ /$pattern/ ) { + $up_tmp = $2; + } + } + while (( $down_tmp == -1 ) && ( $line = ) ) { + if ( $line =~ /$pattern/ ) { + $down_tmp = $2; + } + } + close (SOCK); + $up = $up + $up_tmp; + $down = $down + $down_tmp; + } +} + + + +print "up.value ${up}\ndown.value ${down}\n"; + +exit; From ea77d6f358c3f706673c8c68d4c1721abcd8f5b5 Mon Sep 17 00:00:00 2001 From: Sledge Sulaweyo Date: Mon, 2 Jul 2018 20:59:40 +0200 Subject: [PATCH 02/11] Create rtom_allsessions_097_mem Add 0.9.7 compatible version --- plugins/rtorrent/rtom_allsessions_097_mem | 111 ++++++++++++++++++++++ 1 file changed, 111 insertions(+) create mode 100644 plugins/rtorrent/rtom_allsessions_097_mem diff --git a/plugins/rtorrent/rtom_allsessions_097_mem b/plugins/rtorrent/rtom_allsessions_097_mem new file mode 100644 index 00000000..29190896 --- /dev/null +++ b/plugins/rtorrent/rtom_allsessions_097_mem @@ -0,0 +1,111 @@ +#!/usr/bin/perl -w +# +# xmlrpc based munin plugin for monitoring rtorrent's memory usage +# prerequisites: +# - rtorrent 0.9.7 or newer compiled with --with-xmlrpc-c +# check http://libtorrent.rakshasa.no/wiki/RTorrentXMLRPCGuide for further informations +# +# written by Gabor Hudiczius +# web: http://projects.cyla.homeip.net/rtwi/wiki/rTorrentOMeter +# email: ghudiczius@gmail.com +# +# 0.2.0 - 080619 +# support for scgi_port and scgi_local +# configurable via munin env variables +# initial release +# +# +# Parameters: +# +# config required +# +# +# Configurable variables +# +# src "socket" when using scgi_socket, or anything else when using scgi_port +# socket rTorrent's rpc socket (scgi_local) - using scgi_local - needed, when "src" is set to "socket" +# ip rTorrent's ip address - using scgi_port - needed, when "src" is NOT set to "socket" +# port rTorrent's scgi port (scgi_port) - using scgi_port - needed, when "src" is NOT set to "socket" +# category Change graph category +# +# Configuration example +# +# [rtom_allsessions_*] +# user username +# env.src socket +# env.socket /home/user/torrent/.socket/rpc.socket,/home/user/torrent/.socket/rpc.socket +# env.category Category +# +# [rtom_allsessions_*] +# user username +# env.port 5000,5001,5002,5003 +# env.category Category +# +#%# family=auto + + +if ( $ARGV[0] and $ARGV[0] eq "autoconf" ) { + exit 1; +} + +if ( $ARGV[0] and $ARGV[0] eq "config" ) { + my $category = $ENV{"category"} || ""; + print "graph_title rTorrent memory usage\n"; + print "graph_args --base 1024 --lower-limit 0\n"; + print "graph_vlabel Bytes\n"; + print "graph_category torrent ".${category}."\n"; + print "mem.label Memory usage\n"; + print "mem.info Memory usage of rTorrent\n"; + print "mem.type GAUGE\n"; + print "mem.draw LINE2\n"; + exit 0; +} + +use IO::Socket; +my $src = $ENV{"src"} || ""; +my @sockets = split /,/, $ENV{"socket"} || ""; +my $ip = $ENV{"ip"} || "127.0.0.1"; +my @ports = split /,/, $ENV{"port"} || ""; + +my $mem = 0; +my $pattern = qr/<(int|i4|i8|ex\.i8)>(\d+)<\/(int|i4|i8|ex\.i8)><\/value>/; +my $line = "pieces.memory.current"; +my $llen = length $line; +my $header = "CONTENT_LENGTH\000${llen}\000SCGI\001\000"; +my $hlen = length $header; + +if ( ( defined $src ) && ( $src eq "socket" ) ) { + for $socket (@sockets) + { + socket( SOCK, PF_UNIX, SOCK_STREAM, 0 ) or die; + connect( SOCK, sockaddr_un( $socket ) ) or die $!; + my $line = "${hlen}:${header},${line}"; + print SOCK $line; + flush SOCK; + while ( $line = ) { + if ( $line =~ /$pattern/ ) { + $mem = $mem + $2; + } + } + close (SOCK); + } +} else { + for $port (@ports) + { + socket( SOCK, PF_INET, SOCK_STREAM, getprotobyname( "tcp" ) ); + connect( SOCK, sockaddr_in( $port, inet_aton( $ip ) ) ); + my $line = "${hlen}:${header},${line}"; + print SOCK $line; + flush SOCK; + while ( $line = ) { + if ( $line =~ /$pattern/ ) { + $mem = $mem + $2; + } + } + close (SOCK); + } +} + +print "mem.value ${mem}\n"; + +exit; From 3be6c4f8a50889aab589bd5e1d235766f3912f3b Mon Sep 17 00:00:00 2001 From: Sledge Sulaweyo Date: Mon, 2 Jul 2018 21:00:35 +0200 Subject: [PATCH 03/11] Create rtom_allsessions_097_peers Add 0.9.7 compatible version --- plugins/rtorrent/rtom_allsessions_097_peers | 152 ++++++++++++++++++++ 1 file changed, 152 insertions(+) create mode 100644 plugins/rtorrent/rtom_allsessions_097_peers diff --git a/plugins/rtorrent/rtom_allsessions_097_peers b/plugins/rtorrent/rtom_allsessions_097_peers new file mode 100644 index 00000000..9421cb46 --- /dev/null +++ b/plugins/rtorrent/rtom_allsessions_097_peers @@ -0,0 +1,152 @@ +#!/usr/bin/perl -w +# +# xmlrpc based munin plugin for monitoring rtorrent's peer count +# prerequisites: +# - rtorrent 0.7.5 or newer compiled with --with-xmlrpc-c +# check http://libtorrent.rakshasa.no/wiki/RTorrentXMLRPCGuide for further informations +# +# written by Gabor Hudiczius +# web: http://projects.cyla.homeip.net/rtwi/wiki/rTorrentOMeter +# email: ghudiczius@gmail.com +# +# 0.2.0 - 080619 +# support for scgi_port and scgi_local +# configurable via munin env variables +# initial release +# +# +# Parameters: +# +# config required +# +# +# Configurable variables +# +# src "socket" when using scgi_socket, or anything else when using scgi_port +# socket rTorrent's rpc socket (scgi_local) - using scgi_local - needed, when "src" is set to "socket" +# category Change graph category +# +# Configuration example +# +# [rtom_allsessions_*] +# user username +# env.src socket +# env.socket /home/user/torrent/.socket/rpc.socket,/home/user/torrent/.socket/rpc.socket +# env.category Category +# +# [rtom_allsessions_*] +# user username +# env.port 5000,5001,5002,5003 +# env.category Category +# +#%# family=auto + + +if ( $ARGV[0] and $ARGV[0] eq "autoconf" ) { + exit 1; +} + +if ( $ARGV[0] and $ARGV[0] eq "config" ) { + my $category = $ENV{"category"} || ""; + print "graph_title rTorrent peer statistics\n"; + print "graph_args --base 1000 --lower-limit 0\n"; + print "graph_vlabel peers\n"; + print "graph_category torrent ".${category}."\n"; + print "outgoing.label outgoing\n"; + print "outgoing.draw AREA\n"; + print "outgoing.info number of outgoing connections\n"; + print "incoming.label incoming\n"; + print "incoming.draw STACK\n"; + print "incoming.info number of incoming connections\n"; + print "plain.label plain text\n"; + print "plain.draw LINE2\n"; + print "plain.info number of plain text connections\n"; + print "encrypted.label encrypted\n"; + print "encrypted.draw LINE2\n"; + print "encrypted.info number of encrypted connections\n"; + print "total.label total\n"; + print "total.draw LINE2\n"; + print "total.info total number of connections\n"; + exit 0; +} + +use IO::Socket; + +my $src = $ENV{"src"} || ""; +my @sockets = split /,/, $ENV{"socket"} || ""; +my $ip = $ENV{"ip"} || "127.0.0.1"; +my @ports = split /,/, $ENV{"port"} || ""; + +my $pattern = qr/<(int|i4|i8|ex\.i8)>(\d+)<\/(int|i4|i8|ex\.i8)><\/value>/; +my $tpattern = qr/[0-9A-F]{20}/; + +my $line = "d.multicall2maind.hash=p.multicall=,p.is_encrypted=,p.is_incoming="; +my $llen = length $line; +my $header = "CONTENT_LENGTH\000${llen}\000SCGI\001\000"; +my $hlen = length $header; +my $tor = 0; +my $tot = 0; +my $enc = 0; +my $inc = 0; +my $pline = ""; +my $ppline = ""; +my $out = 0; +my $pla = 0; + + +if ( ( defined $src ) && ( $src eq "socket" ) ) { + for $socket (@sockets) + { + socket( SOCK, PF_UNIX, SOCK_STREAM, 0 ) or die; + connect( SOCK, sockaddr_un( $socket ) ) or die $!; + my $line = "${hlen}:${header},${line}"; + print SOCK $line; + flush SOCK; + while ( $line = ) { + if ( $line =~ /$tpattern/ ) { + $tor += 1; + } elsif ( $line =~ /$pattern/ ) { + $tot += 1; + $enc += $2; + $line = ; + $line =~ /$pattern/; + $inc += $2; + } + $ppline = $pline; + $pline = $line; + } + close (SOCK); + $out = $out + $tot - $inc; + $pla = $pla + $tot - $enc; + } +} else { + for $port (@ports) + { + socket( SOCK, PF_INET, SOCK_STREAM, getprotobyname( "tcp" ) ); + connect( SOCK, sockaddr_in( $port, inet_aton( $ip ) ) ); + my $line = "${hlen}:${header},${line}"; + print SOCK $line; + flush SOCK; + while ( $line = ) { + if ( $line =~ /$tpattern/ ) { + $tor += 1; + } elsif ( $line =~ /$pattern/ ) { + $tot += 1; + $enc += $2; + $line = ; + $line =~ /$pattern/; + $inc += $2; + } + $ppline = $pline; + $pline = $line; + } + close (SOCK); + $out = $out + $tot - $inc; + $pla = $pla + $tot - $enc; + } +} + + +print "torrents.value ${tor}\ntotal.value ${tot}\nencrypted.value ${enc}\nplain.value ${pla}\nincoming.value ${inc}\noutgoing.value ${out}\n"; + +exit; From 74692d0d908e595e3b3e35085fd2f11ba8eec0ee Mon Sep 17 00:00:00 2001 From: Sledge Sulaweyo Date: Mon, 2 Jul 2018 21:01:09 +0200 Subject: [PATCH 04/11] Create rtom_allsessions_097_vol Add 0.9.7 compatible version --- plugins/rtorrent/rtom_allsessions_097_vol | 127 ++++++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 plugins/rtorrent/rtom_allsessions_097_vol diff --git a/plugins/rtorrent/rtom_allsessions_097_vol b/plugins/rtorrent/rtom_allsessions_097_vol new file mode 100644 index 00000000..efb2f767 --- /dev/null +++ b/plugins/rtorrent/rtom_allsessions_097_vol @@ -0,0 +1,127 @@ +#!/usr/bin/perl -w +# +# xmlrpc based munin plugin for monitoring rtorrent's torrent count +# prerequisites: +# - rtorrent 0.7.5 or newer compiled with --with-xmlrpc-c +# check http://libtorrent.rakshasa.no/wiki/RTorrentXMLRPCGuide for further informations +# +# written by Gabor Hudiczius +# web: http://projects.cyla.homeip.net/rtwi/wiki/rTorrentOMeter +# email: ghudiczius@gmail.com +# +# 0.2.0 - 080619 +# support for scgi_port and scgi_local +# configurable via munin env variables +# initial release +# +# +# Parameters: +# +# config required +# +# +# Configurable variables +# +# src "socket" when using scgi_socket, or anything else when using scgi_port +# socket rTorrent's rpc socket (scgi_local) - using scgi_local - needed, when "src" is set to "socket" +# category Change graph category +# +# Configuration example +# +# [rtom_allsessions_*] +# user username +# env.src socket +# env.socket /home/user/torrent/.socket/rpc.socket,/home/user/torrent/.socket/rpc.socket +# env.category Category +# +# [rtom_allsessions_*] +# user username +# env.port 5000,5001,5002,5003 +# env.category Category +# +#%# family=auto + +my @views = ( "default", "started", "stopped", "complete", "incomplete" ); + +if ( $ARGV[0] and $ARGV[0] eq "autoconf" ) { + exit 1; +} + +if ( $ARGV[0] and $ARGV[0] eq "config" ) { + my $category = $ENV{"category"} || ""; + print "graph_args --base 1000 -r --lower-limit 0\n"; + print "graph_title rTorrent volume\n"; + print "graph_vlabel active torrents\n"; + print "graph_category torrent ".${category}."\n"; + print "complete.label complete\n"; + print "complete.draw AREA\n"; + print "complete.info complete torrents\n"; + print "incomplete.label incomplete\n"; + print "incomplete.draw STACK\n"; + print "incomplete.info incomplete torrents\n"; + print "stopped.label stopped\n"; + print "stopped.draw LINE2\n"; + print "stopped.info stopped torrents\n"; + print "started.label started\n"; + print "started.draw LINE2\n"; + print "started.info started torrents\n"; + print "default.label total\n"; + print "default.draw LINE2\n"; + print "default.info all torrents\n"; + print "hashing.graph no\n"; + print "seeding.graph no\n"; + print "active.graph no\n"; + exit 0; +} + +use IO::Socket; + +my $src = $ENV{"src"} || ""; +my @sockets = split /,/, $ENV{"socket"} || ""; +my $ip = $ENV{"ip"} || "127.0.0.1"; +my @ports = split /,/, $ENV{"port"} || ""; + +my $pattern = qr/([A-Z0-9]+)<\/string><\/value>/; + +foreach ( @views ) { + my $num = 0; + my $line = "d.multicall2${_}d.hash="; + my $llen = length $line; + my $header = "CONTENT_LENGTH\000${llen}\000SCGI\001\000"; + my $hlen = length $header; + + if ( ( defined $src ) && ( $src eq "socket" ) ) { + for $socket (@sockets) + { + socket( SOCK, PF_UNIX, SOCK_STREAM, 0 ) or die; + connect( SOCK, sockaddr_un( $socket ) ) or die $!; + my $line = "${hlen}:${header},${line}"; + print SOCK $line; + flush SOCK; + while ( $line = ) { + if ( $line =~ /$pattern/ ) { + $num++; + } + } + close (SOCK); + } + } else { + for $port (@ports) + { + socket( SOCK, PF_INET, SOCK_STREAM, getprotobyname( "tcp" ) ); + connect( SOCK, sockaddr_in( $port, inet_aton( $ip ) ) ); + my $line = "${hlen}:${header},${line}"; + print SOCK $line; + flush SOCK; + while ( $line = ) { + if ( $line =~ /$pattern/ ) { + $num++; + } + } + close (SOCK); + } + } + print "${_}.value ${num}\n"; +} + +exit; From 592876ea1a75e92ae552d7d45a417573f1e8d4b7 Mon Sep 17 00:00:00 2001 From: Sledge Sulaweyo Date: Mon, 2 Jul 2018 21:02:45 +0200 Subject: [PATCH 05/11] Update rtom_allsessions_097_peers fix version --- plugins/rtorrent/rtom_allsessions_097_peers | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/rtorrent/rtom_allsessions_097_peers b/plugins/rtorrent/rtom_allsessions_097_peers index 9421cb46..f4eb0b44 100644 --- a/plugins/rtorrent/rtom_allsessions_097_peers +++ b/plugins/rtorrent/rtom_allsessions_097_peers @@ -2,7 +2,7 @@ # # xmlrpc based munin plugin for monitoring rtorrent's peer count # prerequisites: -# - rtorrent 0.7.5 or newer compiled with --with-xmlrpc-c +# - rtorrent 0.9.7 or newer compiled with --with-xmlrpc-c # check http://libtorrent.rakshasa.no/wiki/RTorrentXMLRPCGuide for further informations # # written by Gabor Hudiczius From 91fc3e72c2bcff8140b1ce9665dead8c6aa8c8b9 Mon Sep 17 00:00:00 2001 From: Sledge Sulaweyo Date: Mon, 2 Jul 2018 21:03:01 +0200 Subject: [PATCH 06/11] Update rtom_allsessions_097_vol fix version --- plugins/rtorrent/rtom_allsessions_097_vol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/rtorrent/rtom_allsessions_097_vol b/plugins/rtorrent/rtom_allsessions_097_vol index efb2f767..6b14e4f7 100644 --- a/plugins/rtorrent/rtom_allsessions_097_vol +++ b/plugins/rtorrent/rtom_allsessions_097_vol @@ -2,7 +2,7 @@ # # xmlrpc based munin plugin for monitoring rtorrent's torrent count # prerequisites: -# - rtorrent 0.7.5 or newer compiled with --with-xmlrpc-c +# - rtorrent 0.9.7 or newer compiled with --with-xmlrpc-c # check http://libtorrent.rakshasa.no/wiki/RTorrentXMLRPCGuide for further informations # # written by Gabor Hudiczius From 8bfb81806d1e1489512d5936b1733c5e769e0d0c Mon Sep 17 00:00:00 2001 From: Sledge Sulaweyo Date: Fri, 6 Jul 2018 16:41:11 +0200 Subject: [PATCH 07/11] drop seperate files and make api version configureable --- plugins/rtorrent/rtom_allsessions_097_mem | 111 -------------- plugins/rtorrent/rtom_allsessions_097_peers | 152 ------------------- plugins/rtorrent/rtom_allsessions_097_spdd | 157 -------------------- plugins/rtorrent/rtom_allsessions_097_vol | 127 ---------------- plugins/rtorrent/rtom_allsessions_mem | 16 +- plugins/rtorrent/rtom_allsessions_peers | 20 ++- plugins/rtorrent/rtom_allsessions_spdd | 15 +- plugins/rtorrent/rtom_allsessions_vol | 145 +++++++++--------- 8 files changed, 115 insertions(+), 628 deletions(-) delete mode 100644 plugins/rtorrent/rtom_allsessions_097_mem delete mode 100644 plugins/rtorrent/rtom_allsessions_097_peers delete mode 100644 plugins/rtorrent/rtom_allsessions_097_spdd delete mode 100644 plugins/rtorrent/rtom_allsessions_097_vol diff --git a/plugins/rtorrent/rtom_allsessions_097_mem b/plugins/rtorrent/rtom_allsessions_097_mem deleted file mode 100644 index 29190896..00000000 --- a/plugins/rtorrent/rtom_allsessions_097_mem +++ /dev/null @@ -1,111 +0,0 @@ -#!/usr/bin/perl -w -# -# xmlrpc based munin plugin for monitoring rtorrent's memory usage -# prerequisites: -# - rtorrent 0.9.7 or newer compiled with --with-xmlrpc-c -# check http://libtorrent.rakshasa.no/wiki/RTorrentXMLRPCGuide for further informations -# -# written by Gabor Hudiczius -# web: http://projects.cyla.homeip.net/rtwi/wiki/rTorrentOMeter -# email: ghudiczius@gmail.com -# -# 0.2.0 - 080619 -# support for scgi_port and scgi_local -# configurable via munin env variables -# initial release -# -# -# Parameters: -# -# config required -# -# -# Configurable variables -# -# src "socket" when using scgi_socket, or anything else when using scgi_port -# socket rTorrent's rpc socket (scgi_local) - using scgi_local - needed, when "src" is set to "socket" -# ip rTorrent's ip address - using scgi_port - needed, when "src" is NOT set to "socket" -# port rTorrent's scgi port (scgi_port) - using scgi_port - needed, when "src" is NOT set to "socket" -# category Change graph category -# -# Configuration example -# -# [rtom_allsessions_*] -# user username -# env.src socket -# env.socket /home/user/torrent/.socket/rpc.socket,/home/user/torrent/.socket/rpc.socket -# env.category Category -# -# [rtom_allsessions_*] -# user username -# env.port 5000,5001,5002,5003 -# env.category Category -# -#%# family=auto - - -if ( $ARGV[0] and $ARGV[0] eq "autoconf" ) { - exit 1; -} - -if ( $ARGV[0] and $ARGV[0] eq "config" ) { - my $category = $ENV{"category"} || ""; - print "graph_title rTorrent memory usage\n"; - print "graph_args --base 1024 --lower-limit 0\n"; - print "graph_vlabel Bytes\n"; - print "graph_category torrent ".${category}."\n"; - print "mem.label Memory usage\n"; - print "mem.info Memory usage of rTorrent\n"; - print "mem.type GAUGE\n"; - print "mem.draw LINE2\n"; - exit 0; -} - -use IO::Socket; -my $src = $ENV{"src"} || ""; -my @sockets = split /,/, $ENV{"socket"} || ""; -my $ip = $ENV{"ip"} || "127.0.0.1"; -my @ports = split /,/, $ENV{"port"} || ""; - -my $mem = 0; -my $pattern = qr/<(int|i4|i8|ex\.i8)>(\d+)<\/(int|i4|i8|ex\.i8)><\/value>/; -my $line = "pieces.memory.current"; -my $llen = length $line; -my $header = "CONTENT_LENGTH\000${llen}\000SCGI\001\000"; -my $hlen = length $header; - -if ( ( defined $src ) && ( $src eq "socket" ) ) { - for $socket (@sockets) - { - socket( SOCK, PF_UNIX, SOCK_STREAM, 0 ) or die; - connect( SOCK, sockaddr_un( $socket ) ) or die $!; - my $line = "${hlen}:${header},${line}"; - print SOCK $line; - flush SOCK; - while ( $line = ) { - if ( $line =~ /$pattern/ ) { - $mem = $mem + $2; - } - } - close (SOCK); - } -} else { - for $port (@ports) - { - socket( SOCK, PF_INET, SOCK_STREAM, getprotobyname( "tcp" ) ); - connect( SOCK, sockaddr_in( $port, inet_aton( $ip ) ) ); - my $line = "${hlen}:${header},${line}"; - print SOCK $line; - flush SOCK; - while ( $line = ) { - if ( $line =~ /$pattern/ ) { - $mem = $mem + $2; - } - } - close (SOCK); - } -} - -print "mem.value ${mem}\n"; - -exit; diff --git a/plugins/rtorrent/rtom_allsessions_097_peers b/plugins/rtorrent/rtom_allsessions_097_peers deleted file mode 100644 index f4eb0b44..00000000 --- a/plugins/rtorrent/rtom_allsessions_097_peers +++ /dev/null @@ -1,152 +0,0 @@ -#!/usr/bin/perl -w -# -# xmlrpc based munin plugin for monitoring rtorrent's peer count -# prerequisites: -# - rtorrent 0.9.7 or newer compiled with --with-xmlrpc-c -# check http://libtorrent.rakshasa.no/wiki/RTorrentXMLRPCGuide for further informations -# -# written by Gabor Hudiczius -# web: http://projects.cyla.homeip.net/rtwi/wiki/rTorrentOMeter -# email: ghudiczius@gmail.com -# -# 0.2.0 - 080619 -# support for scgi_port and scgi_local -# configurable via munin env variables -# initial release -# -# -# Parameters: -# -# config required -# -# -# Configurable variables -# -# src "socket" when using scgi_socket, or anything else when using scgi_port -# socket rTorrent's rpc socket (scgi_local) - using scgi_local - needed, when "src" is set to "socket" -# category Change graph category -# -# Configuration example -# -# [rtom_allsessions_*] -# user username -# env.src socket -# env.socket /home/user/torrent/.socket/rpc.socket,/home/user/torrent/.socket/rpc.socket -# env.category Category -# -# [rtom_allsessions_*] -# user username -# env.port 5000,5001,5002,5003 -# env.category Category -# -#%# family=auto - - -if ( $ARGV[0] and $ARGV[0] eq "autoconf" ) { - exit 1; -} - -if ( $ARGV[0] and $ARGV[0] eq "config" ) { - my $category = $ENV{"category"} || ""; - print "graph_title rTorrent peer statistics\n"; - print "graph_args --base 1000 --lower-limit 0\n"; - print "graph_vlabel peers\n"; - print "graph_category torrent ".${category}."\n"; - print "outgoing.label outgoing\n"; - print "outgoing.draw AREA\n"; - print "outgoing.info number of outgoing connections\n"; - print "incoming.label incoming\n"; - print "incoming.draw STACK\n"; - print "incoming.info number of incoming connections\n"; - print "plain.label plain text\n"; - print "plain.draw LINE2\n"; - print "plain.info number of plain text connections\n"; - print "encrypted.label encrypted\n"; - print "encrypted.draw LINE2\n"; - print "encrypted.info number of encrypted connections\n"; - print "total.label total\n"; - print "total.draw LINE2\n"; - print "total.info total number of connections\n"; - exit 0; -} - -use IO::Socket; - -my $src = $ENV{"src"} || ""; -my @sockets = split /,/, $ENV{"socket"} || ""; -my $ip = $ENV{"ip"} || "127.0.0.1"; -my @ports = split /,/, $ENV{"port"} || ""; - -my $pattern = qr/<(int|i4|i8|ex\.i8)>(\d+)<\/(int|i4|i8|ex\.i8)><\/value>/; -my $tpattern = qr/[0-9A-F]{20}/; - -my $line = "d.multicall2maind.hash=p.multicall=,p.is_encrypted=,p.is_incoming="; -my $llen = length $line; -my $header = "CONTENT_LENGTH\000${llen}\000SCGI\001\000"; -my $hlen = length $header; -my $tor = 0; -my $tot = 0; -my $enc = 0; -my $inc = 0; -my $pline = ""; -my $ppline = ""; -my $out = 0; -my $pla = 0; - - -if ( ( defined $src ) && ( $src eq "socket" ) ) { - for $socket (@sockets) - { - socket( SOCK, PF_UNIX, SOCK_STREAM, 0 ) or die; - connect( SOCK, sockaddr_un( $socket ) ) or die $!; - my $line = "${hlen}:${header},${line}"; - print SOCK $line; - flush SOCK; - while ( $line = ) { - if ( $line =~ /$tpattern/ ) { - $tor += 1; - } elsif ( $line =~ /$pattern/ ) { - $tot += 1; - $enc += $2; - $line = ; - $line =~ /$pattern/; - $inc += $2; - } - $ppline = $pline; - $pline = $line; - } - close (SOCK); - $out = $out + $tot - $inc; - $pla = $pla + $tot - $enc; - } -} else { - for $port (@ports) - { - socket( SOCK, PF_INET, SOCK_STREAM, getprotobyname( "tcp" ) ); - connect( SOCK, sockaddr_in( $port, inet_aton( $ip ) ) ); - my $line = "${hlen}:${header},${line}"; - print SOCK $line; - flush SOCK; - while ( $line = ) { - if ( $line =~ /$tpattern/ ) { - $tor += 1; - } elsif ( $line =~ /$pattern/ ) { - $tot += 1; - $enc += $2; - $line = ; - $line =~ /$pattern/; - $inc += $2; - } - $ppline = $pline; - $pline = $line; - } - close (SOCK); - $out = $out + $tot - $inc; - $pla = $pla + $tot - $enc; - } -} - - -print "torrents.value ${tor}\ntotal.value ${tot}\nencrypted.value ${enc}\nplain.value ${pla}\nincoming.value ${inc}\noutgoing.value ${out}\n"; - -exit; diff --git a/plugins/rtorrent/rtom_allsessions_097_spdd b/plugins/rtorrent/rtom_allsessions_097_spdd deleted file mode 100644 index a33db538..00000000 --- a/plugins/rtorrent/rtom_allsessions_097_spdd +++ /dev/null @@ -1,157 +0,0 @@ -#!/usr/bin/perl -w -# -# xmlrpc based munin plugin for monitoring rtorrent's upload/download speed -# prerequisites: -# - rtorrent 0.9.7 or newer compiled with --with-xmlrpc-c -# check http://libtorrent.rakshasa.no/wiki/RTorrentXMLRPCGuide for further informations -# -# written by Gabor Hudiczius -# web: http://projects.cyla.homeip.net/rtwi/wiki/rTorrentOMeter -# email: ghudiczius@gmail.com -# -# 0.0.0 - 071218 -# initial release -# -# 0.0.1 - 071220 -# minor textbugs fixed -# -# 0.1.0d - 080519 -# full rewrite in perl -# support for scgi_port and scgi_local -# configurable via munin env variables -# different ul/dl scale can be set for asymmetric connections -# using get_(up|down)_total, and derive -# -# 0.2.0 - 080619 -# upload and download limit displayed on the graph -# -# -# Parameters: -# -# config required -# -# -# Configurable variables -# -# src "socket" when using scgi_socket, or anything else when using scgi_port -# socket rTorrent's rpc socket (scgi_local) - using scgi_local - needed, when "src" is set to "socket" -# diff "yes" for using bps for upload and Bps for download, or anything else for using Bps for both -# -# -# Configuration example -# -# [rtom_allsessions_*] -# user username -# env.src socket -# env.socket /home/user/torrent/.socket/rpc.socket,/home/user/torrent/.socket/rpc.socket -# env.category Category -# -# [rtom_allsessions_*] -# user username -# env.port 5000,5001,5002,5003 -# env.category Category -# -#%# family=auto - - -if ( $ARGV[0] and $ARGV[0] eq "autoconf" ) { - exit 1; -} - -if ( $ARGV[0] and $ARGV[0] eq "config" ) { - my $diff = $ENV{"diff"} || ""; - my $category = $ENV{"category"} || ""; - print "graph_order down up\n"; - print "graph_title rTorrent speeds\n"; - print "graph_args --base 1024\n"; - print "graph_vlabel Bytes per \${graph_period}\n"; - print "graph_category torrent ".${category}."\n"; - print "down.label Download B/s\n"; - print "down.info Download speed in Bytes per seconds\n"; - print "down.type DERIVE\n"; - print "down.min 0\n"; - print "down.draw AREA\n"; - if ( ( defined $diff ) && ( $diff eq "yes" ) ) { - print "up.label Upload b/s\n"; - print "up.info Upload speed in bits per seconds\n"; - print "up.cdef up,8,*\n"; - } else { - print "up.label Upload B/s\n"; - print "up.info Upload speed in Bytes per seconds\n"; - } - print "up.type DERIVE\n"; - print "up.min 0\n"; - print "up.draw LINE2\n"; - exit 0; -} - -use IO::Socket; -my $src = $ENV{"src"} || ""; -my @sockets = split /,/, $ENV{"socket"} || ""; -my $ip = $ENV{"ip"} || "127.0.0.1"; -my @ports = split /,/, $ENV{"port"} || ""; - -my $pattern = qr/<(int|i4|i8|ex\.i8)>([-]{0,1}\d+)<\/(int|i4|i8|ex\.i8)><\/value>/; -my $line = "system.multicallmethodNamethrottle.global_up.totalparamsmethodNamethrottle.global_down.totalparamsmethodNamethrottle.global_up.max_rateparamsmethodNamethrottle.global_down.max_rateparams"; -my $llen = length $line; -my $header = "CONTENT_LENGTH\000${llen}\000SCGI\001\000"; -my $hlen = length $header; - -my $up = -1; -my $down = -1; - -if ( ( defined $src ) && ( $src eq "socket" ) ) { - for $socket (@sockets) - { - socket( SOCK, PF_UNIX, SOCK_STREAM, 0 ) or die; - connect( SOCK, sockaddr_un( $socket ) ) or die $!; - my $line = "${hlen}:${header},${line}"; - print SOCK $line; - flush SOCK; - my $up_tmp = -1; - my $down_tmp = -1; - while (( $up_tmp == -1 ) && ( $line = ) ) { - if ( $line =~ /$pattern/ ) { - $up_tmp = $2; - } - } - while (( $down_tmp == -1 ) && ( $line = ) ) { - if ( $line =~ /$pattern/ ) { - $down_tmp = $2; - } - } - close (SOCK); - $up = $up + $up_tmp; - $down = $down + $down_tmp; - } -} else { - for $port (@ports) - { - socket( SOCK, PF_INET, SOCK_STREAM, getprotobyname( "tcp" ) ); - connect( SOCK, sockaddr_in( $port, inet_aton( $ip ) ) ); - my $line = "${hlen}:${header},${line}"; - print SOCK $line; - flush SOCK; - my $up_tmp = -1; - my $down_tmp = -1; - while (( $up_tmp == -1 ) && ( $line = ) ) { - if ( $line =~ /$pattern/ ) { - $up_tmp = $2; - } - } - while (( $down_tmp == -1 ) && ( $line = ) ) { - if ( $line =~ /$pattern/ ) { - $down_tmp = $2; - } - } - close (SOCK); - $up = $up + $up_tmp; - $down = $down + $down_tmp; - } -} - - - -print "up.value ${up}\ndown.value ${down}\n"; - -exit; diff --git a/plugins/rtorrent/rtom_allsessions_097_vol b/plugins/rtorrent/rtom_allsessions_097_vol deleted file mode 100644 index 6b14e4f7..00000000 --- a/plugins/rtorrent/rtom_allsessions_097_vol +++ /dev/null @@ -1,127 +0,0 @@ -#!/usr/bin/perl -w -# -# xmlrpc based munin plugin for monitoring rtorrent's torrent count -# prerequisites: -# - rtorrent 0.9.7 or newer compiled with --with-xmlrpc-c -# check http://libtorrent.rakshasa.no/wiki/RTorrentXMLRPCGuide for further informations -# -# written by Gabor Hudiczius -# web: http://projects.cyla.homeip.net/rtwi/wiki/rTorrentOMeter -# email: ghudiczius@gmail.com -# -# 0.2.0 - 080619 -# support for scgi_port and scgi_local -# configurable via munin env variables -# initial release -# -# -# Parameters: -# -# config required -# -# -# Configurable variables -# -# src "socket" when using scgi_socket, or anything else when using scgi_port -# socket rTorrent's rpc socket (scgi_local) - using scgi_local - needed, when "src" is set to "socket" -# category Change graph category -# -# Configuration example -# -# [rtom_allsessions_*] -# user username -# env.src socket -# env.socket /home/user/torrent/.socket/rpc.socket,/home/user/torrent/.socket/rpc.socket -# env.category Category -# -# [rtom_allsessions_*] -# user username -# env.port 5000,5001,5002,5003 -# env.category Category -# -#%# family=auto - -my @views = ( "default", "started", "stopped", "complete", "incomplete" ); - -if ( $ARGV[0] and $ARGV[0] eq "autoconf" ) { - exit 1; -} - -if ( $ARGV[0] and $ARGV[0] eq "config" ) { - my $category = $ENV{"category"} || ""; - print "graph_args --base 1000 -r --lower-limit 0\n"; - print "graph_title rTorrent volume\n"; - print "graph_vlabel active torrents\n"; - print "graph_category torrent ".${category}."\n"; - print "complete.label complete\n"; - print "complete.draw AREA\n"; - print "complete.info complete torrents\n"; - print "incomplete.label incomplete\n"; - print "incomplete.draw STACK\n"; - print "incomplete.info incomplete torrents\n"; - print "stopped.label stopped\n"; - print "stopped.draw LINE2\n"; - print "stopped.info stopped torrents\n"; - print "started.label started\n"; - print "started.draw LINE2\n"; - print "started.info started torrents\n"; - print "default.label total\n"; - print "default.draw LINE2\n"; - print "default.info all torrents\n"; - print "hashing.graph no\n"; - print "seeding.graph no\n"; - print "active.graph no\n"; - exit 0; -} - -use IO::Socket; - -my $src = $ENV{"src"} || ""; -my @sockets = split /,/, $ENV{"socket"} || ""; -my $ip = $ENV{"ip"} || "127.0.0.1"; -my @ports = split /,/, $ENV{"port"} || ""; - -my $pattern = qr/([A-Z0-9]+)<\/string><\/value>/; - -foreach ( @views ) { - my $num = 0; - my $line = "d.multicall2${_}d.hash="; - my $llen = length $line; - my $header = "CONTENT_LENGTH\000${llen}\000SCGI\001\000"; - my $hlen = length $header; - - if ( ( defined $src ) && ( $src eq "socket" ) ) { - for $socket (@sockets) - { - socket( SOCK, PF_UNIX, SOCK_STREAM, 0 ) or die; - connect( SOCK, sockaddr_un( $socket ) ) or die $!; - my $line = "${hlen}:${header},${line}"; - print SOCK $line; - flush SOCK; - while ( $line = ) { - if ( $line =~ /$pattern/ ) { - $num++; - } - } - close (SOCK); - } - } else { - for $port (@ports) - { - socket( SOCK, PF_INET, SOCK_STREAM, getprotobyname( "tcp" ) ); - connect( SOCK, sockaddr_in( $port, inet_aton( $ip ) ) ); - my $line = "${hlen}:${header},${line}"; - print SOCK $line; - flush SOCK; - while ( $line = ) { - if ( $line =~ /$pattern/ ) { - $num++; - } - } - close (SOCK); - } - } - print "${_}.value ${num}\n"; -} - -exit; diff --git a/plugins/rtorrent/rtom_allsessions_mem b/plugins/rtorrent/rtom_allsessions_mem index 1b12be09..1c83292b 100755 --- a/plugins/rtorrent/rtom_allsessions_mem +++ b/plugins/rtorrent/rtom_allsessions_mem @@ -27,6 +27,7 @@ # ip rTorrent's ip address - using scgi_port - needed, when "src" is NOT set to "socket" # port rTorrent's scgi port (scgi_port) - using scgi_port - needed, when "src" is NOT set to "socket" # category Change graph category +# api use 'legacy' (pre 0.9.0) or current (0.9.0+) API calls # # Configuration example # @@ -35,6 +36,7 @@ # env.src socket # env.socket /home/user/torrent/.socket/rpc.socket,/home/user/torrent/.socket/rpc.socket # env.category Category +# env.api current # # [rtom_allsessions_*] # user username @@ -66,10 +68,16 @@ my $src = $ENV{"src"} || ""; my @sockets = split /,/, $ENV{"socket"} || ""; my $ip = $ENV{"ip"} || "127.0.0.1"; my @ports = split /,/, $ENV{"port"} || ""; +my $api = $ENV{"api"} || "legacy"; -my $mem = 0; +my $mem = 0; my $pattern = qr/<(int|i4|i8|ex\.i8)>(\d+)<\/(int|i4|i8|ex\.i8)><\/value>/; -my $line = "get_memory_usage"; +my $line = ""; +if ($api =~ /legacy/) { + $line = "get_memory_usage"; +} else { + $line = "pieces.memory.current"; +} my $llen = length $line; my $header = "CONTENT_LENGTH\000${llen}\000SCGI\001\000"; my $hlen = length $header; @@ -88,10 +96,10 @@ if ( ( defined $src ) && ( $src eq "socket" ) ) { } } close (SOCK); - } + } } else { for $port (@ports) - { + { socket( SOCK, PF_INET, SOCK_STREAM, getprotobyname( "tcp" ) ); connect( SOCK, sockaddr_in( $port, inet_aton( $ip ) ) ); my $line = "${hlen}:${header},${line}"; diff --git a/plugins/rtorrent/rtom_allsessions_peers b/plugins/rtorrent/rtom_allsessions_peers index a3cc1705..e0ea4532 100755 --- a/plugins/rtorrent/rtom_allsessions_peers +++ b/plugins/rtorrent/rtom_allsessions_peers @@ -22,9 +22,10 @@ # # Configurable variables # -# src "socket" when using scgi_socket, or anything else when using scgi_port -# socket rTorrent's rpc socket (scgi_local) - using scgi_local - needed, when "src" is set to "socket" -# category Change graph category +# src "socket" when using scgi_socket, or anything else when using scgi_port +# socket rTorrent's rpc socket (scgi_local) - using scgi_local - needed, when "src" is set to "socket" +# category Change graph category +# api use 'legacy' (pre 0.9.0) or current (0.9.0+) API calls # # Configuration example # @@ -33,6 +34,7 @@ # env.src socket # env.socket /home/user/torrent/.socket/rpc.socket,/home/user/torrent/.socket/rpc.socket # env.category Category +# env.api current # # [rtom_allsessions_*] # user username @@ -76,11 +78,17 @@ my $src = $ENV{"src"} || ""; my @sockets = split /,/, $ENV{"socket"} || ""; my $ip = $ENV{"ip"} || "127.0.0.1"; my @ports = split /,/, $ENV{"port"} || ""; +my $api = $ENV{"api"} || "legacy"; my $pattern = qr/<(int|i4|i8|ex\.i8)>(\d+)<\/(int|i4|i8|ex\.i8)><\/value>/; my $tpattern = qr/[0-9A-F]{20}/; -my $line = "d.multicallmaind.get_hash=p.multicall=,p.is_encrypted=,p.is_incoming="; +my $line = ""; +if ($api =~ /legacy/) { + $line = "d.multicallmaind.get_hash=p.multicall=,p.is_encrypted=,p.is_incoming="; +} else { + $line = "d.multicall2maind.hash=p.multicall=,p.is_encrypted=,p.is_incoming="; +} my $llen = length $line; my $header = "CONTENT_LENGTH\000${llen}\000SCGI\001\000"; my $hlen = length $header; @@ -119,10 +127,10 @@ if ( ( defined $src ) && ( $src eq "socket" ) ) { close (SOCK); $out = $out + $tot - $inc; $pla = $pla + $tot - $enc; - } + } } else { for $port (@ports) - { + { socket( SOCK, PF_INET, SOCK_STREAM, getprotobyname( "tcp" ) ); connect( SOCK, sockaddr_in( $port, inet_aton( $ip ) ) ); my $line = "${hlen}:${header},${line}"; diff --git a/plugins/rtorrent/rtom_allsessions_spdd b/plugins/rtorrent/rtom_allsessions_spdd index ed89061a..26e51435 100755 --- a/plugins/rtorrent/rtom_allsessions_spdd +++ b/plugins/rtorrent/rtom_allsessions_spdd @@ -36,6 +36,7 @@ # src "socket" when using scgi_socket, or anything else when using scgi_port # socket rTorrent's rpc socket (scgi_local) - using scgi_local - needed, when "src" is set to "socket" # diff "yes" for using bps for upload and Bps for download, or anything else for using Bps for both +# api use 'legacy' (pre 0.9.0) or current (0.9.0+) API calls # # # Configuration example @@ -45,6 +46,7 @@ # env.src socket # env.socket /home/user/torrent/.socket/rpc.socket,/home/user/torrent/.socket/rpc.socket # env.category Category +# env.api current # # [rtom_allsessions_*] # user username @@ -90,9 +92,16 @@ my $src = $ENV{"src"} || ""; my @sockets = split /,/, $ENV{"socket"} || ""; my $ip = $ENV{"ip"} || "127.0.0.1"; my @ports = split /,/, $ENV{"port"} || ""; +my $api = $ENV{"api"} || "legacy"; my $pattern = qr/<(int|i4|i8|ex\.i8)>([-]{0,1}\d+)<\/(int|i4|i8|ex\.i8)><\/value>/; -my $line = "system.multicallmethodNameget_up_totalparamsmethodNameget_down_totalparamsmethodNameget_upload_rateparamsmethodNameget_download_rateparams"; +my $line = ""; +if ($api =~ /legacy/) { + $line = "system.multicallmethodNameget_up_totalparamsmethodNameget_down_totalparamsmethodNameget_upload_rateparamsmethodNameget_download_rateparams"; +} else { + $line = "system.multicallmethodNamethrottle.global_up.totalparamsmethodNamethrottle.global_down.totalparamsmethodNamethrottle.global_up.max_rateparamsmethodNamethrottle.global_down.max_rateparams"; +} + my $llen = length $line; my $header = "CONTENT_LENGTH\000${llen}\000SCGI\001\000"; my $hlen = length $header; @@ -123,10 +132,10 @@ if ( ( defined $src ) && ( $src eq "socket" ) ) { close (SOCK); $up = $up + $up_tmp; $down = $down + $down_tmp; - } + } } else { for $port (@ports) - { + { socket( SOCK, PF_INET, SOCK_STREAM, getprotobyname( "tcp" ) ); connect( SOCK, sockaddr_in( $port, inet_aton( $ip ) ) ); my $line = "${hlen}:${header},${line}"; diff --git a/plugins/rtorrent/rtom_allsessions_vol b/plugins/rtorrent/rtom_allsessions_vol index 830575f4..fe99af9b 100755 --- a/plugins/rtorrent/rtom_allsessions_vol +++ b/plugins/rtorrent/rtom_allsessions_vol @@ -3,7 +3,7 @@ # xmlrpc based munin plugin for monitoring rtorrent's torrent count # prerequisites: # - rtorrent 0.7.5 or newer compiled with --with-xmlrpc-c -# check http://libtorrent.rakshasa.no/wiki/RTorrentXMLRPCGuide for further information +# check http://libtorrent.rakshasa.no/wiki/RTorrentXMLRPCGuide for further informations # # written by Gabor Hudiczius # web: http://projects.cyla.homeip.net/rtwi/wiki/rTorrentOMeter @@ -17,14 +17,15 @@ # # Parameters: # -# config required +# config required # # # Configurable variables # -# src "socket" when using scgi_socket, or anything else when using scgi_port -# socket rTorrent's rpc socket (scgi_local) - using scgi_local - needed, when "src" is set to "socket" -# category Change graph category +# src "socket" when using scgi_socket, or anything else when using scgi_port +# socket rTorrent's rpc socket (scgi_local) - using scgi_local - needed, when "src" is set to "socket" +# category Change graph category +# api use 'legacy' (pre 0.9.0) or current (0.9.0+) API calls # # Configuration example # @@ -33,45 +34,47 @@ # env.src socket # env.socket /home/user/torrent/.socket/rpc.socket,/home/user/torrent/.socket/rpc.socket # env.category Category +# env.api current # # [rtom_allsessions_*] # user username # env.port 5000,5001,5002,5003 # env.category Category +# env.api legacy # #%# family=auto my @views = ( "default", "started", "stopped", "complete", "incomplete" ); if ( $ARGV[0] and $ARGV[0] eq "autoconf" ) { - exit 1; + exit 1; } if ( $ARGV[0] and $ARGV[0] eq "config" ) { - my $category = $ENV{"category"} || ""; - print "graph_args --base 1000 -r --lower-limit 0\n"; - print "graph_title rTorrent volume\n"; - print "graph_vlabel active torrents\n"; - print "graph_category filetransfer".${category}."\n"; - print "complete.label complete\n"; - print "complete.draw AREA\n"; - print "complete.info complete torrents\n"; - print "incomplete.label incomplete\n"; - print "incomplete.draw STACK\n"; - print "incomplete.info incomplete torrents\n"; - print "stopped.label stopped\n"; - print "stopped.draw LINE2\n"; - print "stopped.info stopped torrents\n"; - print "started.label started\n"; - print "started.draw LINE2\n"; - print "started.info started torrents\n"; - print "default.label total\n"; - print "default.draw LINE2\n"; - print "default.info all torrents\n"; - print "hashing.graph no\n"; - print "seeding.graph no\n"; - print "active.graph no\n"; - exit 0; + my $category = $ENV{"category"} || ""; + print "graph_args --base 1000 -r --lower-limit 0\n"; + print "graph_title rTorrent volume\n"; + print "graph_vlabel active torrents\n"; + print "graph_category torrent ".${category}."\n"; + print "complete.label complete\n"; + print "complete.draw AREA\n"; + print "complete.info complete torrents\n"; + print "incomplete.label incomplete\n"; + print "incomplete.draw STACK\n"; + print "incomplete.info incomplete torrents\n"; + print "stopped.label stopped\n"; + print "stopped.draw LINE2\n"; + print "stopped.info stopped torrents\n"; + print "started.label started\n"; + print "started.draw LINE2\n"; + print "started.info started torrents\n"; + print "default.label total\n"; + print "default.draw LINE2\n"; + print "default.info all torrents\n"; + print "hashing.graph no\n"; + print "seeding.graph no\n"; + print "active.graph no\n"; + exit 0; } use IO::Socket; @@ -80,48 +83,54 @@ my $src = $ENV{"src"} || ""; my @sockets = split /,/, $ENV{"socket"} || ""; my $ip = $ENV{"ip"} || "127.0.0.1"; my @ports = split /,/, $ENV{"port"} || ""; +my $api = $ENV{"api"} || "legacy"; -my $pattern = qr/([A-Z0-9]+)<\/string><\/value>/; +my $pattern = qr/([A-Z0-9]+)<\/string><\/value>/; foreach ( @views ) { - my $num = 0; - my $line = "d.multicall${_}d.get_hash="; - my $llen = length $line; - my $header = "CONTENT_LENGTH\000${llen}\000SCGI\001\000"; - my $hlen = length $header; + my $num = 0; + my $line = ""; + if ($api =~ /legacy/) { + $line = "d.multicall${_}d.get_hash="; + } else { + $line = "d.multicall2${_}d.hash="; + } + my $llen = length $line; + my $header = "CONTENT_LENGTH\000${llen}\000SCGI\001\000"; + my $hlen = length $header; - if ( ( defined $src ) && ( $src eq "socket" ) ) { - for $socket (@sockets) - { - socket( SOCK, PF_UNIX, SOCK_STREAM, 0 ) or die; - connect( SOCK, sockaddr_un( $socket ) ) or die $!; - my $line = "${hlen}:${header},${line}"; - print SOCK $line; - flush SOCK; - while ( $line = ) { - if ( $line =~ /$pattern/ ) { - $num++; - } - } - close (SOCK); - } - } else { - for $port (@ports) - { - socket( SOCK, PF_INET, SOCK_STREAM, getprotobyname( "tcp" ) ); - connect( SOCK, sockaddr_in( $port, inet_aton( $ip ) ) ); - my $line = "${hlen}:${header},${line}"; - print SOCK $line; - flush SOCK; - while ( $line = ) { - if ( $line =~ /$pattern/ ) { - $num++; - } - } - close (SOCK); - } - } - print "${_}.value ${num}\n"; + if ( ( defined $src ) && ( $src eq "socket" ) ) { + for $socket (@sockets) + { + socket( SOCK, PF_UNIX, SOCK_STREAM, 0 ) or die; + connect( SOCK, sockaddr_un( $socket ) ) or die $!; + my $line = "${hlen}:${header},${line}"; + print SOCK $line; + flush SOCK; + while ( $line = ) { + if ( $line =~ /$pattern/ ) { + $num++; + } + } + close (SOCK); + } + } else { + for $port (@ports) + { + socket( SOCK, PF_INET, SOCK_STREAM, getprotobyname( "tcp" ) ); + connect( SOCK, sockaddr_in( $port, inet_aton( $ip ) ) ); + my $line = "${hlen}:${header},${line}"; + print SOCK $line; + flush SOCK; + while ( $line = ) { + if ( $line =~ /$pattern/ ) { + $num++; + } + } + close (SOCK); + } + } + print "${_}.value ${num}\n"; } exit; From 121448e72d29963ec0964e67f09972edbbf26ac3 Mon Sep 17 00:00:00 2001 From: Sledge Sulaweyo Date: Tue, 10 Jul 2018 16:58:28 +0200 Subject: [PATCH 08/11] fix indentation, rename lagacy to pre09 --- plugins/rtorrent/rtom_allsessions_mem | 84 ++++++------ plugins/rtorrent/rtom_allsessions_peers | 164 ++++++++++++------------ plugins/rtorrent/rtom_allsessions_spdd | 150 +++++++++++----------- plugins/rtorrent/rtom_allsessions_vol | 140 ++++++++++---------- 4 files changed, 269 insertions(+), 269 deletions(-) diff --git a/plugins/rtorrent/rtom_allsessions_mem b/plugins/rtorrent/rtom_allsessions_mem index 1c83292b..9011b9d3 100755 --- a/plugins/rtorrent/rtom_allsessions_mem +++ b/plugins/rtorrent/rtom_allsessions_mem @@ -27,7 +27,7 @@ # ip rTorrent's ip address - using scgi_port - needed, when "src" is NOT set to "socket" # port rTorrent's scgi port (scgi_port) - using scgi_port - needed, when "src" is NOT set to "socket" # category Change graph category -# api use 'legacy' (pre 0.9.0) or current (0.9.0+) API calls +# api use 'pre09' (pre 0.9.0) or 'current' (0.9.0+) API calls # # Configuration example # @@ -47,20 +47,20 @@ if ( $ARGV[0] and $ARGV[0] eq "autoconf" ) { - exit 1; + exit 1; } if ( $ARGV[0] and $ARGV[0] eq "config" ) { - my $category = $ENV{"category"} || ""; - print "graph_title rTorrent memory usage\n"; - print "graph_args --base 1024 --lower-limit 0\n"; - print "graph_vlabel Bytes\n"; - print "graph_category filetransfer".${category}."\n"; - print "mem.label Memory usage\n"; - print "mem.info Memory usage of rTorrent\n"; - print "mem.type GAUGE\n"; - print "mem.draw LINE2\n"; - exit 0; + my $category = $ENV{"category"} || ""; + print "graph_title rTorrent memory usage\n"; + print "graph_args --base 1024 --lower-limit 0\n"; + print "graph_vlabel Bytes\n"; + print "graph_category filetransfer".${category}."\n"; + print "mem.label Memory usage\n"; + print "mem.info Memory usage of rTorrent\n"; + print "mem.type GAUGE\n"; + print "mem.draw LINE2\n"; + exit 0; } use IO::Socket; @@ -68,12 +68,12 @@ my $src = $ENV{"src"} || ""; my @sockets = split /,/, $ENV{"socket"} || ""; my $ip = $ENV{"ip"} || "127.0.0.1"; my @ports = split /,/, $ENV{"port"} || ""; -my $api = $ENV{"api"} || "legacy"; +my $api = $ENV{"api"} || "pre09"; my $mem = 0; my $pattern = qr/<(int|i4|i8|ex\.i8)>(\d+)<\/(int|i4|i8|ex\.i8)><\/value>/; my $line = ""; -if ($api =~ /legacy/) { +if ($api =~ /pre09/) { $line = "get_memory_usage"; } else { $line = "pieces.memory.current"; @@ -83,35 +83,35 @@ my $header = "CONTENT_LENGTH\000${llen}\000SCGI\001\000"; my $hlen = length $header; if ( ( defined $src ) && ( $src eq "socket" ) ) { - for $socket (@sockets) - { - socket( SOCK, PF_UNIX, SOCK_STREAM, 0 ) or die; - connect( SOCK, sockaddr_un( $socket ) ) or die $!; - my $line = "${hlen}:${header},${line}"; - print SOCK $line; - flush SOCK; - while ( $line = ) { - if ( $line =~ /$pattern/ ) { - $mem = $mem + $2; - } - } - close (SOCK); - } + for $socket (@sockets) + { + socket( SOCK, PF_UNIX, SOCK_STREAM, 0 ) or die; + connect( SOCK, sockaddr_un( $socket ) ) or die $!; + my $line = "${hlen}:${header},${line}"; + print SOCK $line; + flush SOCK; + while ( $line = ) { + if ( $line =~ /$pattern/ ) { + $mem = $mem + $2; + } + } + close (SOCK); + } } else { - for $port (@ports) - { - socket( SOCK, PF_INET, SOCK_STREAM, getprotobyname( "tcp" ) ); - connect( SOCK, sockaddr_in( $port, inet_aton( $ip ) ) ); - my $line = "${hlen}:${header},${line}"; - print SOCK $line; - flush SOCK; - while ( $line = ) { - if ( $line =~ /$pattern/ ) { - $mem = $mem + $2; - } - } - close (SOCK); - } + for $port (@ports) + { + socket( SOCK, PF_INET, SOCK_STREAM, getprotobyname( "tcp" ) ); + connect( SOCK, sockaddr_in( $port, inet_aton( $ip ) ) ); + my $line = "${hlen}:${header},${line}"; + print SOCK $line; + flush SOCK; + while ( $line = ) { + if ( $line =~ /$pattern/ ) { + $mem = $mem + $2; + } + } + close (SOCK); + } } print "mem.value ${mem}\n"; diff --git a/plugins/rtorrent/rtom_allsessions_peers b/plugins/rtorrent/rtom_allsessions_peers index e0ea4532..3e01b4a8 100755 --- a/plugins/rtorrent/rtom_allsessions_peers +++ b/plugins/rtorrent/rtom_allsessions_peers @@ -17,15 +17,15 @@ # # Parameters: # -# config required +# config required # # # Configurable variables # -# src "socket" when using scgi_socket, or anything else when using scgi_port -# socket rTorrent's rpc socket (scgi_local) - using scgi_local - needed, when "src" is set to "socket" -# category Change graph category -# api use 'legacy' (pre 0.9.0) or current (0.9.0+) API calls +# src "socket" when using scgi_socket, or anything else when using scgi_port +# socket rTorrent's rpc socket (scgi_local) - using scgi_local - needed, when "src" is set to "socket" +# category Change graph category +# api use 'pre09' (pre 0.9.0) or 'current' (0.9.0+) API calls # # Configuration example # @@ -45,31 +45,31 @@ if ( $ARGV[0] and $ARGV[0] eq "autoconf" ) { - exit 1; + exit 1; } if ( $ARGV[0] and $ARGV[0] eq "config" ) { - my $category = $ENV{"category"} || ""; - print "graph_title rTorrent peer statistics\n"; - print "graph_args --base 1000 --lower-limit 0\n"; - print "graph_vlabel peers\n"; - print "graph_category filetransfer".${category}."\n"; - print "outgoing.label outgoing\n"; - print "outgoing.draw AREA\n"; - print "outgoing.info number of outgoing connections\n"; - print "incoming.label incoming\n"; - print "incoming.draw STACK\n"; - print "incoming.info number of incoming connections\n"; - print "plain.label plain text\n"; - print "plain.draw LINE2\n"; - print "plain.info number of plain text connections\n"; - print "encrypted.label encrypted\n"; - print "encrypted.draw LINE2\n"; - print "encrypted.info number of encrypted connections\n"; - print "total.label total\n"; - print "total.draw LINE2\n"; - print "total.info total number of connections\n"; - exit 0; + my $category = $ENV{"category"} || ""; + print "graph_title rTorrent peer statistics\n"; + print "graph_args --base 1000 --lower-limit 0\n"; + print "graph_vlabel peers\n"; + print "graph_category filetransfer".${category}."\n"; + print "outgoing.label outgoing\n"; + print "outgoing.draw AREA\n"; + print "outgoing.info number of outgoing connections\n"; + print "incoming.label incoming\n"; + print "incoming.draw STACK\n"; + print "incoming.info number of incoming connections\n"; + print "plain.label plain text\n"; + print "plain.draw LINE2\n"; + print "plain.info number of plain text connections\n"; + print "encrypted.label encrypted\n"; + print "encrypted.draw LINE2\n"; + print "encrypted.info number of encrypted connections\n"; + print "total.label total\n"; + print "total.draw LINE2\n"; + print "total.info total number of connections\n"; + exit 0; } use IO::Socket; @@ -78,20 +78,20 @@ my $src = $ENV{"src"} || ""; my @sockets = split /,/, $ENV{"socket"} || ""; my $ip = $ENV{"ip"} || "127.0.0.1"; my @ports = split /,/, $ENV{"port"} || ""; -my $api = $ENV{"api"} || "legacy"; +my $api = $ENV{"api"} || "pre09"; -my $pattern = qr/<(int|i4|i8|ex\.i8)>(\d+)<\/(int|i4|i8|ex\.i8)><\/value>/; -my $tpattern = qr/[0-9A-F]{20}/; +my $pattern = qr/<(int|i4|i8|ex\.i8)>(\d+)<\/(int|i4|i8|ex\.i8)><\/value>/; +my $tpattern = qr/[0-9A-F]{20}/; my $line = ""; -if ($api =~ /legacy/) { +if ($api =~ /pre09/) { $line = "d.multicallmaind.get_hash=p.multicall=,p.is_encrypted=,p.is_incoming="; } else { $line = "d.multicall2maind.hash=p.multicall=,p.is_encrypted=,p.is_incoming="; } -my $llen = length $line; -my $header = "CONTENT_LENGTH\000${llen}\000SCGI\001\000"; -my $hlen = length $header; +my $llen = length $line; +my $header = "CONTENT_LENGTH\000${llen}\000SCGI\001\000"; +my $hlen = length $header; my $tor = 0; my $tot = 0; @@ -104,55 +104,55 @@ my $pla = 0; if ( ( defined $src ) && ( $src eq "socket" ) ) { - for $socket (@sockets) - { - socket( SOCK, PF_UNIX, SOCK_STREAM, 0 ) or die; - connect( SOCK, sockaddr_un( $socket ) ) or die $!; - my $line = "${hlen}:${header},${line}"; - print SOCK $line; - flush SOCK; - while ( $line = ) { - if ( $line =~ /$tpattern/ ) { - $tor += 1; - } elsif ( $line =~ /$pattern/ ) { - $tot += 1; - $enc += $2; - $line = ; - $line =~ /$pattern/; - $inc += $2; - } - $ppline = $pline; - $pline = $line; - } - close (SOCK); - $out = $out + $tot - $inc; - $pla = $pla + $tot - $enc; - } + for $socket (@sockets) + { + socket( SOCK, PF_UNIX, SOCK_STREAM, 0 ) or die; + connect( SOCK, sockaddr_un( $socket ) ) or die $!; + my $line = "${hlen}:${header},${line}"; + print SOCK $line; + flush SOCK; + while ( $line = ) { + if ( $line =~ /$tpattern/ ) { + $tor += 1; + } elsif ( $line =~ /$pattern/ ) { + $tot += 1; + $enc += $2; + $line = ; + $line =~ /$pattern/; + $inc += $2; + } + $ppline = $pline; + $pline = $line; + } + close (SOCK); + $out = $out + $tot - $inc; + $pla = $pla + $tot - $enc; + } } else { - for $port (@ports) - { - socket( SOCK, PF_INET, SOCK_STREAM, getprotobyname( "tcp" ) ); - connect( SOCK, sockaddr_in( $port, inet_aton( $ip ) ) ); - my $line = "${hlen}:${header},${line}"; - print SOCK $line; - flush SOCK; - while ( $line = ) { - if ( $line =~ /$tpattern/ ) { - $tor += 1; - } elsif ( $line =~ /$pattern/ ) { - $tot += 1; - $enc += $2; - $line = ; - $line =~ /$pattern/; - $inc += $2; - } - $ppline = $pline; - $pline = $line; - } - close (SOCK); - $out = $out + $tot - $inc; - $pla = $pla + $tot - $enc; - } + for $port (@ports) + { + socket( SOCK, PF_INET, SOCK_STREAM, getprotobyname( "tcp" ) ); + connect( SOCK, sockaddr_in( $port, inet_aton( $ip ) ) ); + my $line = "${hlen}:${header},${line}"; + print SOCK $line; + flush SOCK; + while ( $line = ) { + if ( $line =~ /$tpattern/ ) { + $tor += 1; + } elsif ( $line =~ /$pattern/ ) { + $tot += 1; + $enc += $2; + $line = ; + $line =~ /$pattern/; + $inc += $2; + } + $ppline = $pline; + $pline = $line; + } + close (SOCK); + $out = $out + $tot - $inc; + $pla = $pla + $tot - $enc; + } } diff --git a/plugins/rtorrent/rtom_allsessions_spdd b/plugins/rtorrent/rtom_allsessions_spdd index 26e51435..d608dd78 100755 --- a/plugins/rtorrent/rtom_allsessions_spdd +++ b/plugins/rtorrent/rtom_allsessions_spdd @@ -36,7 +36,7 @@ # src "socket" when using scgi_socket, or anything else when using scgi_port # socket rTorrent's rpc socket (scgi_local) - using scgi_local - needed, when "src" is set to "socket" # diff "yes" for using bps for upload and Bps for download, or anything else for using Bps for both -# api use 'legacy' (pre 0.9.0) or current (0.9.0+) API calls +# api use 'pre09' (pre 0.9.0) or 'current' (0.9.0+) API calls # # # Configuration example @@ -46,7 +46,7 @@ # env.src socket # env.socket /home/user/torrent/.socket/rpc.socket,/home/user/torrent/.socket/rpc.socket # env.category Category -# env.api current +# env.api pre09 # # [rtom_allsessions_*] # user username @@ -57,34 +57,34 @@ if ( $ARGV[0] and $ARGV[0] eq "autoconf" ) { - exit 1; + exit 1; } if ( $ARGV[0] and $ARGV[0] eq "config" ) { - my $diff = $ENV{"diff"} || ""; - my $category = $ENV{"category"} || ""; - print "graph_order down up\n"; - print "graph_title rTorrent speeds\n"; - print "graph_args --base 1024\n"; - print "graph_vlabel Bytes per \${graph_period}\n"; - print "graph_category filetransfer".${category}."\n"; - print "down.label Download B/s\n"; - print "down.info Download speed in Bytes per seconds\n"; - print "down.type DERIVE\n"; - print "down.min 0\n"; - print "down.draw AREA\n"; - if ( ( defined $diff ) && ( $diff eq "yes" ) ) { - print "up.label Upload b/s\n"; - print "up.info Upload speed in bits per seconds\n"; - print "up.cdef up,8,*\n"; - } else { - print "up.label Upload B/s\n"; - print "up.info Upload speed in Bytes per seconds\n"; - } - print "up.type DERIVE\n"; - print "up.min 0\n"; - print "up.draw LINE2\n"; - exit 0; + my $diff = $ENV{"diff"} || ""; + my $category = $ENV{"category"} || ""; + print "graph_order down up\n"; + print "graph_title rTorrent speeds\n"; + print "graph_args --base 1024\n"; + print "graph_vlabel Bytes per \${graph_period}\n"; + print "graph_category filetransfer".${category}."\n"; + print "down.label Download B/s\n"; + print "down.info Download speed in Bytes per seconds\n"; + print "down.type DERIVE\n"; + print "down.min 0\n"; + print "down.draw AREA\n"; + if ( ( defined $diff ) && ( $diff eq "yes" ) ) { + print "up.label Upload b/s\n"; + print "up.info Upload speed in bits per seconds\n"; + print "up.cdef up,8,*\n"; + } else { + print "up.label Upload B/s\n"; + print "up.info Upload speed in Bytes per seconds\n"; + } + print "up.type DERIVE\n"; + print "up.min 0\n"; + print "up.draw LINE2\n"; + exit 0; } use IO::Socket; @@ -92,11 +92,11 @@ my $src = $ENV{"src"} || ""; my @sockets = split /,/, $ENV{"socket"} || ""; my $ip = $ENV{"ip"} || "127.0.0.1"; my @ports = split /,/, $ENV{"port"} || ""; -my $api = $ENV{"api"} || "legacy"; +my $api = $ENV{"api"} || "pre09"; my $pattern = qr/<(int|i4|i8|ex\.i8)>([-]{0,1}\d+)<\/(int|i4|i8|ex\.i8)><\/value>/; my $line = ""; -if ($api =~ /legacy/) { +if ($api =~ /pre09/) { $line = "system.multicallmethodNameget_up_totalparamsmethodNameget_down_totalparamsmethodNameget_upload_rateparamsmethodNameget_download_rateparams"; } else { $line = "system.multicallmethodNamethrottle.global_up.totalparamsmethodNamethrottle.global_down.totalparamsmethodNamethrottle.global_up.max_rateparamsmethodNamethrottle.global_down.max_rateparams"; @@ -110,53 +110,53 @@ my $up = -1; my $down = -1; if ( ( defined $src ) && ( $src eq "socket" ) ) { - for $socket (@sockets) - { - socket( SOCK, PF_UNIX, SOCK_STREAM, 0 ) or die; - connect( SOCK, sockaddr_un( $socket ) ) or die $!; - my $line = "${hlen}:${header},${line}"; - print SOCK $line; - flush SOCK; - my $up_tmp = -1; - my $down_tmp = -1; - while (( $up_tmp == -1 ) && ( $line = ) ) { - if ( $line =~ /$pattern/ ) { - $up_tmp = $2; - } - } - while (( $down_tmp == -1 ) && ( $line = ) ) { - if ( $line =~ /$pattern/ ) { - $down_tmp = $2; - } - } - close (SOCK); - $up = $up + $up_tmp; - $down = $down + $down_tmp; - } + for $socket (@sockets) + { + socket( SOCK, PF_UNIX, SOCK_STREAM, 0 ) or die; + connect( SOCK, sockaddr_un( $socket ) ) or die $!; + my $line = "${hlen}:${header},${line}"; + print SOCK $line; + flush SOCK; + my $up_tmp = -1; + my $down_tmp = -1; + while (( $up_tmp == -1 ) && ( $line = ) ) { + if ( $line =~ /$pattern/ ) { + $up_tmp = $2; + } + } + while (( $down_tmp == -1 ) && ( $line = ) ) { + if ( $line =~ /$pattern/ ) { + $down_tmp = $2; + } + } + close (SOCK); + $up = $up + $up_tmp; + $down = $down + $down_tmp; + } } else { - for $port (@ports) - { - socket( SOCK, PF_INET, SOCK_STREAM, getprotobyname( "tcp" ) ); - connect( SOCK, sockaddr_in( $port, inet_aton( $ip ) ) ); - my $line = "${hlen}:${header},${line}"; - print SOCK $line; - flush SOCK; - my $up_tmp = -1; - my $down_tmp = -1; - while (( $up_tmp == -1 ) && ( $line = ) ) { - if ( $line =~ /$pattern/ ) { - $up_tmp = $2; - } - } - while (( $down_tmp == -1 ) && ( $line = ) ) { - if ( $line =~ /$pattern/ ) { - $down_tmp = $2; - } - } - close (SOCK); - $up = $up + $up_tmp; - $down = $down + $down_tmp; - } + for $port (@ports) + { + socket( SOCK, PF_INET, SOCK_STREAM, getprotobyname( "tcp" ) ); + connect( SOCK, sockaddr_in( $port, inet_aton( $ip ) ) ); + my $line = "${hlen}:${header},${line}"; + print SOCK $line; + flush SOCK; + my $up_tmp = -1; + my $down_tmp = -1; + while (( $up_tmp == -1 ) && ( $line = ) ) { + if ( $line =~ /$pattern/ ) { + $up_tmp = $2; + } + } + while (( $down_tmp == -1 ) && ( $line = ) ) { + if ( $line =~ /$pattern/ ) { + $down_tmp = $2; + } + } + close (SOCK); + $up = $up + $up_tmp; + $down = $down + $down_tmp; + } } diff --git a/plugins/rtorrent/rtom_allsessions_vol b/plugins/rtorrent/rtom_allsessions_vol index fe99af9b..3dac5aa8 100755 --- a/plugins/rtorrent/rtom_allsessions_vol +++ b/plugins/rtorrent/rtom_allsessions_vol @@ -3,7 +3,7 @@ # xmlrpc based munin plugin for monitoring rtorrent's torrent count # prerequisites: # - rtorrent 0.7.5 or newer compiled with --with-xmlrpc-c -# check http://libtorrent.rakshasa.no/wiki/RTorrentXMLRPCGuide for further informations +# check http://libtorrent.rakshasa.no/wiki/RTorrentXMLRPCGuide for further information # # written by Gabor Hudiczius # web: http://projects.cyla.homeip.net/rtwi/wiki/rTorrentOMeter @@ -25,7 +25,7 @@ # src "socket" when using scgi_socket, or anything else when using scgi_port # socket rTorrent's rpc socket (scgi_local) - using scgi_local - needed, when "src" is set to "socket" # category Change graph category -# api use 'legacy' (pre 0.9.0) or current (0.9.0+) API calls +# api use 'pre09' (pre 0.9.0) or 'current' (0.9.0+) API calls # # Configuration example # @@ -40,41 +40,41 @@ # user username # env.port 5000,5001,5002,5003 # env.category Category -# env.api legacy +# env.api pre09 # #%# family=auto my @views = ( "default", "started", "stopped", "complete", "incomplete" ); if ( $ARGV[0] and $ARGV[0] eq "autoconf" ) { - exit 1; + exit 1; } if ( $ARGV[0] and $ARGV[0] eq "config" ) { - my $category = $ENV{"category"} || ""; - print "graph_args --base 1000 -r --lower-limit 0\n"; - print "graph_title rTorrent volume\n"; - print "graph_vlabel active torrents\n"; - print "graph_category torrent ".${category}."\n"; - print "complete.label complete\n"; - print "complete.draw AREA\n"; - print "complete.info complete torrents\n"; - print "incomplete.label incomplete\n"; - print "incomplete.draw STACK\n"; - print "incomplete.info incomplete torrents\n"; - print "stopped.label stopped\n"; - print "stopped.draw LINE2\n"; - print "stopped.info stopped torrents\n"; - print "started.label started\n"; - print "started.draw LINE2\n"; - print "started.info started torrents\n"; - print "default.label total\n"; - print "default.draw LINE2\n"; - print "default.info all torrents\n"; - print "hashing.graph no\n"; - print "seeding.graph no\n"; - print "active.graph no\n"; - exit 0; + my $category = $ENV{"category"} || ""; + print "graph_args --base 1000 -r --lower-limit 0\n"; + print "graph_title rTorrent volume\n"; + print "graph_vlabel active torrents\n"; + print "graph_category torrent ".${category}."\n"; + print "complete.label complete\n"; + print "complete.draw AREA\n"; + print "complete.info complete torrents\n"; + print "incomplete.label incomplete\n"; + print "incomplete.draw STACK\n"; + print "incomplete.info incomplete torrents\n"; + print "stopped.label stopped\n"; + print "stopped.draw LINE2\n"; + print "stopped.info stopped torrents\n"; + print "started.label started\n"; + print "started.draw LINE2\n"; + print "started.info started torrents\n"; + print "default.label total\n"; + print "default.draw LINE2\n"; + print "default.info all torrents\n"; + print "hashing.graph no\n"; + print "seeding.graph no\n"; + print "active.graph no\n"; + exit 0; } use IO::Socket; @@ -83,54 +83,54 @@ my $src = $ENV{"src"} || ""; my @sockets = split /,/, $ENV{"socket"} || ""; my $ip = $ENV{"ip"} || "127.0.0.1"; my @ports = split /,/, $ENV{"port"} || ""; -my $api = $ENV{"api"} || "legacy"; +my $api = $ENV{"api"} || "pre09"; my $pattern = qr/([A-Z0-9]+)<\/string><\/value>/; foreach ( @views ) { - my $num = 0; - my $line = ""; - if ($api =~ /legacy/) { - $line = "d.multicall${_}d.get_hash="; - } else { - $line = "d.multicall2${_}d.hash="; - } - my $llen = length $line; - my $header = "CONTENT_LENGTH\000${llen}\000SCGI\001\000"; - my $hlen = length $header; + my $num = 0; + my $line = ""; + if ($api =~ /pre09/) { + $line = "d.multicall${_}d.get_hash="; + } else { + $line = "d.multicall2${_}d.hash="; + } + my $llen = length $line; + my $header = "CONTENT_LENGTH\000${llen}\000SCGI\001\000"; + my $hlen = length $header; - if ( ( defined $src ) && ( $src eq "socket" ) ) { - for $socket (@sockets) - { - socket( SOCK, PF_UNIX, SOCK_STREAM, 0 ) or die; - connect( SOCK, sockaddr_un( $socket ) ) or die $!; - my $line = "${hlen}:${header},${line}"; - print SOCK $line; - flush SOCK; - while ( $line = ) { - if ( $line =~ /$pattern/ ) { - $num++; - } - } - close (SOCK); - } - } else { - for $port (@ports) - { - socket( SOCK, PF_INET, SOCK_STREAM, getprotobyname( "tcp" ) ); - connect( SOCK, sockaddr_in( $port, inet_aton( $ip ) ) ); - my $line = "${hlen}:${header},${line}"; - print SOCK $line; - flush SOCK; - while ( $line = ) { - if ( $line =~ /$pattern/ ) { - $num++; - } - } - close (SOCK); - } + if ( ( defined $src ) && ( $src eq "socket" ) ) { + for $socket (@sockets) + { + socket( SOCK, PF_UNIX, SOCK_STREAM, 0 ) or die; + connect( SOCK, sockaddr_un( $socket ) ) or die $!; + my $line = "${hlen}:${header},${line}"; + print SOCK $line; + flush SOCK; + while ( $line = ) { + if ( $line =~ /$pattern/ ) { + $num++; } - print "${_}.value ${num}\n"; + } + close (SOCK); + } + } else { + for $port (@ports) + { + socket( SOCK, PF_INET, SOCK_STREAM, getprotobyname( "tcp" ) ); + connect( SOCK, sockaddr_in( $port, inet_aton( $ip ) ) ); + my $line = "${hlen}:${header},${line}"; + print SOCK $line; + flush SOCK; + while ( $line = ) { + if ( $line =~ /$pattern/ ) { + $num++; + } + } + close (SOCK); + } + } + print "${_}.value ${num}\n"; } exit; From 51927e79f3b84d4d841d0e2a1a4e8306f492b851 Mon Sep 17 00:00:00 2001 From: Sledge Sulaweyo Date: Tue, 10 Jul 2018 17:04:22 +0200 Subject: [PATCH 09/11] again formating --- plugins/rtorrent/rtom_allsessions_mem | 2 +- plugins/rtorrent/rtom_allsessions_peers | 2 +- plugins/rtorrent/rtom_allsessions_spdd | 2 +- plugins/rtorrent/rtom_allsessions_vol | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/plugins/rtorrent/rtom_allsessions_mem b/plugins/rtorrent/rtom_allsessions_mem index 9011b9d3..be30bda8 100755 --- a/plugins/rtorrent/rtom_allsessions_mem +++ b/plugins/rtorrent/rtom_allsessions_mem @@ -27,7 +27,7 @@ # ip rTorrent's ip address - using scgi_port - needed, when "src" is NOT set to "socket" # port rTorrent's scgi port (scgi_port) - using scgi_port - needed, when "src" is NOT set to "socket" # category Change graph category -# api use 'pre09' (pre 0.9.0) or 'current' (0.9.0+) API calls +# api use "pre09" (pre 0.9.0) or "current" (0.9.0+) API calls # # Configuration example # diff --git a/plugins/rtorrent/rtom_allsessions_peers b/plugins/rtorrent/rtom_allsessions_peers index 3e01b4a8..6157eb04 100755 --- a/plugins/rtorrent/rtom_allsessions_peers +++ b/plugins/rtorrent/rtom_allsessions_peers @@ -25,7 +25,7 @@ # src "socket" when using scgi_socket, or anything else when using scgi_port # socket rTorrent's rpc socket (scgi_local) - using scgi_local - needed, when "src" is set to "socket" # category Change graph category -# api use 'pre09' (pre 0.9.0) or 'current' (0.9.0+) API calls +# api use "pre09" (pre 0.9.0) or "current" (0.9.0+) API calls # # Configuration example # diff --git a/plugins/rtorrent/rtom_allsessions_spdd b/plugins/rtorrent/rtom_allsessions_spdd index d608dd78..61827270 100755 --- a/plugins/rtorrent/rtom_allsessions_spdd +++ b/plugins/rtorrent/rtom_allsessions_spdd @@ -36,7 +36,7 @@ # src "socket" when using scgi_socket, or anything else when using scgi_port # socket rTorrent's rpc socket (scgi_local) - using scgi_local - needed, when "src" is set to "socket" # diff "yes" for using bps for upload and Bps for download, or anything else for using Bps for both -# api use 'pre09' (pre 0.9.0) or 'current' (0.9.0+) API calls +# api use "pre09" (pre 0.9.0) or "current" (0.9.0+) API calls # # # Configuration example diff --git a/plugins/rtorrent/rtom_allsessions_vol b/plugins/rtorrent/rtom_allsessions_vol index 3dac5aa8..f474c3d6 100755 --- a/plugins/rtorrent/rtom_allsessions_vol +++ b/plugins/rtorrent/rtom_allsessions_vol @@ -25,7 +25,7 @@ # src "socket" when using scgi_socket, or anything else when using scgi_port # socket rTorrent's rpc socket (scgi_local) - using scgi_local - needed, when "src" is set to "socket" # category Change graph category -# api use 'pre09' (pre 0.9.0) or 'current' (0.9.0+) API calls +# api use "pre09" (pre 0.9.0) or 'current' (0.9.0+) API calls # # Configuration example # From 348776e66bd385e3ec11f5851a3a68bcc2bbe27a Mon Sep 17 00:00:00 2001 From: Sledge Sulaweyo Date: Wed, 11 Jul 2018 17:21:38 +0200 Subject: [PATCH 10/11] fix category to be the same on all --- plugins/rtorrent/rtom_allsessions_vol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/rtorrent/rtom_allsessions_vol b/plugins/rtorrent/rtom_allsessions_vol index f474c3d6..4977b509 100755 --- a/plugins/rtorrent/rtom_allsessions_vol +++ b/plugins/rtorrent/rtom_allsessions_vol @@ -55,7 +55,7 @@ if ( $ARGV[0] and $ARGV[0] eq "config" ) { print "graph_args --base 1000 -r --lower-limit 0\n"; print "graph_title rTorrent volume\n"; print "graph_vlabel active torrents\n"; - print "graph_category torrent ".${category}."\n"; + print "graph_category filetransfer".${category}."\n"; print "complete.label complete\n"; print "complete.draw AREA\n"; print "complete.info complete torrents\n"; From 143a9543c43ad30fdf3d11cf2c60797801d2edf9 Mon Sep 17 00:00:00 2001 From: Sledge Sulaweyo Date: Sun, 15 Jul 2018 15:14:39 +0200 Subject: [PATCH 11/11] switch default API to current --- plugins/rtorrent/rtom_allsessions_mem | 2 +- plugins/rtorrent/rtom_allsessions_peers | 2 +- plugins/rtorrent/rtom_allsessions_spdd | 2 +- plugins/rtorrent/rtom_allsessions_vol | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/plugins/rtorrent/rtom_allsessions_mem b/plugins/rtorrent/rtom_allsessions_mem index be30bda8..a29fa2ef 100755 --- a/plugins/rtorrent/rtom_allsessions_mem +++ b/plugins/rtorrent/rtom_allsessions_mem @@ -68,7 +68,7 @@ my $src = $ENV{"src"} || ""; my @sockets = split /,/, $ENV{"socket"} || ""; my $ip = $ENV{"ip"} || "127.0.0.1"; my @ports = split /,/, $ENV{"port"} || ""; -my $api = $ENV{"api"} || "pre09"; +my $api = $ENV{"api"} || "current"; my $mem = 0; my $pattern = qr/<(int|i4|i8|ex\.i8)>(\d+)<\/(int|i4|i8|ex\.i8)><\/value>/; diff --git a/plugins/rtorrent/rtom_allsessions_peers b/plugins/rtorrent/rtom_allsessions_peers index 6157eb04..7b6187c7 100755 --- a/plugins/rtorrent/rtom_allsessions_peers +++ b/plugins/rtorrent/rtom_allsessions_peers @@ -78,7 +78,7 @@ my $src = $ENV{"src"} || ""; my @sockets = split /,/, $ENV{"socket"} || ""; my $ip = $ENV{"ip"} || "127.0.0.1"; my @ports = split /,/, $ENV{"port"} || ""; -my $api = $ENV{"api"} || "pre09"; +my $api = $ENV{"api"} || "current"; my $pattern = qr/<(int|i4|i8|ex\.i8)>(\d+)<\/(int|i4|i8|ex\.i8)><\/value>/; my $tpattern = qr/[0-9A-F]{20}/; diff --git a/plugins/rtorrent/rtom_allsessions_spdd b/plugins/rtorrent/rtom_allsessions_spdd index 61827270..5a366105 100755 --- a/plugins/rtorrent/rtom_allsessions_spdd +++ b/plugins/rtorrent/rtom_allsessions_spdd @@ -92,7 +92,7 @@ my $src = $ENV{"src"} || ""; my @sockets = split /,/, $ENV{"socket"} || ""; my $ip = $ENV{"ip"} || "127.0.0.1"; my @ports = split /,/, $ENV{"port"} || ""; -my $api = $ENV{"api"} || "pre09"; +my $api = $ENV{"api"} || "current"; my $pattern = qr/<(int|i4|i8|ex\.i8)>([-]{0,1}\d+)<\/(int|i4|i8|ex\.i8)><\/value>/; my $line = ""; diff --git a/plugins/rtorrent/rtom_allsessions_vol b/plugins/rtorrent/rtom_allsessions_vol index 4977b509..a5db49d2 100755 --- a/plugins/rtorrent/rtom_allsessions_vol +++ b/plugins/rtorrent/rtom_allsessions_vol @@ -83,7 +83,7 @@ my $src = $ENV{"src"} || ""; my @sockets = split /,/, $ENV{"socket"} || ""; my $ip = $ENV{"ip"} || "127.0.0.1"; my @ports = split /,/, $ENV{"port"} || ""; -my $api = $ENV{"api"} || "pre09"; +my $api = $ENV{"api"} || "current"; my $pattern = qr/([A-Z0-9]+)<\/string><\/value>/;