Changeset 6e6ded7
- Timestamp:
- Feb 16, 2007, 1:37:49 AM (16 years ago)
- Branches:
- master, barnowl_perlaim, debian, release-1.4, release-1.5, release-1.6, release-1.7, release-1.8, release-1.9
- Children:
- 0449730
- Parents:
- b6c067a
- git-author:
- Nelson Elhage <nelhage@mit.edu> (02/16/07 01:37:35)
- git-committer:
- Nelson Elhage <nelhage@mit.edu> (02/16/07 01:37:49)
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
perl/modules/jabber.pl
r1c2e0b3 r6e6ded7 1456 1456 sub to { shift->{to} }; 1457 1457 sub room { shift->{room} }; 1458 sub status { shift->{status} } 1459 1460 sub login_extra { 1461 my $self = shift; 1462 my $show = $self->{show}; 1463 my $status = $self->status; 1464 my $s = ""; 1465 $s .= $show if $show; 1466 $s .= ", $status" if $status; 1467 return $s; 1468 } 1469 1470 sub long_sender { 1471 my $self = shift; 1472 return $self->from; 1473 } 1474 1475 sub context { 1476 return shift->room; 1477 } 1458 1478 1459 1479 sub smartfilter { -
perlwrap.pm
rb6c067a r6e6ded7 204 204 } 205 205 206 # Display fields -- overridden by subclasses when needed 207 sub login_type {""} 208 sub login_extra {""} 209 sub long_sender {""} 210 211 # The context in which a non-personal message was sent, e.g. a chat or 212 # class 213 sub context {""} 214 215 # Some indicator of context *within* $self->context. e.g. the zephyr 216 # instance 217 sub subcontext {""} 218 206 219 ##################################################################### 207 220 ##################################################################### … … 238 251 239 252 use base qw( BarnOwl::Message ); 253 254 sub login_type { 255 return (shift->zsig eq "") ? "(PSEUDO)" : ""; 256 } 257 258 sub login_extra { 259 my $m = shift; 260 return undef if (!$m->is_loginout); 261 my $s = lc($m->host); 262 $s .= " " . $m->login_tty if defined $m->login_tty; 263 return $s; 264 } 265 266 sub long_sender { 267 my $m = shift; 268 return $m->zsig; 269 } 270 271 sub context { 272 return shift->class; 273 } 274 275 sub subcontext { 276 return shift->instance; 277 } 240 278 241 279 sub login_tty { … … 483 521 my $m = shift; 484 522 485 if ( $m->is_zephyr ) { 486 return format_zephyr($m); 487 } 488 elsif ( $m->is_admin ) { 523 if ( $m->is_loginout) { 524 return format_login($m); 525 } elsif($m->is_ping) { 526 return ( "\@b(PING) from \@b(" . $m->pretty_sender . ")\n" ); 527 } elsif($m->is_admin) { 489 528 return "\@bold(OWL ADMIN)\n" . indentBody($m); 490 } 491 elsif ( $m->is_aim ) { 492 return format_aim($m); 493 } 494 elsif ( lc( $m->type ) eq 'loopback' ) { 495 return format_loopback($m); 496 } 497 else { 498 return "Unexpected message type."; 529 } else { 530 return format_chat($m); 499 531 } 500 532 } … … 503 535 504 536 ################################################################################ 505 sub format_zephyr($) 506 { 507 my $m = shift; 508 509 # Extract time from message 537 538 sub time_hhmm { 539 my $m = shift; 510 540 my ($time) = $m->time =~ /(\d\d:\d\d)/; 511 512 # Deal with PING messages, assuming owl's rxping variable is true. 513 if ( $m->is_ping && $m->recipient ne "" ) { 514 return ( "\@b(PING) from \@b(" . $m->pretty_sender . ")\n" ); 515 } 516 517 # Deal with login/logout messages 518 elsif ( $m->is_loginout ) { 519 return sprintf( 520 '@b<%s%s> for @b(%s) at %s %s %s', 521 uc( $m->login ), 522 523 # This is a hack, owl does not export "pseudo"-ness 524 ( $m->zsig ) ? "" : " (PSEUDO)", 525 $m->pretty_sender, 526 lc( $m->host ), 527 $m->login_tty, 528 $time 529 ); 530 } 531 532 # Deal with outbound zephyrs (personal, we don't see outbound non-personal) 533 elsif ( lc( $m->direction ) eq 'out' ) { 534 my $user = $m->recipient; 535 $user =~ s/\@ATHENA[.]MIT[.]EDU$//; 536 537 my $zsig = $m->zsig; 538 $zsig =~ s/\n.*$//s; 539 540 return sprintf( "Zephyr sent to %s %s (Zsig: %s)\n%s", 541 $user, $time, $zsig, indentBody($m) ); 542 } 543 544 # Deal with everything else 545 else { 546 my $zsig = $m->zsig; 547 $zsig =~ s/\n.*$//s; 548 549 my $msg = sprintf( 550 "%s / %s / \@b<%s>%s %s (%s)\n%s", 551 $m->class, $m->instance, $m->pretty_sender, 552 ( $m->opcode ? " [@{[$m->opcode]}]" : "" ), 553 $time, $zsig, indentBody($m) 554 ); 555 return BarnOwl::Style::boldify($msg) if ( $m->is_private ); 556 return $msg; 557 } 558 } 559 560 561 sub format_aim($) 562 { 563 my $m = shift; 564 565 # Extract time from message 566 my ($time) = $m->time =~ /(\d\d:\d\d)/; 567 568 # Deal with login/logout messages 569 if ( $m->is_loginout ) { 570 return 571 sprintf( "\@b(AIM %s) for %s %s", 572 uc( $m->login ), 573 $m->sender, 574 $time ); 575 } 576 elsif ( lc( $m->direction ) eq 'out' ) { 577 return sprintf( "AIM sent to %s %s\n%s", 578 $m->recipient, 579 $time, 580 indentBody($m) ); 581 } 582 else { 583 return sprintf( "\@b(AIM from %s) %s\n%s", 584 $m->sender, 585 $time, 586 BarnOwl::Style::boldify( indentBody($m) ) ); 587 } 588 } 589 590 591 sub format_loopback($) 592 { 593 my $m = shift; 594 595 # Extract time from message 596 my ($time) = $m->time =~ /(\d\d:\d\d)/; 597 598 return sprintf( "loopback from: %s to: %s %s\n%s", 599 $m->sender, $m->recipient, $time, indentBody($m) ); 600 } 601 541 return $time; 542 } 543 544 sub format_login($) { 545 my $m = shift; 546 return sprintf( 547 '@b<%s%s> for @b(%s) (%s) %s', 548 uc( $m->login ), 549 $m->login_type, 550 $m->pretty_sender, 551 $m->login_extra, 552 time_hhmm($m) 553 ); 554 } 555 556 sub format_chat($) { 557 my $m = shift; 558 my $header; 559 if ( $m->is_personal ) { 560 if ( $m->direction eq "out" ) { 561 $header = ucfirst $m->type . " sent to " . $m->pretty_recipient; 562 } else { 563 $header = ucfirst $m->type . " from " . $m->pretty_sender; 564 } 565 } else { 566 $header = $m->context; 567 if($m->subcontext) { 568 $header .= " / " . $m->subcontext; 569 } 570 $header .= " / " . $m->pretty_sender; 571 } 572 573 $header .= " " . time_hhmm($m); 574 $header .= "\t(" . $m->long_sender . ")"; 575 my $message = $header . "\n". indentBody($m); 576 if($m->is_private && $m->direction eq "in") { 577 $message = BarnOwl::Style::boldify($message); 578 } 579 return $message; 580 } 602 581 603 582 sub indentBody($)
Note: See TracChangeset
for help on using the changeset viewer.