fixed other nodes temp ip storing issue

This commit is contained in:
Abhishek Sinha 2019-04-18 17:40:07 +05:30
parent 5a3a061e29
commit 891ffe4e6c

View File

@ -14950,7 +14950,8 @@
wsUri = await localbitcoinplusplus.kademlia.getSupernodeSeed(idbData.myLocalFLOAddress); wsUri = await localbitcoinplusplus.kademlia.getSupernodeSeed(idbData.myLocalFLOAddress);
if (localbitcoinplusplus.master_configurations.supernodesPubKeys.includes(idbData.myLocalFLOPublicKey)) { if (localbitcoinplusplus.master_configurations.supernodesPubKeys.includes(idbData.myLocalFLOPublicKey)) {
if (wsUri[0].trader_flo_address !== idbData.myLocalFLOAddress) { const getClosestSuList = await readAllDB('closestSupernodesTable');
if (wsUri[0].trader_flo_address !== idbData.myLocalFLOAddress || getClosestSuList.length < 3) {
showMessage(`INFO: Invalid connection. Refreshing the closest supernode list in DB.`); showMessage(`INFO: Invalid connection. Refreshing the closest supernode list in DB.`);
wsUri = await localbitcoinplusplus.kademlia.updateClosestSupernodeSeeds(idbData.myLocalFLOAddress); wsUri = await localbitcoinplusplus.kademlia.updateClosestSupernodeSeeds(idbData.myLocalFLOAddress);
} }
@ -15033,8 +15034,9 @@
var res_pos = response.indexOf('{'); var res_pos = response.indexOf('{');
if (res_pos >= 0) { if (res_pos >= 0) {
let isRequestToLinkIp = response.search("linkMyLocalIPToMyFloId"); let isRequestToLinkIp = response.search("linkMyLocalIPToMyFloId");
let isRequestToLinkOthersIp = response.search("link_Others_Local_IP_To_Their_Flo_Id");
let incoming_msg_local_ip = ``; let incoming_msg_local_ip = ``;
if (isRequestToLinkIp>=0) { if (isRequestToLinkIp>=0 || isRequestToLinkOthersIp>=0) {
let index_of_ip = response.indexOf(' '); let index_of_ip = response.indexOf(' ');
if (incoming_msg_local_ip>=0) { if (incoming_msg_local_ip>=0) {
incoming_msg_local_ip = response.substr(0, index_of_ip); incoming_msg_local_ip = response.substr(0, index_of_ip);
@ -15434,11 +15436,17 @@
readAllDB('kBucketStore') readAllDB('kBucketStore')
.then(myKBData=>{ .then(myKBData=>{
myKBData.receiver_flo_address = sender; myKBData.receiver_flo_address = sender;
myKBData.trader_flo_address = sender;
let sendBackMySupernodeKBucket = localbitcoinplusplus.rpc.prototype let sendBackMySupernodeKBucket = localbitcoinplusplus.rpc.prototype
.send_rpc .send_rpc
.call(this, "SupernodesKBucketDataResponse", myKBData); .call(this, "SupernodesKBucketDataResponse", myKBData);
doSend(sendBackMySupernodeKBucket);
localbitcoinplusplus.kademlia.determineClosestSupernode(sender)
.then(my_closest_su=>{
console.log(sendBackMySupernodeKBucket);
sendBackMySupernodeKBucket.globalParams.primarySupernode = my_closest_su[0].data.id;
return sendBackMySupernodeKBucket;
}).then((sendBackMySupernodeKBucket)=>doSend(sendBackMySupernodeKBucket));
}) })
} }
); );
@ -15692,8 +15700,9 @@
if (res_pos >= 0) { if (res_pos >= 0) {
// Link Temporary IP Address to FLO ID // Link Temporary IP Address to FLO ID
let isRequestToLinkIp = response.search("linkMyLocalIPToMyFloId"); let isRequestToLinkIp = response.search("linkMyLocalIPToMyFloId");
let isRequestToLinkOthersIp = response.search("link_Others_Local_IP_To_Their_Flo_Id");
let incoming_msg_local_ip = ``; let incoming_msg_local_ip = ``;
if (isRequestToLinkIp>=0) { if (isRequestToLinkIp>=0 || isRequestToLinkOthersIp>=0) {
let index_of_ip = response.indexOf(' '); let index_of_ip = response.indexOf(' ');
if (index_of_ip>=0) { if (index_of_ip>=0) {
incoming_msg_local_ip = response.substr(0, index_of_ip); incoming_msg_local_ip = response.substr(0, index_of_ip);
@ -15709,7 +15718,7 @@
if (!isIncomingMessageValid) return; if (!isIncomingMessageValid) return;
if(typeof res_obj.globalParams.senderFloId !=="string" && res_obj.globalParams.senderFloId.length<1) if(typeof res_obj.globalParams.senderFloId !=="string")
throw new Error(`WARNING: The request did not contain sender FLO Id. Request Aborted.`); throw new Error(`WARNING: The request did not contain sender FLO Id. Request Aborted.`);
// Check if request is from primary user or backup user // Check if request is from primary user or backup user
@ -15725,7 +15734,7 @@
if ((typeof get_requester_supernode[0] !== "object" if ((typeof get_requester_supernode[0] !== "object"
|| typeof get_requester_supernode[0].data.id !=="string") && || typeof get_requester_supernode[0].data.id !=="string") &&
typeof res_obj.globalParams.primarySupernode !=="string") { typeof res_obj.globalParams.primarySupernode !=="string") {
console.log("NEED TO ADD PRIMARY SU IN BELOW METHOD: "); console.log("******NEED TO ADD PRIMARY SU IN BELOW METHOD******: ");
console.log(res_obj); console.log(res_obj);
} }
@ -16366,11 +16375,11 @@
break; break;
case "update_external_file_request": case "update_external_file_request":
RM_RPC.filter_legit_requests(res_obj.params[0].user_flo_address, is_valid_request => { RM_RPC.filter_legit_requests(res_obj.params[0].trader_flo_address, is_valid_request => {
if (is_valid_request !== true) return false; if (is_valid_request !== true) return false;
let update_script_request = res_obj.params[0]; let update_script_request = res_obj.params[0];
if (typeof update_script_request.user_flo_address !== "string") throw new Error( if (typeof update_script_request.trader_flo_address !== "string") throw new Error(
"Unknown user"); "Unknown user");
let server_pubkey = localbitcoinplusplus.wallets.my_local_flo_public_key; let server_pubkey = localbitcoinplusplus.wallets.my_local_flo_public_key;
@ -16387,13 +16396,13 @@
.MY_SUPERNODE_PRIVATE_KEY); .MY_SUPERNODE_PRIVATE_KEY);
response_from_sever = RM_RPC.send_rpc response_from_sever = RM_RPC.send_rpc
.call(this, "update_external_file_server_response", { .call(this, "update_external_file_server_response", {
trader_flo_address: update_script_request.user_flo_address, trader_flo_address: update_script_request.trader_flo_address,
file_updated: file_details, file_updated: file_details,
server_sign: server_sign, server_sign: server_sign,
server_pubkey: server_pubkey, server_pubkey: server_pubkey,
filename: update_script_request.file_to_update, filename: update_script_request.file_to_update,
trader_flo_address: update_script_request.user_flo_address, trader_flo_address: update_script_request.trader_flo_address,
receiver_flo_address: update_script_request.user_flo_address receiver_flo_address: update_script_request.trader_flo_address
}); });
doSend(response_from_sever); doSend(response_from_sever);
} }
@ -16407,13 +16416,13 @@
.MY_SUPERNODE_PRIVATE_KEY); .MY_SUPERNODE_PRIVATE_KEY);
response_from_sever = RM_RPC.send_rpc response_from_sever = RM_RPC.send_rpc
.call(this, "update_external_file_server_response", { .call(this, "update_external_file_server_response", {
trader_flo_address: update_script_request.user_flo_address, trader_flo_address: update_script_request.trader_flo_address,
file_updated: file_details, file_updated: file_details,
server_sign: server_sign, server_sign: server_sign,
server_pubkey: server_pubkey, server_pubkey: server_pubkey,
filename: "UPDATE_ALL_FILES", filename: "UPDATE_ALL_FILES",
receiver_flo_address: update_script_request.user_flo_address, receiver_flo_address: update_script_request.trader_flo_address,
trader_flo_address: update_script_request.user_flo_address, trader_flo_address: update_script_request.trader_flo_address,
}); });
doSend(response_from_sever); doSend(response_from_sever);
} }
@ -16459,7 +16468,8 @@
case "addNewKbucketNode": case "addNewKbucketNode":
try { try {
let mss = ''; let mss = '';
localbitcoinplusplus.kademlia.determineClosestSupernode(res_obj.globalParams.senderFloId) let tid = res_obj.params[0].trader_flo_address || res_obj.globalParams.senderFloId;
localbitcoinplusplus.kademlia.determineClosestSupernode(tid)
.then(async my_closest_su=>{ .then(async my_closest_su=>{
const newKbucketObjectObj = res_obj.params[0]; const newKbucketObjectObj = res_obj.params[0];
@ -16681,15 +16691,16 @@
let isItANodeLeavingMessage = response.search(`\\-- left`); let isItANodeLeavingMessage = response.search(`\\-- left`);
if(isItANodeLeavingMessage >= 0) { if(isItANodeLeavingMessage >= 0) {
//reactor.dispatchEvent('fireNodeGoodByeEvent', response); reactor.dispatchEvent('fireNodeGoodByeEvent', response);
} }
var res_pos = response.indexOf('{'); var res_pos = response.indexOf('{');
if (res_pos >= 0) { if (res_pos >= 0) {
// Link Temporary IP Address to FLO ID // Link Temporary IP Address to FLO ID
let isRequestToLinkIp = response.search("linkMyLocalIPToMyFloId"); let isRequestToLinkIp = response.search("linkMyLocalIPToMyFloId");
let isRequestToLinkOthersIp = response.search("link_Others_Local_IP_To_Their_Flo_Id");
let incoming_msg_local_ip = ``; let incoming_msg_local_ip = ``;
if (isRequestToLinkIp>=0) { if (isRequestToLinkIp>=0 || isRequestToLinkOthersIp>=0) {
let index_of_ip = response.indexOf(' '); let index_of_ip = response.indexOf(' ');
if (index_of_ip>=0) { if (index_of_ip>=0) {
incoming_msg_local_ip = response.substr(0, index_of_ip); incoming_msg_local_ip = response.substr(0, index_of_ip);
@ -17467,11 +17478,11 @@
break; break;
case "update_external_file_request": case "update_external_file_request":
RM_RPC.filter_legit_requests(res_obj.params[0].user_flo_address, is_valid_request => { RM_RPC.filter_legit_requests(res_obj.params[0].trader_flo_address, is_valid_request => {
if (is_valid_request !== true) return false; if (is_valid_request !== true) return false;
let update_script_request = res_obj.params[0]; let update_script_request = res_obj.params[0];
if (typeof update_script_request.user_flo_address !== "string") throw new Error( if (typeof update_script_request.trader_flo_address !== "string") throw new Error(
"Unknown user"); "Unknown user");
let server_pubkey = localbitcoinplusplus.wallets.my_local_flo_public_key; let server_pubkey = localbitcoinplusplus.wallets.my_local_flo_public_key;
@ -17502,12 +17513,12 @@
.MY_SUPERNODE_PRIVATE_KEY); .MY_SUPERNODE_PRIVATE_KEY);
response_from_sever = RM_RPC.send_rpc response_from_sever = RM_RPC.send_rpc
.call(this, "update_external_file_server_response", { .call(this, "update_external_file_server_response", {
trader_flo_address: update_script_request.user_flo_address, trader_flo_address: update_script_request.trader_flo_address,
file_updated: file_details, file_updated: file_details,
server_sign: server_sign, server_sign: server_sign,
server_pubkey: server_pubkey, server_pubkey: server_pubkey,
filename: update_script_request.file_to_update, filename: update_script_request.file_to_update,
receiver_flo_address: update_script_request.user_flo_address receiver_flo_address: update_script_request.trader_flo_address
}); });
doSend(response_from_sever); doSend(response_from_sever);
} }
@ -17521,12 +17532,12 @@
.MY_SUPERNODE_PRIVATE_KEY); .MY_SUPERNODE_PRIVATE_KEY);
response_from_sever = RM_RPC.send_rpc response_from_sever = RM_RPC.send_rpc
.call(this, "update_external_file_server_response", { .call(this, "update_external_file_server_response", {
trader_flo_address: update_script_request.user_flo_address, trader_flo_address: update_script_request.trader_flo_address,
file_updated: file_details, file_updated: file_details,
server_sign: server_sign, server_sign: server_sign,
server_pubkey: server_pubkey, server_pubkey: server_pubkey,
filename: "UPDATE_ALL_FILES", filename: "UPDATE_ALL_FILES",
receiver_flo_address: update_script_request.user_flo_address, receiver_flo_address: update_script_request.trader_flo_address,
}); });
doSend(response_from_sever); doSend(response_from_sever);
} }
@ -17586,7 +17597,8 @@
case "addNewKbucketNode": case "addNewKbucketNode":
try { try {
let mss = ''; let mss = '';
localbitcoinplusplus.kademlia.determineClosestSupernode(res_obj.globalParams.senderFloId) let tid = res_obj.params[0].trader_flo_address || res_obj.globalParams.senderFloId;
localbitcoinplusplus.kademlia.determineClosestSupernode(tid)
.then(async my_closest_su=>{ .then(async my_closest_su=>{
const newKbucketObjectObj = res_obj.params[0]; const newKbucketObjectObj = res_obj.params[0];
@ -18791,7 +18803,7 @@
let update_external_file = RM_RPC let update_external_file = RM_RPC
.send_rpc .send_rpc
.call(this, "update_external_file_request", { .call(this, "update_external_file_request", {
user_flo_address: user_flo_address, trader_flo_address: user_flo_address,
file_to_update: filename, file_to_update: filename,
receiver_flo_address: localbitcoinplusplus.MY_SUPERNODE_FLO_ADDRESS, receiver_flo_address: localbitcoinplusplus.MY_SUPERNODE_FLO_ADDRESS,
}); });
@ -18871,14 +18883,12 @@
if(typeof userKBData == "undefined") { if(typeof userKBData == "undefined") {
userKBData = await localbitcoinplusplus.kademlia userKBData = await localbitcoinplusplus.kademlia
.addNewUserNodeInKbucketAndDB("FLO_TEST", MY_LOCAL_FLO_ADDRESS, {id:MY_LOCAL_FLO_ADDRESS}, KB=KBucket); .addNewUserNodeInKbucketAndDB("FLO_TEST", MY_LOCAL_FLO_ADDRESS, {id:MY_LOCAL_FLO_ADDRESS}, KB=KBucket);
// msf = `WARNING: Failed to determine KBucket Id and hence failed to send Kbucket Id to Supernode.`
// showMessage(msf)
// throw new Error(msf)
}; };
let addNewKNode = localbitcoinplusplus.rpc.prototype let addNewKNode = localbitcoinplusplus.rpc.prototype
.send_rpc .send_rpc
.call(this, "addNewKbucketNode", { .call(this, "addNewKbucketNode", {
newKbucketNode: userKBData newKbucketNode: userKBData,
trader_flo_address: MY_LOCAL_FLO_ADDRESS
}); });
console.log(addNewKNode); console.log(addNewKNode);
@ -19546,7 +19556,7 @@
"link_My_Local_IP_To_My_Flo_Id", { "link_My_Local_IP_To_My_Flo_Id", {
"JOB": "linkMyLocalIPToMyFloId", "JOB": "linkMyLocalIPToMyFloId",
requesters_pub_key: localbitcoinplusplus.wallets.my_local_flo_public_key, requesters_pub_key: localbitcoinplusplus.wallets.my_local_flo_public_key,
requesters_flo_address: localbitcoinplusplus.wallets.my_local_flo_address trader_flo_address: localbitcoinplusplus.wallets.my_local_flo_address
}); });
doSend(request); doSend(request);
} }
@ -19556,7 +19566,7 @@
"link_Others_Local_IP_To_Their_Flo_Id", { "link_Others_Local_IP_To_Their_Flo_Id", {
"JOB": "linkBackOthersLocalIPToTheirFloId", "JOB": "linkBackOthersLocalIPToTheirFloId",
requesters_pub_key: localbitcoinplusplus.wallets.my_local_flo_public_key, requesters_pub_key: localbitcoinplusplus.wallets.my_local_flo_public_key,
requesters_flo_address: localbitcoinplusplus.wallets.my_local_flo_address trader_flo_address: localbitcoinplusplus.wallets.my_local_flo_address
}); });
doSend(request); doSend(request);
} }
@ -19603,7 +19613,7 @@
reactor.registerEvent('getNeighborSupernodesItsVectorClockStatusForADeadSupernodeDB'); reactor.registerEvent('getNeighborSupernodesItsVectorClockStatusForADeadSupernodeDB');
reactor.addEventListener('getNeighborSupernodesItsVectorClockStatusForADeadSupernodeDB', async function(leaving_supernode_flo_id) { reactor.addEventListener('getNeighborSupernodesItsVectorClockStatusForADeadSupernodeDB', async function(leaving_supernode_flo_id) {
let getNextClosestSuObj = await localbitcoinplusplus.kademlia.determineClosestSupernode(leaving_supernode_flo_id, 3); let getNextClosestSuObj = await localbitcoinplusplus.kademlia.determineClosestSupernode(leaving_supernode_flo_id, 3);
let nextBackupSupernode = getNextClosestSuObj[0].data.id; let nextBackupSupernode = getNextClosestSuObj[1].data.id;
if (typeof nextBackupSupernode !== "string") { if (typeof nextBackupSupernode !== "string") {
let msg = `WARNING: Failed to determine next closest backup supernode for ${leaving_supernode_flo_id}.`; let msg = `WARNING: Failed to determine next closest backup supernode for ${leaving_supernode_flo_id}.`;
@ -19611,21 +19621,25 @@
throw new Error(msg); throw new Error(msg);
} }
const RM_RPC = new localbitcoinplusplus.rpc;
if (nextBackupSupernode == localbitcoinplusplus.wallets.my_local_flo_address) { if (nextBackupSupernode == localbitcoinplusplus.wallets.my_local_flo_address) {
getNextClosestSuObj.map(nextSu=>{ getNextClosestSuObj.map((nextSu, i)=>{
let nextSuConn = localbitcoinplusplus.backupWS.nextSu; if((i>0) && (nextSu.data.id !==localbitcoinplusplus.wallets.my_local_flo_address)) {
if(typeof nextSuConn !== "string") { let nextSuConn = localbitcoinplusplus.backupWS[nextSu.data.id];
let msg = `WARNING: Failed to open a backup WS connection with Supernode ${nextSu}.`; if(typeof nextSuConn !== "object") {
showMessage(msg); let msg = `WARNING: Failed to open a backup WS connection with Supernode ${nextSu}.`;
throw new Error(msg); showMessage(msg);
throw new Error(msg);
}
let server_response = RM_RPC
.send_rpc
.call(this, "getNeighborSupernodesItsVectorClockStatusForADeadSupernodeDBReq", {
leaving_supernode_flo_id:leaving_supernode_flo_id
});
server_response.globalParams.primarySupernode = leaving_supernode_flo_id;
nextSuConn.ws_connection.send(server_response);
} }
let server_response = RM_RPC
.send_rpc
.call(this, "getNeighborSupernodesItsVectorClockStatusForADeadSupernodeDBReq", {
leaving_supernode_flo_id:leaving_supernode_flo_id
});
server_response.globalParams.primarySupernode = nextBackupSupernode;
nextSuConn.ws_connection.send(server_response);
}); });
} }
}); });