Tadashi Okoshi
slash****@users*****
2006年 6月 1日 (木) 15:34:13 JST
Index: affelio/lib/Affelio/SNS/FriendManager.pm
diff -u affelio/lib/Affelio/SNS/FriendManager.pm:1.21 affelio/lib/Affelio/SNS/FriendManager.pm:1.22
--- affelio/lib/Affelio/SNS/FriendManager.pm:1.21 Mon May 29 21:08:49 2006
+++ affelio/lib/Affelio/SNS/FriendManager.pm Thu Jun 1 15:34:13 2006
@@ -14,7 +14,7 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#
-# $Id: FriendManager.pm,v 1.21 2006/05/29 12:08:49 slash5234 Exp $
+# $Id: FriendManager.pm,v 1.22 2006/06/01 06:34:13 slash5234 Exp $
package Affelio::SNS::FriendManager;
{
@@ -104,6 +104,8 @@
my $nickname = shift; #arg(2) nickname (string)
my $timestamp = shift; #arg(3) timestamp (int)
my $password = shift; #arg(4) password (string)
+ my $peer_type = shift; #arg(5) type (string)
+ my $rflag = shift;
Affelio::misc::Debug::debug_print("FM::add_friend: ($af_id $nickname $timestamp $password)");
@@ -231,7 +233,7 @@
##############################
#Insert a new record into my F1 list.
- $query = "insert into $af->{site__dbtbl_prefix}_CORE_friends(uid, af_id, nickname, timestamp, password, intro, option_pid,lastupdated,f2list) values ($newid, '$af_id', '$nickname', $timestamp, '$password', ' ', -1, 0, '$old_f1list_in_f2tbl')";
+ $query = "insert into $af->{site__dbtbl_prefix}_CORE_friends(uid, af_id, nickname, timestamp, password, intro, option_pid, lastupdated, f2list, af_type, rflag) values ($newid, '$af_id', '$nickname', $timestamp, '$password', ' ', -1, 0, '$old_f1list_in_f2tbl', '$peer_type', '$rflag')";
eval{
$sth = $af->getDB->prepare($query);
$sth->execute();
Index: affelio/lib/Affelio/SNS/Handshaker_c.pm
diff -u affelio/lib/Affelio/SNS/Handshaker_c.pm:1.19 affelio/lib/Affelio/SNS/Handshaker_c.pm:1.20
--- affelio/lib/Affelio/SNS/Handshaker_c.pm:1.19 Tue Mar 28 18:15:23 2006
+++ affelio/lib/Affelio/SNS/Handshaker_c.pm Thu Jun 1 15:34:13 2006
@@ -14,7 +14,7 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#
-# $Id: Handshaker_c.pm,v 1.19 2006/03/28 09:15:23 slash5234 Exp $
+# $Id: Handshaker_c.pm,v 1.20 2006/06/01 06:34:13 slash5234 Exp $
package Affelio::SNS::Handshaker_c;
{
@@ -45,7 +45,8 @@
# my_nickname => my_nickname,
# my_AFID => my_AFID,
# mesg => mesg,
- # timestamp => timestamp);
+ # timestamp => timestamp,
+ # my_affelio_type => my_affelio_type);
# proto_ver: 1.1
#################################################################
sub send_HandShake {
@@ -55,6 +56,8 @@
my $my_AFID = $arg{my_AFID};
my $my_mesg = $arg{mesg};
my $timestamp = $arg{timestamp};
+ my $my_affelio_type = $arg{my_affelio_type};
+ my $af = $arg{af};
my $proto_ver = 1.1;
my $MIMed_mesg = encode_base64($my_mesg);
@@ -83,6 +86,14 @@
debug_print("send_HandShake: [$dest_xml_uri $proto_ver $timestamp $my_nickname $my_AFID $my_DH_pub_key_str $my_mesg $MIMed_mesg]");
+ my $tmpdb= new Affelio::SNS::Handshaker_tmpDB($af);
+ $tmpdb->add_sent_Handshake($timestamp,
+ $dest_uri,
+ "",
+ $timestamp,
+ $my_DH_pri_key_str,
+ $my_affelio_type);
+
#################################
#Execute XMLRPC
#################################
@@ -96,7 +107,8 @@
$my_nickname,
$my_AFID,
$my_DH_pub_key_str,
- $MIMed_mesg)
+ $MIMed_mesg,
+ $my_affelio_type)
->result;
};
debug_print("send_HandShake: RPC returned.\n");
@@ -135,8 +147,9 @@
my $my_AFID = $arg{my_AFID};
my $my_DH_pub_key_str = $arg{DH_pub_key_str};
my $my_mesg = $arg{mesg};
+ my $my_affelio_type = $arg{my_affelio_type};
- debug_print("reply_HandShake: [$dest_uri $proto_ver $timestamp $my_nickname $my_AFID $my_DH_pub_key_str $my_mesg]");
+ debug_print("reply_HandShake: [$dest_uri $proto_ver $timestamp $my_nickname $my_AFID $my_DH_pub_key_str $my_affelio_type $my_mesg]");
#################################
#Arg check
@@ -159,7 +172,8 @@
$my_nickname,
$my_AFID,
$my_DH_pub_key_str,
- $my_mesg
+ $my_mesg,
+ $my_affelio_type
)
->result;
};
Index: affelio/lib/Affelio/SNS/Handshaker_s.pm
diff -u affelio/lib/Affelio/SNS/Handshaker_s.pm:1.47 affelio/lib/Affelio/SNS/Handshaker_s.pm:1.48
--- affelio/lib/Affelio/SNS/Handshaker_s.pm:1.47 Tue May 30 06:56:18 2006
+++ affelio/lib/Affelio/SNS/Handshaker_s.pm Thu Jun 1 15:34:13 2006
@@ -14,7 +14,7 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#
-# $Id: Handshaker_s.pm,v 1.47 2006/05/29 21:56:18 slash5234 Exp $
+# $Id: Handshaker_s.pm,v 1.48 2006/06/01 06:34:13 slash5234 Exp $
########################################################################
#package Affelio::SNS::Handshaker_s::Util;
@@ -86,13 +86,13 @@
#Distill args
##################################################
my ($proto_ver, $timestamp, $peer_nickname,
- $peer_af_id, $peer_DH_pub_key_str, $MIMed_mesg) = @_;
+ $peer_af_id, $peer_DH_pub_key_str, $MIMed_mesg, $peer_type) = @_;
my $peer_domain = Affelio::misc::NetMisc::get_remote_domain(%ENV);
my $sessionid = "$$" . "$timestamp";
debug_print("server.HandShake: size=["
. length($MIMed_mesg));
- debug_print("server.HandShake: $proto_ver, $timestamp, $peer_domain, $peer_nickname, $peer_af_id, $peer_DH_pub_key_str [$MIMed_mesg]\n");
+ debug_print("server.HandShake: $proto_ver, $timestamp, $peer_domain, $peer_nickname, $peer_af_id, $peer_DH_pub_key_str $peer_type [$MIMed_mesg]\n");
##################################################
#Version check
##################################################
@@ -129,24 +129,83 @@
$translated =~ s|\r|\n|g;
$translated =~ s|\n|\<BR\>|g;
- my $message_body
- = MIME::Base64::encode_base64($translated);
- $af->getMESGM->post_message(from => "Your Affelio",
- title => "Link Request from $peer_nickname",
- type => "SystemToUser/LinkRequest/Encode-Base64/HTML",
- body => $message_body);
-
- ###########################################
- # Save peer's info into "received_Handshake" DB
- ###########################################
- my $tmpdb= new Affelio::SNS::Handshaker_tmpDB($af);
- $tmpdb->add_received_Handshake($sessionid,
- $peer_af_id,
+ if($af->{userpref__aflink_user_confirmation} eq "no"){
+
+ ############################################################
+ #DH key generation
+ my $mydh = Crypt::DH->new;
+ #RFC 2412 - The OAKLEY Key Determination Protocol
+ #Group 1: A 768 bit prime
+ my $DH_g="2";
+ my $DH_p="1552518092300708935130918131258481755631334049434514313202351194902966239949102107258669453876591642442910007680288864229150803718918046342632727613031282983744380820890196288509170691316593175367469551763119843371637221007210577919";
+ $mydh->g($DH_g);
+ $mydh->p($DH_p);
+ #
+ #Step (1): create my public_key
+ $mydh->generate_keys;
+ my $my_DH_pub_key = $mydh->pub_key;
+ my $my_DH_pub_key_str = $mydh->pub_key->bstr;
+
+ ############################################################
+ #send reply_HandShake
+ my $ret="";
+ debug_print("server.HandShake: sending back reply_Handshake...");
+ try{
+ use Affelio::SNS::Handshaker_c;
+ $ret = reply_HandShake(dest_uri => $peer_af_id,
+ timestamp => $timestamp,
+ my_nickname => $af->{user__nickname},
+ my_domain => $af->{user__domain},
+ my_AFID => $af->{site__user_afid},
+ DH_pub_key_str => $my_DH_pub_key_str,
+ my_affelio_type => $af->{site__exec_type}
+ );
+ }catch Error with {
+ my $E = shift;
+ error($q, "HandShake reply output an error!\n$E");
+ };
+ debug_print("server.HandShake: sending back reply_Handshake...DONE");
+ ############################################################
+ #generate Password
+ my $peer_DH_pub_key = Math::BigInt->new($peer_DH_pub_key_str);
+ my $pass = $mydh->compute_key($peer_DH_pub_key)->bstr;
+ debug_print("server.HandShake: PASSWORD=[$pass]\n");
+
+ ############################################################
+ #Add peer to my friends list.
+ debug_print("server.HandShake: getFM->add_friend...");
+ try{
+ $af->getFM->add_friend($peer_af_id,
$peer_nickname,
$timestamp,
- $peer_DH_pub_key_str);
-
- debug_print("server.HandShake: DB(W) $sessionid\n");
+ $pass,
+ $peer_type);
+ }catch Error with{
+ my $E = shift;
+ error($q, "Error from FriendManager\n$E\n");
+ };
+ debug_print("server.HandShake: getFM->add_friend done.");
+ }else{
+ my $message_body
+ = MIME::Base64::encode_base64($translated);
+ $af->getMESGM->post_message(from => "Your Affelio",
+ title => "Link Request from $peer_nickname",
+ type => "SystemToUser/LinkRequest/Encode-Base64/HTML",
+ body => $message_body);
+
+ ###########################################
+ # Save peer's info into "received_Handshake" DB
+ ###########################################
+ my $tmpdb= new Affelio::SNS::Handshaker_tmpDB($af);
+ $tmpdb->add_received_Handshake($sessionid,
+ $peer_af_id,
+ $peer_nickname,
+ $timestamp,
+ $peer_DH_pub_key_str,
+ $peer_type);
+
+ debug_print("server.HandShake: DB(W) $sessionid\n");
+ }
undef($af);
###########################################
@@ -532,8 +591,8 @@
#Distill args
###########################################
my ($proto_ver, $timestamp, $peer_nickname,
- $peer_af_id, $peer_DH_pub_key_str, $mesg) = @_;
- debug_print("server.HandShakeReply: $proto_ver, $timestamp, $peer_nickname, $peer_af_id, $peer_DH_pub_key_str $mesg\n");
+ $peer_af_id, $peer_DH_pub_key_str, $mesg, $peer_type) = @_;
+ debug_print("server.HandShakeReply: $proto_ver, $timestamp, $peer_nickname, $peer_af_id, $peer_DH_pub_key_str $mesg $peer_type\n");
##################################################
#Version check
@@ -597,9 +656,10 @@
#Add peer to my friends list.
###########################################
my $uid = $af->getFM->add_friend($peer_af_id,
- $peer_nickname,
- $timestamp,
- $pass);
+ $peer_nickname,
+ $timestamp,
+ $pass,
+ $peer_type);
debug_print("server.HandShakeReply: add_friend finished.\n");
eval{
Index: affelio/lib/Affelio/SNS/Handshaker_tmpDB.pm
diff -u affelio/lib/Affelio/SNS/Handshaker_tmpDB.pm:1.6 affelio/lib/Affelio/SNS/Handshaker_tmpDB.pm:1.7
--- affelio/lib/Affelio/SNS/Handshaker_tmpDB.pm:1.6 Tue Mar 7 23:39:11 2006
+++ affelio/lib/Affelio/SNS/Handshaker_tmpDB.pm Thu Jun 1 15:34:13 2006
@@ -14,7 +14,7 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#
-# $Id: Handshaker_tmpDB.pm,v 1.6 2006/03/07 14:39:11 slash5234 Exp $
+# $Id: Handshaker_tmpDB.pm,v 1.7 2006/06/01 06:34:13 slash5234 Exp $
use strict;
use lib("../../../extlib/");
@@ -87,14 +87,15 @@
my $nickname = shift; #arg(3) nickname (string)
my $timestamp = shift; #arg(4) timestamp (string)
my $DH_key_str = shift; #arg(5) DH key (string)
- my $dbname = shift; #arg(6) DBname (string)
+ my $peer_type = shift; #arg(6) peer_type (string)
+ my $dbname = shift; #arg(7) DBname (string)
my $af = $self->{af};
$dbname =~ s/AFuser/$af->{site__dbtbl_prefix}/;
- Affelio::misc::Debug::debug_print("add: $af_id $nickname $timestamp $DH_key_str $dbname");
+ Affelio::misc::Debug::debug_print("add: $af_id $nickname $timestamp $DH_key_str $peer_type $dbname");
- my $str = "insert into $dbname (sessionid, timestamp, af_id, nickname, DH_key_str) values ('$sessionid', '$timestamp', '$af_id', '$nickname', '$DH_key_str')";
+ my $str = "insert into $dbname (sessionid, timestamp, af_id, nickname, DH_key_str, peer_type) values ('$sessionid', '$timestamp', '$af_id', '$nickname', '$DH_key_str', '$peer_type')";
my $sth = $af->getDB->prepare($str);
$sth->execute() or die $af->getDB->errstr;
@@ -115,7 +116,7 @@
Affelio::misc::Debug::debug_print("removedb: $sessionid");
- my $str = "SELECT sessionid, timestamp, af_id, nickname, DH_key_str FROM $dbname WHERE sessionid= '$sessionid'";
+ my $str = "SELECT sessionid, timestamp, af_id, nickname, DH_key_str peer_type FROM $dbname WHERE sessionid= '$sessionid'";
my $sth = $af->getDB->prepare($str) or die $af->getDB->errstr;
$sth->execute() or die $af->getDB->errstr;
my @row = $sth->fetchrow_array;