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               @   sN   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S )sfp_ipstackzipstack:Footprint,Investigate,Passive:Real World:apikey:Identifies the physical location of IP addresses identified using ipstack.com.api_key zIpstack.com API key.NFc             C   s>   || _ | j | _d| _x"t|j D ]}|| | j|< q$W d S )NF)sftempStorageresults
errorStatelistkeysopts)selfsfcuserOptsopt r   6/var/www/spiderfoot.crq.systems/modules/sfp_ipstack.pysetup   s
    
zsfp_ipstack.setupc             C   s   dgS )N
IP_ADDRESSr   )r   r   r   r   watchedEvents(   s    zsfp_ipstack.watchedEventsc             C   s   dgS )NGEOINFOr   )r   r   r   r   producedEvents.   s    zsfp_ipstack.producedEventsc       
      C   s  |j }|j}|j}| jjd| d |  | jr4d S | jd dkrZ| jjdd d| _d S || jkr|| jjd| d	  d S d| j|< | jj	d
| d | jd  | jd | jd d}|d d kr| jj
d|  y@tj|d }d|ko|d dkr| jjdd d| _d S W n. tk
r@ } z| jjd d S d }~X nX |jdd d kr| jj
d| d |d   |d }td|| j|}	| j|	 d S )NzReceived event, z, from r   r   z3You enabled sfp_ipstack but did not set an API key!FTz	Skipping z as already mapped.zhttp://api.ipstack.com/z?access_key=_fetchtimeout
_useragent)timeout	useragentcontentzNo GeoIP info found for successz5Invalid ipstack.com API key or usage limits exceeded.zError processing JSON response.country_namezFound GeoIP for z: r   )	eventTypemoduledatar   debugr   r   errorr
   fetchUrlinfojsonloads	Exceptiongetr   __name__notifyListeners)
r   event	eventNamesrcModuleName	eventDataresZhostipeZcountrycityevtr   r   r   handleEvent2   sB    


zsfp_ipstack.handleEvent)r,   
__module____qualname____doc__r   optdescsr
   r   dictr   r   r   r5   r   r   r   r   r      s   	r   )r(   sflibr   r   r   r   r   r   r   r   <module>   s   