Merged revisions 104095 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r104095 | file | 2008-02-25 17:37:20 -0400 (Mon, 25 Feb 2008) | 6 lines Make it so a users.conf user creates both a SIP peer and a SIP user. The user will be used for inbound authentication for the device, and peer will be used for placing calls to the device. (closes issue #9044) Reported by: queuetue Patches: sip-gui-friend.diff uploaded by qwell (license 4) ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@104096 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
parent
84e302bfe0
commit
b5a5db340c
1 changed files with 11 additions and 5 deletions
|
@ -1880,7 +1880,7 @@ static void sip_dump_history(struct sip_pvt *dialog);
|
||||||
/*--- Device object handling */
|
/*--- Device object handling */
|
||||||
static struct sip_peer *temp_peer(const char *name);
|
static struct sip_peer *temp_peer(const char *name);
|
||||||
static struct sip_peer *build_peer(const char *name, struct ast_variable *v, struct ast_variable *alt, int realtime);
|
static struct sip_peer *build_peer(const char *name, struct ast_variable *v, struct ast_variable *alt, int realtime);
|
||||||
static struct sip_user *build_user(const char *name, struct ast_variable *v, int realtime);
|
static struct sip_user *build_user(const char *name, struct ast_variable *v, struct ast_variable *alt, int realtime);
|
||||||
static int update_call_counter(struct sip_pvt *fup, int event);
|
static int update_call_counter(struct sip_pvt *fup, int event);
|
||||||
static void sip_destroy_peer(struct sip_peer *peer);
|
static void sip_destroy_peer(struct sip_peer *peer);
|
||||||
static void sip_destroy_user(struct sip_user *user);
|
static void sip_destroy_user(struct sip_user *user);
|
||||||
|
@ -3767,7 +3767,7 @@ static struct sip_user *realtime_user(const char *username)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
user = build_user(username, var, !ast_test_flag(&global_flags[1], SIP_PAGE2_RTCACHEFRIENDS));
|
user = build_user(username, var, NULL, !ast_test_flag(&global_flags[1], SIP_PAGE2_RTCACHEFRIENDS));
|
||||||
|
|
||||||
if (!user) { /* No user found */
|
if (!user) { /* No user found */
|
||||||
ast_variables_destroy(var);
|
ast_variables_destroy(var);
|
||||||
|
@ -19349,7 +19349,7 @@ static struct ast_variable *add_var(const char *buf, struct ast_variable *list)
|
||||||
}
|
}
|
||||||
|
|
||||||
/*! \brief Initiate a SIP user structure from configuration (configuration or realtime) */
|
/*! \brief Initiate a SIP user structure from configuration (configuration or realtime) */
|
||||||
static struct sip_user *build_user(const char *name, struct ast_variable *v, int realtime)
|
static struct sip_user *build_user(const char *name, struct ast_variable *v, struct ast_variable *alt, int realtime)
|
||||||
{
|
{
|
||||||
struct sip_user *user;
|
struct sip_user *user;
|
||||||
int format;
|
int format;
|
||||||
|
@ -19385,7 +19385,7 @@ static struct sip_user *build_user(const char *name, struct ast_variable *v, int
|
||||||
strcpy(user->language, default_language);
|
strcpy(user->language, default_language);
|
||||||
strcpy(user->mohinterpret, default_mohinterpret);
|
strcpy(user->mohinterpret, default_mohinterpret);
|
||||||
strcpy(user->mohsuggest, default_mohsuggest);
|
strcpy(user->mohsuggest, default_mohsuggest);
|
||||||
for (; v; v = v->next) {
|
for (; v || ((v = alt) && !(alt=NULL)); v = v->next) {
|
||||||
if (handle_common_options(&userflags[0], &mask[0], v))
|
if (handle_common_options(&userflags[0], &mask[0], v))
|
||||||
continue;
|
continue;
|
||||||
if (!strcasecmp(v->name, "context")) {
|
if (!strcasecmp(v->name, "context")) {
|
||||||
|
@ -20522,6 +20522,12 @@ static int reload_config(enum channelreloadreason reason)
|
||||||
hassip = ast_variable_retrieve(ucfg, cat, "hassip");
|
hassip = ast_variable_retrieve(ucfg, cat, "hassip");
|
||||||
registersip = ast_variable_retrieve(ucfg, cat, "registersip");
|
registersip = ast_variable_retrieve(ucfg, cat, "registersip");
|
||||||
if (ast_true(hassip) || (!hassip && genhassip)) {
|
if (ast_true(hassip) || (!hassip && genhassip)) {
|
||||||
|
user = build_user(cat, gen, ast_variable_browse(ucfg, cat), 0);
|
||||||
|
if (user) {
|
||||||
|
ASTOBJ_CONTAINER_LINK(&userl,user);
|
||||||
|
ASTOBJ_UNREF(user, sip_destroy_user);
|
||||||
|
user_count++;
|
||||||
|
}
|
||||||
peer = build_peer(cat, gen, ast_variable_browse(ucfg, cat), 0);
|
peer = build_peer(cat, gen, ast_variable_browse(ucfg, cat), 0);
|
||||||
if (peer) {
|
if (peer) {
|
||||||
ast_device_state_changed("SIP/%s", peer->name);
|
ast_device_state_changed("SIP/%s", peer->name);
|
||||||
|
@ -20583,7 +20589,7 @@ static int reload_config(enum channelreloadreason reason)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (is_user) {
|
if (is_user) {
|
||||||
user = build_user(cat, ast_variable_browse(cfg, cat), 0);
|
user = build_user(cat, ast_variable_browse(cfg, cat), NULL, 0);
|
||||||
if (user) {
|
if (user) {
|
||||||
ASTOBJ_CONTAINER_LINK(&userl, user);
|
ASTOBJ_CONTAINER_LINK(&userl, user);
|
||||||
unref_user(user);
|
unref_user(user);
|
||||||
|
|
Loading…
Reference in a new issue