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AssertionErrorIPv4Addressstrappendargsgetpath
startswithgdebugZmodelsr   listr	   	Exception)
clsr   r   Z_filter	type_nameZ
sub_filterkeyZacceptedZplugin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   r2   @   s
    zCmfPlugin.savec                    s   t   ddg S )Nr    r(   )r1   save_preload_fieldsr!   r4   r   r   r6   G   s    zCmfPlugin.save_preload_fields)
__name__
__module____qualname__classmethodr   r#   r*   r2   r6   __classcell__r   r   r4   r   r      s   
&r   N)Z
cmf.fieldsr   Zcmf.includeZcmfr   r   r   r   r   r   <module>   s   