diff --git a/komrade/__init__.py b/komrade/__init__.py index c54acca..d149f5a 100644 --- a/komrade/__init__.py +++ b/komrade/__init__.py @@ -18,3 +18,6 @@ from pythemis.scell import SCellSeal from pythemis.exception import ThemisError import getpass + + +from backend import * \ No newline at end of file diff --git a/komrade/backend/__init__.py b/komrade/backend/__init__.py index befed76..b89e5e9 100644 --- a/komrade/backend/__init__.py +++ b/komrade/backend/__init__.py @@ -15,6 +15,7 @@ from .callers import * from .phonelines import * from .messages import * +from .people import * ## define default entities OPERATOR = None diff --git a/komrade/backend/keymaker.py b/komrade/backend/keymaker.py index eec67d7..1385c8e 100644 --- a/komrade/backend/keymaker.py +++ b/komrade/backend/keymaker.py @@ -103,7 +103,7 @@ class Keymaker(Logger): res = self.load_qr(self.name) if res: return res - self.log('I don\'t know my public key!') + self.log('I don\'t know my public key! Do I need to register?',do_pause=False) # raise KomradeException(f'I don\'t know my public key!\n{self}\n{self._keychain}') return None @@ -327,6 +327,12 @@ Keymaker ({self}) is forging new keys for {name} fnfn = os.path.join(dir,name+ext) return fnfn + def print_qr(self,data=None): + import qrcode + qr=qrcode.QRCode() + qr.add_data(self.uri_id if not data else data) + qr.print_ascii() + def save_uri_as_qrcode(self,uri_id=None,name=None): if not uri_id: uri_id = self.uri_id if not uri_id and not self.uri_id: raise KomradeException('Need URI id to save!') @@ -337,14 +343,11 @@ Keymaker ({self}) is forging new keys for {name} qr = pyqrcode.create(uri_id) ofnfn = self.get_path_qrcode(name=name) qr.png(ofnfn,scale=5) - qr_str = qr.terminal() + self.log(f''' -Encoded URI(=pubkey_b64) into a QR code: - -{qr_str} - -I saved it to: {ofnfn} +Saved URI(=pubkey_b64) as a QR code: {ofnfn} ''') + self.print_qr(uri_id) def save_keychain(self,name,keychain,keys_to_save=None,uri_id=None): if not keys_to_save: keys_to_save = list(keychain.keys()) diff --git a/komrade/backend/operators.py b/komrade/backend/operators.py index a28a1e7..e5685af 100644 --- a/komrade/backend/operators.py +++ b/komrade/backend/operators.py @@ -135,7 +135,10 @@ class Operator(Keymaker): def __repr__(self): clsname=(type(self)).__name__ name = clsname+' '+self.name if self.name!=clsname else clsname - keystr='+'.join(self.top_keys) if self.pubkey else '' + try: + keystr='+'.join(self.top_keys) if self.pubkey else '' + except TypeError: + keystr='' # if self.pubkey: if False: pubk=self.pubkey_b64.decode() diff --git a/komrade/utils.py b/komrade/utils.py index 4f56687..4c6df22 100644 --- a/komrade/utils.py +++ b/komrade/utils.py @@ -46,21 +46,20 @@ def dict_format(d, tab=0): return ''.join(s) import inspect +from komrade.constants import PAUSE_LOGGER class Logger(object): - def log(self,*x): + def log(self,*x,do_pause=PAUSE_LOGGER,do_clear=PAUSE_LOGGER): curframe = inspect.currentframe() calframe = inspect.getouterframes(curframe, 2) mytype = type(self).__name__ caller = calframe[1][3] log(f'\n[{mytype}.{caller}()]',*x) - from komrade.constants import PAUSE_LOGGER - if PAUSE_LOGGER: - try: - pause() - clear_screen() - except KeyboardInterrupt: - exit() + try: + if do_pause: pause() + if do_pause: clear_screen() + except KeyboardInterrupt: + exit() import binascii,base64 def isBase64(sb):