Tadashi Okoshi
slash****@users*****
2005年 6月 28日 (火) 00:29:19 JST
Index: affelio/lib/Affelio/SNS/Handshaker_c.pm diff -u affelio/lib/Affelio/SNS/Handshaker_c.pm:1.3 affelio/lib/Affelio/SNS/Handshaker_c.pm:1.4 --- affelio/lib/Affelio/SNS/Handshaker_c.pm:1.3 Sun Jun 26 21:30:26 2005 +++ affelio/lib/Affelio/SNS/Handshaker_c.pm Tue Jun 28 00:29:19 2005 @@ -4,24 +4,89 @@ # http://affelio.jp/ (Japan) # http://affelio.jp/ (USA and other area) # -# $Id: Handshaker_c.pm,v 1.3 2005/06/26 12:30:26 slash5234 Exp $ +# $Id: Handshaker_c.pm,v 1.4 2005/06/27 15:29:19 slash5234 Exp $ package Affelio::SNS::Handshaker_c; { #use strict; + use lib("../../../extlib/"); use XMLRPC::Lite; use Error qw(:try); use Crypt::DH; + use MIME::Base64::Perl; - use lib("../../"); + use lib("../../../lib/"); use Affelio::misc::CGIError; use Affelio::misc::Debug; + use Affelio::misc::MyCrypt; + use Affelio::misc::Time; use Affelio::exception::Exception; use Affelio::exception::IOException; use Exporter; @ISA = "Exporter"; - @EXPORT = qw (send_HandShake reply_HandShake get_F2List); + @EXPORT = qw (send_HandShake reply_HandShake get_F2List post_Message); + + ################################################################# + # post_Message + ################################################################# + sub post_Message{ + my %arg = @_; + # + my $proto_ver = $arg{proto_ver}; + my $dest_uri = $arg{dest_uri}; + my $src = $arg{src}; + my $password = $arg{password}; + + # + my $msg_from = $arg{msg_from}; + my $msg_from_nickname = $arg{msg_from_nickname}; + my $msg_to = $arg{msg_to}; + my $msg_timestamp = $arg{msg_timestamp}; + my $MIMed_msg_title = encode_base64($arg{msg_title}); + my $MIMed_msg_body = encode_base64($arg{msg_body}); + + debug_print("C::post_Message: $msg_from, $msg_from_nickname, $msg_to, $msg_timestamp, [$msg_MIMed_title], [$msg_MIMed_body]"); + + my $encrypted = msg_encrypt("jf99sdhq;" + . "*" . $src + . "*" . $msg_from + . "*" . $msg_from_nickname + . "*" . $msg_to + . "*" . $msg_timestamp + . "*" . $MIMed_msg_title + . "*" . $MIMed_msg_body, + $password); + my $MIMed = encode_base64($encrypted); + + debug_print("C::post_Message: [$MIMed]"); + + my $result = eval { + XMLRPC::Lite + ->proxy($dest_uri) #XML + ->call( + 'affelio.post_Message', + $proto_ver, + get_timestamp(), + $src, + $MIMed + ) + ->result; + }; + debug_print("post_Message: RPC returned.\n"); + if ($@) { + throw Affelio::exception::IOException($@); + } + + debug_print("post_Message: OK : $result->{message}\n"); + debug_print("post_Message: OK : [$result->{flerror}]\n"); + + if($result->{flerror} ne "0"){ + throw Affelio::exception::IOException($result->{message}); + } + return $result; + } + ################################################################# # get_F2List(dest_uri, timestamp)