U
    	e5                     @   s6   d dl mZ d dlT d dlmZ G dd dejZdS )    )
cmf_plugin)*)fieldsc                       sP   e Zd Zedd Zdd Zdd Zdddd	d
 fdd
Z fddZ  Z	S )	CmfPluginc           
   	   C   s^  dd l }tjsd S tjdr0tjdd }ntj}|sBtddg}||}tjD ]z}dd|gdddt	|gddd gdddggg}tj| std	| tj| D ]}|
|dtj|g q|
| qXtjd
rdS td|  d }d }tjj|ddgdD ]:}|js&d} qL|jD ]}	||	kr,d} qq,q|sZtd|S )Nr   zX-Forwarded-ForuW   Не удалось получить IP address из заголовка X-Forwarded-ForORtypez==ext_ipz0.0.0.0uQ   Настройка PUB_ACCEPT_TYPES не может быть пустой для z/pub/webhookTu   Ищем секрет z--ext_networks)filterr   u   Ошибка доступа)	ipaddressZconfigZPUB_ACCEPT_TYPESZrequestZheadersZgetlistZremote_addrAssertionErrorZIPv4Addressstrappendargsgetpath
startswithgdebugZmodelsr   listr	   	Exception)
clsr   r   Z_filter	type_nameZ
sub_filterkeyZacceptedZpluginZnetwork r   ./cmf/models/cmf_plugin.pycheck_secret   sD    



zCmfPlugin.check_secretc                 C   s   | j r
d S | j| _ d S )N)nameext_urlselfr   r   r   
_calc_name/   s    zCmfPlugin._calc_namec                 C   s   ddl m} | jjsD| jjsD| jjsD| jjsD| jjr@| jsD| jsDd S | jjd k	rX| jjnd}| jjd k	rp| jjnd}|	| | d| _d S )Nr   )cmf_hashlib    )
Zcmf.utilr"   r   Zis_not_nullZ
is_changedext_token_addonsource_hashZis_nullvalueZshort_str_enc)r    r"   r   r%   r   r   r   _calc_source_hash4   s&    zCmfPlugin._calc_source_hashr   TNdepthnotifyemitorderno_filterc                   s@   |    |   | jr$| jj | _t j|||||d|S )Nr)   )r!   r(   Z	ext_loginr'   stripsupersave)r    r*   r+   r,   r-   r   kwargs	__class__r   r   r0   @   s
    zCmfPlugin.savec                    s   t   ddg S )Nr   r&   )r/   save_preload_fieldsr   r2   r   r   r4   G   s    zCmfPlugin.save_preload_fields)
__name__
__module____qualname__classmethodr   r!   r(   r0   r4   __classcell__r   r   r2   r   r      s   
&r   N)Z
cmf.fieldsr   Zcmf.includeZcmfr   r   r   r   r   r   <module>   s   