173 lines
6.5 KiB
Python
173 lines
6.5 KiB
Python
'''
|
|
Onionr - Private P2P Communication
|
|
|
|
This module defines commands for CLI usage
|
|
'''
|
|
'''
|
|
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/>.
|
|
'''
|
|
|
|
import webbrowser, sys
|
|
import logger
|
|
from . import pubkeymanager, onionrstatistics, daemonlaunch, filecommands, plugincommands, keyadders, banblocks, exportblocks
|
|
|
|
def show_help(o_inst, command):
|
|
|
|
helpmenu = o_inst.getHelp()
|
|
|
|
if command is None and len(sys.argv) >= 3:
|
|
for cmd in sys.argv[2:]:
|
|
o_inst.showHelp(cmd)
|
|
elif not command is None:
|
|
if command.lower() in helpmenu:
|
|
logger.info(logger.colors.bold + command + logger.colors.reset + logger.colors.fg.blue + ' : ' + logger.colors.reset + helpmenu[command.lower()], timestamp = False)
|
|
else:
|
|
logger.warn(logger.colors.bold + command + logger.colors.reset + logger.colors.fg.blue + ' : ' + logger.colors.reset + 'No help menu entry was found', timestamp = False)
|
|
else:
|
|
o_inst.version(0)
|
|
for command, helpmessage in helpmenu.items():
|
|
o_inst.showHelp(command)
|
|
|
|
def open_home(o_inst):
|
|
try:
|
|
url = o_inst.onionrUtils.getClientAPIServer()
|
|
except FileNotFoundError:
|
|
logger.error('Onionr seems to not be running (could not get api host)')
|
|
else:
|
|
url = 'http://%s/#%s' % (url, o_inst.onionrCore.config.get('client.webpassword'))
|
|
print('If Onionr does not open automatically, use this URL:', url)
|
|
webbrowser.open_new_tab(url)
|
|
|
|
def get_commands(onionr_inst):
|
|
return {'': onionr_inst.showHelpSuggestion,
|
|
'help': onionr_inst.showHelp,
|
|
'version': onionr_inst.version,
|
|
'header': onionr_inst.cmdHeader,
|
|
'config': onionr_inst.configure,
|
|
'start': onionr_inst.start,
|
|
'stop': onionr_inst.killDaemon,
|
|
'status': onionr_inst.showStats,
|
|
'statistics': onionr_inst.showStats,
|
|
'stats': onionr_inst.showStats,
|
|
'details' : onionr_inst.showDetails,
|
|
'detail' : onionr_inst.showDetails,
|
|
'show-details' : onionr_inst.showDetails,
|
|
'show-detail' : onionr_inst.showDetails,
|
|
'showdetails' : onionr_inst.showDetails,
|
|
'showdetail' : onionr_inst.showDetails,
|
|
'get-details' : onionr_inst.showDetails,
|
|
'get-detail' : onionr_inst.showDetails,
|
|
'getdetails' : onionr_inst.showDetails,
|
|
'getdetail' : onionr_inst.showDetails,
|
|
|
|
'enable-plugin': onionr_inst.enablePlugin,
|
|
'enplugin': onionr_inst.enablePlugin,
|
|
'enableplugin': onionr_inst.enablePlugin,
|
|
'enmod': onionr_inst.enablePlugin,
|
|
'disable-plugin': onionr_inst.disablePlugin,
|
|
'displugin': onionr_inst.disablePlugin,
|
|
'disableplugin': onionr_inst.disablePlugin,
|
|
'dismod': onionr_inst.disablePlugin,
|
|
'reload-plugin': onionr_inst.reloadPlugin,
|
|
'reloadplugin': onionr_inst.reloadPlugin,
|
|
'reload-plugins': onionr_inst.reloadPlugin,
|
|
'reloadplugins': onionr_inst.reloadPlugin,
|
|
'create-plugin': onionr_inst.createPlugin,
|
|
'createplugin': onionr_inst.createPlugin,
|
|
'plugin-create': onionr_inst.createPlugin,
|
|
|
|
'listkeys': onionr_inst.listKeys,
|
|
'list-keys': onionr_inst.listKeys,
|
|
|
|
'addpeer': onionr_inst.addPeer,
|
|
'add-peer': onionr_inst.addPeer,
|
|
'add-address': onionr_inst.addAddress,
|
|
'add-addr': onionr_inst.addAddress,
|
|
'addaddr': onionr_inst.addAddress,
|
|
'addaddress': onionr_inst.addAddress,
|
|
'list-peers': onionr_inst.listPeers,
|
|
|
|
'blacklist-block': onionr_inst.banBlock,
|
|
|
|
'add-file': onionr_inst.addFile,
|
|
'addfile': onionr_inst.addFile,
|
|
'addhtml': onionr_inst.addWebpage,
|
|
'add-html': onionr_inst.addWebpage,
|
|
'add-site': onionr_inst.addWebpage,
|
|
'addsite': onionr_inst.addWebpage,
|
|
|
|
'openhome': onionr_inst.openHome,
|
|
'open-home': onionr_inst.openHome,
|
|
|
|
'export-block': onionr_inst.exportBlock,
|
|
'exportblock': onionr_inst.exportBlock,
|
|
|
|
'get-file': onionr_inst.getFile,
|
|
'getfile': onionr_inst.getFile,
|
|
|
|
'listconn': onionr_inst.listConn,
|
|
'list-conn': onionr_inst.listConn,
|
|
|
|
'import-blocks': onionr_inst.onionrUtils.importNewBlocks,
|
|
'importblocks': onionr_inst.onionrUtils.importNewBlocks,
|
|
|
|
'introduce': onionr_inst.onionrCore.introduceNode,
|
|
'pex': onionr_inst.doPEX,
|
|
|
|
'getpassword': onionr_inst.printWebPassword,
|
|
'get-password': onionr_inst.printWebPassword,
|
|
'getpwd': onionr_inst.printWebPassword,
|
|
'get-pwd': onionr_inst.printWebPassword,
|
|
'getpass': onionr_inst.printWebPassword,
|
|
'get-pass': onionr_inst.printWebPassword,
|
|
'getpasswd': onionr_inst.printWebPassword,
|
|
'get-passwd': onionr_inst.printWebPassword,
|
|
|
|
'friend': onionr_inst.friendCmd,
|
|
'addid': onionr_inst.addID,
|
|
'add-id': onionr_inst.addID,
|
|
'change-id': onionr_inst.changeID
|
|
}
|
|
|
|
cmd_help = {
|
|
'help': 'Displays this Onionr help menu',
|
|
'version': 'Displays the Onionr version',
|
|
'config': 'Configures something and adds it to the file',
|
|
|
|
'start': 'Starts the Onionr daemon',
|
|
'stop': 'Stops the Onionr daemon',
|
|
|
|
'stats': 'Displays node statistics',
|
|
'details': 'Displays the web password, public key, and human readable public key',
|
|
|
|
'enable-plugin': 'Enables and starts a plugin',
|
|
'disable-plugin': 'Disables and stops a plugin',
|
|
'reload-plugin': 'Reloads a plugin',
|
|
'create-plugin': 'Creates directory structure for a plugin',
|
|
|
|
'add-peer': 'Adds a peer to database',
|
|
'list-peers': 'Displays a list of peers',
|
|
'add-file': 'Create an Onionr block from a file',
|
|
'get-file': 'Get a file from Onionr blocks',
|
|
'import-blocks': 'import blocks from the disk (Onionr is transport-agnostic!)',
|
|
'listconn': 'list connected peers',
|
|
'pex': 'exchange addresses with peers (done automatically)',
|
|
'blacklist-block': 'deletes a block by hash and permanently removes it from your node',
|
|
'introduce': 'Introduce your node to the public Onionr network',
|
|
'friend': '[add|remove] [public key/id]',
|
|
'add-id': 'Generate a new ID (key pair)',
|
|
'change-id': 'Change active ID',
|
|
'open-home': 'Open your node\'s home/info screen'
|
|
}
|