o
    _                     @   s,   d dl Z d dlZej ZG dd dZdS )    Nc                   @   s   e Zd Zdd Zdd ZdS )polkitc                 C   s4   t  | _| jjdddd| _t j| jdd| _d S )Nzorg.freedesktop.PolicyKit1z%/org/freedesktop/PolicyKit1/AuthorityT)follow_name_owner_changesz$org.freedesktop.PolicyKit1.Authority)dbus_interface)dbus	SystemBus_bus
get_object_proxy	Interface
_authority)self r   4/usr/lib/python3/dist-packages/tuned/utils/polkit.py__init__   s   
zpolkit.__init__c           
      C   s   |du s|du r
dS i }d}d}dd|if}z| j |||||d }W nS tjjtfyw } zCtd|  z| j	|}	W n! tjjy` } ztd	|  W Y d}~W Y d}~d
S d}~ww |	dkrlW Y d}~dS W Y d}~dS d}~ww |r|dS dS )zCheck authorization, return codes:
			1  - authorized
			2  - polkit error, but authorized with fallback method
			0  - unauthorized
			-1 - polkit error and unauthorized by the fallback method
			-2 - polkit error and unable to use the fallback method
		NF    zsystem-bus-namenamer   zerror querying polkit: %sz,error using falback authorization method: %s   )
r   CheckAuthorizationr   
exceptionsDBusException
ValueErrorlogerrorr   get_unix_user)
r   sender	action_iddetailsflagscancellation_idsubjectreteuidr   r   r   check_authorization   s.   	zpolkit.check_authorizationN)__name__
__module____qualname__r   r&   r   r   r   r   r      s    r   )r   
tuned.logstunedlogsgetr   r   r   r   r   r   <module>   s    
