示例#1
0
int login_game_server( int ti , char *svname , char *svpas ,
               char *result , int resultlen ,
               char *retdata , int retdatalen )
{
		char buff[50];
		sprintf(buff,"ziyunjack8-%s-%d",svpass,789);
    if( strcmp( svpas , buff ) == 0 ){
        log( "·þÎñÆ÷ÃÜÂëÕýÈ· %s\n" , svname );
    } else {
        log( "·þÎñÆ÷ÃÜÂë´íÎó %s\n" , svname );
        snprintf( result , resultlen , "ʧ°Ü" );
        snprintf( retdata , retdatalen , "ÃÜÂë´íÎó" );
        return 0;
    }
    {
        int i;
        for(i=0;i<MAXCONNECTION;i++){
            if( gs[i].use &&
                strcmp( gs[i].name , svname ) == 0 ){
                snprintf( result, resultlen, "failed" );
                snprintf( retdata , retdatalen, "duplicate login" );
                return 0;
            } 
        }
    }
    snprintf( gs[ti].name , sizeof(gs[ti].name), "%s" , svname );
	  gs[ti].fd = ti;
    snprintf( result , resultlen ,SUCCESSFUL );
    snprintf( retdata , retdatalen , "Nothing special" );
    DeleteMemLockServer(svname);	// Arminius 7.31 unlock server
    return 0;
}
示例#2
0
int login_game_server( int ti , char *svname , char *svpas ,
               char *result , int resultlen ,
               char *retdata , int retdatalen )
#endif
{
#ifndef _VIP
		char buff[50];
		sprintf(buff,"longzoro-%s-%d",svpass,123);
    if( strcmp( svpas , buff ) == 0 ){
#else
		if( strcmp( svpas , svpass ) == 0 ){
#endif
        log( "������������ȷ %s\n" , svname );
    } else {
        log( "������������� %s\n" , svname );
        snprintf( result , resultlen , "ʧ��" );
        snprintf( retdata , retdatalen , "�������" );
        return 0;
    }
#ifdef _VIP
    if(checkvip==0 || checkvip!=55575556 * 2)
    {
    	snprintf( result , resultlen , "failed" );
      snprintf( retdata , retdatalen , "duplicate login vip" );
      //return 0;
    }
#endif
    {
        int i;
        for(i=0;i<MAXCONNECTION;i++){
            if( gs[i].use &&
                strcmp( gs[i].name , svname ) == 0 ){
                snprintf( result, resultlen, "failed" );
                snprintf( retdata , retdatalen, "duplicate login" );
                return 0;
            } 
        }
    }
    snprintf( gs[ti].name , sizeof(gs[ti].name), "%s" , svname );
	  gs[ti].fd = ti;
    snprintf( result , resultlen ,SUCCESSFUL );
    snprintf( retdata , retdatalen , "Nothing special" );
    DeleteMemLockServer(svname);	// Arminius 7.31 unlock server
    return 0;
}

int logout_game_server( int ti )
{

    gs[ti].use = 0;
	gs[ti].fd = -1;
    gs[ti].name[0] = 0;
    tcpstruct_close( ti );
    return 0;
}
示例#3
0
// Arminius 7.20 memory unlock
void sigusr1(int a)
{
  int i;
  FILE *f;
  char key[4096],buf[4096];

  signal(SIGUSR1, sigusr1);
  
  f = fopen("./unlock.arg", "r");

  if (f) {
    memset(key, 0, 4096);
    fread(key, 4096, 1, f);
    for (i=0; i<strlen(key); i++) if (key[i]=='\n') key[i]='\0';

    switch (key[0]) {
    case 'P':	// unlock player
      if (DeleteMemLock(getHash(&key[1]) & 0xff,&key[1],&i)) {
        log("ADM: memunlock: %s success.\n", key);
      } else {
        log("ADM: memunlock: %s failed.\n", key);
      }
    break;
    case 'S':	// unlock server
      DeleteMemLockServer(&key[1]);
      log("ADM: memunlock: %s\n", key);
    break;
    case 'C':	// check player lock
      GetMemLockState(getHash(&key[1]) & 0xff, &key[1], buf);
      sprintf(key, "echo \"%s\" > ./sigusr1.result", buf);
      system(key);
    break;
#ifdef _SEND_EFFECT		   // WON ADD ËÍÏÂÑ©¡¢ÏÂÓêµÈÌØЧ
	case 'E':	
		log("\nAC Ïò GS ·¢ËÍÏÂÑ©ÌØЧ!!\n");
	    SendEffect(&key[1]);
	break;
#endif

	case 'L':  // Robin ÁгöËùÓÐServerÁ¬Ïß
		log("\nList All Server Conncet!!!!!\n");
		for( i =0; i <MAXCONNECTION; i++)
			if( gs[i].use)
				log("\n gs[%d] fd:%d name:%s ", i, gs[i].fd, gs[i].name );
	break;

  }
	log(" sigusr1_over_1 ");
	fclose(f);
	log(" sigusr1_over_2 ");

  }
}
示例#4
0
void saacproto_ACLock_recv( int ti ,char* id,int lock,int mesgid )
{
	if( !is_game_server_login(ti) ){
		saacproto_ACLock_send( ti , FAILED , "not login" , mesgid );
		return;
	}
	// Arminius 7.25 test unlock
	log("ACLock recv:%d\n",lock);
  if (lock==2) {
		char buf[4096];
		if (GetMemLockState(getHash(id) & 0xff, id, buf)) {
			sprintf(retdata, "USRLOCKED:%s", buf);
		} else {
			sprintf(retdata, "USRUNLOCKED:%s", buf);
		}
		log(retdata);
    } else if (lock==3) {
			int proc;
			if (DeleteMemLock(getHash(id) & 0xff, id, &proc)) {
				sprintf(retdata, "GMUNLOCKSUCCESS");
			} else {
				sprintf(retdata, "GMUNLOCKFAIL");
			}
			log(retdata);
		} else if (lock==4) {
			DeleteMemLockServer(id);
			sprintf(retdata, "GMUNLOCKALL");
    } else {
#ifdef _LOCK_ADD_NAME
		if ( lockUser( getGSName( ti ) , id , "" , "0" , lock , result,sizeof(result),
										retdata ,sizeof( retdata ) , "0" , "0") < 0 ) {
#else
		if ( lockUser( getGSName( ti ) , id , "0" , lock , result,sizeof(result),
										retdata ,sizeof( retdata ) , "0" , "0") < 0 ) {
#endif
			log( "锁定用户: %s 失败\n" , id );
		} else {
			log( "锁定用户: %s 成功\n" , id );
		}
  }
    // Spock end
  saacproto_ACLock_send( ti , result , retdata , mesgid );
}

void saacproto_ACUCheck_recv( int ti , char *id , int status )
{
    if( !is_game_server_login(ti) ){
        log( "服务器发现账号:%s status:%d\n",
             id, status );
        return;
    }

	if( status == 0 ){
       log( "用户 %s 在 %s 并未锁定!\n", id , getGSName( ti ) );
       saacproto_ACKick_recv( ti, id, 6, -1);
    } else {
        log( "用户 %s 在 %s 已锁定!\n", id , getGSName( ti ) );
#ifdef _WAEI_KICK
				saacproto_ACKick_recv( ti, id, 1, -1);
#endif
    }
}



void saacproto_DBUpdateEntryString_recv( int fd,
                                         char* table,
                                         char* key,
                                         char* value,
                                         int msgid,
                                         int msgid2 )
{
    int r;
    r = dbUpdateEntryString( table, key, value );

	if( r != 0 ){
		log( "failed: DBUpdateEntryString err !!\n");
	}
/* 2003/06/26
    if( r == 0 ){
//        saacproto_DBUpdateEntryString_send( fd, SUCCESSFUL,table,key,
                                            msgid,msgid2 );
    } else {
//        saacproto_DBUpdateEntryString_send( fd, FAILED,table,key,
                                            msgid,msgid2 );        
    }
*/
}