//---------------------------------------------------------------------------- // // Copyright (C) Intel Corporation, 2007 - 2008. // // File: ConfigFormat.h // // Contents: Configures the formats needed to configure the MPS. // // Notes: //---------------------------------------------------------------------------- #ifndef CONFIG_FORMATS_H #define CONFIG_FORMATS_H //------------------ // Includes //------------------ #include "CanonicalHash.h" #include "MPS_Utils.h" #include #include using namespace std; //------------------ // Defines //------------------ // Define the section and element names that are // supposed to be found in the configuration file #define ADVANCED_SECTION "Advanced" #define THREAD_NUMBER_ELEMENT "ThreadNumber" #define MAXIMUM_WINDOW_SIZE_ELEMENT "MaximumWindowSize" #define MINIMUM_WINDOW_SIZE_ELEMENT "MinimumWindowSize" #define MAX_QUEUE_SIZE_ELEMENT "MaxQueueSize" #define MAX_CHANNELS_ELEMENT "MaxChannels" #define MAX_TUNNEL_TIMEOUT_ELEMENT "MaxTunnelTimeout" #define MAX_BUFFER_SIZE_ELEMENT "MaxBufferSize" #define NETWORK_SECTION "NETWORK" #define AMT_LISTEN_IP_ELEMENT "AMTListenIP" #define AMT_LISTEN_PORT_ELEMENT "AMTListenPort" #define MC_HTTP_LISTEN_IP_ELEMENT "HttpListenIP" #define MC_HTTP_LISTEN_PORT_ELEMENT "HttpListenPort" #define MC_SOCKS_LISTEN_IP_ELEMENT "SocksListenIP" #define MC_SOCKS_LISTEN_PORT_ELEMENT "SocksListenPort" #define MC_SOAP_LISTEN_IP_ELEMENT "SOAPListenIP" #define MC_SOAP_LISTEN_PORT_ELEMENT "SOAPListenPort" //#define MC_SOCKS_LISTEN_INET_ELEMENT "SocksListenINET" #define LOGGER_SECTION "Logger" #define HEADING_ELEMENT "Heading" #define LOG_FILE_PATH_ELEMENT "LogFilePath" #define LOG_FILE_NAME_ELEMENT "LogFileName" #define LOG_FILE_SIZE_ELEMENT "LogFileMaxSize" #define TRACE_LEVEL_ELEMENT "TraceLevel" #define LOG_FILE_MAX_FILES_ELEMENT "LogFileMaxFiles" #define AMT_AUTHENTICATE_SECTION "AMT_Authenticate" #define SOCKS_AUTHENTICATE_SECTION "Socks_Authenticate" #define SOAP_AUTHENTICATE_SECTION "SOAP_Authentication" #define NEED_AUTHENTICATE_ELEMENT "NeedAuthentication" #define DLL_NAME_ELEMENT "DllName" #define DLL_PARAMETERS_ELEMENT "DllParameters" #define NOTIFICATION_AUTHENTICATION_SECTION "Notification_Authentication" #define NEED_NOTIFICATION_AUTH_ELEMENT "NeedNotificationAuthentication" #define USERNAME_ELEMENT "Username" #define PASSWORD_ELEMENT "Password" #define FILTERING_SECTION "Filtering" #define FILTER_UNAUTHORIZED_SERVERS_ELEMENT "FilterUnauthorizedServers" #define FILES_SECTION "Files" #define NOTIFICATION_LIST_ELEMENT "NotificationList" #define AUTHORIZED_SERVERS_LIST_ELEMENT "AuthorizedServersList" #define MANAGEMENT_INTERFACE_SECTION "Management_Interface" #define MAX_ENUM_ELEMENTS_ELEMENT "MaxEnumElements" #define ENUM_CTX_TIMEOUT_ELEMENT "EnumCtxTimeout" #define MAX_CONCURRENT_ENUMS_ELEMENT "MaxConcurrentEnums" #define MAX_SUBSCRIBERS_ELEMENT "MaxSubscribers" // Set up default values for optional parameters: #define MAXIMUM_WINDOW_SIZE_DEFAULT "131072" #define MINIMUM_WINDOW_SIZE_DEFAULT "8192" #define MAX_QUEUE_SIZE_DEFAULT "16777216" #define MAX_CHANNELS_DEFAULT "12" #define MAX_BUFFER_SIZE_DEFAULT "16" #define MAX_TUNNEL_TIMEOUT_DEFAULT "23400" #if defined (ACE_WIN32) && !defined (ACE_LACKS_WIN32_SERVICES) && defined (_SERVICE) #define THREAD_NUMBER_DEFAULT "500" #else #define THREAD_NUMBER_DEFAULT "100" #endif /* ACE_WIN32 && !(ACE_LACKS_WIN32_SERVICES) && (_SERVICE)*/ #define MC_HTTP_LISTEN_IP_DEFAULT "10.212.212.80" #define MC_SOAP_LISTEN_IP_DEFAULT "10.212.212.80" #define MC_SOAP_LISTEN_PORT_DEFAULT "7793" #define AMT_DLL_NAME_DEFAULT "" #define SOCKS_DLL_NAME_DEFAULT "" #define SOAP_DLL_NAME_DEFAULT "" #define AMT_DLL_PARAMETERS_DEFAULT "" #define SOCKS_DLL_PARAMETERS_DEFAULT "" #define SOAP_DLL_PARAMETERS_DEFAULT "" #define NOTIFICATION_USERNAME_DEFAULT "user" #define NOTIFICATION_PASSWORD_DEFAULT "pass" #define TRACE_LEVEL_DEFAULT "INFO|ERROR|WARNING" #define LOG_FILE_PATH_DEFAULT "logs/" #define LOG_FILE_NAME_DEFAULT "mps.log" #define LOG_FILE_SIZE_DEFAULT "10000" #if defined (ACE_WIN32) #define NOTIFICATION_LIST_DEFAULT "conf\\NotificationList.config" #define AUTHORIZED_SERVERS_LIST_DEFAULT "conf\\AuthorizedServersList.config" #else #define NOTIFICATION_LIST_DEFAULT "conf/NotificationList.config" #define AUTHORIZED_SERVERS_LIST_DEFAULT "conf/AuthorizedServersList.config" #endif #define LOG_FILE_MAX_FILES_DEFAULT "100" #define MAX_ENUM_ELEMENTS_DEFAULT "50" #define ENUM_CTX_TIMEOUT_DEFAULT "500" #define MAX_CONCURRENT_ENUMS_DEFAULT "10" #define MAX_SUBSCRIBERS_DEFAULT "30" //------------------ // Enums //------------------ // The four available format types enum enum FORMAT_TYPES { STATIC_MANDATORY = 0, STATIC_OPTIONAL, DYNAMIC_MANDATORY, DYNAMIC_OPTIONAL }; // The element types that can be used enum ELEMENT_TYPES_ENUM { IP_TYPE = 0, PORT_TYPE, INET_TYPE, STRING_TYPE, MC_LIST_TYPE, AUTHERIZED_SERVERS_LIST_TYPE, AUTHENTICATE_TYPE, UNSIGNED_INT_TYPE, LOG_LEVELS_TYPE, TIME_T_TYPE, BOOL_TYPE, BAD_TYPE = -1 }; //------------------ // Classes //------------------ // A class that encapsulates an element type class Element_Type_Enum { public: Element_Type_Enum(ELEMENT_TYPES_ENUM elem_type) : elem_type_(elem_type) {} ELEMENT_TYPES_ENUM getElementType() const { return elem_type_; } private: ELEMENT_TYPES_ENUM elem_type_; }; // A class that expands the Element_Type_Enum class with a default value for that element type class Element_Type_Enum_and_Default_Val : public Element_Type_Enum { public: Element_Type_Enum_and_Default_Val(ELEMENT_TYPES_ENUM elem_type, const ACE_TString &typeVal) : Element_Type_Enum(elem_type), typeVal_(typeVal) {} ACE_TString getTypeVal() const { return typeVal_; } private: ACE_TString typeVal_; }; // A canonical hash which represents the available configuration format typedef Canonical_Hash < ACE_TString, ACE_TString, Element_Type_Enum *, ACE_TString_compare, ACE_TString_compare > Format; // A singelton class which holds all the formats, initializes them, and provide access to them class ConfigFormats { public: // Return pointer to Singleton. static const ConfigFormats * instance(); // Dtor ~ConfigFormats(); // Returns a const pointer to the format specified by type const Format * getFormat(FORMAT_TYPES type) const; private: // private ctor ConfigFormats(); // cleans the Format, deleting all the elements within it. void cleanFormat(Format * format); // ConfigFormats Singleton instance. static ConfigFormats * instance_; Format * format_static_mandatory_; Format * format_static_optional_; Format * format_dynamic_mandatory_; Format * format_dynamic_optional_; }; #endif /* CONFIG_FORMATS_H */