mirror of
https://github.com/rwinkhart/sshyp.git
synced 2026-09-03 07:37:16 -04:00
Compare commits
155
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
43351fd66f | ||
|
|
096bdb0773 | ||
|
|
330396c5f1 | ||
|
|
8576f63479 | ||
|
|
393f241538 | ||
|
|
c557d5bfee | ||
|
|
acca7d888c | ||
|
|
2f3b3c67ba | ||
|
|
88d2402e88 | ||
|
|
928aacc64a | ||
|
|
094bdcb418 | ||
|
|
419ff51e75 | ||
|
|
2111a0454e | ||
|
|
5d902f0324 | ||
|
|
505ffdb489 | ||
|
|
5cab1ad091 | ||
|
|
2e2404636b | ||
|
|
6cb5bd405f | ||
|
|
c93965c9a5 | ||
|
|
d685e07d32 | ||
|
|
192f58fef5 | ||
|
|
106f22f757 | ||
|
|
ae414dadda | ||
|
|
c9e99732a2 | ||
|
|
fc37368447 | ||
|
|
ca2bc98735 | ||
|
|
f44391612d | ||
|
|
8c0e9eb6df | ||
|
|
c03e818560 | ||
|
|
0b653000ef | ||
|
|
9f89dce42b | ||
|
|
e7b2e19039 | ||
|
|
80b6b4abd2 | ||
|
|
758e9f331c | ||
|
|
ba14c0e74b | ||
|
|
1991672618 | ||
|
|
9b600dabbf | ||
|
|
e42641079d | ||
|
|
7c6cbaec35 | ||
|
|
cb441933db | ||
|
|
dad1a34575 | ||
|
|
3a30812de5 | ||
|
|
e1930f9457 | ||
|
|
05df3dd903 | ||
|
|
5c1195f42d | ||
|
|
30aa3e2438 | ||
|
|
a8ea1eb444 | ||
|
|
8e053f25b8 | ||
|
|
a175a270e0 | ||
|
|
d116582144 | ||
|
|
f760b5420c | ||
|
|
6498a076f2 | ||
|
|
f4a0c52ca8 | ||
|
|
ffafbd2b91 | ||
|
|
d7bf7da177 | ||
|
|
13d466bb21 | ||
|
|
7aa9ea63e2 | ||
|
|
208bd8707b | ||
|
|
fb398333a6 | ||
|
|
b369f9a530 | ||
|
|
747f83819d | ||
|
|
2f1e693991 | ||
|
|
dd811cbe35 | ||
|
|
87dee4f197 | ||
|
|
bf86d72472 | ||
|
|
a3722e3c29 | ||
|
|
1f4d5b0591 | ||
|
|
e21faa8bbb | ||
|
|
309a471e77 | ||
|
|
968a7322f8 | ||
|
|
75e152ebfe | ||
|
|
15204fb0e9 | ||
|
|
5977367f28 | ||
|
|
96eb80226f | ||
|
|
9ede33d3d8 | ||
|
|
4093c36d48 | ||
|
|
947754f87c | ||
|
|
84bfefb7b1 | ||
|
|
7ac5cd723e | ||
|
|
68aa5eee04 | ||
|
|
f869e3b45d | ||
|
|
551f1e8f50 | ||
|
|
1687d9e1e2 | ||
|
|
930595ecad | ||
|
|
2d00da0e18 | ||
|
|
c84d52fb8d | ||
|
|
88fd9e77a9 | ||
|
|
4258ad85ab | ||
|
|
337e68d088 | ||
|
|
fb8c5be284 | ||
|
|
0293d273a7 | ||
|
|
40a43ed86d | ||
|
|
18c78743ca | ||
|
|
2f5080fec0 | ||
|
|
99e0d5f666 | ||
|
|
be19e271c5 | ||
|
|
20d2de338f | ||
|
|
e830d8486b | ||
|
|
5fc74ac2b3 | ||
|
|
24acd1cb87 | ||
|
|
0079934354 | ||
|
|
399e291902 | ||
|
|
66a026e327 | ||
|
|
b5f4e776e5 | ||
|
|
0056f60af1 | ||
|
|
41aa093685 | ||
|
|
30034be36f | ||
|
|
a43530d34f | ||
|
|
7d14c49490 | ||
|
|
462ba05833 | ||
|
|
e89bf06d9a | ||
|
|
d33d07894f | ||
|
|
cade83a0f0 | ||
|
|
100edd07ea | ||
|
|
d19651819a | ||
|
|
d951284bcd | ||
|
|
3c9b80ec80 | ||
|
|
0f3d9854b7 | ||
|
|
0c52149c40 | ||
|
|
f838af0b4e | ||
|
|
72f126d21d | ||
|
|
2385f669f8 | ||
|
|
b8896a6b58 | ||
|
|
51ec2143e3 | ||
|
|
4c1989287a | ||
|
|
daba737ca6 | ||
|
|
8cac27c6f6 | ||
|
|
19d37dfdb6 | ||
|
|
87a56a80bd | ||
|
|
5aaa284cbf | ||
|
|
a6aa0561b4 | ||
|
|
b08456e873 | ||
|
|
ef828b88a0 | ||
|
|
bde243c644 | ||
|
|
894f406fd2 | ||
|
|
00b935f1bb | ||
|
|
49608cb839 | ||
|
|
a417478aa0 | ||
|
|
344c74b728 | ||
|
|
fc0e4bb4a5 | ||
|
|
37867cb673 | ||
|
|
86aa7da038 | ||
|
|
9231257af8 | ||
|
|
102f22143f | ||
|
|
3dd12b4d6d | ||
|
|
a0b5dad073 | ||
|
|
2ba19f9a39 | ||
|
|
8af71ceb1a | ||
|
|
81c9b35c75 | ||
|
|
eeabc18f18 | ||
|
|
73128665fb | ||
|
|
607a4709f6 | ||
|
|
c643e861d9 | ||
|
|
23e7e375ae | ||
|
|
b8743d5fe2 |
@@ -0,0 +1,72 @@
|
|||||||
|
# For most projects, this workflow file will not need changing; you simply need
|
||||||
|
# to commit it to your repository.
|
||||||
|
#
|
||||||
|
# You may wish to alter this file to override the set of languages analyzed,
|
||||||
|
# or to provide custom queries or build logic.
|
||||||
|
#
|
||||||
|
# ******** NOTE ********
|
||||||
|
# We have attempted to detect the languages in your repository. Please check
|
||||||
|
# the `language` matrix defined below to confirm you have the correct set of
|
||||||
|
# supported CodeQL languages.
|
||||||
|
#
|
||||||
|
name: "CodeQL"
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ "main" ]
|
||||||
|
pull_request:
|
||||||
|
# The branches below must be a subset of the branches above
|
||||||
|
branches: [ "main" ]
|
||||||
|
schedule:
|
||||||
|
- cron: '34 22 * * 5'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
analyze:
|
||||||
|
name: Analyze
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
actions: read
|
||||||
|
contents: read
|
||||||
|
security-events: write
|
||||||
|
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
language: [ 'python' ]
|
||||||
|
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
|
||||||
|
# Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
# Initializes the CodeQL tools for scanning.
|
||||||
|
- name: Initialize CodeQL
|
||||||
|
uses: github/codeql-action/init@v2
|
||||||
|
with:
|
||||||
|
languages: ${{ matrix.language }}
|
||||||
|
# If you wish to specify custom queries, you can do so here or in a config file.
|
||||||
|
# By default, queries listed here will override any specified in a config file.
|
||||||
|
# Prefix the list here with "+" to use these queries and those in the config file.
|
||||||
|
|
||||||
|
# Details on CodeQL's query packs refer to : https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
|
||||||
|
# queries: security-extended,security-and-quality
|
||||||
|
|
||||||
|
|
||||||
|
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
||||||
|
# If this step fails, then you should remove it and run the build manually (see below)
|
||||||
|
- name: Autobuild
|
||||||
|
uses: github/codeql-action/autobuild@v2
|
||||||
|
|
||||||
|
# ℹ️ Command-line programs to run using the OS shell.
|
||||||
|
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
|
||||||
|
|
||||||
|
# If the Autobuild fails above, remove it and uncomment the following three lines.
|
||||||
|
# modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance.
|
||||||
|
|
||||||
|
# - run: |
|
||||||
|
# echo "Run, Build Application using script"
|
||||||
|
# ./location_of_script_within_repo/buildscript.sh
|
||||||
|
|
||||||
|
- name: Perform CodeQL Analysis
|
||||||
|
uses: github/codeql-action/analyze@v2
|
||||||
@@ -1,8 +1,16 @@
|
|||||||
# sshyp
|

|
||||||
A very simple self-hosted, synchronized password manager. Alternative to GNU pass.
|
|
||||||
|
|
||||||
"sshyp" stands for "sshync passwords", or "ssh sync passwords".
|
[](https://github.com/rwinkhart/sshyp/actions/workflows/codeql-analysis.yml)
|
||||||
"sshync" is the custom syncing backend (based on sftp) used by "sshyp".
|
|
||||||
|
sshyp is a very simple self-hosted, synchronized password manager for UNIX(-like) systems (currently Haiku/FreeBSD/Linux).
|
||||||
|
|
||||||
|
sshyp is compatible with entries created by pass/password-store, as its original goal was to be like pass/password-store, but far more user-friendly to synchronize with a self-hosted server.
|
||||||
|
|
||||||
|
sshyp is (as of writing) the only password-store compatible CLI password manager available for Haiku.
|
||||||
|
|
||||||
|
sshyp makes use of a custom sftp wrapper, called sshync (ssh+sync), to reliably sync user entries with a local or remote server.
|
||||||
|
|
||||||
|
The name "sshyp" is a combination of its syncing library, "sshync", and "passwords".
|
||||||
|
|
||||||
# WARNING
|
# WARNING
|
||||||
It is your responsibility to assess the security and stability of "sshyp" before using it and ensure it meets your needs.
|
It is your responsibility to assess the security and stability of "sshyp" before using it and ensure it meets your needs.
|
||||||
@@ -16,33 +24,25 @@ What sshyp can do:
|
|||||||
|
|
||||||
- securely manage a collection of encrypted passwords and notes via CLI
|
- securely manage a collection of encrypted passwords and notes via CLI
|
||||||
- generate new, secure passwords to the user's choice in length and complexity
|
- generate new, secure passwords to the user's choice in length and complexity
|
||||||
- securely sync said passwords and notes seamlessly between multiple POSIX compliant Unix devices
|
- securely sync said passwords and notes seamlessly between devices
|
||||||
|
- everything above with entries created by pass/password-store!
|
||||||
|
- everything above on Haiku, FreeBSD, Linux, and Termux (an Android terminal emulator)!
|
||||||
|
|
||||||
What sshyp will do:
|
What sshyp will likely do:
|
||||||
|
|
||||||
- everything it already does, but also in a GUI for Linux/Android
|
- (planned v1.1.0) 2FA/MFA management (beneficial for reducing phone usage)
|
||||||
- have a distinct retro theme
|
- (planned v1.2.0) everything it already does, but also in a GUI for Linux/Haiku
|
||||||
- receive many usability enhancements
|
|
||||||
|
|
||||||
What sshyp definitely won't do:
|
What sshyp definitely won't do:
|
||||||
|
|
||||||
- 2FA/MFA (for security purposes, this should not be handled by your password manager)
|
- Non-UNIX(-like) support, e.g. Windows (I'd be happy to link to third-party ports, if someone were to make them)
|
||||||
- Windows support (I don't use Windows and I have no interest in developing for it)
|
|
||||||
|
|
||||||
# Installation
|
# Installation
|
||||||
Arch Linux (all ISAs)
|
Please see the [installation guide](https://github.com/rwinkhart/sshyp/wiki/Installation) in the sshyp wiki for directions specific to your distribution/OS.
|
||||||
|
|
||||||
sshyp releases are available in the Arch User Repository as 'sshyp'.
|
Pre-built packages exist for Haiku, FreeBSD, Arch Linux, Debian/Ubuntu Linux, Fedora Linux, and Termux. These can be downloaded from the releases page.
|
||||||
|
|
||||||
Install with your preferred AUR helper or use:
|
Requests for additional distribution/OS support can be filed as issues.
|
||||||
|
|
||||||
```
|
|
||||||
git clone https://aur.archlinux.org/sshyp.git
|
|
||||||
cd sshyp
|
|
||||||
makepkg -si
|
|
||||||
```
|
|
||||||
|
|
||||||
Pre-built packages exist for Arch, Debian, and Termux. These can be downloaded from the releases page.
|
|
||||||
|
|
||||||
# Building
|
# Building
|
||||||
Since sshyp is written entirely in Python, it doesn't need to be compiled. It does, however, need to be packaged for installation.
|
Since sshyp is written entirely in Python, it doesn't need to be compiled. It does, however, need to be packaged for installation.
|
||||||
@@ -55,11 +55,13 @@ cd sshyp
|
|||||||
./package.sh
|
./package.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
The packaging script has been tested on Arch Linux with dpkg as a dependency for Debian and Termux packaging.
|
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.
|
||||||
|
|
||||||
|
Haiku and Fedora packaging must be done on their own respective distributions.
|
||||||
|
|
||||||
The AUR version and the packages attatched to the release tags were already packaged using this script.
|
The AUR version and the packages attatched to the release tags were already packaged using this script.
|
||||||
|
|
||||||
Currently, the script can create packages for Arch (PKGBUILD), Debian, Termux, and generic. Packaging for other distributions coming soon.
|
Currently, the script can create packages for Haiku, FreeBSD, Arch Linux (PKGBUILD), Debian/Ubuntu Linux, Fedora Linux, Termux, and generic.
|
||||||
|
|
||||||
# Usage
|
# Usage
|
||||||
Upon initial installation (on both the server and client devices), be sure to run:
|
Upon initial installation (on both the server and client devices), be sure to run:
|
||||||
@@ -68,8 +70,7 @@ Upon initial installation (on both the server and client devices), be sure to ru
|
|||||||
sshyp tweak
|
sshyp tweak
|
||||||
```
|
```
|
||||||
|
|
||||||
This command will allow you to configure the settings necessary for sshyp to function.
|
This command will allow you to configure the settings necessary for sshyp to function. To ensure configuration compatibility, it is a good idea to run 'sshyp tweak' after each major update.
|
||||||
As of right now, sshyp is rapidly changing, and as such, it is a good idea to run "sshyp tweak" after each update.
|
|
||||||
|
|
||||||
Please note that decrypting and reading entries is disabled on server devices for security reasons. Only devices configured as clients can use the gpg key to decrypt entries.
|
Please note that decrypting and reading entries is disabled on server devices for security reasons. Only devices configured as clients can use the gpg key to decrypt entries.
|
||||||
|
|
||||||
@@ -79,7 +80,7 @@ All available options can be found with:
|
|||||||
sshyp --help
|
sshyp --help
|
||||||
```
|
```
|
||||||
|
|
||||||
Or alternatively, in the new manpage:
|
Or alternatively, in the manpage:
|
||||||
|
|
||||||
```
|
```
|
||||||
man sshyp
|
man sshyp
|
||||||
@@ -88,22 +89,10 @@ man sshyp
|
|||||||
# Roadmap
|
# Roadmap
|
||||||
Short-term Goals:
|
Short-term Goals:
|
||||||
|
|
||||||
- create new file list w/color and w/o file extensions
|
- 2FA/MFA management
|
||||||
- overhaul argument system
|
- create minimal GUI apps (Linux x86_64, Linux aarch64, Haiku x86_64)
|
||||||
- fix lots of bugs!
|
- various optimizations/bug fixes
|
||||||
- make lots of optimizations!
|
|
||||||
|
|
||||||
Medium-term Goals:
|
|
||||||
|
|
||||||
- create minimal GUI apps (Linux x86_64, Linux aarch64)
|
|
||||||
- auto-completion on tab for CLI version
|
|
||||||
|
|
||||||
Long-term Goals:
|
Long-term Goals:
|
||||||
|
|
||||||
- seize the thrones, shear the humans
|
- seize the thrones, shear the humans
|
||||||
|
|
||||||
# Known Issues
|
|
||||||
|
|
||||||
Currently, files deleted from a client or server may re-appear if another client that had the same file reconnects and later re-uploads it to the server. This will be addressed.
|
|
||||||
|
|
||||||
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.
|
|
||||||
|
|||||||
+23
-25
@@ -1,13 +1,11 @@
|
|||||||
#!/usr/bin/python3
|
#!/bin/python3
|
||||||
|
|
||||||
# sshync 2022.01.17.unreleased13
|
|
||||||
|
|
||||||
# external modules
|
# external modules
|
||||||
|
|
||||||
from os import path, system, walk
|
from os import path, system, walk
|
||||||
from os.path import getmtime, join, expanduser
|
from os.path import expanduser, getmtime, join
|
||||||
from sys import exit as s_exit
|
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
from sys import exit as s_exit
|
||||||
|
|
||||||
|
|
||||||
# utility functions
|
# utility functions
|
||||||
@@ -29,13 +27,13 @@ def get_titles_mods(_directory, _destination, _user_data):
|
|||||||
open(expanduser('~/.config/sshync/database'), 'a').write(str(_mod) + '\n')
|
open(expanduser('~/.config/sshync/database'), 'a').write(str(_mod) + '\n')
|
||||||
# remote fetching
|
# remote fetching
|
||||||
if _destination == 'r':
|
if _destination == 'r':
|
||||||
system(f"ssh -i '{_user_data[5]}' -p {_user_data[2]} {_user_data[0]}@{_user_data[1]} \"python -c 'import sshync"
|
system(f"ssh -i '{_user_data[5]}' -p {_user_data[2]} {_user_data[0]}@{_user_data[1]} \"cd /bin; python -c 'impo"
|
||||||
f"; sshync.get_titles_mods(\"'\"{_user_data[4]}\"'\", \"'\"l\"'\", \"'\"{_user_data}\"'\")'\"")
|
f"rt sshync; sshync.get_titles_mods(\"'\"{_user_data[4]}\"'\", \"'\"l\"'\", \"'\"{_user_data}\"'\")'\"")
|
||||||
system(f"sftp -i '{_user_data[5]}' -P {_user_data[2]} {_user_data[0]}@{_user_data[1]}:"
|
system(f"scp -pqs -P {_user_data[2]} -i '{_user_data[5]}' {_user_data[0]}@{_user_data[1]}:"
|
||||||
f"'{expanduser(f'/home/{_user_data[0]}/.config/sshync/database')}' '{expanduser('~/.config/sshync/')}'")
|
f"'/home/{_user_data[0]}/.config/sshync/database' '{expanduser('~/.config/sshync/')}'")
|
||||||
_titles, _sep, _mods = ' '.join(open(expanduser('~/.config/sshync/database')).readlines()).replace('\n', '')\
|
_titles, _sep, _mods = '*&^'.join(open(expanduser('~/.config/sshync/database')).readlines()).replace('\n', '')\
|
||||||
.partition('^&*')
|
.partition('^&*')
|
||||||
_title_list, _mod_list = _titles.split(' ')[:-1], _mods.split(' ')[1:]
|
_title_list, _mod_list = _titles.split('*&^')[:-1], _mods.split('*&^')[1:]
|
||||||
return _title_list, _mod_list
|
return _title_list, _mod_list
|
||||||
|
|
||||||
|
|
||||||
@@ -63,9 +61,9 @@ def get_profile(_profile_dir):
|
|||||||
try:
|
try:
|
||||||
_profile_data = open(_profile_dir).readlines()
|
_profile_data = open(_profile_dir).readlines()
|
||||||
except (FileNotFoundError, IndexError):
|
except (FileNotFoundError, IndexError):
|
||||||
print('\nEither the profile does not exist, or it is corrupted.\n')
|
print('\n\u001b[38;5;9merror: the profile does not exist or is corrupted.\u001b[0m\n')
|
||||||
_profile_data = None
|
_profile_data = None
|
||||||
s_exit()
|
s_exit(1)
|
||||||
# extract data from profile
|
# extract data from profile
|
||||||
_user = _profile_data[0].replace('\n', '')
|
_user = _profile_data[0].replace('\n', '')
|
||||||
_ip = _profile_data[1].replace('\n', '')
|
_ip = _profile_data[1].replace('\n', '')
|
||||||
@@ -87,19 +85,19 @@ def run_profile(_profile_dir):
|
|||||||
if _title in _index_r[0]:
|
if _title in _index_r[0]:
|
||||||
# compare mod times and sync
|
# compare mod times and sync
|
||||||
if int(_index_l[1][_i]) > int(_index_r[1][_i]):
|
if int(_index_l[1][_i]) > int(_index_r[1][_i]):
|
||||||
print(f"[{_title}] Local is newer, uploading...")
|
print(f"\u001b[38;5;4m{_title[:-4]}\u001b[0m is newer locally, uploading...")
|
||||||
system(f"sftp -p -q -i '{_user_data[5]}' -P {_user_data[2]} {_user_data[0]}@{_user_data[1]}:"
|
system(f"scp -pqs -P {_user_data[2]} -i '{_user_data[5]}' '{_user_data[3]}{_title}' "
|
||||||
f"{_user_data[4]}{'/'.join(_title.split('/')[:-1]) + '/'} <<< $'put {_user_data[3]}{_title}'")
|
f"'{_user_data[0]}@{_user_data[1]}:{_user_data[4]}{'/'.join(_title.split('/')[:-1]) + '/'}'")
|
||||||
elif int(_index_l[1][_i]) < int(_index_r[1][_i]):
|
elif int(_index_l[1][_i]) < int(_index_r[1][_i]):
|
||||||
print(f"[{_title}] Remote is newer, downloading...")
|
print(f"\u001b[38;5;2m{_title[:-4]}\u001b[0m is newer remotely, downloading...")
|
||||||
system(f"sftp -p -q -i '{_user_data[5]}' -P {_user_data[2]} {_user_data[0]}@{_user_data[1]}:"
|
system(f"scp -pqs -P {_user_data[2]} -i '{_user_data[5]}' '{_user_data[0]}@{_user_data[1]}:"
|
||||||
f"'{_user_data[4]}'{_title} {_user_data[3]}{'/'.join(_title.split('/')[:-1]) + '/'}")
|
f"{_user_data[4]}{_title}' '{_user_data[3]}{'/'.join(_title.split('/')[:-1]) + '/'}'")
|
||||||
else:
|
else:
|
||||||
print(f"[{_title}] Not on remote server, uploading...")
|
print(f"\u001b[38;5;4m{_title[:-4]}\u001b[0m is not on remote server, uploading...")
|
||||||
system(f"sftp -p -q -i '{_user_data[5]}' -P {_user_data[2]} {_user_data[0]}@{_user_data[1]}:{_user_data[4]}"
|
system(f"scp -pqs -P {_user_data[2]} -i '{_user_data[5]}' '{_user_data[3]}{_title}' "
|
||||||
f"{'/'.join(_title.split('/')[:-1]) + '/'} <<< $'put {_user_data[3]}{_title}'")
|
f"'{_user_data[0]}@{_user_data[1]}:{_user_data[4]}{'/'.join(_title.split('/')[:-1]) + '/'}'")
|
||||||
for _title in _index_r[0]:
|
for _title in _index_r[0]:
|
||||||
if _title not in _index_l[0]:
|
if _title not in _index_l[0]:
|
||||||
print(f"[{_title}] Not in local directory, downloading...")
|
print(f"\u001b[38;5;2m{_title[:-4]}\u001b[0m is not in local directory, downloading...")
|
||||||
system(f"sftp -p -q -i '{_user_data[5]}' -P {_user_data[2]} {_user_data[0]}@{_user_data[1]}:"
|
system(f"scp -pqs -P {_user_data[2]} -i '{_user_data[5]}' '{_user_data[0]}@{_user_data[1]}:"
|
||||||
f"'{_user_data[4]}{_title}' {_user_data[3]}{'/'.join(_title.split('/')[:-1]) + '/'}")
|
f"{_user_data[4]}{_title}' '{_user_data[3]}{'/'.join(_title.split('/')[:-1]) + '/'}'")
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
#!/usr/bin/python3
|
#!/bin/python3
|
||||||
|
|
||||||
# external modules
|
# external modules
|
||||||
|
|
||||||
from os import remove, listdir
|
from os import listdir, remove, walk
|
||||||
from os.path import expanduser
|
from os.path import expanduser
|
||||||
from shutil import rmtree
|
from shutil import rmtree
|
||||||
|
|
||||||
@@ -14,17 +14,17 @@ def delete(_file_path):
|
|||||||
try:
|
try:
|
||||||
rmtree(f"{expanduser('~/.password-pasture/')}{_file_path}")
|
rmtree(f"{expanduser('~/.password-pasture/')}{_file_path}")
|
||||||
except FileNotFoundError:
|
except FileNotFoundError:
|
||||||
print('\nFolder does not exist remotely.')
|
print('folder does not exist remotely')
|
||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
remove(f"{expanduser('~/.password-pasture/')}{_file_path}.gpg")
|
remove(f"{expanduser('~/.password-pasture/')}{_file_path}.gpg")
|
||||||
except FileNotFoundError:
|
except FileNotFoundError:
|
||||||
print('\nFile does not exist remotely.')
|
print('file does not exist remotely')
|
||||||
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(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('')
|
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 = _file.replace('@', '/').split('^&*')[0]
|
||||||
@@ -35,3 +35,11 @@ def check(_client_device_name):
|
|||||||
except FileNotFoundError:
|
except FileNotFoundError:
|
||||||
pass
|
pass
|
||||||
open(expanduser('~/.config/sshyp/deletion_database'), 'a').write(_file_path + '\n')
|
open(expanduser('~/.config/sshyp/deletion_database'), 'a').write(_file_path + '\n')
|
||||||
|
|
||||||
|
|
||||||
|
def folder_check():
|
||||||
|
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")
|
||||||
+361
-91
@@ -1,3 +1,275 @@
|
|||||||
|
sshyp v1.0.1
|
||||||
|
|
||||||
|
The Polished Trotters Update - Patch 1
|
||||||
|
|
||||||
|
This is a hotfix for the Haiku decryption bug.
|
||||||
|
|
||||||
|
Changes:
|
||||||
|
|
||||||
|
- subprocess.Popen has been replaced with subprocess.run where applicable
|
||||||
|
- stdout is no longer captured with any subprocess.Popen or subprocess.run usages
|
||||||
|
^ this fixes decryption on Haiku
|
||||||
|
|
||||||
|
<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
|
||||||
|
|
||||||
|
sshyp v1.0.0
|
||||||
|
|
||||||
|
The Polished Trotters Update
|
||||||
|
|
||||||
|
This release brings 'sshyp' in line with the original goals of the project.
|
||||||
|
As such, it is being crowned "v1.0.0", and is considered a stable base for future expansions.
|
||||||
|
|
||||||
|
Features:
|
||||||
|
|
||||||
|
- sshyp has been modified to run on Haiku, an open-source re-implementation of BeOS
|
||||||
|
^ new package formats have been added for Haiku, FreeBSD, and Fedora Linux
|
||||||
|
- the entry format has been changed to support entries created in pass/password-store
|
||||||
|
^ this change requires existing entry libraries to be converted - see the sshyp v1.0.0 release page on GitHub for a conversion script
|
||||||
|
- majorly overhauled visual experience for sshyp
|
||||||
|
^ this includes a new entry list, a new entry readout, colored output, ascii art, and more!
|
||||||
|
- entries can now optionally be passed as arguments, directly
|
||||||
|
^ as opposed to the user being prompted for an entry name after running a command
|
||||||
|
|
||||||
|
Changes:
|
||||||
|
|
||||||
|
- corrected outdated licensing and copyright information
|
||||||
|
- 'if __name__=="__main__":' convention is now used
|
||||||
|
- help screens have been overhauled
|
||||||
|
- improved password generator to guarantee more secure results
|
||||||
|
- fixed errors when trying to sync with a multi-word entry on the server
|
||||||
|
- sshync now uses 'scp' (via the sftp protocol), rather than 'sftp'
|
||||||
|
- rename function now properly allows for renaming folders
|
||||||
|
- renaming an entry/folder will now properly delete the old entry/folder from the server
|
||||||
|
- entry previews at the time of entry creation/editing no longer require entering the gpg password more times than necessary
|
||||||
|
- entries will no longer be overwritten if attempting to create a new entry that uses an already existing name
|
||||||
|
- the clipboard now automatically clears after 30 seconds
|
||||||
|
- sshyp server no longer needs to create copies of its libraries in ~/
|
||||||
|
- added more and improved existing exceptions
|
||||||
|
- the lock file is now decrypted to /dev/null
|
||||||
|
- ...and lots of minor (under the hood) changes!
|
||||||
|
|
||||||
|
<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
This release addresses a bug with local entry 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).
|
||||||
|
|
||||||
|
Changes:
|
||||||
|
|
||||||
|
- fixed an issue where entries could not be deleted locally
|
||||||
|
|
||||||
|
&&
|
||||||
|
|
||||||
|
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.2
|
sshyp 2022.02.16.fr4.2
|
||||||
|
|
||||||
The High-Tech Shears Update - Patch 2
|
The High-Tech Shears Update - Patch 2
|
||||||
@@ -16,29 +288,29 @@ Changes:
|
|||||||
Planned for next major update (fr5, The sshyp Doing a Split Update):
|
Planned for next major update (fr5, The sshyp Doing a Split Update):
|
||||||
|
|
||||||
sshyp:
|
sshyp:
|
||||||
** sshyp has recieved a major visual overhaul
|
- sshyp has recieved a major visual overhaul
|
||||||
^ this includes the new file list and thematic text art
|
^ this includes the new file list and thematic text art
|
||||||
|
|
||||||
sshync:
|
sshync:
|
||||||
** sshync has been split into a separate package and now has standalone functionality as a backup/syncing utility
|
- 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
|
^ 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):
|
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)
|
- 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)
|
||||||
** ability to pass entries as arguments for more functions
|
- ability to pass entries as arguments for more functions
|
||||||
|
|
||||||
&&
|
&&
|
||||||
|
|
||||||
Backlog:
|
Backlog:
|
||||||
|
|
||||||
** create separate gui frontend targetting mobile and desktop Linux
|
- create separate gui frontend targetting mobile and desktop Linux
|
||||||
** auto-completion on tab (currently unsure of best way to make this work)
|
- auto-completion on tab (currently unsure of best way to make this work)
|
||||||
|
|
||||||
<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
|
<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
|
||||||
|
|
||||||
@@ -60,29 +332,29 @@ Changes:
|
|||||||
Planned for next major update (fr5, The sshyp Doing a Split Update):
|
Planned for next major update (fr5, The sshyp Doing a Split Update):
|
||||||
|
|
||||||
sshyp:
|
sshyp:
|
||||||
** sshyp has recieved a major visual overhaul
|
- sshyp has recieved a major visual overhaul
|
||||||
^ this includes the new file list and thematic text art
|
^ this includes the new file list and thematic text art
|
||||||
|
|
||||||
sshync:
|
sshync:
|
||||||
** sshync has been split into a separate package and now has standalone functionality as a backup/syncing utility
|
- 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
|
^ 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):
|
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)
|
- 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)
|
||||||
** ability to pass entries as arguments for more functions
|
- ability to pass entries as arguments for more functions
|
||||||
|
|
||||||
&&
|
&&
|
||||||
|
|
||||||
Backlog:
|
Backlog:
|
||||||
|
|
||||||
** create separate gui frontend targetting mobile and desktop Linux
|
- create separate gui frontend targetting mobile and desktop Linux
|
||||||
** auto-completion on tab (currently unsure of best way to make this work)
|
- auto-completion on tab (currently unsure of best way to make this work)
|
||||||
|
|
||||||
<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
|
<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
|
||||||
|
|
||||||
@@ -111,29 +383,29 @@ Changes:
|
|||||||
Planned for next major update (fr5, The sshyp Doing a Split Update):
|
Planned for next major update (fr5, The sshyp Doing a Split Update):
|
||||||
|
|
||||||
sshyp:
|
sshyp:
|
||||||
** sshyp has recieved a major visual overhaul
|
- sshyp has recieved a major visual overhaul
|
||||||
^ this includes the new file list and thematic text art
|
^ this includes the new file list and thematic text art
|
||||||
|
|
||||||
sshync:
|
sshync:
|
||||||
** sshync has been split into a separate package and now has standalone functionality as a backup/syncing utility
|
- 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
|
^ 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):
|
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)
|
- 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)
|
||||||
** ability to pass entries as arguments for more functions
|
- ability to pass entries as arguments for more functions
|
||||||
|
|
||||||
&&
|
&&
|
||||||
|
|
||||||
Backlog:
|
Backlog:
|
||||||
|
|
||||||
** create separate gui frontend targetting mobile and desktop Linux
|
- create separate gui frontend targetting mobile and desktop Linux
|
||||||
** auto-completion on tab (currently unsure of best way to make this work)
|
- auto-completion on tab (currently unsure of best way to make this work)
|
||||||
|
|
||||||
<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
|
<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
|
||||||
|
|
||||||
@@ -154,30 +426,30 @@ Changes:
|
|||||||
Planned for next major update (fr4, The sshyp Doing a Split Update):
|
Planned for next major update (fr4, The sshyp Doing a Split Update):
|
||||||
|
|
||||||
sshyp:
|
sshyp:
|
||||||
** sshyp has recieved a major visual overhaul
|
- sshyp has recieved a major visual overhaul
|
||||||
^ this includes the new file list and thematic text art
|
^ this includes the new file list and thematic text art
|
||||||
|
|
||||||
sshync:
|
sshync:
|
||||||
** sshync has been split into a separate package and now has standalone functionality as a backup/syncing utility
|
- 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
|
^ more details will be available in the sshync repo, once it is created
|
||||||
|
|
||||||
&&
|
&&
|
||||||
|
|
||||||
Planned for next, next major update (fr5, The Farmer Shearing the sshyp Update):
|
Planned for next, next major update (fr5, The Farmer Shearing the sshyp Update):
|
||||||
|
|
||||||
** allow for multi-client deletion... somehow (in sshync)
|
- allow for multi-client deletion... somehow (in sshync)
|
||||||
** 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)
|
- 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)
|
||||||
** ability to pass entries as arguments for more functions
|
- ability to pass entries as arguments for more functions
|
||||||
|
|
||||||
&&
|
&&
|
||||||
|
|
||||||
Backlog:
|
Backlog:
|
||||||
|
|
||||||
** create separate gui frontend targetting mobile and desktop Linux
|
- create separate gui frontend targetting mobile and desktop Linux
|
||||||
** auto-completion on tab (currently unsure of best way to make this work)
|
- auto-completion on tab (currently unsure of best way to make this work)
|
||||||
|
|
||||||
<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
|
<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
|
||||||
|
|
||||||
@@ -198,39 +470,39 @@ Changes:
|
|||||||
|
|
||||||
Additions planned for minor releases:
|
Additions planned for minor releases:
|
||||||
|
|
||||||
** updated the manpage with more information regarding how sshyp works and how to set it up
|
- updated the manpage with more information regarding how sshyp works and how to set it up
|
||||||
** ensured that it is now impossible for ghosts of entires to remain in /dev/shm
|
- ensured that it is now impossible for ghosts of entires to remain in /dev/shm
|
||||||
** reduced total lines of code with small optimizations
|
- reduced total lines of code with small optimizations
|
||||||
|
|
||||||
&&
|
&&
|
||||||
|
|
||||||
Planned for next major update (fr4, The sshyp Doing a Split Update):
|
Planned for next major update (fr4, The sshyp Doing a Split Update):
|
||||||
|
|
||||||
sshyp:
|
sshyp:
|
||||||
** sshyp has recieved a major visual overhaul
|
- sshyp has recieved a major visual overhaul
|
||||||
^ this includes the new file list and thematic text art
|
^ this includes the new file list and thematic text art
|
||||||
|
|
||||||
sshync:
|
sshync:
|
||||||
** sshync has been split into a separate package and now has standalone functionality as a backup/syncing utility
|
- 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
|
^ more details will be available in the sshync repo, once it is created
|
||||||
|
|
||||||
&&
|
&&
|
||||||
|
|
||||||
Planned for next, next major update (fr5, The Farmer Shearing the sshyp Update):
|
Planned for next, next major update (fr5, The Farmer Shearing the sshyp Update):
|
||||||
|
|
||||||
** allow for multi-client deletion... somehow (in sshync)
|
- allow for multi-client deletion... somehow (in sshync)
|
||||||
** 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)
|
- 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)
|
||||||
** ability to pass entries as arguments for more functions
|
- ability to pass entries as arguments for more functions
|
||||||
|
|
||||||
&&
|
&&
|
||||||
|
|
||||||
Backlog:
|
Backlog:
|
||||||
|
|
||||||
** create separate gui frontend targetting mobile and desktop Linux
|
- create separate gui frontend targetting mobile and desktop Linux
|
||||||
** auto-completion on tab (currently unsure of best way to make this work)
|
- auto-completion on tab (currently unsure of best way to make this work)
|
||||||
|
|
||||||
<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
|
<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
|
||||||
|
|
||||||
@@ -248,39 +520,39 @@ Changes:
|
|||||||
|
|
||||||
Additions planned for minor releases:
|
Additions planned for minor releases:
|
||||||
|
|
||||||
** updated the manpage with more information regarding how sshyp works and how to set it up
|
- updated the manpage with more information regarding how sshyp works and how to set it up
|
||||||
** ensured that it is now impossible for ghosts of entires to remain in /dev/shm
|
- ensured that it is now impossible for ghosts of entires to remain in /dev/shm
|
||||||
** reduced total lines of code with small optimizations
|
- reduced total lines of code with small optimizations
|
||||||
|
|
||||||
&&
|
&&
|
||||||
|
|
||||||
Planned for next major update (fr4, The sshyp Doing a Split Update):
|
Planned for next major update (fr4, The sshyp Doing a Split Update):
|
||||||
|
|
||||||
sshyp:
|
sshyp:
|
||||||
** sshyp has recieved a major visual overhaul
|
- sshyp has recieved a major visual overhaul
|
||||||
^ this includes the new file list and thematic text art
|
^ this includes the new file list and thematic text art
|
||||||
|
|
||||||
sshync:
|
sshync:
|
||||||
** sshync has been split into a separate package and now has standalone functionality as a backup/syncing utility
|
- 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
|
^ more details will be available in the sshync repo, once it is created
|
||||||
|
|
||||||
&&
|
&&
|
||||||
|
|
||||||
Planned for next, next major update (fr5, The Farmer Shearing the sshyp Update):
|
Planned for next, next major update (fr5, The Farmer Shearing the sshyp Update):
|
||||||
|
|
||||||
** allow for multi-client deletion... somehow (in sshync)
|
- allow for multi-client deletion... somehow (in sshync)
|
||||||
** 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)
|
- 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)
|
||||||
** ability to pass entries as arguments for more functions
|
- ability to pass entries as arguments for more functions
|
||||||
|
|
||||||
&&
|
&&
|
||||||
|
|
||||||
Backlog:
|
Backlog:
|
||||||
|
|
||||||
** create separate gui frontend targetting mobile and desktop Linux
|
- create separate gui frontend targetting mobile and desktop Linux
|
||||||
** auto-completion on tab (currently unsure of best way to make this work)
|
- auto-completion on tab (currently unsure of best way to make this work)
|
||||||
|
|
||||||
<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
|
<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
|
||||||
|
|
||||||
@@ -299,39 +571,39 @@ Changes:
|
|||||||
|
|
||||||
Additions planned for minor releases:
|
Additions planned for minor releases:
|
||||||
|
|
||||||
** updated the manpage with more information regarding how sshyp works and how to set it up
|
- updated the manpage with more information regarding how sshyp works and how to set it up
|
||||||
** ensured that it is now impossible for ghosts of entires to remain in /dev/shm
|
- ensured that it is now impossible for ghosts of entires to remain in /dev/shm
|
||||||
** reduced total lines of code with small optimizations
|
- reduced total lines of code with small optimizations
|
||||||
|
|
||||||
&&
|
&&
|
||||||
|
|
||||||
Planned for next major update (fr4, The sshyp Doing a Split Update):
|
Planned for next major update (fr4, The sshyp Doing a Split Update):
|
||||||
|
|
||||||
sshyp:
|
sshyp:
|
||||||
** sshyp has recieved a major visual overhaul
|
- sshyp has recieved a major visual overhaul
|
||||||
^ this includes the new file list and thematic text art
|
^ this includes the new file list and thematic text art
|
||||||
|
|
||||||
sshync:
|
sshync:
|
||||||
** sshync has been split into a separate package and now has standalone functionality as a backup/syncing utility
|
- 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
|
^ more details will be available in the sshync repo, once it is created
|
||||||
|
|
||||||
&&
|
&&
|
||||||
|
|
||||||
Planned for next, next major update (fr5, The Farmer Shearing the sshyp Update):
|
Planned for next, next major update (fr5, The Farmer Shearing the sshyp Update):
|
||||||
|
|
||||||
** allow for multi-client deletion... somehow (in sshync)
|
- allow for multi-client deletion... somehow (in sshync)
|
||||||
** 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)
|
- 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)
|
||||||
** ability to pass entries as arguments for more functions
|
- ability to pass entries as arguments for more functions
|
||||||
|
|
||||||
&&
|
&&
|
||||||
|
|
||||||
Backlog:
|
Backlog:
|
||||||
|
|
||||||
** create separate gui frontend targetting mobile and desktop Linux
|
- create separate gui frontend targetting mobile and desktop Linux
|
||||||
** auto-completion on tab (currently unsure of best way to make this work)
|
- auto-completion on tab (currently unsure of best way to make this work)
|
||||||
|
|
||||||
<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
|
<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
|
||||||
|
|
||||||
@@ -354,39 +626,39 @@ Changes:
|
|||||||
|
|
||||||
Additions planned for minor releases:
|
Additions planned for minor releases:
|
||||||
|
|
||||||
** updated the manpage with more information regarding how sshyp works and how to set it up
|
- updated the manpage with more information regarding how sshyp works and how to set it up
|
||||||
** ensured that it is now impossible for ghosts of entires to remain in /dev/shm
|
- ensured that it is now impossible for ghosts of entires to remain in /dev/shm
|
||||||
** reduced total lines of code with small optimizations
|
- reduced total lines of code with small optimizations
|
||||||
|
|
||||||
&&
|
&&
|
||||||
|
|
||||||
Planned for next major update (fr4, The sshyp Doing a Split Update):
|
Planned for next major update (fr4, The sshyp Doing a Split Update):
|
||||||
|
|
||||||
sshyp:
|
sshyp:
|
||||||
** sshyp has recieved a major visual overhaul
|
- sshyp has recieved a major visual overhaul
|
||||||
^ this includes the new file list and thematic text art
|
^ this includes the new file list and thematic text art
|
||||||
|
|
||||||
sshync:
|
sshync:
|
||||||
** sshync has been split into a separate package and now has standalone functionality as a backup/syncing utility
|
- 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
|
^ more details will be available in the sshync repo, once it is created
|
||||||
|
|
||||||
&&
|
&&
|
||||||
|
|
||||||
Planned for next, next major update (fr5, The Farmer Shearing the sshyp Update):
|
Planned for next, next major update (fr5, The Farmer Shearing the sshyp Update):
|
||||||
|
|
||||||
** allow for multi-client deletion... somehow (in sshync)
|
- allow for multi-client deletion... somehow (in sshync)
|
||||||
** 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)
|
- 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)
|
||||||
** ability to pass entries as arguments for more functions
|
- ability to pass entries as arguments for more functions
|
||||||
|
|
||||||
&&
|
&&
|
||||||
|
|
||||||
Backlog:
|
Backlog:
|
||||||
|
|
||||||
** create separate gui frontend targetting mobile and desktop Linux
|
- create separate gui frontend targetting mobile and desktop Linux
|
||||||
** auto-completion on tab (currently unsure of best way to make this work)
|
- auto-completion on tab (currently unsure of best way to make this work)
|
||||||
|
|
||||||
<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
|
<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
|
||||||
|
|
||||||
@@ -901,5 +1173,3 @@ What is currently functional:
|
|||||||
- sort notes and passwords into folders
|
- sort notes and passwords into folders
|
||||||
- gpg encryption
|
- gpg encryption
|
||||||
- edit password/note entries
|
- edit password/note entries
|
||||||
|
|
||||||
<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
|
|
||||||
|
|||||||
+18
-31
@@ -1,6 +1,6 @@
|
|||||||
.TH sshyp 1 "16 February 2022" "2022.02.16.fr4.1" "sshyp man page"
|
.TH sshyp 1 "20 June 2022" "v1.0.0" "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 for UNIX(-like) systems. Alternative to (and compatible with) pass/password-store.
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
sshyp [OPTION] [[FLAG]] [/<entry name>]
|
sshyp [OPTION] [[FLAG]] [/<entry name>]
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
@@ -8,40 +8,33 @@ sshyp is a lightweight password and note management program written in Python. s
|
|||||||
.SH EXAMPLES
|
.SH EXAMPLES
|
||||||
Setting up sshyp for the first time or altering its configuration (also recommended after major updates):
|
Setting up sshyp for the first time or altering its configuration (also recommended after major updates):
|
||||||
sshyp tweak
|
sshyp tweak
|
||||||
*follow the prompts
|
|
||||||
|
Viewing the entry database:
|
||||||
|
sshyp
|
||||||
|
|
||||||
Reading an existing entry saved as ~/.password-pasture/development/github.gpg:
|
Reading an existing entry saved as ~/.password-pasture/development/github.gpg:
|
||||||
sshyp /development/github
|
sshyp /development/github
|
||||||
|
|
||||||
Copying the password of an existing entry saved as ~/.password-pasture/financial/bank.gpg:
|
Copying the password of an existing entry saved as ~/.password-pasture/financial/bank.gpg:
|
||||||
sshyp copy -p
|
sshyp copy -p /financial/bank
|
||||||
*answer the prompt with "/financial/bank"
|
|
||||||
*enter decryption password
|
|
||||||
|
|
||||||
Editing the username of an existing entry saved as ~/.password-pasture/game.gpg:
|
Editing the username of an existing entry saved as ~/.password-pasture/game.gpg:
|
||||||
sshyp edit -u
|
sshyp edit -u game
|
||||||
*answer the first prompt with "game"
|
|
||||||
*follow the prompts
|
|
||||||
|
|
||||||
Making a new entry using the built-in password generator:
|
Making a new entry saved as ~/.password-pasture/school/university.gpg using the built-in password generator:
|
||||||
sshyp gen
|
sshyp gen /school/university
|
||||||
*follow the prompts
|
|
||||||
|
|
||||||
Creating a note-only entry:
|
Creating a note-only entry saved as ~/.password-pasture/notes/testNote.gpg:
|
||||||
sshyp add -n
|
sshyp add -n /notes/testNote
|
||||||
*follow the prompts
|
|
||||||
|
|
||||||
Syncing entries with the server:
|
Manually syncing entries with the server:
|
||||||
sshyp sync
|
sshyp sync
|
||||||
|
|
||||||
Removing an existing folder saved as ~/.password-pasture/social:
|
Removing an existing folder saved as ~/.password-pasture/social:
|
||||||
sshyp shear
|
sshyp shear social/
|
||||||
*when prompted for what to delete, since you are deleting a folder, be sure to enter your choice with a following "/", e.g. "social/" or "/social/"
|
|
||||||
|
|
||||||
.SH OPTIONS
|
.SH OPTIONS
|
||||||
In order to quickly read an existing entry, just run "sshyp </entry name>".
|
USAGE: sshyp [OPTION [FLAG] [<entry name>]] | [/<entry name>]
|
||||||
|
|
||||||
Options for other operations are as follows:
|
|
||||||
|
|
||||||
help/--help/-h bring up the help menu
|
help/--help/-h bring up the help menu
|
||||||
version/-v display sshyp version info
|
version/-v display sshyp version info
|
||||||
@@ -71,21 +64,16 @@ copy:
|
|||||||
gen:
|
gen:
|
||||||
update/-u generate a password for an existing entry
|
update/-u generate a password for an existing entry
|
||||||
.SH LIMITATIONS
|
.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:
|
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.
|
||||||
|
|
||||||
The sshyp package includes modes for operating on both client and server devices, so only one package is necessary.
|
The sshyp package includes modes for operating on both client and server devices, so only one package is necessary.
|
||||||
|
|
||||||
Server setup:
|
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, the ssh server was not installed as a dependency and needs to be installed manually)
|
||||||
Allow remote access to the SSH server w/public key authentication (disabling password-only authentication recommended)
|
Allow remote access to the SSH server w/public key authentication (disabling password-only authentication recommended)
|
||||||
Install sshyp
|
Install sshyp
|
||||||
Run "sshyp tweak" and set the device type as server
|
Run "sshyp tweak" and set the device type as server
|
||||||
@@ -94,8 +82,7 @@ Server setup:
|
|||||||
Client setup:
|
Client setup:
|
||||||
Install sshyp
|
Install sshyp
|
||||||
Run "sshyp tweak" and follow the prompts
|
Run "sshyp tweak" and follow the prompts
|
||||||
Copy the generated public SSH key to the server using preferred method (manually adding to authorized_keys, ssh-copy-id, etc.)
|
Copy the generated public SSH key (located at ~/.ssh/sshyp.pub) to the server using preferred method (manually adding to authorized_keys, ssh-copy-id, etc.)
|
||||||
**this step will be automated in the future: if an entry library already exists on the server, make sure to manually recreate any folders that exist on the server in the ~/.password-pasture directory
|
|
||||||
If you already have entries on the server, sync them using "sshyp sync"
|
If you already have entries on the server, sync them using "sshyp sync"
|
||||||
Done!
|
Done!
|
||||||
|
|
||||||
|
|||||||
Executable
+48
@@ -0,0 +1,48 @@
|
|||||||
|
#!/bin/python3
|
||||||
|
|
||||||
|
from os import path, remove, system, walk
|
||||||
|
from pathlib import Path
|
||||||
|
from shutil import move, rmtree
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
gpg_id = input('\nWhat is the ID of the GPG key you would like to use for re-encryption?\n\nID: ')
|
||||||
|
pasture = path.expanduser('~/.password-pasture')
|
||||||
|
if Path(f"{pasture}.new").exists():
|
||||||
|
rmtree(f"{pasture}.new")
|
||||||
|
if Path(f"{pasture}.old").exists():
|
||||||
|
rmtree(f"{pasture}.old")
|
||||||
|
if path.isdir(pasture):
|
||||||
|
for dirPath, dirNames, filenames in walk(pasture):
|
||||||
|
for filename in sorted(filenames):
|
||||||
|
Path(dirPath.replace(pasture, pasture + '.new')).mkdir(0o700, parents=True, exist_ok=True)
|
||||||
|
system(f"gpg -d '{dirPath}/{filename}' "
|
||||||
|
f"> '{dirPath.replace(pasture, pasture + '.new')}/{filename[:-4]}'")
|
||||||
|
_old_contents, _new_contents = \
|
||||||
|
open(f"{dirPath.replace(pasture, pasture + '.new')}/{filename[:-4]}", 'r').readlines(), ''
|
||||||
|
for _num in range(len(_old_contents)):
|
||||||
|
if _num == 0:
|
||||||
|
try:
|
||||||
|
_new_contents += _old_contents[1]
|
||||||
|
except IndexError:
|
||||||
|
_new_contents += '\n'
|
||||||
|
elif _num == 1:
|
||||||
|
_new_contents += _old_contents[0]
|
||||||
|
elif _num == 3:
|
||||||
|
if _old_contents[_num] == ' ' or _old_contents[_num] == '\n':
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
_new_contents += _old_contents[_num]
|
||||||
|
else:
|
||||||
|
_new_contents += _old_contents[_num]
|
||||||
|
for _num in reversed(range(len(_new_contents))):
|
||||||
|
if _new_contents[_num] == '\n' or _new_contents[_num] == '':
|
||||||
|
_new_contents = _new_contents[:-1]
|
||||||
|
else:
|
||||||
|
break
|
||||||
|
open(f"{dirPath.replace(pasture, pasture + '.new')}/{filename[:-4]}", 'w').writelines(_new_contents)
|
||||||
|
system(f"gpg -qr {str(gpg_id)} -e '{dirPath.replace(pasture, pasture + '.new')}/{filename[:-4]}'")
|
||||||
|
remove(f"{dirPath.replace(pasture, pasture + '.new')}/{filename[:-4]}")
|
||||||
|
else:
|
||||||
|
print(f"\nError: no entry folder ({pasture}) found\n")
|
||||||
|
move(pasture, f"{pasture}.old")
|
||||||
|
move(f"{pasture}.new", pasture)
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
af6236472791614ed41bf13318a2d1c41228855c
|
||||||
Executable
+41
@@ -0,0 +1,41 @@
|
|||||||
|
#!/bin/python3
|
||||||
|
|
||||||
|
from os import path, remove, system, walk
|
||||||
|
from pathlib import Path
|
||||||
|
from shutil import move, rmtree
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
gpg_id = input('\nWhat is the ID of the GPG key you would like to use for re-encryption?\n\nID: ')
|
||||||
|
pasture = path.expanduser('~/.password-pasture')
|
||||||
|
if Path(f"{pasture}.new").exists():
|
||||||
|
rmtree(f"{pasture}.new")
|
||||||
|
if Path(f"{pasture}.old").exists():
|
||||||
|
rmtree(f"{pasture}.old")
|
||||||
|
if path.isdir(pasture):
|
||||||
|
for dirPath, dirNames, filenames in walk(pasture):
|
||||||
|
for filename in sorted(filenames):
|
||||||
|
Path(dirPath.replace(pasture, pasture + '.new')).mkdir(0o700, parents=True, exist_ok=True)
|
||||||
|
system(f"gpg -d '{dirPath}/{filename}' "
|
||||||
|
f"> '{dirPath.replace(pasture, pasture + '.new')}/{filename[:-4]}'")
|
||||||
|
_old_contents, _new_contents = \
|
||||||
|
open(f"{dirPath.replace(pasture, pasture + '.new')}/{filename[:-4]}", 'r').readlines(), ''
|
||||||
|
for _num in range(len(_old_contents)):
|
||||||
|
if _num == 3:
|
||||||
|
if _old_contents[_num] == ' ' or _old_contents[_num] == '\n':
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
_new_contents += _old_contents[_num]
|
||||||
|
else:
|
||||||
|
_new_contents += _old_contents[_num]
|
||||||
|
for _num in reversed(range(len(_new_contents))):
|
||||||
|
if _new_contents[_num] == '\n' or _new_contents[_num] == '':
|
||||||
|
_new_contents = _new_contents[:-1]
|
||||||
|
else:
|
||||||
|
break
|
||||||
|
open(f"{dirPath.replace(pasture, pasture + '.new')}/{filename[:-4]}", 'w').writelines(_new_contents)
|
||||||
|
system(f"gpg -qr {str(gpg_id)} -e '{dirPath.replace(pasture, pasture + '.new')}/{filename[:-4]}'")
|
||||||
|
remove(f"{dirPath.replace(pasture, pasture + '.new')}/{filename[:-4]}")
|
||||||
|
else:
|
||||||
|
print(f"\nError: no entry folder ({pasture}) found\n")
|
||||||
|
move(pasture, f"{pasture}.old")
|
||||||
|
move(f"{pasture}.new", pasture)
|
||||||
+143
-22
@@ -1,15 +1,14 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# This script packages sshyp (from source) for various Linux environments.
|
# This script packages sshyp (from source) for various UNIX(-like) environments.
|
||||||
|
# Dependencies (Arch Linux): dpkg (packaging for Debian/Termux), freebsd-pkg (packaging for FreeBSD)
|
||||||
|
# Dependencies (Fedora) (can only package for self): rpmdevtools
|
||||||
# NOTE It is recommended to instead use the latest officially packaged and tagged release.
|
# NOTE It is recommended to instead use the latest officially packaged and tagged release.
|
||||||
# NOTE If using Arch, it is recommended to install from the AUR or from the PKGBUILD attatched to the latest official release.
|
|
||||||
# NOTE As of release fr4, sshync will become a separate package and thus a dependency for sshyp. sshync is automatically installed with the PKGBUILD version.
|
|
||||||
|
|
||||||
echo -e '\nOptions (please enter the number only):'
|
echo -e '\nOptions (please enter the number only):'
|
||||||
echo -e '\nDistribution Packages:\n\n1. Debian\n2. Termux\n3. Generic (used for PKGBUILD/APKBUILD)'
|
echo -e '\nPackage Formats:\n\n1. Haiku\n2. Debian&Ubuntu Linux\n3. Fedora Linux\n4. FreeBSD\n5. Termux\n6. Generic (used for PKGBUILD/APKBUILD)'
|
||||||
echo -e '\nBuild Scripts:\n\n4. Alpine Linux (APKBUILD)\n5. Arch Linux (PKGBUILD, also builds local generic package)'
|
echo -e '\nBuild Scripts:\n\n7. Arch Linux (PKGBUILD)'
|
||||||
echo -e '\nOther:\n\n6. All (generates all distribution packages and build scripts)\n'
|
echo -e '\nOther:\n\n8. All (generates all distribution packages (excluding Haiku and Fedora, as these must be packaged on their respective distributions) and build scripts)\n'
|
||||||
read -n 1 -r -p "Distribution: " distro
|
read -n 1 -r -p "Distribution: " distro
|
||||||
|
|
||||||
echo -e '\n\nThe value entered in this field will only affect the version reported to the package manager. The latest source is used regardless.\n'
|
echo -e '\n\nThe value entered in this field will only affect the version reported to the package manager. The latest source is used regardless.\n'
|
||||||
@@ -18,7 +17,7 @@ read -r -p "Version number: " version
|
|||||||
echo -e '\nThe value entered in this field will only affect the revision number for build scripts.\n'
|
echo -e '\nThe value entered in this field will only affect the revision number for build scripts.\n'
|
||||||
read -r -p "Revision number: " revision
|
read -r -p "Revision number: " revision
|
||||||
|
|
||||||
if [ "$distro" == "4" ] || [ "$distro" == "5" ] || [ "$distro" == "6" ]; then
|
if [ "$distro" == "7" ] || [ "$distro" == "8" ]; then
|
||||||
echo -e '\nOptions (please enter the number only):'
|
echo -e '\nOptions (please enter the number only):'
|
||||||
echo -e '\n1. GitHub Release Tag\n2. Local\n'
|
echo -e '\n1. GitHub Release Tag\n2. Local\n'
|
||||||
read -r -p "Source (for build scripts): " source
|
read -r -p "Source (for build scripts): " source
|
||||||
@@ -32,10 +31,53 @@ fi
|
|||||||
|
|
||||||
mkdir -p packages
|
mkdir -p packages
|
||||||
|
|
||||||
if [ "$distro" == "1" ] || [ "$distro" == "6" ]; then
|
if [ "$distro" == "1" ]; then
|
||||||
|
echo -e '\nPackaging for Haiku...\n'
|
||||||
|
mkdir -p packages/haikutemp/documentation/{man/man1,packages/sshyp}
|
||||||
|
echo "name sshyp
|
||||||
|
version "$version"-"$revision"
|
||||||
|
architecture any
|
||||||
|
summary \"A light-weight, self-hosted, synchronized password manager\"
|
||||||
|
description \"sshyp is the only password-store compatible CLI password manager available for Haiku - it is also available on Linux/Android (via Termux) so that you can sync your entries across all of your devices.\"
|
||||||
|
packager \"Randall Winkhart <idgr at tutanota dot com>\"
|
||||||
|
vendor \"Randall Winkhart\"
|
||||||
|
licenses {
|
||||||
|
\"GNU GPL v3\"
|
||||||
|
}
|
||||||
|
copyrights {
|
||||||
|
\"2021-2022 Randall Winkhart\"
|
||||||
|
}
|
||||||
|
provides {
|
||||||
|
sshyp = "$version"
|
||||||
|
cmd:sshyp
|
||||||
|
}
|
||||||
|
requires {
|
||||||
|
gnupg
|
||||||
|
openssh
|
||||||
|
python3
|
||||||
|
nano
|
||||||
|
}
|
||||||
|
urls {
|
||||||
|
\"https://github.com/rwinkhart/sshyp\"
|
||||||
|
}
|
||||||
|
" > packages/haikutemp/.PackageInfo
|
||||||
|
cp -r bin packages/haikutemp/
|
||||||
|
cp -r share/doc/sshyp/ packages/haikutemp/documentation/packages/
|
||||||
|
cp -r share/licenses/sshyp/ packages/haikutemp/documentation/packages/
|
||||||
|
cp extra/manpage packages/haikutemp/documentation/man/man1/sshyp.1
|
||||||
|
gzip packages/haikutemp/documentation/man/man1/sshyp.1
|
||||||
|
cd packages/haikutemp
|
||||||
|
package create -b sshyp-"$version"-"$revision"_all.hpkg
|
||||||
|
package add sshyp-"$version"-"$revision"_all.hpkg bin documentation
|
||||||
|
cd ../..
|
||||||
|
mv packages/haikutemp/sshyp-"$version"-"$revision"_all.hpkg packages/
|
||||||
|
rm -rf packages/haikutemp
|
||||||
|
echo -e "\nHaiku packaging complete.\n"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$distro" == "2" ] || [ "$distro" == "8" ]; then
|
||||||
echo -e '\nPackaging for Debian...\n'
|
echo -e '\nPackaging for Debian...\n'
|
||||||
mkdir -p packages/debiantemp/sshyp_"$version"-"$revision"_all/{DEBIAN,usr}
|
mkdir -p packages/debiantemp/sshyp_"$version"-"$revision"_all/{DEBIAN,usr/share/man/man1}
|
||||||
mkdir -p packages/debiantemp/sshyp_"$version"-"$revision"_all/usr/share/man/man1
|
|
||||||
echo "Package: sshyp
|
echo "Package: sshyp
|
||||||
Version: $version
|
Version: $version
|
||||||
Section: utils
|
Section: utils
|
||||||
@@ -44,7 +86,7 @@ Maintainer: Randall Winkhart <idgr at tutanota dot com>
|
|||||||
Description: A light-weight, self-hosted, synchronized password manager
|
Description: A light-weight, self-hosted, synchronized password manager
|
||||||
Depends: python3, gnupg, openssh-client, nano, xclip, wl-clipboard
|
Depends: python3, gnupg, openssh-client, nano, xclip, wl-clipboard
|
||||||
Priority: optional
|
Priority: optional
|
||||||
Installed-Size: 35
|
Installed-Size: 185
|
||||||
" > packages/debiantemp/sshyp_"$version"-"$revision"_all/DEBIAN/control
|
" > packages/debiantemp/sshyp_"$version"-"$revision"_all/DEBIAN/control
|
||||||
cp -r bin packages/debiantemp/sshyp_"$version"-"$revision"_all/usr/
|
cp -r bin packages/debiantemp/sshyp_"$version"-"$revision"_all/usr/
|
||||||
cp -r share packages/debiantemp/sshyp_"$version"-"$revision"_all/usr/
|
cp -r share packages/debiantemp/sshyp_"$version"-"$revision"_all/usr/
|
||||||
@@ -56,7 +98,7 @@ Installed-Size: 35
|
|||||||
echo -e "\nDebian packaging complete.\n"
|
echo -e "\nDebian packaging complete.\n"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$distro" == "2" ] || [ "$distro" == "6" ]; then
|
if [ "$distro" == "5" ] || [ "$distro" == "8" ]; then
|
||||||
echo -e '\nPackaging for Termux...\n'
|
echo -e '\nPackaging for Termux...\n'
|
||||||
mkdir -p packages/termuxtemp/sshyp_"$version"-"$revision"_all_termux/{data,DEBIAN}
|
mkdir -p packages/termuxtemp/sshyp_"$version"-"$revision"_all_termux/{data,DEBIAN}
|
||||||
mkdir -p packages/termuxtemp/sshyp_"$version"-"$revision"_all_termux/data/data/com.termux/files/usr/share/man/man1
|
mkdir -p packages/termuxtemp/sshyp_"$version"-"$revision"_all_termux/data/data/com.termux/files/usr/share/man/man1
|
||||||
@@ -68,7 +110,7 @@ Maintainer: Randall Winkhart <idgr at tutanota dot com>
|
|||||||
Description: A light-weight, self-hosted, synchronized password manager
|
Description: A light-weight, self-hosted, synchronized password manager
|
||||||
Depends: python, gnupg, openssh, nano, termux-api, termux-am
|
Depends: python, gnupg, openssh, nano, termux-api, termux-am
|
||||||
Priority: optional
|
Priority: optional
|
||||||
Installed-Size: 35
|
Installed-Size: 185
|
||||||
" > packages/termuxtemp/sshyp_"$version"-"$revision"_all_termux/DEBIAN/control
|
" > packages/termuxtemp/sshyp_"$version"-"$revision"_all_termux/DEBIAN/control
|
||||||
cp -r bin packages/termuxtemp/sshyp_"$version"-"$revision"_all_termux/data/data/com.termux/files/usr/
|
cp -r bin packages/termuxtemp/sshyp_"$version"-"$revision"_all_termux/data/data/com.termux/files/usr/
|
||||||
cp -r share packages/termuxtemp/sshyp_"$version"-"$revision"_all_termux/data/data/com.termux/files/usr/
|
cp -r share packages/termuxtemp/sshyp_"$version"-"$revision"_all_termux/data/data/com.termux/files/usr/
|
||||||
@@ -80,12 +122,11 @@ Installed-Size: 35
|
|||||||
echo -e "\nTermux packaging complete.\n"
|
echo -e "\nTermux packaging complete.\n"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$distro" == "3" ] || [ "$distro" == "5" ] || [ "$distro" == "6" ]; then
|
if [ "$distro" == "3" ] || [ "$distro" == "4" ] || [ "$distro" == "6" ] || [ "$distro" == "7" ] || [ "$distro" == "8" ]; then
|
||||||
echo -e '\nPackaging as generic...\n'
|
echo -e '\nPackaging as generic...\n'
|
||||||
mkdir -p packages/archtemp/usr
|
mkdir -p packages/archtemp/usr/share/man/man1
|
||||||
cp -r bin packages/archtemp/usr/
|
cp -r bin packages/archtemp/usr/
|
||||||
cp -r share packages/archtemp/usr/
|
cp -r share packages/archtemp/usr/
|
||||||
mkdir -p packages/archtemp/usr/share/man/man1
|
|
||||||
cp extra/manpage packages/archtemp/usr/share/man/man1/sshyp.1
|
cp extra/manpage packages/archtemp/usr/share/man/man1/sshyp.1
|
||||||
gzip packages/archtemp/usr/share/man/man1/sshyp.1
|
gzip packages/archtemp/usr/share/man/man1/sshyp.1
|
||||||
tar -C packages/archtemp -cvf packages/sshyp-"$version".tar.xz usr/
|
tar -C packages/archtemp -cvf packages/sshyp-"$version".tar.xz usr/
|
||||||
@@ -95,7 +136,91 @@ if [ "$distro" == "3" ] || [ "$distro" == "5" ] || [ "$distro" == "6" ]; then
|
|||||||
echo -e "\nGeneric packaging complete.\n"
|
echo -e "\nGeneric packaging complete.\n"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$distro" == "5" ] || [ "$distro" == "6" ]; then
|
if [ "$distro" == "3" ]; then
|
||||||
|
echo -e '\nPackaging for Fedora...\n'
|
||||||
|
rm -rf ~/rpmbuild
|
||||||
|
rpmdev-setuptree
|
||||||
|
cp packages/sshyp-"$version".tar.xz ~/rpmbuild/SOURCES
|
||||||
|
echo "Name: sshyp
|
||||||
|
Version: "$version"
|
||||||
|
Release: "$revision"
|
||||||
|
Summary: A light-weight, self-hosted, synchronized password manager
|
||||||
|
BuildArch: noarch
|
||||||
|
|
||||||
|
License: GPL3
|
||||||
|
URL: https://github.com/rwinkhart/sshyp
|
||||||
|
Source0: sshyp-"$version".tar.xz
|
||||||
|
|
||||||
|
Requires: python gnupg openssh nano wl-clipboard
|
||||||
|
|
||||||
|
%description
|
||||||
|
sshyp is a password-store compatible CLI password manager available for UNIX(-like) systems - its primary goal is to make syncing passwords and notes across devices as easy as possible via CLI.
|
||||||
|
|
||||||
|
%install
|
||||||
|
tar xf %{_sourcedir}/sshyp-"$version".tar.xz -C %{_sourcedir}
|
||||||
|
cp -r %{_sourcedir}/usr %{buildroot}
|
||||||
|
|
||||||
|
%files
|
||||||
|
/usr/bin/sshyp
|
||||||
|
/usr/bin/sshync.py
|
||||||
|
/usr/bin/sshypRemote.py
|
||||||
|
%license /usr/share/licenses/sshyp/license
|
||||||
|
%doc /usr/share/doc/sshyp/changelog
|
||||||
|
%doc /usr/share/man/man1/sshyp.1.gz
|
||||||
|
" > ~/rpmbuild/SPECS/sshyp.spec
|
||||||
|
rpmbuild -bb ~/rpmbuild/SPECS/sshyp.spec
|
||||||
|
mv ~/rpmbuild/RPMS/noarch/* packages/
|
||||||
|
rm -rf ~/rpmbuild
|
||||||
|
echo -e "\nFedora packaging complete.\n"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$distro" == "4" ] || [ "$distro" == "8" ]; then
|
||||||
|
echo -e '\nPackaging for FreeBSD...\n'
|
||||||
|
mkdir -p packages/FreeBSDtemp/bin
|
||||||
|
tar xf packages/sshyp-"$version".tar.xz -C packages/FreeBSDtemp
|
||||||
|
ln -s /usr/local/bin/python3 packages/FreeBSDtemp/bin/python3
|
||||||
|
echo "name: sshyp
|
||||||
|
version: \""$version"\"
|
||||||
|
abi = \"FreeBSD:13:*\";
|
||||||
|
arch = \"freebsd:13:*\";
|
||||||
|
origin: security/sshyp
|
||||||
|
comment: \"a password manager\"
|
||||||
|
desc: \"a light-weight, self-hosted, synchronized password manager\"
|
||||||
|
maintainer: <idgr at tutanota dot com>
|
||||||
|
www: https://github.com/rwinkhart/sshyp
|
||||||
|
prefix: /
|
||||||
|
\"deps\" : {
|
||||||
|
\"python\" : {
|
||||||
|
\"origin\" : \"lang/python\"
|
||||||
|
},
|
||||||
|
\"gnupg\" : {
|
||||||
|
\"origin\" : \"security/gnupg\"
|
||||||
|
},
|
||||||
|
\"nano\" : {
|
||||||
|
\"origin\" : \"editors/nano\"
|
||||||
|
},
|
||||||
|
\"xclip\" : {
|
||||||
|
\"origin\" : \"x11/xclip\"
|
||||||
|
},
|
||||||
|
\"wl-clipboard\" : {
|
||||||
|
\"origin\" : \"x11/wl-clipboard\"
|
||||||
|
},
|
||||||
|
},
|
||||||
|
" > packages/FreeBSDtemp/+MANIFEST
|
||||||
|
echo "/bin/python3
|
||||||
|
/usr/bin/sshync.py
|
||||||
|
/usr/bin/sshyp
|
||||||
|
/usr/bin/sshypRemote.py
|
||||||
|
/usr/share/doc/sshyp/changelog
|
||||||
|
/usr/share/licenses/sshyp/license
|
||||||
|
/usr/share/man/man1/sshyp.1.gz
|
||||||
|
" > packages/FreeBSDtemp/plist
|
||||||
|
pkg create -m packages/FreeBSDtemp/ -r packages/FreeBSDtemp/ -p packages/FreeBSDtemp/plist -o packages/
|
||||||
|
rm -rf packages/FreeBSDtemp
|
||||||
|
echo -e "\nFreeBSD packaging complete.\n"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$distro" == "7" ] || [ "$distro" == "8" ]; then
|
||||||
echo -e '\nGenerating PKGBUILD...'
|
echo -e '\nGenerating PKGBUILD...'
|
||||||
echo "# Maintainer: Randall Winkhart <idgr at tutanota dot com>
|
echo "# Maintainer: Randall Winkhart <idgr at tutanota dot com>
|
||||||
|
|
||||||
@@ -119,7 +244,3 @@ package() {
|
|||||||
" > packages/PKGBUILD
|
" > packages/PKGBUILD
|
||||||
echo -e "\nPKGBUILD generated.\n"
|
echo -e "\nPKGBUILD generated.\n"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$distro" == "4" ]; then
|
|
||||||
echo -e '\nThis packaging format is not yet supported, but will be in the near future!\n'
|
|
||||||
fi
|
|
||||||
|
|||||||
+37
-31
@@ -1,44 +1,52 @@
|
|||||||
sshyp 2022.02.16.fr4.2
|
sshyp v1.0.1
|
||||||
|
|
||||||
The High-Tech Shears Update - Patch 2
|
The Polished Trotters Update - Patch 1
|
||||||
|
|
||||||
This release re-addresses a bug with local folder deletion.
|
This is a hotfix for the Haiku decryption bug.
|
||||||
|
|
||||||
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).
|
|
||||||
|
|
||||||
Changes:
|
Changes:
|
||||||
|
|
||||||
- fixed an issue where folders could not be deleted locally (actually, this time)
|
- subprocess.Popen has been replaced with subprocess.run where applicable
|
||||||
- properly handled an exception for when the user forgets a following '/' when attempting to delete a folder
|
- stdout is no longer captured with any subprocess.Popen or subprocess.run usages
|
||||||
|
^ this fixes decryption on Haiku
|
||||||
|
|
||||||
&&
|
<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
|
||||||
|
|
||||||
|
sshyp v1.0.0
|
||||||
|
|
||||||
Planned for next major update (fr5, The sshyp Doing a Split Update):
|
The Polished Trotters Update
|
||||||
|
|
||||||
sshyp:
|
This release brings 'sshyp' in line with the original goals of the project.
|
||||||
** sshyp has recieved a major visual overhaul
|
As such, it is being crowned "v1.0.0", and is considered a stable base for future expansions.
|
||||||
^ this includes the new file list and thematic text art
|
|
||||||
|
|
||||||
sshync:
|
Features:
|
||||||
** 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
|
|
||||||
|
|
||||||
&&
|
- sshyp has been modified to run on Haiku, an open-source re-implementation of BeOS
|
||||||
|
^ new package formats have been added for Haiku, FreeBSD, and Fedora Linux
|
||||||
|
- the entry format has been changed to support entries created in pass/password-store
|
||||||
|
^ this change requires existing entry libraries to be converted - see the sshyp v1.0.0 release page on GitHub for a conversion script
|
||||||
|
- majorly overhauled visual experience for sshyp
|
||||||
|
^ this includes a new entry list, a new entry readout, colored output, ascii art, and more!
|
||||||
|
- entries can now optionally be passed as arguments, directly
|
||||||
|
^ as opposed to the user being prompted for an entry name after running a command
|
||||||
|
|
||||||
Planned for next, next major update (fr6, The Farmer Shearing the sshyp Update):
|
Changes:
|
||||||
|
|
||||||
** 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)
|
- corrected outdated licensing and copyright information
|
||||||
** imporove password generator to guarantee more secure results
|
- 'if __name__=="__main__":' convention is now used
|
||||||
** enforce permissions on the server-side
|
- help screens have been overhauled
|
||||||
** allow for copying entire notes (not just first line)
|
- improved password generator to guarantee more secure results
|
||||||
** ability to pass entries as arguments for more functions
|
- fixed errors when trying to sync with a multi-word entry on the server
|
||||||
|
- sshync now uses 'scp' (via the sftp protocol), rather than 'sftp'
|
||||||
&&
|
- rename function now properly allows for renaming folders
|
||||||
|
- renaming an entry/folder will now properly delete the old entry/folder from the server
|
||||||
Backlog:
|
- entry previews at the time of entry creation/editing no longer require entering the gpg password more times than necessary
|
||||||
|
- entries will no longer be overwritten if attempting to create a new entry that uses an already existing name
|
||||||
** create separate gui frontend targetting mobile and desktop Linux
|
- the clipboard now automatically clears after 30 seconds
|
||||||
** auto-completion on tab (currently unsure of best way to make this work)
|
- sshyp server no longer needs to create copies of its libraries in ~/
|
||||||
|
- added more and improved existing exceptions
|
||||||
|
- the lock file is now decrypted to /dev/null
|
||||||
|
- ...and lots of minor (under the hood) changes!
|
||||||
|
|
||||||
<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
|
<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
|
||||||
|
|
||||||
@@ -47,7 +55,5 @@ https://raw.githubusercontent.com/rwinkhart/sshyp/main/extra/changelog-total
|
|||||||
|
|
||||||
Legend:
|
Legend:
|
||||||
|
|
||||||
** = feature/change not yet finished/implemented
|
|
||||||
- = feature/change implemented and pushed upstream
|
- = feature/change implemented and pushed upstream
|
||||||
^ = note regarding the above feature/change
|
^ = note regarding the above feature/change
|
||||||
&& = visual separater for patch notes for different planned major version releases
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
sshyp is a FOSS password manager that takes advantage of rsync
|
sshyp is a FOSS password manager that uses an sftp-based syncing back-end.
|
||||||
Copyright (C) 2021 Randall Winkhart idgr@tutanota.com
|
Copyright (C) 2022 Randall Winkhart idgr@tutanota.com
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
This program is free software: you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
Reference in New Issue
Block a user