![]() |
AnyConnect Secure Mobility Client 5.0.04032
|
00001 /************************************************************************** 00002 * Copyright (c) 2008, 2022-2023 Cisco Systems, Inc. 00003 * All Rights Reserved. Cisco Highly Confidential. 00004 *************************************************************************** 00005 * 00006 * File: PromptEntryBase.h 00007 * Date: 01/2008 00008 * 00009 *************************************************************************** 00010 * Prompt Entry base class implementation for the Client API. 00011 ***************************************************************************/ 00012 00013 #ifndef _PROMPTENTRYBASE_ 00014 #define _PROMPTENTRYBASE_ 00015 00016 00017 #include "api.h" 00018 #include <list> 00019 00020 00021 #define PROMPT_ENTRY_VALUE_TRUE _T("true") 00022 #define PROMPT_ENTRY_VALUE_FALSE _T("false") 00023 00024 class VPN_VPNAPI PromptEntryBase 00025 { 00026 public: 00027 00028 bool setValue(const tstring& value); 00029 bool clearValue(); 00030 00031 const tstring &getPromptName() const; 00032 00033 const tstring &getPromptLabel() const; 00034 00035 bool isEnabled() const; 00036 00037 void setEnabled(bool bIsEnabled); 00038 00039 bool isVisible() const; 00040 00041 void setVisible(bool bIsVisible); 00042 00043 // if this is a PromptEntry that has a list of values 00044 // (e.g. combo box style) the default will be to mark it as a group 00045 // combo. This method allows the group designation to be set directly. 00046 // 00047 void setEntryGroup(bool bIsEntryGroup); 00048 00049 00050 PromptEntryBase(tstring PromptName, 00051 tstring PromptLabel, 00052 PromptType promptType = Prompt_Input, 00053 const tstring& DefaultValue = EmptyString, 00054 ApiStringMap LabelValues = EmptyLabelValues); 00055 00056 00057 void setPromptLabel(tstring label); 00058 00059 // In cases of prompt types with options (checkbox, combobox), 00060 // this will return the translated label (of the option). 00061 const tstring &getValue() const; 00062 00063 // this function returns the internal representation of the value 00064 const tstring &getTrueValue() const; 00065 00066 const std::list<tstring> &getValueOptions() const; 00067 00068 bool isEntryGroup() const; 00069 00070 bool isReadOnly() const; 00071 00072 PromptType getPromptType() const; 00073 00074 size_t GetGroupAttributesCount(); 00075 00076 00077 virtual ~PromptEntryBase(); 00078 00079 static const tstring EmptyString; 00080 00081 static const std::list<tstring> EmptyList; 00082 00083 static const ApiStringMap EmptyLabelValues; 00084 00085 // Deep Copy Assignment Operator 00086 // 00087 PromptEntryBase& operator=(const PromptEntryBase& existingEntry) 00088 { 00089 return deepCopy(existingEntry); 00090 } 00091 00092 // Deep Copy Constructor 00093 // 00094 explicit PromptEntryBase(const PromptEntryBase& existingEntry) 00095 { 00096 deepCopy(existingEntry); 00097 } 00098 00099 00100 private: 00101 00102 PromptEntryBase& deepCopy(const PromptEntryBase& existingEntry); 00103 00104 tstring ms_PromptName; 00105 tstring ms_PromptLabel; 00106 PromptType me_PromptType; 00107 tstring ms_Value; 00108 ApiStringMap msm_LabelValueMap; 00109 std::list<tstring> mls_ValueOptions; 00110 bool mb_IsEntryGroup; 00111 bool mb_Enabled; 00112 bool mb_Visible; 00113 00114 public: 00115 00116 class GroupAttributes 00117 { 00118 public: 00119 GroupAttributes() : 00120 CredRequired(true), 00121 UsesSDIAuth(false), 00122 UsernameEditable(true), 00123 SecondaryUsernameEditable(true), 00124 UsesSecondaryAuth(false) 00125 { 00126 } 00127 00128 // Deep Copy Constructor 00129 // 00130 explicit GroupAttributes( 00131 const GroupAttributes& existingGroupAttr) 00132 { 00133 deepCopy(existingGroupAttr); 00134 } 00135 00136 // Deep Copy Assignment Operator 00137 // 00138 GroupAttributes& operator=( 00139 const GroupAttributes& existingGroupAttr) 00140 { 00141 return deepCopy(existingGroupAttr); 00142 } 00143 00144 bool CredRequired; 00145 bool UsesSDIAuth; 00146 bool UsernameEditable; 00147 tstring Username; 00148 bool SecondaryUsernameEditable; 00149 tstring SecondaryUsername; 00150 bool UsesSecondaryAuth; 00151 00152 private: 00153 GroupAttributes& deepCopy(const GroupAttributes& existingGroupAttr) 00154 { 00155 if (std::addressof(existingGroupAttr) != this) 00156 { 00157 CredRequired = existingGroupAttr.CredRequired; 00158 UsesSDIAuth = existingGroupAttr.UsesSDIAuth; 00159 UsernameEditable = existingGroupAttr.UsernameEditable; 00160 Username = existingGroupAttr.Username.c_str(); 00161 SecondaryUsernameEditable = existingGroupAttr.SecondaryUsernameEditable; 00162 SecondaryUsername = existingGroupAttr.SecondaryUsername.c_str(); 00163 UsesSecondaryAuth = existingGroupAttr.UsesSecondaryAuth; 00164 } 00165 return *this; 00166 } 00167 }; 00168 00169 class SingleAttributes 00170 { 00171 public: 00172 SingleAttributes() : 00173 SecondaryAuthEntry(false), 00174 SSOTimeoutSeconds(0), 00175 SSOIsExternalBrowser(false) 00176 { 00177 } 00178 00179 // Deep Copy Constructor 00180 // 00181 explicit SingleAttributes( 00182 const SingleAttributes& existingSingleAttr) 00183 { 00184 deepCopy(existingSingleAttr); 00185 } 00186 00187 // Deep Copy Assignment Operator 00188 // 00189 SingleAttributes& operator=( 00190 const SingleAttributes& existingSingleAttr) 00191 { 00192 return deepCopy(existingSingleAttr); 00193 } 00194 00195 bool SecondaryAuthEntry; 00196 tstring SSOURL; 00197 tstring SSOFinalURL; 00198 tstring SSOTokenCookieName; 00199 tstring SSOErrorCookieName; 00200 unsigned int SSOTimeoutSeconds; 00201 tstring SSOUserAgent; 00202 bool SSOIsExternalBrowser; 00203 00204 private: 00205 SingleAttributes& deepCopy(const SingleAttributes& existingSingleAttr) 00206 { 00207 if (std::addressof(existingSingleAttr) != this) 00208 { 00209 SecondaryAuthEntry = existingSingleAttr.SecondaryAuthEntry; 00210 SSOURL = existingSingleAttr.SSOURL.c_str(); 00211 SSOFinalURL = existingSingleAttr.SSOFinalURL.c_str(); 00212 SSOTokenCookieName = existingSingleAttr.SSOTokenCookieName.c_str(); 00213 SSOErrorCookieName = existingSingleAttr.SSOErrorCookieName.c_str(); 00214 SSOTimeoutSeconds = existingSingleAttr.SSOTimeoutSeconds; 00215 SSOUserAgent = existingSingleAttr.SSOUserAgent.c_str(); 00216 SSOIsExternalBrowser = existingSingleAttr.SSOIsExternalBrowser; 00217 } 00218 return *this; 00219 } 00220 }; 00221 00222 typedef std::map<tstring, GroupAttributes> GroupAttributesMap; 00223 00224 const GroupAttributes& getGroupAttributes(const tstring& group) const; 00225 void setGroupAttributesMap(const GroupAttributesMap& groupAttributesMap); 00226 00227 const SingleAttributes& getSingleAttributes() const; 00228 void setSingleAttributes(const SingleAttributes& singleAttributes); 00229 00230 private: 00231 00232 void copyGroupAttributesMap (const GroupAttributesMap &srcMap, 00233 GroupAttributesMap &dstMap); 00234 00235 static const GroupAttributes DefaultGroupAttributes; 00236 GroupAttributesMap m_GroupAttributesMap; 00237 SingleAttributes m_SingleAttributes; 00238 }; 00239 00240 00241 #endif // _PROMPTENTRYBASE_