HEX
Server: Apache
System: Linux server2.voipitup.com.au 4.18.0-553.109.1.lve.el8.x86_64 #1 SMP Thu Mar 5 20:23:46 UTC 2026 x86_64
User: posscale (1027)
PHP: 8.2.30
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //opt/saltstack/salt/lib/python3.10/site-packages/salt/modules/__pycache__/nfs3.cpython-310.pyc
o

�N�g��@shdZddlZddlZddlZddlZe�e�Zdd�Z	ddd�Z
ddd	�Zdd
d�Zdd
�Z
dd�ZdS)z$
Module for managing NFS version 3.
�NcCstjj�d�s	dSdS)z)
    Only work on POSIX-like systems
    Z	showmount)FzRThe nfs3 execution module failed to load: the showmount binary is not in the path.T)�salt�utils�path�which�rr�E/opt/saltstack/salt/lib/python3.10/site-packages/salt/modules/nfs3.py�__virtual__sr�/etc/exportscCs,i}tjj�|d���}tjj�|�����D]m}|sq|�d�r!q|�	�}|d|vr1g||d<g}|dd�D]<}|�d�rF|�
|�q9|�	d�}|d�dd	�|d<|d}t|t
�sbtd
��|d�	d�}	||d�
||	d��q9|D]
}
||d||
<qxqWd�|S1s�wY|S)
zp
    List configured exports

    CLI Example:

    .. code-block:: bash

        salt '*' nfs.list_exports
    �r�#r�N�/�(�)��hosts argument must be a string�,��hosts�options)rr�files�fopen�stringutilsZ
to_unicode�read�
splitlines�
startswith�split�append�replace�
isinstance�str�	TypeError)�exports�retZefl�line�compsZ	newshares�permZ	permcompsrr�sharerrr�list_exportss<





��
��r(cCst|�}||=t||�|S)zv
    Remove an export

    CLI Example:

    .. code-block:: bash

        salt '*' nfs.del_export /media/storage
    )r(�_write_exports)r"r�edictrrr�
del_exportDs

r+cCs\|durg}t|t�std��t|�}||vrg||<||d�}||�|�t||�|S)z�
    Add an export

    CLI Example:

    .. code-block:: bash

        salt '*' nfs3.add_export path='/srv/test' hosts='127.0.0.1' options=['rw']
    Nrr)rr r!r(rr))r"rrrr*�newrrr�
add_exportTs



r-c	Cs�tjj�|d��:}|D].}tjj�|�}||D]}|d}d�|d�}|d|�d|�d�7}q|�|�d��qWd	�d	S1sEwYd	S)
aS
    Write an exports file to disk

    If multiple shares were initially configured per line, like:

        /media/storage /media/data *(ro,sync,no_subtree_check)

    ...then they will be saved to disk with only one share per line:

        /media/storage *(ro,sync,no_subtree_check)
        /media/data *(ro,sync,no_subtree_check)
    �wrrr� rr�
N)rrrrrZto_str�join�write)r"r*ZefhZexportr$Zpermsrrrrrr)ms
�"�r)cCs@i}d}td|�}|d|d<|d|d<|ddk|d<|S)z�
    Trigger a reload of the exports file to apply changes

    CLI Example:

    .. code-block:: bash

        salt '*' nfs3.reload_exports
    zexportfs -rzcmd.run_all�stdout�stderrr�result)Z__salt__)r#Zcommand�outputrrr�reload_exports�s
r7)r	)r	N)r	NNN)�__doc__�loggingZsalt.utils.filesrZsalt.utils.pathZsalt.utils.stringutils�	getLogger�__name__�logrr(r+r-r)r7rrrr�<module>s


)