work on gui, blocks now have identifiers, work on crypto
parent
14d1fec3f3
commit
70bc131aa6
|
@ -1,3 +1,9 @@
|
||||||
|
BLOCK HEADERS (simple ID system to identify block type)
|
||||||
|
-----------------------------------------------
|
||||||
|
-crypt- (encrypted block)
|
||||||
|
-bin- (binary file)
|
||||||
|
-txt- (plaintext)
|
||||||
|
|
||||||
HTTP API
|
HTTP API
|
||||||
------------------------------------------------
|
------------------------------------------------
|
||||||
/client/ (Private info, not publicly accessible)
|
/client/ (Private info, not publicly accessible)
|
||||||
|
|
|
@ -114,7 +114,9 @@ class Core:
|
||||||
hash - the hash of a block
|
hash - the hash of a block
|
||||||
dateReceived - the date the block was recieved, not necessarily when it was created
|
dateReceived - the date the block was recieved, not necessarily when it was created
|
||||||
decrypted - if we can successfully decrypt the block (does not describe its current state)
|
decrypted - if we can successfully decrypt the block (does not describe its current state)
|
||||||
dataObtained - if the data has been obtained for the block
|
dataType - data type of the block
|
||||||
|
dataFound - if the data has been found for the block
|
||||||
|
dataSaved - if the data has been saved for the block
|
||||||
'''
|
'''
|
||||||
if os.path.exists(self.blockDB):
|
if os.path.exists(self.blockDB):
|
||||||
raise Exception("Block database already exists")
|
raise Exception("Block database already exists")
|
||||||
|
@ -124,6 +126,7 @@ class Core:
|
||||||
hash text not null,
|
hash text not null,
|
||||||
dateReceived int,
|
dateReceived int,
|
||||||
decrypted int,
|
decrypted int,
|
||||||
|
dataType text,
|
||||||
dataFound int,
|
dataFound int,
|
||||||
dataSaved int
|
dataSaved int
|
||||||
);
|
);
|
||||||
|
@ -143,8 +146,8 @@ class Core:
|
||||||
selfInsert = 1
|
selfInsert = 1
|
||||||
else:
|
else:
|
||||||
selfInsert = 0
|
selfInsert = 0
|
||||||
data = (newHash, currentTime, 0, 0, selfInsert)
|
data = (newHash, currentTime, 0, '', 0, selfInsert)
|
||||||
c.execute('INSERT into hashes values(?, ?, ?, ?, ?);', data)
|
c.execute('INSERT into hashes values(?, ?, ?, ?, ?, ?);', data)
|
||||||
conn.commit()
|
conn.commit()
|
||||||
conn.close()
|
conn.close()
|
||||||
|
|
||||||
|
@ -348,3 +351,23 @@ class Core:
|
||||||
for i in row:
|
for i in row:
|
||||||
retData += i + "\n"
|
retData += i + "\n"
|
||||||
return retData
|
return retData
|
||||||
|
|
||||||
|
def getBlocksByType(self, blockType):
|
||||||
|
conn = sqlite3.connect(self.blockDB)
|
||||||
|
c = conn.cursor()
|
||||||
|
retData = ''
|
||||||
|
execute = 'SELECT hash FROM hashes where dataType=?'
|
||||||
|
args = (blockType,)
|
||||||
|
for row in c.execute(execute, args):
|
||||||
|
for i in row:
|
||||||
|
retData += i + "\n"
|
||||||
|
return retData.split('\n')
|
||||||
|
|
||||||
|
def setBlockType(self, hash, blockType):
|
||||||
|
conn = sqlite3.connect(self.blockDB)
|
||||||
|
c = conn.cursor()
|
||||||
|
if blockType not in ("txt"):
|
||||||
|
return
|
||||||
|
c.execute("UPDATE hashes set dataType='" + blockType + "' where hash = '" + hash + "';")
|
||||||
|
conn.commit()
|
||||||
|
conn.close()
|
|
@ -13,4 +13,44 @@
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
'''
|
'''
|
||||||
|
from tkinter import *
|
||||||
|
import os, sqlite3, core
|
||||||
|
class OnionrGUI:
|
||||||
|
def __init__(self, myCore):
|
||||||
|
self.root = Tk()
|
||||||
|
self.myCore = myCore # onionr core
|
||||||
|
|
||||||
|
w = Label(self.root, text="Onionr", width=10)
|
||||||
|
w.config(font=("Sans-Serif", 22))
|
||||||
|
w.pack()
|
||||||
|
scrollbar = Scrollbar(self.root)
|
||||||
|
scrollbar.pack(side=RIGHT, fill=Y)
|
||||||
|
|
||||||
|
self.listedBlocks = []
|
||||||
|
|
||||||
|
idText = open('./data/hs/hostname', 'r').read()
|
||||||
|
idLabel = Label(self.root, text="ID: " + idText)
|
||||||
|
idLabel.pack(pady=5)
|
||||||
|
|
||||||
|
self.listbox = Listbox(self.root, yscrollcommand=scrollbar.set)
|
||||||
|
|
||||||
|
#listbox.insert(END, str(i))
|
||||||
|
self.listbox.pack(fill=BOTH)
|
||||||
|
|
||||||
|
scrollbar.config(command=self.listbox.yview)
|
||||||
|
self.root.after(2000, self.update)
|
||||||
|
self.root.mainloop()
|
||||||
|
|
||||||
|
def update(self):
|
||||||
|
for i in self.myCore.getBlocksByType('txt'):
|
||||||
|
if i.strip() == '' or i in self.listedBlocks:
|
||||||
|
continue
|
||||||
|
blockFile = open('./data/blocks/' + i + '.dat')
|
||||||
|
self.listbox.insert(END, str(blockFile.read().replace('-txt-', '')))
|
||||||
|
blockFile.close()
|
||||||
|
self.listedBlocks.append(i)
|
||||||
|
blocksList = os.listdir('./data/blocks/') # dir is your directory path
|
||||||
|
number_blocks = len(blocksList)
|
||||||
|
|
||||||
|
self.root.after(10000, self.update)
|
||||||
|
|
|
@ -123,13 +123,16 @@ class Onionr:
|
||||||
logger.info(i)
|
logger.info(i)
|
||||||
elif command in ('addmsg', 'addmessage'):
|
elif command in ('addmsg', 'addmessage'):
|
||||||
while True:
|
while True:
|
||||||
messageToAdd = logger.readline('Broadcast message to network: ')
|
messageToAdd = '-txt-' + logger.readline('Broadcast message to network: ')
|
||||||
if len(messageToAdd) >= 1:
|
if len(messageToAdd) >= 1:
|
||||||
break
|
break
|
||||||
addedHash = self.onionrCore.setData(messageToAdd)
|
addedHash = self.onionrCore.setData(messageToAdd)
|
||||||
self.onionrCore.addToBlockDB(addedHash, selfInsert=True)
|
self.onionrCore.addToBlockDB(addedHash, selfInsert=True)
|
||||||
|
self.onionrCore.setBlockType(addedHash, 'txt')
|
||||||
elif command == 'stats':
|
elif command == 'stats':
|
||||||
self.showStats()
|
self.showStats()
|
||||||
|
elif command == 'gui':
|
||||||
|
gui.OnionrGUI(self.onionrCore)
|
||||||
elif command == 'help' or command == '--help':
|
elif command == 'help' or command == '--help':
|
||||||
self.showHelp()
|
self.showHelp()
|
||||||
elif command == '':
|
elif command == '':
|
||||||
|
|
|
@ -25,4 +25,6 @@ class OnionrCrypto:
|
||||||
def symmetricPeerEncrypt(self, data, key):
|
def symmetricPeerEncrypt(self, data, key):
|
||||||
return
|
return
|
||||||
def symmetricPeerDecrypt(self, data, key):
|
def symmetricPeerDecrypt(self, data, key):
|
||||||
|
return
|
||||||
|
def rsaEncrypt(self, peer, data):
|
||||||
return
|
return
|
Loading…
Reference in New Issue