Files
odoocker/odoo/odoorc.sh

384 lines
8.0 KiB
Bash
Raw Normal View History

2023-04-19 14:27:50 -05:00
#!/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}
2023-05-10 01:34:55 -05:00
[XMLRPCS_INTERFACE]=${XMLRPCS_INTERFACE}
[XMLRPCS_PORT]=${XMLRPCS_PORT}
2023-04-19 19:09:30 -05:00
[GEVENT_PORT]=${GEVENT_PORT}
2023-04-19 14:27:50 -05:00
[HTTP_ENABLE]=${HTTP_ENABLE}
2023-05-10 01:34:55 -05:00
[XMLRPCS]=${XMLRPCS}
2023-04-19 14:27:50 -05:00
[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}
2023-05-10 01:34:55 -05:00
[DEBUG_MODE]=${DEBUG_MODE}
2023-04-19 14:27:50 -05:00
[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. ;
;------------------------------------------;
2023-05-10 01:34:55 -05:00
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}
2023-04-19 14:27:50 -05:00
;-----------------------;
; Server startup config ;
;-----------------------;
2023-05-10 01:34:55 -05:00
; `--config | -c`
config = {ODOO_RC}
2023-04-19 14:27:50 -05:00
2023-05-10 01:34:55 -05:00
; `--save`
save = {SAVE}
2023-04-19 14:27:50 -05:00
2023-05-10 01:34:55 -05:00
; `--init | -i`
init = {INIT}
2023-04-19 14:27:50 -05:00
2023-05-10 01:34:55 -05:00
; `--update | -u`
update = {UPDATE}
2023-04-19 14:27:50 -05:00
2023-05-10 01:34:55 -05:00
; `--without-demo`
demo = {DEMO}
without_demo = {WITHOUT_DEMO}
2023-04-19 14:27:50 -05:00
2023-05-10 01:34:55 -05:00
; `--import-partial`
import_partial = {IMPORT_PARTIAL}
2023-04-19 14:27:50 -05:00
2023-05-10 01:34:55 -05:00
; `--pidfile`
pidfile = {PIDFILE}
2023-04-19 14:27:50 -05:00
2023-05-10 01:34:55 -05:00
; `--addons-path`
addons_path = {ADDONS_PATH}
2023-04-19 14:27:50 -05:00
2023-05-10 01:34:55 -05:00
; `--upgrade-path`
upgrade_path = {UPGRADE_PATH}
2023-04-19 14:27:50 -05:00
2023-05-10 01:34:55 -05:00
; `--load`
server_wide_modules = {SERVER_WIDE_MODULES}
2023-04-19 14:27:50 -05:00
2023-05-10 01:34:55 -05:00
; `--data-dir`
data_dir = {DATA_DIR}
2023-04-19 14:27:50 -05:00
;------;
; HTTP ;
;------;
2023-05-10 01:34:55 -05:00
; `--http-interface | --xmlrpc-interface`
http_interface = {HTTP_INTERFACE}
2023-04-19 14:27:50 -05:00
2023-05-10 01:34:55 -05:00
; `--http-port | -p | --xmlrpc-port`
http_port = {HTTP_PORT}
2023-04-19 14:27:50 -05:00
2023-05-10 01:34:55 -05:00
; `--xmlrpcs-interface`
xmlrpcs_interface = {XMLRPCS_INTERFACE}
2023-04-19 14:27:50 -05:00
2023-05-10 01:34:55 -05:00
; `--xmlrpcs-port`
xmlrpcs_port = {XMLRPCS_PORT}
2023-04-19 14:27:50 -05:00
2023-05-10 01:34:55 -05:00
; `--gevent-port | --longpolling_port` (deprecated)
gevent_port = {GEVENT_PORT}
longpolling_port = 0
2023-04-19 14:27:50 -05:00
2023-05-10 01:34:55 -05:00
; `--no-http | --no-xmlrpc`
http_enable = {HTTP_ENABLE}
; `--no-xmlrpcs`
xmlrpcs = {XMLRPCS}
; `--proxy-mode`
proxy_mode = {PROXY_MODE}
; `--x-sendfile`
x_sendfile = {X_SENDFILE}
2023-04-19 14:27:50 -05:00
;---------------;
; Testing Group ;
;---------------;
2023-05-10 01:34:55 -05:00
; `--test-file`
test_file = {TEST_FILE}
2023-04-19 14:27:50 -05:00
2023-05-10 01:34:55 -05:00
; `--test-enable`
test_enable = {TEST_ENABLE}
2023-04-19 14:27:50 -05:00
2023-05-10 01:34:55 -05:00
; `--test-tags`
test_tags = {TEST_FILE}
2023-04-19 14:27:50 -05:00
2023-05-10 01:34:55 -05:00
; `--screencasts`
screencasts = {SCREENCASTS}
2023-04-19 14:27:50 -05:00
2023-05-10 01:34:55 -05:00
; `--screenshots`
screenshots = {SCREENSHOTS}
2023-04-19 14:27:50 -05:00
;---------------;
; Logging Group ;
;---------------;
2023-05-10 01:34:55 -05:00
; `--logfile`
logfile = {LOGFILE}
2023-04-19 14:27:50 -05:00
2023-05-10 01:34:55 -05:00
; `--syslog`
syslog = {SYSLOG}
2023-04-19 14:27:50 -05:00
2023-05-10 01:34:55 -05:00
; `--log-handler | --log-web (--log-handler=odoo.http:DEBUG) | --log-sql (--log-handler=odoo.sql_db:DEBUG)`
log_handler = {LOG_HANDLER}
2023-04-19 14:27:50 -05:00
2023-05-10 01:34:55 -05:00
; `--log-db`
log_db = {LOG_DB}
2023-04-19 14:27:50 -05:00
2023-05-10 01:34:55 -05:00
; `--log-db-level`
log_db_level = {LOG_DB_LEVEL}
2023-04-19 14:27:50 -05:00
2023-05-10 01:34:55 -05:00
; `--log-level`
log_level = {LOG_LEVEL}
2023-04-19 14:27:50 -05:00
;------------;
; SMTP Group ;
;------------;
2023-05-10 01:34:55 -05:00
; `--email-from`
email_from = {EMAIL_FROM}
2023-04-19 14:27:50 -05:00
2023-05-10 01:34:55 -05:00
; `--from-filter`
from_filter = {FROM_FILTER}
2023-04-19 14:27:50 -05:00
2023-05-10 01:34:55 -05:00
; `--smtp`
smtp_server = {SMTP_SERVER}
2023-04-19 14:27:50 -05:00
2023-05-10 01:34:55 -05:00
; `--smtp-port`
smtp_port = {SMTP_PORT}
2023-04-19 14:27:50 -05:00
2023-05-10 01:34:55 -05:00
; `--smtp-ssl`
smtp_ssl = {SMTP_SSL}
2023-04-19 14:27:50 -05:00
2023-05-10 01:34:55 -05:00
; `--smtp-user`
smtp_user = {SMTP_USER}
2023-04-19 14:27:50 -05:00
2023-05-10 01:34:55 -05:00
; `--smtp-password`
smtp_password = {SMTP_PASSWORD}
2023-04-19 14:27:50 -05:00
2023-05-10 01:34:55 -05:00
; `--smtp-ssl-certificate-filename`
smtp_ssl_certificate_filename = {SMTP_SSL_CERTIFICATE_FILENAME}
2023-04-19 14:27:50 -05:00
2023-05-10 01:34:55 -05:00
; `--smtp-ssl-private-key-filename`
smtp_ssl_private_key_filename = {SMTP_SSL_PRIVATE_KEY_FILENAME}
2023-04-19 14:27:50 -05:00
;----------;
; DB Group ;
;----------;
2023-05-10 01:34:55 -05:00
; `--database | -d`
db_name = {DB_NAME}
2023-04-19 14:27:50 -05:00
2023-05-10 01:34:55 -05:00
; `--db_user | -r`
db_user = {DB_USER}
2023-04-19 14:27:50 -05:00
2023-05-10 01:34:55 -05:00
; `--db_password | -w`
db_password = {DB_PASSWORD}
2023-04-19 14:27:50 -05:00
2023-05-10 01:34:55 -05:00
; `--pg_path`
pg_path = {PG_PATH}
2023-04-19 14:27:50 -05:00
2023-05-10 01:34:55 -05:00
; `--db_host`
db_host = {DB_HOST}
2023-04-19 14:27:50 -05:00
2023-05-10 01:34:55 -05:00
; `--db_port`
db_port = {DB_PORT}
2023-04-19 14:27:50 -05:00
2023-05-10 01:34:55 -05:00
; `--db_sslmode`
db_sslmode = {DB_SSLMODE}
2023-04-19 14:27:50 -05:00
2023-05-10 01:34:55 -05:00
; `--db_maxconn`
db_maxconn = {DB_MAXCONN}
2023-04-19 14:27:50 -05:00
2023-05-10 01:34:55 -05:00
; `--db-template`
db_template = {DB_TEMPLATE}
2023-04-19 14:27:50 -05:00
;------------------------------;
; Internationalisation options ;
;------------------------------;
2023-05-10 01:34:55 -05:00
; `--load-language`
load_language = {LOAD_LANGUAGE}
2023-04-19 14:27:50 -05:00
2023-05-10 01:34:55 -05:00
; `--language`
language = {LANGUAGE}
2023-04-19 14:27:50 -05:00
2023-05-10 01:34:55 -05:00
; `--i18n-export`
translate_out = {TRANSLATE_OUT}
2023-04-19 14:27:50 -05:00
2023-05-10 01:34:55 -05:00
; `--i18n-import`
translate_in = {TRANSLATE_IN}
2023-04-19 14:27:50 -05:00
2023-05-10 01:34:55 -05:00
; `--i18n-overwrite`
overwrite_existing_translations = {OVERWRITE_EXISTING_TRANSLATIONS}
2023-04-19 14:27:50 -05:00
2023-05-10 01:34:55 -05:00
; `--modules `
translate_modules = {TRANSLATE_MODULES}
2023-04-19 14:27:50 -05:00
;----------;
; Security ;
;----------;
2023-05-10 01:34:55 -05:00
; `--no-database-list`
list_db = {LIST_DB}
2023-04-19 14:27:50 -05:00
;-----;
; WEB ;
;-----;
2023-05-10 01:34:55 -05:00
; `--db-filter`
dbfilter = {DBFILTER}
2023-04-19 14:27:50 -05:00
;------------------;
; Advanced options ;
;------------------;
2023-05-10 01:34:55 -05:00
; `--dev`
dev_mode = {DEV_MODE}
;
debug_mode = {DEV_MODE}
2023-04-19 14:27:50 -05:00
2023-05-10 01:34:55 -05:00
; `--shell-interface`
shell_interface = {SHELL_INTERFACE}
2023-04-19 14:27:50 -05:00
2023-05-10 01:34:55 -05:00
; `--stop-after-init`
stop_after_init = {STOP_AFTER_INIT}
2023-04-19 14:27:50 -05:00
2023-05-10 01:34:55 -05:00
; `--osv-memory-count-limit`
osv_memory_count_limit = {OSV_MEMORY_COUNT_LIMIT}
2023-04-19 14:27:50 -05:00
2023-05-10 01:34:55 -05:00
; `--transient-age-limit | --osv-memory-age-limit` (deprecated)
transient_age_limit = {TRANSIENT_AGE_LIMIT}
2023-04-19 14:27:50 -05:00
2023-05-10 01:34:55 -05:00
; `--max-cron-threads`
max_cron_threads = {MAX_CRON_THREADS}
2023-04-19 14:27:50 -05:00
2023-05-10 01:34:55 -05:00
; `--unaccent`
unaccent = {UNACCENT}
2023-04-19 14:27:50 -05:00
2023-05-10 01:34:55 -05:00
; `--geoip-db`
geoip_database = {GEOIP_DATABASE}
2023-04-19 14:27:50 -05:00
2023-05-10 01:34:55 -05:00
; `--workers`
workers = {WORKERS}
2023-04-19 14:27:50 -05:00
2023-05-10 01:34:55 -05:00
; `--limit-memory-soft`
limit_memory_soft = {LIMIT_MEMORY_SOFT}
2023-04-19 14:27:50 -05:00
2023-05-10 01:34:55 -05:00
; `--limit-memory-hard`
limit_memory_hard = {LIMIT_MEMORY_HARD}
2023-04-19 14:27:50 -05:00
2023-05-10 01:34:55 -05:00
; `--limit-time-cpu`
limit_time_cpu = {LIMIT_TIME_CPU}
2023-04-19 14:27:50 -05:00
2023-05-10 01:34:55 -05:00
; `--limit-time-real`
limit_time_real = {LIMIT_TIME_REAL}
2023-04-19 14:27:50 -05:00
2023-05-10 01:34:55 -05:00
; `--limit-time-real-cron`
limit_time_real_cron = {LIMIT_TIME_REAL_CRON}
2023-04-19 14:27:50 -05:00
2023-05-10 01:34:55 -05:00
; `--limit-request`
limit_request = {LIMIT_REQUEST}
2023-04-19 14:27:50 -05:00
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}