mirror of
https://github.com/Qv2ray/Qv2ray.git
synced 2025-05-20 10:50:23 +08:00
91 lines
3.0 KiB
C++
91 lines
3.0 KiB
C++
#include "importconf.h"
|
|
#include "ui_importconf.h"
|
|
#include <QFileDialog>
|
|
#include "confedit.h"
|
|
#include "vinteract.h"
|
|
#include <QDebug>
|
|
#include <QFile>
|
|
#include <QJsonDocument>
|
|
#include <QJsonObject>
|
|
#include <QJsonArray>
|
|
#include <QMessageBox>
|
|
#include "utils.h"
|
|
|
|
importConf::importConf(QWidget *parent) :
|
|
QDialog(parent),
|
|
ui(new Ui::importConf)
|
|
{
|
|
ui->setupUi(this);
|
|
connect(this, SIGNAL(updateConfTable()), parentWidget(), SLOT(updateConfTable()));
|
|
}
|
|
|
|
importConf::~importConf()
|
|
{
|
|
delete ui;
|
|
}
|
|
|
|
void importConf::on_pushButton_clicked()
|
|
{
|
|
QString dir = QFileDialog::getOpenFileName(this, tr("Open Config File"), "~/");
|
|
ui->fileLinedit->setText(dir);
|
|
}
|
|
|
|
void importConf::savefromFile(QString path, QString alias)
|
|
{
|
|
vConfig newConf;
|
|
newConf.alias = alias;
|
|
utils util;
|
|
QFile loadFile(path);
|
|
if(!loadFile.open(QIODevice::ReadOnly)) {
|
|
qDebug() << "could't open projects json";
|
|
return;
|
|
}
|
|
QByteArray allData = loadFile.readAll();
|
|
loadFile.close();
|
|
QJsonDocument v2conf(QJsonDocument::fromJson(allData));
|
|
QJsonObject rootobj = v2conf.object();
|
|
QJsonObject outbound;
|
|
if(rootobj.value("outbound").isNull()) {
|
|
outbound = rootobj.value("outbound").toObject();
|
|
} else {
|
|
outbound = rootobj.value("outbounds").toArray().first().toObject();
|
|
}
|
|
QJsonObject vnext = util.parseJson(outbound.value("settings").toObject(), "vnext");
|
|
QJsonObject user = util.parseJson(vnext, "users");
|
|
newConf.host = vnext.value("address").toString();
|
|
newConf.port = QString::number(vnext.value("port").toInt());
|
|
newConf.alterid = QString::number(user.value("alterId").toInt());
|
|
newConf.uuid = user.value("id").toString();
|
|
newConf.security = user.value("security").toString();
|
|
if (newConf.security.isNull()) {
|
|
newConf.security = "auto";
|
|
}
|
|
// QJsonObject vnext = rootobj.value("outbound").toObject().value("settings").toObject().value("vnext").toArray().begin()->toObject();
|
|
// QJsonObject users = vnext.value("users").toArray().begin()->toObject();
|
|
// newConf.host = vnext.value("address").toString();
|
|
// newConf.port = QString::number(vnext.value("port").toInt());
|
|
// newConf.uuid = users.value("id").toString();
|
|
// newConf.alterid = QString::number(users.value("alterId").toInt());
|
|
// newConf.security = users.value("security").toString();
|
|
// if (newConf.security.isNull()) {
|
|
// newConf.security = "auto";
|
|
// }
|
|
newConf.isCustom = 1;
|
|
int id = newConf.save();
|
|
emit updateConfTable();
|
|
QString newFile = "conf/" + QString::number(id) + ".conf";
|
|
if(!QFile::copy(path, newFile)) {
|
|
QMessageBox::critical(0, "Copy error", "Failed to copy custom config file.", QMessageBox::Ok | QMessageBox::Default);
|
|
}
|
|
}
|
|
|
|
void importConf::on_buttonBox_accepted()
|
|
{
|
|
QString path = ui->fileLinedit->text();
|
|
QString alias = ui-> aliasLinedit->text();
|
|
bool isValid = validationCheck(path);
|
|
if(isValid) {
|
|
savefromFile(path, alias);
|
|
}
|
|
}
|