remove sent mail from sentbox when block is blacklisted

master
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.
Handle maintenence of a blacklist database, for blocks and peers
Handle maintenance of a blacklist database, for blocks and peers
"""
import sqlite3
import os
@ -99,6 +99,9 @@ class OnionrBlackList:
# 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))
event('blacklist_add', data={'data': data, 'hash': hashed})
if len(hashed) > 64:
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__)))
import sentboxdb, mailapi, loadinbox # import after path insert
from onblacklist import on_blacklist_add
flask_blueprint = mailapi.flask_blueprint
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
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
it under the terms of the GNU General Public License as published by
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
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:
def __init__(self):
self.dbLocation = identifyhome.identify_home() + '/sentbox.db'
if not os.path.exists(self.dbLocation):
self.createDB()
return
def connect(self):
self.conn = sqlite3.connect(self.dbLocation)
self.cursor = self.conn.cursor()
@ -37,14 +40,14 @@ class SentBox:
def createDB(self):
conn = sqlite3.connect(self.dbLocation)
cursor = conn.cursor()
cursor.execute('''CREATE TABLE sent(
cursor.execute("""CREATE TABLE sent(
hash id not null,
peer text not null,
message text not null,
subject text not null,
date int not null
);
''')
""")
conn.commit()
conn.close()
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()
class TestTemplate(unittest.TestCase):
'''
Tests both the onionrusers class and the contactmanager (which inherits it)
'''
def test_true(self):
self.assertTrue(True)