Пример #1
0
void SEGSAdminTool::check_for_config_file() // Does this on application start
{
    // Load settings.cfg if exists
    ui->output->appendPlainText("Checking for existing configuration file...");
    QFileInfo config_file("settings.cfg");
    if (config_file.exists())
    {
        QString config_file_path = config_file.absoluteFilePath();
        ui->output->appendPlainText("SUCCESS: Configuration file found!");
        ui->icon_status_config->setText("<html><head/><body><p><img src=':/icons/icon_good.png'/></p></body></html>");
        ui->gen_config_file->setEnabled(false);
        ui->runDBTool->setEnabled(true);
        ui->set_up_data_button->setEnabled(true);
        ui->authserver_start->setEnabled(true);
        emit readyToRead(config_file_path);
    }
    else
    {
        ui->output->appendPlainText("WARNING: No settings.cfg file found! Please use the server setup to your left");
        ui->icon_status_config->setText("<html><head/><body><p><img src=':/icons/icon_warning.png'/></p></body></html>");
        ui->runDBTool->setEnabled(false); // Cannot create DB without settings.cfg
        ui->createUser->setEnabled(false); // Cannot create user without settings.cfg
        ui->set_up_data_button->setEnabled(false); // Shouldn't create data before config file exists
        ui->authserver_start->setEnabled(false); // Shouldn't run authserver if no config file exists
    }
}
Пример #2
0
	void HttpClientHandler::handleRequest()
	{
		header = QHttpRequestHeader(header_data);
	//	Out(SYS_WEB|LOG_DEBUG) << "Parsing request : " << header.toString() << endl;
		if (header.method() == "POST")
		{
			if (header.hasContentLength())
			{
				request_data.resize(header.contentLength());
				state = WAITING_FOR_CONTENT;
				bytes_read = 0;
				if (client->bytesAvailable() > 0)
					readyToRead();
			}
		}
		else if (header.method() == "GET")
		{
			srv->handleGet(this,header);
			header_data = "";
			request_data.resize(0);
		}
		else
		{
			srv->handleUnsupportedMethod(this);
		}
	}
Пример #3
0
void SEGSAdminTool::check_for_config_file() // Does this on application start
{
    QPixmap check_icon(":icons/Resources/check.svg");
    QPixmap alert_triangle(":icons/Resources/alert-triangle.svg");
    // Load settings.cfg if exists
    ui->output->appendPlainText("Checking for existing configuration file...");
    QFileInfo config_file("settings.cfg");
    if(config_file.exists())
    {
        QString config_file_path = config_file.absoluteFilePath();
        ui->output->appendPlainText("SUCCESS: Configuration file found!");
        emit checkConfigVersion(config_file_path);
        ui->icon_status_config->setPixmap(check_icon);
        ui->gen_config_file->setEnabled(false);
        ui->runDBTool->setEnabled(true);
        ui->set_up_data_button->setEnabled(true);
        ui->authserver_start->setEnabled(true);
        ui->settings_button->setEnabled(true);
        emit readyToRead(config_file_path);
    }
    else
    {
        ui->output->appendPlainText("WARNING: No settings.cfg file found! Please use the server setup to your left");
        ui->icon_status_config->setPixmap(alert_triangle);
        ui->runDBTool->setEnabled(false); // Cannot create DB without settings.cfg
        ui->createUser->setEnabled(false); // Cannot create user without settings.cfg
        ui->set_up_data_button->setEnabled(false); // Shouldn't create data before config file exists
        ui->authserver_start->setEnabled(false); // Shouldn't run authserver if no config file exists
        ui->settings_button->setEnabled(false); // Shouldn't be able to edit settings if no config file exists
    }
}
    void readyToRead()
    {
        if(-1 == inProgressSize) {
            // We need a size header of sizeof(qint32)
            if(sizeof(qint32) > (uint)dev->bytesAvailable())
                return;

            // Read size header
            int read = dev->read((char *)&inProgressSize, sizeof(qint32));
            Q_ASSERT(read == sizeof(qint32));
            Q_UNUSED(read);

            // Check sizing constraints
            if(inProgressSize > maxPacketSize) {
                QObject::disconnect(dev, SIGNAL(readyRead()),
                                    this, SLOT(readyToRead()));
                QObject::disconnect(dev, SIGNAL(aboutToClose()),
                                    this, SLOT(aboutToClose()));
                QObject::disconnect(dev, SIGNAL(bytesWritten(qint64)),
                                    this, SLOT(bytesWritten(qint64)));
                dev = 0;
                emit invalidPacket();
                return;
            }

            inProgressSize -= sizeof(qint32);

            // Need to get trailing data
            readyToRead();
        } else {
            inProgress.append(dev->read(inProgressSize - inProgress.size()));

            if(inProgressSize == inProgress.size()) {
                // Packet has arrived!
                packets.append(inProgress);
                inProgressSize = -1;
                inProgress.clear();

                emit readyRead();

                // Need to get trailing data
                readyToRead();
            }
        }
    }
Пример #5
0
    void readyToRead()
    {
        bool gotPackets = false;
        while (true) {
            // Get size header (if not in progress)
            if (-1 == inProgressSize) {
                // We need a size header of sizeof(qint32)
                if (sizeof(qint32) > (uint)dev->bytesAvailable()) {
                    if (gotPackets)
                        emit readyRead();
                    return; // no more data available
                }

                // Read size header
                int read = dev->read((char *)&inProgressSize, sizeof(qint32));
                Q_ASSERT(read == sizeof(qint32));
                Q_UNUSED(read);

                // Check sizing constraints
                if (inProgressSize > maxPacketSize) {
                    QObject::disconnect(dev, SIGNAL(readyRead()),
                                        this, SLOT(readyToRead()));
                    QObject::disconnect(dev, SIGNAL(aboutToClose()),
                                        this, SLOT(aboutToClose()));
                    QObject::disconnect(dev, SIGNAL(bytesWritten(qint64)),
                                        this, SLOT(bytesWritten(qint64)));
                    dev = 0;
                    emit invalidPacket();
                    return;
                }

                inProgressSize -= sizeof(qint32);
            } else {
                inProgress.append(dev->read(inProgressSize - inProgress.size()));

                if (inProgressSize == inProgress.size()) {
                    // Packet has arrived!
                    packets.append(inProgress);
                    inProgressSize = -1;
                    inProgress.clear();

                    waitingForPacket = false;
                    gotPackets = true;
                } else {
                    if (gotPackets)
                        emit readyRead();
                    return; // packet in progress is not yet complete
                }
            }
        }
    }
Пример #6
0
	void HttpClientHandler::readyToRead()
	{
		if (state == WAITING_FOR_REQUEST)
		{
			while (client->canReadLine())
			{
				QString line = client->readLine();
				header_data += line;
				if (header_data.endsWith("\r\n\r\n"))
				{
					// We have got the header, so lets parse it
					handleRequest();
					break;
				}
			}
		}
		else if (state == WAITING_FOR_CONTENT)
		{
			Uint32 ba = client->bytesAvailable();
			if (ba + bytes_read < header.contentLength())
			{
				client->readBlock((char*)request_data.data() + bytes_read,ba);
				bytes_read += ba;
			}
			else
			{
				Uint32 left = header.contentLength() - bytes_read;
				client->readBlock((char*)request_data.data() + bytes_read,left);
				bytes_read += left;
				srv->handlePost(this,header,request_data);
			
				header_data = "";
				request_data.resize(0);
				state = WAITING_FOR_REQUEST;
				if (client->bytesAvailable() > 0)
					readyToRead();
			}
		}
	}
Пример #7
0
void GTcpSocket::transferAct()
{
    if(shedule_now)return; //если уже идет обмен с внешними буферами, то выходим
    if(!t_flag) return; //если флаг паузы, то выходим - не переносим ничего и никуда

    shedule_now = true; //устанавливаем признак выполнения данного метода
    int interval = 1000; //начальный интервал для подсчета лимита байт на скачивания/передачи

    if(this->state() != QAbstractSocket::ConnectedState && QSslSocket::bytesAvailable() == 0)
    {
        shedule_now = false;
        if(inbuf->size() > 0)emit readyToRead();
        return;
    } //если сокет был отсоединен и нету данных во внешнем буфеое, то выходим

    if(!watcher->isNull()) //если таймер запускается не впервые
        interval = qMin(watcher->elapsed(), interval);//то выбираем наименьшее между начальным значением и интервалом с момента прошлой передачи данных
    watcher->start();

    qint64 inLimit = (inspeed * interval)/1000; //высчитываем лимит приема/передачи
    qint64 outLimit = (outspeed * interval)/1000;
    if(outLimit == 0) outLimit = outbuf->size(); // если не утсновлено ограничение на отдачу, то передается все cодержимое выходного буфера

    qint64 bytesToRead;

    if(state() != QAbstractSocket::ConnectedState)
    {
        bytesToRead = QSslSocket::bytesAvailable();

        if(bytesToRead > 2097152 /*2MB*/)bytesToRead = 2097152;
    }
    else
    {
        bytesToRead = qMin<qint64>(inLimit, QSslSocket::bytesAvailable());
        if(QSslSocket::bytesAvailable() > 0) timeout->start();
        else if(timeout->elapsed() > timeout_interval*1000 && !timeout->isNull())
        {
            emit error(QSslSocket::SocketTimeoutError);
            close();
            shedule_now = false;
            return;
        }
    }
    qint64 bytesToWrite = qMin<qint64>(outLimit, outbuf->size());

    if(inspeed*2 < readBufferSize())
    {
        qint64 dif = QSslSocket::bytesAvailable() - inspeed*2;
        if(dif > 50) setReadBufferSize(readBufferSize()-50);
        else setReadBufferSize(readBufferSize()-dif);
    }

    if(inspeed != 0)
    {
        int old_size = inbuf->size();
        inbuf->resize(old_size + bytesToRead);
        QSslSocket::readData(inbuf->data() + old_size, bytesToRead);
    }
    QSslSocket::writeData(outbuf->data(), bytesToWrite);
    outbuf->remove(0, bytesToWrite);
    flush();

    shedule_now = false;
    if(bytesToRead > 0 && inspeed !=0 )emit readyToRead();
    else if (inspeed == 0 && QSslSocket::bytesAvailable()!= 0) emit readyToRead();
}