[ekg2-commit] ekg2: commands.c (HEAD) jabber.c (HEAD) jabber_handlers.c (HEAD) [darkjames]

CVS commit cvs w toxygen.net
Pią, 11 Sty 2008, 19:39:30 CET


Module name:	ekg2
Changes by:	darkjames	2008-01-11 19:39:27

Modified files:
	commands.c jabber.c jabber_handlers.c

Log message:
 - add jabber_muc_notice format, and display where we don't get nick in groupchat.
 - be less verbose in debug when we recv message.
 - be more ,,red'' in debug when we recv unknown/unimplemented statuscode.

Index: commands.c
===================================================================
RCS file: /home/cvs/ekg2/plugins/jabber/commands.c,v
diff -d -u -r1.220 -r1.221
--- commands.c	11 Jan 2008 13:42:57 -0000	1.220
+++ commands.c	11 Jan 2008 18:39:27 -0000	1.221
@@ -1757,39 +1757,55 @@
 	return 0;
 }
 
+/**
+ * jabber_muc_command_join()
+ *
+ * @param params [0] (<b>full channel name</b>)
+ * @param params [1] (<b>nickname</b>)
+ * @param params [2] (<b>password</b>)
+ *
+ * @todo make (session) variable jabber:default_muc && then if exists and params[0] has not specific server than append '@' jabber:default_muc and use it.
+ * @todo make (session) variable jabber:default_nickname.
+ * @todo history requesting, without history requesting.. etc
+ */
+
 static COMMAND(jabber_muc_command_join) {
-	/* params[0] - full channel name, 
-	 * params[1] - nickname || default 
-	 * params[2] - password || none
-	 *
-	 * XXX: make (session) variable jabber:default_muc && then if exists and params[0] has not specific server than append '@' jabber:default_muc and use it.
-	 * XXX: make (session) variable jabber:default_nickname.
-	 * XXX: history requesting, none history requesting.. etc
-	 */
 	jabber_private_t *j = session_private_get(session);
 	newconference_t *conf;
+
 	char *tmp;
 	char *username = (params[1]) ? xstrdup(params[1]) : (tmp = xstrchr(session->uid, '@')) ? xstrndup(session->uid+5, tmp-session->uid-5) : NULL;
 	char *password = (params[1] && params[2]) ? saprintf("<password>%s</password>", params[2]) : NULL;
 
-	if (!username) { /* rather impossible */
+	char *mucuid;
+	
+	if (!username) {		/* shouldn't happen */
 		printq("invalid_params", name);
 		return -1;
 	}
 
 	if (!xstrncmp(target, "xmpp:", 5)) target += 5; /* remove xmpp: */
 
-	watch_write(j->send_watch, "<presence to='%s/%s'><x xmlns='http://jabber.org/protocol/muc#user'>%s</x></presence>", 
-			target, username, password ? password : "");
-	{
-		char *uid = saprintf("xmpp:%s", target);
-		conf = newconference_create(session, uid, 1);
-		conf->private = xstrdup(username);
-		xfree(uid);
+	mucuid = saprintf("xmpp:%s", target);
+
+#if 0
+	if (newconference_find(session, mucuid)) {
+		printq("conferences_already_joined", session_name(session), mucuid);
+		xfree(mucuid);
+		return 1;
 	}
+#endif
+		
+	watch_write(j->send_watch, "<presence to='%s/%s'><x xmlns='http://jabber.org/protocol/muc'>%s</x></presence>", 
+			target, username, password ? password : "");
+
+
+	conf = newconference_create(session, mucuid, 1);
+	conf->private = xstrdup(username);
 
 	xfree(username);
 	xfree(password);
+	xfree(mucuid);
 	return 0;
 }
 

Index: jabber.c
===================================================================
RCS file: /home/cvs/ekg2/plugins/jabber/jabber.c,v
diff -d -u -r1.368 -r1.369
--- jabber.c	11 Jan 2008 11:58:04 -0000	1.368
+++ jabber.c	11 Jan 2008 18:39:27 -0000	1.369
@@ -1243,6 +1243,9 @@
 	format_add("jabber_muc_recv", 	"%B<%w%X%5%3%B>%n %4", 1);
 	format_add("jabber_muc_send",	"%B<%n%X%5%W%3%B>%n %4", 1);
 
+	/* %1 - sessionname, %2 - mucjid %3 - text */
+	format_add("jabber_muc_notice", "%n-%P%2%n- %3", 1);
+
 	format_add("jabber_muc_room_created", 
 		_("%> Room %W%2%n created, now to configure it: type %W/admin %g%2%n to get configuration form, or type %W/admin %g%2%n --instant to create instant one"), 1);
 	format_add("jabber_muc_banlist", _("%g|| %n %5 - %W%2%n: ban %c%3%n [%4]"), 1);	/* %1 sesja %2 kanal %3 kto %4 reason %5 numerek */

Index: jabber_handlers.c
===================================================================
RCS file: /home/cvs/ekg2/plugins/jabber/jabber_handlers.c,v
diff -d -u -r1.149 -r1.150
--- jabber_handlers.c	11 Jan 2008 11:47:54 -0000	1.149
+++ jabber_handlers.c	11 Jan 2008 18:39:27 -0000	1.150
@@ -1007,32 +1007,35 @@
 			char *formatted;
 			userlist_t *u;
 
-			char attr[2] = { ' ', 0 };
-
 		/* jesli (bsent != 0) wtedy mamy do czynienia z backlogiem */
 
 			class	|= EKG_NO_THEMEBIT;
 			ekgbeep	= EKG_NO_BEEP;
 
-			if ((u = userlist_find_u(&(c->participants), nick))) {
-				jabber_userlist_private_t *up = jabber_userlist_priv_get(u);
+			if (nick) {	/* XXX !!! */
+				char attr[2] = { ' ', 0 };
 
-			/* glupie, trzeba doszlifowac */
+				if ((u = userlist_find_u(&(c->participants), nick))) {
+					jabber_userlist_private_t *up = jabber_userlist_priv_get(u);
 
-				if (!xstrcmp(up->aff, "owner")) 		attr[0] = '@';
-				else if (!xstrcmp(up->aff, "admin"))		attr[0] = '@';
+					/* glupie, trzeba doszlifowac */
 
-				else if (!xstrcmp(up->role, "moderator"))	attr[0] = '%';
+					if (!xstrcmp(up->aff, "owner")) 		attr[0] = '@';
+					else if (!xstrcmp(up->aff, "admin"))		attr[0] = '@';
 
-				else						attr[0] = ' ';
+					else if (!xstrcmp(up->role, "moderator"))	attr[0] = '%';
 
+					else						attr[0] = ' ';
 
-			} else debug_error("[MUC, MESSAGE] userlist_find_u(%s) failed\n", nick);
 
-			formatted = format_string(format_find(isour ? "jabber_muc_send" : "jabber_muc_recv"),
-				session_name(s), uid2, nick ? nick : uid2+5, text, attr);
-			
-			debug("[MUC,MESSAGE] uid2:%s uuid:%s message:%s\n", uid2, nick, text);
+				} else debug_error("[MUC, MESSAGE] userlist_find_u(%s) failed\n", nick);
+
+				formatted = format_string(format_find(isour ? "jabber_muc_send" : "jabber_muc_recv"),
+						session_name(s), uid2, nick, text, attr);
+			} else {
+				formatted = format_string(format_find("jabber_muc_notice"), session_name(s), uid+5, text);
+			}
+
 			query_emit_id(NULL, PROTOCOL_MESSAGE, &me, &uid, &rcpts, &formatted, &format, &sent, &class, &seq, &ekgbeep, &secure);
 
 			xfree(uid2);
@@ -1459,8 +1462,8 @@
 
 						switch (codenr) {
 							case 201: print_window(mucuid, s, 0, "jabber_muc_room_created", session_name(s), mucuid);	break;
-							case  -1: debug("[jabber, iq, muc#user] codenr: -1 code: %s\n", code);				break;
-							default : debug("[jabber, iq, muc#user] XXX codenr: %d code: %s\n", codenr, code);
+							case  -1: debug_error("[jabber, iq, muc#user] codenr: -1 code: %s\n", __(code));		break;
+							default : debug_error("[jabber, iq, muc#user] XXX codenr: %d code: %s\n", codenr, code);
 						}
 					} else if (!xstrcmp(child->name, "item")) { /* lista userow */
 						char *jid	  = jabber_unescape(jabber_attr(child->atts, "jid"));		/* jid */


Więcej informacji o liście dyskusyjnej ekg2-commit