TBool CX509RFC822NameSubtree::AddLocalHostL(TInt& aPos) { TInt localHostLength = iName->FindF(KX509RFC822HostDomainSeparator); if ((localHostLength != KErrNotFound) && (localHostLength > 0)) { TPtrC localHost(&(iName->operator[] (aPos)), localHostLength); //the local host name is not checked here as it caused defect PDEF108960 //and for compatability with IE and Firefox. REP_APPEND_L(localHost); aPos = aPos + localHostLength; aPos++; //skip the @ symbol return ETrue; } return EFalse; //local host not found }
Client::Client(QObject *parent) : QObject(parent), m_client( new QXmppClient(this) ) { m_clientAddr = localHost(); connect(m_client, SIGNAL(connected()), this, SLOT(clientConnected()) ); connect(m_client, SIGNAL(disconnected()), this, SLOT(clientDisconnected()) ); connect(m_client, SIGNAL(error(QXmppClient::Error)), this, SLOT(error(QXmppClient::Error)) ); connect(m_client, SIGNAL(messageReceived(QXmppMessage)), this, SLOT(messageReceived(QXmppMessage)) ); }
/*! Authorise API access for the request. */ void DeRestPluginPrivate::authorise(ApiRequest &req, ApiResponse &rsp) { Q_UNUSED(rsp); QHostAddress localHost(QHostAddress::LocalHost); if (req.sock->peerAddress() == localHost) { req.auth = ApiAuthLocal; } if (req.sock == nullptr) // allow internal requests, as they are issued by triggering rules { req.auth = ApiAuthInternal; } QString apikey = req.apikey(); apiAuthCurrent = apiAuths.size(); if (apikey.isEmpty()) { return; } std::vector<ApiAuth>::iterator i = apiAuths.begin(); std::vector<ApiAuth>::iterator end = apiAuths.end(); for (size_t pos = 0; i != end; ++i, pos++) { if (apikey == i->apikey && i->state == ApiAuth::StateNormal) { apiAuthCurrent = pos; i->lastUseDate = QDateTime::currentDateTimeUtc(); // fill in useragent string if not already exist if (i->useragent.isEmpty()) { if (req.hdr.hasKey("User-Agent")) { i->useragent = req.hdr.value("User-Agent"); DBG_Printf(DBG_HTTP, "set useragent '%s' for apikey '%s'\n", qPrintable(i->useragent), qPrintable(i->apikey)); } } if (req.sock) { for (TcpClient &cl : openClients) { if (cl.sock == req.sock && cl.closeTimeout > 0) { cl.closeTimeout = AUTH_KEEP_ALIVE; break; } } } if ((!(i->useragent.isEmpty()) && i->useragent.startsWith(QLatin1String("iConnect"))) || i->devicetype.startsWith(QLatin1String("iConnectHue"))) { req.mode = ApiModeStrict; } else if (i->devicetype.startsWith(QLatin1String("Echo"))) { req.mode = ApiModeEcho; } else if (i->devicetype.startsWith(QLatin1String("Hue Essentials"))) { // supports deCONZ specifics } else if (i->devicetype.startsWith(QLatin1String("hue_")) || i->devicetype.startsWith(QLatin1String("Hue "))) { req.mode = ApiModeHue; } DBG_Printf(DBG_HTTP, "ApiMode: %d\n", req.mode); i->needSaveDatabase = true; if (!apiAuthSaveDatabaseTime.isValid() || apiAuthSaveDatabaseTime.elapsed() > (1000 * 60 * 30)) { apiAuthSaveDatabaseTime.start(); queSaveDb(DB_AUTH, DB_HUGE_SAVE_DELAY); } req.auth = ApiAuthFull; } } #if 0 // allow non registered devices to use the api if the link button is pressed if (gwLinkButton) { ApiAuth auth; auth.needSaveDatabase = true; auth.apikey = apikey; auth.devicetype = "unknown"; auth.createDate = QDateTime::currentDateTimeUtc(); auth.lastUseDate = QDateTime::currentDateTimeUtc(); apiAuths.push_back(auth); queSaveDb(DB_AUTH, DB_SHORT_SAVE_DELAY); return true; } #endif }