#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Server-side Trips report page for .wifitrip import/export. """ from html import escape from reports.template import ( ReportContext, page_begin, page_end, ) def _stat_card(label, value): return f"""
{escape(str(label))}
{escape(str(value))}
""" def _message(message): if not message: return "" message_type = escape( str(message.get("type", "info")) ) message_text = escape( str(message.get("text", "")) ) return f"""
{message_text}
""" def _import_result(result): if not result: return "" html = """

Import result

""" html += _stat_card( "Sessions in file", result.get("sessions", 0), ) html += _stat_card( "Imported", result.get("imported", 0), ) html += _stat_card( "Duplicates", result.get("duplicates", 0), ) html += _stat_card( "Failed", result.get("failed", 0), ) html += """
""" failed_sessions = result.get( "failed_sessions", [], ) if failed_sessions: html += """

Failed sessions

""" for item in failed_sessions: html += f""" """ html += """
Session hash Error
{escape(str(item.get("session_hash", "")))} {escape(str(item.get("error", "")))}
""" html += """
""" return html def _validation_result(validation): if not validation: return "" if not validation.get("valid"): return f"""

Package validation

{escape( str( validation.get( "error", "Package is invalid." ) ) )}
""" return f"""

Package validation

Package is valid and contains {escape(str(validation.get("sessions", 0)))} session(s).
{_stat_card( "Sessions", validation.get("sessions", 0) )} {_stat_card( "Access points", validation.get("access_points", 0) )} {_stat_card( "GPS points", validation.get("gps_points", 0) )} {_stat_card( "Observations", validation.get("observations", 0) )} {_stat_card( "Handshakes", validation.get("handshakes", 0) )} {_stat_card( "Handshake Cracked", validation.get("credentials", 0) )}
""" def render_trips_page( conn, context=None, message=None, import_result=None, validation=None, ): if context is None: context = ReportContext( mode="server", page="trips", ) session_count = conn.execute( """ SELECT COUNT(*) AS count FROM capture_sessions """ ).fetchone()["count"] html = page_begin( "Trips", ( "Export and import capture sessions " "as .wifitrip packages." ), "trips", context, ) html += _message( message ) html += """

Export capture sessions

Export all capture sessions into one .wifitrip package.

The package contains logical session data: GPS track, access-point observations, handshakes and credentials. Physical capture files are not included.

""" html += _stat_card( "Sessions available", session_count, ) html += """
""" html += """

Import capture sessions

Import one .wifitrip package. The complete package is validated before any database changes are made.

Файл не выбран
""" html += _validation_result( validation ) html += _import_result( import_result ) html += page_end() return html