discover.c 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<strings.h>
  4. #include<string.h>
  5. #include<stdarg.h>
  6. #include<mysql/mysql.h>
  7. #include<mysql/mysqld_error.h>
  8. #define USE_OLD_FUNCTIONS
  9. #define DBCONFIG "/etc/asterisk/exten_gen.ini"
  10. //#define PNPCONF "/etc/asterisk/pnp.conf"
  11. //#define CMD "arp-scan -I eth0 --localnet | grep '..:..:'|awk -F ' ' '{print $1,$2}' > /tmp/dis.tmp"
  12. #define TMP "/tmp/dis.tmp"
  13. #define SIZE 256
  14. char *getconfig(const char *file_path, const char *name)
  15. {
  16. char str[SIZE] = {0};
  17. char *p;
  18. char *value;
  19. int tmp = 0;
  20. int len = 0;
  21. FILE *fp = fopen(file_path, "r");
  22. while(fgets(str, SIZE, fp)){
  23. if(strstr(str, name)){
  24. p = strstr(str, "=");
  25. len = p - str;
  26. value = malloc(50);
  27. bzero(value,50);
  28. while(str[len] != '\n'){
  29. if(str[len] == ' ' || str[len] == '='){
  30. len++;
  31. continue;
  32. }else
  33. value[tmp++] = str[len++];
  34. }
  35. //printf("%s : %s\n",name, value);
  36. break;
  37. }
  38. }
  39. return value;
  40. }
  41. MYSQL *connect_mysql(MYSQL *conn)
  42. {
  43. char *dbserver = getconfig(DBCONFIG, "dbserverip");
  44. char *dbuser = getconfig(DBCONFIG, "dbuser");
  45. char *dbpasswd = getconfig(DBCONFIG, "dbpasswd");
  46. char *dbname = getconfig(DBCONFIG, "dbname");
  47. mysql_init(conn);
  48. if(mysql_real_connect(conn, dbserver, dbuser, dbpasswd, dbname,0,"",0)){
  49. printf("Connected to mysql !\n");
  50. }else{
  51. printf("error:%s\n",mysql_error(conn));
  52. return NULL;
  53. }
  54. int utf8;
  55. utf8=mysql_query(conn,"set names utf8");
  56. return conn;
  57. }
  58. MYSQL conn;
  59. MYSQL_RES *res;
  60. int main(int argc, char *argv[])
  61. {
  62. int i = 0, j = 0, mx = 0;
  63. char buf[SIZE]={0}, ip[50], mac[50];
  64. char sql[SIZE] = {0};
  65. char *pos = NULL;
  66. char ch = 0;
  67. char CMD[SIZE] = {0};
  68. char m[6]={0};
  69. //char *dev = getconfig(PNPCONF, "pnp_interface");
  70. MYSQL *conn_mysql = &conn;
  71. if (connect_mysql(conn_mysql) == NULL)
  72. return -1;
  73. //sprintf(CMD,"arp-scan -I %s --localnet | grep '..:..:'|awk -F ' ' '{print $1,$2}' > /tmp/dis.tmp",dev);
  74. sprintf(CMD,"arp-scan -I eth0 --localnet | grep '..:..:'|awk -F ' ' '{print $1,$2}' > /tmp/dis.tmp");
  75. //printf("%s\n",CMD);
  76. system(CMD); //get arp info
  77. //free(dev);
  78. FILE *fp = fopen(TMP,"r");
  79. while(fgets(buf, SIZE, fp))
  80. {
  81. pos = strstr(buf, " ");
  82. i = pos -buf;
  83. bzero(ip, 50);
  84. strncpy(ip, buf, i);
  85. while(buf[i++]){
  86. if(buf[i] != ' ' && buf[i] != '\n'){
  87. if(buf[i] != ':')
  88. mac[j++] = buf[i];
  89. }else{
  90. continue;
  91. }
  92. }
  93. bzero(sql, SIZE);
  94. if(!strncmp(mac, "68692e", 6)){
  95. bzero(m,6);
  96. sscanf(mac, "%02x%02x%02x%02x%02x%02x",&m[0], &m[1], &m[2], &m[3], &m[4], &m[5]);
  97. int a=m[3] & 0x000000FF;
  98. int a1=m[4] & 0x000000FF;
  99. int a2=m[5] & 0x000000FF;
  100. mx = (a << 16)|(a1 << 8)|a2;
  101. //printf("===%x\n",mx);
  102. if(0x006D3F < mx && mx < 0x00FFFF )
  103. sprintf(sql, "SELECT func_record_discover_phone_device('%s','%s','%s','%s')", mac, "Zycoo", "H81/H81P", ip);
  104. else if(0x012124 <= mx && mx <= 0x01FFFF )
  105. sprintf(sql, "SELECT func_record_discover_phone_device('%s','%s','%s','%s')", mac, "Zycoo", "H81/H81P", ip);
  106. else if(0x023F48 <= mx && mx <= 0x02FFFF )
  107. sprintf(sql, "SELECT func_record_discover_phone_device('%s','%s','%s','%s')", mac, "Zycoo", "H83", ip);
  108. else if(0x0D0000 <= mx && mx <= 0x0DFFFF )
  109. sprintf(sql, "SELECT func_record_discover_phone_device('%s','%s','%s','%s')", mac, "Zycoo", "X30", ip);
  110. else if(0x0E0000 <= mx && mx <= 0x0EFFFF )
  111. sprintf(sql, "SELECT func_record_discover_phone_device('%s','%s','%s','%s')", mac, "Zycoo", "IX100", ip);
  112. else if(0x0F0000 <= mx && mx <= 0x0FFFFF )
  113. sprintf(sql, "SELECT func_record_discover_phone_device('%s','%s','%s','%s')", mac, "Zycoo", "IX200", ip);
  114. else if(0x200000 <= mx && mx <= 0x20FFFF )
  115. sprintf(sql, "SELECT func_record_discover_phone_device('%s','%s','%s','%s')", mac, "Zycoo", "X20", ip);
  116. else if(0x210000 <= mx && mx <= 0x21FFFF )
  117. sprintf(sql, "SELECT func_record_discover_phone_device('%s','%s','%s','%s')", mac, "Zycoo", "HE30", ip);
  118. else if(0x220000 <= mx && mx <= 0x22FFFF )
  119. sprintf(sql, "SELECT func_record_discover_phone_device('%s','%s','%s','%s')", mac, "Zycoo", "WE20", ip);
  120. else if(0x230000 <= mx && mx <= 0x23FFFF )
  121. sprintf(sql, "SELECT func_record_discover_phone_device('%s','%s','%s','%s')", mac, "Zycoo", "CE20", ip);
  122. mx = 0;
  123. }
  124. /*
  125. else if(!strncmp(mac, "000b82", 6))//chao liu SELECT func_record_discover_phone_device('005544444444','zycoo','h83','192.168.10.12');
  126. sprintf(sql, "SELECT func_record_discover_phone_device('%s','%s','','%s')", mac, "Grandstream", ip);
  127. else if(!strncmp(mac, "001565", 6))//yi lian
  128. sprintf(sql, "SELECT func_record_discover_phone_device('%s','%s','','%s')", mac, "Yealink", ip);
  129. else if(!strncmp(mac, "00268b", 6))
  130. sprintf(sql, "SELECT func_record_discover_phone_device('%s','%s','','%s')", mac, "Escene", ip);
  131. else if(!strncmp(mac, "0c1105", 6))
  132. sprintf(sql, "SELECT func_record_discover_phone_device('%s','%s','','%s')", mac, "AkuVox", ip);
  133. else if(!strncmp(mac, "001fc1", 6))//han long
  134. sprintf(sql, "SELECT func_record_discover_phone_device('%s','%s','','%s')", mac, "Htek", ip);
  135. else if(!strncmp(mac, "0c383e", 6))//fang wei
  136. sprintf(sql, "SELECT func_record_discover_phone_device('%s','%s','','%s')", mac, "Fanvil", ip);
  137. else if(!strncmp(mac, "000413", 6))//snom
  138. sprintf(sql, "SELECT func_record_discover_phone_device('%s','%s','','%s')", mac, "Snom", ip);
  139. else if(!strncmp(mac, "00304f", 6))//planet
  140. sprintf(sql, "SELECT func_record_discover_phone_device('%s','%s','','%s')", mac, "Planet", ip);
  141. else if(!strncmp(mac, "0021f2", 6))//Flyingvoice
  142. sprintf(sql, "SELECT func_record_discover_phone_device('%s','%s','','%s')", mac, "Flyingvoice", ip);
  143. */
  144. //printf("%s\n",sql);
  145. if(strlen(sql) > 0){
  146. printf("sql_insert cmd: %s \n", sql);
  147. if(mysql_real_query(conn_mysql, sql, strlen(sql))){
  148. printf("Insert data faild :%s !\n",mysql_error(conn_mysql));
  149. return -1;
  150. }
  151. //
  152. do
  153. {
  154. res = mysql_store_result( conn_mysql );
  155. mysql_free_result(res);
  156. }while( !mysql_next_result( conn_mysql ) );
  157. }
  158. bzero(buf,SIZE);
  159. i = 0;j = 0;
  160. }
  161. fclose(fp);
  162. mysql_close(conn_mysql);
  163. return 0;
  164. }