
    g!                         S SK r S SKrS SKJrJr  S SKJr  S SKJr  S SK	J
r
  S rS r " S S	\\5      r " S
 S\5      rg)    N)
gp_pol_extgp_misc_applier)misc)
get_string)logc                 F   U R                   [        R                  :X  a;  [        U R                  5      R                  SS5      n[        R                  " U5      $ U R                   [        R                  :X  a  U R                  S;   a  U R                  S:H  $ U R                  $ )N  )r      r   )	typer   REG_MULTI_SZr   datareplacejsonloads	REG_DWORD)er   s     9/usr/lib/python3/dist-packages/samba/gp/gp_firefox_ext.pyparse_entry_datar      sp    vv"""!&&!))&"5zz$	
4>>	!aff&6vv{66M    c                    0 n0 nU GH  nUR                   R                  U 5      (       d  M&  SUR                  ;   a  M8  UR                   R                  U S5      R	                  S5      nU(       GaB  UR                  S5      nUnSnUS   R                  5       (       a  SR                  US S 5      nOSUR                  R                  5       (       a  UR                   nO'SR                  UR                   UR                  /5      n[        [        U5      5       GHJ  n	XY   S:X  a  SXY'   [        n
U	[        U5      S-
  :X  a:  UR                  R                  5       (       a  [        n
[        UR                  5      nU	[        U5      S-
  :  a0  XYS-      R                  5       (       a  [        n
[        XYS-      5      n[        U5      [        :X  a*  XY   U;  a  U
[        :X  a  0 XeU	   '   O/ XeU	   '   XeU	      nM  X;  a  0 X8'   XsU   R                  5       ;  a@  U
[        :X  a  UR                  0 5        OUR                  / 5        [        U5      S-
  X8   U'   XcU   U      nGMM     [        U5      [        :X  a  UR                  [!        U5      5        GM  [!        U5      XdR                  '   GM  [!        U5      X$R                  '   GM     U$ )Nz
**delvals.r
   \PDFjsPSFjsr   )keyname
startswith	valuenamer   stripsplit	isnumericjoinrangelendictlistintr   keysappendr   )sectionentriesresult	index_mapr   sub_keyscurrentindexnameictypes              r   convert_pol_to_jsonr4       s^   FIyy##G,,1;;&99$$Wb177=~~d+HGE|%%''yy#2/&&((yyyy!))Q[[!9:3x=);')")HKHa'AKK,A,A,C,C E,Es8}Q&8aC=+B+B+D+D E1.E=D({'1 D=35GQK035GQK0%qk2G,*,	dO$8$8$:: D=#NN2.#NN2.14Wa	.%oe&<=G5 *6 G}$/23'7':$"21"5F;;a b Mr   c                      ^  \ rS rSrSr\R                  R                  \S5      rS r	S r
S rU 4S jrS rS	 rS
 r SS jrS rSrU =r$ )gp_firefox_extV   z/etc/firefox/policiespolicies.jsonc                     g)NzMozilla/Firefox selfs    r   __str__gp_firefox_ext.__str__Z   s     r   c                 t    [         R                  " U R                  SS9  [        U R                  S5       n[
        R                  " X5        [        R                  " SU R                  5        S S S 5        g ! , (       d  f       g = f! [         a$    [        R                  " SU R                  5         g f = f)NT)exist_okwzWrote Firefox preferencesz#Failed to write Firefox preferences)
osmakedirsfirefox_installdiropendestfiler   dumpr   debugPermissionError)r<   policiesfs      r   set_machine_policy!gp_firefox_ext.set_machine_policy]   s|    	-KK//$?dmmS)Q		(&		5t}}E *))  	-II;"mm-	-s.   5B	 8A8/B	 8
BB	 B	 	+B76B7c                 >   [         R                  R                  U R                  5      (       aX  [	        U R                  S5       n[
        R                  " U5      n[        R                  " SU R                  5        S S S 5        U$ S0 0nU$ ! , (       d  f       W$ = f)NrzRead Firefox preferencesrJ   )	rB   pathexistsrF   rE   r   loadr   rH   )r<   rO   rJ   s      r   get_machine_policy!gp_firefox_ext.get_machine_policyg   sv    77>>$--((dmmS)Q99Q<		4dmmD *
  #B'H *)
 s   8B
Bc                    > [         TU ]  U5      nUR                  5        H  u  p4 [        R                  " U5      X#'   M      U$ ! [        R
                  R                   a     ME  f = fN)superparse_valueitemsr   r   decoderJSONDecodeError)r<   valuer   kv	__class__s        r   rX   gp_firefox_ext.parse_valuep   s]    w"5)JJLDA**Q- !
  <<// s   AA'&A'c                     S nU R                  5       nX&S   R                  5       ;   a:  Ub  US   U   U:X  a  U" US   X$5        OU" US   X$5        U R                  U5        g g )Nc                     Uc  X	 g X U'   g rV   r:   )rJ   policyvals      r   set_val.gp_firefox_ext.unapply_policy.<locals>.set_valz   s    {$#& r   rJ   )rS   r(   rL   )r<   guidrc   applied_valrd   re   r/   s          r   unapply_policygp_firefox_ext.unapply_policyy   su    	'
 ))+Z(--//&:&v.+=GJ/=
+V9##G, 0r   c                 B   U R                  U5      nUS:X  aV  U R                  5       nUS   R                  5        H.  nXdS   S   ;   a  US   S   U   OS nU R                  XS U5        M0     O!U R                  XSU;   a  US   OS US   5        U R	                  X5        g )Nr8   rJ   old_valnew_val)rX   rS   r(   ri   cache_remove_attribute)r<   rg   rc   rd   cacher/   attrs          r   unapplygp_firefox_ext.unapply   s      %_$--/G
+002#3J#?? I&z248EI ##Dc: 3
 4=4Fi 0D %i 02 	##D1r   c                    U R                  X5      nUb  U R                  XU5        U R                  5       nS nX%S   R                  5       ;   a  US   U   nU R	                  [
        R                  " U5      [
        R                  " U5      S9nX5S   U'   U R                  U5        U R                  X[        U5      5        g )NrJ   )rl   rm   )
cache_get_attribute_valuerq   rS   r(   generate_valuer   dumpsrL   cache_add_attributer   )r<   rg   rc   rd   r   r/   before	new_values           r   applygp_firefox_ext.apply   s    --d;LLt,))+Z(--//Z(0F ''

60B04

3 ( A	&)
F#(  z)/DEr   c                 .   Ub+  X0l         [        R                  R                  US5      U l        U HM  u  pE[        U 5      U;   d  M  U[        U 5         R                  5        H  u  pgU R                  XFU5        M     MO     U GH  nUR                  (       d  M  Sn	Sn
[        R                  R                  UR                  U	5      nU R                  U5      nU(       d  M_  U R                  UR                  S5      nUb  U R                  UR                  SU5        [        XR                  5      nUR                  5        H!  u  pgU R                  UR                  Xg5        M#     U R                  UR                  UR!                  5       S9  GM     g )Nr8   MACHINE/Registry.pol!Software\Policies\Mozilla\Firefox)keep)rD   rB   rP   r"   rF   strrY   rq   file_sys_pathparsert   r1   r4   r+   rz   cleanr(   )r<   deleted_gpo_listchanged_gpo_list
policy_dirrg   settingsrc   rd   gpopol_filer*   rP   pol_confr   rJ   s                  r   process_group_policy#gp_firefox_ext.process_group_policy   s;   !&0#GGLL_EDM.ND4yH$#+CI#6#<#<#>KFLLs3 $? /
 $C   1@ww||C$5$5x@::d+ 55chhP#LL?DA.w8H8HI#+>>#3KFJJsxx5 $4 

388(--/
:' $r   c                 x   0 nSnSnUR                   (       a  [        R                  R                  UR                   U5      nU R	                  U5      nU(       d  U$ UR
                   HN  nUR                  R                  U5      (       d  M%  UR                  X'R                  < SUR                  < 3'   MP     U$ )Nr}   r~   r   )
r   rB   rP   r"   r   r+   r   r   r   r   )r<   r   outputr   r*   rP   r   r   s           r   rsopgp_firefox_ext.rsop   s    )877<< 1 18<Dzz$'H%%99''00BC&&Fyy!++>? & r   )rF   rD   rV   )__name__
__module____qualname____firstlineno__rD   rB   rP   r"   rF   r=   rL   rS   rX   ri   rq   rz   r   r   __static_attributes____classcell__)r_   s   @r   r6   r6   V   sV    0ww||.@H!-- 2F& )-;> r   r6   c                   V    \ rS rSrSr\R                  R                  \S5      rS r	Sr
g)gp_firefox_old_ext   z/usr/lib64/firefox/distributionr8   c                     g)Nz'Mozilla/Firefox (old profile directory)r:   r;   s    r   r=   gp_firefox_old_ext.__str__   s    8r   r:   N)r   r   r   r   rD   rB   rP   r"   rF   r=   r   r:   r   r   r   r      s"    :ww||.@H9r   r   )rB   r   samba.gp.gpclassr   r   samba.dcerpcr   samba.commonr   samba.gp.util.loggingr   r   r4   r6   r   r:   r   r   <module>r      sA   " 
  8  # %4l~Z ~@9 9r   