예제 #1
0
bool CQueryPlayers::Thread()
{
	bf_read* bf;
	bool s = false;

	// Request players
	if ( Challenge( A2S_PLAYER ) && ( bf = Response() ) )
	{
		if ( bf->Read<long>()==-1 && bf->Read<char>()==S2A_PLAYER )
		{
			// Alleged number of players
			unsigned char num = bf->Read<unsigned char>();

			for ( ; num; --num )
			{
				unsigned char index = bf->Read<unsigned char>();
				const char* name = bf->ReadString();
				if ( !name )
					goto failure;
				long score = bf->Read<long>();
				float& duration = bf->Read<float>();

				_cb->PlayersAdd( name, score, duration );
			}
			s = true;
		}
		
		::free( bf );
	}

failure:
	_cb->PlayersFinished( s );
	return s;
}
예제 #2
0
파일: aj_sasl.c 프로젝트: bigzero/ajtcl
AJ_Status AJ_SASL_Advance(AJ_SASL_Context* context, char* inStr, char* outStr, uint32_t outLen)
{
    AJ_Status status;
    if (!outStr) {
        return AJ_ERR_RESOURCES;
    }
    if ((context->state == AJ_SASL_AUTHENTICATED) || (context->state == AJ_SASL_FAILED)) {
        return AJ_ERR_UNEXPECTED;
    }
    if (++context->authCount > MAX_AUTH_COUNT) {
        return AJ_ERR_SECURITY;
    }
    AJ_Printf("SASL->%s\n", inStr);
    *outStr = '\0';
    if (context->role == AJ_AUTH_CHALLENGER) {
        status = Challenge(context, inStr, outStr, outLen);
    } else {
        status = Response(context, inStr, outStr, outLen);
    }
    AJ_Printf("SASL<-%s\n", outStr);
    return status;
}
예제 #3
0
std::string ChallengeManager::GenerateChallenge( const netadr_t& source )
{
	auto challenge = Challenge( source );
	Push( challenge );
	return challenge.String();
}
예제 #4
0
std::string IDSEXT::InvokeMethod(const std::string& command)
{
    int index = command.find_first_of(" ");

    string strCommand = command.substr(0, index);
    string strParam = command.substr(index + 1, command.length());

    Json::Reader reader;
    Json::Value obj;
    if (strCommand == "getVersion") {
        return GetVersion();
    } else if (strCommand == "registerProvider") {
        return RegisterProvider(strParam);
    } else if (strCommand == "setOption") {
        // parse the JSON
        bool parse = reader.parse(strParam, obj);

        if (!parse) {
            //fprintf(stderr, "%s\n", "error parsing\n");
            return "unable to parse options";
        }
        int option = obj["option"].asInt();
        const std::string value = obj["value"].asString();
        return( SetOption(option, value) );
    } else if (strCommand == "getToken") {
        // parse the JSON
        bool parse = reader.parse(strParam, obj);

        if (!parse) {
            //fprintf(stderr, "%s", "error parsing\n");
            return "unable to parse options";
        }
        event_id = obj["_eventId"].asString();
        std::string provider = obj["provider"].asString();
        std::string tokenType = obj["tokenType"].asString();
        const std::string appliesTo = obj["appliesTo"].asString();

        GetToken(provider, tokenType, appliesTo);
    } else if (strCommand == "clearToken") {
            // parse the JSON
        bool parse = reader.parse(strParam, obj);

        if (!parse) {
            //fprintf(stderr, "%s", "error parsing\n");
            return "unable to parse options";
        }
        event_id = obj["_eventId"].asString();
        std::string provider = obj["provider"].asString();
        std::string tokenType = obj["tokenType"].asString();
        const std::string appliesTo = obj["appliesTo"].asString();

        ClearToken(provider, tokenType, appliesTo);
    } else if (strCommand == "getProperties") {
        // parse the JSON
        bool parse = reader.parse(strParam, obj);
        if (!parse) {
            //fprintf(stderr, "%s", "error parsing\n");
            return "unable to parse options";
        }
        event_id = obj["_eventId"].asString();
        std::string provider = obj["provider"].asString();
        int propertyType = obj["propertyType"].asInt();
        int numProps = obj["numProps"].asInt();
        const std::string userProps = obj["userProperties"].asString();
        GetProperties(provider, propertyType, numProps, userProps);
    } else if (strCommand == "getData") {
        // parse the JSON
        bool parse = reader.parse(strParam, obj);
        if (!parse) {
            //fprintf(stderr, "%s", "error parsing\n");
            return "unable to parse options";
        }
        event_id = obj["_eventId"].asString();
        std::string provider = obj["provider"].asString();
        int dataType = obj["dataType"].asInt();
        int dataFlags = obj["dataFlags"].asInt();
        const std::string dataName = obj["dataName"].asString();
        GetData(provider, dataType, dataFlags, dataName);
    } else if (strCommand == "createData") {
        // parse the JSON
        bool parse = reader.parse(strParam, obj);
        if (!parse) {
            //fprintf(stderr, "%s", "error parsing\n");
            return "unable to parse options";
        }
        event_id = obj["_eventId"].asString();
        std::string provider = obj["provider"].asString();
        int dataType = obj["dataType"].asInt();
        int dataFlags = obj["dataFlags"].asInt();
        const std::string dataName = obj["dataName"].asString();
        const std::string dataValue = obj["dataValue"].asString();
        CreateData(provider, dataType, dataFlags, dataName, dataValue);
    } else if (strCommand == "deleteData") {
        // parse the JSON
        bool parse = reader.parse(strParam, obj);
        if (!parse) {
            //fprintf(stderr, "%s", "error parsing\n");
            return "unable to parse options";
        }
        event_id = obj["_eventId"].asString();
        std::string provider = obj["provider"].asString();
        int dataType = obj["dataType"].asInt();
        int dataFlags = obj["dataFlags"].asInt();
        const std::string dataName = obj["dataName"].asString();
        DeleteData(provider, dataType, dataFlags, dataName);
    } else if (strCommand == "setData") {
        // parse the JSON
        bool parse = reader.parse(strParam, obj);
        if (!parse) {
            //fprintf(stderr, "%s", "error parsing\n");
            return "unable to parse options";
        }
        event_id = obj["_eventId"].asString();
        std::string provider = obj["provider"].asString();
        int dataType = obj["dataType"].asInt();
        int dataFlags = obj["dataFlags"].asInt();
        const std::string dataName = obj["dataName"].asString();
        const std::string dataValue = obj["dataValue"].asString();
        SetData(provider, dataType, dataFlags, dataName, dataValue);
    } else if (strCommand == "listData") {
        // parse the JSON
        bool parse = reader.parse(strParam, obj);
        if (!parse) {
            //fprintf(stderr, "%s", "error parsing\n");
            return "unable to parse options";
        }
        event_id = obj["_eventId"].asString();
        std::string provider = obj["provider"].asString();
        int dataType = obj["dataType"].asInt();
        int dataFlags = obj["dataFlags"].asInt();
        ListData(provider, dataType, dataFlags);
    } else if (strCommand == "challenge") {
        // parse the JSON
        bool parse = reader.parse(strParam, obj);
        if (!parse) {
            //fprintf(stderr, "%s", "error parsing\n");
            return "unable to parse options";
        }
        event_id = obj["_eventId"].asString();
        std::string provider = obj["provider"].asString();
        int challengeType = obj["challengeType"].asInt();
        int challengeFlags = obj["challengeFlags"].asInt();
        Challenge(provider, challengeType, challengeFlags);
    } else if (strCommand == "registerNotifier") {
        // parse the JSON
        bool parse = reader.parse(strParam, obj);
        if (!parse) {
            //fprintf(stderr, "%s", "error parsing\n");
            return "unable to parse options";
        }
        event_id = obj["_eventId"].asString();
        std::string provider = obj["provider"].asString();
        int notifierType = obj["notifierType"].asInt();
        int notifierFlags = obj["notifierFlags"].asInt();
        std::string notifierName = obj["notifierName"].asString();
        RegisterNotifier(provider, notifierType, notifierFlags, notifierName);
    }

    return "";
}
예제 #5
0
파일: main.cpp 프로젝트: apemax/RMQG
int main(int argc, char *argv[])
{
  int Opt1;
  int CLOpt1;
  string File_name;
  string running = "true";

  cout << "Random Maths Question Generator (RMQG) Copyright (C) 2011 - 2019 Peter Wright" << endl;
  cout << "This program comes with ABSOLUTELY NO WARRANTY; for details see the file named COPYING in the program folder." << endl;
  cout << "This is free software, and you are welcome to redistribute it" << endl;
  cout << "under certain conditions; for details see the file named COPYING in the program folder." << endl;
  cout << " " << endl;

  if(argc <= 1)
  {
    cout << "welcome to the random maths question generator." << endl;
    cout << " " << endl;

    while (running == "true")
    {
      cout << "1) Casual mode. 2) Challenge mode. 3) Help. 4) Exit." << endl;
      cout << ">";
      cin >> Opt1;

      switch (Opt1) {
        case 1:
        {
          //Casual mode.

          Casual();

          break;
        }
        case 2:
        {
          //Challenge mode, Coming soon.

          Challenge();

          break;
        }
        case 3:
        {
          //Help.
          cout << " " << endl;
          cout << "Casual mode." << endl;
          cout << "When it asks you what type of question you would like to do type in either 1 for" << endl;
          cout << "basic questions followed by what type of basic question you want to do or 2 for" << endl;
          cout << "decimal questions followed by what type of decimal question you would like to do." << endl;
          cout << "Here's a couple of examples:" << endl;
          cout << "Typing in 11 would make it show you a basic multiply question." << endl;
          cout << "Typing in 21 would make it show you a decimal multiply question." << endl;

          break;
        }
        case 4:
        {
          running = "false";

          break;
        }
      }
    }
  }