Merge pull request #185 from outis1one/claude/asterisk-digital-ocean-w22kk8

Claude/asterisk digital ocean w22kk8
This commit is contained in:
Outis
2026-07-20 13:27:28 -04:00
committed by GitHub
2 changed files with 25 additions and 7 deletions
+11 -7
View File
@@ -479,15 +479,19 @@ for i in $(seq 1 60); do
sleep 1
done
# Verify PJSIP transports are listening
# Verify PJSIP transports are listening. res_pjsip finishes binding its
# transports a beat after "core show version" first responds, so a single
# immediate check can catch it mid-startup and misreport TLS as down even
# though it comes up a second later — poll for a few seconds before giving up.
tls_ok=false
udp_ok=false
if asterisk -rx "pjsip show transports" 2>/dev/null | grep -q "transport-tls"; then
tls_ok=true
fi
if asterisk -rx "pjsip show transports" 2>/dev/null | grep -q "transport-udp"; then
udp_ok=true
fi
for i in $(seq 1 10); do
transports_output=$(asterisk -rx "pjsip show transports" 2>/dev/null)
echo "$transports_output" | grep -q "transport-tls" && tls_ok=true
echo "$transports_output" | grep -q "transport-udp" && udp_ok=true
$tls_ok && $udp_ok && break
sleep 1
done
# Check if port 5061 is actually bound
tls_listen=""
+14
View File
@@ -4340,6 +4340,7 @@ def delete_device(extension):
with open(PJSIP_CONF, 'w') as f:
f.writelines(new_lines)
subprocess.run(['asterisk', '-rx', 'pjsip reload'], capture_output=True)
subprocess.run(['/usr/local/bin/easy-asterisk', '--rebuild-dialplan'], capture_output=True)
return True, "Device deleted"
return False, "Device not found"
@@ -4413,6 +4414,7 @@ def rename_device(extension, new_name):
with open(PJSIP_CONF, 'w') as f:
f.writelines(new_lines)
subprocess.run(['asterisk', '-rx', 'pjsip reload'], capture_output=True)
subprocess.run(['/usr/local/bin/easy-asterisk', '--rebuild-dialplan'], capture_output=True)
return True, "Device renamed"
return False, "Device not found"
@@ -4525,6 +4527,7 @@ def change_device_category(extension, new_category):
with open(PJSIP_CONF, 'w') as f:
f.writelines(new_lines)
subprocess.run(['asterisk', '-rx', 'pjsip reload'], capture_output=True)
subprocess.run(['/usr/local/bin/easy-asterisk', '--rebuild-dialplan'], capture_output=True)
return True, "Category changed"
return False, "Device not found"
@@ -4774,6 +4777,7 @@ qualify_frequency=30
subprocess.run(['asterisk', '-rx', 'pjsip reload'], capture_output=True)
subprocess.run(['chown', 'asterisk:asterisk', PJSIP_CONF], capture_output=True)
subprocess.run(['/usr/local/bin/easy-asterisk', '--rebuild-dialplan'], capture_output=True)
return True, {'extension': extension, 'password': password, 'name': name}
@@ -6926,4 +6930,14 @@ main() {
show_main_menu
}
# Non-interactive entry point used by the web admin (Python) after any
# device/room change — regenerates extensions.conf's [intercom] context
# and reloads it. Without this, PJSIP endpoints register fine but calls
# between them fail with "extension not found" since nothing else ever
# rebuilds the dialplan after the initial container boot.
if [[ "${1:-}" == "--rebuild-dialplan" ]]; then
rebuild_dialplan quiet
exit 0
fi
main "$@"