U
    @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:   || _ |  | _d| _t| D ]}|| | j|< q"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   sN  t  }d}| jdd|d< |d d krr| jj|| jd d}|d d kr`| jd| d d S | jd|d  |d d	D ]}d
|krqz|d
\}}}}W n* tk
r } zW Y qW 5 d }~X Y nX z6t	|t	|krt	|t	|k r||gW   S W q tk
rF } z | j
dt|  W Y qW 5 d }~X Y qX qd 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d| d |  || jkr8d S d| j|< | |}|rztd|d d |d  | j|}| 	| d S )NzReceived event, z, from Tr   r   z:    )
	eventTypemoduler+   r   r(   r
   r2   r   __name__notifyListeners)r   event	eventNamesrcModuleName	eventDataretevtr   r   r   handleEventR   s    


 zsfp_hosting.handleEvent)r6   
__module____qualname____doc__r   optdescsr
   r!   r   r   r   r2   r>   r   r   r   r   r      s   	r   N)netaddrr   sflibr   r   r   r   r   r   r   r   <module>   s   