Use ASCII 30 and 31 as separators, removes limitations on "@", "^&*", and "*&^".

Former-commit-id: cd08e1adde9f810e0099338722b617357055c422 [formerly 289d12f45a]
Former-commit-id: 7f70d015e3afe2101aba2d1d21001101db0de81e
This commit is contained in:
2022-11-25 12:00:51 -05:00
parent 176ee623cf
commit 3392e3ceea
4 changed files with 5 additions and 23 deletions
+1 -5
View File
@@ -1,4 +1,4 @@
.TH sshyp 1 "06 November 2022" "v1.2.0" "sshyp man page" .TH sshyp 1 "25 November 2022" "v1.2.1" "sshyp man page"
.SH NAME .SH NAME
sshyp \- A very simple self-hosted, synchronized password manager for UNIX(-like) systems. Alternative to (and compatible with) pass/password-store. sshyp \- A very simple self-hosted, synchronized password manager for UNIX(-like) systems. Alternative to (and compatible with) pass/password-store.
.SH SYNOPSIS .SH SYNOPSIS
@@ -88,10 +88,6 @@ whitelist:
list/-l view all registered device ids and their quick-unlock whitelist status list/-l view all registered device ids and their quick-unlock whitelist status
add whitelist a device id for quick-unlock add whitelist a device id for quick-unlock
delete/del remove a device id from the quick-unlock whitelist delete/del remove a device id from the quick-unlock whitelist
.SH LIMITATIONS
The following characters/character sequences are not supported in entry/folder titles:
@ ^&* *&^
.SH SETUP .SH SETUP
sshyp operates on a client-server model, and thus requires you to have access to your own server (whether it be a physical home server or a cloud rental) with remote access via SSH. sshyp operates on a client-server model, and thus requires you to have access to your own server (whether it be a physical home server or a cloud rental) with remote access via SSH.
+1 -7
View File
@@ -1,14 +1,8 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
# external modules
from os import system, walk from os import system, walk
from os.path import getmtime, join from os.path import getmtime, join
from sys import exit as s_exit
from subprocess import PIPE, run from subprocess import PIPE, run
from sys import exit as s_exit
# utility functions
def get_local_data(_directory, _device): # retrieves titles and mod times from the local device def get_local_data(_directory, _device): # retrieves titles and mod times from the local device
-3
View File
@@ -1,7 +1,4 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
# external modules
from os import environ, listdir, path, remove, system, uname, walk from os import environ, listdir, path, remove, system, uname, walk
from pathlib import Path from pathlib import Path
from random import randint, SystemRandom from random import randint, SystemRandom
+3 -8
View File
@@ -1,14 +1,9 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
# external modules
from os import listdir, remove, walk from os import listdir, remove, walk
from os.path import expanduser from os.path import expanduser
from shutil import rmtree from shutil import rmtree
# utility functions
def delete(_file_path, _target_database): # deletes an entry or folder, should be run remotely via ssh def delete(_file_path, _target_database): # deletes an entry or folder, should be run remotely via ssh
try: try:
if _file_path.endswith('/'): if _file_path.endswith('/'):
@@ -18,14 +13,14 @@ def delete(_file_path, _target_database): # deletes an entry or folder, should
except FileNotFoundError: except FileNotFoundError:
print(f"location does not exist {_target_database}") print(f"location does not exist {_target_database}")
for _device_name in listdir(expanduser('~/.config/sshyp/devices')): for _device_name in listdir(expanduser('~/.config/sshyp/devices')):
open(f"{expanduser('~/.config/sshyp/deleted/')}{_file_path.replace('/', '@')}^&*{_device_name}", 'w') open(expanduser('~/.config/sshyp/deleted/') + _file_path.replace('/', '\x1e') + '\x1f' + _device_name, 'w')
def deletion_check(_client_device_name): # creates a list of entries and folders to be deleted from a local machine def deletion_check(_client_device_name): # creates a list of entries and folders to be deleted from a local machine
open(expanduser('~/.config/sshyp/deletion_database'), 'w').write('') open(expanduser('~/.config/sshyp/deletion_database'), 'w').write('')
for _file in listdir(expanduser('~/.config/sshyp/deleted')): for _file in listdir(expanduser('~/.config/sshyp/deleted')):
_file_path = _file.replace('@', '/').split('^&*')[0] _file_path, _sep, _device = _file.partition('\x1f')
_device = _file.split('^&*')[1] _file_path = _file_path.replace('\x1e', '/')
if _device == _client_device_name: if _device == _client_device_name:
try: try:
remove(f"{expanduser('~/.config/sshyp/deleted/')}{_file}") remove(f"{expanduser('~/.config/sshyp/deleted/')}{_file}")