import logging from flask import Blueprint, request, jsonify logger = logging.getLogger('picell') bp = Blueprint('network', __name__) @bp.route('/api/dns/records', methods=['GET']) def get_dns_records(): try: from app import network_manager return jsonify(network_manager.get_dns_records()) except Exception as e: logger.error(f"Error getting DNS records: {e}") return jsonify({"error": str(e)}), 500 @bp.route('/api/dns/records', methods=['POST']) def add_dns_record(): try: from app import network_manager data = request.get_json(silent=True) if data is None: return jsonify({"error": "No data provided"}), 400 return jsonify(network_manager.add_dns_record(**data)) except Exception as e: logger.error(f"Error adding DNS record: {e}") return jsonify({"error": str(e)}), 500 @bp.route('/api/dns/records', methods=['DELETE']) def remove_dns_record(): try: from app import network_manager data = request.get_json(silent=True) return jsonify(network_manager.remove_dns_record(**data)) except Exception as e: logger.error(f"Error removing DNS record: {e}") return jsonify({"error": str(e)}), 500 @bp.route('/api/dhcp/leases', methods=['GET']) def get_dhcp_leases(): try: from app import network_manager return jsonify(network_manager.get_dhcp_leases()) except Exception as e: logger.error(f"Error getting DHCP leases: {e}") return jsonify({"error": str(e)}), 500 @bp.route('/api/dhcp/reservations', methods=['POST']) def add_dhcp_reservation(): try: from app import network_manager data = request.get_json(silent=True) if not data: return jsonify({"error": "No data provided"}), 400 for field in ('mac', 'ip'): if field not in data: return jsonify({"error": f"Missing required field: {field}"}), 400 result = network_manager.add_dhcp_reservation(data['mac'], data['ip'], data.get('hostname', '')) return jsonify({"success": result}) except Exception as e: logger.error(f"Error adding DHCP reservation: {e}") return jsonify({"error": str(e)}), 500 @bp.route('/api/dhcp/reservations', methods=['DELETE']) def remove_dhcp_reservation(): try: from app import network_manager data = request.get_json(silent=True) if not data or 'mac' not in data: return jsonify({"error": "Missing required field: mac"}), 400 result = network_manager.remove_dhcp_reservation(data['mac']) return jsonify({"success": result}) except Exception as e: logger.error(f"Error removing DHCP reservation: {e}") return jsonify({"error": str(e)}), 500 @bp.route('/api/ntp/status', methods=['GET']) def get_ntp_status(): try: from app import network_manager return jsonify(network_manager.get_ntp_status()) except Exception as e: logger.error(f"Error getting NTP status: {e}") return jsonify({"error": str(e)}), 500 @bp.route('/api/network/info', methods=['GET']) def get_network_info(): try: from app import network_manager return jsonify(network_manager.get_network_info()) except Exception as e: logger.error(f"Error getting network info: {e}") return jsonify({"error": str(e)}), 500 @bp.route('/api/dns/status', methods=['GET']) def get_dns_status(): try: from app import network_manager return jsonify(network_manager.get_dns_status()) except Exception as e: logger.error(f"Error getting DNS status: {e}") return jsonify({"error": str(e)}), 500 @bp.route('/api/network/test', methods=['POST']) def test_network(): try: from app import network_manager return jsonify(network_manager.test_connectivity()) except Exception as e: logger.error(f"Error testing network: {e}") return jsonify({"error": str(e)}), 500