我有一個功能,發送到icinga/nagios服務器。QNetworkAccesssManager icinga/nagios確認
功能 - sendAcknowledge
void MNetworkConnector::sendAcknowledge(QString service, QString host)
{
QNetworkAccessManager *ackmanager;
ackmanager = new QNetworkAccessManager();
QString ackcommand = "http://nagioscore.demos.nagios.com/nagios/cgi-bin/cmd.cgi?cmd_typ=34&cmd_mod=2&host=#host#&service=#service#&com_author=nagiosadmin&com_data=Sent:+mMonitor&btnSubmit=Commit";
service = service.replace(" ", "+");
ackcommand = ackcommand.replace("#host#", host).replace("#service#", service);
connect(ackmanager, SIGNAL(finished(QNetworkReply*)),this, SLOT(replyFinished2(QNetworkReply*)));
QNetworkRequest myReq;
QUrl myUrl(ackcommand);
myUrl.setUserName("nagiosadmin");
myUrl.setPassword("nagiosadmin");
myReq.setUrl(myUrl);
myReq.setRawHeader("Referer", "http://nagioscore.demos.nagios.com/nagios/cgi-bin/cmd.cgi");
ackmanager->get(myReq);
}
功能 - replyFinished2
void MNetworkConnector::replyFinished2(QNetworkReply *r)
{
qDebug() << "reply output:" << r->readAll();
}
系統返回的幾個錯誤。 如果測試我公司icinga服務器上的根源,我有錯誤: 並非所有命令都可以送過成功 - 未授權
如果我manualy測試我公司icinga服務器上,我有錯誤:錯誤:似乎是一個CSRF攻擊!該命令不是通過Classic-UI本身發佈的!
如果我在nagios測試網站上手動測試它,我沒有錯誤。設置服務確認是好的。
如果我測試這個源,我有錯誤:對不起,但你沒有授權提交指定的命令。
怎麼了?感謝您的所有想法。起初,我需要在Icinga中解決問題,我只用作替代測試的nagios測試頁面。
這是我的第一個版本的代碼:-)。我認爲這個問題在那裏,所以我改變了它在QUrl中驗證。 – exo
呃這太可怕了。所有的問題只是因爲主機名是區分大小寫的:-(。我把所有的主機轉移到BIG,然後當發送ACK ..... grrrrrrrr。2天和2個月。 – exo
哦,男人!我會告訴你,我測試了你提供的代碼並且工作正常,我曾想象過這個問題發生在你沒有注意到的一些細節上,我正要問你設置主機和服務的代碼部分,哈哈哈,我是很高興你已經解決了問題,儘管花了很多時間。 – felipeptcho