diff --git a/komrade/backend/komrades.py b/komrade/backend/komrades.py index 4b9bbd7..d8c5c1f 100644 --- a/komrade/backend/komrades.py +++ b/komrade/backend/komrades.py @@ -269,8 +269,8 @@ class KomradeX(Caller): self.log('Got resp_msg_d back from operator:',resp_msg_d) # check msgs? - if 'res_check_msgs' in resp_msg_d: - self.do_check_msgs(resp_msg_d['res_check_msgs']) + if 'inbox' in resp_msg_d: + self.do_check_msgs(resp_msg_d['inbox']) resp_msg_d['res_refresh'] = self.refresh(check_msgs=False) # already done in previous line self.log('-->',resp_msg_d) @@ -439,31 +439,53 @@ class KomradeX(Caller): ) + @property + def inbox_db(self): + if not hasattr(self,'_inbox_db'): + self._inbox_db=self.get_inbox_crypt( + prefix='/inbox/' + ) + return self._inbox_db + @property + def inbox_unread_db(self): + if not hasattr(self,'_inbox_unread_db'): + self._inbox_unread_db=self.get_inbox_crypt( + prefix='/inbox/unread/', + ) + return self._inbox_unread_db + @property + def inbox_read_db(self): + if not hasattr(self,'_inbox_read_db'): + self._inbox_read_db=self.get_inbox_crypt( + prefix='/inbox/read/', + ) + return self._inbox_read_db - def check_msgs(self,inbox=None): + + def download_inbox(self,uri=None): if not self.pubkey and self.privkey: return {'success':False,'status':'Need to be logged in'} # checking my own mail I presume? - if not inbox: - inbox=self.pubkey.data_b64 + uri=self.uri if not uri else uri # send info op needs msg = { 'secret_login':self.secret_login, 'name':self.name, 'pubkey':self.uri, - 'inbox':inbox + 'inbox':uri } self.log('sending msg to op:',msg) # Ring operator res = self.ring_ring( msg, - route='check_msgs' + route='get_inbox' ) self.log('got back response:',res) + stop return self.do_check_msgs(res) @@ -490,7 +512,7 @@ class KomradeX(Caller): def refresh(self,check_msgs=True): # refresh inbox if check_msgs: - self.check_msgs() + self.download_inbox() # status? inbox_status = self.get_inbox_ids() diff --git a/komrade/backend/operators.py b/komrade/backend/operators.py index 55c6e11..dfa36a4 100644 --- a/komrade/backend/operators.py +++ b/komrade/backend/operators.py @@ -53,7 +53,7 @@ class Operator(Keymaker): 'register_new_user', 'login', 'deliver_msg', - 'check_msgs', + 'get_inbox', 'download_msgs', 'introduce_komrades', 'post', @@ -290,7 +290,7 @@ class Operator(Keymaker): ## inboxes? - def inbox_crypt(self, + def get_inbox_crypt(self, crypt=None, uri=None, prefix='/inbox/', @@ -307,7 +307,7 @@ class Operator(Keymaker): if not encryptor_func or not decryptor_func: if not privkey_b: privkey_b=self.privkey.data - if not pubkey_b: pubkey_b=self.pubkey.data + if not pubkey_b: pubkey_b=self.op.pubkey.data smsg=SMessage( privkey_b, diff --git a/komrade/backend/the_operator.py b/komrade/backend/the_operator.py index ad8686c..d40a9a1 100644 --- a/komrade/backend/the_operator.py +++ b/komrade/backend/the_operator.py @@ -243,7 +243,7 @@ class TheOperator(Operator): return { 'success': True, 'status':f'Welcome back, Komrade @{name.decode()}.', - 'res_check_msgs':self.check_msgs(msg_obj,do_login=False) + 'inbox':self.get_inbox(msg_obj,do_login=False) } else: return { @@ -524,7 +524,7 @@ class TheOperator(Operator): self.log(f'put {msg_from_op} (or {msg_from_op_b_encr}) in {post_id}') # get inbox - inbox_crypt = self.inbox_crypt(pubkey_b=deliver_to_b) + inbox_crypt = self.get_inbox_crypt(pubkey_b=deliver_to_b) self.log('inbox_crypt',inbox_crypt) self.log('inbox_crypt.values',inbox_crypt.values) res_inbox = inbox_crypt.prepend(post_id) @@ -538,7 +538,7 @@ class TheOperator(Operator): self.log('->',res) return res - def check_msgs(self, + def get_inbox(self, msg_to_op, required_fields = [ 'secret_login', @@ -554,30 +554,16 @@ class TheOperator(Operator): return login_res # ok, then find the inbox? - inbox=msg_to_op.data.get('inbox') - if not inbox: - inbox=msg_to_op.data.get('pubkey') - if not inbox: - res = {'success':False, 'status':'No inbox specified'} - self.log('!!',res) - return res - - self.log(f'using {inbox} ({b64enc(inbox)}) to get inbox') - - - inbox_encr = self.crypt_keys.get( - b64enc(inbox), - prefix='/inbox/' + inbox=self.get_inbox_crypt( + pubkey_b=b64dec(msg_to_op.from_pubkey) ) - self.log('got back inbox encr',inbox_encr) - - # fine: here, try this on for size + res = { 'status':'Succeeded in getting inbox.', 'success':True, - 'data_encr':inbox_encr + 'inbox':inbox.values if inbox else None } - self.log(f'returning from Op.check_msgs --> {res}') + self.log(f'returning from Op.get_inbox --> {res}') return res def download_msgs(self,