mirror of
https://github.com/GoodOlClint/PSProxmoxVE.git
synced 2026-08-09 13:59:24 +00:00
fix(firewall): use nullable int for VmId parameter
Changed VmId from int to int? across all 18 firewall cmdlets. The parameter is conditionally required (only when Level is Vm or Container) so using a non-nullable int with 0 as sentinel was fragile. Now checks !VmId.HasValue instead of VmId == 0, and passes the nullable directly to service methods. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -8,7 +8,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
{
|
||||
[Cmdlet(VerbsCommon.Get, "PveFirewallAlias")]
|
||||
[OutputType(typeof(PveFirewallAlias))]
|
||||
public class GetPveFirewallAliasCmdlet : PveCmdletBase
|
||||
public sealed class GetPveFirewallAliasCmdlet : PveCmdletBase
|
||||
{
|
||||
[Parameter(Mandatory = true, Position = 0, HelpMessage = "The firewall level: Cluster, Node, Vm, or Container.")]
|
||||
[ValidateSet("Cluster", "Node", "Vm", "Container")]
|
||||
@@ -19,7 +19,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
|
||||
[Parameter(Mandatory = false, HelpMessage = "The VM/Container ID. Required when Level is Vm or Container.")]
|
||||
[ValidateRange(100, 999999999)]
|
||||
public int VmId { get; set; }
|
||||
public int? VmId { get; set; }
|
||||
|
||||
[Parameter(Mandatory = false, HelpMessage = "Optional alias name to filter by.")]
|
||||
public string? Name { get; set; }
|
||||
@@ -40,7 +40,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
if (string.Equals(level, "Vm", StringComparison.OrdinalIgnoreCase) ||
|
||||
string.Equals(level, "Container", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
if (VmId == 0)
|
||||
if (!VmId.HasValue)
|
||||
{
|
||||
ThrowTerminatingError(new ErrorRecord(
|
||||
new PSArgumentException("VmId is required when Level is Vm or Container."),
|
||||
@@ -51,7 +51,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
|
||||
var session = GetSession();
|
||||
var service = new FirewallService();
|
||||
int? vmid = VmId > 0 ? VmId : (int?)null;
|
||||
var vmid = VmId;
|
||||
|
||||
WriteVerbose($"Getting firewall aliases at level '{level}'...");
|
||||
var aliases = service.GetAliases(session, level, Node, vmid);
|
||||
|
||||
@@ -7,7 +7,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
{
|
||||
[Cmdlet(VerbsCommon.Get, "PveFirewallGroup")]
|
||||
[OutputType(typeof(PveFirewallGroup), typeof(PveFirewallRule))]
|
||||
public class GetPveFirewallGroupCmdlet : PveCmdletBase
|
||||
public sealed class GetPveFirewallGroupCmdlet : PveCmdletBase
|
||||
{
|
||||
[Parameter(Mandatory = false, Position = 0, HelpMessage = "The security group name. If specified, returns rules within the group.")]
|
||||
public string? Group { get; set; }
|
||||
|
||||
@@ -8,7 +8,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
{
|
||||
[Cmdlet(VerbsCommon.Get, "PveFirewallIpSet")]
|
||||
[OutputType(typeof(PveFirewallIpSet))]
|
||||
public class GetPveFirewallIpSetCmdlet : PveCmdletBase
|
||||
public sealed class GetPveFirewallIpSetCmdlet : PveCmdletBase
|
||||
{
|
||||
[Parameter(Mandatory = true, Position = 0, HelpMessage = "The firewall level: Cluster, Node, Vm, or Container.")]
|
||||
[ValidateSet("Cluster", "Node", "Vm", "Container")]
|
||||
@@ -19,7 +19,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
|
||||
[Parameter(Mandatory = false, HelpMessage = "The VM/Container ID. Required when Level is Vm or Container.")]
|
||||
[ValidateRange(100, 999999999)]
|
||||
public int VmId { get; set; }
|
||||
public int? VmId { get; set; }
|
||||
|
||||
[Parameter(Mandatory = false, HelpMessage = "Optional IP set name to filter by.")]
|
||||
public string? Name { get; set; }
|
||||
@@ -40,7 +40,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
if (string.Equals(level, "Vm", StringComparison.OrdinalIgnoreCase) ||
|
||||
string.Equals(level, "Container", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
if (VmId == 0)
|
||||
if (!VmId.HasValue)
|
||||
{
|
||||
ThrowTerminatingError(new ErrorRecord(
|
||||
new PSArgumentException("VmId is required when Level is Vm or Container."),
|
||||
@@ -51,7 +51,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
|
||||
var session = GetSession();
|
||||
var service = new FirewallService();
|
||||
int? vmid = VmId > 0 ? VmId : (int?)null;
|
||||
var vmid = VmId;
|
||||
|
||||
WriteVerbose($"Getting firewall IP sets at level '{level}'...");
|
||||
var ipSets = service.GetIpSets(session, level, Node, vmid);
|
||||
|
||||
@@ -7,7 +7,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
{
|
||||
[Cmdlet(VerbsCommon.Get, "PveFirewallIpSetEntry")]
|
||||
[OutputType(typeof(PveFirewallIpSetEntry))]
|
||||
public class GetPveFirewallIpSetEntryCmdlet : PveCmdletBase
|
||||
public sealed class GetPveFirewallIpSetEntryCmdlet : PveCmdletBase
|
||||
{
|
||||
[Parameter(Mandatory = true, Position = 0, HelpMessage = "The firewall level: Cluster, Node, Vm, or Container.")]
|
||||
[ValidateSet("Cluster", "Node", "Vm", "Container")]
|
||||
@@ -18,7 +18,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
|
||||
[Parameter(Mandatory = false, HelpMessage = "The VM/Container ID. Required when Level is Vm or Container.")]
|
||||
[ValidateRange(100, 999999999)]
|
||||
public int VmId { get; set; }
|
||||
public int? VmId { get; set; }
|
||||
|
||||
[Parameter(Mandatory = true, HelpMessage = "The IP set name.")]
|
||||
public string Name { get; set; } = string.Empty;
|
||||
@@ -39,7 +39,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
if (string.Equals(level, "Vm", StringComparison.OrdinalIgnoreCase) ||
|
||||
string.Equals(level, "Container", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
if (VmId == 0)
|
||||
if (!VmId.HasValue)
|
||||
{
|
||||
ThrowTerminatingError(new ErrorRecord(
|
||||
new PSArgumentException("VmId is required when Level is Vm or Container."),
|
||||
@@ -50,7 +50,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
|
||||
var session = GetSession();
|
||||
var service = new FirewallService();
|
||||
int? vmid = VmId > 0 ? VmId : (int?)null;
|
||||
var vmid = VmId;
|
||||
|
||||
WriteVerbose($"Getting entries for IP set '{Name}' at level '{level}'...");
|
||||
var entries = service.GetIpSetEntries(session, level, Name, Node, vmid);
|
||||
|
||||
@@ -7,7 +7,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
{
|
||||
[Cmdlet(VerbsCommon.Get, "PveFirewallOptions")]
|
||||
[OutputType(typeof(PveFirewallOptions))]
|
||||
public class GetPveFirewallOptionsCmdlet : PveCmdletBase
|
||||
public sealed class GetPveFirewallOptionsCmdlet : PveCmdletBase
|
||||
{
|
||||
[Parameter(Mandatory = true, Position = 0, HelpMessage = "The firewall level: Cluster, Node, Vm, or Container.")]
|
||||
[ValidateSet("Cluster", "Node", "Vm", "Container")]
|
||||
@@ -18,7 +18,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
|
||||
[Parameter(Mandatory = false, HelpMessage = "The VM/Container ID. Required when Level is Vm or Container.")]
|
||||
[ValidateRange(100, 999999999)]
|
||||
public int VmId { get; set; }
|
||||
public int? VmId { get; set; }
|
||||
|
||||
protected override void ProcessRecord()
|
||||
{
|
||||
@@ -36,7 +36,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
if (string.Equals(level, "Vm", StringComparison.OrdinalIgnoreCase) ||
|
||||
string.Equals(level, "Container", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
if (VmId == 0)
|
||||
if (!VmId.HasValue)
|
||||
{
|
||||
ThrowTerminatingError(new ErrorRecord(
|
||||
new PSArgumentException("VmId is required when Level is Vm or Container."),
|
||||
@@ -47,7 +47,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
|
||||
var session = GetSession();
|
||||
var service = new FirewallService();
|
||||
int? vmid = VmId > 0 ? VmId : (int?)null;
|
||||
var vmid = VmId;
|
||||
|
||||
WriteVerbose($"Getting firewall options at level '{level}'...");
|
||||
var options = service.GetOptions(session, level, Node, vmid);
|
||||
|
||||
@@ -7,7 +7,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
{
|
||||
[Cmdlet(VerbsCommon.Get, "PveFirewallRef")]
|
||||
[OutputType(typeof(PveFirewallRef))]
|
||||
public class GetPveFirewallRefCmdlet : PveCmdletBase
|
||||
public sealed class GetPveFirewallRefCmdlet : PveCmdletBase
|
||||
{
|
||||
[Parameter(Mandatory = true, Position = 0, HelpMessage = "The firewall level: Cluster, Node, Vm, or Container.")]
|
||||
[ValidateSet("Cluster", "Node", "Vm", "Container")]
|
||||
@@ -18,7 +18,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
|
||||
[Parameter(Mandatory = false, HelpMessage = "The VM/Container ID. Required when Level is Vm or Container.")]
|
||||
[ValidateRange(100, 999999999)]
|
||||
public int VmId { get; set; }
|
||||
public int? VmId { get; set; }
|
||||
|
||||
[Parameter(Mandatory = false, HelpMessage = "Optional type filter for references.")]
|
||||
public string? Type { get; set; }
|
||||
@@ -39,7 +39,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
if (string.Equals(level, "Vm", StringComparison.OrdinalIgnoreCase) ||
|
||||
string.Equals(level, "Container", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
if (VmId == 0)
|
||||
if (!VmId.HasValue)
|
||||
{
|
||||
ThrowTerminatingError(new ErrorRecord(
|
||||
new PSArgumentException("VmId is required when Level is Vm or Container."),
|
||||
@@ -50,7 +50,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
|
||||
var session = GetSession();
|
||||
var service = new FirewallService();
|
||||
int? vmid = VmId > 0 ? VmId : (int?)null;
|
||||
var vmid = VmId;
|
||||
|
||||
WriteVerbose($"Getting firewall references at level '{level}'...");
|
||||
var refs = service.GetRefs(session, level, Type, Node, vmid);
|
||||
|
||||
@@ -8,7 +8,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
{
|
||||
[Cmdlet(VerbsCommon.Get, "PveFirewallRule")]
|
||||
[OutputType(typeof(PveFirewallRule))]
|
||||
public class GetPveFirewallRuleCmdlet : PveCmdletBase
|
||||
public sealed class GetPveFirewallRuleCmdlet : PveCmdletBase
|
||||
{
|
||||
[Parameter(Mandatory = true, Position = 0, HelpMessage = "The firewall level: Cluster, Node, Vm, or Container.")]
|
||||
[ValidateSet("Cluster", "Node", "Vm", "Container")]
|
||||
@@ -19,7 +19,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
|
||||
[Parameter(Mandatory = false, HelpMessage = "The VM/Container ID. Required when Level is Vm or Container.")]
|
||||
[ValidateRange(100, 999999999)]
|
||||
public int VmId { get; set; }
|
||||
public int? VmId { get; set; }
|
||||
|
||||
[Parameter(Mandatory = false, HelpMessage = "Optional rule position to filter by.")]
|
||||
public int? Position { get; set; }
|
||||
@@ -40,7 +40,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
if (string.Equals(level, "Vm", StringComparison.OrdinalIgnoreCase) ||
|
||||
string.Equals(level, "Container", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
if (VmId == 0)
|
||||
if (!VmId.HasValue)
|
||||
{
|
||||
ThrowTerminatingError(new ErrorRecord(
|
||||
new PSArgumentException("VmId is required when Level is Vm or Container."),
|
||||
@@ -51,7 +51,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
|
||||
var session = GetSession();
|
||||
var service = new FirewallService();
|
||||
int? vmid = VmId > 0 ? VmId : (int?)null;
|
||||
var vmid = VmId;
|
||||
|
||||
WriteVerbose($"Getting firewall rules at level '{level}'...");
|
||||
var rules = service.GetRules(session, level, Node, vmid);
|
||||
|
||||
@@ -7,7 +7,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
{
|
||||
[Cmdlet(VerbsCommon.New, "PveFirewallAlias", SupportsShouldProcess = true)]
|
||||
[OutputType(typeof(void))]
|
||||
public class NewPveFirewallAliasCmdlet : PveCmdletBase
|
||||
public sealed class NewPveFirewallAliasCmdlet : PveCmdletBase
|
||||
{
|
||||
[Parameter(Mandatory = true, Position = 0, HelpMessage = "The firewall level: Cluster, Node, Vm, or Container.")]
|
||||
[ValidateSet("Cluster", "Node", "Vm", "Container")]
|
||||
@@ -18,7 +18,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
|
||||
[Parameter(Mandatory = false, HelpMessage = "The VM/Container ID. Required when Level is Vm or Container.")]
|
||||
[ValidateRange(100, 999999999)]
|
||||
public int VmId { get; set; }
|
||||
public int? VmId { get; set; }
|
||||
|
||||
[Parameter(Mandatory = true, HelpMessage = "The alias name.")]
|
||||
public string Name { get; set; } = string.Empty;
|
||||
@@ -45,7 +45,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
if (string.Equals(level, "Vm", StringComparison.OrdinalIgnoreCase) ||
|
||||
string.Equals(level, "Container", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
if (VmId == 0)
|
||||
if (!VmId.HasValue)
|
||||
{
|
||||
ThrowTerminatingError(new ErrorRecord(
|
||||
new PSArgumentException("VmId is required when Level is Vm or Container."),
|
||||
@@ -59,7 +59,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
|
||||
var session = GetSession();
|
||||
var service = new FirewallService();
|
||||
int? vmid = VmId > 0 ? VmId : (int?)null;
|
||||
var vmid = VmId;
|
||||
|
||||
WriteVerbose($"Creating firewall alias '{Name}' at level '{level}'...");
|
||||
service.CreateAlias(session, level, Name, Cidr, Comment, Node, vmid);
|
||||
|
||||
@@ -7,7 +7,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
{
|
||||
[Cmdlet(VerbsCommon.New, "PveFirewallGroup", SupportsShouldProcess = true)]
|
||||
[OutputType(typeof(void))]
|
||||
public class NewPveFirewallGroupCmdlet : PveCmdletBase
|
||||
public sealed class NewPveFirewallGroupCmdlet : PveCmdletBase
|
||||
{
|
||||
[Parameter(Mandatory = true, Position = 0, HelpMessage = "The security group name.")]
|
||||
public string Group { get; set; } = string.Empty;
|
||||
|
||||
@@ -7,7 +7,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
{
|
||||
[Cmdlet(VerbsCommon.New, "PveFirewallIpSet", SupportsShouldProcess = true)]
|
||||
[OutputType(typeof(void))]
|
||||
public class NewPveFirewallIpSetCmdlet : PveCmdletBase
|
||||
public sealed class NewPveFirewallIpSetCmdlet : PveCmdletBase
|
||||
{
|
||||
[Parameter(Mandatory = true, Position = 0, HelpMessage = "The firewall level: Cluster, Node, Vm, or Container.")]
|
||||
[ValidateSet("Cluster", "Node", "Vm", "Container")]
|
||||
@@ -18,7 +18,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
|
||||
[Parameter(Mandatory = false, HelpMessage = "The VM/Container ID. Required when Level is Vm or Container.")]
|
||||
[ValidateRange(100, 999999999)]
|
||||
public int VmId { get; set; }
|
||||
public int? VmId { get; set; }
|
||||
|
||||
[Parameter(Mandatory = true, HelpMessage = "The IP set name.")]
|
||||
public string Name { get; set; } = string.Empty;
|
||||
@@ -42,7 +42,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
if (string.Equals(level, "Vm", StringComparison.OrdinalIgnoreCase) ||
|
||||
string.Equals(level, "Container", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
if (VmId == 0)
|
||||
if (!VmId.HasValue)
|
||||
{
|
||||
ThrowTerminatingError(new ErrorRecord(
|
||||
new PSArgumentException("VmId is required when Level is Vm or Container."),
|
||||
@@ -56,7 +56,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
|
||||
var session = GetSession();
|
||||
var service = new FirewallService();
|
||||
int? vmid = VmId > 0 ? VmId : (int?)null;
|
||||
var vmid = VmId;
|
||||
|
||||
WriteVerbose($"Creating firewall IP set '{Name}' at level '{level}'...");
|
||||
service.CreateIpSet(session, level, Name, Comment, Node, vmid);
|
||||
|
||||
@@ -7,7 +7,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
{
|
||||
[Cmdlet(VerbsCommon.New, "PveFirewallIpSetEntry", SupportsShouldProcess = true)]
|
||||
[OutputType(typeof(void))]
|
||||
public class NewPveFirewallIpSetEntryCmdlet : PveCmdletBase
|
||||
public sealed class NewPveFirewallIpSetEntryCmdlet : PveCmdletBase
|
||||
{
|
||||
[Parameter(Mandatory = true, Position = 0, HelpMessage = "The firewall level: Cluster, Node, Vm, or Container.")]
|
||||
[ValidateSet("Cluster", "Node", "Vm", "Container")]
|
||||
@@ -18,7 +18,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
|
||||
[Parameter(Mandatory = false, HelpMessage = "The VM/Container ID. Required when Level is Vm or Container.")]
|
||||
[ValidateRange(100, 999999999)]
|
||||
public int VmId { get; set; }
|
||||
public int? VmId { get; set; }
|
||||
|
||||
[Parameter(Mandatory = true, HelpMessage = "The IP set name.")]
|
||||
public string Name { get; set; } = string.Empty;
|
||||
@@ -48,7 +48,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
if (string.Equals(level, "Vm", StringComparison.OrdinalIgnoreCase) ||
|
||||
string.Equals(level, "Container", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
if (VmId == 0)
|
||||
if (!VmId.HasValue)
|
||||
{
|
||||
ThrowTerminatingError(new ErrorRecord(
|
||||
new PSArgumentException("VmId is required when Level is Vm or Container."),
|
||||
@@ -62,7 +62,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
|
||||
var session = GetSession();
|
||||
var service = new FirewallService();
|
||||
int? vmid = VmId > 0 ? VmId : (int?)null;
|
||||
var vmid = VmId;
|
||||
|
||||
WriteVerbose($"Adding entry '{Cidr}' to IP set '{Name}' at level '{level}'...");
|
||||
service.AddIpSetEntry(session, level, Name, Cidr, NoMatch.IsPresent, Comment, Node, vmid);
|
||||
|
||||
@@ -8,7 +8,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
{
|
||||
[Cmdlet(VerbsCommon.New, "PveFirewallRule", SupportsShouldProcess = true)]
|
||||
[OutputType(typeof(PveFirewallRule))]
|
||||
public class NewPveFirewallRuleCmdlet : PveCmdletBase
|
||||
public sealed class NewPveFirewallRuleCmdlet : PveCmdletBase
|
||||
{
|
||||
[Parameter(Mandatory = true, Position = 0, HelpMessage = "The firewall level: Cluster, Node, Vm, or Container.")]
|
||||
[ValidateSet("Cluster", "Node", "Vm", "Container")]
|
||||
@@ -19,7 +19,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
|
||||
[Parameter(Mandatory = false, HelpMessage = "The VM/Container ID. Required when Level is Vm or Container.")]
|
||||
[ValidateRange(100, 999999999)]
|
||||
public int VmId { get; set; }
|
||||
public int? VmId { get; set; }
|
||||
|
||||
[Parameter(Mandatory = true, HelpMessage = "The rule type: in, out, or group.")]
|
||||
[ValidateSet("in", "out", "group")]
|
||||
@@ -75,7 +75,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
if (string.Equals(level, "Vm", StringComparison.OrdinalIgnoreCase) ||
|
||||
string.Equals(level, "Container", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
if (VmId == 0)
|
||||
if (!VmId.HasValue)
|
||||
{
|
||||
ThrowTerminatingError(new ErrorRecord(
|
||||
new PSArgumentException("VmId is required when Level is Vm or Container."),
|
||||
@@ -89,7 +89,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
|
||||
var session = GetSession();
|
||||
var service = new FirewallService();
|
||||
int? vmid = VmId > 0 ? VmId : (int?)null;
|
||||
var vmid = VmId;
|
||||
|
||||
var config = new Dictionary<string, string>
|
||||
{
|
||||
|
||||
@@ -7,7 +7,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
{
|
||||
[Cmdlet(VerbsCommon.Remove, "PveFirewallAlias", SupportsShouldProcess = true, ConfirmImpact = ConfirmImpact.High)]
|
||||
[OutputType(typeof(void))]
|
||||
public class RemovePveFirewallAliasCmdlet : PveCmdletBase
|
||||
public sealed class RemovePveFirewallAliasCmdlet : PveCmdletBase
|
||||
{
|
||||
[Parameter(Mandatory = true, Position = 0, HelpMessage = "The firewall level: Cluster, Node, Vm, or Container.")]
|
||||
[ValidateSet("Cluster", "Node", "Vm", "Container")]
|
||||
@@ -18,7 +18,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
|
||||
[Parameter(Mandatory = false, HelpMessage = "The VM/Container ID. Required when Level is Vm or Container.")]
|
||||
[ValidateRange(100, 999999999)]
|
||||
public int VmId { get; set; }
|
||||
public int? VmId { get; set; }
|
||||
|
||||
[Parameter(Mandatory = true, HelpMessage = "The alias name to remove.")]
|
||||
public string Name { get; set; } = string.Empty;
|
||||
@@ -39,7 +39,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
if (string.Equals(level, "Vm", StringComparison.OrdinalIgnoreCase) ||
|
||||
string.Equals(level, "Container", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
if (VmId == 0)
|
||||
if (!VmId.HasValue)
|
||||
{
|
||||
ThrowTerminatingError(new ErrorRecord(
|
||||
new PSArgumentException("VmId is required when Level is Vm or Container."),
|
||||
@@ -53,7 +53,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
|
||||
var session = GetSession();
|
||||
var service = new FirewallService();
|
||||
int? vmid = VmId > 0 ? VmId : (int?)null;
|
||||
var vmid = VmId;
|
||||
|
||||
WriteVerbose($"Removing firewall alias '{Name}' at level '{level}'...");
|
||||
service.RemoveAlias(session, level, Name, Node, vmid);
|
||||
|
||||
@@ -7,7 +7,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
{
|
||||
[Cmdlet(VerbsCommon.Remove, "PveFirewallGroup", SupportsShouldProcess = true, ConfirmImpact = ConfirmImpact.High)]
|
||||
[OutputType(typeof(void))]
|
||||
public class RemovePveFirewallGroupCmdlet : PveCmdletBase
|
||||
public sealed class RemovePveFirewallGroupCmdlet : PveCmdletBase
|
||||
{
|
||||
[Parameter(Mandatory = true, Position = 0, HelpMessage = "The security group name to remove.")]
|
||||
public string Group { get; set; } = string.Empty;
|
||||
|
||||
@@ -7,7 +7,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
{
|
||||
[Cmdlet(VerbsCommon.Remove, "PveFirewallIpSet", SupportsShouldProcess = true, ConfirmImpact = ConfirmImpact.High)]
|
||||
[OutputType(typeof(void))]
|
||||
public class RemovePveFirewallIpSetCmdlet : PveCmdletBase
|
||||
public sealed class RemovePveFirewallIpSetCmdlet : PveCmdletBase
|
||||
{
|
||||
[Parameter(Mandatory = true, Position = 0, HelpMessage = "The firewall level: Cluster, Node, Vm, or Container.")]
|
||||
[ValidateSet("Cluster", "Node", "Vm", "Container")]
|
||||
@@ -18,7 +18,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
|
||||
[Parameter(Mandatory = false, HelpMessage = "The VM/Container ID. Required when Level is Vm or Container.")]
|
||||
[ValidateRange(100, 999999999)]
|
||||
public int VmId { get; set; }
|
||||
public int? VmId { get; set; }
|
||||
|
||||
[Parameter(Mandatory = true, HelpMessage = "The IP set name to remove.")]
|
||||
public string Name { get; set; } = string.Empty;
|
||||
@@ -39,7 +39,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
if (string.Equals(level, "Vm", StringComparison.OrdinalIgnoreCase) ||
|
||||
string.Equals(level, "Container", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
if (VmId == 0)
|
||||
if (!VmId.HasValue)
|
||||
{
|
||||
ThrowTerminatingError(new ErrorRecord(
|
||||
new PSArgumentException("VmId is required when Level is Vm or Container."),
|
||||
@@ -53,7 +53,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
|
||||
var session = GetSession();
|
||||
var service = new FirewallService();
|
||||
int? vmid = VmId > 0 ? VmId : (int?)null;
|
||||
var vmid = VmId;
|
||||
|
||||
WriteVerbose($"Removing firewall IP set '{Name}' at level '{level}'...");
|
||||
service.RemoveIpSet(session, level, Name, Node, vmid);
|
||||
|
||||
@@ -7,7 +7,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
{
|
||||
[Cmdlet(VerbsCommon.Remove, "PveFirewallIpSetEntry", SupportsShouldProcess = true, ConfirmImpact = ConfirmImpact.High)]
|
||||
[OutputType(typeof(void))]
|
||||
public class RemovePveFirewallIpSetEntryCmdlet : PveCmdletBase
|
||||
public sealed class RemovePveFirewallIpSetEntryCmdlet : PveCmdletBase
|
||||
{
|
||||
[Parameter(Mandatory = true, Position = 0, HelpMessage = "The firewall level: Cluster, Node, Vm, or Container.")]
|
||||
[ValidateSet("Cluster", "Node", "Vm", "Container")]
|
||||
@@ -18,7 +18,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
|
||||
[Parameter(Mandatory = false, HelpMessage = "The VM/Container ID. Required when Level is Vm or Container.")]
|
||||
[ValidateRange(100, 999999999)]
|
||||
public int VmId { get; set; }
|
||||
public int? VmId { get; set; }
|
||||
|
||||
[Parameter(Mandatory = true, HelpMessage = "The IP set name.")]
|
||||
public string Name { get; set; } = string.Empty;
|
||||
@@ -42,7 +42,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
if (string.Equals(level, "Vm", StringComparison.OrdinalIgnoreCase) ||
|
||||
string.Equals(level, "Container", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
if (VmId == 0)
|
||||
if (!VmId.HasValue)
|
||||
{
|
||||
ThrowTerminatingError(new ErrorRecord(
|
||||
new PSArgumentException("VmId is required when Level is Vm or Container."),
|
||||
@@ -56,7 +56,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
|
||||
var session = GetSession();
|
||||
var service = new FirewallService();
|
||||
int? vmid = VmId > 0 ? VmId : (int?)null;
|
||||
var vmid = VmId;
|
||||
|
||||
WriteVerbose($"Removing entry '{Cidr}' from IP set '{Name}' at level '{level}'...");
|
||||
service.RemoveIpSetEntry(session, level, Name, Cidr, Node, vmid);
|
||||
|
||||
@@ -7,7 +7,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
{
|
||||
[Cmdlet(VerbsCommon.Remove, "PveFirewallRule", SupportsShouldProcess = true, ConfirmImpact = ConfirmImpact.High)]
|
||||
[OutputType(typeof(void))]
|
||||
public class RemovePveFirewallRuleCmdlet : PveCmdletBase
|
||||
public sealed class RemovePveFirewallRuleCmdlet : PveCmdletBase
|
||||
{
|
||||
[Parameter(Mandatory = true, Position = 0, HelpMessage = "The firewall level: Cluster, Node, Vm, or Container.")]
|
||||
[ValidateSet("Cluster", "Node", "Vm", "Container")]
|
||||
@@ -18,7 +18,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
|
||||
[Parameter(Mandatory = false, HelpMessage = "The VM/Container ID. Required when Level is Vm or Container.")]
|
||||
[ValidateRange(100, 999999999)]
|
||||
public int VmId { get; set; }
|
||||
public int? VmId { get; set; }
|
||||
|
||||
[Parameter(Mandatory = true, HelpMessage = "The rule position to remove.")]
|
||||
public int Position { get; set; }
|
||||
@@ -39,7 +39,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
if (string.Equals(level, "Vm", StringComparison.OrdinalIgnoreCase) ||
|
||||
string.Equals(level, "Container", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
if (VmId == 0)
|
||||
if (!VmId.HasValue)
|
||||
{
|
||||
ThrowTerminatingError(new ErrorRecord(
|
||||
new PSArgumentException("VmId is required when Level is Vm or Container."),
|
||||
@@ -53,7 +53,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
|
||||
var session = GetSession();
|
||||
var service = new FirewallService();
|
||||
int? vmid = VmId > 0 ? VmId : (int?)null;
|
||||
var vmid = VmId;
|
||||
|
||||
WriteVerbose($"Removing firewall rule at position {Position} ({level})...");
|
||||
service.RemoveRule(session, level, Position, Node, vmid);
|
||||
|
||||
@@ -7,7 +7,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
{
|
||||
[Cmdlet(VerbsCommon.Set, "PveFirewallAlias", SupportsShouldProcess = true)]
|
||||
[OutputType(typeof(void))]
|
||||
public class SetPveFirewallAliasCmdlet : PveCmdletBase
|
||||
public sealed class SetPveFirewallAliasCmdlet : PveCmdletBase
|
||||
{
|
||||
[Parameter(Mandatory = true, Position = 0, HelpMessage = "The firewall level: Cluster, Node, Vm, or Container.")]
|
||||
[ValidateSet("Cluster", "Node", "Vm", "Container")]
|
||||
@@ -18,7 +18,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
|
||||
[Parameter(Mandatory = false, HelpMessage = "The VM/Container ID. Required when Level is Vm or Container.")]
|
||||
[ValidateRange(100, 999999999)]
|
||||
public int VmId { get; set; }
|
||||
public int? VmId { get; set; }
|
||||
|
||||
[Parameter(Mandatory = true, HelpMessage = "The alias name to update.")]
|
||||
public string Name { get; set; } = string.Empty;
|
||||
@@ -45,7 +45,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
if (string.Equals(level, "Vm", StringComparison.OrdinalIgnoreCase) ||
|
||||
string.Equals(level, "Container", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
if (VmId == 0)
|
||||
if (!VmId.HasValue)
|
||||
{
|
||||
ThrowTerminatingError(new ErrorRecord(
|
||||
new PSArgumentException("VmId is required when Level is Vm or Container."),
|
||||
@@ -59,7 +59,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
|
||||
var session = GetSession();
|
||||
var service = new FirewallService();
|
||||
int? vmid = VmId > 0 ? VmId : (int?)null;
|
||||
var vmid = VmId;
|
||||
|
||||
WriteVerbose($"Updating firewall alias '{Name}' at level '{level}'...");
|
||||
service.UpdateAlias(session, level, Name, Cidr, Comment, Node, vmid);
|
||||
|
||||
@@ -7,7 +7,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
{
|
||||
[Cmdlet(VerbsCommon.Set, "PveFirewallIpSetEntry", SupportsShouldProcess = true)]
|
||||
[OutputType(typeof(void))]
|
||||
public class SetPveFirewallIpSetEntryCmdlet : PveCmdletBase
|
||||
public sealed class SetPveFirewallIpSetEntryCmdlet : PveCmdletBase
|
||||
{
|
||||
[Parameter(Mandatory = true, Position = 0, HelpMessage = "The firewall level: Cluster, Node, Vm, or Container.")]
|
||||
[ValidateSet("Cluster", "Node", "Vm", "Container")]
|
||||
@@ -18,7 +18,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
|
||||
[Parameter(Mandatory = false, HelpMessage = "The VM/Container ID. Required when Level is Vm or Container.")]
|
||||
[ValidateRange(100, 999999999)]
|
||||
public int VmId { get; set; }
|
||||
public int? VmId { get; set; }
|
||||
|
||||
[Parameter(Mandatory = true, HelpMessage = "The IP set name.")]
|
||||
public string Name { get; set; } = string.Empty;
|
||||
@@ -48,7 +48,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
if (string.Equals(level, "Vm", StringComparison.OrdinalIgnoreCase) ||
|
||||
string.Equals(level, "Container", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
if (VmId == 0)
|
||||
if (!VmId.HasValue)
|
||||
{
|
||||
ThrowTerminatingError(new ErrorRecord(
|
||||
new PSArgumentException("VmId is required when Level is Vm or Container."),
|
||||
@@ -62,7 +62,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
|
||||
var session = GetSession();
|
||||
var service = new FirewallService();
|
||||
int? vmid = VmId > 0 ? VmId : (int?)null;
|
||||
var vmid = VmId;
|
||||
bool? nomatch = NoMatch.IsPresent ? true : (bool?)null;
|
||||
|
||||
WriteVerbose($"Updating entry '{Cidr}' in IP set '{Name}' at level '{level}'...");
|
||||
|
||||
@@ -8,7 +8,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
{
|
||||
[Cmdlet(VerbsCommon.Set, "PveFirewallOptions", SupportsShouldProcess = true)]
|
||||
[OutputType(typeof(void))]
|
||||
public class SetPveFirewallOptionsCmdlet : PveCmdletBase
|
||||
public sealed class SetPveFirewallOptionsCmdlet : PveCmdletBase
|
||||
{
|
||||
[Parameter(Mandatory = true, Position = 0, HelpMessage = "The firewall level: Cluster, Node, Vm, or Container.")]
|
||||
[ValidateSet("Cluster", "Node", "Vm", "Container")]
|
||||
@@ -19,7 +19,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
|
||||
[Parameter(Mandatory = false, HelpMessage = "The VM/Container ID. Required when Level is Vm or Container.")]
|
||||
[ValidateRange(100, 999999999)]
|
||||
public int VmId { get; set; }
|
||||
public int? VmId { get; set; }
|
||||
|
||||
[Parameter(Mandatory = false, HelpMessage = "Enable or disable the firewall.")]
|
||||
public SwitchParameter Enable { get; set; }
|
||||
@@ -66,7 +66,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
if (string.Equals(level, "Vm", StringComparison.OrdinalIgnoreCase) ||
|
||||
string.Equals(level, "Container", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
if (VmId == 0)
|
||||
if (!VmId.HasValue)
|
||||
{
|
||||
ThrowTerminatingError(new ErrorRecord(
|
||||
new PSArgumentException("VmId is required when Level is Vm or Container."),
|
||||
@@ -80,7 +80,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
|
||||
var session = GetSession();
|
||||
var service = new FirewallService();
|
||||
int? vmid = VmId > 0 ? VmId : (int?)null;
|
||||
var vmid = VmId;
|
||||
|
||||
var config = new Dictionary<string, string>();
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
{
|
||||
[Cmdlet(VerbsCommon.Set, "PveFirewallRule", SupportsShouldProcess = true)]
|
||||
[OutputType(typeof(void))]
|
||||
public class SetPveFirewallRuleCmdlet : PveCmdletBase
|
||||
public sealed class SetPveFirewallRuleCmdlet : PveCmdletBase
|
||||
{
|
||||
[Parameter(Mandatory = true, Position = 0, HelpMessage = "The firewall level: Cluster, Node, Vm, or Container.")]
|
||||
[ValidateSet("Cluster", "Node", "Vm", "Container")]
|
||||
@@ -19,7 +19,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
|
||||
[Parameter(Mandatory = false, HelpMessage = "The VM/Container ID. Required when Level is Vm or Container.")]
|
||||
[ValidateRange(100, 999999999)]
|
||||
public int VmId { get; set; }
|
||||
public int? VmId { get; set; }
|
||||
|
||||
[Parameter(Mandatory = true, HelpMessage = "The rule position to update.")]
|
||||
public int Position { get; set; }
|
||||
@@ -78,7 +78,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
if (string.Equals(level, "Vm", StringComparison.OrdinalIgnoreCase) ||
|
||||
string.Equals(level, "Container", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
if (VmId == 0)
|
||||
if (!VmId.HasValue)
|
||||
{
|
||||
ThrowTerminatingError(new ErrorRecord(
|
||||
new PSArgumentException("VmId is required when Level is Vm or Container."),
|
||||
@@ -92,7 +92,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
|
||||
|
||||
var session = GetSession();
|
||||
var service = new FirewallService();
|
||||
int? vmid = VmId > 0 ? VmId : (int?)null;
|
||||
var vmid = VmId;
|
||||
|
||||
var config = new Dictionary<string, string>();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user