[sr-dev] git:master: modules/ims_auth: use IMS lib for getting IMPI/IMPUs (cleanup)

Jason Penton jason.penton at gmail.com
Fri Aug 8 08:38:19 CEST 2014


Module: sip-router
Branch: master
Commit: 451cce6b5a4edada89a05f80e220b08be58a56a4
URL:    http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=451cce6b5a4edada89a05f80e220b08be58a56a4

Author: Jason Penton <jason.penton at gmail.com>
Committer: Jason Penton <jason.penton at gmail.com>
Date:   Fri Aug  8 08:34:48 2014 +0200

modules/ims_auth: use IMS lib for getting IMPI/IMPUs (cleanup)

---

 modules/ims_auth/authorize.c |   12 +++---
 modules/ims_auth/cxdx_mar.c  |    4 +-
 modules/ims_auth/utils.c     |   84 ------------------------------------------
 modules/ims_auth/utils.h     |    2 -
 4 files changed, 8 insertions(+), 94 deletions(-)

diff --git a/modules/ims_auth/authorize.c b/modules/ims_auth/authorize.c
index 90d35c3..c409b4a 100644
--- a/modules/ims_auth/authorize.c
+++ b/modules/ims_auth/authorize.c
@@ -329,14 +329,14 @@ int challenge(struct sip_msg* msg, char* str1, char* str2, int is_proxy_auth, ch
     }
 
     /* get the private_identity */
-    private_identity = get_private_identity(msg, realm, is_proxy_auth);
+    private_identity = cscf_get_private_identity(msg, realm);
     if (!private_identity.len) {
         LM_ERR("No private identity specified (Authorization: username)\n");
         stateful_request_reply(msg, 403, MSG_403_NO_PRIVATE);
         return CSCF_RETURN_BREAK;
     }
     /* get the public_identity */
-    public_identity = get_public_identity(msg);
+    public_identity = cscf_get_public_identity(msg);
     if (!public_identity.len) {
         LM_ERR("No public identity specified (To:)\n");
         stateful_request_reply(msg, 403, MSG_403_NO_PUBLIC);
@@ -517,14 +517,14 @@ int www_resync_auth(struct sip_msg* msg, char* _route, char* str1, char* str2) {
     }
 
     /* get the private_identity */
-    private_identity = get_private_identity(msg, realm, is_proxy_auth);
+    private_identity = cscf_get_private_identity(msg, realm);
     if (!private_identity.len) {
         LM_ERR("No private identity specified (Authorization: username)\n");
         stateful_request_reply(msg, 403, MSG_403_NO_PRIVATE);
         return CSCF_RETURN_BREAK;
     }
     /* get the public_identity */
-    public_identity = get_public_identity(msg);
+    public_identity = cscf_get_public_identity(msg);
     if (!public_identity.len) {
         LM_ERR("No public identity specified (To:)\n");
         stateful_request_reply(msg, 403, MSG_403_NO_PUBLIC);
@@ -743,13 +743,13 @@ int authenticate(struct sip_msg* msg, char* _realm, char* str2, int is_proxy_aut
         return 0; //CSCF_RETURN_BREAK;
     }
 
-    private_identity = get_private_identity(msg, realm, is_proxy_auth);
+    private_identity = cscf_get_private_identity(msg, realm);
     if (!private_identity.len) {
         LM_ERR("private identity missing\n");
         return AUTH_NO_CREDENTIALS;
     }
 
-    public_identity = get_public_identity(msg);
+    public_identity = cscf_get_public_identity(msg);
     if (!public_identity.len) {
         LM_ERR("public identity missing\n");
         return AUTH_NO_CREDENTIALS;
diff --git a/modules/ims_auth/cxdx_mar.c b/modules/ims_auth/cxdx_mar.c
index cdff800..f075821 100644
--- a/modules/ims_auth/cxdx_mar.c
+++ b/modules/ims_auth/cxdx_mar.c
@@ -138,7 +138,7 @@ void async_cdp_callback(int is_timeout, void *param, AAAMessage *maa, long elaps
     }
 
     /* get the private_identity */
-    private_identity = get_private_identity(t->uas.request, data->realm, data->is_proxy_auth);
+    private_identity = cscf_get_private_identity(t->uas.request, data->realm);
     if (!private_identity.len) {
         LM_ERR("No private identity specified (Authorization: username)\n");
         stateful_request_reply_async(t, t->uas.request, 403, MSG_403_NO_PRIVATE);
@@ -146,7 +146,7 @@ void async_cdp_callback(int is_timeout, void *param, AAAMessage *maa, long elaps
         goto error;
     }
     /* get the public_identity */
-    public_identity = get_public_identity(t->uas.request);
+    public_identity = cscf_get_public_identity(t->uas.request);
     if (!public_identity.len) {
         LM_ERR("No public identity specified (To:)\n");
         stateful_request_reply_async(t, t->uas.request, 403, MSG_403_NO_PUBLIC);
diff --git a/modules/ims_auth/utils.c b/modules/ims_auth/utils.c
index 0548391..ff1ef5b 100644
--- a/modules/ims_auth/utils.c
+++ b/modules/ims_auth/utils.c
@@ -141,90 +141,6 @@ inline int ims_find_credentials(struct sip_msg* _m, str* _realm,
 	return 1;
 }
 
-
-/**
- * Returns the Private Identity extracted from the Authorization header.
- * If none found there takes the SIP URI in To without the "sip:" prefix
- * \todo - remove the fallback case to the To header
- * @param msg - the SIP message
- * @param realm - the realm to match in an Authorization header
- * @param is_proxy_auth 0 if the header is Authorization, anything else for Proxy-Authorization
- * @returns the str containing the private id, no mem dup
- */
-str get_private_identity(struct sip_msg *msg, str realm, int is_proxy_auth)
-{
-	str pi={0,0};
-	struct hdr_field* h=0;
-	int ret,i;
-
-	if (parse_headers(msg, is_proxy_auth ? HDR_PROXYAUTH_F : HDR_AUTHORIZATION_F,0)!=0) {
-		return pi;
-	}
-
-	if (!(is_proxy_auth ? msg->proxy_auth : msg->authorization)){
-		goto fallback;
-	}
-
-	ret = find_credentials(msg, &realm, is_proxy_auth ? HDR_PROXYAUTH_F : HDR_AUTHORIZATION_F, &h);
-	if (ret < 0) {
-		goto fallback;
-	} else 
-		if (ret > 0) {
-			goto fallback;
-		}
-	
-	if (h) pi=((auth_body_t*)h->parsed)->digest.username.whole;
-
-	goto done;
-		
-fallback:
-	pi = get_public_identity(msg);
-	if (pi.len>4&&strncasecmp(pi.s,"sip:",4)==0) {pi.s+=4;pi.len-=4;}
-	for(i=0;i<pi.len;i++)
-		if (pi.s[i]==';') {
-			pi.len=i;
-			break;
-		}
-done:	
-	return pi;	
-}
-
-/**
- * Returns the Public Identity extracted from the From header
- * @param msg - the SIP message
- * @returns the str containing the public id, no mem dup
- */
-str get_public_identity(struct sip_msg *msg)
-{
-	str pu={0,0};
-	struct to_body *from;
-	int i;
-	
-	if (parse_headers(msg,HDR_TO_F,0)!=0) {
-		return pu;
-	}
-	
-	if ( get_from(msg) == NULL ) {
-		from = (struct to_body*) pkg_malloc(sizeof(struct to_body));
-		if (!from) {
-			LM_ERR("out of pkg memory\n");
-			return pu;
-		}
-		parse_to( msg->from->body.s, msg->from->body.s + msg->from->body.len, from );
-        msg->from->parsed = from;
-	}
-	else from=(struct to_body *) msg->from->parsed;
-
-	pu = from->uri;
-	
-	/* truncate to sip:username at host or tel:number */
-	for(i=4;i<pu.len;i++)
-		if (pu.s[i]==';' || pu.s[i]=='?' ||pu.s[i]==':'){
-			pu.len = i;
-		}
-	return pu;
-}
-
 /**
  * Looks for the nonce and response parameters in the Authorization header and returns them
  * @param msg - the SIP message
diff --git a/modules/ims_auth/utils.h b/modules/ims_auth/utils.h
index f16ebc1..6412a37 100644
--- a/modules/ims_auth/utils.h
+++ b/modules/ims_auth/utils.h
@@ -54,8 +54,6 @@
 #include "../../parser/parse_content.h"
 #include "../../data_lump_rpl.h"
 
-str get_private_identity(struct sip_msg *msg, str realm, int is_proxy_auth);
-str get_public_identity(struct sip_msg *msg);
 int get_nonce_response(struct sip_msg *msg, str realm,str *nonce,str *response,
                 enum qop_type *qop,str *qop_str,str *nc,str *cnonce,str *uri, int is_proxy_auth);
 str ims_get_body(struct sip_msg * msg);




More information about the sr-dev mailing list