HEX
Server: LiteSpeed
System: Linux php-prod-1.spaceapp.ru 5.15.0-157-generic #167-Ubuntu SMP Wed Sep 17 21:35:53 UTC 2025 x86_64
User: xnsbb3110 (1041)
PHP: 8.1.33
Disabled: NONE
Upload Files
File: //proc/self/root/lib/python3/dist-packages/firewall/core/__pycache__/logger.cpython-310.pyc
o

bhAb>y�@s�gd�ZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z
ddl
Z
Gdd�de�ZGdd�de�Z
Gdd�de
�ZGd	d
�d
e�ZGdd�de�ZGd
d�de�Ze�ZdS))�	LogTarget�FileLog�Logger�log�Nc@s2eZdZdZdd�Zddd�Zdd�Zd	d
�ZdS)
rz% Abstract class for logging targets. cCs
d|_dS�N)�fd��self�r
�6/usr/lib/python3/dist-packages/firewall/core/logger.py�__init__(�
zLogTarget.__init__rcC�td��)Nz%LogTarget.write is an abstract method��NotImplementedError�r	�data�level�logger�is_debugr
r
r�write+�zLogTarget.writecCr)Nz%LogTarget.flush is an abstract methodrrr
r
r�flush.rzLogTarget.flushcCr)Nz%LogTarget.close is an abstract methodrrr
r
r�close1rzLogTarget.closeN�r)�__name__�
__module__�__qualname__�__doc__rrrrr
r
r
rr&s
rc@�.eZdZdd�Zddd�Zdd�Zdd	�Zd
S)�
_StdoutLogcC�t�|�tj|_dSr)rr�sys�stdoutrrr
r
rr8�
z_StdoutLog.__init__rcCs|j�|�|��dSr)rrrrr
r
rr<sz_StdoutLog.writecCs|��dSr)rrr
r
rrA�z_StdoutLog.closecCs|j��dSr�rrrr
r
rrD�z_StdoutLog.flushNr�rrrrrrrr
r
r
rr 7s

r c@seZdZdd�ZdS)�
_StderrLogcCr!r)r rr"�stderrrrr
r
rrKr$z_StderrLog.__init__N)rrrrr
r
r
rr)Jsr)c@r)�
_SyslogLogcCs.t�|�t�tj�tjd�tj	tj
�dS)Nr)rr�syslog�openlog�os�path�basenamer"�argv�LOG_PID�
LOG_DAEMONrr
r
rrSs
	�z_SyslogLog.__init__rcCs�d}|rtj}n#||jkrtj}n||jkrtj}n||jkr#tj}n||jkr+tj	}|�
d�r:|dt|�d�}t|�dkrS|durKt�|�dSt�||�dSdS)N�
�r)r,�	LOG_DEBUG�INFO1�LOG_INFO�WARNING�LOG_WARNING�ERROR�LOG_ERR�FATAL�LOG_CRIT�endswith�len)r	rrrr�priorityr
r
rras$




�z_SyslogLog.writecCst��dSr)r,�closelogrr
r
rrwr%z_SyslogLog.closecCsdSrr
rr
r
rrzsz_SyslogLog.flushNrr(r
r
r
rr+Rs

r+c@s<eZdZdZddd�Zdd�Zddd	�Zd
d�Zdd
�ZdS)rz< FileLog class.
    File will be opened on the first write. �wcCst�|�||_||_dSr)rr�filename�mode)r	rDrEr
r
rr�s

zFileLog.__init__cCsv|jrdStjtjB}|j�d�r|tjO}t�|j|d�|_t�	|jd�t�
|j|j�|_t�|jtjtj
�dS)N�ai�)rr.�O_CREAT�O_WRONLYrE�
startswith�O_APPEND�openrD�fchmod�fdopen�fcntl�F_SETFD�
FD_CLOEXEC)r	�flagsr
r
rrK�s
zFileLog.openrcCs(|js|��|j�|�|j��dSr)rrKrrrr
r
rr�sz
FileLog.writecCs|jsdS|j��d|_dSr)rrrr
r
rr�s

z
FileLog.closecCs|jsdS|j��dSrr&rr
r
rr�sz
FileLog.flushN)rCr)	rrrrrrKrrrr
r
r
rrs


rc@s�eZdZdZdZdZdZdZdZdZ	e
�Ze�Z
e�Zd\d
d�Zdd
�Zd]dd�Zd]dd�Zd]dd�Zd]dd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zed#fd$d%�Zed#fd&d'�Zed#fd(d)�Zed#fd*d+�Zed#fd,d-�Z ed#fd.d/�Z!d0d1�Z"d2d3�Z#d4d5�Z$d6d7�Z%d8d9�Z&d:d;�Z'd<d=�Z(d>d?�Z)d@dA�Z*dBdC�Z+dDdE�Z,d^dFdG�Z-dHdI�Z.d^dJdK�Z/ed#dfdLdM�Z0ed#dfdNdO�Z1ed#dfdPdQ�Z2d^dRdS�Z3dTdU�Z4dVdW�Z5dXdY�Z6d^dZd[�Z7d#S)_raL	
    Format string:

    %(class)s      Calling class the function belongs to, else empty
    %(date)s       Date using Logger.date_format, see time module
    %(domain)s     Full Domain: %(module)s.%(class)s.%(function)s
    %(file)s       Filename of the module
    %(function)s   Function name, empty in __main__
    %(label)s      Label according to log function call from Logger.label
    %(level)d      Internal logging level
    %(line)d       Line number in module
    %(module)s     Module name
    %(message)s    Log message

    Standard levels:

    FATAL                 Fatal error messages
    ERROR                 Error messages
    WARNING               Warning messages
    INFOx, x in [1..5]    Information
    DEBUGy, y in [1..10]  Debug messages
    NO_INFO               No info output
    NO_DEBUG              No debug output
    INFO_MAX              Maximum info level
    DEBUG_MAX             Maximum debug level

    x and y depend on info_max and debug_max from Logger class
    initialization. See __init__ function.

    Default logging targets:

    stdout        Logs to stdout
    stderr        Logs to stderr
    syslog        Logs to syslog

    Additional arguments for logging functions (fatal, error, warning, info
    and debug):

    nl       Disable newline at the end with nl=0, default is nl=1.
    fmt      Format string for this logging entry, overloads global format
             string. Example: fmt="%(file)s:%(line)d %(message)s"
    nofmt    Only output message with nofmt=1. The nofmt argument wins over
             the fmt argument.

    Example:

    from logger import log
    log.setInfoLogLevel(log.INFO1)
    log.setDebugLogLevel(log.DEBUG1)
    for i in range(1, log.INFO_MAX+1):
        log.setInfoLogLabel(i, "INFO%d: " % i)
    log.setFormat("%(date)s %(module)s:%(line)d [%(domain)s] %(label)s: "
                  "%(level)d %(message)s")
    log.setDateFormat("%Y-%m-%d %H:%M:%S")

    fl = FileLog("/tmp/log", "a")
    log.addInfoLogging("*", fl)
    log.addDebugLogging("*", fl)
    log.addInfoLogging("*", log.syslog, fmt="%(label)s%(message)s")

    log.debug3("debug3")
    log.debug2("debug2")
    log.debug1("debug1")
    log.info2("info2")
    log.info1("info1")
    log.warning("warning\n", nl=0)
    log.error("error\n", nl=0)
    log.fatal("fatal")
    log.info(log.INFO1, "nofmt info", nofmt=1)

    ���������������r��
c	Cs�i|_i|_d|_d|_i|_i|_i|_i|_i|_i|_	|dkr(t
d|��|dkr2t
d|��|j|_||_
d|_||_|�|jd�|�|jd�|�|jd�|�|jd�td|j
d�D]}t|d	||�|�|d�t|d
|dd�||��qctd|jd�D]}t|d
||�|�|d|�t|d|dd�||��q�|�|j�|�|j�|�d�|�d�|�d|j|j|j|jg�|�d|jdd�t|j|j
d�D��|�d|jdd�td|jd�D��dS)z Logger class initialization �r5zLogger: info_max %d is too lowrzLogger: debug_max %d is too lowz
FATAL ERROR: zERROR: z	WARNING: zINFO%dzinfo%dc���fdd�S)Nc��j�|g|�Ri|��Sr)�info��message�args�kwargs�r	�xr
r�<lambda> ��3Logger.__init__.<locals>.<lambda>.<locals>.<lambda>r
rar
rarrcr'z!Logger.__init__.<locals>.<lambda>zDEBUG%dz	DEBUG%d: zdebug%dcrZ)Ncr[r)�debugr]rar
rrc)rdrer
rar
rarrc(r'z%(label)s%(message)sz%d %b %Y %H:%M:%S�*cS�g|]}|�qSr
r
��.0�ir
r
r�
<listcomp>4�z#Logger.__init__.<locals>.<listcomp>cSrhr
r
rir
r
rrl6rmN) �_level�_debug_level�_format�_date_format�_label�_debug_label�_logging�_debug_logging�_domains�_debug_domains�
ValueErrorr9�NO_INFO�INFO_MAX�NO_DEBUG�	DEBUG_MAX�setInfoLogLabelr=�	TRACEBACKr;�range�setattr�setDebugLogLabel�setInfoLogLevelr7�setDebugLogLevel�	setFormat�
setDateFormat�setInfoLoggingr*r#�setDebugLogging)r	�info_max�	debug_maxrnr
r
rr�sf
��
��

�
�
�zLogger.__init__cCsFt|j|jd�D]}||jvrq	|j|D]	\}}}|��qq	dS)z Close all logging targets r5N)rr=r|rtr)r	r�dummy�targetr
r
rr8s

��zLogger.closergcCs$|�|�||jvr|j|S|jS)z Get info log level. )�_checkDomainrn�NOTHING�r	�domainr
r
r�getInfoLogLevel@s


zLogger.getInfoLogLevelcCs8|�|�||jkr
|j}||jkr|j}||j|<dS)z% Set log level [NOTHING .. INFO_MAX] N)r�r�rzrn�r	rr�r
r
rr�Gs


zLogger.setInfoLogLevelcCs*|�|�||jvr|j||jS|jS)z Get debug log level. )r�ror{r�r
r
r�getDebugLogLevelPs

zLogger.getDebugLogLevelcCs:|�|�|dkrd}||jkr|j}||j|j|<dS)z- Set debug log level [NO_DEBUG .. DEBUG_MAX] rN)r�r|r{ror�r
r
rr�Ws

zLogger.setDebugLogLevelcC�|jSr�rprr
r
r�	getFormat`�zLogger.getFormatcC�
||_dSrr��r	rpr
r
rr�cr
zLogger.setFormatcCr�r�rqrr
r
r�
getDateFormatfr�zLogger.getDateFormatcCr�rr�r�r
r
rr�ir
zLogger.setDateFormatcCs6|�|�}|D]}|j||j|jd�||j|<qdS)�U Set log label for level. Level can be a single level or an array
        of levels. ��	min_level�	max_levelN)�
_getLevels�_checkLogLevelr=rzrr�r	r�label�levelsr
r
rr}ls

��zLogger.setInfoLogLabelcCs:|j|dd�}|D]}|j||j|jd�||j|<q	dS)r�r5�rr�N)r�r�r7r|rsr�r
r
rr�us
��zLogger.setDebugLogLabelNcC�|j||||dd�dS)z� Set info log target for domain and level. Level can be a single
        level or an array of levels. Use level ALL to set for all levels.
        If no format is specified, the default format will be used. rr�N��_setLogging�r	r�r�r�fmtr
r
rr�~�zLogger.setInfoLoggingcCr�)z� Set debug log target for domain and level. Level can be a single
        level or an array of levels. Use level ALL to set for all levels.
        If no format is specified, the default format will be used. r5r�Nr�r�r
r
rr��r�zLogger.setDebugLoggingcCr�)z� Add info log target for domain and level. Level can be a single
        level or an array of levels. Use level ALL to set for all levels.
        If no format is specified, the default format will be used. rr�N��_addLoggingr�r
r
r�addInfoLogging�r�zLogger.addInfoLoggingcCr�)z� Add debg log target for domain and level. Level can be a single
        level or an array of levels. Use level ALL to set for all levels.
        If no format is specified, the default format will be used. r5r�Nr�r�r
r
r�addDebugLogging�r�zLogger.addDebugLoggingcCr�)z� Delete info log target for domain and level. Level can be a single
        level or an array of levels. Use level ALL to set for all levels.
        If no format is specified, the default format will be used. rr�N��_delLoggingr�r
r
r�delInfoLogging�r�zLogger.delInfoLoggingcCr�)z� Delete debug log target for domain and level. Level can be a single
        level or an array of levels. Use level ALL to set for all levels.
        If no format is specified, the default format will be used. r5r�Nr�r�r
r
r�delDebugLogging�r�zLogger.delDebugLoggingcC�|j|dd�S)zN Is there currently any info logging for this log level (and
        domain)? rr���_isLoggingHere�r	rr
r
r�isInfoLoggingHere��zLogger.isInfoLoggingHerecCr�)zO Is there currently any debug logging for this log level (and
        domain)? r5r�r�r�r
r
r�isDebugLoggingHere�r�zLogger.isDebugLoggingHerecO�2|�|�d|d<|j|j|g|�Ri|��dS)z Fatal error log. rrN)�_checkKWargs�_logr=�r	rpr_r`r
r
r�fatal��
 zLogger.fatalcOr�)z Error log. rrN)r�r�r;r�r
r
r�error�r�zLogger.errorcOr�)z Warning log. rrN)r�r�r9r�r
r
r�warning�r�zLogger.warningcOsH|j|d|jd�|�|�d|d<|j||j|g|�Ri|��dS)z� Information log using info level [1..info_max].
        There are additional infox functions according to info_max from
        __init__r5r�rrN)r�rzr�r�ry�r	rrpr_r`r
r
rr\�s
$zLogger.infocOsB|j|d|jd�|�|�d|d<|j||g|�Ri|��dS)z� Debug log using debug level [1..debug_max].
        There are additional debugx functions according to debug_max
        from __init__r5r�rN)r�r|r�r�r�r
r
rrf�s
zLogger.debugcCs|j|jt��gid�dS)N)r_r`)r�r~�	traceback�
format_excrr
r
r�	exception�szLogger.exceptioncCs&||ks||krtd|||f��dS)Nz*Level %d out of range, should be [%d..%d].�rx)r	rr�r�r
r
rr��s
��zLogger._checkLogLevelcCs.|sdS|��D]}|dvrtd|��qdS)N)�nlr��nofmtz0Key '%s' is not allowed as argument for logging.)�keysrx)r	r`�keyr
r
rr��s��zLogger._checkKWargscCs|r|dkrtd|��dS)NrYzDomain '%s' is not valid.r�r�r
r
rr��s�zLogger._checkDomaincCs�||jkr2t|t�st|t�r|}n|g}|D]}|r%|j|d|jd�q|j||j|jd�q|S|rBdd�t|j	|j�D�}|Sdd�t|j|j�D�}|S)z Generate log level array. r5r�cSrhr
r
rir
r
rrl�rmz%Logger._getLevels.<locals>.<listcomp>cSrhr
r
rir
r
rrl�rm)
�ALL�
isinstance�list�tupler�r|r=rzr�DEBUG1)r	rrr�r
r
rr��s$
�
���zLogger._getLevelscCsJt|t�s
t|t�r
|}n|g}|D]}t|jt�s"td|jj��q|S)z Generate target array. z '%s' is no valid logging target.)r�r�r��
issubclass�	__class__rrxr)r	r��targets�_targetr
r
r�_getTargets�s��zLogger._getTargetscCs�|r|j}|j}d|jdf}n|j}|j}|j|jdf}t|�dkr(|��t	|d|d�D]}||vr8q1||D]\}}}||vrN|�
|g��|�q<q1dS)z% Generate dict with domain by level. r5rN)rwrur|rvrtr=rzr@�clearr�
setdefault�append)r	rrvrt�_rangerr�r�r
r
r�_genDomainss$���zLogger._genDomainsc	Csd|�|�|�||�}|�|�}|r|j}n|j}|D]}|D]
}|||fg||<qq|�|�dSr)r�r�r�rurtr��	r	r�r�rr�rr�r�rtr
r
rr�s

�zLogger._setLoggingc	Csl|�|�|�||�}|�|�}|r|j}n|j}|D]}|D]}|�|g��|||f�qq|�|�dSr)r�r�r�rurtr�r�r�r�r
r
rr�-s

�zLogger._addLoggingc
Cs�|�|�|�||�}|�|�}|r|j}n|j}|D]<}	|D]7}|	|vr&q|||f||	vrE||	�|||f�t||	�dkrE||	=q||jkrVtd|	||j	j
|f��qq|�|�dS)NrzDNo mathing logging for level %d, domain %s, target %s and format %s.)r�r�r�rurt�remover@r�rxr�rr�)
r	r�r�rr�rr�r�rtrnr
r
rr�<s,


���zLogger._delLoggingcCsr|�||�}|s
dS|dd}|r|j}n|j}||D]\}}}|dks3|�|�s3t�|d|�r6dSqdS)NFr��.rgT)�_genDictrurtrI�fnmatch�fnmatchcase)r	rr�_dict�point_domainrtr�r�r
r
rr�Us ���zLogger._isLoggingHerec	Cs�|jjdkr"|jjd}||jvr"|j|}|�|j|j�}|r"|St�|j�}|j}|j|j	vrEt
|j	|jd�rE|j	|jj|krEdS|j	��D]%\}}t
|tj�rot
||j�rot||j�}t
|tj�ro|j|kro|SqJdS)z7 Function to get calling class. Returns class or None. r�	func_codeN)�f_code�co_argcount�co_varnames�f_locals�
_getClass2r��inspect�	getmodule�co_name�__dict__�hasattr�__code__�itemsr��types�	ClassType�getattr�FunctionType)	r	�frame�selfname�_self�obj�module�coder��valuer
r
r�	_getClassis,


�zLogger._getClasscCsV|j��D]}t|tj�r|j|kr|Sq|jD]}|�||�}|r(|SqdS)z@ Internal function to get calling class. Returns class or None. N)r��valuesr�r�r�r��	__bases__r�)r	r�r�r��base�_objr
r
rr��s
�
�zLogger._getClass2cOs`d}d|vr
|d}d}d|vr|d}d}d|vr|d}|�||�}|s(dSt|�dkr5|||d<nt|�dkrD||d|d<n||d<|dd}	|rT|j}
n|j}
g}|
|D]P\}}
}|
|vrgq]|d	ksz|	�|d�szt�|d|�r�|s|j}d
|vr�|d
}|r�|
�|d|||�n
|
�|||||�|r�|
�d|||�|�	|
�q]dS)Nrrr5r�r�r^r�r�rgr�r4)
r�r@rurtrIr�r�rprr�)r	rrpr_r`rr�r�r�r�rt�used_targetsr�r�r
r
rr��sT��
��zLogger._logc
Csg}d}|r|j}|j}|j}n	|j}|j}|j}|D]$}|dkr4|||kr3d}t|�dkr1g}n
q|||kr?|�|�q|sJt|�dkrJdS||vrPdSt�	�}	|	rq|	j
rq|	jd|jkrq|	j
}	|	rq|	j
rq|	jd|jksa|	swt
d��|	jd}
|
d	}|D]}|�|�r�g}nq�|	j}t|
�}
||D]0}|�d�}|dkr�q�|dkr�|d|�}n|}|
t|�kr�|
�|�s�dSq�|�|
�s�dSq�d
}||vr�||}|j|	j|
d
|jd
||t�|jt���d�	}|dd
kr�d
|d<d}||D]
}|dk�rq�d}|j�d�dk�s!|j�d�dk�s!|�s!t|�dk�r.|�|	�}|�r.|j|d<d
|d|d<|dd
k�rI|dd	|d7<|dd
k�r\|dd	|d7<t|�dk�re|S|dd	}|D]}|�|��s~t�|d|��r�|S�qmdS)z Internal function. FrgTrr5Nrz Frame information not available.r�rY)	�file�liner��class�functionr�r�r�dater�?z	%(domain)z%(class)rr�r�)rorwrsrnrvrrr@r�r��currentframe�f_back�	f_globalsrrxrIr��find�co_filename�f_linenor��time�strftimerq�	localtimerpr�rr�r�)r	rr�
check_domains�simple_matchr�rvrrr��f�module_name�point_module�co�_lenrk�d�	level_str�
domain_neededr�r�r
r
rr��s��
��

�

�
��	
�

��zLogger._genDict)rWrX)rgr)8rrrrr�r�r=r~r;r9r r#r)r*r+r,rrr�r�r�r�r�r�r�r�r}r�r�r�r�r�r�r�r�r�r�r�r�r\rfr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r
r
r
rr�sfH
;


	
					


 4r)�__all__r"r�rr�r�r,r�rN�os.pathr.�objectrr r)r+rrrr
r
r
r�<module>s0-(*