See details
- Completes support for repositories - `./RUN-LINUX.sh create-repository [plugins...]` - `./RUN-LINUX.sh add-repository <block hash>` - `./RUN-LINUX.sh remove-repository <block hash>` - Fixes several misc bugs - Refactors code - Some messy code was rewritten - Variables renamed - Migrated old block api (insertBlock) to new Block API (onionrblockapi) - Kept to standards - Made code more reusable in `onionrproofs.py` - Improves logging messages - Added error output for some features missing it - Capitalized sentences - Added punctuation where it is missing - Switched `logger.info` and `logger.debug` in a few places, where it is logical - Removed or added timestamps depending on the circumstance - Added a few misc features - Added command aliases for `add-file` and `import-blocks` - Improved statistics menu - Displays `Known Block Count` - Calculates and displays `Percent Blocks Signed`
This commit is contained in:
parent
a232e663a7
commit
8846dcc2c6
7 changed files with 184 additions and 86 deletions
|
@ -31,6 +31,7 @@ import api, core, config, logger, onionrplugins as plugins, onionrevents as even
|
|||
import onionrutils
|
||||
from onionrutils import OnionrUtils
|
||||
from netcontroller import NetController
|
||||
from onionrblockapi import Block
|
||||
|
||||
try:
|
||||
from urllib3.contrib.socks import SOCKSProxyManager
|
||||
|
@ -192,8 +193,11 @@ class Onionr:
|
|||
'add-addr': self.addAddress,
|
||||
'addaddr': self.addAddress,
|
||||
'addaddress': self.addAddress,
|
||||
|
||||
'add-file': self.addFile,
|
||||
'addfile': self.addFile,
|
||||
|
||||
'import-blocks': self.onionrUtils.importNewBlocks,
|
||||
'importblocks': self.onionrUtils.importNewBlocks,
|
||||
|
||||
'introduce': self.onionrCore.introduceNode,
|
||||
|
@ -216,8 +220,8 @@ class Onionr:
|
|||
'add-msg': 'Broadcasts a message to the Onionr network',
|
||||
'pm': 'Adds a private message to block',
|
||||
'get-pms': 'Shows private messages sent to you',
|
||||
'addfile': 'Create an Onionr block from a file',
|
||||
'importblocks': 'import blocks from the disk (Onionr is transport-agnostic!)',
|
||||
'add-file': 'Create an Onionr block from a file',
|
||||
'import-blocks': 'import blocks from the disk (Onionr is transport-agnostic!)',
|
||||
'introduce': 'Introduce your node to the public Onionr network',
|
||||
}
|
||||
|
||||
|
@ -391,12 +395,11 @@ class Onionr:
|
|||
except KeyboardInterrupt:
|
||||
return
|
||||
|
||||
#addedHash = self.onionrCore.setData(messageToAdd)
|
||||
addedHash = self.onionrCore.insertBlock(messageToAdd, header='txt')
|
||||
#self.onionrCore.addToBlockDB(addedHash, selfInsert=True)
|
||||
#self.onionrCore.setBlockType(addedHash, 'txt')
|
||||
if addedHash != '':
|
||||
addedHash = Block('txt', messageToAdd).save()
|
||||
if addedHash != None:
|
||||
logger.info("Message inserted as as block %s" % addedHash)
|
||||
else:
|
||||
logger.error('Failed to insert block.', timestamp = False)
|
||||
return
|
||||
|
||||
def getPMs(self):
|
||||
|
@ -520,12 +523,12 @@ class Onionr:
|
|||
|
||||
if not os.environ.get("WERKZEUG_RUN_MAIN") == "true":
|
||||
if self._developmentMode:
|
||||
logger.warn('DEVELOPMENT MODE ENABLED (THIS IS LESS SECURE!)')
|
||||
logger.warn('DEVELOPMENT MODE ENABLED (THIS IS LESS SECURE!)', timestamp = False)
|
||||
net = NetController(config.get('client')['port'])
|
||||
logger.info('Tor is starting...')
|
||||
if not net.startTor():
|
||||
sys.exit(1)
|
||||
logger.info('Started Tor .onion service: ' + logger.colors.underline + net.myID)
|
||||
logger.info('Started .onion service: ' + logger.colors.underline + net.myID)
|
||||
logger.info('Our Public key: ' + self.onionrCore._crypto.pubKey)
|
||||
time.sleep(1)
|
||||
subprocess.Popen(["./communicator.py", "run", str(net.socksPort)])
|
||||
|
@ -562,6 +565,9 @@ class Onionr:
|
|||
|
||||
try:
|
||||
# define stats messages here
|
||||
totalBlocks = len(Block.getBlocks())
|
||||
signedBlocks = len(Block.getBlocks(signed = True))
|
||||
|
||||
messages = {
|
||||
# info about local client
|
||||
'Onionr Daemon Status' : ((logger.colors.fg.green + 'Online') if self.onionrUtils.isCommunicatorRunning(timeout = 2) else logger.colors.fg.red + 'Offline'),
|
||||
|
@ -577,7 +583,9 @@ class Onionr:
|
|||
# count stats
|
||||
'div2' : True,
|
||||
'Known Peers Count' : str(len(self.onionrCore.listPeers()) - 1),
|
||||
'Enabled Plugins Count' : str(len(config.get('plugins')['enabled'])) + ' / ' + str(len(os.listdir('data/plugins/')))
|
||||
'Enabled Plugins Count' : str(len(config.get('plugins')['enabled'])) + ' / ' + str(len(os.listdir('data/plugins/'))),
|
||||
'Known Blocks Count' : str(totalBlocks),
|
||||
'Percent Blocks Signed' : str(round(100 * signedBlocks / totalBlocks, 2)) + '%'
|
||||
}
|
||||
|
||||
# color configuration
|
||||
|
@ -639,18 +647,30 @@ class Onionr:
|
|||
return None
|
||||
|
||||
def addFile(self):
|
||||
'''command to add a file to the onionr network'''
|
||||
if len(sys.argv) >= 2:
|
||||
newFile = sys.argv[2]
|
||||
logger.info('Attempting to add file...')
|
||||
try:
|
||||
with open(newFile, 'rb') as new:
|
||||
new = new.read()
|
||||
except FileNotFoundError:
|
||||
'''
|
||||
Adds a file to the onionr network
|
||||
'''
|
||||
|
||||
if len(sys.argv) >= 3:
|
||||
filename = sys.argv[2]
|
||||
contents = None
|
||||
|
||||
if not os.path.exists(filename):
|
||||
logger.warn('That file does not exist. Improper path?')
|
||||
|
||||
try:
|
||||
with open(filename, 'rb') as file:
|
||||
contents = file.read().decode()
|
||||
except:
|
||||
pass
|
||||
|
||||
if not contents is None:
|
||||
blockhash = Block('bin', contents).save()
|
||||
logger.info('File %s saved in block %s.' % (filename, blockhash))
|
||||
else:
|
||||
logger.debug(new)
|
||||
logger.info(self.onionrCore.insertBlock(new, header='bin'))
|
||||
logger.error('Failed to save file in block.', timestamp = False)
|
||||
else:
|
||||
logger.error('%s add-file <filename>' % sys.argv[0], timestamp = False)
|
||||
|
||||
|
||||
Onionr()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue