U
    @†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                   @   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_opendnsz_OpenDNS:Investigate,Passive:Reputation Systems::Check if a host would be blocked by OpenDNS DNSNc                 C   s4   || _ |  ¡ | _t| ¡ ƒD ]}|| | j|< qd S )N)ÚsfÚtempStorageÚresultsÚlistÚkeysÚopts)ÚselfÚsfcÚuserOptsÚopt© r   ú6/var/www/spiderfoot.crq.systems/modules/sfp_opendns.pyÚsetup   s    
zsfp_opendns.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_opendns.watchedEventsc                 C   s
   dddgS )NÚMALICIOUS_INTERNET_NAMEÚ!MALICIOUS_AFFILIATE_INTERNET_NAMEÚMALICIOUS_COHOSTr   r   r   r   r   ÚproducedEvents-   s    ÿzsfp_opendns.producedEventsc              
   C   s|   t j ¡ }ddg|_z"| |¡}| j dt|ƒ ¡ W n8 tk
rn } z| j d| ¡ W Y ¢dS d }~X Y nX |rxdS dS )Nz208.67.222.222z208.67.220.220zAddresses returned: zUnable to resolve FT)	ÚdnsÚresolverÚResolverÚnameserversÚqueryr   ÚdebugÚstrÚBaseException)r   ÚqaddrÚresÚaddrsÚer   r   r   Ú	queryAddr1   s    


zsfp_opendns.queryAddrc              
   C   sÔ   |j }|j}|j}|}d}| j d| d | ¡ || jkr@d S d| j|< z| j |¡r\d}W n( tk
r† } z
W Y ¢d S d }~X Y nX |rÐ|  |¡}d| }	|dkrªd}	|sÐt	|	d| d	 | j
|ƒ}
|  |
¡ d S )
NFzReceived event, z, from TÚ
MALICIOUS_r   r   zBlocked by OpenDNS [ú])Ú	eventTypeÚmoduleÚdatar   r!   r   ÚresolveHostr#   r(   r   Ú__name__ÚnotifyListeners)r   ÚeventÚ	eventNameÚsrcModuleNameÚ	eventDataÚparentEventÚresolvedr'   ÚfoundÚtypÚevtr   r   r   ÚhandleEventA   s2    


 ÿzsfp_opendns.handleEvent)r/   Ú
__module__Ú__qualname__Ú__doc__r   Úoptdescsr   Údictr   r   r   r(   r:   r   r   r   r   r      s   r   )Údns.resolverr   Úsflibr   r   r   r   r   r   r   r   Ú<module>   s   