diff --git a/README.md b/README.md index 78a6840..11c9923 100755 --- a/README.md +++ b/README.md @@ -26,15 +26,11 @@ What sshyp can do: - securely manage a collection of encrypted passwords and notes via CLI - generate new, secure passwords to the user's choice in length and complexity -- securely sync said passwords and notes seamlessly between devices -- utilize [extensions](https://github.com/rwinkhart/sshyp-labs) to interact with your entries is additional ways (such as generating TOTP keys) +- securely sync said passwords and notes seamlessly between devices (or just manage them offline) +- utilize [extensions](https://github.com/rwinkhart/sshyp-labs) to interact with your entries is additional ways (such as generating TOTP keys or managing your entries in a GUI) - everything above with entries created by pass/password-store! - everything above on Haiku, FreeBSD, Linux, and Termux (an Android terminal emulator)! -What sshyp will likely do: - -- (planned v1.2.0) everything it already does, but also in a GUI for Linux/Haiku - What sshyp definitely won't do: - Non-UNIX(-like) support, e.g. Windows (I'd be happy to link to third-party ports, if someone were to make them) @@ -56,7 +52,7 @@ A packaging script is included in the root directory of the repo in order to pac ``` git clone https://github.com/rwinkhart/sshyp.git cd sshyp -./package.sh +./package.sh [target] ``` The packaging script has been tested on Arch Linux with "dpkg" as a dependency for Debian/Ubuntu and Termux packaging and "freebsd-pkg" as a dependency for FreeBSD packaging. @@ -93,8 +89,9 @@ man sshyp # Roadmap Short-term Goals: -- create minimal GUI app (Linux x86_64, Linux aarch64) -- various optimizations/bug fixes +- create minimal GUI app (Linux x86_64, Linux aarch64) - being done as an [extension](https://github.com/rwinkhart/sshyp-labs) +- significant optimizations +- vaious bug fixes Long-term Goals: diff --git a/extra/changelog-total b/extra/changelog-total index 70fe2b1..9756f69 100755 --- a/extra/changelog-total +++ b/extra/changelog-total @@ -1,3 +1,58 @@ +sshyp v1.2.0 + +the brisk bahh update + +this release focuses on speeding up the sshyp user experience by adding +new features that reduce wasted time + +compatibility-breaking changes: + +- new configuration options (quick-unlock, offline mode) have been added and +the configuration files have been reorganized + ^ simply running "sshyp tweak" and following the setup wizard will correct any compatibility + issues +- for quick-unlock security, device names have been replaced with more secure device ids + ^ older device names are still compatible, but for security reasons it is recommended + to delete any pre-existing device names from the server and allow "sshyp tweak" to re-register + your devices + +user-facing features: + +- quick-unlock mode has been added + ^ this allows you to use a shortened version of your password by verifying that your device + is whitelisted on your sshyp server - it's both faster and more secure than standard unlock, + but it requires an active connection to your sshyp server to authenticate (otherwise it will + fall back to standard unlock) +- full support for offline usage + ^ though sshyp could be used without a server before, it now can be configured to not attempt + to find one ever - this saves time and hides sync failure error messages +- bash completions have been added + ^ if you have bash-completion installed, you can now use the tab key in bash to auto-complete + sshyp arguments and entry names (client only, not added for server-specific arguments) + ^ if you do not have bash-completion installed, you can source + /usr/share/bash-completion/completions/sshyp (Linux/BSD) or + /boot/system/data/bash-completion/completions/sshyp (Haiku) in your ~/.bashrc to + use this feature + +fixes/optimizations: + +- fixed entries with multi-word titles failing to decrypt +- password generation is now much faster and more resource efficient +- there is no longer a length limit on generated passwords +- improved visual consistency of help menus +- rarely used modules are now imported only when needed +- sshyp now uses one fewer configuration file + +other notable changes: + +- sshyp is now specifically licensed under the GPL-3.0-only (keyword: only) +- sshyp now has some possible arguments and its own help menu when running in server mode +- temporary files in /dev/shm are now generated with more complex names +- sshyp now installs in /usr/lib/sshyp (Linux/BSD) or /system/lib/sshyp (Haiku) instead of +/usr/bin or /bin (it is still symlinked to the old directories) + +<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><> + sshyp v1.1.2 the sheecrets update - patch two diff --git a/extra/manpage b/extra/manpage index 1e6947a..23a63e1 100755 --- a/extra/manpage +++ b/extra/manpage @@ -1,11 +1,11 @@ -.TH sshyp 1 "27 August 2022" "v1.1.2" "sshyp man page" +.TH sshyp 1 "05 November 2022" "v1.2.0" "sshyp man page" .SH NAME sshyp \- A very simple self-hosted, synchronized password manager for UNIX(-like) systems. Alternative to (and compatible with) pass/password-store. .SH SYNOPSIS sshyp [OPTION] [[FLAG]] [/] .SH DESCRIPTION sshyp is a lightweight password and note management program written in Python. sshyp is used via CLI and is self-hosted with a client-server model. sshyp expects that you have access to a personal server with a properly configured ssh server, ideally accepting remote connections. -.SH EXAMPLES +.SH EXAMPLES (CLIENT) Setting up sshyp for the first time or altering its configuration (also recommended after major updates): sshyp tweak @@ -32,8 +32,19 @@ Manually syncing entries with the server: Removing an existing folder saved as ~/.local/share/sshyp/social: sshyp shear social/ +.SH EXAMPLES (SERVER) +Setting up the quick-unlock whitelist: + sshyp whitelist setup -.SH OPTIONS +Checking the quick-unlock whitelist status of all registered client devices: + sshyp whitelist list + +Adding a device with the id "laptop-YGuyGUY67F4gj8Hhs" to the quick-unlock whitelist: + sshyp whitelist add laptop-YGuyGUY67F4gj8Hhs + +Removing a device with the id "laptop-YGuyGUY67F4gj8Hhs" from the quick-unlock whitelist: + sshyp whitelist del laptop-YGuyGUY67F4gj8Hhs +.SH OPTIONS (CLIENT) USAGE: sshyp [OPTION [FLAG] []] | [/] help/--help/-h bring up the help menu @@ -45,24 +56,37 @@ USAGE: sshyp [OPTION [FLAG] []] | [/] copy copy details of an entry to your clipboard shear/-rm delete an existing entry sync/-s manually sync the entry directory via sshync -.SH FLAGS +.SH FLAGS (CLIENT) add: - password/-p add a password entry - note/-n add a note entry - folder/-f add a new folder for entries + password/-p add a password entry + note/-n add a note entry + folder/-f add a new folder for entries edit: - rename/relocate/-r rename or relocate an entry - username/-u change the username of an entry - password/-p change the password of an entry - note/-n change the note attached to an entry - url/-l change the url attached to an entry + rename/relocate/-r rename or relocate an entry + username/-u change the username of an entry + password/-p change the password of an entry + note/-n change the note attached to an entry + url/-l change the url attached to an entry copy: - username/-u copy the username of an entry to your clipboard - password/-p copy the password of an entry to your clipboard - url/-l copy the URL of an entry to your clipboard - note/-n copy the note of an entry to your clipboard + username/-u copy the username of an entry to your clipboard + password/-p copy the password of an entry to your clipboard + url/-l copy the URL of an entry to your clipboard + note/-n copy the note of an entry to your clipboard gen: - update/-u generate a password for an existing entry + update/-u generate a password for an existing entry + .SH OPTIONS (SERVER) +USAGE: sshyp [option [flag] []] + + help/--help/-h bring up this menu + version/-v display sshyp version info + tweak configure sshyp + whitelist manage the quick-unlock whitelist +.SH FLAGS (SERVER) +whitelist: + setup set up the quick-unlock whitelist + list/-l view all registered device ids and their quick-unlock whitelist status + add whitelist a device id for quick-unlock + 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: @@ -73,10 +97,11 @@ sshyp operates on a client-server model, and thus requires you to have access to The sshyp package includes modes for operating on both client and server devices, so only one package is necessary. Server setup: - Configure an OpenSSH server (if sshyp was installed from the Debian package, the ssh server was not installed as a dependency and needs to be installed manually) + Configure an OpenSSH server (if sshyp was installed from the Debian package, openssh-server and openssh-sftp-server must be installed manually - if sshyp was installed from the Fedora package, openssh-server must be installed manually) Allow remote access to the SSH server w/public key authentication (disabling password-only authentication recommended) Install sshyp Run "sshyp tweak" and set the device type as server + Optionally, run "sshyp whitelist setup" and configure quick-unlock Done! Client setup: @@ -87,5 +112,13 @@ Client setup: Done! Please note that the server setup intentionally does not allow the reading of entries (it does not allow adding a gpg decryption key). For security purposes, only clients can read entries. +.SH EXIT CODES +0 - no error +1 - argument error +2 - configuration error +3 - data not found error +4 - data already exists error +5 - decryption/encryption error +6 - server data retrieval error .SH AUTHOR Randall Winkhart (https://github.com/rwinkhart) diff --git a/lib/sshyp.py b/lib/sshyp.py index 5747172..1c3aa02 100755 --- a/lib/sshyp.py +++ b/lib/sshyp.py @@ -413,9 +413,9 @@ def print_info(): # prints help text based on argument 'randall winkhart\u001b[38;5;15;48;5;15m \u001b[38;5;7;48;5;8m/\u001b[0m') print('\u001b[38;5;7;48;5;8m/\u001b[38;5;15;48;5;15m ' '\u001b[38;5;7;48;5;8m/\u001b[0m') - print('\u001b[38;5;7;48;5;8m/\u001b[38;5;15;48;5;15m \u001b[38;5;15;48;5;8mversion 1.1.2' + print('\u001b[38;5;7;48;5;8m/\u001b[38;5;15;48;5;15m \u001b[38;5;15;48;5;8mversion 1.2.0' '\u001b[38;5;15;48;5;15m \u001b[38;5;7;48;5;8m/\u001b[0m') - print('\u001b[38;5;7;48;5;8m/\u001b[38;5;15;48;5;15m \u001b[38;5;15;48;5;8mthe sheecrets ' + print('\u001b[38;5;7;48;5;8m/\u001b[38;5;15;48;5;15m \u001b[38;5;15;48;5;8mthe brisk bahh ' 'update\u001b[38;5;15;48;5;15m \u001b[38;5;7;48;5;8m/\u001b[0m') print('\u001b[38;5;7;48;5;8m/\u001b[38;5;15;48;5;15m ' '\u001b[38;5;7;48;5;8m/\u001b[0m') diff --git a/share/doc/sshyp/changelog b/share/doc/sshyp/changelog index 8dff69d..be9ab3d 100755 --- a/share/doc/sshyp/changelog +++ b/share/doc/sshyp/changelog @@ -1,21 +1,55 @@ -sshyp v1.1.2 +sshyp v1.2.0 -the sheecrets update - patch two +the brisk bahh update -this is a general polish/bugfix release +this release focuses on speeding up the sshyp user experience by adding +new features that reduce wasted time + +compatibility-breaking changes: + +- new configuration options (quick-unlock, offline mode) have been added and +the configuration files have been reorganized + ^ simply running "sshyp tweak" and following the setup wizard will correct any compatibility + issues +- for quick-unlock security, device names have been replaced with more secure device ids + ^ older device names are still compatible, but for security reasons it is recommended + to delete any pre-existing device names from the server and allow "sshyp tweak" to re-register + your devices user-facing features: -- packaging support for Alpine Linux/postmarketOS -- the rename() function is no longer unnecessarily verbose -- handled exception for when the user attempts to copy an entry field that does not exist +- quick-unlock mode has been added + ^ this allows you to use a shortened version of your password by verifying that your device + is whitelisted on your sshyp server - it's both faster and more secure than standard unlock, + but it requires an active connection to your sshyp server to authenticate (otherwise it will + fall back to standard unlock) +- full support for offline usage + ^ though sshyp could be used without a server before, it now can be configured to not attempt + to find one ever - this saves time and hides sync failure error messages +- bash completions have been added + ^ if you have bash-completion installed, you can now use the tab key in bash to auto-complete + sshyp arguments and entry names (client only, not added for server-specific arguments) + ^ if you do not have bash-completion installed, you can source + /usr/share/bash-completion/completions/sshyp (Linux/BSD) or + /boot/system/data/bash-completion/completions/sshyp (Haiku) in your ~/.bashrc to + use this feature fixes/optimizations: -- replaced shebang with "#!/usr/bin/env python3" for improved compatibility with various systems - ^ does not affect Haiku packaging -- fixed the generic package not actually being compressed -- reduced lines of code used for cross-device entry deletion +- fixed entries with multi-word titles failing to decrypt +- password generation is now much faster and more resource efficient +- there is no longer a length limit on generated passwords +- improved visual consistency of help menus +- rarely used modules are now imported only when needed +- sshyp now uses one fewer configuration file + +other notable changes: + +- sshyp is now specifically licensed under the GPL-3.0-only (keyword: only) +- sshyp now has some possible arguments and its own help menu when running in server mode +- temporary files in /dev/shm are now generated with more complex names +- sshyp now installs in /usr/lib/sshyp (Linux/BSD) or /system/lib/sshyp (Haiku) instead of +/usr/bin or /bin (it is still symlinked to the old directories) <><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>