Commit 2eb17045 authored by Simon Morlat's avatar Simon Morlat

add domain name to auth events

parent a3227d79
......@@ -89,6 +89,9 @@ BELLESIP_EXPORT void belle_sip_auth_event_set_userid(belle_sip_auth_event_t* eve
BELLESIP_EXPORT const char* belle_sip_auth_event_get_realm(const belle_sip_auth_event_t* event);
BELLESIP_EXPORT void belle_sip_auth_event_set_realm(belle_sip_auth_event_t* event, const char* value);
BELLESIP_EXPORT const char* belle_sip_auth_event_get_domain(const belle_sip_auth_event_t* event);
BELLESIP_EXPORT void belle_sip_auth_event_set_domain(belle_sip_auth_event_t* event, const char* value);
BELLESIP_EXPORT const char* belle_sip_auth_event_get_passwd(const belle_sip_auth_event_t* event);
BELLESIP_EXPORT void belle_sip_auth_event_set_passwd(belle_sip_auth_event_t* event, const char* value);
......
......@@ -25,21 +25,26 @@ GET_SET_STRING(belle_sip_auth_event,username)
GET_SET_STRING(belle_sip_auth_event,userid)
GET_SET_STRING(belle_sip_auth_event,realm)
GET_SET_STRING(belle_sip_auth_event,domain)
GET_SET_STRING(belle_sip_auth_event,passwd)
GET_SET_STRING(belle_sip_auth_event,ha1)
GET_SET_STRING(belle_sip_auth_event,distinguished_name)
belle_sip_auth_event_t* belle_sip_auth_event_create(const char* realm,const char* username) {
belle_sip_auth_event_t* belle_sip_auth_event_create(const char* realm, const belle_sip_header_from_t *from) {
belle_sip_auth_event_t* result = belle_sip_new0(belle_sip_auth_event_t);
belle_sip_uri_t *uri=belle_sip_header_address_get_uri(BELLE_SIP_HEADER_ADDRESS(from));
belle_sip_auth_event_set_realm(result,realm);
belle_sip_auth_event_set_username(result,username);
belle_sip_auth_event_set_username(result,belle_sip_uri_get_user(uri));
belle_sip_auth_event_set_domain(result,belle_sip_uri_get_host(uri));
return result;
}
void belle_sip_auth_event_destroy(belle_sip_auth_event_t* event) {
DESTROY_STRING(event,username);
DESTROY_STRING(event,userid);
DESTROY_STRING(event,realm);
DESTROY_STRING(event,domain);
DESTROY_STRING(event,passwd);
DESTROY_STRING(event,ha1);
DESTROY_STRING(event,distinguished_name);
......@@ -63,11 +68,13 @@ void belle_sip_auth_event_set_client_certificates_chain(belle_sip_auth_event_t*
belle_sip_signing_key_t* belle_sip_auth_event_get_signing_key(const belle_sip_auth_event_t* event) {
return event->key;
}
void belle_sip_auth_event_set_signing_key(belle_sip_auth_event_t* event, belle_sip_signing_key_t* value) {
if (event->key) belle_sip_object_unref(event->key);
event->key=value;
if (event->key) belle_sip_object_ref(event->key);
}
belle_sip_auth_mode_t belle_sip_auth_event_get_mode(const belle_sip_auth_event_t* event) {
return event->mode;
}
......
......@@ -858,20 +858,19 @@ struct belle_sip_transaction_terminated_event{
struct belle_sip_auth_event {
belle_sip_auth_mode_t mode;
char* username;
char* userid;
char* realm;
char* passwd;
char* ha1;
const char* distinguished_name;
char* domain;
char* distinguished_name;
belle_sip_certificates_chain_t * cert;
belle_sip_signing_key_t* key;
};
belle_sip_auth_event_t* belle_sip_auth_event_create(const char* realm,const char* username);
belle_sip_auth_event_t* belle_sip_auth_event_create(const char* realm,const belle_sip_header_from_t * from);
void belle_sip_auth_event_set_distinguished_name(belle_sip_auth_event_t* event,const char* value);
......
......@@ -858,11 +858,9 @@ int belle_sip_provider_add_authorization(belle_sip_provider_t *p, belle_sip_requ
belle_sip_list_t* head;
belle_sip_header_www_authenticate_t* authenticate;
belle_sip_header_authorization_t* authorization;
belle_sip_header_address_t* from;
belle_sip_header_from_t* from;
belle_sip_auth_event_t* auth_event;
authorization_context_t* auth_context;
belle_sip_uri_t* from_uri;
const char* ha1;
char computed_ha1[33];
int result=0;
......@@ -917,14 +915,13 @@ int belle_sip_provider_add_authorization(belle_sip_provider_t *p, belle_sip_requ
/*put authorization header if passwd found*/
call_id = belle_sip_message_get_header_by_type(BELLE_SIP_MESSAGE(request),belle_sip_header_call_id_t);
from = BELLE_SIP_HEADER_ADDRESS(belle_sip_message_get_header(BELLE_SIP_MESSAGE(request),BELLE_SIP_FROM));
from_uri = belle_sip_header_address_get_uri(from);
from = belle_sip_message_get_header_by_type(request,belle_sip_header_from_t);
if ((head=auth_context_lst = belle_sip_provider_get_auth_context_by_call_id(p,call_id))) {
/*we assume there no existing auth headers*/
for (;auth_context_lst!=NULL;auth_context_lst=auth_context_lst->next) {
/*clear auth info*/
auth_context=(authorization_context_t*)auth_context_lst->data;
auth_event = belle_sip_auth_event_create(auth_context->realm,belle_sip_uri_get_user(from_uri));
auth_event = belle_sip_auth_event_create(auth_context->realm,from);
/*put data*/
/*call listener*/
BELLE_SIP_PROVIDER_INVOKE_LISTENERS(p->listeners,process_auth_requested,auth_event);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment