HEX
Server: Apache
System: Linux www3.pit.tblive.com 5.14.0-687.38.1.el9_8.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Aug 12 17:19:12 EDT 2026 x86_64
User: awaldron (1020)
PHP: 8.1.34
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //opt/cloudlinux/venv/lib64/python3.11/site-packages/__pycache__/cllicenselib.cpython-311.opt-1.pyc
�

rb�1̂�����ddlZddlZddlZddlZddlZddlZddlZddlZddlm	Z	m
Z
ddlZddl
mZdZdZdZdZej�e��ZdZej�ed	��Zej�ed
��Zej�ed��ZdZd
ZdZdZedd�edd�d�ZdZ Gd�d��Z!e!��Z"de#fd�Z$de#de%fd�Z&d�Z'd�Z(d�Z)d�Z*d�Z+d �Z,d!�Z-d"�Z.dS)#�N)�error�request)�mod_makedirsz/usr/sbin/rhn_checkz/usr/sbin/rhnreg_ksz--activationkey=-z/var/lve/lveinfo.verz/etc/sysconfig/rhn�systemidz	jwt.token�jwt_last_update_tsi��i@8z1/usr/share/cloudlinux/no_valid_license_screen.txtz3/usr/share/cloudlinux/license_out_of_date_email.txtz3Error: License out of date, email template missing.)�
template_file�	error_msgz3Error: No valid license found, template is missing.)�Email�NoValidz!https://cloudlinux.com/showip.phpc�N�eZdZdZdZdZed���Zd�Zd�Z	d�Z
d�Zd�ZdS)	�LicenseData�c�j�tj�t��r�tj�t��sdSttj�t����}|ttj����tz
krdStt��}||krdSdStj�t��rGtj�t��}|tj�|��kSdS)a�
        Update license when:

        in case JWT token present:
        - if no timestamp file with jwt token last update time
        - if jwt token was not updated during last 4 hours
        - if jwt token was updated later than our timestamp in file

        in case JWT token is not present, but systemid exists
        (fallback for licensing w/o token)
        - update license only if systemid was changed after last timestamp update

        when no jwt and no systemid - re-update license
        TF)�os�path�exists�	JWT_TOKEN�JWT_TOKEN_TIMESTAMP_FILE�int�getmtime�time�JWT_UPDATE_INTERVAL�read_time_from_file�RHN_SYSTEMID)�license_timestamp_file�rhn_updated�jwt_last_update_timestamps   �py/cllicenselib.py�_is_license_needs_updatez$LicenseData._is_license_needs_updateRs��� �7�>�>�)�$�$�		��7�>�>�":�;�;�
��t��b�g�.�.�y�9�9�:�:�K��S�����-�-�0C�C�C�C��t�(;�<T�(U�(U�%�(�;�6�6��t��5�
�7�>�>�,�'�'�	J��'�*�*�<�8�8�K����!1�!1�2H�!I�!I�I�I��t�c�Z�	t|��|_ttj����|jz
tkrG|�|��rt
��Stj�	t��SdS#ttj
f$rYdSwxYw)z�
        Checks license:
        1. Reads cache file with timestamp
        2. Ensures license must be re-checked:
            - if timestamp in cache file > CACHE_TIME ->
            check if we need to re-update licensing
        TF)r�_license_last_timestamprr�
CACHE_TIMEr�update_license_timestamp_filerrrr�IOError�structr)�selfrs  r�
check_licensezLicenseData.check_licenseqs���	�+>�?U�+V�+V�D�(��D�I�K�K� � �4�#?�?�:�M�M��0�0�1G�H�H�;�8�:�:�:��w�~�~�i�0�0�0��4�����&�	�	�	��5�5�	���s�A'B�*#B�B*�)B*c��|js�	tjt��5}|����d�����|_ddd��dS#1swxYwYdS#tj$r>}tdt|��z��tjd��Yd}~dSd}~wwxYwdS)N�utf-8zError: Get server IP. �)
�
_server_ipr�urlopen�SHOW_IP_LINK�read�decode�stripr�URLError�print�str�sys�exit)r'�response�es   r�get_ipzLicenseData.get_ip�s����	�
��_�\�2�2�N�h�&.�m�m�o�o�&<�&<�W�&E�&E�&K�&K�&M�&M�D�O�N�N�N�N�N�N�N�N�N�N�N�N����N�N�N�N�N�N���>�
�
�
��.��Q���7�8�8�8�����������������
����		�	s:�A;�?A.�!A;�.A2�2A;�5A2�6A;�;C�
3C�Cc�p�tj�|j���|��S)N)�datetime�
fromtimestampr"�strftime)r'�formats  r�date_formatzLicenseData.date_format�s+��� �.�.�t�/K�L�L�U�U�V\�]�]�]r c�&�	t|dd���5}|���|_ddd��dS#1swxYwYdS#t$r>}t	dt|��z��t
jd��Yd}~dSd}~wwxYw)N�rr*)�encodingz%Error: Failed to open template file. r+)�openr/�_letter_templater%r3r4r5r6)r'�template�fr8s    r�open_letter_templatez LicenseData.open_letter_template�s���	��h��g�6�6�6�
1�!�()������%�
1�
1�
1�
1�
1�
1�
1�
1�
1�
1�
1�
1����
1�
1�
1�
1�
1�
1���	�	�	��9�C��F�F�B�C�C�C��H�Q�K�K�K�K�K�K�K�K�K�����	���s4�A�;�A�?�A�?�A�
B�3B�Bc�h�tj��}|sdS|���tj|jd���}|jsh|j�dd���d|���dtj
�����d|��S|j�dd|�d	��z���d|���dtj
�����d|��S)
NT)�quotez
%LIC_DATE%rz%IP%z
%HOSTNAME%z%FROM%z since �	%b %d, %y)�detect�getCPAdminEmailr9�html�escaper,r"rD�replace�socket�gethostnamer?)r'�admin_email�safe_ips   r�
format_letterzLicenseData.format_letter�s���,�.�.���	��4����
�
�
��+�d�o�T�:�:�:���+�	��%�-�-�l�B�?�?�����)�)����v�'9�';�';�<�<����;�/�/�	
�
�!�)�)�,�	�D�DT�DT�U`�Da�Da�8a�b�b�
�W�V�W�
%�
%�
�W�\�6�#5�#7�#7�
8�
8�
�W�X�{�
+�
+�		
r N)
�__name__�
__module__�__qualname__r"r,rD�staticmethodrr(r9r?rGrT�r rr
r
Ms������� ���J�������\��<���,���^�^�^����
�
�
�
�
r r
�filec��t|d��5}tjd|�����dcddd��S#1swxYwYdS)N�rb�ir)rCr&�unpackr/)rZrFs  rrr�s���	
�d�D�	�	�/�Q��}�S�!�&�&�(�(�+�+�A�.�/�/�/�/�/�/�/�/�/�/�/�/����/�/�/�/�/�/s�-A�A�A�	timestampc��t|d��5}|�tjd|����ddd��dS#1swxYwYdS)N�wbr])rC�writer&�pack)rZr_rFs   r�write_time_to_filerd�s���	
�d�D�	�	�-�Q�	�����C��+�+�,�,�,�-�-�-�-�-�-�-�-�-�-�-�-����-�-�-�-�-�-s�)A�A�Ac	���	tj�t��st	td��tjtgt
jt
j	���5}|�
��|jdkr�ttttj������tj�t"��rDtt$ttj�t"������	ddd��dS	ddd��dS#1swxYwYdS#t(t*f$rYdSwxYw)N����stdout�stderrrTF)rr�isdir�LICENSE_TIMESTAMP_DIRr�
subprocess�Popen�RHN_CHECK_FILE�PIPE�STDOUT�communicate�
returncoderd�LICENSE_TIMESTAMP_FILErrrrrr�OSErrorr%)�procs rr$r$�s�����w�}�}�2�3�3�	7��.��6�6�6�
�
�
���?��$�
�
�
�	����������!�#�#�"�#9�3�t�y�{�{�;K�;K�L�L�L��7�>�>�)�,�,�c�&�'?��R�W�EU�EU�V_�E`�E`�Aa�Aa�b�b�b��	�	�	�	�	�	�	�	��	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	��
�W������u�u����sC�A*E�,B<E�(E�5E�6E�E�E�
E�E�E%�$E%c�0�	tjtdgtjtj���5}|���\}}ddd��n#1swxYwYt���|pdvS#ttf$rYdSwxYw)a�Return True if the installed rhnreg_ks advertises the --activationkey=- sentinel.

    Probed via `rhnreg_ks --help`; the literal `--activationkey=-` is a locale-stable
    option token (translators preserve option syntax), so the check is robust. stderr
    is merged into stdout in case the help text is emitted there. Best-effort: any
    failure to probe is treated as "unsupported" and the caller falls back to the
    legacy argv form.
    z--helprgNr F)
rlrm�RHN_UPDATE_NEW_KEYrorprq�RHN_ACTIVATIONKEY_STDIN�encodertr%)ru�out�_s   r�_rhnreg_supports_stdin_keyr|�s���	�
�
�
��*��?��$�
�
�
�	(���%�%�'�'�F�C��	(�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(����	(�	(�	(�	(�'�-�-�/�/�C�J�3�?�?���W������u�u����s4�2B�A�B�A�B�A� B�B�Bc	�(�	tj�t��st	td��t��r'ttdg}|dz���}n*tdtj���td|zdg}d}tj
||�tjndtjtj���5}|�|���\}}|jd	kr�t%t&t)t+j������tj�t.��rDt%t0t)tj�t.������td
��	ddd��dSt|�����	ddd��dS#1swxYwYdS#t6t8f$rtd
��YdSwxYw)Nrfz--force�
z�Warning: installed rhnreg_ks lacks the --activationkey=- stdin channel; passing the activation key on the command line, which is less secure. Upgrade rhn-client-tools to pass the key via stdin.)rZz--activationkey=)�stdinrhri)�inputr�OKTFz9Error: New key activation failed, please try again later.)rrrjrkrr|rwrxryr3r5rirlrmrorprqrrrdrsrrrrrrr1rtr%)�key�cmd�
stdin_payloadrurzr{s      r�update_license_with_keyr��sJ��)��w�}�}�2�3�3�	7��.��6�6�6�%�'�'�	!�&�'>�	�J�C� �4�Z�/�/�1�1�M�M�
�S��Z�	
�
�
�
�&�'9�C�'?��K�C� �M�
�
��%2�%>�*�/�/�D��?��$�	
�
�
�	�
��%�%�M�%�:�:�F�C����!�#�#�"�#9�3�t�y�{�{�;K�;K�L�L�L��7�>�>�)�,�,�c�&�'?��R�W�EU�EU�V_�E`�E`�Aa�Aa�b�b�b��d�����	�	�	�	�	�	�	�	�
�#�)�)�+�+�����	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	�� 
�W�����
�I�J�J�J��u�u����sC�CG-�CG �$G-�1"G �G-� G$�$G-�'G$�(G-�- H�Hc�8�tj�t��rt�t��Stj�t��s$tj�t��rt��SdS)NF)
rr�isfilers�Licenser(rrrr$rYr rr(r(sl��	�w�~�~�,�-�-�=��$�$�%;�<�<�<�
�w�~�~�i� � �/�B�G�N�N�<�$@�$@�/�,�.�.�.��5r c��|rdStj�t��rdt�d��zSdS)Nr�z5No valid license found, last successful check was on rJzNo valid license found.)rrr�rsr�r?)�is_valids r�last_license_checkr�*sG�����t�	�w�~�~�,�-�-�j�F��I\�I\�]h�Ii�Ii�i�i�$�$r c�6�ttd��S)Nr
��get_template_to_display�	TEMPLATESrYr r�get_email_templater�3s��"�9�W�#5�6�6�6r c�6�ttd��S)Nrr�rYr r�get_novalid_templater�7s��"�9�Y�#7�8�8�8r c���tj�|d��s|dSt��s9t�|d��t���SdS)Nrr	)rrr�r(r�rGrT)rEs rr�r�<sf��
�7�>�>�(�?�3�4�4�%���$�$��?�?�'��$�$�X�o�%>�?�?�?��$�$�&�&�&��4r )/r;rMrrPr&rlr5r�urllibrr�cldetectlibrK�clcommon.utilsrrnrwrxrsr�dirnamerk�
RHN_DIRECTORY�joinrrrr#r�NO_VALID_LICENSE_FOUND_TEMPLATE�"LICENSE_OUT_OF_DATE_EMAIL_TEMPLATEr�r.r
r�r4rrrdr$r|r�r(r�r�r�r�rYr r�<module>r�sI��8��������	�	�	�	�
�
�
�
�
�
�
�
�����
�
�
�
�����!�!�!�!�!�!�!�!�����'�'�'�'�'�'�&��*��.��/������(>�?�?��$�
��w�|�|�M�:�6�6���G�L�L���4�4�	��7�<�<�(=�?S�T�T��
�
���"U��%Z�"�<�J���
9�J���	
�	
�	�3��e
�e
�e
�e
�e
�e
�e
�e
�R�+�-�-��/�c�/�/�/�/�
-�S�-�S�-�-�-�-����(���,*�*�*�`���%�%�%�7�7�7�9�9�9�
����r