3
@6^                 @   s0   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               @   sV   e Zd ZdZddiZdd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_whoisologyz`Whoisology:Investigate,Passive:Search Engines:apikey:Reverse Whois lookups using Whoisology.com.api_key zWhoisology.com API key.NFc             C   s8   || _ | j | _x"t|j D ]}|| | j|< qW d S )N)sftempStorageresultslistkeysopts)selfsfcuserOptsopt r   9/var/www/spiderfoot.crq.systems/modules/sfp_whoisology.pysetup#   s    
zsfp_whoisology.setupc             C   s   dgS )N	EMAILADDRr   )r   r   r   r   watchedEvents.   s    zsfp_whoisology.watchedEventsc             C   s   ddgS )NAFFILIATE_INTERNET_NAMEAFFILIATE_DOMAIN_NAMEr   )r   r   r   r   producedEvents2   s    zsfp_whoisology.producedEventsc             C   s8  d }d| j d  d }|d| d | d 7 }| jj|| j d dd	}|d
 dkrj| jjdd d| _d S |d d kr| jjd|  d S yptj|d }|jdd kr| jjd|jdd d d S t	|jdg dkr| jj
d|  d S |jdS W n8 tk
r2 } z| jjdt| d d S d }~X nX d S )Nz https://whoisology.com/api?auth=r   z&request=flatz&field=z&value=z)&level=Registrant|Admin|Tec|Billing|Other_fetchtimeoutr   )timeout	useragentcode400429500403zQWhoisology API key seems to have been rejected or you have exceeded usage limits.FTcontentzNo Whoisology info found for domainszError querying Whoisology: status_reasonUnknownr   z No data found in Whoisology for z0Error processing JSON response from Whoisology: )r   r   r    r!   )r   r   fetchUrlerror
errorStateinfojsonloadsgetlendebug	Exceptionstr)r   qry	querytyper)   urlreser   r   r   query6   s0    zsfp_whoisology.queryc             C   s(  |j }|j}|j}| jrd S | jjd| d |  | jd dkrZ| jjdd d| _d S || jkr|| jjd| d	  d S d| j|< | j	|d
}t
 }|d k	r$x|D ]x}|jd}|r|j |kr|j|j  nqtd|| j|}	| j|	 | jj|| jd rtd|| j|}
| j|
 qW d S )NzReceived event, z, from r   r   z6You enabled sfp_whoisology but did not set an API key!FTz	Skipping z as already mapped.emaildomain_namer   _internettldsr   )	eventTypemoduledatar(   r   r.   r   r'   r
   r6   r   r,   lowerappendr   __name__notifyListenersisDomain)r   event	eventNamesrcModuleName	eventDatarecmyresrhr5   evtr   r   r   handleEventX   s8    





zsfp_whoisology.handleEvent)r?   
__module____qualname____doc__r   optdescsr
   r(   dictr   r   r   r6   rK   r   r   r   r   r      s   "r   )r*   sflibr   r   r   r   r   r   r   r   <module>   s   