mirror of
https://github.com/bolucat/Archive.git
synced 2025-09-26 20:21:35 +08:00
66 lines
2.6 KiB
C++
66 lines
2.6 KiB
C++
#pragma once
|
|
|
|
#include "AbstractBean.hpp"
|
|
|
|
namespace NekoGui_fmt {
|
|
class V2rayStreamSettings : public JsonStore {
|
|
public:
|
|
QString network = "tcp";
|
|
QString security = "";
|
|
QString packet_encoding = "";
|
|
// ws/http/grpc/tcp-http/httpupgrade
|
|
QString path = "";
|
|
QString host = "";
|
|
// kcp/quic/tcp-http
|
|
QString header_type = "";
|
|
// tls
|
|
QString sni = "";
|
|
QString alpn = "";
|
|
QString certificate = "";
|
|
QString utlsFingerprint = "";
|
|
bool allow_insecure = false;
|
|
// ws early data
|
|
QString ws_early_data_name = "";
|
|
int ws_early_data_length = 0;
|
|
// reality
|
|
QString reality_pbk = "";
|
|
QString reality_sid = "";
|
|
QString reality_spx = "";
|
|
// multiplex
|
|
int multiplex_status = 0;
|
|
|
|
V2rayStreamSettings() : JsonStore() {
|
|
_add(new configItem("net", &network, itemType::string));
|
|
_add(new configItem("sec", &security, itemType::string));
|
|
_add(new configItem("pac_enc", &packet_encoding, itemType::string));
|
|
_add(new configItem("path", &path, itemType::string));
|
|
_add(new configItem("host", &host, itemType::string));
|
|
_add(new configItem("sni", &sni, itemType::string));
|
|
_add(new configItem("alpn", &alpn, itemType::string));
|
|
_add(new configItem("cert", &certificate, itemType::string));
|
|
_add(new configItem("insecure", &allow_insecure, itemType::boolean));
|
|
_add(new configItem("h_type", &header_type, itemType::string));
|
|
_add(new configItem("ed_name", &ws_early_data_name, itemType::string));
|
|
_add(new configItem("ed_len", &ws_early_data_length, itemType::integer));
|
|
_add(new configItem("utls", &utlsFingerprint, itemType::string));
|
|
_add(new configItem("pbk", &reality_pbk, itemType::string));
|
|
_add(new configItem("sid", &reality_sid, itemType::string));
|
|
_add(new configItem("spx", &reality_spx, itemType::string));
|
|
_add(new configItem("mux_s", &multiplex_status, itemType::integer));
|
|
}
|
|
|
|
void BuildStreamSettingsSingBox(QJsonObject *outbound);
|
|
};
|
|
|
|
inline V2rayStreamSettings *GetStreamSettings(AbstractBean *bean) {
|
|
if (bean == nullptr) return nullptr;
|
|
auto stream_item = bean->_get("stream");
|
|
if (stream_item != nullptr) {
|
|
auto stream_store = (JsonStore *) stream_item->ptr;
|
|
auto stream = (NekoGui_fmt::V2rayStreamSettings *) stream_store;
|
|
return stream;
|
|
}
|
|
return nullptr;
|
|
}
|
|
} // namespace NekoGui_fmt
|