From e669e4fd192304ec376c333b2b55ddef885e6f94 Mon Sep 17 00:00:00 2001 From: brejela Date: Thu, 23 Dec 2021 14:31:23 -0300 Subject: [PATCH] ADD: Added random string command, fixed copy bug --- CHANGELOG | 5 ++++- steelbox.py | 50 +++++++++++++++++++++++++++++++++++--------------- steelbox.sh | 2 +- 3 files changed, 40 insertions(+), 17 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index da9058e..3725189 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -13,4 +13,7 @@ · Minor UI tweaks · Added 'modify' command - 0.5: - · Added "copy password to clipboard" command \ No newline at end of file + · Added "copy password to clipboard" command +- 0.6: + · Added "random string for password" function + · Fixed a bug with the copy command when the database is empty \ No newline at end of file diff --git a/steelbox.py b/steelbox.py index 490f794..c936921 100644 --- a/steelbox.py +++ b/steelbox.py @@ -5,7 +5,8 @@ from curses.textpad import Textbox import sys import os import pyperclip as pc -version = sys.argv[1] +import random +version = " test" ## Initialization of bottomline dependencies @@ -19,8 +20,8 @@ fields = ["service", "user", "pswd"] # Password file HOMEDIR = os.environ['HOME'] -PASFILE=HOMEDIR+"/.pasfile.csv" - +#PASFILE=HOMEDIR+"/.pasfile.csv" +PASFILE="pasfile.csv" # Initializes Curses' screen def main(stdscr): @@ -156,7 +157,7 @@ def main(stdscr): COLUMN+=16 NROWS+=1 mainwin.refresh() - STATUS_MESSAGE = "cmds: PrvPage(F1),NxtPage(F2),(d|el)ete,(e)xamine,(n)ew,(c)opy,(m)odify,(q)uit" + STATUS_MESSAGE = "PrvPage(F1),NxtPage(F2),(d|el),(e)xamine,(n)ew,(c)opy,(m)odify,(r)andom,(q)uit" statusWin.addstr(0,0, STATUS_MESSAGE) statusWin.refresh() @@ -196,13 +197,22 @@ def main(stdscr): GLOBAL_CURSOR+=MAX_ITEMS elif c == ord('c') or c == curses.KEY_F3: - pc.copy(files[GLOBAL_CURSOR]['pswd']) - statusWin.border() - STATUS_MESSAGE = "Copied password for " + files[GLOBAL_CURSOR]['service'] - statusWin.addstr(0,0, STATUS_MESSAGE) - statusWin.refresh() - mainwin.getch() + if len(files) > 0: + pc.copy(files[GLOBAL_CURSOR]['pswd']) + statusWin.border() + STATUS_MESSAGE = "Copied password for " + files[GLOBAL_CURSOR]['service'] + statusWin.addstr(0,0, STATUS_MESSAGE) + statusWin.refresh() + mainwin.getch() + elif c == ord('r'): + ranWin = curses.newwin(3, 49, int(TERM_LINES/2), int(TERM_COLS/2)) + ranWin.border() + ranWin.addstr(0, 1, "Random string") + ranWin.addstr(1, 1, randString()) + ranWin.refresh() + ranWin.getch() + elif c == ord('d') or c == curses.KEY_DC: dlWin = curses.newwin(3, 22, int(TERM_LINES/2), int(TERM_COLS/2)) dlWin.border() @@ -315,19 +325,19 @@ def main(stdscr): psWin.refresh() # Takes data - STATUS_MESSAGE = "Edit SERVICE field - CTRL+G to enter, MAX 45 CHARS" + STATUS_MESSAGE = "Edit SERVICE field - CTRL+G to enter, leave empty to cancel, MAX 45 CHARS" statusWin.border() statusWin.addstr(0,0, STATUS_MESSAGE) statusWin.refresh() svBox.edit() passService = svBox.gather() - STATUS_MESSAGE = "Edit USER field - CTRL+G to enter, MAX 45 CHARS" + STATUS_MESSAGE = "Edit USER field - CTRL+G to enter, leave empty to cancel, MAX 45 CHARS" statusWin.border() statusWin.addstr(0,0, STATUS_MESSAGE) statusWin.refresh() usBox.edit() passUser = usBox.gather() - STATUS_MESSAGE = "Edit PASSWORD field - CTRL+G to enter, MAX 45 CHARS" + STATUS_MESSAGE = "Edit PASSWORD field - CTRL+G to enter, leave empty for random string" statusWin.border() statusWin.addstr(0,0, STATUS_MESSAGE) statusWin.refresh() @@ -376,7 +386,7 @@ def main(stdscr): npWin.addstr(1, 1, "SRVC:") npWin.addstr(2, 1, "USER:") npWin.addstr(3, 1, "PSWD:") - STATUS_MESSAGE = "CTRL+G to enter, Leave any empty to cancel, MAX 45 CHARS" + STATUS_MESSAGE = "CTRL+G to enter, MAX 45 CHARS" statusWin.addstr(0,0, STATUS_MESSAGE) statusWin.refresh() npWin.refresh() @@ -389,7 +399,9 @@ def main(stdscr): psBox.edit() passPswd = psBox.gather() - if passService != '' and passUser != '' and passPswd != '': + if passService != '' and passUser != '': + if passPswd == '': + passPswd = randString() # wtf = write to file wtf = {'service' : passService, 'user' : passUser, 'pswd' : passPswd} files.append(wtf) @@ -469,5 +481,13 @@ def main(stdscr): files.append(ids) +def randString(): + result = '' + for _ in range(45): + ascNum = random.randint(33, 126) + if ascNum == 32: + ascNum += random.randint(1, 10) + result += chr(ascNum) + return(result) wrapper(main) \ No newline at end of file diff --git a/steelbox.sh b/steelbox.sh index 607d37b..3ff1999 100755 --- a/steelbox.sh +++ b/steelbox.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -version="0.5" +version="0.6" echo Steelbox V$version