From b7fdcf119dd0ee144ec8bc56828e3ec64ca121d9 Mon Sep 17 00:00:00 2001 From: zlaxy Date: Sun, 22 Apr 2018 19:53:12 +0300 Subject: [PATCH] blank password for remove password field --- setup.py | 2 +- sshch/sshch | 25 ++++++++++++++----------- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/setup.py b/setup.py index affefc2..ea3c1c7 100644 --- a/setup.py +++ b/setup.py @@ -10,7 +10,7 @@ def main(): url='https://github.com/zlaxy/sshch/', description='Ssh connection manager', license='DWTWL 2.55', - version='0.998', + version='0.999', py_modules=['sshch'], scripts=['sshch/sshch'], diff --git a/sshch/sshch b/sshch/sshch index 9597364..693da67 100755 --- a/sshch/sshch +++ b/sshch/sshch @@ -20,7 +20,7 @@ import curses from curses import textpad, panel # https://github.com/zlaxy/sshch -version = "0.998" +version = "0.999" # path to conf file, default: ~/.config/sshch.conf conf_file = path.expanduser("~") + '/.config/sshch.conf' # expand groups by default @@ -47,9 +47,14 @@ def SetGroupString(alias, string): def SetPassword(alias, string): - string = base64.b64encode(base64.b16encode( - base64.b32encode(string))) - conf.set(alias, "password", string) + if string == "" or string == b'': + conf.remove_option(alias, "password") + else: + string = string.encode() + string = base64.b64encode(base64.b16encode( + base64.b32encode(string))) + string = string.decode('utf-8') + conf.set(alias, "password", string) conf.write(open(conf_file, "w")) @@ -64,7 +69,7 @@ def ConnectAlias(alias, command=False): if conf.has_option(alias, "password"): password = base64.b32decode(base64.b16decode( base64.b64decode(conf.get(alias, "password")))) - exec_string = 'sshpass -p "' + password + '" ' + exec_string = 'sshpass -p "' + password.decode('utf-8') + '" ' if conf.has_option(alias, "exec_string"): exec_string = exec_string + conf.get(alias, "exec_string") if command: @@ -118,7 +123,7 @@ def CMDGroup(group): def CMDEdit(alias): if conf.has_section(alias): - if conf.has_option(alias, "string"): + if conf.has_option(alias, "exec_string"): prompt_edit = ("".join(["Enter connection string for existing alias ", "(example: ssh user@somehost.com):\n"])) string = "" @@ -148,11 +153,10 @@ def CMDPassword(alias): print("Can't set password for group.") else: if conf.has_section(alias): - prompt_pass = ("[UNSAFE] Enter password for sshpass: ") + prompt_pass = ("[UNSAFE] Enter password for sshpass (Ctrl+C - cancel, blank - clear password):\n") string = "" string = getpass(prompt_pass) - if not string == "": - SetPassword(alias, string) + SetPassword(alias, string) else: print("error: '" + alias + "' alias does not exists") @@ -600,8 +604,7 @@ def CursesMain(): (height // 2) - 1, 3, " Enter user password for sshpass and press 'enter':\n>", normal_text, highlight_text, "password") - if not set_password == "": - SetPassword(strings[position - 1].split()[0].strip(), set_password) + SetPassword(strings[position - 1].split()[0].strip(), set_password) strings = GetTreeList(False, expanded) stringsfull = GetTreeList(True, expanded) if (key_pressed == ord('r') or key_pressed == ord(