diff --git a/index.html b/index.html
index 6ca6b5a..0c8f798 100644
--- a/index.html
+++ b/index.html
@@ -12868,7 +12868,7 @@
is_user_blacklisted: function(flo_addr="") {
try {
storedNames = JSON.parse(localStorage.getItem("blacklisted_flo_addrs"));
- if(typeof storedNames=="object") {
+ if(typeof storedNames=="object" && storedNames !== null) {
return storedNames.includes(flo_addr);
} else return false;
} catch (error) {
@@ -12878,17 +12878,25 @@
whitelist_flo_id: function(flo_addr='') {
let blacklist = JSON.parse(localStorage.getItem("blacklisted_flo_addrs"));
+ if(blacklist==null || typeof blacklist !== "object") return;
let index = blacklist.indexOf(flo_addr);
if(index>=0) {
blacklist.splice(index, 1);
- localStorage.setItem("blacklisted_flo_addrs", JSON.stringify(storedNames));
+ localStorage.setItem("blacklisted_flo_addrs", JSON.stringify(blacklist));
}
},
blacklist_flo_id: function(flo_addr='') {
let blacklist = JSON.parse(localStorage.getItem("blacklisted_flo_addrs"));
- if(!blacklist.includes(flo_addr)) {
- localStorage.setItem("blacklisted_flo_addrs", JSON.stringify(storedNames));
+ try {
+ if(!blacklist.includes(flo_addr)) {
+ blacklist.push(flo_addr);
+ localStorage.setItem("blacklisted_flo_addrs", JSON.stringify(blacklist));
+ }
+ } catch (error) {
+ blacklist = [flo_addr];
+ localStorage.setItem("blacklisted_flo_addrs", JSON.stringify(blacklist));
+
}
},
@@ -17353,15 +17361,6 @@
});
});
- // If either of user or server has no data of the user, deny service
- if(params.user_cash_balances.length==0
- || params.user_crypto_balances.length==0
- || su_db_data["crypto_balances"].length==0
- || su_db_data["cash_balances"].length==0) {
- user_stale_crypto_data_in_server = true;
- user_stale_cash_data_in_server = true;
- }
-
if(user_stale_crypto_data_in_server.length
|| user_stale_cash_data_in_server.length) {
@@ -17381,6 +17380,8 @@
doSend(server_response)
);
+ return false;
+
} else {
localbitcoinplusplus.actions.whitelist_flo_id(params.trader_flo_address);
su_db_data.trader_flo_address = params.trader_flo_address;
@@ -17390,7 +17391,33 @@
.then(server_sync_response =>
doSend(server_sync_response)
);
+
+ return false;
}
+ } else if(
+ params.user_cash_balances.length==0
+ || params.user_crypto_balances.length==0
+ || su_db_data["crypto_balances"].length==0
+ || su_db_data["cash_balances"].length==0
+ ) {
+ // If either of user or server has no data of the user, deny service
+ // Server has old data, don't serve the user
+ localbitcoinplusplus.actions.blacklist_flo_id(params.trader_flo_address);
+
+ let service_denied_response = {};
+
+ service_denied_response.msg = `Supernode ${localbitcoinplusplus.wallets.my_local_flo_address} denied access.
+ The server does not have latest data. Please retry after sometime.`;
+
+ service_denied_response.trader_flo_address = params.trader_flo_address;
+ service_denied_response.receiver_flo_address = params.trader_flo_address;
+ RM_RPC.send_rpc
+ .call(this, "service_denied", service_denied_response)
+ .then(server_response =>
+ doSend(server_response)
+ );
+
+ return false;
}
}
});
@@ -17402,7 +17429,7 @@
let last_updated = localStorage.getItem(`refresh_reserved_cryptos_prices_time_${su[0].data.id}`);
let today = new Date().getTime();
var yesterday = new Date(new Date().getTime() - (24 * 60 * 60 * 1000));
- let backup_db = calbitcoinplusplus.newBackupDatabase.db[su[0].data.id];
+ let backup_db = localbitcoinplusplus.newBackupDatabase.db[su[0].data.id];
backup_db.backup_readDBbyIndex("withdraw_btc", 'trader_flo_address', params.trader_flo_address).then(withdraw_response=>{
for (const withdraw_res of withdraw_response) {
if(typeof withdraw_res=="object") {
@@ -21620,6 +21647,8 @@
},
async updateSupernodeAvailabilityStatus(ws_url, status) {
+ if(!localbitcoinplusplus.master_configurations.supernodesPubKeys
+ .includes(localbitcoinplusplus.wallets.my_local_flo_public_key)) return;
let disconnected_su_flo_id = "";
try {
disconnected_su_flo_id = await this.getFloIdFromWSUrl(ws_url);
@@ -21766,7 +21795,7 @@
}
async function onOpen(evt) {
- await reactor.dispatchEvent("createClosestSupernodesObject");
+ //await reactor.dispatchEvent("createClosestSupernodesObject");
reactor.dispatchEvent("new_supernode_connected", evt);
const localUser = await readDB("localbitcoinUser", "00-01");
if (typeof localUser == "object" && localUser.myLocalFLOAddress == "string") {
@@ -22292,21 +22321,13 @@
typeof res_obj.params[0] == "object"
) {
if (
- typeof localbitcoinplusplus.wallets
- .my_local_flo_address !== "string" ||
- service_denied_data.trader_flo_address !==
- localbitcoinplusplus.wallets.my_local_flo_address ||
- localbitcoinplusplus.master_configurations.supernodesPubKeys.includes(
+ typeof localbitcoinplusplus.wallets.my_local_flo_address !== "string"
+ || res_obj.params[0].receiver_flo_address !== localbitcoinplusplus.wallets.my_local_flo_address
+ || localbitcoinplusplus.master_configurations.supernodesPubKeys.includes(
localbitcoinplusplus.wallets.my_local_flo_public_key
)
)
return false;
- // Only the relevent user node should get response
- if (
- res_obj.params[0].trader_flo_address !==
- localbitcoinplusplus.wallets.my_local_flo_address
- )
- return;
if(typeof res_obj.params[0].msg=="string" && res_obj.params[0].msg.length>0) {
websocket.close();
@@ -24182,21 +24203,13 @@
typeof res_obj.params[0] == "object"
) {
if (
- typeof localbitcoinplusplus.wallets
- .my_local_flo_address !== "string" ||
- service_denied_data.trader_flo_address !==
- localbitcoinplusplus.wallets.my_local_flo_address ||
- localbitcoinplusplus.master_configurations.supernodesPubKeys.includes(
+ typeof localbitcoinplusplus.wallets.my_local_flo_address !== "string"
+ || res_obj.params[0].receiver_flo_address !== localbitcoinplusplus.wallets.my_local_flo_address
+ || localbitcoinplusplus.master_configurations.supernodesPubKeys.includes(
localbitcoinplusplus.wallets.my_local_flo_public_key
)
)
return false;
- // Only the relevent user node should get response
- if (
- res_obj.params[0].trader_flo_address !==
- localbitcoinplusplus.wallets.my_local_flo_address
- )
- return;
if(typeof res_obj.params[0].msg=="string" && res_obj.params[0].msg.length>0) {
websocket.close();