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: //usr/lib/python3/dist-packages/samba/__pycache__/getopt.cpython-310.pyc
o

�\e@�@s�dZdZddlZddlmZddlZddlmZmZmZm	Z	ddl
Z
Gdd�dej�ZGdd	�d	ej�Z
d
d�Zdd
�ZGdd�dej�ZGdd�de�Zdd�ZGdd�dej�ZdS)z7Support for parsing Samba-related command-line options.�restructuredText�N)�copy)�Credentials�AUTO_USE_KERBEROS�DONT_USE_KERBEROS�MUST_USE_KERBEROSc@sHeZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dS)�SambaOptionsz+General Samba-related command line options.c	Cs�ddlm}|�ddlm}tj�||d�|jdddtdd	|j	d
�|jdddtd
d|j
d
�|jddtdd|jd
�|jddtdd|jd
�d|_
|�|_d|_dS)Nr)�fault_setup)�LoadParmzSamba Common Optionsz-sz--configfile�callback�FILEzConfiguration file)�action�type�metavar�helprz-dz--debuglevel�
DEBUGLEVEL�debug levelz--option�OPTIONz%set smb.conf option from command linez--realm�REALMzset the realm name)�sambar	�samba.paramr
�optparse�OptionGroup�__init__�
add_option�str�_load_configfile�_set_debuglevel�_set_option�
_set_realm�_configfile�_lp�realm)�self�parserr	r
�r%�./usr/lib/python3/dist-packages/samba/getopt.pyr%s0
�
���
zSambaOptions.__init__cCs|jS)z?Return path to the smb.conf file specified on the command line.�r �r#r%r%r&�get_loadparm_path;szSambaOptions.get_loadparm_pathcC�
||_dS�Nr'�r#�option�opt_str�argr$r%r%r&r?�
zSambaOptions._load_configfilecCs|j�d|�||j_dS)Nr)r!�set�values�
debuglevelr,r%r%r&rBszSambaOptions._set_debuglevelcCs|j�d|�||_dS)Nr")r!r1r"r,r%r%r&rFs
zSambaOptions._set_realmc
Csj|�d�dkrt�d��|�d�}z|j�|d|d�WdSty4}z	t�d||f��d}~ww)N�=���z&--option option takes a 'a=b' argumentr�z$invalid --option option value %r: %s)�findr�OptionValueError�splitr!r1�	Exception)r#r-r.r/r$�a�er%r%r&rJs�

���zSambaOptions._set_optioncCsT|jdur|j�|j�|jSt�d�dur"|j�t�d��|jS|j��|jS)z?Return loadparm object with data specified on the command line.N�
SMB_CONF_PATH)r r!�load�os�getenv�load_defaultr(r%r%r&�get_loadparmUs
�
�zSambaOptions.get_loadparmN)�__name__�
__module__�__qualname__�__doc__rr)rrrrrBr%r%r%r&r"src@s eZdZdZdd�Zdd�ZdS)�VersionOptionsz/Command line option for printing Samba version.cCs*tj�||d�|jddd|jdd�dS)NzVersion Optionsz-Vz	--versionrzDisplay version number)r
rr)rrrr�_display_version�r#r$r%r%r&rbs


�zVersionOptions.__init__cCs ddl}t|j�t�d�dS)Nr)r�print�version�sys�exit)r#r-r.r/r$rr%r%r&rHhs
zVersionOptions._display_versionN)rCrDrErFrrHr%r%r%r&rG`srGcCsB|��dvrtS|��dvrtS|��dvrtSt�d||f��)N)�yes�true�1)�no�false�0)�auto�invalid %s option value: %s)�lowerrrrrr8�r/r.r%r%r&�parse_kerberos_arg_legacyn��rXcCsB|��dkrtS|��dkrtS|��dkrtSt�d||f��)N�required�desired�offrU)rVrrrrr8rWr%r%r&�parse_kerberos_argzrYr]c@s�eZdZdZd!dd�Zd"dd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zd#dd �ZdS)$�CredentialsOptionsz0Command line options for specifying credentials.Nc	CsD||_|dur
d||_nd|_d|_d|_d|_tj�|||j�|jddd|j	t
dd	�|jd
dddt
|jd
�|jddddt
d|jd�|jddddt
d|j
d�|jdddd|jd�|jddddt
d|jd�|jdd dd!|jd�|jd"d#dt
d$|jd�|jd%d&dt
d'|jd�|jd(d)d*dt
d+|jd�t�|_dS),NzCredentials Options (%s)zCredentials OptionsTFz--simple-bind-dn�DNr�DN to use for a simple bind�rr
rrrz
--password�PASSWORD�Password�rr
rrrz-Uz
--username�USERNAME�Username�rr
rrrz-Wz--workgroup�	WORKGROUP�	Workgroupz-Nz	--no-passzDon't ask for a password)r
rr�z--ipaddress�	IPADDRESSzIP address of serverz-Pz--machine-passz#Use stored machine account passwordz--use-kerberos�desired|required|off�Use Kerberos authenticationz--use-krb5-ccache�
KRB5CCNAMEzKerberos Credentials cachez-kz
--kerberos�KERBEROSz%DEPRECATED: Migrate to --use-kerberos)�special_name�section�ask_for_password�	ipaddress�machine_passrrr�_add_option�_set_simple_bind_dnr�
_set_password�_parse_username�_parse_workgroup�_set_no_password�_set_ipaddress�_set_machine_pass�
_set_kerberos�_set_krb5_ccache�_set_kerberos_legacyr�creds)r#r$rpr%r%r&r�sf
�
�
�
�
�
����
�zCredentialsOptions.__init__�passwordcCsddl}zddl}Wnty#d|}tj�|�tj��YdSwd|�|�|�|�f}|�|�}|�	�}	|�
|	�sOd|}tj�|�tj��dSd}
d||f}|�|d	|	�}||krid||
f}
nd
||
f}
|�|d|
d|	�}|�|�dS)
zC Make sure no sensitive data (e.g. password) resides in proctitle. rNz^WARNING: Using %s on command line is insecure. Please install the setproctitle python module.
Fz(.*[ ]+)(%s[= ]%s)([ ]*.*)z;Unable to hide %s in proctitle. This is most likely a bug!
�xxxz%s=%sz\2z%s %sz\1z\3)�re�setproctitle�ModuleNotFoundErrorrL�stderr�write�flush�escape�compile�getproctitle�match�sub)r#r.�secret_data�	data_typer�r��msg�pass_opt_re_str�pass_opt_re�
cur_proctitle�secret_data_replacer�opt_pass_with_eq�
opt_pass_part�replace_str�
new_proctitler%r%r&�_ensure_secure_proctitle�s@�
�

�

�z+CredentialsOptions._ensure_secure_proctitlecOs`|jdur
|j|i|��Sd}|D]}|�d�sq||�dd|j�f7}q|j|i|��dS)Nr%z--z--%s-)rpr�
startswith�replace)r#�args1�kwargs�args2r;r%r%r&ru�s

zCredentialsOptions._add_optioncC�|j�|�d|_dS�NF)r��parse_stringrtr,r%r%r&rx��
z"CredentialsOptions._parse_usernamecC�|j�|�dSr+)r��
set_domainr,r%r%r&ry��z#CredentialsOptions._parse_workgroupcCs*|�||d�|j�|�d|_d|_dS)Nr�F)r�r��set_passwordrrrtr,r%r%r&rw�s
z CredentialsOptions._set_passwordcC�
d|_dSr�)rrr,r%r%r&rz�r0z#CredentialsOptions._set_no_passwordcCr�)NT)rtr,r%r%r&r|r0z$CredentialsOptions._set_machine_passcCr*r+)rsr,r%r%r&r{r0z!CredentialsOptions._set_ipaddresscCstd�|j�t||��dS)Nz0WARNING: The option -k|--kerberos is deprecated!)rJr��set_kerberos_staterXr,r%r%r&rsz'CredentialsOptions._set_kerberos_legacycC�|j�t||��dSr+)r�r�r]r,r%r%r&r}�z CredentialsOptions._set_kerberoscCr�r+)r��set_bind_dnr,r%r%r&rvr�z&CredentialsOptions._set_simple_bind_dncCs|j�t�|j�|�dSr+)r�r�r�set_named_ccacher,r%r%r&r~sz#CredentialsOptions._set_krb5_ccacheFcCsp|j�|�|jr|j�|�n|jr|j��|r5|j��s5z
|j�|�W|jSty4Y|jSw|jS)z�Obtain the credentials set on the command-line.

        :param lp: Loadparm object to use.
        :return: Credentials object
        )r��guessrt�set_machine_accountrr�set_cmdline_callbacks�authentication_requestedr:)r#�lp�fallback_machiner%r%r&�get_credentialss
��z"CredentialsOptions.get_credentialsr+)r�)F)rCrDrErFrr�rurxryrwrzr|r{rr}rvr~r�r%r%r%r&r^�s 

//r^c@sReZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
ddd�ZdS)�CredentialsOptionsDoublez?Command line options for specifying credentials of two servers.cCs�t�||�d|_|jddd|jtdd�|jdddd	t|jd
�|jdddtd
|jd�|jdddtd|jd�|jdddd�|jdddtd|j	d�|jdddtd|j
d�t�|_dS)NTz--simple-bind-dn2�DN2rr`raz--password2�	PASSWORD2rcrdz--username2�	USERNAME2zUsername for second serverrgz--workgroup2�
WORKGROUP2zWorkgroup for second serverz
--no-pass2�
store_truez.Don't ask for a password for the second server)r
rz--use-kerberos2rlrmz--kerberos2�	KERBEROS2zUse Kerberos)
r^r�no_pass2r�_set_simple_bind_dn2r�_set_password2�_parse_username2�_parse_workgroup2�_set_kerberos2�_set_kerberos2_legacyr�creds2rIr%r%r&r0s@
�
������z!CredentialsOptionsDouble.__init__cCr�r+)r�r�r,r%r%r&r�Mr�z)CredentialsOptionsDouble._parse_username2cCr�r+)r�r�r,r%r%r&r�Pr�z*CredentialsOptionsDouble._parse_workgroup2cCr�r�)r�r�r�r,r%r%r&r�Sr�z'CredentialsOptionsDouble._set_password2cCr�r+�r�r�r]r,r%r%r&r�Wr�z.CredentialsOptionsDouble._set_kerberos2_legacycCr�r+r�r,r%r%r&r�Zr�z'CredentialsOptionsDouble._set_kerberos2cCr�r+)r�r�r,r%r%r&r�]r�z-CredentialsOptionsDouble._set_simple_bind_dn2TcCs<|r	|j�|�n
|j��s|j��|jr|j��|jS)z�Obtain the credentials set on the command-line.

        :param lp: Loadparm object to use.
        :param guess: Try guess Credentials from environment
        :return: Credentials object
        )r�r��get_username�
set_anonymousr�r�)r#r�r�r%r%r&�get_credentials2`s


z)CredentialsOptionsDouble.get_credentials2N)T)rCrDrErFrr�r�r�r�r�r�r�r%r%r%r&r�-sr�c

Cs�ddddd�}|�dd�}d}|r|dd���s!|dd�d	kr?||d7}|dd�}|r7|dd���s!|dd�d	ks!zt|�}WntyVd
�|�}t�|��w|���dd�}z|||WSty}}	zd�||�}t�|��d}	~	ww)
Nr6iii@)�B�KB�MB�GB� rjr�.zA{0} option requires a numeric value, with an optional unit suffix�Iz3{0} invalid suffix '{1}', should be B, Kb, Mb or Gb)	r��isdigit�float�
ValueError�formatrr8�upper�KeyError)
r-�opt�value�multipliers�v�digits�mr��suffix�kr%r%r&�check_bytests:�$$��
��
��r�c@s,eZdZejjdZeejj�Zeed<dS)�SambaOption)�bytesr�N)	rCrDrEr�Option�TYPESr�TYPE_CHECKERr�r%r%r%r&r��sr�)rF�
__docformat__rrr?�samba.credentialsrrrrrLrrrGrXr]r^r�r�r�r�r%r%r%r&�<module>s >(G#