Private Decentralized Communication Network
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

172 lines
6.5 KiB

'''
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'
}