Skip to content

Commit

Permalink
Fix backup (#175)
Browse files Browse the repository at this point in the history
  • Loading branch information
Stell0 authored Apr 18, 2024
1 parent 2cc5826 commit 7683c6a
Show file tree
Hide file tree
Showing 7 changed files with 95 additions and 65 deletions.
3 changes: 2 additions & 1 deletion freepbx/Containerfile
Original file line number Diff line number Diff line change
Expand Up @@ -197,7 +197,8 @@ RUN groupadd -g 991 -r asterisk && \
libneon27 \
libspandsp2 \
libsnmp40 \
libical3
libical3 \
sqlite3


# Copy Asterisk files
Expand Down
4 changes: 2 additions & 2 deletions imageroot/actions/configure-module/validate-input.json
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@
"nethvoice_host",
"nethcti_ui_host",
"reports_international_prefix",
"nethvoice_adm_username",
"nethvoice_adm_password"
"nethvoice_adm_username",
"nethvoice_adm_password"
],
"properties": {
"nethvoice_host_local_networks": {
Expand Down
119 changes: 71 additions & 48 deletions imageroot/actions/restore-module/20copyenv
Original file line number Diff line number Diff line change
Expand Up @@ -16,76 +16,99 @@ old_envs = request['environment']

# list of variables to restore
restore_envs = [
'MARIADB_ROOT_PASSWORD',
'AMPDBUSER',
'AMPASTERISKWEBGROUP',
'AMPASTERISKWEBUSER',
'AMPDBENGINE',
'AMPDBHOST',
'AMPDBNAME',
'AMPDBENGINE',
'AMPDBPASS',
'AMPMGRUSER',
'AMPDBUSER',
'AMPMGRPASS',
'APACHE_RUN_USER',
'AMPMGRUSER',
'APACHE_RUN_GROUP',
'AMPASTERISKWEBGROUP',
'AMPASTERISKWEBUSER',
'NETHCTI_AMI_PASSWORD',
'APACHE_RUN_USER',
'BRAND_APPID',
'BRAND_DOCS',
'BRAND_NAME',
'BRAND_SITE',
'BRAND_DOCS',
'CDRDBHOST',
'CDRDBNAME',
'CDRDBUSER',
'CDRDBPASS',
'CDRDBUSER',
'CONFERENCE_JITSI_URL',
'FLEXISIP_LOG_LEVEL',
'ICEIGNORE',
'JANUS_ADMIN_SECRET',
'JANUS_DEBUG_LEVEL',
'JANUS_RTPEND',
'JANUS_RTPSTART',
'MARIADB_ROOT_PASSWORD',
'NETHCTI_ALERTS',
'NETHCTI_AMI_PASSWORD',
'NETHCTI_AUTHENTICATION_ENABLED',
'NETHCTI_AUTOC2C',
'NETHCTI_CDR_SCRIPT',
'NETHCTI_CDR_SCRIPT_CALL_IN',
'NETHCTI_CDR_SCRIPT_TIMEOUT',
'NETHCTI_DB_HOST',
'NETHCTI_DB_USER',
'NETHCTI_DB_PASSWORD',
'TANCREDI_STATIC_TOKEN',
'NETHCTI_DB_USER',
'NETHCTI_JABBER_DOMAIN',
'NETHCTI_JABBER_URL',
'NETHCTI_LOG_LEVEL',
'NETHCTI_PREFIX',
'NETHCTI_TRUNKS_EVENTS',
'NETHCTI_UI_COMPANY_NAME',
'NETHCTI_UI_COMPANY_URL',
'NETHCTI_UI_HOST',
'NETHCTI_UI_PRODUCT_NAME',
'NETHCTI_UNAUTHE_CALL',
'NETHCTI_UNAUTHE_CALL_IP',
'NETHVOICE_HOST',
'NETHVOICE_HOST_LOCAL_NETWORKS',
'NETHVOICE_LDAP_BASE',
'NETHVOICE_LDAP_HOST',
'NETHVOICE_LDAP_PASS',
'NETHVOICE_LDAP_SCHEMA',
'NETHVOICE_LDAP_USER',
'NETHVOICE_PROXY_FQDN',
'NETHVOICE_USER_PORTAL_USERNAME',
'NETHVOICE_USER_PORTAL_USERNAME',
'NETHVOICESECRETKEY',
'JANUS_ADMIN_SECRET',
'JANUS_DEBUG_LEVEL',
'STUNSERVER',
'STUNPORT',
'ICEIGNORE',
'LOCAL_IP',
'TRAEFIK_HTTP2HTTPS',
'PHONEBOOK_DB_HOST',
'PHONEBOOK_DB_NAME',
'PHONEBOOK_DB_USER',
'PHONEBOOK_DB_PASS',
'PHONEBOOK_DB_USER',
'PHONEBOOK_LDAP_USER',
'PHONEBOOK_LDAP_PASS',
'PHONEBOOK_LDAP_LIMIT',
'REPORTS_PASSWORD',
'PHONEBOOK_LDAP_PASS',
'PHONEBOOK_LDAP_USER',
'PREV_NETHVOICE_CTI_SERVER_IMAGE',
'PREV_NETHVOICE_CTI_UI_IMAGE',
'PREV_NETHVOICE_FLEXISIP_IMAGE',
'PREV_NETHVOICE_FREEPBX_IMAGE',
'PREV_NETHVOICE_JANUS_IMAGE',
'PREV_NETHVOICE_MARIADB_IMAGE',
'PREV_NETHVOICE_PHONEBOOK_IMAGE',
'PREV_NETHVOICE_REPORTS_API_IMAGE',
'PREV_NETHVOICE_REPORTS_UI_IMAGE',
'PREV_NETHVOICE_TANCREDI_IMAGE',
'REPORTS_API_KEY',
'REPORTS_INTERNATIONAL_PREFIX',
'REPORTS_PASSWORD',
'REPORTS_SECRET',
'NETHVOICE_HOST_LOCAL_NETWORKS',
'SUBSCRIPTION_SYSTEMID',
'SUBSCRIPTION_SECRET',
'NETHCTI_PREFIX',
'NETHCTI_AUTOC2C',
'NETHCTI_TRUNKS_EVENTS',
'NETHCTI_ALERTS',
'NETHCTI_AUTHENTICATION_ENABLED',
'NETHCTI_UNAUTHE_CALL',
'NETHCTI_UNAUTHE_CALL_IP',
'NETHCTI_JABBER_URL',
'NETHCTI_JABBER_DOMAIN',
'NETHCTI_CDR_SCRIPT',
'NETHCTI_CDR_SCRIPT_TIMEOUT',
'NETHCTI_CDR_SCRIPT_CALL_IN',
'NETHCTI_LOG_LEVEL',
'CONFERENCE_JITSI_URL',
'BRAND_APPID',
'FLEXISIP_LOG_LEVEL',
'NETHCTI_UI_PRODUCT_NAME',
'NETHCTI_UI_COMPANY_NAME',
'NETHCTI_UI_COMPANY_URL',
'USER_DOMAIN',
'REPORTS_UI_APP_NAME',
'REPORTS_UI_HELP_URL',
'REPORTS_UI_COMPANY_NAME',
'REPORTS_UI_HELP_URL',
'STUNSERVER',
'SUBSCRIPTION_SECRET',
'SUBSCRIPTION_SYSTEMID',
'TANCREDI_STATIC_TOKEN',
'TIMEZONE',
'TRAEFIK_HTTP2HTTPS',
'TRAEFIK_LETS_ENCRYPT',
'USER_DOMAIN',
]

for env in restore_envs:
agent.set_env(env, old_envs[env])
if env in old_envs:
agent.set_env(env, old_envs[env])
4 changes: 4 additions & 0 deletions imageroot/actions/restore-module/70configure_module
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,10 @@ response = agent.tasks.run(agent_id=os.environ['AGENT_ID'], action='configure-mo
"nethcti_ui_host": old_envs["NETHCTI_UI_HOST"],
"lets_encrypt": old_envs["TRAEFIK_LETS_ENCRYPT"] == 'true',
"reports_international_prefix": old_envs["REPORTS_INTERNATIONAL_PREFIX"],
"timezone": old_envs["TIMEZONE"],
"user_domain": old_envs["USER_DOMAIN"],
"nethvoice_adm_username": old_envs["NETHVOICE_USER_PORTAL_USERNAME"],
"nethvoice_adm_password": old_envs["NETHVOICE_USER_PORTAL_PASSWORD"],
})

agent.assert_exp(response['exit_code'] == 0)
3 changes: 1 addition & 2 deletions imageroot/actions/restore-module/71reload_services
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,4 @@

set -e

podman exec freepbx fwconsole r
systemctl --user restart nethcti-server
systemctl --user restart freepbx nethcti-server
15 changes: 8 additions & 7 deletions imageroot/bin/module-dump-state
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ set -e
# clean container files on exit
cleanup () {
podman exec mariadb rm -rf /tmp/db_backup
podman exec asterisk rm -f /var/lib/asterisk/db/astdb.sqlite3.dump
podman exec freepbx rm -f /var/lib/asterisk/db/astdb.sqlite3.dump
}

trap cleanup EXIT
Expand All @@ -36,20 +36,21 @@ podman cp mariadb:/tmp/db_backup db_backup
# /var/spool/asterisk/monitor

# dump asterisk sqlite db
podman exec asterisk backup_astdb
podman exec freepbx backup_astdb
# copy sqlite db to local filesystem
mkdir -p asterisk_backup/var/lib/asterisk/db
podman cp asterisk:/var/lib/asterisk/db/astdb.sqlite3.dump asterisk_backup/var/lib/asterisk/db/astdb.sqlite3.dump
podman cp freepbx:/var/lib/asterisk/db/astdb.sqlite3.dump asterisk_backup/var/lib/asterisk/db/astdb.sqlite3.dump

# copy only custom sounds
sounds_dirs=$(podman exec asterisk find /var/lib/asterisk/sounds -type d -name custom)
sounds_dirs=$(podman exec freepbx find /var/lib/asterisk/sounds -type d -name custom)
for dir in $sounds_dirs; do
mkdir -p "asterisk_backup$dir"
podman cp "asterisk:$dir/." "asterisk_backup$dir"
podman cp "freepbx:$dir/." "asterisk_backup$dir"
done

# copy nethcti sounds
if podman exec asterisk ls -alh /var/lib/asterisk/sounds/nethcti >/dev/null 2>&1; then
if podman exec freepbx ls -alh /var/lib/asterisk/sounds/nethcti >/dev/null 2>&1; then
mkdir -p asterisk_backup/var/lib/asterisk/sounds/nethcti
podman cp asterisk:/var/lib/asterisk/sounds/nethcti/. asterisk_backup/var/lib/asterisk/sounds/nethcti
podman cp freepbx:/var/lib/asterisk/sounds/nethcti/. asterisk_backup/var/lib/asterisk/sounds/nethcti
fi

12 changes: 7 additions & 5 deletions imageroot/etc/state-include.conf
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
state/asterisk_backup
state/db_backup
volumes/agi-bin
volumes/asterisk
volumes/moh
volumes/lookup.d
volumes/spool
state/asterisk_backup
volumes/tancredi
volumes/moh
volumes/pbooksources
volumes/scripts
volumes/post_scripts
volumes/reports_config
volumes/scripts
volumes/spool
volumes/tancred

0 comments on commit 7683c6a

Please sign in to comment.