Added the AMT sample app from the IntelAMTSDK. It pulls in all cpp and
[monitor.git] / cmdamt / Include / CommonDefinitions.h
diff --git a/cmdamt/Include/CommonDefinitions.h b/cmdamt/Include/CommonDefinitions.h
new file mode 100644 (file)
index 0000000..79555ab
--- /dev/null
@@ -0,0 +1,289 @@
+//----------------------------------------------------------------------------
+//
+//  Copyright (C) Intel Corporation, 2004 - 2006.
+//
+//  File:       CommonDefinitions.h
+//
+//  Contents:   Sample code for an IntelĀ® AMT Network client.
+//
+//  Notes:      This file contains type, function and constant definitions
+//              used throughout the code of the all sample applications.
+//
+//----------------------------------------------------------------------------
+
+#ifndef COMMON_DEFINITIONS_H
+#define COMMON_DEFINITIONS_H
+
+
+#include "StatusCodeDefinitions.h"
+#ifdef _WIN32
+/*
+ * gsoapWinHTTP.h for gSoap WinHTTP extension - needed for TLS support
+ */
+#include "gsoapWinHttp.h"
+#include "StatusStrings.h"
+#include <conio.h>
+#else
+/*
+ * httpDigest.h for gSoap HTTP Digest support
+ */
+#include "httpDigest.h"
+#endif
+
+/*
+ * Function prototypes
+ */
+void PrintAuthenticationNote();
+bool CheckReturnStatus(unsigned int res, unsigned long status,const char *message);
+bool ValidateIP(const char *uri);
+void GetString(char *msg, char *s, bool hidden);
+bool ChangeService(const char *uri, const char *newService, char *newUri);
+bool DisplayWarning(const char *msg);
+bool GetNumber(int *number);
+void ReplaceSubstring(const char *oldString,const char *oldSubstr, 
+                                       const char *newSubstr, char *newString);
+void SetIPAddress(unsigned long &address, unsigned long bytes[]);
+void NumberToIP(unsigned long address, unsigned long bytes[]);
+void NumberToString(unsigned long number, char *string);
+void IpToString(unsigned long address, char *string);
+void StringToIP(const char *string, unsigned long &address);
+void GuidToString(const unsigned char* guid, char* string);
+bool ExtractIPFromUri(const char *uri, char *baseUrl);
+void IsEmulator(const char *targetUrl, int *isEmulator);
+bool GetOption(int *commandLineLength, char *argv[], int numOfArgs,
+                          char **option, char **commandLine[]);
+void PrintSuccess(bool print = true);
+void FunctionCall(const char *message);
+#ifdef _WIN32
+bool ParseCommandLine(int commandLineLength,char* commandLine[],char **target,
+                                         char **certName, bool *local, bool *krb,bool *verbose = NULL, 
+                      char **username = NULL, char **password = NULL);
+#define CHAR _TCHAR
+#else
+bool ParseCommandLine(int commandLineLength,char* commandLine[],char **target, 
+                                         char **certName = NULL,char **certPass = NULL, 
+                      bool *verbose = NULL, 
+                                         char **username = NULL, char **password = NULL);
+#define CHAR char
+#endif
+
+/*
+ * Constants for the common use
+ */
+static const int MAX_LINE_LEN = 1024;
+static const int TIMEOUT = 80;
+static const char *DEFAULT_USERNAME = "admin";
+static const char *DEFAULT_PASSWORD = "admin";
+static const char *CERT_NAME = "-certName";
+static const char *USER = "-user";
+static const char *PASS = "-pass";
+static const char *VERBOSE = "-verbose";
+#ifdef _WIN32
+static const char *LOCAL = "-local";
+static const char *KRB = "-krb";
+#else
+static const char *CERT_PASS = "-certPass";
+#endif
+
+/*
+ * The structure that represents 
+ * the gSOAP rintime environment
+ */
+class Soap
+{
+private:
+  struct soap *m_soap;
+  char *m_username;
+  char *m_password;
+  char *m_ip;
+
+public:
+    // Constructor
+#ifdef _WIN32
+  Soap(const char *url, const char *certName, 
+          const char *username, const char *password,
+       bool local, bool krb)
+#else
+  Soap(const char *url, const char *certName, 
+          const char *certPass, const char *username, 
+       const char *password)
+#endif
+  {
+    m_username = new char[MAX_LINE_LEN];
+    m_password = new char[MAX_LINE_LEN];
+    m_ip = new char[MAX_LINE_LEN];
+    SetIp(url);
+    SetUsername(DEFAULT_USERNAME);
+    SetPassword(DEFAULT_PASSWORD);
+
+       if (
+#ifdef _WIN32
+        krb == false &&
+#endif
+        !username)
+       {
+               // To use the default user name, comment the following line:
+               GetString("Username: ", m_username, false);  
+       }
+       else
+       {
+               SetUsername(username);
+       }
+
+       if (
+#ifdef _WIN32
+        krb == false &&
+#endif
+        !password)
+       {
+               // To use the default password, comment the following line:
+               GetString("Password: ", m_password, true);
+       }
+       else
+       {
+               SetPassword(password);
+       }
+       m_soap = soap_new();
+       if( m_soap )
+       {
+#ifdef _WIN32
+         SetSoap(certName,local,krb);
+#else
+         SetSoap(certName,certPass);
+#endif
+
+       }
+  }
+
+  void Init(SOAP_NMAC struct Namespace *name = NULL)
+  {
+    m_soap->userid = m_username;
+    m_soap->passwd = m_password;
+
+    if(name != NULL)
+    {
+        // setting namespace for the runtime environment
+           soap_set_namespaces(m_soap, name);
+    }
+  }
+
+  char *GetIp()
+  {
+      return m_ip;
+  }
+
+  char *GetUsername()
+  {
+      return m_username;
+  }
+
+  char *GetPassword()
+  {
+      return m_password;
+  }
+
+  struct soap *GetSoap()
+  {
+      return m_soap;
+  }
+
+  void SetIp(const char *url)
+  {
+      memset(m_ip, 0, MAX_LINE_LEN);
+      if(url != NULL)
+      {
+        strncpy(m_ip, url, MAX_LINE_LEN - 1);
+      }
+  }
+
+  void SetUsername(const char *username)
+  {
+      memset(m_username,0,MAX_LINE_LEN);
+      if(username != NULL)
+      {
+        strncpy(m_username, username, MAX_LINE_LEN - 1);
+      }
+  }
+
+  void SetPassword(const char *password)
+  {
+      memset(m_password,0,MAX_LINE_LEN);
+      if(password != NULL)
+      {
+        strncpy(m_password, password, MAX_LINE_LEN - 1);
+      }
+  }
+
+#ifdef _WIN32
+  void SetSoap(const CHAR *certName, bool local, bool krb)
+#else
+  void SetSoap(const CHAR *certName, const char *certPass)
+#endif
+  {
+    m_soap->recv_timeout    = TIMEOUT;
+    m_soap->send_timeout    = TIMEOUT;
+    m_soap->connect_timeout = TIMEOUT;
+    m_soap->accept_timeout  = TIMEOUT;
+
+#ifdef _WIN32
+       // gsoap winhttp extension 
+       soap_register_plugin( m_soap, winhttp_plugin );
+    soap_omode(m_soap, SOAP_IO_KEEPALIVE);
+       if( certName )
+       {
+               winhttp_set_certificate_name(m_soap, certName);
+       }
+
+    winhttp_set_local(m_soap,local);
+    winhttp_set_auth_scheme(m_soap,krb);
+#else
+    // gsoap HTTP Digest plugin
+ if ( strncmp(m_ip+strlen(m_ip)-5, ".asmx", 5)) {
+        soap_register_plugin(m_soap, http_digest);
+    }
+  soap_omode(m_soap, SOAP_IO_KEEPALIVE);
+  soap_imode(m_soap, SOAP_IO_KEEPALIVE);
+       if ( !strncmp(m_ip, "https:", 6) )
+       {
+               soap_ssl_client_context(m_soap,
+                                                               SOAP_SSL_DEFAULT,
+                                                               certName,
+                                                               certPass,
+                                                               "/usr/share/ssl/cert.pem",
+                                                               "/usr/share/ssl/certs/", NULL);
+       }
+#endif
+  }
+
+  // Destructor
+  ~Soap()
+  {
+      if(m_username)
+      {
+          delete [] m_username;
+          m_username = NULL;
+      }
+      if(m_password)
+      {
+          delete [] m_password;
+          m_password = NULL;
+      }
+      if(m_ip)
+      {
+          delete [] m_ip;
+          m_ip = NULL;
+      }
+         if( m_soap ){
+               soap_destroy(m_soap);
+               soap_end(m_soap);
+               soap_done(m_soap);
+               free(m_soap);
+               m_soap = NULL;
+         }
+  }
+};
+
+
+
+
+#endif