[Development] Extend Security class to allow different default sectypes for server/viewer.


git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4122 3789f03b-4d11-0410-bbf8-ca57d06f2519
diff --git a/common/rfb/CConnection.cxx b/common/rfb/CConnection.cxx
index 7aa38d9..6e1bf12 100644
--- a/common/rfb/CConnection.cxx
+++ b/common/rfb/CConnection.cxx
@@ -36,7 +36,7 @@
     shared(false),
     state_(RFBSTATE_UNINITIALISED), useProtocol3_3(false)
 {
-  security = new Security();
+  security = new Security(SecurityViewer);
 }
 
 CConnection::~CConnection()
diff --git a/common/rfb/SConnection.cxx b/common/rfb/SConnection.cxx
index 0e6ded5..87db200 100644
--- a/common/rfb/SConnection.cxx
+++ b/common/rfb/SConnection.cxx
@@ -55,7 +55,7 @@
 
   cp.setVersion(defaultMajorVersion, defaultMinorVersion);
 
-  security = new Security();
+  security = new Security(SecurityServer);
 }
 
 SConnection::~SConnection()
diff --git a/common/rfb/Security.cxx b/common/rfb/Security.cxx
index 4102920..600df14 100644
--- a/common/rfb/Security.cxx
+++ b/common/rfb/Security.cxx
@@ -52,14 +52,28 @@
 
 UserPasswdGetter *CSecurity::upg = NULL;
 
-StringParameter Security::secTypes
+StringParameter Security::secTypesViewer
 ("SecurityTypes",
  "Specify which security scheme to use (None, VncAuth)",
- "VncAuth");
+ "VncAuth", ConfViewer);
 
-Security::Security(void)
+StringParameter Security::secTypesServer
+("SecurityTypes",
+ "Specify which security scheme to use (None, VncAuth)",
+ "VncAuth", ConfServer);
+
+Security::Security(SecurityClassType secClassType)
 {
-  char *secTypesStr = secTypes.getData();
+  char *secTypesStr;
+
+  switch (secClassType) {
+  case SecurityViewer:
+    secTypesStr = secTypesViewer.getData();
+    break;
+  case SecurityServer:
+    secTypesStr = secTypesServer.getData();
+    break;
+  };
 
   enabledSecTypes = parseSecTypes(secTypesStr);
 
diff --git a/common/rfb/Security.h b/common/rfb/Security.h
index 54cdb80..6ee6b61 100644
--- a/common/rfb/Security.h
+++ b/common/rfb/Security.h
@@ -60,12 +60,14 @@
   const rdr::U32 secResultFailed = 1;
   const rdr::U32 secResultTooMany = 2; // deprecated
 
+  enum SecurityClassType { SecurityViewer, SecurityServer };
+
   class Security {
   public:
     /*
      * Create Security instance.
      */
-    Security(void);
+    Security(SecurityClassType secClassType);
 
     /*
      * Note about security types.
@@ -94,7 +96,8 @@
     /* Create client side CSecurity class instance */
     CSecurity* GetCSecurity(rdr::U32 secType);
 
-    static StringParameter secTypes;
+    static StringParameter secTypesViewer;
+    static StringParameter secTypesServer;
 
     /*
      * Use variable directly instead of dumb get/set methods. It is used