[Affelio-cvs 208] CVS update: affelio/lib/Affelio/SNS

Back to archive index

Tadashi Okoshi slash****@users*****
2005年 6月 28日 (火) 00:29:39 JST


Index: affelio/lib/Affelio/SNS/Handshaker_s.pm
diff -u affelio/lib/Affelio/SNS/Handshaker_s.pm:1.3 affelio/lib/Affelio/SNS/Handshaker_s.pm:1.4
--- affelio/lib/Affelio/SNS/Handshaker_s.pm:1.3	Sun Jun 26 20:46:06 2005
+++ affelio/lib/Affelio/SNS/Handshaker_s.pm	Tue Jun 28 00:29:39 2005
@@ -4,13 +4,15 @@
 #    http://affelio.jp/ (Japan)
 #    http://affelio.jp/ (USA and other area)
 #
-# $Id: Handshaker_s.pm,v 1.3 2005/06/26 11:46:06 slash5234 Exp $
+# $Id: Handshaker_s.pm,v 1.4 2005/06/27 15:29:39 slash5234 Exp $
 
 use strict;
 use XMLRPC::Transport::HTTP;
 use lib("../../../extlib/");
 use DBI;
+use Crypt::RC5;
 use Crypt::DH;
+use MIME::Base64::Perl;
 use lib("../../");
 use Affelio;
 use Affelio::SNS::MailAck;
@@ -42,7 +44,7 @@
     use strict;
     use Exporter;
     @Affelio::SNS::Handshaker_s::ISA = "Exporter";
-    @Affelio::SNS::Handshaker_s::EXPORT = qw (HandShake HandShakeReply F2List);
+    @Affelio::SNS::Handshaker_s::EXPORT = qw (HandShake HandShakeReply F2List post_Message);
 
     use vars qw( $AF_DIR);
 
@@ -79,6 +81,77 @@
 
 
     ##################################################################
+    #Receive Message
+    ##################################################################
+    sub post_Message {
+	my $self = shift;
+	my $af = Affelio::SNS::Handshaker_s::Util::af_new();
+
+	#Proto_ver=1: Simple messaging among friends
+
+        ##################################################
+	#Distill args
+        ##################################################
+	my ($proto_ver, 
+	    $timestamp, 
+	    $peer_afid, 
+	    $MIMed_mesg) = @_;
+
+	my $passAB = $af->{fm}->get_attribute_by_afid($peer_afid, "password");
+	if(!defined($passAB) || $passAB eq ""){
+	    return {
+		flerror => XMLRPC::Data->type('boolean', 0),
+		message => "ERR: Youre not my friend."
+	    };
+	}
+
+	my $encrypted = MIME::Base64::Perl::decode_base64($MIMed_mesg);
+
+	my $rc5 = Crypt::RC5->new($passAB, 12 );
+	my $plain = $rc5->decrypt($encrypted);
+
+	my ($padding, $src,
+	    $msg_from, $msg_from_nickname, $msg_to, 
+	    $msg_timestamp, $msg_MIMed_title, $msg_MIMed_body)
+	    =split('\*', $plain);
+
+	if($src ne $peer_afid){
+	    return {
+		flerror => XMLRPC::Data->type('boolean', 0),
+		message => "ERR: Invalid Encryption."
+		};
+	}
+
+	my $msg_title = MIME::Base64::Perl::decode_base64($msg_MIMed_title);
+	my $msg_body  = MIME::Base64::Perl::decode_base64($msg_MIMed_body);
+
+        ###########################################
+        # Post this message to Message Manager
+        ###########################################
+	Affelio::misc::Debug::debug_print("server.PostMesg: $proto_ver, $msg_from $msg_from_nickname $msg_to $msg_timestamp $msg_title $msg_body");
+
+	$msg_body =~ s/\r\n/\n/g;
+	$msg_body =~ s/\r/\n/g;
+	$msg_body =~ s/\n/<BR>/g;
+
+	$msg_from = "<A HREF=\"$msg_from\">$msg_from_nickname</A>";
+
+	$af->{mesgm}->post_message($msg_from,
+				   $msg_title,
+				   "UserToUser/OneToOne",
+				   "$msg_body");
+	
+        ###########################################
+        # Reply to client
+        ###########################################
+	my $msg = "OK: Thanks for your message.";
+	return {
+	    flerror => XMLRPC::Data->type('boolean', 0),
+	    message => $msg
+	    };
+    }
+
+    ##################################################################
     #Accept HandShake from a client
     ##################################################################
     sub HandShake {
@@ -105,7 +178,7 @@
 	my $message_body="You got a link request from <A HREF=\"$peer_af_id\">$peer_nickname</A>. Click <A HREF=\"$af->{site__web_root}/bin/recv_mail_ack.cgi?id=$sessionid\">here</A> to approve it.";
 	$af->{mesgm}->post_message("Your Affelio",
 				   "Link Request from $peer_nickname",
-				   "linkrequest",
+				   "SystemToUser/LinkRequest",
 				   $message_body);
 
         ###########################################


Affelio-cvs メーリングリストの案内
Back to archive index