void QueueScriptController::AddMessage(Message::EKind eKind, const char* szText) { const char* szMsgText = szText + m_iPrefixLen; if (!strncmp(szMsgText, "[NZB] ", 6)) { debug("Command %s detected", szMsgText + 6); if (!strncmp(szMsgText + 6, "NZBPR_", 6)) { char* szParam = strdup(szMsgText + 6 + 6); char* szValue = strchr(szParam, '='); if (szValue) { *szValue = '\0'; DownloadQueue* pDownloadQueue = DownloadQueue::Lock(); NZBInfo* pNZBInfo = pDownloadQueue->GetQueue()->Find(m_iID); if (pNZBInfo) { pNZBInfo->GetParameters()->SetParameter(szParam, szValue + 1); } DownloadQueue::Unlock(); } else { error("Invalid command \"%s\" received from %s", szMsgText, GetInfoName()); } free(szParam); } else if (!strncmp(szMsgText + 6, "MARK=BAD", 8)) { m_bMarkBad = true; DownloadQueue* pDownloadQueue = DownloadQueue::Lock(); NZBInfo* pNZBInfo = pDownloadQueue->GetQueue()->Find(m_iID); if (pNZBInfo) { SetLogPrefix(NULL); PrintMessage(Message::mkWarning, "Marking %s as bad", m_szNZBName); SetLogPrefix(m_pScript->GetDisplayName()); pNZBInfo->SetMarkStatus(NZBInfo::ksBad); } DownloadQueue::Unlock(); } else { error("Invalid command \"%s\" received from %s", szMsgText, GetInfoName()); } } else { ScriptController::AddMessage(eKind, szText); } }
void QueueScriptController::AddMessage(Message::EKind kind, const char* text) { const char* msgText = text + m_prefixLen; if (!strncmp(msgText, "[NZB] ", 6)) { debug("Command %s detected", msgText + 6); if (!strncmp(msgText + 6, "NZBPR_", 6)) { CString param = msgText + 6 + 6; char* value = strchr(param, '='); if (value) { *value = '\0'; GuardedDownloadQueue downloadQueue = DownloadQueue::Guard(); NzbInfo* nzbInfo = QueueScriptCoordinator::FindNzbInfo(downloadQueue, m_id); if (nzbInfo) { nzbInfo->GetParameters()->SetParameter(param, value + 1); } } else { error("Invalid command \"%s\" received from %s", msgText, GetInfoName()); } } else if (!strncmp(msgText + 6, "DIRECTORY=", 10) && m_event == QueueScriptCoordinator::qeNzbDownloaded) { GuardedDownloadQueue downloadQueue = DownloadQueue::Guard(); NzbInfo* nzbInfo = QueueScriptCoordinator::FindNzbInfo(downloadQueue, m_id); if (nzbInfo) { nzbInfo->SetFinalDir(msgText + 6 + 10); } } else if (!strncmp(msgText + 6, "MARK=BAD", 8)) { m_markBad = true; GuardedDownloadQueue downloadQueue = DownloadQueue::Guard(); NzbInfo* nzbInfo = QueueScriptCoordinator::FindNzbInfo(downloadQueue, m_id); if (nzbInfo) { SetLogPrefix(nullptr); PrintMessage(Message::mkWarning, "Marking %s as bad", *m_nzbName); SetLogPrefix(m_script->GetDisplayName()); nzbInfo->SetMarkStatus(NzbInfo::ksBad); } } else { error("Invalid command \"%s\" received from %s", msgText, GetInfoName()); } } else { NzbInfo* nzbInfo = nullptr; { GuardedDownloadQueue downloadQueue = DownloadQueue::Guard(); nzbInfo = QueueScriptCoordinator::FindNzbInfo(downloadQueue, m_id); if (nzbInfo) { nzbInfo->AddMessage(kind, text); } } if (!nzbInfo) { ScriptController::AddMessage(kind, text); } } }