made parser flake8 compliant
parent
4b6fdbdd0a
commit
6d123b93fc
|
@ -1,9 +1,17 @@
|
||||||
'''
|
"""
|
||||||
Onionr - Private P2P Communication
|
Onionr - Private P2P Communication
|
||||||
|
|
||||||
This module loads in the Onionr arguments and their help messages
|
This module loads in the Onionr arguments and their help messages
|
||||||
'''
|
"""
|
||||||
'''
|
import sys
|
||||||
|
import os
|
||||||
|
|
||||||
|
import logger
|
||||||
|
import onionrexceptions
|
||||||
|
import onionrplugins
|
||||||
|
from onionrplugins import onionrpluginapi
|
||||||
|
from . import arguments, recommend
|
||||||
|
"""
|
||||||
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,19 +24,14 @@
|
||||||
|
|
||||||
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 sys
|
|
||||||
import os
|
|
||||||
|
|
||||||
from etc import onionrvalues
|
|
||||||
import logger, onionrexceptions
|
|
||||||
import onionrplugins
|
|
||||||
from onionrplugins import onionrpluginapi
|
|
||||||
from . import arguments, recommend
|
|
||||||
|
|
||||||
plugin_command = lambda cmd: 'on_%s_cmd' % (cmd,)
|
def plugin_command(cmd):
|
||||||
|
return f'on_{cmd}_cmd'
|
||||||
|
|
||||||
def register_plugin_commands(cmd)->bool:
|
|
||||||
|
def register_plugin_commands(cmd) -> bool:
|
||||||
plugin_cmd = plugin_command(cmd)
|
plugin_cmd = plugin_command(cmd)
|
||||||
for pl in onionrplugins.get_enabled_plugins():
|
for pl in onionrplugins.get_enabled_plugins():
|
||||||
pl = onionrplugins.get_plugin(pl)
|
pl = onionrplugins.get_plugin(pl)
|
||||||
|
@ -37,10 +40,17 @@ def register_plugin_commands(cmd)->bool:
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
def _show_term(msg: str):
|
||||||
|
logger.info(msg, terminal=True)
|
||||||
|
|
||||||
|
|
||||||
def register():
|
def register():
|
||||||
"""Registers commands and handles help command processing"""
|
"""Registers commands and handles help command processing"""
|
||||||
def get_help_message(cmd: str, default: str = 'No help available for this command'):
|
def get_help_message(cmd: str,
|
||||||
|
default: str = 'No help available for this command'):
|
||||||
"""Return help message for a given command, supports plugin commands"""
|
"""Return help message for a given command, supports plugin commands"""
|
||||||
|
|
||||||
pl_cmd = plugin_command(cmd)
|
pl_cmd = plugin_command(cmd)
|
||||||
for pl in onionrplugins.get_enabled_plugins():
|
for pl in onionrplugins.get_enabled_plugins():
|
||||||
pl = onionrplugins.get_plugin(pl)
|
pl = onionrplugins.get_plugin(pl)
|
||||||
|
@ -56,7 +66,7 @@ def register():
|
||||||
return arguments.get_help(cmd)
|
return arguments.get_help(cmd)
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
pass
|
pass
|
||||||
return default # Return the help string
|
return default # Return the help string
|
||||||
|
|
||||||
PROGRAM_NAME = "onionr"
|
PROGRAM_NAME = "onionr"
|
||||||
|
|
||||||
|
@ -72,7 +82,8 @@ def register():
|
||||||
|
|
||||||
try:
|
try:
|
||||||
try:
|
try:
|
||||||
if not cmd in ('start', 'details', 'show-details') : os.chdir(os.environ['ORIG_ONIONR_RUN_DIR'])
|
if cmd not in ('start', 'details', 'show-details'):
|
||||||
|
os.chdir(os.environ['ORIG_ONIONR_RUN_DIR'])
|
||||||
except KeyError: pass
|
except KeyError: pass
|
||||||
try:
|
try:
|
||||||
arguments.get_func(cmd)()
|
arguments.get_func(cmd)()
|
||||||
|
@ -87,23 +98,29 @@ def register():
|
||||||
sys.argv[2]
|
sys.argv[2]
|
||||||
except IndexError:
|
except IndexError:
|
||||||
for i in arguments.get_arguments():
|
for i in arguments.get_arguments():
|
||||||
logger.info('%s <%s>: %s' % (PROGRAM_NAME, '/'.join(i), get_help_message(i[0])), terminal=True)
|
_show_term('%s <%s>: %s' % (PROGRAM_NAME, '/'.join(i),
|
||||||
|
get_help_message(i[0])))
|
||||||
for pl in onionrplugins.get_enabled_plugins():
|
for pl in onionrplugins.get_enabled_plugins():
|
||||||
pl = onionrplugins.get_plugin(pl)
|
pl = onionrplugins.get_plugin(pl)
|
||||||
if hasattr(pl, 'ONIONR_COMMANDS'):
|
if hasattr(pl, 'ONIONR_COMMANDS'):
|
||||||
print('')
|
print('')
|
||||||
try:
|
try:
|
||||||
logger.info('%s commands:' % (pl.plugin_name,), terminal=True)
|
_show_term('%s commands:' % (pl.plugin_name,))
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
logger.info('%s commands:' % (pl.__name__,), terminal=True)
|
_show_term('%s commands:' % (pl.__name__,))
|
||||||
for plugin_cmd in pl.ONIONR_COMMANDS:
|
for plugin_cmd in pl.ONIONR_COMMANDS:
|
||||||
logger.info('%s %s: %s' % (PROGRAM_NAME, plugin_cmd, get_help_message(plugin_cmd)), terminal=True)
|
_show_term('%s %s: %s' %
|
||||||
|
(PROGRAM_NAME,
|
||||||
|
plugin_cmd,
|
||||||
|
get_help_message(plugin_cmd)),)
|
||||||
print('')
|
print('')
|
||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
logger.info('%s %s: %s' % (PROGRAM_NAME, sys.argv[2], get_help_message(sys.argv[2])), terminal=True)
|
_show_term('%s %s: %s' % (PROGRAM_NAME,
|
||||||
|
sys.argv[2],
|
||||||
|
get_help_message(sys.argv[2])))
|
||||||
except KeyError:
|
except KeyError:
|
||||||
logger.error('%s: command does not exist.' % [sys.argv[2]], terminal=True)
|
logger.error('%s: command does not exist.' % [sys.argv[2]],
|
||||||
|
terminal=True)
|
||||||
sys.exit(3)
|
sys.exit(3)
|
||||||
return
|
return
|
||||||
|
|
|
@ -1,9 +1,27 @@
|
||||||
'''
|
"""
|
||||||
Onionr - Private P2P Communication
|
Onionr - Private P2P Communication
|
||||||
|
|
||||||
Sets CLI arguments for Onionr
|
Sets CLI arguments for Onionr
|
||||||
'''
|
"""
|
||||||
'''
|
from typing import Callable
|
||||||
|
|
||||||
|
from .. import onionrstatistics, version, daemonlaunch, keyadders
|
||||||
|
from .. import openwebinterface
|
||||||
|
from .. import banblocks # Command to blacklist a block by its hash
|
||||||
|
from .. import filecommands # commands to share files with onionr
|
||||||
|
from .. import exportblocks # commands to export blocks
|
||||||
|
from .. import pubkeymanager # commands to add or change id
|
||||||
|
from .. import resettor # cmds to reset the tor data folder/transport keypair
|
||||||
|
from .. import resetplugins # command to reinstall default plugins
|
||||||
|
from .. import softreset # command to delete onionr blocks
|
||||||
|
from .. import restartonionr # command to restart Onionr
|
||||||
|
from .. import runtimetestcmd
|
||||||
|
from .. import motdcreator
|
||||||
|
from .. import sitecreator
|
||||||
|
|
||||||
|
import onionrexceptions
|
||||||
|
from onionrutils import importnewblocks # func to import new blocks
|
||||||
|
"""
|
||||||
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,30 +34,15 @@
|
||||||
|
|
||||||
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/>.
|
||||||
'''
|
"""
|
||||||
from typing import Callable
|
|
||||||
|
|
||||||
from .. import onionrstatistics, version, daemonlaunch, keyadders, openwebinterface
|
|
||||||
from .. import banblocks # Command to blacklist a block by its hash
|
|
||||||
from .. import filecommands # commands to share files with onionr
|
|
||||||
from .. import exportblocks # commands to export blocks
|
|
||||||
from .. import pubkeymanager # commands to add or change id
|
|
||||||
from .. import resettor # commands to reset the tor data directory or transport keypair
|
|
||||||
from .. import resetplugins # command to reinstall default plugins
|
|
||||||
from .. import softreset # command to delete onionr blocks
|
|
||||||
from .. import restartonionr # command to restart Onionr
|
|
||||||
from .. import runtimetestcmd
|
|
||||||
from .. import motdcreator
|
|
||||||
from .. import sitecreator
|
|
||||||
|
|
||||||
import onionrexceptions
|
def get_arguments() -> dict:
|
||||||
from onionrutils import importnewblocks # func to import new blocks
|
"""This is a function because we need to be able
|
||||||
from onionrplugins import onionrevents as events
|
to dynamically modify them with plugins"""
|
||||||
|
|
||||||
def get_arguments()->dict:
|
|
||||||
"""This is a function because we need to be able to dynamically modify them with plugins"""
|
|
||||||
args = {
|
args = {
|
||||||
('blacklist', 'blacklist-block', 'remove-block', 'removeblock', 'banblock', 'ban-block'): banblocks.ban_block,
|
('blacklist', 'blacklist-block', 'remove-block',
|
||||||
|
'removeblock', 'banblock', 'ban-block'): banblocks.ban_block,
|
||||||
('details', 'info'): onionrstatistics.show_details,
|
('details', 'info'): onionrstatistics.show_details,
|
||||||
('stats', 'statistics'): onionrstatistics.show_stats,
|
('stats', 'statistics'): onionrstatistics.show_stats,
|
||||||
('version',): version.version,
|
('version',): version.version,
|
||||||
|
@ -47,14 +50,17 @@ def get_arguments()->dict:
|
||||||
('stop', 'kill'): daemonlaunch.kill_daemon,
|
('stop', 'kill'): daemonlaunch.kill_daemon,
|
||||||
('restart',): restartonionr.restart,
|
('restart',): restartonionr.restart,
|
||||||
('add-address', 'addaddress', 'addadder'): keyadders.add_address,
|
('add-address', 'addaddress', 'addadder'): keyadders.add_address,
|
||||||
('openhome', 'gui', 'openweb', 'open-home', 'open-web'): openwebinterface.open_home,
|
('openhome', 'gui', 'openweb',
|
||||||
|
'open-home', 'open-web'): openwebinterface.open_home,
|
||||||
('get-url', 'url', 'get-web'): openwebinterface.get_url,
|
('get-url', 'url', 'get-web'): openwebinterface.get_url,
|
||||||
('addhtml', 'add-html'): filecommands.add_html,
|
('addhtml', 'add-html'): filecommands.add_html,
|
||||||
('addsite', 'add-site', 'update-site', 'updatesite'): sitecreator.create_multipage_site,
|
('addsite', 'add-site',
|
||||||
|
'update-site', 'updatesite'): sitecreator.create_multipage_site,
|
||||||
('addfile', 'add-file'): filecommands.add_file,
|
('addfile', 'add-file'): filecommands.add_file,
|
||||||
('get-file', 'getfile'): filecommands.get_file,
|
('get-file', 'getfile'): filecommands.get_file,
|
||||||
('export-block', 'exportblock'): exportblocks.export_block,
|
('export-block', 'exportblock'): exportblocks.export_block,
|
||||||
('importblocks', 'import-blocks', 'import-block'): importnewblocks.import_new_blocks,
|
('importblocks',
|
||||||
|
'import-blocks', 'import-block'): importnewblocks.import_new_blocks,
|
||||||
('addid', 'add-id'): pubkeymanager.add_ID,
|
('addid', 'add-id'): pubkeymanager.add_ID,
|
||||||
('changeid', 'change-id'): pubkeymanager.change_ID,
|
('changeid', 'change-id'): pubkeymanager.change_ID,
|
||||||
('add-vanity', 'addvanity'): pubkeymanager.add_vanity,
|
('add-vanity', 'addvanity'): pubkeymanager.add_vanity,
|
||||||
|
@ -68,21 +74,28 @@ def get_arguments()->dict:
|
||||||
}
|
}
|
||||||
return args
|
return args
|
||||||
|
|
||||||
|
|
||||||
def get_help(arg: str) -> str:
|
def get_help(arg: str) -> str:
|
||||||
"""Returns the help info string from a given command"""
|
"""Returns the help info string from a given command"""
|
||||||
arguments = get_arguments()
|
arguments = get_arguments()
|
||||||
# Iterate the command alias tuples
|
# Iterate the command alias tuples
|
||||||
for argument in arguments:
|
for argument in arguments:
|
||||||
# Return the help message if its found in a command alias tuple
|
# Return the help message if its found in a command alias tuple
|
||||||
if arg in argument: return arguments[argument].onionr_help
|
if arg in argument:
|
||||||
|
return arguments[argument].onionr_help
|
||||||
raise KeyError
|
raise KeyError
|
||||||
|
|
||||||
|
|
||||||
def get_func(argument: str) -> Callable:
|
def get_func(argument: str) -> Callable:
|
||||||
"""Returns the function for a given command argument"""
|
"""Returns the function for a given command argument"""
|
||||||
argument = argument.lower()
|
argument = argument.lower()
|
||||||
args = get_arguments()
|
args = get_arguments()
|
||||||
|
|
||||||
for arg in args.keys(): # Iterate command alias sets
|
for arg in args.keys(): # Iterate command alias sets
|
||||||
if argument in arg: # If our argument is in the current alias set, return the command function
|
"""
|
||||||
|
If our argument is in the current alias set,
|
||||||
|
return the command function
|
||||||
|
"""
|
||||||
|
if argument in arg:
|
||||||
return args[arg]
|
return args[arg]
|
||||||
raise onionrexceptions.NotFound
|
raise onionrexceptions.NotFound
|
||||||
|
|
|
@ -3,6 +3,7 @@ from difflib import SequenceMatcher
|
||||||
import logger
|
import logger
|
||||||
from . import arguments
|
from . import arguments
|
||||||
|
|
||||||
|
|
||||||
def recommend(print_default: bool = True):
|
def recommend(print_default: bool = True):
|
||||||
tried = sys.argv[1]
|
tried = sys.argv[1]
|
||||||
args = arguments.get_arguments()
|
args = arguments.get_arguments()
|
||||||
|
@ -10,6 +11,9 @@ def recommend(print_default: bool = True):
|
||||||
for key in args.keys():
|
for key in args.keys():
|
||||||
for word in key:
|
for word in key:
|
||||||
if SequenceMatcher(None, tried, word).ratio() >= 0.75:
|
if SequenceMatcher(None, tried, word).ratio() >= 0.75:
|
||||||
logger.warn('%s "%s", did you mean "%s"?' % (print_message, tried, word), terminal=True)
|
logger.warn(f'{print_message} "{tried}", '
|
||||||
|
+ 'did you mean "{word}"?',
|
||||||
|
terminal=True)
|
||||||
return
|
return
|
||||||
if print_default: logger.error('%s "%s"' % (print_message, tried), terminal=True)
|
if print_default: logger.error('%s "%s"' %
|
||||||
|
(print_message, tried), terminal=True)
|
||||||
|
|
Loading…
Reference in New Issue