4 Commits
3 changed files with 12 additions and 15 deletions
+10 -13
View File
@@ -1,10 +1,11 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
from base64 import b32decode from base64 import b32decode
from os import environ, listdir, path, system, uname from os import environ, listdir, path, uname
from pathlib import Path from pathlib import Path
from sshync import get_profile from sshync import get_profile
from sshyp import decrypt, entry_list_gen, shm_gen, whitelist_verify from sshyp import decrypt, entry_list_gen, shm_gen, whitelist_verify
from subprocess import PIPE, Popen, run
from sys import argv, exit as s_exit from sys import argv, exit as s_exit
from time import sleep, strftime, time from time import sleep, strftime, time
@@ -27,9 +28,9 @@ def mfa_read_shortcut(): # reads and extracts MFA info from the user-specified
s_exit(1) s_exit(1)
_shm_folder, _shm_entry = shm_gen() _shm_folder, _shm_entry = shm_gen()
if quick_unlock_enabled == 'y': if quick_unlock_enabled == 'y':
decrypt(directory + argument, _shm_folder, _shm_entry, gpg, whitelist_verify(port, username_ssh, ip, device_id)) decrypt(directory + argument, _shm_folder, _shm_entry, whitelist_verify(port, username_ssh, ip, device_id))
else: else:
decrypt(directory + argument, _shm_folder, _shm_entry, gpg, False) decrypt(directory + argument, _shm_folder, _shm_entry, False)
try: try:
_mfa_data = open(f"{path.expanduser('~/.config/sshyp/tmp/')}{_shm_folder}/{_shm_entry}", 'r').readlines() _mfa_data = open(f"{path.expanduser('~/.config/sshyp/tmp/')}{_shm_folder}/{_shm_entry}", 'r').readlines()
_type = _mfa_data[4].split('otpauth://')[1].split('/')[0] _type = _mfa_data[4].split('otpauth://')[1].split('/')[0]
@@ -60,10 +61,6 @@ if __name__ == '__main__':
ip = str(ssh_info[1].rstrip()) ip = str(ssh_info[1].rstrip())
port = str(ssh_info[2].rstrip()) port = str(ssh_info[2].rstrip())
directory = str(ssh_info[3].rstrip()) directory = str(ssh_info[3].rstrip())
if uname()[0] == 'Haiku': # set proper gpg command for OS
gpg = 'gpg --pinentry-mode loopback'
else:
gpg = 'gpg'
# main process: runs functions to generate MFA key, then continuously copies up-to-date MFA key to clipboard # main process: runs functions to generate MFA key, then continuously copies up-to-date MFA key to clipboard
try: try:
@@ -83,14 +80,14 @@ if __name__ == '__main__':
_mfa_key = steam_totp(b32decode(mfa_data[1])) _mfa_key = steam_totp(b32decode(mfa_data[1]))
else: else:
_mfa_key = totp(mfa_data[1], mfa_data[2], mfa_data[3], mfa_data[4]) _mfa_key = totp(mfa_data[1], mfa_data[2], mfa_data[3], mfa_data[4])
if uname()[0] == 'Haiku': # Haiku clipboard detection if 'WAYLAND_DISPLAY' in environ: # Wayland clipboard detection
system(f"clipboard -c '{_mfa_key}'") run(['wl-copy', _mfa_key])
elif uname()[0] == 'Haiku': # Haiku clipboard detection
run(['clipboard', '-c', _mfa_key])
elif Path("/data/data/com.termux").exists(): # Termux (Android) clipboard detection elif Path("/data/data/com.termux").exists(): # Termux (Android) clipboard detection
system(f"termux-clipboard-set '{_mfa_key}'") run(['termux-clipboard-set', _mfa_key])
elif environ.get('WAYLAND_DISPLAY') == 'wayland-0': # Wayland clipboard detection
system(f"wl-copy '{_mfa_key}'")
else: # X11 clipboard detection else: # X11 clipboard detection
system(f"echo -n '{_mfa_key}' | xclip -sel c") run(['xclip', '-sel', 'c'], stdin=Popen(['echo', '-n', _mfa_key], stdout=PIPE).stdout)
sleep(1) sleep(1)
except KeyboardInterrupt: except KeyboardInterrupt:
print('\n') print('\n')
+1 -1
View File
@@ -67,7 +67,7 @@ package() {
} }
sha512sums=\" sha512sums=\"
"$sha512' 'sshyp-mfa\"\$pkgver\".tar.xz" "$sha512' 'sshyp-mfa-\"\$pkgver\".tar.xz"
\" \"
" > output/APKBUILD " > output/APKBUILD
echo -e "\nAPKBUILD generated\n" echo -e "\nAPKBUILD generated\n"
+1 -1
View File
@@ -1 +1 @@
1.2.0.1 1.3.0.1