o
    œ¨ÊhÛ  ã                   @   s¬   d dl mZ d dlZd dlZddlmZ ddlmZ ddlmZ ddl	m
Z
 zd dlZd dlmZ W n ey;   Y n	 eyC   Y nw G d	d
„ d
eƒZG dd„ deƒZdS )é    )Úabsolute_importNé   )ÚKeyringBackend)ÚPasswordDeleteError)ÚPasswordSetError)Ú
properties)ÚDBusGMainLoopc                       s|   e Zd ZdZej ejd ¡pdZ	dZ
dZdZejedd„ ƒƒZ‡ fd	d
„Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Z‡  ZS )ÚDBusKeyringz!
    KDE KWallet 5 via D-Bus
    r   zPython keyring libraryNzorg.kde.kwalletd5z/modules/kwalletd5c              
   C   sŽ   dt ƒ vr	tdƒ‚z	tjtƒ d�}W n tjy% } zt| ¡ ƒ‚d }~ww z| | j| j	¡ W dS  tjyF   d}|j
| jd�}t|ƒ‚w )NÚdbuszpython-dbus not installed©Úmainloopzcannot connect to {bus_name})Úbus_namegš™™™™™@)ÚglobalsÚRuntimeErrorr
   Ú
SessionBusr   ÚDBusExceptionÚget_dbus_messageÚ
get_objectr   Úobject_pathÚformat)ÚclsÚbusÚexcÚtmplÚmsg© r   úJ/var/www/html/env/lib/python3.10/site-packages/keyring/backends/kwallet.pyÚpriority   s    
€ÿüýzDBusKeyring.priorityc                    s    t t| ƒj|i |¤Ž d| _d S )Néÿÿÿÿ)Úsuperr	   Ú__init__Úhandle)ÚselfÚargÚkw©Ú	__class__r   r   r    0   s   
zDBusKeyring.__init__c           	      C   sÐ   d}g }| j  | j|| j¡rd| j  | j|d| j¡}| ¡ D ]-}|d }|d }| dd¡\}}| j  | j|||| j¡}|dkrJ| j  | j||| j¡ q| j  | j|d| j¡}|sf| j  	| j|| j¡ d S d S d S )NÚPythonz*@*r   é   ú@Ú*)
ÚifaceÚ	hasFolderr!   ÚappidÚreadPasswordListÚitemsÚrsplitÚwritePasswordÚremoveEntryÚremoveFolder)	r"   ÚserviceÚ
old_folderÚ
entry_listÚentryÚkeyÚpasswordÚusernameÚretr   r   r   Ú_migrate4   s2   ÿÿÿ€ÿîzDBusKeyring._migratec                 C   s”   | j dkrdS tjtƒ d�}d}z| | j| j¡}t |d¡| _| j 	| j 
¡ || j¡| _ W n tjy;   d| _ Y nw | j dk rCdS |  |¡ dS )Nr   Tr   zorg.kde.KWalletr   F)r!   r
   r   r   r   r   r   Ú	Interfacer+   ÚopenÚnetworkWalletr-   r   r<   )r"   r4   r   ÚwIdÚ
remote_objr   r   r   Ú	connectedK   s"   

ÿ
ÿ

zDBusKeyring.connectedc                 C   sF   |   |¡sdS | j | j||| j¡sdS | j | j||| j¡}t|ƒS )z5Get password of the username for the service
        N)rB   r+   ÚhasEntryr!   r-   ÚreadPasswordÚstr©r"   r4   r:   r9   r   r   r   Úget_password\   s   
ÿzDBusKeyring.get_passwordc                 C   s.   |   |¡s	tdƒ‚| j | j|||| j¡ dS )z5Set password for the username of the service
        úCancelled by userN)rB   r   r+   r1   r!   r-   rF   r   r   r   Úset_passwordh   s
   
ÿzDBusKeyring.set_passwordc                 C   sJ   |   |¡s	tdƒ‚| j | j||| j¡stdƒ‚| j | j||| j¡ dS )z=Delete the password for the username of the service.
        rH   zPassword not foundN)rB   r   r+   rC   r!   r-   r2   )r"   r4   r:   r   r   r   Údelete_passwordq   s
   
zDBusKeyring.delete_password)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚosÚpathÚbasenameÚsysÚargvr-   Úwalletr   r   r   ÚClassPropertyÚclassmethodr   r    r<   rB   rG   rI   rJ   Ú__classcell__r   r   r%   r   r	      s    	r	   c                       s2   e Zd ZdZdZdZeje‡ fdd„ƒƒZ	‡  Z
S )ÚDBusKeyringKWallet4z!
    KDE KWallet 4 via D-Bus
    zorg.kde.kwalletdz/modules/kwalletdc                    s   t t| ƒjd S )Nr(   )r   rX   r   )r   r%   r   r   r   „   s   zDBusKeyringKWallet4.priority)rK   rL   rM   rN   r   r   r   rU   rV   r   rW   r   r   r%   r   rX   |   s    rX   )Ú
__future__r   rR   rO   Úbackendr   Úerrorsr   r   Úutilr   r
   Údbus.mainloop.glibr   ÚImportErrorÚAttributeErrorr	   rX   r   r   r   r   Ú<module>   s"    þg