Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
A
asterisk
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Issue analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Voice
asterisk
Commits
3e8b9515
Commit
3e8b9515
authored
Jan 10, 2018
by
Joshua Colp
Committed by
Gerrit Code Review
Jan 10, 2018
Browse files
Options
Downloads
Plain Diff
Merge "res_pjsip: Add AMI action 'PJSIPShowAuths'"
parents
f2c58362
faeb9e1b
No related branches found
No related tags found
No related merge requests found
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
CHANGES
+3
-0
3 additions, 0 deletions
CHANGES
res/res_pjsip.c
+58
-1
58 additions, 1 deletion
res/res_pjsip.c
res/res_pjsip/config_auth.c
+67
-0
67 additions, 0 deletions
res/res_pjsip/config_auth.c
with
128 additions
and
1 deletion
CHANGES
+
3
−
0
View file @
3e8b9515
...
...
@@ -48,6 +48,9 @@ res_pjsip
* A new AMI action, PJSIPShowAors, has been added which displays information
about all configured PJSIP AORs.
* A new AMI action, PJSIPShowAuths, has been added which displays information
about all configured PJSIP Auths.
------------------------------------------------------------------------------
--- Functionality changes from Asterisk 15.1.0 to Asterisk 15.2.0 ------------
------------------------------------------------------------------------------
...
...
This diff is collapsed.
Click to expand it.
res/res_pjsip.c
+
58
−
1
View file @
3e8b9515
...
...
@@ -2310,6 +2310,37 @@
</syntax>
</managerEventInstance>
</managerEvent>
<managerEvent language="en_US" name="AuthList">
<managerEventInstance class="EVENT_FLAG_COMMAND">
<synopsis>Provide details about an Address of Record (Auth) section.</synopsis>
<syntax>
<parameter name="ObjectType">
<para>The object's type. This will always be 'auth'.</para>
</parameter>
<parameter name="ObjectName">
<para>The name of this object.</para>
</parameter>
<parameter name="Username">
<para><xi:include xpointer="xpointer(/docs/configInfo[@name='res_pjsip']/configFile[@name='pjsip.conf']/configObject[@name='auth']/configOption[@name='username']/synopsis/node())"/></para>
</parameter>
<parameter name="Md5Cred">
<para><xi:include xpointer="xpointer(/docs/configInfo[@name='res_pjsip']/configFile[@name='pjsip.conf']/configObject[@name='auth']/configOption[@name='md5_cred']/synopsis/node())"/></para>
</parameter>
<parameter name="Realm">
<para><xi:include xpointer="xpointer(/docs/configInfo[@name='res_pjsip']/configFile[@name='pjsip.conf']/configObject[@name='auth']/configOption[@name='realm']/synopsis/node())"/></para>
</parameter>
<parameter name="AuthType">
<para><xi:include xpointer="xpointer(/docs/configInfo[@name='res_pjsip']/configFile[@name='pjsip.conf']/configObject[@name='auth']/configOption[@name='auth_type']/synopsis/node())"/></para>
</parameter>
<parameter name="Password">
<para><xi:include xpointer="xpointer(/docs/configInfo[@name='res_pjsip']/configFile[@name='pjsip.conf']/configObject[@name='auth']/configOption[@name='password']/synopsis/node())"/></para>
</parameter>
<parameter name="NonceLifetime">
<para><xi:include xpointer="xpointer(/docs/configInfo[@name='res_pjsip']/configFile[@name='pjsip.conf']/configObject[@name='auth']/configOption[@name='nonce_lifetime']/synopsis/node())"/></para>
</parameter>
</syntax>
</managerEventInstance>
</managerEvent>
<managerEvent language="en_US" name="ContactStatusDetail">
<managerEventInstance class="EVENT_FLAG_COMMAND">
<synopsis>Provide details about a contact's status.</synopsis>
...
...
@@ -2496,6 +2527,32 @@
</managerEvent>
</responses>
</manager>
<manager name="PJSIPShowAuths" language="en_US">
<synopsis>
Lists PJSIP Auths.
</synopsis>
<syntax />
<description>
<para>Provides a listing of all Auths. For each Auth an <literal>AuthList</literal> event
is raised that contains relevant attributes and status information. Once all
auths have been listed an <literal>AuthListComplete</literal> event is issued.
</para>
</description>
<responses>
<list-elements>
<xi:include xpointer="xpointer(/docs/managerEvent[@name='AuthList'])" />
</list-elements>
<managerEvent language="en_US" name="AuthListComplete">
<managerEventInstance class="EVENT_FLAG_COMMAND">
<synopsis>Provide final information about an auth list.</synopsis>
<syntax>
<parameter name="EventList"/>
<parameter name="ListItems"/>
</syntax>
</managerEventInstance>
</managerEvent>
</responses>
</manager>
***/
...
...
This diff is collapsed.
Click to expand it.
res/res_pjsip/config_auth.c
+
67
−
0
View file @
3e8b9515
...
...
@@ -195,6 +195,67 @@ static struct ast_sip_endpoint_formatter endpoint_auth_formatter = {
.
format_ami
=
format_ami_endpoint_auth
};
static
struct
ao2_container
*
cli_get_auths
(
void
)
{
struct
ao2_container
*
auths
;
auths
=
ast_sorcery_retrieve_by_fields
(
ast_sip_get_sorcery
(),
"auth"
,
AST_RETRIEVE_FLAG_MULTIPLE
|
AST_RETRIEVE_FLAG_ALL
,
NULL
);
return
auths
;
}
static
int
format_ami_authlist_handler
(
void
*
obj
,
void
*
arg
,
int
flags
)
{
struct
ast_sip_auth
*
auth
=
obj
;
struct
ast_sip_ami
*
ami
=
arg
;
struct
ast_str
*
buf
;
buf
=
ast_sip_create_ami_event
(
"AuthList"
,
ami
);
if
(
!
buf
)
{
return
CMP_STOP
;
}
sip_auth_to_ami
(
auth
,
&
buf
);
astman_append
(
ami
->
s
,
"%s
\r\n
"
,
ast_str_buffer
(
buf
));
ami
->
count
++
;
ast_free
(
buf
);
return
0
;
}
static
int
ami_show_auths
(
struct
mansession
*
s
,
const
struct
message
*
m
)
{
struct
ast_sip_ami
ami
=
{
.
s
=
s
,
.
m
=
m
,
.
action_id
=
astman_get_header
(
m
,
"ActionID"
),
};
struct
ao2_container
*
auths
;
auths
=
cli_get_auths
();
if
(
!
auths
)
{
astman_send_error
(
s
,
m
,
"Could not get Auths
\n
"
);
return
0
;
}
if
(
!
ao2_container_count
(
auths
))
{
astman_send_error
(
s
,
m
,
"No Auths found
\n
"
);
ao2_ref
(
auths
,
-
1
);
return
0
;
}
astman_send_listack
(
s
,
m
,
"A listing of Auths follows, presented as AuthList events"
,
"start"
);
ao2_callback
(
auths
,
OBJ_NODATA
,
format_ami_authlist_handler
,
&
ami
);
astman_send_list_complete_start
(
s
,
m
,
"AuthListComplete"
,
ami
.
count
);
astman_send_list_complete_end
(
s
);
ao2_ref
(
auths
,
-
1
);
return
0
;
}
static
struct
ao2_container
*
cli_get_container
(
const
char
*
regex
)
{
RAII_VAR
(
struct
ao2_container
*
,
container
,
NULL
,
ao2_cleanup
);
...
...
@@ -331,6 +392,10 @@ int ast_sip_initialize_sorcery_auth(void)
ast_sip_register_cli_formatter
(
cli_formatter
);
ast_cli_register_multiple
(
cli_commands
,
ARRAY_LEN
(
cli_commands
));
if
(
ast_manager_register_xml
(
"PJSIPShowAuths"
,
EVENT_FLAG_SYSTEM
,
ami_show_auths
))
{
return
-
1
;
}
return
0
;
}
...
...
@@ -340,5 +405,7 @@ int ast_sip_destroy_sorcery_auth(void)
ast_sip_unregister_cli_formatter
(
cli_formatter
);
internal_sip_unregister_endpoint_formatter
(
&
endpoint_auth_formatter
);
ast_manager_unregister
(
"PJSIPShowAuths"
);
return
0
;
}
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
sign in
to comment