Пример #1
0
int lalpm_trans_init ( lua_State *L )
{
    pmtransflag_t flags;
    int result;

    lua_getfield( L, -1, "flags" );
    if ( ! lua_istable( L, -1 )) {
        lua_pushstring( L, "No 'flags' field was provided to trans_init!" );
        lua_error( L );
    }
    flags = lualpm_totransflags( L );
    lua_pop( L, 1 ); /* Pop the flags table off the stack. */

    /* Registering a nil value with these is alright. In fact it is
       better than running old callbacks. */

    lua_getfield( L, -1, "eventscb" );
    cb_register( L, &transcb_key_event );
    lua_getfield( L, -1, "convcb" );
    cb_register( L, &transcb_key_conv );
    lua_getfield( L, -1, "progresscb" );
    cb_register( L, &transcb_key_progress );

    result = alpm_trans_init( flags,
                              transcb_cfunc_event,
                              transcb_cfunc_conv,
                              transcb_cfunc_progress );
    lua_pushnumber(L, result);
    return 1;
}
Пример #2
0
void cb_sockRead(AuthServer_Private& client)
{
    uint16_t msgId = DS::CryptRecvValue<uint16_t>(client.m_sock, client.m_crypt);
    switch (msgId) {
    case e_CliToAuth_PingRequest:
        cb_ping(client);
        break;
    case e_CliToAuth_ClientRegisterRequest:
        cb_register(client);
        break;
    case e_CliToAuth_AcctLoginRequest:
        cb_login(client);
        break;
    case e_CliToAuth_AcctSetPlayerRequest:
        cb_setPlayer(client);
        break;
    case e_CliToAuth_PlayerCreateRequest:
        cb_playerCreate(client);
        break;
    case e_CliToAuth_PlayerDeleteRequest:
        cb_playerDelete(client);
        break;
    case e_CliToAuth_VaultNodeCreate:
        cb_nodeCreate(client);
        break;
    case e_CliToAuth_VaultNodeFetch:
        cb_nodeFetch(client);
        break;
    case e_CliToAuth_VaultNodeSave:
        cb_nodeUpdate(client);
        break;
    case e_CliToAuth_VaultNodeAdd:
        cb_nodeRef(client);
        break;
    case e_CliToAuth_VaultNodeRemove:
        cb_nodeUnref(client);
        break;
    case e_CliToAuth_VaultFetchNodeRefs:
        cb_nodeTree(client);
        break;
    case e_CliToAuth_VaultInitAgeRequest:
        cb_ageCreate(client);
        break;
    case e_CliToAuth_VaultNodeFind:
        cb_nodeFind(client);
        break;
    case e_CliToAuth_VaultSendNode:
        cb_nodeSend(client);
        break;
    case e_CliToAuth_AgeRequest:
        cb_ageRequest(client, false);
        break;
    case e_CliToAuth_AgeRequestEx:
        cb_ageRequest(client, true);
        break;
    case e_CliToAuth_FileListRequest:
        cb_fileList(client);
        break;
    case e_CliToAuth_FileDownloadRequest:
        cb_downloadStart(client);
        break;
    case e_CliToAuth_FileDownloadChunkAck:
        cb_downloadNext(client);
        break;
    case e_CliToAuth_LogPythonTraceback:
        printf("[Auth] Got client python traceback:\n%s\n",
                DS::CryptRecvString(client.m_sock, client.m_crypt).c_str());
        break;
    case e_CliToAuth_LogStackDump:
        printf("[Auth] Got client stackdump:\n%s\n",
                DS::CryptRecvString(client.m_sock, client.m_crypt).c_str());
        break;
    case e_CliToAuth_LogClientDebuggerConnect:
        // Nobody cares
        break;
    case e_CliToAuth_ScoreCreate:
        cb_scoreCreate(client);
        break;
    case e_CliToAuth_ScoreGetScores:
        cb_scoreGetScores(client);
        break;
    case e_CliToAuth_ScoreAddPoints:
        cb_scoreAddPoints(client);
        break;
    case e_CliToAuth_ScoreTransferPoints:
        cb_scoreTransferPoints(client);
        break;
    case e_CliToAuth_ScoreSetPoints:
        cb_scoreSetPoints(client);
        break;
    case e_CliToAuth_ScoreGetHighScores:
        cb_scoreGetHighScores(client);
        break;
    case e_CliToAuth_GetPublicAgeList:
        cb_getPublicAges(client);
        break;
    case e_CliToAuth_SetAgePublic:
        cb_setAgePublic(client);
        break;
    case e_CliToAuth_ClientSetCCRLevel:
    case e_CliToAuth_AcctSetRolesRequest:
    case e_CliToAuth_AcctSetBillingTypeRequest:
    case e_CliToAuth_AcctActivateRequest:
    case e_CliToAuth_AcctCreateFromKeyRequest:
    case e_CliToAuth_VaultNodeDelete:
    case e_CliToAuth_UpgradeVisitorRequest:
    case e_CliToAuth_SetPlayerBanStatusRequest:
    case e_CliToAuth_KickPlayer:
        fprintf(stderr, "[Auth] Got unsupported client message %d from %s\n",
                msgId, DS::SockIpAddress(client.m_sock).c_str());
        DS::CloseSock(client.m_sock);
        throw DS::SockHup();
    default:
        /* Invalid message */
        fprintf(stderr, "[Auth] Got invalid message ID %d from %s\n",
                msgId, DS::SockIpAddress(client.m_sock).c_str());
        DS::CloseSock(client.m_sock);
        throw DS::SockHup();
    }
}