⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 saacproto_lserver.c

📁 最新主流石器時代源代碼,包含諸多目前流行功能代碼.
💻 C
📖 第 1 页 / 共 2 页
字号:
		if( SAMESS_getChar( si, &lens) == FALSE ) return 0;		if( SAMESS_getChar( Pcdkey, &lens) == FALSE ) return 0;		if( SAMESS_getChar( Pid, &lens) == FALSE ) return 0;		if( SAMESS_getChar( name, &lens) == FALSE ) return 0;		if( SAMESS_getChar( flg, &lens) == FALSE ) return 0;		if( SAMESS_getChar( PASS, &lens) == FALSE ) return 0;		LServer_SACheckLock2_recv( si, Pcdkey, Pid, name, flg, PASS);		return 0;	}	if( !strcmp( funcname , "SALock" )){		char si[256], Pcdkey[256], Pid[256], name[256], flg[256];		if( SAMESS_getChar( si, &lens) == FALSE ) return 0;		if( SAMESS_getChar( Pcdkey, &lens) == FALSE ) return 0;		if( SAMESS_getChar( Pid, &lens) == FALSE ) return 0;		if( SAMESS_getChar( name, &lens) == FALSE ) return 0;		if( SAMESS_getChar( flg, &lens) == FALSE ) return 0;		LServer_SALock_recv( si, Pcdkey, Pid, name, flg);		return 0;	}	if( !strcmp( funcname , "SAUNLock" )){		char si[256], Pcdkey[256], Pid[256],  flg[256];		if( SAMESS_getChar( si, &lens) == FALSE ) return 0;		if( SAMESS_getChar( Pcdkey, &lens) == FALSE ) return 0;		if( SAMESS_getChar( Pid, &lens) == FALSE ) return 0;		if( SAMESS_getChar( flg, &lens) == FALSE ) return 0;		LServer_SAUNLock_recv( si, Pcdkey, Pid, flg);		return 0;	}	if( !strcmp( funcname , "SAUCheck" )){	//check		char PCDKEY[256];		if( SAMESS_getChar( PCDKEY, &lens) == FALSE ) return 0;		LServer_SAUCheck_recv( PCDKEY);		return 0;	}	return -1;}BOOL SAMESS_setChar( char *buf){	char Mbuf[4096];	int i=0,j=0;	int len=0;	SAMessC *Works;	SAMessC *point;	point = NULL;	memset( Mbuf, 0, sizeof( Mbuf));	sprintf( Mbuf, "%s", buf);	SAMess = NULL;	while( Mbuf[i] != '\0' )	{		if( Mbuf[i] == '\n' )			Mbuf[i] = '\0';		i++;	}	i=0;	len = 0;	while( Mbuf[i] != '\0' && Mbuf[j] != '\0' )	{		j=i;		len = 0;		while( Mbuf[j] != ' ' && Mbuf[j] != '\0')	{			len++;			j++;		}		Works = MESS_getNew();		if( Works == NULL )			return FALSE;		memcpy( Works->buf, &Mbuf[i], len);		Works->len = len;		if( SAMess == NULL )	{			SAMess = Works;			point = Works;		}else	{			point->next = Works;			point = point->next;		}		i = (j+1);	}	return TRUE;}BOOL SAMESS_getChar( char *buf, int *len){	SAMessC *Works;	Works = SAMess;	*len = 0;	if( Works == NULL )		return FALSE;	sprintf( buf, "%s", Works->buf);	*len = Works->len;	SAMess = Works->next;	free( Works);	return TRUE;}SAMessC *MESS_getNew(){	SAMessC *MBUF=NULL;	MBUF = (SAMessC *) calloc( 1, sizeof( struct _SAMessCommand) );	if( MBUF == NULL )		return NULL;	memset( MBUF->buf, 0, sizeof( MBUF->buf));	MBUF->len = 0;	MBUF->next = NULL;	return MBUF;}void LServer_SALogin_send(){	//Ls.data[LS_FD]	char buf[4096];	sprintf( buf, "SALogin %s %d %s\n", SaName, 0, "LOGIN");	if( Add_LS_WRMemBuffer( buf, sizeof( buf), MEMWRITE) == FALSE )	{		log( "LS WRITE ERROR!!");	}}void LServer_SACheckLock1_recv( char *si, char *Pcdkey, char *Pid, char *flg, char *PASS){#ifndef _TEST_LOCKSERVER	int Pfd, Flg, seri;	char listbuf[CHARDATASIZE];	Pfd = atoi( Pid);	Flg = atoi( flg);	seri = atoi( si);	if( !strcmp( flg, "LOCKED") )	{        saacproto_ACCharList_send( seri , FAILED , "locked" , Pfd );		total_ng_charlist++;	}else	{		loadCharNameAndOption( Pcdkey , listbuf,sizeof(listbuf));		saacproto_ACCharList_send( seri ,  SUCCESSFUL , listbuf , Pfd);		total_ok_charlist++;	}#endif}void LServer_SACheckLock1_send( int ti, char *Pcdkey, int Pid, int flg){	char buf[4096];	sprintf( buf, "SACheckLock1 %d %s %d %d %s\n", ti, Pcdkey, Pid, flg, "CHECK");	if( Add_LS_WRMemBuffer( buf, sizeof( buf), MEMWRITE) == FALSE )	{		log( "LS WRITE ERROR!!");	}}void LServer_SACheckLock2_send( int ti, char *Pcdkey, int Pid, char *charname, int flg, char *pro){	char buf[4096];	sprintf( buf, "SACheckLock2 %d %s %d %s %d %s\n", ti, Pcdkey, Pid, charname, flg, pro);	if( Add_LS_WRMemBuffer( buf, sizeof( buf), MEMWRITE) == FALSE )	{		log( "LS WRITE ERROR!!");	}}void LServer_SACheckLock2_recv( char *si, char *Pcdkey, char *Pid, char *name, char *flg, char *pro){#ifndef _TEST_LOCKSERVER	int Pfd, Flg, seri;	int charindex=-1;	char loadbuf[CHARDATASIZE];    char infobuf[CHARDATASIZE];	Pfd = atoi( Pid);	Flg = atoi( flg);	seri = atoi( si);#define IS_2BYTEWORD( _a_ ) ( (char)(0x80) <= (_a_) && (_a_) <= (char)(0xFF) )	if( !strcmp( flg, "LOCKED") )	{        saacproto_ACCharLoad_send( seri , FAILED , "locked" , Pfd, charindex );	}else	{		int lock = 1;		charindex = getCharIndexByName( Pcdkey , name );		if( charindex < 0 ){			saacproto_ACCharLoad_send( seri , FAILED , "char nonexistent" , Pfd , charindex );			return;		}		log( "loadCharOne: id:[%s] char:[%s]\n", Pcdkey, name );		if( loadCharOne( Pcdkey , charindex ,  loadbuf ,sizeof( loadbuf ))<0){			saacproto_ACCharLoad_send( seri , FAILED ,									 "cannot load ( disk i/o error?)", Pfd, charindex );			return;		}		{//ttom		   char *c_ptr;		   c_ptr=loadbuf;		   while(*c_ptr!='\0'){			  if( IS_2BYTEWORD(*c_ptr) ){				  if(*(c_ptr+1)==' '){					 *(c_ptr+1)=0x41;				  }				  c_ptr++;				  if(*c_ptr=='\0') break;			  }			 c_ptr++;     		   }		}//ttom		if( lock ){			char result[100];			char retdata[100];#ifdef _LOCK_ADD_NAME			if( lockUser( getGSName(seri) , Pcdkey , name , passwd , 1 , result , sizeof( result ) ,						   retdata , sizeof( retdata ) , pro , "0")<0){#else			if( lockUser( getGSName(seri) , Pcdkey , passwd , 1 , result , sizeof( result ) ,						   retdata , sizeof( retdata ) , pro , "0")<0){#endif				saacproto_ACCharLoad_send( seri , FAILED , "lock FAIL" , Pfd, charindex );				log(" SAAC lock %s|%s FAIL!!\n", getGSName(seri), Pcdkey);				return;			}		}		//LS LOCK		if( CHECK_LS_BEUSE() == TRUE )	{			LServer_SALock_send( seri, Pcdkey, Pfd, name, 1);		}		memset( infobuf , 0 , sizeof( infobuf ));		getCharInfoFromString( loadbuf , infobuf );		makeStringFromEscaped( infobuf );		saacproto_ACCharLoad_send( seri ,  SUCCESSFUL , infobuf , Pfd, charindex );	}#endif}void LServer_SALock_recv( char *si, char *Pcdkey, char *Pid, char *name, char *flg){	int Pfd,  seri;	Pfd = atoi( Pid);	seri = atoi( si);	if( !strcmp( flg, "FAIL") )	{		log( "LS Lock %s|%s FAIL!!\n", getGSName(seri), Pcdkey);	}}void LServer_SALock_send( int ti, char *Pcdkey, int Pid, char *Pname, int flg){	//si[256], SANAME[256], PCDKEY[256], PNAME[256], FLG[256];	char buf[4096];	sprintf( buf, "SALock %d %s %s %d %s %d\n", ti, SaName, Pcdkey, Pid, Pname, flg);	if( Add_LS_WRMemBuffer( buf, sizeof( buf), MEMWRITE) == FALSE )	{		log( "LS WRITE ERROR!!");	}}void LServer_SAUNLock_recv( char *si, char *Pcdkey, char *Pid, char *flg){	int Pfd, seri;	Pfd = atoi( Pid);	seri = atoi( si);	if( !strcmp( flg, "FAIL") )	{		log( "LS UNLock %s|%s FAIL!!\n", getGSName(seri), Pcdkey);	}}void LServer_SAUNLock_send( int ti, char *Pcdkey, int Pid, int flg){	char buf[4096];	sprintf( buf, "SAUNLock %d %s %s %d %d\n", ti, SaName, Pcdkey, Pid, flg);	if( Add_LS_WRMemBuffer( buf, sizeof( buf), MEMWRITE) == FALSE )	{		log( "LS WRITE ERROR!!\n");	}}void LServer_SAUCheck_recv( char *Pcdkey){    if( isLocked( Pcdkey ) ){        saacproto_SAUCheck_send( Pcdkey, 1);		checkGSUCheck( Pcdkey );        return;    }else	{		saacproto_SAUCheck_send( Pcdkey, 0);		return;	}}void saacproto_SAUCheck_send( char *Pcdkey, int flg){	char buf[4096];	sprintf( buf, "SAUCheck %s %s %d\n", SaName, Pcdkey, flg);	if( Add_LS_WRMemBuffer( buf, sizeof( buf), MEMWRITE) == FALSE )	{		log( "LS WRITE ERROR!!");	}}void DefTimeC( char *buf, int flg)// 1 比较 2 秀时间 0 替换{	static long int dTimes = 0;	time_t defLsTime;	defLsTime = time(NULL);	if( flg == 1 )	{		if( defLsTime !=  dTimes )	{			log( "Time[%s]:%ld|%ld|%ld..\n", buf, defLsTime, dTimes, (defLsTime-dTimes));			dTimes = defLsTime;		}	}else if( flg == 2 )	{		log( "Time[%s]:%ld..\n", buf, defLsTime);	}else	{		dTimes = defLsTime;	}}void REreadConfig( char *path ){    char buf[2048];    FILE *fp;    fp = fopen( path , "r" );    if( fp == NULL )		return;    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, "SANAME" ) == 0 ){            snprintf( SaName, sizeof( SaName ), param );        } else if( strcmp( command, "LSADDRESS" ) == 0 ){            snprintf( LSADDRESS, sizeof( LSADDRESS ), param );        } else if( strcmp( command, "LSPORT" ) == 0 ){			LSPORT = atoi( param);        }    }    fclose(fp);}#ifdef _TEST_LOCKSERVERvoid TEST_TOLOCKSERVER(){	static int po=0;	static time_t defLsTime;	//char charname[256]={"ankoo"};	//char Pcdkey[256];	int mesgid = -1;	int seri=-1;		if( !Ls.data[LS_USE] )		return;	if( defLsTime == time( NULL) )		return;	defLsTime = time( NULL);	//sprintf( Pcdkey,"%s", charname);	switch( po)	{		case 0:			LServer_SACheckLock1_send( seri, TESTNAME, mesgid, 1);			LServer_SACheckLock2_send( seri, TESTNAME, mesgid, TESTNAME, 1, "-1");			break;		case 1:			LServer_SALock_send( seri, TESTNAME, mesgid, TESTNAME, 1);			break;		case 2:			LServer_SAUNLock_send( seri, TESTNAME, mesgid, 1);			break;	}	po++;	po = po%3; }#endif#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -