mirror of
https://github.com/Mahdi-zarei/nekoray.git
synced 2025-12-19 05:30:06 +08:00
* feat: implement "Disable tray" option Add a "Disable Tray" checkbox, with its state saved and loaded to the data store. The state of the tray icon is managed by this checkbox at runtime. Depending on the visibility of the tray icon, the application will either minimize to the tray or close completely upon the close event. * feat: add tooltip and translations for "Disable tray" option * fix: apply "Disable tray" only after pressing OK
176 lines
5.0 KiB
C++
176 lines
5.0 KiB
C++
// DO NOT INCLUDE THIS
|
|
|
|
#include "Const.hpp"
|
|
|
|
namespace NekoGui {
|
|
|
|
class Routing : public JsonStore {
|
|
public:
|
|
int current_route_id = 0;
|
|
|
|
// DNS
|
|
QString remote_dns = "tls://8.8.8.8";
|
|
QString remote_dns_strategy = "";
|
|
QString direct_dns = "localhost";
|
|
QString direct_dns_strategy = "";
|
|
bool use_dns_object = false;
|
|
QString dns_object = "";
|
|
QString dns_final_out = "proxy";
|
|
|
|
// Misc
|
|
QString domain_strategy = "AsIs";
|
|
QString outbound_domain_strategy = "AsIs";
|
|
int sniffing_mode = SniffingMode::FOR_ROUTING;
|
|
|
|
explicit Routing(int preset = 0);
|
|
|
|
static QStringList List();
|
|
};
|
|
|
|
class DataStore : public JsonStore {
|
|
public:
|
|
// Running
|
|
|
|
int core_port = 19810;
|
|
int started_id = -1919;
|
|
bool core_running = false;
|
|
bool prepare_exit = false;
|
|
bool spmode_vpn = false;
|
|
bool spmode_system_proxy = false;
|
|
bool need_keep_vpn_off = false;
|
|
QString appdataDir = "";
|
|
QStringList ignoreConnTag = {};
|
|
QString proxy_scheme = "{ip}:{port}";
|
|
|
|
std::unique_ptr<Routing> routing;
|
|
int imported_count = 0;
|
|
bool refreshing_group_list = false;
|
|
bool refreshing_group = false;
|
|
std::atomic<int> resolve_count = 0;
|
|
|
|
// Flags
|
|
QStringList argv = {};
|
|
bool flag_use_appdata = false;
|
|
bool flag_many = false;
|
|
bool flag_tray = false;
|
|
bool flag_debug = false;
|
|
bool flag_restart_tun_on = false;
|
|
bool flag_dns_set = false;
|
|
|
|
// Saved
|
|
|
|
// Misc
|
|
QString log_level = "info";
|
|
QString test_latency_url = "http://cp.cloudflare.com/";
|
|
bool disable_tray = false;
|
|
int test_concurrent = 10;
|
|
bool disable_traffic_stats = false;
|
|
int current_group = 0; // group id
|
|
QString mux_protocol = "smux";
|
|
bool mux_padding = false;
|
|
int mux_concurrency = 8;
|
|
bool mux_default_on = false;
|
|
QString theme = "0";
|
|
int language = 0;
|
|
QString font = "";
|
|
int font_size = 0;
|
|
QString mw_size = "";
|
|
QStringList log_ignore = {};
|
|
bool start_minimal = false;
|
|
int max_log_line = 200;
|
|
QString splitter_state = "";
|
|
bool enable_stats = true;
|
|
QString stats_tab = ""; // either connection or log
|
|
int speed_test_mode = TestConfig::FULL;
|
|
QString simple_dl_url = "http://cachefly.cachefly.net/1mb.test";
|
|
|
|
// Subscription
|
|
QString user_agent = ""; // set at main.cpp
|
|
bool sub_use_proxy = false;
|
|
bool sub_clear = false;
|
|
bool sub_insecure = false;
|
|
int sub_auto_update = -30;
|
|
|
|
// Assets
|
|
QString geoip_download_url = "";
|
|
QString geosite_download_url = "";
|
|
|
|
// Security
|
|
bool skip_cert = false;
|
|
QString utlsFingerprint = "";
|
|
bool disable_run_admin = false; // windows only
|
|
|
|
// Remember
|
|
QStringList remember_spmode = {};
|
|
int remember_id = -1919;
|
|
bool remember_enable = false;
|
|
bool windows_set_admin = false;
|
|
|
|
// Socks & HTTP Inbound
|
|
QString inbound_address = "127.0.0.1";
|
|
int inbound_socks_port = 2080; // Mixed, actually
|
|
QString custom_inbound = "{\"inbounds\": []}";
|
|
|
|
// Routing
|
|
QString custom_route_global = "{\"rules\": []}";
|
|
QString active_routing = "Default";
|
|
|
|
// VPN
|
|
bool fake_dns = false;
|
|
bool enable_tun_routing = false;
|
|
#ifdef Q_OS_MACOS
|
|
QString vpn_implementation = "gvisor";
|
|
#else
|
|
QString vpn_implementation = "system";
|
|
#endif
|
|
int vpn_mtu = 1500;
|
|
bool vpn_ipv6 = false;
|
|
bool vpn_strict_route = true;
|
|
bool disable_privilege_req = false;
|
|
|
|
// NTP
|
|
bool enable_ntp = false;
|
|
QString ntp_server_address = "";
|
|
int ntp_server_port = 0;
|
|
QString ntp_interval = "";
|
|
|
|
// Hijack
|
|
bool enable_dns_server = false;
|
|
bool dns_server_listen_lan = false;
|
|
int dns_server_listen_port = 53;
|
|
QString dns_v4_resp = "127.0.0.1";
|
|
QString dns_v6_resp = "::1";
|
|
QStringList dns_server_rules = {};
|
|
bool enable_redirect = false;
|
|
QString redirect_listen_address = "127.0.0.1";
|
|
int redirect_listen_port = 443;
|
|
|
|
// System dns
|
|
bool system_dns_set = false;
|
|
|
|
// Hotkey
|
|
QString hotkey_mainwindow = "";
|
|
QString hotkey_group = "";
|
|
QString hotkey_route = "";
|
|
QString hotkey_system_proxy_menu = "";
|
|
QString hotkey_toggle_system_proxy = "";
|
|
|
|
// Core
|
|
int core_box_clash_api = -9090;
|
|
QString core_box_clash_listen_addr = "127.0.0.1";
|
|
QString core_box_clash_api_secret = "";
|
|
QString core_box_underlying_dns = "";
|
|
|
|
// Methods
|
|
|
|
DataStore();
|
|
|
|
void UpdateStartedId(int id);
|
|
|
|
[[nodiscard]] QString GetUserAgent(bool isDefault = false) const;
|
|
};
|
|
|
|
extern DataStore *dataStore;
|
|
|
|
} // namespace NekoGui
|