HEX
Server: Apache
System: Linux scp1.abinfocom.com 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User: confeduphaar (1010)
PHP: 8.1.33
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //proc/thread-self/root/usr/libexec/kcare/python/kcarectl/__pycache__/auth.cpython-38.pyc
U

n�h~+�@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��}|dkr*|s$t�d�WdSt��d�|�}t�|�}t	�
|���}t	�|�}|ddkr�t�
�|s�t�d�n |s�t�|�t�d|d�Wn2tk
r�}z|s�t�||�W5d}~XYnXdS)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�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|�|�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_token)r�pidr*�si�so�coder�
auth_tokenr"r"r#�_register_retry&s*






r=cCs$|dk	r t�d|�s td|��|S)Nz	^[\w.-]+$zInvalid value received: %s)�re�match�
ValueError)�valuer"r"r#�_validate_urlsafe_encoding@srBc
Cs�zPt�|�}|j�tjd�}t�t�|�	���}t
|d�t|�d��t|�fWStt
fk
r�}zt�||�WY�dSd}~XYn&tk
r�tj�d|�YdSXdS)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#r5Fs
"r5cCs6ztd�Wn tk
r,tj�d�YnXt��}td|fd|fg�}d�t	�
�|�}t|�\}}}|dkr�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�r
t�d�nt�d�|��|�r,t|�dS|�p4dS)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_hostnamerrrrr5r
r6r7rrr=)rJ�retryrI�queryrr;rr<r"r"r#�registerTs@

�
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#r7�sr7cOsv|�dd�}|�dd�rt}ntj}t�|�r@tj|f|�|�Stj|t�t�|d�}t	j
|dd�tj�|f|�|�S)N�method�
check_licenseT)rY�)�count)�pop�_check_auth_retryrZcheck_urlopen_retryZis_local_url�urlopen_base�http_request�get_http_auth_stringrWrrQ)r�args�kwargsrY�check�requestr"r"r#�urlopen_auth�s
rfc
Cs.t��}|r*t�t�t�d�|d����SdS)Nz{0}:{1}Z
kernelcare)r
rrr�base64�	b64encode�bstrr)rr"r"r#ra�sracCs8t|t�r&|jdkrt|�S|jdkSt|t�r4dSdS)N)i�i�i�T)�
isinstancerr;�_handle_forbiddenr
)r!�stater"r"r#r^�s



r^c
Cs�d|krdStjr�t��}t��d}|r8|d�|�7}z&t�t	j
|dd����}t�|�}Wn8t
k
r�}ztj||dd�WY�dSd}~XYnX|r�|�d	�s�tj�d
�|��dS|d	dkr�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)rlrrr�info�exr"r"r#rk�s*
rkc
Cs�t��}|r�t��d�|�}z�t�|�}t�|�	��}t�
|�}|rP|�d�sft�d�|��WdSt
|d�}|dkr�t�d�WdStdd�}|dkr�t�d�|WSWq�tk
r�}zt�||�WY�dSd}~XYq�Xnt�SdS)	Nz/check.plain?server_id={0}r;rorrzKey-based valid license found)�key_checkedz No valid key-based license found)r
rrrrrrrrrrrDr&rE�_get_license_info_by_ipr
rr)rrrrr r;Zlicense_typer!r"r"r#�license_info�s,





ryc
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|k�r t�
d�|d��n
t�
d�n|�dd�}t�
d�|��Wnhtk
�rz}	zt�|	|�W5d}	~	XYn:tk
�r�}
zt�
d�|
|����W5d}
~
XYnXdS)Nrnrrr;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)rwrrrr r;rzZexpires_strrr!rJr"r"r#rx�s<


(rxc
CsBtj�tjd�}tj�|�r dSz�t�t�	�d�}t
�t
�|�
���}z�|d��dkr�t
j|ddd�|ddkr�t�|d	|d
��t�d�|d	��WWdS|ddkr�t
j|ddd�t�d
��n
t�d��Wn.tk
�r}zt�|��W5d}~XYnXWn0tk
�r<}zt�|j��W5d}~XYnXdS)Nztrial-requestedz/trial.plainrrr{T)�
ensure_dirZexpiredrz�createdz3Requesting trial license for IP {0}. Please wait...ZnazInvalid LicenserP)r'�path�joinr�PATCH_CACHE�existsrrrrrrrrr|rXrZAlreadyTrialedExceptionrrr�
KcareErrorZUnableToGetLicenseExceptionr~rr;)Z
trial_markrr Zker!r"r"r#rts* rt)F)F)r)!rgr'r>r3r{rrrrrrr	r
r�py23rr
rr$r=rBr5rS�cachedrWr7rfrar^rkryrxrtr"r"r"r#�<module>s(,

(

	)
#