Changeset 2c40dc0 for perl/modules/IRC/lib/BarnOwl/Module
- Timestamp:
- Jan 8, 2008, 11:24:09 PM (17 years ago)
- Branches:
- master, barnowl_perlaim, debian, release-1.10, release-1.4, release-1.5, release-1.6, release-1.7, release-1.8, release-1.9
- Children:
- 0e52069
- Parents:
- c0f9e30
- Location:
- perl/modules/IRC/lib/BarnOwl/Module
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
perl/modules/IRC/lib/BarnOwl/Module/IRC.pm
rb38b0b2 r2c40dc0 6 6 =head1 NAME 7 7 8 BarnOwl::Module:: Jabber8 BarnOwl::Module::IRC 9 9 10 10 =head1 DESCRIPTION 11 11 12 This module implements Jabbersupport for barnowl.12 This module implements IRC support for barnowl. 13 13 14 14 =cut … … 22 22 use Getopt::Long; 23 23 24 our $VERSION = 0.0 1;24 our $VERSION = 0.02; 25 25 26 26 our $irc; … … 30 30 31 31 sub 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}); 35 36 register_commands(); 36 37 register_handlers(); … … 40 41 sub shutdown { 41 42 for my $conn (values %ircnets) { 42 $conn->disconnect ;43 $conn->disconnect(); 43 44 } 44 45 } … … 63 64 BarnOwl::new_command('irc-disconnect' => \&cmd_disconnect); 64 65 BarnOwl::new_command('irc-msg' => \&cmd_msg); 66 BarnOwl::new_command('irc-join' => \&cmd_join); 65 67 } 66 68 … … 76 78 my $cmd = shift; 77 79 78 my $nick = BarnOwl::getvar('irc nick');79 my $username = BarnOwl::getvar('irc user');80 my $ircname = BarnOwl::getvar('irc name');80 my $nick = BarnOwl::getvar('irc:nick'); 81 my $username = BarnOwl::getvar('irc:user'); 82 my $ircname = BarnOwl::getvar('irc:name'); 81 83 my $host; 82 84 my $port; … … 90 92 "alias=s" => \$alias, 91 93 "ssl" => \$ssl, 92 "password=s" => \$password); 94 "password=s" => \$password, 95 "port=i" => \$port, 96 ); 93 97 $host = shift @ARGV or die("Usage: $cmd HOST\n"); 94 98 if(!$alias) { … … 126 130 my $conn = get_connection(\@_); 127 131 my $to = shift or die("Usage: $cmd NICK\n"); 132 # handle multiple recipients? 128 133 if(@_) { 129 134 process_msg($conn, $to, join(" ", @_)); … … 148 153 body => $body, 149 154 sender => $conn->nick, 150 isprivate => 'true', 155 is_private($to) ? 156 (isprivate => 'true') : (), 151 157 replycmd => "irc-msg $to", 152 replysendercmd => "irc-msg " . $conn->nick158 replysendercmd => "irc-msg $to" 153 159 ); 154 160 BarnOwl::queue_message($msg); 155 161 } 156 162 163 sub cmd_join { 164 my $cmd = shift; 165 my $conn = get_connection(\@_); 166 my $chan = shift or die("Usage: $cmd channel\n"); 167 $conn->join($chan); 168 } 157 169 158 170 ################################################################################ … … 177 189 178 190 sub get_connection_by_alias { 179 die("No such ircnet: $alias\n") unless exists $ircnets{$key}; 191 my $key = shift; 192 die("No such ircnet: $key\n") unless exists $ircnets{$key}; 180 193 return $ircnets{$key}; 181 194 } 182 195 196 # Determines if the given message recipient is a username, as opposed to 197 # a channel that starts with # or &. 198 sub is_private { 199 return shift !~ /^[\#\&]/; 200 } 201 183 202 1; -
perl/modules/IRC/lib/BarnOwl/Module/IRC/Connection.pm
rb38b0b2 r2c40dc0 15 15 =cut 16 16 17 use base qw(Net::IRC::Connection Class::Accessor );17 use base qw(Net::IRC::Connection Class::Accessor Exporter); 18 18 __PACKAGE__->mk_accessors(qw(alias channels)); 19 our @EXPORT_OK = qw(&is_private); 19 20 20 21 use BarnOwl; … … 30 31 bless($self, $class); 31 32 32 $self->add_global_handler(endofmotd => sub { goto &on_connect }); 33 $self->add_global_handler(msg => sub { goto &on_msg }); 34 $self->add_global_handler(notice => sub { goto &on_msg }); 33 $self->add_global_handler(376 => sub { goto &on_connect }); 34 $self->add_global_handler(['msg', 'notice', 'public', 'caction'], 35 sub { goto &on_msg }); 36 $self->add_global_handler(cping => sub { goto &on_ping }); 35 37 $self->add_default_handler(sub { goto &on_event; }); 36 38 … … 49 51 sub on_msg { 50 52 my ($self, $evt) = @_; 51 my $replycmd = "irc-msg " . $evt->nick; 53 my ($recipient) = $evt->to; 54 my $body = strip_irc_formatting([$evt->args]->[0]); 55 $body = BarnOwl::Style::boldify($evt->nick.' '.$body) if $evt->type eq 'caction'; 52 56 my $msg = BarnOwl::Message->new( 53 57 type => 'IRC', … … 55 59 server => $self->server, 56 60 network => $self->alias, 57 recipient => $ self->nick,58 body => strip_irc_formatting([$evt->args]->[0]),61 recipient => $recipient, 62 body => $body, 59 63 sender => $evt->nick, 60 64 hostname => $evt->host, 61 65 from => $evt->from, 62 notice => $evt->type eq 'notice' ? 'true' : '', 63 isprivate => 'true', 64 replycmd => $replycmd, 65 replysendercmd => $replycmd 66 $evt->type eq 'notice' ? 67 (notice => 'true') : (), 68 is_private($recipient) ? 69 (isprivate => 'true') : (), 70 replycmd => 'irc-msg ' . 71 (is_private($recipient) ? $evt->nick : $recipient), 72 replysendercmd => 'irc-msg ' . $evt->nick, 66 73 ); 67 74 BarnOwl::queue_message($msg); 75 } 76 77 sub on_ping { 78 my ($self, $evt) = @_; 79 $self->ctcp_reply($evt->nick, join (' ', ($evt->args))); 80 } 81 82 sub on_event { 83 my ($self, $evt) = @_; 84 BarnOwl::admin_message("IRC", 85 "Unhandled IRC event of type " . $evt->type . ":\n" 86 . strip_irc_formatting(join("\n", $evt->args))) 87 if BarnOwl::getvar('irc:spew') eq 'on'; 68 88 } 69 89 … … 83 103 } 84 104 105 # Determines if the given message recipient is a username, as opposed to 106 # a channel that starts with # or &. 107 sub is_private { 108 return shift !~ /^[\#\&]/; 109 } 85 110 86 111 1;
Note: See TracChangeset
for help on using the changeset viewer.