HEX
Server: LiteSpeed
System: Linux kapuas.iixcp.rumahweb.net 5.14.0-427.42.1.el9_4.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Nov 1 14:58:02 EDT 2024 x86_64
User: mirz4654 (1666)
PHP: 8.1.33
Disabled: system,exec,escapeshellarg,escapeshellcmd,passthru,proc_close,proc_get_status,proc_nice,proc_open,proc_terminate,shell_exec,popen,pclose,dl,pfsockopen,leak,apache_child_terminate,posix_kill,posix_mkfifo,posix_setsid,posix_setuid,posix_setpgid,ini_alter,show_source,define_syslog_variables,symlink,syslog,openlog,openlog,closelog,ocinumcols,listen,chgrp,apache_note,apache_setenv,debugger_on,debugger_off,ftp_exec,dll,ftp,myshellexec,socket_bind,mail,posix_getwpuid
Upload Files
File: //usr/lib/python3.9/site-packages/pycriu/__pycache__/criu.cpython-39.pyc
a

k�x]!�@s�ddlZddlZddlZddlZddlZddlmZGdd�d�ZGdd�de�Z	Gdd�de�Z
Gdd	�d	e�ZGd
d�de�Z
Gdd
�d
e
�ZGdd�de
�ZGdd�d�ZdS)�Nc@s8eZdZdZdZdZdZdZdZdZ	dd�Z
dd	�ZdS)
�
_criu_commz/
    Base class for communication classes.
    r��NcCsdS)z�
        Connect to criu and return socket object.
        daemon -- is for whether or not criu should daemonize if executing criu from binary(comm_bin).
        N���self�daemonrr�//usr/lib/python3.9/site-packages/pycriu/criu.py�connectsz_criu_comm.connectcCsdS)z'
        Disconnect from criu.
        Nr�rrrr	�
disconnectsz_criu_comm.disconnect)�__name__�
__module__�__qualname__�__doc__�COMM_SK�COMM_FD�COMM_BIN�	comm_type�comm�skr
rrrrr	rsrc@s(eZdZdZdd�Zdd�Zdd�ZdS)	�
_criu_comm_skz.
    Communication class for unix socket.
    cCs|j|_||_dS�N)rrr)rZsk_pathrrr	�__init__*sz_criu_comm_sk.__init__cCs&t�tjtj�|_|j�|j�|jSr)�socket�AF_UNIX�SOCK_SEQPACKETrr
rrrrr	r
.sz_criu_comm_sk.connectcCs|j��dSr�r�closerrrr	r4sz_criu_comm_sk.disconnectN�r
rrrrr
rrrrr	r%src@s(eZdZdZdd�Zdd�Zdd�ZdS)	�
_criu_comm_fdz2
    Communication class for file descriptor.
    cCs|j|_||_dSr)rrr�r�fdrrr	r=sz_criu_comm_fd.__init__cCst�|jtjtj�|_|jSr)rZfromfdrrrrrrrr	r
As�z_criu_comm_fd.connectcCs|j��dSrrrrrr	rGsz_criu_comm_fd.disconnectNrrrrr	r 8sr c@s(eZdZdZdd�Zdd�Zdd�ZdS)	�_criu_comm_binz)
    Communication class for binary.
    cCs|j|_||_d|_d|_dSr)rrr�swrkr)rZbin_pathrrr	rPsz_criu_comm_bin.__init__cst�tjtj��t��dtj�}t��dtj|tjB�t��dtj�}t��dtj|tj@�|�_t	�
�}|dkrƇ�fdd�}|r�t	�
�}|dkr�t	��|�q�t	�d�q�|�n|r�t	�
|d��d��t�d�d�d��d�_�d�_�jS)Nrrcsht�d�t�d�t�d��d�t�dt����t��j�jdd�d��g�t�	d�dS)Nrrr�ir$z%d)
�osr�send�struct�pack�getpid�execvr�fileno�_exitr�Zcssrrr	�	exec_criuds


��z)_criu_comm_bin.connect.<locals>.exec_criur%�)rZ
socketpairrr�fcntlZF_GETFDZF_SETFDZ
FD_CLOEXECrr&�fork�setsidr-�waitpidrr(�unpack�recvr$r)rr�flags�pr/rr.r	r
Vs,
z_criu_comm_bin.connectcCs"|j��|jst�|jd�dS)Nr)rrrr&r4r$rrrr	r�s
z_criu_comm_bin.disconnectNrrrrr	r#Ks0r#c@s eZdZdZdZdZdd�ZdS)�
CRIUExceptionz?
    Exception class for handling and storing criu errors.
    NcCs|jSr)�_strrrrr	�__str__�szCRIUException.__str__)r
rrr�typr:r;rrrr	r9�sr9c@seZdZdZdd�ZdS)�CRIUExceptionInternalzC
    Exception class for handling and storing internal errors.
    cCs"||_dtj�|j�|f|_dS)Nz!%s failed with internal error: %s)r<�rpc�
criu_req_type�Namer:)rr<�srrr	r�s�zCRIUExceptionInternal.__init__N)r
rrrrrrrr	r=�sr=c@s eZdZdZdd�Zdd�ZdS)�CRIUExceptionExternalzC
    Exception class for handling and storing criu RPC errors.
    cCs ||_||_||_|��|_dSr)r<�resp_typ�errno�_gen_error_strr:)rZreq_typrCrDrrr	r�szCRIUExceptionExternal.__init__cCs�dtj�|j�f}|j|jkr0|d|jf7}|d|jf7}|jtjkrT|d7}|jtjkrt|jtjkrt|d7}|jtj	kr�|jtj
kr�|d7}|d7}|S)Nz%s failed: zUnexpected response type %d: zError(%d): zBad optionszNo process with such pidz)Process with requested pid already existsZUnknown)r>r?r@r<rCrDZEBADRQC�DUMPZESRCH�RESTOREZEEXIST)rrArrr	rE�sz$CRIUExceptionExternal._gen_error_strN)r
rrrrrErrrr	rB�srBc@speZdZdZdZdZdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�Zdd�Z
dd�Zdd�Zdd�ZdS)�criuz 
    Call criu through RPC.
    NcCs|�d�t��|_d|_dS)NrH)�
use_binaryr>Z	criu_opts�optsrrrrr	r�s

z
criu.__init__cCst|�|_dS)zZ
        Access criu using unix socket which that belongs to criu service daemon.
        N)r�_comm)rZsk_namerrr	�use_sk�szcriu.use_skcCst|�|_dS)z0
        Access criu using provided fd.
        N)r rKr!rrr	�use_fd�szcriu.use_fdcCst|�|_dS)zO
        Access criu by execing it using provided path to criu binary.
        N)r#rK)rZbin_namerrr	rI�szcriu.use_binaryc
Cs�d}|jtjkr |j�d�s d}zx|js6|j�|�}n|j}|jrH||_|�	|�
��|�t|�dt
jt
jB���}|js�|j��t��}|�|�Wn4ty�}zt|jt|���WYd}~n
d}~00|S)zA
        As simple as send request and receive response.
        F�pidTrN)�typer>rFrJZHasFieldrrKr
�	keep_openr'ZSerializeToStringr6�lenrZ	MSG_TRUNCZMSG_PEEKrZ	criu_respZParseFromString�	Exceptionr=�str)r�reqrrA�buf�resp�errr	�_send_req_and_recv_resp�s$
&zcriu._send_req_and_recv_respcCs6t��}tj|_|�|�}|js2t|j|j|j��dS)zB
        Checks whether the kernel support is up-to-date.
        N)r>�criu_reqZCHECKrOrX�successrB�cr_errno�rrTrVrrr	�checks

z
criu.checkcCsFt��}tj|_|j�|j�|�|�}|js@t|j|j|j	��|j
S�zC
        Checkpoint a process/tree identified by opts.pid.
        )r>rYrFrOrJ�	MergeFromrXrZrBr[�dumpr\rrr	r`s
z	criu.dumpcCsFt��}tj|_|j�|j�|�|�}|js@t|j|j|j	��|j
Sr^)r>rYZPRE_DUMPrOrJr_rXrZrBr[r`r\rrr	�pre_dump"s
z
criu.pre_dumpcCsFt��}tj|_|j�|j�|�|�}|js@t|j|j|j	��|j
S)z)
        Restore a process/tree.
        )r>rYrGrOrJr_rXrZrBr[�restorer\rrr	rb1s
zcriu.restorecCsLt��}tj|_|j�|j�d|_|�|�}|jsFt	|j|j|j
��|jS)NT)r>rYZPAGE_SERVER_CHLDrOrJr_rPrXrZrBr[Zpsr\rrr	�page_server_chld@s
zcriu.page_server_chldcCs>t��}tj|_||_|�|�}|js8t|j|j|j��|j	Sr)
r>rYZWAIT_PIDrOrNrXrZrBr[�status)rrNrTrVrrr	�wait_pidMs
z
criu.wait_pid)r
rrrrJrKrrLrMrIrXr]r`rarbrcrerrrr	rH�s#
rH)rrDr1r&r(Zpycriu.rpc_pb2Zrpc_pb2r>rrr r#rRr9r=rBrHrrrr	�<module>sA#