#pragma once #include "notepad.h" #include "tunneltype.h" #include class TunnelConstructor { public: struct Pair { int8_t inbound = 3; int8_t outbound = 3; }; TunnelConstructor(); bool setName(std::string name); bool setTunnelType(TunnelType type); bool setLength(int8_t inbound, int8_t outbound); bool setLengthVariance(int8_t inbound, int8_t outbound); bool setQuantity(int8_t inbound, int8_t outbound); bool setBlindedLeaseSet(bool isBlinded); bool setTransient(bool isTransient); bool setKeepAlive(int8_t interval); bool setComments(bool enabled); std::string name() const { return name_; } TunnelType tunnelType() const { return tunnelType_; } Pair length() const { return length_; } Pair lengthVariance() const { return lengthVariance_; } Pair quantity() const { return quantity_; } bool isBlinded() const { return blinded_; } bool isTransient() const { return transient_; } uint8_t keepAliveInterval() const { return keepAliveInterval_; } bool isCommentsEnabled() const { return comments_; } std::u8string generate() const; void setLang(Notepad::Lang lang) { lang_ = lang; } std::u8string errorString() const { return errorString_; } static std::string tunnelTypeToString(TunnelType type); static TunnelType stringToTunnelType(const std::string& type); static bool isClientType(TunnelType type); // otherwise this is server private: std::string name_ = "TUNNEL"; TunnelType tunnelType_ = TunnelType::TcpClient; Pair length_; Pair lengthVariance_; Pair quantity_; bool transient_ = false; bool blinded_ = false; uint8_t keepAliveInterval_ = 0; Notepad::Lang lang_ = Notepad::Lang::en; bool comments_ = true; std::u8string errorString_; };