<filename>sdk/dotnet/DlpFpdocsource.cs// *** 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>
    /// Create a DLP fingerprint database by allowing the FortiGate to access a file server containing files from which to create fingerprints.
    /// 
    /// ## 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.DlpFpdocsource("trname", new()
    ///     {
    ///         Date = 1,
    ///         FilePath = "/",
    ///         FilePattern = "*",
    ///         KeepModified = "enable",
    ///         Period = "none",
    ///         RemoveDeleted = "enable",
    ///         ScanOnCreation = "enable",
    ///         ScanSubdirectories = "enable",
    ///         Server = "1.1.1.1",
    ///         ServerType = "samba",
    ///         TodHour = 1,
    ///         TodMin = 0,
    ///         Username = "sgh",
    ///         Vdom = "mgmt",
    ///         Weekday = "sunday",
    ///     });
    /// 
    /// });
    /// ```
    /// 
    /// ## Import
    /// 
    /// Dlp FpDocSource can be imported using any of these accepted formats
    /// 
    /// ```sh
    ///  $ pulumi import fortios:index/dlpFpdocsource:DlpFpdocsource labelname {{name}}
    /// ```
    /// 
    ///  If you do not want to import arguments of block$ export "FORTIOS_IMPORT_TABLE"="false"
    /// 
    /// ```sh
    ///  $ pulumi import fortios:index/dlpFpdocsource:DlpFpdocsource labelname {{name}}
    /// ```
    /// 
    ///  $ unset "FORTIOS_IMPORT_TABLE"
    /// </summary>
    [FortiosResourceType("fortios:index/dlpFpdocsource:DlpFpdocsource")]
    public partial class DlpFpdocsource : global::Pulumi.CustomResource
    {
        /// <summary>
        /// Day of the month on which to scan the server (1 - 31).
        /// </summary>
        [Output("date")]
        public Output<int> Date { get; private set; } = null!;

        /// <summary>
        /// Path on the server to the fingerprint files (max 119 characters).
        /// </summary>
        [Output("filePath")]
        public Output<string> FilePath { get; private set; } = null!;

        /// <summary>
        /// Files matching this pattern on the server are fingerprinted. Optionally use the * and ? wildcards.
        /// </summary>
        [Output("filePattern")]
        public Output<string> FilePattern { get; private set; } = null!;

        /// <summary>
        /// Enable so that when a file is changed on the server the FortiGate keeps the old fingerprint and adds a new fingerprint to the database. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("keepModified")]
        public Output<string> KeepModified { get; private set; } = null!;

        /// <summary>
        /// Name of the DLP fingerprint database.
        /// </summary>
        [Output("name")]
        public Output<string> Name { get; private set; } = null!;

        /// <summary>
        /// Password required to log into the file server.
        /// </summary>
        [Output("password")]
        public Output<string?> Password { get; private set; } = null!;

        /// <summary>
        /// Frequency for which the FortiGate checks the server for new or changed files. Valid values: `none`, `daily`, `weekly`, `monthly`.
        /// </summary>
        [Output("period")]
        public Output<string> Period { get; private set; } = null!;

        /// <summary>
        /// Enable to keep the fingerprint database up to date when a file is deleted from the server. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("removeDeleted")]
        public Output<string> RemoveDeleted { get; private set; } = null!;

        /// <summary>
        /// Enable to keep the fingerprint database up to date when a file is added or changed on the server. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("scanOnCreation")]
        public Output<string> ScanOnCreation { get; private set; } = null!;

        /// <summary>
        /// Enable/disable scanning subdirectories to find files to create fingerprints from. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("scanSubdirectories")]
        public Output<string> ScanSubdirectories { get; private set; } = null!;

        /// <summary>
        /// Select a sensitivity or threat level for matches with this fingerprint database. Add sensitivities using fp-sensitivity.
        /// </summary>
        [Output("sensitivity")]
        public Output<string> Sensitivity { get; private set; } = null!;

        /// <summary>
        /// IPv4 or IPv6 address of the server.
        /// </summary>
        [Output("server")]
        public Output<string> Server { get; private set; } = null!;

        /// <summary>
        /// Protocol used to communicate with the file server. Currently only Samba (SMB) servers are supported. Valid values: `samba`.
        /// </summary>
        [Output("serverType")]
        public Output<string> ServerType { get; private set; } = null!;

        /// <summary>
        /// Hour of the day on which to scan the server (0 - 23, default = 1).
        /// </summary>
        [Output("todHour")]
        public Output<int> TodHour { get; private set; } = null!;

        /// <summary>
        /// Minute of the hour on which to scan the server (0 - 59).
        /// </summary>
        [Output("todMin")]
        public Output<int> TodMin { get; private set; } = null!;

        /// <summary>
        /// User name required to log into the file server.
        /// </summary>
        [Output("username")]
        public Output<string> Username { get; private set; } = null!;

        /// <summary>
        /// Select the VDOM that can communicate with the file server. Valid values: `mgmt`, `current`.
        /// </summary>
        [Output("vdom")]
        public Output<string> Vdom { 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>
        /// Day of the week on which to scan the server. Valid values: `sunday`, `monday`, `tuesday`, `wednesday`, `thursday`, `friday`, `saturday`.
        /// </summary>
        [Output("weekday")]
        public Output<string> Weekday { get; private set; } = null!;


        /// <summary>
        /// Create a DlpFpdocsource 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 DlpFpdocsource(string name, DlpFpdocsourceArgs args, CustomResourceOptions? options = null)
            : base("fortios:index/dlpFpdocsource:DlpFpdocsource", name, args ?? new DlpFpdocsourceArgs(), MakeResourceOptions(options, ""))
        {
        }

        private DlpFpdocsource(string name, Input<string> id, DlpFpdocsourceState? state = null, CustomResourceOptions? options = null)
            : base("fortios:index/dlpFpdocsource:DlpFpdocsource", 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",
                AdditionalSecretOutputs =
                {
                    "password",
                },
            };
            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 DlpFpdocsource 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 DlpFpdocsource Get(string name, Input<string> id, DlpFpdocsourceState? state = null, CustomResourceOptions? options = null)
        {
            return new DlpFpdocsource(name, id, state, options);
        }
    }

    public sealed class DlpFpdocsourceArgs : global::Pulumi.ResourceArgs
    {
        /// <summary>
        /// Day of the month on which to scan the server (1 - 31).
        /// </summary>
        [Input("date")]
        public Input<int>? Date { get; set; }

        /// <summary>
        /// Path on the server to the fingerprint files (max 119 characters).
        /// </summary>
        [Input("filePath")]
        public Input<string>? FilePath { get; set; }

        /// <summary>
        /// Files matching this pattern on the server are fingerprinted. Optionally use the * and ? wildcards.
        /// </summary>
        [Input("filePattern")]
        public Input<string>? FilePattern { get; set; }

        /// <summary>
        /// Enable so that when a file is changed on the server the FortiGate keeps the old fingerprint and adds a new fingerprint to the database. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("keepModified")]
        public Input<string>? KeepModified { get; set; }

        /// <summary>
        /// Name of the DLP fingerprint database.
        /// </summary>
        [Input("name")]
        public Input<string>? Name { get; set; }

        [Input("password")]
        private Input<string>? _password;

        /// <summary>
        /// Password required to log into the file server.
        /// </summary>
        public Input<string>? Password
        {
            get => _password;
            set
            {
                var emptySecret = Output.CreateSecret(0);
                _password = Output.Tuple<Input<string>?, int>(value, emptySecret).Apply(t => t.Item1);
            }
        }

        /// <summary>
        /// Frequency for which the FortiGate checks the server for new or changed files. Valid values: `none`, `daily`, `weekly`, `monthly`.
        /// </summary>
        [Input("period")]
        public Input<string>? Period { get; set; }

        /// <summary>
        /// Enable to keep the fingerprint database up to date when a file is deleted from the server. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("removeDeleted")]
        public Input<string>? RemoveDeleted { get; set; }

        /// <summary>
        /// Enable to keep the fingerprint database up to date when a file is added or changed on the server. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("scanOnCreation")]
        public Input<string>? ScanOnCreation { get; set; }

        /// <summary>
        /// Enable/disable scanning subdirectories to find files to create fingerprints from. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("scanSubdirectories")]
        public Input<string>? ScanSubdirectories { get; set; }

        /// <summary>
        /// Select a sensitivity or threat level for matches with this fingerprint database. Add sensitivities using fp-sensitivity.
        /// </summary>
        [Input("sensitivity")]
        public Input<string>? Sensitivity { get; set; }

        /// <summary>
        /// IPv4 or IPv6 address of the server.
        /// </summary>
        [Input("server", required: true)]
        public Input<string> Server { get; set; } = null!;

        /// <summary>
        /// Protocol used to communicate with the file server. Currently only Samba (SMB) servers are supported. Valid values: `samba`.
        /// </summary>
        [Input("serverType", required: true)]
        public Input<string> ServerType { get; set; } = null!;

        /// <summary>
        /// Hour of the day on which to scan the server (0 - 23, default = 1).
        /// </summary>
        [Input("todHour")]
        public Input<int>? TodHour { get; set; }

        /// <summary>
        /// Minute of the hour on which to scan the server (0 - 59).
        /// </summary>
        [Input("todMin")]
        public Input<int>? TodMin { get; set; }

        /// <summary>
        /// User name required to log into the file server.
        /// </summary>
        [Input("username", required: true)]
        public Input<string> Username { get; set; } = null!;

        /// <summary>
        /// Select the VDOM that can communicate with the file server. Valid values: `mgmt`, `current`.
        /// </summary>
        [Input("vdom")]
        public Input<string>? Vdom { 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; }

        /// <summary>
        /// Day of the week on which to scan the server. Valid values: `sunday`, `monday`, `tuesday`, `wednesday`, `thursday`, `friday`, `saturday`.
        /// </summary>
        [Input("weekday")]
        public Input<string>? Weekday { get; set; }

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

    public sealed class DlpFpdocsourceState : global::Pulumi.ResourceArgs
    {
        /// <summary>
        /// Day of the month on which to scan the server (1 - 31).
        /// </summary>
        [Input("date")]
        public Input<int>? Date { get; set; }

        /// <summary>
        /// Path on the server to the fingerprint files (max 119 characters).
        /// </summary>
        [Input("filePath")]
        public Input<string>? FilePath { get; set; }

        /// <summary>
        /// Files matching this pattern on the server are fingerprinted. Optionally use the * and ? wildcards.
        /// </summary>
        [Input("filePattern")]
        public Input<string>? FilePattern { get; set; }

        /// <summary>
        /// Enable so that when a file is changed on the server the FortiGate keeps the old fingerprint and adds a new fingerprint to the database. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("keepModified")]
        public Input<string>? KeepModified { get; set; }

        /// <summary>
        /// Name of the DLP fingerprint database.
        /// </summary>
        [Input("name")]
        public Input<string>? Name { get; set; }

        [Input("password")]
        private Input<string>? _password;

        /// <summary>
        /// Password required to log into the file server.
        /// </summary>
        public Input<string>? Password
        {
            get => _password;
            set
            {
                var emptySecret = Output.CreateSecret(0);
                _password = Output.Tuple<Input<string>?, int>(value, emptySecret).Apply(t => t.Item1);
            }
        }

        /// <summary>
        /// Frequency for which the FortiGate checks the server for new or changed files. Valid values: `none`, `daily`, `weekly`, `monthly`.
        /// </summary>
        [Input("period")]
        public Input<string>? Period { get; set; }

        /// <summary>
        /// Enable to keep the fingerprint database up to date when a file is deleted from the server. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("removeDeleted")]
        public Input<string>? RemoveDeleted { get; set; }

        /// <summary>
        /// Enable to keep the fingerprint database up to date when a file is added or changed on the server. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("scanOnCreation")]
        public Input<string>? ScanOnCreation { get; set; }

        /// <summary>
        /// Enable/disable scanning subdirectories to find files to create fingerprints from. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("scanSubdirectories")]
        public Input<string>? ScanSubdirectories { get; set; }

        /// <summary>
        /// Select a sensitivity or threat level for matches with this fingerprint database. Add sensitivities using fp-sensitivity.
        /// </summary>
        [Input("sensitivity")]
        public Input<string>? Sensitivity { get; set; }

        /// <summary>
        /// IPv4 or IPv6 address of the server.
        /// </summary>
        [Input("server")]
        public Input<string>? Server { get; set; }

        /// <summary>
        /// Protocol used to communicate with the file server. Currently only Samba (SMB) servers are supported. Valid values: `samba`.
        /// </summary>
        [Input("serverType")]
        public Input<string>? ServerType { get; set; }

        /// <summary>
        /// Hour of the day on which to scan the server (0 - 23, default = 1).
        /// </summary>
        [Input("todHour")]
        public Input<int>? TodHour { get; set; }

        /// <summary>
        /// Minute of the hour on which to scan the server (0 - 59).
        /// </summary>
        [Input("todMin")]
        public Input<int>? TodMin { get; set; }

        /// <summary>
        /// User name required to log into the file server.
        /// </summary>
        [Input("username")]
        public Input<string>? Username { get; set; }

        /// <summary>
        /// Select the VDOM that can communicate with the file server. Valid values: `mgmt`, `current`.
        /// </summary>
        [Input("vdom")]
        public Input<string>? Vdom { 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; }

        /// <summary>
        /// Day of the week on which to scan the server. Valid values: `sunday`, `monday`, `tuesday`, `wednesday`, `thursday`, `friday`, `saturday`.
        /// </summary>
        [Input("weekday")]
        public Input<string>? Weekday { get; set; }

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