Commit Graph

24024 Commits

Author SHA1 Message Date
FusionPBX a1845123fe Fix the switch script copy from app sub directory 2026-05-27 15:22:30 -06:00
Alex a1a745dc7f Add document title to call details (#7996) 2026-05-27 18:57:21 +00:00
Alex f0ad45ee5c Format call flow summary timestamps (#7995) 2026-05-27 18:50:47 +00:00
Alex e1f6bf795e IVR Menu Edit: Add text to speech option for new greetings (#7994)
* IVR Menu Edit: Add text to speech option for new greetings

* Update app_languages.php
2026-05-26 22:18:16 +00:00
FusionPBX 4d34454d14 Fix a syntax error 2026-05-26 11:55:28 -06:00
markjcrane 72db3b914e Add a new Domain Profile featue
Used to set domain wide settings like the language, time zone, and time format in an easy way.
2026-05-26 16:55:06 +00:00
frytimo fbfc3b7099 Fix cache contact id not cleared if speed dial field is empty (#7991) 2026-05-26 14:31:39 +00:00
Gobi Yogarajah 02f634bbde Fix IPv6 SIP URI corruption in follow_me enterprise originate parsing (#7989)
Preserve IPv6 address brackets while converting enterprise originate variable blocks from [] to {}.

Previously all square brackets were globally rewritten, which corrupted valid IPv6 SIP URIs such as:

sip:user@[2001:db8::1]:5061

into invalid Sofia destinations:

sip:user@{2001:db8::1}:5061

causing HANDLE creation failures and DESTINATION_OUT_OF_ORDER errors for IPv6 endpoints.

This change keeps enterprise bridge delay/originate behavior intact while safely excluding IPv6 host literals from bracket conversion.
2026-05-25 22:05:20 +00:00
AdSecIT bd011e4cc5 Update upgrade_menu.php (#7990)
Added OS Detection for Service Upgrade and Restart Functions.
2026-05-25 16:02:44 -06:00
Antonio Fernandez 1b225840c4 Add support for custom transcription prompts in voicemail processing (#7908) 2026-05-25 14:45:02 +00:00
FusionPBX 695b7d7410 Move add_missing service call to service update section 2026-05-24 15:37:07 +00:00
frytimo 4597798904 Check table prefix on table_exists (#7974)
* Check table prefix on table_exists

* Enhance table_exists method prefix handling

Updated table_exists method to check if TABLE_PREFIX is not empty before adding it.
2026-05-22 22:43:54 +00:00
Alex 20f415fc4a Add back the searchable domain selector to other pages
Added back after some improvements.
2026-05-22 22:37:22 +00:00
Alex e0d47a962d Show global label if selected in searchable domain selector (#7985) 2026-05-22 22:05:47 +00:00
Alex b6c8e893a8 Add clear button to searchable domain selector (#7984)
* Add clear button to searchable domain selector

* Update css.php
2026-05-22 21:37:55 +00:00
FusionPBX 1f680c90de Allow sending text based email templates 2026-05-22 20:22:54 +00:00
FusionPBX af9796faf7 Fix regression on email templates show text
Didn't realize there are still valid reasons and people that like text based email. For this reason filtering out text based email type has been removed.
2026-05-22 20:10:56 +00:00
frytimo afceedd4cf Add a select list for the dialpad (#7983)
The old basic operator panel had a select list that would popup if a name was typed in the dialpad input box. This adds the select list to the new operator panel to allow the same functionality. This feature does not use the websocket connection.
2026-05-22 19:56:21 +00:00
9cb14c1ec0 d71009c908 Fix music on hold upload, delete, and file display bugs (#7981)
- Reset $stream_files between loop iterations so files from a previous
  category no longer carry over to the next when its directory is missing
- Guard scandir() return value before passing to count() to prevent
  TypeError on PHP 8+ when the directory does not exist
- Show an error message when mkdir fails during upload (e.g. read-only
  filesystem due to systemd ProtectSystem)
2026-05-21 19:59:09 +00:00
frytimo 72b426e8d5 Fix command option append to array syntax (#7982) 2026-05-21 19:56:09 +00:00
FusionPBX b2fa27e532 Fix registration to IP address requires to-host 2026-05-21 16:38:34 +00:00
FusionPBX 37e7a745be Update comments for event_guard_service 2026-05-20 19:05:38 +00:00
frytimo f5cbefe2ec Update save_var_xml function to give friendly message (#7979) 2026-05-20 16:33:53 +00:00
Alex 5282e7570c Fix searchable domain selector being used on all pages (#7980)
* Add data-domain-search attribute to domain select

* Only replace domain selectors that have data-domain-search attribute
2026-05-19 21:29:29 +00:00
teknoprep ed9ba8a21a Add Alternate Voicemail Location to voicemail box settings (#7932)
Adds a per-voicemail-box option that diverts the caller to an arbitrary
dialable destination instead of leaving a message. Useful for handing
voicemail off to an external service (e.g. Microsoft Teams, a paging
group, an answering service) while keeping the caller's original
Caller-ID intact for downstream logging.

The setting lives on the voicemail box (v_voicemails) — not on the
extension's follow-me/forwarding settings — so it only fires when a call
actually reaches voicemail.lua. It does not interact with the existing
"No Answer" forward on the call-forward page, nor with call-center,
ring-group, or FIFO no-answer handling: those mechanisms route the call
elsewhere before voicemail.lua ever runs, so the divert never triggers
on those paths in the first place.

Schema (v_voicemails, registered in app/voicemails/app_config.php so
upgrades pick it up automatically):

* alternate_voicemail_enabled       boolean
* alternate_voicemail_destination   text  (any dialable string —
                                            extension number, external
                                            number, etc.)

UI is added to the voicemail edit screen
(app/voicemails/voicemail_edit.php) directly under "Mail To", mirroring
the toggle + destination input pattern used on the call-forward page.
Sanitisation matches the existing forward_*_destination fields
([^\*0-9] stripped).

Voicemail behaviour change is in
app/switch/resources/scripts/app/voicemail/index.lua: when a caller hits
a valid voicemail box and the box has the alternate voicemail location
enabled, the script transfers the call via session:transfer(destination,
"XML", context) BEFORE the greeting plays. session:transfer preserves
channel variables so the original Caller-ID is carried into the diverted
leg.

Override semantics — when enabled, the alternate location always wins.
The voicemail menu (voicemail_action == "check") path is unaffected, so
extension owners can still log in and review their existing messages.

Group-call safety net: the divert is intentionally skipped when the leg
is part of a call-center, ring-group, or FIFO bridge (detected via the
cc_side, cc_queue, dialed_extension, ring_group_uuid, or fifo_role
channel variables). In normal use these paths shouldn't reach the
voicemail Lua at all — the queue / group manages its own no-answer
behaviour upstream — but if one does land here for any reason, we don't
want a session:transfer to yank the leg out of the queue's control and
hijack the call to the alternate destination.
2026-05-19 19:13:26 +00:00
FusionPBX 06e4eda5df Update function save_var_xml 2026-05-19 17:44:45 +00:00
Alex ad862e41f1 Trim username input before storing in session (#7977) 2026-05-15 21:06:44 +00:00
markjcrane 9b3b33b2ba Fix database create index clause 2026-05-15 20:02:27 +00:00
markjcrane 980a8d5b2d Add destinations playback option for recordings 2026-05-15 19:25:13 +00:00
markjcrane 21b55e229b Fix cache's settings object 2026-05-14 16:04:26 +00:00
markjcrane 0c57b13358 Fix key required return false if empty 2026-05-14 15:41:38 +00:00
FusionPBX a73bb34666 Fix provision write method to only write one device 2026-05-14 14:54:59 +00:00
frytimo d6f2ac28f5 Add call flows to feature codes (#7972)
* Add call flows to feature codes

* Refactor permission checks for feature codes
2026-05-13 14:37:57 +00:00
Mr. Sims 42185e804f Add Polycom CCX 500 provisioning template (#7963)
* Add Polycom CCX 500 provisioning template

Adds provisioning template for the Polycom (HP/Poly) CCX 500 desk phone
running OpenSIP UC Software 9.x.

Files:
- resources/templates/provision/polycom/ccx500/{$mac}.cfg
- resources/templates/provision/polycom/ccx500/{$mac}-directory.xml
- app/provision/resources/sql/postgresql/polycom_ccx500_codec_defaults.sql

Highlights:
- Standard FusionPBX feature-code softkeys (VMTransfer *99, Intercom *8,
  Pickup **) consistent with sibling polycom/vvx* templates
- Three Park softkeys (*5901-*5903) for one-touch blind transfer
- Codec preference variables (polycom_codec_g711a, polycom_codec_opus, etc.)
  with idempotent v_default_settings INSERTs providing sensible defaults
  (G711_A > G711_Mu > G722 preferred, others disabled until enabled by admin)
- feature.enhancedFeatureKeys.enabled=1, matching the rest of the polycom/*
  template family

Tested on 11 production CCX 500 devices running firmware 9.4.1.0508.

* Move CCX 500 codec defaults to polycom app_config.php

Per @markjcrane review: defaults should be added via the app_config.php
$apps[$x]['default_settings'] array pattern so they apply via
Advanced > Upgrade > Application Defaults, not a one-off SQL migration.

- Added 13 polycom_codec_* entries to app/polycom/app_config.php
- Removed app/provision/resources/sql/postgresql/polycom_ccx500_codec_defaults.sql
2026-05-13 14:23:05 +00:00
frytimo d4f7b30291 Fix pass by reference xml_cdr (#7970)
* Fix pass by reference xml_cdr

* Fix formatting of field_name assignment
2026-05-13 14:19:51 +00:00
frytimo f044a0cd8e Fix PHPDoc on database save return type (#7971) 2026-05-13 14:04:15 +00:00
frytimo 39c3dcfc55 Fix database maintenance function xml_cdr (#7969) 2026-05-13 14:03:42 +00:00
Alex cc0d528cff Security: Add CSRF tokens to login form (#7968)
* Security: Add anti-CSRF tokens to login form

* Update database.php

* Update email.php

* Update totp.php

* Update email.htm

* Update login.htm

* Update totp_secret.htm

* Update totp.htm

* Update username.htm
2026-05-12 20:19:40 +00:00
frytimo 7bf33e8668 Master-Branch-Fix freebsd dashboard items (#7967)
* Fix freebsd dashboard items

* Fix service total count
2026-05-12 19:15:41 +00:00
Alex 1a286a3020 Escape username before assigning to view (#7964)
* Update database.php

* Update email.php

* Update totp.php
2026-05-12 15:25:22 +00:00
FusionPBX 39ac20e7a0 Update the service file path for debian services 2026-05-12 07:36:52 +00:00
FusionPBX d18f25eb10 Fix echo statements remove indentation 2026-05-12 07:18:39 +00:00
FusionPBX 3d357340ae Output the service name only for Linux
FreeBSD adds the service name by default.
2026-05-12 07:11:29 +00:00
FusionPBX fa5ae89827 Fully detach from parent shell to prevent 'service' from blocking 2026-05-12 06:40:25 +00:00
FusionPBX ed241110ab Update the service path for FreeBSD 2026-05-12 04:57:37 +00:00
FusionPBX 061c978219 Update services for FreeBSD 2026-05-12 04:55:46 +00:00
FusionPBX 7c371cea78 Rename the Debian services files 2026-05-12 03:51:32 +00:00
FusionPBX b68f5828b0 Add FreeBSD rc.d service files 2026-05-12 03:46:26 +00:00
frytimo 59f5bca0b9 Fix active_calls crash on reload (#7959)
* Fix active_calls crash on reload
2026-05-06 18:50:18 +00:00
FusionPBX 53956f53dd Add condition for forward_user_not_registered_destination is empty
Skip this dialplan when forward_user_not_registered_destination is empty.
2026-05-06 18:23:11 +00:00