bool RegisterStream::start(const QDomElement &AElem) { if (AElem.tagName()=="register") { if (!xmppStream()->isEncryptionRequired() || xmppStream()->connection()->isEncrypted()) { Stanza request("iq"); request.setType("get").setId("getReg"); request.addElement("query",NS_JABBER_REGISTER); FXmppStream->insertXmppStanzaHandler(XSHO_XMPP_FEATURE,this); FXmppStream->sendStanza(request); REPORT_EVENT(SEVP_REGISTRATION_STREAM_BEGIN,1); LOG_STRM_INFO(FXmppStream->streamJid(),"Account registration fields request sent"); return true; } else { XmppError err(IERR_XMPPSTREAM_NOT_SECURE); LOG_STRM_WARNING(FXmppStream->streamJid(),QString("Failed to register new account on server: %1").arg(err.condition())); emit error(err); } } deleteLater(); return false; }
/*----------------------------------------------------------------------------------------*/ VOID PcieCheckHotplug ( IN UINT32 ServerHotplugPortMask, IN AMD_NB_CONFIG *pConfig ) { PORT PortId; CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), "[NBPCIE]PcieCheckHotplug Enter\n")); //Check if Firmware loaded successfully for (PortId = MIN_PORT_ID; PortId <= MAX_PORT_ID; PortId++) { //Check Firmware Loaded successfully if ((ServerHotplugPortMask & (1 << PortId)) != 0) { UINT32 Count; PCI_ADDR Port; UINT16 SlotStatus; Count = 30; //Setup counter for 30ms Port = PcieLibGetPortPciAddress (PortId, pConfig); do { STALL (GET_BLOCK_CONFIG_PTR (pConfig), 1000, 0); LibNbPciRead (Port.AddressValue | NB_PCIP_REG72, AccessWidth16, &SlotStatus, pConfig); } while ((SlotStatus & (ATTN_BUTTON_PRESSED | PWR_FAULT_DETECTED)) == 0 && --Count != 0); CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), " Hotplug Firmware Init PortId = %d SlotStatus = 0x%x Retry = %d\n", PortId, SlotStatus, Count)); if ((SlotStatus & PWR_FAULT_DETECTED) != 0 || (SlotStatus & (PWR_FAULT_DETECTED | ATTN_BUTTON_PRESSED)) == 0) { REPORT_EVENT (AGESA_ERROR, PCIE_ERROR_HOTPLUG_INIT, PortId, 0, 0, 0, pConfig); CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), " ERROR!!!Hotplug Firmware Init FAIL\n")); LibNbPciRMW (Port.AddressValue | NB_PCIP_REG6C, AccessWidth32, (UINT32)~SERVER_HOTPLUG_CAPABILITY, 0x0, pConfig); } else { //Clear Status LibNbPciRMW (Port.AddressValue | NB_PCIP_REG72, AccessWidth16, 0xffffffff, 0x11F, pConfig); if ((SlotStatus & PRESENCE_DETECT_CHANGED) != 0) { //Power on slot LibNbPciRMW (Port.AddressValue | NB_PCIP_REG70, AccessWidth16, (UINT32)~PWR_CONTROLLER_CNTL, 0x0, pConfig); } } } } CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), "[NBPCIE]PcieCheckHotplug Exit\n")); }
bool RegisterStream::xmppStanzaIn(IXmppStream *AXmppStream, Stanza &AStanza, int AOrder) { if (AXmppStream==FXmppStream && AOrder==XSHO_XMPP_FEATURE) { if (AStanza.id() == "getReg") { if (AStanza.type() == "result") { LOG_STRM_INFO(AXmppStream->streamJid(),"Account registration fileds loaded"); QDomElement queryElem = AStanza.firstElement("query",NS_JABBER_REGISTER); QDomElement formElem = Stanza::findElement(queryElem,"x",NS_JABBER_DATA); if (FDataForms && !formElem.isNull()) { IDataForm form = FDataForms->dataForm(formElem); if (FDataForms->isFormValid(form)) { int userFiled = FDataForms->fieldIndex("username",form.fields); if (userFiled >= 0) { form.fields[userFiled].value = FXmppStream->streamJid().node(); form.fields[userFiled].type = DATAFIELD_TYPE_HIDDEN; } int passFiled = FDataForms->fieldIndex("password",form.fields); if (passFiled >= 0) { form.fields[passFiled].value = FXmppStream->getSessionPassword(); form.fields[passFiled].type = DATAFIELD_TYPE_HIDDEN; } FDialog = FDataForms->dialogWidget(form,NULL); FDialog->setAllowInvalid(false); FDialog->instance()->setWindowTitle(tr("Registration on %1").arg(FXmppStream->streamJid().domain())); connect(FDialog->instance(),SIGNAL(accepted()),SLOT(onRegisterDialogAccepred())); connect(FDialog->instance(),SIGNAL(rejected()),SLOT(onRegisterDialogRejected())); WidgetManager::showActivateRaiseWindow(FDialog->instance()); FXmppStream->setKeepAliveTimerActive(false); LOG_STRM_INFO(AXmppStream->streamJid(),"Account registration form dialog shown"); } else { LOG_STRM_WARNING(AXmppStream->streamJid(),"Failed to register new account on server: Invalid registration form received"); emit error(XmppError(IERR_REGISTER_INVALID_FORM)); } } else { Stanza submit("iq"); submit.setType("set").setId("setReg"); QDomElement querySubmit = submit.addElement("query",NS_JABBER_REGISTER); if (!queryElem.firstChildElement("username").isNull()) querySubmit.appendChild(submit.createElement("username")).appendChild(submit.createTextNode(FXmppStream->streamJid().node())); if (!queryElem.firstChildElement("password").isNull()) querySubmit.appendChild(submit.createElement("password")).appendChild(submit.createTextNode(FXmppStream->getSessionPassword())); if (!queryElem.firstChildElement("key").isNull()) querySubmit.appendChild(submit.createElement("key")).appendChild(submit.createTextNode(AStanza.firstElement("query").attribute("key"))); FXmppStream->sendStanza(submit); LOG_STRM_INFO(AXmppStream->streamJid(),"Account registration submit request sent"); } } else { XmppStanzaError err(AStanza); LOG_STRM_WARNING(AXmppStream->streamJid(),QString("Failed to load account registration fields: %1").arg(err.condition())); emit error(err); } return true; } else if (AStanza.id() == "setReg") { FXmppStream->removeXmppStanzaHandler(XSHO_XMPP_FEATURE,this); if (AStanza.type() == "result") { REPORT_EVENT(SEVP_REGISTRATION_STREAM_SUCCESS,1); LOG_STRM_INFO(AXmppStream->streamJid(),"Account registration submit accepted"); deleteLater(); emit finished(false); } else { XmppStanzaError err(AStanza); LOG_STRM_WARNING(AXmppStream->streamJid(),QString("Account registration submit rejected: %1").arg(err.condition())); emit error(err); } return true; } } return false; }