123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 |
- #include<stdio.h>
- #include<stdlib.h>
- #include<strings.h>
- #include<string.h>
- #include<stdarg.h>
- #include<mysql/mysql.h>
- #include<mysql/mysqld_error.h>
- #define USE_OLD_FUNCTIONS
- #define DBCONFIG "/etc/asterisk/exten_gen.ini"
- //#define PNPCONF "/etc/asterisk/pnp.conf"
- //#define CMD "arp-scan -I eth0 --localnet | grep '..:..:'|awk -F ' ' '{print $1,$2}' > /tmp/dis.tmp"
- #define TMP "/tmp/dis.tmp"
- #define SIZE 256
- char *getconfig(const char *file_path, const char *name)
- {
- char str[SIZE] = {0};
- char *p;
- char *value;
- int tmp = 0;
- int len = 0;
- FILE *fp = fopen(file_path, "r");
- while(fgets(str, SIZE, fp)){
- if(strstr(str, name)){
- p = strstr(str, "=");
- len = p - str;
- value = malloc(50);
- bzero(value,50);
- while(str[len] != '\n'){
- if(str[len] == ' ' || str[len] == '='){
- len++;
- continue;
- }else
- value[tmp++] = str[len++];
- }
- //printf("%s : %s\n",name, value);
- break;
- }
-
- }
- return value;
- }
- MYSQL *connect_mysql(MYSQL *conn)
- {
- char *dbserver = getconfig(DBCONFIG, "dbserverip");
- char *dbuser = getconfig(DBCONFIG, "dbuser");
- char *dbpasswd = getconfig(DBCONFIG, "dbpasswd");
- char *dbname = getconfig(DBCONFIG, "dbname");
- mysql_init(conn);
- if(mysql_real_connect(conn, dbserver, dbuser, dbpasswd, dbname,0,"",0)){
- printf("Connected to mysql !\n");
- }else{
- printf("error:%s\n",mysql_error(conn));
- return NULL;
- }
- int utf8;
- utf8=mysql_query(conn,"set names utf8");
- return conn;
- }
- MYSQL conn;
- MYSQL_RES *res;
- int main(int argc, char *argv[])
- {
- int i = 0, j = 0, mx = 0;
- char buf[SIZE]={0}, ip[50], mac[50];
- char sql[SIZE] = {0};
- char *pos = NULL;
- char ch = 0;
- char CMD[SIZE] = {0};
- char m[6]={0};
-
- //char *dev = getconfig(PNPCONF, "pnp_interface");
- MYSQL *conn_mysql = &conn;
- if (connect_mysql(conn_mysql) == NULL)
- return -1;
- //sprintf(CMD,"arp-scan -I %s --localnet | grep '..:..:'|awk -F ' ' '{print $1,$2}' > /tmp/dis.tmp",dev);
- sprintf(CMD,"arp-scan -I eth0 --localnet | grep '..:..:'|awk -F ' ' '{print $1,$2}' > /tmp/dis.tmp");
- //printf("%s\n",CMD);
- system(CMD); //get arp info
- //free(dev);
-
- FILE *fp = fopen(TMP,"r");
- while(fgets(buf, SIZE, fp))
- {
- pos = strstr(buf, " ");
- i = pos -buf;
- bzero(ip, 50);
- strncpy(ip, buf, i);
- while(buf[i++]){
- if(buf[i] != ' ' && buf[i] != '\n'){
- if(buf[i] != ':')
- mac[j++] = buf[i];
- }else{
- continue;
- }
- }
- bzero(sql, SIZE);
- if(!strncmp(mac, "68692e", 6)){
- bzero(m,6);
- sscanf(mac, "%02x%02x%02x%02x%02x%02x",&m[0], &m[1], &m[2], &m[3], &m[4], &m[5]);
- int a=m[3] & 0x000000FF;
- int a1=m[4] & 0x000000FF;
- int a2=m[5] & 0x000000FF;
- mx = (a << 16)|(a1 << 8)|a2;
- //printf("===%x\n",mx);
- if(0x006D3F < mx && mx < 0x00FFFF )
- sprintf(sql, "SELECT func_record_discover_phone_device('%s','%s','%s','%s')", mac, "Zycoo", "H81/H81P", ip);
- else if(0x012124 <= mx && mx <= 0x01FFFF )
- sprintf(sql, "SELECT func_record_discover_phone_device('%s','%s','%s','%s')", mac, "Zycoo", "H81/H81P", ip);
- else if(0x023F48 <= mx && mx <= 0x02FFFF )
- sprintf(sql, "SELECT func_record_discover_phone_device('%s','%s','%s','%s')", mac, "Zycoo", "H83", ip);
- else if(0x0D0000 <= mx && mx <= 0x0DFFFF )
- sprintf(sql, "SELECT func_record_discover_phone_device('%s','%s','%s','%s')", mac, "Zycoo", "X30", ip);
- else if(0x0E0000 <= mx && mx <= 0x0EFFFF )
- sprintf(sql, "SELECT func_record_discover_phone_device('%s','%s','%s','%s')", mac, "Zycoo", "IX100", ip);
- else if(0x0F0000 <= mx && mx <= 0x0FFFFF )
- sprintf(sql, "SELECT func_record_discover_phone_device('%s','%s','%s','%s')", mac, "Zycoo", "IX200", ip);
- else if(0x200000 <= mx && mx <= 0x20FFFF )
- sprintf(sql, "SELECT func_record_discover_phone_device('%s','%s','%s','%s')", mac, "Zycoo", "X20", ip);
- else if(0x210000 <= mx && mx <= 0x21FFFF )
- sprintf(sql, "SELECT func_record_discover_phone_device('%s','%s','%s','%s')", mac, "Zycoo", "HE30", ip);
- else if(0x220000 <= mx && mx <= 0x22FFFF )
- sprintf(sql, "SELECT func_record_discover_phone_device('%s','%s','%s','%s')", mac, "Zycoo", "WE20", ip);
- else if(0x230000 <= mx && mx <= 0x23FFFF )
- sprintf(sql, "SELECT func_record_discover_phone_device('%s','%s','%s','%s')", mac, "Zycoo", "CE20", ip);
- mx = 0;
- }
- /*
- else if(!strncmp(mac, "000b82", 6))//chao liu SELECT func_record_discover_phone_device('005544444444','zycoo','h83','192.168.10.12');
- sprintf(sql, "SELECT func_record_discover_phone_device('%s','%s','','%s')", mac, "Grandstream", ip);
- else if(!strncmp(mac, "001565", 6))//yi lian
- sprintf(sql, "SELECT func_record_discover_phone_device('%s','%s','','%s')", mac, "Yealink", ip);
- else if(!strncmp(mac, "00268b", 6))
- sprintf(sql, "SELECT func_record_discover_phone_device('%s','%s','','%s')", mac, "Escene", ip);
- else if(!strncmp(mac, "0c1105", 6))
- sprintf(sql, "SELECT func_record_discover_phone_device('%s','%s','','%s')", mac, "AkuVox", ip);
- else if(!strncmp(mac, "001fc1", 6))//han long
- sprintf(sql, "SELECT func_record_discover_phone_device('%s','%s','','%s')", mac, "Htek", ip);
- else if(!strncmp(mac, "0c383e", 6))//fang wei
- sprintf(sql, "SELECT func_record_discover_phone_device('%s','%s','','%s')", mac, "Fanvil", ip);
- else if(!strncmp(mac, "000413", 6))//snom
- sprintf(sql, "SELECT func_record_discover_phone_device('%s','%s','','%s')", mac, "Snom", ip);
- else if(!strncmp(mac, "00304f", 6))//planet
- sprintf(sql, "SELECT func_record_discover_phone_device('%s','%s','','%s')", mac, "Planet", ip);
- else if(!strncmp(mac, "0021f2", 6))//Flyingvoice
- sprintf(sql, "SELECT func_record_discover_phone_device('%s','%s','','%s')", mac, "Flyingvoice", ip);
- */
- //printf("%s\n",sql);
- if(strlen(sql) > 0){
- printf("sql_insert cmd: %s \n", sql);
- if(mysql_real_query(conn_mysql, sql, strlen(sql))){
- printf("Insert data faild :%s !\n",mysql_error(conn_mysql));
- return -1;
- }
- //
- do
- {
- res = mysql_store_result( conn_mysql );
- mysql_free_result(res);
- }while( !mysql_next_result( conn_mysql ) );
- }
- bzero(buf,SIZE);
- i = 0;j = 0;
- }
- fclose(fp);
- mysql_close(conn_mysql);
- return 0;
- }
|