changeset 10560:33746d45bd0d

[gaim-migrate @ 11938] Some stuff I have lying around in my tree. Shouldn't change any functionality, mostly just notes to myself/anyone interested in working on oscar. committer: Tailor Script <tailor@pidgin.im>
author Mark Doliner <mark@kingant.net>
date Tue, 01 Feb 2005 03:52:46 +0000
parents c354b70d8502
children 1db4f49de0c6
files src/protocols/oscar/ft.c src/protocols/oscar/icq.c src/protocols/oscar/oscar.c src/protocols/oscar/service.c
diffstat 4 files changed, 57 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/src/protocols/oscar/ft.c	Mon Jan 31 14:36:26 2005 +0000
+++ b/src/protocols/oscar/ft.c	Tue Feb 01 03:52:46 2005 +0000
@@ -384,7 +384,7 @@
 
 	/* end of hdr2 */
 
-#if 0 /* XXX - this is how you send buddy icon info... */	
+#if 0 /* XXX - this is how you send buddy icon info... */
 	aimbs_put16(hdrbs, 0x0008);
 	aimbs_put16(hdrbs, 0x000c);
 	aimbs_put16(hdrbs, 0x0000);
--- a/src/protocols/oscar/icq.c	Mon Jan 31 14:36:26 2005 +0000
+++ b/src/protocols/oscar/icq.c	Tue Feb 01 03:52:46 2005 +0000
@@ -105,6 +105,45 @@
 	return 0;
 }
 
+faim_export int aim_icq_setauthsetting(aim_session_t *sess, int auth_required)
+{
+	aim_conn_t *conn;
+	aim_frame_t *fr;
+	aim_snacid_t snacid;
+	int bslen;
+
+	if (!sess || !(conn = aim_conn_findbygroup(sess, 0x0015)))
+		return -EINVAL;
+
+	bslen = 2+4+2+2+2+4;
+
+	if (!(fr = aim_tx_new(sess, conn, AIM_FRAMETYPE_FLAP, 0x02, 10 + 4 + bslen)))
+		return -ENOMEM;
+
+	snacid = aim_cachesnac(sess, 0x0015, 0x0002, 0x0000, NULL, 0);
+	aim_putsnac(&fr->data, 0x0015, 0x0002, 0x0000, snacid);
+
+	/* For simplicity, don't bother using a tlvlist */
+	aimbs_put16(&fr->data, 0x0001);
+	aimbs_put16(&fr->data, bslen);
+
+	aimbs_putle16(&fr->data, bslen - 2);
+	aimbs_putle32(&fr->data, atoi(sess->sn));
+	aimbs_putle16(&fr->data, 0x07d0); /* I command thee. */
+	aimbs_putle16(&fr->data, snacid); /* eh. */
+	aimbs_putle16(&fr->data, 0x0c3a); /* shrug. */
+	aimbs_putle16(&fr->data, 0x02f8);
+	aimbs_putle16(&fr->data, 0x0001);
+	aimbs_putle8(&fr->data, auth_required);
+	aimbs_putle8(&fr->data, 0x0c);
+	aimbs_putle16(&fr->data, 0x0103);
+	aimbs_putle16(&fr->data, 0x0000);
+
+	aim_tx_enqueue(sess, fr);
+
+	return 0;
+}
+
 /**
  * Change your ICQ password.
  *
--- a/src/protocols/oscar/oscar.c	Mon Jan 31 14:36:26 2005 +0000
+++ b/src/protocols/oscar/oscar.c	Tue Feb 01 03:52:46 2005 +0000
@@ -4246,7 +4246,7 @@
 
 	if (destn == NULL)
 		return 1;
-	
+
 	buf = g_strdup_printf(_("User information not available: %s"), (reason < msgerrreasonlen) ? _(msgerrreason[reason]) : _("Unknown reason."));
 	if (!gaim_conv_present_error(destn, gaim_connection_get_account((GaimConnection*)sess->aux_data), buf)) {
 		g_free(buf);
@@ -5814,6 +5814,7 @@
 		if (aim_sn_is_icq(gaim_account_get_username(account)))
 			oscar_set_status_icq(account, status);
 		else
+			/* QQQ - Should probably also set this for ICQ */
 			oscar_set_status_aim(account, status);
 	}
 	return;
--- a/src/protocols/oscar/service.c	Mon Jan 31 14:36:26 2005 +0000
+++ b/src/protocols/oscar/service.c	Tue Feb 01 03:52:46 2005 +0000
@@ -782,9 +782,16 @@
 }
 
 /* 
- * Subtype 0x001e - Extended Status
+ * Subtype 0x001e - Set various account settings (mostly ICQ related).
  *
- * Sets your ICQ status (available, away, do not disturb, etc.)
+ * These settings are transient, not server-stored (i.e. they only
+ * apply to this session, and must be re-set the next time you sign
+ * on).
+ *
+ * You can set your ICQ status (available, away, do not disturb,
+ * etc.), or whether your IP address should be hidden or not, or
+ * if your status is visible on ICQ web sites, and you can set
+ * your IP address info and what not.
  *
  * These are the same TLVs seen in user info.  You can 
  * also set 0x0008 and 0x000c.
@@ -800,7 +807,7 @@
 	if (!sess || !(conn = aim_conn_findbygroup(sess, AIM_CB_FAM_MSG)))
 		return -EINVAL;
 
-	data = AIM_ICQ_STATE_HIDEIP | AIM_ICQ_STATE_WEBAWARE | status; /* yay for error checking ;^) */
+	data = AIM_ICQ_STATE_DIRECTREQUIREAUTH | AIM_ICQ_STATE_HIDEIP | AIM_ICQ_STATE_WEBAWARE | status;
 
 	if (!(fr = aim_tx_new(sess, conn, AIM_FRAMETYPE_FLAP, 0x02, 10 + 8)))
 		return -ENOMEM;
@@ -809,6 +816,11 @@
 	aim_putsnac(&fr->data, 0x0001, 0x001e, 0x0000, snacid);
 
 	aim_tlvlist_add_32(&tl, 0x0006, data);
+#if 0
+	aim_tlvlist_add_raw(&tl, 0x000c, 0x0025, chunk_of_x25_bytes_with_ip_address_etc);
+	aim_tlvlist_add_raw(&tl, 0x0011, 0x0005, unknown 0x01 61 10 f6 41);
+	aim_tlvlist_add_16(&tl, 0x0012, unknown 0x00 00);
+#endif
 	aim_tlvlist_write(&fr->data, &tl);
 	aim_tlvlist_free(&tl);