[+] update pr34
1. partially add crypto logic; 2. fetch updated commands from laptop; 3. update Makefile;
This commit is contained in:
parent
b12395621d
commit
1fb4e4efc5
4
Makefile
4
Makefile
@ -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 \
|
||||||
|
2
deps/com.github.aiortc.aiortc
vendored
2
deps/com.github.aiortc.aiortc
vendored
@ -1 +1 @@
|
|||||||
Subproject commit 7552bcde773823c51c82daa5d9b23ea045df9ec2
|
Subproject commit 41fb87dc48ca2b0710e8489fc2de64f1fc82cf15
|
@ -971,23 +971,34 @@ def resilient_vlc(stream=None):
|
|||||||
pass
|
pass
|
||||||
time.sleep(1.0)
|
time.sleep(1.0)
|
||||||
|
|
||||||
def sway_sock():
|
def sway_sock(
|
||||||
import glob
|
wait: bool = False,
|
||||||
uid = os.stat(os.environ['HOME']).st_uid
|
) -> Optional[str]:
|
||||||
t1 = glob.glob(
|
while True:
|
||||||
os.path.join(
|
import glob
|
||||||
'/run',
|
uid = os.stat(os.environ['HOME']).st_uid
|
||||||
'user',
|
t1 = glob.glob(
|
||||||
'%d' % uid,
|
os.path.join(
|
||||||
'sway-ipc.%d*.sock' % uid,
|
'/run',
|
||||||
|
'user',
|
||||||
|
'%d' % uid,
|
||||||
|
'sway-ipc.%d*.sock' % uid,
|
||||||
|
)
|
||||||
)
|
)
|
||||||
)
|
t2 = [
|
||||||
t2 = [
|
os.stat(o).st_mtime
|
||||||
os.stat(o).st_mtime
|
for o in t1
|
||||||
for o in t1
|
]
|
||||||
]
|
sorted_entries = sorted(enumerate(t1), key=lambda x: t2[x[0]])
|
||||||
t3 = sorted(enumerate(t1), key=lambda x: t2[x[0]])[-1][0]
|
if len(sorted_entries) > 0:
|
||||||
return t1[t3]
|
t3 = sorted_entries[-1][0]
|
||||||
|
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:
|
||||||
|
45
python/online/fxreader/pr34/commands_typed/crypto.py
Normal file
45
python/online/fxreader/pr34/commands_typed/crypto.py
Normal file
@ -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]
|
||||||
|
Loading…
Reference in New Issue
Block a user