Compare commits

...
5 changed files with 158 additions and 27 deletions
+13 -10
View File
@@ -61,7 +61,7 @@ def tweak(): # runs configuration wizard
open(path.expanduser('~/.config/sshyp/sshyp-device'), 'w').write(_device_type) open(path.expanduser('~/.config/sshyp/sshyp-device'), 'w').write(_device_type)
Path(path.expanduser('~/.config/sshyp/deleted')).mkdir(0o700, parents=True, exist_ok=True) Path(path.expanduser('~/.config/sshyp/deleted')).mkdir(0o700, parents=True, exist_ok=True)
copy('/usr/bin/sshync.py', path.expanduser('~/')) copy('/usr/bin/sshync.py', path.expanduser('~/'))
copy('/usr/bin/sshyp-remote.py', path.expanduser('~/sshyp-remote.py')) copy('/usr/bin/sshypRemote.py', path.expanduser('~/sshypRemote.py'))
print('\nMake sure the ssh service is running and properly configured.\n\nConfiguration complete!\n') print('\nMake sure the ssh service is running and properly configured.\n\nConfiguration complete!\n')
s_exit() s_exit()
else: else:
@@ -160,7 +160,7 @@ def print_info(): # prints help text based on argument
print('/ /') print('/ /')
print('/ sshyp Copyright (C) 2021-2022 Randall Winkhart /') print('/ sshyp Copyright (C) 2021-2022 Randall Winkhart /')
print('/ /') print('/ /')
print('/ Version 2022.02.16.fr4.4 /') print('/ Version 2022.02.16.fr4.7 /')
print('/ The High-Tech Shears Update /') print('/ The High-Tech Shears Update /')
print('/ /') print('/ /')
print('////////////////////////////////////////////////////////\n') print('////////////////////////////////////////////////////////\n')
@@ -212,8 +212,8 @@ def read_shortcut(): # shortcut to quickly read an entry
def sync(): # calls sshync to sync changes to the user's server def sync(): # calls sshync to sync changes to the user's server
print('\nSyncing entries with the server device...\n') print('\nSyncing entries with the server device...\n')
# check for deletions # check for deletions
system(f"ssh -i '{path.expanduser('~/.ssh/sshyp')}' -p {port} {username_ssh}@{ip} \"python -c 'import sshyp-remote" system(f"ssh -i '{path.expanduser('~/.ssh/sshyp')}' -p {port} {username_ssh}@{ip} \"python -c 'import sshypRemote"
f"; sshyp-remote.deletion_check(\"'\"{client_device_name}\"'\")'\"") f"; sshypRemote.deletion_check(\"'\"{client_device_name}\"'\")'\"")
system(f"sftp -p -q -i '{path.expanduser('~/.ssh/sshyp')}' -P {port} {username_ssh}@{ip}:" system(f"sftp -p -q -i '{path.expanduser('~/.ssh/sshyp')}' -P {port} {username_ssh}@{ip}:"
f"'/home/{username_ssh}/.config/sshyp/deletion_database' {path.expanduser('~/.config/sshyp/')}") f"'/home/{username_ssh}/.config/sshyp/deletion_database' {path.expanduser('~/.config/sshyp/')}")
try: try:
@@ -225,17 +225,19 @@ def sync(): # calls sshync to sync changes to the user's server
for _file in _deletion_database: for _file in _deletion_database:
if _file[:-1].endswith('/'): if _file[:-1].endswith('/'):
try: try:
print(f"Removing folder {path.expanduser('~/.password-pasture/')}{_file[:-1]}...\n")
rmtree(f"{path.expanduser('~/.password-pasture/')}{_file[:-1]}") rmtree(f"{path.expanduser('~/.password-pasture/')}{_file[:-1]}")
except FileNotFoundError: except FileNotFoundError:
print('Folder does not exist locally.\n') print('Folder does not exist locally.\n')
else: else:
try: try:
print(f"Removing entry {path.expanduser('~/.password-pasture/')}{_file[:-1]}...\n")
remove(f"{path.expanduser('~/.password-pasture/')}{_file[:-1]}.gpg") remove(f"{path.expanduser('~/.password-pasture/')}{_file[:-1]}.gpg")
except (FileNotFoundError, IsADirectoryError): except (FileNotFoundError, IsADirectoryError):
print('File does not exist locally.\n') print('File does not exist locally.\n')
# check for new folders # check for new folders
system(f"ssh -i '{path.expanduser('~/.ssh/sshyp')}' -p {port} {username_ssh}@{ip} \"python -c 'import sshyp-remote" system(f"ssh -i '{path.expanduser('~/.ssh/sshyp')}' -p {port} {username_ssh}@{ip} \"python -c 'import sshypRemote"
f"; sshyp-remote.folder_check()'\"") f"; sshypRemote.folder_check()'\"")
system(f"sftp -p -q -i '{path.expanduser('~/.ssh/sshyp')}' -P {port} {username_ssh}@{ip}:" system(f"sftp -p -q -i '{path.expanduser('~/.ssh/sshyp')}' -P {port} {username_ssh}@{ip}:"
f"'/home/{username_ssh}/.config/sshyp/folder_database' {path.expanduser('~/.config/sshyp/')}") f"'/home/{username_ssh}/.config/sshyp/folder_database' {path.expanduser('~/.config/sshyp/')}")
try: try:
@@ -245,10 +247,11 @@ def sync(): # calls sshync to sync changes to the user's server
_folder_database = None _folder_database = None
s_exit() s_exit()
for _folder in _folder_database: for _folder in _folder_database:
if Path(f"{path.expanduser('~/.password-pasture/')}{_folder[:-1]}").is_dir(): if Path(f"{path.expanduser('~')}{_folder[:-1]}").is_dir():
pass pass
else: else:
Path(f"{path.expanduser('~/.password-pasture/')}{_folder[:-1]}").mkdir(0o700, parents=True, exist_ok=True) print(f"Adding folder {path.expanduser('~')}{_folder[:-1]}...\n")
Path(f"{path.expanduser('~')}{_folder[:-1]}").mkdir(0o700, parents=True, exist_ok=True)
# set permissions before uploading # set permissions before uploading
system('find ' + directory + ' -type d -exec chmod -R 700 {} +') system('find ' + directory + ' -type d -exec chmod -R 700 {} +')
system('find ' + directory + ' -type f -exec chmod -R 600 {} +') system('find ' + directory + ' -type f -exec chmod -R 600 {} +')
@@ -434,8 +437,8 @@ def remove_data(): # deletes an entry from the server and flags it for local de
except FileNotFoundError: except FileNotFoundError:
print('\nAccess denied.\n') print('\nAccess denied.\n')
s_exit() s_exit()
system(f"ssh -i '{path.expanduser('~/.ssh/sshyp')}' -p {port} {username_ssh}@{ip} \"python -c 'import sshyp-remote" system(f"ssh -i '{path.expanduser('~/.ssh/sshyp')}' -p {port} {username_ssh}@{ip} \"python -c 'import sshypRemote"
f"; sshyp-remote.delete(\"'\"{_entry_name}\"'\")'\"") f"; sshypRemote.delete(\"'\"{_entry_name}\"'\")'\"")
# program start sequence # program start sequence
+7 -6
View File
@@ -2,8 +2,8 @@
# external modules # external modules
from os import remove, listdir from os import listdir, remove, walk
from os.path import expanduser, isdir, join from os.path import expanduser
from shutil import rmtree from shutil import rmtree
@@ -38,7 +38,8 @@ def deletion_check(_client_device_name):
def folder_check(): def folder_check():
open(expanduser('~/.config/sshyp/deletion_database'), 'w').write('') open(expanduser('~/.config/sshyp/folder_database'), 'w').write('')
for _file in listdir(expanduser('~/.password-pasture')): for _root, _directories, _files in walk(expanduser('~/.password-pasture')):
if isdir(join('~/.config/sshyp/deletion_database/', _file)): for _dir in _directories:
open(expanduser('~/.config/sshyp/folder_database'), 'a').write(_file + '\n') open(expanduser('~/.config/sshyp/folder_database'), 'a')\
.write(f"{_root.replace(expanduser('~'), '')}/{_dir}\n")
+130
View File
@@ -1,3 +1,133 @@
sshyp 2022.02.16.fr4.7
The High-Tech Shears Update - Patch 7
This release enables recursive folder syncing.
Note: Upgrading from releases older than fr4.7 requires the configuration ("sshyp tweak") to be re-done, as the configuration process has changed.
Changes:
- re-wrote folder checking function to fetch subdirectories recursively
- added in user-facing messages for when folders are being synced or entries are being removed
- fixed a typo preventing folder syncing from working (actually tested this time)
&&
Planned for next major update (fr5, The sshyp Doing a Split Update):
sshyp:
** sshyp has recieved a major visual overhaul
^ this includes the new file list and thematic text art
sshync:
** sshync has been split into a separate package and now has standalone functionality as a backup/syncing utility
^ more details will be available in the sshync repo, once it is created
&&
Planned for next, next major update (fr6, The Farmer Shearing the sshyp Update):
** imporove password generator to guarantee more secure results
** enforce permissions on the server-side
** allow for copying entire notes (not just first line)
** ability to pass entries as arguments for more functions
&&
Backlog:
** create separate gui frontend targetting mobile and desktop Linux
** auto-completion on tab (currently unsure of best way to make this work)
<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
sshyp 2022.02.16.fr4.6
The High-Tech Shears Update - Patch 6
This release addresses a critical typo.
Note: Upgrading from releases older than fr4.6 requires the configuration ("sshyp tweak") to be re-done, as the configuration process has changed.
Changes:
- corrected a typo error causing folder syncing issues
&&
Planned for next major update (fr5, The sshyp Doing a Split Update):
sshyp:
** sshyp has recieved a major visual overhaul
^ this includes the new file list and thematic text art
sshync:
** sshync has been split into a separate package and now has standalone functionality as a backup/syncing utility
^ more details will be available in the sshync repo, once it is created
&&
Planned for next, next major update (fr6, The Farmer Shearing the sshyp Update):
** 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 (in sshyp)
** imporove password generator to guarantee more secure results
** enforce permissions on the server-side
** allow for copying entire notes (not just first line)
** ability to pass entries as arguments for more functions
&&
Backlog:
** create separate gui frontend targetting mobile and desktop Linux
** auto-completion on tab (currently unsure of best way to make this work)
<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
sshyp 2022.02.16.fr4.5
The High-Tech Shears Update - Patch 5
This release addresses a critical syntax error.
Note: Upgrading from releases older than fr4.5 requires the configuration ("sshyp tweak") to be re-done, as the configuration process has changed.
Changes:
- corrected a syntax error causing critical functionality issues
&&
Planned for next major update (fr5, The sshyp Doing a Split Update):
sshyp:
** sshyp has recieved a major visual overhaul
^ this includes the new file list and thematic text art
sshync:
** sshync has been split into a separate package and now has standalone functionality as a backup/syncing utility
^ more details will be available in the sshync repo, once it is created
&&
Planned for next, next major update (fr6, The Farmer Shearing the sshyp Update):
** 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 (in sshyp)
** imporove password generator to guarantee more secure results
** enforce permissions on the server-side
** allow for copying entire notes (not just first line)
** ability to pass entries as arguments for more functions
&&
Backlog:
** create separate gui frontend targetting mobile and desktop Linux
** auto-completion on tab (currently unsure of best way to make this work)
<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
sshyp 2022.02.16.fr4.4 sshyp 2022.02.16.fr4.4
The High-Tech Shears Update - Patch 4 The High-Tech Shears Update - Patch 4
+1 -1
View File
@@ -1,4 +1,4 @@
.TH sshyp 1 "16 February 2022" "2022.02.16.fr4.1" "sshyp man page" .TH sshyp 1 "16 February 2022" "2022.02.16.fr4.7" "sshyp man page"
.SH NAME .SH NAME
sshyp \- A very simple self-hosted, synchronized password manager. Alternative to GNU pass. sshyp \- A very simple self-hosted, synchronized password manager. Alternative to GNU pass.
.SH SYNOPSIS .SH SYNOPSIS
+7 -10
View File
@@ -1,18 +1,16 @@
sshyp 2022.02.16.fr4.4 sshyp 2022.02.16.fr4.7
The High-Tech Shears Update - Patch 4 The High-Tech Shears Update - Patch 7
This release automatically generates user-created folders on new client devices. This release enables recursive folder syncing.
Note: Upgrading to releases in the fr4 series requires the configuration ("sshyp tweak") to be re-done, as a device name now must be set (for multi-client deletion). Even upgrading from fr4.3 to fr4.4 will require re-running "sshyp tweak" due to file name changes. Note: Upgrading from releases older than fr4.7 requires the configuration ("sshyp tweak") to be re-done, as the configuration process has changed.
Features:
- implemented proper folder syncing for new clients and clients missing folders that exist server-side
Changes: Changes:
- old device names are now automatically deleted (locally) when running "sshyp tweak", to prevent conflicts - re-wrote folder checking function to fetch subdirectories recursively
- added in user-facing messages for when folders are being synced or entries are being removed
- fixed a typo preventing folder syncing from working (actually tested this time)
&& &&
@@ -30,7 +28,6 @@ sshync:
Planned for next, next major update (fr6, The Farmer Shearing the sshyp Update): Planned for next, next major update (fr6, The Farmer Shearing the sshyp Update):
** 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 (in sshyp)
** imporove password generator to guarantee more secure results ** imporove password generator to guarantee more secure results
** enforce permissions on the server-side ** enforce permissions on the server-side
** allow for copying entire notes (not just first line) ** allow for copying entire notes (not just first line)