
uUc           @   s  d  Z  d Z d d l Z d d l Z d d l Z d d l m Z m Z d d l m	 Z	 d d l
 m Z m Z m Z d d l m Z d d l m Z d d	 l m Z d d
 l m Z m Z m Z d d l m Z d d l m Z d d l m Z d d l m Z d d l m Z d d l m  Z  d   Z! d d d d  Z# d   Z$ d   Z% d   Z& d   Z' d   Z( d   Z) i e j* d 6Z+ d   Z, d   Z- d e. d e. d  Z/ d S(   s3   Support code for upgrading from Samba 3 to Samba 4.t   restructuredTextiN(   t   Ldbt   registry(   t   LoadParm(   t	   provisiont   ProvisioningErrort   setsysvolacl(   t	   FILL_FULL(   t   passdb(   t   param(   t   lsat   samrt   security(   t   dom_sid(   t   Credentials(   t   dsdb(   t   ndr_pack(   t   unix2nttime(   t   generate_random_passwordc         C   s  t  j   } |  j   | _ d | k rP t  j t | d  t  j d  | d <n  d | k r t  j t | d  t  j d  | d <n  d | k r | d } t | d  } t  j t |  t  j d	  | d
 <n  d | k r>| d } | d k s | d k rd } n t | d  } t  j t |  t  j d  | d <n  d | k r| d } t | d  }	 t  j t |	  t  j d  | d <n  y |  j	 |  Wn, t  j
 k
 r}
 | j d t |
   n Xd S(   s   Import a Samba 3 policy.

    :param samdb: Samba4 SAM database
    :param policy: Samba3 account policy
    :param logger: Logger object
    s   min password lengtht   minPwdLengtht   a01s   password historyt   pwdHistoryLengtht   a02s   minimum password ageg    cAt	   minPwdAget   a03s   maximum password ageii    l         t	   maxPwdAget   a04s   lockout durationi<   t   lockoutDurationt   a05s"   Could not set account policy, (%s)N(   t   ldbt   Messaget   get_default_basednt   dnt   MessageElementt   strt   FLAG_MOD_REPLACEt   intR   t   modifyt   LdbErrort   warn(   t   samdbt   policyt   loggert   mt   min_pw_age_unixt   min_pw_age_ntt   max_pw_age_unixt   max_pw_age_ntt   lockout_duration_minst   lockout_duration_ntt   e(    (    s1   /usr/lib/python2.7/dist-packages/samba/upgrade.pyt   import_sam_policy*   s:    

	
c	         C   s  y t  j   }	 t  j | d t |   |	 _ | d k r t  j t |  t  j d  |	 d <t  j t |  t  j d  |	 d <t  j t |  t  j d  |	 d <n  t  j t |  t  j d  |	 d <| j |	  Wn5 t  j k
 r
}
 |  j	 d t |  t |
   n Xd S(	   sw  Add posix attributes for the user/group

    :param samdb: Samba4 sam.ldb database
    :param sid: user/group sid
    :param sid: user/group name
    :param nisdomain: name of the (fake) NIS domain
    :param xid_type: type of id (ID_TYPE_UID/ID_TYPE_GID)
    :param home: user homedir (Unix homepath)
    :param shell: user shell
    :param pgid: users primary group id
    s   <SID=%s>t   ID_TYPE_UIDt   unixHomeDirectoryt
   loginShellt	   gidNumbert   msSFU30NisDomains7   Could not add posix attrs for AD entry for sid=%s, (%s)N(
   R   R   t   DnR"   R    R!   R#   R%   R&   R'   (   R*   R(   t   sidt   namet	   nisdomaint   xid_typet   homet   shellt   pgidR+   R2   (    (    s1   /usr/lib/python2.7/dist-packages/samba/upgrade.pyt   add_posix_attrsb   s"    c         C   s  y t  j   } t  j |  d t |   | _ | d k r{ t  j t |  t  j d  | d <t  j d t  j d  | d <nM | d k r t  j t |  t  j d  | d <t  j d t  j d  | d <n  |  j |  WnA t  j	 k
 r} | j
 d	 t |  t |  | t |   n Xd
 S(   s   Create idmap entry

    :param samdb: Samba4 sam.ldb database
    :param sid: user/group sid
    :param xid: user/group id
    :param xid_type: type of id (ID_TYPE_UID/ID_TYPE_GID)
    :param logger: Logger object
    s   <SID=%s>R4   t	   uidNumbert   posixAccountt   objectClasst   ID_TYPE_GIDR7   t
   posixGroups?   Could not modify AD idmap entry for sid=%s, id=%s, type=%s (%s)N(   R   R   R9   R"   R    R!   R#   t   FLAG_MOD_ADDR%   R&   R'   (   R(   R:   t   xidR=   R*   R+   R2   (    (    s1   /usr/lib/python2.7/dist-packages/samba/upgrade.pyt   add_ad_posix_idmap_entry   s$    
c   	      C   s  t  } |  j d d t |   } | j d k r: t } n  | r yl t j   } | d d | _ t j t |  t j	 d  | d <t j | t j	 d  | d <|  j
 |  Wqt j k
 r } | j d t |  t |  | t |   qXn yW |  j i d	 t |  d 6t |  d
 6d d 6t |  d 6| d 6t |  d 6 WnA t j k
 r} | j d t |  t |  | t |   n Xd S(   s   Create idmap entry

    :param idmapdb: Samba4 IDMAP database
    :param sid: user/group sid
    :param xid: user/group id
    :param xid_type: type of id (ID_TYPE_UID/ID_TYPE_GID)
    :param logger: Logger object
    t
   expressions   objectSid=%si   i    R    t	   xidNumbert   types<   Could not modify idmap entry for sid=%s, id=%s, type=%s (%s)s   CN=%st   cnt   sidMapRD   t	   objectSids9   Could not add idmap entry for sid=%s, id=%s, type=%s (%s)N(   t   Falset   searchR"   t   countt   TrueR   R   R    R!   R#   R%   R&   R'   t   addR   (	   t   idmapdbR:   RH   R=   R*   t   foundt   msgR+   R2   (    (    s1   /usr/lib/python2.7/dist-packages/samba/upgrade.pyt   add_idmap_entry   s8    	)c         C   s\  y | j    } Wn* t k
 r< } | j d t |   d SXt | j   | j    } | } t j   } t j	 |  d  | _
 t j t |  t j d  | d <t j t |  t j d  | d <|  j |  x | j   D]w \ } }	 | d k r d }
 n( | d	 k rd
 }
 n | j d |  q | j |	 |  } t |  t |  |	 |
 |  q Wd S(   s   Import idmap data.

    :param idmapdb: Samba4 IDMAP database
    :param samba3_idmap: Samba3 IDMAP database to import from
    :param logger: Logger object
    s(   Cannot open idmap database, Ignoring: %sNs	   CN=CONFIGt
   lowerBoundt
   lowerboundRK   t   UIDR4   t   GIDRE   s+   Wrong type of entry in idmap (%s), Ignoring(   t   get_idmap_dbt   IOErrorR'   R"   t   maxt   get_user_hwmt   get_group_hwmR   R   R9   R    R!   R#   R%   t   idst   get_sidRX   R   (   RU   t   samba3R*   t   samba3_idmapR2   t
   currentxidRZ   R+   t   id_typeRH   R=   R:   (    (    s1   /usr/lib/python2.7/dist-packages/samba/upgrade.pyt   import_idmap   s.    		c         C   su  y2 |  j  d d t | j  d t j  } t } WnF t j k
 rz \ } } | t j k re t } q{ t j | |   n X| r | j	 d t | j  | j
 | d d d  n| j t j k r | j j   \ } } | t j t j  k r d Sn  t j   }	 t j |  d | j
 |  j   f  |	 _ t j | j
 t j d	  |	 d	 <t j d
 t j d  |	 d <t j t | j  t j d  |	 d <t j | j
 t j d  |	 d <| j rt j | j t j d  |	 d <n  | j t j k s| j t j k r"t j t t j  t j d  |	 d <n  y |  j |	 d d g Wn2 t j k
 rp}
 | j	 d | j
 t |
   n Xd S(   s   Add or modify group from group mapping entry

    param samdb: Samba4 SAM database
    param groupmap: Groupmap entry
    param logger: Logger object
    t   bases   <SID=%s>t   scopesJ   Group already exists sid=%s, groupname=%s existing_groupname=%s, Ignoring.i    t   sAMAccountNameNs   CN=%s,CN=Users,%sRM   t   groupRD   RO   t   descriptiont	   groupTypet   controlss   relax:0s    Could not add group name=%s (%s)(   RQ   R"   R:   R   t
   SCOPE_BASERS   R&   t   ERR_NO_SUCH_OBJECTRP   R'   t   nt_namet   sid_name_useR
   t   SID_NAME_WKN_GRPt   splitR   R   t   SID_BUILTINR   R9   R   R    R!   RG   R   t   commentt   SID_NAME_ALIASR   t!   GTYPE_SECURITY_DOMAIN_LOCAL_GROUPRT   (   R(   t   groupmapR*   RW   RV   t   ecodet   emsgt   group_dom_sidt   ridR+   R2   (    (    s1   /usr/lib/python2.7/dist-packages/samba/upgrade.pyt   add_group_from_mapping_entry   sB    		
		((	$c         C   s  x| D] } t  j   } t  j |  d t | j   | _ t  j d t |  t  j d  | d <y |  j |  Wq t  j	 k
 r\ } } | t  j
 k r | j d | | j |  q| t  j k r t d | | j | f   qt d | | j | f   q Xq Wd S(   s   Add user/member to group/alias

    param samdb: Samba4 SAM database
    param group: Groupmap object
    param members: List of member SIDs
    param logger: Logger object
    s   <SID=%s>t   memberR   s/   skipped re-adding member '%s' to group '%s': %ssX   Could not add member '%s' to group '%s' as either group or user record doesn't exist: %ss+   Could not add member '%s' to group '%s': %sN(   R   R   R9   R"   R:   R    R!   RG   R%   R&   t   ERR_ENTRY_ALREADY_EXISTSt   debugRq   R   (   R(   Rl   t   membersR*   t
   member_sidR+   R{   R|   (    (    s1   /usr/lib/python2.7/dist-packages/samba/upgrade.pyt   add_users_to_group*  s    "&c         C   s  d } x| j    D]y\ } \ } } } | d 7} t | j d d  d d  } | d k rf d } nO | d @r t |  d k r d } q d } n! t |  d k r d } n d } | t j   k r d }	 n d }	 | d	 @d
 ?}
 |  j i d t | j d   d 6| j d  d d 6| j d  d d 6d d 6t |  d 6t |	  d 6t |
  d 6t j	 |  d 6d d 6t |  d 6| d 6 q W|  j i d d 6d d 6d d 6t |  d 6 d S(   s   Import settings from a Samba3 WINS database.

    :param samba4_winsdb: WINS database to import to
    :param samba3_winsdb: WINS database to import from
    i    i   t   #i   i   i   i   i   i`   i   s   name=%s,type=0x%sR    RL   R;   t
   winsRecordRD   t
   recordTypet   recordStatet   nodeTypet
   expireTimet   0t   isStatict	   versionIDt   addresss
   cn=VERSIONt   VERSIONRM   t   winsMaxVersiont
   maxVersionN(
   t   itemsR$   Ru   t   lent   timeRT   t   tupleR"   R   t
   timestring(   t   samba4_winsdbt   samba3_winsdbt
   version_idR;   t   ttlt   ipst   nb_flagsRL   t   rTypet   rStatet   nType(    (    s1   /usr/lib/python2.7/dist-packages/samba/upgrade.pyt   import_winsB  s@    "
	
				#t   HKLMc   	         s     f d   } x | j    D]u } | |  } x! | j |  D] } | |  q> Wx< | j |  j   D]% \ } \ } } | j | | |  qh Wq Wd S(   s   Import a Samba 3 registry database into the Samba 4 registry.

    :param samba4_registry: Samba 4 registry handle.
    :param samba3_regdb: Samba 3 registry database handle.
    c            sD   |  j  d d  \ } }  t | } |  j d d  }    j | |   S(   Nt   /i   s   \(   Ru   t   SAMBA3_PREDEF_NAMESt   replacet
   create_key(   t   keypatht   predef_namet	   predef_id(   t   samba4_registry(    s1   /usr/lib/python2.7/dist-packages/samba/upgrade.pyt   ensure_key_exists  s    
N(   t   keyst   subkeyst   valuesR   t	   set_value(	   R   t   samba3_regdbR   t   keyt
   key_handlet   subkeyt
   value_namet
   value_typet
   value_data(    (   R   s1   /usr/lib/python2.7/dist-packages/samba/upgrade.pyt   import_registry{  s    (c         C   s   y/ | j  | d t j d d | d | g } Wn/ t j k
 r` } t d | | | f   n9 X| j d k r | d | d S|  j d | |  t  d	 S(
   s   Get posix attributes from a samba3 ldap backend
    :param ldbs: a list of ldb connection objects
    :param base_dn: the base_dn of the connection
    :param user: the user to get the attribute for
    :param attr: the attribute to be retrieved
    Rj   RJ   s%   (&(objectClass=posixAccount)(uid=%s))t   attrss=   Failed to retrieve attribute %s for user %s, the error is: %si   i    s0   LDAP entry for user %s contains more than one %sN(   RQ   R   t   SCOPE_SUBTREER&   R   RR   t   warningt   KeyError(   R*   t
   ldb_objectt   base_dnt   usert   attrRW   R2   (    (    s1   /usr/lib/python2.7/dist-packages/samba/upgrade.pyt    get_posix_attr_from_ldap_backend  s    c   ?   '   C   s  |  j  j   } |  j  j d  } |  j  j d  }	 |  j  j d  }
 |  j  j d  ds k rs |  j  j d d  n  y |  j   } Wn8 t k
 r } t d |  j d  t	 |  f   n X| s | j
   d } | j d	 |  n  |	 s3| d
 k s| d k rt d   q3| j   }	 | j d |	  n  d } y | j |
  } Wn t k
 reds } n X|  j  j d  j d  d j   d k r|  j  j d  } |  j  j d  } | j |  } | ds k rt d   n  | j d  } t } n ds } ds } t } | j   t j |  j  j d   |  j   } y t j   } Wn$ t j k
 rnt d |   n Xy | j d |
  } Wn  t j k
 rds } ds } n X| j j   \ } } | j d  | j   } | j d  | j   } i  } x| D]} | j  j   \ } } | | k r@| | k r@| d } q@n  | j! t" j# k ry) | j$ | j   } | | t	 | j   <Wq
t j k
 r} | j% d | j& | j  |  qq
Xq| j! t" j' k r,y) | j( | j   } | | t	 | j   <Wq
t j k
 r(} | j% d | j& | j  |  qq
Xq| j! t" j) k r| j  j   \ } } | t* j+ t* j,  k r| j% d | j&  qn  y) | j$ | j   } | | t	 | j   <Wq
t j k
 r} | j% d | j& | j  |  qq
Xq| j% d | j& | j  | j!  qqW| j d  | j- d  }  i  }! i  }" ds }# x|  D]}$ | re| |$ d  k reqCn  |$ d! }% |$ d  d k  r| j d" |$ d  |%  qCn  |$ d  | k r|$ d  d } n  | j |%  }& |& j. t/ j0 t/ j1 Bt/ j2 Bt/ j3 B@}' |' t/ j2 k r3| j% d# |% d$   |& j. t/ j2 @t/ j1 B|& _. n|' t/ j3 k r]| j% d% |% d$   qCnV|' t/ j1 k r|% d$ d& k r| j% d' |%  qCn |' t/ j0 t/ j1 Bk r|% d$ d& k r| j% d( |%  |& j. t/ j0 @|& _. n |' t/ j0 t/ j2 Bk r/|% d$ d& k r/| j% d) |%  |& j. t/ j0 @|& _. n |' d k ra|% d$ d& k ra|& j. t/ j0 B|& _. nR |' t/ j0 k s|' t/ j1 k rn1 t d* |% |& j. t/ j0 t/ j1 t/ j2 t/ j3 f   |& |! |% <y | j4 |& j  d |" |% <WnB t j k
 ry t5 j6 |%  j7 |" |% <Wq t k
 rq Xn X|# rB|% j8   d+ k rB|% }# n  |% j8   d, k r]|% }# n  y | j9 |&  }( xo |( D]g } t	 |  | k r|& j | t	 |  k r| t	 |  j: |& j  qqv|& j g | t	 |  <qvWWqCt j k
 r	} | j% d- |% |& j |  qCXqCW| j d. |  t g  | D] }) |) j& ^ q2	 }* t g  |  D] }+ |+ d! ^ qT	 }, |* j; |,  }- |- r	| j d/  x |- D] }. | j d0 |.  q	Wt d1   n  t g  | D] }) t	 |) j   ^ q	 }/ t< |  t< |/  k r
t d2   n  t g  |  D] }+ d3 | |+ d  f ^ q
 }0 t< |   t< |0  k rc
t d4   n  |/ j; |0  }1 |1 r
| j d5  x% |1 D] } | j d0 t	 |   q
Wt d6   n  i  }2 i  }3 i  }4 | rt=   }5 |5 j> |  j   |5 j? |  |5 j@ |  |  j  j d  j d d  d j d7  }6 x] |6 j   D]L }7 y tA |7 d8 |5 }8 Wn, tB jC k
 r} t d9 |7 | f   q?XPq?Wn  | j d:  | j- d  }  xV|  D]N}$ |$ d! }% |% |" jD   k ry? | rtE | |8 | |% d;  |2 |% <n t5 j6 |%  jF |2 |% <Wn! t k
 r)n tG k
 r9n Xy? | rbtE | |8 | |% d<  |3 |% <n t5 j6 |%  jH |3 |% <Wn! t k
 rn tG k
 rn Xy? | rtE | |8 | |% d=  |4 |% <n t5 j6 |%  jI |4 |% <Wqt k
 rqtG k
 rqXqqW| j d>  ds }9 y |  jJ   }9 Wn) t k
 rU} | j% d? t	 |   n X| d
 k pk| d k swd@ } n  |# rtK dA dB  }: n ds }: tL | | dC | d |	 dD | dE | dF | dG | dH |: dI tM jN dJ |
 j8   dK | dL | dM tO dN | dO | dP t dQ | dR t }; |; jP |  | j dS  |9 rOtQ tA |; jR jS  |9  n  | j dT  tT |; jU | |  | j dU  tV |; jW |  |  tX jY   }< |< jZ |; j  j[  |< j d |; j  j d   |< j dV |; j  j dV   |< j dW |; j  j dW   t j\ |< j d   }= |; jU j]   | j dX  y | j dY  x | D] }) |) j^ d$ k rKt_ |; jU |) |  t` |; jU |) j  |) j^ dZ |  ta d[ |; jU d\ |) j  d] |) j& d^ | j8   d_ dZ d` |  qKqKWWn |; jU jb     n X| j da  |; jU jc   | j db  |; jU j]   y| j dc  x|! D]}% |% j8   d, k r|! |% j t+ t	 |  dd  k r| j de |! |% j t+ t	 |  dd  f  t df   qn  |% j8   d+ k r	|! |% j t+ t	 |  dd  k r| j% dg  q	| j% dh  n  |= jd |! |%  |% |" k r9t` |; jU |! |% j |" |% di |  |% |2 k r|2 |% ds k	 r|% |3 k r|3 |% ds k	 r|% |4 k r|4 |% ds k	 rta d[ |; jU d\ |! |% j d] |% d^ | j8   d_ di dj |2 |% dk |3 |% dl |4 |% d` |  	qq9q9WWn |; jU jb     n X| j dm  |; jU jc   | j dn  |; jU j]   yP xI | D]A }) t	 |) j   | k rZte |; jU |) | t	 |) j   |  qZqZWWn |; jU jb     n X| j do  |; jU jc   |# rv| j dp  |= j d,  }> |! |# jf |> _f |! |# jg r&|! |# jg |> _g n  |! |# jh |> _h |! |# ji rV|! |# ji |> _i n  |= jj |>  | j dq |#  n  |; j dr k rtk |; jU |; jR jl |; jR jm |; jR jn |; jR jo t* j+ |; jp  |; jq jr |; jq js |; j  | 
 n  ds S(t   s   Upgrade from samba3 database to samba4 AD database

    :param samba3: samba3 object
    :param logger: Logger object
    :param targetdir: samba4 database directory
    :param session_info: Session information
    t	   workgroupt   realms   netbios names   ldapsam:trustedt   yess   Could not open '%s', the Samba3 secrets database: %s.  Perhaps you specified the incorrect smb.conf, --testparm or --dbdir option?s   secrets.tdbi    s6   No workgroup specified in smb.conf file, assuming '%s't   ROLE_DOMAIN_BDCt   ROLE_DOMAIN_PDCs   No realm specified in smb.conf file and being a DC. That upgrade path doesn't work! Please add a 'realm' directive to your old smb.conf to let us know which one you want to use (it is the DNS name of the AD domain you wish to create.s2   No realm specified in smb.conf file, assuming '%s'i  s   passdb backendt   :t   ldapsams   ldap suffixs   ldap admin dns   ldapsam passdb backend detected but no LDAP Bind PW found in secrets.tdb for user %s.  Please point this tool at the secrets.tdb that was used by the previous installation.t    s   private dirs(   Can't find domain sid for '%s', Exiting.s   %s$s   Exporting account policys   Exporting groupsi   s4   Ignoring group '%s' %s listed but then not found: %ssO   Ignoring 'well known' group '%s' (should already be in AD, and have no members)s+   Ignoring group '%s' %s with sid_name_use=%ds   Exporting usersR~   t   account_names-     Skipping wellknown rid=%d (for username=%s)sk     Demoting BDC account trust for %s, this DC must be elevated to an AD DC using 'samba-tool domain dcpromo'isZ     Skipping inter-domain trust from domain %s, this trust must be re-created as an AD trustt   $s     Skipping account %s that has ACB_WSTRUST (W) set but does not end in $.  This account can not have worked, and is probably left over from a misconfiguration.s     Fixing account %s which had both ACB_NORMAL (U) and ACB_WSTRUST (W) set.  Account will be marked as ACB_WSTRUST (W), i.e. as a domain members     Fixing account %s which had both ACB_NORMAL (U) and ACB_SVRTRUST (S) set.  Account will be marked as ACB_WSTRUST (S), i.e. as a domain members  Failed to upgrade due to invalid account %s, account control flags 0x%08X must have exactly one of
ACB_NORMAL (N, 0x%08X), ACB_WSTRUST (W 0x%08X), ACB_SVRTRUST (S 0x%08X) or ACB_DOMTRUST (D 0x%08X).

Please fix this account before attempting to upgrade again
t   roott   administrators)   Ignoring group memberships of '%s' %s: %ss   Next rid = %ds4   Following names are both user names and group names:s      %ss5   Please remove common user/group names before upgrade.s9   Please remove duplicate group sid entries before upgrade.s   %s-%us8   Please remove duplicate user sid entries before upgrade.s,   Following sids are both user and group sids:s3   Please remove duplicate sid entries before upgrade.t   "t   credentialss=   Could not open ldb connection to %s, the error message is: %ss   Exporting posix attributest   homeDirectoryR6   R7   s   Reading WINS databases'   Cannot open wins database, Ignoring: %st   NONEi   i    t	   targetdirt   domaint	   domainsidt   next_ridt   dc_ridt	   adminpasst   dom_for_fun_levelt   hostnamet   machinepasst
   serverrolet
   samdb_fillt   useeadbt   dns_backendt   use_rfc2307t	   use_ntvfst   skip_sysvolacls   Importing WINS databases   Importing Account policys   Importing idmap databases   state directorys   lock directorys   Adding groupss   Importing groupsRE   R(   R:   R;   R<   R=   R*   s+   Committing 'add groups' transaction to disks   Adding userss   Importing userss   -500sP   User 'Administrator' in your existing directory has SID %s, expected it to be %ssP   User 'Administrator' in your existing directory does not have SID ending in -500s,   User root has been replaced by Administratorsb   User root has been kept in the directory, it should be removed in favour of the Administrator userR4   R>   R?   R@   s*   Committing 'add users' transaction to disks   Adding users to groupss4   Committing 'add users to groups' transaction to disks"   Setting password for administrators<   Administrator password has been set to password of user '%s's"   active directory domain controllerN(t   t   lpt   server_rolet   gett   Nonet   sett   get_secrets_dbR^   R   t   privatedir_pathR"   t   domainsR   t   uppert   get_machine_passwordR   Ru   t   stript   get_ldap_bind_pwRS   RP   t   closeR   t   set_secrets_dirt
   get_sam_dbt   get_global_sam_sidt   errort	   Exceptiont   getsampwnamt   user_sidt   infot   get_account_policyt   enum_group_mappingR:   Rs   R
   Rx   t   enum_aliasmemR'   Rr   t   SID_NAME_DOM_GRPt   enum_group_membersRt   R   R   Rv   t   search_userst	   acct_ctrlR   t
   ACB_NORMALt   ACB_WSTRUSTt   ACB_SVRTRUSTt   ACB_DOMTRUSTt	   sid_to_idt   pwdt   getpwnamt   pw_uidt   lowert   enum_group_membershipst   appendt   intersectionR   R   t   guesst   set_bind_dnt   set_passwordR   R   R&   R   R   t   pw_dirt
   IndexErrort   pw_shellt   pw_gidt   get_wins_dbR   R   R   t   DS_DOMAIN_FUNCTION_2003R   t   report_loggerR   t   pathst   winsdbR3   R(   Rh   t   idmapt   s3paramt   get_contextt   loadt
   configfilet   PDBt   transaction_startt   gidR   RI   RA   t   transaction_cancelt   transaction_committ   add_sam_accountR   t	   nt_passwdt   lanman_passwdt   pass_last_set_timet
   pw_historyt   update_sam_accountR   t   netlogont   sysvolt   root_uidt   root_gidR   t   namest	   dnsdomaint   domaindn(?   Rd   R*   R   t   session_infoR   R   R   R   t
   domainnameR   t   netbiosnamet
   secrets_dbR2   R   R   R   t   ldapusert   ldappasst   ldapt   s3dbR   t   machineacctt
   machineridt
   machinesidR)   t	   grouplistt   groupmembersRl   R:   R~   R   R}   t   userlistt   userdatat   uidst
   admin_usert   entryt   usernameR   t	   acct_typet   group_membershipst   gt   group_namest   ut
   user_namest   common_namesR;   t
   group_sidst	   user_sidst   common_sidst   homest   shellst   pgidst   credst   urlst   urlR   R   R   t   resultt
   new_lp_ctxt	   s4_passdbt   admin_userdata(    (    s1   /usr/lib/python2.7/dist-packages/samba/upgrade.pyt   upgrade_from_samba3  sz   	)	
	

+	

	
	
	
	
	
%&&	"
		 	"#(-	+
		E#.#$g.(0   t   __doc__t   __docformat__R   R   R  t   sambaR   R   t   samba.paramR   t   samba.provisionR   R   R   t   samba.provision.commonR   t   samba.samba3R   R	   R  t   samba.dcerpcR
   R   R   t   samba.dcerpc.securityR   t   samba.credentialsR   R   t	   samba.ndrR   R   R   R3   R   RA   RI   RX   Rh   R   R   R   t   HKEY_LOCAL_MACHINER   R   R   RP   RS  (    (    (    s1   /usr/lib/python2.7/dist-packages/samba/upgrade.pyt   <module>   s@   	8!		+	'	5		4		