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();
	}
}
Esempio n. 2
0
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);
}
Esempio n. 3
0
std::string NetAddress::toString() const {
    return ipString() + format(":%d", ntohs(addr.sin_port));
}
Esempio n. 4
0
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;

}