AnyConnect Secure Mobility Client  4.10.08025
CLIClientImpl.h
1 /******************************************************************************\
2  * This sample is supplied as is with no implied warranty.
3  * It is designed to assist you in using the Cisco AnyConnect VPN API.
4  * It is assumed that you will build a production application and
5  * refer to this sample as a reference only.
6  \*****************************************************************************/
7 
8 #ifndef _CLICLIENTIMPL_
9 #define _CLICLIENTIMPL_
10 
11 #include <mutex>
12 #include <stdio.h>
13 #include <stdlib.h>
14 #include "ClientIfc.h"
15 
16 enum RequestType
17 {
18  REQ_CONNECT,
19  REQ_GROUPLIST,
20  REQ_STATE,
21  REQ_STATISTICS,
22  REQ_DISCONNECT,
23  REQ_END
24 };
25 
26 /**
27  * This is an example application demonstrating the implementation of the
28  * AnyConnect API
29  */
30 
31 class CLIClientImpl : public ClientIfc
32 {
33  public:
34 
35  CLIClientImpl();
36  virtual ~CLIClientImpl();
37 
38  // The following methods are for support and not considered part of
39  // the main API interface.
40 
41  void printHostList();
42 
43  void printDefaultHost();
44 
45  void connect(std::string host, std::string user,
46  std::string password, std::string group);
47 
48  void disconnect();
49 
50  void showGroups(std::string host);
51 
52  /**
53  * This method demonstrates accessing the statistics data delivered
54  * via the ClientIfc::StatsCB method.
55  */
56  void getStats();
57 
58  /**
59  * Method with example of parsing ConnectPromptInfo.
60  *
61  * This method is triggered by an API call on the method
62  * UserPromptCB(ConnectPromptInfo &).
63  */
64  void setUserData(ConnectPromptInfo &ConnectPrompt);
65 
66  void printGroupList(ConnectPromptInfo &ConnectPrompt);
67 
68  std::wstring convertMultiByteToWide(const std::string &sInputData);
69 
70  void EventAvailable();
71  void ProcessEvents();
72 
73  void SetRequestType(RequestType e_RequestType);
74 
75  protected:
76 
77  void StatsCB(VPNStats &stats);
78 
79  void StateCB(const VPNState state,
80  const VPNSubState subState,
81  const tstring stateString);
82 
83  void BannerCB(const tstring &banner);
84 
85  void PreConnectReminderCB(const tstring &rtstrPreConnectReminder);
86 
87  void NoticeCB(const tstring &notice,
88  const MessageType type,
89  const bool bSensitive = false);
90 
91  void ExitNoticeCB(const tstring &notice,
92  const int returnCode);
93 
94  void ServiceReadyCB();
95 
96  void UserPromptCB(ConnectPromptInfo &ConnectPrompt);
97 
98  void CertBlockedCB(const tstring &rtstrUntrustedServer);
99  void CertWarningCB(const tstring &rtstrUntrustedServer,
100  const std::list<tstring> &rltstrCertErrors,
101  bool bAllowImport);
102 
103 
104  private:
105 
106  RequestType me_RequestType;
107 
108  tstring ms_user,
109  ms_pswd,
110  ms_group;
111 
112  std::mutex mtx;
113  volatile bool mb_exit;
114  volatile bool mb_eventAvailable;
115  bool mb_ConnectingStateReceived;
116 };
117 
118 
119 #endif // _CLICLIENTIMPL_
void disconnect()
Definition: CLIClientImpl.cpp:188
void BannerCB(const tstring &banner)
Definition: CLIClientImpl.cpp:87
Definition: CLIClientImpl.h:31
VPNState
Definition: api.h:135
void getStats()
Definition: CLIClientImpl.cpp:208
void EventAvailable()
Definition: CLIClientImpl.cpp:499
#define tstring
Definition: api.h:35
void setUserData(ConnectPromptInfo &ConnectPrompt)
Definition: CLIClientImpl.cpp:266
Definition: ConnectPromptInfo.h:37
void PreConnectReminderCB(const tstring &rtstrPreConnectReminder)
Definition: CLIClientImpl.cpp:94
MessageType
Definition: api.h:104
Definition: ClientIfc.h:42
void UserPromptCB(ConnectPromptInfo &ConnectPrompt)
Definition: CLIClientImpl.cpp:240
VPNSubState
Definition: api.h:159
void ExitNoticeCB(const tstring &notice, const int returnCode)
Definition: CLIClientImpl.cpp:138
void CertWarningCB(const tstring &rtstrUntrustedServer, const std::list< tstring > &rltstrCertErrors, bool bAllowImport)
Definition: CLIClientImpl.cpp:447
void ServiceReadyCB()
Definition: CLIClientImpl.cpp:237
void NoticeCB(const tstring &notice, const MessageType type, const bool bSensitive=false)
Definition: CLIClientImpl.cpp:108
void ProcessEvents()
Definition: CLIClientImpl.cpp:508
Definition: VPNStats.h:35
void CertBlockedCB(const tstring &rtstrUntrustedServer)
Definition: CLIClientImpl.cpp:441
void StatsCB(VPNStats &stats)
Definition: CLIClientImpl.cpp:394
void StateCB(const VPNState state, const VPNSubState subState, const tstring stateString)
Definition: CLIClientImpl.cpp:37