[281] in BarnOwl Developers

home help back first fref pref prev next nref lref last post

[D-O-H] r441 - / trunk/conf.asedeno/owl/modules

daemon@ATHENA.MIT.EDU (hartmans@MIT.EDU)
Thu Oct 29 18:04:28 2009

Resent-From: nelhage@mit.edu
Resent-To: barnowl-dev-mtg@charon.mit.edu
To: dirty-owl-hackers@MIT.EDU
From: hartmans@MIT.EDU
Reply-To: dirty-owl-hackers@MIT.EDU
Date: Wed,  1 Nov 2006 01:00:12 -0500 (EST)

Author: hartmans
Date: 2006-11-01 01:00:11 -0500 (Wed, 01 Nov 2006)
New Revision: 441

Removed:
   trunk/conf.asedeno/owl/modules/jabber.pl
Modified:
   /
Log:
 r1345@luminous:  hartmans | 2006-10-31 23:58:42 -0500
 jabber.pl is a core module



Property changes on: 
___________________________________________________________________
Name: svk:merge
   - 6aa88b72-b502-0410-8cb4-a5dd0230fb79:/owl-local:1344
   + 6aa88b72-b502-0410-8cb4-a5dd0230fb79:/owl-local:1345

Deleted: trunk/conf.asedeno/owl/modules/jabber.pl
===================================================================
--- trunk/conf.asedeno/owl/modules/jabber.pl	2006-11-01 06:00:02 UTC (rev 440)
+++ trunk/conf.asedeno/owl/modules/jabber.pl	2006-11-01 06:00:11 UTC (rev 441)
@@ -1,388 +0,0 @@
-package owl_jabber;
-use Authen::SASL qw(Perl);
-use Net::Jabber;
-################################################################################
-# owl perl jabber support
-#
-# Todo:
-# Connect command.
-#
-################################################################################
-
-our $client;
-our $jid;
-
-sub onStart
-{
-    if(eval{\&owl::queue_message}) 
-    {
-	register_owl_commands();
-    }
-    else
-    {
-        # Our owl doesn't support queue_message. Unfortunately, this
-        # means it probably *also* doesn't support owl::error. So just
-        # give up silently.
-    }
-}
-push @::onStartSubs, \&onStart;
-
-sub onMainLoop
-{
-    return if ($client == undef);
-    
-    my $status = $client->Process(0);
-    if ($status == 0     # No data received
-	|| $status == 1) # Data received
-    {
-    }
-    else #Error
-    {
-	queue_admin_msg("Jabber disconnected.");
-	$client = undef;
-	return;
-    }
-    
-    if ($::shutdown)
-    {
-	$client->Disconnect();
-	$client = undef;
-	return;
-    }
-}
-push @::onMainLoop, \&onMainLoop;
-
-################################################################################
-### Owl Commands
-sub register_owl_commands()
-{
-    owl::new_command(
-        jabberlogin => \&cmd_login,
-        { summary => "Log into jabber", }
-    );
-    owl::new_command(
-        jabberlogout => \&cmd_logout,
-        { summary => "Log out of jabber" }
-    );
-    owl::new_command(
-        jwrite => \&cmd_jwrite,
-        {
-            summary     => "Send a Jabber Message",
-            usage       => "jwrite JID [-t thread]"
-        }
-    );
-    owl::new_command(
-        jchat => \&cmd_jwrite_gc,
-        {
-            summary => "Send a Jabber Message",
-            usage       => "jchat [room]@[server]"
-        }
-    );
-    owl::new_command(
-        jjoin => \&cmd_join_gc,
-        {
-            summary     => "Joins a jabber groupchat.",
-            usage       => "jjoin [room]@[server]/[nick]"
-        }
-    );
-    owl::new_command(
-        jpart => \&cmd_part_gc,
-        {
-            summary     => "Parts a jabber groupchat.",
-            usage       => "jpart [room]@[server]/[nick]"
-        }
-    );
-}
-
-sub cmd_login
-{
-    if ($client != undef)
-    {
-	queue_admin_msg("Already logged in.");
-	return;
-    }
-    
-    # These strings should not be hard-coded here.
-    $client = Net::Jabber::Client->new();
-    $client->SetMessageCallBacks(chat => sub { owl_jabber::process_incoming_chat_message(@_) },
-				 error => sub { owl_jabber::process_incoming_error_message(@_) },
-				 groupchat => sub { owl_jabber::process_incoming_groupchat_message(@_) },
-				 headline => sub { owl_jabber::process_incoming_headline_message(@_) },
-				 normal => sub { owl_jabber::process_incoming_normal_message(@_) });
-    my $status = $client->Connect(hostname => 'jabber.mit.edu',
-				  tls => 1,
-				  port => 5222,
-				  componentname => 'mit.edu');
-    
-    if (!$status)
-    {
-	owl::error("We failed to connect");
-	return;
-    }
-
-    my @result = $client->AuthSend(username => $ENV{USER}, resource => 'owl', password => '');
-    if($result[0] ne 'ok') {
-	owl::error("Error in connect: " . join(" ", $result[1..$#result]));
-	$client->Disconnect();
-	$client = undef;
-        return;
-    }
-
-    $jid = new Net::Jabber::JID;
-    $jid->SetJID(userid => $ENV{USER},
-		 server => ($client->{SERVER}->{componentname} ||
-			    $client->{SERVER}->{hostname}),
-		 resource => 'owl');
-    
-    $client->PresenceSend(priority => 1);
-    queue_admin_msg("Connected to jabber as ".$jid->GetJID('full'));
-
-    return "";
-}
-
-sub cmd_logout
-{
-    if ($client)
-    {
-	$client->Disconnect();
-	$client = undef;
-	queue_admin_msg("Jabber disconnected.");
-    }
-    return "";
-}
-
-our $jwrite_to;
-our $jwrite_thread;
-our $jwrite_subject;
-our $jwrite_type;
-sub cmd_jwrite
-{
-    if (!$client)
-    {
-	# Error here
-	return;
-    }
-
-    $jwrite_to = "";
-    $jwrite_thread = "";
-    $jwrite_subject = "";
-    $jwrite_type = "chat";
-    my @args = @_;
-    my $argsLen = @args;
-
-  JW_ARG: for (my $i = 1; $i < $argsLen; $i++)
-    {
-	$args[$i] =~ /^-t$/ && ($jwrite_thread = $args[++$i]  && next JW_ARG);
-	$args[$i] =~ /^-s$/ && ($jwrite_subject = $args[++$i] && next JW_ARG);
-	if ($jwrite_to ne '')
-	{
-	    # Too many To's
-	    $jwrite_to = '';
-	    last;
-	}
-	if ($jwrite_to)
-	{
-	    $jwrite_to == '';
-	    last;
-	}
-	$jwrite_to = $args[$i];
-    }
-
-    if(!$jwrite_to) {
-        owl::error("Usage: jwrite JID [-t thread] [-s 'subject']");
-        return;
-    }
-    
-    owl::message("Type your message below.  End with a dot on a line by itself.  ^C will quit.");
-    owl::start_edit_win(join(' ', @args), \&process_owl_jwrite);
-}
-
-sub cmd_join_gc
-{
-    if (!$client)
-    {
-	# Error here
-	return;
-    }
-    if(!$_[1])
-    {
-	owl::error("Usage: jchat [room]@[server]/[nick]");
-	return;
-    }
-
-    my $x = new XML::Stream::Node('x');
-    $x->put_attrib(xmlns => 'http://jabber.org/protocol/muc');
-    $x->add_child('history')->put_attrib(maxchars => '0');
-
-
-    my $presence = new Net::Jabber::Presence;
-    $presence->SetPresence(to => $_[1]);
-    $presence->AddX($x);
-
-    $client->Send($presence);
-    return "";
-}
-
-sub cmd_part_gc
-{
-    if (!$client)
-    {
-	# Error here
-	return;
-    }
-    if(!$_[1])
-    {
-	owl::error("Usage: jchat [room]@[server]/[nick]");
-	return;
-    }
-
-    $client->PresenceSend(to=>$_[1], type=>'unavailable');
-    return "";
-}
-
-sub cmd_jwrite_gc
-{
-    if (!$client)
-    {
-	# Error here
-	return;
-    }
-
-    $jwrite_to = $_[1];
-    $jwrite_thread = "";
-    $jwrite_subject = "";
-    $jwrite_type = "groupchat";
-    my @args = @_;
-    my $argsLen = @args;
-
-    owl::message("Type your message below.  End with a dot on a line by itself.  ^C will quit.");
-    owl::start_edit_win(join(' ', @args), \&process_owl_jwrite);
-}
-
-################################################################################
-### Owl Callbacks
-sub process_owl_jwrite
-{
-    my $body = shift;
-
-    my $j = new Net::XMPP::Message;
-    $body =~ s/\n\z//;
-    $j->SetMessage(to => $jwrite_to,
-		   from => $jid->GetJID('full'),
- 		   type => $jwrite_type,
- 		   body => $body
-		   );
-    $j->SetThread($jwrite_thread) if ($jwrite_thread);
-    $j->SetSubject($jwrite_subject) if ($jwrite_subject);
-
-    my $m = j2o($j, 'out');
-    if ($jwrite_type ne 'groupchat')
-    {
-	#XXX TODO: Check for displayoutgoing.
-	owl::queue_message($m);
-    }
-    $client->Send($j);
-}
-
-### XMPP Callbacks
-
-sub process_incoming_chat_message
-{
-    my ($session, $j) = @_;
-    owl::queue_message(j2o($j, 'in'));
-}
-
-sub process_incoming_error_message
-{
-    my ($session, $j) = @_;
-    queue_admin_msg("Error ".$j->GetErrorCode()." sending to ".$j->GetFrom('jid')->GetJID('base'));
-}
-
-sub process_incoming_groupchat_message
-{
-    my ($session, $j) = @_;
-    # HACK IN PROGRESS (ignoring delayed messages)
-    return if ($j->DefinedX('jabber:x:delay') && $j->GetX('jabber:x:delay'));
-    owl::queue_message(j2o($j, 'in'));
-}
-
-sub process_incoming_headline_message
-{
-    my ($session, $j) = @_;
-    owl::queue_message(j2o($j, 'in'));
-}
-
-sub process_incoming_normal_message
-{
-    my ($session, $j) = @_;
-    owl::queue_message(j2o($j, 'in'));
-}
-
-
-### Helper functions
-
-sub j2o
-{
-    my $j = shift;
-    my $dir = shift;
-
-    my %props = (type => 'jabber',
-		 direction => $dir);
-
-
-    $props{replycmd} = "jwrite";
-
-    $props{jtype} = $j->GetType();
-    $props{jtype} =~ /^(?:headline|error)$/ && {$props{replycmd} = undef};
-    $props{jtype} =~ /^groupchat$/ && {$props{replycmd} = "jchat"};
-
-    $props{isprivate} = $props{jtype} =~ /^(?:normal|chat)$/;
-
-    my $reply_to;
-    if ($j->DefinedTo())
-    {
-	my $jid = $j->GetTo('jid');
-	$props{recipient} = $jid->GetJID('base');
-	$props{to_jid} = $jid->GetJID('full');
-	if ($dir eq 'out')
-	{
-	    $reply_to = $props{to_jid};
-	    $props{jtype} =~ /^groupchat$/ && {$reply_to = $jid->GetJID('base')};
-	}
-    }
-    if ($j->DefinedFrom())
-    {
-	my $jid = $j->GetFrom('jid');
-	$props{sender} = $jid->GetJID('base');
-	$props{from_jid} = $jid->GetJID('full');
-	$reply_to = $props{from_jid} if ($dir eq 'in');
-	if ($dir eq 'in')
-	{
-	    $reply_to = $props{from_jid};
-	    $props{jtype} =~ /^groupchat$/ && {$reply_to = $jid->GetJID('base')};
-	}
-    }
-
-    $props{subject} = $j->GetSubject() if ($j->DefinedSubject());
-    $props{body} = $j->GetBody() if ($j->DefinedBody());
-#    if ($j->DefinedThread())
-#    {
-#	$props{thread} = $j->GetThread() if ($j->DefinedThread());
-#	$props{replycmd} .= " -t $props{thread}";
-#    }
-    $props{error} = $j->GetError() if ($j->DefinedError());
-    $props{error_code} = $j->GetErrorCode() if ($j->DefinedErrorCode());
-    $props{replycmd} .= " $reply_to";
-    $props{replysendercmd} = $props{replycmd};
-
-    return owl::Message->new(%props);
-}
-
-sub queue_admin_msg
-{
-    my $err = shift;
-    my $m = owl::Message->new(type => 'admin',
-			      direction => 'none',
-			      body => $err);
-    owl::queue_message($m);
-}


home help back first fref pref prev next nref lref last post