log to terminal again in places where it should

master
Kevin Froman 2019-06-19 19:59:05 -05:00
parent 065e97ab11
commit 6630071802
13 changed files with 144 additions and 140 deletions

View File

@ -78,6 +78,9 @@ def lookup_blocks_from_communicator(comm_inst):
if len(comm_inst.blockQueue[i]) < 10:
comm_inst.blockQueue[i].append(peer)
if new_block_count > 0:
logger.info('Discovered %s new blocks' % (new_block_count,), terminal=True)
block_string = ""
if new_block_count > 1:
block_string = "s"
logger.info('Discovered %s new block%s' % (new_block_count, block_string), terminal=True)
comm_inst.decrementThreadCount('lookupBlocks')
return

View File

@ -200,7 +200,7 @@ class Onionr:
'''
def exportBlock(self):
commands.exportblocks(self)
commands.exportblocks.export_block(self)
def showDetails(self):
commands.onionrstatistics.show_details(self)
@ -347,7 +347,7 @@ class Onionr:
Displays a "command not found" message
'''
logger.error('Command not found.', timestamp = False)
logger.error('Command not found.', timestamp = False, terminal=True)
def showHelpSuggestion(self):
'''

View File

@ -17,7 +17,7 @@
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 sys
import sys, os
import logger, onionrstorage
def doExport(o_inst, bHash):
exportDir = o_inst.dataDir + 'block-export/'
@ -25,18 +25,19 @@ def doExport(o_inst, bHash):
if os.path.exists(o_inst.dataDir):
os.mkdir(exportDir)
else:
logger.error('Onionr Not initialized')
logger.error('Onionr Not initialized', terminal=True)
data = onionrstorage.getData(o_inst.onionrCore, bHash)
with open('%s/%s.dat' % (exportDir, bHash), 'wb') as exportFile:
exportFile.write(data)
logger.info('Block exported as file', terminal=True)
def export_block(o_inst):
exportDir = o_inst.dataDir + 'block-export/'
try:
assert o_inst.onionrUtils.validateHash(sys.argv[2])
except (IndexError, AssertionError):
logger.error('No valid block hash specified.')
logger.error('No valid block hash specified.', terminal=True)
sys.exit(1)
else:
bHash = sys.argv[2]
o_inst.doExport(bHash)
doExport(o_inst, bHash)

View File

@ -31,18 +31,18 @@ def add_file(o_inst, singleBlock=False, blockType='bin'):
contents = None
if not os.path.exists(filename):
logger.error('That file does not exist. Improper path (specify full path)?')
logger.error('That file does not exist. Improper path (specify full path)?', terminal=True)
return
logger.info('Adding file... this might take a long time.')
logger.info('Adding file... this might take a long time.', terminal=True)
try:
with open(filename, 'rb') as singleFile:
blockhash = o_inst.onionrCore.insertBlock(base64.b64encode(singleFile.read()), header=blockType)
if len(blockhash) > 0:
logger.info('File %s saved in block %s' % (filename, blockhash))
logger.info('File %s saved in block %s' % (filename, blockhash), terminal=True)
except:
logger.error('Failed to save file in block.', timestamp = False)
logger.error('Failed to save file in block.', timestamp = False, terminal=True)
else:
logger.error('%s add-file <filename>' % sys.argv[0], timestamp = False)
logger.error('%s add-file <filename>' % sys.argv[0], timestamp = False, terminal=True)
def getFile(o_inst):
'''
@ -52,16 +52,16 @@ def getFile(o_inst):
fileName = sys.argv[2]
bHash = sys.argv[3]
except IndexError:
logger.error("Syntax %s %s" % (sys.argv[0], '/path/to/filename <blockhash>'))
logger.error("Syntax %s %s" % (sys.argv[0], '/path/to/filename <blockhash>'), terminal=True)
else:
logger.info(fileName)
logger.info(fileName, terminal=True)
contents = None
if os.path.exists(fileName):
logger.error("File already exists")
logger.error("File already exists", terminal=True)
return
if not o_inst.onionrUtils.validateHash(bHash):
logger.error('Block hash is invalid')
logger.error('Block hash is invalid', terminal=True)
return
with open(fileName, 'wb') as myFile:

View File

@ -26,14 +26,14 @@ def add_peer(o_inst):
pass
else:
if o_inst.onionrUtils.hasKey(newPeer):
logger.info('We already have that key')
logger.info('We already have that key', terminal=True)
return
logger.info("Adding peer: " + logger.colors.underline + newPeer)
logger.info("Adding peer: " + logger.colors.underline + newPeer, terminal=True)
try:
if o_inst.onionrCore.addPeer(newPeer):
logger.info('Successfully added key')
logger.info('Successfully added key', terminal=True)
except AssertionError:
logger.error('Failed to add key')
logger.error('Failed to add key', terminal=True)
def add_address(o_inst):
try:
@ -42,8 +42,8 @@ def add_address(o_inst):
except IndexError:
pass
else:
logger.info("Adding address: " + logger.colors.underline + newAddress)
logger.info("Adding address: " + logger.colors.underline + newAddress, terminal=True)
if o_inst.onionrCore.addAddress(newAddress):
logger.info("Successfully added address.")
logger.info("Successfully added address.", terminal=True)
else:
logger.warn("Unable to add address.")
logger.warn("Unable to add address.", terminal=True)

View File

@ -23,7 +23,7 @@ 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)')
logger.error('Onionr seems to not be running (could not get api host)', terminal=True)
else:
url = 'http://%s/#%s' % (url, o_inst.onionrCore.config.get('client.webpassword'))
logger.info('If Onionr does not open automatically, use this URL: ' + url, terminal=True)

View File

@ -24,18 +24,18 @@ import logger, onionrplugins as plugins
def enable_plugin(o_inst):
if len(sys.argv) >= 3:
plugin_name = sys.argv[2]
logger.info('Enabling plugin "%s"...' % plugin_name)
logger.info('Enabling plugin "%s"...' % plugin_name, terminal=True)
plugins.enable(plugin_name, o_inst)
else:
logger.info('%s %s <plugin>' % (sys.argv[0], sys.argv[1]))
logger.info('%s %s <plugin>' % (sys.argv[0], sys.argv[1]), terminal=True)
def disable_plugin(o_inst):
if len(sys.argv) >= 3:
plugin_name = sys.argv[2]
logger.info('Disabling plugin "%s"...' % plugin_name)
logger.info('Disabling plugin "%s"...' % plugin_name, terminal=True)
plugins.disable(plugin_name, o_inst)
else:
logger.info('%s %s <plugin>' % (sys.argv[0], sys.argv[1]))
logger.info('%s %s <plugin>' % (sys.argv[0], sys.argv[1]), terminal=True)
def reload_plugin(o_inst):
'''
@ -44,11 +44,11 @@ def reload_plugin(o_inst):
if len(sys.argv) >= 3:
plugin_name = sys.argv[2]
logger.info('Reloading plugin "%s"...' % plugin_name)
logger.info('Reloading plugin "%s"...' % plugin_name, terminal=True)
plugins.stop(plugin_name, o_inst)
plugins.start(plugin_name, o_inst)
else:
logger.info('Reloading all plugins...')
logger.info('Reloading all plugins...', terminal=True)
plugins.reload(o_inst)
@ -62,7 +62,7 @@ def create_plugin(o_inst):
plugin_name = re.sub('[^0-9a-zA-Z_]+', '', str(sys.argv[2]).lower())
if not plugins.exists(plugin_name):
logger.info('Creating plugin "%s"...' % plugin_name)
logger.info('Creating plugin "%s"...' % plugin_name, terminal=True)
os.makedirs(plugins.get_plugins_folder(plugin_name))
with open(plugins.get_plugins_folder(plugin_name) + '/main.py', 'a') as main:
@ -76,12 +76,12 @@ def create_plugin(o_inst):
with open(plugins.get_plugins_folder(plugin_name) + '/info.json', 'a') as main:
main.write(json.dumps({'author' : 'anonymous', 'description' : 'the default description of the plugin', 'version' : '1.0'}))
logger.info('Enabling plugin "%s"...' % plugin_name)
logger.info('Enabling plugin "%s"...' % plugin_name, terminal=True)
plugins.enable(plugin_name, o_inst)
else:
logger.warn('Cannot create plugin directory structure; plugin "%s" exists.' % plugin_name)
logger.warn('Cannot create plugin directory structure; plugin "%s" exists.' % plugin_name, terminal=True)
except Exception as e:
logger.error('Failed to create plugin directory structure.', e)
logger.error('Failed to create plugin directory structure.', e, terminal=True)
else:
logger.info('%s %s <plugin>' % (sys.argv[0], sys.argv[1]))
logger.info('%s %s <plugin>' % (sys.argv[0], sys.argv[1]), terminal=True)

View File

@ -29,42 +29,42 @@ def add_ID(o_inst):
except (IndexError, AssertionError) as e:
newID = o_inst.onionrCore._crypto.keyManager.addKey()[0]
else:
logger.warn('Deterministic keys require random and long passphrases.')
logger.warn('If a good passphrase is not used, your key can be easily stolen.')
logger.warn('You should use a series of hard to guess words, see this for reference: https://www.xkcd.com/936/')
logger.warn('Deterministic keys require random and long passphrases.', terminal=True)
logger.warn('If a good passphrase is not used, your key can be easily stolen.', terminal=True)
logger.warn('You should use a series of hard to guess words, see this for reference: https://www.xkcd.com/936/', terminal=True)
pass1 = getpass.getpass(prompt='Enter at least %s characters: ' % (o_inst.onionrCore._crypto.deterministicRequirement,))
pass2 = getpass.getpass(prompt='Confirm entry: ')
if o_inst.onionrCore._crypto.safeCompare(pass1, pass2):
try:
logger.info('Generating deterministic key. This can take a while.')
logger.info('Generating deterministic key. This can take a while.', terminal=True)
newID, privKey = o_inst.onionrCore._crypto.generateDeterministic(pass1)
except onionrexceptions.PasswordStrengthError:
logger.error('Passphrase must use at least %s characters.' % (o_inst.onionrCore._crypto.deterministicRequirement,))
logger.error('Passphrase must use at least %s characters.' % (o_inst.onionrCore._crypto.deterministicRequirement,), terminal=True)
sys.exit(1)
else:
logger.error('Passwords do not match.')
logger.error('Passwords do not match.', terminal=True)
sys.exit(1)
o_inst.onionrCore._crypto.keyManager.addKey(pubKey=newID,
privKey=privKey)
logger.info('Added ID: %s' % (o_inst.onionrUtils.bytesToStr(newID),))
logger.info('Added ID: %s' % (o_inst.onionrUtils.bytesToStr(newID),), terminal=True)
def change_ID(o_inst):
try:
key = sys.argv[2]
key = unpaddedbase32.repad(key.encode()).decode()
except IndexError:
logger.warn('Specify pubkey to use')
logger.warn('Specify pubkey to use', terminal=True)
else:
if o_inst.onionrUtils.validatePubKey(key):
if key in o_inst.onionrCore._crypto.keyManager.getPubkeyList():
o_inst.onionrCore.config.set('general.public_key', key)
o_inst.onionrCore.config.save()
logger.info('Set active key to: %s' % (key,))
logger.info('Restart Onionr if it is running.')
logger.info('Set active key to: %s' % (key,), terminal=True)
logger.info('Restart Onionr if it is running.', terminal=True)
else:
logger.warn('That key does not exist')
logger.warn('That key does not exist', terminal=True)
else:
logger.warn('Invalid key %s' % (key,))
logger.warn('Invalid key %s' % (key,), terminal=True)
def friend_command(o_inst):
friend = ''
@ -72,13 +72,13 @@ def friend_command(o_inst):
# Get the friend command
action = sys.argv[2]
except IndexError:
logger.info('Syntax: friend add/remove/list [address]')
logger.info('Syntax: friend add/remove/list [address]', terminal=True)
else:
action = action.lower()
if action == 'list':
# List out peers marked as our friend
for friend in contactmanager.ContactManager.list_friends(o_inst.onionrCore):
logger.info(friend.publicKey + ' - ' + friend.get_info('name'))
logger.info(friend.publicKey + ' - ' + friend.get_info('name'), terminal=True)
elif action in ('add', 'remove'):
try:
friend = sys.argv[3]
@ -88,7 +88,7 @@ def friend_command(o_inst):
raise onionrexceptions.KeyNotKnown
friend = onionrusers.OnionrUser(o_inst.onionrCore, friend)
except IndexError:
logger.warn('Friend ID is required.')
logger.warn('Friend ID is required.', terminal=True)
action = 'error' # set to 'error' so that the finally block does not process anything
except onionrexceptions.KeyNotKnown:
o_inst.onionrCore.addPeer(friend)
@ -96,9 +96,9 @@ def friend_command(o_inst):
finally:
if action == 'add':
friend.setTrust(1)
logger.info('Added %s as friend.' % (friend.publicKey,))
logger.info('Added %s as friend.' % (friend.publicKey,), terminal=True)
elif action == 'remove':
friend.setTrust(0)
logger.info('Removed %s as friend.' % (friend.publicKey,))
logger.info('Removed %s as friend.' % (friend.publicKey,), terminal=True)
else:
logger.info('Syntax: friend add/remove/list [address]')
logger.info('Syntax: friend add/remove/list [address]', terminal=True)

View File

@ -24,6 +24,6 @@ def reset_tor():
tor_dir = c.dataDir + 'tordata'
if os.path.exists(tor_dir):
if c._utils.localCommand('/ping') == 'pong!':
logger.warn('Cannot delete Tor data while Onionr is running')
logger.warn('Cannot delete Tor data while Onionr is running', terminal=True)
else:
shutil.rmtree(tor_dir)

View File

@ -100,7 +100,7 @@ class OnionrCLIUI:
elif choice == "":
pass
else:
logger.error("Invalid choice")
logger.error("Invalid choice", terminal=True)
return
def on_init(api, data = None):

View File

@ -1,5 +1,5 @@
'''
Onionr - P2P Microblogging Platform & Social network
Onionr - Private P2P Communication
This default plugin allows users to encrypt/decrypt messages without using blocks
'''
@ -46,13 +46,13 @@ class PlainEncryption:
if not self.api.get_core()._utils.validatePubKey(sys.argv[2]):
raise onionrexceptions.InvalidPubkey
except (ValueError, IndexError) as e:
logger.error("Peer public key not specified")
logger.error("Peer public key not specified", terminal=True)
except onionrexceptions.InvalidPubkey:
logger.error("Invalid public key")
logger.error("Invalid public key", terminal=True)
else:
pubkey = sys.argv[2]
# Encrypt if public key is valid
logger.info("Please enter your message (ctrl-d or -q to stop):")
logger.info("Please enter your message (ctrl-d or -q to stop):", terminal=True)
try:
for line in sys.stdin:
if line == '-q\n':
@ -72,12 +72,12 @@ class PlainEncryption:
plaintext = data
encrypted = self.api.get_core()._crypto.pubKeyEncrypt(plaintext, pubkey, encodedData=True)
encrypted = self.api.get_core()._utils.bytesToStr(encrypted)
logger.info('Encrypted Message: \n\nONIONR ENCRYPTED DATA %s END ENCRYPTED DATA' % (encrypted,))
logger.info('Encrypted Message: \n\nONIONR ENCRYPTED DATA %s END ENCRYPTED DATA' % (encrypted,), terminal=True)
def decrypt(self):
plaintext = ""
data = ""
logger.info("Please enter your message (ctrl-d or -q to stop):")
logger.info("Please enter your message (ctrl-d or -q to stop):", terminal=True)
try:
for line in sys.stdin:
if line == '-q\n':
@ -91,17 +91,17 @@ class PlainEncryption:
myPub = self.api.get_core()._crypto.pubKey
decrypted = self.api.get_core()._crypto.pubKeyDecrypt(encrypted, privkey=self.api.get_core()._crypto.privKey, encodedData=True)
if decrypted == False:
logger.error("Decryption failed")
logger.error("Decryption failed", terminal=True)
else:
data = json.loads(decrypted)
logger.info('Decrypted Message: \n\n%s' % data['data'])
logger.info('Decrypted Message: \n\n%s' % data['data'], terminal=True)
try:
logger.info("Signing public key: %s" % (data['signer'],))
logger.info("Signing public key: %s" % (data['signer'],), terminal=True)
assert self.api.get_core()._crypto.edVerify(data['data'], data['signer'], data['sig']) != False
except (AssertionError, KeyError) as e:
logger.warn("WARNING: THIS MESSAGE HAS A MISSING OR INVALID SIGNATURE")
logger.warn("WARNING: THIS MESSAGE HAS A MISSING OR INVALID SIGNATURE", terminal=True)
else:
logger.info("Message has good signature.")
logger.info("Message has good signature.", terminal=True)
return
def on_init(api, data = None):

View File

@ -1,5 +1,5 @@
'''
Onionr - P2P Microblogging Platform & Social network.
Onionr - Private P2P Communication
This plugin acts as a plugin manager, and allows the user to install other plugins distributed over Onionr.
'''
@ -180,11 +180,11 @@ def blockToPlugin(block):
shutil.unpack_archive(source, destination)
pluginapi.plugins.enable(name)
logger.info('Installation of %s complete.' % name)
logger.info('Installation of %s complete.' % name, terminal=True)
return True
except Exception as e:
logger.error('Failed to install plugin.', error = e, timestamp = False)
logger.error('Failed to install plugin.', error = e, timestamp = False, terminal=True)
return False
@ -240,9 +240,9 @@ def pluginToBlock(plugin, import_block = True):
return hash
else:
logger.error('Plugin %s does not exist.' % plugin)
logger.error('Plugin %s does not exist.' % plugin, terminal=True)
except Exception as e:
logger.error('Failed to convert plugin to block.', error = e, timestamp = False)
logger.error('Failed to convert plugin to block.', error = e, timestamp = False, terminal=True)
return False
@ -261,7 +261,7 @@ def installBlock(block):
install = False
logger.info(('Will install %s' + (' v' + version if not version is None else '') + ' (%s), by %s') % (name, date, author))
logger.info(('Will install %s' + (' v' + version if not version is None else '') + ' (%s), by %s') % (name, date, author), terminal=True)
# TODO: Convert to single line if statement
if os.path.exists(pluginapi.plugins.get_folder(name)):
@ -273,12 +273,12 @@ def installBlock(block):
blockToPlugin(block.getHash())
addPlugin(name)
else:
logger.info('Installation cancelled.')
logger.info('Installation cancelled.', terminal=True)
return False
return True
except Exception as e:
logger.error('Failed to install plugin.', error = e, timestamp = False)
logger.error('Failed to install plugin.', error = e, timestamp = False, terminal=True)
return False
def uninstallPlugin(plugin):
@ -291,12 +291,12 @@ def uninstallPlugin(plugin):
remove = False
if not exists:
logger.warn('Plugin %s does not exist.' % plugin, timestamp = False)
logger.warn('Plugin %s does not exist.' % plugin, timestamp = False, terminal=True)
return False
default = 'y'
if not installedByPluginManager:
logger.warn('The plugin %s was not installed by %s.' % (plugin, plugin_name), timestamp = False)
logger.warn('The plugin %s was not installed by %s.' % (plugin, plugin_name), timestamp = False, terminal=True)
default = 'n'
remove = logger.confirm(message = 'All plugin data will be lost. Are you sure you want to proceed %s?', default = default)
@ -306,20 +306,20 @@ def uninstallPlugin(plugin):
pluginapi.plugins.disable(plugin)
shutil.rmtree(pluginFolder)
logger.info('Uninstallation of %s complete.' % plugin)
logger.info('Uninstallation of %s complete.' % plugin, terminal=True)
return True
else:
logger.info('Uninstallation cancelled.')
except Exception as e:
logger.error('Failed to uninstall plugin.', error = e)
logger.error('Failed to uninstall plugin.', error = e, terminal=True)
return False
# command handlers
def help():
logger.info(sys.argv[0] + ' ' + sys.argv[1] + ' <plugin> [public key/block hash]')
logger.info(sys.argv[0] + ' ' + sys.argv[1] + ' <plugin> [public key/block hash]')
logger.info(sys.argv[0] + ' ' + sys.argv[1] + ' <plugin> [public key/block hash]', terminal=True)
logger.info(sys.argv[0] + ' ' + sys.argv[1] + ' <plugin> [public key/block hash]', terminal=True)
def commandInstallPlugin():
if len(sys.argv) >= 3:
@ -345,20 +345,20 @@ def commandInstallPlugin():
if pkobh is None:
# still nothing found, try searching repositories
logger.info('Searching for public key in repositories...')
logger.info('Searching for public key in repositories...', terminal=True)
try:
repos = getRepositories()
distributors = list()
for repo, records in repos.items():
if pluginname in records:
logger.debug('Found %s in repository %s for plugin %s.' % (records[pluginname], repo, pluginname))
logger.debug('Found %s in repository %s for plugin %s.' % (records[pluginname], repo, pluginname), terminal=True)
distributors.append(records[pluginname])
if len(distributors) != 0:
distributor = None
if len(distributors) == 1:
logger.info('Found distributor: %s' % distributors[0])
logger.info('Found distributor: %s' % distributors[0], terminal=True)
distributor = distributors[0]
else:
distributors_message = ''
@ -368,11 +368,11 @@ def commandInstallPlugin():
distributors_message += ' ' + logger.colors.bold + str(index) + ') ' + logger.colors.reset + str(dist) + '\n'
index += 1
logger.info((logger.colors.bold + 'Found distributors (%s):' + logger.colors.reset + '\n' + distributors_message) % len(distributors))
logger.info((logger.colors.bold + 'Found distributors (%s):' + logger.colors.reset + '\n' + distributors_message) % len(distributors), terminal=True)
valid = False
while not valid:
choice = logger.readline('Select the number of the key to use, from 1 to %s, or press Ctrl+C to cancel:' % (index - 1))
choice = logger.readline('Select the number of the key to use, from 1 to %s, or press Ctrl+C to cancel:' % (index - 1), terminal=True)
try:
choice = int(choice)
@ -380,7 +380,7 @@ def commandInstallPlugin():
distributor = distributors[int(choice)]
valid = True
except KeyboardInterrupt:
logger.info('Installation cancelled.')
logger.info('Installation cancelled.', terminal=True)
return True
except:
pass
@ -388,11 +388,11 @@ def commandInstallPlugin():
if not distributor is None:
pkobh = distributor
except Exception as e:
logger.warn('Failed to lookup plugin in repositories.', timestamp = False)
logger.warn('Failed to lookup plugin in repositories.', timestamp = False, terminal=True)
return True
if pkobh is None:
logger.error('No key for this plugin found in keystore or repositories, please specify.', timestamp = False)
logger.error('No key for this plugin found in keystore or repositories, please specify.', timestamp = False, terminal=True)
return True
@ -409,21 +409,21 @@ def commandInstallPlugin():
blockhash = None
if valid_hash and not real_block:
logger.error('Block hash not found. Perhaps it has not been synced yet?', timestamp = False)
logger.debug('Is valid hash, but does not belong to a known block.')
logger.error('Block hash not found. Perhaps it has not been synced yet?', timestamp = False, terminal=True)
logger.debug('Is valid hash, but does not belong to a known block.', terminal=True)
return True
elif valid_hash and real_block:
blockhash = str(pkobh)
logger.debug('Using block %s...' % blockhash)
logger.debug('Using block %s...' % blockhash, terminal=True)
installBlock(blockhash)
elif valid_key and not real_key:
logger.error('Public key not found. Try adding the node by address manually, if possible.', timestamp = False)
logger.debug('Is valid key, but the key is not a known one.')
logger.error('Public key not found. Try adding the node by address manually, if possible.', timestamp = False, terminal=True)
logger.debug('Is valid key, but the key is not a known one.', terminal=True)
elif valid_key and real_key:
publickey = str(pkobh)
logger.debug('Using public key %s...' % publickey)
logger.debug('Using public key %s...' % publickey, terminal=True)
saveKey(pluginname, pkobh)
@ -455,14 +455,14 @@ def commandInstallPlugin():
except Exception as e:
pass
logger.warn('Only continue the installation if you are absolutely certain that you trust the plugin distributor. Public key of plugin distributor: %s' % publickey, timestamp = False)
logger.debug('Most recent block matching parameters is %s' % mostRecentVersionBlock)
logger.warn('Only continue the installation if you are absolutely certain that you trust the plugin distributor. Public key of plugin distributor: %s' % publickey, timestamp = False, terminal=True)
logger.debug('Most recent block matching parameters is %s' % mostRecentVersionBlock, terminal=True)
installBlock(mostRecentVersionBlock)
else:
logger.error('Unknown data "%s"; must be public key or block hash.' % str(pkobh), timestamp = False)
logger.error('Unknown data "%s"; must be public key or block hash.' % str(pkobh), timestamp = False, terminal=True)
return
else:
logger.info(sys.argv[0] + ' ' + sys.argv[1] + ' <plugin> [public key/block hash]')
logger.info(sys.argv[0] + ' ' + sys.argv[1] + ' <plugin> [public key/block hash]', terminal=True)
return True
@ -470,12 +470,12 @@ def commandUninstallPlugin():
if len(sys.argv) >= 3:
uninstallPlugin(sys.argv[2])
else:
logger.info(sys.argv[0] + ' ' + sys.argv[1] + ' <plugin>')
logger.info(sys.argv[0] + ' ' + sys.argv[1] + ' <plugin>', terminal=True)
return True
def commandSearchPlugin():
logger.info('This feature has not been created yet. Please check back later.')
logger.info('This feature has not been created yet. Please check back later.', terminal=True)
return True
def commandAddRepository():
@ -495,22 +495,22 @@ def commandAddRepository():
if pluginapi.get_utils().validatePubKey(distributor):
pluginslist[pluginname] = distributor
logger.debug('Found %s records in repository.' % len(pluginslist))
logger.debug('Found %s records in repository.' % len(pluginslist), terminal=True)
if len(pluginslist) != 0:
addRepository(blockhash, pluginslist)
logger.info('Successfully added repository.')
logger.info('Successfully added repository.', terminal=True)
else:
logger.error('Repository contains no records, not importing.', timestamp = False)
logger.error('Repository contains no records, not importing.', timestamp = False, terminal=True)
except Exception as e:
logger.error('Failed to parse block.', error = e)
logger.error('Failed to parse block.', error = e, terminal=True)
else:
logger.error('Block hash not found. Perhaps it has not been synced yet?', timestamp = False)
logger.error('Block hash not found. Perhaps it has not been synced yet?', timestamp = False, terminal=True)
logger.debug('Is valid hash, but does not belong to a known block.')
else:
logger.error('Unknown data "%s"; must be block hash.' % str(pkobh), timestamp = False)
logger.error('Unknown data "%s"; must be block hash.' % str(pkobh), timestamp = False, terminal=True)
else:
logger.info(sys.argv[0] + ' ' + sys.argv[1] + ' [block hash]')
logger.info(sys.argv[0] + ' ' + sys.argv[1] + ' [block hash]', terminal=True)
return True
@ -524,15 +524,15 @@ def commandRemoveRepository():
if blockhash in getRepositories():
try:
removeRepository(blockhash)
logger.info('Successfully removed repository.')
logger.info('Successfully removed repository.', terminal=True)
except Exception as e:
logger.error('Failed to parse block.', error = e)
logger.error('Failed to parse block.', error = e, terminal=True)
else:
logger.error('Repository has not been imported, nothing to remove.', timestamp = False)
logger.error('Repository has not been imported, nothing to remove.', timestamp = False, terminal=True)
else:
logger.error('Unknown data "%s"; must be block hash.' % str(pkobh))
logger.error('Unknown data "%s"; must be block hash.' % str(pkobh), terminal=True)
else:
logger.info(sys.argv[0] + ' ' + sys.argv[1] + ' [block hash]')
logger.info(sys.argv[0] + ' ' + sys.argv[1] + ' [block hash]', terminal=True)
return True
@ -545,11 +545,11 @@ def commandPublishPlugin():
if os.path.exists(pluginfolder) and not os.path.isfile(pluginfolder):
block = pluginToBlock(pluginname)
logger.info('Plugin saved in block %s.' % block)
logger.info('Plugin saved in block %s.' % block, terminal=True)
else:
logger.error('Plugin %s does not exist.' % pluginname, timestamp = False)
logger.error('Plugin %s does not exist.' % pluginname, timestamp = False, terminal=True)
else:
logger.info(sys.argv[0] + ' ' + sys.argv[1] + ' <plugin>')
logger.info(sys.argv[0] + ' ' + sys.argv[1] + ' <plugin>', terminal=True)
def commandCreateRepository():
if len(sys.argv) >= 3:
@ -573,22 +573,22 @@ def commandCreateRepository():
if distributor is None:
distributor = getKey(pluginname)
if distributor is None:
logger.error('No distributor key was found for the plugin %s.' % pluginname, timestamp = False)
logger.error('No distributor key was found for the plugin %s.' % pluginname, timestamp = False, terminal=True)
success = False
plugins.append([pluginname, distributor])
if not success:
logger.error('Please correct the above errors, then recreate the repository.')
logger.error('Please correct the above errors, then recreate the repository.', terminal=True)
return True
blockhash = createRepository(plugins)
if not blockhash is None:
logger.info('Successfully created repository. Execute the following command to add the repository:\n ' + logger.colors.underline + '%s --add-repository %s' % (script, blockhash))
logger.info('Successfully created repository. Execute the following command to add the repository:\n ' + logger.colors.underline + '%s --add-repository %s' % (script, blockhash), terminal=True)
else:
logger.error('Failed to create repository, an unknown error occurred.')
logger.error('Failed to create repository, an unknown error occurred.', terminal=True)
else:
logger.info(sys.argv[0] + ' ' + sys.argv[1] + ' [plugins...]')
logger.info(sys.argv[0] + ' ' + sys.argv[1] + ' [plugins...]', terminal=True)
return True

View File

@ -73,7 +73,7 @@ class OnionrMail:
blockCount = 0
pmBlockMap = {}
pmBlocks = {}
logger.info('Decrypting messages...')
logger.info('Decrypting messages...', terminal=True)
choice = ''
displayList = []
subject = ''
@ -108,7 +108,7 @@ class OnionrMail:
displayList.append('%s. %s - %s - <%s>: %s' % (blockCount, blockDate, senderDisplay[:12], subject[:10], blockHash))
while choice not in ('-q', 'q', 'quit'):
for i in displayList:
logger.info(i)
logger.info(i, terminal=True)
try:
choice = logger.readline('Enter a block number, -r to refresh, or -q to stop: ').strip().lower()
except (EOFError, KeyboardInterrupt):
@ -138,18 +138,18 @@ class OnionrMail:
senderDisplay = self.myCore._utils.bytesToStr(readBlock.signer)
if len(senderDisplay.strip()) == 0:
senderDisplay = 'Anonymous'
logger.info('Message received from %s' % (senderDisplay,))
logger.info('Valid signature: %s' % readBlock.validSig)
logger.info('Message received from %s' % (senderDisplay,), terminal=True)
logger.info('Valid signature: %s' % readBlock.validSig, terminal=True)
if not readBlock.validSig:
logger.warn('This message has an INVALID/NO signature. ANYONE could have sent this message.')
logger.warn('This message has an INVALID/NO signature. ANYONE could have sent this message.', terminal=True)
cancel = logger.readline('Press enter to continue to message, or -q to not open the message (recommended).')
print('')
if cancel != '-q':
try:
print(draw_border(self.myCore._utils.escapeAnsi(readBlock.bcontent.decode().strip())))
except ValueError:
logger.warn('Error presenting message. This is usually due to a malformed or blank message.')
logger.warn('Error presenting message. This is usually due to a malformed or blank message.', terminal=True)
pass
if readBlock.validSig:
reply = logger.readline("Press enter to continue, or enter %s to reply" % ("-r",))
@ -168,7 +168,7 @@ class OnionrMail:
entering = True
while entering:
self.get_sent_list()
logger.info('Enter a block number or -q to return')
logger.info('Enter a block number or -q to return', terminal=True)
try:
choice = input('>')
except (EOFError, KeyboardInterrupt) as e:
@ -182,11 +182,11 @@ class OnionrMail:
try:
self.sentboxList[int(choice)]
except (IndexError, ValueError) as e:
logger.warn('Invalid block.')
logger.warn('Invalid block.', terminal=True)
else:
logger.info('Sent to: ' + self.sentMessages[self.sentboxList[int(choice)]][1])
logger.info('Sent to: ' + self.sentMessages[self.sentboxList[int(choice)]][1], terminal=True)
# Print ansi escaped sent message
logger.info(self.myCore._utils.escapeAnsi(self.sentMessages[self.sentboxList[int(choice)]][0]))
logger.info(self.myCore._utils.escapeAnsi(self.sentMessages[self.sentboxList[int(choice)]][0]), terminal=True)
input('Press enter to continue...')
finally:
if choice == '-q':
@ -201,7 +201,7 @@ class OnionrMail:
self.sentboxList.append(i['hash'])
self.sentMessages[i['hash']] = (self.myCore._utils.bytesToStr(i['message']), i['peer'], i['subject'])
if display:
logger.info('%s. %s - %s - (%s) - %s' % (count, i['hash'], i['peer'][:12], i['subject'], i['date']))
logger.info('%s. %s - %s - (%s) - %s' % (count, i['hash'], i['peer'][:12], i['subject'], i['date']), terminal=True)
count += 1
return json.dumps(self.sentMessages)
@ -220,7 +220,7 @@ class OnionrMail:
if not self.myCore._utils.validatePubKey(recip):
raise onionrexceptions.InvalidPubkey('Must be a valid ed25519 base32 encoded public key')
except onionrexceptions.InvalidPubkey:
logger.warn('Invalid public key')
logger.warn('Invalid public key', terminal=True)
except (KeyboardInterrupt, EOFError):
entering = False
else:
@ -234,7 +234,7 @@ class OnionrMail:
pass
cancelEnter = False
logger.info('Enter your message, stop by entering -q on a new line. -c to cancel')
logger.info('Enter your message, stop by entering -q on a new line. -c to cancel', terminal=True)
while newLine != '-q':
try:
newLine = input()
@ -249,7 +249,7 @@ class OnionrMail:
message += newLine
if not cancelEnter:
logger.info('Inserting encrypted message as Onionr block....')
logger.info('Inserting encrypted message as Onionr block....', terminal=True)
blockID = self.myCore.insertBlock(message, header='pm', encryptType='asym', asymPeer=recip, sign=self.doSigs, meta={'subject': subject})
@ -261,16 +261,16 @@ class OnionrMail:
while True:
sigMsg = 'Message Signing: %s'
logger.info(self.strings.programTag + '\n\nUser ID: ' + self.myCore._crypto.pubKey)
logger.info(self.strings.programTag + '\n\nUser ID: ' + self.myCore._crypto.pubKey, terminal=True)
if self.doSigs:
sigMsg = sigMsg % ('enabled',)
else:
sigMsg = sigMsg % ('disabled (Your messages cannot be trusted)',)
if self.doSigs:
logger.info(sigMsg)
logger.info(sigMsg, terminal=True)
else:
logger.warn(sigMsg)
logger.info(self.strings.mainMenu.title()) # print out main menu
logger.warn(sigMsg, terminal=True)
logger.info(self.strings.mainMenu.title(), terminal=True) # print out main menu
try:
choice = logger.readline('Enter 1-%s:\n' % (len(self.strings.mainMenuChoices))).lower().strip()
except (KeyboardInterrupt, EOFError):
@ -285,12 +285,12 @@ class OnionrMail:
elif choice in (self.strings.mainMenuChoices[3], '4'):
self.toggle_signing()
elif choice in (self.strings.mainMenuChoices[4], '5'):
logger.info('Goodbye.')
logger.info('Goodbye.', terminal=True)
break
elif choice == '':
pass
else:
logger.warn('Invalid choice.')
logger.warn('Invalid choice.', terminal=True)
return
def add_deleted(keyStore, bHash):