3
@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   sH   || _ d| _| j | _| j | _x"t|j D ]}|| | j|< q.W 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|jdddj j }d}| jjd| d | | jd | jd d	}tj	d
 |d d krp| jj
d d S |d dkrd S ytj|d }W n4 tk
r } z| jj
dt|  d S d }~X nX |jdd kst|jddkrd S |j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jd| d |  | j|}|d krh| jjd|  d S tdt|| j	|}| j
| |jdd k	r|jd}td|| j	|}| j
| d| j|< t }|jdd k	rFt|jdtkr|j|jd n
|jd}x>|D ]6}	|	jd	d k	rtd
|	jd	| j	|}| j
| qW |jdd k	rxD|jdD ]6}
|
jdd k	rbtd|
jd| j	|}| j
| qbW |jdd k	rxT|jdD ]F}|jdd k	r|jd|krtd|jd| j	|}| j
| qW |jdd k	rx|jdD ]~}|jd}|d kr:q|jdj d | }td|| j	|}| j
| || jkrtd|| j	|}| j
| d| j|< qW |jdd k	rxj|jdD ]\}|jd}|jd}|d k	r|d k	r|j d | d }td|| j	|}| j
| qW 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   r4   r?   r   r7   __name__notifyListenersr8   r
   r   rE   append
capitalize)r   event	eventNamesrcModuleName	eventDatar=   evtunnamesr@   numberemailimvtZaccountrF   platformr   r   r   handleEventT   sr    








 





zsfp_gravatar.handleEvent)rJ   
__module____qualname____doc__r   optdescsr	   r
   dictr   r   r   r?   r[   r   r   r   r   r      s   
r   )r!   r,   r2   sflibr   r   r   r   r   r   r   r   <module>   s   