#pragma once #include "ProxyEntity.hpp" #include "sys/ExternalProcess.hpp" namespace NekoRay { class BuildConfigResult { public: QString error; QJsonObject coreConfig; QStringList tryDomains; QList> outboundStats; // all, but not including "bypass" "block" QSharedPointer outboundStat; // main QStringList ignoreConnTag; std::list>> exts; // extR to extC }; class BuildConfigStatus { public: QSharedPointer result; QSharedPointer ent; bool forTest; bool forExport; // priv QList globalProfiles; // xxList is V2Ray format string list QStringList domainListDNSRemote; QStringList domainListDNSDirect; QStringList domainListRemote; QStringList domainListDirect; QStringList ipListRemote; QStringList ipListDirect; QStringList domainListBlock; QStringList ipListBlock; // config format QJsonArray routingRules; QJsonArray inbounds; QJsonArray outbounds; }; QSharedPointer BuildConfig(const QSharedPointer &ent, bool forTest, bool forExport); void BuildConfigV2Ray(const QSharedPointer &status); void BuildConfigSingBox(const QSharedPointer &status); QString BuildChain(int chainId, const QSharedPointer &status); QString BuildChainInternal(int chainId, const QList> &ents, const QSharedPointer &status); QString WriteVPNSingBoxConfig(); QString WriteVPNLinuxScript(const QString &protectPath, const QString &configPath); } // namespace NekoRay