관리-도구
편집 파일: dbus.cpython-39.pyc
a ������g�V����������������������@���s����d�dl�Z�d�dlZd�dlZd�dlZd�dlZd�dlm��mZ�d�dl m Z �d�dlmZm Z mZ�ddlmZmZ�e�e�ZG�dd��d�Zdd ��ZG�d d��de�ZdS�)�����N)�systemd_ctypes)�Bus�BusError� introspection����)�Channel�ChannelErrorc�������������������@���s@���e�Zd�Zdd��Zdd��Zdd��Zddd �Zd d��Zddd �ZdS�)�InterfaceCachec�����������������C���s���i�|�_�t��|�_d�S��N)�cache�set�old��self��r����9/usr/lib/python3.9/site-packages/cockpit/channels/dbus.py�__init__t���s����zInterfaceCache.__init__c�����������������C���s���|�j��|��d�S�r ���)r����update)r���� interfacesr���r���r����injectx���s����zInterfaceCache.injectc���������������������sD���|��||dd�I�d�H�\}t�|�}dd��|�d�D��}|��|��|S�)Nz#org.freedesktop.DBus.IntrospectableZ Introspectc�����������������S���s���i�|�]}|j�d��t�|��qS�)�name)Zattribr���Zparse_interface)�.0�tagr���r���r���� <dictcomp>���������z2InterfaceCache.introspect_path.<locals>.<dictcomp>� interface)�call_method_async�ETZ fromstring�findallr���)r����bus�destination�object_pathZxml�etr���r���r���r����introspect_path{���s����� zInterfaceCache.introspect_pathNc���������������������s`���z|�j�|�W�S��ty���Y�n0�|rT|rTz|��|||�I�d�H��W�n�tyR���Y�n0�|�j��|�S�r ���)r����KeyErrorr#���r����get�r����interface_namer���r ���r!���r���r���r���� get_interface����s����zInterfaceCache.get_interfacec���������������������s0���||�j�v�rd�S�|�j��|��|��||||�I�d�H�S�r ���)r ����addr(���r&���r���r���r����get_interface_if_new����s���� z#InterfaceCache.get_interface_if_newc���������������������sD���|���||||�I�d�H�}|d�u�r.td|��d���d�|d�|�d��S�)Nz Interface z is not found���methods�in)r(���r$����join)r���r'����methodr���r ���r!���r���r���r���r���� get_signature����s����zInterfaceCache.get_signature)NNN)NNN) �__name__� __module__�__qualname__r���r���r#���r(���r*���r0���r���r���r���r���r ���s���s��� r ���c�����������������C���s"���dd��|����D��|��|i��|<�d�S�)Nc�����������������S���s���i�|�]\}}||j��qS�r���)�value)r����k�vr���r���r���r�������r���z!notify_update.<locals>.<dictcomp>)�items� setdefault)�notify�pathr'����propsr���r���r���� notify_update����s����r<���c�������������������@���s����e�Zd�Zejdd�ZdZdZdZdZ dZ dd��Zdd��Zd d ��Z dd��Zd d��Zdd��Zdd��Zdd��Zdd��Zdd��Zdd��Zdd��ZdS�)�DBusChannelr���)�indentz dbus-json3Nc�������������� �������s����fdd���fdd�}��j�|dddd��jd��z$��j�dddd d ��j�I�d�H�\}W�n��ty��}�z�|jdkr�z$��j�ddddd ��jd�I�d�H��W�q��ty��}�z*t�d��j|j����jd�d��W�Y�d�}~q�d�}~0�0�nt�d��j|j��W�Y�d�}~nd�}~0�0��|��d�S�)Nc��������������������s �����j�|�kr|���_���j|�d��d�S�)N��owner)r@���� send_jsonr?���r���r���r���� send_owner����s���� z9DBusChannel.setup_name_owner_tracking.<locals>.send_ownerc��������������������s(���|�����\}}}��|dkr|nd�d��d�S�)Nr+���r?���)�get_body)�message�_nameZ_old�new)rB���r���r����handler����s����z6DBusChannel.setup_name_owner_tracking.<locals>.handlerzorg.freedesktop.DBusz/org/freedesktop/DBusZNameOwnerChanged)�senderr:���r����memberZarg0ZGetNameOwner�sz)org.freedesktop.DBus.Error.NameHasNoOwnerZStartServiceByNameZsur���z Failed to start service '%s': %sr?���z'Failed to get owner of service '%s': %s) �add_signal_handlerr���r���r���r����logger�debugrD���rA���)r���rG����unique_name�errorZstart_errorr���)r���rB���r����setup_name_owner_tracking����s8������ �$(z%DBusChannel.setup_name_owner_trackingc�������������� ������s���t�����_|�d���_g���_|�d�}|�d�}z�|d�ur||d�urT|dkrTtddd��t�d|��j��tj |��jd�ud ���_ n�|d kr�t�d��j����jjj ��_ n`|dkr�t�d ��j��t�����_ n>|dks�|d�u�r�t�d��j��t�����_ ntdd|��d�d��W�n@�t�yB�}�z&tdd|��d|���d�|�W�Y�d�}~n d�}~0�0�z��j �d�d��W�n6�t�y��}�z|jtjk�rx��W�Y�d�}~n d�}~0�0�t�����_��jd�u�r���fdd�}���|����n������d�S�)Nr���r����addressZnonezprotocol-errorz0only one of "bus" and "address" can be specified�rD���zget bus with address %s for %s)rQ���Z bus_clientZinternalzget internal bus for %sZsessionzget session bus for %s�systemzget system bus for %sz invalid bus "�"zfailed to connect to z bus: r���c���������������� �������sp�����j�4�I�d�H��H������I�d�H����jr4��j��jd��n���ddi��W�d����I�d�H��ql1�I�d�H�sb0����Y��d�S�)N)rN���Zproblemz not-found)�watch_processing_lockrP���r@����ready�closer���r���r���r���� get_ready��s ����z&DBusChannel.do_open.<locals>.get_ready)r ���r���r%���r����matchesr���rL���rM���r���rF���r���ZrouterZinternal_busZclientZdefault_userZdefault_system�OSErrorZattach_event�errnoZEBUSY�asyncio�LockrU����create_taskrV���)r����optionsr���rQ����exc�errrX���r���r���r����do_open����sB���� 0 zDBusChannel.do_openc��������������������s����t�f�i�|��}d|d<�d|vr2�jd�ur2�j|d<�|�d�dkrF|d=����fdd�}�jd�urzd|v�rz|d��jkrz|}n��}d�d d ��|���D���}����s�z�j�||�}W�q�W�q��ty����Y�q�0�q��j � |��d�S�)N�signal�typerH����path_namespace�/c��������������������s$����j�d�ur �j�|����kr ��|���d�S�r ���)r@���Z get_senderrR����rG���r���r���r����filter_owner��s����z4DBusChannel.add_signal_handler.<locals>.filter_owner�,c�����������������s���s"���|�]\}}|��d�|��d�V��qdS�)z='�'Nr���)r����keyr4���r���r���r���� <genexpr>��r���z1DBusChannel.add_signal_handler.<locals>.<genexpr>)�dictr���r%���r.���r7���Z is_closingr���� add_match�InterruptedErrorrY����append)r���rG����kwargs�rrh����funcZr_string�matchr���rg���r���rK��� ��s$���� zDBusChannel.add_signal_handlerc��������������������s$������fdd�}�j�|fi�|���d�S�)Nc��������������������s��������|����d�S�r ���)r^���rR���rg���r���r����sync_handler,��s����z:DBusChannel.add_async_signal_handler.<locals>.sync_handler)rK���)r���rG���rq���ru���r���rg���r����add_async_signal_handler+��s����z$DBusChannel.add_async_signal_handlerc�������������� �������sx��|d�\}}}}|��d�}|��d�}|��d�}|d�ur@|d9�}nd}|��d�} | d�u�rft|�dkrfd } | d�u��r\z0t�d ||��|�j�|||�j|�j|�I�d�H�} W�n��ty��} �z,|�j | jd| j ���gg|d��W�Y�d�} ~ d�S�d�} ~ 0��t�y���|�j d d|��d|��d�gg|d��Y�d�S��t�yZ�}�z(|�j dd|��gg|d��W�Y�d�}~d�S�d�}~0�0�z�|�jj |�j|||| g|�R���}|�jj||d�I�d�H�} |�j4�I�d�H��D�|�j | ���g||d�u�r�dnd�| �d�d��W�d����I�d�H���q�1�I�d�H��s�0����Y��W�nt�t�y<�} �z$|�j | j| j gg|d��W�Y�d�} ~ n@d�} ~ 0��t�yr���t�d|��|�j dt���gg|d��Y�n0�d�S�)N�call�id�flags�timeouti���l��������rd���r���r+���z%Doing introspection request for %s %szIntrospection: �rO���rx���z(org.freedesktop.DBus.Error.UnknownMethodzIntrospection data for method � z not availablezpython.error)rz����<T)�replyrx���ry���rd���zdo_call(%s): generic exception)r%����lenrL���rM���r���r0���r���r���r���rA���rD���r$���� ExceptionZmessage_new_method_callZ call_asyncrU���rC���� exception� traceback� format_exc)r���rD���r:����ifacer/����args�cookiery���rz���Z signaturerO���r`���Zmethod_callr~���r���r���r����do_call0��sT���� "�� �8,zDBusChannel.do_callc���������������������s6���|d�}t��d|����fdd�}��j|fi�|���d�S�)N� add-matchzadding match %sc�������������� �������sp���t��d����j4�I�d�H��>���j|����|����|����t|�����gd��W�d����I�d�H��ql1�I�d�H�sb0����Y��d�S�)Nz got match)rc���) rL���rM���rU���rA����get_pathr(���� get_member�listrC���rR���r���r���r���� match_hitm��s���� �z+DBusChannel.do_add_match.<locals>.match_hit)rL���rM���rv���)r���rD���rn���r����r���r���r����do_add_matchi��s���� zDBusChannel.do_add_matchc���������������������s�������fdd�}�j�||dd���j��j|dd�I�d�H�\}|���D�]f\}}|���D�]T\} } ��d�u�sj| ��krR�j�| �j�j|�I�d�H�}|r�|�| |i��t||| | ��qRqBd�S�)Nc����������� ��� �������sd��|�����}|dkr�|����\}}t�d||��i�}i�}�j4�I�d�H����|���D�]T\}}��d�u�sb|��krJ�j�|�j�j |�I�d�H�}|r�|� ||i��t||||��qJ�j|d���j|d��W�d����I�d�H��q�1�I�d�H�s�0����Y��n||dk�r`|����\}} t�d|| ���j4�I�d�H��2�|t �| �i}�j|d��W�d����I�d�H���q`1�I�d�H��sV0����Y��d�S�)NZInterfacesAddedzinterfaces added %s %s��meta�r9���ZInterfacesRemovedzinterfaces removed %s %s)r����rC���rL���rM���rU���r7���r���r*���r���r���r���r<���rA���rm����fromkeys) rD���rI���r:���Zinterface_propsr����r9���r���r;����mmr����r'���r���r���r���rG���~��s*����8 z6DBusChannel.setup_objectmanager_watch.<locals>.handlerz"org.freedesktop.DBus.ObjectManager)r:���r���ZGetManagedObjects) rv���r���r���r���r7���r���r*���r���r<���)r���r:���r'���r����r9���rG���Zobjects�pZifacesr����r;���r����r���r����r����setup_objectmanager_watchy��s ������z%DBusChannel.setup_objectmanager_watchc�������������� �������s������fdd�}��j����j��j|�I�d�H�}|d�ur@|�|�}||i}|�|��|r`��j|d|d��n��j|d|d��|D�]V} | �d�r�qtz2��j���j|ddd| �I�d�H�\} t ||| | ��W�qt�t y����Y�qt0�qtd�S�) Nc����������� ����������s ����j�4�I�d�H����|����}|����\}}}t�d||||��|D�]~}z&��j���j|ddd||�I�d�H�\}W�nJ�ty��}�z2t�d||��j|t |���W�Y�d�}~q<W�Y�d�}~n d�}~0�0�|||<�q<i�}t ||||����j|d��W�d����I�d�H���q1�I�d�H�s�0����Y��d�S�)NzNOTIFY: %s %s %s %s�org.freedesktop.DBus.PropertiesZGet�ssz+failed to fetch property %s.%s on %s %s: %sr����)rU���r����rC���rL���rM���r���r���r���r����strr<���rA���) rD���r:���r���r;���Zinvalids�invr~���r`���r9���r���r���r���rG������s&������" z-DBusChannel.setup_path_watch.<locals>.handlerr����)r���re���)r���r:���zorg.freedesktop.DBus.ZGetAllrJ���)r���r#���r���r���r%���r���rv���� startswithr���r<���r���)r���r:���r'���Zrecursive_propsr����r9���rG���Z this_metar���r���r;���r���r���r����setup_path_watch���s4���� �� �zDBusChannel.setup_path_watchc�������������� �������s|��|d�}|��d�}|��d�}|��d�}|��d�}|p6|}||k}|d�u�sP|d�u�r�t�d|��|�jddgg|d ��|�jg�|d ��d�S�z�|�j4�I�d�H��|�i�}i�} |��||||| �I�d�H��|r�|��|||| �I�d�H��|�j|d��|�j| d��|�jg�|d�d ��W�d����I�d�H���q&1�I�d�H��s0����Y��W�nN�t�yv�} �z4t�d || j��|�j| j | jgg|d ��W�Y�d�} ~ n d�} ~ 0�0�d�S�)N�watchr:���re���r���rx���z#ignored incomplete watch request %szx.y.zzNot Implementedr{���)r~���rx���r����r����z#do_watch(%s) caught D-Bus error: %s) r%���rL���rM���rA���rU���r����r����r���rD���r���)r���rD���r����r:���re���r'���r����� recursiver����r9���rO���r���r���r����do_watch���s2���� DzDBusChannel.do_watchc���������������������s���|�j��|d���d�S�)Nr����)r���r���)r���rD���r���r���r����do_meta���s����zDBusChannel.do_metac�����������������C���s����t��|�}t�d|�j|��d|v�r4|��|��|���n^d|v�rN|��|��|���nDd|v�rh|��|��|���n*d|v�r�|��|�� |���nt�d|��d�S�d�S�)Nzreceive dbus request %s %srw���r����r����r����zignored dbus request %s) �json�loadsrL���rM���r���r^���r����r����r����r����)r����datarD���r���r���r����do_data���s���� zDBusChannel.do_datac�����������������C���s&���|�j�D�]}|����qg�|�_�|�����d�S�r ���)rY����cancelrW���)r���Zslotr���r���r����do_close��s���� zDBusChannel.do_close)r1���r2���r3���r���ZJSONEncoderZjson_encoderZpayloadrY���r���r���r@���rP���rb���rK���rv���r����r����r����r����r����r����r����r����r���r���r���r���r=�������s$���(39*0r=���)r\���r[���r����Zloggingr����Zxml.etree.ElementTreeZetreeZElementTreer���Zcockpit._vendorr���Zcockpit._vendor.systemd_ctypesr���r���r���Zchannelr���r���Z getLoggerr1���rL���r ���r<���r=���r���r���r���r����<module>%���s��� B2