mirror of
https://github.com/odoocker/odoocker
synced 2025-11-04 15:19:22 +01:00
enhanced .env variable usage
This commit is contained in:
477
odoo/odoorc.sh
477
odoo/odoorc.sh
@@ -2,444 +2,39 @@
|
||||
|
||||
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}
|
||||
[XMLRPCS_INTERFACE]=${XMLRPCS_INTERFACE}
|
||||
[XMLRPCS_PORT]=${XMLRPCS_PORT}
|
||||
[GEVENT_PORT]=${GEVENT_PORT}
|
||||
[HTTP_ENABLE]=${HTTP_ENABLE}
|
||||
[XMLRPCS]=${XMLRPCS}
|
||||
[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}
|
||||
|
||||
[ODOO_SESSION_REDIS]=${ODOO_SESSION_REDIS}
|
||||
[ODOO_SESSION_REDIS_HOST]=${ODOO_SESSION_REDIS_HOST}
|
||||
[ODOO_SESSION_REDIS_PORT]=${ODOO_SESSION_REDIS_PORT}
|
||||
[ODOO_SESSION_REDIS_PASSWORD]=${ODOO_SESSION_REDIS_PASSWORD}
|
||||
[ODOO_SESSION_REDIS_URL]=${ODOO_SESSION_REDIS_URL}
|
||||
[ODOO_SESSION_REDIS_PREFIX]=${ODOO_SESSION_REDIS_PREFIX}
|
||||
[ODOO_SESSION_REDIS_EXPIRATION]=${ODOO_SESSION_REDIS_EXPIRATION}
|
||||
[ODOO_SESSION_REDIS_EXPIRATION_ANONYMOUS]=${ODOO_SESSION_REDIS_EXPIRATION_ANONYMOUS}
|
||||
|
||||
[DISABLE_ATTACHMENT_STORAGE]=${DISABLE_ATTACHMENT_STORAGE}
|
||||
[AWS_HOST]=${AWS_HOST}
|
||||
[AWS_REGION]=${AWS_REGION}
|
||||
[AWS_ACCESS_KEY_ID]=${AWS_ACCESS_KEY_ID}
|
||||
[AWS_SECRET_ACCESS_KEY]=${AWS_SECRET_ACCESS_KEY}
|
||||
[AWS_BUCKETNAME]=${AWS_BUCKETNAME}
|
||||
)
|
||||
|
||||
# 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}
|
||||
|
||||
; --xmlrpcs-interface
|
||||
xmlrpcs_interface = {XMLRPCS_INTERFACE}
|
||||
|
||||
; --xmlrpcs-port
|
||||
xmlrpcs_port = {XMLRPCS_PORT}
|
||||
|
||||
; --gevent-port | --longpolling_port (deprecated)
|
||||
gevent_port = {GEVENT_PORT}
|
||||
|
||||
; --no-http | --no-xmlrpc
|
||||
http_enable = {HTTP_ENABLE}
|
||||
|
||||
; --no-xmlrpcs
|
||||
xmlrpcs = {XMLRPCS}
|
||||
|
||||
; --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 (all, reload, xml, qweb, werkzeug, sql, shell, assets, tests)
|
||||
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}
|
||||
|
||||
;-----------------------------;
|
||||
; External Integrations ;
|
||||
;-----------------------------;
|
||||
|
||||
;-------------;
|
||||
; Redis ;
|
||||
;-------------;
|
||||
; -- Possible values: 1 or true
|
||||
ODOO_SESSION_REDIS = {ODOO_SESSION_REDIS}
|
||||
|
||||
; -- Defaults to is localhost
|
||||
ODOO_SESSION_REDIS_HOST = {ODOO_SESSION_REDIS_HOST}
|
||||
|
||||
; -- Defaults to 6379
|
||||
ODOO_SESSION_REDIS_PORT = {ODOO_SESSION_REDIS_PORT}
|
||||
|
||||
; -- Sets the password for the AUTH command (optional)
|
||||
ODOO_SESSION_REDIS_PASSWORD = {ODOO_SESSION_REDIS_PASSWORD}
|
||||
|
||||
; -- Alternative way to define the Redis server address like rediss:// protocol.
|
||||
ODOO_SESSION_REDIS_URL = {ODOO_SESSION_REDIS_URL}
|
||||
|
||||
; -- Prefix for the session keys (optional)
|
||||
ODOO_SESSION_REDIS_PREFIX = {ODOO_SESSION_REDIS_PREFIX}
|
||||
|
||||
; -- Time in seconds before expiration of the sessions (default is 7 days)
|
||||
ODOO_SESSION_REDIS_EXPIRATION = {ODOO_SESSION_REDIS_EXPIRATION}
|
||||
|
||||
; -- Time in seconds before expiration of the anonymous sessions (default is 3 hours)
|
||||
ODOO_SESSION_REDIS_EXPIRATION_ANONYMOUS = {ODOO_SESSION_REDIS_EXPIRATION_ANONYMOUS}
|
||||
|
||||
;----------;
|
||||
; S3 ;
|
||||
;----------;
|
||||
; -- Disable S3 storage
|
||||
DISABLE_ATTACHMENT_STORAGE = {DISABLE_ATTACHMENT_STORAGE}
|
||||
|
||||
; -- Not required if using AWS S3
|
||||
AWS_HOST = {AWS_HOST}
|
||||
|
||||
; -- Required if using AWS services
|
||||
AWS_REGION = {AWS_REGION}
|
||||
|
||||
AWS_ACCESS_KEY_ID = {AWS_ACCESS_KEY_ID}
|
||||
AWS_SECRET_ACCESS_KEY = {AWS_SECRET_ACCESS_KEY}
|
||||
|
||||
; Optional {db_name} placeholder
|
||||
AWS_BUCKETNAME = {AWS_BUCKETNAME}
|
||||
|
||||
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}
|
||||
# Define the path to the example configuration file
|
||||
TEMPLATE_CONF="odoo.conf"
|
||||
|
||||
# Copy the example conf to the destination to start replacing the variables
|
||||
cp "$TEMPLATE_CONF" "$ODOO_RC"
|
||||
|
||||
# First pass: Evaluate any nested variables within .env file and export them
|
||||
while IFS='=' read -r key value || [[ -n $key ]]; do
|
||||
# Skip comments and empty lines
|
||||
[[ $key =~ ^#.* ]] || [[ -z $key ]] && continue
|
||||
|
||||
# Removing any quotes around the value
|
||||
value=${value%\"}
|
||||
value=${value#\"}
|
||||
|
||||
# Evaluate any variables within value
|
||||
eval "value=\"$value\""
|
||||
|
||||
export "$key=$value"
|
||||
done < .env
|
||||
|
||||
# Second pass: Replace the variables in $ODOO_RC
|
||||
while IFS='=' read -r key value || [[ -n $key ]]; do
|
||||
# Skip comments and empty lines
|
||||
[[ $key =~ ^#.* ]] || [[ -z $key ]] && continue
|
||||
|
||||
value=${!key} # Get the value of the variable whose name is $key
|
||||
|
||||
# Escape characters which are special to sed
|
||||
value_escaped=$(echo "$value" | sed 's/[\/&]/\\&/g')
|
||||
|
||||
# Replace occurrences of the key with the value in $ODOO_RC
|
||||
sed -i "s/\${$key}/${value_escaped}/g" "$ODOO_RC"
|
||||
done < .env
|
||||
|
||||
echo "Configuration file is generated at $ODOO_RC"
|
||||
|
||||
Reference in New Issue
Block a user