
    gJ                         S SK r S SKrS SKJrJr  S SKJr  S SKrS SKJ	r	  S SK
JrJr  S SKJr  S SKJr  S SKJs  Jr  S SKJr  S	 rS
 rS rS rSS jr " S S\\5      rg)    N)
gp_pol_extgp_file_applier)NamedTemporaryFile)ConfigParser)PopenPIPE)
get_string)glob)logc                    U b  g [         R                  " S5      nUc  [        R                  " S5        g [	        US/[
        [
        S9nUR                  5       u  p4UR                  S:w  a!  [        R                  " S[        U5      5        g g )Ndconfz)Failed to update dconf. Command not foundupdate)stdoutstderrr   zFailed to update dconf)	shutilwhichr   errorr   r   communicate
returncoder	   )test_dirr   pouterrs        @/usr/lib/python3/dist-packages/samba/gp/gp_gnome_settings_ext.pydconf_updater      sr    LL!E}		=>uhT:A}}HC||q		*JsO<     c                 ~    SnU b"  [         R                  R                  XSS  5      n[         R                  " USS9  U$ )Nz/etc/dconf/db/local.d/locks   Texist_okospathjoinmakedirs)r   	locks_dirs     r   create_locks_dirr'   (   s9    -IGGLLQR=9	KK	D)r   c                 .   SnU b"  [         R                  R                  XSS  5      n[         R                  R                  U5      (       a  g [         R                  " [         R                  R                  U5      SS9  [        S[         R                  R                  U5      SS9 nUR                  S5        [         R                  " UR                  S	5        UR                  nS S S 5        [        R                  " WU5        g ! , (       d  f       N&= f)
Nz/etc/dconf/profile/userr   Tr   wF)dirdeletezuser-db:user
system-db:locali  )r"   r#   r$   existsr%   dirnamer   writechmodnamer   move)r   user_profiler)   fnames       r   create_user_profiler4   /   s    ,Lww||H12.>?	ww~~l##KK-=	CRWW__\%B#(
*-.	/0
	
*
 KK|$
* 
*s   '?D
Dc                 ~    SnU b"  [         R                  R                  XSS  5      n[         R                  " USS9  U$ )Nz/etc/dconf/db/local.dr   Tr   r!   )r   local_dbs     r   create_local_dbr7   =   s8    &H77<<12,7KK4(Or   c           
         [         R                  " U 5       Vs/ s H  n[        R                  " SU-  U5      PM     nn[	        U Vs/ s H%  oD(       d  M  [        UR                  S5      5      PM'     snS/-   5      S-   $ s  snf s  snf )Nz(\d+)%sr   r   )r"   listdirrematchmaxintgroup)	directoryr3   fconfigsms        r   select_next_confrC   D   sp    8:

98MN8M1rxx
U*A.8MGN6AAAGGAJ6s:;A== O6s   $B
BBc                      ^  \ rS rSrU 4S jrS rS rS rS rS r	S r
S	 rS
 r SS jrS rS r SS jrS rSrU =r$ )gp_gnome_settings_extH   c                 N   > [         TU ]  " U6   / SQU l        0 U l        S U l        g )N)zCompose KeyzDim Screen when User is IdlezLock Down Specific SettingszWhitelisted Online AccountszEnabled Extensions)super__init__keyslock_down_settingsr   )selfargs	__class__s     r   rI   gp_gnome_settings_ext.__init__I   s*    $+	
 #%r   c                     g)Nz!GNOME Settings/Lock Down Settings )rL   s    r   __str__gp_gnome_settings_ext.__str__S   s    2r   c                     XR                   ;  a  0 U R                   U'   UR                  U R                   U   UR                  '   g N)rK   data	valuename)rL   kes      r   __add_lockdown_data)gp_gnome_settings_ext.__add_lockdown_dataV   s;    +++)+D##A&23&&"1;;/r   c                     UR                   U R                  ;  a  0 U R                  UR                   '   UR                  S:H  U R                  UR                      S'   g )Nr   Enabled)rW   rK   rV   )rL   rY   s     r   __enable_lockdown_data,gp_gnome_settings_ext.__enable_lockdown_data[   sI    ;;d55535D##AKK0:;&&A+,Y7r   c                    [        U R                  5        [        U R                  5      n[        US5      n[        R
                  R                  USU-  5      n0 SS_SS_SS_S	S
_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS _S!S"_S#S$_S%S&0EnUS'   UR                  5       ;  a  [        R                  " S(U5        g [        5       nS)nUR                  U5        UR                  US*S+XQS'      -  5        [        US,5       nUR                  U5        S S S 5        [        U R                  5      n	[        U	5      n[        R
                  R                  U	SU-  5      n
[        U
S,5       nUR                  S-5        S S S 5        [!        U R                  5        XJ/$ ! , (       d  f       N= f! , (       d  f       N7= f).Nz-input-sourcesz%010d-input-sourcesz	Right Altzcompose:raltzLeft Winzcompose:lwinz3rd level of Left Winzcompose:lwin-altgrz	Right Winzcompose:rwinz3rd level of Right Winzcompose:rwin-altgrMenuzcompose:menuz3rd level of Menuzcompose:menu-altgrz	Left Ctrlzcompose:lctrlz3rd level of Left Ctrlzcompose:lctrl-altgrz
Right Ctrlzcompose:rctrlz3rd level of Right Ctrlzcompose:rctrl-altgrz	Caps Lockzcompose:capsz3rd level of Caps Lockzcompose:caps-altgrzThe "< >" keyzcompose:102z3rd level of the "< >" keyzcompose:102-altgrPausezcompose:pausPrtSczcompose:prsczScroll Lockzcompose:sclkzKey NamezCompose Key not recognizedzorg/gnome/desktop/input-sourceszxkb-options['%s']r)   z,/org/gnome/desktop/input-sources/xkb-options)r4   r   r7   rC   r"   r#   r$   rJ   r   r   r   add_sectionsetopenr.   r'   r   )rL   rV   local_db_dirconf_idr6   data_mapparsersectionr)   r&   locks              r   __apply_compose_key)gp_gnome_settings_ext.__apply_compose_key`   s   DMM*&t}}5"<1AB77<< 5 ?A[. ,.B !. ./C	
 ^ )*> !/ ./D "? /0E !. ./C %m 23F n  n!" #N#& 
8==?2II2D937#

7MhJ'788	:(C ALLO ! %T]]3	"9-ww||I'<w'FG$_GGBC  	T]]# !  _s   F!/F2!
F/2
G c                 d   [        U R                  5        [        U R                  5      n[        US5      n[        R
                  R                  USU-  5      n[        5       nSnUR                  U5        UR                  USS5        UR                  US[        US   5      5        [        US5       nUR                  U5        S S S 5        [        US	5      n[        R
                  R                  US
U-  5      n[        5       nSnUR                  U5        UR                  USSUS   -  5        [        US5       nUR                  U5        S S S 5        [        U R                  5      n	[        U	5      n[        R
                  R                  U	SU-  5      n
[        U
S5       nUR                  S5        UR                  S5        UR                  S5        S S S 5        [        U R                  5        XHU
/$ ! , (       d  f       GN>= f! , (       d  f       N= f! , (       d  f       NJ= f)Nz-powerz%010d-powerz'org/gnome/settings-daemon/plugins/powerzidle-dimtruezidle-brightnesszDim Idle Brightnessr)   z-sessionz%010d-sessionzorg/gnome/desktop/sessionz
idle-delayz	uint32 %dDelayz%010d-power-savingz2/org/gnome/settings-daemon/plugins/power/idle-dim
z9/org/gnome/settings-daemon/plugins/power/idle-brightness
z%/org/gnome/desktop/session/idle-delay)r4   r   r7   rC   r"   r#   r$   r   re   rf   strrg   r.   r'   r   )rL   rV   rh   ri   local_power_dbrk   rl   r)   local_session_dbr&   rm   s              r   __apply_dim_idle&gp_gnome_settings_ext.__apply_dim_idle   s   DMM*&t}}5"<:lMG4KL;7#

7J/

7-s48M3N/OP.#&!LLO '"<<77<<o6OP-7#

7L+W*EF"C(ALLO ) %T]]3	"9-ww||I';g'EF$_GGIJGGPQGG;< 
 	T]]#$77+ '& )( _s$   5G> H)4H!>
H
H!
H/c                    [        U R                  5        [        U R                  5      n[        US5      n[        R
                  R                  USU-  5      n[        US5       nUR                  5        H  nUR                  SU-  5        M     S S S 5        [        U R                  5        U/$ ! , (       d  f       N&= f)Nz-group-policyz%010d-group-policyr)   z%s
)r4   r   r'   rC   r"   r#   r$   rg   rJ   r.   r   )rL   rV   r&   ri   policy_filer)   keys          r   __apply_specific_settings/gp_gnome_settings_ext.__apply_specific_settings   s    DMM*$T]]3	"9o>ggll9.BW.LM+s#qyy{% # $ 	T]]#}	 $#s   &,B22
C c                    [        U R                  5        [        U R                  5      n[        U R                  5      nSSR	                  UR                  5       5      -  nU R                  X#SSUS5      n[        U R                  5        U$ )Nrd   ', 'goazwhitelisted-providerszorg/gnome/online-accounts)r4   r   r7   r'   r$   rJ    _gp_gnome_settings_ext__lockdownr   )rL   rV   rh   r&   valpolicy_filess         r   __apply_whitelisted_account1gp_gnome_settings_ext.__apply_whitelisted_account   sr    DMM*&t}}5$T]]3	TYY[11|'>'BD 	T]]#r   c                    [        U R                  5        [        U R                  5      n[        U5      n[        R
                  R                  USU-  5      n[        5       nSnUR                  U5        UR                  5       nUR                  USSSR                  U5      -  5        UR                  USS5        [        US5       nUR                  U5        S S S 5        [        U R                  5        U/$ ! , (       d  f       N&= f)	N%010d-extensionszorg/gnome/shellzenabled-extensionsrd   r~   zdevelopment-toolsfalser)   )r4   r   r7   rC   r"   r#   r$   r   re   rJ   rf   rg   r.   r   )	rL   rV   rh   ri   ry   rk   rl   extsr)   s	            r   __apply_enabled_extensions0gp_gnome_settings_ext.__apply_enabled_extensions   s    DMM*&t}}5"<0ggll<1Cg1MN#7#yy{

70(V[[=N2NO

7/9+s#qLLO $T]]#} $#s   
C<<
D
c                 R   / n[        U5      n[        R                  R                  USX4-  5      n	UR	                  U	5        [        U5      n[        R                  R                  USX4-  5      n
UR	                  U
5        [        5       nUR                  U5        UR                  XdU5        [        U	S5       nUR                  U5        S S S 5        [        U
S5       nUR                  SU< SU< 35        S S S 5        U$ ! , (       d  f       N>= f! , (       d  f       U$ = f)Nz%010d-%sr)   /)
rC   r"   r#   r$   appendr   re   rf   rg   r.   )rL   rh   r&   r0   rz   r   rl   r   ri   ry   rm   rk   r)   s                r   
__lockdown gp_gnome_settings_ext.__lockdown   s    "<0ggll<#-#?AK("9-ww||IzWO'CDD!7#

7%+s#qLLO $$_GG-. 	 $#_s   <D"D
D
D&c           	      
   / n[        U R                  5        [        U R                  5      n[        U R                  5      nUS:X  ax  [	        U5      n[
        R                  R                  USU-  5      nUR                  U5        [        US5       nUR                  S5        UR                  S5        S S S 5        GOzUS:X  a  U R                  X4SSS	5      nGO^US
:X  a  U R                  X4SSS	5      nGOBUS:X  a  U R                  X4SSS	5      nGO&US:X  a  U R                  X4SSSSS9nGOUS:X  a  U R                  X4SSS	5      nGOUS:X  a  U R                  X4SSS	5      nGOUS:X  Ga  Sn[        [
        R                  R                  US5      5      n	[        U	5      S:X  a  U	S   n	O [
        R                  R                  US 5      n	[
        R                  R                  S![
        R                  R                  U	5      5      n
U R                  b-  [
        R                  R                  U R                  U
SS  5      n
[
        R                  " [
        R                  R!                  U
5      S"S#9  ["        R$                  " ["        R&                  " S$5      5      n[
        R                  R)                  U	5      (       a  [        U	S%5       nUR+                  5       nS S S 5        ["        R$                  " ["        R,                  " W5      5      nUR/                  5       nUR                  UR1                  S&5      5        UR                  UR1                  S'5      5        UR                  UR1                  S(5      5        O["        R2                  " UR/                  5       S&5      nS)Ul        ["        R2                  " UR/                  5       S'5      nS*Ul        ["        R2                  " UR/                  5       S(5      nS+Ul        ["        R2                  " UR/                  5       S,5      nS-UR6                  S.'   ["        R2                  " US/5      nS0Ul        ["        R2                  " US15      nS2Ul        ["        R2                  " US35      n["        R2                  " US45      nS5Ul        ["        R2                  " US65      nS5Ul        ["        R2                  " US75      nS8Ul        [        U
S95       nUR                  US:S"S;9  S S S 5        UR                  U
5        O[8        R:                  " S<U5        g [=        U R                  5        U$ ! , (       d  f       N%= f! , (       d  f       GN= f! , (       d  f       Nr= f)=NzLock Down Enabled Extensionsr   r)   z$/org/gnome/shell/enabled-extensions
z"/org/gnome/shell/development-toolszDisable Printingprintingzdisable-printingrq   zDisable File Saving
filesavingzdisable-save-to-diskzDisable Command-Line Accesscmdlinezdisable-command-linez"Disallow Login Using a Fingerprintfingerprintreaderz!enable-fingerprint-authenticationr   zorg/gnome/login-screen)rl   zDisable User Logoutlogoutzdisable-log-outzDisable User Switchingzdisable-user-switchingzDisable Repartitioningz/usr/share/polkit-1/actionsz&org.freedesktop.[u|U][d|D]isks2.policyr   r   zorg.freedesktop.UDisks2.policyz/etc/share/polkit-1/actionsTr   policyconfigrbvendor
vendor_url	icon_namezThe Udisks Projectz*https://github.com/storaged-project/udiskszdrive-removable-mediaactionz%org.freedesktop.udisks2.modify-deviceiddescriptionzModify the drive settingsmessagez3Authentication is required to modify drive settingsdefaults	allow_anynoallow_inactiveallow_activeyeswbzUTF-8)encodingxml_declarationzUnable to apply)r4   r   r7   r'   rC   r"   r#   r$   r   rg   r.   r   r
   lenbasenamer%   r-   etreeElementTreeElementr,   read
fromstringgetrootfind
SubElementtextattribr   r   r   )rL   rX   r   rh   r&   ri   ry   r)   actionsudisk2
udisk2_etcxml_datar@   rV   existing_xmlrootr   r   r   r   r   r   r   r   r   r   s                             r   __apply_enabled%gp_gnome_settings_ext.__apply_enabled   s   DMM*&t}}5$T]]3	..&y1G'',,y2Dw2NOK,k3'1?@<= (' $$??<J+=vGL''??<+7+A6KL //??<I+A6KL66??<+>+N+23K	 + ML
 ''??<H+<fFL**??<H+CVML**3G"'',,wBD EF6{ag&FH&C&(gg&6&6v&>@J}}(WW\\$--ABH
KK
3dC((~)FGHww~~f%%&$'1668D ($001A1A$1GH'')L--h78L--l;<L--k:;))(*:*:*<hG2"--h.>.>.@,O
"N
!,,X-=-=-?M	!8	%%h&6&6&8(CF"IFMM$**6=AK:K&&vy9GPGL''
;H((;?I!IN"--h8HIN"&N ++HnEL %Lj$'1q7DI (
+II'+T]]#W ('R ('6 ('s$   #UU"6U4
U"
U14
Vc                     U R                   U   nUR                  5        Vs0 s H  o3S:w  d  M
  X2U   _M     sn$ s  snf )Nr]   )rK   rJ   )rL   rX   rV   is       r   __clean_data"gp_gnome_settings_ext.__clean_dataA  s<    &&q)$(IIKBKq	>
7
KBBBs   	;	;c                    Ub  X0l         U HW  u  pE[        U 5      U;   d  M  U[        U 5         R                  5        H  u  pgU R                  XFUSS9  M     [	        U5        MY     U GHd  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                   H  nUR                  R                  U	5      (       d  M%  UR                  (       d  M8  SUR                  ;  d  MJ  U R                   H7  nUR                  R!                  U5      (       d  M%  U R#                  X5          M     U R%                  U5        M     U R&                  R                  5        GH  nU R&                  U   S   (       d  U R)                  UR*                  US9  M7  [        U R&                  U   5      nU R-                  U5      nXR                  S   :X  a9  U R/                  UR*                  UUU R0                  U R3                  U5      SS9  M  XR                  S	   :X  a9  U R/                  UR*                  UUU R4                  U R3                  U5      SS9  M  XR                  S
   :X  a:  U R/                  UR*                  UUU R6                  U R3                  U5      SS9  GMB  XR                  S   :X  a:  U R/                  UR*                  UUU R8                  U R3                  U5      SS9  GM  XR                  S   :X  a:  U R/                  UR*                  UUU R:                  U R3                  U5      SS9  GM  U R/                  UR*                  UUU R<                  USS9  GM     U R)                  UR*                  U R&                  R                  5       S9  GMg     g )N;)sep!GNOME Settings\Lock Down SettingsMACHINE/Registry.pol
**delvals.r]   )remover   r            )keep)r   rs   itemsunapplyr   file_sys_pathr"   r#   r$   parseentrieskeyname
startswithrV   rW   rJ   endswith)_gp_gnome_settings_ext__add_lockdown_data,_gp_gnome_settings_ext__enable_lockdown_datarK   cleanr0   generate_value_hashapply)_gp_gnome_settings_ext__apply_compose_key"_gp_gnome_settings_ext__clean_data&_gp_gnome_settings_ext__apply_dim_idle/_gp_gnome_settings_ext__apply_specific_settings1_gp_gnome_settings_ext__apply_whitelisted_account0_gp_gnome_settings_ext__apply_enabled_extensions%_gp_gnome_settings_ext__apply_enabled)rL   deleted_gpo_listchanged_gpo_listr   guidsettings	attributevaluegposection_namepol_filer#   pol_confrY   rX   rV   
value_hashs                    r   process_group_policy*gp_gnome_settings_ext.process_group_policyE  sA   $M.ND4yH$(0T(;(A(A(C$ILL%SLA )DX&	 / $C   C1ww||C$5$5x@::d+!))Ayy++L99afff"!++5!%A yy11!44 $ 8 8 > % "+
 !77: * 00557A2215i@

388A
6  t66q9:D!%!9!9$!?JIIaL(

388Q
#'#;#;#'#4#4Q#7S # B iil*

388Q
#'#8#8#'#4#4Q#7S # B iil*

388Q
#'#A#A#'#4#4Q#7S # B iil*

388Q
#'#C#C#'#4#4Q#7S # B iil*

388Q
#'#B#B#'#4#4Q#7S # B 

388Q
#'#7#7#$# # /? 8H 

388$*A*A*F*F*H
Ik $r   c           	         0 nUR                   (       Ga  SnSn[        R                  R                  UR                   U5      nU R	                  U5      nU(       d  U$ UR
                   H  nUR                  R                  U5      (       d  M%  UR                  (       d  M8  SUR                  ;  d  MJ  U R                   H7  nUR                  R                  U5      (       d  M%  U R                  X5          M     U R                  U5        M     U R                  R                  5        H  nU R                  U   S   (       d  M  [        U R                  U   5      S:  ag  U R!                  U5      n	[#        U	R                  5        V
s/ s H	  oX   :H  PM     sn
5      (       a  [%        U	R                  5       5      X('   M  XU'   M  U R                  U   X('   M     U$ s  sn
f )Nr   r   r   r]   r   )r   r"   r#   r$   r   r   r   r   rV   rW   rJ   r   r   r   rK   r   r   alllist)rL   r   outputr   r   r#   r   rY   rX   rV   r   s              r   rsopgp_gnome_settings_ext.rsop  s   ?L-H77<< 1 18<Dzz$'H%%99''55!&&&akk1!YY99--a00 44Q:! '
 33A6 & ,,113**1-i88422156:#003diikBkTWkBCC(,TYY[(9FI(,1I$($;$;A$>	 4   Cs   	G
)rJ   rK   r   )zorg/gnome/desktop/lockdownrU   )__name__
__module____qualname____firstlineno__rI   rR   r   r   r   r   r   r   r   r   r   r   r   r   __static_attributes____classcell__)rN   s   @r   rE   rE   H   s`    39
F
- ^8B		" 8&VpC
 '+?JB r   rE   ) )r"   r:   samba.gp.gpclassr   r   tempfiler   r   configparserr   
subprocessr   r   samba.commonr	   r
   xml.etree.ElementTreer   r   samba.gp.util.loggingr   r   r'   r4   r7   rC   rE   rQ   r   r   <module>r      sQ   "  8 '  % " #  % % %
=%>ZJ Zr   