+
    <Zuj  ã                   ó  € R t ^ RIHtHt ^ RIHt ^ RIHt ^ RIH	t	H
t
 ^ RIHtHt ]! 4       t]! ]	P                  R7      t]P#                  R]R7      R	 R
 l4       t]P#                  R]R7      R R l4       t]P)                  R4      R R l4       t]P#                  R4      R R l4       t]P#                  R4      R R l4       t]P#                  R]R7      R R l4       t]P3                  R]R7      R R l4       t]P)                  R4      R R l4       t]P#                  R 4      R! R" l4       t]P)                  R#4      R$ R% l4       t]P#                  R&4      R' R( l4       t]P#                  R)4      R* R+ l4       tR,# )-z3HTTP routes for the Remote Office Center dashboard.)Ú	APIRouterÚRequest)ÚHTMLResponse)ÚJinja2Templates)ÚconfigÚservices)ÚPhoneHealthÚPhoneHealthUpdate)Ú	directoryÚ/)Úresponse_classc                ó0   € V ^8„  d   QhR\         R\        /# ©é   ÚrequestÚreturn©r   r   )Úformats   "ÚD:\RemoteOffice\app\routes.pyÚ__annotate__r      s   € ÷ ñ œð ¤Lñ ó    c              ƒ  óZ   "  € \         P                  V RR\        P                  /R7      # 5i)zRender the original dashboard.z
index.htmlÚ
desktop_ip©r   ÚnameÚcontext©Ú	templatesÚTemplateResponser   Ú
DESKTOP_IP©r   s   &r   Úhomer!      s5   é € ô ×%Ñ%ØØàœ&×+Ñ+ð
ð &ó ð ùó   ‚)+z
/dashboardc                ó0   € V ^8„  d   QhR\         R\        /# r   r   )r   s   "r   r   r   !   s   € ÷ ñ œWð ¬ñ r   c              ƒ  óZ   "  € \         P                  V RR\        P                  /R7      # 5i)zRender the new FRO Dashboard.zdashboard.htmlr   r   r   r    s   &r   Ú	dashboardr%       s5   é € ô ×%Ñ%ØØàœ&×+Ñ+ð
ð &ó ð ùr"   z/wakec                óF   € V ^8„  d   QhR\         \        \        3,          /# ©r   r   ©ÚdictÚstr)r   s   "r   r   r   0   s   € ÷ +ñ +”tœC¤˜H•~ñ +r   c               ƒ  ó<   "  € \         P                  ! 4        RR/# 5i)z0Send a Wake-on-LAN packet to the office desktop.ÚstatuszMagic Packet Sent)r   Úwake_desktop© r   r   Úwake_pcr/   /   s   é € ô ×ÒÔØÐ)Ð*Ð*ùó   ‚z/statusc                óF   € V ^8„  d   QhR\         \        \        3,          /# r'   ©r)   r*   Úbool)r   s   "r   r   r   :   s   € ÷ ñ ”dœ3¤˜9•oñ r   c               ƒ  ó8   "  € R\         P                  ! 4       /# 5i)z'Return the current desktop ping result.Údesktop)r   Úis_desktop_onliner.   r   r   r,   r,   9   s   é € ð 	”8×-Ò-Ó/ðð ùs   ‚z/systemc                ó8   € V ^8„  d   QhR\         P                  /# r'   )r   ÚSystemHealth)r   s   "r   r   r   E   s   € ÷ (ñ (”h×+Ñ+ñ (r   c               ƒ  ó4   "  € \         P                  ! 4       # 5i)zReturn current health metrics.)r   Úget_system_healthr.   r   r   Úsystemr;   D   s   é € ô ×%Ò%Ó'Ð'ùó   ‚z/phone/health)Úresponse_modelc                ó$   € V ^8„  d   QhR\         /# r'   )r   )r   s   "r   r   r   N   s   € ÷ 'ñ 'œKñ 'r   c               ƒ  ó4   "  € \         P                  ! 4       # 5i)zReturn latest phone health.)r   Úget_phone_healthr.   r   r   Úphone_healthrA   M   s   é € ô ×$Ò$Ó&Ð&ùr<   c                ó0   € V ^8„  d   QhR\         R\        /# )r   Úreportr   )r	   r   )r   s   "r   r   r   T   s   € ÷ 0ñ 0Üð0äñ0r   c              ƒ  ó6   "  € \         P                  ! V 4      # 5i)zUpdate phone health report.)r   Úupdate_phone_health)rC   s   &r   rE   rE   S   s   é € ô
 ×'Ò'¨Ó/Ð/ùs   ‚z	/rustdeskc                óF   € V ^8„  d   QhR\         \        \        3,          /# r'   r(   )r   s   "r   r   r   _   s   € ÷ $ñ $œœS¤#˜X�ñ $r   c               ƒ  ó<   "  € \         P                  ! 4        RR/# 5i)zLaunch RustDesk.r,   Ú
Connecting)r   Úconnect_rustdeskr.   r   r   ÚrustdeskrJ   ^   s   é € ô ×ÒÔØ�lÐ#Ð#ùr0   z/rustdesk/statusc                óF   € V ^8„  d   QhR\         \        \        3,          /# r'   r(   )r   s   "r   r   r   f   s   € ÷ #ñ #œt¤C¬ H�~ñ #r   c               ƒ  ó   "  € RR/# 5i)zReturn RustDesk status.r,   Ú	connectedr.   r.   r   r   Úrustdesk_statusrN   e   s   é € ð �kÐ"Ð"ùs   ‚z/open-folderc                óF   € V ^8„  d   QhR\         \        \        3,          /# r'   r(   )r   s   "r   r   r   o   s   € ÷  ñ  œ4¤¤S �>ñ  r   c               ƒ  ó<   "  € \         P                  ! 4        RR/# 5i)zOpen NAS folder.r,   ÚOpened)r   Úopen_nas_folderr.   r   r   Úopen_folderrS   n   s   é € ô ×ÒÔØ�hÐÐùr0   z/configc                óF   € V ^8„  d   QhR\         \        \        3,          /# r'   r(   )r   s   "r   r   r   y   s   € ÷ ñ œt¤C¬ H�~ñ r   c               ƒ  ó.   "  € R\         P                  /# 5i)zReturn configuration.Únas)r   ÚNAS_URLr.   r   r   Úconfig_endpointrX   x   s   é € ð 	Œv�~‰~ðð ùs   ‚z
/tailscalec                ó”   € V ^8„  d   QhR\         \        \        3,          \         \        \        \        ,          3,          ,          /# r'   r2   )r   s   "r   r   r   „   s-   € ÷ +ñ +œœc¤4˜i�¬4´´T¼CµZ°Õ+@Õ@ñ +r   c               ƒ  ó4   "  € \         P                  ! 4       # 5i)zReturn Tailscale status.)r   Úget_tailscale_statusr.   r   r   Ú	tailscaler\   ƒ   s   é € ô ×(Ò(Ó*Ð*ùr<   N) Ú__doc__Úfastapir   r   Úfastapi.responsesr   Úfastapi.templatingr   Úappr   r   Úapp.schemasr   r	   ÚrouterÚTEMPLATES_DIRr   Úgetr!   r%   Úpostr/   r,   r;   rA   ÚputrE   rJ   rN   rS   rX   r\   r.   r   r   Ú<module>rh      s›  ðÙ 9ç &Ý *Ý .ç  ß 6á	‹€Ù f×&:Ñ&:Ô;€	ð ‡�ˆC €Ó-ôó .ðð ‡�ˆL¨€Ó6ôó 7ðð ‡�ˆWÓô+ó ð+ð ‡�ˆIÓôó ðð ‡�ˆIÓô(ó ð(ð ‡�ˆO¨K€Ó8ô'ó 9ð'ð
 ‡�ˆO¨K€Ó8ô0ó 9ð0ð ‡�ˆ[Óô$ó ð$ð ‡�ÐÓô#ó  ð#ð ‡�ˆ^Óô ó ð ð ‡�ˆIÓôó ðð ‡�ˆLÓô+ó ò+r   