From 4688cc7f71cadb191373ba2ea45f4a253d4cf613 Mon Sep 17 00:00:00 2001 From: Andreas Granig Date: Sun, 15 Apr 2012 11:24:06 +0000 Subject: [PATCH] Enhance graphics and packet details. Use Courier TTF in png. Show packet and cseq number in png. Show ip:port->ip:port in details. --- lib/admin/Controller/subscriber.pm | 1 + lib/admin/Utils.pm | 17 +++++++++++------ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/lib/admin/Controller/subscriber.pm b/lib/admin/Controller/subscriber.pm index 6004143..709fb71 100644 --- a/lib/admin/Controller/subscriber.pm +++ b/lib/admin/Controller/subscriber.pm @@ -1486,6 +1486,7 @@ sub sipstats_packet : Local { $pkg->{payload} = encode_entities($pkg->{payload}); $pkg->{payload} =~ s/^([^\n]+)\n/$1<\/b>\n/; + $pkg->{payload} = $pkg->{src_ip}.':'.$pkg->{src_port}.' → '. $pkg->{dst_ip}.':'.$pkg->{dst_port}.'

'.$pkg->{payload}; $pkg->{payload} =~ s/\n([a-zA-Z0-9\-_]+\:)/\n$1<\/b>/g; $pkg->{payload} =~ s/\r?\n//g; $c->stash->{current_view} = 'Plain'; diff --git a/lib/admin/Utils.pm b/lib/admin/Utils.pm index 039db94..c94dfc3 100644 --- a/lib/admin/Utils.pm +++ b/lib/admin/Utils.pm @@ -637,6 +637,7 @@ sub process_callmap { my $packets = shift; my $r_png = shift; my $r_info = shift; + my $i = 0; my %int_uas = ( $c->config->{sipstats}->{lb_int}, 'lb', @@ -651,14 +652,14 @@ sub process_callmap { my $canvas_elem_line_width = 2; my $canvas_elem_line_color = 'darkgray'; - my $canvas_elem_font = gdMediumBoldFont; - my $canvas_elem_font_size = 12; + my $canvas_elem_font = 'Courier:bold'; + my $canvas_elem_font_size = 8; my $canvas_elem_font_color = 'darkgray'; my $canvas_pkg_line_width = 2; my $canvas_pkg_line_color = 'green'; - my $canvas_pkg_font = gdMediumBoldFont; - my $canvas_pkg_font_size = 0; + my $canvas_pkg_font = 'Courier:bold'; + my $canvas_pkg_font_size = 8; my $canvas_pkg_font_color = 'dimgray'; my $html_padding = 5; @@ -698,7 +699,7 @@ sub process_callmap { ### calculate x position of all uas my %uas_pos_x = (); - my $i = 0; + $i = 0; foreach my $ua(@uas) { my $name = $ua; foreach my $k(keys %int_uas) { @@ -733,12 +734,15 @@ sub process_callmap { ### draw arrows my $y_offset = $canvas_margin + $canvas_pkg_distance; + $i = 1; foreach my $packet(@{$packets}) { my $from_x = $uas_pos_x{$packet->{src_ip}.':'.$packet->{src_port}}; my $to_x = $uas_pos_x{$packet->{dst_ip}.':'.$packet->{dst_port}}; #print "arrow from ".$packet->{src_ip}.':'.$packet->{src_port}." to ".$packet->{dst_ip}.':'.$packet->{dst_port}.": $from_x - $to_x\n"; draw_arrow($canvas, $from_x, $y_offset, $to_x, $y_offset, $canvas_pkg_line_width, $canvas_pkg_line_color); - my $txt = $packet->{method}; # TODO: also append cseq + $packet->{payload} =~ /\ncseq:\s*(\d+)\s+[a-zA-Z]+/i; + my $cseq = $1 ? $1 : '?'; + my $txt = $i.'. '.$packet->{method}.' ('.$cseq.')' ; my @bounds = $canvas->stringBounds($txt); # get bounds for text centering if($from_x < $to_x) { $from_x = $from_x+int($canvas_elem_distance/2)-int($bounds[0]/2); @@ -752,6 +756,7 @@ sub process_callmap { push @{$r_info->{areas}}, {"id", $packet->{id}, "coords", ($from_x-$html_padding).','.($y_offset-abs($bounds[1])-$html_padding).','.($from_x+abs($bounds[0])+$html_padding).','.($y_offset)}; $y_offset += $canvas_pkg_distance; + ++$i; } $$r_png = $canvas->png; }