mirror of
https://github.com/Qv2ray/Qv2ray.git
synced 2025-05-21 03:10:24 +08:00
76 lines
1.9 KiB
C++
76 lines
1.9 KiB
C++
#include <QApplication>
|
|
#include <QDir>
|
|
#include <iostream>
|
|
#include <QDebug>
|
|
#include <QFileInfo>
|
|
#include <QJsonDocument>
|
|
#include <QJsonObject>
|
|
#include <QJsonArray>
|
|
#include <QJsonValue>
|
|
|
|
#include "runguard.h"
|
|
#include "utils.h"
|
|
#include "mainwindow.h"
|
|
#include "confedit.h"
|
|
|
|
void firstRunCheck()
|
|
{
|
|
if(!QDir("conf").exists()) {
|
|
QDir().mkdir("conf");
|
|
qDebug() << "Config directory created.";
|
|
}
|
|
|
|
QFileInfo hvConfInfo("conf/Hv2ray.config.json");
|
|
|
|
// First Run?
|
|
if(!hvConfInfo.exists()) {
|
|
QFile confFile("conf/Hv2ray.config.json");
|
|
if(!confFile.open(QIODevice::ReadWrite)) {
|
|
qDebug() << "Can not open Hv2ray.conf.json for read and write.";
|
|
}
|
|
|
|
QJsonObject settings;
|
|
settings.insert("auth", "noauth");
|
|
settings.insert("udp", true);
|
|
settings.insert("ip", "127.0.0.1");
|
|
|
|
QJsonObject socks;
|
|
socks.insert("settings", QJsonValue(settings));
|
|
socks.insert("tag", "socks-in");
|
|
socks.insert("port", 1080);
|
|
socks.insert("listen", "127.0.0.1");
|
|
socks.insert("protocol", "socks");
|
|
|
|
QJsonArray inbounds;
|
|
inbounds.append(socks);
|
|
|
|
QJsonObject rootObj;
|
|
rootObj.insert("inbounds", QJsonValue(inbounds));
|
|
rootObj.insert("v2suidEnabled", false);
|
|
|
|
QJsonDocument defaultConf;
|
|
defaultConf.setObject(rootObj);
|
|
|
|
QByteArray byteArray = defaultConf.toJson(QJsonDocument::Indented);
|
|
confFile.write(byteArray);
|
|
confFile.close();
|
|
}
|
|
}
|
|
|
|
int main(int argc, char *argv[])
|
|
{
|
|
QApplication _qApp(argc, argv);
|
|
RunGuard guard("Hv2ray");
|
|
if(!guard.isSingleInstance()) {
|
|
alterMessage("Hv2Ray", "Another instance of Hv2ray is already running!");
|
|
return -1;
|
|
}
|
|
|
|
QDir::setCurrent(QFileInfo(QCoreApplication::applicationFilePath()).path());
|
|
|
|
firstRunCheck();
|
|
MainWindow w;
|
|
w.show();
|
|
return _qApp.exec();
|
|
}
|