mirror of
https://github.com/MatsuriDayo/nekoray.git
synced 2025-12-17 20:44:38 +03:00
final outbound rule GUI
This commit is contained in:
@@ -290,7 +290,7 @@ namespace NekoRay {
|
||||
routing["domainMatcher"] = dataStore->domain_matcher == DomainMatcher::MPH ? "mph" : "linear";
|
||||
if (status->forTest) routing["domainStrategy"] = "AsIs";
|
||||
|
||||
// final add block route
|
||||
// final add user rule (block)
|
||||
QJsonObject routingRule_tmp;
|
||||
routingRule_tmp["type"] = "field";
|
||||
routingRule_tmp["outboundTag"] = "block";
|
||||
@@ -305,7 +305,7 @@ namespace NekoRay {
|
||||
status->routingRules += tmp;
|
||||
}
|
||||
|
||||
// final add proxy route
|
||||
// final add user rule (proxy)
|
||||
routingRule_tmp["outboundTag"] = "proxy";
|
||||
if (!status->ipListRemote.isEmpty()) {
|
||||
auto tmp = routingRule_tmp;
|
||||
@@ -318,7 +318,7 @@ namespace NekoRay {
|
||||
status->routingRules += tmp;
|
||||
}
|
||||
|
||||
// final add bypass route
|
||||
// final add user rule (bypass)
|
||||
routingRule_tmp["outboundTag"] = "bypass";
|
||||
if (!status->ipListDirect.isEmpty()) {
|
||||
auto tmp = routingRule_tmp;
|
||||
@@ -331,8 +331,14 @@ namespace NekoRay {
|
||||
status->routingRules += tmp;
|
||||
}
|
||||
|
||||
// def_outbound
|
||||
status->routingRules += QJsonObject{
|
||||
{"type", "field"},
|
||||
{"port", "0-65535"},
|
||||
{"outboundTag", dataStore->routing->def_outbound},
|
||||
};
|
||||
|
||||
// final add routing rule
|
||||
// custom routing rule
|
||||
auto routingRules = QString2QJsonObject(dataStore->routing->custom)["rules"].toArray();
|
||||
if (status->forTest) routingRules = {};
|
||||
if (!status->forTest) QJSONARRAY_ADD(routingRules, QString2QJsonObject(dataStore->custom_route_global)["rules"].toArray())
|
||||
@@ -604,12 +610,8 @@ namespace NekoRay {
|
||||
|
||||
// Bypass Lookup for the first profile
|
||||
if (isFirstProfile && !IsIpAddress(ent->bean->serverAddress)) {
|
||||
if (dataStore->enhance_resolve_server_domain && !IS_NEKO_BOX) {
|
||||
status->result->tryDomains += ent->bean->serverAddress;
|
||||
} else {
|
||||
status->domainListDNSDirect += "full:" + ent->bean->serverAddress;
|
||||
}
|
||||
}
|
||||
|
||||
status->outbounds += outbound;
|
||||
pastTag = tagOut;
|
||||
@@ -791,22 +793,18 @@ namespace NekoRay {
|
||||
|
||||
// Routing
|
||||
|
||||
// custom routing rule (top)
|
||||
auto routingRules = QString2QJsonObject(dataStore->routing->custom)["rules"].toArray();
|
||||
if (status->forTest) routingRules = {};
|
||||
|
||||
// dns hijack
|
||||
if (!status->forTest) routingRules += QJsonObject{{"protocol", "dns"}, {"outbound", "dns-out"}};
|
||||
if (!status->forTest) status->routingRules += QJsonObject{{"protocol", "dns"}, {"outbound", "dns-out"}};
|
||||
|
||||
// sing-box routing rule object
|
||||
auto add_rule_route = [&](const QStringList &list, bool isIP, const QString &out) {
|
||||
auto rule = make_rule(list, isIP);
|
||||
if (rule.isEmpty()) return;
|
||||
rule["outbound"] = out;
|
||||
routingRules += rule;
|
||||
status->routingRules += rule;
|
||||
};
|
||||
|
||||
// final add routing rule
|
||||
// final add user rule
|
||||
add_rule_route(status->ipListBlock, true, "block");
|
||||
add_rule_route(status->ipListRemote, true, tagProxy);
|
||||
add_rule_route(status->ipListDirect, true, "bypass");
|
||||
@@ -814,6 +812,12 @@ namespace NekoRay {
|
||||
add_rule_route(status->domainListRemote, false, tagProxy);
|
||||
add_rule_route(status->domainListDirect, false, "bypass");
|
||||
|
||||
// def_outbound
|
||||
status->routingRules += QJsonObject{
|
||||
{"port_range", ":"},
|
||||
{"outbound", dataStore->routing->def_outbound},
|
||||
};
|
||||
|
||||
// geopath
|
||||
auto geoip = FindCoreAsset("geoip.db");
|
||||
auto geosite = FindCoreAsset("geosite.db");
|
||||
@@ -821,6 +825,8 @@ namespace NekoRay {
|
||||
if (geosite.isEmpty()) status->result->error = +"geosite.db not found";
|
||||
|
||||
// final add routing rule
|
||||
auto routingRules = QString2QJsonObject(dataStore->routing->custom)["rules"].toArray();
|
||||
if (status->forTest) routingRules = {};
|
||||
if (!status->forTest) QJSONARRAY_ADD(routingRules, QString2QJsonObject(dataStore->custom_route_global)["rules"].toArray())
|
||||
QJSONARRAY_ADD(routingRules, status->routingRules)
|
||||
auto routeObj = QJsonObject{
|
||||
|
||||
@@ -8,7 +8,6 @@ namespace NekoRay {
|
||||
public:
|
||||
QString error;
|
||||
QJsonObject coreConfig;
|
||||
QStringList tryDomains;
|
||||
|
||||
QList<QSharedPointer<traffic::TrafficData>> outboundStats; // all, but not including "bypass" "block"
|
||||
QSharedPointer<traffic::TrafficData> outboundStat; // main
|
||||
|
||||
@@ -41,7 +41,6 @@ namespace NekoRay {
|
||||
_add(new configItem("custom_route", &custom_route_global, itemType::string));
|
||||
_add(new configItem("v2ray_asset_dir", &v2ray_asset_dir, itemType::string));
|
||||
_add(new configItem("sub_use_proxy", &sub_use_proxy, itemType::boolean));
|
||||
_add(new configItem("enhance_domain", &enhance_resolve_server_domain, itemType::boolean));
|
||||
_add(new configItem("remember_id", &remember_id, itemType::integer));
|
||||
_add(new configItem("remember_enable", &remember_enable, itemType::boolean));
|
||||
_add(new configItem("language", &language, itemType::integer));
|
||||
@@ -108,6 +107,7 @@ namespace NekoRay {
|
||||
_add(new configItem("proxy_domain", &this->proxy_domain, itemType::string));
|
||||
_add(new configItem("block_ip", &this->block_ip, itemType::string));
|
||||
_add(new configItem("block_domain", &this->block_domain, itemType::string));
|
||||
_add(new configItem("def_outbound", &this->def_outbound, itemType::string));
|
||||
_add(new configItem("custom", &this->custom, itemType::string));
|
||||
}
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@ namespace NekoRay {
|
||||
QString proxy_domain;
|
||||
QString block_ip;
|
||||
QString block_domain;
|
||||
QString def_outbound = "proxy";
|
||||
QString custom = "{\"rules\": []}";
|
||||
|
||||
explicit Routing(int preset = 0);
|
||||
@@ -116,7 +117,6 @@ namespace NekoRay {
|
||||
QString remote_dns = "https://8.8.8.8/dns-query";
|
||||
QString direct_dns = "localhost";
|
||||
bool dns_routing = true;
|
||||
bool enhance_resolve_server_domain = false;
|
||||
|
||||
// Routing
|
||||
bool fake_dns = false;
|
||||
|
||||
@@ -468,14 +468,6 @@
|
||||
<source>Direct DNS</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Using multiple overseas DNS to query the server address can alleviate the DNS pollution of the server domain name to a certain extent, which may have side effects.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Enhanced domain name resolution</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Enable DNS Routing</source>
|
||||
<translation type="unfinished"></translation>
|
||||
@@ -560,6 +552,10 @@
|
||||
<source>Remove routing: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Default Outbound</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DialogVPNSettings</name>
|
||||
|
||||
@@ -468,11 +468,11 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Enhanced domain name resolution</source>
|
||||
<translation>增强域名解析</translation>
|
||||
<translation type="vanished">增强域名解析</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Using multiple overseas DNS to query the server address can alleviate the DNS pollution of the server domain name to a certain extent, which may have side effects.</source>
|
||||
<translation>使用多个境外 DNS 查询服务器地址,一定程度上可缓解对服务器域名的 DNS 污染,可能有副作用。</translation>
|
||||
<translation type="vanished">使用多个境外 DNS 查询服务器地址,一定程度上可缓解对服务器域名的 DNS 污染,可能有副作用。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Enable DNS Routing</source>
|
||||
@@ -558,6 +558,10 @@
|
||||
<source>Custom (global)</source>
|
||||
<translation>自定义 (全局)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Default Outbound</source>
|
||||
<translation>默认出站</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DialogVPNSettings</name>
|
||||
|
||||
@@ -9,11 +9,11 @@
|
||||
#include <QMessageBox>
|
||||
#include <QListWidget>
|
||||
|
||||
#define REFRESH_ACTIVE_ROUTING(a, r) \
|
||||
active_routing = a; \
|
||||
ui->active_routing->setText("[" + active_routing + "]"); \
|
||||
setWindowTitle(title_base + " [" + a + "]"); \
|
||||
SetRouteConfig(*r);
|
||||
#define REFRESH_ACTIVE_ROUTING(name, obj) \
|
||||
this->active_routing = name; \
|
||||
ui->active_routing->setText(name); \
|
||||
setWindowTitle(title_base + " [" + name + "]"); \
|
||||
SetRouteConfig(*obj);
|
||||
|
||||
#define SAVE_TO_ROUTING(r) \
|
||||
r->direct_ip = directIPTxt->toPlainText(); \
|
||||
@@ -22,6 +22,7 @@
|
||||
r->proxy_domain = proxyDomainTxt->toPlainText(); \
|
||||
r->block_ip = blockIPTxt->toPlainText(); \
|
||||
r->block_domain = blockDomainTxt->toPlainText(); \
|
||||
r->def_outbound = ui->def_outbound->currentText(); \
|
||||
r->custom = CACHE.custom_route;
|
||||
|
||||
DialogManageRoutes::DialogManageRoutes(QWidget *parent) : QDialog(parent), ui(new Ui::DialogManageRoutes) {
|
||||
@@ -29,10 +30,8 @@ DialogManageRoutes::DialogManageRoutes(QWidget *parent) : QDialog(parent), ui(ne
|
||||
title_base = windowTitle();
|
||||
|
||||
if (IS_NEKO_BOX) {
|
||||
ui->enhance_resolve_server_domain->setVisible(false);
|
||||
ui->domain_v2ray->setVisible(false);
|
||||
} else {
|
||||
ui->enhance_resolve_server_domain->setVisible(true);
|
||||
ui->domain_v2ray->setVisible(true);
|
||||
}
|
||||
//
|
||||
@@ -43,7 +42,6 @@ DialogManageRoutes::DialogManageRoutes(QWidget *parent) : QDialog(parent), ui(ne
|
||||
ui->dns_routing->setChecked(NekoRay::dataStore->dns_routing);
|
||||
ui->dns_remote->setText(NekoRay::dataStore->remote_dns);
|
||||
ui->dns_direct->setText(NekoRay::dataStore->direct_dns);
|
||||
ui->enhance_resolve_server_domain->setChecked(NekoRay::dataStore->enhance_resolve_server_domain);
|
||||
D_C_LOAD_STRING(custom_route_global)
|
||||
//
|
||||
connect(ui->custom_route_edit, &QPushButton::clicked, this, [=] {
|
||||
@@ -93,7 +91,6 @@ void DialogManageRoutes::accept() {
|
||||
NekoRay::dataStore->dns_routing = ui->dns_routing->isChecked();
|
||||
NekoRay::dataStore->remote_dns = ui->dns_remote->text();
|
||||
NekoRay::dataStore->direct_dns = ui->dns_direct->text();
|
||||
NekoRay::dataStore->enhance_resolve_server_domain = ui->enhance_resolve_server_domain->isChecked();
|
||||
D_C_SAVE_STRING(custom_route_global)
|
||||
bool routeChanged = false;
|
||||
if (NekoRay::dataStore->active_routing != active_routing) routeChanged = true;
|
||||
@@ -135,6 +132,7 @@ void DialogManageRoutes::SetRouteConfig(const NekoRay::Routing &conf) {
|
||||
proxyIPTxt->setPlainText(conf.proxy_ip);
|
||||
//
|
||||
CACHE.custom_route = conf.custom;
|
||||
ui->def_outbound->setCurrentText(conf.def_outbound);
|
||||
}
|
||||
|
||||
void DialogManageRoutes::on_load_save_clicked() {
|
||||
|
||||
@@ -13,10 +13,9 @@
|
||||
<property name="windowTitle">
|
||||
<string>Routes</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<item row="0" column="0">
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<widget class="QGroupBox" name="gb1">
|
||||
<layout class="QVBoxLayout" name="verticalLayout_3">
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_3">
|
||||
@@ -133,31 +132,23 @@
|
||||
<item>
|
||||
<widget class="QLineEdit" name="dns_direct"/>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="enhance_resolve_server_domain">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Using multiple overseas DNS to query the server address can alleviate the DNS pollution of the server domain name to a certain extent, which may have side effects.</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Enhanced domain name resolution</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||
<item>
|
||||
<widget class="QWidget" name="domain_v2ray" native="true">
|
||||
<layout class="QHBoxLayout" name="_2" stretch="0,0,0,1,0,0">
|
||||
<layout class="QHBoxLayout" name="_2" stretch="0,0,0,1,0,1">
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="dns_routing">
|
||||
<property name="sizePolicy">
|
||||
@@ -231,6 +222,12 @@
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="gb2">
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||
<item>
|
||||
<layout class="QGridLayout" name="gridLayout_3" rowstretch="0,1,1" columnstretch="0,1,1,1">
|
||||
<item row="0" column="3">
|
||||
@@ -303,6 +300,9 @@
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="active_routing">
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::Box</enum>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
@@ -310,12 +310,31 @@
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_5">
|
||||
<item>
|
||||
<widget class="QWidget" name="horizontalWidget_2" native="true">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_6">
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QToolButton" name="preset">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Preset</string>
|
||||
</property>
|
||||
@@ -334,6 +353,95 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QWidget" name="horizontalWidget" native="true">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QLabel" name="label_4">
|
||||
<property name="text">
|
||||
<string>Default Outbound</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QComboBox" name="def_outbound">
|
||||
<item>
|
||||
<property name="text">
|
||||
<string notr="true">proxy</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string notr="true">bypass</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string notr="true">block</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<item>
|
||||
<widget class="QWidget" name="horizontalWidget_3" native="true">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_7">
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QPushButton" name="load_save">
|
||||
<property name="text">
|
||||
<string>Mange route set</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="custom_route_global_edit">
|
||||
<property name="text">
|
||||
@@ -341,11 +449,7 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="load_save">
|
||||
<property name="text">
|
||||
<string>Mange route set</string>
|
||||
</property>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
@@ -364,41 +468,23 @@
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<tabstops>
|
||||
<tabstop>sniffing_mode</tabstop>
|
||||
<tabstop>outbound_domain_strategy</tabstop>
|
||||
<tabstop>dns_remote</tabstop>
|
||||
<tabstop>dns_direct</tabstop>
|
||||
<tabstop>enhance_resolve_server_domain</tabstop>
|
||||
<tabstop>dns_routing</tabstop>
|
||||
<tabstop>domainStrategyCombo</tabstop>
|
||||
<tabstop>domainMatcherCombo</tabstop>
|
||||
<tabstop>preset</tabstop>
|
||||
<tabstop>custom_route_edit</tabstop>
|
||||
<tabstop>custom_route_global_edit</tabstop>
|
||||
<tabstop>def_outbound</tabstop>
|
||||
<tabstop>load_save</tabstop>
|
||||
<tabstop>custom_route_global_edit</tabstop>
|
||||
</tabstops>
|
||||
<resources/>
|
||||
<connections>
|
||||
<connection>
|
||||
<sender>buttonBox</sender>
|
||||
<signal>accepted()</signal>
|
||||
<receiver>DialogManageRoutes</receiver>
|
||||
<slot>accept()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>399</x>
|
||||
<y>574</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>399</x>
|
||||
<y>299</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>buttonBox</sender>
|
||||
<signal>rejected()</signal>
|
||||
@@ -415,5 +501,21 @@
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>buttonBox</sender>
|
||||
<signal>accepted()</signal>
|
||||
<receiver>DialogManageRoutes</receiver>
|
||||
<slot>accept()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>399</x>
|
||||
<y>574</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>399</x>
|
||||
<y>299</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
</connections>
|
||||
</ui>
|
||||
|
||||
@@ -220,7 +220,6 @@ void MainWindow::neko_start(int _id) {
|
||||
#ifndef NKR_NO_GRPC
|
||||
libcore::LoadConfigReq req;
|
||||
req.set_coreconfig(QJsonObject2QString(result->coreConfig, true).toStdString());
|
||||
req.set_trydomains(result->tryDomains.join(",").toStdString());
|
||||
//
|
||||
bool rpcOK;
|
||||
QString error = defaultClient->Start(&rpcOK, req);
|
||||
|
||||
Reference in New Issue
Block a user