On Monday 22 April 2002 15:38, Juan F. Codagnone wrote:
> This patch let you receive webpanel messages sent from
> http://web.icq.com/wwp/1,,,00.html?Uin=XXXXXX where XXX is the uin
>
> TODO: (some else, because i don't know how)
>       Display the message in the client.
>
> Regards,
>       Juan.

opps. i forgot to add the support for offline webpanel messages.
now is complete. note that i still don't know how to show the event as 
message.

also receives the emails sent to [EMAIL PROTECTED]

i know than incomplete patches is a bad thing (the message is processed but 
no showed), but i don't know where to look.

-- 
Buenos Aires, Argentina

Index: src/icqd-srv.cpp
===================================================================
RCS file: /cvsroot/licq/licq/src/icqd-srv.cpp,v
retrieving revision 1.30
diff -u -1 -b -p -r1.30 icqd-srv.cpp
--- src/icqd-srv.cpp	16 Apr 2002 13:37:36 -0000	1.30
+++ src/icqd-srv.cpp	22 Apr 2002 22:47:08 -0000
@@ -25,2 +25,4 @@
 
+const unsigned long PAGER_UIN = 10;
+
 //-----icqAddUser----------------------------------------------------------
@@ -1319,3 +1321,3 @@ void CICQDaemon::ProcessMessageFam(CBuff
 
-    if (nUin < 10000) {
+    if (nUin < 10000 && nUin != PAGER_UIN) {
       gLog.Warn("%sMessage through server with strange Uin: %04lx\n", L_WARNxSTR, nUin);
@@ -1607,3 +1609,47 @@ void CICQDaemon::ProcessMessageFam(CBuff
       }
+      case 0:
+      {	char **szFields = new char*[6]; // name, ?. ?, email,?,message
+	char *msg;
+	
+        packet.UnpackUnsignedShortBE();
+
+	// i don't know what these are
+	packet.UnpackUnsignedShortBE();
+	packet.UnpackUnsignedShortBE();
+	packet.UnpackUnsignedShortBE();
+	packet.UnpackUnsignedShortBE();
+	
+	msg = packet.UnpackString();
+
+        if (!ParseFE(msg, &szFields, 6))
+        {	 char *buf;
+        	 gLog.Warn("%sInvalid WebPanel message\n%s\n", L_WARNxSTR,
+                             packet.print(buf));
+                 delete  []buf;
+                 
+        }
+        else
+        {	gLog.Info ("%s WebPanel Message from \"%s\" %s",L_SRVxSTR,
+                 		szFields[0],szFields[3]);
+        	// translating string with Translation Table
+        	gTranslator.ServerToClient(szFields[0]);  // name
+        	gTranslator.ServerToClient(szFields[3]);  // email
+        	gTranslator.ServerToClient(szFields[5]);  // msg
+
+        	 CEventWebPanel *e = new CEventWebPanel( szFields[0],
+        	 	szFields[3],szFields[4],0,timeSent,0);
 
+        	 ICQOwner *o = gUserManager.FetchOwner(LOCK_W);
+        	 if (AddUserEvent(o, e))
+                 {	gUserManager.DropOwner();
+                 	e->AddToHistory(NULL, D_RECEIVER);
+                 	m_xOnEventManager.Do(ON_EVENT_SYSMSG, NULL);
+                 }
+                 else
+                 	gUserManager.DropOwner();
+        }
+        delete msg;
+      	delete szFields;
+      	break;
+      }
       default:
@@ -1853,2 +1899,29 @@ void CICQDaemon::ProcessVariousFam(CBuff
 	  break;
+	}
+	case 0x000e:	// Offline WebPanel/email message 
+	{	char **szFields = new char*[6]; // name, ?. ?, email,?,message
+
+		if (!ParseFE(szMessage, &szFields, 6))
+		{	char *buf;
+			gLog.Warn("%sInvalid Offline WebPanel message\n%s\n",
+				L_WARNxSTR,packet.print(buf));
+			delete []buf;
+		}
+		else
+		{	 gLog.Info ("%sWebPanel Offline Message from \"%s\" %s",
+					L_SRVxSTR,szFields[0],szFields[3]);
+
+			// translating string with Translation Table
+			gTranslator.ServerToClient(szFields[0]);  // name
+			gTranslator.ServerToClient(szFields[3]);  // email
+			gTranslator.ServerToClient(szFields[5]);  // msg
+
+			CEventWebPanel *e = new CEventWebPanel( szFields[0],
+				szFields[3],szFields[4],0,nTimeSent,0);
+
+			eEvent = e;
+		}
+		
+		delete szFields;
+		break;
 	}

Reply via email to