<reponame>pulumiverse/pulumi-fortios<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
{
    public static class GetSystemFortiguard
    {
        /// <summary>
        /// Use this data source to get information on fortios system fortiguard
        /// </summary>
        public static Task<GetSystemFortiguardResult> InvokeAsync(GetSystemFortiguardArgs? args = null, InvokeOptions? options = null)
            => global::Pulumi.Deployment.Instance.InvokeAsync<GetSystemFortiguardResult>("fortios:index/getSystemFortiguard:getSystemFortiguard", args ?? new GetSystemFortiguardArgs(), options.WithDefaults());

        /// <summary>
        /// Use this data source to get information on fortios system fortiguard
        /// </summary>
        public static Output<GetSystemFortiguardResult> Invoke(GetSystemFortiguardInvokeArgs? args = null, InvokeOptions? options = null)
            => global::Pulumi.Deployment.Instance.Invoke<GetSystemFortiguardResult>("fortios:index/getSystemFortiguard:getSystemFortiguard", args ?? new GetSystemFortiguardInvokeArgs(), options.WithDefaults());
    }


    public sealed class GetSystemFortiguardArgs : global::Pulumi.InvokeArgs
    {
        /// <summary>
        /// Specifies the vdom to which the data source 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 string? Vdomparam { get; set; }

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

    public sealed class GetSystemFortiguardInvokeArgs : global::Pulumi.InvokeArgs
    {
        /// <summary>
        /// Specifies the vdom to which the data source 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 GetSystemFortiguardInvokeArgs()
        {
        }
        public static new GetSystemFortiguardInvokeArgs Empty => new GetSystemFortiguardInvokeArgs();
    }


    [OutputType]
    public sealed class GetSystemFortiguardResult
    {
        /// <summary>
        /// Enable/disable FortiGuard antispam request caching. Uses a small amount of memory but improves performance.
        /// </summary>
        public readonly string AntispamCache;
        /// <summary>
        /// Maximum percent of FortiGate memory the antispam cache is allowed to use (1 - 15%).
        /// </summary>
        public readonly int AntispamCacheMpercent;
        /// <summary>
        /// Time-to-live for antispam cache entries in seconds (300 - 86400). Lower times reduce the cache size. Higher times may improve performance since the cache will have more entries.
        /// </summary>
        public readonly int AntispamCacheTtl;
        /// <summary>
        /// Expiration date of the FortiGuard antispam contract.
        /// </summary>
        public readonly int AntispamExpiration;
        /// <summary>
        /// Enable/disable turning off the FortiGuard antispam service.
        /// </summary>
        public readonly string AntispamForceOff;
        /// <summary>
        /// Interval of time between license checks for the FortiGuard antispam contract.
        /// </summary>
        public readonly int AntispamLicense;
        /// <summary>
        /// Antispam query time out (1 - 30 sec, default = 7).
        /// </summary>
        public readonly int AntispamTimeout;
        /// <summary>
        /// IP address of the FortiGuard anycast DNS rating server.
        /// </summary>
        public readonly string AnycastSdnsServerIp;
        /// <summary>
        /// Port to connect to on the FortiGuard anycast DNS rating server.
        /// </summary>
        public readonly int AnycastSdnsServerPort;
        /// <summary>
        /// Enable/disable automatic patch-level firmware upgrade from FortiGuard. The FortiGate unit searches for new patches only in the same major and minor version.
        /// </summary>
        public readonly string AutoFirmwareUpgrade;
        /// <summary>
        /// Allowed day(s) of the week to start automatic patch-level firmware upgrade from FortiGuard.
        /// </summary>
        public readonly string AutoFirmwareUpgradeDay;
        /// <summary>
        /// End time in the designated time window for automatic patch-level firmware upgrade from FortiGuard in 24 hour time (0 ~ 23, default = 4). When the end time is smaller than the start time, the end time is interpreted as the next day. The actual upgrade time is selected randomly within the time window.
        /// </summary>
        public readonly int AutoFirmwareUpgradeEndHour;
        /// <summary>
        /// Start time in the designated time window for automatic patch-level firmware upgrade from FortiGuard in 24 hour time (0 ~ 23, default = 2). The actual upgrade time is selected randomly within the time window.
        /// </summary>
        public readonly int AutoFirmwareUpgradeStartHour;
        /// <summary>
        /// Automatically connect to and login to FortiCloud.
        /// </summary>
        public readonly string AutoJoinForticloud;
        /// <summary>
        /// IP address of the FortiDDNS server.
        /// </summary>
        public readonly string DdnsServerIp;
        /// <summary>
        /// IPv6 address of the FortiDDNS server.
        /// </summary>
        public readonly string DdnsServerIp6;
        /// <summary>
        /// Port used to communicate with FortiDDNS servers.
        /// </summary>
        public readonly int DdnsServerPort;
        /// <summary>
        /// Enable/disable use of FortiGuard's anycast network.
        /// </summary>
        public readonly string FortiguardAnycast;
        /// <summary>
        /// Configure which of Fortinet's servers to provide FortiGuard services in FortiGuard's anycast network. Default is Fortinet.
        /// </summary>
        public readonly string FortiguardAnycastSource;
        /// <summary>
        /// The provider-assigned unique ID for this managed resource.
        /// </summary>
        public readonly string Id;
        /// <summary>
        /// Specify outgoing interface to reach server.
        /// </summary>
        public readonly string Interface;
        /// <summary>
        /// Specify how to select outgoing interface to reach server.
        /// </summary>
        public readonly string InterfaceSelectMethod;
        /// <summary>
        /// Number of servers to alternate between as first FortiGuard option.
        /// </summary>
        public readonly int LoadBalanceServers;
        /// <summary>
        /// Enable/disable FortiGuard Virus Outbreak Prevention cache.
        /// </summary>
        public readonly string OutbreakPreventionCache;
        /// <summary>
        /// Maximum percent of memory FortiGuard Virus Outbreak Prevention cache can use (1 - 15%, default = 2).
        /// </summary>
        public readonly int OutbreakPreventionCacheMpercent;
        /// <summary>
        /// Time-to-live for FortiGuard Virus Outbreak Prevention cache entries (300 - 86400 sec, default = 300).
        /// </summary>
        public readonly int OutbreakPreventionCacheTtl;
        /// <summary>
        /// Expiration date of FortiGuard Virus Outbreak Prevention contract.
        /// </summary>
        public readonly int OutbreakPreventionExpiration;
        /// <summary>
        /// Turn off FortiGuard Virus Outbreak Prevention service.
        /// </summary>
        public readonly string OutbreakPreventionForceOff;
        /// <summary>
        /// Interval of time between license checks for FortiGuard Virus Outbreak Prevention contract.
        /// </summary>
        public readonly int OutbreakPreventionLicense;
        /// <summary>
        /// FortiGuard Virus Outbreak Prevention time out (1 - 30 sec, default = 7).
        /// </summary>
        public readonly int OutbreakPreventionTimeout;
        /// <summary>
        /// Enable/disable use of persistent connection to receive update notification from FortiGuard.
        /// </summary>
        public readonly string PersistentConnection;
        /// <summary>
        /// Port used to communicate with the FortiGuard servers.
        /// </summary>
        public readonly string Port;
        /// <summary>
        /// Protocol used to communicate with the FortiGuard servers.
        /// </summary>
        public readonly string Protocol;
        /// <summary>
        /// Proxy user password.
        /// </summary>
        public readonly string ProxyPassword;
        /// <summary>
        /// IP address of the proxy server.
        /// </summary>
        public readonly string ProxyServerIp;
        /// <summary>
        /// Port used to communicate with the proxy server.
        /// </summary>
        public readonly int ProxyServerPort;
        /// <summary>
        /// Proxy user name.
        /// </summary>
        public readonly string ProxyUsername;
        /// <summary>
        /// Enable/disable FortiCloud Sandbox inline-scan.
        /// </summary>
        public readonly string SandboxInlineScan;
        /// <summary>
        /// Cloud sandbox region.
        /// </summary>
        public readonly string SandboxRegion;
        /// <summary>
        /// Customization options for the FortiGuard DNS service.
        /// </summary>
        public readonly string SdnsOptions;
        /// <summary>
        /// IP address of the FortiDNS server.
        /// </summary>
        public readonly string SdnsServerIp;
        /// <summary>
        /// Port used to communicate with FortiDNS servers.
        /// </summary>
        public readonly int SdnsServerPort;
        /// <summary>
        /// Service account ID.
        /// </summary>
        public readonly string ServiceAccountId;
        /// <summary>
        /// Source IPv4 address used to communicate with FortiGuard.
        /// </summary>
        public readonly string SourceIp;
        /// <summary>
        /// Source IPv6 address used to communicate with FortiGuard.
        /// </summary>
        public readonly string SourceIp6;
        /// <summary>
        /// Enable/disable proxy dictionary rebuild.
        /// </summary>
        public readonly string UpdateBuildProxy;
        /// <summary>
        /// Enable/disable external resource update.
        /// </summary>
        public readonly string UpdateExtdb;
        /// <summary>
        /// Enable/disable Internet Service Database update.
        /// </summary>
        public readonly string UpdateFfdb;
        /// <summary>
        /// Signature update server location.
        /// </summary>
        public readonly string UpdateServerLocation;
        /// <summary>
        /// Enable/disable allowlist update.
        /// </summary>
        public readonly string UpdateUwdb;
        /// <summary>
        /// FortiGuard Service virtual domain name.
        /// </summary>
        public readonly string Vdom;
        public readonly string? Vdomparam;
        /// <summary>
        /// Expiration date of the FortiGuard video filter contract.
        /// </summary>
        public readonly int VideofilterExpiration;
        /// <summary>
        /// Interval of time between license checks for the FortiGuard video filter contract.
        /// </summary>
        public readonly int VideofilterLicense;
        /// <summary>
        /// Enable/disable FortiGuard web filter caching.
        /// </summary>
        public readonly string WebfilterCache;
        /// <summary>
        /// Time-to-live for web filter cache entries in seconds (300 - 86400).
        /// </summary>
        public readonly int WebfilterCacheTtl;
        /// <summary>
        /// Expiration date of the FortiGuard web filter contract.
        /// </summary>
        public readonly int WebfilterExpiration;
        /// <summary>
        /// Enable/disable turning off the FortiGuard web filtering service.
        /// </summary>
        public readonly string WebfilterForceOff;
        /// <summary>
        /// Interval of time between license checks for the FortiGuard web filter contract.
        /// </summary>
        public readonly int WebfilterLicense;
        /// <summary>
        /// Web filter query time out (1 - 30 sec, default = 7).
        /// </summary>
        public readonly int WebfilterTimeout;

        [OutputConstructor]
        private GetSystemFortiguardResult(
            string antispamCache,

            int antispamCacheMpercent,

            int antispamCacheTtl,

            int antispamExpiration,

            string antispamForceOff,

            int antispamLicense,

            int antispamTimeout,

            string anycastSdnsServerIp,

            int anycastSdnsServerPort,

            string autoFirmwareUpgrade,

            string autoFirmwareUpgradeDay,

            int autoFirmwareUpgradeEndHour,

            int autoFirmwareUpgradeStartHour,

            string autoJoinForticloud,

            string ddnsServerIp,

            string ddnsServerIp6,

            int ddnsServerPort,

            string fortiguardAnycast,

            string fortiguardAnycastSource,

            string id,

            string @interface,

            string interfaceSelectMethod,

            int loadBalanceServers,

            string outbreakPreventionCache,

            int outbreakPreventionCacheMpercent,

            int outbreakPreventionCacheTtl,

            int outbreakPreventionExpiration,

            string outbreakPreventionForceOff,

            int outbreakPreventionLicense,

            int outbreakPreventionTimeout,

            string persistentConnection,

            string port,

            string protocol,

            string proxyPassword,

            string proxyServerIp,

            int proxyServerPort,

            string proxyUsername,

            string sandboxInlineScan,

            string sandboxRegion,

            string sdnsOptions,

            string sdnsServerIp,

            int sdnsServerPort,

            string serviceAccountId,

            string sourceIp,

            string sourceIp6,

            string updateBuildProxy,

            string updateExtdb,

            string updateFfdb,

            string updateServerLocation,

            string updateUwdb,

            string vdom,

            string? vdomparam,

            int videofilterExpiration,

            int videofilterLicense,

            string webfilterCache,

            int webfilterCacheTtl,

            int webfilterExpiration,

            string webfilterForceOff,

            int webfilterLicense,

            int webfilterTimeout)
        {
            AntispamCache = antispamCache;
            AntispamCacheMpercent = antispamCacheMpercent;
            AntispamCacheTtl = antispamCacheTtl;
            AntispamExpiration = antispamExpiration;
            AntispamForceOff = antispamForceOff;
            AntispamLicense = antispamLicense;
            AntispamTimeout = antispamTimeout;
            AnycastSdnsServerIp = anycastSdnsServerIp;
            AnycastSdnsServerPort = anycastSdnsServerPort;
            AutoFirmwareUpgrade = autoFirmwareUpgrade;
            AutoFirmwareUpgradeDay = autoFirmwareUpgradeDay;
            AutoFirmwareUpgradeEndHour = autoFirmwareUpgradeEndHour;
            AutoFirmwareUpgradeStartHour = autoFirmwareUpgradeStartHour;
            AutoJoinForticloud = autoJoinForticloud;
            DdnsServerIp = ddnsServerIp;
            DdnsServerIp6 = ddnsServerIp6;
            DdnsServerPort = ddnsServerPort;
            FortiguardAnycast = fortiguardAnycast;
            FortiguardAnycastSource = fortiguardAnycastSource;
            Id = id;
            Interface = @interface;
            InterfaceSelectMethod = interfaceSelectMethod;
            LoadBalanceServers = loadBalanceServers;
            OutbreakPreventionCache = outbreakPreventionCache;
            OutbreakPreventionCacheMpercent = outbreakPreventionCacheMpercent;
            OutbreakPreventionCacheTtl = outbreakPreventionCacheTtl;
            OutbreakPreventionExpiration = outbreakPreventionExpiration;
            OutbreakPreventionForceOff = outbreakPreventionForceOff;
            OutbreakPreventionLicense = outbreakPreventionLicense;
            OutbreakPreventionTimeout = outbreakPreventionTimeout;
            PersistentConnection = persistentConnection;
            Port = port;
            Protocol = protocol;
            ProxyPassword = proxyPassword;
            ProxyServerIp = proxyServerIp;
            ProxyServerPort = proxyServerPort;
            ProxyUsername = proxyUsername;
            SandboxInlineScan = sandboxInlineScan;
            SandboxRegion = sandboxRegion;
            SdnsOptions = sdnsOptions;
            SdnsServerIp = sdnsServerIp;
            SdnsServerPort = sdnsServerPort;
            ServiceAccountId = serviceAccountId;
            SourceIp = sourceIp;
            SourceIp6 = sourceIp6;
            UpdateBuildProxy = updateBuildProxy;
            UpdateExtdb = updateExtdb;
            UpdateFfdb = updateFfdb;
            UpdateServerLocation = updateServerLocation;
            UpdateUwdb = updateUwdb;
            Vdom = vdom;
            Vdomparam = vdomparam;
            VideofilterExpiration = videofilterExpiration;
            VideofilterLicense = videofilterLicense;
            WebfilterCache = webfilterCache;
            WebfilterCacheTtl = webfilterCacheTtl;
            WebfilterExpiration = webfilterExpiration;
            WebfilterForceOff = webfilterForceOff;
            WebfilterLicense = webfilterLicense;
            WebfilterTimeout = webfilterTimeout;
        }
    }
}
