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/samba3/__pycache__/__init__.cpython-310.pyc
o

�/a�/�@sdZdZdZdZddlZddlZddlZddlmZddlm	Z
ddlmZd	d
�Z
dd�ZGd
d�de�ZGdd�de�ZdZdZdZdZdZGdd�de�ZGdd�de�ZdZdZGdd�de�ZGdd�de�Zdd�ZGd d!�d!e�ZGd"d#�d#e�ZdS)$z'Support for reading Samba 3 data files.�restructuredTextsSAMBA_REGVAL��N)�passdb)�param)�	get_bytescC�Bz||}Wn
tyYdSwt|�dksJ�t�d|�dS)N��<Lr��KeyError�len�struct�unpack��db�key�data�r�7/usr/lib/python3/dist-packages/samba/samba3/__init__.py�fetch_uint32!��rcCr)Nrz<lrr
rrrr�fetch_int32*rrc@�(eZdZdZdd�Zdd�Zdd�ZdS)	�
DbDatabasez#Simple Samba 3 TDB database reader.cCs"tj|dtjd�|_|��dS)z^Open a file.

        :param file: Path of the file to open, appending .tdb or .ntdb.
        z.tdb)�flagsN)�tdb�Tdb�os�O_RDONLYr�_check_version)�self�filerrr�__init__5szDbDatabase.__init__cC�dS�Nr�r rrrr=�zDbDatabase._check_versioncCs|j��dS)z,Close resources associated with this object.N)r�closer%rrrr'@�zDbDatabase.closeN)�__name__�
__module__�__qualname__�__doc__r"rr'rrrrr3s
rc@s0eZdZdZdd�Zdd�Zdd�Zdd	�Zd
S)�Registrya3Simple read-only support for reading the Samba3 registry.

    :note: This object uses the same syntax for registry key paths as
        Samba 3. This particular format uses forward slashes for key path
        separators and abbreviations for the predefined key names.
        e.g.: HKLM/Software/Bar.
    cCst|���S)zReturn the number of keys.)r�keysr%rrr�__len__M�zRegistry.__len__cCsdd�|jD�S)zReturn list with all the keys.cSs g|]}|�t�s|�d��qS)�)�
startswith�REGISTRY_VALUE_PREFIX�rstrip)�.0�krrr�
<listcomp>Ss z!Registry.keys.<locals>.<listcomp>)rr%rrrr.Qsz
Registry.keyscCsp|j�|d�}|durgSt�d|dd��\}|dd��d�}|ddks*J�|��t|�|ks6J�|S)zxRetrieve the subkeys for the specified key.

        :param key: Key path.
        :return: list with key names
        r1Nr	rr����)r�getr
r�split�popr)r rr�numr.rrr�subkeysUszRegistry.subkeysc	Cs�|j�td|d�}|duriSi}t�d|dd��\}|dd�}t|�D]<}|�dd�\}}t�d|dd��\}|dd�}t�d|dd��\}|dd�}||d|�f||<||d�}q)|S)z�Return a dictionary with the values set for a specific key.

        :param key: Key to retrieve values for.
        :return: Dictionary with value names as key, tuple with type and
            data as value.�/r1Nr	rrr)rr:r3r
r�ranger;)	r rr�retr=�i�name�type�	value_lenrrr�valueseszRegistry.valuesN)r)r*r+r,r/r.r>rFrrrrr-Esr-s
GROUP HWMs	USER HWMsGID sUID �c@sXeZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�ZdS)�
IdmapDatabasezSamba 3 ID map database reader.cCst|jd�tks
J�dS)NsIDMAP_VERSION)rr�IDMAP_VERSION_V2r%rrrr��zIdmapDatabase._check_versionccsJ�|jD]}|�t�r|�d��d�V|�t�r"|�d��d�VqdS)z,Retrieve a list of all ids in this database.r1� N)rr2�IDMAP_USER_PREFIXr4r;�IDMAP_GROUP_PREFIX�r r6rrr�ids�s�


��zIdmapDatabase.idscc�8�|jD]}|�t�rt|tt�d��d��VqdS)z-Retrieve a list of all uids in this database.Nr1)rr2rL�intrr4rNrrr�uids���

��zIdmapDatabase.uidsccrP)z-Retrieve a list of all gids in this database.Nr1)rr2rMrQrr4rNrrr�gids�rSzIdmapDatabase.gidscCs2|j�td|t|�f��}|dur|S|�d�S)z�Retrive SID associated with a particular id and type.

        :param xid: UID or GID to retrieve SID for.
        :param id_type: Type of id specified - 'UID' or 'GID'
        z%s %sN�)rr:r�strr4)r �xid�id_typerrrr�get_sid��
zIdmapDatabase.get_sidcCs2|j�tt|���d�}|dur|S|�d�S)z�Retrieve the SID associated with a particular uid.

        :param uid: UID to retrieve SID for.
        :return: A SID or None if no mapping was found.
        r1N)rr:rLrV�encoder4)r �uidrrrr�get_user_sid�rZzIdmapDatabase.get_user_sidcCs2|j�tt|���d�}|dur|S|�d�S)Nr1)rr:rMrVr[r4)r �gidrrrr�
get_group_sid�s
zIdmapDatabase.get_group_sidcC�t|jt�S)z Obtain the user high-water mark.)rr�IDMAP_HWM_USERr%rrr�get_user_hwm�r0zIdmapDatabase.get_user_hwmcCr`)z!Obtain the group high-water mark.)rr�IDMAP_HWM_GROUPr%rrr�
get_group_hwm�r0zIdmapDatabase.get_group_hwmN)
r)r*r+r,rrOrRrTrYr]r_rbrdrrrrrH�srHc@s�eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"S)#�SecretsDatabasez Samba 3 Secrets database reader.cC�|j�d�S)NsSECRETS/AUTH_PASSWORD�rr:r%rrr�get_auth_password��z!SecretsDatabase.get_auth_passwordcCrf)NsSECRETS/AUTH_DOMAINrgr%rrr�get_auth_domain�rizSecretsDatabase.get_auth_domaincCrf)NsSECRETS/AUTH_USERrgr%rrr�
get_auth_user�rizSecretsDatabase.get_auth_usercCs|j�d|�S)NsSECRETS/DOMGUID/%srg�r �hostrrr�get_domain_guid��zSecretsDatabase.get_domain_guidcc�4�|jD]}|�d�r|td�d��d�VqdS)NzSECRETS/LDAP_BIND_PW/rU�rr2rr4rNrrr�ldap_dns���

��zSecretsDatabase.ldap_dnsccs4�|jD]}|�d�r|td�d��d�VqdS)zvIterate over domains in this database.

        :return: Iterator over the names of domains in this database.
        zSECRETS/SID/NrUrqrNrrr�domains�s�

��zSecretsDatabase.domainscC�|j�td|��S)NzSECRETS/LDAP_BIND_PW/%s�rr:rrlrrr�get_ldap_bind_pw��z SecretsDatabase.get_ldap_bind_pwcCru)NzSECRETS/AFS_KEYFILE/%srvrlrrr�get_afs_keyfile�rxzSecretsDatabase.get_afs_keyfilecCst|jtd|��S)Nz#SECRETS/MACHINE_SEC_CHANNEL_TYPE/%s)rrrrlrrr�get_machine_sec_channel_type�rxz,SecretsDatabase.get_machine_sec_channel_typecCst|jd|�S)Nz#SECRETS/MACHINE_LAST_CHANGE_TIME/%s)rrrlrrr�get_machine_last_change_time�roz,SecretsDatabase.get_machine_last_change_timecCru)NzSECRETS/MACHINE_PASSWORD/%srvrlrrr�get_machine_password�rxz$SecretsDatabase.get_machine_passwordcCru)NzSECRETS/$MACHINE.ACC/%srvrlrrr�get_machine_acc�rxzSecretsDatabase.get_machine_acccCru)NzSECRETS/$DOMTRUST.ACC/%srvrlrrr�get_domtrust_acc�rxz SecretsDatabase.get_domtrust_accccrp)NzSECRETS/$DOMTRUST.ACC/rUrqrNrrr�trusted_domains�rszSecretsDatabase.trusted_domainscCrf)NsINFO/random_seedrgr%rrr�get_random_seedrizSecretsDatabase.get_random_seedcCs|j�td|����S)NzSECRETS/SID/%s)rr:r�upperrlrrrrYrJzSecretsDatabase.get_sidN)r)r*r+r,rhrjrkrnrrrtrwryrzr{r|r}r~rr�rYrrrrre�s$	rec@s eZdZdZdd�Zdd�ZdS)�ShareInfoDatabasez#Samba 3 Share Info database reader.cCst|jd�ttfvsJ�dS)Nz
INFO/version)rr�SHARE_DATABASE_VERSION_V1�SHARE_DATABASE_VERSION_V2r%rrrrsz ShareInfoDatabase._check_versioncCs|j�td|��}|S)zfObtain the security descriptor on a particular share.

        :param name: Name of the share
        z
SECDESC/%srv)r rC�secdescrrr�get_secdescszShareInfoDatabase.get_secdescN)r)r*r+r,rr�rrrrr�sr�c@r)	�ShareszContainer for share objects.cCs||_||_dSr$)�lp�	shareinfo)r r�r�rrrr"s
zShares.__init__cCst|j�dS)zNumber of shares.r)rr�r%rrrr/"r(zShares.__len__cC�
|j��S)zIterate over the share names.)r��__iter__r%rrrr�&�
zShares.__iter__N)r)r*r+r,r"r/r�rrrrr�s
r�cCsjt�}d}d}|D] }|dkr|}q	|dvr%|s%|dkr"|�|�d}q	||7}q	|dkr3|�|�|S)z�Very simple shell-like line splitting.

    :param text: Text to split.
    :return: List with parts of the line as strings.
    F��")�	�
� )�list�append)�textrA�inquotes�current�crrr�
shellsplit+s


r�c@s@eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dS)�WinsDatabasezSamba 3 WINS database reader.c
Cs�i|_t|d�}|���d�dksJ�|��D]S}|ddkr qt|�d��}|d}t|d�}d}g}d||vrL|�||�|d7}d||vs;t||dd	�d
�}	||jvsbJd|��|||	f|j|<q|��dS)N�rr�zVERSION 1 0r�#rrG�.r8�zName %s exists twice)	�entries�open�readliner4�	readlinesr�rQr�r')
r r!�f�lr�rC�ttlrB�ips�nb_flagsrrrr"Ds&
�zWinsDatabase.__init__cCs
|j|Sr$)r�)r rCrrr�__getitem__X�
zWinsDatabase.__getitem__cC�
t|j�Sr$)rr�r%rrrr/[r�zWinsDatabase.__len__cCr�r$)�iterr�r%rrrr�^r�zWinsDatabase.__iter__cCr�)z)Return the entries in this WINS database.)r��itemsr%rrrr�ar�zWinsDatabase.itemscCr#r$rr%rrrr'er&zWinsDatabase.closeN)
r)r*r+r,r"r�r/r�r�r'rrrrr�Bsr�c@sjeZdZdZddd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�ZdS)�Samba3z,Samba 3 configuration and state data reader.NcCs.||_|r
||_dSt��|_|j�|�dS)z�Open the configuration and data for a Samba 3 installation.

        :param smbconfpath: Path to the smb.conf file.
        :param s3_lp_ctx: Samba3 Loadparm context
        N)�smbconfpathr��s3param�get_context�load)r r��	s3_lp_ctxrrrr"ls


zSamba3.__init__cC�2|ddks|ddkr|Stj�|j�d�|�S)Nr�/r�zstate directory�r�path�joinr�r:�r r�rrr�
statedir_pathy�zSamba3.statedir_pathcCr�)Nrr�r�zprivate dirr�r�rrr�privatedir_path~r�zSamba3.privatedir_pathcCs|jSr$)r�r%rrr�get_conf�szSamba3.get_confcCst�|j�d��S)Nzpassdb backend)r�PDBr�r:r%rrr�
get_sam_db��zSamba3.get_sam_dbcC�t|�d��S)N�registry)r-r�r%rrr�get_registry��zSamba3.get_registrycCr�)N�secrets)rer�r%rrr�get_secrets_db�r�zSamba3.get_secrets_dbcCr�)N�
share_info)r�r�r%rrr�get_shareinfo_db�r�zSamba3.get_shareinfo_dbcCr�)N�winbindd_idmap)rHr�r%rrr�get_idmap_db�r�zSamba3.get_idmap_dbcCr�)Nzwins.dat)r�r�r%rrr�get_wins_db�r�zSamba3.get_wins_dbcCst|��|���Sr$)r�r�r�r%rrr�
get_shares�r�zSamba3.get_sharesr$)r)r*r+r,r"r�r�r�r�r�r�r�r�r�r�rrrrr�is

r�) r,�
__docformat__r3�REGISTRY_DB_VERSIONrr
r�samba.samba3rrr��samba.commonrrr�objectrr-rcrarMrLrIrHrer�r�r�r�r�r�r�rrrr�<module>s8		<?>'