started work on flow plugin
This commit is contained in:
parent
ba1b154f52
commit
f918ae9b9c
@ -177,6 +177,7 @@ class OnionrCommunicatorDaemon:
|
|||||||
logger.info('Block passed proof, saving.')
|
logger.info('Block passed proof, saving.')
|
||||||
self._core.setData(content)
|
self._core.setData(content)
|
||||||
self._core.addToBlockDB(blockHash, dataSaved=True)
|
self._core.addToBlockDB(blockHash, dataSaved=True)
|
||||||
|
self._core.utils.processBlockMetadata(blockHash) # caches block metadata values to block database
|
||||||
else:
|
else:
|
||||||
logger.warn('POW failed for block ' + blockHash)
|
logger.warn('POW failed for block ' + blockHash)
|
||||||
else:
|
else:
|
||||||
|
@ -239,6 +239,7 @@ class Core:
|
|||||||
dataSaved - if the data has been saved for the block
|
dataSaved - if the data has been saved for the block
|
||||||
sig - optional signature by the author (not optional if author is specified)
|
sig - optional signature by the author (not optional if author is specified)
|
||||||
author - multi-round partial sha3-256 hash of authors public key
|
author - multi-round partial sha3-256 hash of authors public key
|
||||||
|
dateClaimed - timestamp claimed inside the block, only as trustworthy as the block author is
|
||||||
'''
|
'''
|
||||||
if os.path.exists(self.blockDB):
|
if os.path.exists(self.blockDB):
|
||||||
raise Exception("Block database already exists")
|
raise Exception("Block database already exists")
|
||||||
@ -252,7 +253,8 @@ class Core:
|
|||||||
dataFound int,
|
dataFound int,
|
||||||
dataSaved int,
|
dataSaved int,
|
||||||
sig text,
|
sig text,
|
||||||
author text
|
author text,
|
||||||
|
dateClaimed int
|
||||||
);
|
);
|
||||||
''')
|
''')
|
||||||
conn.commit()
|
conn.commit()
|
||||||
@ -658,7 +660,7 @@ class Core:
|
|||||||
sets info associated with a block
|
sets info associated with a block
|
||||||
'''
|
'''
|
||||||
|
|
||||||
if key not in ('dateReceived', 'decrypted', 'dataType', 'dataFound', 'dataSaved', 'sig', 'author'):
|
if key not in ('dateReceived', 'decrypted', 'dataType', 'dataFound', 'dataSaved', 'sig', 'author', 'dateClaimed'):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
conn = sqlite3.connect(self.blockDB)
|
conn = sqlite3.connect(self.blockDB)
|
||||||
@ -742,6 +744,8 @@ class Core:
|
|||||||
self.addToBlockDB(retData, selfInsert=True, dataSaved=True)
|
self.addToBlockDB(retData, selfInsert=True, dataSaved=True)
|
||||||
self.setBlockType(retData, meta['type'])
|
self.setBlockType(retData, meta['type'])
|
||||||
|
|
||||||
|
if retData != False:
|
||||||
|
events.event('insertBlock', onionr = None, threaded = False)
|
||||||
return retData
|
return retData
|
||||||
|
|
||||||
def introduceNode(self):
|
def introduceNode(self):
|
||||||
|
@ -246,6 +246,13 @@ class OnionrUtils:
|
|||||||
else:
|
else:
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
def processBlockMetadata(self, blockHash):
|
||||||
|
'''
|
||||||
|
Read metadata from a block and cache it to the block database
|
||||||
|
'''
|
||||||
|
myBlock = Block(myBlock, self._core)
|
||||||
|
|
||||||
|
|
||||||
def getBlockDBHash(self):
|
def getBlockDBHash(self):
|
||||||
'''
|
'''
|
||||||
Return a sha3_256 hash of the blocks DB
|
Return a sha3_256 hash of the blocks DB
|
||||||
|
5
onionr/static-data/default-plugins/flow/info.json
Normal file
5
onionr/static-data/default-plugins/flow/info.json
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"name" : "flow",
|
||||||
|
"version" : "1.0",
|
||||||
|
"author" : "onionr"
|
||||||
|
}
|
47
onionr/static-data/default-plugins/flow/main.py
Normal file
47
onionr/static-data/default-plugins/flow/main.py
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
'''
|
||||||
|
Onionr - P2P Microblogging Platform & Social network
|
||||||
|
|
||||||
|
This default plugin handles "flow" messages (global chatroom style communication)
|
||||||
|
'''
|
||||||
|
'''
|
||||||
|
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/>.
|
||||||
|
'''
|
||||||
|
|
||||||
|
# Imports some useful libraries
|
||||||
|
import logger, config
|
||||||
|
from onionrblockapi import Block
|
||||||
|
|
||||||
|
plugin_name = 'flow'
|
||||||
|
|
||||||
|
class OnionrFlow:
|
||||||
|
def __init__(self):
|
||||||
|
logger.info("HELLO")
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def on_init(api, data = None):
|
||||||
|
'''
|
||||||
|
This event is called after Onionr is initialized, but before the command
|
||||||
|
inputted is executed. Could be called when daemon is starting or when
|
||||||
|
just the client is running.
|
||||||
|
'''
|
||||||
|
|
||||||
|
# Doing this makes it so that the other functions can access the api object
|
||||||
|
# by simply referencing the variable `pluginapi`.
|
||||||
|
global pluginapi
|
||||||
|
pluginapi = api
|
||||||
|
api.commands.register(['flow'], OnionrFlow)
|
||||||
|
api.commands.register_help('flow', 'Open the flow messaging interface')
|
||||||
|
return
|
Loading…
Reference in New Issue
Block a user