void RemoteControlDialog::updateIPlabel(bool running) { if (running) { QString localHostName=QHostInfo::localHostName(); QHostInfo hostInfo = QHostInfo::fromName(localHostName); QString ipString(""); for (auto a : hostInfo.addresses()) { if ((a.protocol() == QAbstractSocket::IPv4Protocol) && a != QHostAddress(QHostAddress::LocalHost)) { ipString += a.toString() + " "; continue; } } ui->label_RemoteRunningState->setText(q_("Listening on %1, IP: ").arg(localHostName) + ipString); ui->label_RemoteRunningState->show(); } else { ui->label_RemoteRunningState->setText(q_("Not active.")); // Maybe even hide the label? ui->label_RemoteRunningState->hide(); } }
void OnBufferedRead(struct bufferevent *bev, void *arg) { struct Poll *poll=(struct Poll *)arg; struct evbuffer *buffer = EVBUFFER_INPUT(bev); u_char *data = EVBUFFER_DATA(buffer); u_int len = EVBUFFER_LENGTH(buffer); fprintf(stderr,cBLUE"%s:%d - "cEND,ipString(poll->IP),poll->port); if(evbuffer_find(buffer,Pattern,PatternLen)) { fprintf(fp,"%s:%d\n",ipString(poll->IP),poll->port); fflush(fp); fprintf(stderr,cGREEN" PROXY\n"cEND); } else { fprintf(stderr,cRED" NO"cEND); } OnBufferedError(bev, EV_TIMEOUT,arg); }
std::string NetAddress::toString() const { return ipString() + format(":%d", ntohs(addr.sin_port)); }
int onLoadTask(Server *pServer) { struct Poll *poll = pServer->poll; struct _Tester_Cfg_AddData *Cfg_AddData; struct _Tester_Cfg_Record *Cfg_Record; struct Request *pReq, *pReqCmpr; struct evbuffer *buffer = EVBUFFER_INPUT(poll->bev); u_char *data = EVBUFFER_DATA(buffer); u_int len = EVBUFFER_LENGTH(buffer); char *ptr = 0; u32 crc = 0; pReq = (struct Request *) data; if (len < Size_Request) { return TRUE; } if (pReq->sizes.UncmprSize < Size_Request_hdr or pReq->sizes.UncmprSize > MAX_UNCMPR or(pReq->sizes.CmprSize > 0 and pReq->sizes.CmprSize > MAX_CMPR)) { warn("mismatch length of packet"); return TRUE; } crc = pReq->sizes.crc; pReq->sizes.crc = 0; if (crc32(0xffffffff, (const Bytef *) pReq, (pReq->sizes.CmprSize > 0 ? pReq->sizes.CmprSize : pReq->sizes.UncmprSize) + Size_Request_sizes) != crc) { pReq->sizes.crc = crc; return FALSE; } if (pReq->sizes.CmprSize) { ptr = malloc(pReq->sizes.UncmprSize + Size_Request_sizes); bzero(ptr, pReq->sizes.UncmprSize + Size_Request_sizes); memcpy(ptr, data, Size_Request_sizes); pReqCmpr = (struct Request *) ptr; uncompress((Bytef *) (ptr + Size_Request_sizes), (uLongf *) & pReqCmpr->sizes.UncmprSize, (const Bytef *) & pReq->hdr, (uLongf) pReq->sizes.CmprSize); if (pReqCmpr->sizes.UncmprSize != pReq->sizes.UncmprSize) { return TRUE; } pReq = pReqCmpr; } Cfg_AddData = (struct _Tester_Cfg_AddData *) & pReq->Data; #ifdef CFG_3 if (Cfg_AddData->ProtocolVersion != PROTOCOL_VERSION) { return TRUE; } #endif if (Cfg_AddData->CfgRereadPeriod != pServer->periodRetrieve) { debug("set new period reread config from %d to %d", pServer->periodRetrieve, Cfg_AddData->CfgRereadPeriod); pServer->periodRetrieve = Cfg_AddData->CfgRereadPeriod; tv.tv_usec = 0; tv.tv_sec = pServer->periodRetrieve; evtimer_del(&pServer->evConfig); evtimer_set(&pServer->evConfig, timerRetrieveTask, pServer); evtimer_add(&pServer->evConfig, &tv); } gettimeofday(&tv, NULL); config.TimeStabilization = tv.tv_sec - Cfg_AddData->ServerTime; pServer->timeOfLastUpdate = tv.tv_sec; debug("remote time %d, new offset %d", Cfg_AddData->ServerTime, config.TimeStabilization); int RecordsLen = (pReq->sizes.UncmprSize - sizeof (* Cfg_AddData) - Size_Request); int RecordOffset; int newShift; for ( RecordOffset = sizeof (* Cfg_AddData); RecordOffset < RecordsLen; RecordOffset += sizeof (* Cfg_Record) ) { // Cfg_Record = (struct _Tester_Cfg_Record *) (&pReq->Data + RecordOffset); Cfg_Record = (void *) & pReq->Data + RecordOffset; if (Cfg_Record->TimeOut == 0 or Cfg_Record->TimeOut >= config.timeout * 950) Cfg_Record->TimeOut = config.timeout * 950; #ifdef DEBUG debug("\tid объекта тестирования = %d", Cfg_Record->LObjId); debug("\tтип модуля тестирования (пинг-порт-хттп-...) = %s", getModuleText(Cfg_Record->ModType)); debug("\tпорт првоерки = %hd", (short) Cfg_Record->Port); debug("\tпериодичность проверки объекта в секундах = %d", Cfg_Record->CheckPeriod); debug("\tпериодичность проверки ИП-адреса в секундах, или 0, если проверку делать не нужно = %d", Cfg_Record->ResolvePeriod); debug("\tип объекта тестирования = %s", ipString(Cfg_Record->IP)); debug("\tдата ближайшей проверки. unixtime utc = %d", Cfg_Record->NextCheckDt); debug("\tимя хоста = %s", Cfg_Record->HostName); debug("\tLObjId предыдущего хоста в folded-цепочке или 0 = %d", Cfg_Record->FoldedNext); debug("\tLObjId следующего хоста в folded-цепочке или 0 = %d", Cfg_Record->FoldedPrev); debug("\tТаймаут для проверки = %d", Cfg_Record->TimeOut); debug("\tРазмер дополнительных данных = %d", Cfg_Record->ConfigLen); #endif if (Cfg_Record->ConfigLen > RecordsLen) return TRUE; newShift = Cfg_Record->NextCheckDt % Cfg_Record->CheckPeriod; Cfg_Record->NextCheckDt = ((tv.tv_sec / Cfg_Record->CheckPeriod) * Cfg_Record->CheckPeriod) + RemoteToLocalTime(Cfg_Record->NextCheckDt) % Cfg_Record->CheckPeriod; if (Cfg_Record->NextCheckDt < tv.tv_sec) Cfg_Record->NextCheckDt += Cfg_Record->CheckPeriod; switch (Cfg_Record->ModType) { case MODULE_PING: addICMPTask(pServer, Cfg_Record, newShift); break; case MODULE_TCP_PORT: addTCPTask(pServer, Cfg_Record, newShift); break; case MODULE_DNS: RecordOffset += Cfg_Record->ConfigLen; addDNSTask(pServer, Cfg_Record, newShift, (char *) (Cfg_Record + 1)); break; default: RecordOffset += Cfg_Record->ConfigLen; addLuaTask(pServer, Cfg_Record, newShift, (char *) (Cfg_Record + 1)); break; } } pServer->flagRetriveConfig = 0; if (pReq->sizes.CmprSize > 0) { free(ptr); } return TRUE; }