From b42c0a79a1dd6df4dd6cf815c17ab663a6a4f21c Mon Sep 17 00:00:00 2001 From: Kevin Froman Date: Sun, 29 Sep 2019 15:39:03 -0500 Subject: [PATCH] work on site finder and fixed friend adding --- onionr/__init__.py | 1 + onionr/httpapi/onionrsitesapi/__init__.py | 8 +++--- onionr/httpapi/onionrsitesapi/findsite.py | 35 +++++++++++++++++++++-- onionr/httpapi/onionrsitesapi/zsite.py | 4 +++ onionr/onionrusers/contactmanager.py | 2 +- 5 files changed, 42 insertions(+), 8 deletions(-) create mode 100644 onionr/httpapi/onionrsitesapi/zsite.py diff --git a/onionr/__init__.py b/onionr/__init__.py index 54a41c21..c730f428 100755 --- a/onionr/__init__.py +++ b/onionr/__init__.py @@ -61,6 +61,7 @@ def onionr_main(): if __name__ == "__main__": onionr_main() + # Cleanup standard out/err because Python refuses to do it itsself try: sys.stderr.close() except (IOError, BrokenPipeError) as e: diff --git a/onionr/httpapi/onionrsitesapi/__init__.py b/onionr/httpapi/onionrsitesapi/__init__.py index 48e7c116..08370e14 100644 --- a/onionr/httpapi/onionrsitesapi/__init__.py +++ b/onionr/httpapi/onionrsitesapi/__init__.py @@ -1,9 +1,9 @@ -''' +""" Onionr - Private P2P Communication view and interact with onionr sites -''' -''' +""" +""" 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 @@ -16,7 +16,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . -''' +""" import base64 import binascii diff --git a/onionr/httpapi/onionrsitesapi/findsite.py b/onionr/httpapi/onionrsitesapi/findsite.py index 3a6303df..77e5e484 100644 --- a/onionr/httpapi/onionrsitesapi/findsite.py +++ b/onionr/httpapi/onionrsitesapi/findsite.py @@ -1,10 +1,39 @@ +""" + Onionr - Private P2P Communication + + view and interact with onionr sites +""" +""" + 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 . +""" +from typing import Union + import onionrexceptions from onionrutils import mnemonickeys from onionrutils import stringvalidators +from coredb import blockmetadb +from onionrblocks.onionrblockapi import Block -def find_site(user_id: str)->str: +def find_site(user_id: str)->Union[str, None]: + """Returns block hash string for latest block for a site by a given user id""" if '-' in user_id: user_id = mnemonickeys.get_base32(user_id) if not stringvalidators.validate_pub_key(user_id): raise onionrexceptions.InvalidPubkey + found_site = None + sites = blockmetadb.get_blocks_by_type('zsite') - #for - \ No newline at end of file + for site in sites: + site = Block(site) + if site.isSigner(user_id) and site.verifySig(): + found_site = site.hash + return found_site diff --git a/onionr/httpapi/onionrsitesapi/zsite.py b/onionr/httpapi/onionrsitesapi/zsite.py new file mode 100644 index 00000000..aedf66bc --- /dev/null +++ b/onionr/httpapi/onionrsitesapi/zsite.py @@ -0,0 +1,4 @@ +import zipfile +def get_zip_site_file(path): + with zipfile.ZipFile(zip_file, 'r') as zf: + for member in zf.infolist(): \ No newline at end of file diff --git a/onionr/onionrusers/contactmanager.py b/onionr/onionrusers/contactmanager.py index 00baebea..2f662f1b 100755 --- a/onionr/onionrusers/contactmanager.py +++ b/onionr/onionrusers/contactmanager.py @@ -27,7 +27,7 @@ import mnemonic class ContactManager(onionrusers.OnionrUser): def __init__(self, publicKey, saveUser=False, recordExpireSeconds=5): try: - if " " in publicKey: + if "-" in publicKey: publicKey = mnemonic.Mnemonic('english').to_entropy(publicKey) publicKey = unpaddedbase32.b32encode(bytesconverter.str_to_bytes(publicKey)) except ValueError: