view extensions/app_sip/diamsip.h @ 360:1740bee6c821

Initial App_SIP import
author Alexandre Westfahl <awestfahl@freediameter.net>
date Fri, 02 Jul 2010 12:00:58 +0900
parents
children da11085cf6d9
line wrap: on
line source

#include <freeDiameter/extension.h>
#include <sys/time.h>
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
#include <gcrypt.h>
#include <string.h>
#include <mysql.h>
#include "md5.h"


#define NONCE_SIZE 16
#define DIGEST_LEN 16

//SQL configuration
#define DB_USERNAME "diamsip"
#define DB_PASSWORD "BAVpzCUhULVHayFr"
#define DB_SERVER "pineapple.tera.ics.keio.ac.jp"
#define DB_DATABASE "diamsip"

extern MYSQL *conn;



void calc_md5(char *buffer, char * data);
void clear_digest(char * digest, char * readable_digest, int digestlength);
struct avp_hdr * walk_digest(struct avp *avp, int avp_code);
int start_mysql_connection(char *server,char *user, char *password, char *database);
void request_mysql(char *query);
void close_mysql_connection();
/*
typedef struct noncechain noncechain;
struct noncechain
{
    int timestamp;
    char * nonce;
    noncechain *next;
};


//Global variable which points to chained list of nonce
noncechain* listnonce;

void nonce_add_element(char * nonce);
int nonce_check_element(char * nonce);
void nonce_deletelistnonce();
*/



static int ds_entry();
void fd_ext_fini(void);
int diamsip_default_cb( struct msg ** msg, struct avp * avp, struct session * sess, enum disp_action * act);
int diamsip_MAR_cb( struct msg ** msg, struct avp * avp, struct session * sess, enum disp_action * act);
#define SQL_GETPASSWORD "SELECT `password` FROM ds_users WHERE `username` ='%s'"
#define SQL_GETPASSWORD_LEN 52

#define SQL_GETSIPURI "SELECT `sip_server_uri` FROM ds_users WHERE `username` ='%s'"
#define SQL_GETSIPURI_LEN 60

#define SQL_SETSIPURI "UPDATE ds_users SET `sip_server_uri`='%s', `flag`=1 WHERE `username` ='%s'"
#define SQL_SETSIPURI_LEN 74

#define SQL_GETSIPAOR "SELECT `sip_aor` FROM `ds_sip_aor`, `ds_users` WHERE `ds_sip_aor`.`id_user` = `ds_users`.`id_user` AND `ds_users`.`username` = '%s'"
#define SQL_GETSIPAOR_LEN 131

#define SQL_CLEARFLAG "UPDATE ds_users SET `flag`=0 WHERE `username` ='%s'"
#define SQL_CLEARFLAG_LEN 74

static struct session_handler * ds_sess_hdl;
static struct session *dssess;



struct ds_nonce
{
	char *nonce;
};

//Storage for some usefull AVPs
static struct {
	struct dict_object * Auth_Session_State;
	struct dict_object * Auth_Application_Id;
	struct dict_object * User_Name;
	struct dict_object * SIP_Auth_Data_Item;
	struct dict_object * SIP_Authorization;
	struct dict_object * SIP_Authenticate;
	struct dict_object * SIP_Number_Auth_Items;	
	struct dict_object * SIP_Authentication_Scheme;
	struct dict_object * SIP_Authentication_Info;	
	struct dict_object * SIP_Server_URI;
	struct dict_object * SIP_Method;
	struct dict_object * SIP_AOR;
	struct dict_object * Digest_URI;		
	struct dict_object * Digest_Nonce;
	struct dict_object * Digest_Nonce_Count;
	struct dict_object * Digest_CNonce;		
	struct dict_object * Digest_Realm;		
	struct dict_object * Digest_Response;	
	struct dict_object * Digest_Response_Auth;	
	struct dict_object * Digest_Username;	
	struct dict_object * Digest_Method;
	struct dict_object * Digest_QOP;	
	struct dict_object * Digest_Algorithm;
	struct dict_object * Digest_HA1;
} sip_dict;
"Welcome to our mercurial repository"