U
    @†6^Ð  ã                   @   s@   d dl Z d dlZd dlZd dlmZmZmZ G dd„ deƒZdS )é    N)Ú
SpiderFootÚSpiderFootPluginÚSpiderFootEventc                   @   sN   e Zd ZdZi Zi ZdZdZeƒ fdd„Z	dd„ Z
dd„ Zd	d
„ Zdd„ ZdS )Úsfp_gravatarzaGravatar:Footprint,Investigate,Passive:Social Media::Retrieve user information from Gravatar API.Nc                 C   sD   || _ d| _|  ¡ | _|  ¡ | _t| ¡ ƒD ]}|| | j|< q,d S )NZGravatar)ÚsfÚ__dataSource__ÚtempStorageÚresultsÚreportedUsersÚlistÚkeysÚopts)ÚselfÚsfcÚuserOptsÚopt© r   ú7/var/www/spiderfoot.crq.systems/modules/sfp_gravatar.pyÚsetup!   s    

zsfp_gravatar.setupc                 C   s   dgS )NÚ	EMAILADDRr   ©r   r   r   r   ÚwatchedEvents+   s    zsfp_gravatar.watchedEventsc                 C   s   ddddddddgS )	NÚRAW_RIR_DATAÚ
HUMAN_NAMEÚUSERNAMEr   ÚPHONE_NUMBERÚGEOINFOÚACCOUNT_EXTERNAL_OWNEDÚSOCIAL_MEDIAr   r   r   r   r   ÚproducedEvents/   s       þzsfp_gravatar.producedEventsc              
   C   s  t  |jddd ¡ ¡ ¡ }d}| jjd| d | | jd | jd d	}t 	d
¡ |d d krp| j 
d¡ d S |d dkr€d S zt |d ¡}W n< tk
rÎ } z| j 
dt|ƒ ¡ W Y ¢d S d }~X Y nX | d¡d ksðt| d¡ƒdkrôd S | d¡d S )Nzutf-8Úreplace)ÚerrorsÚjsonzhttps://secure.gravatar.com/Ú.Ú_fetchtimeoutÚ
_useragent)ÚtimeoutÚ	useragenté   ÚcontentzNo response from gravatar.comÚcodeÚ200z Error processing JSON response: Úentryr   )ÚhashlibÚmd5ÚencodeÚlowerÚ	hexdigestr   ÚfetchUrlr   ÚtimeÚsleepÚdebugr"   ÚloadsÚBaseExceptionÚstrÚgetÚlen)r   ÚqryZ
email_hashÚoutputÚresÚdataÚer   r   r   Úquery7   s(    þ
 zsfp_gravatar.queryc                 C   s  |j }|j}|j}|| jkr d S d| j|< | j d| d | ¡ |  |¡}|d krh| j d| ¡ d S tdt|ƒ| j	|ƒ}|  
|¡ | d¡d k	rÂ| d¡}td|| j	|ƒ}|  
|¡ d| j|< tƒ }| d¡d k	rBt| d¡ƒtkrü| | d¡¡ n
| d¡}|D ]6}	|	 d	¡d k	r
td
|	 d	¡| j	|ƒ}|  
|¡ q
| d¡d k	r”| d¡D ]6}
|
 d¡d k	r\td|
 d¡| j	|ƒ}|  
|¡ q\| d¡d k	rö| d¡D ]F}| d¡d k	r®| d¡|kr®td| d¡| j	|ƒ}|  
|¡ q®| d¡d k	r| d¡D ]~}| d¡}|d kr,q| d¡ ¡ d | }td|| j	|ƒ}|  
|¡ || jkrtd|| j	|ƒ}|  
|¡ d| j|< q| d¡d k	r| d¡D ]\}| d¡}| d¡}|d k	rª|d k	rª| ¡ d | d }td|| j	|ƒ}|  
|¡ qªd S )NTzReceived event, z, from zNo user information found for r   ZpreferredUsernamer   ÚnameÚ	formattedr   ZphoneNumbersÚvaluer   Úemailsr   ÚimsÚtypez (Instant Messenger)
r   ZaccountsÚurlÚ	shortnamez	: <SFURL>z</SFURL>r   )Ú	eventTypeÚmoduler>   r	   r   r5   r@   r   r8   Ú__name__ÚnotifyListenersr9   r
   r   rF   ÚappendÚ
capitalize)r   ÚeventÚ	eventNameÚsrcModuleNameÚ	eventDatar>   ÚevtÚunÚnamesrA   ÚnumberÚemailÚimÚvÚtZaccountrG   Úplatformr   r   r   ÚhandleEventT   sr    







 





zsfp_gravatar.handleEvent)rK   Ú
__module__Ú__qualname__Ú__doc__r   Úoptdescsr	   r
   Údictr   r   r   r@   r\   r   r   r   r   r      s   
r   )r"   r-   r3   Úsflibr   r   r   r   r   r   r   r   Ú<module>   s   