komrade update!

posting
quadrismegistus 4 years ago
parent f4ef89a653
commit d0341fae3c

@ -594,13 +594,18 @@ from_komrade = {from_komrade}
data.get('meet_name'),
'/pubkey/'
)
if not meet_pubkey:
return {
'success':False,
'status':'Are you sure this komrade exists? If you are, try contacting them by another secure channel and asking for their public key there.'
}
self.log('found in crypt:',meet_pubkey)
meet_name = data.get('meet_name')
meet_uri = b64enc(meet_pubkey)
meet_from_name = data.get('name')
meet_from_uri = data.get('pubkey')
returning = data.get('returning')
qr_str = self.qr_str(meet_from_uri)
if returning:
txt=f'''Komrade @{meet_from_name} has agreed to make your acquaintance.\n\nTheir public key is:\n{meet_from_uri.decode()}.'''

@ -3,8 +3,14 @@ from komrade import *
from komrade.backend import *
import art
import textwrap as tw
import readline
readline.set_completer_delims('\t')
from tab_completer import tabCompleter
tabber=tabCompleter()
if 'libedit' in readline.__doc__:
readline.parse_and_bind("bind ^I rl_complete")
else:
readline.parse_and_bind("tab: complete")
class CLI(Logger):
@ -25,6 +31,12 @@ class CLI(Logger):
self.cmd=cmd
self.komrade=None
self.loggedin=False
self.tabber=tabber
# Routes
rts=['/'+k for k in self.ROUTES]
tabber.createListCompleter(rts)
readline.set_completer(tabber.listCompleter)
def verbose(self,*x):
self.toggle_log()
@ -279,6 +291,7 @@ class CLI(Logger):
msg_s
)
self.log(f'Sent msg obj to {name_or_pubkey}: {msg_obj}')
print()
self.stat(f'Message successfully sent to @{name_or_pubkey}.',komrade_name='Operator',pause=True)
def check(self,dat=None,res=None,statd={}):
@ -349,7 +362,6 @@ class CLI(Logger):
do_pause()
elif do=='r':
# self.print('@todo: replying...')
print()
return self.msg(msg.from_name)
else:
pass

@ -0,0 +1,72 @@
from __future__ import absolute_import
from __future__ import print_function
## SOURCE = https://gist.github.com/iamatypeofwalrus/5637895
import os
import sys
import readline
import glob
from six.moves import input
class tabCompleter(object):
"""
A tab completer that can either complete from
the filesystem or from a list.
Partially taken from:
http://stackoverflow.com/questions/5637124/tab-completion-in-pythons-raw-input
"""
def pathCompleter(self, text, state):
"""
This is the tab completer for systems paths.
Only tested on *nix systems
"""
line = readline.get_line_buffer().split()
# replace ~ with the user's home dir. See https://docs.python.org/2/library/os.path.html
if '~' in text:
text = os.path.expanduser('~')
# autocomplete directories with having a trailing slash
if os.path.isdir(text):
text += '/'
return [x for x in glob.glob(text + '*')][state]
def createListCompleter(self,ll):
"""
This is a closure that creates a method that autocompletes from
the given list.
Since the autocomplete function can't be given a list to complete from
a closure is used to create the listCompleter function with a list to complete
from.
"""
def listCompleter(text,state):
line = readline.get_line_buffer()
if not line:
return [c + " " for c in ll][state]
else:
return [c + " " for c in ll if c.startswith(line)][state]
self.listCompleter = listCompleter
if __name__=="__main__":
t = tabCompleter()
t.createListCompleter(["ab","aa","bcd","bdf"])
readline.set_completer_delims('\t')
readline.parse_and_bind("tab: complete")
readline.set_completer(t.listCompleter)
ans = input("Complete from list ")
print(ans)
readline.set_completer(t.pathCompleter)
ans = input("What file do you want? ")
print(ans)
Loading…
Cancel
Save