Example #1
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 ");

  }
}
Example #2
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 );        
    }
*/
}