Ignore:
Timestamp:
Jan 9, 2008, 2:18:31 PM (13 years ago)
Author:
Alejandro R. Sedeño <asedeno@mit.edu>
Branches:
master, barnowl_perlaim, debian, release-1.4, release-1.5, release-1.6, release-1.7, release-1.8, release-1.9
Children:
16c6cca
Parents:
428834d (diff), 6286f26 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:
Merged revisions 803-811 via svnmerge from 
file:///afs/sipb.mit.edu/project/barnowl/src/svn/trunk

........
  r805 | geofft | 2008-01-08 23:24:09 -0500 (Tue, 08 Jan 2008) | 5 lines
  
  Added support for channels in IRC. After you :irc-connect to a server, you can
  :irc-join #channel, and then :irc-msg either a user or a #channel. Replies,
  isprivate, and context should work vaguely as expected.
........
  r806 | nelhage | 2008-01-09 00:25:32 -0500 (Wed, 09 Jan 2008) | 1 line
........
  r807 | nelhage | 2008-01-09 00:25:56 -0500 (Wed, 09 Jan 2008) | 1 line
........
  r808 | nelhage | 2008-01-09 00:26:15 -0500 (Wed, 09 Jan 2008) | 3 lines
  
   r27173@lunatique:  nelhage | 2008-01-09 00:25:13 -0500
   Implement smartnarrow on channels
........
  r809 | nelhage | 2008-01-09 01:26:19 -0500 (Wed, 09 Jan 2008) | 4 lines
  
   r27177@lunatique:  nelhage | 2008-01-09 01:23:14 -0500
   import is_private from ::Connection
   
........
  r810 | nelhage | 2008-01-09 02:23:31 -0500 (Wed, 09 Jan 2008) | 3 lines
  
   r27179@lunatique:  nelhage | 2008-01-09 02:22:05 -0500
   Implement irc-nick
........
File:
1 edited

Legend:

Unmodified
Added
Removed
  • perl/modules/IRC/lib/BarnOwl/Module/IRC.pm

    rb38b0b2 r6286f26  
    66=head1 NAME
    77
    8 BarnOwl::Module::Jabber
     8BarnOwl::Module::IRC
    99
    1010=head1 DESCRIPTION
    1111
    12 This module implements Jabber support for barnowl.
     12This module implements IRC support for barnowl.
    1313
    1414=cut
     
    1717use BarnOwl::Hooks;
    1818use BarnOwl::Message::IRC;
    19 use BarnOwl::Module::IRC::Connection;
     19use BarnOwl::Module::IRC::Connection qw(is_private);
    2020
    2121use Net::IRC;
    2222use Getopt::Long;
    2323
    24 our $VERSION = 0.01;
     24our $VERSION = 0.02;
    2525
    2626our $irc;
     
    3030
    3131sub startup {
    32     BarnOwl::new_variable_string(ircnick => {default => $ENV{USER}});
    33     BarnOwl::new_variable_string(ircuser => {default => $ENV{USER}});
    34     BarnOwl::new_variable_string(ircname => {default => ""});
     32    BarnOwl::new_variable_string('irc:nick', {default => $ENV{USER}});
     33    BarnOwl::new_variable_string('irc:user', {default => $ENV{USER}});
     34    BarnOwl::new_variable_string('irc:name', {default => ""});
     35    BarnOwl::new_variable_bool('irc:spew', {default => 0});
    3536    register_commands();
    3637    register_handlers();
     
    4041sub shutdown {
    4142    for my $conn (values %ircnets) {
    42         $conn->disconnect;
     43        $conn->disconnect();
    4344    }
    4445}
     
    6364    BarnOwl::new_command('irc-disconnect' => \&cmd_disconnect);
    6465    BarnOwl::new_command('irc-msg'     => \&cmd_msg);
     66    BarnOwl::new_command('irc-join' => \&cmd_join);
     67    BarnOwl::new_command('irc-nick' => \&cmd_nick);
    6568}
    6669
     
    7679    my $cmd = shift;
    7780
    78     my $nick = BarnOwl::getvar('ircnick');
    79     my $username = BarnOwl::getvar('ircuser');
    80     my $ircname = BarnOwl::getvar('ircname');
     81    my $nick = BarnOwl::getvar('irc:nick');
     82    my $username = BarnOwl::getvar('irc:user');
     83    my $ircname = BarnOwl::getvar('irc:name');
    8184    my $host;
    8285    my $port;
     
    9093            "alias=s"    => \$alias,
    9194            "ssl"        => \$ssl,
    92             "password=s" => \$password);
     95            "password=s" => \$password,
     96            "port=i"     => \$port,
     97        );
    9398        $host = shift @ARGV or die("Usage: $cmd HOST\n");
    9499        if(!$alias) {
     
    126131    my $conn = get_connection(\@_);
    127132    my $to = shift or die("Usage: $cmd NICK\n");
     133    # handle multiple recipients?
    128134    if(@_) {
    129135        process_msg($conn, $to, join(" ", @_));
     
    148154        body        => $body,
    149155        sender      => $conn->nick,
    150         isprivate   => 'true',
     156        is_private($to) ?
     157          (isprivate  => 'true') : (channel => $to),
    151158        replycmd    => "irc-msg $to",
    152         replysendercmd => "irc-msg " . $conn->nick
     159        replysendercmd => "irc-msg $to"
    153160       );
    154161    BarnOwl::queue_message($msg);
    155162}
    156163
     164sub cmd_join {
     165    my $cmd = shift;
     166    my $conn = get_connection(\@_);
     167    my $chan = shift or die("Usage: $cmd channel\n");
     168    $conn->join($chan);
     169}
     170
     171sub cmd_nick {
     172    my $cmd = shift;
     173    my $conn = get_connection(\@_);
     174    my $nick = shift or die("Usage: $cmd <new nick>");
     175    $conn->nick($nick);
     176}
    157177
    158178################################################################################
     
    177197
    178198sub get_connection_by_alias {
    179     die("No such ircnet: $alias\n") unless exists $ircnets{$key};
     199    my $key = shift;
     200    die("No such ircnet: $key\n") unless exists $ircnets{$key};
    180201    return $ircnets{$key};
    181202}
Note: See TracChangeset for help on using the changeset viewer.