我有一个功能,发送到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