Sindbad~EG File Manager

Current Path : /proc/2715199/root/usr/libexec/kcare/python/kcarectl/__pycache__/
Upload File :
Current File : //proc/2715199/root/usr/libexec/kcare/python/kcarectl/__pycache__/auth.cpython-36.pyc

3

��"hz/�@s>ddlZddlZddlZddlmZddlmZddlmZddlmZddlmZddlm	Z	dd	lm
Z
dd
lmZm
Z
mZmZdZdZd
Zdd�Zdd�Zdd�Ze
jdd��Zdd�Zdd�Zd5dd�Zdd�Zdd �Zd6d!d"�Ze
jd#d$��Zd%d&�Zd'd(�Z d)d*�Z!d+d,�Z"d-d.�Z#d/d0�Z$d7d1d2�Z%d3d4�Z&dS)8�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.jsoncCsltjjt�sdSttd��H}x@|D]8}|jd�\}}}|j�dkrJ|j�Stjdj	t���q"WWdQRXdS)N�r�=�	server_idzUnable to parse {0}.)
�os�path�exists�SYSTEMID�open�	partition�stripr�
KcareError�format)�fd�line�param�_�value�r�*/usr/libexec/kcare/python/kcarectl/auth.py�	_systemids
r!c	Cs2tjjt�sdSttd��}|j�j�SQRXdS)Nr)rrr�
ALMA_SYSTEMIDr�readliner)�frrr �_alma_systemid$sr%cCs`tjjt�sdSi}tt��4}|j�}|rLyt|�}Wntk
rJYnXWdQRX|jd�S)N�id)	rrr�IM360_LICENSE_FILEr�readr�	Exception�get)�datar$�contentrrr �_im360_systemid+s
r-cCst�pt�pt�S)zqGet server_id or None if not present.

    Lookup order: SYSTEMID then IM360_LICENSE_FILE then ALMA_SYSTEMID
    )r!r-r%rrrr �get_serverid:sr.cCstjt�dS)N)r�unlinkrrrrr �_rm_serveridCsr0cCstjtdj|��dS)Nzserver_id={0}
)r	�atomic_writerr)rrrr �_set_server_idGsr2FcCs�d}y�t�}|dkr&|s"tjd�dStjdj|�}tj|�}tj	|j
��}tj|�}|ddkrzt�|s�tj
d�n |s�tj|�tjd|d�Wn2tk
r�}z|s�tj||�WYdd}~XnXdS)Nz1Error unregistering server: cannot find server idz&/unregister_server.plain?server_id={0}�success�truezServer was unregisteredzError unregistering server: �message)r.r�logerrorr�REGISTRATION_URLrr�urlopenr	�nstrr(�data_as_dictr0�loginfor
�print_cln_http_error)Zsilent�urlr�responser,�res�errr �
unregisterKs*



rAcCs�td�tj�}|dkrdStj�tj�}ddl}|dkrF|jd�|jj�tdd�}tdd�}tj	|j
�|jj
��tj	|j
�|jj
��tj	|j
�|jj
��xBt
jd	�t|�\}}}|dkr�|r�t|�t|�|jd�q�WdS)
NzHRegister auto-retry has been enabled, the system can be registered laterrz	/dev/nullrza+�<�ii )�printr�fork�setsid�sys�exit�stdout�flushr�dup2�fileno�stdin�stderr�time�sleep�
_try_registerr2�_set_auth_token)r=�pidrG�si�so�coder�
auth_tokenrrr �_register_retrycs,




rXcCs�yFtj|�}|jjtjd�}tjtj|j	���}t
|d�|jd�|fSttfk
rv}zt
j||�dSd}~Xn$tk
r�t
jjd|�dSXdS)NrVrz)Exception while trying to register URL %s)NNN)NNN)rr8�headersr*r�AUTH_TOKEN_HEADERr	r:r9r(�intr
rrr<r)�kcarelog�	exception)r=r>rWr?r@rrr rQ}s
rQcCs2ytd�Wn tk
r,tjjd�YnXtj�}td|fd|fg�}djt	j
|�}t|�\}}}|dkr�t|�t
|�tjd�dS|dkr�tjd	�nv|d
kr�tjd�nb|dkr�tjd
�nN|dkr�tjd�n:|dkr�tjd�n&|dk�rtjd�ntjdj|��|�r(t|�dS|�p0dS)NTz9Exception while trying to unregister URL before register.�hostname�keyz{0}/register_server.plain?{1}rzServer RegisteredrzAccount LockedrCzInvalid 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}���)rAr)rr\r]r�get_hostnamer
rrr7rQr2rRr;r6rX)r_�retryr^�queryr=rVrrWrrr �register�s>

rhcCstjtj�S)N)r	�try_to_readr�AUTH_TOKEN_DUMP_PATHrrrr �_get_auth_token�srkcCs|sdStjtj|�dS)N)r	r1rrj)rWrrr rR�srRcOsv|jdd�}|jdd�rt}ntj}tj|�r@tj|f|�|�Stj|t�t�|d�}t	j
|dd�tj�|f|�|�S)N�method�
check_licenseT)rl�)�count)�pop�_check_auth_retryr�check_urlopen_retry�is_local_url�urlopen_base�http_request�get_http_auth_stringrkr	rf)r=�args�kwargsrl�check�requestrrr �urlopen_auth�s
r{cCs,t�}|r(tjtjtjdj|d����SdS)Nz{0}:{1}Z
kernelcare)r.r	r9�base64�	b64encode�bstrr)rrrr rv�srvcCs8t|t�r&|jdkrt|�S|jdkSt|t�r4dSdS)N��i�T)rr�)�
isinstancer
rV�_handle_forbiddenr)r@�staterrr rq�s



rqcCs�d|krdStjr�t�}|r2tjddj|�}n
tjd}y&tjtj|dd�j	��}tj
|�}Wn0tk
r�}ztj
||dd�dSd}~XnX|s�|jd	�r�tjjd
j|��dS|d	dkr�d|d<tjd
�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.
    �licenseTz/check.plainz?server_id={0}F)�retry_on_500)rINrVzUnexpected CLN response: {0}�0�1z$Unable to access server. Retrying...)r�r�)r�CHECK_CLN_LICENSE_STATUSr.r7rr	r9rr8r(r:rrr<r*r\�errorr6�_register_trial)r�rr=r,�info�exrrr r��s*

r�cCs�t�}|r�tjdj|�}y�tj|�}tj|j��}tj	|�}|sP|j
d�rbtdj|��dSt|d�}|dkr�td�dSt
dd�}|dkr�td�|SWq�tk
r�}ztj||�dSd}~Xq�Xnt
�SdS)	Nz/check.plain?server_id={0}rVzUnexpected CLN response: {0}rrzKey-based valid license found)�key_checkedz No valid key-based license found)r.rr7rrr8r	r9r(r:r*rDr[�_get_license_info_by_ipr
rr<)rr=r>r,r?rVZlicense_typer@rrr �license_infos,


r�cCs�tjd}�y*tj|�}tj|j��}tj|�}|dj�dk�rt	|d�}|dkrlt
dj|d��dS|dkr�|d}tj|d	�j
d
�}t
dj||��dS|dkr�|dkr�|d}tj|d	�j
d
�}t
d
j||��|dko�|dk�r4d|k�rt
dj|d��nt
d�n|jdd�}t
dj|��Wnftk
�rf}	ztj|	|�WYdd}	~	Xn8tk
�r�}
zt
dj|
|j���WYdd}
~
XnXdS)Nz/check.plainr3r4rVrzValid license found for IP {0}�iprZexpire_datez%Y-%m-%dz?You have a trial license for the IP {0} that will expire on {1}rCz0Your trial license for the IP {0} expired on {1}r`zThe IP {0} hasn't been licensedz This server hasn't been licensedr5�z"Error retrieving license info: {0}z1Unexpected CLN response, cannot find {0} key:
{1})rr7rr8r	r9r(r:�lowerr[rDr�parse_response_date�strftimer*r
rr<�KeyErrorr)r�r=r>r,r?rVr�Zexpires_strr5r@r_rrr r� s<




&r�cCs<tjjtjd�}tjj|�r dSy�tjtj	d�}t
jt
j|j
���}y�|dj�dkr�t
j|ddd�|ddkr�tj|d	|d
��tjdj|d	��dS|ddkr�t
j|ddd�tjd
��n
tjd��Wn.tk
�r}ztj|��WYdd}~XnXWn0tk
�r6}ztj|j��WYdd}~XnXdS)Nztrial-requestedz/trial.plainr3r4r�T)�
ensure_dirZexpiredr��createdz3Requesting trial license for IP {0}. Please wait...ZnazInvalid Licenserrd)rr�joinr�PATCH_CACHErrr8rr7r	r:r9r(r�r1r�AlreadyTrialedExceptionrr;rr�UnableToGetLicenseExceptionr�r
rV)Z
trial_markr>r?Zker@rrr r�Cs* r�)F)F)r)'r|rrOr�rrrrrrr	�py23r
rrr
rr"r'r!r%r-�cachedr.r0r2rArXrQrhrkrRr{rvrqr�r�r�r�rrrr �<module>s@	

(
	)
#

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists