Skip to main content

twc_rs/cli/
firewall.rs

1// SPDX-FileCopyrightText: 2026 RAprogramm <andrey.rozanov.vl@gmail.com>
2// SPDX-License-Identifier: MIT
3
4//! Firewall group and rule subcommands.
5
6use clap::Subcommand;
7
8/// Firewall management subcommands.
9#[derive(Subcommand, Debug)]
10pub enum FirewallCommands {
11    /// List all firewall groups.
12    List {
13        /// Maximum number of groups to return.
14        #[arg(long)]
15        limit: Option<i32>,
16
17        /// Number of groups to skip.
18        #[arg(long)]
19        offset: Option<i32>
20    },
21    /// Show detailed info for a firewall group.
22    Info {
23        /// Firewall group ID.
24        #[arg(long)]
25        id: String
26    },
27    /// Create a new firewall group.
28    Create {
29        /// Group name.
30        #[arg(long)]
31        name: String
32    },
33    /// Delete a firewall group by ID.
34    Delete {
35        /// Firewall group ID.
36        #[arg(long)]
37        id: String
38    },
39    /// Update firewall group settings.
40    Update {
41        /// Firewall group ID.
42        #[arg(long)]
43        id: String,
44
45        /// New group name.
46        #[arg(long)]
47        name: Option<String>
48    },
49    /// List rules for a firewall group.
50    RuleList {
51        /// Firewall group ID.
52        #[arg(long)]
53        id: String
54    },
55    /// Create a rule for a firewall group.
56    RuleCreate {
57        /// Firewall group ID.
58        #[arg(long)]
59        id: String
60    },
61    /// Delete a rule from a firewall group.
62    RuleDelete {
63        /// Firewall group ID.
64        #[arg(long)]
65        id: String,
66
67        /// Rule ID to delete.
68        #[arg(long)]
69        rule_id: String
70    },
71    /// List resources for a firewall group.
72    ResourceList {
73        /// Firewall group ID.
74        #[arg(long)]
75        id: String
76    },
77    /// Add a resource to a firewall group.
78    ResourceAdd {
79        /// Firewall group ID.
80        #[arg(long)]
81        id: String,
82
83        /// Resource ID to add.
84        #[arg(long)]
85        resource_id: String
86    },
87    /// Remove a resource from a firewall group.
88    ResourceRemove {
89        /// Firewall group ID.
90        #[arg(long)]
91        id: String,
92
93        /// Resource ID to remove.
94        #[arg(long)]
95        resource_id: String
96    }
97}