File: //lib/python3/dist-packages/samba/netcmd/__pycache__/domain.cpython-310.pyc
o
eF�c� � @ sf d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dl Z d dl
Z
d dlZd dlZd dl
mZ d dl
mZ d dl
mZ d dlmZ d dlmZmZ d dl
mZ d dlZ
d dlmZmZ d d lmZ d d
lmZmZ d dlm Z m!Z! d dl"m#Z# d d
l"m$Z$ d dl"m%Z% d dl"m&Z& d dl"m'Z' d dl"m(Z( d dl"m)Z) d dl*m+Z+m,Z, d dl-m.Z.m/Z/m0Z0m1Z1 d dl2m3Z3 d dl4m5Z5 d dl4m6Z6m7Z7m8Z8 d dl9m:Z: d dl9m;Z< d dl=m>Z> d dl?m@Z@ d dl
mAZAmBZBmCZC d dlDmEZE d dlFmZG d dlHmIZI d d l
mJZJ d d!lKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZWmXZX d d"lYmZZZm[Z[m\Z\m]Z] d d#l^m_Z_m`Z`maZa d d$lbmcZc d d%ldmeZe d d&lfmgZg d d'lhmiZi d d(l
mjZj ePeQeRd)�Zke1d*d+d,d-d.�e1d/d0d1d2�e1d3d4d5d6d7gd8e� d9�e1d:d;d<d=d.�e1d>d?d@eldA�e1dBdCdDd0dE�gZme1dFdGeldH�e1dIdJeldH�e1dKdLd0dE�e1dMd4dNg dO�dPdQdR�e1dSdTdUd0dE�gZne1dVdWd0dE�gZodXdY� Zpze� W n eq�y� dZrY n w G dZd[� d[e.�ZrG d\d]� d]e.�ZsG d^d_� d_e.�ZtG d`da� dae.�ZuG dbdc� dce.�ZvG ddde� dee.�ZwG dfdg� dge.�ZxG dhdi� die.�ZyG djdk� dke.�ZzG dldm� dme0�Z{G dndo� doe.�Z|G dpdq� dqe|�Z}G drds� dsej~�ZG dtdu� due.�Z�G dvdw� dwe��Z�G dxdy� dye��Z�G dzd{� d{e��Z�G d|d}� d}e��Z�G d~d� de��Z�G d�d�� d�e��Z�G d�d�� d�e��Z�G d�d�� d�e.�Z�G d�d�� d�e0�Z�G d�d�� d�e0�Z�G d�d�� d��Z�G d�d�� d�e.�Z�G d�d�� d�e.�Z�G d�d�� d�e0�Z�dS )�� N)�ntstatus)�
NTSTATUSError)�werror��getpass)�Net�LIBNET_JOIN_AUTOMATIC)�enable_net_export_keytab)� join_RODC�join_DC)�system_session)�SamDB�get_default_backend_store)�ndr_pack� ndr_print)�drsuapi)�drsblobs)�lsa)�netlogon)�security)�nbt)�misc)�DOMAIN_PASSWORD_COMPLEX�DOMAIN_PASSWORD_STORE_CLEARTEXT)�Command�CommandError�SuperCommand�Option)�get_fsmo_roleowner)�!netcmd_get_domain_infos_via_cldap)�NEVER_TIMESTAMP�timestamp_to_mins�timestamp_to_days)�Samba3)�param)�upgrade_from_samba3)�drsuapi_connect)� remove_dc�arcfour_encrypt�string_to_byte_array)�system_session_unix)r )�default_path)�is_ad_dc_built)
�DS_DOMAIN_FUNCTION_2000�DS_DOMAIN_FUNCTION_2003�DS_DOMAIN_FUNCTION_2003_MIXED�DS_DOMAIN_FUNCTION_2008�DS_DOMAIN_FUNCTION_2008_R2�DS_DOMAIN_FUNCTION_2012�DS_DOMAIN_FUNCTION_2012_R2�$DS_NTDSDSA_OPT_DISABLE_OUTBOUND_REPL�#DS_NTDSDSA_OPT_DISABLE_INBOUND_REPL�UF_WORKSTATION_TRUST_ACCOUNT�UF_SERVER_TRUST_ACCOUNT�UF_TRUSTED_FOR_DELEGATION�UF_PARTIAL_SECRETS_ACCOUNT)� provision�ProvisioningError�DEFAULT_MIN_PWD_LENGTH�
setup_path)� FILL_FULL�FILL_NT4SYNC�FILL_DRS)�cmd_domain_passwordsettings_pso)�cmd_domain_backup)�
get_string)�CreateTrustedDomainRelax)�dsdb��2008_R2�2012�2012_R2z
--machinepass�string�PASSWORDz*choose machine password (otherwise random)��type�metavar�helpz--plaintext-secrets�
store_truezaStore secret/sensitive values as plain text on disk(default is to encrypt secret/ensitive values)��actionrO z--backend-store�choice�BACKENDSTORE�tdb�mdbz7Specify the database backend to be used (default is %s))rM rN �choicesrO z--backend-store-size�bytes�SIZEzfSpecify the size of the backend database, currently only supported by lmdb backends (default is 8 Gb).�--targetdir�DIRz/Set target directory (where to store provision))rN rO rM �-q�--quiet�Be quiet�rO rR �--serverz
DC to join�rO rM �--sitezsite to joinz--domain-critical-onlyz&only replicate critical domain objects�
--dns-backend�NAMESERVER-BACKEND)�SAMBA_INTERNAL� BIND9_DLZ�NONEz�The DNS server backend. SAMBA_INTERNAL is the builtin name server (default), BIND9_DLZ uses samba4 AD to store zone information, NONE skips the DNS setup entirely (this DC will not be a DNS server)re �rM rN rW rO �default�-v� --verbose�
Be verbose�--use-ntvfs�+Use NTVFS for the fileserver (default = no)c C sb t tjd�}tj| ddd| |gtj|d�}|�� \}}|�� |�d�}|r/t |d ��
� S dS ) N�wz-sz-lz--parameter-name=%s)�stdout�stderr�
r � )�open�os�devnull�
subprocess�Popen�PIPE�communicate�close�splitrC �strip)�testparm�smbconf�varname�errfile�p�out�err�lines� r� �5/usr/lib/python3/dist-packages/samba/netcmd/domain.py�get_testparm_var� s
��
r� c @ sF e Zd ZdZdZejejejd�Z e
dded�gZdgZ
dd d
�ZdS )�cmd_domain_export_keytabz/Dump Kerberos keys of the domain into a keytab.z%prog <keytab> [options]�� sambaopts�credopts�versionoptsz--principalzextract only this principalra �keytabNc C s$ |� � }td |�}|j||d� d S )N)r� � principal)�get_loadparmr �
export_keytab)�selfr� r� r� r� r� �lp�netr� r� r� �run� s
zcmd_domain_export_keytab.run�NNNN��__name__�
__module__�__qualname__�__doc__�synopsis�options�SambaOptions�CredentialsOptions�VersionOptions�takes_optiongroupsr �str�
takes_options�
takes_argsr� r� r� r� r� r� � s ��r� c @ s: e Zd ZdZdZg Zejejej d�Z
dgZddd�ZdS ) �cmd_domain_infoz?Print basic info about a domain and the DC passed as parameter.z%prog <ip_address> [options]r� �addressNc C s� |� � }zt|d |�}W n ty td| d ��w | j�d|j � | j�d|j � | j�d|j � | j�d|j � | j�d|j
� | j�d|j � | j�d |j � d S )
NzInvalid IP address 'z'!zForest : %s
zDomain : %s
zNetbios domain : %s
zDC name : %s
zDC netbios name : %s
zServer site : %s
zClient site : %s
)
r� r �RuntimeErrorr �outf�write�forest�
dns_domain�domain_name�pdc_dns_name�pdc_name�server_site�client_site)r� r� r� r� r� r� �resr� r� r� r� � s �zcmd_domain_info.run�NNN)
r� r� r� r� r� r� r� r� r� r� r� r� r� r� r� r� r� r� � s �r� c @ s4 e Zd ZdZdZejejd�Ze dddd�e dd d
dd�e d
d ddd�e dd ddd�e dd ddd�e dd ddd�e dd ddd�e dd ddd�e dd ddd�e d d d!d"d�e d#d d$d%d�e d&d d$d'd�e d(d)d*g d+�d,d-d.�e d/d d$d0d�e d1d d2d3d�e d4d d2d5d�e d6d d7d8d�e d9dd:d;�e d<d)d=g d>�d?d@d.�e dAd)dBg dC�dDdEd.�e dFd)dGg dH�dIdJd.�e dKdLdMdNdOdP�e dQdRdd�e dSddTd;�gZ
e dUd)g dV�dWdXdYdZ�gZe
�e
� e�� r�e
�e� e
�e� g Z [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ Y \ [ [ \ [ [dcd]d^�Zd_d`� Zdadb� Zd[S )d�cmd_domain_provisionzProvision a domain.�%prog [options]�r� r� z
--interactivez
Ask for namesrP r_ z--domainrJ �DOMAINzNetBIOS domain name to userL z
--domain-guid�GUIDz!set domainguid (otherwise random)z--domain-sid�SIDz set domainsid (otherwise random)z--ntds-guidz'set NTDS object GUID (otherwise random)z--invocationidz#set invocationid (otherwise random)z--host-name�HOSTNAMEzset hostnamez --host-ip� IPADDRESSzset IPv4 ipaddressz
--host-ip6�
IP6ADDRESSzset IPv6 ipaddressrb �SITENAMEz
set site namez--adminpassrK z(choose admin password (otherwise random)z--krbtgtpassz)choose krbtgt password (otherwise random)rc rS rd �re �BIND9_FLATFILErf rg z�The DNS server backend. SAMBA_INTERNAL is the builtin name server (default), BIND9_FLATFILE uses bind9 text database to store zone information, BIND9_DLZ uses samba4 AD to store zone information, NONE skips the DNS setup entirely (not recommended)re rh z --dnspassz&choose dns password (otherwise random)z--root�USERNAMEzchoose 'root' unix usernamez--nobodyzchoose 'nobody' userz--users� GROUPNAMEzchoose 'users' groupz--blankz.do not add users or groups, just the structurerQ z
--server-role�ROLE)�domain controller�dc�
member server�member�
standalonez^The server role (domain controller | dc | member server | member | standalone). Default is dc.r� �--function-levelz
FOR-FUN-LEVEL)�2000�2003�2008rG zyThe domain and forest function level (2000 | 2003 | 2008 | 2008_R2 - always native). Default is (Windows) 2008_R2 Native.rG z
--base-schemazBASE-SCHEMA)rG �2008_R2_oldrH rI z;The base schema files to use. Default is (Windows) 2012_R2.rI z
--next-rid�int�NEXTRIDi� zGThe initial nextRid value (only needed for upgrades). Default is 1000.)rM rN ri rO z--partitions-onlyzEConfigure Samba's partitions, but do not modify them (ie, join a BDC)z
--use-rfc2307z/Use AD to store posix attributes (default = no)�--use-xattrs��yes�no�auto�
[yes|no|auto]��Define if we should use the native fs capabilities or a tdb file for storing attributes likes ntacl when --use-ntvfs is set. auto tries to make an inteligent guess based on the user rights and system capabilitiesr� �rM rW rN rO ri NFc% 7
C s� | j d|d�| _|�� }%|%j}&|d ur|}'n
| �� }'|'d u r d}'t| j�dkr)d}|r�ddlm}( dd l})dOdd �}*z|)� � �
d
d�d �� }+W n tyS d }+Y nw |*d|+�},|,dv rat
d
��z |,�
d
�d }+W n tyu d }+Y nw |*d|+�}|d u r�t
d��|*dd�}|*dd�}|dv r�t
d��|dkr�|*d|'�}|�� dv r�d }'d } |(d�}-| �|-�}.|.r�| j�d|. � n|(d�}/|-|/ks�| j�d� n|-}nq�n|j�d�},|,d u r�t
d
��|d u r�t
d��|r�| �|�}.|.r�t
|.��n| j�d� |dk�rt}0n|dk�rt}0n|dk�rt}0n|d k�rt}0|dk�r&|d u �r&|'}t}1|�r.t}1n|�r3t}1|d u�rDtj�|��sDt�|� d}2|d!k�rNd"}2nn|d#k�r[|d"k�r[d"}2na|d"k�rdt
d$��|d#k�r�|%�d%��s�|�r}t j!tj�"|�d&�}3nt j!tj�"tj�#|%�d'���d&�}3z(zt$j%�&|%|3j'd(d)t(� d*� d"}2W n t)�y� | j�d+� Y nw W |3�*� n|3�*� w |2�r�| j�d,� |d u�r�t+�,|�}t-� }4|#d u �r�t.� }#zpt/| j|4fi d-|&�d.|�d/|1�d|,�d0|�d1|�d2|�d3| �d4|
�d5|�d6|
�d7|�d8|�d9|�d:|�d;|�d<|�d=|�d>|�d?|�d@|�dA|�dB|�dC|0�dD|2�dE|�dF|%�dG|�dH| �dId"�dJ|!�dK|"�dL|#�dM|$��}5W n t0�y\ }6 zt
dN|6��d }6~6ww |5�1| j� d S )PNr: )�name�quiet�none� Tr r c S sN |d urt d| |f dd� n t d| f dd� tj�� tj�� �d�p&|S )Nz %s [%s]: � )�endz%s: �
)�print�sysrp �flush�stdin�readline�rstrip)�promptri r� r� r� �asks s
z%cmd_domain_provision.run.<locals>.ask�.�Realm)Nrs z
No realm set!�DomainzNo domain set!z$Server Role (dc, member, standalone)r� z=DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE)re zNo DNS backend set!z=DNS forwarder IP address (write 'none' to disable forwarding))Nr� zAdministrator password: z%s.
zRetype password: �Sorry, passwords do not match.
�realmz,Administrator password will be set randomly!r� r� r� rG r� Fr� �r--use-xattrs=no requires --use-ntvfs (not supported for production use). Please re-run with --use-xattrs omitted.�
posix:eadb��dir�private dir�O:S-1-5-32G:S-1-5-32�S-1-5-32�nativezZYou are not root or your system does not support xattr, using tdb backend for attributes. z�not using extended attributes to store ACLs and other metadata. If you intend to use this provision in production, rerun the script as root on a system supporting xattrs.r � targetdir�
samdb_fill�domain�
domainguid� domainsid�hostname�hostip�hostip6�sitename�ntdsguid�invocationid� adminpass�
krbtgtpass�machinepass�dns_backend�
dns_forwarder�dnspass�root�nobody�users�
serverrole�dom_for_fun_level�useeadb�next_ridr� � use_ntvfs�use_rfc2307�skip_sysvolacl�base_schema�plaintext_secrets�
backend_store�backend_store_sizezProvision failed�N)2�
get_logger�loggerr� �
configfile�_get_nameserver_ip�len�raw_argvr �socket�getfqdnr| �upper�
IndexErrorr �lower�_adminpass_issue�errfr� �_lp�get�infor- r. r0 r1 r>