/*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */

package org.apache.guacamole.auth.radius;

import org.apache.guacamole.properties.BooleanGuacamoleProperty;
import org.apache.guacamole.properties.IntegerGuacamoleProperty;
import org.apache.guacamole.properties.StringGuacamoleProperty;


/**
 * Provides properties required for use of the RADIUS authentication provider.
 * These properties will be read from guacamole.properties when the RADIUS
 * authentication provider is used.
 */
public class RadiusGuacamoleProperties {

    /**
     * This class should not be instantiated.
     */
    private RadiusGuacamoleProperties() {}

    /**
     * The port on the RADIUS server to connect to when authenticating users.
     */
    public static final IntegerGuacamoleProperty RADIUS_AUTH_PORT = new IntegerGuacamoleProperty() {

        @Override
        public String getName() { return "radius-auth-port"; }

    };

    /**
     * The port on the RADIUS server to connect to when accounting users.
     */
    public static final IntegerGuacamoleProperty RADIUS_ACCT_PORT = new IntegerGuacamoleProperty() {

        @Override
        public String getName() { return "radius-acct-port"; }

    };


    /**
     * The hostname or ip of the RADIUS server to connect to when authenticating users.
     */
    public static final StringGuacamoleProperty RADIUS_SERVER = new StringGuacamoleProperty() {

        @Override
        public String getName() { return "radius-server"; }

    };

    /**
     * The shared secret of the RADIUS server to connect to when authenticating users.
     */
    public static final StringGuacamoleProperty RADIUS_SHARED_SECRET = new StringGuacamoleProperty() {

        @Override
        public String getName() { return "radius-shared-secret"; }

    };

    /**
     * The authentication protocol of the RADIUS server to connect to when authenticating users.
     */
    public static final StringGuacamoleProperty RADIUS_AUTH_PROTOCOL = new StringGuacamoleProperty() {

        @Override
        public String getName() { return "radius-auth-protocol"; }

    };

    /**
     * The number of retries when attempting a RADIUS packet transaction.
     */
    public static final IntegerGuacamoleProperty RADIUS_RETRIES = new IntegerGuacamoleProperty() {

        @Override
        public String getName() { return "radius-retries"; }

    };

    /**
     * The network timeout when attempting a RADIUS packet transaction.
     */
    public static final IntegerGuacamoleProperty RADIUS_TIMEOUT = new IntegerGuacamoleProperty() {

        @Override
        public String getName() { return "radius-timeout"; }

    };

    /**
     * The CA file to use to validate RADIUS server certificates.
     */
    public static final StringGuacamoleProperty RADIUS_CA_FILE = new StringGuacamoleProperty() {

        @Override
        public String getName() { return "radius-ca-file"; }

    };

    /**
     * The type of file the RADIUS CA file is (PEM, PKCS12, DER).
     */
    public static final StringGuacamoleProperty RADIUS_CA_TYPE = new StringGuacamoleProperty() {

        @Override
        public String getName() { return "radius-ca-type"; }

    };

    /**
     * The password for the CA file.
     */
    public static final StringGuacamoleProperty RADIUS_CA_PASSWORD = new StringGuacamoleProperty() {

        @Override
        public String getName() { return "radius-ca-password"; }

    };

    /**
     * The file that stores the key/certificate pair to use for the RADIUS client connection.
     */
    public static final StringGuacamoleProperty RADIUS_KEY_FILE = new StringGuacamoleProperty() {

        @Override
        public String getName() { return "radius-key-file"; }

    };

    /**
     * The type of file the RADIUS key file is (PEM, PKCS12, DER).
     */
    public static final StringGuacamoleProperty RADIUS_KEY_TYPE = new StringGuacamoleProperty() {

        @Override
        public String getName() { return "radius-key-type"; }

    };

    /**
     * The password for the key file.
     */
    public static final StringGuacamoleProperty RADIUS_KEY_PASSWORD = new StringGuacamoleProperty() {

        @Override
        public String getName() { return "radius-key-password"; }

    };

    /**
     * Whether or not to trust all RADIUS server certificates.
     */
    public static final BooleanGuacamoleProperty RADIUS_TRUST_ALL = new BooleanGuacamoleProperty() {

        @Override
        public String getName() { return "radius-trust-all"; }

    };

    /**
     * The tunneled protocol to use inside a RADIUS EAP-TTLS connection.
     */
    public static final StringGuacamoleProperty RADIUS_EAP_TTLS_INNER_PROTOCOL = new StringGuacamoleProperty() {

        @Override
        public String getName() { return "radius-eap-ttls-inner-protocol"; }

    };


}

@@ -1696,39 +1696,32 @@
 The port on the 
-RADIUS 
 server to connec
@@ -1730,16 +1730,34 @@
 to when 
+performing RADIUS 
 accounti
@@ -1754,30 +1754,24 @@
 S accounting
- users
 .%0A     */%0A  
@@ -2286,39 +2286,27 @@
 ret 
-of the RADIUS server to
+to use when
  connect
  to 
@@ -2305,37 +2305,32 @@
 nect
+ing
  to 
-when authenticating users
+the RADIUS server
 .%0A  

Clean up property comments.