<?php
return array(
    /**
     * *****************************************************************
     *  WSO2 Identity Server Client Configurations
     * *****************************************************************
     */

    'wsis' => [

        /**
         * Admin Role Name
         */
        'admin-role-name' => 'admin',

        /**
         * Read only Admin Role Name
         */
        'read-only-admin-role-name' => 'admin-read-only',

        /**
         * Gateway user role
         */
        'user-role-name' => 'airavata-user',

        /**
         * Tenant Domain
         */
        'tenant-domain' => 'master.airavata',

        /**
         * Tenant admin's username
         */
        'admin-username' => 'master',

        /**
         * Tenant admin's password
         */
        'admin-password' => 'master',

        /**
         * OAuth client key
         */
        'oauth-client-key' => 'iGEREhSBLuGapdcXwMU0b8jEpA4a',

        /**
         * OAuth client secret
         */
        'oauth-client-secret' => 'g4Lgp05JIJcNQryJkNKjXJYi8A8a',

        /**
         * Identity server domain
         */
        'server' => 'localhost',

        /**
         * Identity server url
         */
        'service-url' => 'https://localhost:7443/',

        /**
         * Enable HTTPS server verification
         */
        'verify-peer' => true,

        /**
         * Path to the server certificate file
         */
        'cafile-path' => app_path() . '/resources/security/idp_scigap_org.pem',

        /**
         * Allow self signed server certificates
         */
        'allow-self-signed-cert' => false
    ],


    /**
     * *****************************************************************
     *  Airavata Client Configurations
     * *****************************************************************
     */
    'airavata' => [

        /**
         * Airavata API server location. Use tls:// as the protocol to
         * connect TLS enabled Airavata
         */
        'airavata-server' => 'localhost',

        /**
         * Airavata API server port
         */
        'airavata-port' => '8930',

        /**
         * Airavata API server thrift communication timeout
         */
        'airavata-timeout' => '1000000',

        /**
         * Data Manager CPI server host
         */
        'data-manager-server' => 'localhost',

        /**
         * Data Manager CPI server port
         */
        'data-manager-port' => '8990',

        /**
         * Data Manager CPI server thrift communication timeout
         */
        'data-manager-timeout' => '1000000',

        /**
         * PGA Gateway ID
         */
        'gateway-id' => 'default',

        /**
         * Maximum size of a file which is allowed to upload to the server
         */
        'server-allowed-file-size' => 64,

        /**
         * absolute path of the data dir
         */
        'experiment-data-absolute-path' => '/var/www/experimentData',

        /**
         * username for the user for accessing the experiment data over ssh
         */
        'ssh-user' => 'root',

        /**
         * Advanced experiments options
         */
        'advanced-experiment-options' => '',

        /**
         * Default queue name
         */
        'queue-name' => 'long',

        /**
         * Default node count
         */
        'node-count' => '1',

        /**
         * Default total core count
         */
        'total-cpu-count' => '16',

        /**
         * Default wall time limit
         */
        'wall-time-limit' => '30',

        /**
         * Enable app-catalog cache
         */
        'enable-app-catalog-cache' => true,

        /**
         * Life time of app catalog data cache in minutes
         */
        'app-catalog-cache-duration' => 5,

        /**
         * Gateway data store resource id
         */
         'gateway-data-store-resource-id' => ''
    ],

    /**
     * *****************************************************************
     *  Portal Related Configurations
     * *****************************************************************
     */
    'portal' => [
        /**
         * Whether this portal is the SciGaP admin portal
         */
        'super-admin-portal' => false,

        /**
         * Set the name of theme in use here
         */
        'theme' => 'base',

        /**
         * Portal title
         */
        'portal-title' => 'Airavata PHP Gateway',

        /**
         * Email address of the portal admin. Portal admin well get email notifications for events
         * such as new user creation
         */
        'admin-emails' => ['xxx@xxx.com','yyy@yyy.com'],

        /**
         * Email account that the portal should login to send emails
         */
        'portal-email-username' => 'xyz@abc.com',

        /**
         * Password for the portal's email account
         */
        'portal-email-password' => 'xxxxxxxxxxx',

        /**
         * SMTP server on which the portal should connect
         */
        'portal-smtp-server-host' => 'smtp.gmail.com',

        /**
         * SMTP server port on which the portal should connect
         */
        'portal-smtp-server-port' => '587',

        /**
         * Set JIRA Issue Collector scripts here.
         */
        'jira-help' => 
        [
            /**
             * Report Issue Script issued for your app by Atlassian JIRA
             */
            'report-issue-script' => '',
            /**
             * Collector id at the end of the above script
             */
            'report-issue-collector-id' => '',
            /**
             * Create Report Script issued for your app by Atlassian JIRA
             */
            'request-feature-script' => '',
            /**
             * Collector id at the end of the above script
             */
            'request-feature-collector-id' => ''
        ],

        /**
         * Set Google Analytics Id here. ID format that generates from  
         * creating tracker object should be 
         *
         * UA-XXXXX-Y 
         *
         * for it to be working correctly. Currently it is only set for 
         * sending pageviews.
         */
        'google-analytics-id' => ''
    ]
);