[+] update pr34

1. partially add crypto logic;
  2. fetch updated commands from laptop;
  3. update Makefile;
This commit is contained in:
Siarhei Siniak 2025-03-03 09:51:26 +03:00
parent b12395621d
commit 1fb4e4efc5
5 changed files with 116 additions and 23 deletions

@ -1,10 +1,10 @@
.PHONY: python_clean_online_fxreader_vpn .PHONY: python_clean_online_fxreader_vpn
host_deps: host_deps:
./m host_deps ./m.py host_deps
python_lint: python_lint:
./m mypy -- -f vscode 2>&1 | less ./m.py mypy -- -f vscode 2>&1 | less
#python_clean_online_fxreader_vpn: #python_clean_online_fxreader_vpn:
# rm -fr \ # rm -fr \

@ -1 +1 @@
Subproject commit 7552bcde773823c51c82daa5d9b23ea045df9ec2 Subproject commit 41fb87dc48ca2b0710e8489fc2de64f1fc82cf15

@ -971,7 +971,10 @@ def resilient_vlc(stream=None):
pass pass
time.sleep(1.0) time.sleep(1.0)
def sway_sock(): def sway_sock(
wait: bool = False,
) -> Optional[str]:
while True:
import glob import glob
uid = os.stat(os.environ['HOME']).st_uid uid = os.stat(os.environ['HOME']).st_uid
t1 = glob.glob( t1 = glob.glob(
@ -986,8 +989,16 @@ def sway_sock():
os.stat(o).st_mtime os.stat(o).st_mtime
for o in t1 for o in t1
] ]
t3 = sorted(enumerate(t1), key=lambda x: t2[x[0]])[-1][0] sorted_entries = sorted(enumerate(t1), key=lambda x: t2[x[0]])
if len(sorted_entries) > 0:
t3 = sorted_entries[-1][0]
return t1[t3] return t1[t3]
else:
if wait:
time.sleep(0.1)
continue
else:
return None
def eternal_firefox( def eternal_firefox(
tabs=None, tabs=None,
@ -2084,6 +2095,25 @@ def scrap_yt_music(argv: list[str]) -> None:
for o in context['workers']: for o in context['workers']:
o.join() o.join()
def loginctl(argv: list[str]) -> None:
parser = argparse.ArgumentParser()
parser.add_argument(
'--action',
choices=[
'lock-session',
],
)
options = parser.parse_args(argv)
if options.action == 'lock-session':
subprocess.check_call(r'''
loginctl list-sessions -j | jq -r ".[] | select(.uid==$UID) | \
.session" | loginctl lock-session
''', shell=True, timeout=1)
else:
raise NotImplementedError
def desktop_services(argv): def desktop_services(argv):
parser = optparse.OptionParser() parser = optparse.OptionParser()
parser.add_option( parser.add_option(
@ -2606,7 +2636,15 @@ echo 6500 > /sys/bus/platform/devices/applesmc.768/fan1_output;
else: else:
pass pass
os.environ['SWAYSOCK'] = sway_sock() #logger.info(dict(
# environ=os.environ,
# #session=subprocess.check_output(['loginctl', 'show-session'], timeout=1,),
#))
sway_sock_res = sway_sock(True)
if sway_sock_res:
os.environ['SWAYSOCK'] = sway_sock_res
assert all([ assert all([
env_name in os.environ env_name in os.environ
@ -2614,7 +2652,8 @@ echo 6500 > /sys/bus/platform/devices/applesmc.768/fan1_output;
'GTK_IM_MODULE', 'GTK_IM_MODULE',
'XMODIFIERS', 'XMODIFIERS',
'QT_IM_MODULE', 'QT_IM_MODULE',
'I3SOCK', #'I3SOCK',
#'XDG_SEAT',
'SWAYSOCK', 'SWAYSOCK',
'WAYLAND_DISPLAY', 'WAYLAND_DISPLAY',
] ]
@ -2684,7 +2723,8 @@ echo 6500 > /sys/bus/platform/devices/applesmc.768/fan1_output;
unlock='echo unlock; pkill --signal SIGINT swaylock; swaymsg "output * dpms on";', unlock='echo unlock; pkill --signal SIGINT swaylock; swaymsg "output * dpms on";',
unlock2='pkill --signal SIGINT swaylock;', unlock2='pkill --signal SIGINT swaylock;',
resume='echo resume; swaymsg "output * dpms on";', resume='echo resume; swaymsg "output * dpms on";',
before_sleep='echo before_sleep; loginctl lock-session;', before_sleep='echo before_sleep; commands loginctl lock-session;',
#before_sleep='echo blah;',
after_resume='echo after_resume; pkill --signal SIGUSR1 swayidle;', after_resume='echo after_resume; pkill --signal SIGUSR1 swayidle;',
) )
self.last_force_idle = None self.last_force_idle = None
@ -3886,6 +3926,7 @@ class Command(enum.StrEnum):
socat_ssh = 'socat-ssh' socat_ssh = 'socat-ssh'
gnome_shortcuts = 'gnome-shortcuts' gnome_shortcuts = 'gnome-shortcuts'
sway_sock = 'sway_sock' sway_sock = 'sway_sock'
loginctl = 'loginctl'
suspend_timer = 'suspend-timer' suspend_timer = 'suspend-timer'
desktop_services = 'desktop-services' desktop_services = 'desktop-services'
pm_service = 'pm-service' pm_service = 'pm-service'
@ -4027,6 +4068,8 @@ def commands_cli(
gnome_shortcuts(args) gnome_shortcuts(args)
elif options.command is Command.sway_sock: elif options.command is Command.sway_sock:
print(sway_sock()) print(sway_sock())
elif options.command is Command.loginctl:
loginctl(args)
elif options.command is Command.suspend_timer: elif options.command is Command.suspend_timer:
suspend_timer(args) suspend_timer(args)
elif options.command is Command.desktop_services: elif options.command is Command.desktop_services:

@ -0,0 +1,45 @@
from typing import (Literal,)
class PasswordUtils:
@classmethod
def encrypt(
cls,
key: str,
mode: Literal['bytes', 'base64'],
) -> tuple[str, str]:
import os
from cryptography.hazmat.primitives.kdf.scrypt import Scrypt
salt = os.urandom(16)
# derive
kdf = Scrypt(
salt=salt,
length=32,
n=2**14,
r=8,
p=1,
)
key = kdf.derive(key.encode('utf-8'))
if mode == 'bytes':
return (salt, key)
elif mode == 'base64':
return ':'.join([
base64.b64encode(o, width=0).decode('utf-8')
for o in [salt, key,]
])
# # verify
# kdf = Scrypt(
# salt=salt,
# length=32,
# n=2**14,
# r=8,
# p=1,
# )
#
# kdf.verify(b"my great password", key)
#

@ -12,7 +12,12 @@ dependencies = [
[project.optional-dependencies] [project.optional-dependencies]
early = [ early = [
'numpy' 'numpy',
'cryptography',
]
crypto = [
'cryptography',
] ]
[tool.online-fxreader-pr34] [tool.online-fxreader-pr34]