U
    wh                     @   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   sv  dd l }tjsd S tjdrBtjdd }|dd  }ntj}|sTt	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|| qjtjdrdS td|  d }	d }
tjj|ddgdD ]@}
|
js8d}	 qd|
jD ] }|||kr>d}	 q"q>q"|	srtd|
S )Nr   zX-Forwarded-For,uW   Не удалось получить 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getlistsplitstripZremote_addrAssertionErrorIPv4Addressstrappendargsgetpath
startswithgdebugZmodelsr   listr
   IPv4Network	Exception)clsr   ipsr	   Z
ext_ip_objZ_filter	type_nameZ
sub_filterkeyZacceptedZpluginnetwork r!   ./cmf/models/cmf_plugin.pycheck_secret   sP    


zCmfPlugin.check_secretc                 C   s   | j r
d S | j| _ d S )N)nameext_urlselfr!   r!   r"   
_calc_nameA   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_hashF   s&    zCmfPlugin._calc_source_hashr   TNdepthnotifyemitorderno_filterc                   s@   |    |   | jr$| jj | _t j|||||d|S )Nr0   )r(   r/   Z	ext_loginr.   r   supersave)r'   r1   r2   r3   r4   r   kwargs	__class__r!   r"   r6   R   s
    zCmfPlugin.savec                    s   t   ddg S )Nr%   r-   )r5   save_preload_fieldsr&   r8   r!   r"   r:   Y   s    zCmfPlugin.save_preload_fields)
__name__
__module____qualname__classmethodr#   r(   r/   r6   r:   __classcell__r!   r!   r8   r"   r      s   
8r   N)Z
cmf.fieldsr   Zcmf.includeZcmfr   r   r!   r!   r!   r"   <module>   s   