From ada147349f673e5459cc80696c9c071a7aa08b27 Mon Sep 17 00:00:00 2001 From: Andreas Eversberg Date: Sat, 20 Mar 2021 16:11:06 +0100 Subject: Add option to change User-Agent tag --- src/sip/main.c | 9 ++++++++- src/sip/sip.c | 3 ++- src/sip/sip.h | 2 +- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/sip/main.c b/src/sip/main.c index de528f4..8b470be 100644 --- a/src/sip/main.c +++ b/src/sip/main.c @@ -35,6 +35,7 @@ int sofia_debug = 0; int send_no_ringing_after_progress = 0; int receive_no_ringing_after_progress = 0; const char *name = "sip"; +const char *user_agent = "osmo-cc-sip-endpoint"; const char *local_user = NULL; const char *local_peer = NULL; const char *remote_user = NULL; @@ -128,6 +129,8 @@ static void print_help() printf(" --stun-interval (default = %d seconds)\n", stun_interval); printf(" --expires | 0 (default = %d seconds)\n", expires); printf(" Alter intervals, if needed.\n"); + printf(" -U --user-endpoint \n"); + printf(" Any string that is used as user agent. (default = '%s')\n", user_agent); printf(" -C --cc \"\" [--cc ...]\n"); printf(" Pass arguments to Osmo-CC endpoint. Use '-cc help' for description.\n"); } @@ -166,6 +169,7 @@ static void add_options(void) option_add(OPT_OPT_INTER, "options-interval", 1); option_add(OPT_STUN_INTER, "stun-interval", 1); option_add(OPT_EXPIRES, "expires", 1); + option_add('U', "user-agent", 1); option_add('C', "cc", 1); } @@ -266,6 +270,9 @@ static int handle_options(int short_option, int argi, char **argv) case OPT_EXPIRES: expires = atoi(argv[argi]); break; + case 'U': + user_agent = options_strdup(argv[argi]); + break; case 'C': if (!strcasecmp(argv[argi], "help")) { osmo_cc_help(); @@ -328,7 +335,7 @@ int main(int argc, char *argv[]) } if (!cc_argc || !!strncasecmp(cc_argv[0], "help", 4)) { - sip_ep = sip_endpoint_create(send_no_ringing_after_progress, receive_no_ringing_after_progress, name, local_user, local_peer, remote_user, remote_peer, asserted_id, local_register, remote_register, register_user, register_peer, local_auth, remote_auth, auth_user, auth_password, auth_realm, public_ip, stun_server, register_interval, options_interval, stun_interval, expires); + sip_ep = sip_endpoint_create(user_agent, send_no_ringing_after_progress, receive_no_ringing_after_progress, name, local_user, local_peer, remote_user, remote_peer, asserted_id, local_register, remote_register, register_user, register_peer, local_auth, remote_auth, auth_user, auth_password, auth_realm, public_ip, stun_server, register_interval, options_interval, stun_interval, expires); if (!sip_ep) { PDEBUG(DSIP, DEBUG_ERROR, "SIP initializing failed!\n"); goto error; diff --git a/src/sip/sip.c b/src/sip/sip.c index e18c423..bda9261 100644 --- a/src/sip/sip.c +++ b/src/sip/sip.c @@ -1657,7 +1657,7 @@ static void register_option_timeout(struct timer *timer) TAG_END()); } -sip_endpoint_t *sip_endpoint_create(int send_no_ringing_after_progress, int receive_no_ringing_after_progress, const char *name, const char *local_user, const char *local_peer, const char *remote_user, const char *remote_peer, const char *asserted_id, int local_register, int remote_register, const char *register_user, const char *register_peer, int authenticate_local, int authenticate_remote, const char *auth_user, const char *auth_password, const char *auth_realm, const char *public_ip, const char *stun_server, int register_interval, int options_interval, int stun_interval, int expires) +sip_endpoint_t *sip_endpoint_create(const char *user_agent, int send_no_ringing_after_progress, int receive_no_ringing_after_progress, const char *name, const char *local_user, const char *local_peer, const char *remote_user, const char *remote_peer, const char *asserted_id, int local_register, int remote_register, const char *register_user, const char *register_peer, int authenticate_local, int authenticate_remote, const char *auth_user, const char *auth_password, const char *auth_realm, const char *public_ip, const char *stun_server, int register_interval, int options_interval, int stun_interval, int expires) { sip_endpoint_t *sip_ep; char local[256]; @@ -1721,6 +1721,7 @@ sip_endpoint_t *sip_endpoint_create(int send_no_ringing_after_progress, int rece goto error; } nua_set_params(sip_ep->nua, + SIPTAG_USER_AGENT_STR(user_agent), SIPTAG_ALLOW_STR("REGISTER,INVITE,ACK,BYE,CANCEL,OPTIONS,NOTIFY,INFO"), NUTAG_APPL_METHOD("REGISTER"), NUTAG_APPL_METHOD("INVITE"), diff --git a/src/sip/sip.h b/src/sip/sip.h index a1ca7bb..823b91e 100644 --- a/src/sip/sip.h +++ b/src/sip/sip.h @@ -108,7 +108,7 @@ typedef struct sip_call { } call_t; void cc_message(osmo_cc_endpoint_t *ep, uint32_t callref, osmo_cc_msg_t *msg); -sip_endpoint_t *sip_endpoint_create(int send_no_ringing_after_progress, int receive_no_ringing_after_progress, const char *name, const char *local_user, const char *local_peer, const char *remote_user, const char *remote_peer, const char *asserted_id, int local_register, int remote_register, const char *register_user, const char *register_peer, int authenticate_local, int authenticate_remote, const char *auth_user, const char *auth_password, const char *auth_realm, const char *public_ip, const char *stun_server, int register_interval, int options_interval, int stun_interval, int expires); +sip_endpoint_t *sip_endpoint_create(const char *user_agent, int send_no_ringing_after_progress, int receive_no_ringing_after_progress, const char *name, const char *local_user, const char *local_peer, const char *remote_user, const char *remote_peer, const char *asserted_id, int local_register, int remote_register, const char *register_user, const char *register_peer, int authenticate_local, int authenticate_remote, const char *auth_user, const char *auth_password, const char *auth_realm, const char *public_ip, const char *stun_server, int register_interval, int options_interval, int stun_interval, int expires); void sip_endpoint_destroy(sip_endpoint_t *sip_ep); int sip_init(int debug_level); void sip_exit(void); -- cgit v1.2.3