mirror of https://github.com/sipwise/kamailio.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
1.8 KiB
72 lines
1.8 KiB
#include "rls_auth.h"
|
|
|
|
#if 0
|
|
|
|
static int get_user_from_uri(str_t *uri, str_t *user)
|
|
{
|
|
char *a;
|
|
char *d;
|
|
char *s;
|
|
|
|
/* we can't use SER's parser - the uri may have not the protocol prefix! */
|
|
|
|
str_clear(user);
|
|
if (uri->len > 0) {
|
|
d = strchr(uri->s, ':');
|
|
if (d) s = d + 1;
|
|
else s = uri->s;
|
|
a = strchr(s, '@');
|
|
if (a) {
|
|
user->s = s;
|
|
user->len = a - s;
|
|
return 0;
|
|
}
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
static authorization_result_t authorize_implicit(struct _subscription_data_t *s)
|
|
{
|
|
str_t user, list;
|
|
str_t list_user, list_rest;
|
|
str_t appendix = { s: "-list", len: 5 };
|
|
|
|
if (get_user_from_uri(&s->subscriber, &user) != 0)
|
|
return auth_unresolved; /* we can't decide - it is not "implicit" uri */
|
|
if (get_user_from_uri(&s->record_id, &list) != 0)
|
|
return auth_unresolved; /* we can't decide - it is not "implicit" uri */
|
|
|
|
if (list.len <= appendix.len)
|
|
return auth_unresolved; /* we can't decide - it is not "implicit" uri */
|
|
|
|
list_rest.len = appendix.len;
|
|
list_rest.s = list.s + list.len - appendix.len;
|
|
if (str_case_equals(&list_rest, &appendix) != 0)
|
|
return auth_unresolved; /* we can't decide - it is not "implicit" uri */
|
|
|
|
/* now we know, that it ends with implicit uri ending */
|
|
|
|
list_user.s = list.s;
|
|
list_user.len = list.len - appendix.len;
|
|
if (str_case_equals(&user, &list_user) != 0) return auth_rejected;
|
|
else return auth_granted;
|
|
}
|
|
|
|
#endif
|
|
|
|
authorization_result_t rls_authorize_subscription(struct _subscription_data_t *s)
|
|
{
|
|
switch (rls_auth_params.type) {
|
|
case rls_auth_none:
|
|
return auth_granted; /* ! no auth done ! */
|
|
case rls_auth_implicit:
|
|
return auth_granted; /* ! no auth done ! */
|
|
/* return authorize_implicit(s); */
|
|
case rls_auth_xcap:
|
|
LOG(L_ERR, "XCAP auth for resource lists not done yet!\n");
|
|
return auth_unresolved;
|
|
}
|
|
return auth_unresolved;
|
|
}
|
|
|