<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>
    /// client Applies to FortiOS Version `&gt;= 7.0.1`.
    /// 
    /// ## Import
    /// 
    /// VpnSsl Client can be imported using any of these accepted formats
    /// 
    /// ```sh
    ///  $ pulumi import fortios:index/vpnsslClient:VpnsslClient labelname {{name}}
    /// ```
    /// 
    ///  If you do not want to import arguments of block$ export "FORTIOS_IMPORT_TABLE"="false"
    /// 
    /// ```sh
    ///  $ pulumi import fortios:index/vpnsslClient:VpnsslClient labelname {{name}}
    /// ```
    /// 
    ///  $ unset "FORTIOS_IMPORT_TABLE"
    /// </summary>
    [FortiosResourceType("fortios:index/vpnsslClient:VpnsslClient")]
    public partial class VpnsslClient : global::Pulumi.CustomResource
    {
        /// <summary>
        /// Certificate to offer to SSL-VPN server if it requests one.
        /// </summary>
        [Output("certificate")]
        public Output<string> Certificate { get; private set; } = null!;

        /// <summary>
        /// Traffic class ID.
        /// </summary>
        [Output("classId")]
        public Output<int> ClassId { get; private set; } = null!;

        /// <summary>
        /// Comment.
        /// </summary>
        [Output("comment")]
        public Output<string?> Comment { get; private set; } = null!;

        /// <summary>
        /// Distance for routes added by SSL-VPN (1 - 255).
        /// </summary>
        [Output("distance")]
        public Output<int> Distance { get; private set; } = null!;

        /// <summary>
        /// SSL interface to send/receive traffic over.
        /// </summary>
        [Output("interface")]
        public Output<string> Interface { get; private set; } = null!;

        /// <summary>
        /// SSL-VPN tunnel name.
        /// </summary>
        [Output("name")]
        public Output<string> Name { get; private set; } = null!;

        /// <summary>
        /// Authenticate peer's certificate with the peer/peergrp.
        /// </summary>
        [Output("peer")]
        public Output<string> Peer { get; private set; } = null!;

        /// <summary>
        /// SSL-VPN server port.
        /// </summary>
        [Output("port")]
        public Output<int> Port { get; private set; } = null!;

        /// <summary>
        /// Priority for routes added by SSL-VPN (0 - 4294967295).
        /// </summary>
        [Output("priority")]
        public Output<int> Priority { get; private set; } = null!;

        /// <summary>
        /// Pre-shared secret to authenticate with the server (ASCII string or hexadecimal encoded with a leading 0x).
        /// </summary>
        [Output("psk")]
        public Output<string?> Psk { get; private set; } = null!;

        /// <summary>
        /// Realm name configured on SSL-VPN server.
        /// </summary>
        [Output("realm")]
        public Output<string> Realm { get; private set; } = null!;

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

        /// <summary>
        /// IPv4 or IPv6 address to use as a source for the SSL-VPN connection to the server.
        /// </summary>
        [Output("sourceIp")]
        public Output<string> SourceIp { get; private set; } = null!;

        /// <summary>
        /// Enable/disable this SSL-VPN client configuration. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("status")]
        public Output<string> Status { get; private set; } = null!;

        /// <summary>
        /// Username to offer to the peer to authenticate the client.
        /// </summary>
        [Output("user")]
        public Output<string> User { 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 VpnsslClient 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 VpnsslClient(string name, VpnsslClientArgs? args = null, CustomResourceOptions? options = null)
            : base("fortios:index/vpnsslClient:VpnsslClient", name, args ?? new VpnsslClientArgs(), MakeResourceOptions(options, ""))
        {
        }

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

    public sealed class VpnsslClientArgs : global::Pulumi.ResourceArgs
    {
        /// <summary>
        /// Certificate to offer to SSL-VPN server if it requests one.
        /// </summary>
        [Input("certificate")]
        public Input<string>? Certificate { get; set; }

        /// <summary>
        /// Traffic class ID.
        /// </summary>
        [Input("classId")]
        public Input<int>? ClassId { get; set; }

        /// <summary>
        /// Comment.
        /// </summary>
        [Input("comment")]
        public Input<string>? Comment { get; set; }

        /// <summary>
        /// Distance for routes added by SSL-VPN (1 - 255).
        /// </summary>
        [Input("distance")]
        public Input<int>? Distance { get; set; }

        /// <summary>
        /// SSL interface to send/receive traffic over.
        /// </summary>
        [Input("interface")]
        public Input<string>? Interface { get; set; }

        /// <summary>
        /// SSL-VPN tunnel name.
        /// </summary>
        [Input("name")]
        public Input<string>? Name { get; set; }

        /// <summary>
        /// Authenticate peer's certificate with the peer/peergrp.
        /// </summary>
        [Input("peer")]
        public Input<string>? Peer { get; set; }

        /// <summary>
        /// SSL-VPN server port.
        /// </summary>
        [Input("port")]
        public Input<int>? Port { get; set; }

        /// <summary>
        /// Priority for routes added by SSL-VPN (0 - 4294967295).
        /// </summary>
        [Input("priority")]
        public Input<int>? Priority { get; set; }

        /// <summary>
        /// Pre-shared secret to authenticate with the server (ASCII string or hexadecimal encoded with a leading 0x).
        /// </summary>
        [Input("psk")]
        public Input<string>? Psk { get; set; }

        /// <summary>
        /// Realm name configured on SSL-VPN server.
        /// </summary>
        [Input("realm")]
        public Input<string>? Realm { get; set; }

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

        /// <summary>
        /// IPv4 or IPv6 address to use as a source for the SSL-VPN connection to the server.
        /// </summary>
        [Input("sourceIp")]
        public Input<string>? SourceIp { get; set; }

        /// <summary>
        /// Enable/disable this SSL-VPN client configuration. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("status")]
        public Input<string>? Status { get; set; }

        /// <summary>
        /// Username to offer to the peer to authenticate the client.
        /// </summary>
        [Input("user")]
        public Input<string>? User { 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 VpnsslClientArgs()
        {
        }
        public static new VpnsslClientArgs Empty => new VpnsslClientArgs();
    }

    public sealed class VpnsslClientState : global::Pulumi.ResourceArgs
    {
        /// <summary>
        /// Certificate to offer to SSL-VPN server if it requests one.
        /// </summary>
        [Input("certificate")]
        public Input<string>? Certificate { get; set; }

        /// <summary>
        /// Traffic class ID.
        /// </summary>
        [Input("classId")]
        public Input<int>? ClassId { get; set; }

        /// <summary>
        /// Comment.
        /// </summary>
        [Input("comment")]
        public Input<string>? Comment { get; set; }

        /// <summary>
        /// Distance for routes added by SSL-VPN (1 - 255).
        /// </summary>
        [Input("distance")]
        public Input<int>? Distance { get; set; }

        /// <summary>
        /// SSL interface to send/receive traffic over.
        /// </summary>
        [Input("interface")]
        public Input<string>? Interface { get; set; }

        /// <summary>
        /// SSL-VPN tunnel name.
        /// </summary>
        [Input("name")]
        public Input<string>? Name { get; set; }

        /// <summary>
        /// Authenticate peer's certificate with the peer/peergrp.
        /// </summary>
        [Input("peer")]
        public Input<string>? Peer { get; set; }

        /// <summary>
        /// SSL-VPN server port.
        /// </summary>
        [Input("port")]
        public Input<int>? Port { get; set; }

        /// <summary>
        /// Priority for routes added by SSL-VPN (0 - 4294967295).
        /// </summary>
        [Input("priority")]
        public Input<int>? Priority { get; set; }

        /// <summary>
        /// Pre-shared secret to authenticate with the server (ASCII string or hexadecimal encoded with a leading 0x).
        /// </summary>
        [Input("psk")]
        public Input<string>? Psk { get; set; }

        /// <summary>
        /// Realm name configured on SSL-VPN server.
        /// </summary>
        [Input("realm")]
        public Input<string>? Realm { get; set; }

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

        /// <summary>
        /// IPv4 or IPv6 address to use as a source for the SSL-VPN connection to the server.
        /// </summary>
        [Input("sourceIp")]
        public Input<string>? SourceIp { get; set; }

        /// <summary>
        /// Enable/disable this SSL-VPN client configuration. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("status")]
        public Input<string>? Status { get; set; }

        /// <summary>
        /// Username to offer to the peer to authenticate the client.
        /// </summary>
        [Input("user")]
        public Input<string>? User { 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 VpnsslClientState()
        {
        }
        public static new VpnsslClientState Empty => new VpnsslClientState();
    }
}
