Compare commits

...
6 changed files with 90 additions and 16 deletions
+1 -1
View File
@@ -104,4 +104,4 @@ Long-term Goals:
# Known Issues
Currently, if a client is missing folders that exist on the server, the contents of the missing folders will fail to download. A temporary workaround is to manually create the folders on the client. This will be addressed.
Currently, the entry list displays each entry with the file extension ".gpg" visible (which you do not type when reading, modifying, or creating an entry). This will be corrected when the new entry list is added.
+24 -6
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-shear.py', path.expanduser('~/shear.py'))
copy('/usr/bin/sshyp-remote.py', path.expanduser('~/sshyp-remote.py'))
print('\nMake sure the ssh service is running and properly configured.\n\nConfiguration complete!\n')
s_exit()
else:
@@ -107,6 +107,8 @@ def tweak(): # runs configuration wizard
path.expanduser('~/.ssh/sshyp'), _ip, _port, _username_ssh)
# device name configuration
for _name in listdir(path.expanduser('~/.config/sshyp/devices')): # remove existing device name
remove(f"{path.expanduser('~/.config/sshyp/devices/')}{_name}")
print('\nIMPORTANT: This name MUST be unique amongst your client devices. '
'\nThis is used to keep track of which devices have up-to-date databases.\n')
_client_device_name = str(input('What would you like to name this device? '))
@@ -158,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.3 /')
print('/ Version 2022.02.16.fr4.4 /')
print('/ The High-Tech Shears Update /')
print('/ /')
print('////////////////////////////////////////////////////////\n')
@@ -210,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 shear"
f"; shear.check(\"'\"{client_device_name}\"'\")'\"")
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"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:
@@ -231,6 +233,22 @@ def sync(): # calls sshync to sync changes to the user's server
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"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:
_folder_database = open(path.expanduser('~/.config/sshyp/folder_database')).readlines()
except (FileNotFoundError, IndexError):
print('\nThe folder database does not exist or is corrupted.\n')
_folder_database = None
s_exit()
for _folder in _folder_database:
if Path(f"{path.expanduser('~/.password-pasture/')}{_folder[:-1]}").is_dir():
pass
else:
Path(f"{path.expanduser('~/.password-pasture/')}{_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 {} +')
@@ -416,8 +434,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 shear"
f"; shear.delete(\"'\"{_entry_name}\"'\")'\"")
system(f"ssh -i '{path.expanduser('~/.ssh/sshyp')}' -p {port} {username_ssh}@{ip} \"python -c 'import sshyp-remote"
f"; sshyp-remote.delete(\"'\"{_entry_name}\"'\")'\"")
# program start sequence
+9 -2
View File
@@ -3,7 +3,7 @@
# external modules
from os import remove, listdir
from os.path import expanduser
from os.path import expanduser, isdir, join
from shutil import rmtree
@@ -24,7 +24,7 @@ def delete(_file_path):
open(f"{expanduser('~/.config/sshyp/deleted/')}{_file_path.replace('/', '@')}^&*{_device_name}", 'w')
def check(_client_device_name):
def deletion_check(_client_device_name):
open(expanduser('~/.config/sshyp/deletion_database'), 'w').write('')
for _file in listdir(expanduser('~/.config/sshyp/deleted')):
_file_path = _file.replace('@', '/').split('^&*')[0]
@@ -35,3 +35,10 @@ def check(_client_device_name):
except FileNotFoundError:
pass
open(expanduser('~/.config/sshyp/deletion_database'), 'a').write(_file_path + '\n')
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')
+47
View File
@@ -1,3 +1,50 @@
sshyp 2022.02.16.fr4.4
The High-Tech Shears Update - Patch 4
This release automatically generates user-created folders on new client devices.
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
Changes:
- old device names are now automatically deleted (locally) when running "sshyp tweak", to prevent conflicts
&&
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.3
The High-Tech Shears Update - Patch 3
-2
View File
@@ -73,8 +73,6 @@ gen:
.SH LIMITATIONS
The following limitations will be corrected in future updates:
Currently, folders (for sorting) are not replicated onto new clients (they need to be manually created before syncing).
Currently, the entry list displays each entry with the file extension ".gpg" visible (which you do not type when reading, modifying, or creating an entry). This will be corrected when the new entry list is added.
The following characters/character sequences are not supported in entry/folder titles:
+9 -5
View File
@@ -1,14 +1,18 @@
sshyp 2022.02.16.fr4.3
sshyp 2022.02.16.fr4.4
The High-Tech Shears Update - Patch 3
The High-Tech Shears Update - Patch 4
This release addresses a bug with local entry deletion.
This release automatically generates user-created folders on new client devices.
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).
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
Changes:
- fixed an issue where entries could not be deleted locally
- old device names are now automatically deleted (locally) when running "sshyp tweak", to prevent conflicts
&&