X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=scripts%2Fmqr-track.pl;h=bda4e516ae7b5b722f604e9b178847a62c4aa71b;hb=41ec73724e90d07d071effd8ecadfeb70fc82e3c;hp=65e5888e948cb6cb4a82a33ca5be1b98ec77827c;hpb=8152a9f995afe7d4341620aeabda2c7453bd69ac;p=MQR.git diff --git a/scripts/mqr-track.pl b/scripts/mqr-track.pl index 65e5888..bda4e51 100755 --- a/scripts/mqr-track.pl +++ b/scripts/mqr-track.pl @@ -4,16 +4,34 @@ use strict; use AnyEvent::Redis; use Data::Dump qw(dump); -my $sub = AnyEvent::Redis->new( host => $ENV{REDIS_HOST}, port => $ENV{REDIS_PORT} ); +use lib 'lib'; +use MQR::Redis; my $track; +my $regex; -my $sub_cv = $sub->psubscribe('*', sub { - my($message, $chan) = @_; - warn "$chan | $message\n"; - if ( $message =~ m/^!track\s*(.+)/ ) { - $track->{$chan}->{$1}++; - warn "# track ",dump($track); +MQR::Redis->redis->psubscribe('*', sub { + my($message, $channel) = @_; + if ( $channel =~ m/^MSG / ) { + if ( $message =~ m/^!track\s*(.+)/ ) { + $track->{$1} = $channel; + $regex = join('|', keys %$track); + warn "# track regex: $regex\n"; + } elsif ( $regex && $message =~ m/($regex)/ ) { + my $m = $message; + while ( $m =~ s/($regex)// ) { + my $found = $1; + my $body = "TRACK [$found] $channel | $message"; + print "$body\n"; + my $to = $track->{$found} || die "no $1 in ",dump($track); + $to =~ s/^MSG /SEND /g; + MQR::Redis->publish( $to, $body ); + } + } else { + warn "$channel | $message\n"; + } + } else { + warn "$channel | $message\n"; } });