(self, handler)
| 434 | handler.end_headers() |
| 435 | |
| 436 | def scan_wifi(self, handler): |
| 437 | try: |
| 438 | from shared import detect_wifi_interface |
| 439 | wifi_iface = detect_wifi_interface('auto') |
| 440 | result = subprocess.Popen(['sudo', 'iwlist', wifi_iface, 'scan'], stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True) |
| 441 | stdout, stderr = result.communicate() |
| 442 | if result.returncode != 0: |
| 443 | raise Exception(stderr) |
| 444 | networks = self.parse_scan_result(stdout) |
| 445 | self.logger.info(f"Found {len(networks)} networks") |
| 446 | current_ssid = subprocess.Popen(['iwgetid', '-r'], stdout=subprocess.PIPE, text=True) |
| 447 | ssid_out, ssid_err = current_ssid.communicate() |
| 448 | if current_ssid.returncode != 0: |
| 449 | raise Exception(ssid_err) |
| 450 | current_ssid = ssid_out.strip() |
| 451 | self.logger.info(f"Current SSID: {current_ssid}") |
| 452 | handler.send_response(200) |
| 453 | handler.send_header("Content-type", "application/json") |
| 454 | handler.end_headers() |
| 455 | handler.wfile.write(json.dumps({"networks": networks, "current_ssid": current_ssid}).encode('utf-8')) |
| 456 | except Exception as e: |
| 457 | handler.send_response(500) |
| 458 | handler.send_header("Content-type", "application/json") |
| 459 | handler.end_headers() |
| 460 | self.logger.error(f"Error scanning Wi-Fi networks: {e}") |
| 461 | handler.wfile.write(json.dumps({"error": str(e)}).encode('utf-8')) |
| 462 | |
| 463 | def parse_scan_result(self, scan_output): |
| 464 | networks = [] |
nothing calls this directly
no test coverage detected