3
@6^                 @   sX   d dl Z d dlZd dlZd dlZd dlZ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i Zi ZdZdZe fddZ	dd Z
dd	 Zd
d Zdd ZdS )sfp_fringeprojectzpFringe Project:Investigate,Footprint,Passive:Search Engines::Obtain network information from Fringe Project API.NFc             C   s8   || _ | j | _x"t|j D ]}|| | j|< qW d S )N)sftempStorageresultslistkeysopts)selfsfcuserOptsopt r   </var/www/spiderfoot.crq.systems/modules/sfp_fringeproject.pysetup    s    
zsfp_fringeproject.setupc             C   s   ddgS )NDOMAIN_NAMEINTERNET_NAMEr   )r   r   r   r   watchedEvents'   s    zsfp_fringeproject.watchedEventsc             C   s   ddddddgS )Nr   LINKED_URL_INTERNALr   TCP_PORT_OPENSOFTWARE_USEDRAW_RIR_DATAr   )r   r   r   r   producedEvents*   s    z sfp_fringeproject.producedEventsc             C   s   d|j djdddi}| jjdtjj| | jd | jd d	}tj	d
 |d d kr\d S yt
j|d }W n4 tk
r } z| jjdt|  d S d }~X nX |jd}|s| jjd|  d S |S )Nqraw_unicode_escapeasciireplace)errorsz)https://api.fringeproject.com/api/search?
_useragent_fetchtimeout)	useragenttimeout   contentz4Error processing JSON response from Fringe Project: r   zNo results found for )encodedecoder   fetchUrlurllibparse	urlencoder   timesleepjsonloadsBaseExceptiondebugstrget)r   qryparamsres	json_dataedatar   r   r   query.   s"    

zsfp_fringeproject.queryc             C   sX  |j }|j}|j}| jrd S | jjd| d |  |dkrT| jjd| d  d S || jkrv| jjd| d  d S d| j|< | j|}|s| jjd	|  d S t	d
t
|| j|}| j| t }x,|D ]"}|jd}	|	dkr| jjd|	  q|jd}
|
s
q|	dkr6| j j|
ddds,q|j|
 |	dkr| jj|
j }| j j|dddshq|j| t	d|
| j|}| j| |jd}|sqxR|D ]J}tjd|}t|dkrt	d|
d t
|d  | j|}| j| qW qW x\t|D ]P}t	d|| j|}| j| | jj|| jd r t	d|| j|}| j| q W d S )NzReceived event, z, from r   z	Ignoring z, from self.z	Skipping z as already mapped.TzNo results found for r   typeurlhostnamezUnknown result data type: value)includeChildrenincludeParentsr   tagsz^port:([0-9]+)r   r   :r   _internettldsr   )r<   r=   )	eventTypemoduler9   
errorStater   r1   r   r:   infor   r2   __name__notifyListenersr	   r3   	getTargetmatchesappendurlFQDNlowerrefindalllensetisDomainr   )r   event	eventNamesrcModuleName	eventDatar9   r8   hostsresult	data_typer>   hostevtrA   tagportr   r   r   handleEventJ   sj    












 
zsfp_fringeproject.handleEvent)rH   
__module____qualname____doc__r   optdescsr   rF   dictr   r   r   r:   r_   r   r   r   r   r      s   r   )r.   rO   r,   urllib.requestr)   urllib.parseurllib.errorsflibr   r   r   r   r   r   r   r   <module>   s
   