+
    $j@                    >   ^ RI Ht ^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RIH	t	 ^ RI
Ht ^ RIHt Rt]! RR	7       ! R
 R4      4       tR R ltR!R R lltR"R R lltR"R R lltR R ltR R ltR R ltR R ltR R ltR R lt]R 8X  d   ]! ]! 4       4      hR# )#    )annotationsN)	dataclass)Path)Any)serverz0.0.0.0T)slotsc                      ] tR t^t$ ]! ]P                  4      tR]R&   ]P                  t
R]R&   RtR]R&   RtR]R	&   R
tR]R&   RtR]R&   RtR]R&   RtR]R&   RtR# )LauncherSettingsstrrootintport metadata_pathTboolconfigure_firewallF	use_httpscertfilekeyfileopen_browser N)__name__
__module____qualname____firstlineno__r   r   DEFAULT_ROOTr   __annotations__DEFAULT_PORTr   r   r   r   r   r   r   __static_attributes__r       4D:\manuscrise bolyai ianos\ms_bj_browser\launcher.pyr
   r
      sd    F''(D#(##D##M3##ItHcGSL$r    r
   c                   V ^8  d   QhRR/# )   returnr   r   )formats   "r!   __annotate__r&      s     O O Or    c                 l    \        \        4      P                  4       P                  R ,          R,          # )datazlauncher_settings.json)r   __file__resolveparentr   r    r!   launcher_settings_pathr,      s&    >!!#**V36NNNr    c               $    V ^8  d   QhRRRRRR/# )r#   valuer   defaultr   r$   r   )r%   s   "r!   r&   r&   !   s!      S 4 4 r    c                    \        V \        4      '       d   V # V f   V# \        V \        4      '       d"   V P                  4       P	                  4       R9  # \        V 4      # )N>   r   0noofffalse)
isinstancer   r   striplower)r.   r/   s   &&r!   normalize_booleanr8   !   sP    %}%{{}""$,KKK;r    c                    V ^8  d   QhRRRR/# )r#   pathPath | Noner$   r
   r   )r%   s   "r!   r&   r&   +   s     & & &8H &r    c                   \        4       pT ;'       g    \        4       pVP                  4       '       g   V#  \        P                  ! VP                  R R7      4      p\        T\        4      '       g   T#  \        P                  ! TP                  RTP                  4      4      p\        TP                  R4      ;'       g    TP                   4      P#                  4       ;'       g    TP                   p\        TP                  R4      ;'       g    R4      P#                  4       p\%        TP                  R4      TP&                  R7      p\%        TP                  R4      TP(                  R7      p\%        TP                  R	4      TP*                  R7      p	\        TTTTT	\        TP                  R
4      ;'       g    R4      P#                  4       \        TP                  R4      ;'       g    R4      P#                  4       TR7      #   \        \        P                  3 d    Tu # i ; i  \         d    TP                  p ELi ; i)utf-8encodingr   r   r   r   r   )r/   r   r   r   r   r   r   r   r   r   r   r   r   )r
   r,   existsjsonloads	read_textOSErrorJSONDecodeErrorr5   dictr   validate_portgetr   
ValueErrorr   r   r6   r8   r   r   r   )
r:   defaultstargetpayloadr   r   r   r   r   r   s
   &         r!   load_launcher_settingsrN   +   s   !H--+-F==??**V--w-?@ gt$$##GKK$FG w{{6"33hmm4::<MMDO4::;AACM$N#X-B-BL +()83N3N "K (*<*<I #-W[[,22399;GKK	*00b1779!	 	+ T))*   }}s#   &H 70H1 H.-H.1IIc               $    V ^8  d   QhRRRRRR/# )r#   settingsr
   r:   r;   r$   Noner   )r%   s   "r!   r&   r&   T   s$      &1	r    c                   T;'       g    \        4       pVP                  P                  R R R7       RV P                  RV P                  RV P
                  RV P                  RV P                  RV P                  RV P                  R	V P                  /pVP                  \        P                  ! VR
^R7      RR7       R# )T)parentsexist_okr   r   r   r   r   r   r   r   F)ensure_asciiindentr=   r>   N)r,   r+   mkdirr   r   r   r   r   r   r   r   
write_textrB   dumps)rP   r:   rL   rM   s   &&  r!   save_launcher_settingsrZ   T   s     --+-F
MMt4//h99X''H%%8##--	G 

7q9  r    c                   V ^8  d   QhRR/# )r#   r$   argparse.Namespacer   )r%   s   "r!   r&   r&   i   s     1 1& 1r    c                    \         P                  ! R R7      p V P                  R\        RRR7       V P                  R\        RRR7       V P                  R\        RR	R7       V P                  R
RRR7       V P                  R\        RRR7       V P                  R\        RRR7       V P                  RRRR7       V P                  RRRR7       V P                  4       # )z5Launcher grafic pentru serverul manuscriselor Bolyai.)descriptionz--rootNz@Completeaza automat folderul de manuscrise in interfata grafica.)typer/   helpz--portz0Completeaza automat portul in interfata grafica.z
--metadataz2Completeaza automat fisierul JSON pentru metadate.z--https
store_truez#Porneste launcherul cu HTTPS bifat.)actionr`   z
--certfilez4Completeaza automat fisierul certificatului PEM/CRT.z	--keyfilez/Completeaza automat fisierul cheii private PEM.z--no-firewallz3Debifeaza configurarea automata a Windows Firewall.z--no-browserz+Nu deschide automat browserul dupa pornire.)argparseArgumentParseradd_argumentr   r   
parse_args)parsers    r!   rf   rf   i   s%   $$KF O	   ?	   A	   2  
 C	   >	   B  
 :  
 r    c                    V ^8  d   QhRRRR/# )r#   argsr\   r$   r
   r   )r%   s   "r!   r&   r&      s      !3 8H r    c                f   \        4       pV P                  e   \        V P                  4      Vn        V P                  e&   \        P
                  ! V P                  4      Vn        V P                  e   \        V P                  4      Vn        V P                  '       d<   RVn	        VP                  \        P                  8X  d   \        P                  Vn        V P                  e"   \        V P                  4      Vn        RVn	        V P                  e"   \        V P                  4      Vn        RVn	        VP                  '       d5   VP                  \        P                  8X  d   \        P                  Vn        V P                  '       d   RVn        V P                   '       d   RVn        V# )NTF)rN   r   r   r   r   rH   metadatar   httpsr   r   DEFAULT_HTTPS_PORTr   r   no_firewallr   
no_browserr   )ri   rP   s   & r!   build_initial_settingsrp      s(   %'HyyDIIyy,,TYY7}} !$T]]!3zzz!==F///"55HM}} .!||t||,!hmmv/B/BB11&+# %Or    c                    V ^8  d   QhRRRR/# )r#   initialr
   r$   zLauncherSettings | Noner   )r%   s   "r!   r&   r&      s      W W- W2I Wr    c                  a
aaaaaaaaaaaa ^ RI p^ RI HoHoHp RR/oVP	                  4       oSP                  R4       SP                  RR4       SP                  ^ ^R7       VP                  S^R7      pVP                  ^ ^ RR	7       VP                  ^^R7       VP                  V P                  R
7      oVP                  \        V P                  4      R
7      oVP                  V P                  R
7      oVP                  V P                   R
7      oVP                  V P"                  R
7      oVP                  V P$                  R
7      o
VP                  V P&                  R
7      oVP                  V P(                  R
7      oR VV3R llpR VV3R llpR V
VV3R llpR V
VVV3R llpR V
VVVVVVVVVV3R lloR V3R llpVP+                  VRR;R7      P                  ^ ^ ^RR7       VP+                  VRRRR7      P                  ^^ ^RR<R7       VP+                  VR R!7      P                  ^^ RR=R"7       VP-                  VS^R#7      P                  ^^RR=R"7       VP+                  VR$R!7      P                  ^^RR>R=R%7       VP+                  VR&R!7      P                  ^^ RR=R"7       VP-                  VS^6R#7      P                  ^^R'R=R"7       VP/                  VR(VR)7      P                  ^^RR>R=R%7       VP+                  VR*R!7      P                  ^^ RR=R"7       VP-                  VS^6R#7      P                  ^^R'R=R"7       VP/                  VR(VR)7      P                  ^^RR>R=R%7       VP+                  VR+RRR7      P                  ^^ ^RR=R7       VP1                  VR,SR-7      P                  ^^ ^RR?R7       VP1                  VR.SR-7      P                  ^^ ^RR=R7       VP+                  VR/R!7      P                  ^^ RR=R"7       VP-                  VS
^6R#7      P                  ^^R'R=R"7       VP/                  VR(VR)7      P                  ^^RR>R=R%7       VP+                  VR0R!7      P                  ^	^ RR=R"7       VP-                  VS^6R#7      P                  ^	^R'R=R"7       VP/                  VR(VR)7      P                  ^	^RR>R=R%7       VP+                  VR1RRR7      P                  ^
^ ^RR=R7       VP1                  VR2SR-7      P                  ^^ ^RR@R7       VP                  V4      p	V	P                  ^^ ^R3R7       VP/                  V	R4VR)7      P                  ^ ^ R=R57       VP/                  V	R6SR)7      P                  ^ ^R77       SP3                  R8V3R9 l4       SP5                  R:V4       SP7                  4        SR,          # )Ar   N)
filedialog
messageboxttkr.   zMS_BJ BrowserF)weight)paddingnsew)rowcolumnsticky)r.   c                   V ^8  d   QhRR/# r#   r$   rQ   r   )r%   s   "r!   r&   %prompt_settings.<locals>.__annotate__   s     % % %r    c                    < SP                  R SP                  4       P                  4       ;'       g    \        \        P
                  4      R7      p V '       d   SP                  V 4       R# R# )zAlege folderul cu manuscrise)title
initialdirN)askdirectoryrI   r6   r   r   r   set)selectedrt   
folder_vars    r!   browse_root$prompt_settings.<locals>.browse_root   sW    **0!~~'--/KK3v7J7J3K + 
 NN8$ r    c                   V ^8  d   QhRR/# r~   r   )r%   s   "r!   r&   r      s     
' 
'T 
'r    c            	     T  < SP                  4       P                  4       ;'       g    \        \        P                  ! 4       4      p SP                  R \        V 4      P                  \        \        V 4      P                  4      RRR.R7      pV'       d   SP                  V4       R# R# )z#Alege fisierul JSON pentru metadatez.json)r   initialfiler   defaultextension	filetypesN)zFisiere JSONz*.jsonzToate fisierelez*.*)
rI   r6   r   r   default_metadata_pathasksaveasfilenamer   namer+   r   )initial_pathr   rt   metadata_vars     r!   browse_metadata(prompt_settings.<locals>.browse_metadata   s    #'')//1XXS9U9U9W5X//7\*//4-445$13MN 0 
 X& r    c                   V ^8  d   QhRR/# r~   r   )r%   s   "r!   r&   r      s     ' 'T 'r    c                   < SP                  4       P                  4       ;'       g@    SP                  4       P                  4       ;'       g    \        \        P                  4      p SP                  R \        \        V 4      P                  '       d   \        V 4      P                  M
\        V 4      4      RR.R7      pV'       d   SP                  V4       R# R# )zAlege certificatul HTTPSr   r   r   N)zCertificate PEM/CRT/CERz*.pem;*.crt;*.cerr   
rI   r6   r   r   r   askopenfilenamer   suffixr+   r   )r   r   certfile_varrt   r   s     r!   browse_certfile(prompt_settings.<locals>.browse_certfile   s    #'')//1 
 
Z^^5E5K5K5M 
 
QTR
 --,\8J8Q8Q8Q4-44W[\hWij@* . 
 X& r    c                   V ^8  d   QhRR/# r~   r   )r%   s   "r!   r&   r      s     & &D &r    c                   < SP                  4       P                  4       ;'       gf    SP                  4       P                  4       ;'       g@    SP                  4       P                  4       ;'       g    \        \        P                  4      p SP                  R \        \        V 4      P                  '       d   \        V 4      P                  M
\        V 4      4      RR.R7      pV'       d   SP                  V4       R# R# )zAlege cheia privata HTTPSr   N)zChei private PEM/KEYz*.pem;*.keyr   r   )r   r   r   rt   r   keyfile_vars     r!   browse_keyfile'prompt_settings.<locals>.browse_keyfile   s    "(..0 
 
L4D4D4F4L4L4N 
 
R\R`R`RbRhRhRj 
 
nqo
 ---\8J8Q8Q8Q4-44W[\hWij7* . 
 OOH% r    c                   V ^8  d   QhRR/# r~   r   )r%   s   "r!   r&   r     s     " "D "r    c                   < SP                  4       P                  4       p SP                  4       P                  4       pSP                  4       P                  4       pS	P                  4       P                  4       pV '       g   S
P                  R RSR7       R#  \        P                  ! \        V 4      4       \        P                  ! SP                  4       P                  4       4      p\        SP                  4       4      '       d>   \        P                  ! V'       d   \        V4      MRV'       d   \        V4      MR4       \        T TT\        SP                  4       4      \        SP                  4       4      TT\        SP                  4       4      R7      SR&   SP                  4        R#   \         d)   pS
P                  R \        T4      SR7        Rp?R# Rp?ii ; i)zConfigurare invalidaz1Alege un folder de manuscrise inainte de pornire.r+   Nr@   r.   )rI   r6   	showerrorr   validate_rootr   rH   r   validate_tls_filesrJ   r   r
   destroy)folder_valuemetadata_valuecertfile_valuekeyfile_value
port_valueexcr   configure_firewall_varr   r   ru   r   open_browser_varport_varroot_window	selectionuse_https_vars         r!   submitprompt_settings.<locals>.submit  s   !~~'--/%))+113%))+113#)//1  &C" ! 
 
	  l!34--hlln.B.B.DEJM%%'(()),:D(+8D'd .(#$:$>$>$@A=,,./#!.2245	
	' 	  	  !7S+ V	s%   BF3 !F3 5F3 3G&>G!!G&c                   V ^8  d   QhRR/# r~   r   )r%   s   "r!   r&   r   &  s      D r    c                 (   < S P                  4        R # N)r   )r   s   r!   cancelprompt_settings.<locals>.cancel&  s    r    zPornire server manuscrise)textfontw)rz   r{   
columnspanr|   zIServerul va asculta pe 0.0.0.0. Browserul se deschide local pe 127.0.0.1.i  left)r   
wraplengthjustify)rz   r{   r   r|   padyz	Port HTTP)r   )rz   r{   r|   r   )textvariablewidthzHost: 0.0.0.0)rz   r{   r|   padxr   zFolder manuscriseewzAlege...)r   commandzFisier metadatezFLasati fisierul de metadate gol pentru varianta implicita din proiect.zCConfigureaza automat portul in Windows Firewall pentru acces extern)r   variablezPorneste pe HTTPSzCertificat HTTPSzCheie privata HTTPSzoPentru HTTPS foloseste un certificat PEM/CRT. Cheia privata este optionala daca se afla deja in acelasi fisier.z'Deschide automat browserul dupa pornireeRenunta)rz   r{   r   zPorneste serverul)rz   r{   z<Return>c                   < S! 4       # r   r   )_eventr   s   &r!   <lambda>!prompt_settings.<locals>.<lambda>  s    r    WM_DELETE_WINDOW)r      bold)      )r      )r   r   )r      )r      )tkinterrt   ru   rv   Tkr   	resizablecolumnconfigureFramegrid	StringVarr   r   r   r   
BooleanVarr   r   r   r   r   LabelEntryButtonCheckbuttonbindprotocolmainloop)rr   tkrv   framer   r   r   r   r   actionsr   r   rt   r   r   ru   r   r   r   r   r   r   r   s   &         @@@@@@@@@@@@@r!   prompt_settingsr      s*   335<dOI%%'Ko&%'!,IIk2I.E	JJ1QvJ.	!A&GLL1J||#gll"3|4H<<g&;&;<<L]]1K1K]LMM(9(9M:M<<g&6&6<7L,,W__,5K}}7+?+?}@% %
' 
'' '& &" " "H  IIe5<LIMRRaAc S  IIX	  
 dqq7dCIIe+I&++!Cf+UIIe("I5::a& ;  IIe/I*//a' 0  IIe-I.33a& 4  IIe*BI7<<a6 =  JJu:{J;@@a' A  IIe+I,11a& 2  IIe,bI9>>a6 ?  JJu:J?DDa' E  IIU	  
 dqq6dBOOR'   dqq6dBOO    dqq6dBIIe,I-22a& 3  IIe,bI9>>a6 ?  JJu:J?DDa' E  IIe/I055a& 6  IIe+RI8==a6 >  JJu:~J>CCa' D  II~	  
 dr!#FdCOO6!   dr!#GdDiiGLLRaL<JJwYJ7<<af =  JJw0&JAFFa G  Z!89+V4Wr    c               $    V ^8  d   QhRRRRRR/# )r#   r   r   messager$   rQ   r   )r%   s   "r!   r&   r&     s!      S 3 4 r    c                     ^ RI p^ RI Hp VP                  4       pVP                  4        VP	                  WVR7       VP                  4        \        V4       R#   \         d     Li ; i)r   N)ru   r   )r   ru   r   withdrawr   r   	Exceptionprint)r   r   r   ru   r   s   &&   r!   show_error_dialogr     s`    	&eegUK@ 
'N  s   AA A*)A*c                    V ^8  d   QhRRRR/# )r#   urlr   r$   rQ   r   )r%   s   "r!   r&   r&     s      C D r    c                l   a  \         P                  ! R V 3R l4      pRVn        VP                  4        R# )g      ?c                 0   < \         P                  ! S 4      # r   )
webbrowseropen)r   s   r!   r   $open_browser_later.<locals>.<lambda>  s    )=r    TN)	threadingTimerdaemonstart)r   timers   f r!   open_browser_laterr     s$    OOC!=>EEL	KKMr    c                   V ^8  d   QhRR/# )r#   r$   r   r   )r%   s   "r!   r&   r&     s     G Gc Gr    c                 $   \        4       p  \        V 4      p \        T4      pTf   ^ # TP                  P                  4       '       d$   \        TP                  4      P                  4       MR pTP                  '       dD   TP                  P                  4       '       d$   \        TP                  4      P                  4       MR pTP                  '       dD   TP                  P                  4       '       d$   \        TP                  4      P                  4       MR p \        P                  ! \         TP"                  \        TP$                  4      TTT4      p\+        T4       TP,                  w  rTP.                  p
\        P0                  ! Y4      p\        R\        P2                  ! YT	4       24       \        RT 24       \        RTP4                  P$                   24       \        RTP4                  P                   24       TP                  e?   \        RTP                   24       TP                  e   \        RTP                   24       \        P6                  ! \         TP8                  4      '       d$   \        P:                  ! T	4      w  r\        T4       TP<                  '       d   \?        T4        TPA                  4        TPE                  4        ^ #   \         d    p\        \	        T4      4        R p?^# R p?ii ; i  \         d    \        R4        ^# i ; i  \        \&        3 d!   p\)        R\	        T4      4        R p?^# R p?ii ; i  \B         d    \        R	4        Li ; i  TPE                  4        i ; i)
NzEInterfata grafica Tk nu este disponibila in aceasta instalare Python.zPornirea serverului a esuatzServer pornit pe zDeschidere locala: zIndexare din: zMetadate salvate in: zHTTPS activ cu certificat: zCheie privata folosita: z
Server oprit.)#rf   rp   rJ   r   r   r   ImportErrorr   r6   r   
expanduserr   r   r   r   build_serverHOSTr   r   rE   r   rZ   server_address
url_schemebuild_local_urlbuild_bound_urlindexshould_configure_firewallr   ensure_windows_firewall_ruler   r   serve_foreverKeyboardInterruptserver_close)ri   rr   r   r   r   r   r   
app_serverhostr   scheme	local_urlfirewall_okfirewall_messages                 r!   mainr    s    <D(.
#G,	  ""((** 	Y$$%002  9#5#5#;#;#=#= 	Y ++-  9#4#4#:#:#<#< 	Y**, 
((NN 

 9%**JD""F&&v4I	f44V4HI
JK		{
+,	N:++001
23	!*"2"2"@"@!A
BC&+J,?,?+@AB),Z-?-?,@AB''i.J.JKK(.(K(KD(Q%9%"  " 	!G  c#h  S	
 	B   7SB0  ! ! 	!sd   K# L <L- M! #L.LLL*)L*-M>MM!M:7M= 9M::M= =N__main__)Tr   )
__future__r   rc   rB   r   r   dataclassesr   pathlibr   typingr   ms_bj_browserr   r  r
   r,   r8   rN   rZ   rf   rp   r   r   r   r  r   
SystemExitr   r    r!   <module>r     s    "     !        O&R*1h6WtGT z
TV
 r    