// *** 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.Immutable;

namespace Pulumiverse.Fortios
{
    public static class Config
    {
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "IDE1006", Justification = 
        "Double underscore prefix used to avoid conflicts with variable names.")]
        private sealed class __Value<T>
        {
            private readonly Func<T> _getter;
            private T _value = default!;
            private bool _set;

            public __Value(Func<T> getter)
            {
                _getter = getter;
            }

            public T Get() => _set ? _value : _getter();

            public void Set(T value)
            {
                _value = value;
                _set = true;
            }
        }

        private static readonly global::Pulumi.Config __config = new global::Pulumi.Config("fortios");

        private static readonly __Value<string?> _cabundlecontent = new __Value<string?>(() => __config.Get("cabundlecontent") ?? Utilities.GetEnv("FORTIOS_CA_CABUNDLECONTENT"));
        /// <summary>
        /// CA Bundle file content
        /// </summary>
        public static string? Cabundlecontent
        {
            get => _cabundlecontent.Get();
            set => _cabundlecontent.Set(value);
        }

        private static readonly __Value<string?> _cabundlefile = new __Value<string?>(() => __config.Get("cabundlefile") ?? Utilities.GetEnv("FORTIOS_CA_CABUNDLE"));
        /// <summary>
        /// CA Bundle file
        /// </summary>
        public static string? Cabundlefile
        {
            get => _cabundlefile.Get();
            set => _cabundlefile.Set(value);
        }

        private static readonly __Value<string?> _cacert = new __Value<string?>(() => __config.Get("cacert") ?? Utilities.GetEnv("FORTIOS_CA_CACERT"));
        /// <summary>
        /// CA certtificate(Optional)
        /// </summary>
        public static string? Cacert
        {
            get => _cacert.Get();
            set => _cacert.Set(value);
        }

        private static readonly __Value<string?> _clientcert = new __Value<string?>(() => __config.Get("clientcert") ?? Utilities.GetEnv("FORTIOS_CA_CLIENTCERT"));
        /// <summary>
        /// User certificate
        /// </summary>
        public static string? Clientcert
        {
            get => _clientcert.Get();
            set => _clientcert.Set(value);
        }

        private static readonly __Value<string?> _clientkey = new __Value<string?>(() => __config.Get("clientkey") ?? Utilities.GetEnv("FORTIOS_CA_CLIENTKEY"));
        /// <summary>
        /// User private key
        /// </summary>
        public static string? Clientkey
        {
            get => _clientkey.Get();
            set => _clientkey.Set(value);
        }

        private static readonly __Value<string?> _fmgCabundlefile = new __Value<string?>(() => __config.Get("fmgCabundlefile") ?? Utilities.GetEnv("FORTIOS_FMG_CABUNDLE"));
        /// <summary>
        /// CA Bundle file
        /// </summary>
        public static string? FmgCabundlefile
        {
            get => _fmgCabundlefile.Get();
            set => _fmgCabundlefile.Set(value);
        }

        private static readonly __Value<string?> _fmgHostname = new __Value<string?>(() => __config.Get("fmgHostname") ?? Utilities.GetEnv("FORTIOS_FMG_HOSTNAME"));
        /// <summary>
        /// Hostname/IP address of the FortiManager to connect to
        /// </summary>
        public static string? FmgHostname
        {
            get => _fmgHostname.Get();
            set => _fmgHostname.Set(value);
        }

        private static readonly __Value<bool?> _fmgInsecure = new __Value<bool?>(() => __config.GetBoolean("fmgInsecure") ?? Utilities.GetEnvBoolean("FORTIOS_FMG_INSECURE"));
        public static bool? FmgInsecure
        {
            get => _fmgInsecure.Get();
            set => _fmgInsecure.Set(value);
        }

        private static readonly __Value<string?> _fmgPasswd = new __Value<string?>(() => __config.Get("fmgPasswd") ?? Utilities.GetEnv("FORTIOS_FMG_PASSWORD"));
        public static string? FmgPasswd
        {
            get => _fmgPasswd.Get();
            set => _fmgPasswd.Set(value);
        }

        private static readonly __Value<string?> _fmgUsername = new __Value<string?>(() => __config.Get("fmgUsername") ?? Utilities.GetEnv("FORTIOS_FMG_USERNAME"));
        public static string? FmgUsername
        {
            get => _fmgUsername.Get();
            set => _fmgUsername.Set(value);
        }

        private static readonly __Value<string?> _hostname = new __Value<string?>(() => __config.Get("hostname") ?? Utilities.GetEnv("FORTIOS_ACCESS_HOSTNAME"));
        /// <summary>
        /// The hostname/IP address of the FortiOS to be connected
        /// </summary>
        public static string? Hostname
        {
            get => _hostname.Get();
            set => _hostname.Set(value);
        }

        private static readonly __Value<string?> _httpProxy = new __Value<string?>(() => __config.Get("httpProxy") ?? Utilities.GetEnv("FORTIOS_HTTP_PROXY"));
        /// <summary>
        /// HTTP proxy address
        /// </summary>
        public static string? HttpProxy
        {
            get => _httpProxy.Get();
            set => _httpProxy.Set(value);
        }

        private static readonly __Value<bool?> _insecure = new __Value<bool?>(() => __config.GetBoolean("insecure") ?? Utilities.GetEnvBoolean("FORTIOS_INSECURE"));
        public static bool? Insecure
        {
            get => _insecure.Get();
            set => _insecure.Set(value);
        }

        private static readonly __Value<string?> _peerauth = new __Value<string?>(() => __config.Get("peerauth") ?? Utilities.GetEnv("FORTIOS_CA_PEERAUTH"));
        /// <summary>
        /// Enable/disable peer authentication, can be 'enable' or 'disable'
        /// </summary>
        public static string? Peerauth
        {
            get => _peerauth.Get();
            set => _peerauth.Set(value);
        }

        private static readonly __Value<string?> _token = new __Value<string?>(() => __config.Get("token") ?? Utilities.GetEnv("FORTIOS_ACCESS_TOKEN"));
        public static string? Token
        {
            get => _token.Get();
            set => _token.Set(value);
        }

        private static readonly __Value<string?> _vdom = new __Value<string?>(() => __config.Get("vdom") ?? Utilities.GetEnv("FORTIOS_VDOM"));
        public static string? Vdom
        {
            get => _vdom.Get();
            set => _vdom.Set(value);
        }

    }
}
