U
    @6^A                     @   s<   d dl mZmZmZ ddddgddiZG dd	 d	eZd
S )    )
SpiderFootSpiderFootPluginSpiderFootEventzhosts-file.net Malicious Hosts_hphostslistdomainz(http://hosts-file.net/download/hosts.txt)idtypechecksurlc                   @   sd   e Zd ZdZdddddZddddZd	Ze fd
dZdd Z	dd Z
dd Zdd Zdd Zd	S )sfp_hostsfilenetzhosts-file.net Malicious Hosts:Investigate,Passive:Reputation Systems::Check if a host/domain is malicious according to hosts-file.net Malicious Hosts.T   )r   checkaffiliatescheckcohostscacheperiodzApply checks to affiliates?z?Apply checks to sites found to be co-hosted on the target's IP?z,Hours to cache list data before re-fetching.)r   r   r   Nc                 C   s4   || _ |  | _t| D ]}|| | j|< qd S )N)sftempStorageresultsr   keysopts)selfsfcuserOptsopt r   ;/var/www/spiderfoot.crq.systems/modules/sfp_hostsfilenet.pysetup0   s    
zsfp_hostsfilenet.setupc                 C   s
   dddgS )NINTERNET_NAMEAFFILIATE_INTERNET_NAMECO_HOSTED_SITEr   r   r   r   r   watchedEvents<   s    zsfp_hostsfilenet.watchedEventsc                 C   s
   dddgS )NMALICIOUS_INTERNET_NAME!MALICIOUS_AFFILIATE_INTERNET_NAMEMALICIOUS_COHOSTr   r    r   r   r   producedEventsB   s    zsfp_hostsfilenet.producedEventsc           	      C   s  d}|dkr | j || jd }tt D ]T}t| d }||kr,t| d dkr,t }t| d }| j d| | jd	d
|d< |d d kr| j j	|| jd | jd d}|d d kr| j 
d| d  d S | j d| |d  t|d tkrt|d |d< |dkrNd| d |d krN| j |d | d  |  S d| d |d kr,| j |d | d  |  S q,d S )N r   _internettldsr   r	   r   r   sfmal_r   r   content_fetchtimeout
_useragent)timeout	useragentzUnable to fetch Fz
127.0.0.1	
z
 found in z list.)r   
hostDomainr   r   	malchecksr   dictcacheGetgetfetchUrlerrorcachePutr	   strdebug)	r   r   target
targetType	targetDomcheckciddatar   r   r   r   resourceListG   s0      
zsfp_hostsfilenet.resourceListc                 C   s|   t t D ]j}t| d }||kr|t| d kr| jd| d | d |  t| d dkr| |||  S qd S )Nr   r
   zChecking maliciousness of z (z) with: r	   r   )r   r0   r   r   r8   r?   )r   
resourceIditemTyper9   r<   r=   r   r   r   
lookupItemg   s    zsfp_hostsfilenet.lookupItemc                 C   s@  |j }|j}|j}| jd| d |  || jkrL| jd| d  d S d| j|< |dkrp| jddspd S |d	kr| jd
dsd S tt	
 D ]}t	| d }| j| r|dkrd}|dkrd}|d	krd}|dkrd}|  r d S | |||}	|	d k	r|d | d d |	 d }
t||
| j|}| | qd S )NzReceived event, z, from z	Skipping z, already checked.Tr   r   Fr   r   r   )r   r   r   r   r   r"   r#   r$   z [z]
z<SFURL>z</SFURL>)	eventTypemoduler>   r   r8   r   r   r3   r   r0   r   checkForStoprB   r   __name__notifyListeners)r   event	eventNamesrcModuleName	eventDatar<   r=   typeIdevtTyper   textevtr   r   r   handleEvents   sB    


zsfp_hostsfilenet.handleEvent)rF   
__module____qualname____doc__r   optdescsr   r1   r   r!   r%   r?   rB   rP   r   r   r   r   r      s"   		 r   N)sflibr   r   r   r0   r   r   r   r   r   <module>   s   	