diff 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 diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/extensions/app_sip/diamsip.h	Fri Jul 02 12:00:58 2010 +0900
@@ -0,0 +1,106 @@
+#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"