
    h                     \    d dl mZ d dl d dlmZ d dlmZ  G d dej                        Zy)    )
cmf_plugin)*)fields)
BadRequestc                   P     e Zd Zed        Zd Zd Zddddd fd
Z fd	Z xZ	S )
	CmfPluginc           	      2   dd l }t        j                  sy t        j	                         }|sJ d       |j                  |      }dg}t        j                  D ]  }dd|gdddt        |      gg dg dgg}t        j                  |   s
J d	|        t        j                  |   D ]3  }|j                  |dt        j                  j                  |      g       5 |j                  |        t        j                  j                  d
      ryt        j                  d|        d }d }	t        j                   j#                  |ddg      D ]:  }	|	j$                  sd} n*|	j$                  D ]  }
||j'                  |
      v sd} : < |st)        d      |	S )Nr   uW   Не удалось получить IP address из заголовка X-Forwarded-ForORtype==ext_ip)r   r   N)r   r   z0.0.0.0uQ   Настройка PUB_ACCEPT_TYPES не может быть пустой для z/pub/webhookTu   Ищем секрет z--ext_networks)filterr   u   Ошибка доступа)	ipaddressconfigPUB_ACCEPT_TYPEScmfutilget_client_ipIPv4Addressstrappendrequestargsgetpath
startswithgdebugmodelsr   listr   IPv4Networkr   )clsr   r   
ext_ip_obj_filter	type_name
sub_filterkeyacceptedpluginnetworks              ./cmf/models/cmf_plugin.pycheck_secretzCmfPlugin.check_secret   s   &&&&(pppv **62
&00 	'Iy)D#j/2',J **95 pcdmcnop5 ..y9 F!!3gll.>.>s.C"DEFNN:&	'  <<"">2	(	23&&++7D.CY+Z 	F&&!.. !6!6w!??#H			 :;;    c                 @    | j                   ry | j                  | _         y )N)nameext_url)selfs    r+   
_calc_namezCmfPlugin._calc_name;   s    99LL	r-   c                    ddl m} | j                  j                  sq| j                  j                  s[| j
                  j                  sE| j
                  j                  s/| j                  j                  r| j                  s| j
                  sy | j                  j                  | j                  j                  nd}| j
                  j                  | j
                  j                  nd}|j                  | | d      | _        y )Nr   )cmf_hashlib    )
cmf.utilr4   r0   is_not_null
is_changedext_token_addonsource_hashis_nullvalueshort_str_enc)r1   r4   r0   r:   s       r+   _calc_source_hashzCmfPlugin._calc_source_hash@   s    ())T\\-D-D((448L8L8W8W$$,,$,,$BVBV(,(:(:(F$,,$$B8<8L8L8R8R8^$..44df&447H	5RTUVr-   r   TNdepthnotifyemitorderno_filterc                    | j                          | j                          | j                  r)| j                  j                  j	                         | _        t        |   |||||d|S )Nr@   )r2   r?   	ext_loginr=   stripsupersave)r1   rA   rB   rC   rD   r   kwargs	__class__s          r+   rI   zCmfPlugin.saveL   sX     >>!^^11779DNw|TvDYgrkqrrr-   c                 *    t         |          g dz   S )N)r0   r;   r:   rF   r0   )rH   save_preload_fields)r1   rK   s    r+   rM   zCmfPlugin.save_preload_fieldsS   s    w*,/tttr-   )
__name__
__module____qualname__classmethodr,   r2   r?   rI   rM   __classcell__)rK   s   @r+   r   r      s>    0 0d!

W !"$T$ su ur-   r   N)
cmf.fieldsr   cmf.includecmfr   werkzeug.exceptionsr   r    r-   r+   <module>rX      s'    !   *Nu
$$ Nur-   