auto-delete feature

Supernode automatically deletes messages that are not sent by subAdmins of an application and applications that are not associated.
The delete occurs every one hour, the messages are stored for a configurable time (deleteDelay) before deleted
This commit is contained in:
sairajzero 2019-11-27 10:26:01 +05:30
parent 76ec38ceed
commit f543c2c0d3

View File

@ -26,6 +26,7 @@
FLO_TEST: 'https://testnet-flosight.duckdns.org'
},
adminID: "FEzk75EGMPEQMrCuPosGiwuK162hcEu49E",
refreshDelay: 3600000,
//sendAmt: 0.001,
//fee: 0.0005,
@ -6046,7 +6047,7 @@
initIndexedDBforSupernodeDataStorage(myFloID).then(result => {
console.log(result)
serverPwd = prompt("Enter Server Pass!")
setInterval(autoRefreshBlockchainData, 3600000);
setInterval(autoRefreshBlockchainData, floGlobals.refreshDelay);
floSupernode.initSupernode(serverPwd, myFloID).then(async result => {
console.log(result)
floGlobals.serveList.push(myFloID)
@ -6104,9 +6105,38 @@
}
function autoRefreshBlockchainData(){
refreshBlockchainData()
.then(result => console.log(result))
.catch(error => console.log(error))
refreshBlockchainData().then(result => {
console.log(result)
autoDeleteStoredData()
.then(result => console.log(result))
.catch(error => console.log(error))
}).catch(error => console.log(error))
}
function autoDeleteStoredData(){
return new Promise((resolve, reject) => {
var deleteEnd = Date.now() - floGlobals.supernodeConfig.deleteDelay
var deleteStart = deleteEnd - floGlobals.refreshDelay
var promises = []
var filterOptions = {
lowerKey: `${deleteStart}`,
upperKey: `${deleteEnd}`,
}
for(var i = 0; i < floGlobals.storedList.length; i++){
var promise = new Promise((res,rej) => {
compactIDB.searchData(floGlobals.defaultDisk,filterOptions,`SN_${floGlobals.storedList[i]}`).then(results => {
for(key in results)
if(!floGlobals.applicationList.includes(results[key].application) || !floGlobals.appSubAdmins[results[key].application].includes(results[key].senderID))
compactIDB.removeData(floGlobals.defaultDisk, key, `SN_${floGlobals.storedList[i]}`)
res(`Auto-delete successful for SN_${floGlobals.storedList[i]} from ${deleteStart} to ${deleteEnd}`)
}).catch(error => rej(error))
})
promises.push(promise)
}
Promise.all(promises).then(results => {
resolve(`Auto-delete successful from ${deleteStart} to ${deleteEnd}`)
}).catch(error => reject(error))
})
}
function refreshBlockchainData(){
@ -6158,7 +6188,7 @@
return new Promise((resolve,reject) => {
var promises = []
for(app in floGlobals.applicationList){
var promise = new Promise((resolve,reject) => {
var promise = new Promise((res,rej) => {
compactIDB.readData("appSubAdmins", app).then(subAdmins => {
compactIDB.readData("lastTx",floGlobals.applicationList[app]).then(lastTx => {
floBlockchainAPI.readData(floGlobals.applicationList[app],{ignoreOld:lastTx,sentOnly:true,pattern:app}).then(result => {
@ -6171,11 +6201,11 @@
}
compactIDB.writeData("lastTx", result.totalTxs, floGlobals.adminID);
compactIDB.writeData("appSubAdmins", subAdmins, app)
.then(res => resolve(app))
.catch(error => reject(error))
}).catch(error => reject(error))
}).catch(error => reject(error))
}).catch(error => reject(error))
.then(result => res(app))
.catch(error => rej(error))
}).catch(error => rej(error))
}).catch(error => rej(error))
}).catch(error => rej(error))
})
promises.push(promise)
}
@ -6202,11 +6232,10 @@
connectToAllBackupSupernode(backupConn.floID, i+1)
.then(result => resolve(result))
.catch(error => reject(error))
})
}).catch(error => reject(error))
}
}).catch(error => reject(error))
}
})
}