Resolve /logs|/backups|/uploads-style paths safely. Returns the joined real-fs path. Raises ValueError on: - prefix mismatch ("/logsfoo" must not match virtual_root "/logs") - path traversal ("/logs/../etc/passwd" escaping base_dir)
(virtual_root, base_dir, path)
| 15762 | |
| 15763 | |
| 15764 | @app.route('/api/wifi/scan-control/start', methods=['POST']) |
| 15765 | def enable_wifi_scan_control(): |
| 15766 | return _toggle_scan_interface(True) |
| 15767 | |
| 15768 | |
| 15769 | @app.route('/api/wifi/scan-control/stop', methods=['POST']) |
| 15770 | def disable_wifi_scan_control(): |
| 15771 | return _toggle_scan_interface(False) |
| 15772 | |
| 15773 | |
| 15774 | @app.route('/api/wifi/scan-control/mode', methods=['POST']) |
| 15775 | def update_wifi_scan_mode(): |
| 15776 | state = _get_multi_interface_state() |
| 15777 | payload = request.get_json(silent=True) or {} |
| 15778 | mode = payload.get('mode') |
| 15779 | focus_interface = payload.get('focus_interface') |
| 15780 | try: |
| 15781 | updated = state.update_scan_mode(mode=mode, focus_interface=focus_interface) |
| 15782 | except ValueError as exc: |
| 15783 | return jsonify({'success': False, 'error': str(exc)}), 400 |
| 15784 | except Exception as exc: # pragma: no cover - defensive logging |
| 15785 | logger.error(f"Failed to update scan mode: {exc}") |
no outgoing calls
no test coverage detected