#ifndef CONTAINERS_DEFS_H #define CONTAINERS_DEFS_H #include #include #include "../protocols/protocols_defs.h" using namespace amnezia; namespace amnezia { namespace ContainerEnumNS { Q_NAMESPACE enum DockerContainer { None = 0, Awg, WireGuard, OpenVpn, Cloak, ShadowSocks, Ipsec, Xray, SSXray, // non-vpn TorWebSite, Dns, Sftp, Socks5Proxy }; Q_ENUM_NS(DockerContainer) } // namespace ContainerEnumNS using namespace ContainerEnumNS; using namespace ProtocolEnumNS; class ContainerProps : public QObject { Q_OBJECT public: Q_INVOKABLE static amnezia::DockerContainer containerFromString(const QString &container); Q_INVOKABLE static QString containerToString(amnezia::DockerContainer container); Q_INVOKABLE static QString containerTypeToString(amnezia::DockerContainer c); Q_INVOKABLE static QList allContainers(); Q_INVOKABLE static QMap containerHumanNames(); Q_INVOKABLE static QMap containerDescriptions(); Q_INVOKABLE static QMap containerDetailedDescriptions(); // these protocols will be displayed in container settings Q_INVOKABLE static QVector protocolsForContainer(amnezia::DockerContainer container); Q_INVOKABLE static amnezia::ServiceType containerService(amnezia::DockerContainer c); // binding between Docker container and main protocol of given container // it may be changed fot future containers :) Q_INVOKABLE static amnezia::Proto defaultProtocol(amnezia::DockerContainer c); Q_INVOKABLE static bool isSupportedByCurrentPlatform(amnezia::DockerContainer c); Q_INVOKABLE static QStringList fixedPortsForContainer(amnezia::DockerContainer c); static bool isEasySetupContainer(amnezia::DockerContainer container); static QString easySetupHeader(amnezia::DockerContainer container); static QString easySetupDescription(amnezia::DockerContainer container); static int easySetupOrder(amnezia::DockerContainer container); static bool isShareable(amnezia::DockerContainer container); static QJsonObject getProtocolConfigFromContainer(const amnezia::Proto protocol, const QJsonObject &containerConfig); static int installPageOrder(amnezia::DockerContainer container); }; static void declareQmlContainerEnum() { qmlRegisterUncreatableMetaObject(ContainerEnumNS::staticMetaObject, "ContainerEnum", 1, 0, "ContainerEnum", "Error: only enums"); } } // namespace amnezia QDebug operator<<(QDebug debug, const amnezia::DockerContainer &c); #endif // CONTAINERS_DEFS_H