Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 0 additions & 3 deletions LICENSE.NetInfoChecker_HTML

This file was deleted.

27 changes: 27 additions & 0 deletions LICENSE_QtWebEngine_Chromium
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
// Copyright 2015 The Chromium Authors
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
// * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
// * Neither the name of Google LLC nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
9 changes: 4 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,7 @@
## 中文翻译明明是密码?为什么用其作为名字呢?而为什么子项目 Rana Toolkit 要叫 Rana 呢?

名字取自于《崩坏:星穹铁道》的[赛飞儿](https://mzh.moegirl.org.cn/%E8%B5%9B%E9%A3%9E%E5%84%BF),啊没错就是那只猫娘,~~你也可以理解为是无畏契约的阴暗保安零~~<br>
而 Rana Toolkit 的 Rana 则取自于 《BanG Dream!It's MyGO!!!!!》的[要乐奈](https://mzh.moegirl.org.cn/%E8%A6%81%E4%B9%90%E5%A5%88)<br>
Rana Toolkit 项目[传送门请前往](#rana-toolkit-传送门)<br>
而 Rana Toolkit 的 Rana 则取自于 《BanG Dream!It's MyGO!!!!!》的要乐奈

## 预览截图

Expand All @@ -32,9 +31,9 @@ Rana Toolkit 项目[传送门请前往](#rana-toolkit-传送门)<br>
- [X] 日志实现(Rana-Re)<br>
- [X] 多网卡信息输出实现(Rana-Re)<br>
- [ ] 设置和多 API 可选实现(Rana-Re)
- [ ] 大陆和海外线同时信息获取(Alice/Saki-Beta)<br>
- [ ] 路由跳点检测、WOL功能实现(Alice/Saki-Beta)<br>
- [ ] NAT 检测、DNS 检测实现(Alice/Saki-Beta)<br>
- [ ] 大陆和海外线同时信息获取(Alice-Beta)<br>
- [ ] 路由跳点检测、WOL功能实现(Alice-Beta)<br>
- [ ] NAT 检测、DNS 检测实现(Alice-Beta)<br>
- [ ] 设备信息实现(Stable)<br>
- [ ] 全新UI(NXT-Stable)<br>
- [ ] i18n 支持(NXT-Stable)<br>
Expand Down
85 changes: 57 additions & 28 deletions src/Home.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,10 @@ home::home(QWidget *parent)
QString distro = QSysInfo::prettyProductName();// 获取发行版名称
QString systemver = QSysInfo::productVersion();// 获取系统版本

sessionNet = new QNetworkAccessManager(this); // 大一统 QNAM

ui -> Version ->setText(AK_VERSION); // 主页应用版本
ui -> test_waring -> setText("Alpha 版本 || 请勿用于生产环境 || 请及时汇报BUG || 请勿滥用接口"); // 主页测试版警告
ui -> test_waring -> setText("测试版本 || 请勿用于生产环境 || 请及时汇报BUG || 请勿滥用接口"); // 主页测试版警告

home::HomeInfo_Refresh(); // 启动首次触发刷新(Trigger Auto Refresh)
qInfo()<<"系统环境:"<<systemname<<";系统:"<<distro<<";系统版本:"<<systemver; // 输出系统版本日志
Expand Down Expand Up @@ -81,6 +83,8 @@ void home::HomeInfo_Refresh(){
ui -> localv4add -> setText("Loading......"); // 局域网V4: UI初始化
ui -> localv6add -> setText("Loading......"); // 局域网V6: UI初始化
ui -> priority -> setText("Loading......"); // 优先级: UI初始化
ui -> asn -> setText("Loading......"); // 优先级: UI初始化


this->getwanv6(); // 执行公网 V6 获取
getlan(); // 执行本地获取
Expand All @@ -89,24 +93,25 @@ void home::HomeInfo_Refresh(){

}

void home::getwanv4() // 公网 IPv4(Public IPv4)
// 公网 IPv4
void home::getwanv4()
{
static QNetworkAccessManager *v4manager = new QNetworkAccessManager(this); // 设置新的QNAM
QNetworkRequest request(QUrl("https://4.ipw.cn")); // 设置Request API为ipw.cn(TODO LIST - 支持多API,并研究出口API)
QNetworkReply *v4reply = v4manager->get(request); // 设置Manager操作为request
QNetworkReply *v4reply = sessionNet->get(request); // 设置Manager操作为request
connect(v4reply, &QNetworkReply::finished, this, [this, v4reply]() { // 连接V4 Reply

if (v4reply->error() == QNetworkReply::NoError) { // 判定是否有错误
this->ipv4 = QString(v4reply->readAll()).trimmed(); // 设置IPV4变量为v4返回信息
ui -> v4add -> setText(ipv4); // 显示在UI中
if (!ipv4.isEmpty())
getisp();
if (!ipv4.isEmpty()){
getisp(); // 异步执行 ISP
getASN(); // 异步执行 ASN
}
} else {
QString ipv4_error = v4reply->errorString();
qCritical() << "请求失败:" << v4reply->errorString(); // 输出错误信息
ui -> v4add -> setText("请求失败🐱,请检查日志🐱"); // 输出错误UI
}

v4reply->abort(); // 终止 v4reply 函数,优化内存泄露
v4reply->deleteLater(); // 从我的内存滚出去
});
Expand All @@ -117,9 +122,8 @@ void home::getwanv4() // 公网 IPv4(Public IPv4)
void home::getwanv6()
{

static QNetworkAccessManager *v6manager = new QNetworkAccessManager(this);
QNetworkRequest request(QUrl("https://6.ipw.cn"));
QNetworkReply *v6reply = v6manager->get(request);
QNetworkReply *v6reply = sessionNet->get(request);
connect(v6reply, &QNetworkReply::finished, this, [this, v6reply]() {

if (v6reply->error() == QNetworkReply::NoError) {
Expand All @@ -129,21 +133,21 @@ void home::getwanv6()
qCritical() << "请求失败:" << v6reply->errorString();
ui -> v6add -> setText("查询失败🐱看看右边有没有输出喵,如果没有请检查日志喵");
}

v6reply->abort();
v6reply->deleteLater();

});
}

// 获得 ISP
void home::getisp() {
if (ipv4.isEmpty())
return;
static QNetworkAccessManager *ispget = new QNetworkAccessManager(this); // QNAM 静态化,ispget
return; // 如果 IPv4 返回空值为真则返回去

QNetworkRequest request(QUrl("https://cip.cc/"+ ipv4)); //请求 QUrl 地址
QNetworkReply *ispreply = ispget->get(request); // 设置 reply
QNetworkReply *ispreply = sessionNet->get(request); // 设置 reply

connect(ispreply, &QNetworkReply::finished, this, [this, ispreply]() { // 连接 ispreply

if (ispreply->error() == QNetworkReply::NoError) { // 如果返回无失败

qDebug()<<" ISP 一切正常 ";
Expand All @@ -170,15 +174,12 @@ void home::getisp() {
ispreply->abort(); // 退出 ISP Reply
ispreply->deleteLater(); // 从内存里面删除 ISP Reply
});

}

// 执行优先级获取

void home::getpriority(){ // 连接优先级
static QNetworkAccessManager *priorityget = new QNetworkAccessManager(this);
void home::getpriority(){
QNetworkRequest request(QUrl("https://test.ipw.cn"));
QNetworkReply *priorityreply = priorityget->get(request);
QNetworkReply *priorityreply = sessionNet->get(request);

connect(priorityreply, &QNetworkReply::finished, this, [this, priorityreply](){
if(priorityreply->error() == QNetworkReply::NoError){
Expand Down Expand Up @@ -268,20 +269,48 @@ void home::getlan(){
}
}

/* 菜单栏业务相关定义 */

/* 工具实现 */
// ASN
void home::getASN(){
if (ipv4.isEmpty())
return;

/* 多出口在线版 - 使用 Qt 桌面服务
void home::Tools_MOWeb_Trigger(){
qInfo()<<"muti_out_website_trigger";
QNetworkRequest request(QUrl("https://ipinfo.io/" + ipv4 + "/json/"));
QNetworkReply *asnreply = sessionNet->get(request);

QUrl MowebUrl("https://raw.githack.com/yumeyo23/netinfochecker/main/checker-web.html");
QDesktopServices::openUrl(MowebUrl);
connect(asnreply, &QNetworkReply::finished, this, [this, asnreply]() {

qDebug() << "桌面服务信号已发出,请检查浏览器 MutiOutWeb";
if (asnreply->error() == QNetworkReply::NoError) {

qDebug()<<" ASN 一切正常 ";
QByteArray data = asnreply->readAll(); //保存原始数据
QJsonDocument doc = QJsonDocument::fromJson(data);// 读取原始 json 数据
if (!doc.isNull() && doc.isObject()) { // doc 非空且 json 是对象的话
QJsonObject obj = doc.object(); // QtJson 对象 = doc 的对象
if (obj.contains("org") && obj["org"].isString()) { //如果包含 org
QString org = obj["org"].toString(); // 将对象的 org 字符串提出
ui->asn->setText(org); // 输出前端
} else {
qWarning() << "JSON 中无 org 字段! 响应内容:" << data; // 警告出错
ui->asn->setText("查询不到喵🐱,请检查日志🐱"); // 前端报错
}
} else {
qWarning() << "JSON 解析失败! 响应内容:" << data; // 警告出错
ui->asn->setText("JSON 解析失败"); // 前端报错
}
}else{
qCritical() << "请求失败喵:" <<asnreply->errorString(); // reply 出错报错
ui -> asn -> setText("请求失败喵,请检查日志🐱"); // 输出前端
}
asnreply->abort(); // 退出 ISP Reply
asnreply->deleteLater(); // 从内存里面删除 ISP Reply
});
}
*/


/* 菜单栏业务相关定义 */

/* 工具实现 */

/* 多出口在线版 - 使用 Qt Web Engine */
void home::Tools_MOWeb_Trigger(){
Expand Down
7 changes: 4 additions & 3 deletions src/Home.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
#include <QNetworkInterface> // 网卡信息支持
#include <QList> // 动态数组支持
#include <QRegularExpression> // 正则表达式支持
#include <QJsonDocument> // Json 解析支持

#pragma once

Expand All @@ -46,6 +47,7 @@ class home : public QMainWindow
void getisp(); // 获取ISP
void getlan(); // 获取LAN相关
void getpriority();// 查询IP优先级
void getASN(); // 自治系统

private slots:
/* Help */
Expand All @@ -70,15 +72,14 @@ private slots:

/* 主页 */
void HomeInfo_Refresh(); // 刷新按钮信号槽
// void HomeInfo_Settings(); // 设置按钮信号槽
// void HomeInfo_Settings(); // 设置按钮信号槽,由于设置没做完暂不启用

/* Tools */
void Tools_MOWeb_Trigger(); // 在线版多出口信号槽
//void Tools_MOQt_Trigger();

/* 工具 */
void Tools_USTCspd_Trigger(); // 在线打开 USTC 测速
void Tools_NJUspd_Trigger(); // 在线打开 USTC 测速
void Tools_NJUspd_Trigger(); // 在线打开 NJU 测速
private:
Ui::home *ui;
QNetworkAccessManager *sessionNet;
Expand Down
Loading