#define _SASQL_C_ #include "version.h" #ifdef _SASQL1//新添加 #include "main.h" #include "util.h" #include "mail.h" #include "db.h" #include "saacproto_util.h" #include "saacproto_serv.h" #ifdef _UNIVERSE_CHATROOM #include "chatroom.h" #endif // CoolFish: Family 2001/5/9 #include "acfamily.h" #ifdef _DEATH_CONTEND #include "deathcontend.h" #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "saacproto_work.h" #ifdef _OACSTRUCT_TCP #include "saacproto_oac.h" #endif #ifdef _PAUCTION_MAN #include "auction.h" #endif #include "lock.h" #define BACKLOGNUM 5 #ifdef _FIX_WORKS #include "saacproto_work.h" int worksockfd; #endif #ifdef _LOCK_SERVER #include "saacproto_lserver.h" #endif #ifdef _SEND_EFFECT // WON ADD 送下雪、下雨等特效 #include "recv.h" #endif #include "defend.h" #include "char.h" #include #define BOOL int #define FALSE 0 #define TRUE 1 MYSQL mysql; MYSQL_RES *mysql_result; MYSQL_ROW mysql_row; typedef struct tagConfig { char sql_IP[16]; int sql_Port; char sql_Port1[16]; char sql_ID[16]; char sql_PS[16]; char sql_DataBase[16]; char sql_Table[16]; char sql_Name[16]; char sql_PassWord[16]; char sql_RegTime[16]; char sql_LoginTime[16]; char sql_Path[10]; char sql_OnlineName[16]; }Config; Config config; int AutoReg; static int readConfig( char *path ) { char buf[2048]; FILE *fp; fp = fopen( path , "r" ); if( fp == NULL ){ return -2; } while( fgets( buf , sizeof( buf ) , fp )){ char command[1024]; char param[2048]; chop(buf); easyGetTokenFromString( buf , 1 , command , sizeof( command )); easyGetTokenFromString( buf , 2 , param , sizeof( param )); if( strcmp( command , "sql_IP" ) == 0 ){ strcmp( config.sql_IP , param ) ; snprintf( config.sql_IP , sizeof( config.sql_IP) , param ); log("\n数据库地址: %s",config.sql_IP); } else if( strcmp( command , "sql_Port" ) == 0 ){ config.sql_Port = atoi( param ); snprintf( config.sql_Port1 , sizeof( config.sql_Port1) , param ); log("\n数据库端口: %d",config.sql_Port); } else if( strcmp( command , "sql_ID" ) == 0 ){ strcmp( config.sql_ID , param ) ; snprintf( config.sql_ID , sizeof( config.sql_ID) , param ); log("\n数据库用户: %s",config.sql_ID); } else if( strcmp( command , "sql_PS" ) == 0 ){ strcmp( config.sql_PS , param ) ; snprintf( config.sql_PS , sizeof( config.sql_PS) , param ); log("\n数据库密码: %s",config.sql_PS); } else if( strcmp( command , "sql_DataBase" ) == 0 ){ strcmp( config.sql_DataBase , param ) ; snprintf( config.sql_DataBase , sizeof( config.sql_DataBase) , param ); log("\n登陆数据库名:%s",config.sql_DataBase); } else if( strcmp( command , "sql_Table" ) == 0 ){ strcmp( config.sql_Table , param ) ; snprintf( config.sql_Table , sizeof( config.sql_Table) , param ); log("\n数据库表名: %s",config.sql_Table); } else if( strcmp( command , "sql_Name" ) == 0 ){ strcmp( config.sql_Name , param ) ; snprintf( config.sql_Name , sizeof( config.sql_Name) , param ); log("\n用户名字段: %s",config.sql_Name); } else if( strcmp( command , "sql_PassWord" ) == 0 ){ strcmp( config.sql_PassWord , param ) ; snprintf( config.sql_PassWord , sizeof( config.sql_PassWord) , param ); log("\n密码字段: %s",config.sql_PassWord); } else if( strcmp( command , "sql_RegTime" ) == 0 ){ strcmp( config.sql_RegTime , param ) ; snprintf( config.sql_RegTime , sizeof( config.sql_RegTime) , param ); log("\n注册时间: %s",config.sql_RegTime); } else if( strcmp( command , "sql_LoginTime" ) == 0 ){ strcmp( config.sql_LoginTime , param ) ; snprintf( config.sql_LoginTime , sizeof( config.sql_LoginTime) , param ); log("\n登陆时间: %s",config.sql_LoginTime); } else if( strcmp( command , "sql_Path" ) == 0 ){ strcmp( config.sql_Path , param ) ; snprintf( config.sql_Path , sizeof( config.sql_Path) , param ); log("\n路径字段: %s",config.sql_Path); } else if( strcmp( command , "sql_OnlineName" ) == 0 ){ strcmp( config.sql_OnlineName , param ) ; snprintf( config.sql_OnlineName , sizeof( config.sql_OnlineName) , param ); log("\n在线玩家字段:%s",config.sql_OnlineName); } else if( strcmp( command , "AutoReg" ) == 0 ){ AutoReg = atoi( param ); log("\n开放自动注册:%d",AutoReg); fclose(fp); return 0; } } } BOOL sasql_init( void ) { if( mysql_init(&mysql) == NULL & readConfig("acserv.cf")) { log("\n数据库初始化失败!"); exit(1); return FALSE; } if( !mysql_real_connect( &mysql, config.sql_IP, config.sql_ID,//帐号 config.sql_PS,//密码 config.sql_DataBase,//选择的资料库 config.sql_Port, NULL, 0 ) ) { log("\n更新数据库失败!\n"); return FALSE; } log("\n数据库连接成功!\n"); #ifdef _SQL_BACKGROUND if(!sasql_initonline()) log("\n数据库初始化失败!\n"); #endif return TRUE; } void sasql_close( void ) { mysql_close( &mysql ); } BOOL sasql_query(char *nm, char *pas){ char sqlstr[256]; sprintf(sqlstr,"select * from %s where %s=BINARY'%s' and %s=BINARY'%s'",config.sql_Table,config.sql_Name,nm,config.sql_PassWord,pas); if(!mysql_query(&mysql,sqlstr)){ int num_row=0; mysql_result=mysql_store_result(&mysql); num_row=mysql_num_rows(mysql_result); mysql_free_result(mysql_result); if(num_row==1){ return TRUE;} else{ return FALSE;}} else{ log("\n 数据库查找失败!\n"); return FALSE;} } #ifdef _SQL_BACKGROUND BOOL sasql_update(char *nm, char *path){ char sqlstr[256]; sprintf(sqlstr,"update %s set %s='%s' where %s=BINARY'%s'",config.sql_Table,config.sql_Path,path,config.sql_Name,nm); if(!mysql_query(&mysql,sqlstr)){ return TRUE;} else{ log("\n更新数据库失败!\n"); return FALSE;} } BOOL sasql_online(char *nm,char *lnm){ char sqlstr[256]; sprintf(sqlstr,"update %s set %s='%s',%s=NOW() where %s=BINARY'%s'",config.sql_Table,config.sql_OnlineName,lnm,config.sql_LoginTime,config.sql_Name,nm); if(!mysql_query(&mysql,sqlstr)){ return TRUE;} else{ log("\n更新数据库失败!\n"); return FALSE;} } BOOL sasql_initonline(){ char sqlstr[256]; sprintf(sqlstr,"update %s set %s=NULL",config.sql_Table,config.sql_OnlineName); if(!mysql_query(&mysql,sqlstr)){ return TRUE;} else{ return FALSE;} } #endif #ifdef _SQL_REGISTER BOOL sasql_register(char *nm, char *pas){ char sqlstr[256]; if(AutoReg==1) { sprintf(sqlstr,"select * from %s where %s=BINARY'%s'",config.sql_Table,config.sql_Name,nm); if(!mysql_query(&mysql,sqlstr)){ int num_row=0; mysql_result=mysql_store_result(&mysql); num_row=mysql_num_rows(mysql_result); mysql_free_result(mysql_result); if(num_row==0){ sprintf(sqlstr,"INSERT INTO %s (%s,%s,%s) VALUES ('%s','%s',NOW())",config.sql_Table,config.sql_Name,config.sql_PassWord,config.sql_RegTime,nm,pas); if(!mysql_query(&mysql,sqlstr)){ log("\n新用户注册成功!\n"); return TRUE;} else{ log("\n新用户注册失败!\n"); return FALSE;}} else{ return FALSE;}} else{ log("\n 数据库查找失败!\n"); return FALSE;} } else{ return FALSE;} } #endif #endif