3
@6^                 @   s0   d dl mZmZmZ d dlZG dd deZdS )    )
SpiderFootSpiderFootPluginSpiderFootEventNc               @   sZ   e Zd ZdZdddddZdddd	dZd
ZdZe fddZ	dd Z
dd Zdd Zd
S )sfp_onioncityzOnion.link:Footprint,Investigate:Search Engines:apikey:Search Tor 'Onion City' search engine for mentions of the target domain. z!013611106330597893267:tfgl3wxdtbpT)api_keycse_id
fetchlinks	fullnamesz%Google API Key for Onion.link search.zGoogle Custom Search Engine ID.zQFetch the darknet pages (via TOR, if enabled) to verify they mention your target.zSearch for human names?NFc             C   s>   || _ | j | _d| _x"t|j D ]}|| | j|< q$W d S )NF)sftempStorageresults
errorStatelistkeysopts)selfsfcuserOptsopt r   8/var/www/spiderfoot.crq.systems/modules/sfp_onioncity.pysetup)   s
    
zsfp_onioncity.setupc             C   s   ddgS )NINTERNET_NAMEDOMAIN_NAMEr   )r   r   r   r   watchedEvents2   s    zsfp_onioncity.watchedEventsc             C   s
   dddgS )NDARKNET_MENTION_URLDARKNET_MENTION_CONTENTRAW_RIR_DATAr   )r   r   r   r   producedEvents8   s    zsfp_onioncity.producedEventsc                s,  |j }|j}|j} jrd S  jd  r4|dkr4d S  jjd| d |   jd dkrr jjdd d	 _d S | jkr jjd
| d  d S d	 j|<  jj	d|  jd  jd  jd  jd dd}|d krd S |d }t
t|t jj  }x|D ]}d	 j|< qW |d }	 jj|	 jd  jd d}
|
d d-krptd|
d  j|} j| n jjddd  j rd S  fdd|D }x|D ]z} jjd|  |jd d!} jd" r jj| jd  jd d}|d d kr jjd#| d$  qtjd%tj| d% |d tjd kr^ jjd#| d& |  qtd'| j|} j| y&|d j|d( }|t| d) }W n4 tk
r } z jjd* wW Y d d }~X nX |d || }td+d,| d,  j|} j| ntd'| j|} j| qW d S ).Nr
   
HUMAN_NAMEzReceived event, z, from r   r   z;You enabled sfp_onioncity but did not set a Google API key!FTzAlready did a search for z, skipping.z+site:onion.link _fetchtimeout
_useragentr   )timeout	useragentr   r   )searchStringr   urlswebSearchUrl)r#   r$   code200201202r   contentz%Failed to fetch Google web search URL)	exceptionc                s"   g | ]} j j|jd r|qS )z.onion.link)r   urlFQDNendswith).0link)r   r   r   
<listcomp>}   s    z-sfp_onioncity.handleEvent.<locals>.<listcomp>zFound a darknet mention: z.onion.linkz.onionr	   z	Ignoring z as no data returnedz[^a-zA-Z\-\_0-9]z as no mention of r   x      zString not found in content.r   z...)r)   r*   r+   )	eventTypemoduledatar   r   r   debugerrorr   googleIterater   setr   fetchUrlr   __name__notifyListenerscheckForStopreplaceresearchescape
IGNORECASEindexlenBaseException)r   event	eventNamesrcModuleName	eventDataresr&   	new_linkslZgooglesearch_urlresponseevtZdarknet_linksr1   Ztorlink
startIndexendIndexer7   r   )r   r   handleEvent<   s    





zsfp_onioncity.handleEvent)r=   
__module____qualname____doc__r   optdescsr   r   dictr   r   r   rT   r   r   r   r   r      s   	r   )sflibr   r   r   rA   r   r   r   r   r   <module>   s   