Tadashi Okoshi
slash****@users*****
2005年 6月 28日 (火) 16:44:19 JST
Index: affelio/lib/Affelio/SNS/Handshaker_s.pm diff -u affelio/lib/Affelio/SNS/Handshaker_s.pm:1.5 affelio/lib/Affelio/SNS/Handshaker_s.pm:1.6 --- affelio/lib/Affelio/SNS/Handshaker_s.pm:1.5 Tue Jun 28 01:15:09 2005 +++ affelio/lib/Affelio/SNS/Handshaker_s.pm Tue Jun 28 16:44:19 2005 @@ -4,7 +4,7 @@ # http://affelio.jp/ (Japan) # http://affelio.jp/ (USA and other area) # -# $Id: Handshaker_s.pm,v 1.5 2005/06/27 16:15:09 slash5234 Exp $ +# $Id: Handshaker_s.pm,v 1.6 2005/06/28 07:44:19 slash5234 Exp $ use strict; use XMLRPC::Transport::HTTP; @@ -88,6 +88,7 @@ my $af = Affelio::SNS::Handshaker_s::Util::af_new(); #Proto_ver=1: Simple messaging among friends + Affelio::misc::Debug::debug_print("server.postMesg: starg."); ################################################## #Distill args @@ -100,28 +101,83 @@ 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." + flerror => XMLRPC::Data->type('boolean', 1), + message => "ERR:100 Youre not my friend." }; } + ################################################## + #Decode MIME + ################################################## my $encrypted = MIME::Base64::Perl::decode_base64($MIMed_mesg); + ################################################## + #Decrypt + ################################################## my $rc5 = Crypt::RC5->new($passAB, 12 ); my $plain = $rc5->decrypt($encrypted); + Affelio::misc::Debug::debug_print("server.postMesg: ================"); + Affelio::misc::Debug::debug_print($plain); + Affelio::misc::Debug::debug_print("server.postMesg: ================"); + + ################################################## + #Parse XML + ################################################## + my $src; + if($plain =~ /<src>(.+)<\/src>/){ + $src = $1; + } + Affelio::misc::Debug::debug_print("server.postMesg: src: $src"); + + my $msg_from; + if($plain =~ /<from>(.+)<\/from>/){ + $msg_from = $1; + } + Affelio::misc::Debug::debug_print("server.postMesg: from: $msg_from"); - my ($padding, $src, - $msg_from, $msg_from_nickname, $msg_to, - $msg_timestamp, $msg_MIMed_title, $msg_MIMed_body) - =split('\*', $plain); + my $msg_from_nickname; + if($plain =~ /<from_nickname>(.+)<\/from_nickname>/){ + $msg_from_nickname = $1; + } + Affelio::misc::Debug::debug_print("server.postMesg: nick: $msg_from_nickname"); + my $msg_to; + if($plain =~ /<to>(.+)<\/to>/){ + $msg_to = $1; + } + Affelio::misc::Debug::debug_print("server.postMesg: to: $msg_to"); + + my $msg_timestamp; + if($plain =~ /<timestamp>(.+)<\/timestamp>/){ + $msg_timestamp = $1; + } + Affelio::misc::Debug::debug_print("server.postMesg: TIME: $msg_timestamp"); + + my $msg_MIMed_title; + if($plain =~ /<title>(.*)<\/title>/ms){ + $msg_MIMed_title = $1; + } + Affelio::misc::Debug::debug_print("server.postMesg: title: $msg_MIMed_title"); + + my $msg_MIMed_body; + if($plain =~ /<text>(.*)<\/text>/ms){ + $msg_MIMed_body = $1; + } + Affelio::misc::Debug::debug_print("server.postMesg: body: $msg_MIMed_body"); + + ################################################## + #Encryption integrity check + ################################################## if($src ne $peer_afid){ return { - flerror => XMLRPC::Data->type('boolean', 0), + flerror => XMLRPC::Data->type('boolean', 1), message => "ERR: Invalid Encryption." }; } + ################################################## + #MIM decode for title and body + ################################################## my $msg_title = MIME::Base64::Perl::decode_base64($msg_MIMed_title); my $msg_body = MIME::Base64::Perl::decode_base64($msg_MIMed_body);