remove sent mail from sentbox when block is blacklisted

This commit is contained in:
Kevin Froman 2020-01-28 21:39:01 -06:00
parent 85be8f76e5
commit d303b8252b
6 changed files with 50 additions and 14 deletions

View File

@ -1,6 +1,6 @@
"""Onionr - Private P2P Communication. """Onionr - Private P2P Communication.
Handle maintenence of a blacklist database, for blocks and peers Handle maintenance of a blacklist database, for blocks and peers
""" """
import sqlite3 import sqlite3
import os import os
@ -99,6 +99,9 @@ class OnionrBlackList:
# we hash the data so we can remove data entirely from our node's disk # we hash the data so we can remove data entirely from our node's disk
hashed = bytesconverter.bytes_to_str(onionrcrypto.hashers.sha3_hash(data)) hashed = bytesconverter.bytes_to_str(onionrcrypto.hashers.sha3_hash(data))
event('blacklist_add', data={'data': data, 'hash': hashed})
if len(hashed) > 64: if len(hashed) > 64:
raise Exception("Hashed data is too large") raise Exception("Hashed data is too large")

View File

@ -34,6 +34,8 @@ PLUGIN_VERSION = '0.0.1'
sys.path.insert(0, os.path.dirname(os.path.realpath(__file__))) sys.path.insert(0, os.path.dirname(os.path.realpath(__file__)))
import sentboxdb, mailapi, loadinbox # import after path insert import sentboxdb, mailapi, loadinbox # import after path insert
from onblacklist import on_blacklist_add
flask_blueprint = mailapi.flask_blueprint flask_blueprint = mailapi.flask_blueprint
security_whitelist = ['staticfiles.mail', 'staticfiles.mailindex'] security_whitelist = ['staticfiles.mail', 'staticfiles.mailindex']

View File

@ -0,0 +1,12 @@
from threading import Thread
from onionrutils import localcommand
def on_blacklist_add(api, data=None):
blacklisted_data = data['data']
def remove():
localcommand.local_command(f'/mail/deletemsg/{blacklisted_data}', post=True)
Thread(target=remove).start()

View File

@ -1,9 +1,13 @@
''' """
Onionr - Private P2P Communication Onionr - Private P2P Communication
This file handles the sentbox for the mail plugin This file handles the sentbox for the mail plugin
''' """
''' import sqlite3
import os
from onionrutils import epoch
from utils import identifyhome, reconstructhash
"""
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or the Free Software Foundation, either version 3 of the License, or
@ -16,17 +20,16 @@
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 sqlite3, os
from onionrutils import epoch
from utils import identifyhome, reconstructhash
class SentBox: class SentBox:
def __init__(self): def __init__(self):
self.dbLocation = identifyhome.identify_home() + '/sentbox.db' self.dbLocation = identifyhome.identify_home() + '/sentbox.db'
if not os.path.exists(self.dbLocation): if not os.path.exists(self.dbLocation):
self.createDB() self.createDB()
return return
def connect(self): def connect(self):
self.conn = sqlite3.connect(self.dbLocation) self.conn = sqlite3.connect(self.dbLocation)
self.cursor = self.conn.cursor() self.cursor = self.conn.cursor()
@ -37,14 +40,14 @@ class SentBox:
def createDB(self): def createDB(self):
conn = sqlite3.connect(self.dbLocation) conn = sqlite3.connect(self.dbLocation)
cursor = conn.cursor() cursor = conn.cursor()
cursor.execute('''CREATE TABLE sent( cursor.execute("""CREATE TABLE sent(
hash id not null, hash id not null,
peer text not null, peer text not null,
message text not null, message text not null,
subject text not null, subject text not null,
date int not null date int not null
); );
''') """)
conn.commit() conn.commit()
conn.close() conn.close()
return return

View File

@ -0,0 +1,19 @@
#!/usr/bin/env python3
import sys, os
sys.path.append(".")
sys.path.append("src/")
import unittest, uuid
import json
TEST_DIR = 'testdata/%s-%s' % (uuid.uuid4(), os.path.basename(__file__)) + '/'
print("Test directory:", TEST_DIR)
os.environ["ONIONR_HOME"] = TEST_DIR
from utils import identifyhome, createdirs
from etc import onionrvalues
class TestOnionrValues(unittest.TestCase):
def test_default_expire(self):
self.assertEqual(onionrvalues.DEFAULT_EXPIRE, 2592000)
unittest.main()

View File

@ -14,9 +14,6 @@ createdirs.create_dirs()
setup_config() setup_config()
class TestTemplate(unittest.TestCase): class TestTemplate(unittest.TestCase):
'''
Tests both the onionrusers class and the contactmanager (which inherits it)
'''
def test_true(self): def test_true(self):
self.assertTrue(True) self.assertTrue(True)