Your IP : 216.73.216.104


Current Path : /proc/self/root/usr/libexec/kcare/python/kcarectl/__pycache__/
Upload Files:
Current File: //proc/self/root/usr/libexec/kcare/python/kcarectl/__pycache__/auth.cpython-39.pyc

a

a��i�/�@s�ddlZddlZddlZddlZddlmZmZmZmZm	Z	m
Z
mZmZm
Z
ddlmZmZmZd"dd�Zdd	�Zd
d�Zdd
�Zd#dd�Ze
jdd��Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zd$dd�Zd d!�Z dS)%�N�)	�config�	constants�errors�
http_utils�ipv6_support�	log_utils�platform_utils�serverid�utils)�	HTTPError�URLError�	urlencodeFc
Cs�d}z�t��}|dur*|s$t�d�WdSt��d�|�}t�|�}t	�
|���}t	�|�}|ddkr�t�
�t��|s�t�d�n |s�t�|�t�d|d�Wn4ty�}z|s�t�||�WYd}~n
d}~00dS)Nz1Error unregistering server: cannot find server idz&/unregister_server.plain?server_id={0}�success�truezServer was unregisteredzError unregistering server: �message)r
�get_serveridr�logerrorr�get_registration_url�formatr�urlopenr�nstr�read�data_as_dictZrm_serverid�clear_cache�loginfor�print_cln_http_error)Zsilent�url�	server_id�response�content�res�e�r#�*/usr/libexec/kcare/python/kcarectl/auth.py�
unregisters,



r%cCs�t�d�t��}|dkrdSt��t��}ddl}|dkrH|�d�|j��t	dd�}t	dd�}t�
|��|j���t�
|��|j���t�
|��|j
���t�d�t|�\}}}|dkr�|r�t�|�t|�t��|�d�q�dS)NzHRegister auto-retry has been enabled, the system can be registered laterrz	/dev/null�rza+i )r�
print_wrapper�os�fork�setsid�sys�exit�stdout�flush�open�dup2�fileno�stdin�stderr�time�sleep�
_try_registerr
�
set_server_id�_set_auth_tokenrr)r�pidr+Zsi�so�coder�
auth_tokenr#r#r$�_register_retry)s,






r=cCs$|dur t�d|�s td|��|S)Nz	^[\w.-]+$zInvalid value received: %s)�re�match�
ValueError)�valuer#r#r$�_validate_urlsafe_encodingGsrBc
Cs�zPt�|�}|j�tjd�}t�t�|�	���}t
|d�t|�d��t|�fWStt
fy�}zt�||�WYd}~dSd}~0ty�tj�d|�YdS0dS)Nr;r)NNNz)Exception while trying to register URL %s)rr�headers�getrZAUTH_TOKEN_HEADERrrrr�intrBrr
rr�	Exception�kcarelog�	exception)rrr<r!r"r#r#r$r6Ms
"r6cCs<ztd�Wnty*tj�d�Yn0t��}td|fd|fg�}d�t	�
�|�}t|�\}}}|dkr�t�
|�t|�t	��t�d�dS|dkr�t�d	�nv|d
kr�t�d�nb|dkr�t�d
�nN|dkr�t�d�n:|dkr�t�d�n&|dk�rt�d�nt�d�|��|�r2t|�dS|�p:dS)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}���)r%rFrrGrHr	Zget_hostnamerrrrr6r
r7r8rrrr=)rJ�retryrI�queryrr;rr<r#r#r$�register[sB

�
rScCst�tj�S�N)r�try_to_readr�AUTH_TOKEN_DUMP_PATHr#r#r#r$�_get_auth_token�srWcCs|sdSt�tj|�dSrT)r�atomic_writerrV)r<r#r#r$r8�sr8cOs�|�dd�}|�dd�rt}ntj}t�|�rFtj|g|�Ri|��Stj|t�t�|d�}t	j
|dd�tj�|g|�Ri|��S)N�method�
check_licenseT)rY�)�count)�pop�_check_auth_retryr�check_urlopen_retryZis_local_url�urlopen_base�http_request�get_http_auth_stringrWrrQ)r�args�kwargsrY�check�requestr#r#r$�urlopen_auth�s
rgc
Cs.t��}|r*t�t�t�d�|d����SdS)Nz{0}:{1}Z
kernelcare)r
rrr�base64�	b64encode�bstrr)rr#r#r$rb�srbcCs(t|t�r|jdvrt|�St�||�S)N)i�i�)�
isinstancerr;�_handle_forbiddenrr_)r"�stater#r#r$r^�sr^c
Cs�d|vrdStjr�t��}t��d}|r8|d�|�7}z&t�t	j
|dd����}t�|�}Wn6t
y�}ztj||dd�WYd}~dSd}~00|r�|�d	�s�tj�d
�|��dS|d	dvr�d|d<t�d�dSt�dS)
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)Zretry_on_500)r-Nr;�Unexpected CLN response: {0})�0�1z$Unable to access server. Retrying...)r�CHECK_CLN_LICENSE_STATUSr
rrrrrrrrrrr
rrrDrG�errorr�_register_trial)rmrrr �info�exr#r#r$rl�s*
rlc
Cs�t��}|r�t��d�|�}z�t�|�}t�|�	��}t�
|�}|rP|�d�sft�d�|��WdSt
|d�}|dkr�t�d�WdStdd�}|dkr�t�d�|WSWq�ty�}zt�||�WYd}~dSd}~00nt�SdS)	Nz/check.plain?server_id={0}r;rprrzKey-based valid license found)�key_checkedz No valid key-based license found)r
rrrrrrrrrrrDr'rE�_get_license_info_by_ipr
rr)rrrr r!r;Zlicense_typer"r#r#r$�license_info�s,





rzc
Cs�t��d}�z<t�|�}t�|���}t�|�}|d��dk�r,t	|d�}|dkrrt�
d�|d��WdS|dkr�|d}t�|d	��
d
�}t�
d�||��WdS|dkr�|dkr�|d}t�|d	��
d
�}t�
d
�||��|dk�rH|dk�rHd|v�r t�
d�|d��n
t�
d�n|�dd�}t�
d�|��Wnlt�y|}	zt�|	|�WYd}	~	nDd}	~	0t�y�}
z"t�
d�|
|����WYd}
~
n
d}
~
00dS)Nrorrr;rzValid license found for IP {0}�iprZexpire_datez%Y-%m-%dz?You have a trial license for the IP {0} that will expire on {1}rKz0Your trial license for the IP {0} expired on {1}rLzThe 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})rrrrrrrr�lowerrEr'rZparse_response_date�strftimerDr
rr�KeyError�strip)rxrrr r!r;r{Zexpires_strrr"rJr#r#r$ry�s<


 ,ryc
CsNtj�tjd�}tj�|�r dSz�t�t�	�d�}t
�t
�|�
���}z�|d��dkr�t
j|ddd�t��|ddkr�t�|d	|d
��t�d�|d	��WWdS|ddkr�t
j|ddd�t�d
��n
t�d��Wn0t�y}zt�|��WYd}~n
d}~00Wn2t�yH}zt�|j��WYd}~n
d}~00dS)Nztrial-requestedz/trial.plainrrr|T)�
ensure_dirZexpiredr{�createdz3Requesting trial license for IP {0}. Please wait...ZnazInvalid LicenserP)r(�path�joinr�PATCH_CACHE�existsrrrrrrrrr}rXrrZAlreadyTrialedExceptionrrr�
KcareErrorZUnableToGetLicenseExceptionrrr;)Z
trial_markrr!Zker"r#r#r$rus,$ru)F)F)r)!rhr(r>r4r|rrrrrrr	r
r�py23rr
rr%r=rBr6rS�cachedrWr8rgrbr^rlrzryrur#r#r#r$�<module>s(,

.

)
#