Module src.data2871027835.plugins.pms.main
Onionr - Private P2P Communication
This default plugin handles private messages in an email like fashion
Expand source code
'''
    Onionr - Private P2P Communication
    This default plugin handles private messages in an email like fashion
'''
'''
    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
    (at your option) any later version.
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <https://www.gnu.org/licenses/>.
'''
# Imports some useful libraries
import logger, config, threading, time, datetime
import onionrexceptions
from onionrusers import onionrusers, contactmanager
from utils import reconstructhash
from onionrutils import stringvalidators, escapeansi, bytesconverter
import notifier
import locale, sys, os, json
locale.setlocale(locale.LC_ALL, '')
plugin_name = 'pms'
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']
def add_deleted(keyStore, b_hash):
    existing = keyStore.get('deleted_mail')
    bHash = reconstructhash.reconstruct_hash(b_hash)
    if existing is None:
        existing = []
    else:
        if bHash in existing:
            return
    keyStore.put('deleted_mail', existing.append(b_hash))
def on_insertblock(api, data={}):
    meta = json.loads(data['meta'])
    if meta['type'] == 'pm':
        sentboxTools = sentboxdb.SentBox()
        sentboxTools.addToSent(data['hash'], data['peer'], data['content'], meta['subject'])
def on_processblocks(api, data=None):
    if data['type'] != 'pm':
        return
    data['block'].decrypt()
    metadata = data['block'].bmetadata
    signer = bytesconverter.bytes_to_str(data['block'].signer)
    user = contactmanager.ContactManager(signer, saveUser=False)
    name = user.get_info("name")
    if name != 'anonymous' and name != None:
        signer = name.title()
    else:
        signer = signer[:5]
    if data['block'].decrypted:
        notifier.notify(title="Onionr Mail - New Message", message="From: %s\n\nSubject: %s" % (signer, metadata['subject']))
Functions
def add_deleted(keyStore, b_hash)- 
Expand source code
def add_deleted(keyStore, b_hash): existing = keyStore.get('deleted_mail') bHash = reconstructhash.reconstruct_hash(b_hash) if existing is None: existing = [] else: if bHash in existing: return keyStore.put('deleted_mail', existing.append(b_hash)) def on_insertblock(api, data={})- 
Expand source code
def on_insertblock(api, data={}): meta = json.loads(data['meta']) if meta['type'] == 'pm': sentboxTools = sentboxdb.SentBox() sentboxTools.addToSent(data['hash'], data['peer'], data['content'], meta['subject']) def on_processblocks(api, data=None)- 
Expand source code
def on_processblocks(api, data=None): if data['type'] != 'pm': return data['block'].decrypt() metadata = data['block'].bmetadata signer = bytesconverter.bytes_to_str(data['block'].signer) user = contactmanager.ContactManager(signer, saveUser=False) name = user.get_info("name") if name != 'anonymous' and name != None: signer = name.title() else: signer = signer[:5] if data['block'].decrypted: notifier.notify(title="Onionr Mail - New Message", message="From: %s\n\nSubject: %s" % (signer, metadata['subject']))