diff --git a/jcloud/api/aliyun_server_light.py b/jcloud/api/aliyun_server_light.py index d620a29..598b80d 100644 --- a/jcloud/api/aliyun_server_light.py +++ b/jcloud/api/aliyun_server_light.py @@ -453,6 +453,21 @@ class AliyunLightServerManager: jingrow.log_error("创建防火墙规则失败", f"为实例 {instance_id} 创建防火墙规则时发生错误: {str(e)}") return {'success': False, 'error': str(e), 'message': '创建防火墙规则失败'} + def list_firewall_rules(self, instance_id, region_id='cn-shanghai'): + """获取实例的防火墙规则列表""" + client = self._get_client(region_id) + try: + request = swas__open20200601_models.ListFirewallRulesRequest( + region_id=region_id, + instance_id=instance_id + ) + runtime = util_models.RuntimeOptions() + response = client.list_firewall_rules_with_options(request, runtime) + return {'success': True, 'data': self._convert_response_to_dict(response.body), 'message': '获取防火墙规则列表成功'} + except Exception as e: + jingrow.log_error("获取防火墙规则列表失败", f"获取实例 {instance_id} 防火墙规则列表时发生错误: {str(e)}") + return {'success': False, 'error': str(e), 'message': '获取防火墙规则列表失败'} + # 全局管理器实例 _aliyun_manager = None @@ -1659,4 +1674,24 @@ def create_aliyun_firewall_rule(instance_id, rule_protocol, port, remark=None, r except Exception as e: jingrow.log_error("创建防火墙规则失败", f"为实例 {instance_id} 创建防火墙规则时发生错误: {str(e)}") - return {"success": False, "error": str(e), "message": "创建防火墙规则失败"} \ No newline at end of file + return {"success": False, "error": str(e), "message": "创建防火墙规则失败"} + +@jingrow.whitelist() +def get_aliyun_firewall_rules(instance_id, region_id='cn-shanghai'): + """获取阿里云轻量应用服务器防火墙规则列表""" + try: + # 如果没有提供region_id,尝试从服务器记录中获取 + if not region_id or region_id == 'cn-shanghai': + server = jingrow.get_pg("Jsite Server", {"instance_id": instance_id}) + if server and server.region: + region_id = server.region + + # 调用管理器获取防火墙规则列表 + manager = _get_manager() + result = manager.list_firewall_rules(instance_id, region_id) + + return result + + except Exception as e: + jingrow.log_error("获取防火墙规则列表失败", f"获取实例 {instance_id} 防火墙规则列表时发生错误: {str(e)}") + return {"success": False, "error": str(e), "message": "获取防火墙规则列表失败"} \ No newline at end of file