hi,

i do some change to rms plguin. can anyone submit to repository?
thx

diff -Naur licq-1.2.7.orig/plugins/rms/src/rms.cpp licq-1.2.7/plugins/rms/src/rms.cpp
--- licq-1.2.7.orig/plugins/rms/src/rms.cpp     Mon Jun 23 02:25:50 2003
+++ licq-1.2.7/plugins/rms/src/rms.cpp  Wed Jul  2 18:59:16 2003
@@ -47,6 +47,11 @@
 const unsigned short CODE_VIEWxFLAGS = 221;
 const unsigned short CODE_VIEWxTEXTxSTART = 222;
 const unsigned short CODE_VIEWxTEXTxEND = 223;
+const unsigned short CODE_ADDUSERxDONE = 224;
+const unsigned short CODE_REMUSERxDONE = 225;
+const unsigned short CODE_SECURExOPEN = 226;
+const unsigned short CODE_SECURExCLOSE = 227;
+const unsigned short CODE_SECURExSTAT = 228;
 const unsigned short CODE_VIEWxUNKNOWN = 299;
 // 300 - further action required
 const unsigned short CODE_ENTERxUIN = 300;
@@ -64,6 +69,8 @@
 const unsigned short CODE_EVENTxTIMEDOUT = 500;
 const unsigned short CODE_EVENTxFAILED = 501;
 const unsigned short CODE_EVENTxERROR = 502;
+const unsigned short CODE_ADDUSERxERROR = 503;
+const unsigned short CODE_SECURExNOTCOMPILED = 504;
 
 const unsigned short STATE_UIN = 1;
 const unsigned short STATE_PASSWORD = 2;
@@ -82,7 +89,7 @@
   char *help;
 };
 
-static const unsigned short NUM_COMMANDS = 12;
+static const unsigned short NUM_COMMANDS = 15;
 static struct Command commands[NUM_COMMANDS] =
 {
   { "HELP", &CRMSClient::Process_HELP,
@@ -108,7 +115,13 @@
   { "VIEW", &CRMSClient::Process_VIEW,
     "View event (next or specific user) { [ <uin> ] }." },
   { "AR", &CRMSClient::Process_AR,
-    "Set your (or a user custom) auto response { [ <uin> ] }." }
+    "Set your (or a user custom) auto response { [ <uin> ] }." },
+  { "ADDUSER", &CRMSClient::Process_ADDUSER,
+    "Add user to contact list { <uin> }." },
+  { "REMUSER", &CRMSClient::Process_REMUSER,
+    "Remove user from contact list { <uin> }." },
+  { "SECURE", &CRMSClient::Process_SECURE,
+    "Open/close/check secure channel { <uin> [ <open|close> ] } ." }
 };
 
 
@@ -1132,4 +1145,126 @@
   return fflush(fs);
 }
 
+/*---------------------------------------------------------------------------
+ * CRMSClient::Process_ADDUSER
+ *
+ * Command:
+ *   ADDUSER <uin>
+ *
+ * Response:
+ *
+ *-------------------------------------------------------------------------*/
+int CRMSClient::Process_ADDUSER()
+{
+  unsigned long nUin = atol(data_arg);
+
+  if (nUin >= 10000)
+  {
+    if (licqDaemon->AddUserToList(nUin))
+    {
+      fprintf(fs, "%d User added\n", CODE_ADDUSERxDONE);
+    }
+    else
+    {
+      fprintf(fs, "%d User not added\n", CODE_ADDUSERxERROR);
+    }
+  }
+  else
+  {
+    fprintf(fs, "%d Invalid UIN.\n", CODE_INVALIDxUSER);
+  }
+
+  return fflush(fs);
+}
+
+/*---------------------------------------------------------------------------
+ * CRMSClient::Process_REMUSER
+ *
+ * Command:
+ *   REMUSER <uin>
+ *
+ * Response:
+ *
+ *-------------------------------------------------------------------------*/
+int CRMSClient::Process_REMUSER()
+{
+  unsigned long nUin = atol(data_arg);
+
+  if (nUin >= 10000)
+  {
+    licqDaemon->RemoveUserFromList(nUin);
+    fprintf(fs, "%d User removed\n", CODE_REMUSERxDONE);
+  }
+  else
+  {
+    fprintf(fs, "%d Invalid UIN.\n", CODE_INVALIDxUSER);
+  }
+
+  return fflush(fs);
+}
 
+/*---------------------------------------------------------------------------
+ * CRMSClient::Process_SECURE
+ *
+ * Command:
+ *   SECURE <uin> <what>
+ *
+ * Response:
+ *
+ *-------------------------------------------------------------------------*/
+int CRMSClient::Process_SECURE()
+{
+  unsigned long nUin = 0;
+
+  if(!licqDaemon->CryptoEnabled())
+  {
+    fprintf(fs, "%d Licq secure channel not compiled. Please recompile with 
OpenSSL.\n", CODE_SECURExNOTCOMPILED);
+    return fflush(fs);
+  }
+  
+
+  if (isdigit(*data_arg))
+  {
+    nUin = atol(data_arg);
+    while (*data_arg != '\0' && *data_arg != ' ') data_arg++;
+    NEXT_WORD(data_arg);
+  }
+   else
+  {
+    fprintf(fs, "%d Invalid UIN.\n", CODE_INVALIDxUSER);
+    return fflush(fs);
+  }
+
+  if (nUin < 10000)
+  {
+    fprintf(fs, "%d Invalid UIN.\n", CODE_INVALIDxUSER);
+    return fflush(fs);
+  }
+
+  if (strncasecmp(data_arg, "open", 4) == 0)
+  {
+    licqDaemon->icqOpenSecureChannel(nUin);
+    fprintf(fs, "%d Secure connection opened.\n", CODE_SECURExOPEN);
+  }
+  else
+  if (strncasecmp(data_arg, "close", 4) == 0)
+  {
+    licqDaemon->icqCloseSecureChannel(nUin);  
+    fprintf(fs, "%d Secure connection closed.\n", CODE_SECURExCLOSE);
+  }
+  else
+  {
+   ICQUser *u = gUserManager.FetchUser(nUin,LOCK_R);
+   if (u->Secure()==0)
+   {
+    fprintf(fs, "%d Close\n", CODE_SECURExSTAT);
+   }
+   if (u->Secure()==1)
+   {
+    fprintf(fs, "%d Open\n", CODE_SECURExSTAT);
+   }
+   gUserManager.DropUser(u);
+  }
+  
+  return fflush(fs);
+}
diff -Naur licq-1.2.7.orig/plugins/rms/src/rms.h licq-1.2.7/plugins/rms/src/rms.h
--- licq-1.2.7.orig/plugins/rms/src/rms.h       Tue Sep 10 01:06:45 2002
+++ licq-1.2.7/plugins/rms/src/rms.h    Wed Jul  2 18:43:25 2003
@@ -78,6 +78,9 @@
   int Process_LOG();
   int Process_VIEW();
   int Process_AR();
+  int Process_ADDUSER();
+  int Process_REMUSER();
+  int Process_SECURE();
 
 protected:
   TCPSocket sock;

Reply via email to