3
@6^                 @   s4   d dl mZ d dlmZmZmZ G dd deZdS )    )	IPAddress)
SpiderFootSpiderFootPluginSpiderFootEventc               @   sJ   e Zd ZdZi Zi ZdZe fddZdd Z	dd Z
d	d
 Zdd ZdS )sfp_hostingzHosting Providers:Footprint,Investigate,Passive:Crawling and Scanning::Find out if any IP addresses identified fall within known 3rd party hosting ranges, e.g. Amazon, Azure, etc.Nc             C   s>   || _ | j | _d| _x"t|j D ]}|| | j|< q$W d S )NDNS)sftempStorageresults__dataSource__listkeysopts)selfsfcuserOptsopt r   6/var/www/spiderfoot.crq.systems/modules/sfp_hosting.pysetup!   s
    
zsfp_hosting.setupc             C   s   dgS )N
IP_ADDRESSr   )r   r   r   r   watchedEvents*   s    zsfp_hosting.watchedEventsc             C   s   dgS )NPROVIDER_HOSTINGr   )r   r   r   r   producedEvents0   s    zsfp_hosting.producedEventsc       	      C   s<  t  }d}| jjdd|d< |d d krr| jj|| jd d}|d d kr`| jjd| d d S | jjd|d  x|d jd	D ]}d
|krqy|jd
\}}}}W n$ tk
r } zwW Y d d }~X nX y,t	|t	|krt	|t	|k r||gS W q tk
r2 } z| jj
dt|  wW Y d d }~X qX qW d S )NzFhttps://raw.githubusercontent.com/client9/ipcat/master/datacenters.csvZsfipcat0   content
_useragent)	useragentzUnable to fetch F
,z'Encountered an issue processing an IP: )dictr   cacheGetfetchUrlr   errorcachePutsplitBaseExceptionr   debugstr)	r   qaddrdataurllinestartendtitleer   r   r   	queryAddr3   s.     zsfp_hosting.queryAddrc             C   s~   |j }|j}|j}| jjd| d |  || jkr8d S d| j|< | j|}|rztd|d d |d  | j|}| j	| d S )NzReceived event, z, from Tr   r   z:    )
	eventTypemoduler*   r   r'   r
   r1   r   __name__notifyListeners)r   event	eventNamesrcModuleName	eventDataretevtr   r   r   handleEventR   s    



zsfp_hosting.handleEvent)r5   
__module____qualname____doc__r   optdescsr
   r    r   r   r   r1   r=   r   r   r   r   r      s   	r   N)netaddrr   sflibr   r   r   r   r   r   r   r   <module>   s   