Skip to content

Commit

Permalink
Merge branch 'AntoniaBK-Send_mail_api'
Browse files Browse the repository at this point in the history
  • Loading branch information
Rafiot committed Mar 27, 2024
2 parents bf47dc7 + 0eaea85 commit 9ffe9f2
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 3 deletions.
6 changes: 4 additions & 2 deletions lookyloo/lookyloo.py
Original file line number Diff line number Diff line change
Expand Up @@ -761,10 +761,10 @@ def contacts(self, capture_uuid: str, /) -> list[dict[str, Any]]:
result.append(self.takedown_details(rendered_hostnode))
return result

def send_mail(self, capture_uuid: str, /, email: str='', comment: str | None=None) -> None:
def send_mail(self, capture_uuid: str, /, email: str='', comment: str | None=None) -> bool | dict[str, Any]:
'''Send an email notification regarding a specific capture'''
if not get_config('generic', 'enable_mail_notification'):
return
return {"error": "Unable to send mail: mail notification disabled"}

email_config = get_config('generic', 'email')
smtp_auth = get_config('generic', 'email_smtp_auth')
Expand Down Expand Up @@ -828,6 +828,8 @@ def send_mail(self, capture_uuid: str, /, email: str='', comment: str | None=Non
except Exception as e:
self.logger.exception(e)
self.logger.warning(msg.as_string())
return {"error": "Unable to send mail"}
return True

def _get_raw(self, capture_uuid: str, /, extension: str='*', all_files: bool=True) -> BytesIO:
'''Get file(s) from the capture directory'''
Expand Down
11 changes: 10 additions & 1 deletion website/web/genericapi.py
Original file line number Diff line number Diff line change
Expand Up @@ -381,7 +381,16 @@ def get(self, capture_uuid: str) -> dict[str, Any]:
return json.loads(lookyloo.get_cookies(capture_uuid).read())


# Just text
@api.route('/json/<string:capture_uuid>/report')
@api.doc(description='Reports the url by sending an email to the investigation team',
params={'capture_uuid': 'The UUID of the capture'})
class CaptureReport(Resource): # type: ignore[misc]
@api.param('email', 'Email of the reporter, used by the analyst to get in touch.') # type: ignore[misc]
@api.param('comment', 'Description of the URL, will be given to the analyst.') # type: ignore[misc]
def post(self, capture_uuid: str) -> bool | dict[str, Any]:
parameters: dict[str, Any] = request.get_json(force=True)
return lookyloo.send_mail(capture_uuid, parameters.get('email', ''), parameters.get('comment'))


auto_report_model = api.model('AutoReportModel', {
'email': fields.String(description="Email of the reporter, used by the analyst to get in touch.", example=''),
Expand Down

0 comments on commit 9ffe9f2

Please sign in to comment.