feat: integrate API lifecycle with teardown and update dependencies

This commit is contained in:
2026-04-07 23:30:08 -04:00
parent a9c7ddec2b
commit 1f5c6604d6
4 changed files with 36 additions and 0 deletions

BIN
decnet.db

Binary file not shown.

View File

@@ -353,3 +353,11 @@
<134>1 2026-04-08T03:05:15.848356+00:00 decky-webmail pop3 - command [decnet@55555 src="192.168.1.5" cmd=" +-3<04><04><11><04><01>O<EFBFBD><4F><EFBFBD><EFBFBD>V<EFBFBD>j!x[%<25>D<EFBFBD><44><<3C><>2<EFBFBD>9<EFBFBD><39>8M<38>Q<EFBFBD><51><17><><EFBFBD><16><><EFBFBD>es!?<3F>7<13><><EFBFBD><EFBFBD>j<EFBFBD> <09><>6@"] <134>1 2026-04-08T03:05:15.848356+00:00 decky-webmail pop3 - command [decnet@55555 src="192.168.1.5" cmd=" +-3<04><04><11><04><01>O<EFBFBD><4F><EFBFBD><EFBFBD>V<EFBFBD>j!x[%<25>D<EFBFBD><44><<3C><>2<EFBFBD>9<EFBFBD><39>8M<38>Q<EFBFBD><51><17><><EFBFBD><16><><EFBFBD>es!?<3F>7<13><><EFBFBD><EFBFBD>j<EFBFBD> <09><>6@"]
<134>1 2026-04-08T03:05:15.848415+00:00 decky-webmail pop3 - command [decnet@55555 src="192.168.1.5" cmd="<22> <0B>^V<>l<EFBFBD><1D><74>(e=I+'C<><43>)<29><><EFBFBD>B<EFBFBD><42>LH. w_ ԝ<><D49D> <09>rN<72> <0B><>1™<0F>Q-v<><76><EFBFBD>O<EFBFBD>5<EFBFBD>Fi.$<24><00>C/<2F><11>ޢ5<DEA2>~<7E><>RИu\"j<>d4<64><34><EFBFBD>[<5B>!<21>"] <134>1 2026-04-08T03:05:15.848415+00:00 decky-webmail pop3 - command [decnet@55555 src="192.168.1.5" cmd="<22> <0B>^V<>l<EFBFBD><1D><74>(e=I+'C<><43>)<29><><EFBFBD>B<EFBFBD><42>LH. w_ ԝ<><D49D> <09>rN<72> <0B><>1™<0F>Q-v<><76><EFBFBD>O<EFBFBD>5<EFBFBD>Fi.$<24><00>C/<2F><11>ޢ5<DEA2>~<7E><>RИu\"j<>d4<64><34><EFBFBD>[<5B>!<21>"]
<134>1 2026-04-08T03:05:15.848468+00:00 decky-webmail pop3 - command [decnet@55555 src="192.168.1.5" cmd="<22>E<EFBFBD><45>F;<3B>wn<77>i<EFBFBD><69><EFBFBD>Ta<54><61><EFBFBD>G<05>vA<76><41>+<2B>:<3A> <134>1 2026-04-08T03:05:15.848468+00:00 decky-webmail pop3 - command [decnet@55555 src="192.168.1.5" cmd="<22>E<EFBFBD><45>F;<3B>wn<77>i<EFBFBD><69><EFBFBD>Ta<54><61><EFBFBD>G<05>vA<76><41>+<2B>:<3A>
<EFBFBD>:<3A>a[<5B><>'8"]
<134>1 2026-04-08T03:05:15.848525+00:00 decky-webmail pop3 - command [decnet@55555 src="192.168.1.5" cmd="?<3F>F<>ϖ!\"<22>aԖ/<2F><1A>B<EFBFBD><42><EFBFBD>\\<5C><12>i<EFBFBD>񛼷-xo<78><6F>ƥU.a<>{=Eb<45>B\]<16>498<>-<2D>J?{<><7F><03><14>'DiZ) E<15>ۦ<EFBFBD><DBA6>P<EFBFBD>'<27>丹24<><34><EFBFBD>VV<56><56>.Д&^<5E><><EFBFBD>V<EFBFBD>bZ<62><5A><EFBFBD><EFBFBD><EFBFBD><06>)2@r<> <20>,"]
<134>1 2026-04-08T03:05:15.848594+00:00 decky-webmail pop3 - command [decnet@55555 src="192.168.1.5" cmd="'t<00><><EFBFBD><00><>><3E><><EFBFBD><EFBFBD>iw<69>`<60>ɇ<EFBFBD>eIh<49>TFf,'<27><><EFBFBD>a0'<27>n<EFBFBD><6E><0E>kGc<47>!J3<>v<EFBFBD>j<EFBFBD><6A>2[<5B><>PP<50><50>:<3A>z<EFBFBD><7A><EFBFBD>*<2A><><EFBFBD><EFBFBD><EFBFBD>y,<2C><>ʞJ<CA9E>[RX<52>A<EFBFBD><41>`<60><><><05><>+<2B><><EFBFBD>k;,<2C>8*ߡw<DFA1><77><EFBFBD>z<EFBFBD>2<>"]
<134>1 2026-04-08T03:05:15.848649+00:00 decky-webmail pop3 - command [decnet@55555 src="192.168.1.5" cmd="1v<31><76><EFBFBD><10><>:<3A>5<EFBFBD>VP<56>t<EFBFBD>Ѳ<EFBFBD><D1B2>a[z<>z<EFBFBD>{B~cm<63>2Q,x>"]
<134>1 2026-04-08T03:05:15.848705+00:00 decky-webmail pop3 - command [decnet@55555 src="192.168.1.5" cmd="-T<>'<27><EFBFBD>+$<24><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,-Nѹ$v2<76><32><EFBFBD>sij¶<C4B3><C2B6>B<EFBFBD><42>%<25><><EFBFBD>Ĺ<EFBFBD>9P<39>'%Q<14>p<EFBFBD>qk<71>s/<2F><><EFBFBD>@D8 I|M<>z<EFBFBD>ທ疓<E0BA97>l<04> <0B><>;<1C>˪<EFBFBD><CBAA><EFBFBD>E<<3C>i<EFBFBD>q<EFBFBD>8?ͺ<>?)^q0<71><30>J<EFBFBD>#<23><><EFBFBD>u<><75><EFBFBD>F#\\b<>|<7C><><02>{<7B>"]
<134>1 2026-04-08T03:05:15.848801+00:00 decky-webmail pop3 - connect [decnet@55555 src="192.168.1.5" src_port="50550"]
<134>1 2026-04-08T03:05:15.848882+00:00 decky-webmail pop3 - command [decnet@55555 src="192.168.1.5" cmd="WSi<><69>뎱sr<73>` <>B @<40>&<26><>cG|$G<>͒
<EFBFBD>/<2F>"]

View File

@@ -131,6 +131,27 @@ def deploy(config: DecnetConfig, dry_run: bool = False, no_cache: bool = False)
_print_status(config) _print_status(config)
def _kill_api() -> None:
"""Find and kill any running DECNET API (uvicorn) processes."""
import psutil
import signal
import os
_killed: bool = False
for _proc in psutil.process_iter(['pid', 'name', 'cmdline']):
try:
_cmd = _proc.info['cmdline']
if _cmd and "uvicorn" in _cmd and "decnet.web.api:app" in _cmd:
console.print(f"[yellow]Stopping DECNET API (PID {_proc.info['pid']})...[/]")
os.kill(_proc.info['pid'], signal.SIGTERM)
_killed = True
except (psutil.NoSuchProcess, psutil.AccessDenied):
continue
if _killed:
console.print("[green]API stopped.[/]")
def teardown(decky_id: str | None = None) -> None: def teardown(decky_id: str | None = None) -> None:
state = load_state() state = load_state()
if state is None: if state is None:
@@ -159,6 +180,10 @@ def teardown(decky_id: str | None = None) -> None:
teardown_host_macvlan(decky_range) teardown_host_macvlan(decky_range)
remove_macvlan_network(client) remove_macvlan_network(client)
clear_state() clear_state()
# Kill API when doing full teardown
_kill_api()
net_driver = "IPvlan" if config.ipvlan else "MACVLAN" net_driver = "IPvlan" if config.ipvlan else "MACVLAN"
console.print(f"[green]All deckies torn down. {net_driver} network removed.[/]") console.print(f"[green]All deckies torn down. {net_driver} network removed.[/]")

View File

@@ -21,6 +21,9 @@ dependencies = [
"uvicorn>=0.29.0", "uvicorn>=0.29.0",
"aiosqlite>=0.20.0", "aiosqlite>=0.20.0",
"PyJWT>=2.8.0", "PyJWT>=2.8.0",
"bcrypt>=4.1.0",
"psutil>=5.9.0",
"httpx>=0.27.0",
] ]
[project.scripts] [project.scripts]