diff --git a/komrade/backend/komrades.py b/komrade/backend/komrades.py index 668e748..27bfd54 100644 --- a/komrade/backend/komrades.py +++ b/komrade/backend/komrades.py @@ -2,6 +2,7 @@ import os,sys; sys.path.append(os.path.abspath(os.path.join(os.path.abspath(os.p from komrade import * from komrade.backend import * from komrade.backend.keymaker import * +from komrade.backend.messages import Message @@ -306,6 +307,46 @@ class KomradeX(Caller): return super().ring_ring(msg,caller=self,**y) + def post(self,something,to_name_list=[WORLD_NAME]): + self.log('<-',something,to_name_list) + # encryption chain: + # me -> world + # me -> op + # op <- me + # op -> others + + posts=[] + self.log('to_name_list',to_name_list) + for to_name in to_name_list: + self.log(to_name,Komrade(to_name)) + # make post data + post_d = { + 'from':self.uri, + 'from_name':self.name, + 'to_name':to_name, + 'to':Komrade(to_name).uri, + 'msg':something + } + self.log('post_d =',post_d) + + # make post into Message + post = Message(post_d) + post.encrypt() + # self.log('post as Message') + # attach encrypted version + # self.log('post as message .msg_d =',post.msg_d) + # self.log('post as message .msg =',post.msg) + posts.append(post.msg_b) #encrypted msg_d + + # get total binary package + posts_b = BSEP.join(posts) + self.ring_ring( + {'posts_b':posts_b}, + route='post' + ) + + + def msg(self,someone,something): # find or boot diff --git a/komrade/backend/operators.py b/komrade/backend/operators.py index b4d9098..a45c930 100644 --- a/komrade/backend/operators.py +++ b/komrade/backend/operators.py @@ -55,7 +55,8 @@ class Operator(Keymaker): 'deliver_msg', 'check_msgs', 'download_msgs', - 'introduce_komrades' + 'introduce_komrades', + 'post' ] diff --git a/komrade/backend/the_operator.py b/komrade/backend/the_operator.py index dfd873e..f827542 100644 --- a/komrade/backend/the_operator.py +++ b/komrade/backend/the_operator.py @@ -324,6 +324,25 @@ class TheOperator(Operator): # self.log('Operator returning result:',dict_format(res,tab=2)) + + + + + + def post(self,msg_to_op): + self.log('post <-',msg_to_op) + data = msg_to_op.data + posts_b = data.get('posts_b') + self.log('posts_b',posts_b) + + return { + 'status':'Hold your horses.', + 'success':False, + } + + + + def deliver_msg(self,msg_to_op): data = msg_to_op.data deliver_to = data.get('deliver_to') @@ -646,6 +665,25 @@ from_komrade = {from_komrade} res['msg_sent']=txt return res + + + + + + + + + + + + + + + + + + + def test_op(): from komrade.backend.the_telephone import TheTelephone diff --git a/komrade/cli/cli.py b/komrade/cli/cli.py index e7800f3..f7d2baa 100644 --- a/komrade/cli/cli.py +++ b/komrade/cli/cli.py @@ -23,7 +23,8 @@ class CLI(Logger): 'msg':'write people', 'check':'check mail', 'read':'read mail', - 'verbose':'show/hide log output' + 'verbose':'show/hide log output', + 'post':'post to world', } def __init__(self,name='',cmd='',persona=None): @@ -401,7 +402,10 @@ class CLI(Logger): self.help() - + def post(self,msg_s): + if self.with_required_login(): + res = self.komrade.post(msg_s) + self.stat(res,komrade_name='Operator')