+ added notifications for mail messages
+ added authors.md
This commit is contained in:
parent
41368a2747
commit
ef01d3b577
12
AUTHORS.MD
Normal file
12
AUTHORS.MD
Normal file
@ -0,0 +1,12 @@
|
||||
# Incomplete List of Contributors
|
||||
|
||||
Onionr is created by a team of hard working volunteers.
|
||||
|
||||
In no order of importance, these people make Onionr happen:
|
||||
|
||||
* [Beardog](https://www.chaoswebs.net/) - Project owner and core developer
|
||||
* [InvisaMage](https://invisamage.com/) - Web UI Bulma design
|
||||
* [Arinerron](https://arinerron.com/) - Logger and config modules, testing and other contributions
|
||||
* [Anhar Ismail](https://github.com/anharismail) - Created Onionr's logo
|
||||
|
||||
+ Other contributors and testers
|
30
onionr/notifier/__init__.py
Normal file
30
onionr/notifier/__init__.py
Normal file
@ -0,0 +1,30 @@
|
||||
'''
|
||||
Onionr - Private P2P Communication
|
||||
|
||||
Desktop notification wrapper
|
||||
'''
|
||||
'''
|
||||
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/>.
|
||||
'''
|
||||
try:
|
||||
import simplenotifications as simplenotify
|
||||
except ImportError:
|
||||
notifications_enabled = False
|
||||
else:
|
||||
notifications_enabled = True
|
||||
|
||||
def notify(title: str = "Onionr", message: str = ""):
|
||||
"""cross platform method to show a notification"""
|
||||
if not notifications_enabled: return
|
||||
simplenotify.notify(title, message)
|
@ -43,7 +43,7 @@ def show_stats():
|
||||
|
||||
# count stats
|
||||
'div2' : True,
|
||||
'Known Peers' : str(max(len(keydb.listkeys.list_peers()) - 1, 0)),
|
||||
'Known Peers (nodes)' : str(max(len(keydb.listkeys.list_adders()) - 1, 0)),
|
||||
'Enabled Plugins' : str(len(config.get('plugins.enabled', list()))) + ' / ' + str(len(os.listdir(home + 'plugins/'))),
|
||||
'Stored Blocks' : str(totalBlocks),
|
||||
'Percent Blocks Signed' : str(round(100 * signedBlocks / max(totalBlocks, 1), 2)) + '%'
|
||||
@ -95,23 +95,3 @@ def show_details():
|
||||
|
||||
for detail in details:
|
||||
logger.info('%s%s: \n%s%s\n' % (logger.colors.fg.lightgreen, detail, logger.colors.fg.green, details[detail]), terminal = True)
|
||||
|
||||
def show_peers(o_inst):
|
||||
randID = str(uuid.uuid4())
|
||||
daemonqueue.daemon_queue_add('connectedPeers', responseID=randID)
|
||||
while True:
|
||||
try:
|
||||
time.sleep(3)
|
||||
peers = daemonqueue.daemon_queue_get_response(randID)
|
||||
except KeyboardInterrupt:
|
||||
break
|
||||
if not type(peers) is None:
|
||||
if peers not in ('', 'failure', None):
|
||||
if peers != False:
|
||||
if peers == 'none':
|
||||
print('No current outgoing connections.')
|
||||
else:
|
||||
logger.info('Peers: %s' % peers)
|
||||
else:
|
||||
logger.warn('Daemon probably not running. Unable to list connected peers.')
|
||||
break
|
||||
|
@ -22,9 +22,10 @@
|
||||
import logger, config, threading, time, datetime
|
||||
from onionrblockapi import Block
|
||||
import onionrexceptions
|
||||
from onionrusers import onionrusers
|
||||
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, '')
|
||||
@ -52,13 +53,20 @@ def on_insertblock(api, data={}):
|
||||
sentboxTools = sentboxdb.SentBox()
|
||||
sentboxTools.addToSent(data['hash'], data['peer'], data['content'], meta['subject'])
|
||||
|
||||
def on_init(api, data = None):
|
||||
'''
|
||||
This event is called after Onionr is initialized, but before the command
|
||||
inputted is executed. Could be called when daemon is starting or when
|
||||
just the client is running.
|
||||
'''
|
||||
|
||||
pluginapi = api
|
||||
|
||||
def on_processblocks(api, data=None):
|
||||
if data['type'] != 'pm':
|
||||
return
|
||||
data['block'].decrypt()
|
||||
metadata = data['block'].bmetadata # Get the block metadata
|
||||
|
||||
signer = bytesconverter.bytes_to_str(data['block'].signer)
|
||||
user = contactmanager.ContactManager(signer, saveUser=False)
|
||||
name = user.get_info("name")
|
||||
if name != 'anonymous':
|
||||
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']))
|
||||
|
@ -12,6 +12,10 @@
|
||||
<link rel="stylesheet" href="/shared/main/bulma.min.css">
|
||||
<link rel="stylesheet" href="/shared/main/styles-new.css">
|
||||
<link rel="stylesheet" href="/chat/css/convos.css">
|
||||
<script defer src='/shared/navbar.js'></script>
|
||||
<script defer src='/shared/misc.js'></script>
|
||||
<script defer src='/chat/js/message-feed.js'></script>
|
||||
<script defer src='/chat/js/main.js'></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
@ -56,7 +60,6 @@
|
||||
</div>
|
||||
<div class="column is-7">
|
||||
<div class="field">
|
||||
<label class="label">Open Site</label>
|
||||
<div class="field has-addons">
|
||||
<p class="control">
|
||||
<a class="button is-static">Identity</a>
|
||||
@ -73,21 +76,16 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<br>
|
||||
|
||||
<div class="columns chatContent">
|
||||
<div class="column has-background-dark has-text-light is-one-fifths content convoListContainer">
|
||||
<div class="column has-background-grey-dark has-text-light is-one-fifths content convoListContainer">
|
||||
<ul class='conversationList'></ul>
|
||||
</div>
|
||||
<div class="column chatBox has-text-dark has-background-dark is-four-fifths">yeet</div>
|
||||
<div class="column chatBox has-text-light has-background-dark is-four-fifths">yeet</div>
|
||||
</div>
|
||||
|
||||
<script src='/shared/navbar.js'></script>
|
||||
<script src='/shared/misc.js'></script>
|
||||
<script src='/chat/js/main.js'></script>
|
||||
</body>
|
||||
|
||||
</html>
|
@ -1,3 +1,21 @@
|
||||
/*
|
||||
Onionr - Private P2P Communication
|
||||
|
||||
Main Onionr chat UI script
|
||||
|
||||
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/>
|
||||
*/
|
||||
friendList = {}
|
||||
convoListElement = document.getElementsByClassName('conversationList')[0]
|
||||
|
||||
|
21
onionr/static-data/www/chat/js/message-feed.js
Normal file
21
onionr/static-data/www/chat/js/message-feed.js
Normal file
@ -0,0 +1,21 @@
|
||||
/*
|
||||
Onionr - Private P2P Communication
|
||||
|
||||
This file manages chat messages in the chat UI
|
||||
|
||||
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/>
|
||||
*/
|
||||
let MessageCache = class {
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user