????

Your IP : 18.219.32.237


Current Path : /lib/python3.9/site-packages/nftables/__pycache__/
Upload File :
Current File : //lib/python3.9/site-packages/nftables/__pycache__/nftables.cpython-39.opt-1.pyc

a

/��fAN�@sDddlZddlTddlZddlZdZGdd�d�ZGdd�d�ZdS)�N)�*z0.1c@s eZdZdZdd�Zdd�ZdS)�SchemaValidatorz+Libnftables JSON validator using jsonschemacCs^tj�tj�t�d�}t|d��}t�|�|_Wd�n1sB0Yddl	}||_	dS)Nzschema.json�rr)
�os�path�join�dirname�__file__�open�json�load�schema�
jsonschema)�selfZschema_pathZschema_filer�r�5/usr/lib/python3.9/site-packages/nftables/nftables.py�__init__s
*zSchemaValidator.__init__cCs|jj||jd�dS)N)�instancer
)r�validater
)rrrrrr"szSchemaValidator.validateN)�__name__�
__module__�__qualname__�__doc__rrrrrrrsrc
@s�eZdZdZddd�Zddddddd	d
�Zddddddd	ddd
ddd�ZdZdkdd�Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
dd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Zd5d6�Zd7d8�Zd9d:�Zd;d<�Zd=d>�Zd?d@�ZdAdB�ZdCdD�Z dEdF�Z!dGdH�Z"dIdJ�Z#dKdL�Z$dMdN�Z%dOdP�Z&dQdR�Z'dSdT�Z(dUdV�Z)dWdX�Z*dYdZ�Z+d[d\�Z,d]d^�Z-d_d`�Z.dadb�Z/dcdd�Z0dedf�Z1dgdh�Z2didj�Z3dS)l�Nftablesz*A class representing libnftables interface��)zno-dnsr���� �@)�scanner�parser�evalZnetlinkZmnlz	proto-ctxZsegtree��iii)�
reversedns�service�	stateless�handler�echo�guid�
numeric_proto�numeric_prio�numeric_symbol�numeric_time�terseN�libnftables.so.1cCs d|_t�|�}|j|_t|j_tg|j_|j|_t	|j_tg|j_|j
|_
t	|j
_tt	g|j
_|j|_t	|j_tg|j_|j|_tt	g|j_|j
|_
t|j
_tg|j
_|j|_ttg|j_|j|_t|j_tg|j_|j|_t|j_tg|j_|j|_t|j_tg|j_|j|_t|j_tg|j_|j|_t|j_ttg|j_|j|_t|j_ttg|j_|j|_t|j_ttg|j_|j|_tg|j_|j|_t|j_tg|j_|j|_ttg|j_|j|_t|j_ttg|j_|j|_tg|j_|j|_tg|j_|�d�|_|�|j�|�|j�dS)alInstantiate a new Nftables class object.

        Accepts a shared object file to open, by default standard search path
        is searched for a file named 'libnftables.so'.

        After loading the library using ctypes module, a new nftables context
        is requested from the library and buffering of output and error streams
        is turned on.
        Nr)�_Nftables__ctxZcdllZLoadLibraryZnft_ctx_newZc_void_pZrestypeZc_int�argtypes�nft_ctx_input_get_flagsZc_uint�nft_ctx_input_set_flags�nft_ctx_output_get_flags�nft_ctx_output_set_flags�nft_ctx_output_get_debug�nft_ctx_output_set_debugZnft_ctx_buffer_output�nft_ctx_get_output_bufferZc_char_pZnft_ctx_buffer_error�nft_ctx_get_error_buffer�nft_run_cmd_from_buffer�nft_run_cmd_from_filename�nft_ctx_add_include_path�nft_ctx_clear_include_paths�nft_ctx_get_dry_runZc_bool�nft_ctx_set_dry_run�nft_ctx_add_var�nft_ctx_clear_vars�nft_ctx_free)rZsofile�librrrrHsv













zNftables.__init__cCs |jdur|�|j�d|_dS�N)r2rD�rrrr�__del__�s
zNftables.__del__cCsDg}|��D]$\}}||@r|�|�||M}q|r@|�|�|SrF)�items�append)r�
flags_dict�val�names�n�vrrr�_flags_from_numeric�s

zNftables._flags_from_numericcCs�t|ttf�r|f}d}|D]^}t|t�rF|�|�}|durrtd��n,t|t�rj|dks`|dkrrtd��ntd��||O}q|S)NrzInvalid argumentl��zNot a valid flag)�
isinstance�str�int�get�
ValueError�	TypeError)rrK�valuesrLrOrrr�_flags_to_numeric�s





zNftables._flags_to_numericcCs|�|j�}|�|j|�S)zsGet currently active input flags.

        Returns a set of flag names. See set_input_flags() for details.
        )r4r2rP�input_flags�rrLrrr�get_input_flags�szNftables.get_input_flagscCs*|�|j|�}|�|j|�}|�|j|�S)aSet input flags.

        Resets all input flags to values. Accepts either a single flag or a list
        of flags. Each flag might be given either as string or integer value as
        shown in the following table:

        Name      | Value (hex)
        -----------------------
        "no-dns"  | 0x1
        "json"    | 0x2

        "no-dns" disables blocking address lookup.
        "json" enables JSON mode for input.

        Returns a set of previously active input flags, as returned by
        get_input_flags() method.
        )rXrYr5r2rP�rrWrL�oldrrr�set_input_flags�szNftables.set_input_flagscCs|j|}|�|j�|@dkS�Nr)�output_flagsr6r2)r�name�flagrrrZ__get_output_flag�s
zNftables.__get_output_flagcCsH|j|}|�|j�}|r$||B}n
||@}|�|j|�||@dkSr_)r`r6r2r7)rrarLrb�flagsZ	new_flagsrrrZ__set_output_flag�s


zNftables.__set_output_flagcCs
|�d�S)z�Get the current state of reverse DNS output.

        Returns a boolean indicating whether reverse DNS lookups are performed
        for IP addresses in output.
        r&��_Nftables__get_output_flagrGrrr�get_reversedns_output�szNftables.get_reversedns_outputcCs|�d|�S)z�Enable or disable reverse DNS output.

        Accepts a boolean turning reverse DNS lookups in output on or off.

        Returns the previous value.
        r&��_Nftables__set_output_flagrZrrr�set_reversedns_output�szNftables.set_reversedns_outputcCs
|�d�S)z�Get the current state of service name output.

        Returns a boolean indicating whether service names are used for port
        numbers in output or not.
        r'rdrGrrr�get_service_outputszNftables.get_service_outputcCs|�d|�S)z�Enable or disable service name output.

        Accepts a boolean turning service names for port numbers in output on
        or off.

        Returns the previous value.
        r'rgrZrrr�set_service_outputszNftables.set_service_outputcCs
|�d�S)z�Get the current state of stateless output.

        Returns a boolean indicating whether stateless output is active or not.
        r(rdrGrrr�get_stateless_outputszNftables.get_stateless_outputcCs|�d|�S)z�Enable or disable stateless output.

        Accepts a boolean turning stateless output either on or off.

        Returns the previous value.
        r(rgrZrrr�set_stateless_outputszNftables.set_stateless_outputcCs
|�d�S)z~Get the current state of handle output.

        Returns a boolean indicating whether handle output is active or not.
        r)rdrGrrr�get_handle_output(szNftables.get_handle_outputcCs|�d|�S)z�Enable or disable handle output.

        Accepts a boolean turning handle output on or off.

        Returns the previous value.
        r)rgrZrrr�set_handle_output/szNftables.set_handle_outputcCs
|�d�S)zzGet the current state of JSON output.

        Returns a boolean indicating whether JSON output is active or not.
        rrdrGrrr�get_json_output8szNftables.get_json_outputcCs|�d|�S)z�Enable or disable JSON output.

        Accepts a boolean turning JSON output either on or off.

        Returns the previous value.
        rrgrZrrr�set_json_output?szNftables.set_json_outputcCs
|�d�S)zzGet the current state of echo output.

        Returns a boolean indicating whether echo output is active or not.
        r*rdrGrrr�get_echo_outputHszNftables.get_echo_outputcCs|�d|�S)z�Enable or disable echo output.

        Accepts a boolean turning echo output on or off.

        Returns the previous value.
        r*rgrZrrr�set_echo_outputOszNftables.set_echo_outputcCs
|�d�S)z�Get the current state of GID/UID output.

        Returns a boolean indicating whether names for group/user IDs are used
        in output or not.
        r+rdrGrrr�get_guid_outputXszNftables.get_guid_outputcCs|�d|�S)z�Enable or disable GID/UID output.

        Accepts a boolean turning names for group/user IDs on or off.

        Returns the previous value.
        r+rgrZrrr�set_guid_output`szNftables.set_guid_outputcCs
|�d�S)ztGet current status of numeric protocol output flag.

        Returns a boolean value indicating the status.
        r,rdrGrrr�get_numeric_proto_outputisz!Nftables.get_numeric_proto_outputcCs|�d|�S)z�Set numeric protocol output flag.

        Accepts a boolean turning numeric protocol output either on or off.

        Returns the previous value.
        r,rgrZrrr�set_numeric_proto_outputpsz!Nftables.set_numeric_proto_outputcCs
|�d�S)zzGet current status of numeric chain priority output flag.

        Returns a boolean value indicating the status.
        r-rdrGrrr�get_numeric_prio_outputysz Nftables.get_numeric_prio_outputcCs|�d|�S)z�Set numeric chain priority output flag.

        Accepts a boolean turning numeric chain priority output either on or
        off.

        Returns the previous value.
        r-rgrZrrr�set_numeric_prio_output�sz Nftables.set_numeric_prio_outputcCs
|�d�S)zsGet current status of numeric symbols output flag.

        Returns a boolean value indicating the status.
        r.rdrGrrr�get_numeric_symbol_output�sz"Nftables.get_numeric_symbol_outputcCs|�d|�S)z�Set numeric symbols output flag.

        Accepts a boolean turning numeric representation of symbolic constants
        in output either on or off.

        Returns the previous value.
        r.rgrZrrr�set_numeric_symbol_output�sz"Nftables.set_numeric_symbol_outputcCs
|�d�S)zqGet current status of numeric times output flag.

        Returns a boolean value indicating the status.
        r/rdrGrrr�get_numeric_time_output�sz Nftables.get_numeric_time_outputcCs|�d|�S)z�Set numeric times output flag.

        Accepts a boolean turning numeric representation of time values
        in output either on or off.

        Returns the previous value.
        r/rgrZrrr�set_numeric_time_output�sz Nftables.set_numeric_time_outputcCs
|�d�S)z|Get the current state of terse output.

        Returns a boolean indicating whether terse output is active or not.
        r0rdrGrrr�get_terse_output�szNftables.get_terse_outputcCs|�d|�S)z�Enable or disable terse output.

        Accepts a boolean turning terse output either on or off.

        Returns the previous value.
        r0rgrZrrr�set_terse_output�szNftables.set_terse_outputcCs|�|j�}|�|j|�S)zmGet currently active debug flags.

        Returns a set of flag names. See set_debug() for details.
        )r8r2rP�debug_flagsrZrrr�	get_debug�szNftables.get_debugcCs(|�|j|�}|��}|�|j|�|S)aSet debug output flags.

        Accepts either a single flag or a set of flags. Each flag might be
        given either as string or integer value as shown in the following
        table:

        Name      | Value (hex)
        -----------------------
        scanner   | 0x1
        parser    | 0x2
        eval      | 0x4
        netlink   | 0x8
        mnl       | 0x10
        proto-ctx | 0x20
        segtree   | 0x40

        Returns a set of previously active debug flags, as returned by
        get_debug() method.
        )rXr�r�r9r2r\rrr�	set_debug�szNftables.set_debugcCsdd}t|t�sd}|�d�}|�|j|�}|�|j�}|�|j�}|rZ|�d�}|�d�}|||fS)a�Run a simple nftables command via libnftables.

        Accepts a string containing an nftables command just like what one
        would enter into an interactive nftables (nft -i) session.

        Returns a tuple (rc, output, error):
        rc     -- return code as returned by nft_run_cmd_from_buffer() fuction
        output -- a string containing output written to stdout
        error  -- a string containing output written to stderr
        FT�utf-8)rQ�bytes�encoder<r2r:r;�decode)rZcmdlineZcmdline_is_unicode�rc�output�errorrrr�cmd�s



zNftables.cmdcCsJ|�d�}|�t�|��\}}}|s.|�|�t|�r@t�|�}|||fS)aiRun an nftables command in JSON syntax via libnftables.

        Accepts a hash object as input.

        Returns a tuple (rc, output, error):
        rc     -- return code as returned by nft_run_cmd_from_buffer() function
        output -- a hash object containing library standard output
        error  -- a string containing output written to stderr
        T)rqr�r�dumps�len�loads)r�	json_rootZjson_out_oldr�r�r�rrr�json_cmd�s



zNftables.json_cmdcCs|jst�|_|j�|�dS)z�Validate JSON object against libnftables schema.

        Accepts a hash object as input.

        Returns True if JSON is valid, raises an exception otherwise.
        T)�	validatorrr)rr�rrr�
json_validateszNftables.json_validatecCsld}t|t�s$d}t|�}|�d�}|�|j|�}|�|j�}|�|j�}|rb|�d�}|�d�}|||fS)aVRun a nftables command set from a file

        filename can be a str or a Path

        Returns a tuple (rc, output, error):
        rc     -- return code as returned by nft_run_cmd_from_filename() function
        output -- a string containing output written to stdout
        error  -- a string containing output written to stderr
        FTr�)	rQr�rRr�r=r2r:r;r�)r�filenameZfilename_is_unicoder�r�r�rrr�
cmd_from_files




zNftables.cmd_from_filecCs2t|t�st|�}|�d�}|�|j|�}|dkS)z�Add a path to the include file list
        The default list includes the built-in default one

        Returns True on success, False if memory allocation fails
        r�r)rQr�rRr�r>r2)rr�r�rrr�add_include_path+s


zNftables.add_include_pathcCs|�|j�dS)zSClear include path list

        Will also remove the built-in default one
        N)r?r2rGrrr�clear_include_paths7szNftables.clear_include_pathscCs|�|j�S)zHGet dry run state

        Returns True if set, False otherwise
        )r@r2rGrrr�get_dry_run>szNftables.get_dry_runcCs|��}|�|j|�|S)zG Set dry run state

        Returns the previous dry run state
        )r�rAr2)rZonoffr]rrr�set_dry_runEszNftables.set_dry_runcCs*t|t�s|�d�}|�|j|�}|dkS)z\Add a variable to the variable list

        Returns True if added, False otherwise
        r�r)rQr�r�rBr2)r�varr�rrr�add_varOs

zNftables.add_varcCs|�|j�dS)zClear variable list
        N)rCr2rGrrr�
clear_varsYszNftables.clear_vars)r1)4rrrrrYr�r`r�rrHrPrXr[r^rerhrfrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzr{r|r}r~rr�r�r�r�r�r�r�r�r�r�r�r�rrrrr%s����
_

	
						


	


r)rZctypes�sysrZNFTABLES_VERSIONrrrrrr�<module>s