+
    4Ssiç^  ã                   ó:  € R t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIH	t
 ^ RIHtHtHt ^ RIHtHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ R	IHt ^ R
IHt ]P8                  ]P:                  ,          ]P<                  ,          ]P>                  ,          t ]PB                  ]PD                  ,          ]PF                  ,          ]PH                  ,          t% ! R R]&4      t'R t(R t)RR lt*RR lt+R t,RR lt- ! R R4      t. ! R R4      t/R t0R t1R t2R t3R t4R# )zNT Acls.N)Úparam)ÚsecurityÚxattrÚidmap)Úndr_packÚ
ndr_unpack)Úsmbd)Úlibsmb_samba_internal)Úget_samba_logger)ÚNTSTATUSError)Úsystem_session_unix)Úsafe_tarfilec                   ó   € ] tR t^3tRtRtR# )ÚXattrBackendErrorzA generic xattr backend error.© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__static_attributes__r   ó    Ú./usr/lib/python3/dist-packages/samba/ntacls.pyr   r   3   s   † Ý(r   r   c                ó  € Vfo   V P                  R4      pVe"   \        P                  V P                  R4      3# V P                  R4      pVe"   \        P                  V P                  R4      3# R# VR8X  d   R# VR8X  ds   Ve   \        P                  V3# \        P                  \        P
                  P                  \        P
                  P                  V P                  R4      R4      4      3# VR8X  dw   Ve   \        P                  V3# V P                  R4      p\        P
                  P                  \        P
                  P                  VR	4      4      p\        P                  V3# \        R
V,          4      h)z$return the path to the eadb, or Nonezxattr_tdb:filez
posix:eadbÚnativeÚeadbzprivate dirzeadb.tdbÚtdbzstate directoryz	xattr.tdbzInvalid xattr backend choice %s©NN)	ÚgetÚsambaÚ	xattr_tdbÚ
posix_eadbÚosÚpathÚabspathÚjoinr   )ÚlpÚbackendÚeadbfiler    r!   Ú	state_dirÚdb_paths   &&&    r   Úcheckset_backendr+   7   s:  € à‚Ø—F‘FÐ+Ó,ˆ	ØÒ Ü—O‘O R§V¡VÐ,<Ó%=Ð>Ð>Ø—V‘V˜LÓ)ˆ
ØÒ!Ü×$Ñ$ b§f¡f¨\Ó&:Ð;Ð;ØÐØ	�HÔ	ØÐØ	�FÔ	ØÒÜ×$Ñ$ hÐ/Ð/ä×$Ñ$¤b§g¡g§o¡o´b·g±g·l±lÀ2Ç6Á6È-ÓCXÐZdÓ6eÓ&fÐgÐgØ	�EÔ	ØÒÜ—O‘O XÐ.Ð.àŸ™Ð0Ó1ˆIÜ—g‘g—o‘o¤b§g¡g§l¡l°9¸kÓ&JÓKˆGÜ—O‘O WÐ-Ð-äÐ AÀGÕ KÓLÐLr   c                 ó¸   €  \         P                  P                  V\        P                  4      p\        \        P                  T4      #   \
         d     R # i ; i©N)r   Úxattr_nativeÚwrap_getxattrr   ÚXATTR_DOSATTRIB_NAME_S3Ú	Exceptionr   Ú	DOSATTRIB)r&   ÚfileÚ	attributes   && r   Ú
getdosinfor5   S   sP   € ðÜ×&Ñ&×4Ñ4°TÜ5:×5RÑ5RóTˆ	ô
 ”e—o‘o yÓ1Ð1øô ô Úðús   ‚.A
 Á
AÁAc                 ó  € V'       Ed   \        WV4      w  rxVe#    VP                  W�\        P                  4      p	M.\        P                  P                  V\        P                  4      p	\        \        P                  V	4      p
V
P                  ^8X  d   V
P                  # V
P                  ^8X  d   V
P                  P                  # V
P                  ^8X  d   V
P                  P                  # V
P                  ^8X  d   V
P                  P                  # R # \        P                  ! V\        VVR7      #   \         dE    \        RT,          4       \        P                  P                  T\        P                  4      p	 ELi ; i)NúFail to open %s©Úservice)r+   r/   r   ÚXATTR_NTACL_NAMEr1   Úprintr   r.   r   ÚNTACLÚversionÚinfoÚsdr   Ú
get_nt_aclÚSECURITY_SECINFO_FLAGS)r&   r3   Úsession_infor'   r(   Údirect_db_accessr9   Úbackend_objÚdbnamer4   Úntacls   &&&&&&&    r   ÚgetntaclrG   ]   sA  € ÷ ÐÜ 0°¸hÓ GÑˆØÒðUØ'×5Ñ5°fÜ6;×6LÑ6LóN‘	ô ×*Ñ*×8Ñ8¸Ü9>×9OÑ9OóQˆIäœ5Ÿ;™;¨	Ó2ˆØ�=‰=˜AÔØ—:‘:ÐØ�]‰]˜aÔØ—:‘:—=‘=Ð Ø�]‰]˜aÔØ—:‘:—=‘=Ð Ø�]‰]˜aÔØ—:‘:—=‘=Ð ñ  ô �Š˜tÜ5Ø+Ø'.ô0ð 	0øô' ô Uô Ð'¨&Õ0Ô1Ü!×.Ñ.×<Ñ<¸TÜ=B×=SÑ=SóU“	ð	Uús   � D8 Ä8AFÆFc                ó  € \        V\        4      '       g#   \        V\        P                  4      '       g   Q h\        V\        4      '       d   \        P                  ! V4      pM-\        V\        P                  4      '       d   Tp\        V4      p\        V\        4      '       g#   \        V\        P                  4      '       g   Q h\        V\        4      '       d"   \        P                  P                  VX4      pM3\        V\        P                  4      '       d   TpVP                  X4      pV'       Eg¥   V'       Edœ   V	P                  XP                  4      w  rÞV\        P                  8w  Edi   V\        P                  8w  EdS   VP                  \        P                  ! RV\        P                  3,          4      8X  d¬   \        P                  ! RV\        P                  3,          4      pV	P                  V4      w  ppV\        P                  8X  g   V\        P                  8X  d,   TpVVn        \        P                  ! V\         VVV
R7       RpM€\#        RVVV3,          4      h\$        P&                  ! V^ ^ 4       \        P                  ! V\        P(                  \        P*                  ,          \        P,                  ,          VVV
R7       V'       dŸ   \/        WV4      w  pp\0        P2                  ! 4       p^Vn        XVn        Ve/    VP9                  VV\0        P:                  \=        V4      4       R# \B        PD                  P9                  V\0        P:                  \=        V4      4       R# \        P                  ! V\         XW¤R7       R#   \>         dO    \A        RT,          4       \B        PD                  P9                  T\0        P:                  \=        T4      4        R# i ; i)a’  
A wrapper for smbd set_nt_acl api.

Args:
    lp (LoadParam): load param from conf
    file (str): a path to file or dir
    sddl (str): ntacl sddl string
    service (str): name of share service, e.g.: sysvol
    session_info (auth_session_info): session info for authentication

Note:
    Get `session_info` with `samba.auth.user_session`, do not use the
    `admin_session` api.

Returns:
    None
z%s-%dr8   TzDUnable to find UID for domain administrator %s, got id %d of type %dNr7   )r9   rB   )#Ú
isinstanceÚstrr   Údom_sidÚ
descriptorÚ	from_sddlÚas_sddlÚ	sid_to_idÚ	owner_sidr   ÚID_TYPE_UIDÚID_TYPE_BOTHÚDOMAIN_RID_ADMINSÚDOMAIN_RID_ADMINISTRATORr   Ú
set_nt_aclrA   r   r"   ÚchownÚSECINFO_GROUPÚSECINFO_DACLÚSECINFO_SACLr+   r   r<   r=   r>   Úwrap_setxattrr:   r   r1   r;   r   r.   )r&   r3   ÚsddlÚdomsidrB   r'   r(   Ú	use_ntvfsÚskip_invalid_chownÚpassdbr9   Úsidr?   Úowner_idÚ
owner_typeÚadministratorÚadmin_idÚ
admin_typeÚsd2rD   rE   rF   s   &&&&&&&&&&&           r   Úsetntaclrg   ƒ   s)  € ô, �fœc×"Ò"¤j°¼×9IÑ9I×&JÒ&JÐKÐJÜ�&œ#×ÒÜ×Ò˜vÓ&‰Ü	�FœH×,Ñ,×	-Ò	-ØˆÜ�S“ˆä�dœC× Ò ¤J¨t´X×5HÑ5H×$IÒ$IÐJÐIÜ�$œ×ÒÜ× Ñ ×*Ñ*¨4°Ó5‰Ü	�Dœ(×-Ñ-×	.Ò	.ØˆØ�z‰z˜#‹ˆçˆ9×+Ð+à!'×!1Ñ!1°"·,±,Ó!?ÑˆØœ5×,Ñ,Õ,°:Ä×ASÑASÕ3Sð �|‰|œx×/Ò/°¸6Ä8×C]ÑC]Ð:^Õ0^Ó_Ô_Ü (× 0Ò 0°¸FÄH×DeÑDeÐ;fÕ1fÓ g�Ø)/×)9Ñ)9¸-Ó)HÑ&�˜:ð  ¤5×#4Ñ#4Ô4¸*Ì×HZÑHZÔ:Zð �CØ$1�C”Mä—O’OØÔ4°cØ$Ø 'õ)ð !%‘Iä+Ð,rð  wDð  FNð  PZð  v[õ  -[ó  \ð  \ô —’˜˜q !Ô$Ü—’ØÜ×*Ñ*Ü×)Ñ)õ*ä×)Ñ)õ*ð Ø Ø#õ%÷ Ü 0°¸hÓ GÑˆ�fÜ—’“ˆØˆŒØˆŒ
ØÒðBØ×)Ñ)¨&Ø*.´×0FÑ0FÌÐQVËöYô ×Ñ×,Ñ,¨T´5×3IÑ3IÜ-5°e«_ö>ô 	�ŠØÔ(¨"Ø÷	8øô ô Bô Ð'¨&Õ0Ô1Ü×"Ñ"×0Ñ0°´u×7MÑ7MÜ19¸%³÷Bð	Bús   Ì!+N( Î(APÐ Pc                ó  € ^p^p^p^p^p^ p^@p^€pRp	^p
^p^p^p^p^p^p^p^p^ p^ p^@p^€pRpRpRpRpRpRpRpV V,          pW,          '       d;   W,          '       d-   VVV,          V,          V,          V
,          V,          ,          pW,          '       d4   VVV,          V,          V,          V,          V,          V,          ,          pW,          '       d   VWý,          ,          pW,          '       d
   VV,          pV# )zMTakes the access mask of a DS ACE and transform them in a File ACE mask.
    é   i   i   i   i   i   i   r   )ÚldmÚRIGHT_DS_CREATE_CHILDÚRIGHT_DS_DELETE_CHILDÚRIGHT_DS_LIST_CONTENTSÚACTRL_DS_SELFÚRIGHT_DS_READ_PROPERTYÚRIGHT_DS_WRITE_PROPERTYÚRIGHT_DS_DELETE_TREEÚRIGHT_DS_LIST_OBJECTÚRIGHT_DS_CONTROL_ACCESSÚFILE_READ_DATAÚFILE_LIST_DIRECTORYÚFILE_WRITE_DATAÚFILE_ADD_FILEÚFILE_APPEND_DATAÚFILE_ADD_SUBDIRECTORYÚFILE_CREATE_PIPE_INSTANCEÚFILE_READ_EAÚFILE_WRITE_EAÚFILE_EXECUTEÚFILE_TRAVERSEÚFILE_DELETE_CHILDÚFILE_READ_ATTRIBUTESÚFILE_WRITE_ATTRIBUTESÚDELETEÚREAD_CONTROLÚ	WRITE_DACÚWRITE_OWNERÚSYNCHRONIZEÚSTANDARD_RIGHTS_ALLÚfilemasks   &                              r   Úldapmask2filemaskr‰   ê   sn  € ð !+ÐØ *ÐØ *ÐØ *€MØ *ÐØ *ÐØ *ÐØ *ÐØ *ÐØ &€NØ &ÐØ &€OØ &€MØ &ÐØ &ÐØ &ÐØ &€LØ &€MØ &€LØ &€MØ &ÐØ &ÐØ &ÐØ *€FØ *€LØ *€IØ *€KØ *€KØ *ÐàÐ(Õ(€Hà×$Ô$¨3×+GÔ+GØ˜{Ð-@Õ@Ø3õ 4Ø6Bõ Cà-õ .à0<õ =õ >ˆð ×$Ô$Ø˜{¨_Õ<Ø/õ 0Ø2?õ @à4õ 5à7Dõ Eð  5õ 5õ 6ˆð
 ×"Ô"ØÐ4ÕDÕEˆà
×"Ô"ØÐ/Õ/ˆà€Or   c                ó„  € \         P                  P                  W4      p\         P                  ! 4       pVP                  Vn        VP                  Vn        VP
                  Vn        VP                  Vn        \         P                  \         P                  .pVP                  P                   Fô  pVP
                  V9   g   K  \        VP                  4      \         P                  8X  d   K@  VP                  \         P                  ,          \         P                   ,          Vn        \        VP                  4      \         P"                  8X  d'   VP                  \         P$                  ,          Vn        \'        VP(                  4      Vn        VP+                  V4       Kö  	  V'       g   V# VP-                  V4      # )z¥

This function takes an the SDDL representation of a DS
ACL and return the SDDL representation of this ACL adapted
for files. It's used for Policy object provision
)r   rL   rM   rP   Ú	group_sidÚtypeÚrevisionÚSEC_ACE_TYPE_ACCESS_ALLOWEDÚSEC_ACE_TYPE_ACCESS_DENIEDÚdaclÚacesrJ   ÚtrusteeÚSID_BUILTIN_PREW2KÚflagsÚSEC_ACE_FLAG_OBJECT_INHERITÚSEC_ACE_FLAG_CONTAINER_INHERITÚSID_CREATOR_OWNERÚSEC_ACE_FLAG_INHERIT_ONLYr‰   Úaccess_maskÚdacl_addrN   )Údssddlr`   rN   ÚrefÚfdescrÚallowed_ace_typesÚaces   &&&    r   Údsacl2fsaclr    !  s5  € ô ×
Ñ
×
'Ñ
'¨Ó
4€CÜ× Ò Ó"€FØ—}‘}€FÔØ—}‘}€FÔØ—(‘(€F„KØ—l‘l€F„Oô 	×,Ñ,Ü×+Ñ+ðÐð
 �x‰x�}Œ}ˆØ�x‰xÐ,Ô,Ùô ˆs�{‰{Óœx×:Ñ:Ô:Ùà—I‘I¤× DÑ DÕDÄx×GnÑGnÕnˆŒ	Üˆs�{‰{Óœx×9Ñ9Ô9àŸ	™	¤H×$FÑ$FÕFˆCŒIä+¨C¯O©OÓ<ˆŒØ�‰˜Öñ ÷" Øˆà�>‰>˜#ÓÐr   c                   ó~   a € ] tR tRt o RtR tRR ltRR ltRR ltR t	R	 t
R
 tRR ltRR ltRR ltR tRtV tR# )Ú	SMBHelperiO  zV
A wrapper class for SMB connection

smb_path: path with separator "\" other than "/"
c                ó   € Wn         W n        R # r-   )Úsmb_connrK   )Úselfr¤   rK   s   &&&r   Ú__init__ÚSMBHelper.__init__V  s   € Ø ŒØŽr   Nc                óš   € R V9  g   Q hV P                   P                  VVVR7      pV'       d   VP                  V P                  4      # T# )Ú/©Úsinfor™   )r¤   Úget_aclrN   rK   )r¥   Úsmb_pathrN   r«   r™   Úntacl_sds   &&&&& r   r¬   ÚSMBHelper.get_aclZ  sP   € à˜(Ô"Ð"Ð"à—=‘=×(Ñ(¨Ø/4Ø5@ð )ó Bˆ÷ 29ˆx×Ñ §¡Ó-ÐF¸hÐFr   c                óŠ  € R V9  g   Q h\        V\        4      '       g#   \        V\        P                  4      '       g   Q h\        V\        4      '       d+   \        P                  P	                  W P
                  4      pM"\        V\        P                  4      '       d   TpV P                  P                  VXVVR7       R# )r©   rª   N)rI   rJ   r   rL   rM   Ú
domain_sidr¤   Úset_acl)r¥   r­   r®   r«   r™   Útmp_descs   &&&&& r   r²   ÚSMBHelper.set_acld  s•   € à˜(Ô"Ð"Ð"ä˜(¤C×(Ò(¬J°xÄ×ATÑAT×,UÒ,UÐVÐUÜ�h¤×$Ò$Ü×*Ñ*×4Ñ4°X¿¹ÓO‰HÜ˜¤(×"5Ñ"5×6Ò6ØˆHà�‰×Ñ˜h¨Ø$)Ø*5ð 	ö 	7r   c                óV   € RV9  g   Q hV P                   P                  V\        R7      # )z=
List file and dir base names in smb_path without recursive.
r©   )Úattribs)r¤   ÚlistÚSMB_FILE_ATTRIBUTE_FLAGS©r¥   r­   s   &&r   r·   ÚSMBHelper.listr  s-   € ð ˜(Ô"Ð"Ð"Ø�}‰}×!Ñ! (Ô4LÐ!ÓMÐMr   c                óB   € \        V\        P                  ,          4      # )zM
Check whether the attrib value is a directory.

attrib is from list method.
)ÚboolÚlibsmbÚFILE_ATTRIBUTE_DIRECTORY)r¥   Úattribs   &&r   Úis_dirÚSMBHelper.is_diry  s   € ô �FœV×<Ñ<Õ<Ó=Ð=r   c                ó6   € V'       d   VR,           V,           # T# )z
Join path with '\'
Ú\r   )r¥   ÚrootÚnames   &&&r   r%   ÚSMBHelper.join�  s   € ÷ &*ˆt�d�{˜TÕ!Ð3¨tÐ3r   c                óJ   € R V9  g   Q hV P                   P                  V4      # )r©   )r¤   Úloadfiler¹   s   &&r   rÈ   ÚSMBHelper.loadfile‡  s%   € Ø˜(Ô"Ð"Ð"Ø�}‰}×%Ñ% hÓ/Ð/r   c                ó\  € VP                  4        F—  w  r4V P                  W#4      p\        V\        4      '       dQ   V P                  P                  V4      '       g   V P                  P                  V4       V P                  WER7       K|  V P                  P                  WT4       K™  	  R# )z!
Create files as defined in tree
©r­   N)	Úitemsr%   rI   Údictr¤   ÚchkpathÚmkdirÚcreate_treeÚsavefile)r¥   Útreer­   rÅ   ÚcontentÚfullnames   &&&   r   rÐ   ÚSMBHelper.create_tree‹  s{   € ð "ŸZ™Zž\‰MˆDØ—y‘y Ó0ˆHÜ˜'¤4×(Ò(Ø—}‘}×,Ñ,¨X×6Ò6Ø—M‘M×'Ñ'¨Ô1Ø× Ñ  Ð Ö<à—‘×&Ñ& xÖ9ó *r   c                óü   € / pV P                  V4       Fd  pVR,          pV P                  W4      pV P                  VR,          4      '       d   V P                  VR7      W$&   KQ  V P	                  V4      W$&   Kf  	  V# )a1  
Get the tree structure via smb conn

self.smb_conn.list example:

[
  {
    'attrib': 16,
    'mtime': 1528848309,
    'name': 'dir1',
    'short_name': 'dir1',
    'size': 0L
  }, {
    'attrib': 32,
    'mtime': 1528848309,
    'name': 'file0.txt',
    'short_name': 'file0.txt',
    'size': 10L
  }
]
rÅ   r¿   rË   )r·   r%   rÀ   Úget_treerÈ   )r¥   r­   rÒ   ÚitemrÅ   rÔ   s   &&    r   r×   ÚSMBHelper.get_tree˜  so   € ð, ˆØ—I‘I˜hÖ'ˆDØ˜•<ˆDØ—y‘y Ó0ˆHØ�{‰{˜4 �>×*Ò*Ø!Ÿ]™]°H˜]Ó=�“
à!Ÿ]™]¨8Ó4�“
ñ (ð ˆr   c                óL  € / pV P                  V4       FŒ  pVR,          pV P                  W4      pV P                  VR,          4      '       d$   VP                  V P	                  VR7      4       K^  V P                  V4      pVP                  V P                  4      W%&   KŽ  	  V# )z.
Get ntacl for each file and dir via smb conn
rÅ   r¿   rË   )r·   r%   rÀ   ÚupdateÚ
get_ntaclsr¬   rN   rK   )r¥   r­   ÚntaclsrØ   rÅ   rÔ   r®   s   &&     r   rÜ   ÚSMBHelper.get_ntacls¸  s‰   € ð ˆØ—I‘I˜hÖ'ˆDØ˜•<ˆDØ—y‘y Ó0ˆHØ�{‰{˜4 �>×*Ò*Ø—‘˜dŸo™o°x˜oÓ@ÖAàŸ<™<¨Ó1�Ø#+×#3Ñ#3°D·L±LÓ#A�Ó ñ (ð ˆr   c                óò   € V P                  4        Fb  pVR ,          pV P                  VR,          4      '       d   V P                  P                  V4       KG  V P                  P	                  V4       Kd  	  R# )rÅ   r¿   N)r·   rÀ   r¤   ÚdeltreeÚunlink)r¥   rØ   rÅ   s   &  r   Údelete_treeÚSMBHelper.delete_treeÇ  sR   € Ø—I‘I–KˆDØ˜•<ˆDØ�{‰{˜4 �>×*Ò*Ø—‘×%Ñ% dÖ+à—‘×$Ñ$ TÖ*ó  r   )rK   r¤   )FNNr   )Ú )r   r   r   r   r   r¦   r¬   r²   r·   rÀ   r%   rÈ   rÐ   r×   rÜ   râ   r   Ú__classdictcell__©Ú__classdict__s   @r   r¢   r¢   O  sI   ø‡ € ñòôGô7ôNò>ò4ò0ô:ôô@÷+ð +r   r¢   c                   ó6   a € ] tR tRt o R tRR ltR tRtV tR# )ÚNtaclsHelperiÐ  c                óÎ   € Wn         W0n        \        P                  ! 4       V n        V P                  P                  V4       R V P                  P                  R4      9   V n        R# )Úsmbzserver servicesN)r9   rK   Ús3paramÚget_contextr&   Úloadr   r]   )r¥   r9   Úsmb_conf_pathrK   s   &&&&r   r¦   ÚNtaclsHelper.__init__Ò  sH   € ØŒØŒô ×%Ò%Ó'ˆŒØ�‰�‰�]Ô#à $§'¡'§+¡+Ð.?Ó"@Ñ@ˆŽr   Nc                ó²   € Vf   V P                   p\        V P                  WVV P                  R7      pV'       d   VP	                  V P
                  4      # T# )N)rC   r9   )r]   rG   r&   r9   rN   rK   )r¥   r#   rB   rN   rC   r®   s   &&&&& r   rG   ÚNtaclsHelper.getntaclÜ  sM   € ØÒ#Ø#Ÿ~™~ÐäØ�G‰G�TØ-Ø—L‘Lô"ˆ÷
 29ˆx×Ñ §¡Ó-ÐF¸hÐFr   c           	     ó^   € \        V P                  WV P                  VV P                  R 7      # ))r]   )rg   r&   rK   r]   )r¥   r#   r®   rB   s   &&&&r   rg   ÚNtaclsHelper.setntaclç  s&   € ä˜Ÿ™ °·±¸|Ø"&§.¡.ô2ð 	2r   )rK   r&   r9   r]   )FN)	r   r   r   r   r¦   rG   rg   r   rå   ræ   s   @r   ré   ré   Ð  s   ø‡ € òAô	G÷2ð 2r   ré   c                 ó˜   € \        V R ,           R4      ;_uu_ 4       pVP                  V4       RRR4       R#   + '       g   i     R# ; i)ú.NTACLÚwN)ÚopenÚwrite)ÚdstÚntacl_sddl_strÚfs   && r   Ú_create_ntacl_filerý   í  s0   € Ü	ˆc�H�n˜c×	"Ô	" aØ	�‰�Ô÷ 
#×	"×	"Ò	"ús	   œ8¸A		c                 óè   € V R ,           p\         P                  P                  V4      '       g   R# \        VR4      ;_uu_ 4       pVP	                  4       uuRRR4       #   + '       g   i     R# ; i)rö   NÚr)r"   r#   Úexistsrø   Úread)ÚsrcÚ
ntacl_filerü   s   &  r   Ú_read_ntacl_filer  ò  sH   € Ø�x•€Jä�7‰7�>‰>˜*×%Ò%Ùä	ˆj˜#×	Ô	 !Ø�v‰v‹x÷ 
×	×	Ó	ús   ÁA Á A1	c           	     ód  € \        4       p\        V\        4      '       d   \        P                  ! V4      p\        W4      pRp\        P                  ! 4       pV.pV.pV'       Ed1   VP                  4       p	VP                  4       p
VP                  V	R7       F÷  pVP                  W›R,          4      p\        P                  P                  W«R,          4      pVP                  VR,          4      '       d:   VP                  V4       VP                  V4       \        P                  ! V4       M?VP!                  V4      p\#        VR4      ;_uu_ 4       pVP%                  V4       RRR4        VP'                  VRR7      p\)        VV4       Kù  	  EK9  \2        P"                  ! VRR7      ;_uu_ 4       p\        P4                  ! V4       F6  p\        P                  P                  VV4      pVP7                  VVR7       K8  	  RRR4       \8        P:                  ! V4       R#   + '       g   i     LÈ; i  \*         dV   pTP-                  R	T: R
TP.                  ^,          : 24       TP1                  RT,          R,           4        Rp?EKý  Rp?ii ; i  + '       g   i     Lž; i)aF  
Backup all files and dirs with ntacl for the service behind smb_conn.

1. Create a temp dir as container dir
2. Backup all files with dir structure into container dir
3. Generate file.NTACL files for each file and dir in container dir
4. Create a tar file from container dir(without top level folder)
5. Delete container dir
rä   rË   rÅ   r¿   ÚwbNT©rN   zFailed to get the ntacl for z: z!The permissions for %s may not bez restored correctlyúw:gz©rÅ   Úmode©Úarcname)r
   rI   rJ   r   rK   r¢   ÚtempfileÚmkdtempÚpopr·   r%   r"   r#   rÀ   ÚappendrÏ   rÈ   rø   rù   r¬   rý   r   ÚerrorÚargsÚwarningÚtarfileÚlistdirÚaddÚshutilÚrmtree)r¤   Údest_tarfile_pathrK   ÚloggerÚ
smb_helperÚ	remotedirÚlocaldirÚr_dirsÚl_dirsÚr_dirÚl_dirÚeÚr_nameÚl_nameÚdatarü   rû   ÚtarrÅ   r#   s   &&&                 r   Úbackup_onliner'  ü  sú  € ô Ó€Fä�'œ3×ÒÜ×"Ò" 7Ó+ˆä˜8Ó-€Jà€Iä×ÒÓ!€Hàˆ[€FØˆZ€Fç
ˆ&Ø—
‘
“ˆØ—
‘
“ˆà—‘¨%�Ö0ˆAØ—_‘_ U¨f­IÓ6ˆFÜ—W‘W—\‘\ %¨6­Ó3ˆFà× Ñ   8¥×-Ò-Ø—‘˜fÔ%Ø—‘˜fÔ%Ü—’˜Õ à!×*Ñ*¨6Ó2�Ü˜& $×'Ô'¨1Ø—G‘G˜D”M÷ (ð6Ø!+×!3Ñ!3°FÀDÐ!3Ó!I�Ü" 6¨>Ö:ô! 1ô. 
�ŠÐ,°6×	:Õ	:¸cÜ—J’J˜xÖ(ˆDÜ—7‘7—<‘< ¨$Ó/ˆDØ�G‰G�D $ˆGÖ'ñ )÷ 
;ô
 ‡M‚M�(Ö÷% (×'ûô !ô 6Ø—’Û$ a§f¡f¨Q§ið1ô 2à—‘ÐBÀVÕKØ4õ 5÷ 6ó 6ûð6ú÷ 
;×	:ús2   ÅH)Å2H<Æ8AJÈ)H9È<JÉA	JÊJÊJ/	c                ó°  € V P                  R4      P                  R^4      R,          p\        P                  ! 4       p\	        4       p\        WBV4      p\        P                  ! V 4       EF�  w  r‰p
\        P                  P                  W€R7      p\        P                  P                  W[4      pV	 Fw  p\        P                  P                  W�4      p\        P                  P                  WÍ4      p\        P                  ! WöV4       VP                  WæRR7      p\        VV4       Ky  	  V
 FÔ  p\        P                  P                  VV4      p\        P                  P                  VV4      p\        P                  ! WöV4       VP                  WæRR7      p\        VV4       \!        VR4      ;_uu_ 4       pVP#                  4       p\!        VR4      ;_uu_ 4       pVP%                  V4       RRR4       RRR4       KÖ  	  EK   	  \&        P                   ! VRR	7      ;_uu_ 4       p\        P(                  ! V4       F6  p\        P                  P                  VV4      pVP+                  VVR
7       K8  	  RRR4       \,        P.                  ! V4       R#   + '       g   i     L²; i  + '       g   i     EK“  ; i  + '       g   i     LP; i)z4
Backup files and ntacls to a tarfile for a service
r©   ©ÚstartTr  Úrbr  Nr  r	  r  éÿÿÿÿ)ÚrstripÚrsplitr  r  r   ré   r"   Úwalkr#   Úrelpathr%   r   rÏ   rG   rý   Úcreate_filerø   r  rù   r  r  r  r  r  )Úsrc_service_pathr  rï   rK   r9   ÚtempdirrB   Úntacls_helperÚdirpathÚdirnamesÚ	filenamesÚrel_dirpathÚdst_dirpathÚdirnamer  rú   rû   ÚfilenameÚsrc_filer%  Údst_filer&  rÅ   r#   s   &&&&                    r   Úbackup_offliner>  8  s  € ð ×%Ñ% cÓ*×1Ñ1°#°qÓ9¸"Õ=€GÜ×ÒÓ €GÜ&Ó(€Lä  ¸ÓA€Mä(*¯ªÐ0@×(AÑ$ˆ˜9ä—g‘g—o‘o g�oÓFˆÜ—g‘g—l‘l 7Ó8ˆó  ˆGÜ—'‘'—,‘,˜wÓ0ˆCÜ—'‘'—,‘,˜{Ó4ˆCä�JŠJ�s¨'Ô2Ø*×3Ñ3°CÈtÐ3ÓTˆNÜ˜s NÖ3ñ  ó "ˆHÜ—'‘'—,‘,˜w¨Ó1ˆCÜ—'‘'—,‘,˜{¨HÓ5ˆCä×Ò˜S°Ô8Ø*×3Ñ3°CÈtÐ3ÓTˆNÜ˜s NÔ3ô �c˜4—” HØ—}‘}“�Ü˜#˜t—_”_¨Ø—N‘N 4Ô(÷ %÷ !‘ô "ñ )Bô< 
�ŠÐ,°6×	:Õ	:¸cÜ—J’J˜wÖ'ˆDÜ—7‘7—<‘< ¨Ó.ˆDØ�G‰G�D $ˆGÖ'ñ (÷ 
;ô
 ‡M‚M�'Ö÷ %—_ú÷ !—‘ú÷ 
;×	:ús1   Æ<%J0	Ç!JÇ3J0	È,AKÊJ-Ê(J0	Ê0KËK	c                ój  € \        4       pVP                  R4      P                  R^4      R,          p\        P                  ! 4       pVP                  4       p\        P                  ! V4      p\        WSV4      p	\        4       p
\        P                  ! V 4      ;_uu_ 4       pVP                  VR7       RRR4       \        P                  ! V4       EF‰  w  rÍp\        P                  P!                  WÆR7      p\        P                  P#                  \        P                  P%                  W4      4      pV Fß  pVP'                  R4      '       d   K  \        P                  P%                  VV4      p\        P                  P%                  VV4      p\        P                  P)                  V4      '       g   \*        P,                  ! VW¥4       \/        V4      pV'       d   V	P1                  VVV
4       KÀ  VP3                  RV,          R,           4       Ká  	  V EF:  pVP'                  R4      '       d   K  \        P                  P%                  VV4      p\        P                  P%                  VV4      p\        P                  P5                  V4      '       g   \*        P6                  ! VW¥4       \/        V4      pV'       d   V	P1                  VVV
4       MVP3                  RV,          R,           4       \        VR	4      ;_uu_ 4       pVP9                  4       p\        VR
4      ;_uu_ 4       pVP;                  V4       RRR4       RRR4       EK=  	  EKŒ  	  \<        P>                  ! V4       R#   + '       g   i     ELÍ; i  + '       g   i     LN; i  + '       g   i     EK•  ; i)z6
Restore files and ntacls from a tarfile to a service
r©   )r#   Nr)  rö   z)Failed to restore ntacl for directory %s.z) Please check the permissions are correctz$Failed to restore ntacl for file %s.r+  r  r,  ) r
   r-  r.  r  r  Úget_domain_sidr   rK   ré   r   r  rø   Ú
extractallr"   r/  r#   r0  Únormpathr%   ÚendswithÚisdirr   rÏ   r  rg   r  Úisfiler1  r  rù   r  r  )Úsrc_tarfile_pathÚdst_service_pathÚ
samdb_connrï   r  r9   r3  Údom_sid_strrK   r4  rB   rü   r5  r6  r7  r8  r9  r:  r  rú   rû   r;  r<  r%  r=  s   &&&&                     r   Úbackup_restorerJ  h  sœ  € ô Ó€FØ×%Ñ% cÓ*×1Ñ1°#°qÓ9¸"Õ=€GÜ×ÒÓ €Gà×+Ñ+Ó-€KÜ×Ò˜{Ó+€Gä  ¸ÓA€MÜ&Ó(€Lä	�ŠÐ&×	'Ô	'¨1Ø	�‰˜'ˆÔ"÷ 
(ô )+¯ª°×(8Ñ$ˆ˜9Ü—g‘g—o‘o g�oÓ=ˆÜ—g‘g×&Ñ&Ü�G‰G�L‰LÐ)Ó7ó9ˆó  ˆGØ×#Ñ# H×-Ô-Ü—g‘g—l‘l 7¨GÓ4�Ü—g‘g—l‘l ;°Ó8�Ü—w‘w—}‘} S×)Ò)ä—J’J˜s LÔ:ä!1°#Ó!6�ß!Ø!×*Ñ*¨3°ÀÖMà—N‘NØCÀcÕIØEõFöGñ  ô  "ˆHØ×$Ñ$ X×.Ô.Ü—g‘g—l‘l 7¨HÓ5�Ü—g‘g—l‘l ;°Ó9�Ü—w‘w—~‘~ c×*Ò*ä×$Ò$ S¨,Ô@ä!1°#Ó!6�ß!Ø!×*Ñ*¨3°ÀÕMà—N‘NÐ#IÈCÕ#OØ#Nõ$Oô Pô ˜#˜t—_”_¨Ø#Ÿ=™=›?�DÜ˜c 4Ÿœ¨HØ Ÿ™ tÔ,÷ )÷ %’_ô! "ñ+ )9ôT ‡M‚M�'Ö÷] 
(×	'Ð	'ú÷V )Ÿú÷ %—_‘_ús0   Â"M9Ì%N 	Ì5NÍN 	Í9N
	ÎNÎN 	Î N2)NNTN)NNTFNN)T)5r   r"   r  r  Úsamba.xattr_nativer   Úsamba.xattr_tdbÚsamba.posix_eadbÚsamba.samba3r   rì   Úsamba.dcerpcr   r   r   Ú	samba.ndrr   r   r   r	   r½   Úsamba.loggerr
   r   Úsamba.auth_utilr   r   r  ÚFILE_ATTRIBUTE_SYSTEMr¾   ÚFILE_ATTRIBUTE_ARCHIVEÚFILE_ATTRIBUTE_HIDDENr¸   ÚSECINFO_OWNERrW   rX   rY   rA   r1   r   r+   r5   rG   rg   r‰   r    r¢   ré   rý   r  r'  r>  rJ  r   r   r   Ú<module>rW     s  ðñ$ ó 
Û Û ã Û Û Ý )ß /Ñ /ß *Ý Ý 8Ý )Ý Ý /Ý )ð "×7Ñ7Ø!×:Ñ:õ;à!×8Ñ8õ9ð "×7Ñ7õ8Ð ð "×/Ñ/Ø!×/Ñ/õ0à!×.Ñ.õ/ð "×.Ñ.õ/Ð ô
)˜	ô )òMò82ô#0ôLd8òN4ôn+÷\~+ñ ~+÷B2ñ 2ò: ò
ò9òx-ô`<r   