From 47ee28f74f17885f334f30a4ba364d999b2c5039 Mon Sep 17 00:00:00 2001 From: Kevin Froman Date: Thu, 25 Apr 2019 00:38:15 -0500 Subject: [PATCH] * Fixed duplicate plugin events --- docs/http-api.md | 8 ++++++++ docs/specs/block-spec.md | 4 ++-- onionr/onionrcommands/onionrstatistics.py | 5 ++++- onionr/onionrevents.py | 1 + onionr/onionrplugins.py | 11 ++++++----- onionr/onionrservices/connectionserver.py | 2 +- onionr/static-data/default-plugins/encrypt/main.py | 1 + onionr/static-data/default-plugins/pms/main.py | 1 - onionr/static-data/index.html | 2 +- 9 files changed, 24 insertions(+), 11 deletions(-) diff --git a/docs/http-api.md b/docs/http-api.md index 2fe1728d..241320ae 100755 --- a/docs/http-api.md +++ b/docs/http-api.md @@ -105,3 +105,11 @@ v0 These are constant endpoints available on direct connection servers. Plugin endpoints for direct connections are not documented here. +* /ping + - Methods: GET + - Returns 200 with 'pong!' + +* /close + - Methods: GET + - Kills the direct connection server, destroying the onion address. + - Returns 200 with 'goodbye' \ No newline at end of file diff --git a/docs/specs/block-spec.md b/docs/specs/block-spec.md index 348cedae..26867e42 100644 --- a/docs/specs/block-spec.md +++ b/docs/specs/block-spec.md @@ -1,4 +1,4 @@ -# Onionr Block Spec v1.0.0 +# Onionr Block Spec v1.1.0 # Block Description @@ -60,4 +60,4 @@ Pow is a field for placing the nonce found to make a block meet a target proof o ## encryptType -encryptType is a field to specify the mode of encryption for a block. The values supported by Onionr are 'asym' and 'sym'. +encryptType is a field to specify the mode of encryption for a block. The values supported by Onionr are 'asym' and 'sym'. \ No newline at end of file diff --git a/onionr/onionrcommands/onionrstatistics.py b/onionr/onionrcommands/onionrstatistics.py index 04264655..8430a524 100644 --- a/onionr/onionrcommands/onionrstatistics.py +++ b/onionr/onionrcommands/onionrstatistics.py @@ -104,7 +104,10 @@ def show_peers(o_inst): if not type(peers) is None: if peers not in ('', 'failure', None): if peers != False: - print(peers) + if peers == 'none': + print('No current outgoing connections.') + else: + print(peers) else: print('Daemon probably not running. Unable to list connected peers.') break \ No newline at end of file diff --git a/onionr/onionrevents.py b/onionr/onionrevents.py index 3301a3ac..c6ebcc40 100755 --- a/onionr/onionrevents.py +++ b/onionr/onionrevents.py @@ -67,6 +67,7 @@ def call(plugin, event_name, data = None, pluginapi = None): return True except Exception as e: + logger.error(str(e)) return False else: return True diff --git a/onionr/onionrplugins.py b/onionr/onionrplugins.py index 1a7c18d8..c334ea09 100755 --- a/onionr/onionrplugins.py +++ b/onionr/onionrplugins.py @@ -17,9 +17,8 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . ''' - -import os, re, importlib, config, logger -import onionrevents as events +import os, re, importlib +import onionrevents as events, config, logger # set data dir dataDir = os.environ.get('ONIONR_HOME', os.environ.get('DATA_DIR', 'data/')) @@ -71,7 +70,7 @@ def enable(name, onionr = None, start_event = True): events.call(get_plugin(name), 'enable', onionr) except ImportError: # Was getting import error on Gitlab CI test "data" # NOTE: If you are experiencing issues with plugins not being enabled, it might be this resulting from an error in the module - # can happen inconsistenly (especially between versions) + # can happen inconsistently (especially between versions) return False else: enabled_plugins.append(name) @@ -170,6 +169,7 @@ def import_module_from_file(full_path_to_module): module_dir, module_file = os.path.split(full_path_to_module) module_name, module_ext = os.path.splitext(module_file) + module_name = module_dir # Module name must be unique otherwise it will get written in other imports # Get module "spec" from filename spec = importlib.util.spec_from_file_location(module_name,full_path_to_module) @@ -187,7 +187,7 @@ def get_plugin(name): if str(name).lower() in _instances: return _instances[str(name).lower()] else: - _instances[str(name).lower()] = import_module_from_file(get_plugins_folder(name, False) + 'main.py') + _instances[str(name).lower()] = import_module_from_file(get_plugins_folder(str(name).lower(), False) + 'main.py') return get_plugin(name) def get_plugins(): @@ -233,6 +233,7 @@ def get_plugins_folder(name = None, absolute = True): path = _pluginsfolder else: # only allow alphanumeric characters + #path = _pluginsfolder + str(name.lower()) path = _pluginsfolder + re.sub('[^0-9a-zA-Z_]+', '', str(name).lower()) if absolute is True: diff --git a/onionr/onionrservices/connectionserver.py b/onionr/onionrservices/connectionserver.py index 27a0b55f..31e429f8 100644 --- a/onionr/onionrservices/connectionserver.py +++ b/onionr/onionrservices/connectionserver.py @@ -51,7 +51,7 @@ class ConnectionServer: def get_ping(): return "pong!" - @service_app.route('/shutdown') + @service_app.route('/close') def shutdown_server(): core_inst.onionrInst.communicatorInst.service_greenlets.remove(http_server) http_server.stop() diff --git a/onionr/static-data/default-plugins/encrypt/main.py b/onionr/static-data/default-plugins/encrypt/main.py index f917d72a..15697ac2 100755 --- a/onionr/static-data/default-plugins/encrypt/main.py +++ b/onionr/static-data/default-plugins/encrypt/main.py @@ -24,6 +24,7 @@ from onionrblockapi import Block import onionrexceptions, onionrusers import locale locale.setlocale(locale.LC_ALL, '') +plugin_name = 'encrypt' class PlainEncryption: def __init__(self, api): diff --git a/onionr/static-data/default-plugins/pms/main.py b/onionr/static-data/default-plugins/pms/main.py index 363c1259..2a4c15a5 100755 --- a/onionr/static-data/default-plugins/pms/main.py +++ b/onionr/static-data/default-plugins/pms/main.py @@ -307,7 +307,6 @@ def on_insertblock(api, data={}): meta = json.loads(data['meta']) 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 diff --git a/onionr/static-data/index.html b/onionr/static-data/index.html index 916bfe9c..d4dd7f75 100755 --- a/onionr/static-data/index.html +++ b/onionr/static-data/index.html @@ -4,4 +4,4 @@

Onionr is a decentralized peer-to-peer data storage system.

-

To learn more about Onionr, see the website at https://Onionr.VoidNet.tech/

+

To learn more about Onionr, see the website at https://Onionr.net/