komrade update!

posting
quadrismegistus 4 years ago
parent f0cc24fd9a
commit a8f265bd5a

@ -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()

@ -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,

@ -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,

Loading…
Cancel
Save