Commit Graph

33763 Commits

Author SHA1 Message Date
Sean Bright
a2d50679dd alembic: Update list of TLS methods available on ps_transports.
Related to #221 and #222.

Also adds `*.ini` to the `.gitignore` file in ast-db-manage for
convenience.

(cherry picked from commit b16d4a3420)
2024-01-12 18:21:33 +00:00
Naveen Albert
2be4ffa5e9 func_channel: Expose previously unsettable options.
Certain channel options are not set anywhere or
exposed in any way to users, making them unusable.
This exposes some of these options which make sense
for users to manipulate at runtime.

Resolves: #442
(cherry picked from commit 147f014072)
2024-01-12 18:21:33 +00:00
Sean Bright
a8015816b1 app.c: Allow ampersands in playback lists to be escaped.
Any function or application that accepts a `&`-separated list of
filenames can now include a literal `&` in a filename by wrapping the
entire filename in single quotes, e.g.:

```
exten = _X.,n,Playback('https://example.com/sound.cgi?a=b&c=d'&hello-world)
```

Fixes #172

UpgradeNote: Ampersands in URLs passed to the `Playback()`,
`Background()`, `SpeechBackground()`, `Read()`, `Authenticate()`, or
`Queue()` applications as filename arguments can now be escaped by
single quoting the filename. Additionally, this is also possible when
using the `CONFBRIDGE` dialplan function, or configuring various
features in `confbridge.conf` and `queues.conf`.

(cherry picked from commit 6b4d7f2125)
2024-01-12 18:21:33 +00:00
Sean Bright
3344b19dac uri.c: Simplify ast_uri_make_host_with_port()
(cherry picked from commit c25271f2ae)
2024-01-12 18:21:33 +00:00
Sean Bright
56710cd1b1 func_curl.c: Remove CURLOPT() plaintext documentation.
I assume this was missed when initially converting to XML
documentation and we've been kicking the can down the road since.

(cherry picked from commit b91f97577d)
2024-01-12 18:21:33 +00:00
Sean Bright
fbecf18b05 res_http_websocket.c: Set hostname on client for certificate validation.
Additionally add a `assert()` to in the TLS client setup code to
ensure that hostname is set when it is supposed to be.

Fixes #433

(cherry picked from commit 992ea86981)
2024-01-12 18:21:32 +00:00
Sean Bright
00498f4f67 live_ast: Add astcachedir to generated asterisk.conf.
`astcachedir` (added in b0842713) was not added to `live_ast` so
continued to point to the system `/var/cache` directory instead of the
one in the live environment.

(cherry picked from commit 04fd8704e1)
2024-01-12 18:21:32 +00:00
George Joseph
2359af9ea3 SECURITY.md: Update with correct documentation URL
(cherry picked from commit 08cadf999e)
2024-01-12 18:21:32 +00:00
Naveen Albert
28028a372f func_lock: Add missing see-also refs to documentation.
Resolves: #423
(cherry picked from commit 44b0590e59)
2024-01-12 18:21:32 +00:00
Matthew Fredrickson
d8434ca398 app_followme.c: Grab reference on nativeformats before using it
Fixes a crash due to a lack of proper reference on the nativeformats
object before passing it into ast_request().  Also found potentially
similar use case bugs in app_chanisavail.c, bridge.c, and bridge_basic.c

Fixes: #388
(cherry picked from commit eeae61b2f8)
2024-01-12 18:21:32 +00:00
Naveen Albert
1701775d07 configs: Improve documentation for bandwidth in iax.conf.
This improves the documentation for the bandwidth setting
in iax.conf by making it clearer what the ramifications
of this setting are. It also changes the sample default
from low to high, since only high is compatible with good
codecs that people will want to use in the vast majority
of cases, and this is a common gotcha that trips up new users.

Resolves: #425
(cherry picked from commit 1f66a9fc28)
2024-01-12 18:21:32 +00:00
Naveen Albert
aa43343687 logger: Add channel-based filtering.
This adds the ability to filter console
logging by channel or groups of channels.
This can be useful on busy systems where
an administrator would like to analyze certain
calls in detail. A dialplan function is also
included for the purpose of assigning a channel
to a group (e.g. by tenant, or some other metric).

ASTERISK-30483 #close

Resolves: #242

UserNote: The console log can now be filtered by
channels or groups of channels, using the
logger filter CLI commands.

(cherry picked from commit 318710cf6e)
2024-01-12 18:21:32 +00:00
Sean Bright
152f5bdd2e chan_iax2.c: Don't send unsanitized data to the logger.
This resolves an issue where non-printable characters could be sent to
the console/log files.

(cherry picked from commit 7b297cb90d)
2024-01-12 18:21:32 +00:00
George Joseph
acf0b399cb codec_ilbc: Disable system ilbc if version >= 3.0.0
Fedora 37 started shipping ilbc 3.0.4 which we don't yet support.
configure.ac now checks the system for "libilbc < 3" instead of
just "libilbc".  If true, the system version of ilbc will be used.
If not, the version included at codecs/ilbc will be used.

Resolves: #84
(cherry picked from commit bee37b7404)
2024-01-12 18:21:32 +00:00
Sean Bright
f4b2a34cf6 resource_channels.c: Explicit codec request when creating UnicastRTP.
Fixes #394

(cherry picked from commit 59e296df01)
2024-01-12 18:21:32 +00:00
Sean Bright
42cd03012a doc: Update IP Quality of Service links.
Fixes #328

(cherry picked from commit 092bd618fb)
2024-01-12 18:21:32 +00:00
George Joseph
d8f1be3b81 chan_pjsip: Add PJSIPHangup dialplan app and manager action
See UserNote below.

Exposed the existing Hangup AMI action in manager.c so we can use
all of it's channel search and AMI protocol handling without
duplicating that code in dialplan_functions.c.

Added a lookup function to res_pjsip.c that takes in the
string represenation of the pjsip_status_code enum and returns
the actual status code.  I.E.  ast_sip_str2rc("DECLINE") returns
603.  This allows the caller to specify PJSIPHangup(decline) in
the dialplan, just like Hangup(call_rejected).

Also extracted the XML documentation to its own file since it was
almost as large as the code itself.

UserNote: A new dialplan app PJSIPHangup and AMI action allows you
to hang up an unanswered incoming PJSIP call with a specific SIP
response code in the 400 -> 699 range.

(cherry picked from commit 9a93ce0409)
2024-01-12 18:21:32 +00:00
Sean Bright
311ae80860 chan_iax2.c: Ensure all IEs are displayed when dumping frame contents.
When IAX2 debugging was enabled (`iax2 set debug on`), if the last IE
in a frame was one that may not have any data - such as the CALLTOKEN
IE in an NEW request - it was not getting displayed.

(cherry picked from commit 744bd4f9ac)
2024-01-12 18:21:32 +00:00
Naveen Albert
161ec4eab6 chan_dahdi: Warn if nonexistent cadence is requested.
If attempting to ring a channel using a nonexistent cadence,
emit a warning, before falling back to the default cadence.

Resolves: #409
(cherry picked from commit beb9689288)
2024-01-12 18:21:32 +00:00
Holger Hans Peter Freyther
ca92b2a2f7 stasis: Update the snapshot after setting the redirect
The previous commit added the caller_rdnis attribute. Make it
avialble during a possible ChanngelHangupRequest.

(cherry picked from commit ad46f59ca8)
2024-01-12 18:21:32 +00:00
Holger Hans Peter Freyther
97042e0a3a ari: Provide the caller ID RDNIS for the channels
Provide the caller ID RDNIS when available. This will allow an
application to follow the redirect.

(cherry picked from commit 3c9e7ad4ba)
2024-01-12 18:21:32 +00:00
Brad Smith
79bab53afd main/utils: Implement ast_get_tid() for OpenBSD
Implement the ast_get_tid() function for OpenBSD. OpenBSD supports
getting the TID via getthrid().

(cherry picked from commit d1f8978d91)
2024-01-12 18:21:32 +00:00
Brad Smith
29934d21eb res_rtp_asterisk.c: Fix runtime issue with LibreSSL
The module will fail to load. Use proper function DTLS_method() with LibreSSL.

(cherry picked from commit 9c70df1bb7)
2024-01-12 18:21:32 +00:00
Naveen Albert
1f200b936d app_directory: Add ADSI support to Directory.
This adds optional ADSI support to the Directory
application, which allows callers with ADSI CPE
to navigate the Directory system significantly
faster than is possible using the audio prompts.
Callers can see the directory name (and optionally
extension) on their screenphone and confirm or
reject a match immediately rather than waiting
for it to be spelled out, enhancing usability.

Resolves: #356
(cherry picked from commit 72c6e95ed1)
2024-01-12 18:21:32 +00:00
Naveen Albert
b5ed05ebf1 core_local: Fix local channel parsing with slashes.
Currently, trying to call a Local channel with a slash
in the extension will fail due to the parsing of characters
after such a slash as being dial modifiers. Additionally,
core_local is inconsistent and incomplete with
its parsing of Local dial strings in that sometimes it
uses the first slash and at other times it uses the last.

For instance, something like DAHDI/5 or PJSIP/device
is a perfectly usable extension in the dialplan, but Local
channels in particular prevent these from being called.

This creates inconsistent behavior for users, since using
a slash in an extension is perfectly acceptable, and using
a Goto to accomplish this works fine, but if specified
through a Local channel, the parsing prevents this.

This fixes this by explicitly parsing options from the
last slash in the extension, rather than the first one,
which doesn't cause an issue for extensions with slashes.

ASTERISK-30013 #close

Resolves: #248
(cherry picked from commit 63c5b119f4)
2024-01-12 18:21:32 +00:00
Mark Murawski
c85e1d3243 Remove files that are no longer updated
Fixes: #360
(cherry picked from commit f32a1fa64e)
2024-01-12 18:21:32 +00:00
Naveen Albert
af91eb9ea0 app_voicemail: Add AMI event for mailbox PIN changes.
This adds an AMI event that is emitted whenever a
mailbox password is successfully changed, allowing
AMI consumers to process these.

UserNote: The VoicemailPasswordChange event is
now emitted whenever a mailbox password is updated,
containing the mailbox information and the new
password.

Resolves: #398
(cherry picked from commit 70435a886c)
2024-01-12 18:21:32 +00:00
Sean Bright
9c1eaa01e0 app_queue.c: Emit unpause reason with PauseQueueMember event.
Fixes #395

(cherry picked from commit 6c3ad4ceaf)
2024-01-12 18:21:32 +00:00
George Joseph
5dcd79ceb0 bridge_simple: Suppress unchanged topology change requests
In simple_bridge_join, we were sending topology change requests
even when the new and old topologies were the same.  In some
circumstances, this can cause unnecessary re-invites and even
a re-invite flood.  We now suppress those.

Resolves: #384
(cherry picked from commit 11a586b65e)
2024-01-12 18:21:32 +00:00
Naveen Albert
d1c62f7fa0 res_pjsip: Include cipher limit in config error message.
If too many ciphers are specified in the PJSIP config,
include the maximum number of ciphers that may be
specified in the user-facing error message.

Resolves: #396
(cherry picked from commit 8397077e75)
2024-01-12 18:21:32 +00:00
Mike Bradeen
8f0fa854c5 res_speech: allow speech to translate input channel
* Allow res_speech to translate the input channel if the
  format is translatable to a format suppored by the
  speech provider.

Resolves: #129

UserNote: res_speech now supports translation of an input channel
to a format supported by the speech provider, provided a translation
path is available between the source format and provider capabilites.

(cherry picked from commit 6aa80d1bb8)
2024-01-12 18:21:32 +00:00
Sean Bright
5a30ec962c res_rtp_asterisk.c: Fix memory leak in ephemeral certificate creation.
Fixes #386

(cherry picked from commit 2aa6a63188)
2024-01-12 18:21:32 +00:00
Sean Bright
3fbd753b01 res_pjsip_dtmf_info.c: Add 'INFO' to Allow header.
Fixes #376

(cherry picked from commit 47578d385a)
2024-01-12 18:21:32 +00:00
George Joseph
481ffa1438 api.wiki.mustache: Fix indentation in generated markdown
The '*' list indicator for default values and allowable values for
path, query and POST parameters need to be indented 4 spaces
instead of 2.

Should resolve issue 38 in the documentation repo.

(cherry picked from commit 848628b795)
2024-01-12 18:21:32 +00:00
Sean Bright
ad64862b4b pjsip_configuration.c: Disable DTLS renegotiation if WebRTC is enabled.
Per RFC8827:

    Implementations MUST NOT implement DTLS renegotiation and MUST
    reject it with a "no_renegotiation" alert if offered.

So we disable it when webrtc=yes is set.

Fixes #378

UpgradeNote: The dtls_rekey will be disabled if webrtc support is
requested on an endpoint. A warning will also be emitted.

(cherry picked from commit 0f06787469)
2024-01-12 18:21:32 +00:00
Samuel Olaechea
8ade68ee1d configs: Fix typo in pjsip.conf.sample.
(cherry picked from commit 12017263c8)
2024-01-12 18:21:32 +00:00
George Joseph
aadd293163 res_pjsip_exten_state,res_pjsip_mwi: Allow unload on shutdown
Commit f66f77f last year prevents the res_pjsip_exten_state and
res_pjsip_mwi modules from unloading due to possible pjproject
asserts if the modules are reloaded. A side effect of the
implementation is that the taskprocessors these modules use aren't
being released. When asterisk is doing a graceful shutdown, it
waits AST_TASKPROCESSOR_SHUTDOWN_MAX_WAIT seconds for all
taskprocessors to stop but since those 2 modules don't release
theirs, the shutdown hangs for that amount of time.

This change allows the modules to be unloaded and their resources to
be released when ast_shutdown_final is true.

Resolves: #379
(cherry picked from commit 3e4024ee20)
2024-01-12 18:21:32 +00:00
sungtae kim
eeea910890 res_pjsip: Expanding PJSIP endpoint ID and relevant resource length to 255 characters
This commit introduces an extension to the endpoint and relevant
resource sizes for PJSIP, transitioning from its current 40-character
constraint to a more versatile 255-character capacity. This enhancement
significantly overcomes limitations related to domain qualification and
practical usage, ultimately delivering improved functionality. In
addition, it includes adjustments to accommodate the expanded realm size
within the ARI, specifically enhancing the maximum realm length.

Resolves: #345

UserNote: With this update, the PJSIP realm lengths have been extended
to support up to 255 characters.

UpgradeNote: As part of this update, the maximum allowable length
for PJSIP endpoints and relevant resources has been increased from
40 to 255 characters. To take advantage of this enhancement, it is
recommended to run the necessary procedures (e.g., Alembic) to
update your schemas.

(cherry picked from commit 96420f3d48)
2024-01-12 18:21:32 +00:00
George Joseph
a4433f494d .github: PRSubmitActions: Fix adding reviewers to PR
(cherry picked from commit 7524ef6b20)
2024-01-12 18:21:32 +00:00
George Joseph
ef7aa74db9 .github: New PR Submit workflows
The workflows that get triggered when PRs are submitted or updated
have been replaced with ones that are more secure and have
a higher level of parallelism.

(cherry picked from commit 0eda94525b)
2024-01-12 18:21:32 +00:00
George Joseph
105cd515c8 .github: New PR Submit workflows
The workflows that get triggered when PRs are submitted or updated
have been replaced with ones that are more secure and have
a higher level of parallelism.

(cherry picked from commit de391bd8ab)
2024-01-12 18:21:32 +00:00
Mike Bradeen
8d59fba282 res_stasis: signal when new command is queued
res_statsis's app loop sleeps for up to .2s waiting on input
to a channel before re-checking the command queue. This can
cause delays between channel setup and bridge.

This change is to send a SIGURG on the sleeping thread when
a new command is enqueued. This exits the sleeping thread out
of the ast_waitfor() call triggering the new command being
processed on the channel immediately.

Resolves: #362

UserNote: Call setup times should be significantly improved
when using ARI.

(cherry picked from commit 27283a9209)
2024-01-12 18:21:32 +00:00
Holger Hans Peter Freyther
02999fdfed ari/stasis: Indicate progress before playback on a bridge
Make it possible to start a playback and the calling party
to receive audio on a bridge before the call is connected.

Model the implementation after play_on_channel and deliver a
AST_CONTROL_PROGRESS before starting the playback.

For a PJSIP channel this will result in sending a SIP 183
Session Progress.

(cherry picked from commit 1ff540c75f)
2024-01-12 18:21:32 +00:00
Sean Bright
31c5d08622 func_curl.c: Ensure channel is locked when manipulating datastores.
(cherry picked from commit 028ebdcc10)
2024-01-12 18:21:32 +00:00
George Joseph
5c89d67627 .github: Fix job prereqs in PROpenedUpdated
(cherry picked from commit 9e44d0e2d2)
2024-01-12 18:21:32 +00:00
George Joseph
a7077df6ee .github: Block PR tests until approved
(cherry picked from commit 3b244926d6)
2024-01-12 18:21:32 +00:00
George Joseph
5769b2f218 logger.h: Add ability to change the prefix on SCOPE_TRACE output
You can now define the _TRACE_PREFIX_ macro to change the
default trace line prefix of "file:line function" to
something else.  Full documentation in logger.h.

(cherry picked from commit f74c84e978)
2024-01-12 18:21:32 +00:00
George Joseph
8e200f5528 Add libjwt to third-party
The current STIR/SHAKEN implementation is not currently usable due
to encryption issues. Rather than trying to futz with OpenSSL and
the the current code, we can take advantage of the existing
capabilities of libjwt but we first need to add it to the
third-party infrastructure already in place for jansson and
pjproject.

A few tweaks were also made to the third-party infrastructure as
a whole.  The jansson "dest" install directory was renamed "dist"
to better match convention, and the third-party Makefile was updated
to clean all product directories not just the ones currently in
use.

Resolves: #349
(cherry picked from commit 761b143db3)
2024-01-12 18:21:32 +00:00
Mike Bradeen
2856a8e305 res_pjsip: update qualify_timeout documentation with DNS note
The documentation on qualify_timeout does not explicitly state that the timeout
includes any time required to perform any needed DNS queries on the endpoint.

If the OPTIONS response is delayed due to the DNS query, it can still render an
endpoint as Unreachable if the net time is enough for qualify_timeout to expire.

Resolves: #352
(cherry picked from commit 4d5b479244)
2024-01-12 18:21:32 +00:00
Naveen Albert
f83156f826 chan_dahdi: Clarify scope of callgroup/pickupgroup.
Internally, chan_dahdi only applies callgroup and
pickupgroup to FXO signalled channels, but this is
not documented anywhere. This is now documented in
the sample config, and a warning is emitted if a
user tries configuring these settings for channel
types that do not support these settings, since they
will not have any effect.

Resolves: #294
(cherry picked from commit 4f99db350a)
2024-01-12 18:21:32 +00:00