sasql.c
上传用户:qys8201
上传日期:2021-12-11
资源大小:978k
文件大小:6k
源码类别:

模拟服务器

开发平台:

C/C++

  1. #define _SASQL_C_
  2. #include "version.h"
  3. #ifdef _SASQL//新添加
  4. #include "main.h"
  5. #include "sasql.h"
  6. #include <mysql/mysql.h>
  7. MYSQL mysql;
  8. MYSQL_RES *mysql_result;
  9. MYSQL_ROW mysql_row;
  10. typedef struct tagConfig
  11. {
  12.     char    sql_IP[16]; 
  13. int     sql_Port; 
  14. char    sql_Port1[16];
  15.     char    sql_ID[16];
  16.     
  17.     char    sql_PS[16];
  18.     char    sql_DataBase[16];  
  19.     char    sql_Table[16];    
  20.     
  21.     char    sql_LOCK[16];   
  22.     
  23.     char    sql_NAME[16];  
  24.     
  25.     char    sql_PASS[16];  
  26. }Config;
  27. Config config;
  28. int AutoReg;
  29. static int readConfig( char *path )
  30. {
  31.     char buf[255];
  32.     FILE *fp;
  33.     fp = fopen( path , "r" );
  34.     if( fp == NULL ){ return -2; }
  35.     while( fgets( buf , sizeof( buf ) , fp )){
  36.         char command[255];
  37.         char param[255];
  38.         chop(buf);
  39.         
  40.         easyGetTokenFromString( buf , 1 , command , sizeof( command ));
  41.         easyGetTokenFromString( buf , 2 , param , sizeof( param ));
  42.         if( strcmp( command , "sql_IP" ) == 0 ){
  43.             strcmp( config.sql_IP , param ) ;
  44.             snprintf( config.sql_IP , sizeof( config.sql_IP) , param );
  45.             printf("n数据库地址:  %s",config.sql_IP);
  46.         } else if( strcmp( command , "sql_Port" ) == 0 ){
  47.          config.sql_Port = atoi( param );
  48.             snprintf( config.sql_Port1 , sizeof( config.sql_Port1) , param );
  49.    printf("n数据库端口:  %d",config.sql_Port);
  50.         } else if( strcmp( command , "sql_ID" ) == 0 ){
  51.          strcmp( config.sql_ID , param ) ;
  52.             snprintf( config.sql_ID , sizeof( config.sql_ID) , param );
  53. printf("n数据库用户:  %s",config.sql_ID);
  54.         } else if( strcmp( command , "sql_PS" ) == 0 ){
  55.          strcmp( config.sql_PS , param ) ;
  56.             snprintf( config.sql_PS , sizeof( config.sql_PS) , param );
  57. printf("n数据库密码:  %s",config.sql_PS);
  58.         } else if( strcmp( command , "sql_DataBase" ) == 0 ){
  59.          strcmp( config.sql_DataBase , param ) ;
  60.             snprintf( config.sql_DataBase , sizeof( config.sql_DataBase) , param );
  61. printf("n登陆数据库名:%s",config.sql_DataBase);
  62.         } else if( strcmp( command , "sql_Table" ) == 0 ){
  63.          strcmp( config.sql_Table , param ) ;
  64.             snprintf( config.sql_Table , sizeof( config.sql_Table) , param );
  65.    printf("n用户信息表名:  %s",config.sql_Table);
  66. } else if( strcmp( command , "sql_LOCK" ) == 0 ){
  67.          strcmp( config.sql_LOCK , param ) ;
  68.             snprintf( config.sql_LOCK , sizeof( config.sql_LOCK) , param );
  69.    printf("n用户锁定表名:  %s",config.sql_LOCK);
  70. } else if( strcmp( command , "sql_NAME" ) == 0 ){
  71.          strcmp( config.sql_NAME , param ) ;
  72.             snprintf( config.sql_NAME , sizeof( config.sql_NAME) , param );
  73.    printf("n账号字段名称:  %s",config.sql_NAME);
  74. } else if( strcmp( command , "sql_PASS" ) == 0 ){
  75.          strcmp( config.sql_PASS , param ) ;
  76.             snprintf( config.sql_PASS , sizeof( config.sql_PASS) , param );
  77.    printf("n密码字段名称:  %s",config.sql_PASS);
  78. } else if( strcmp( command , "AutoReg" ) == 0 ){
  79.          AutoReg = atoi( param );
  80.          if(AutoReg){
  81.          printf("n开放自动注册:YES");
  82.          }else{
  83.          printf("n开放自动注册:NO");
  84.          }
  85.     fclose(fp);
  86.     return 0;
  87.      }
  88.     }
  89. }
  90. BOOL sasql_init( void )
  91. {
  92. if( mysql_init(&mysql) == NULL & readConfig("acserv.cf"))
  93. {
  94.   printf("n数据库初始化失败!");
  95.   exit(1);
  96.     return FALSE;
  97. }
  98.   if( !mysql_real_connect( &mysql,
  99.           config.sql_IP,
  100.           config.sql_ID,//帐号
  101.           config.sql_PS,//密码
  102.           config.sql_DataBase,//选择的资料库
  103.           config.sql_Port,
  104.           NULL,
  105.           0 ) )
  106. {
  107. printf("n数据库连接失败!n");
  108. return FALSE;
  109. }
  110.   
  111.    printf("n数据库连接成功!n");
  112.    return TRUE;
  113. }
  114. void sasql_close( void )
  115. {
  116.   mysql_close( &mysql );
  117. }
  118. int sasql_query(char *nm, char *pas){
  119. char sqlstr[256];
  120. sprintf(sqlstr,"select * from %s where %s=BINARY'%s'",config.sql_Table,config.sql_NAME,nm);
  121. if(!mysql_query(&mysql,sqlstr)){
  122.   int num_row=0;
  123.   mysql_result=mysql_store_result(&mysql);
  124.   num_row=mysql_num_rows(mysql_result);
  125. mysql_free_result(mysql_result);
  126.   if(num_row>0){
  127.    mysql_row=mysql_fetch_row(mysql_result);
  128.    if(strcmp(pas,mysql_row[1]) == 0){
  129.    return 1;
  130.   }else{
  131.    printf("用户%s密码错误!n",nm);
  132.    return 2;
  133.   }
  134.   }else{
  135.    printf("用户%s未注册!n",nm);
  136.    return 3;
  137.   }
  138. }else{
  139. printf("n数据库查找失败!n");
  140. printf("重新连接数据库...");
  141. sasql_close();
  142. sasql_init();
  143. printf("完成n");
  144. return 0;
  145. }
  146. }
  147. #ifdef _SQL_REGISTER
  148. BOOL sasql_register(char *id, char *ps)
  149. {
  150. char sqlstr[256];
  151. // if(AutoReg!=1)return FALSE;
  152. sprintf(sqlstr,"INSERT INTO %s (%s,%s,RegTime,Path) VALUES (BINARY'%s','%s',NOW(),'char/0x%x')",config.sql_Table, config.sql_NAME, config.sql_PASS, id, ps, getHash(id) & 0xff);
  153. if(!mysql_query(&mysql,sqlstr)){
  154. printf("n新用户注册成功!n");
  155. return TRUE;
  156. }
  157. printf("n新用户注册失败!n");
  158. return FALSE;
  159. }
  160. #endif
  161. BOOL sasql_chehk_lock( char *idip )
  162. {
  163. char sqlstr[256];
  164. sprintf(sqlstr,"select * from %s where %s=BINARY'%s'", config.sql_LOCK, config.sql_NAME, idip);
  165. if(!mysql_query(&mysql,sqlstr)){
  166. return TRUE;
  167. }
  168. return FALSE;
  169. }
  170. BOOL sasql_add_lock( char *idip )
  171. {
  172. char sqlstr[256];
  173. sprintf(sqlstr,"INSERT INTO %s (%s) VALUES (BINARY'%s')", config.sql_LOCK, config.sql_NAME, idip);
  174. if(!mysql_query(&mysql,sqlstr)){
  175. printf("n添加锁定%s成功!n",idip);
  176. return TRUE;
  177. }
  178. return FALSE;
  179. }
  180. BOOL sasql_del_lock( char *idip )
  181. {
  182. char sqlstr[256];
  183. sprintf(sqlstr,"delete from config.SQL_LOCK where %s=BINARY'%s'", config.sql_LOCK, config.sql_NAME, idip);
  184. if(!mysql_query(&mysql,sqlstr)){
  185. printf("n解除锁定%s成功!n",idip);
  186. return TRUE;
  187. }
  188. return FALSE;
  189. }
  190. BOOL sasql_craete_lock( void )
  191. {
  192. }
  193. BOOL sasql_craete_userinfo( void )
  194. {
  195. }
  196. #endif