bool PluginLocate::HttpRequestHandle(HTTPRequest & request) { QString uri = request.GetURI(); if (uri.startsWith("/vl/locate.jsp")) { QString serialnumber = request.GetArg("sn").remove(':'); LogInfo(QString("Requesting LOCATE for tag %1").arg(serialnumber)); if(GlobalSettings::Get("Config/StandAlone", true) == false) { // Forward request to Violet QByteArray violetAnswer = request.ForwardTo(GlobalSettings::GetString("DefaultVioletServers/BootServer")); // Analyse the answer to see if servers has changed QList<QByteArray> lines = violetAnswer.split('\n'); foreach(QByteArray line, lines) { if (line.startsWith("ping")) {} else if (line.startsWith("broad")) {} else if (line.startsWith("xmpp_domain")) {} else if (line.size() != 0) LogError(QString("Unknown locate server : ") + line); } }
bool PluginRFID::HttpRequestHandle(HTTPRequest & request) { QString uri = request.GetURI(); if (uri.startsWith("/vl/rfid.jsp")) { QString serialnumber = request.GetArg("sn"); QString tagId = request.GetArg("t"); SetSettings("global/LastTag", tagId); Ztamp * z = ZtampManager::GetZtamp(this, tagId.toAscii()); Bunny * b = BunnyManager::GetBunny(this, serialnumber.toAscii()); b->SetPluginSetting(GetName(), "LastTag", tagId); if (z->OnRFID(b)) return true; if (b->OnRFID(QByteArray::fromHex(tagId.toAscii()))) return true; } return false; }
void PluginAuth::HttpRequestAfter(HTTPRequest & request) { QString uri = request.GetURI(); if (uri.startsWith("/vl/bc.jsp")) { QString version = request.GetArg("v"); QString serialnumber = request.GetArg("m").remove(':'); Bunny * b = BunnyManager::GetBunny(this, serialnumber.toAscii()); if(b->GetBunnyPassword() == "" && GetSettings("global/authMethod", QString()).toString() == "patched") { LogDebug("Analyzing firmware for patch application"); long address1 = 0x00011A4A; long address2 = 0x00011A91; long address3 = 0x00011AC9; long address4 = 0x00011AEB; int size1 = 3; int size2 = 6; int size3 = 6; int size4 = 1; QByteArray origin1; QByteArray origin2; QByteArray origin3; QByteArray origin4; QByteArray patch1; QByteArray patch2; QByteArray patch3; QByteArray patch4; origin1.append((char)0x02).append((char)0x3D).append((char)0x00); origin2.append((char)0x02).append((char)0x3D).append((char)0x00).append((char)0x02).append((char)0x3E).append((char)0x00); origin3.append((char)0x02).append((char)0x3D).append((char)0x00).append((char)0x02).append((char)0x3E).append((char)0x00); origin4.append((char)0x02); patch1.append((char)0x07).append((char)0x00).append((char)0x05); patch2.append((char)0x04).append((char)0x05).append((char)0x04).append((char)0x05).append((char)0x04).append((char)0x05); patch3.append((char)0x04).append((char)0x05).append((char)0x04).append((char)0x05).append((char)0x04).append((char)0x05); patch4.append((char)0x01); bool patch = true; if(request.reply.indexOf(origin1, address1) != address1) { LogDebug("Part 1 : KO"); patch = false; } else LogDebug("Part 1 : OK"); if(request.reply.indexOf(origin2, address2) != address2) { LogDebug("Part 2 : KO"); patch = false; } else LogDebug("Part 2 : OK"); if(request.reply.indexOf(origin3, address3) != address3) { LogDebug("Part 3 : KO"); patch = false; } else LogDebug("Part 3 : OK"); if(request.reply.indexOf(origin4, address4) != address4) { LogDebug("Part 4 : KO"); patch = false; } else LogDebug("Part 4 : OK"); if(patch) { LogDebug("Patching firmware"); request.reply.replace(address1, size1, patch1); request.reply.replace(address2, size2, patch2); request.reply.replace(address3, size3, patch3); request.reply.replace(address4, size4, patch4); } } } }