#!/bin/bash set -e # Define default values for environment variables set -a source /.env set +a declare -A defaults defaults=( [ADMIN_PASSWD]=${ADMIN_PASSWD} [CSV_INTERNAL_SEP]=${CSV_INTERNAL_SEP} [PUBLISHER_WARRANTY_URL]=${PUBLISHER_WARRANTY_URL} [ROOT_PATH]=${ROOT_PATH} [REPORTGZ]=${REPORTGZ} [WEBSOCKET_KEEP_ALIVE_TIMEOUT]=${WEBSOCKET_KEEP_ALIVE_TIMEOUT} [WEBSOCKET_RATE_LIMIT_BURST]=${WEBSOCKET_RATE_LIMIT_BURST} [WEBSOCKET_RATE_LIMIT_DELAY]=${WEBSOCKET_RATE_LIMIT_DELAY} [ODOO_RC]=${ODOO_RC} [SAVE]=${SAVE} [INIT]=${INIT} [UPDATE]=${UPDATE} [DEMO]=${DEMO} [WITHOUT_DEMO]=${WITHOUT_DEMO} [IMPORT_PARTIAL]=${IMPORT_PARTIAL} [PIDFILE]=${PIDFILE} [ADDONS_PATH]=${ADDONS_PATH} [UPGRADE_PATH]=${UPGRADE_PATH} [SERVER_WIDE_MODULES]=${SERVER_WIDE_MODULES} [DATA_DIR]=${DATA_DIR} [HTTP_INTERFACE]=${HTTP_INTERFACE} [HTTP_PORT]=${HTTP_PORT} [LONGPOLLING_PORT]=${LONGPOLLING_PORT} [HTTP_ENABLE]=${HTTP_ENABLE} [PROXY_MODE]=${PROXY_MODE} [X_SENDFILE]=${X_SENDFILE} [DBFILTER]=${DBFILTER} [TEST_FILE]=${TEST_FILE} [TEST_ENABLE]=${TEST_ENABLE} [TEST_TAGS]=${TEST_TAGS} [SCREENCASTS]=${SCREENCASTS} [SCREENSHOTS]=${SCREENSHOTS} [LOGFILE]=${LOGFILE} [SYSLOG]=${SYSLOG} [LOG_HANDLER]=${LOG_HANDLER} [LOG_DB]=${LOG_DB} [LOG_DB_LEVEL]=${LOG_DB_LEVEL} [LOG_LEVEL]=${LOG_LEVEL} [EMAIL_FROM]=${EMAIL_FROM} [FROM_FILTER]=${FROM_FILTER} [SMTP_SERVER]=${SMTP_SERVER} [SMTP_PORT]=${SMTP_PORT} [SMTP_SSL]=${SMTP_SSL} [SMTP_USER]=${SMTP_USER} [SMTP_PASSWORD]=${SMTP_PASSWORD} [SMTP_SSL_CERTIFICATE_FILENAME]=${SMTP_SSL_CERTIFICATE_FILENAME} [SMTP_SSL_PRIVATE_KEY_FILENAME]=${SMTP_SSL_PRIVATE_KEY_FILENAME} [DB_NAME]=${DB_NAME} [DB_USER]=${DB_USER} [DB_PASSWORD]=${DB_PASSWORD} [PG_PATH]=${PG_PATH} [DB_HOST]=${DB_HOST} [DB_PORT]=${DB_PORT} [DB_SSLMODE]=${DB_SSLMODE} [DB_MAXCONN]=${DB_MAXCONN} [DB_TEMPLATE]=${DB_TEMPLATE} [LOAD_LANGUAGE]=${LOAD_LANGUAGE} [LANGUAGE]=${LANGUAGE} [TRANSLATE_OUT]=${TRANSLATE_OUT} [TRANSLATE_IN]=${TRANSLATE_IN} [OVERWRITE_EXISTING_TRANSLATIONS]=${OVERWRITE_EXISTING_TRANSLATIONS} [TRANSLATE_MODULES]=${TRANSLATE_MODULES} [LIST_DB]=${LIST_DB} [DEV_MODE]=${DEV_MODE} [SHELL_INTERFACE]=${SHELL_INTERFACE} [STOP_AFTER_INIT]=${STOP_AFTER_INIT} [OSV_MEMORY_COUNT_LIMIT]=${OSV_MEMORY_COUNT_LIMIT} [TRANSIENT_AGE_LIMIT]=${TRANSIENT_AGE_LIMIT} [MAX_CRON_THREADS]=${MAX_CRON_THREADS} [UNACCENT]=${UNACCENT} [GEOIP_DATABASE]=${GEOIP_DATABASE} [WORKERS]=${WORKERS} [LIMIT_MEMORY_SOFT]=${LIMIT_MEMORY_SOFT} [LIMIT_MEMORY_HARD]=${LIMIT_MEMORY_HARD} [LIMIT_TIME_CPU]=${LIMIT_TIME_CPU} [LIMIT_TIME_REAL]=${LIMIT_TIME_REAL} [LIMIT_TIME_REAL_CRON]=${LIMIT_TIME_REAL_CRON} [LIMIT_REQUEST]=${LIMIT_REQUEST} ) # Define the template template=$(cat << EOF [options] ;------------------------------------------; ; Options not exposed on the command line. ; ;------------------------------------------; admin_passwd={ADMIN_PASSWD} csv_internal_sep={CSV_INTERNAL_SEP} publisher_warranty_url={PUBLISHER_WARRANTY_URL} root_path={ROOT_PATH} reportgz={REPORTGZ} websocket_keep_alive_timeout={WEBSOCKET_KEEP_ALIVE_TIMEOUT} websocket_rate_limit_burst={WEBSOCKET_RATE_LIMIT_BURST} websocket_rate_limit_delay={WEBSOCKET_RATE_LIMIT_DELAY} ;-----------------------; ; Server startup config ; ;-----------------------; ; --config | -c config={ODOO_RC} ; --save save={SAVE} ; --init | -i init={INIT} ; --update | -u update={UPDATE} ; --without-demo demo={DEMO} without_demo={WITHOUT_DEMO} ; --import-partial import_partial={IMPORT_PARTIAL} ; --pidfile pidfile={PIDFILE} ; --addons-path addons_path={ADDONS_PATH} ; --upgrade-path upgrade_path={UPGRADE_PATH} ; --load server_wide_modules={SERVER_WIDE_MODULES} ; --data-dir data_dir={DATA_DIR} ;------; ; HTTP ; ;------; ; --http-interface | --xmlrpc-interface http_interface={HTTP_INTERFACE} ; --http-port | -p | --xmlrpc-port http_port={HTTP_PORT} ; --longpolling_port longpolling_port={LONGPOLLING_PORT} ; --no-http | --no-xmlrpc http_enable={HTTP_ENABLE} ; --proxy-mode proxy_mode={PROXY_MODE} ; --x-sendfile x_sendfile ={X_SENDFILE} ;---------------; ; Testing Group ; ;---------------; ; --test-file test_file={TEST_FILE} ; --test-enable test_enable={TEST_ENABLE} ; --test-tags test_tags={TEST_FILE} ; --screencasts screencasts={SCREENCASTS} ; --screenshots screenshots={SCREENSHOTS} ;---------------; ; Logging Group ; ;---------------; ; --logfile logfile={LOGFILE} ; --syslog syslog={SYSLOG} ; --log-handler | --log-web (--log-handler=odoo.http:DEBUG') | --log-sql (--log-handler=odoo.sql_db:DEBUG) log_handler={LOG_HANDLER} ; --log-db log_db={LOG_DB} ; --log-db-level log_db_level={LOG_DB_LEVEL} ; --log-level log_level={LOG_LEVEL} ;------------; ; SMTP Group ; ;------------; ; --email-from email_from={EMAIL_FROM} ; --from-filter from_filter={FROM_FILTER} ; --smtp smtp_server={SMTP_SERVER} ; --smtp-port smtp_port={SMTP_PORT} ; --smtp-ssl smtp_ssl={SMTP_SSL} ; --smtp-user smtp_user={SMTP_USER} ; --smtp-password smtp_password={SMTP_PASSWORD} ; --smtp-ssl-certificate-filename smtp_ssl_certificate_filename={SMTP_SSL_CERTIFICATE_FILENAME} ; --smtp-ssl-private-key-filename smtp_ssl_private_key_filename={SMTP_SSL_PRIVATE_KEY_FILENAME} ;----------; ; DB Group ; ;----------; ; --database | -d db_name={DB_NAME} ; --db_user | -r db_user={DB_USER} ; --db_password | -w db_password={DB_PASSWORD} ; --pg_path pg_path={PG_PATH} ; --db_host db_host={DB_HOST} ; --db_port db_port={DB_PORT} ; --db_sslmode db_sslmode={DB_SSLMODE} ; --db_maxconn db_maxconn={DB_MAXCONN} ; --db-template db_template={DB_TEMPLATE} ;------------------------------; ; Internationalisation options ; ;------------------------------; ; --load-language load_language={LOAD_LANGUAGE} ; --language language={LANGUAGE} ; --i18n-export translate_out={TRANSLATE_OUT} ; --i18n-import translate_in={TRANSLATE_IN} ; --i18n-overwrite overwrite_existing_translations={OVERWRITE_EXISTING_TRANSLATIONS} ; --modules translate_modules={TRANSLATE_MODULES} ;----------; ; Security ; ;----------; ; --no-database-list list_db={LIST_DB} ;-----; ; WEB ; ;-----; ; --db-filter dbfilter={DBFILTER} ;------------------; ; Advanced options ; ;------------------; ; --dev dev_mode={DEV_MODE} ; --shell-interface shell_interface={SHELL_INTERFACE} ; --stop-after-init stop_after_init={STOP_AFTER_INIT} ; --osv-memory-count-limit osv_memory_count_limit={OSV_MEMORY_COUNT_LIMIT} ; --transient-age-limit (--osv-memory-age-limit deprecated) transient_age_limit={TRANSIENT_AGE_LIMIT} ; --max-cron-threads max_cron_threads={MAX_CRON_THREADS} ; --unaccent unaccent={UNACCENT} ; --geoip-db geoip_database={GEOIP_DATABASE} ; --workers workers={WORKERS} ; --limit-memory-soft limit_memory_soft={LIMIT_MEMORY_SOFT} ; --limit-memory-hard limit_memory_hard={LIMIT_MEMORY_HARD} ; --limit-time-cpu limit_time_cpu={LIMIT_TIME_CPU} ; --limit-time-real limit_time_real={LIMIT_TIME_REAL} ; --limit-time-real-cron limit_time_real_cron={LIMIT_TIME_REAL_CRON} ; --limit-request limit_request={LIMIT_REQUEST} EOF ) # Override defaults with values from environment variables for key in "${!defaults[@]}"; do if [[ ! ${defaults[$key]} =~ ^\{.*\}$ ]]; then value=${!key:-${defaults[$key]}} template="${template//\{$key\}/$value}" fi done # Store the result to the odoo.conf file echo "$template" > ${ODOO_RC}