(self, ssid: Optional[str], slug: str)
| 56 | # Internal helpers |
| 57 | # ------------------------------------------------------------------ |
| 58 | def _build_context(self, ssid: Optional[str], slug: str) -> Dict[str, str]: |
| 59 | (network_dir, |
| 60 | db_dir, |
| 61 | intelligence_dir, |
| 62 | threat_dir, |
| 63 | data_stolen_dir, |
| 64 | credentials_dir, |
| 65 | scan_results_dir, |
| 66 | vulnerabilities_dir) = self._ensure_network_dirs(slug) |
| 67 | db_filename = f"{slug}.db" |
| 68 | context = { |
| 69 | 'ssid': ssid, |
| 70 | 'slug': slug, |
| 71 | 'network_dir': network_dir, |
| 72 | 'db_path': os.path.join(db_dir, db_filename), |
| 73 | 'intelligence_dir': intelligence_dir, |
| 74 | 'threat_intelligence_dir': threat_dir, |
| 75 | 'data_stolen_dir': data_stolen_dir, |
| 76 | 'credentials_dir': credentials_dir, |
| 77 | 'scan_results_dir': scan_results_dir, |
| 78 | 'vulnerabilities_dir': vulnerabilities_dir, |
| 79 | } |
| 80 | # Persist SSID so the file browser can display human-readable names |
| 81 | if ssid: |
| 82 | ssid_file = os.path.join(network_dir, 'ssid.txt') |
| 83 | if not os.path.exists(ssid_file): |
| 84 | try: |
| 85 | with open(ssid_file, 'w', encoding='utf-8') as _f: |
| 86 | _f.write(ssid) |
| 87 | except IOError: |
| 88 | pass |
| 89 | return context |
| 90 | |
| 91 | def _ensure_network_dirs(self, slug: str): |
| 92 | network_dir = os.path.join(self.networks_dir, slug) |
no test coverage detected