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                   @   sZ   e Zd ZdZdddZdddZddiZd	Zd
Ze	 fddZ
dd Zdd Zdd Zd	S )sfp_pastebinzPasteBin:Footprint,Investigate,Passive:Leaks, Dumps and Breaches:apikey:PasteBin scraping (via Google) to identify related content. z!013611106330597893267:tfgl3wxdtbp)api_keycse_idz#Google API Key for PasteBin search.zGoogle Custom Search Engine ID.Zpastebinzpastebin.comNFc                 C   s:   || _ |  | _d| _t| D ]}|| | j|< q"d S )NF)sftempStorageresults
errorStatelistkeysopts)selfsfcuserOptsopt r   7/var/www/spiderfoot.crq.systems/modules/sfp_pastebin.pysetup*   s
    
zsfp_pastebin.setupc                 C   s
   dddgS )NDOMAIN_NAMEINTERNET_NAME	EMAILADDRr   r   r   r   r   watchedEvents3   s    zsfp_pastebin.watchedEventsc                 C   s   ddgS )NLEAKSITE_CONTENTLEAKSITE_URLr   r   r   r   r   producedEvents9   s    zsfp_pastebin.producedEventsc                    s>  |j }|j}|j} jrd S  jd dkrB jdd d _d S | jkrPd S d j|< t j	
 D ]}t } j	|  jjdj|d jd  jd	  jd  jd
 dd}|d kr d S |d }tt|t j
  }	|	D ]}
d j|
< q fdd|	D }|D ]} jd|    r>  d S  jj| jd  jd	 d}|d d kr jd| d  qtdt| d |d tjd krqz|d |}W n: tk
r } z jd W Y qW 5 d }~X Y nX td| j|} | td|d  j|} | qqhd S )Nr   r   z:You enabled sfp_pastebin but did not set a Google API key!FTz&+site:{target_site} "{search_keyword}")Ztarget_siteZsearch_keyword_fetchtimeout
_useragentr   )timeout	useragentr   r   )searchStringr   urlsc                    s"   g | ]} j |r|qS r   )r	   
urlBaseUrlendswith).0linkr   targetr   r   
<listcomp>i   s     z,sfp_pastebin.handleEvent.<locals>.<listcomp>zFound a link: )r!   r"   contentz	Ignoring z as no data returnedz[^a-zA-Z\-\_0-9]z#String not found in pastes content.r   r   )	eventTypemoduledatar   r   r	   errorr   r   domainsr   googleIterateformatsetdebugcheckForStopfetchUrlresearchescape
IGNORECASEindexBaseExceptionr   __name__notifyListeners)r   event	eventNamesrcModuleName	eventDatadomlinksresr$   	new_linkslZrelevant_linksr(   
startIndexeevt1evt2r   r)   r   handleEvent<   s~    




 
zsfp_pastebin.handleEvent)r>   
__module____qualname____doc__r   optdescsr1   r   r   dictr   r   r   rM   r   r   r   r   r      s     	r   )r8   sflibr   r   r   r   r   r   r   r   <module>   s   