/** * 接続を閉じる */ void YASWebProxy::closeProxySocket() { QTcpSocket* proxySocket = qobject_cast<QTcpSocket*>(sender()); if (proxySocket) { QTcpSocket* socket = qobject_cast<QTcpSocket*>(proxySocket->parent()); if (socket) socket->disconnectFromHost(); proxySocket->deleteLater(); } }
/*------------------------------------------------------------------------------* *------------------------------------------------------------------------------*/ void WebProxy::closeConnection() { QTcpSocket *proxySocket = qobject_cast<QTcpSocket*>(sender()); if (proxySocket) { QTcpSocket *socket = qobject_cast<QTcpSocket*>(proxySocket->parent()); if (socket) socket->disconnectFromHost(); if (proxySocket->error() != QTcpSocket::RemoteHostClosedError) qWarning() << "Error for:" << proxySocket->property("url").toUrl() << proxySocket->errorString(); proxySocket->deleteLater();; } } //WebProxy::closeConnection
void HttpProxy::onProxySocketConnectedHttps() { QTcpSocket *proxySocket = qobject_cast<QTcpSocket *>(sender()); QTcpSocket *socket = qobject_cast<QTcpSocket *>(proxySocket->parent()); disconnect(socket, &QTcpSocket::readyRead, this, &HttpProxy::onSocketReadyRead); /* once it's connected, we use a light-weight SocketStream class to do the job */ SocketStream *stream = new SocketStream(socket, proxySocket, this); connect(socket, &QTcpSocket::disconnected, stream, &SocketStream::deleteLater); connect(stream, &SocketStream::info, this, &HttpProxy::info); static const QByteArray httpsHeader = "HTTP/1.0 200 Connection established\r\n\r\n"; socket->write(httpsHeader); }
/** * レスポンスを転送する */ void YASWebProxy::forwardResponse() { QTcpSocket* proxySocket = qobject_cast<QTcpSocket*>(sender()); QTcpSocket* socket = qobject_cast<QTcpSocket*>(proxySocket->parent()); QByteArray res = proxySocket->readAll(); HttpParser* parser = proxySocket->findChild<HttpParser*>("responseParser"); if (parser != 0) { parser->input(res); socket->write(parser->dequeueData()); } else { socket->write(res); } }
void HttpProxy::onProxySocketReadyRead() { QTcpSocket *proxySocket = qobject_cast<QTcpSocket *>(sender()); QTcpSocket *socket = qobject_cast<QTcpSocket *>(proxySocket->parent()); socket->write(proxySocket->readAll()); }
/*------------------------------------------------------------------------------* *------------------------------------------------------------------------------*/ void WebProxy::transferData() { QTcpSocket *proxySocket = qobject_cast<QTcpSocket*>(sender()); QTcpSocket *socket = qobject_cast<QTcpSocket*>(proxySocket->parent()); socket->write(proxySocket->readAll()); } //WebProxy::transferData