diff --git a/komrade/backend/keymaker.py b/komrade/backend/keymaker.py index 610f13d..e46cd88 100644 --- a/komrade/backend/keymaker.py +++ b/komrade/backend/keymaker.py @@ -221,6 +221,17 @@ class Keymaker(Logger): keychain_toreturn[key]=keychain[key] return keychain_toreturn + def save_uri_as_qrcode(self,name=None,uri_id=None): + if not uri_id: uri_id = get_random_id() + get_random_id() + uri_id = self.uri_id + if not uri_id and not self.uri_id: raise KomradeException('Need URI id to save!') + + # gen + import pyqrcode + qr = pycode.create(uri_id) + ofnfn = os.path.join(PATH_QRCODES,self.name+'.png') + qr.png(ofnfn) + self.log('>> saved:',ofnfn) 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 97417ab..a3a193c 100644 --- a/komrade/backend/operators.py +++ b/komrade/backend/operators.py @@ -418,18 +418,22 @@ def create_phonelines(): phone_keys_to_keep_on_server = ['pubkey_decr'] # sent to phone # create keys for Op - op_decr_keys = op.forge_new_keys( + op_uri,op_decr_keys = op.forge_new_keys( keys_to_save=op_keys_to_keep_on_server, # on server only; flipped around keys_to_return=op_keys_to_keep_on_client + op_keys_to_keep_on_3rdparty # on clients only ) # create keys for phone - phone_decr_keys = phone.forge_new_keys( + phone_uri,phone_decr_keys = phone.forge_new_keys( name=TELEPHONE_NAME, keys_to_save=phone_keys_to_keep_on_server, # on server only keys_to_return=phone_keys_to_keep_on_client + phone_keys_to_keep_on_3rdparty # on clients only ) + # store URIs + op.save_uri_as_qrcode() + phone.save_uri_as_qrcode() + ## store remote keys THIRD_PARTY_DICT = {OPERATOR_NAME:{}, TELEPHONE_NAME:{}} for key in op_keys_to_keep_on_3rdparty: diff --git a/komrade/constants.py b/komrade/constants.py index b22eeae..3ea8a0b 100644 --- a/komrade/constants.py +++ b/komrade/constants.py @@ -13,15 +13,17 @@ import os PATH_KOMRADE = os.path.abspath(os.path.join(os.path.expanduser('~'),'.komrade')) PATH_KOMRADE_KEYS = os.path.join(PATH_KOMRADE,'.keys') PATH_KOMRADE_DATA = os.path.join(PATH_KOMRADE,'.data') -for x in [PATH_KOMRADE,PATH_KOMRADE_DATA,PATH_KOMRADE_KEYS]: - if not os.path.exists(x): - os.makedirs(x) + PATH_CRYPT_OP_KEYS = os.path.join(PATH_KOMRADE_KEYS,'.op.db.keys.crypt') PATH_CRYPT_OP_DATA = os.path.join(PATH_KOMRADE_DATA,'.op.db.data.encr') # PATH_CRYPT_CA_KEYS = os.path.join(PATH_KOMRADE_KEYS,'.ca.db.keys.crypt') # PATH_CRYPT_CA_DATA = os.path.join(PATH_KOMRADE_DATA,'.ca.db.data.encr') PATH_CRYPT_CA_KEYS = PATH_CRYPT_OP_KEYS PATH_CRYPT_CA_DATA = PATH_CRYPT_OP_DATA +PATH_QRCODES = os.path.join(PATH_KOMRADE,'.contacts') +for x in [PATH_KOMRADE,PATH_KOMRADE_DATA,PATH_KOMRADE_KEYS,PATH_QRCODES]: + if not os.path.exists(x): + os.makedirs(x) # etc BSEP=b'||||||||||' @@ -133,6 +135,8 @@ PATH_OPERATOR_WEB_KEYS_FILE = f'/home/ryan/www/website-komrade/.builtin.keys' PATH_OPERATOR_WEB_KEYS_URL = f'http://{KOMRADE_URL}/.builtin.keys' +PATH_URI_CODES = + # dangerous! leave on only if absolutely necessary for initial dev ALLOW_CLEARNET = True \ No newline at end of file