<?xml version="1.0" encoding="utf-8" ?>
<wizard>
    <copyright>
        /*
        Copyright (C) 2014 Deciso B.V.
        Copyright (C) 2010 Ermal Luçi
        All rights reserved.

        Redistribution and use in source and binary forms, with or without
        modification, are permitted provided that the following conditions are met:

        1. Redistributions of source code must retain the above copyright notice,
        this list of conditions and the following disclaimer.

        2. Redistributions in binary form must reproduce the above copyright
        notice, this list of conditions and the following disclaimer in the
        documentation and/or other materials provided with the distribution.

        THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
        INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
        AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
        AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
        OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
        SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
        INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
        CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
        ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        POSSIBILITY OF SUCH DAMAGE.
        */
    </copyright>
    <includefile>plugins.inc.d/openvpn/wizard.inc</includefile>
    <totalsteps>12</totalsteps>
    <step>
        <id>1</id>
        <title>Authentication Type Selection</title>
        <fields>
            <field>
                <type>listtopic</type>
                <name>Select an Authentication Backend Type</name>
            </field>
            <field>
                <type>select</type>
                <displayname>Type of Server</displayname>
                <name>authtype</name>
                <description>If you are unsure, leave this set to "Local User Access".</description>
                <bindstofield>wizardtemp->step1->type</bindstofield>
                <options>
                    <option>
                        <name>Local User Access</name>
                        <value>local</value>
                    </option>
                    <option>
                        <name>LDAP</name>
                        <value>ldap</value>
                    </option>
                    <option>
                        <name>Radius</name>
                        <value>radius</value>
                    </option>
                </options>
            </field>
            <field>
                <name>Next</name>
                <type>submit</type>
            </field>
        </fields>
        <stepsubmitbeforesave>
            if (isset($config['wizardtemp'])) {
            unset($config['wizardtemp']);
            }
        </stepsubmitbeforesave>
        <stepsubmitphpaction>step1_submitphpaction();</stepsubmitphpaction>
    </step>
    <step>
        <id>2</id>
        <title>LDAP Server Selection</title>
        <fields>
            <field>
                <type>listtopic</type>
                <name>LDAP Authentication Server List</name>
            </field>
            <field>
                <name>authserv</name>
                <displayname>LDAP servers</displayname>
                <type>select</type>
                <bindstofield>wizardtemp->step2->authserv</bindstofield>
                <options>
                    <option>
                        <name>dummy</name>
                        <value>dummy</value>
                    </option>
                </options>
            </field>
            <field>
                <type>submit</type>
                <name>Add new LDAP server</name>
            </field>
            <field>
                <type>submit</type>
                <name>Next</name>
            </field>
        </fields>
        <stepbeforeformdisplay>step2_stepbeforeformdisplay();</stepbeforeformdisplay>
        <stepsubmitphpaction>step2_submitphpaction();</stepsubmitphpaction>
        <javascriptafterformdisplay>enablechange();</javascriptafterformdisplay>
    </step>
    <step>
        <id>3</id>
        <title>Add LDAP Server</title>
        <fields>
            <field>
                <type>listtopic</type>
                <name>LDAP Authentication Server Parameters</name>
            </field>
            <field>
                <name>name</name>
                <displayname>Name</displayname>
                <type>input</type>
                <bindstofield>wizardtemp->step2->authtype</bindstofield>
                <size>30</size>
                <description>Descriptive server name, for your own reference.</description>
            </field>
            <field>
                <name>ip</name>
                <displayname>Hostname or IP address</displayname>
                <type>input</type>
                <bindstofield>wizardtemp->step2->ip</bindstofield>
                <description>Address of the LDAP server.</description>
            </field>
            <field>
                <name>port</name>
                <displayname>Port</displayname>
                <type>input</type>
                <size>8</size>
                <bindstofield>wizardtemp->step2->port</bindstofield>
                <description>LDAP Server port, leave blank for the default (389 for TCP, 636 for SSL).</description>
            </field>
            <field>
                <name>transport</name>
                <displayname>Transport</displayname>
                <type>select</type>
                <bindstofield>wizardtemp->step2->transport</bindstofield>
                <options>
                    <option>
                        <name>TCP - Standard</name>
                        <value>tcp</value>
                    </option>
                    <option>
                        <name>SSL - Encrypted</name>
                        <value>ssl</value>
                    </option>
                </options>
                <description>The protocol used by your LDAP server. It can either be standard TCP or SSL encrypted.</description>
            </field>
            <field>
                <name>scope</name>
                <displayname>Search Scope Level</displayname>
                <type>select</type>
                <options>
                    <option>
                        <name>One Level</name>
                        <value>one</value>
                    </option>
                    <option>
                        <name>Entire Subtree</name>
                        <value>subtree</value>
                    </option>
                </options>
                <bindstofield>wizardtemp->step2->scope</bindstofield>
            </field>
            <field>
                <name>basedn</name>
                <displayname>Search Scope Base DN</displayname>
                <type>input</type>
                <size>40</size>
                <bindstofield>wizardtemp->step2->basedn</bindstofield>
            </field>
            <field>
                <name>authscope</name>
                <displayname>Authentication Containers</displayname>
                <type>input</type>
                <size>40</size>
                <bindstofield>wizardtemp->step2->authscope</bindstofield>
                <description>Semicolon separated. This will be prepended to the search base DN above or you can specify full container path, e.g. CN=Users;DC=example or CN=Users,DC=example,DC=com;OU=OtherUsers,DC=example,DC=com</description>
            </field>
            <field>
                <name>userdn</name>
                <displayname>LDAP Bind User DN</displayname>
                <type>input</type>
                <size>20</size>
                <description>If left blank, an anonymous bind will be done.</description>
                <bindstofield>wizardtemp->step2->userdn</bindstofield>
            </field>
            <field>
                <name>passdn</name>
                <displayname>LDAP Bind Password</displayname>
                <type>password</type>
                <size>20</size>
                <bindstofield>wizardtemp->step2->passdn</bindstofield>
                <description>If a user DN was supplied above, this password will also be used when performing a bind operation.</description>
            </field>
            <field>
                <name>nameattr</name>
                <displayname>User Naming Attribute</displayname>
                <type>input</type>
                <bindstofield>wizardtemp->step2->nameattr</bindstofield>
                <description>Typically "cn" (OpenLDAP, Novell eDirectory), "sAMAccountName" (Microsoft AD)</description>
            </field>
            <field>
                <name>groupattr</name>
                <displayname>Group Naming Attribute</displayname>
                <type>input</type>
                <bindstofield>wizardtemp->step2->groupattr</bindstofield>
                <description>Typically "cn" (OpenLDAP, Microsoft AD, and Novell eDirectory)</description>
            </field>
            <field>
                <name>memberattr</name>
                <displayname>Member Naming Attribute</displayname>
                <type>input</type>
                <bindstofield>wizardtemp->step2->memberattr</bindstofield>
                <description>Typically "member" (OpenLDAP), "memberOf" (Microsoft AD), "uniqueMember" (Novell eDirectory)</description>
            </field>
            <field>
                <type>submit</type>
                <name>Add new Server</name>
            </field>
        </fields>
        <stepsubmitphpaction>step3_submitphpaction();</stepsubmitphpaction>
        <javascriptafterformdisplay>enablechange();</javascriptafterformdisplay>
    </step>
    <step>
        <id>4</id>
        <title>RADIUS Server Selection</title>
        <fields>
            <field>
                <type>listtopic</type>
                <name>RADIUS Authentication Server List</name>
            </field>
            <field>
                <name>authserv</name>
                <displayname>RADIUS servers</displayname>
                <type>select</type>
                <bindstofield>wizardtemp->step2->authserv</bindstofield>
                <options>
                    <option>
                        <name>dummy</name>
                        <value>dummy</value>
                    </option>
                </options>
            </field>
            <field>
                <type>submit</type>
                <name>Add new RADIUS server</name>
            </field>
            <field>
                <type>submit</type>
                <name>Next</name>
            </field>
        </fields>
        <stepbeforeformdisplay>step4_stepbeforeformdisplay();</stepbeforeformdisplay>
        <stepsubmitphpaction>step4_submitphpaction();</stepsubmitphpaction>
        <javascriptafterformdisplay>enablechange();</javascriptafterformdisplay>
    </step>
    <step>
        <id>5</id>
        <title>Add RADIUS Server</title>
        <fields>
            <field>
                <type>listtopic</type>
                <name>RADIUS Authentication Server Parameters</name>
            </field>
            <field>
                <name>name</name>
                <displayname>Name</displayname>
                <type>input</type>
                <bindstofield>wizardtemp->step2->authtype</bindstofield>
                <size>20</size>
                <description>Descriptive name for the RADIUS server, for your reference.</description>
            </field>
            <field>
                <name>ip</name>
                <displayname>Hostname or IP address</displayname>
                <type>input</type>
                <bindstofield>wizardtemp->step2->ip</bindstofield>
                <description>Address of the RADIUS server.</description>
            </field>
            <field>
                <name>port</name>
                <displayname>Authentication Port</displayname>
                <type>input</type>
                <size>8</size>
                <bindstofield>wizardtemp->step2->port</bindstofield>
                <description>Port used by the RADIUS server for accepting Authentication requests, typically 1812.</description>
            </field>
            <field>
                <name>secret</name>
                <displayname>Shared Secret</displayname>
                <type>password</type>
                <size>20</size>
                <bindstofield>wizardtemp->step2->password</bindstofield>
            </field>
            <field>
                <name>Add new Server</name>
                <type>submit</type>
            </field>
        </fields>
        <stepsubmitphpaction>step5_submitphpaction();</stepsubmitphpaction>
    </step>
    <step>
        <id>6</id>
        <title>Certificate Authority Selection</title>
        <fields>
            <field>
                <name>Choose a Certificate Authority (CA)</name>
                <type>listtopic</type>
            </field>
            <field>
                <type>certca_selection</type>
                <internal>1</internal>
                <name>certca</name>
                <displayname>Certificate Authority</displayname>
                <bindstofield>wizardtemp->step6->authcertca</bindstofield>
            </field>
            <field>
                <type>submit</type>
                <name>Add new CA</name>
            </field>
            <field>
                <name>Next</name>
                <type>submit</type>
            </field>
        </fields>
        <stepbeforeformdisplay>step6_stepbeforeformdisplay();</stepbeforeformdisplay>
        <stepsubmitphpaction>step6_submitphpaction();</stepsubmitphpaction>
    </step>
    <step>
        <id>7</id>
        <title>Add Certificate Authority</title>
        <fields>
            <field>
                <name>Create a New Certificate Authority (CA) Certificate</name>
                <type>listtopic</type>
            </field>
            <field>
                <name>descr</name>
                <displayname>Descriptive name</displayname>
                <description>A name for your reference, to identify this certificate. This is the same as common-name field for other Certificates.</description>
                <type>input</type>
                <size>20</size>
                <bindstofield>wizardtemp->step6->certca</bindstofield>
            </field>
            <field>
                <name>keylength</name>
                <displayname>Key length</displayname>
                <description>Size of the key which will be generated. The larger the key, the more security is offers, but larger keys are generally slower to use.</description>
                <type>select</type>
                <value>2048</value>
                <bindstofield>wizardtemp->step6->keylength</bindstofield>
                <options>
                    <option>
                        <name>512 bit</name>
                        <value>512</value>
                    </option>
                    <option>
                        <name>1024 bit</name>
                        <value>1024</value>
                    </option>
                    <option>
                        <name>2048 bit</name>
                        <value>2048</value>
                    </option>
                    <option>
                        <name>3072 bit</name>
                        <value>3072</value>
                    </option>
                    <option>
                        <name>4096 bit</name>
                        <value>4096</value>
                    </option>
                </options>
            </field>
            <field>
                <name>lifetime</name>
                <displayname>Lifetime</displayname>
                <type>input</type>
                <size>10</size>
                <value>825</value>
                <description>Lifetime in days. This is commonly set to 825 (approximately 2 years).</description>
                <bindstofield>wizardtemp->step6->lifetime</bindstofield>
            </field>
            <field>
                <name>country</name>
                <displayname>Country Code</displayname>
                <description>Two-letter ISO country code (e.g. NL, DE, US)</description>
                <type>input</type>
                <size>5</size>
                <bindstofield>wizardtemp->step6->country</bindstofield>
            </field>
            <field>
                <name>state</name>
                <displayname>State or Province</displayname>
                <description>Full State of Province name, not abbreviated (e.g. Zuid Holland, Sachsen, Kentucky).</description>
                <type>input</type>
                <size>30</size>
                <bindstofield>wizardtemp->step6->state</bindstofield>
            </field>
            <field>
                <name>city</name>
                <displayname>City</displayname>
                <description>City or other Locality name (e.g. Middelharnis, Leipzig, Louisville).</description>
                <type>input</type>
                <size>30</size>
                <bindstofield>wizardtemp->step6->city</bindstofield>
            </field>
            <field>
                <name>organization</name>
                <displayname>Organization</displayname>
                <description>Organization name, often the Company or Group name.</description>
                <type>input</type>
                <size>30</size>
                <bindstofield>wizardtemp->step6->organization</bindstofield>
            </field>
            <field>
                <name>email</name>
                <displayname>Email</displayname>
                <description>Email address for the Certificate contact. Often the email of the person generating the certificate (i.e. You.)</description>
                <type>input</type>
                <size>30</size>
                <bindstofield>wizardtemp->step6->email</bindstofield>
            </field>
            <field>
                <name>Add new CA</name>
                <type>submit</type>
            </field>
        </fields>
        <stepsubmitphpaction>step7_submitphpaction();</stepsubmitphpaction>
        <javascriptafterformdisplay>enablechange();</javascriptafterformdisplay>
    </step>
    <step>
        <id>8</id>
        <title>Server Certificate Selection</title>
        <fields>
            <field>
                <name>Choose a Server Certificate</name>
                <type>listtopic</type>
            </field>
            <field>
                <type>cert_selection</type>
                <name>certname</name>
                <displayname>Certificate</displayname>
                <bindstofield>wizardtemp->step9->authcertname</bindstofield>
            </field>
            <field>
                <type>submit</type>
                <name>Add new Certificate</name>
            </field>
            <field>
                <name>Next</name>
                <type>submit</type>
            </field>
        </fields>
        <stepbeforeformdisplay>step8_stepbeforeformdisplay();</stepbeforeformdisplay>
        <stepsubmitphpaction>step8_submitphpaction();</stepsubmitphpaction>
    </step>
    <step>
        <id>9</id>
        <title>Add a Server Certificate</title>
        <fields>
            <field>
                <name>Create a New Server Certificate</name>
                <type>listtopic</type>
            </field>
            <field>
                <name>descr</name>
                <displayname>Descriptive name</displayname>
                <description>A name for your reference, to identify this certificate. This is also known as the certificate's "Common Name".</description>
                <type>input</type>
                <size>20</size>
                <bindstofield>wizardtemp->step9->certname</bindstofield>
            </field>
            <field>
                <name>keylength</name>
                <displayname>Key length</displayname>
                <description>Size of the key which will be generated. The larger the key, the more security is offers, but larger keys are generally slower to use.</description>
                <type>select</type>
                <value>2048</value>
                <bindstofield>wizardtemp->step9->keylength</bindstofield>
                <options>
                    <option>
                        <name>512 bit</name>
                        <value>512</value>
                    </option>
                    <option>
                        <name>1024 bit</name>
                        <value>1024</value>
                    </option>
                    <option>
                        <name>2048 bit</name>
                        <value>2048</value>
                    </option>
                    <option>
                        <name>3072 bit</name>
                        <value>3072</value>
                    </option>
                    <option>
                        <name>4096 bit</name>
                        <value>4096</value>
                    </option>
                </options>
            </field>
            <field>
                <name>lifetime</name>
                <displayname>Lifetime</displayname>
                <description>Lifetime in days. This is commonly set to 397 (approximately 1 year).</description>
                <type>input</type>
                <size>10</size>
                <value>397</value>
                <bindstofield>wizardtemp->step9->lifetime</bindstofield>
            </field>
            <field>
                <name>country</name>
                <displayname>Country Code</displayname>
                <description>Two-letter ISO country code (e.g. NL, DE, US)</description>
                <type>input</type>
                <size>5</size>
                <bindstofield>wizardtemp->step9->country</bindstofield>
            </field>
            <field>
                <name>state</name>
                <displayname>State or Province</displayname>
                <description>Full State of Province name, not abbreviated (e.g. Zuid Holland, Sachsen, Kentucky).</description>
                <type>input</type>
                <size>30</size>
                <bindstofield>wizardtemp->step9->state</bindstofield>
            </field>
            <field>
                <name>city</name>
                <displayname>City</displayname>
                <description>City or other Locality name (e.g. Middelharnis, Leipzig, Louisville).</description>
                <type>input</type>
                <size>30</size>
                <bindstofield>wizardtemp->step9->city</bindstofield>
            </field>
            <field>
                <name>organization</name>
                <displayname>Organization</displayname>
                <description>Organization name, often the Company or Group name.</description>
                <type>input</type>
                <size>30</size>
                <bindstofield>wizardtemp->step9->organization</bindstofield>
            </field>
            <field>
                <name>email</name>
                <displayname>Email</displayname>
                <description>Email address for the Certificate contact. Often the email of the person generating the certificate (i.e. You.)</description>
                <type>input</type>
                <size>30</size>
                <bindstofield>wizardtemp->step9->email</bindstofield>
            </field>
            <field>
                <name>Create new Certificate</name>
                <type>submit</type>
            </field>
        </fields>
        <stepbeforeformdisplay>step9_stepbeforeformdisplay();</stepbeforeformdisplay>
        <stepsubmitphpaction>step9_submitphpaction();</stepsubmitphpaction>
    </step>
    <step>
        <id>10</id>
        <title>Server Setup</title>
        <fields>
            <field>
                <type>listtopic</type>
                <name>General OpenVPN Server Information</name>
            </field>
            <field>
                <name>interface</name>
                <type>interfaces_selection</type>
                <subtype>openvpn</subtype>
                <value>any</value>
                <description>The interface where OpenVPN will listen for incoming connections.</description>
                <displayname>Interface</displayname>
                <bindstofield>wizardtemp->step10->interface</bindstofield>
            </field>
            <field>
                <name>Protocol</name>
                <type>select</type>
                <bindstofield>wizardtemp->step10->protocol</bindstofield>
                <value>UDP</value>
                <options>
                    <option>
                        <name>UDP</name>
                        <value>UDP</value>
                    </option>
                    <option>
                        <name>UDP4</name>
                        <value>UDP4</value>
                    </option>
                    <option>
                        <name>UDP6</name>
                        <value>UDP6</value>
                    </option>
                    <option>
                        <name>TCP</name>
                        <value>TCP</value>
                    </option>
                    <option>
                        <name>TCP4</name>
                        <value>TCP4</value>
                    </option>
                    <option>
                        <name>TCP6</name>
                        <value>TCP6</value>
                    </option>
                </options>
                <description>Protocol to use for OpenVPN connections. If you are unsure, leave this set to UDP.</description>
            </field>
            <field>
                <name>localport</name>
                <displayname>Local Port</displayname>
                <description>Local port upon which OpenVPN will listen for connections. The default port is 1194. Leave this blank to auto-select an unused port.</description>
                <type>input</type>
                <size>10</size>
                <bindstofield>wizardtemp->step10->localport</bindstofield>
            </field>
            <field>
                <name>description</name>
                <displayname>Description</displayname>
                <description>A name for this OpenVPN instance, for your reference. It can be set however you like, but is often used to distinguish the purpose of the service (e.g. "Remote Technical Staff").</description>
                <type>input</type>
                <size>30</size>
                <bindstofield>wizardtemp->step10->descr</bindstofield>
            </field>
            <field>
                <type>listtopic</type>
                <name>Cryptographic Settings</name>
            </field>
            <field>
                <name>TLS Authentication</name>
                <type>checkbox</type>
                <value>on</value>
                <typehint>Enable authentication of TLS packets.</typehint>
                <bindstofield>wizardtemp->step10->tlsauth</bindstofield>
            </field>
            <field>
                <displayname>Generate TLS Key</displayname>
                <name>generatetlskey</name>
                <disablefields>tlssharedkey</disablefields>
                <value>on</value>
                <type>checkbox</type>
                <typehint>Automatically generate a shared TLS authentication key.</typehint>
                <bindstofield>wizardtemp->step10->gentlskey</bindstofield>
            </field>
            <field>
                <displayname>TLS Shared Key</displayname>
                <name>tlssharedkey</name>
                <description>Paste in a shared TLS key if one has already been generated.</description>
                <type>textarea</type>
                <cols>30</cols>
                <rows>5</rows>
                <bindstofield>wizardtemp->step10->tlskey</bindstofield>
            </field>
            <field>
                <name>crypto</name>
                <type>select</type>
                <displayname>Encryption algorithm (fallback)</displayname>
                <bindstofield>wizardtemp->step10->crypto</bindstofield>
                <options>
                    <option>
                        <name>dummy</name>
                        <value>dummy</value>
                    </option>
                </options>
                <description>Fallback cipher selection in case none of the default data-ciphers is supported by the client. Only preserved for backwards compatibility reasons.</description>
            </field>
            <field>
                <name>digest</name>
                <type>select</type>
                <displayname>Auth Digest Algorithm</displayname>
                <bindstofield>wizardtemp->step10->digest</bindstofield>
                <options>
                    <option>
                        <name>dummy</name>
                        <value>dummy</value>
                    </option>
                </options>
                <value>SHA1</value>
                <description>The method used to authenticate traffic between endpoints. This setting must match on the client and server side, but is otherwise set however you like.</description>
            </field>
            <field>
                <type>listtopic</type>
                <name>Tunnel Settings</name>
            </field>
            <field>
                <displayname>IPv4 Tunnel Network</displayname>
                <name>tunnelnet</name>
                <type>input</type>
                <size>20</size>
                <bindstofield>wizardtemp->step10->tunnelnet</bindstofield>
                <description>This is the IPv4 virtual network used for private communications between this server and client hosts expressed using CIDR (eg. 10.0.8.0/24). The first network address will be assigned to the server virtual interface. The remaining network addresses can optionally be assigned to connecting clients. (see Address Pool)</description>
            </field>
            <field>
                <displayname>IPv6 Tunnel Network</displayname>
                <name>tunnelnetv6</name>
                <type>input</type>
                <size>20</size>
                <bindstofield>wizardtemp->step10->tunnelnetv6</bindstofield>
                <description>This is the IPv6 virtual network used for private communications between this server and client hosts expressed using CIDR (eg. fe80::/64). The first network address will be assigned to the server virtual interface. The remaining network addresses can optionally be assigned to connecting clients. (see Address Pool)</description>
            </field>
            <field>
                <displayname>Redirect Gateway</displayname>
                <name>redirectgw</name>
                <type>checkbox</type>
                <typehint>Force all client generated traffic through the tunnel.</typehint>
                <bindstofield>wizardtemp->step10->rdrgw</bindstofield>
            </field>
            <field>
                <displayname>IPv4 Local Network</displayname>
                <name>localnet</name>
                <type>input</type>
                <size>20</size>
                <bindstofield>wizardtemp->step10->localnet</bindstofield>
                <description>These are the IPv4 networks that will be accessible from the remote endpoint. Expressed as a comma-separated list of one or more CIDR ranges. You may leave this blank if you don't want to add a route to the local network through this tunnel on the remote machine. This is generally set to your LAN network.</description>
            </field>
            <field>
                <displayname>IPv6 Local Network</displayname>
                <name>localnetv6</name>
                <type>input</type>
                <size>20</size>
                <bindstofield>wizardtemp->step10->localnetv6</bindstofield>
                <description>These are the IPv6 networks that will be accessible from the remote endpoint. Expressed as a comma-separated list of one or more IP/PREFIX. You may leave this blank if you don't want to add a route to the local network through this tunnel on the remote machine. This is generally set to your LAN network.</description>
            </field>
            <field>
                <displayname>IPv4 Remote Network</displayname>
                <name>remotenet</name>
                <type>input</type>
                <size>20</size>
                <bindstofield>wizardtemp->step10->remotenet</bindstofield>
                <description>These are the IPv4 networks that will be routed through the tunnel, so that a site-to-site VPN can be established without manually changing the routing tables. Expressed as a comma-separated list of one or more CIDR ranges. If this is a site-to-site VPN, enter the remote LAN/s here. You may leave this blank if you don't want a site-to-site VPN.</description>
            </field>
            <field>
                <displayname>IPv6 Remote Network</displayname>
                <name>remotenetv6</name>
                <type>input</type>
                <size>20</size>
                <bindstofield>wizardtemp->step10->remotenetv6</bindstofield>
                <description>These are the IPv6 networks that will be routed through the tunnel, so that a site-to-site VPN can be established without manually changing the routing tables. Expressed as a comma-separated list of one or more IP/PREFIX. If this is a site-to-site VPN, enter the remote LAN/s here. You may leave this blank if you don't want a site-to-site VPN.</description>
            </field>
            <field>
                <displayname>Concurrent Connections</displayname>
                <name>concurrentcon</name>
                <description>Specify the maximum number of clients allowed to concurrently connect to this server.</description>
                <type>input</type>
                <size>10</size>
                <bindstofield>wizardtemp->step10->concurrentcon</bindstofield>
            </field>
            <field>
                <displayname>Compression</displayname>
                <name>compression</name>
                <description>Compress tunnel packets using the LZO algorithm. Adaptive compression will dynamically disable compression for a period of time if OpenVPN detects that the data in the packets is not being compressed efficiently.</description>
                <bindstofield>wizardtemp->step10->compression</bindstofield>
                <type>select</type>
                <options>
                    <option>
                        <name>dummy</name>
                        <value>dummy</value>
                    </option>
                </options>
            </field>
            <field>
                <displayname>Type-of-Service</displayname>
                <name>tos</name>
                <type>checkbox</type>
                <typehint>Set the TOS IP header value of tunnel packets to match the encapsulated packet value.</typehint>
                <bindstofield>wizardtemp->step10->tos</bindstofield>
            </field>
            <field>
                <displayname>Inter-Client Communication</displayname>
                <name>interclient</name>
                <type>checkbox</type>
                <typehint>Allow communication between clients connected to this server.</typehint>
                <bindstofield>wizardtemp->step10->interclient</bindstofield>
            </field>
            <field>
                <displayname>Duplicate Connections</displayname>
                <name>duplicate_cn</name>
                <type>checkbox</type>
                <typehint>Allow multiple concurrent connections from clients using the same Common Name. This is not generally recommended, but may be needed for some scenarios.</typehint>
                <bindstofield>wizardtemp->step10->duplicate_cn</bindstofield>
            </field>
            <field>
                <type>listtopic</type>
                <name>Client Settings</name>
            </field>
            <field>
                <displayname>Dynamic IP</displayname>
                <name>dynip</name>
                <type>checkbox</type>
                <value>on</value>
                <typehint>Allow connected clients to retain their connections if their IP address changes.</typehint>
                <bindstofield>wizardtemp->step10->dynip</bindstofield>
            </field>
            <field>
                <displayname>DNS Default Domain</displayname>
                <name>defaultdomain</name>
                <type>input</type>
                <description>Provide a default domain name to clients.</description>
                <bindstofield>wizardtemp->step10->defaultdomain</bindstofield>
            </field>
            <field>
                <displayname>DNS Server 1</displayname>
                <name>dnsserver1</name>
                <type>input</type>
                <bindstofield>wizardtemp->step10->dns1</bindstofield>
                <description>DNS server to provide for connecting client systems.</description>
            </field>
            <field>
                <displayname>DNS Server 2</displayname>
                <name>dnsserver2</name>
                <type>input</type>
                <bindstofield>wizardtemp->step10->dns2</bindstofield>
                <description>DNS server to provide for connecting client systems.</description>
            </field>
            <field>
                <displayname>DNS Server 3</displayname>
                <name>dnsserver3</name>
                <type>input</type>
                <bindstofield>wizardtemp->step10->dns3</bindstofield>
                <description>DNS server to provide for connecting client systems.</description>
            </field>
            <field>
                <displayname>DNS Server 4</displayname>
                <name>dnsserver4</name>
                <type>input</type>
                <bindstofield>wizardtemp->step10->dns4</bindstofield>
                <description>DNS server to provide for connecting client systems.</description>
            </field>
            <field>
                <displayname>NTP Server</displayname>
                <name>ntpserver1</name>
                <type>input</type>
                <bindstofield>wizardtemp->step10->ntp1</bindstofield>
                <description>Network Time Protocol server to provide for connecting client systems.</description>
            </field>
            <field>
                <displayname>NTP Server 2</displayname>
                <name>ntpserver2</name>
                <type>input</type>
                <bindstofield>wizardtemp->step10->ntp2</bindstofield>
                <description>Network Time Protocol server to provide for connecting client systems.</description>
            </field>
            <field>
                <name>nbtenable</name>
                <type>checkbox</type>
                <displayname>NetBIOS Options</displayname>
                <bindstofield>wizardtemp->step10->nbtenable</bindstofield>
                <typehint>Enable NetBIOS over TCP/IP. If this option is not set, all NetBIOS-over-TCP/IP options (including WINS) will be disabled.</typehint>
            </field>
            <field>
                <displayname>NetBIOS Node Type</displayname>
                <name>nbttype</name>
                <type>select</type>
                <bindstofield>wizardtemp->step10->nbttype</bindstofield>
                <options>
                    <option>
                        <name>dummy</name>
                        <value>dummy</value>
                    </option>
                </options>
                <description>Possible options: b-node (broadcasts), p-node (point-to-point name queries to a WINS server), m-node (broadcast then query name server), and h-node (query name server, then broadcast).</description>
            </field>
            <field>
                <displayname>NetBIOS Scope ID</displayname>
                <name>nbtscope</name>
                <type>input</type>
                <bindstofield>wizardtemp->step10->nbtscope</bindstofield>
                <description>A NetBIOS Scope ID provides an extended naming service for NetBIOS over TCP/IP. The NetBIOS Scope ID isolates NetBIOS traffic on a single network to only those nodes with the same NetBIOS Scope ID.</description>
            </field>
            <field>
                <displayname>WINS Server 1</displayname>
                <name>winsserver1</name>
                <type>input</type>
                <bindstofield>wizardtemp->step10->wins1</bindstofield>
                <description>A Windows Internet Name Service (WINS) server to provide for connecting clients, which allows them to browse Windows shares. This is typically an Active Directory Domain Controller, designated WINS server, or Samba server.</description>
            </field>
            <field>
                <displayname>WINS Server 2</displayname>
                <name>winsserver2</name>
                <type>input</type>
                <bindstofield>wizardtemp->step10->wins2</bindstofield>
                <description>A Windows Internet Name Service (WINS) server to provide for connecting clients, which allows them to browse Windows shares. This is typically an Active Directory Domain Controller, designated WINS server, or Samba server.</description>
            </field>
            <field>
                <name>Next</name>
                <type>submit</type>
            </field>
        </fields>
        <stepbeforeformdisplay>step10_stepbeforeformdisplay();</stepbeforeformdisplay>
        <stepsubmitphpaction>step10_submitphpaction();</stepsubmitphpaction>
    </step>
    <step>
        <id>11</id>
        <title>Firewall Rule Configuration</title>
        <fields>
            <field>
                <type>listtopic</type>
                <name>Firewall Rule Configuration</name>
            </field>
            <field>
                <type>text</type>
                <description>Firewall Rules control what network traffic is permitted. You must add rules to allow traffic to the OpenVPN server's IP and port, as well as allowing traffic from connected clients through the tunnel. These rules can be automatically added here, or configured manually after completing the wizard.</description>
            </field>
            <field>
                <type>listtopic</type>
                <name>Traffic from clients to server</name>
            </field>
            <field>
                <name>ovpnrule</name>
                <displayname>Firewall Rule</displayname>
                <typehint>Add a rule to permit traffic from clients on the Internet to the OpenVPN server process.</typehint>
                <type>checkbox</type>
                <bindstofield>wizardtemp->step11->ovpnrule</bindstofield>
            </field>
            <field>
                <type>listtopic</type>
                <name>Traffic from clients through VPN</name>
            </field>
            <field>
                <name>ovpnallow</name>
                <displayname>OpenVPN rule</displayname>
                <typehint>Add a rule to allow all traffic from connected clients to pass across the VPN tunnel.</typehint>
                <type>checkbox</type>
                <bindstofield>wizardtemp->step11->ovpnallow</bindstofield>
            </field>
            <field>
                <name>Next</name>
                <type>submit</type>
            </field>
        </fields>
    </step>
    <step>
        <id>12</id>
        <title>Finished!</title>
        <fields>
            <field>
                <type>text</type>
                <description>Your configuration is now complete.</description>
            </field>
            <field>
                <type>submit</type>
                <name>Finish</name>
            </field>
        </fields>
        <stepsubmitphpaction>step12_submitphpaction();</stepsubmitphpaction>
    </step>
</wizard>
