<gh_stars>0// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***

using System;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Threading.Tasks;
using Pulumi.Serialization;
using Pulumi;

namespace Pulumiverse.Fortios
{
    /// <summary>
    /// Configure quarantine options.
    /// 
    /// ## Example Usage
    /// 
    /// ```csharp
    /// using System.Collections.Generic;
    /// using System.Linq;
    /// using Pulumi;
    /// using Fortios = Pulumiverse.Fortios;
    /// 
    /// return await Deployment.RunAsync(() =&gt; 
    /// {
    ///     var trname = new Fortios.AntivirusQuarantine("trname", new()
    ///     {
    ///         Agelimit = 0,
    ///         Destination = "disk",
    ///         Lowspace = "ovrw-old",
    ///         Maxfilesize = 0,
    ///         QuarantineQuota = 0,
    ///         StoreBlocked = "imap smtp pop3 http ftp nntp imaps smtps pop3s ftps mapi cifs",
    ///         StoreHeuristic = "imap smtp pop3 http ftp nntp imaps smtps pop3s https ftps mapi cifs",
    ///         StoreInfected = "imap smtp pop3 http ftp nntp imaps smtps pop3s https ftps mapi cifs",
    ///     });
    /// 
    /// });
    /// ```
    /// 
    /// ## Import
    /// 
    /// Antivirus Quarantine can be imported using any of these accepted formats
    /// 
    /// ```sh
    ///  $ pulumi import fortios:index/antivirusQuarantine:AntivirusQuarantine labelname AntivirusQuarantine
    /// ```
    /// 
    ///  If you do not want to import arguments of block$ export "FORTIOS_IMPORT_TABLE"="false"
    /// 
    /// ```sh
    ///  $ pulumi import fortios:index/antivirusQuarantine:AntivirusQuarantine labelname AntivirusQuarantine
    /// ```
    /// 
    ///  $ unset "FORTIOS_IMPORT_TABLE"
    /// </summary>
    [FortiosResourceType("fortios:index/antivirusQuarantine:AntivirusQuarantine")]
    public partial class AntivirusQuarantine : global::Pulumi.CustomResource
    {
        /// <summary>
        /// Age limit for quarantined files (0 - 479 hours, 0 means forever).
        /// </summary>
        [Output("agelimit")]
        public Output<int> Agelimit { get; private set; } = null!;

        /// <summary>
        /// Choose whether to quarantine files to the FortiGate disk or to FortiAnalyzer or to delete them instead of quarantining them. Valid values: `NULL`, `disk`, `FortiAnalyzer`.
        /// </summary>
        [Output("destination")]
        public Output<string> Destination { get; private set; } = null!;

        /// <summary>
        /// Do not quarantine dropped files found in sessions using the selected protocols. Dropped files are deleted instead of being quarantined.
        /// </summary>
        [Output("dropBlocked")]
        public Output<string> DropBlocked { get; private set; } = null!;

        /// <summary>
        /// Do not quarantine files detected by heuristics found in sessions using the selected protocols. Dropped files are deleted instead of being quarantined.
        /// </summary>
        [Output("dropHeuristic")]
        public Output<string> DropHeuristic { get; private set; } = null!;

        /// <summary>
        /// Do not quarantine infected files found in sessions using the selected protocols. Dropped files are deleted instead of being quarantined.
        /// </summary>
        [Output("dropInfected")]
        public Output<string> DropInfected { get; private set; } = null!;

        /// <summary>
        /// Do not quarantine files detected by machine learning found in sessions using the selected protocols. Dropped files are deleted instead of being quarantined. Valid values: `imap`, `smtp`, `pop3`, `http`, `ftp`, `nntp`, `imaps`, `smtps`, `pop3s`, `https`, `ftps`, `mapi`, `cifs`, `ssh`.
        /// </summary>
        [Output("dropMachineLearning")]
        public Output<string> DropMachineLearning { get; private set; } = null!;

        /// <summary>
        /// Select the method for handling additional files when running low on disk space. Valid values: `drop-new`, `ovrw-old`.
        /// </summary>
        [Output("lowspace")]
        public Output<string> Lowspace { get; private set; } = null!;

        /// <summary>
        /// Maximum file size to quarantine (0 - 500 Mbytes, 0 means unlimited).
        /// </summary>
        [Output("maxfilesize")]
        public Output<int> Maxfilesize { get; private set; } = null!;

        /// <summary>
        /// The amount of disk space to reserve for quarantining files (0 - 4294967295 Mbytes, depends on disk space).
        /// </summary>
        [Output("quarantineQuota")]
        public Output<int> QuarantineQuota { get; private set; } = null!;

        /// <summary>
        /// Quarantine blocked files found in sessions using the selected protocols.
        /// </summary>
        [Output("storeBlocked")]
        public Output<string> StoreBlocked { get; private set; } = null!;

        /// <summary>
        /// Quarantine files detected by heuristics found in sessions using the selected protocols.
        /// </summary>
        [Output("storeHeuristic")]
        public Output<string> StoreHeuristic { get; private set; } = null!;

        /// <summary>
        /// Quarantine infected files found in sessions using the selected protocols.
        /// </summary>
        [Output("storeInfected")]
        public Output<string> StoreInfected { get; private set; } = null!;

        /// <summary>
        /// Quarantine files detected by machine learning found in sessions using the selected protocols. Valid values: `imap`, `smtp`, `pop3`, `http`, `ftp`, `nntp`, `imaps`, `smtps`, `pop3s`, `https`, `ftps`, `mapi`, `cifs`, `ssh`.
        /// </summary>
        [Output("storeMachineLearning")]
        public Output<string> StoreMachineLearning { get; private set; } = null!;

        /// <summary>
        /// Specifies the vdom to which the resource will be applied when the FortiGate unit is running in VDOM mode. Only one vdom can be specified. If you want to inherit the vdom configuration of the provider, please do not set this parameter.
        /// </summary>
        [Output("vdomparam")]
        public Output<string?> Vdomparam { get; private set; } = null!;


        /// <summary>
        /// Create a AntivirusQuarantine resource with the given unique name, arguments, and options.
        /// </summary>
        ///
        /// <param name="name">The unique name of the resource</param>
        /// <param name="args">The arguments used to populate this resource's properties</param>
        /// <param name="options">A bag of options that control this resource's behavior</param>
        public AntivirusQuarantine(string name, AntivirusQuarantineArgs? args = null, CustomResourceOptions? options = null)
            : base("fortios:index/antivirusQuarantine:AntivirusQuarantine", name, args ?? new AntivirusQuarantineArgs(), MakeResourceOptions(options, ""))
        {
        }

        private AntivirusQuarantine(string name, Input<string> id, AntivirusQuarantineState? state = null, CustomResourceOptions? options = null)
            : base("fortios:index/antivirusQuarantine:AntivirusQuarantine", name, state, MakeResourceOptions(options, id))
        {
        }

        private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input<string>? id)
        {
            var defaultOptions = new CustomResourceOptions
            {
                Version = Utilities.Version,
                PluginDownloadURL = "github://api.github.com/pulumiverse/pulumi-fortios",
            };
            var merged = CustomResourceOptions.Merge(defaultOptions, options);
            // Override the ID if one was specified for consistency with other language SDKs.
            merged.Id = id ?? merged.Id;
            return merged;
        }
        /// <summary>
        /// Get an existing AntivirusQuarantine resource's state with the given name, ID, and optional extra
        /// properties used to qualify the lookup.
        /// </summary>
        ///
        /// <param name="name">The unique name of the resulting resource.</param>
        /// <param name="id">The unique provider ID of the resource to lookup.</param>
        /// <param name="state">Any extra arguments used during the lookup.</param>
        /// <param name="options">A bag of options that control this resource's behavior</param>
        public static AntivirusQuarantine Get(string name, Input<string> id, AntivirusQuarantineState? state = null, CustomResourceOptions? options = null)
        {
            return new AntivirusQuarantine(name, id, state, options);
        }
    }

    public sealed class AntivirusQuarantineArgs : global::Pulumi.ResourceArgs
    {
        /// <summary>
        /// Age limit for quarantined files (0 - 479 hours, 0 means forever).
        /// </summary>
        [Input("agelimit")]
        public Input<int>? Agelimit { get; set; }

        /// <summary>
        /// Choose whether to quarantine files to the FortiGate disk or to FortiAnalyzer or to delete them instead of quarantining them. Valid values: `NULL`, `disk`, `FortiAnalyzer`.
        /// </summary>
        [Input("destination")]
        public Input<string>? Destination { get; set; }

        /// <summary>
        /// Do not quarantine dropped files found in sessions using the selected protocols. Dropped files are deleted instead of being quarantined.
        /// </summary>
        [Input("dropBlocked")]
        public Input<string>? DropBlocked { get; set; }

        /// <summary>
        /// Do not quarantine files detected by heuristics found in sessions using the selected protocols. Dropped files are deleted instead of being quarantined.
        /// </summary>
        [Input("dropHeuristic")]
        public Input<string>? DropHeuristic { get; set; }

        /// <summary>
        /// Do not quarantine infected files found in sessions using the selected protocols. Dropped files are deleted instead of being quarantined.
        /// </summary>
        [Input("dropInfected")]
        public Input<string>? DropInfected { get; set; }

        /// <summary>
        /// Do not quarantine files detected by machine learning found in sessions using the selected protocols. Dropped files are deleted instead of being quarantined. Valid values: `imap`, `smtp`, `pop3`, `http`, `ftp`, `nntp`, `imaps`, `smtps`, `pop3s`, `https`, `ftps`, `mapi`, `cifs`, `ssh`.
        /// </summary>
        [Input("dropMachineLearning")]
        public Input<string>? DropMachineLearning { get; set; }

        /// <summary>
        /// Select the method for handling additional files when running low on disk space. Valid values: `drop-new`, `ovrw-old`.
        /// </summary>
        [Input("lowspace")]
        public Input<string>? Lowspace { get; set; }

        /// <summary>
        /// Maximum file size to quarantine (0 - 500 Mbytes, 0 means unlimited).
        /// </summary>
        [Input("maxfilesize")]
        public Input<int>? Maxfilesize { get; set; }

        /// <summary>
        /// The amount of disk space to reserve for quarantining files (0 - 4294967295 Mbytes, depends on disk space).
        /// </summary>
        [Input("quarantineQuota")]
        public Input<int>? QuarantineQuota { get; set; }

        /// <summary>
        /// Quarantine blocked files found in sessions using the selected protocols.
        /// </summary>
        [Input("storeBlocked")]
        public Input<string>? StoreBlocked { get; set; }

        /// <summary>
        /// Quarantine files detected by heuristics found in sessions using the selected protocols.
        /// </summary>
        [Input("storeHeuristic")]
        public Input<string>? StoreHeuristic { get; set; }

        /// <summary>
        /// Quarantine infected files found in sessions using the selected protocols.
        /// </summary>
        [Input("storeInfected")]
        public Input<string>? StoreInfected { get; set; }

        /// <summary>
        /// Quarantine files detected by machine learning found in sessions using the selected protocols. Valid values: `imap`, `smtp`, `pop3`, `http`, `ftp`, `nntp`, `imaps`, `smtps`, `pop3s`, `https`, `ftps`, `mapi`, `cifs`, `ssh`.
        /// </summary>
        [Input("storeMachineLearning")]
        public Input<string>? StoreMachineLearning { get; set; }

        /// <summary>
        /// Specifies the vdom to which the resource will be applied when the FortiGate unit is running in VDOM mode. Only one vdom can be specified. If you want to inherit the vdom configuration of the provider, please do not set this parameter.
        /// </summary>
        [Input("vdomparam")]
        public Input<string>? Vdomparam { get; set; }

        public AntivirusQuarantineArgs()
        {
        }
        public static new AntivirusQuarantineArgs Empty => new AntivirusQuarantineArgs();
    }

    public sealed class AntivirusQuarantineState : global::Pulumi.ResourceArgs
    {
        /// <summary>
        /// Age limit for quarantined files (0 - 479 hours, 0 means forever).
        /// </summary>
        [Input("agelimit")]
        public Input<int>? Agelimit { get; set; }

        /// <summary>
        /// Choose whether to quarantine files to the FortiGate disk or to FortiAnalyzer or to delete them instead of quarantining them. Valid values: `NULL`, `disk`, `FortiAnalyzer`.
        /// </summary>
        [Input("destination")]
        public Input<string>? Destination { get; set; }

        /// <summary>
        /// Do not quarantine dropped files found in sessions using the selected protocols. Dropped files are deleted instead of being quarantined.
        /// </summary>
        [Input("dropBlocked")]
        public Input<string>? DropBlocked { get; set; }

        /// <summary>
        /// Do not quarantine files detected by heuristics found in sessions using the selected protocols. Dropped files are deleted instead of being quarantined.
        /// </summary>
        [Input("dropHeuristic")]
        public Input<string>? DropHeuristic { get; set; }

        /// <summary>
        /// Do not quarantine infected files found in sessions using the selected protocols. Dropped files are deleted instead of being quarantined.
        /// </summary>
        [Input("dropInfected")]
        public Input<string>? DropInfected { get; set; }

        /// <summary>
        /// Do not quarantine files detected by machine learning found in sessions using the selected protocols. Dropped files are deleted instead of being quarantined. Valid values: `imap`, `smtp`, `pop3`, `http`, `ftp`, `nntp`, `imaps`, `smtps`, `pop3s`, `https`, `ftps`, `mapi`, `cifs`, `ssh`.
        /// </summary>
        [Input("dropMachineLearning")]
        public Input<string>? DropMachineLearning { get; set; }

        /// <summary>
        /// Select the method for handling additional files when running low on disk space. Valid values: `drop-new`, `ovrw-old`.
        /// </summary>
        [Input("lowspace")]
        public Input<string>? Lowspace { get; set; }

        /// <summary>
        /// Maximum file size to quarantine (0 - 500 Mbytes, 0 means unlimited).
        /// </summary>
        [Input("maxfilesize")]
        public Input<int>? Maxfilesize { get; set; }

        /// <summary>
        /// The amount of disk space to reserve for quarantining files (0 - 4294967295 Mbytes, depends on disk space).
        /// </summary>
        [Input("quarantineQuota")]
        public Input<int>? QuarantineQuota { get; set; }

        /// <summary>
        /// Quarantine blocked files found in sessions using the selected protocols.
        /// </summary>
        [Input("storeBlocked")]
        public Input<string>? StoreBlocked { get; set; }

        /// <summary>
        /// Quarantine files detected by heuristics found in sessions using the selected protocols.
        /// </summary>
        [Input("storeHeuristic")]
        public Input<string>? StoreHeuristic { get; set; }

        /// <summary>
        /// Quarantine infected files found in sessions using the selected protocols.
        /// </summary>
        [Input("storeInfected")]
        public Input<string>? StoreInfected { get; set; }

        /// <summary>
        /// Quarantine files detected by machine learning found in sessions using the selected protocols. Valid values: `imap`, `smtp`, `pop3`, `http`, `ftp`, `nntp`, `imaps`, `smtps`, `pop3s`, `https`, `ftps`, `mapi`, `cifs`, `ssh`.
        /// </summary>
        [Input("storeMachineLearning")]
        public Input<string>? StoreMachineLearning { get; set; }

        /// <summary>
        /// Specifies the vdom to which the resource will be applied when the FortiGate unit is running in VDOM mode. Only one vdom can be specified. If you want to inherit the vdom configuration of the provider, please do not set this parameter.
        /// </summary>
        [Input("vdomparam")]
        public Input<string>? Vdomparam { get; set; }

        public AntivirusQuarantineState()
        {
        }
        public static new AntivirusQuarantineState Empty => new AntivirusQuarantineState();
    }
}
