Add help menu, refactor code
This commit is contained in:
parent
005273b52c
commit
8acef01b68
@ -78,60 +78,67 @@ _type = OUTPUT_TO_CONSOLE | USE_ANSI # the default settings for logging
|
||||
_level = LEVEL_DEBUG # the lowest level to log
|
||||
_outputfile = './output.log' # the file to log to
|
||||
|
||||
'''
|
||||
Set the settings for the logger using bitwise operators
|
||||
'''
|
||||
def set_settings(type):
|
||||
'''
|
||||
Set the settings for the logger using bitwise operators
|
||||
'''
|
||||
|
||||
global _type
|
||||
_type = type
|
||||
|
||||
'''
|
||||
Get settings from the logger
|
||||
'''
|
||||
def get_settings():
|
||||
'''
|
||||
Get settings from the logger
|
||||
'''
|
||||
|
||||
return _type
|
||||
|
||||
'''
|
||||
Set the lowest log level to output
|
||||
'''
|
||||
def set_level(level):
|
||||
'''
|
||||
Set the lowest log level to output
|
||||
'''
|
||||
|
||||
global _level
|
||||
_level = level
|
||||
|
||||
'''
|
||||
Get the lowest log level currently being outputted
|
||||
'''
|
||||
def get_level():
|
||||
'''
|
||||
Get the lowest log level currently being outputted
|
||||
'''
|
||||
|
||||
return _level
|
||||
|
||||
'''
|
||||
Outputs raw data to console without formatting
|
||||
'''
|
||||
def raw(data):
|
||||
'''
|
||||
Outputs raw data to console without formatting
|
||||
'''
|
||||
|
||||
if get_settings() & OUTPUT_TO_CONSOLE:
|
||||
print(data)
|
||||
if get_settings() & OUTPUT_TO_FILE:
|
||||
with open(_outputfile, "a+") as f:
|
||||
f.write(colors.filter(data) + '\n')
|
||||
|
||||
'''
|
||||
def log(prefix, data, color = ''):
|
||||
'''
|
||||
Logs the data
|
||||
prefix : The prefix to the output
|
||||
data : The actual data to output
|
||||
color : The color to output before the data
|
||||
'''
|
||||
def log(prefix, data, color = ''):
|
||||
'''
|
||||
|
||||
output = colors.reset + str(color) + '[' + colors.bold + str(prefix) + colors.reset + str(color) + '] ' + str(data) + colors.reset
|
||||
if not get_settings() & USE_ANSI:
|
||||
output = colors.filter(output)
|
||||
|
||||
raw(output)
|
||||
|
||||
'''
|
||||
def readline(message = ''):
|
||||
'''
|
||||
Takes in input from the console, not stored in logs
|
||||
message: The message to display before taking input
|
||||
'''
|
||||
def readline(message = 'Enter input: '):
|
||||
'''
|
||||
|
||||
color = colors.fg.green + colors.bold
|
||||
output = colors.reset + str(color) + '... ' + colors.reset + str(message) + colors.reset
|
||||
|
||||
@ -142,12 +149,13 @@ def readline(message = 'Enter input: '):
|
||||
|
||||
return input()
|
||||
|
||||
'''
|
||||
def confirm(default = 'y', message = 'Are you sure %s? '):
|
||||
'''
|
||||
Displays an "Are you sure" message, returns True for Y and False for N
|
||||
message: The confirmation message, use %s for (y/n)
|
||||
default: which to prefer-- y or n
|
||||
'''
|
||||
def confirm(default = 'y', message = 'Are you sure %s? '):
|
||||
'''
|
||||
|
||||
color = colors.fg.green + colors.bold
|
||||
|
||||
default = default.lower()
|
||||
|
@ -133,7 +133,24 @@ class Onionr:
|
||||
'add-peer': self.addPeer
|
||||
}
|
||||
|
||||
def getHelp(self):
|
||||
return {
|
||||
'help': 'Displays this Onionr help menu',
|
||||
'version': 'Displays the Onionr version',
|
||||
'start': 'Starts the Onionr daemon',
|
||||
'stop': 'Stops the Onionr daemon',
|
||||
'stats': 'Displays node statistics',
|
||||
'list-peers': 'Displays a list of peers (?)',
|
||||
'add-peer': 'Adds a peer (?)',
|
||||
'add-msg': 'Broadcasts a message to the Onionr network',
|
||||
'pm': 'Adds a private message (?)',
|
||||
'gui': 'Opens a graphical interface for Onionr'
|
||||
}
|
||||
|
||||
def execute(self, argument):
|
||||
'''
|
||||
Executes a command
|
||||
'''
|
||||
argument = argument[argument.startswith('--') and len('--'):] # remove -- if it starts with it
|
||||
|
||||
# define commands
|
||||
@ -146,12 +163,21 @@ class Onionr:
|
||||
THIS SECTION DEFINES THE COMMANDS
|
||||
'''
|
||||
|
||||
def version(self):
|
||||
logger.info('Onionr ' + ONIONR_VERSION + ' (' + platform.machine() + ') : API v' + API_VERSION)
|
||||
def version(self, verbosity=5):
|
||||
'''
|
||||
Displays the Onionr version
|
||||
'''
|
||||
logger.info('Onionr ' + ONIONR_VERSION + ' (' + platform.machine() + ') - API v' + API_VERSION)
|
||||
if verbosity >= 1:
|
||||
logger.info('Anonymous P2P Platform - GPLv3 - onionr.voidnet.tech')
|
||||
if verbosity >= 2:
|
||||
logger.info('Running on ' + platform.platform() + ' ' + platform.release())
|
||||
|
||||
def sendEncrypt(self):
|
||||
'''Create a private message and send it'''
|
||||
'''
|
||||
Create a private message and send it
|
||||
'''
|
||||
|
||||
while True:
|
||||
peer = logger.readline('Peer to send to: ')
|
||||
if self.onionrUtils.validateID(peer):
|
||||
@ -164,14 +190,26 @@ class Onionr:
|
||||
|
||||
|
||||
def openGUI(self):
|
||||
'''
|
||||
Opens a graphical interface for Onionr
|
||||
'''
|
||||
|
||||
gui.OnionrGUI(self.onionrCore)
|
||||
|
||||
def listPeers(self):
|
||||
'''
|
||||
Displays a list of peers (?)
|
||||
'''
|
||||
|
||||
logger.info('Peer list:\n')
|
||||
for i in self.onionrCore.listPeers():
|
||||
logger.info(i)
|
||||
|
||||
def addPeer(self):
|
||||
'''
|
||||
Adds a peer (?)
|
||||
'''
|
||||
|
||||
try:
|
||||
newPeer = sys.argv[2]
|
||||
except:
|
||||
@ -181,21 +219,38 @@ class Onionr:
|
||||
self.onionrCore.addPeer(newPeer)
|
||||
|
||||
def addMessage(self):
|
||||
'''
|
||||
Broadcasts a message to the Onionr network
|
||||
'''
|
||||
|
||||
while True:
|
||||
messageToAdd = '-txt-' + logger.readline('Broadcast message to network: ')
|
||||
if len(messageToAdd) >= 1:
|
||||
break
|
||||
|
||||
addedHash = self.onionrCore.setData(messageToAdd)
|
||||
self.onionrCore.addToBlockDB(addedHash, selfInsert=True)
|
||||
self.onionrCore.setBlockType(addedHash, 'txt')
|
||||
|
||||
def notFound(self):
|
||||
'''
|
||||
Displays a "command not found" message
|
||||
'''
|
||||
|
||||
logger.error('Command not found.')
|
||||
|
||||
def showHelpSuggestion(self):
|
||||
'''
|
||||
Displays a message suggesting help
|
||||
'''
|
||||
|
||||
logger.info('Do ' + logger.colors.bold + sys.argv[0] + ' --help' + logger.colors.reset + logger.colors.fg.green + ' for Onionr help.')
|
||||
|
||||
def start(self):
|
||||
'''
|
||||
Starts the Onionr daemon
|
||||
'''
|
||||
|
||||
if os.path.exists('.onionr-lock'):
|
||||
logger.fatal('Cannot start. Daemon is already running, or it did not exit cleanly.\n(if you are sure that there is not a daemon running, delete .onionr-lock & try again).')
|
||||
else:
|
||||
@ -208,7 +263,9 @@ class Onionr:
|
||||
os.remove('.onionr-lock')
|
||||
|
||||
def daemon(self):
|
||||
''' Start the Onionr communication daemon '''
|
||||
'''
|
||||
Starts the Onionr communication daemon
|
||||
'''
|
||||
if not os.environ.get("WERKZEUG_RUN_MAIN") == "true":
|
||||
if self._developmentMode:
|
||||
logger.warn('DEVELOPMENT MODE ENABLED (THIS IS LESS SECURE!)')
|
||||
@ -226,7 +283,9 @@ class Onionr:
|
||||
return
|
||||
|
||||
def killDaemon(self):
|
||||
''' Shutdown the Onionr Daemon '''
|
||||
'''
|
||||
Shutdown the Onionr daemon
|
||||
'''
|
||||
|
||||
logger.warn('Killing the running daemon')
|
||||
net = NetController(self.config['CLIENT']['PORT'])
|
||||
@ -240,13 +299,31 @@ class Onionr:
|
||||
return
|
||||
|
||||
def showStats(self):
|
||||
''' Display statistics and exit '''
|
||||
'''
|
||||
Displays statistics and exits
|
||||
'''
|
||||
|
||||
return
|
||||
|
||||
def showHelp(self):
|
||||
''' Show help for Onionr '''
|
||||
def showHelp(self, command = None):
|
||||
'''
|
||||
Show help for Onionr
|
||||
'''
|
||||
|
||||
helpmenu = self.getHelp()
|
||||
|
||||
if command is None and len(sys.argv) >= 3:
|
||||
for cmd in sys.argv[2:]:
|
||||
self.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()])
|
||||
else:
|
||||
logger.warn(logger.colors.bold + command + logger.colors.reset + logger.colors.fg.blue + ' : ' + logger.colors.reset + 'No help menu entry was found')
|
||||
else:
|
||||
self.version(0)
|
||||
for command, helpmessage in helpmenu.items():
|
||||
self.showHelp(command)
|
||||
return
|
||||
|
||||
Onionr()
|
||||
|
@ -28,7 +28,7 @@ class OnionrTests(unittest.TestCase):
|
||||
logger.debug('--------------------------')
|
||||
logger.info('Running simple program run test...')
|
||||
# Test just running ./onionr with no arguments
|
||||
blank = os.system('./onionr.py')
|
||||
blank = os.system('./onionr.py --version')
|
||||
if blank != 0:
|
||||
self.assertTrue(False)
|
||||
else:
|
||||
|
Loading…
Reference in New Issue
Block a user