add login as mobile
This commit is contained in:
+27
-10
@@ -46,6 +46,7 @@ MainTray::MainTray(QObject *parent) : QSystemTrayIcon(parent),
|
||||
optionsAction = new QAction(tr("选项"), this);
|
||||
bootAction = new QAction(tr("开机启动"), this);
|
||||
muteAction = new QAction(tr("勿扰模式"), this);
|
||||
mobileAction = new QAction(tr("作为移动端"), this);
|
||||
aboutAction = new QAction(tr("关于"), this);
|
||||
quitAction = new QAction(tr("退出"), this);
|
||||
|
||||
@@ -61,26 +62,30 @@ MainTray::MainTray(QObject *parent) : QSystemTrayIcon(parent),
|
||||
QClipboard *clipBoard = QApplication::clipboard();
|
||||
clipBoard->setText(ipList.at(1));
|
||||
}
|
||||
showMessage(tr("复制成功"), tr("IP地址已复制到剪切板"));
|
||||
if(!muteAction->isChecked())
|
||||
{
|
||||
showMessage(tr("复制成功"), tr("IP地址已复制到剪切板"));
|
||||
}
|
||||
});
|
||||
|
||||
autoLogin->setCheckable(true);
|
||||
bootAction->setCheckable(true);
|
||||
muteAction->setCheckable(true);
|
||||
mobileAction->setCheckable(true);
|
||||
|
||||
muteAction->setToolTip(tr("勿扰模式下不会发出通知"));
|
||||
|
||||
connect(loginAction, &QAction::triggered, this, [this]() {
|
||||
writeLog(tr("Login triggered."));
|
||||
isForceLogin = true;
|
||||
netctrl->sendLogoutRequest();
|
||||
netctrl->sendLogoutRequest(true, mobileAction->isChecked());
|
||||
hasWarned = false;
|
||||
netctrl->sendLoginRequest();
|
||||
netctrl->sendLoginRequest(mobileAction->isChecked());
|
||||
isForceLogout = false;
|
||||
});
|
||||
connect(logoutAction, &QAction::triggered, this, [this]() {
|
||||
writeLog(tr("Logout triggered."));
|
||||
netctrl->sendLogoutRequest();
|
||||
netctrl->sendLogoutRequest(false, mobileAction->isChecked());
|
||||
isForceLogout = true;
|
||||
});
|
||||
connect(autoLogin, &QAction::toggled, this, [this](bool set) {
|
||||
@@ -107,9 +112,11 @@ MainTray::MainTray(QObject *parent) : QSystemTrayIcon(parent),
|
||||
autoLogin->setChecked(settings.value("isAutoLogin", true).toBool());
|
||||
bootAction->setChecked(settings.value("isOnBoot", false).toBool());
|
||||
muteAction->setChecked(settings.value("isMute", false).toBool());
|
||||
mobileAction->setChecked(settings.value("isMobile", false).toBool());
|
||||
|
||||
settingsMenu->setTitle(tr("设置"));
|
||||
settingsMenu->addAction(optionsAction);
|
||||
settingsMenu->addAction(mobileAction);
|
||||
settingsMenu->addAction(muteAction);
|
||||
settingsMenu->addAction(bootAction);
|
||||
|
||||
@@ -271,8 +278,11 @@ void MainTray::setAutoStart(bool set)
|
||||
QFile file(path + "/ipgw.desktop");
|
||||
if (!file.open(QIODevice::ReadWrite | QIODevice::Text))
|
||||
{
|
||||
showMessage(tr("设置失败"), tr("读写/home/.config/autostart/失败"), this->icon(), msgDur);
|
||||
return;
|
||||
if(!muteAction->isChecked())
|
||||
{
|
||||
showMessage(tr("设置失败"), tr("读写/home/.config/autostart/失败"), this->icon(), msgDur);
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (set)
|
||||
{
|
||||
@@ -298,7 +308,10 @@ void MainTray::openLogFile()
|
||||
{
|
||||
if (!logFile.open(QIODevice::Append | QIODevice::Text))
|
||||
{
|
||||
showMessage(tr("警告"), tr("日志文件打开失败"));
|
||||
if(!muteAction->isChecked())
|
||||
{
|
||||
showMessage(tr("警告"), tr("日志文件打开失败"));
|
||||
}
|
||||
// return;
|
||||
}
|
||||
writeLog(tr("\n=================================================="), false);
|
||||
@@ -394,20 +407,24 @@ void MainTray::handleInfo(QString byte, QString sec, QString balance, QString ip
|
||||
timeAction->setText(tr("已用时长:\t") + QString::number(hour, 'f', 2) + tr(" 小时") /*+ ":" +QString::number(min) + ":" + second*/);
|
||||
balanceAction->setText(tr("账户余额:\t") + balance + tr(" 元"));
|
||||
ipAction->setText(tr("IP地址:\t") + ip);
|
||||
if (!hasWarned && totalTraffic <= 0)
|
||||
if (!hasWarned && totalTraffic > 0)
|
||||
{
|
||||
hasWarned = true;
|
||||
if (byte.toDouble() / 1048576.0 > totalTraffic * 1024)
|
||||
{ //流量已超
|
||||
trafficstate = Over;
|
||||
if (!muteAction->isChecked())
|
||||
showMessage(tr("流量警告"), tr("本月流量已超"), QSystemTrayIcon::Warning);
|
||||
QTimer::singleShot(5000, this, [this]{
|
||||
showMessage(tr("流量警告"), tr("本月流量已超"), QSystemTrayIcon::Warning);
|
||||
});
|
||||
}
|
||||
else if (byte.toDouble() / 1048576.0 + 5000 > totalTraffic * 1024)
|
||||
{ //流量将超
|
||||
trafficstate = Nearly;
|
||||
if (!muteAction->isChecked())
|
||||
showMessage(tr("流量预警"), tr("剩余流量:") + leftoverString + tr("G"));
|
||||
QTimer::singleShot(5000, this, [this, leftoverString]{
|
||||
showMessage(tr("流量预警"), tr("剩余流量:") + leftoverString + tr("G"));
|
||||
});
|
||||
}
|
||||
showToolTip(currentState);
|
||||
}
|
||||
|
||||
+1
-2
@@ -15,7 +15,6 @@
|
||||
#include <QtGlobal>
|
||||
#include <QClipboard>
|
||||
#include <QStandardPaths>
|
||||
#include <QDebug>
|
||||
|
||||
class MainTray : public QSystemTrayIcon
|
||||
{
|
||||
@@ -33,7 +32,7 @@ class MainTray : public QSystemTrayIcon
|
||||
private:
|
||||
QMenu *menu, *infoMenu, *settingsMenu;
|
||||
QAction *loginAction, *logoutAction, *autoLogin, *optionsAction, *aboutAction, *quitAction;
|
||||
QAction *mbAction, *timeAction, *balanceAction, *ipAction, *bootAction, *muteAction;
|
||||
QAction *mbAction, *timeAction, *balanceAction, *ipAction, *bootAction, *muteAction, *mobileAction;
|
||||
NetController *netctrl;
|
||||
QSettings settings;
|
||||
OptionsWindow opWindow;
|
||||
|
||||
+62
-24
@@ -5,17 +5,32 @@ NetController::NetController(QByteArray id, QByteArray passwd, QObject *parent)
|
||||
{
|
||||
checkParam.append("action=get_online_info");
|
||||
|
||||
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");
|
||||
request.setHeader(QNetworkRequest::ContentLengthHeader, "100");
|
||||
request.setRawHeader("Host", "ipgw.neu.edu.cn");
|
||||
request.setRawHeader("Cache-Control", "max-age=0");
|
||||
request.setRawHeader("Origin", "http://ipgw.neu.edu.cn");
|
||||
request.setRawHeader("Upgrade-Insecure-Requests", "1");
|
||||
request.setRawHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.162 Safari/537.36");
|
||||
request.setRawHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8");
|
||||
request.setRawHeader("Referer", "http://ipgw.neu.edu.cn/srun_portal_pc.php?ac_id=1&");
|
||||
request.setRawHeader("Accept-Encoding", "gzip, deflate");
|
||||
request.setRawHeader("Accept-Language", "zh-CN,zh;q=0.9");
|
||||
desktopRequest.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");
|
||||
desktopRequest.setHeader(QNetworkRequest::ContentLengthHeader, "100");
|
||||
desktopRequest.setRawHeader("Host", "ipgw.neu.edu.cn");
|
||||
desktopRequest.setRawHeader("Cache-Control", "max-age=0");
|
||||
desktopRequest.setRawHeader("Origin", "http://ipgw.neu.edu.cn");
|
||||
desktopRequest.setRawHeader("Upgrade-Insecure-Requests", "1");
|
||||
desktopRequest.setRawHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.162 Safari/537.36");
|
||||
desktopRequest.setRawHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8");
|
||||
desktopRequest.setRawHeader("Referer", "http://ipgw.neu.edu.cn/srun_portal_pc.php?ac_id=1&");
|
||||
desktopRequest.setRawHeader("Accept-Encoding", "gzip, deflate");
|
||||
desktopRequest.setRawHeader("Accept-Language", "zh-CN,zh;q=0.9");
|
||||
|
||||
|
||||
mobileRequest.setRawHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8");
|
||||
mobileRequest.setRawHeader("Accept-Encoding", "gzip, deflate");
|
||||
mobileRequest.setRawHeader("Accept-Language", "en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7");
|
||||
mobileRequest.setRawHeader("Cache-Control", "max-age=0");
|
||||
// mobileRequest.setHeader(QNetworkRequest::ContentLengthHeader, "85"); //XXX:这行一定不能有
|
||||
mobileRequest.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");
|
||||
mobileRequest.setRawHeader("Host", "ipgw.neu.edu.cn");
|
||||
mobileRequest.setRawHeader("Origin", "http://ipgw.neu.edu.cn");
|
||||
mobileRequest.setRawHeader("Proxy-Connection", "keep-alive");
|
||||
mobileRequest.setRawHeader("Referer", "http://ipgw.neu.edu.cn/srun_portal_phone.php?ac_id=1&");
|
||||
mobileRequest.setRawHeader("Upgrade-Insecure-Requests", "1");
|
||||
mobileRequest.setRawHeader("User-Agent", "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Mobile Safari/537.36");
|
||||
|
||||
|
||||
connect(&manager, &QNetworkAccessManager::finished, this, &NetController::handleResponse);
|
||||
}
|
||||
@@ -27,14 +42,13 @@ void NetController::checkState()
|
||||
|
||||
void NetController::sendCheckRequest()
|
||||
{
|
||||
request.setUrl(QUrl(checkUrl));
|
||||
manager.post(request, checkParam);
|
||||
desktopRequest.setUrl(QUrl(checkUrl));
|
||||
manager.post(desktopRequest, checkParam);
|
||||
}
|
||||
|
||||
void NetController::sendLoginRequest()
|
||||
void NetController::sendLoginRequest(bool isMobile)
|
||||
{
|
||||
sendLog(tr("Send login request. [") + username + tr("]"));
|
||||
request.setUrl(QUrl(loginUrl));
|
||||
|
||||
QByteArray loginParam;
|
||||
loginParam.append("action=login&");
|
||||
@@ -48,23 +62,43 @@ void NetController::sendLoginRequest()
|
||||
loginParam.append("username=");
|
||||
loginParam.append(username);
|
||||
|
||||
manager.post(request, loginParam);
|
||||
if(!isMobile)
|
||||
{
|
||||
desktopRequest.setUrl(QUrl(desktopLoginUrl));
|
||||
manager.post(desktopRequest, loginParam);
|
||||
}
|
||||
else
|
||||
{
|
||||
mobileRequest.setUrl(QUrl(mobileLoginUrl));
|
||||
manager.post(mobileRequest, loginParam);
|
||||
}
|
||||
}
|
||||
|
||||
void NetController::sendLogoutRequest()
|
||||
void NetController::sendLogoutRequest(bool isAll, bool isMobile)
|
||||
{
|
||||
sendLog(tr("Send logout request. [") + username + tr("]"));
|
||||
request.setUrl(QUrl(loginUrl));
|
||||
|
||||
QByteArray logoutParam;
|
||||
logoutParam.append("action=logout&");
|
||||
logoutParam.append("ajax=1&");
|
||||
logoutParam.append("password=");
|
||||
logoutParam.append(password);
|
||||
logoutParam.append("&username=");
|
||||
if(isAll)
|
||||
{
|
||||
logoutParam.append("password=");//有password是全部断开
|
||||
logoutParam.append(password);
|
||||
logoutParam.append("&");
|
||||
}
|
||||
logoutParam.append("username=");
|
||||
logoutParam.append(username);
|
||||
|
||||
manager.post(request, logoutParam);
|
||||
if(!isMobile)
|
||||
{
|
||||
desktopRequest.setUrl(QUrl(desktopLoginUrl));
|
||||
manager.post(desktopRequest, logoutParam);
|
||||
}
|
||||
else
|
||||
{
|
||||
mobileRequest.setUrl(QUrl(mobileLoginUrl));//TODO:测试这样logout是否会影响pc端
|
||||
manager.post(mobileRequest, logoutParam);
|
||||
}
|
||||
}
|
||||
|
||||
void NetController::handleResponse(QNetworkReply *reply)
|
||||
@@ -92,7 +126,7 @@ void NetController::handleResponse(QNetworkReply *reply)
|
||||
emit sendState(Disconnected);
|
||||
}
|
||||
}
|
||||
else if (url == loginUrl)
|
||||
else if (url == desktopLoginUrl)
|
||||
{
|
||||
QString loginPage(reply->readAll());
|
||||
if (loginPage.contains(QString("已欠费")))
|
||||
@@ -111,4 +145,8 @@ void NetController::handleResponse(QNetworkReply *reply)
|
||||
emit sendState(Online);
|
||||
}
|
||||
}
|
||||
// else if (url == mobileLoginUrl)
|
||||
// {
|
||||
// qDebug()<<reply->readAll().toStdString();
|
||||
// }
|
||||
}
|
||||
|
||||
+5
-4
@@ -14,8 +14,8 @@ class NetController : public QObject
|
||||
explicit NetController(QByteArray username, QByteArray password, QObject *parent = nullptr);
|
||||
void checkState();
|
||||
void sendCheckRequest();
|
||||
void sendLoginRequest();
|
||||
void sendLogoutRequest();
|
||||
void sendLoginRequest(bool isMobile=false);
|
||||
void sendLogoutRequest(bool isAll=false, bool isMobile=false);
|
||||
|
||||
void setUsername(QByteArray newName) { username = newName; }
|
||||
void setPassword(QByteArray newPass) { password = newPass; }
|
||||
@@ -33,14 +33,15 @@ class NetController : public QObject
|
||||
|
||||
private:
|
||||
QString checkUrl = "http://ipgw.neu.edu.cn/include/auth_action.php";
|
||||
QString loginUrl = "http://ipgw.neu.edu.cn/srun_portal_pc.php?ac_id=1&";
|
||||
QString desktopLoginUrl = "http://ipgw.neu.edu.cn/srun_portal_pc.php?ac_id=1&";
|
||||
QString mobileLoginUrl = "http://ipgw.neu.edu.cn/srun_portal_phone.php?ac_id=1&";
|
||||
QString offlineString = "not_online";
|
||||
QByteArray checkParam, username, password;
|
||||
int traffic;
|
||||
int onlineCount = 0, offlineCount = 0, disconnectCount = 0;
|
||||
|
||||
QNetworkAccessManager manager;
|
||||
QNetworkRequest request;
|
||||
QNetworkRequest desktopRequest, mobileRequest;
|
||||
|
||||
signals:
|
||||
void sendState(State newState);
|
||||
|
||||
Reference in New Issue
Block a user