* do not reinsert blocks
* warn mail about bad sigs
This commit is contained in:
parent
cfbc834eb5
commit
9655bfd872
@ -624,6 +624,18 @@ class Core:
|
|||||||
'''
|
'''
|
||||||
retData = False
|
retData = False
|
||||||
|
|
||||||
|
# check nonce
|
||||||
|
dataNonce = self._utils.bytesToStr(self._crypto.sha3Hash(data))
|
||||||
|
try:
|
||||||
|
with open(self.dataNonceFile, 'r') as nonces:
|
||||||
|
if dataNonce in nonces:
|
||||||
|
return retData
|
||||||
|
except FileNotFoundError:
|
||||||
|
pass
|
||||||
|
# record nonce
|
||||||
|
with open(self.dataNonceFile, 'a') as nonceFile:
|
||||||
|
nonceFile.write(dataNonce + '\n')
|
||||||
|
|
||||||
if meta is None:
|
if meta is None:
|
||||||
meta = dict()
|
meta = dict()
|
||||||
|
|
||||||
@ -684,12 +696,6 @@ class Core:
|
|||||||
metadata['signer'] = signer
|
metadata['signer'] = signer
|
||||||
metadata['time'] = str(self._utils.getEpoch())
|
metadata['time'] = str(self._utils.getEpoch())
|
||||||
|
|
||||||
nonce = self._utils.bytesToStr(self._crypto.sha3Hash(data))
|
|
||||||
|
|
||||||
# TODO check in advance
|
|
||||||
with open(self.dataNonceFile, 'a') as nonceFile:
|
|
||||||
nonceFile.write(nonce + '\n')
|
|
||||||
|
|
||||||
# send block data (and metadata) to POW module to get tokenized block data
|
# send block data (and metadata) to POW module to get tokenized block data
|
||||||
proof = onionrproofs.POW(metadata, data)
|
proof = onionrproofs.POW(metadata, data)
|
||||||
payload = proof.waitForResult()
|
payload = proof.waitForResult()
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
'''
|
'''
|
||||||
import core, config, logger
|
import core, config, logger, sqlite3
|
||||||
class PeerProfiles:
|
class PeerProfiles:
|
||||||
'''
|
'''
|
||||||
PeerProfiles
|
PeerProfiles
|
||||||
@ -89,7 +89,10 @@ def peerCleanup(coreInst):
|
|||||||
# Remove peers that go below the negative score
|
# Remove peers that go below the negative score
|
||||||
if PeerProfiles(address, coreInst).score < minScore:
|
if PeerProfiles(address, coreInst).score < minScore:
|
||||||
coreInst.removeAddress(address)
|
coreInst.removeAddress(address)
|
||||||
coreInst._blacklist.addToDB(address, dataType=1, expire=300)
|
try:
|
||||||
|
coreInst._blacklist.addToDB(address, dataType=1, expire=300)
|
||||||
|
except sqlite3.IntegrityError: #TODO just make sure its not a unique constraint issue
|
||||||
|
pass
|
||||||
logger.warn('Removed address ' + address + '.')
|
logger.warn('Removed address ' + address + '.')
|
||||||
|
|
||||||
# Unban probably not malicious peers TODO improve
|
# Unban probably not malicious peers TODO improve
|
||||||
|
@ -109,14 +109,13 @@ class OnionrMail:
|
|||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
readBlock.verifySig()
|
readBlock.verifySig()
|
||||||
print('Message recieved from', readBlock.signer)
|
print('Message recieved from %s' % (readBlock.signer,))
|
||||||
print('Valid signature:', readBlock.validSig)
|
print('Valid signature:', readBlock.validSig)
|
||||||
if not readBlock.validSig:
|
if not readBlock.validSig:
|
||||||
logger.warn('This message has an INVALID signature. Anyone could have sent this message.')
|
logger.warn('This message has an INVALID signature. ANYONE could have sent this message.')
|
||||||
logger.readline('Press enter to continue to message.')
|
cancel = logger.readline('Press enter to continue to message, or -q to not open the message (recommended).')
|
||||||
|
if cancel != '-q':
|
||||||
print(draw_border(self.myCore._utils.escapeAnsi(readBlock.bcontent.decode().strip())))
|
print(draw_border(self.myCore._utils.escapeAnsi(readBlock.bcontent.decode().strip())))
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
def draftMessage(self):
|
def draftMessage(self):
|
||||||
|
Loading…
Reference in New Issue
Block a user