int XMPPClient::authenticate(char *username, char *password) { int plainStringLen = strlen(username) + strlen(password) + 2; int encStringLen = base64_enc_len(plainStringLen); char plainString[plainStringLen]; char encString[encStringLen]; /* Set up our plain auth string. It's in the form: * "\0username\0password" * where \0 is the null character */ memset(plainString, '\0', plainStringLen); memcpy(plainString + 1, username, strlen(username)); memcpy(plainString + 2 + strlen(username), password, strlen(password)); /* Encode to base64 */ base64_encode(encString, plainString, plainStringLen); sendTemplate(plain_auth_template, encStringLen, encString); }
bool initTemplates() { WzConfig ini("userdata/" + QString(rulesettag) + "/templates.ini"); if (ini.status() != QSettings::NoError) { debug(LOG_FATAL, "Could not open templates.ini"); return false; } QStringList list = ini.childGroups(); for (int i = 0; i < list.size(); ++i) { ini.beginGroup(list[i]); DROID_TEMPLATE design; design.droidType = (DROID_TYPE)ini.value("droidType").toInt(); design.multiPlayerID = generateNewObjectId(); design.asParts[COMP_BODY] = getCompFromName(COMP_BODY, ini.value("body", QString("ZNULLBODY")).toString()); design.asParts[COMP_BRAIN] = getCompFromName(COMP_BRAIN, ini.value("brain", QString("ZNULLBRAIN")).toString()); design.asParts[COMP_PROPULSION] = getCompFromName(COMP_PROPULSION, ini.value("propulsion", QString("ZNULLPROP")).toString()); design.asParts[COMP_REPAIRUNIT] = getCompFromName(COMP_REPAIRUNIT, ini.value("repair", QString("ZNULLREPAIR")).toString()); design.asParts[COMP_ECM] = getCompFromName(COMP_ECM, ini.value("ecm", QString("ZNULLECM")).toString()); design.asParts[COMP_SENSOR] = getCompFromName(COMP_SENSOR, ini.value("sensor", QString("ZNULLSENSOR")).toString()); design.asParts[COMP_CONSTRUCT] = getCompFromName(COMP_CONSTRUCT, ini.value("construct", QString("ZNULLCONSTRUCT")).toString()); design.asWeaps[0] = getCompFromName(COMP_WEAPON, ini.value("weapon/1", QString("ZNULLWEAPON")).toString()); design.asWeaps[1] = getCompFromName(COMP_WEAPON, ini.value("weapon/2", QString("ZNULLWEAPON")).toString()); design.asWeaps[2] = getCompFromName(COMP_WEAPON, ini.value("weapon/3", QString("ZNULLWEAPON")).toString()); design.numWeaps = ini.value("weapons").toInt(); design.prefab = false; // not AI template design.stored = true; if (!(asBodyStats + design.asParts[COMP_BODY])->designable || !(asPropulsionStats + design.asParts[COMP_PROPULSION])->designable || (design.asParts[COMP_BRAIN] > 0 && !(asBrainStats + design.asParts[COMP_BRAIN])->designable) || (design.asParts[COMP_REPAIRUNIT] > 0 && !(asRepairStats + design.asParts[COMP_REPAIRUNIT])->designable) || (design.asParts[COMP_ECM] > 0 && !(asECMStats + design.asParts[COMP_ECM])->designable) || (design.asParts[COMP_SENSOR] > 0 && !(asSensorStats + design.asParts[COMP_SENSOR])->designable) || (design.asParts[COMP_CONSTRUCT] > 0 && !(asConstructStats + design.asParts[COMP_CONSTRUCT])->designable) || (design.numWeaps > 0 && !(asWeaponStats + design.asWeaps[0])->designable) || (design.numWeaps > 1 && !(asWeaponStats + design.asWeaps[1])->designable) || (design.numWeaps > 2 && !(asWeaponStats + design.asWeaps[2])->designable)) { debug(LOG_ERROR, "Template %d / %s from stored templates cannot be designed", i, list[i].toUtf8().constData()); continue; } bool valid = intValidTemplate(&design, ini.value("name").toString().toUtf8().constData(), false, selectedPlayer); if (!valid) { debug(LOG_ERROR, "Invalid template %d / %s from stored templates", i, list[i].toUtf8().constData()); continue; } DROID_TEMPLATE *psDestTemplate = apsDroidTemplates[selectedPlayer]; while (psDestTemplate != NULL) { // Check if template is identical to a loaded template if (psDestTemplate->droidType == design.droidType && psDestTemplate->name.compare(design.name) == 0 && psDestTemplate->numWeaps == design.numWeaps && psDestTemplate->asWeaps[0] == design.asWeaps[0] && psDestTemplate->asWeaps[1] == design.asWeaps[1] && psDestTemplate->asWeaps[2] == design.asWeaps[2] && psDestTemplate->asParts[COMP_BODY] == design.asParts[COMP_BODY] && psDestTemplate->asParts[COMP_PROPULSION] == design.asParts[COMP_PROPULSION] && psDestTemplate->asParts[COMP_REPAIRUNIT] == design.asParts[COMP_REPAIRUNIT] && psDestTemplate->asParts[COMP_ECM] == design.asParts[COMP_ECM] && psDestTemplate->asParts[COMP_SENSOR] == design.asParts[COMP_SENSOR] && psDestTemplate->asParts[COMP_CONSTRUCT] == design.asParts[COMP_CONSTRUCT] && psDestTemplate->asParts[COMP_BRAIN] == design.asParts[COMP_BRAIN]) { break; } psDestTemplate = psDestTemplate->psNext; } if (psDestTemplate) { psDestTemplate->stored = true; // assimilate it ini.endGroup(); continue; // next! } design.enabled = allowDesign; addTemplateToList(&design, &apsDroidTemplates[selectedPlayer]); sendTemplate(selectedPlayer, &design); localTemplates.push_back(design); ini.endGroup(); } return true; }
int XMPPClient::close() { sendTemplate(close_template, 0); }
int XMPPClient::sendPresence() { sendTemplate(presence_template, 0); }
int XMPPClient::sendMessage(char *recipientJid, char *message) { sendTemplate(message_template, strlen(recipientJid) + strlen(message), recipientJid, message); }
int XMPPClient::openSession(char *server) { // Serial.print("Trying to open session to: "); // Serial.println(server); sendTemplate(session_request_template, strlen(server), server); }
int XMPPClient::bindResource(char *resource) { sendTemplate(bind_template, strlen(resource), resource); }
int XMPPClient::openStream(char *server) { sendTemplate(open_stream_template, strlen(server), server); }
int XMPPClient::openSession(char *server) { sendTemplate(session_request_template, strlen(server), server); }