cli.h File Reference

Standard Command Line Interface. More...

#include "asterisk/linkedlists.h"
#include "asterisk/strings.h"

Include dependency graph for cli.h:

Go to the source code of this file.

Data Structures

struct  ast_cli_args
struct  ast_cli_entry
 descriptor for a cli entry. More...

Defines

#define ast_cli_command(fd, s)   ast_cli_command_full(CLI_NO_PERMS, CLI_NO_PERMS, fd, s)
#define ast_cli_command_multiple(fd, size, s)   ast_cli_command_multiple_full(CLI_NO_PERMS, CLI_NO_PERMS, fd, size, s)
#define AST_CLI_COMPLETE_EOF   "_EOF_"
#define AST_CLI_DEFINE(fn, txt,...)   { .handler = fn, .summary = txt, ## __VA_ARGS__ }
#define AST_CLI_ONOFF(x)   (x) ? "On" : "Off"
 return On or Off depending on the argument. This is used in many places in CLI command, having a function to generate this helps maintaining a consistent output (and possibly emitting the output in other languages, at some point).
#define AST_CLI_YESNO(x)   AST_YESNO(x)
 Return Yes or No depending on the argument.
#define AST_MAX_ARGS   64
#define AST_MAX_CMD_LEN   16
#define CLI_FAILURE   (char *)RESULT_FAILURE
#define CLI_NO_PERMS   -1
#define CLI_SHOWUSAGE   (char *)RESULT_SHOWUSAGE
#define CLI_SUCCESS   (char *)RESULT_SUCCESS
#define ESS(x)   ((x) == 1 ? "" : "s")
#define RESULT_FAILURE   2
#define RESULT_SHOWUSAGE   1
#define RESULT_SUCCESS   0

Enumerations

enum  ast_cli_command { CLI_INIT = -2, CLI_GENERATE = -3, CLI_HANDLER = -4 }
 calling arguments for new-style handlers. More...

Functions

void ast_cli (int fd, const char *fmt,...)
int ast_cli_command_full (int uid, int gid, int fd, const char *s)
 Interprets a command Interpret a command s, sending output to fd if uid:gid has permissions to run this command. uid = CLI_NO_PERMS to avoid checking user permissions gid = CLI_NO_PERMS to avoid checking group permissions.
int ast_cli_command_multiple_full (int uid, int gid, int fd, size_t size, const char *s)
 Executes multiple CLI commands Interpret strings separated by NULL and execute each one, sending output to fd if uid has permissions, uid = CLI_NO_PERMS to avoid checking users permissions. gid = CLI_NO_PERMS to avoid checking group permissions.
char * ast_cli_complete (const char *word, const char *const choices[], int pos)
char ** ast_cli_completion_matches (const char *, const char *)
 Generates a NULL-terminated array of strings that 1) begin with the string in the second parameter, and 2) are valid in a command after the string in the first parameter.
char * ast_cli_generator (const char *, const char *, int)
 Readline madness Useful for readline, that's about it.
int ast_cli_generatornummatches (const char *, const char *)
 Return the number of unique matches for the generator.
int ast_cli_register (struct ast_cli_entry *e)
 Registers a command or an array of commands.
int ast_cli_register_multiple (struct ast_cli_entry *e, int len)
 Register multiple commands.
int ast_cli_unregister (struct ast_cli_entry *e)
 Unregisters a command or an array of commands.
int ast_cli_unregister_multiple (struct ast_cli_entry *e, int len)
 Unregister multiple commands.
char * ast_complete_channels (const char *line, const char *word, int pos, int state, int rpos)
 Command completion for the list of active channels.


Detailed Description

Standard Command Line Interface.

Definition in file cli.h.


Define Documentation

#define ast_cli_command ( fd,
 )     ast_cli_command_full(CLI_NO_PERMS, CLI_NO_PERMS, fd, s)

#define ast_cli_command_multiple ( fd,
size,
 )     ast_cli_command_multiple_full(CLI_NO_PERMS, CLI_NO_PERMS, fd, size, s)

Definition at line 248 of file cli.h.

#define AST_CLI_COMPLETE_EOF   "_EOF_"

Definition at line 52 of file cli.h.

Referenced by ast_el_strtoarr(), cli_complete(), and handle_commandmatchesarray().

#define AST_CLI_DEFINE ( fn,
txt,
...   )     { .handler = fn, .summary = txt, ## __VA_ARGS__ }

Definition at line 197 of file cli.h.

#define AST_CLI_ONOFF (  )     (x) ? "On" : "Off"

return On or Off depending on the argument. This is used in many places in CLI command, having a function to generate this helps maintaining a consistent output (and possibly emitting the output in other languages, at some point).

Definition at line 78 of file cli.h.

Referenced by sip_show_settings().

#define AST_CLI_YESNO (  )     AST_YESNO(x)

Return Yes or No depending on the argument.

Note that this should probably still be used for CLI commands instead of AST_YESNO(), in the off chance we someday want to translate the CLI.

Parameters:
x Boolean value
Returns:
"Yes" if x is true (non-zero)

"No" if x is false (zero)

Definition at line 71 of file cli.h.

Referenced by _sip_show_peer(), action_coresettings(), agent_handle_show_specific(), ari_show(), ari_show_user(), comedia_string(), display_nat_warning(), force_rport_string(), handle_bridge_technology_show(), handle_cli_presencestate_list(), handle_cli_show_config(), handle_manager_show_settings(), handle_skel_show_config(), handle_skinny_show_settings(), show_channels_cb(), show_users_cb(), sip_show_channel(), sip_show_mwi(), sip_show_settings(), sip_show_user(), and sip_show_users().

#define AST_MAX_ARGS   64

Definition at line 50 of file cli.h.

Referenced by __ast_cli_generator(), ast_cli_command_full(), and handle_cli_check_permissions().

#define AST_MAX_CMD_LEN   16

Definition at line 48 of file cli.h.

Referenced by __ast_cli_register(), check_blacklist(), and find_best().

#define CLI_FAILURE   (char *)RESULT_FAILURE

Definition at line 46 of file cli.h.

Referenced by _sip_show_peers(), ari_mkpasswd(), ari_show(), ari_show_user(), ari_show_users(), ast_cli_command_full(), ast_sip_cli_traverse_objects(), cli_console_active(), cli_console_answer(), cli_console_autoanswer(), cli_console_dial(), cli_console_flash(), cli_console_hangup(), cli_console_mute(), cli_console_sendtext(), cli_notify(), cli_odbc_read(), cli_odbc_write(), cli_qualify(), cli_realtime_destroy(), cli_realtime_store(), cli_realtime_update(), cli_realtime_update2(), cli_register(), cli_show_settings(), cli_tps_ping(), cli_unregister(), complete_ari_user(), console_answer(), console_autoanswer(), console_cmd(), console_dial(), console_do_answer(), console_flash(), console_hangup(), console_sendtext(), console_transfer(), corosync_ping(), corosync_show_members(), dahdi_create_channels(), dahdi_destroy_channels(), dahdi_restart_cmd(), dahdi_set_dnd(), dahdi_set_hwgain(), dahdi_set_swgain(), dahdi_show_channel(), dahdi_show_status(), handle_cc_status(), handle_cli_ael_reload(), handle_cli_agi_add_cmd(), handle_cli_agi_show(), handle_cli_amihook_register_hook(), handle_cli_amihook_send(), handle_cli_amihook_unregister_hook(), handle_cli_check_permissions(), handle_cli_confbridge_start_record(), handle_cli_core_show_channeltype(), handle_cli_core_show_translation(), handle_cli_data_get(), handle_cli_devstate_change(), handle_cli_dialplan_add_extension(), handle_cli_dialplan_add_ignorepat(), handle_cli_dialplan_add_include(), handle_cli_dialplan_remove_extension(), handle_cli_dialplan_remove_ignorepat(), handle_cli_dialplan_remove_include(), handle_cli_dialplan_save(), handle_cli_file_convert(), handle_cli_iax2_set_debug(), handle_cli_iax2_show_peers(), handle_cli_indication_add(), handle_cli_indication_remove(), handle_cli_presencestate_change(), handle_cli_realtime_pgsql_status(), handle_cli_sched_bench(), handle_cli_sec_evt_test(), handle_cli_show_config(), handle_cli_sound_show(), handle_cli_sounds_show(), handle_cli_ulimit(), handle_commandmatchesarray(), handle_debug(), handle_debug_dialplan(), handle_load(), handle_logger_add_channel(), handle_logger_reload(), handle_logger_rotate(), handle_minivm_list_templates(), handle_minivm_show_users(), handle_minivm_show_zones(), handle_queue_add_member(), handle_queue_pause_member(), handle_queue_remove_member(), handle_queue_set_member_penalty(), handle_queue_set_member_ringinuse(), handle_redirect(), handle_set_chanvar(), handle_show_application(), handle_show_chanvar(), handle_show_dialplan(), handle_show_function(), handle_show_hangup_all(), handle_show_hangup_channel(), handle_show_translation_path(), handle_showchan(), handle_softhangup(), handle_unload(), handle_voicemail_show_users(), handle_voicemail_show_zones(), meetme_cmd_helper(), meetme_show_cmd(), orig_app(), orig_exten(), realtime_ldap_status(), rtcp_do_debug_ip(), rtp_do_debug_ip(), show_users_realtime(), sip_cli_notify(), timing_test(), xmpp_cli_create_collection(), xmpp_cli_create_leafnode(), xmpp_cli_delete_pubsub_node(), xmpp_cli_list_pubsub_nodes(), and xmpp_cli_purge_pubsub_nodes().

#define CLI_NO_PERMS   -1

Definition at line 38 of file cli.h.

Referenced by cli_has_permissions().

#define CLI_SHOWUSAGE   (char *)RESULT_SHOWUSAGE

Definition at line 45 of file cli.h.

Referenced by __queues_show(), __say_cli_init(), _sip_qualify_peer(), _sip_show_peer(), _sip_show_peers(), _skinny_message_clear(), _skinny_message_set(), _skinny_show_device(), _skinny_show_devices(), _skinny_show_line(), _skinny_show_lines(), agent_handle_logoff_cmd(), agent_handle_show_all(), agent_handle_show_online(), agent_handle_show_specific(), aoc_cli_debug_enable(), ari_mkpasswd(), ari_show(), ari_show_user(), ari_show_users(), ast_cli_command_full(), cli_console_active(), cli_console_answer(), cli_console_autoanswer(), cli_console_dial(), cli_console_flash(), cli_console_hangup(), cli_console_mute(), cli_console_sendtext(), cli_fax_set_debug(), cli_fax_show_session(), cli_fax_show_version(), cli_list_available(), cli_list_devices(), cli_notify(), cli_odbc_read(), cli_odbc_write(), cli_qualify(), cli_realtime_destroy(), cli_realtime_load(), cli_realtime_store(), cli_realtime_update(), cli_realtime_update2(), cli_register(), cli_show_endpoint_identifiers(), cli_tps_ping(), cli_tps_report(), cli_unregister(), console_active(), console_answer(), console_autoanswer(), console_cmd(), console_dial(), console_flash(), console_hangup(), console_mute(), console_sendtext(), console_transfer(), corosync_ping(), corosync_show_config(), corosync_show_members(), dahdi_create_channels(), dahdi_destroy_channels(), dahdi_restart_cmd(), dahdi_set_dnd(), dahdi_set_hwgain(), dahdi_set_swgain(), dahdi_show_channel(), dahdi_show_channels(), dundi_do_lookup(), dundi_do_precache(), dundi_do_query(), dundi_flush(), dundi_set_debug(), dundi_show_cache(), dundi_show_entityid(), dundi_show_hints(), dundi_show_mappings(), dundi_show_peer(), dundi_show_peers(), dundi_show_precache(), dundi_show_requests(), dundi_show_trans(), dundi_store_history(), group_show_channels(), handle_abort_shutdown(), handle_bridge_kick_channel(), handle_bridge_show_specific(), handle_bridge_technology_suspend(), handle_cc_kill(), handle_cc_status(), handle_cdr_pgsql_status(), handle_chanlist(), handle_cli_ael_reload(), handle_cli_ael_set_debug(), handle_cli_agi_add_cmd(), handle_cli_agi_debug(), handle_cli_agi_dump_html(), handle_cli_agi_show(), handle_cli_cdr_mysql_status(), handle_cli_check_permissions(), handle_cli_confbridge_kick(), handle_cli_confbridge_list(), handle_cli_confbridge_lock(), handle_cli_confbridge_mute(), handle_cli_confbridge_show_bridge_profile(), handle_cli_confbridge_show_menu(), handle_cli_confbridge_show_user_profile(), handle_cli_confbridge_start_record(), handle_cli_confbridge_stop_record(), handle_cli_confbridge_unlock(), handle_cli_confbridge_unmute(), handle_cli_config_reload(), handle_cli_core_show_channeltype(), handle_cli_core_show_channeltypes(), handle_cli_core_show_file_formats(), handle_cli_core_show_translation(), handle_cli_data_get(), handle_cli_database_del(), handle_cli_database_deltree(), handle_cli_database_get(), handle_cli_database_put(), handle_cli_database_query(), handle_cli_database_show(), handle_cli_database_showkey(), handle_cli_debug(), handle_cli_devstate_change(), handle_cli_devstate_list(), handle_cli_dialplan_add_extension(), handle_cli_dialplan_add_ignorepat(), handle_cli_dialplan_add_include(), handle_cli_dialplan_reload(), handle_cli_dialplan_remove_context(), handle_cli_dialplan_remove_extension(), handle_cli_dialplan_remove_ignorepat(), handle_cli_dialplan_remove_include(), handle_cli_dialplan_save(), handle_cli_file_convert(), handle_cli_iax2_provision(), handle_cli_iax2_prune_realtime(), handle_cli_iax2_set_debug(), handle_cli_iax2_set_debug_jb(), handle_cli_iax2_set_debug_trunk(), handle_cli_iax2_set_mtu(), handle_cli_iax2_show_callno_limits(), handle_cli_iax2_show_channels(), handle_cli_iax2_show_firmware(), handle_cli_iax2_show_netstats(), handle_cli_iax2_show_peer(), handle_cli_iax2_show_peers(), handle_cli_iax2_show_registry(), handle_cli_iax2_show_stats(), handle_cli_iax2_show_threads(), handle_cli_iax2_show_users(), handle_cli_iax2_test_losspct(), handle_cli_iax2_unregister(), handle_cli_indication_add(), handle_cli_indication_remove(), handle_cli_keys_init(), handle_cli_misdn_port_block(), handle_cli_misdn_port_down(), handle_cli_misdn_port_unblock(), handle_cli_misdn_port_up(), handle_cli_misdn_reload(), handle_cli_misdn_restart_pid(), handle_cli_misdn_restart_port(), handle_cli_misdn_send_digit(), handle_cli_misdn_send_display(), handle_cli_misdn_send_facility(), handle_cli_misdn_send_restart(), handle_cli_misdn_set_crypt_debug(), handle_cli_misdn_set_debug(), handle_cli_misdn_set_tics(), handle_cli_misdn_show_channel(), handle_cli_misdn_show_channels(), handle_cli_misdn_show_config(), handle_cli_misdn_show_port(), handle_cli_misdn_show_ports_stats(), handle_cli_misdn_show_stacks(), handle_cli_misdn_toggle_echocancel(), handle_cli_mixmonitor(), handle_cli_mobile_cusd(), handle_cli_mobile_rfcomm(), handle_cli_mobile_search(), handle_cli_mobile_show_devices(), handle_cli_moh_reload(), handle_cli_moh_show_classes(), handle_cli_moh_show_files(), handle_cli_ooh323_reload(), handle_cli_ooh323_set_debug(), handle_cli_ooh323_show_config(), handle_cli_ooh323_show_gk(), handle_cli_ooh323_show_peer(), handle_cli_ooh323_show_peers(), handle_cli_ooh323_show_user(), handle_cli_ooh323_show_users(), handle_cli_osp_show(), handle_cli_presencestate_change(), handle_cli_presencestate_list(), handle_cli_realtime_mysql_status(), handle_cli_realtime_pgsql_status(), handle_cli_refresh(), handle_cli_reload(), handle_cli_rtcp_set_debug(), handle_cli_rtcp_set_stats(), handle_cli_rtp_set_debug(), handle_cli_sched_bench(), handle_cli_show(), handle_cli_show_sqlite_status(), handle_cli_sound_show(), handle_cli_sounds_show(), handle_cli_sqlite_show_tables(), handle_cli_status(), handle_cli_stun_set_debug(), handle_cli_stun_show_status(), handle_cli_submit(), handle_cli_test_locales(), handle_cli_transcoder_show(), handle_cli_udptl_set_debug(), handle_cli_ulimit(), handle_commandcomplete(), handle_commandmatchesarray(), handle_commandnummatches(), handle_core_reload(), handle_core_set_debug_channel(), handle_core_show_image_formats(), handle_debug(), handle_debug_dialplan(), handle_load(), handle_logger_add_channel(), handle_logger_mute(), handle_logger_remove_channel(), handle_logger_set_level(), handle_manager_reload(), handle_manager_show_settings(), handle_mandebug(), handle_mgcp_audit_endpoint(), handle_mgcp_set_debug(), handle_mgcp_show_endpoints(), handle_minivm_list_templates(), handle_minivm_show_users(), handle_minivm_show_zones(), handle_modlist(), handle_nodebugchan_deprecated(), handle_orig(), handle_queue_add_member(), handle_queue_pause_member(), handle_queue_reload(), handle_queue_remove_member(), handle_queue_reset(), handle_queue_rule_show(), handle_queue_set_member_penalty(), handle_queue_set_member_ringinuse(), handle_redirect(), handle_restart_gracefully(), handle_restart_now(), handle_restart_when_convenient(), handle_set_chanvar(), handle_set_extenpatternmatchnew(), handle_set_global(), handle_show_application(), handle_show_calendar(), handle_show_chanvar(), handle_show_dialplan(), handle_show_function(), handle_show_functions(), handle_show_hangup_all(), handle_show_hangup_channel(), handle_show_hint(), handle_show_http(), handle_show_named_acl_cmd(), handle_show_parking_lot_cmd(), handle_show_version_files(), handle_showcalls(), handle_showchan(), handle_showmanager(), handle_showmanagers(), handle_showmancmd(), handle_showuptime(), handle_skinny_reload(), handle_skinny_reset(), handle_skinny_show_lines(), handle_skinny_show_settings(), handle_softhangup(), handle_stop_gracefully(), handle_stop_now(), handle_stop_when_convenient(), handle_unload(), handle_unset_extenpatternmatchnew(), handle_verbose(), handle_version(), handle_voicemail_reload(), handle_voicemail_show_users(), handle_voicemail_show_zones(), iax_show_provisioning(), locals_show(), meetme_cmd_helper(), meetme_kick_cmd(), meetme_lock_cmd(), meetme_mute_cmd(), meetme_show_cmd(), orig_app(), orig_exten(), pjsip_enable_logger_host(), pjsip_set_logger(), pktccops_debug(), pktccops_gatedel(), pktccops_gateset(), show_codec(), show_codecs(), sip_cli_notify(), sip_do_debug(), sip_do_debug_ip(), sip_prune_realtime(), sip_set_history(), sip_show_channel(), sip_show_channels(), sip_show_channelstats(), sip_show_history(), sip_show_inuse(), sip_show_objects(), sip_show_registry(), sip_show_settings(), sip_show_tcp(), sip_show_user(), sip_show_users(), sip_unregister(), timing_test(), unistim_do_debug(), unistim_reload(), unistim_show_devices(), unistim_show_info(), unistim_sp(), xmpp_cli_create_collection(), xmpp_cli_create_leafnode(), xmpp_cli_delete_pubsub_node(), xmpp_cli_list_pubsub_nodes(), xmpp_cli_purge_pubsub_nodes(), and xmpp_do_set_debug().

#define CLI_SUCCESS   (char *)RESULT_SUCCESS

Definition at line 44 of file cli.h.

Referenced by __queues_show(), __say_cli_init(), _sip_qualify_peer(), _sip_show_peer(), _sip_show_peers(), _skinny_message_clear(), _skinny_message_set(), _skinny_show_device(), _skinny_show_devices(), _skinny_show_line(), _skinny_show_lines(), agent_handle_logoff_cmd(), agent_handle_show_all(), agent_handle_show_online(), agent_handle_show_specific(), alias_show(), aoc_cli_debug_enable(), ari_mkpasswd(), ari_show(), ari_show_user(), ari_show_users(), ast_sip_cli_traverse_objects(), cli_alias_passthrough(), cli_console_active(), cli_console_answer(), cli_console_autoanswer(), cli_console_dial(), cli_console_flash(), cli_console_hangup(), cli_console_mute(), cli_console_sendtext(), cli_fax_set_debug(), cli_fax_show_capabilities(), cli_fax_show_session(), cli_fax_show_sessions(), cli_fax_show_settings(), cli_fax_show_stats(), cli_fax_show_version(), cli_list_available(), cli_list_devices(), cli_notify(), cli_odbc_read(), cli_odbc_write(), cli_qualify(), cli_realtime_destroy(), cli_realtime_load(), cli_realtime_store(), cli_realtime_update(), cli_realtime_update2(), cli_register(), cli_show_endpoint_identifiers(), cli_show_settings(), cli_tps_ping(), cli_tps_report(), cli_unregister(), console_active(), console_answer(), console_autoanswer(), console_boost(), console_cmd(), console_dial(), console_do_answer(), console_flash(), console_hangup(), console_mute(), console_sendtext(), console_transfer(), corosync_ping(), corosync_show_config(), corosync_show_members(), dahdi_create_channels(), dahdi_destroy_channels(), dahdi_restart_cmd(), dahdi_set_dnd(), dahdi_set_hwgain(), dahdi_set_swgain(), dahdi_show_channel(), dahdi_show_channels(), dahdi_show_status(), dahdi_show_version(), dundi_do_lookup(), dundi_do_precache(), dundi_do_query(), dundi_flush(), dundi_set_debug(), dundi_show_cache(), dundi_show_entityid(), dundi_show_hints(), dundi_show_mappings(), dundi_show_peer(), dundi_show_peers(), dundi_show_precache(), dundi_show_requests(), dundi_show_trans(), dundi_store_history(), group_show_channels(), handle_abort_shutdown(), handle_bang(), handle_bridge_kick_channel(), handle_bridge_show_all(), handle_bridge_show_specific(), handle_bridge_technology_show(), handle_bridge_technology_suspend(), handle_cc_kill(), handle_cc_status(), handle_cdr_pgsql_status(), handle_chanlist(), handle_clear_profile(), handle_cli_ael_reload(), handle_cli_ael_set_debug(), handle_cli_agi_add_cmd(), handle_cli_agi_debug(), handle_cli_agi_dump_html(), handle_cli_agi_show(), handle_cli_amihook_register_hook(), handle_cli_amihook_send(), handle_cli_amihook_unregister_hook(), handle_cli_cdr_mysql_status(), handle_cli_check_permissions(), handle_cli_confbridge_kick(), handle_cli_confbridge_list(), handle_cli_confbridge_lock(), handle_cli_confbridge_mute(), handle_cli_confbridge_show_bridge_profile(), handle_cli_confbridge_show_bridge_profiles(), handle_cli_confbridge_show_menu(), handle_cli_confbridge_show_menus(), handle_cli_confbridge_show_user_profile(), handle_cli_confbridge_show_user_profiles(), handle_cli_confbridge_start_record(), handle_cli_confbridge_stop_record(), handle_cli_confbridge_unlock(), handle_cli_confbridge_unmute(), handle_cli_config_list(), handle_cli_config_reload(), handle_cli_core_show_channeltype(), handle_cli_core_show_channeltypes(), handle_cli_core_show_config_mappings(), handle_cli_core_show_file_formats(), handle_cli_data_get(), handle_cli_data_show_providers(), handle_cli_database_del(), handle_cli_database_deltree(), handle_cli_database_get(), handle_cli_database_put(), handle_cli_database_query(), handle_cli_database_show(), handle_cli_database_showkey(), handle_cli_debug(), handle_cli_devstate_change(), handle_cli_devstate_list(), handle_cli_dialplan_add_extension(), handle_cli_dialplan_add_ignorepat(), handle_cli_dialplan_add_include(), handle_cli_dialplan_reload(), handle_cli_dialplan_remove_context(), handle_cli_dialplan_remove_extension(), handle_cli_dialplan_remove_ignorepat(), handle_cli_dialplan_remove_include(), handle_cli_dialplan_save(), handle_cli_dynamic_level_test(), handle_cli_file_convert(), handle_cli_iax2_provision(), handle_cli_iax2_prune_realtime(), handle_cli_iax2_reload(), handle_cli_iax2_set_debug(), handle_cli_iax2_set_debug_jb(), handle_cli_iax2_set_debug_trunk(), handle_cli_iax2_set_mtu(), handle_cli_iax2_show_cache(), handle_cli_iax2_show_callno_limits(), handle_cli_iax2_show_channels(), handle_cli_iax2_show_firmware(), handle_cli_iax2_show_netstats(), handle_cli_iax2_show_peer(), handle_cli_iax2_show_peers(), handle_cli_iax2_show_registry(), handle_cli_iax2_show_stats(), handle_cli_iax2_show_threads(), handle_cli_iax2_show_users(), handle_cli_iax2_test_losspct(), handle_cli_iax2_unregister(), handle_cli_indication_add(), handle_cli_indication_remove(), handle_cli_indication_show(), handle_cli_keys_init(), handle_cli_keys_show(), handle_cli_misdn_port_block(), handle_cli_misdn_port_down(), handle_cli_misdn_port_unblock(), handle_cli_misdn_port_up(), handle_cli_misdn_reload(), handle_cli_misdn_restart_pid(), handle_cli_misdn_restart_port(), handle_cli_misdn_send_digit(), handle_cli_misdn_send_display(), handle_cli_misdn_send_facility(), handle_cli_misdn_send_restart(), handle_cli_misdn_set_crypt_debug(), handle_cli_misdn_set_debug(), handle_cli_misdn_set_tics(), handle_cli_misdn_show_channel(), handle_cli_misdn_show_channels(), handle_cli_misdn_show_config(), handle_cli_misdn_show_port(), handle_cli_misdn_show_ports_stats(), handle_cli_misdn_show_stacks(), handle_cli_misdn_toggle_echocancel(), handle_cli_mixmonitor(), handle_cli_mobile_cusd(), handle_cli_mobile_rfcomm(), handle_cli_mobile_search(), handle_cli_mobile_show_devices(), handle_cli_moh_reload(), handle_cli_moh_show_classes(), handle_cli_moh_show_files(), handle_cli_odbc_show(), handle_cli_ooh323_set_debug(), handle_cli_ooh323_show_config(), handle_cli_ooh323_show_gk(), handle_cli_ooh323_show_peer(), handle_cli_ooh323_show_peers(), handle_cli_ooh323_show_user(), handle_cli_osp_show(), handle_cli_performance_test(), handle_cli_presencestate_change(), handle_cli_presencestate_list(), handle_cli_realtime_mysql_cache(), handle_cli_realtime_mysql_status(), handle_cli_realtime_pgsql_status(), handle_cli_refresh(), handle_cli_reload(), handle_cli_reload_permissions(), handle_cli_rtcp_set_debug(), handle_cli_rtcp_set_stats(), handle_cli_rtp_set_debug(), handle_cli_sched_bench(), handle_cli_sec_evt_test(), handle_cli_show(), handle_cli_show_config(), handle_cli_show_permissions(), handle_cli_show_sqlite_status(), handle_cli_sound_show(), handle_cli_sounds_show(), handle_cli_sqlite_show_tables(), handle_cli_status(), handle_cli_stun_set_debug(), handle_cli_stun_show_status(), handle_cli_submit(), handle_cli_test_locales(), handle_cli_transcoder_show(), handle_cli_udptl_set_debug(), handle_cli_ulimit(), handle_cli_wait_fullybooted(), handle_commandcomplete(), handle_commandmatchesarray(), handle_commandnummatches(), handle_core_reload(), handle_core_set_debug_channel(), handle_core_show_image_formats(), handle_dahdi_show_cadences(), handle_debug(), handle_debug_dialplan(), handle_dump_sched(), handle_feature_show(), handle_help(), handle_load(), handle_logger_add_channel(), handle_logger_mute(), handle_logger_reload(), handle_logger_remove_channel(), handle_logger_rotate(), handle_logger_set_level(), handle_logger_show_channels(), handle_manager_reload(), handle_manager_show_settings(), handle_mandebug(), handle_mgcp_audit_endpoint(), handle_mgcp_set_debug(), handle_mgcp_show_endpoints(), handle_minivm_list_templates(), handle_minivm_reload(), handle_minivm_show_settings(), handle_minivm_show_stats(), handle_minivm_show_users(), handle_minivm_show_zones(), handle_modlist(), handle_pjsip_list_ciphers(), handle_pjsip_show_version(), handle_queue_add_member(), handle_queue_pause_member(), handle_queue_reload(), handle_queue_remove_member(), handle_queue_reset(), handle_queue_rule_show(), handle_queue_set_member_penalty(), handle_queue_set_member_ringinuse(), handle_redirect(), handle_reload(), handle_restart_gracefully(), handle_restart_now(), handle_restart_when_convenient(), handle_set_chanvar(), handle_set_extenpatternmatchnew(), handle_set_global(), handle_show_application(), handle_show_applications(), handle_show_calendar(), handle_show_calendars(), handle_show_calendars_types(), handle_show_chanvar(), handle_show_dialplan(), handle_show_function(), handle_show_functions(), handle_show_globals(), handle_show_hangup_all(), handle_show_hangup_channel(), handle_show_hint(), handle_show_hints(), handle_show_http(), handle_show_named_acl_cmd(), handle_show_parking_lot_cmd(), handle_show_profile(), handle_show_routes(), handle_show_settings(), handle_show_switches(), handle_show_threads(), handle_show_translation_path(), handle_show_translation_table(), handle_show_version_files(), handle_showchan(), handle_showmanager(), handle_showmanagers(), handle_showmancmd(), handle_showmancmds(), handle_showmanconn(), handle_showmaneventq(), handle_showuptime(), handle_skel_show_config(), handle_skel_show_games(), handle_skel_show_levels(), handle_skinny_reload(), handle_skinny_reset(), handle_skinny_show_settings(), handle_softhangup(), handle_stop_gracefully(), handle_stop_now(), handle_stop_when_convenient(), handle_unload(), handle_unset_extenpatternmatchnew(), handle_verbose(), handle_version(), handle_voicemail_reload(), handle_voicemail_show_users(), handle_voicemail_show_zones(), help1(), help_workhorse(), iax_show_provisioning(), locals_show(), meetme_cmd_helper(), meetme_show_cmd(), mgcp_reload(), orig_app(), orig_exten(), pjsip_enable_logger_host(), pjsip_set_logger(), pktccops_debug(), pktccops_gatedel(), pktccops_gateset(), pktccops_show_cmtses(), pktccops_show_gates(), pktccops_show_pools(), realtime_ldap_status(), rtcp_do_debug_ip(), rtp_do_debug_ip(), show_codec(), show_codecs(), show_license(), show_users_realtime(), show_warranty(), sip_cli_notify(), sip_do_debug(), sip_do_debug_ip(), sip_do_debug_peer(), sip_prune_realtime(), sip_reload(), sip_set_history(), sip_show_channel(), sip_show_channels(), sip_show_channelstats(), sip_show_domains(), sip_show_history(), sip_show_inuse(), sip_show_mwi(), sip_show_objects(), sip_show_registry(), sip_show_sched(), sip_show_settings(), sip_show_tcp(), sip_show_user(), sip_show_users(), sip_unregister(), sla_show_stations(), sla_show_trunks(), spandsp_fax_cli_show_capabilities(), spandsp_fax_cli_show_session(), spandsp_fax_cli_show_settings(), spandsp_fax_cli_show_stats(), timing_test(), unistim_do_debug(), unistim_reload(), unistim_show_devices(), unistim_show_info(), unistim_sp(), xmpp_cli_create_collection(), xmpp_cli_create_leafnode(), xmpp_cli_delete_pubsub_node(), xmpp_cli_list_pubsub_nodes(), xmpp_cli_purge_pubsub_nodes(), xmpp_do_set_debug(), xmpp_show_buddies(), and xmpp_show_clients().

#define ESS (  )     ((x) == 1 ? "" : "s")

In many cases we need to print singular or plural words depending on a count. This macro helps us e.g. printf("we have %d object%s", n, ESS(n));

Definition at line 59 of file cli.h.

Referenced by cli_realtime_destroy(), cli_realtime_update(), cli_realtime_update2(), group_show_channels(), handle_chanlist(), handle_cli_status(), handle_showcalls(), print_uptimestr(), and sip_show_channels().

#define RESULT_FAILURE   2

#define RESULT_SHOWUSAGE   1

#define RESULT_SUCCESS   0

Definition at line 40 of file cli.h.

Referenced by __iax2_show_peers(), agi_handle_command(), cli_fax_show_session(), dahdi_create_channel_range(), dahdi_create_channels(), handle_answer(), handle_autohangup(), handle_channelstatus(), handle_cli_ooh323_show_users(), handle_controlstreamfile(), handle_dbdel(), handle_dbdeltree(), handle_dbget(), handle_dbput(), handle_getdata(), handle_getoption(), handle_getvariable(), handle_getvariablefull(), handle_gosub(), handle_hangup(), handle_noop(), handle_queue_pause_member(), handle_queue_set_member_penalty(), handle_queue_set_member_ringinuse(), handle_recordfile(), handle_recvchar(), handle_recvtext(), handle_sayalpha(), handle_saydate(), handle_saydatetime(), handle_saydigits(), handle_saynumber(), handle_sayphonetic(), handle_saytime(), handle_sendimage(), handle_sendtext(), handle_setcallerid(), handle_setcontext(), handle_setextension(), handle_setmusic(), handle_setpriority(), handle_setvariable(), handle_showcalls(), handle_speechactivategrammar(), handle_speechcreate(), handle_speechdeactivategrammar(), handle_speechdestroy(), handle_speechloadgrammar(), handle_speechrecognize(), handle_speechset(), handle_speechunloadgrammar(), handle_streamfile(), handle_tddmode(), handle_verbose(), handle_waitfordigit(), locals_show(), logger_reload(), manager_data_get(), manager_iax2_show_netstats(), manager_iax2_show_peer_list(), manager_list_voicemail_users(), manager_queue_rule_show(), manager_queues_show(), manager_queues_status(), manager_queues_summary(), manager_voicemail_refresh(), reload_config(), set_member_paused(), and set_member_value().


Enumeration Type Documentation

calling arguments for new-style handlers.

Enumerator:
CLI_INIT 
CLI_GENERATE 
CLI_HANDLER 

Definition at line 151 of file cli.h.

00151                      {
00152    CLI_INIT = -2,    /* return the usage string */
00153    CLI_GENERATE = -3,   /* behave as 'generator', remap argv to struct ast_cli_args */
00154    CLI_HANDLER = -4, /* run the normal handler */
00155 };


Function Documentation

void ast_cli ( int  fd,
const char *  fmt,
  ... 
)

Definition at line 6 of file clicompat.c.

Referenced by __iax2_show_peers(), __say_cli_init(), _iax2_show_peers_one(), _sip_qualify_peer(), _sip_show_peer(), _sip_show_peers(), _sip_show_peers_one(), _skinny_show_device(), _skinny_show_devices(), _skinny_show_line(), _skinny_show_lines(), _stun_show_status(), agent_handle_logoff_cmd(), agent_handle_show_specific(), agent_show_requested(), alias_show(), aoc_cli_debug_enable(), ari_mkpasswd(), ari_show(), ari_show_user(), ari_show_users(), ast_cli_command_full(), ast_cli_netstats(), ast_console_toggle_mute(), ast_pbx_hangup_handler_headers(), ast_pbx_hangup_handler_show(), ast_sip_cli_traverse_objects(), bridge_show_specific_print_channel(), cc_cli_output_status(), cc_cli_print_monitor_stats(), channel_set_debug(), cli_console_active(), cli_console_answer(), cli_console_autoanswer(), cli_console_dial(), cli_console_flash(), cli_console_hangup(), cli_console_mute(), cli_console_sendtext(), cli_display_named_acl(), cli_display_named_acl_list(), cli_display_parking_global(), cli_display_parking_lot(), cli_display_parking_lot_list(), cli_fax_set_debug(), cli_fax_show_capabilities(), cli_fax_show_session(), cli_fax_show_sessions(), cli_fax_show_settings(), cli_fax_show_stats(), cli_fax_show_version(), cli_list_available(), cli_list_devices(), cli_match_char_tree(), cli_mute_unmute_helper(), cli_notify(), cli_odbc_read(), cli_odbc_write(), cli_on_contact(), cli_qualify(), cli_qualify_contacts(), cli_realtime_destroy(), cli_realtime_load(), cli_realtime_store(), cli_realtime_update(), cli_realtime_update2(), cli_register(), cli_show_channel(), cli_show_channels(), cli_show_endpoint_identifiers(), cli_show_settings(), cli_tps_ping(), cli_tps_report(), cli_unregister(), complete_ari_user(), console_active(), console_answer(), console_autoanswer(), console_boost(), console_cmd(), console_dial(), console_do_answer(), console_flash(), console_hangup(), console_mute(), console_sendtext(), console_transfer(), corosync_show_config(), corosync_show_members(), dahdi_create_channels(), dahdi_destroy_channels(), dahdi_set_dnd(), dahdi_set_hwgain(), dahdi_set_swgain(), dahdi_show_channel(), dahdi_show_channels(), dahdi_show_status(), dahdi_show_version(), data_provider_print_cli(), data_result_print_cli(), data_result_print_cli_node(), dialog_dump_func(), display_parked_call(), display_parking_lot(), display_results(), do_print(), dump_str_and_free(), dundi_do_lookup(), dundi_do_precache(), dundi_do_query(), dundi_flush(), dundi_set_debug(), dundi_show_cache(), dundi_show_entityid(), dundi_show_hints(), dundi_show_mappings(), dundi_show_peer(), dundi_show_peers(), dundi_show_precache(), dundi_show_requests(), dundi_show_trans(), dundi_store_history(), firmware_show_callback(), gen_events(), group_show_channels(), handle_bridge_kick_channel(), handle_bridge_show_all(), handle_bridge_show_specific(), handle_bridge_technology_show(), handle_bridge_technology_suspend(), handle_cdr_pgsql_status(), handle_chanlist(), handle_cli_agi_add_cmd(), handle_cli_agi_debug(), handle_cli_agi_dump_html(), handle_cli_agi_show(), handle_cli_cdr_mysql_status(), handle_cli_check_permissions(), handle_cli_confbridge_kick(), handle_cli_confbridge_list(), handle_cli_confbridge_list_item(), handle_cli_confbridge_lock(), handle_cli_confbridge_show_bridge_profile(), handle_cli_confbridge_show_bridge_profiles(), handle_cli_confbridge_show_menu(), handle_cli_confbridge_show_menus(), handle_cli_confbridge_show_user_profile(), handle_cli_confbridge_show_user_profiles(), handle_cli_confbridge_start_record(), handle_cli_confbridge_stop_record(), handle_cli_confbridge_unlock(), handle_cli_config_list(), handle_cli_core_show_channeltype(), handle_cli_core_show_channeltypes(), handle_cli_core_show_config_mappings(), handle_cli_core_show_file_formats(), handle_cli_core_show_translation(), handle_cli_database_del(), handle_cli_database_deltree(), handle_cli_database_get(), handle_cli_database_put(), handle_cli_database_show(), handle_cli_database_showkey(), handle_cli_debug(), handle_cli_devstate_change(), handle_cli_devstate_list(), handle_cli_dialplan_add_extension(), handle_cli_dialplan_add_ignorepat(), handle_cli_dialplan_add_include(), handle_cli_dialplan_reload(), handle_cli_dialplan_remove_context(), handle_cli_dialplan_remove_extension(), handle_cli_dialplan_remove_ignorepat(), handle_cli_dialplan_remove_include(), handle_cli_dialplan_save(), handle_cli_dynamic_level_test(), handle_cli_file_convert(), handle_cli_iax2_provision(), handle_cli_iax2_prune_realtime(), handle_cli_iax2_set_debug(), handle_cli_iax2_set_debug_jb(), handle_cli_iax2_set_debug_trunk(), handle_cli_iax2_set_mtu(), handle_cli_iax2_show_cache(), handle_cli_iax2_show_callno_limits(), handle_cli_iax2_show_channels(), handle_cli_iax2_show_firmware(), handle_cli_iax2_show_netstats(), handle_cli_iax2_show_peer(), handle_cli_iax2_show_registry(), handle_cli_iax2_show_stats(), handle_cli_iax2_show_threads(), handle_cli_iax2_show_users(), handle_cli_iax2_unregister(), handle_cli_indication_show(), handle_cli_keys_show(), handle_cli_misdn_reload(), handle_cli_misdn_send_digit(), handle_cli_misdn_send_display(), handle_cli_misdn_set_debug(), handle_cli_misdn_show_channels(), handle_cli_misdn_show_config(), handle_cli_misdn_show_port(), handle_cli_misdn_show_ports_stats(), handle_cli_misdn_show_stacks(), handle_cli_misdn_toggle_echocancel(), handle_cli_mixmonitor(), handle_cli_mobile_cusd(), handle_cli_mobile_rfcomm(), handle_cli_mobile_search(), handle_cli_mobile_show_devices(), handle_cli_moh_show_classes(), handle_cli_moh_show_files(), handle_cli_odbc_show(), handle_cli_ooh323_set_debug(), handle_cli_ooh323_show_config(), handle_cli_ooh323_show_gk(), handle_cli_ooh323_show_peer(), handle_cli_ooh323_show_peers(), handle_cli_ooh323_show_user(), handle_cli_ooh323_show_users(), handle_cli_osp_show(), handle_cli_performance_test(), handle_cli_presencestate_change(), handle_cli_presencestate_list(), handle_cli_realtime_mysql_cache(), handle_cli_realtime_mysql_status(), handle_cli_realtime_pgsql_cache(), handle_cli_realtime_pgsql_status(), handle_cli_recalc(), handle_cli_refresh(), handle_cli_rtcp_set_debug(), handle_cli_rtcp_set_stats(), handle_cli_rtp_set_debug(), handle_cli_sched_bench(), handle_cli_show_config(), handle_cli_show_permissions(), handle_cli_show_sqlite_status(), handle_cli_sound_show(), handle_cli_sounds_show(), handle_cli_sqlite_show_tables(), handle_cli_status(), handle_cli_stun_set_debug(), handle_cli_submit(), handle_cli_test_locales(), handle_cli_transcoder_show(), handle_cli_udptl_set_debug(), handle_cli_ulimit(), handle_cli_wait_fullybooted(), handle_commandcomplete(), handle_commandmatchesarray(), handle_commandnummatches(), handle_core_set_debug_channel(), handle_core_show_image_formats(), handle_dahdi_show_cadences(), handle_debug(), handle_debug_dialplan(), handle_feature_show(), handle_help(), handle_load(), handle_logger_add_channel(), handle_logger_reload(), handle_logger_remove_channel(), handle_logger_rotate(), handle_logger_set_level(), handle_logger_show_channels(), handle_manager_show_settings(), handle_mandebug(), handle_mgcp_audit_endpoint(), handle_mgcp_set_debug(), handle_mgcp_show_endpoints(), handle_minivm_list_templates(), handle_minivm_reload(), handle_minivm_show_settings(), handle_minivm_show_stats(), handle_minivm_show_users(), handle_minivm_show_zones(), handle_modlist(), handle_pjsip_list_ciphers(), handle_pjsip_show_version(), handle_queue_add_member(), handle_queue_pause_member(), handle_queue_remove_member(), handle_queue_rule_show(), handle_queue_set_member_penalty(), handle_queue_set_member_ringinuse(), handle_redirect(), handle_reload(), handle_restart_when_convenient(), handle_set_chanvar(), handle_set_extenpatternmatchnew(), handle_set_global(), handle_show_application(), handle_show_applications(), handle_show_calendar(), handle_show_calendars(), handle_show_calendars_types(), handle_show_chanvar(), handle_show_dialplan(), handle_show_function(), handle_show_functions(), handle_show_globals(), handle_show_hangup_channel(), handle_show_hint(), handle_show_hints(), handle_show_http(), handle_show_parking_lot_cmd(), handle_show_profile(), handle_show_routes(), handle_show_settings(), handle_show_switches(), handle_show_threads(), handle_show_translation_path(), handle_show_translation_table(), handle_show_version_files(), handle_showcalls(), handle_showchan(), handle_showmanager(), handle_showmanagers(), handle_showmancmd(), handle_showmancmds(), handle_showmanconn(), handle_showmaneventq(), handle_skel_show_config(), handle_skel_show_games(), handle_skel_show_levels(), handle_skinny_show_settings(), handle_softhangup(), handle_stop_when_convenient(), handle_unload(), handle_unset_extenpatternmatchnew(), handle_version(), handle_voicemail_reload(), handle_voicemail_show_users(), handle_voicemail_show_zones(), help1(), help_workhorse(), iax_show_provisioning(), locals_show(), meetme_show_cmd(), modlist_modentry(), orig_app(), orig_exten(), output_tests(), peer_dump_func(), pjsip_enable_logger_host(), pjsip_set_logger(), pktccops_debug(), pktccops_gatedel(), pktccops_gateset(), pktccops_show_cmtses(), pktccops_show_gates(), pktccops_show_pools(), print_app_docs(), print_applicationmap(), print_bc_info(), print_featuregroup(), print_featuregroups(), print_group(), print_named_groups(), print_stats_cb(), print_uptimestr(), realtime_ldap_status(), route_list_cb(), rtcp_do_debug_ip(), rtp_do_debug_ip(), show_channels_cb(), show_chanstats_cb(), show_codec(), show_codecs(), show_config_description(), show_debug_helper(), show_dialplan_helper(), show_license(), show_sound_info_cb(), show_sounds_cb(), show_users_cb(), show_users_realtime(), show_warranty(), sip_cli_notify(), sip_do_debug(), sip_do_debug_ip(), sip_do_debug_peer(), sip_prune_realtime(), sip_set_history(), sip_show_channel(), sip_show_channels(), sip_show_channelstats(), sip_show_domains(), sip_show_history(), sip_show_inuse(), sip_show_mwi(), sip_show_objects(), sip_show_registry(), sip_show_sched(), sip_show_settings(), sip_show_tcp(), sip_show_user(), sip_show_users(), sip_unregister(), sla_show_stations(), sla_show_trunks(), spandsp_fax_cli_show_capabilities(), spandsp_fax_cli_show_session(), spandsp_fax_cli_show_stats(), status_debug_verbose(), timing_test(), unistim_do_debug(), unistim_show_devices(), unistim_show_info(), unistim_sp(), xmpp_cli_create_collection(), xmpp_cli_create_leafnode(), xmpp_cli_delete_pubsub_node(), xmpp_cli_list_pubsub_nodes(), xmpp_cli_purge_pubsub_nodes(), xmpp_do_set_debug(), xmpp_show_buddies(), and xmpp_show_clients().

00007 {
00008 }

int ast_cli_command_full ( int  uid,
int  gid,
int  fd,
const char *  s 
)

Interprets a command Interpret a command s, sending output to fd if uid:gid has permissions to run this command. uid = CLI_NO_PERMS to avoid checking user permissions gid = CLI_NO_PERMS to avoid checking group permissions.

Parameters:
uid User ID that is trying to run the command.
gid Group ID that is trying to run the command.
fd pipe
s incoming string
Return values:
0 on success
-1 on failure

Definition at line 2677 of file main/cli.c.

References args, ast_atomic_fetchadd_int(), ast_cli(), ast_free, ast_join, AST_MAX_ARGS, AST_RWLIST_RDLOCK, AST_RWLIST_UNLOCK, CLI_FAILURE, CLI_HANDLER, cli_has_permissions(), CLI_SHOWUSAGE, e, ast_cli_args::fd, find_best(), find_cli(), ast_cli_entry::handler, ast_cli_entry::inuse, NULL, parse_args(), retval, S_OR, tmp(), and ast_cli_entry::usage.

Referenced by ast_cli_command_multiple_full().

02678 {
02679    const char *args[AST_MAX_ARGS + 1];
02680    struct ast_cli_entry *e;
02681    int x;
02682    char *duplicate = parse_args(s, &x, args + 1, AST_MAX_ARGS, NULL);
02683    char tmp[AST_MAX_ARGS + 1];
02684    char *retval = NULL;
02685    struct ast_cli_args a = {
02686       .fd = fd, .argc = x, .argv = args+1 };
02687 
02688    if (duplicate == NULL)
02689       return -1;
02690 
02691    if (x < 1)  /* We need at least one entry, otherwise ignore */
02692       goto done;
02693 
02694    AST_RWLIST_RDLOCK(&helpers);
02695    e = find_cli(args + 1, 0);
02696    if (e)
02697       ast_atomic_fetchadd_int(&e->inuse, 1);
02698    AST_RWLIST_UNLOCK(&helpers);
02699    if (e == NULL) {
02700       ast_cli(fd, "No such command '%s' (type 'core show help %s' for other possible commands)\n", s, find_best(args + 1));
02701       goto done;
02702    }
02703 
02704    ast_join(tmp, sizeof(tmp), args + 1);
02705    /* Check if the user has rights to run this command. */
02706    if (!cli_has_permissions(uid, gid, tmp)) {
02707       ast_cli(fd, "You don't have permissions to run '%s' command\n", tmp);
02708       ast_free(duplicate);
02709       return 0;
02710    }
02711 
02712    /*
02713     * Within the handler, argv[-1] contains a pointer to the ast_cli_entry.
02714     * Remember that the array returned by parse_args is NULL-terminated.
02715     */
02716    args[0] = (char *)e;
02717 
02718    retval = e->handler(e, CLI_HANDLER, &a);
02719 
02720    if (retval == CLI_SHOWUSAGE) {
02721       ast_cli(fd, "%s", S_OR(e->usage, "Invalid usage, but no usage information available.\n"));
02722    } else {
02723       if (retval == CLI_FAILURE)
02724          ast_cli(fd, "Command '%s' failed.\n", s);
02725    }
02726    ast_atomic_fetchadd_int(&e->inuse, -1);
02727 done:
02728    ast_free(duplicate);
02729    return 0;
02730 }

int ast_cli_command_multiple_full ( int  uid,
int  gid,
int  fd,
size_t  size,
const char *  s 
)

Executes multiple CLI commands Interpret strings separated by NULL and execute each one, sending output to fd if uid has permissions, uid = CLI_NO_PERMS to avoid checking users permissions. gid = CLI_NO_PERMS to avoid checking group permissions.

Parameters:
uid User ID that is trying to run the command.
gid Group ID that is trying to run the command.
fd pipe
size is the total size of the string
s incoming string
Return values:
number of commands executed

Definition at line 2732 of file main/cli.c.

References ast_cli_command_full().

Referenced by netconsole().

02733 {
02734    char cmd[512];
02735    int x, y = 0, count = 0;
02736 
02737    for (x = 0; x < size; x++) {
02738       cmd[y] = s[x];
02739       y++;
02740       if (s[x] == '\0') {
02741          ast_cli_command_full(uid, gid, fd, cmd);
02742          y = 0;
02743          count++;
02744       }
02745    }
02746    return count;
02747 }

char* ast_cli_complete ( const char *  word,
const char *const   choices[],
int  pos 
)

Helper function to generate cli entries from a NULL-terminated array. Returns the n-th matching entry from the array, or NULL if not found. Can be used to implement generate() for static entries as below (in this example we complete the word in position 2):

    char *my_generate(const char *line, const char *word, int pos, int n)
    {
        static const char * const choices[] = { "one", "two", "three", NULL };
   if (pos == 2)
         return ast_cli_complete(word, choices, n);
   else
      return NULL;
    }

Definition at line 1685 of file main/cli.c.

References ast_strdup, ast_strlen_zero, len(), and NULL.

Referenced by handle_cc_kill(), handle_cli_core_show_translation(), handle_cli_devstate_change(), handle_cli_iax2_prune_realtime(), handle_cli_presencestate_change(), handle_orig(), handle_show_applications(), and sip_prune_realtime().

01686 {
01687    int i, which = 0, len;
01688    len = ast_strlen_zero(word) ? 0 : strlen(word);
01689 
01690    for (i = 0; choices[i]; i++) {
01691       if ((!len || !strncasecmp(word, choices[i], len)) && ++which > state)
01692          return ast_strdup(choices[i]);
01693    }
01694    return NULL;
01695 }

char** ast_cli_completion_matches ( const char *  ,
const char *   
)

Generates a NULL-terminated array of strings that 1) begin with the string in the second parameter, and 2) are valid in a command after the string in the first parameter.

The first entry (offset 0) of the result is the longest common substring in the results, useful to extend the string that has been completed. Subsequent entries are all possible values, followed by a NULL. All strings and the array itself are malloc'ed and must be freed by the caller.

Definition at line 2515 of file main/cli.c.

References ast_cli_generator(), ast_copy_string(), ast_free, ast_malloc, ast_realloc, destroy_match_list(), and NULL.

Referenced by cli_complete(), and handle_commandmatchesarray().

02516 {
02517    char **match_list = NULL, *retstr, *prevstr;
02518    char **new_list;
02519    size_t match_list_len, max_equal, which, i;
02520    int matches = 0;
02521 
02522    /* leave entry 0 free for the longest common substring */
02523    match_list_len = 1;
02524    while ((retstr = ast_cli_generator(text, word, matches)) != NULL) {
02525       if (matches + 1 >= match_list_len) {
02526          match_list_len <<= 1;
02527          new_list = ast_realloc(match_list, match_list_len * sizeof(*match_list));
02528          if (!new_list) {
02529             destroy_match_list(match_list, matches);
02530             return NULL;
02531          }
02532          match_list = new_list;
02533       }
02534       match_list[++matches] = retstr;
02535    }
02536 
02537    if (!match_list) {
02538       return match_list; /* NULL */
02539    }
02540 
02541    /* Find the longest substring that is common to all results
02542     * (it is a candidate for completion), and store a copy in entry 0.
02543     */
02544    prevstr = match_list[1];
02545    max_equal = strlen(prevstr);
02546    for (which = 2; which <= matches; which++) {
02547       for (i = 0; i < max_equal && toupper(prevstr[i]) == toupper(match_list[which][i]); i++)
02548          continue;
02549       max_equal = i;
02550    }
02551 
02552    retstr = ast_malloc(max_equal + 1);
02553    if (!retstr) {
02554       destroy_match_list(match_list, matches);
02555       return NULL;
02556    }
02557    ast_copy_string(retstr, match_list[1], max_equal + 1);
02558    match_list[0] = retstr;
02559 
02560    /* ensure that the array is NULL terminated */
02561    if (matches + 1 >= match_list_len) {
02562       new_list = ast_realloc(match_list, (match_list_len + 1) * sizeof(*match_list));
02563       if (!new_list) {
02564          ast_free(retstr);
02565          destroy_match_list(match_list, matches);
02566          return NULL;
02567       }
02568       match_list = new_list;
02569    }
02570    match_list[matches + 1] = NULL;
02571 
02572    return match_list;
02573 }

char* ast_cli_generator ( const char *  ,
const char *  ,
int   
)

Readline madness Useful for readline, that's about it.

Return values:
0 on success
-1 on failure

Definition at line 2672 of file main/cli.c.

References __ast_cli_generator().

Referenced by ast_cli_completion_matches(), ast_cli_generatornummatches(), AST_TEST_DEFINE(), cli_alias_passthrough(), and handle_cli_check_permissions().

02673 {
02674    return __ast_cli_generator(text, word, state, 1);
02675 }

int ast_cli_generatornummatches ( const char *  ,
const char *   
)

Return the number of unique matches for the generator.

Definition at line 2486 of file main/cli.c.

References ast_cli_generator(), ast_free, buf, and NULL.

Referenced by handle_commandnummatches().

02487 {
02488    int matches = 0, i = 0;
02489    char *buf = NULL, *oldbuf = NULL;
02490 
02491    while ((buf = ast_cli_generator(text, word, i++))) {
02492       if (!oldbuf || strcmp(buf,oldbuf))
02493          matches++;
02494       if (oldbuf)
02495          ast_free(oldbuf);
02496       oldbuf = buf;
02497    }
02498    if (oldbuf)
02499       ast_free(oldbuf);
02500    return matches;
02501 }

int ast_cli_register ( struct ast_cli_entry e  ) 

Registers a command or an array of commands.

Parameters:
e which cli entry to register. Register your own command
Return values:
0 on success
-1 on failure

Definition at line 2305 of file main/cli.c.

References __ast_cli_register(), and NULL.

Referenced by ast_cel_engine_init(), ast_cli_register_multiple(), dnsmgr_init(), load_config(), and load_module().

02306 {
02307    return __ast_cli_register(e, NULL);
02308 }

int ast_cli_register_multiple ( struct ast_cli_entry e,
int  len 
)

int ast_cli_unregister ( struct ast_cli_entry e  ) 

Unregisters a command or an array of commands.

Parameters:
e which cli entry to unregister Unregister your own command. You must pass a completed ast_cli_entry structure
Returns:
0

Definition at line 2299 of file main/cli.c.

References __ast_cli_unregister(), and NULL.

Referenced by alias_unregister_cb(), ast_cli_unregister_multiple(), cel_engine_cleanup(), dnsmgr_shutdown(), and unload_module().

02300 {
02301    return __ast_cli_unregister(e, NULL);
02302 }

int ast_cli_unregister_multiple ( struct ast_cli_entry e,
int  len 
)

char* ast_complete_channels ( const char *  line,
const char *  word,
int  pos,
int  state,
int  rpos 
)

Command completion for the list of active channels.

This can be called from a CLI command completion function that wants to complete from the list of active channels. 'rpos' is the required position in the command. This function will return NULL immediately if 'rpos' is not the same as the current position, 'pos'.

Definition at line 1697 of file main/cli.c.

References ao2_cleanup, ao2_iterator_destroy(), ao2_iterator_init(), ao2_iterator_next, ao2_ref, ast_channel_cache(), ast_channel_snapshot_type(), ast_strdup, ast_channel_snapshot::name, NULL, RAII_VAR, stasis_cache_dump(), and stasis_message_data().

Referenced by complete_ch(), handle_cli_agi_add_cmd(), handle_cli_mixmonitor(), handle_core_set_debug_channel(), handle_redirect(), handle_set_chanvar(), handle_show_chanvar(), handle_show_hangup_all(), handle_show_hangup_channel(), handle_showchan(), and handle_softhangup().

01698 {
01699    int wordlen = strlen(word), which = 0;
01700    RAII_VAR(struct ao2_container *, cached_channels, NULL, ao2_cleanup);
01701    char *ret = NULL;
01702    struct ao2_iterator iter;
01703    struct stasis_message *msg;
01704 
01705    if (pos != rpos) {
01706       return NULL;
01707    }
01708 
01709    if (!(cached_channels = stasis_cache_dump(ast_channel_cache(), ast_channel_snapshot_type()))) {
01710       return NULL;
01711    }
01712 
01713    iter = ao2_iterator_init(cached_channels, 0);
01714    for (; (msg = ao2_iterator_next(&iter)); ao2_ref(msg, -1)) {
01715       struct ast_channel_snapshot *snapshot = stasis_message_data(msg);
01716 
01717       if (!strncasecmp(word, snapshot->name, wordlen) && (++which > state)) {
01718          ret = ast_strdup(snapshot->name);
01719          ao2_ref(msg, -1);
01720          break;
01721       }
01722    }
01723    ao2_iterator_destroy(&iter);
01724 
01725    return ret;
01726 }


Generated on Thu Apr 16 06:30:13 2015 for Asterisk - The Open Source Telephony Project by  doxygen 1.5.6