HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //lib/python3/dist-packages/samba/netcmd/__pycache__/fsmo.cpython-310.pyc
o

�/a�Q�@s�ddlZddlmZddlZddlmZddlmZmZddl	m
Z
ddlZddlm
Z
mZmZmZddlmZdd�Zd	d
�Zdd�ZGd
d�de
�ZGdd�de
�ZGdd�de
�ZGdd�de�ZdS)�N)�LdbError)�drsuapi�misc)�system_session)�Command�CommandError�SuperCommand�Option)�SamDBc
Cs�z|j|tjdgd�}Wnty)}z|j\}}|tjkr$td|���d}~wwd|dvrAt�||ddd�d��}|Sd}|S)znGets the owner of an FSMO role

    :param roledn: The DN of the FSMO role
    :param role: The FSMO role
    �
fSMORoleOwner��scope�attrsz+The '%s' role is not present in this domainNr�utf8)	�search�ldb�
SCOPE_BASEr�args�ERR_NO_SUCH_OBJECTr�Dn�decode)�samdb�roledn�role�res�e7�num�msg�master_owner�r�3/usr/lib/python3/dist-packages/samba/netcmd/fsmo.py�get_fsmo_roleowner$s 
�

���r!c
Cs�|dkr
|��}d|}n|dkrt�|���}d|}|��}|j|dgtjdgd�}	d|	dvr|z*tt	�
t�||	ddd�d	���
d
���}
tt�||	ddd�d	���}Wn(ty{}z|j\}
}td|	ddd|f��d}~ww|�d
|�dS|dkr�d|
|��f}d|��|��f}n|dkr�d|
|��f}d|��|��f}|��}||k�rl|��}|j|dd�}td|t�||d�}t��}t�||�|_t�|tjd�|d<t�|tjd�|d<z|�|�Wnt�y}z
|j\}
}td||f��d}~wwz
tj� |||�}Wntjj!�y0}ztd|��d}~wwz|d}|d}t"j#}|dd�}tj�$|||
||�Wntjj!�yb}ztd|��d}~ww|�d|�dS|�d|�dS)zTransfer dns FSMO role. �	domaindns�$CN=Infrastructure,DC=DomainDnsZones,�	forestdns�$CN=Infrastructure,DC=ForestDnsZones,rzextended_dn:1:1)rr
�controlsrr�GUIDz+No GUID found in naming master DN %s : %s 
Nz0* The '%s' role does not have an FSMO roleowner
Fz%s._msdcs.%sT��fallback_machinez	ldap://%s��url�session_info�credentials�lp�fSMORoleOwner_Del�fSMORoleOwner_AddzFailed to add role '%s': %szDrsuapi Connect failed��zReplication failed�&FSMO transfer of '%s' role successful
�'This DC already has the '%s' FSMO role
)%�	domain_dn�samba�dn_from_dns_name�forest_dns_name�
host_dns_namerrr�strrr'rr�get_extended_componentrrr�write�domain_dns_name�
get_ntds_GUID�get_dsServiceName�get_loadparm�get_credentialsr
r�Message�dn�MessageElement�FLAG_MOD_DELETE�FLAG_MOD_ADD�modify�	drs_utils�drsuapi_connect�drsExceptionr�DRSUAPI_DRS_WRIT_REP�sendDsReplicaSync)�outf�	sambaopts�credoptsrrr5�role_object�	forest_dn�new_host_dns_namer�master_guidr�e3rr�master_dns_name�new_dns_name�	new_ownerr.�creds�m�e5�
connection�e�drsuapi_connection�drsuapi_handle�req_options�NC�estrrrr �transfer_dns_role;s�
���&
�������
���
���
���
��rbc
Cs�|��}d|}d|��}d|}t|���}t�||���}t��}	t�|d�|	_|dkr@t	|||�}
t�
dtjd�|	d<nr|dkrot	|||�}
|j|tj
d	gd
�}t|�dks\J�|dd	d}t�
|tjd
�|	d
<nC|dkr�t	|||�}
t�
dtjd�|	d<n.|dkr�t	|||�}
t�
dtjd�|	d<n|dkr�t	|||�}
t�
dtjd�|	d<ntd��|
dur�|�d|�dS|
|kr�z|�|	�Wnty�}
z
|
j\}}td||f��d}
~
ww|�d|�dS|�d|�dS)zTransfer standard FSMO role. �CN=RID Manager$,CN=System,�CN=Partitions,%s�CN=Infrastructure,��rid�1�becomeRidMaster�pdc�	objectSidrr1r�	becomePdc�naming�becomeDomainMaster�infrastructure�becomeInfrastructureMaster�schema�becomeSchemaMaster�Invalid FSMO role.NzECannot transfer, no DC assigned to the %s role.  Try 'seize' instead
Fz Transfer of '%s' role failed: %sr3Tr4)r5�get_config_basednr:�get_schema_basednrrr?rBrCr!rD�FLAG_MOD_REPLACErr�lenrr<rGrr)rMrrr5�rid_dn�	naming_dn�infrastructure_dn�	schema_dnrWrYrr�sid�e6rrrrr �
transfer_role�sz
��
�
�
�
�
���r~c@s|eZdZdZdZejejejd�Z	e
dddeddd	�e
d
ddd
�e
ddgd�dd�gZgZ
dd�Zdd�Z		ddd�ZdS)�cmd_fsmo_seizezSeize the role.�%prog [options]�rNrO�versionopts�-H�--URL�%LDB URL for database or target server�URL�H��help�type�metavar�destz--forcez5Force seizing of role without attempting to transfer.�
store_true)r��action�--role�choice�rgrjrorqrmr"r$�all�IThe FSMO role to seize or transfer.

rid=RidAllocationMasterRole

schema=SchemaMasterRole

pdc=PdcEmulationMasterRole

naming=DomainNamingMasterRole

infrastructure=InfrastructureMasterRole

domaindns=DomainDnsZonesMasterRole

forestdns=ForestDnsZonesMasterRole

all=all of the above

You must provide an Admin user and password.�r��choicesr�c

Cs�|��}|��}d||_d|��|_t|���|_d||_t	�
�}|dkr1t	�||j�|_n7|dkr=t	�||�|_n+|dkrJt	�||j�|_n|dkrWt	�||j�|_n|dkrdt	�||j�|_nt
d	��d
}t||j|�}|dur�||kr�|dur�|�d�z	t|j||�Wnd
}|�d�Yn|�d�d
Sn|j�d|�d
Sd
}|dus�|�rC|�d|�t	�|t	jd�|d<|��z|�|�|dkr�|��Wn]t�y4}	zP|	j\}
}|dk�r|
t	jk�r|��|��z|�|�Wn*t�y}z|j\}
}|��t
d||f��d}~ww|��t
d||f��WYd}	~	nd}	~	ww|��|j�d|�d
SdS)zSeize standard fsmo role. rerdrcrgrjrmrorqrsFN�Attempting transfer...T�!Transfer unsuccessful, seizing...z%Transfer successful, not seizing roler4�Seizing %s FSMO role...r�Failed to seize '%s' role: %s�#FSMO seize of '%s' role successful
)r?r5rzrtryr:rur{rxrrBrrCrr!�messager~rMr<rDrv�transaction_startrG�create_own_rid_setrr�ERR_ENTRY_ALREADY_EXISTS�transaction_cancel�transaction_commit)
�selfrr�force�serviceNamer5rY�seizer�e1rrr\rrr �
seize_role�s�



���
�

��������zcmd_fsmo_seize.seize_rolec
Cs�|��}|��}t�|���}	d||_d|	|_t��}
|dkr*t�	||j�|
_
n|dkr7t�	||j�|
_
ntd��d}t||
j
|�}|dur||kru|durt|�
d�zt|j||||�Wnd	}|�
d
�Yn|�
d�d	Sn|j�d|�dSd	}|dus�|r�|�
d
|�t�|tjd�|
d<z|�|
�Wnty�}
z
|
j\}}td||f��d}
~
ww|j�d|�d	SdS)zSeize DNS FSMO role. r#r%r"r$rsFNr�Tr�z&Transfer successful, not seizing role
r4r�rr�r�)r?r5r6r7r8�domaindns_dn�forestdns_dnrrBrrCrr!r�rbrMr<rDrvrGrr)r�rrrOrNr�r�r�r5rQrYr�r�e2rrrrr �seize_dns_roleNsd


�
�
��
����zcmd_fsmo_seize.seize_dns_roleNc
Cs�|��}|j|dd�}t|t�||d�}	|dkrQ|�d|	|�|�d|	|�|�d|	|�|�d|	|�|�d	|	|�|�d
|	||||�|�d|	||||�dS|d
ksY|dkre|�||	||||�dS|�||	|�dS�NTr(r*r�rgrjrmrorqr"r$)r@rAr
rr�r��
r�r�r�rrOrNr�r.rXrrrr �run�s,����zcmd_fsmo_seize.run�NNNNNN)�__name__�
__module__�__qualname__�__doc__�synopsis�options�SambaOptions�CredentialsOptions�VersionOptions�takes_optiongroupsr	r:�
takes_options�
takes_argsr�r�r�rrrr r�s0�����Y9�rc@sJeZdZdZdZejejejd�Z	e
dddeddd	�gZgZ
d
dd�Zd
S)�
cmd_fsmo_showzShow the roles.r�r�r�r�r�r�r�r�NcCs<|��}|j|dd�}t|t�||d�}|��}t�|���}	d|}
d|��}|�	�}d|}
d|}d|	}|d	d
f|
ddf|
d
df|ddf|ddf|ddf|ddfg}|D]B}|\}}}zt
|||�}|durw|�d|t|�f�n|�d|�WqYt
y�}z|�d||jf�WYd}~qYd}~wwdS)NTr(r*rerdrcr#r%rq�SchemaMasterRolero�InfrastructureMasterRolerg�RidAllocationMasterRolerj�PdcEmulationMasterRolerm�DomainNamingMasterRoler"�DomainDnsZonesMasterRoler$�ForestDnsZonesMasterRolez%s owner: %sz%s has no current ownerz%s: * %s)r@rAr
rr5r6r7r8rtrur!r�r:r)r�r�rOrNr�r.rXrr5rQrzryr{rxr�r��masters�masterrC�
short_name�	long_namer\rrr r��sD��	
� ���zcmd_fsmo_show.run)NNNN�r�r�r�r�r�r�r�r�r�r�r	r:r�r�r�rrrr r��s���r�c@s`eZdZdZdZejejejd�Z	e
dddeddd	�e
d
dgd�d
d�gZgZ
		ddd�ZdS)�cmd_fsmo_transferzTransfer the role.r�r�r�r�r�r�r�r�r�r�r�r�r�Nc
Cs�|��}|j|dd�}t|t�||d�}	|dkrOt|jd|	�t|jd|	�t|jd|	�t|jd|	�t|jd	|	�t|j||d
|	�t|j||d|	�dS|d
ksW|dkrbt|j||||	�dSt|j||	�dSr�)r@rAr
rr~rMrbr�rrr r��s(�
��zcmd_fsmo_transfer.runr�r�rrrr r��s$�����r�c@s2eZdZdZiZe�ed<e�ed<e�ed<dS)�cmd_fsmoz:Flexible Single Master Operations (FSMO) roles management.r��show�transferN)r�r�r�r��subcommandsrr�r�rrrr r�s

r�)r6�samba.getopt�getoptr�rr�samba.dcerpcrr�
samba.authr�samba.drs_utils�samba.netcmdrrrr	�samba.samdbr
r!rbr~rr�r�r�rrrr �<module>s"Z?O78