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)
Path(path.expanduser('~/.config/sshyp/deleted')).mkdir(0o700, parents=True, exist_ok=True)
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')
s_exit()
else:
@@ -160,7 +160,7 @@ def print_info(): # prints help text based on argument
print('/ /')
print('/ sshyp Copyright (C) 2021-2022 Randall Winkhart /')
print('/ /')
print('/ Version 2022.02.16.fr4.4 /')
print('/ Version 2022.02.16.fr4.7 /')
print('/ The High-Tech Shears Update /')
print('/ /')
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
print('\nSyncing entries with the server device...\n')
# check for deletions
system(f"ssh -i '{path.expanduser('~/.ssh/sshyp')}' -p {port} {username_ssh}@{ip} \"python -c 'import sshyp-remote"
f"; sshyp-remote.deletion_check(\"'\"{client_device_name}\"'\")'\"")
system(f"ssh -i '{path.expanduser('~/.ssh/sshyp')}' -p {port} {username_ssh}@{ip} \"python -c 'import sshypRemote"
f"; sshypRemote.deletion_check(\"'\"{client_device_name}\"'\")'\"")
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/')}")
try:
@@ -225,17 +225,19 @@ def sync(): # calls sshync to sync changes to the user's server
for _file in _deletion_database:
if _file[:-1].endswith('/'):
try:
print(f"Removing folder {path.expanduser('~/.password-pasture/')}{_file[:-1]}...\n")
rmtree(f"{path.expanduser('~/.password-pasture/')}{_file[:-1]}")
except FileNotFoundError:
print('Folder does not exist locally.\n')
else:
try:
print(f"Removing entry {path.expanduser('~/.password-pasture/')}{_file[:-1]}...\n")
remove(f"{path.expanduser('~/.password-pasture/')}{_file[:-1]}.gpg")
except (FileNotFoundError, IsADirectoryError):
print('File does not exist locally.\n')
# check for new folders
system(f"ssh -i '{path.expanduser('~/.ssh/sshyp')}' -p {port} {username_ssh}@{ip} \"python -c 'import sshyp-remote"
f"; sshyp-remote.folder_check()'\"")
system(f"ssh -i '{path.expanduser('~/.ssh/sshyp')}' -p {port} {username_ssh}@{ip} \"python -c 'import sshypRemote"
f"; sshypRemote.folder_check()'\"")
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/')}")
try:
@@ -245,10 +247,11 @@ def sync(): # calls sshync to sync changes to the user's server
_folder_database = None
s_exit()
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
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
system('find ' + directory + ' -type d -exec chmod -R 700 {} +')
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:
print('\nAccess denied.\n')
s_exit()
system(f"ssh -i '{path.expanduser('~/.ssh/sshyp')}' -p {port} {username_ssh}@{ip} \"python -c 'import sshyp-remote"
f"; sshyp-remote.delete(\"'\"{_entry_name}\"'\")'\"")
system(f"ssh -i '{path.expanduser('~/.ssh/sshyp')}' -p {port} {username_ssh}@{ip} \"python -c 'import sshypRemote"
f"; sshypRemote.delete(\"'\"{_entry_name}\"'\")'\"")
# program start sequence
+7 -6
View File
@@ -2,8 +2,8 @@
# external modules
from os import remove, listdir
from os.path import expanduser, isdir, join
from os import listdir, remove, walk
from os.path import expanduser
from shutil import rmtree
@@ -38,7 +38,8 @@ def deletion_check(_client_device_name):
def folder_check():
open(expanduser('~/.config/sshyp/deletion_database'), 'w').write('')
for _file in listdir(expanduser('~/.password-pasture')):
if isdir(join('~/.config/sshyp/deletion_database/', _file)):
open(expanduser('~/.config/sshyp/folder_database'), 'a').write(_file + '\n')
open(expanduser('~/.config/sshyp/folder_database'), 'w').write('')
for _root, _directories, _files in walk(expanduser('~/.password-pasture')):
for _dir in _directories:
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
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
sshyp \- A very simple self-hosted, synchronized password manager. Alternative to GNU pass.
.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.
Features:
- implemented proper folder syncing for new clients and clients missing folders that exist server-side
Note: Upgrading from releases older than fr4.7 requires the configuration ("sshyp tweak") to be re-done, as the configuration process has changed.
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):
** 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)