added code for adding user data from handle_backup_request and backup to backup sync
This commit is contained in:
parent
77435c2b2d
commit
6b5565f806
@ -10075,12 +10075,13 @@
|
||||
#!#MaxBackups=2
|
||||
#!#supernodesPubKeys=0315C3A20FE7096CC2E0F81A80D5F1A687B8F9EFA65242A0B0881E1BA3EE7D7D53,
|
||||
03F7493F11B8E44B9798CD434D20FBE7FA34B9779D144984889D11A17C56A18742,039B4AA00DBFC0A6631DE6DA83526611A0E6B857D3579DF840BBDEAE8B6898E3B6,
|
||||
03C8E3836C9A77E2AF03D4265D034BA85732738919708EAF6A16382195AE796EDF
|
||||
03C8E3836C9A77E2AF03D4265D034BA85732738919708EAF6A16382195AE796EDF,0349B08AA1ABDCFFB6D78CD7C949665AD2FF065EA02B3C6C47A5E9592C9A1C6BCB
|
||||
#!#externalFiles={"d3js":"58f54395efa8346e8e94d12609770f66b916897e7f4e05f6c98780cffa5c70a3"},
|
||||
#!#ShamirsMaxShares=8#!#supernodeSeeds={"ranchimall1":{"ip":"127.0.0.1","port":"9001","kbucketId":"oZxHcbSf1JC8t5GjutopWYXs7C6Fe9p7ps"},
|
||||
"ranchimall2":{"ip":"127.0.0.1","port":"9002","kbucketId":"oTWjPupy3Z7uMdPcu5uXd521HBkcsLuSuM"},
|
||||
"ranchimall3":{"ip":"127.0.0.1","port":"9003","kbucketId":"odYA6KagmbokSh9GY7yAfeTUZRtZLwecY1"},
|
||||
"ranchimall4":{"ip":"127.0.0.1","port":"9004","kbucketId":"oJosrve9dBv2Hj2bfncxv2oEpTysg3Wejv"}}`;
|
||||
"ranchimall4":{"ip":"127.0.0.1","port":"9004","kbucketId":"oJosrve9dBv2Hj2bfncxv2oEpTysg3Wejv"},
|
||||
"ranchimall5":{"ip":"127.0.0.1","port":"9005","kbucketId":"oMhv5sAzqg77sYHxmUGZWKRrVo4P4JQduS"}}`;
|
||||
|
||||
// RMAssets =
|
||||
// `masterFLOPubKey=029EF7838D4D103E62262394B5417E8ABFD75539D19E61CA5FD0C2051B69B29910
|
||||
@ -10175,7 +10176,7 @@
|
||||
"job": "SYNC_BACKUP_SUPERNODE_DB_WITH_BACKUP_SUPERNODE_DB",
|
||||
"receiver_flo_address": receiver,
|
||||
"requester_flo_id": requester
|
||||
}).then(sync_request=>doSend(sync_request, receiver));
|
||||
}).then(sync_request=>doSend(sync_request, receiver));
|
||||
},
|
||||
|
||||
get_sharable_db_data: async function (dbTableNamesArray, backup_db="") {
|
||||
@ -15179,19 +15180,19 @@
|
||||
});
|
||||
|
||||
// Connect with backup supernodes
|
||||
wsUri.filter((uri, index)=>{
|
||||
wsUri.map((uri, index)=>{
|
||||
if(index>0 && index<=localbitcoinplusplus.master_configurations.MaxBackups
|
||||
&& localbitcoinplusplus.master_configurations.supernodesPubKeys
|
||||
.includes(localbitcoinplusplusObj.myLocalFLOPublicKey)) {
|
||||
return uri;
|
||||
.includes(idbData.myLocalFLOPublicKey)) {
|
||||
backUpSupernodesWS[uri.trader_flo_address] = new backupSupernodesWebSocketObject(`ws://${uri.ip}:${uri.port}`);
|
||||
backUpSupernodesWS[uri.trader_flo_address].connectWS();
|
||||
}
|
||||
if (index>0 && localbitcoinplusplus.master_configurations.supernodesPubKeys
|
||||
.includes(idbData.myLocalFLOPublicKey)) {
|
||||
let dbname = `su_backup_${uri.trader_flo_address}`;
|
||||
BACKUP_DB[uri.trader_flo_address] = new newBackupDB(dbname);
|
||||
BACKUP_DB[uri.trader_flo_address].createNewDB();
|
||||
}
|
||||
}).map((uri, index)=>{
|
||||
backUpSupernodesWS[uri.trader_flo_address] = new backupSupernodesWebSocketObject(`ws://${uri.ip}:${uri.port}`);
|
||||
backUpSupernodesWS[uri.trader_flo_address].connectWS();
|
||||
|
||||
let dbname = `su_backup_${uri.trader_flo_address}`;
|
||||
BACKUP_DB[uri.trader_flo_address] = new newBackupDB(dbname);
|
||||
BACKUP_DB[uri.trader_flo_address].createNewDB();
|
||||
});
|
||||
|
||||
localbitcoinplusplus.MY_SUPERNODE_FLO_ADDRESS = wsUri[0].trader_flo_address;
|
||||
@ -15257,7 +15258,7 @@
|
||||
}
|
||||
|
||||
// Update backup db as well for all supernodes you're serving as backup
|
||||
for (let index = 1; index <= closestSuNodes.length-1; index++) {
|
||||
for (let index = closestSuNodes.length; index > closestSuNodes.length-localbitcoinplusplus.master_configurations.MaxBackups; index--) {
|
||||
let firstAliveBackupFloIdForBackupSupernode;
|
||||
if (closestSuNodes[index].is_live==true && typeof firstAliveBackupFloIdForBackupSupernode !== "string") {
|
||||
firstAliveBackupFloIdForBackupSupernode = closestSuNodes[index].trader_flo_address;
|
||||
@ -15266,9 +15267,19 @@
|
||||
firstAliveBackupFloIdForBackupSupernode, closestSuNodes[index].trader_flo_address);
|
||||
} else {
|
||||
// it will ask backup from backup su next closest
|
||||
console.info(`da daa`);
|
||||
for (let j = index; j <= index+localbitcoinplusplus.master_configurations.MaxBackups; j++) {
|
||||
const nextBKSu = closestSuNodes[j].trader_flo_address;
|
||||
if (nextBKSu !== idbData.myLocalFLOAddress
|
||||
&& closestSuNodes[index].is_live==true
|
||||
&& typeof firstAliveBackupFloIdForBackupSupernode !== "string") {
|
||||
localbitcoinplusplus.actions
|
||||
.sync_backup_supernode_from_backup_supernode(closestSuNodes[0].trader_flo_address,
|
||||
firstAliveBackupFloIdForBackupSupernode, closestSuNodes[j].trader_flo_address);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -15292,26 +15303,19 @@
|
||||
localbitcoinplusplus.MY_SUPERNODE_FLO_ADDRESS = wsUri[0].trader_flo_address;
|
||||
|
||||
// Connect with backup supernodes
|
||||
wsUri.filter((uri, index)=>{
|
||||
if(index>0 && index<=localbitcoinplusplus.master_configurations.MaxBackups
|
||||
wsUri.map((uri, index)=>{
|
||||
if(index>0 && index<=localbitcoinplusplus.master_configurations.MaxBackups
|
||||
&& localbitcoinplusplus.master_configurations.supernodesPubKeys
|
||||
.includes(idbData.myLocalFLOPublicKey)) {
|
||||
return uri;
|
||||
backUpSupernodesWS[uri.trader_flo_address] = new backupSupernodesWebSocketObject(`ws://${uri.ip}:${uri.port}`);
|
||||
backUpSupernodesWS[uri.trader_flo_address].connectWS();
|
||||
}
|
||||
if (index>0 && localbitcoinplusplus.master_configurations.supernodesPubKeys
|
||||
.includes(idbData.myLocalFLOPublicKey)) {
|
||||
let dbname = `su_backup_${uri.trader_flo_address}`;
|
||||
BACKUP_DB[uri.trader_flo_address] = new newBackupDB(dbname);
|
||||
BACKUP_DB[uri.trader_flo_address].createNewDB();
|
||||
}
|
||||
}).map((uri, index)=>{
|
||||
console.log(uri);
|
||||
backUpSupernodesWS[uri.trader_flo_address] = new backupSupernodesWebSocketObject(`ws://${uri.ip}:${uri.port}`);
|
||||
backUpSupernodesWS[uri.trader_flo_address].connectWS();
|
||||
});
|
||||
|
||||
// Init backup db for rest supernodes
|
||||
localbitcoinplusplus.master_configurations.supernodesPubKeys
|
||||
.map(p=>bitjs.FLO_TEST.pubkey2address(p))
|
||||
.filter(f=>f!==localbitcoinplusplus.wallets.my_local_flo_address)
|
||||
.map(m=>{
|
||||
let dbname = `su_backup_${m}`;
|
||||
BACKUP_DB[m] = new newBackupDB(dbname);
|
||||
BACKUP_DB[m].createNewDB();
|
||||
});
|
||||
|
||||
resolve(true);
|
||||
@ -15359,7 +15363,6 @@
|
||||
reactor.dispatchEvent('backup_supernode_down');
|
||||
}.bind(this);
|
||||
this.ws_connection.onmessage = function (evt) {
|
||||
//this.handle_backup_server_messages(evt);
|
||||
let response = evt.data;
|
||||
let isRequestToLinkIp = response.search("linkMyLocalIPToMyFloId");
|
||||
let isRequestToLinkOthersIp = response.search("link_Others_Local_IP_To_Their_Flo_Id");
|
||||
@ -15367,6 +15370,22 @@
|
||||
if (isRequestToLinkIp>=0 || isRequestToLinkOthersIp>=0) {
|
||||
handle_backup_server_messages(response);
|
||||
}
|
||||
var res_pos = response.indexOf('{');
|
||||
if (res_pos >= 0) {
|
||||
var res = response.substr(res_pos);
|
||||
let res_obj = JSON.parse(res);
|
||||
if (res_obj.method==="add_user_public_data") {
|
||||
handle_backup_server_messages(response);
|
||||
}
|
||||
if (res_obj.method==="sync_backup_supernode_from_backup_supernode") {
|
||||
// if (localbitcoinplusplus.master_configurations.supernodesPubKeys
|
||||
// .includes(localbitcoinplusplus.wallets.my_local_flo_public_key)) {
|
||||
// response_from_sever = RM_RPC.backup_receive_rpc_response.call(this,
|
||||
// JSON.stringify(res_obj));
|
||||
// }
|
||||
onMessage(response);
|
||||
}
|
||||
}
|
||||
}.bind(this);
|
||||
this.ws_connection.onerror = function (evt) {
|
||||
console.error(evt);
|
||||
@ -16154,7 +16173,7 @@
|
||||
const RM_RPC = new localbitcoinplusplus.rpc;
|
||||
RM_RPC
|
||||
.send_rpc
|
||||
.call(this, "add_user_public_data", public_req_object)
|
||||
.call(this, "add_user_public_data_inBackup_db", public_req_object)
|
||||
.then(add_user_public_data_req=>doSend(add_user_public_data_req));
|
||||
|
||||
}
|
||||
@ -17983,7 +18002,10 @@
|
||||
|
||||
case "sync_backup_supernode_from_backup_supernode":
|
||||
if (localbitcoinplusplus.master_configurations.supernodesPubKeys
|
||||
.includes(localbitcoinplusplus.wallets.my_local_flo_public_key)) {
|
||||
.includes(localbitcoinplusplus.wallets.my_local_flo_public_key)
|
||||
&& typeof res_obj.globalParams.receiverFloId == "string"
|
||||
&& localbitcoinplusplus.wallets.my_local_flo_address == res_obj.globalParams.receiverFloId
|
||||
) {
|
||||
response_from_sever = RM_RPC.backup_receive_rpc_response.call(this,
|
||||
JSON.stringify(res_obj));
|
||||
}
|
||||
@ -18585,9 +18607,55 @@
|
||||
}
|
||||
});
|
||||
break;
|
||||
|
||||
case "add_user_public_data_inBackup_db":
|
||||
RM_RPC.filter_legit_backup_requests(res_obj.params[0].trader_flo_address,
|
||||
function (is_valid_request) {
|
||||
if (is_valid_request !== true) return false;
|
||||
|
||||
let supernode_flo_public_key = localbitcoinplusplus.wallets.my_local_flo_public_key;
|
||||
|
||||
if (typeof res_obj.params == "object" && typeof res_obj.params[0] == "object") {
|
||||
let req_data = res_obj.params[0];
|
||||
try {
|
||||
let flo_address = bitjs.FLO_TEST.pubkey2address(req_data.trader_flo_pubKey);
|
||||
|
||||
if (flo_address == req_data.trader_flo_address && req_data.trader_flo_address
|
||||
.length > 0) {
|
||||
|
||||
let public_req_object = {
|
||||
trader_flo_address: req_data.trader_flo_address,
|
||||
trader_flo_pubKey: req_data.trader_flo_pubKey,
|
||||
supernode_flo_public_key: supernode_flo_public_key,
|
||||
trader_status: 0,
|
||||
timestamp: +new Date()
|
||||
}
|
||||
|
||||
addDB('userPublicData', public_req_object);
|
||||
|
||||
localbitcoinplusplus.kademlia.determineClosestSupernode(req_data.trader_flo_address)
|
||||
.then(my_closest_su_list=>{
|
||||
const primarySupernodeOfThisUser = my_closest_su_list[0].data.id;
|
||||
const backup_server_db_instance = localbitcoinplusplus.newBackupDatabase.db[primarySupernodeOfThisUser];
|
||||
|
||||
if(typeof backup_server_db_instance !== "object") {
|
||||
let backup_db_error_msg = `WARNING: Unknown DB instance. DB Backup failed.`;
|
||||
showMessage(backup_db_error_msg);
|
||||
throw new Error(backup_db_error_msg);
|
||||
};
|
||||
backup_server_db_instance.backup_addDB('userPublicData', public_req_object);
|
||||
});
|
||||
|
||||
}
|
||||
} catch (error) {
|
||||
throw new Error('Invalid public key and flo address combination.');
|
||||
}
|
||||
}
|
||||
});
|
||||
break;
|
||||
|
||||
case "send_back_shamirs_secret_btc_pvtkey":
|
||||
if (typeof res_obj.params == "object" && typeof res_obj.params[0] == "object") {
|
||||
if (typeof res_obj.params == "object" && typeof res_obj.params[0] == "object") {
|
||||
|
||||
if(typeof res_obj.globalParams.senderFloId !="string") return;
|
||||
localbitcoinplusplus.kademlia.determineClosestSupernode(res_obj.globalParams.senderFloId)
|
||||
@ -20559,7 +20627,7 @@
|
||||
reactor.registerEvent('fireNodeWelcomeBackEvent');
|
||||
reactor.registerEvent('fireNodeGoodByeEvent');
|
||||
reactor.registerEvent('primarySupernodeUpdatingLatestDataForItsUserFromOtherSupernodes');
|
||||
|
||||
|
||||
reactor.addEventListener('fireNodeWelcomeBackEvent', function(evt) {
|
||||
let getFLOId = bitjs.FLO_TEST.pubkey2address(evt.flo_public_key);
|
||||
if(localbitcoinplusplus.master_configurations.supernodesPubKeys
|
||||
|
||||
Loading…
Reference in New Issue
Block a user