Rewrite of the idf.php-dist file

- Add example for each mail and cache backend
- Add major part of option use in each Scm backend with description
This commit is contained in:
William MARTIN 2011-04-28 15:12:00 +02:00
parent 02d0f0923e
commit 92de88ba13

View File

@ -22,117 +22,50 @@
# ***** END LICENSE BLOCK ***** */ # ***** END LICENSE BLOCK ***** */
$cfg = array(); $cfg = array();
$cfg['allowed_scm'] = array();
# Write here a long random string unique for this installation. This
# is critical to put a long string, with at least 40 characters.
# You can use the output of
# dd if=/dev/urandom bs=1 count=64 2>/dev/null | base64 -w 0
$cfg['secret_key'] = '';
# #
# You must set them to false once everything is running ok. # Debug section
# #
$cfg['debug'] = true;
# You must set them to false once everything is running ok.
# It will help you catch errors at beginning when configuring your # It will help you catch errors at beginning when configuring your
# SCM backend. It must be turned off in production. # forge and SCM backend.
#
# It must be turned off in production.
$cfg['debug'] = true;
$cfg['debug_scm'] = false; $cfg['debug_scm'] = false;
#
# Note: By default, InDefero will not manage the repositories for
# you, you can enable the repositories management with the
# built-in plugins. The documentation of the plugins is available
# in the `doc/` folder.
#
# If you have a single git repository, just put the full path to it
# without trailing slash. The path is the path to the git database,
# so you need to include the /.git folder.
# For example: '/path/to/my/project/.git'
#
# If you have multiple repositories, you need to put %s where you
# want the shortname of the project to be replaced.
# For example:
# - You have many projects on your local computer and want to use
# InDefero to see them. Put: '/home/yourlogin/Projects/%s/.git'
# - You have many projects on a remote server with only "bare" git
# repositories. Put: '/home/git/repositories/%s.git'
#
# ** Do not forget to give read access to these folders to your www
# ** user. For example, adding www to the git group.
$cfg['git_repositories'] = '/home/git/repositories/%s.git';
#
# Like for the git_repositories definition, the path can contains %s
# and it will be automatically replaced. You can ignore this
# configuration variable as it is only for information use in the
# tree view.
#
$cfg['git_remote_url'] = 'git://localhost/%s.git';
$cfg['git_write_remote_url'] = 'git@localhost:%s.git';
# Same as for git, you can have multiple repositories, one for each
# project or a single one for all the projects.
#
# In the case of subversion, the admin of a project can also select a
# remote repository from the web interface. From the web interface
# you can define a local repository, local repositories are defined
# here. This if for security reasons.
$cfg['svn_repositories'] = 'file:///home/svn/repositories/%s';
$cfg['svn_remote_url'] = 'http://localhost/svn/%s';
# #
# You can setup monotone for use with indefero in several ways. # Path section
# Please look into doc/syncmonotone.mdtext for more information.
# #
# Path to the monotone binary # Temporary folder where the script is writing the compiled templates,
$cfg['mtn_path'] = 'mtn'; # cached data and other temporary resources.
# It must be writeable by your webserver instance.
$cfg['tmp_folder'] = '/tmp';
# Additional options for the started monotone process # Path to the PEAR folder
$cfg['mtn_opts'] = array('--no-workspace', '--no-standard-rcfiles'); $cfg['pear_path'] = '/usr/share/php';
# The path to a specific database (local use) or a writable project # Path to the upload folder
# directory (remote / usher use). %s is replaced with the project name $cfg['upload_path'] = '/home/www/indefero/www/media/upload';
$cfg['mtn_repositories'] = '/home/mtn/repositories/%s.mtn';
# The URL which is displayed as sync URL to the user and which is also # The following path *MUST NOT* be accessible through a web browser
# used to connect to a remote usher # as user will be able to upload .html, .php files and this can
$cfg['mtn_remote_url'] = 'mtn://my-host.biz/%s'; # create *TERRIBLE* security issues. In this folder, the attachments
# to the issues will be uploaded and we do not restrict the content type.
$cfg['upload_issue_path'] = '/home/www/indefero/attachments';
# Whether the particular database(s) are accessed locally (via automate stdio) #
# or remotely (via automate remote_stdio). 'remote' is the default for # URL section
# use with usher and the SyncMonotone plugin, while 'local' access should be
# choosed for manual setups and / or ssh access.
$cfg['mtn_db_access'] = 'local';
# Full path to the directory tree which contains default configuration files
# that are automatically created for new projects. This is only needed
# if $cfg['mtn_db_access'] is set to remote, i.e. in case the SyncMonotone
# plugin should be used. If unset, it defaults to the tree underknees
# src/IDF/Plugin/SyncMonotone/. Don't forget the trailing slash!
#$cfg['mtn_confdir'] = '/path/to/dir/tree/';
# Additional configuration files you want to create / copy for new setups.
# All these file paths have to be relative to $cfg['mtn_confdir'].
#$cfg['mtn_confdir_extra'] = array('hooks.d/something.lua')
# Needs to be configured for remote / usher usage.
# This allows basic control of a running usher process via the forge
# administration. The variable must point to the full (writable)
# path of the usher configuration file which gets updated when new projects
# are added
#$cfg['mtn_usher_conf'] = '/path/to/usher.conf';
# Mercurial repositories path
$cfg['mercurial_repositories'] = '/home/mercurial/repositories/%s';
#$cfg['mercurial_remote_url'] = 'http://projects.ceondo.com/hg/%s';
# admins will get an email in case of errors in the system in non
# debug mode.
$cfg['admins'] = array(
array('Admin', 'you@example.com'),
);
# Email configuration
$cfg['send_emails'] = true;
$cfg['mail_backend'] = 'smtp';
$cfg['mail_host'] = 'localhost';
$cfg['mail_port'] = 25;
# Paths/Url configuration.
# #
# Examples: # Examples:
# You have: # You have:
@ -159,114 +92,343 @@ $cfg['url_media'] = 'http://localhost/media';
# Url to access a folder in which the files you upload through # Url to access a folder in which the files you upload through
# the downloads tab will be stored. # the downloads tab will be stored.
$cfg['url_upload'] = 'http://localhost/media/upload'; $cfg['url_upload'] = 'http://localhost/media/upload';
# Path to the upload folder
$cfg['upload_path'] = '/home/www/indefero/www/media/upload';
# #
# The following path *MUST NOT* be accessible through a web browser # Internationalization section
# as user will be able to upload .html, .php files and this can
# create *TERRIBLE* security issues. In this folder, the attachments
# to the issues will be uploaded and we do not restrict the content type.
# #
$cfg['upload_issue_path'] = '/home/www/indefero/attachments';
# 'time_zone' must be a valid timezone, you can find a list of them at the url:
# http://www.php.net/manual/en/timezones.php
$cfg['time_zone'] = 'Europe/Berlin';
# 'languages' is an array of available languages in your forge
# If you want to enable extra language, add your language files in 'src/IDF/locale' before
$cfg['languages'] = array('en', 'fr', 'de', 'es_ES');
# #
# write here a long random string unique for this installation. This # Email section
# is critical to put a long string, with at least 40 characters. # Indefero use the PEAR Mail class to send mails. Available mail backend are:
$cfg['secret_key'] = ''; # - The PHP Mail built-in function (mail)
# - Sendmail (sendmail)
# - Simple Mail Transfer Protocol (smtp)
#
# Sendmail and SMTP need extra configuration, see example below
#
# the sender of all the emails. # 'send_emails' is a general lock to enable/disable, the mail sending process
# - true : Enable mail to be send
# - flase : Disable it
$cfg['send_emails'] = false;
# The baackend to use: mail, sendmail, smtp
$cfg['mail_backend'] = 'mail';
# Mails send by indefero will have thoses headers:
$cfg['from_email'] = 'sender@example.com'; $cfg['from_email'] = 'sender@example.com';
# Email address for the bounced messages.
$cfg['bounce_email'] = 'no-reply@example.com'; $cfg['bounce_email'] = 'no-reply@example.com';
# Temporary folder where the script is writing the compiled templates, # 'admins' will get an email in case of errors when the system is in non debug mode.
# cached data and other temporary resources. $cfg['admins'] = array(array('You', 'you@example.com'),
# It must be writeable by your webserver instance. array('Bob', 'bob@example.com'),
# It is mandatory if you are using the template system. );
$cfg['tmp_folder'] = '/tmp';
# Database configuration ## Example of SMTP configuration
$cfg['db_login'] = 'www'; #$cfg['mail_host'] = 'localhost'; # The server to connect. Default is localhost
$cfg['db_password'] = ''; #$cfg['mail_port'] = 25; # The port to connect. Default is 25
$cfg['db_server'] = ''; #$cfg['mail_username'] = ''; # The username to use for SMTP authentication.
$cfg['db_version'] = '5.1'; # Only needed for MySQL #$cfg['mail_password'] = ''; # The password to use for SMTP authentication.
# If you want to have different installations with the same DB #$cfg['mail_localhost'] = 'localhost'; # The value to give when sending EHLO or HELO. Default is localhost
$cfg['db_table_prefix'] = 'indefero_'; #$cfg['mail_timeout'] = NULL; # The SMTP connection timeout. Default is NULL (no timeout)
#$cfg['mail_verp'] = FALSE; # Whether to use VERP or not. Default is FALSE
## Example of sendmail configuration
#$cfg['mail_sendmail_path'] = '/usr/bin/sendmail'; # The location of the sendmail program on the filesystem. Default is /usr/bin/sendmail
#$cfg['sendmail_args'] = '-i'; # Additional parameters to pass to the sendmail. Default is -i
#
# Database section
#
# ** DO NOT USE SQLITE IN PRODUCTION ** # ** DO NOT USE SQLITE IN PRODUCTION **
# This is not because of problems with the quality of the SQLite # This is not because of problems with the quality of the SQLite
# driver or with SQLite itself, this is due to the lack of migration # driver or with SQLite itself, this is due to the lack of migration
# support in Pluf for SQLite, this means we cannot modify the DB # support in Pluf for SQLite, this means we cannot modify the DB
# easily once it is loaded with data. # easily once it is loaded with data.
$cfg['db_engine'] = 'PostgreSQL'; # SQLite is also well tested or MySQL
$cfg['db_database'] = 'website'; # put absolute path to the db if you
# are using SQLite.
# #
# The extension of the downloads are limited. You can add extra
# extensions here. # 'db_engine' must be one of available database engine: SQLite, MySQL, PostgreSQL
# $cfg['idf_extra_upload_ext'] = 'ext1 ext2'; $cfg['db_engine'] = 'PostgreSQL';
#
# By default, the size of the downloads is limited to 2MB. # 'db_database' is the database name for MySQL and PostgreSQL,
# The php.ini upload_max_filesize configuration setting will # and the absolute path to the db if you are using SQLite.
# always have precedence. $cfg['db_database'] = 'website';
# $cfg['max_upload_size'] = 2097152; // Size in bytes
# The database server to connect.
$cfg['db_server'] = 'localhost';
# Information about the database user.
$cfg['db_login'] = 'foo';
$cfg['db_password'] = 'bar';
# The version of your database server, only needed for MySQL
# $cfg['db_version'] = '5.1';
# A prefix for your table name
# It's can be useful if you run multiple installation in the same database
$cfg['db_table_prefix'] = 'indefero_';
# #
# Time zone # Cache section
# http://www.php.net/manual/en/timezones.php # The cache is use to speed up operation on most of scm commands.
#
# Indefero support 3 methods to handle the cache, and you need to one of them:
# - Files (Pluf_Cache_File)
# - Alternative PHP Cache (Pluf_Cache_Apc)
# - Memcached (Pluf_Cache_Memcached)
#
# APC and Memcached need extra installation to run, so It's easier to use Files in a first time.
# @see http://www.php.net/manual/en/book.apc.php
# @see http://www.php.net/manual/en/book.memcached.php
# #
# $cfg['time_zone'] = 'Europe/Berlin';
$cfg['pear_path'] = '/usr/share/php';
$cfg['login_success_url'] = $cfg['url_base'].$cfg['idf_base'];
$cfg['after_logout_page'] = $cfg['url_base'].$cfg['idf_base'];
# Caching of the scm commands.
$cfg['cache_engine'] = 'Pluf_Cache_File'; $cfg['cache_engine'] = 'Pluf_Cache_File';
$cfg['cache_timeout'] = 300; $cfg['cache_timeout'] = 300;
$cfg['cache_file_folder'] = $cfg['tmp_folder'].'/cache'; $cfg['cache_file_folder'] = $cfg['tmp_folder'].'/cache';
# The folder in which the templates of the application are located. #$cfg['cache_engine'] = 'Pluf_Cache_Apc';
$cfg['template_folders'] = array( #$cfg['cache_timeout'] = 300;
dirname(__FILE__).'/../templates', #$cfg['cache_apc_keyprefix'] = 'uniqueforapp';
); #$cfg['cache_apc_compress'] = true;
#$cfg['cache_engine'] = 'Pluf_Cache_Memcached';
#$cfg['cache_timeout'] = 300;
#$cfg['cache_memcached_keyprefix'] = 'uniqueforapp';
#$cfg['cache_memcached_server'] = 'localhost';
#$cfg['cache_memcached_port'] = 11211;
#$cfg['cache_memcached_compress'] = MEMCACHE_COMPRESSED;
#
# Binary section
#
# You tell indefero to use a specific version of some binary,
# instead of use thoses find in the system PATH.
#
# Monotone backend allow you to add extra options for the started monotone process
#
$cfg['svn_path'] = 'svn';
$cfg['svnlook_path'] = 'svnlook';
$cfg['svnadmin_path'] = 'svnadmin';
$cfg['hg_path'] = 'hg';
$cfg['git_path'] = 'git';
$cfg['mtn_path'] = 'mtn';
$cfg['mtn_opts'] = array('--no-workspace', '--no-standard-rcfiles');
#
# GIT Scm section
# Read the file doc/syncgit.mdtext for more information
#
# Uncomment this line to enable the GIT support
# $cfg['allowed_scm']['git'] = 'IDF_Scm_Git';
# The path to git repositories. %s is replaced with the project name
# Do not forget to give read access to these folders to your www user.
# For example, adding www to the git group.
$cfg['git_repositories'] = '/home/git/repositories/%s.git/';
# Git url for public access to a repositorie. %s is replaced with the project name
# @see doc/syncgit.mdtext for the git-daemon configuration
$cfg['git_remote_url'] = 'git://137.121.75.54/%s.git';
# Git url for private/write access to a repositorie. %s is replaced with the project name
# @see doc/syncgit.mdtext for the SSH authentification
$cfg['git_write_remote_url'] = 'git@137.121.75.54:%s.git';
# The core.quotepath is configured on all new repository created by indefero
# This option disable characters to be escaped when git commands run on a compatible UTF-8 shell
# - true: All characters upper than 0x80 will be escape (default)
# - false: Characters is print directly, enable accented character in a UTF-8 shell
# If you see malformed filename in the source viewer, try to uncomment the next line
# $cfg['git_core_quotepath'] = false;
# Path to the gitserve.py script
$cfg['idf_plugin_syncgit_path_gitserve'] = '/home/www/indefero/scripts/gitserve.py';
# Path to the authorized_keys of your git user
$cfg['idf_plugin_syncgit_path_authorized_keys'] = '/home/git/.ssh/authorized_keys';
# Path to the tmp file for keys synch
$cfg['idf_plugin_syncgit_sync_file'] = '/tmp/SYNC-GIT';
# Path to the Git home
$cfg['idf_plugin_syncgit_git_home_dir'] = '/home/git';
# Path to the folder which contains all git repositories
$cfg['idf_plugin_syncgit_base_repositories'] = '/home/git/repositories';
# Set a custom git-post-update script
# Use it only, if you know you are doing !
# $cfg['idf_plugin_syncgit_post_update'] = '/my/script';
# Automatic delete git repositorie of deleted project
# $cfg['idf_plugin_syncgit_remove_orphans'] = true;
#
# SVN Scm section
# Read the file doc/syncsvn.mdtext for more information
#
# Uncomment this line to enable the SVN support
# $cfg['allowed_scm']['svn'] = 'IDF_Scm_Svn';
# In the case of subversion, the admin of a project can also select a
# remote repository from the web interface. From the web interface
# you can define a local repository, local repositories are defined
# here. This if for security reasons.
$cfg['svn_repositories'] = 'file:///home/svn/repositories/%s';
# The HTTP URL to the svn repositorie
# We add "trunk" to invite people to checkout the trunk of the project.
$cfg['svn_remote_url'] = 'http://localhost/svn/%s/trunk';
# Path to authenfication files for dav_svn
$cfg['idf_plugin_syncsvn_authz_file'] = '/home/svn/dav_svn.authz';
$cfg['idf_plugin_syncsvn_passwd_file'] = '/home/svn/dav_svn.passwd';
# Path to the folder which contains all svn repositories
$cfg['idf_plugin_syncsvn_svn_path'] = '/home/svn/repositories';
# You can custom permissions access for each user group.
# $cfg['idf_plugin_syncsvn_access_owners'] = 'rw';
# $cfg['idf_plugin_syncsvn_access_members'] = 'rw';
# $cfg['idf_plugin_syncsvn_access_extra'] = 'r';
# $cfg['idf_plugin_syncsvn_access_public'] = 'r';
# $cfg['idf_plugin_syncsvn_access_private'] = '';
# Automatic delete svn repositorie of deleted project
# $cfg['idf_plugin_syncsvn_remove_orphans'] = true;
#
# Mercurial Scm section
# Read the file doc/syncmercurial.mdtext for more information
#
# Uncomment this line to enable the Mercurial support
$cfg['allowed_scm']['mercurial'] = 'IDF_Scm_Mercurial';
# The path to mercurial repositories. %s is replaced with the project name
$cfg['mercurial_repositories'] = '/home/mercurial/repositories/%s';
$cfg['mercurial_remote_url'] = 'http://example.com/hg/%s';
$cfg['idf_plugin_syncmercurial_hgrc'] = array('web' => array('push_ssl' => 'false',
'allow_push' => '',
'description' => '',
'allow_archive' => 'bz2, zip, gz',
'style' => 'gitweb',
'contact' => ''),
'hooks' => array(),
'extensions' => array(),
);
# Based on the paths provided in the Apache configuration,
# you need to setup the following lines
$cfg['idf_plugin_syncmercurial_passwd_file'] = '/home/mercurial/auth/.htpasswd';
$cfg['idf_plugin_syncmercurial_path'] = '/home/mercurial/repositories';
$cfg['idf_plugin_syncmercurial_private_notify'] = '/home/mercurial/tmp/notify.tmp';
$cfg['idf_plugin_syncmercurial_private_url'] = '/hg/%s';
# Authentification file for private repositories
$cfg['idf_plugin_syncmercurial_private_include'] = '/home/mercurial/scripts/private_indefero.conf';
# Password storage type
# @see doc/syncmercurial.mdtext
# $cfg['idf_plugin_syncmercurial_passwd_mode'] = 'sha';
#
# Monotone Scm section
# Read the file doc/syncmonotone.mdtext for more information
#
# Uncomment this line to enable the Monotone support
# $cfg['allowed_scm']['mtn'] = 'IDF_Scm_Monotone';
# The path to a specific database (local use) or a writable project
# directory (remote / usher use). %s is replaced with the project name
$cfg['mtn_repositories'] = '/home/mtn/repositories/%s.mtn';
# The URL which is displayed as sync URL to the user and which is also
# used to connect to a remote usher
$cfg['mtn_remote_url'] = 'mtn://example.com/%s';
# Whether the particular database(s) are accessed locally (via automate stdio)
# or remotely (via automate remote_stdio). 'remote' is the default for
# use with usher and the SyncMonotone plugin, while 'local' access should be
# choosed for manual setups and / or ssh access.
$cfg['mtn_db_access'] = 'local';
# Needs to be configured for remote / usher usage.
# This allows basic control of a running usher process via the forge
# administration. The variable must point to the full (writable)
# path of the usher configuration file which gets updated when new projects
# are added
# $cfg['mtn_usher_conf'] = '/var/lib/usher/usher.conf';
# Full path to the directory tree which contains default configuration files
# that are automatically created for new projects. This is only needed
# if $cfg['mtn_db_access'] is set to remote, i.e. in case the SyncMonotone
# plugin should be used. If unset, it defaults to the tree underknees
# src/IDF/Plugin/SyncMonotone/. Don't forget the trailing slash!
# $cfg['mtn_confdir'] = '/path/to/dir/tree/';
# Additional configuration files you want to create / copy for new setups.
# All these file paths have to be relative to $cfg['mtn_confdir'].
# $cfg['mtn_confdir_extra'] = array('hooks.d/something.lua')
#
# Hacker section
# Reserved to avanced user
#
$cfg['installed_apps'] = array('Pluf', 'IDF'); $cfg['installed_apps'] = array('Pluf', 'IDF');
$cfg['pluf_use_rowpermission'] = true; $cfg['pluf_use_rowpermission'] = true;
$cfg['middleware_classes'] = array( $cfg['middleware_classes'] = array(
'Pluf_Middleware_Csrf', 'Pluf_Middleware_Csrf',
'Pluf_Middleware_Session', 'Pluf_Middleware_Session',
'IDF_Middleware', 'IDF_Middleware',
'Pluf_Middleware_Translation', 'Pluf_Middleware_Translation',
); );
$cfg['template_context_processors'] = array('IDF_Middleware_ContextPreProcessor'); $cfg['template_context_processors'] = array('IDF_Middleware_ContextPreProcessor');
$cfg['idf_views'] = dirname(__FILE__).'/urls.php'; $cfg['idf_views'] = dirname(__FILE__).'/urls.php';
# available languages # If you want custom some template files,
$cfg['languages'] = array('en', 'fr', 'de', 'es_ES'); # you must tell to the template system where search your updated files by
# adding this folder in the 'template_folders' array.
$cfg['template_folders'] = array(/* '/your/folder', */
dirname(__FILE__).'/../templates',
);
# SCM base configuration # You can custom the URL redirection, after a login/logout
$cfg['allowed_scm'] = array('git' => 'IDF_Scm_Git', $cfg['login_success_url'] = $cfg['url_base'].$cfg['idf_base'];
'svn' => 'IDF_Scm_Svn', $cfg['after_logout_page'] = $cfg['url_base'].$cfg['idf_base'];
'mercurial' => 'IDF_Scm_Mercurial',
'mtn' => 'IDF_Scm_Monotone',
);
# Specific git config
# The core.quotepath is configured on new repository
# True -> All characters upper than 0x80 will be escape (default)
# False -> Characters is print directly, enable accented character in a UTF-8 shell
# $cfg['git_core_quotepath'] = false;
# Set to true when uploaded public keys should not only be validated # Set to true when uploaded public keys should not only be validated
# syntactically, but also by the specific backend. For SSH public # syntactically, but also by the specific backend. For SSH public
# keys, ssh-keygen(3) must be available and usable in PATH, for # keys, ssh-keygen(3) must be available and usable in PATH, for
# monotone public keys, the monotone binary (as configured above) # monotone public keys, the monotone binary (as configured above)
# is used. # is used.
# $cfg['idf_strong_key_check'] = false; $cfg['idf_strong_key_check'] = false;
# If you want to use another memtypes database # If you want to use another memtypes database
# $cfg['idf_mimetypes_db'] = '/etc/mime.types'; # $cfg['idf_mimetypes_db'] = '/etc/mime.types';
@ -280,21 +442,18 @@ $cfg['allowed_scm'] = array('git' => 'IDF_Scm_Git',
# variables not being set correctly. Note the trailing space. # variables not being set correctly. Note the trailing space.
# $cfg['idf_exec_cmd_prefix'] = '/usr/bin/env -i '; # $cfg['idf_exec_cmd_prefix'] = '/usr/bin/env -i ';
# Path to the SCM binaries. These binaries are not necessarily in
# the path of your webserver or fastcgi process. In that case you
# may need to set the path manually here. This is the case with OSX.
# To know which path you need to provide, just run:
# $ which git
# from the command line. This will give you the path to git.
# $cfg['svn_path'] = 'svn';
# $cfg['svnlook_path'] = 'svnlook';
# $cfg['svnadmin_path'] = 'svnadmin';
# $cfg['hg_path'] = 'hg';
# $cfg['git_path'] = 'git';
# If you do not want to have calculations of the repositories, attachments # If you do not want to have calculations of the repositories, attachments
# and downloads size, set it to true. You can set to false some # and downloads size, set it to true. You can set to false some
# times to times to check the size. # times to times to check the size.
# $cfg['idf_no_size_check'] = false; # $cfg['idf_no_size_check'] = false;
# The extension of the downloads are limited. You can add extra
# extensions here.
# $cfg['idf_extra_upload_ext'] = 'ext1 ext2';
# By default, the size of the downloads is limited to 2MB.
# The php.ini upload_max_filesize and post_max_size configuration setting will
# always have precedence.
# $cfg['max_upload_size'] = 2097152; // Size in bytes
return $cfg; return $cfg;