Prevent /dev/shm files being generated before a keyboard interrupt

This commit is contained in:
2022-01-10 22:23:21 -05:00
parent 700d5701fd
commit e2f45c7cac
2 changed files with 56 additions and 42 deletions
+52 -39
View File
@@ -206,19 +206,21 @@ def sync(): # calls sshync to sync changes to the user's server
def add_entry(): # adds a new entry
_shm_folder, _shm_entry = None, None # sets base-line values to avoid errors
_entry_name = str(input('\nName of entry: '))
if _entry_name.startswith('/'):
_entry_name = _entry_name.replace('/', '', 1)
_shm_folder, _shm_entry = shm_gen()
if argument == 'add note' or argument == 'add -n':
_shm_folder, _shm_entry = shm_gen()
system(f"nano /dev/shm/{_shm_folder}/{_shm_entry}-n")
_notes = open(f"/dev/shm/{_shm_folder}/{_shm_entry}-n", 'r').read()
open(f"/dev/shm/{_shm_folder}/{_shm_entry}", 'w').writelines('\n\n\n\n' + _notes + '\n\n')
if argument == 'add password' or argument == 'add -p':
elif argument == 'add password' or argument == 'add -p':
_username = str(input('Username: '))
_password = str(input('Password: '))
_url = str(input('URL: '))
_add_note = input('Add a note to this entry? (y/N) ')
_shm_folder, _shm_entry = shm_gen()
if _add_note.lower() == 'y':
system(f"nano /dev/shm/{_shm_folder}/{_shm_entry}-n")
_notes = open(f"/dev/shm/{_shm_folder}/{_shm_entry}-n", 'r').read()
@@ -252,52 +254,51 @@ def rename(): # renames an entry or folder TODO delete original from server to
def edit(): # edits the contents of an entry
_shm_folder, _shm_entry = None, None # sets base-line values to avoid errors
print()
system(f"cd {directory}; ls -1 *") # TODO replace with new list
try:
_entry_name = str(input('\nWhat file would you like to edit? '))
if _entry_name.startswith('/'):
_entry_name = _entry_name.replace('/', '', 1)
except KeyboardInterrupt:
_entry_name = None
print('\n')
_entry_name = str(input('\nWhat file would you like to edit? '))
if not Path(f"{directory}{_entry_name}.gpg").is_file():
print("\nYou are trying to edit a file that does not exist!\n")
s_exit()
_shm_folder, _shm_entry = shm_gen()
try:
if _entry_name.startswith('/'):
_entry_name = _entry_name.replace('/', '', 1)
if argument == 'edit username' or argument == 'edit -u':
_detail = str(input('New Username: '))
_shm_folder, _shm_entry = shm_gen()
system(f"gpg -d --output /dev/shm/{_shm_folder}/{_shm_entry} '{directory}{_entry_name}.gpg'")
if not Path(f"/dev/shm/{_shm_folder}/{_shm_entry}").is_file():
rmtree(f"/dev/shm/{_shm_folder}")
print("\nYou are trying to edit a file that does not exist!\n")
s_exit()
if argument == 'edit username' or argument == 'edit -u':
_detail = str(input('New Username: '))
replace_line(f"/dev/shm/{_shm_folder}/{_shm_entry}", 0, _detail + '\n')
if argument == 'edit password' or argument == 'edit -p':
_detail = str(input('New Password: '))
replace_line(f"/dev/shm/{_shm_folder}/{_shm_entry}", 1, _detail + '\n')
if argument == 'edit url' or argument == 'edit -l':
_detail = str(input('New URL: '))
replace_line(f"/dev/shm/{_shm_folder}/{_shm_entry}", 2, _detail + '\n')
if argument == 'edit note' or argument == 'edit -n':
edit_note(_shm_folder, _shm_entry)
remove(f"{directory}{_entry_name}.gpg")
encrypt(_shm_folder, _shm_entry, _entry_name)
system(f"gpg -d '{directory}{_entry_name}.gpg'")
except KeyboardInterrupt:
rmtree(f"/dev/shm/{_shm_folder}")
print('\n')
s_exit()
replace_line(f"/dev/shm/{_shm_folder}/{_shm_entry}", 0, _detail + '\n')
elif argument == 'edit password' or argument == 'edit -p':
_detail = str(input('New Password: '))
_shm_folder, _shm_entry = shm_gen()
system(f"gpg -d --output /dev/shm/{_shm_folder}/{_shm_entry} '{directory}{_entry_name}.gpg'")
replace_line(f"/dev/shm/{_shm_folder}/{_shm_entry}", 1, _detail + '\n')
elif argument == 'edit url' or argument == 'edit -l':
_detail = str(input('New URL: '))
_shm_folder, _shm_entry = shm_gen()
system(f"gpg -d --output /dev/shm/{_shm_folder}/{_shm_entry} '{directory}{_entry_name}.gpg'")
replace_line(f"/dev/shm/{_shm_folder}/{_shm_entry}", 2, _detail + '\n')
elif argument == 'edit note' or argument == 'edit -n':
_shm_folder, _shm_entry = shm_gen()
system(f"gpg -d --output /dev/shm/{_shm_folder}/{_shm_entry} '{directory}{_entry_name}.gpg'")
edit_note(_shm_folder, _shm_entry)
remove(f"{directory}{_entry_name}.gpg")
encrypt(_shm_folder, _shm_entry, _entry_name)
system(f"gpg -d '{directory}{_entry_name}.gpg'")
def gen(): # generates a password for a new or an existing entry
_username, _url, _notes = None, None, None # sets base-line values to avoid errors
_shm_folder, _shm_entry = shm_gen()
if argument == 'gen update' or argument == 'gen -u':
print()
system(f"cd {directory}; ls -1 *") # TODO replace with new list
_entry_name = str(input('\nName of service: '))
if _entry_name.startswith('/'):
_entry_name = _entry_name.replace('/', '', 1)
if argument == 'gen update' or argument == 'gen -u':
if not Path(f"{directory}{_entry_name}.gpg").is_file():
print("\nYou are trying to edit a file that does not exist!\n")
s_exit()
if argument != 'gen update' and argument != 'gen -u':
_username = str(input('Username: '))
_pass_length = int(input('How many characters should be in the password? '))
@@ -310,13 +311,13 @@ def gen(): # generates a password for a new or an existing entry
if argument != 'gen update' and argument != 'gen -u':
_url = str(input('URL: '))
_notes = str(input('Additional notes: ')) # TODO update w/new notes system
if argument != 'gen update' and argument != 'gen -u':
_shm_folder, _shm_entry = shm_gen()
open(f"/dev/shm/{_shm_folder}/{_shm_entry}", 'w').writelines(_username + '\n' + _pass_gen + '\n' + _url +
'\n\n' + _notes + '\n\n')
if argument != 'gen update' and argument != 'gen -u':
encrypt(_shm_folder, _shm_entry, _entry_name)
system(f"gpg -d '{directory}{_entry_name}.gpg'")
else:
_shm_folder, _shm_entry = shm_gen()
system(f"gpg -d --output /dev/shm/{_shm_folder}/{_shm_entry} '{directory}{_entry_name}.gpg'")
replace_line(f"/dev/shm/{_shm_folder}/{_shm_entry}", 1, _pass_gen + '\n')
remove(f"{directory}{_entry_name}.gpg")
@@ -441,17 +442,29 @@ elif argument == 'edit rename' or argument == 'edit relocate' or argument == 'ed
s_exit()
elif argument == 'edit username' or argument == 'edit -u' or argument == 'edit password' or argument == 'edit -p' or \
argument == 'edit url' or argument == 'edit -l' or argument == 'edit note' or argument == 'edit -n':
edit() # KeyboardInterrupt exception in function for temporary file deletion
try:
edit()
except KeyboardInterrupt:
print('\n')
s_exit()
elif argument == 'gen' or argument == 'gen update' or argument == 'gen -u':
try:
gen()
try:
gen()
except FileNotFoundError:
print('\nThe file does not exist!\n')
s_exit()
except KeyboardInterrupt:
print('\n')
s_exit()
elif argument == 'copy username' or argument == 'copy -u' or argument == 'copy password' or argument == 'copy -p' or \
argument == 'copy url' or argument == 'copy -l' or argument == 'copy note' or argument == 'copy -n':
try:
copy_data()
try:
copy_data()
except FileNotFoundError:
print('\nThe file does not exist!\n')
s_exit()
except KeyboardInterrupt:
print('\n')
s_exit()
+4 -3
View File
@@ -2,18 +2,19 @@ sshyp 2022.01.10.fr2.3
The Lighter Update - Patch 3
This release is a hotfix for 2021.12.01.fr2.2.
This release is a hotfix for 2021.12.01.fr2.2. It features critical security fixes and quality-of-life improvements.
New features:
- a man page has been added
Changes:
** the gen command in sshyp has been updated to use the newer notetaking system
- printing functions in sshyp have been combined into one function (arguments determine section to print)
** file not found exceptions have been re-implemented
- file not found exceptions have been re-implemented
** when syncing, a check is made to see if any folders are not on all devices - if the check comes back true, it is corrected
- folders generated in /dev/shm are once again properly deleted with keyboard interrupts
- folders in /dev/shm are no longer created before input from the user
- .lower() is now used to remove casing when checking inputs
- fixed syncing of files (specifically downloading) with special characters, such as '('
- fixed program still continuing after trying to edit an entry that doesn't exist