HEX
Server: Apache/2.4.58 (Ubuntu)
System: Linux ns3133907 6.8.0-86-generic #87-Ubuntu SMP PREEMPT_DYNAMIC Mon Sep 22 18:03:36 UTC 2025 x86_64
User: cssnetorguk (1024)
PHP: 8.2.28
Disabled: NONE
Upload Files
File: //usr/libexec/kcare/python/kcarectl/__pycache__/auth.cpython-312.pyc
�

p��gz/��H�ddlZddlZddlZddlmZddlmZddlmZddlmZddlmZddlm	Z	dd	lm
Z
dd
lmZm
Z
mZmZdZdZd
Zd�Zd�Zd�Ze
j,d��Zd�Zd�Zd!d�Zd�Zd�Zd!d�Ze
j,d��Zd�Zd�Z d�Z!d�Z"d�Z#d�Z$d"d�Z%d �Z&y)#�N�)�errors)�config)�	constants)�
http_utils)�	log_utils)�platform_utils)�utils)�	urlencode�json_loads_nstr�URLError�	HTTPErrorz/etc/sysconfig/kcare/systemidz&/etc/sysconfig/kcare/systemid.almacarez/var/imunify360/license.jsonc�z�tjjt�syt	td�5}|D]l}|jd�\}}}|j
�dk(r|j
�ccddd�Stjdjt���	ddd�y#1swYyxYw)N�r�=�	server_idzUnable to parse {0}.)
�os�path�exists�SYSTEMID�open�	partition�stripr�
KcareError�format)�fd�line�param�_�values     �*/usr/libexec/kcare/python/kcarectl/auth.py�	_systemidr"s���
�7�7�>�>�(�#��	
�h��	�M���	M�D�"�n�n�S�1�O�E�1�e��{�{�}��+��{�{�}�$�	M�M�
�#�#�$:�$A�$A�(�$K�L�L�		M�M�M�M�s�?B1�>)B1�1B:c���tjjt�syt	td�5}|j�j
�cddd�S#1swYyxYw)Nr)rrr�
ALMA_SYSTEMIDr�readliner)�fs r!�_alma_systemidr'$sH��
�7�7�>�>�-�(��	
�m�S�	!�$�Q��z�z�|�!�!�#�$�$�$�s�A�A&c��tjjt�syi}t	t�5}|j�}|r	t
|�}ddd�|jd�S#t$rY�$wxYw#1swY�)xYw)N�id)	rrr�IM360_LICENSE_FILEr�readr�	Exception�get)�datar&�contents   r!�_im360_systemidr0+s|��
�7�7�>�>�,�-��
�D�	
� �	!��Q��&�&�(���
�&�w�/��	��8�8�D�>����
��
����s)�A=�
A.�.	A:�7A=�9A:�:A=�=Bc�F�t�xst�xs
t�S)zqGet server_id or None if not present.

    Lookup order: SYSTEMID then IM360_LICENSE_FILE then ALMA_SYSTEMID
    )r"r0r'��r!�get_serveridr4:s���;�?�/�+�?�~�/?�?r3c�6�tjt�y�N)r�unlinkrr2r3r!�_rm_serveridr8Cs���I�I�h�r3c�V�tjtdj|��y)Nzserver_id={0}
)r
�atomic_writerr�rs r!�_set_server_idr<Gs��	���x�!2�!9�!9�)�!D�Er3c�R�d}	t�}|�|stjd�ytjdj|�z}t
j|�}tj|j��}tj|�}|ddk(r"t�|sJtjd�y|s1tj|�tjd|dz�yyy#t$r'}|stj||�Yd}~yYd}~yd}~wwxYw)Nz1Error unregistering server: cannot find server idz&/unregister_server.plain?server_id={0}�success�truezServer was unregisteredzError unregistering server: �message)r4r�logerrorr�REGISTRATION_URLrr�urlopenr
�nstrr+�data_as_dictr8�loginfor�print_cln_http_error)�silent�urlr�responser/�res�es       r!�
unregisterrMKs��
�C�3� �N�	�����"�"�#V�W���%�%�(P�(W�(W�Xa�(b�b���%�%�c�*���*�*�X�]�]�_�-��� � ��)���y�>�V�#��N���!�!�";�<�����w�'����=��I��N�O����
�3���*�*�1�c�2�2���3�s#�#C6�BC6�2C6�6	D&�?D!�!D&c�D�td�tj�}|dkDrytj�tj�}ddl}|dkDr|jd�|jj�tdd�}tdd�}tj|j�|jj��tj|j�|jj��tj|j�|jj��	tjd�t|�\}}}|dk(r)|r't!|�t#|�|jd��S)NzHRegister auto-retry has been enabled, the system can be registered laterrz	/dev/nullrza+i )�printr�fork�setsid�sys�exit�stdout�flushr�dup2�fileno�stdin�stderr�time�sleep�
_try_registerr<�_set_auth_token)rI�pidrR�si�so�coder�
auth_tokens        r!�_register_retryrccs��	�
T�U�
�'�'�)�C�
�Q�w���I�I�K�
�'�'�)�C��
�Q�w�������J�J����	
�k�3�	�B�	
�k�4�	 �B��G�G�B�I�I�K����)�)�+�,��G�G�B�I�I�K����*�*�,�-��G�G�B�I�I�K����*�*�,�-�
��
�
�;��&3�C�&8�#��i���1�9���9�%��J�'��H�H�Q�K�
r3c���	tj|�}|jjtj
d�}t
jt
j|j���}t|d�|jd�|fS#ttf$r }tj||�Yd}~yd}~wt$r%tj j#d|z�YywxYw)Nrar)NNNz)Exception while trying to register URL %s)rrC�headersr-r�AUTH_TOKEN_HEADERr
rErDr+�intrr
rrGr,�kcarelog�	exception)rIrJrbrKrLs     r!r\r\}s���
 ��%�%�c�*���%�%�)�)�)�*E�*E�t�L�
�� � ����H�M�M�O�!<�=���3�v�;������!5�z�A�A���x� � ��&�&�q�#�.���� ����$�$�%P�SV�%V�W�� �s�BB�C2�&C�.C2�1C2c�6�	td�tj�}td|fd|fg�}djtj|�}t|�\}}}|dk(r,t|�t|�tjd�y|dk(rtjd	�n�|d
k(rtjd�n�|dk(rtjd
�nu|dk(rtjd�nZ|dk(rtjd�n?|dk(rtjd�n$tjdj|��|rt!|�y|xsdS#t$r#tjj	d�Y���wxYw)NTz9Exception while trying to unregister URL before register.�hostname�keyz{0}/register_server.plain?{1}rzServer RegisteredrzAccount Locked�zInvalid Key�z}You have reached maximum registered servers for this key. Please go to your CLN account, remove unused servers and try again.�z[IP is not allowed. Please change allowed IP ranges for the key in KernelCare Key tab in CLN�zEThis IP was already used for trial, you cannot use it for trial again�zfThis IP was banned. Please contact support for more information at https://www.kernelcare.com/support/zUnknown Error {0}���)rMr,rrhrir	�get_hostnamerrrrBr\r<r]rFrArc)rl�retryrk�queryrIrarrbs        r!�registerrv�su��b��4���*�*�,�H��
�H�-��s�|�<�=�E�
)�
0�
0��1H�1H�%�
P�C�"/��"4��D�)�Z��q�y��y�!��
�#����-�.��	
������+�,�	
������=�)�	
������
R�	
�
������x�y�	
������b�c�	
������D�	E����.�5�5�d�;�<�������:�2���E�b����$�$�%`�a�b�s�E,�,(F�Fc�H�tjtj�Sr6)r
�try_to_readr�AUTH_TOKEN_DUMP_PATHr2r3r!�_get_auth_tokenrz�s�����Y�;�;�<�<r3c�R�|sytjtj|�yr6)r
r:rry)rbs r!r]r]�s����	���y�5�5�z�Br3c��|jdd�}|jdd�rt}ntj}tj|�rtj
|g|��i|��Stj|t�t�|��}tj|d��tj
�|g|��i|��S)N�method�
check_licenseT)r}�)�count)�pop�_check_auth_retryr�check_urlopen_retry�is_local_url�urlopen_base�http_request�get_http_auth_stringrzr
rt)rI�args�kwargsr}�check�requests      r!�urlopen_authr��s���
�Z�Z��$�
'�F�
�z�z�/�4�(�!���.�.�����s�#��&�&�s�<�T�<�V�<�<��%�%�c�+?�+A�?�CT�]c�d�G�?�&�5�;�;�u�A�&�z�'>�'>�?��Y�$�Y�RX�Y�Yr3c
��t�}|rKtjtjtj
dj
|d����Sy)Nz{0}:{1}�
kernelcare)r4r
rD�base64�	b64encode�bstrrr;s r!r�r��s@����I���z�z�&�*�*�5�:�:�i�6F�6F�y�R^�6_�+`�a�b�b�r3c��t|t�r(|jdvrt|�S|jdk\St|t�ryy)N)i�i�i�T)�
isinstancerra�_handle_forbiddenr
)rL�states  r!r�r��sC���!�Y���6�6�Z��$�U�+�+��v�v��}��	�A�x�	 ��
!r3c��d|vrytj�rt�}|r&tjdzdj	|�z}ntjdz}	tjtj|d��j��}tj|�}|r|jd	�s/tjj!d
j	|��y|d	dvrd|d<tj"d�yt%�yy#t$r"}tj||d��Yd}~yd}~wwxYw)
aIn case of 403 error we should check what's happen.
    Case #1. We are trying to register unlicensed machine and should try to register trial.
    Case #2. We have a valid license but access restrictions on server are not consistent yet
             and we had to try later.
    �licenseT�/check.plainz?server_id={0}F)�retry_on_500)rTNra�Unexpected CLN response: {0})�0�1z$Unable to access server. Retrying...)r�CHECK_CLN_LICENSE_STATUSr4rBrr
rDrrCr+rEr
rrGr-rh�errorrA�_register_trial)r�rrIr/�info�exs      r!r�r��s���E���
�&�&� �N�	���)�)�N�:�=M�=T�=T�U^�=_�_�C��)�)�N�:�C�	��j�j��!3�!3�C�e�!L�!Q�!Q�!S�T�G��%�%�g�.�D�
�4�8�8�F�+����$�$�%C�%J�%J�7�%S�T����<�:�%� $�E�)�����E�F����9'���	��*�*�2�s�5�A���	�s�A
D�	E�#E�Ec�<�t�}|r�tjdj|�z}	t	j
|�}t
j|j��}t
j|�}|r|jd�stdj|��yt|d�}|dk(rtd�ytd��}|dk(rtd�|St�S#t$r }tj ||�Yd}~yd}~wwxYw)	Nz/check.plain?server_id={0}rar�rrzKey-based valid license found)�key_checkedz No valid key-based license found)r4rrBrrrCr
rDr+rEr-rOrg�_get_license_info_by_iprrrG)rrIrJr/rKra�license_typerLs        r!�license_infor�s�����I���%�%�(D�(K�(K�I�(V�V��	�!�)�)�#�.�H��j�j�����1�G��$�$�W�-�C��c�g�g�f�o��4�;�;�G�D�E���s�6�{�#�D��q�y��5�6��6�1�E���1�$��<�=�#�#�
'�(�(��	�	��*�*�1�c�2���	�s$�A:C2�+C2�
C2�2	D�;D�Dc�(�tjdz}	tj|�}t	j
|j
��}t	j|�}|dj�dk(�rt|d�}|dk(rtdj|d��y|dk(rH|d}t	j|d	�jd
�}tdj||��y|dk(rL|dk(rG|d}t	j|d	�jd
�}td
j||��|dk(r`|dk(r[d|vrtdj|d��ytd�	y|jdd�}tdj|��y#t$r }	t!j"|	|�Yd}	~	yd}	~	wt$$r3}
tdj|
j'���Yd}
~
yd}
~
wwxYw)Nr�r>r?rarzValid license found for IP {0}�ipr�expire_datez%Y-%m-%dz?You have a trial license for the IP {0} that will expire on {1}rmz0Your trial license for the IP {0} expired on {1}rnzThe IP {0} hasn't been licensedz This server hasn't been licensedr@�z"Error retrieving license info: {0}z1Unexpected CLN response, cannot find {0} key:
{1})rrBrrCr
rDr+rE�lowerrgrOr�parse_response_date�strftimer-rrrG�KeyErrorr)r�rIrJr/rKrar��expires_strr@rLrls           r!r�r� s���
�
!�
!�N�
2�C�a��%�%�c�*���*�*�X�]�]�_�-��� � ��)���y�>���!�V�+��s�6�{�#�D��q�y��6�=�=�c�$�i�H�I���q�y���Y��#�7�7��M�8J�K�T�T�U_�`���W�^�^�_a�cn�o�p���q�y�[�A�-���Y��#�7�7��M�8J�K�T�T�U_�`���H�O�O�PR�T_�`�a��q�y�[�A�-��3�;��;�B�B�3�t�9�M�N�
��<�=�
�
�g�g�i��,�G��6�=�=�g�F�G�

��	�/��&�&�q�#�.�.�
���a�
�B�I�I�#�w�}�}��_�`�`���a�s>�BF.�*AF.�7A<F.�4F.�,F.�.	H�7G�H�)H�Hc��tjjtjd�}tjj|�ry	t
jtjdz�}tjtj|j���}	|dj�dk(rdtj|dd��|ddk(rt!j"|d	|d
��t%j&dj)|d	��y|ddk(r-tj|dd��t!j*d
��t!j,d��#t.$r}t!j,|��d}~wwxYw#t0$r$}t!j,|j2��d}~wwxYw)Nztrial-requestedz/trial.plainr>r?r�T)�
ensure_dir�expiredr��createdz3Requesting trial license for IP {0}. Please wait...�nazInvalid Licenserr)rr�joinr�PATCH_CACHErrrCrrBr
rErDr+r�r:r�AlreadyTrialedExceptionrrFrr�UnableToGetLicenseExceptionr�rra)�
trial_markrJrK�kerLs     r!r�r�Csn�������i�3�3�5F�G�J�	�w�w�~�~�j�!��9��%�%�f�&=�&=��&N�O��� � ����H�M�M�O�!<�=��	9��9�~�#�#�%��/��"�"�:�r�d�C��y�>�V�+� �8�8��T��C�	�N�S�S��!�!�"W�"^�"^�_b�cg�_h�"i�j���Y��4�'��"�"�:�r�d�C��'�'�(9�:�:��8�8��<�<���	9��4�4�R�8�8��	9���9��0�0����8�8��9�s?�AF�-A9E1�'A
E1�1	F�:F�F�F�	G� F?�?G)F)r)'r�rrZr�rrrrrr	r
�py23rrr
rrr$r*r"r'r0�cachedr4r8r<rMrcr\rvrzr]r�r�r�r�r�r�r�r2r3r!�<module>r�s���
�	���������A�A�+��8�
�3��	M�$�����@��@��F�3�0�4 �%�P���=��=�C�
Z���&�R)�6 
�F9r3