diff --git a/asterisk/var/lib/asterisk/moh/.gitattributes b/asterisk/var/lib/asterisk/moh/.gitattributes new file mode 100644 index 000000000..5bce15bb0 --- /dev/null +++ b/asterisk/var/lib/asterisk/moh/.gitattributes @@ -0,0 +1,4 @@ +macroform-cold_day.wav filter=lfs diff=lfs merge=lfs -text +macroform-robot_dity.wav filter=lfs diff=lfs merge=lfs -text +macroform-the_simplicity.wav filter=lfs diff=lfs merge=lfs -text +manolo_camp-morning_coffee.wav filter=lfs diff=lfs merge=lfs -text diff --git a/freepbx/entrypoint.sh b/freepbx/entrypoint.sh index 25556cac6..b25cb4db6 100755 --- a/freepbx/entrypoint.sh +++ b/freepbx/entrypoint.sh @@ -121,6 +121,9 @@ while (\$row = \$sth->fetch(\PDO::FETCH_ASSOC)) { EOF +# migrate database +php /initdb.d/migration.php + if [[ ! -f /etc/asterisk/extensions_additional.conf ]]; then # First install, set needreload to true php -r 'include_once "/etc/freepbx_db.conf"; $db->query("UPDATE admin SET value = \"true\" WHERE variable = \"need_reload\"");' diff --git a/freepbx/initdb.d/migration.php b/freepbx/initdb.d/migration.php new file mode 100644 index 000000000..4d67ca997 --- /dev/null +++ b/freepbx/initdb.d/migration.php @@ -0,0 +1,41 @@ +query("ALTER TABLE `asterisk`.`rest_devices_phones` ADD COLUMN `srtp` BOOLEAN DEFAULT NULL AFTER `type`"); + + + +/* Convert existing srtp extensions to be used with proxy */ + +# get all NethVoice extensions with srtp enabled +$sql = "SELECT extension + FROM `asterisk`.`rest_devices_phones` + JOIN `asterisk`.`sip` + ON `asterisk`.`rest_devices_phones`.`extension` = `asterisk`.`sip`.`id` + WHERE `type` = 'physical' + AND `srtp` IS NULL + AND `keyword`='media_encryption' + AND `data`='sdes'"; + +$stmt = $db->prepare($sql); +$stmt->execute(); +$res = $stmt->fetchAll(\PDO::FETCH_ASSOC); +$extensions = array_column($res, 'extension'); + +# set media_encryption to no in freepbx sip table +$sql = "UPDATE `asterisk`.`sip` SET `data` = 'no' WHERE `keyword` = 'media_encryption' AND `id` IN ('".str_repeat('?, ', count($extensions) - 1) . '?'."')"; +$stmt = $db->prepare($sql); +$stmt->execute($extensions); + +# set srtp to true in rest_devices_phones table +$sql = "UPDATE `asterisk`.`rest_devices_phones` SET `srtp` = 1 WHERE `extension` IN ('".str_repeat('?, ', count($extensions) - 1) . '?'."')"; +$stmt = $db->prepare($sql); +$stmt->execute($extensions); diff --git a/mariadb/docker-entrypoint-initdb.d/10_asterisk.rest_devices_phones-schema.sql b/mariadb/docker-entrypoint-initdb.d/10_asterisk.rest_devices_phones-schema.sql index 101a9423c..a84b1c2a3 100644 --- a/mariadb/docker-entrypoint-initdb.d/10_asterisk.rest_devices_phones-schema.sql +++ b/mariadb/docker-entrypoint-initdb.d/10_asterisk.rest_devices_phones-schema.sql @@ -15,6 +15,7 @@ CREATE TABLE `rest_devices_phones` ( `web_user` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `web_password` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `type` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'physical', + `srtp` boolean DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `mac` (`mac`,`line`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;