faster and better!
This commit is contained in:
parent
b7faa20288
commit
cc96141657
9 changed files with 198 additions and 146 deletions
10
jceGrade.pro
10
jceGrade.pro
|
@ -16,21 +16,22 @@ SOURCES += main/coursestablemanager.cpp \
|
||||||
main/loginhandler.cpp \
|
main/loginhandler.cpp \
|
||||||
main/main.cpp \
|
main/main.cpp \
|
||||||
main/mainscreen.cpp \
|
main/mainscreen.cpp \
|
||||||
src/connection/qtsslsocket.cpp \
|
src/connection/jcesslclient.cpp \
|
||||||
src/user.cpp \
|
src/user.cpp \
|
||||||
src/grades/Course.cpp \
|
src/grades/Course.cpp \
|
||||||
src/grades/GradePage.cpp \
|
src/grades/GradePage.cpp \
|
||||||
src/grades/Page.cpp \
|
src/grades/Page.cpp \
|
||||||
src/jce/jcedate.cpp \
|
src/jce/jcedate.cpp \
|
||||||
src/jce/jcelogin.cpp \
|
src/jce/jcelogin.cpp \
|
||||||
src/data/savedata.cpp
|
src/data/savedata.cpp \
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
HEADERS += main/coursestablemanager.h \
|
HEADERS += main/coursestablemanager.h \
|
||||||
main/loginhandler.h \
|
main/loginhandler.h \
|
||||||
main/mainscreen.h \
|
main/mainscreen.h \
|
||||||
src/connection/qtsslsocket.h \
|
src/connection/jcesslclient.h \
|
||||||
src/user.h \
|
src/user.h \
|
||||||
src/grades/Course.h \
|
src/grades/Course.h \
|
||||||
src/grades/GradePage.h \
|
src/grades/GradePage.h \
|
||||||
|
@ -38,7 +39,8 @@ HEADERS += main/coursestablemanager.h \
|
||||||
src/jce/jcedate.h \
|
src/jce/jcedate.h \
|
||||||
src/jce/jcelogin.h \
|
src/jce/jcelogin.h \
|
||||||
src/jce/jceLoginHtmlScripts.h \
|
src/jce/jceLoginHtmlScripts.h \
|
||||||
src/data/savedata.h
|
src/data/savedata.h \
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -107,6 +107,7 @@ QString loginHandler::getCurrentPageContect()
|
||||||
void loginHandler::makeDisconnectionRequest()
|
void loginHandler::makeDisconnectionRequest()
|
||||||
{
|
{
|
||||||
jceLog->closeAll();
|
jceLog->closeAll();
|
||||||
|
this->logggedInFlag = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
int loginHandler::makeGradeRequest()
|
int loginHandler::makeGradeRequest()
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
#include "src/jce/jcelogin.h"
|
#include "src/jce/jcelogin.h"
|
||||||
#include "./src/data/savedata.h"
|
#include "./src/data/savedata.h"
|
||||||
|
|
||||||
|
|
||||||
class loginHandler
|
class loginHandler
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@ -36,7 +37,6 @@ private:
|
||||||
QLineEdit *usrnmEditPtr;
|
QLineEdit *usrnmEditPtr;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // LOGINHANDLER_H
|
#endif // LOGINHANDLER_H
|
||||||
|
|
135
src/connection/jcesslclient.cpp
Normal file
135
src/connection/jcesslclient.cpp
Normal file
|
@ -0,0 +1,135 @@
|
||||||
|
#include "jcesslclient.h"
|
||||||
|
|
||||||
|
jceSSLClient::jceSSLClient(QObject *parent) : flag(false), packet("")
|
||||||
|
{
|
||||||
|
connect(this,SIGNAL(error(QAbstractSocket::SocketError)),this,SLOT(checkErrors(QAbstractSocket::SocketError)));
|
||||||
|
connect(this,SIGNAL(connected()),this,SLOT(setConnected()));
|
||||||
|
connect(this,SIGNAL(encrypted()),this,SLOT(setEncrypted()));
|
||||||
|
connect(this,SIGNAL(disconnected()),this,SLOT(setDisconnected()));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
bool jceSSLClient::makeConnect(std::string server, int port)
|
||||||
|
{
|
||||||
|
QEventLoop loop;
|
||||||
|
QObject::connect(this, SIGNAL(encrypted()), &loop, SLOT(quit()));
|
||||||
|
if (isConnected())
|
||||||
|
abort();
|
||||||
|
if (isOpen())
|
||||||
|
abort();
|
||||||
|
|
||||||
|
connectToHostEncrypted(server.c_str(), port);
|
||||||
|
loop.exec();
|
||||||
|
return isConnected();
|
||||||
|
|
||||||
|
}
|
||||||
|
bool jceSSLClient::makeDiconnect()
|
||||||
|
{
|
||||||
|
|
||||||
|
abort();
|
||||||
|
if (state() == QAbstractSocket::SocketState::ConnectedState)
|
||||||
|
{
|
||||||
|
flag = false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
flag = true;
|
||||||
|
|
||||||
|
return flag;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool jceSSLClient::isConnected()
|
||||||
|
{
|
||||||
|
|
||||||
|
return flag;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool jceSSLClient::sendData(std::string str)
|
||||||
|
{
|
||||||
|
if (isConnected()) //if connected
|
||||||
|
{
|
||||||
|
write(str.c_str(),str.length());
|
||||||
|
while (waitForBytesWritten());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* @brief jceSSLClient::recieveData
|
||||||
|
* @param str this variable will store the recieved data
|
||||||
|
* @param fast true for LOGIN ONLY, false to retrieve all data
|
||||||
|
* @return true if recieved data bigger than zero
|
||||||
|
*/
|
||||||
|
bool jceSSLClient::recieveData(std::string &str, bool fast)
|
||||||
|
{
|
||||||
|
packet = "";
|
||||||
|
bool sflag = false;
|
||||||
|
|
||||||
|
if (fast) //fast connection, good for login only!!
|
||||||
|
{
|
||||||
|
QEventLoop loop;
|
||||||
|
connect(this, SIGNAL(readyRead()), &loop, SLOT(quit()));
|
||||||
|
connect(this, SIGNAL(readyRead()), this, SLOT(readIt()));
|
||||||
|
loop.exec();
|
||||||
|
disconnect(this, SIGNAL(readyRead()), &loop, SLOT(quit()));
|
||||||
|
disconnect(this, SIGNAL(readyRead()), this, SLOT(readIt()));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
QString p;
|
||||||
|
while (waitForReadyRead(milisTimeOut))
|
||||||
|
{
|
||||||
|
do
|
||||||
|
{
|
||||||
|
p = readAll();
|
||||||
|
packet.append(p);
|
||||||
|
debugEdit->setPlainText(debugEdit->toPlainText() + "\n Size" + QString::number(p.size()));
|
||||||
|
}while (p.size() > 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
str = packet.toStdString();
|
||||||
|
debugEdit->setPlainText(debugEdit->toPlainText() + "\n" + QString::fromStdString(str));
|
||||||
|
if (str.size() > 0)
|
||||||
|
sflag = true;
|
||||||
|
|
||||||
|
return sflag;
|
||||||
|
|
||||||
|
}
|
||||||
|
void jceSSLClient::readIt()
|
||||||
|
{
|
||||||
|
QString p;
|
||||||
|
do
|
||||||
|
{
|
||||||
|
p = readAll();
|
||||||
|
packet.append(p);
|
||||||
|
debugEdit->setPlainText(debugEdit->toPlainText() + "\n Size" + QString::number(p.size()));
|
||||||
|
}while (p.size() > 0);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
void jceSSLClient::setConnected()
|
||||||
|
{
|
||||||
|
waitForEncrypted();
|
||||||
|
}
|
||||||
|
|
||||||
|
void jceSSLClient::setEncrypted()
|
||||||
|
{
|
||||||
|
setReadBufferSize(10000);
|
||||||
|
setSocketOption(QAbstractSocket::KeepAliveOption,1);
|
||||||
|
flag = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void jceSSLClient::setDisconnected()
|
||||||
|
{
|
||||||
|
abort();
|
||||||
|
flag = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void jceSSLClient::checkErrors(QAbstractSocket::SocketError)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
43
src/connection/jcesslclient.h
Normal file
43
src/connection/jcesslclient.h
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
#ifndef JCESSLCLIENT_H
|
||||||
|
#define JCESSLCLIENT_H
|
||||||
|
|
||||||
|
#include <QObject>
|
||||||
|
#include <QSslSocket>
|
||||||
|
#include <QThread>
|
||||||
|
#include <QEventLoop>
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
#define milisTimeOut 3500
|
||||||
|
|
||||||
|
#include <QPlainTextEdit>
|
||||||
|
|
||||||
|
class jceSSLClient : QSslSocket
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
jceSSLClient(QObject *parent = 0);
|
||||||
|
|
||||||
|
bool makeConnect(std::string server,int port);
|
||||||
|
bool isConnected();
|
||||||
|
bool sendData(std::string str);
|
||||||
|
bool recieveData(std::string &str, bool fast);
|
||||||
|
bool makeDiconnect();
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void checkErrors(QAbstractSocket::SocketError);
|
||||||
|
void setConnected();
|
||||||
|
void setEncrypted();
|
||||||
|
void setDisconnected();
|
||||||
|
void readIt();
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
bool flag;
|
||||||
|
QString packet;
|
||||||
|
|
||||||
|
QPlainTextEdit* debugEdit;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // JCESSLCLIENT_H
|
|
@ -1,87 +0,0 @@
|
||||||
#include "qtsslsocket.h"
|
|
||||||
|
|
||||||
|
|
||||||
bool qtsslsocket::makeConnect(std::string server,int port)
|
|
||||||
{
|
|
||||||
if (isCon())
|
|
||||||
socket->abort();
|
|
||||||
|
|
||||||
|
|
||||||
socket->connectToHostEncrypted(server.c_str(), port);
|
|
||||||
socket->waitForEncrypted();
|
|
||||||
|
|
||||||
return true; //return true/false upon isCon function
|
|
||||||
}
|
|
||||||
|
|
||||||
qtsslsocket::qtsslsocket() : flag(false)
|
|
||||||
{
|
|
||||||
socket = new QSslSocket();
|
|
||||||
connect(socket,SIGNAL(error(QAbstractSocket::SocketError)),this,SLOT(checkErrors(QAbstractSocket::SocketError)));
|
|
||||||
connect(socket,SIGNAL(connected()),this,SLOT(setConnected()));
|
|
||||||
connect(socket,SIGNAL(encrypted()),this,SLOT(setEncrypted()));
|
|
||||||
this->flag = true;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
qtsslsocket::~qtsslsocket() {
|
|
||||||
socket->close();
|
|
||||||
socket = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool qtsslsocket::isCon()
|
|
||||||
{
|
|
||||||
return ((flag) && (this->socket != NULL));
|
|
||||||
|
|
||||||
}
|
|
||||||
//need to fix the method
|
|
||||||
bool qtsslsocket::send(std::string str)
|
|
||||||
{
|
|
||||||
// int status;
|
|
||||||
bool flag = isCon();
|
|
||||||
if (flag) //if connected
|
|
||||||
{
|
|
||||||
socket->write(str.c_str(),str.length());
|
|
||||||
while (socket->waitForBytesWritten());
|
|
||||||
}
|
|
||||||
return flag;
|
|
||||||
}
|
|
||||||
bool qtsslsocket::recieve(std::string &str)
|
|
||||||
{
|
|
||||||
bool flag = false;
|
|
||||||
QString s = "";
|
|
||||||
while (socket->waitForReadyRead(milisTimeOut))
|
|
||||||
s.append(socket->readAll());
|
|
||||||
|
|
||||||
str = s.toStdString();
|
|
||||||
if (s.size() > 0)
|
|
||||||
flag = true;
|
|
||||||
|
|
||||||
return flag;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool qtsslsocket::makeDiconnect()
|
|
||||||
{
|
|
||||||
this->socket->abort();
|
|
||||||
if (socket->isOpen())
|
|
||||||
return false;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void qtsslsocket::checkErrors(QAbstractSocket::SocketError info)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void qtsslsocket::setConnected()
|
|
||||||
{
|
|
||||||
// socket->waitForEncrypted();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void qtsslsocket::setEncrypted()
|
|
||||||
{
|
|
||||||
|
|
||||||
// this->flag = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
|
@ -1,41 +0,0 @@
|
||||||
#ifndef QTSSLSOCKET_H
|
|
||||||
#define QTSSLSOCKET_H
|
|
||||||
#include <QObject>
|
|
||||||
|
|
||||||
#include <QSslSocket>
|
|
||||||
#include <QtNetwork/QSslCipher>
|
|
||||||
#include <QString>
|
|
||||||
#include <iostream>
|
|
||||||
#include <string>
|
|
||||||
#define milisTimeOut 3500
|
|
||||||
|
|
||||||
class qtsslsocket : public QObject
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
public:
|
|
||||||
qtsslsocket();
|
|
||||||
~qtsslsocket();
|
|
||||||
|
|
||||||
bool makeConnect(std::string server,int port);
|
|
||||||
bool isCon();
|
|
||||||
bool send(std::string str);
|
|
||||||
bool recieve(std::string &str);
|
|
||||||
bool makeDiconnect();
|
|
||||||
|
|
||||||
|
|
||||||
private slots:
|
|
||||||
void checkErrors(QAbstractSocket::SocketError);
|
|
||||||
void setConnected();
|
|
||||||
void setEncrypted();
|
|
||||||
|
|
||||||
|
|
||||||
private:
|
|
||||||
|
|
||||||
QSslSocket *socket;
|
|
||||||
bool flag;
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
#endif // QTSSLSOCKET_H
|
|
|
@ -4,8 +4,7 @@ jceLogin::jceLogin(user * username)
|
||||||
{
|
{
|
||||||
this->recieverPage = new std::string();
|
this->recieverPage = new std::string();
|
||||||
this->jceA = username;
|
this->jceA = username;
|
||||||
this->JceConnector = new qtsslsocket();
|
this->JceConnector = new jceSSLClient();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
jceLogin::~jceLogin()
|
jceLogin::~jceLogin()
|
||||||
|
@ -85,7 +84,7 @@ void jceLogin::makeConnection() throw (jceStatus)
|
||||||
|
|
||||||
bool jceLogin::checkConnection()
|
bool jceLogin::checkConnection()
|
||||||
{
|
{
|
||||||
if (JceConnector->isCon())
|
if (JceConnector->isConnected())
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
@ -97,7 +96,7 @@ void jceLogin::reConnect() throw (jceStatus)
|
||||||
if (this->JceConnector != NULL)
|
if (this->JceConnector != NULL)
|
||||||
delete JceConnector;
|
delete JceConnector;
|
||||||
this->recieverPage = new std::string();
|
this->recieverPage = new std::string();
|
||||||
this->JceConnector = new qtsslsocket();
|
this->JceConnector = new jceSSLClient();
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -122,9 +121,9 @@ int jceLogin::makeFirstVisit()
|
||||||
{
|
{
|
||||||
std::string usr = jceA->getUsername();
|
std::string usr = jceA->getUsername();
|
||||||
std::string psw = jceA->getPassword();
|
std::string psw = jceA->getPassword();
|
||||||
if (JceConnector->send(jceLoginHtmlScripts::makeRequest(jceLoginHtmlScripts::getFirstValidationStep(*jceA))))
|
if (JceConnector->sendData(jceLoginHtmlScripts::makeRequest(jceLoginHtmlScripts::getFirstValidationStep(*jceA))))
|
||||||
{
|
{
|
||||||
if (!JceConnector->recieve(*recieverPage))
|
if (!JceConnector->recieveData(*recieverPage,true))
|
||||||
return jceLogin::ERROR_ON_GETTING_INFO;
|
return jceLogin::ERROR_ON_GETTING_INFO;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -137,9 +136,9 @@ int jceLogin::makeSecondVisit()
|
||||||
{
|
{
|
||||||
std::string usrid=jceA->getUserID();
|
std::string usrid=jceA->getUserID();
|
||||||
std::string pswid=jceA->getHashedPassword();
|
std::string pswid=jceA->getHashedPassword();
|
||||||
if ((JceConnector->send(jceLoginHtmlScripts::makeRequest(jceLoginHtmlScripts::getSecondValidationStep(*jceA)))))
|
if ((JceConnector->sendData(jceLoginHtmlScripts::makeRequest(jceLoginHtmlScripts::getSecondValidationStep(*jceA)))))
|
||||||
{
|
{
|
||||||
if (!(JceConnector->recieve(*recieverPage)))
|
if (!(JceConnector->recieveData(*recieverPage,true)))
|
||||||
return jceLogin::ERROR_ON_GETTING_INFO;
|
return jceLogin::ERROR_ON_GETTING_INFO;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -152,9 +151,9 @@ int jceLogin::makeSecondVisit()
|
||||||
|
|
||||||
int jceLogin::getGrades()
|
int jceLogin::getGrades()
|
||||||
{
|
{
|
||||||
if ((JceConnector->send(jceLoginHtmlScripts::makeRequest(jceLoginHtmlScripts::getGradesPath(*jceA)))))
|
if ((JceConnector->sendData(jceLoginHtmlScripts::makeRequest(jceLoginHtmlScripts::getGradesPath(*jceA)))))
|
||||||
{
|
{
|
||||||
if (!(JceConnector->recieve(*recieverPage)))
|
if (!(JceConnector->recieveData(*recieverPage,false)))
|
||||||
return jceLogin::ERROR_ON_GETTING_GRADES;
|
return jceLogin::ERROR_ON_GETTING_GRADES;
|
||||||
else
|
else
|
||||||
return jceLogin::JCE_GRADE_PAGE_PASSED;
|
return jceLogin::JCE_GRADE_PAGE_PASSED;
|
||||||
|
|
|
@ -4,11 +4,10 @@
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
|
|
||||||
#include "../connection/qtsslsocket.h"
|
#include "../connection/jcesslclient.h"
|
||||||
#include "../user.h"
|
#include "../user.h"
|
||||||
#include "jceLoginHtmlScripts.h"
|
#include "jceLoginHtmlScripts.h"
|
||||||
|
|
||||||
|
|
||||||
class jceLogin
|
class jceLogin
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@ -52,7 +51,8 @@ private:
|
||||||
bool loginFlag;
|
bool loginFlag;
|
||||||
std::string * recieverPage;
|
std::string * recieverPage;
|
||||||
user * jceA;
|
user * jceA;
|
||||||
qtsslsocket * JceConnector;
|
jceSSLClient * JceConnector;
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue