+ struct faimtest_priv *priv = (struct faimtest_priv *)sess->aux_data;
+
+ if (!strncmp(tmpstr, "disconnect", 10)) {
+
+ logout(sess);
+
+ } else if (strstr(tmpstr, "goodday")) {
+
+ aim_send_im(sess, conn, userinfo->sn, AIM_IMFLAGS_ACK, "Good day to you too.");
+
+ } else if (strstr(tmpstr, "haveicon") && priv->buddyicon) {
+ struct aim_sendimext_args args;
+ static const char iconmsg[] = {"I have an icon"};
+
+ args.destsn = userinfo->sn;
+ args.flags = AIM_IMFLAGS_HASICON;
+ args.msg = iconmsg;
+ args.msglen = strlen(iconmsg);
+ args.iconlen = priv->buddyiconlen;
+ args.iconstamp = priv->buddyiconstamp;
+ args.iconsum = priv->buddyiconsum;
+
+ aim_send_im_ext(sess, conn, &args);
+
+ } else if (strstr(tmpstr, "havefeat")) {
+ struct aim_sendimext_args args;
+ static const char featmsg[] = {"I have nifty features."};
+ fu8_t features[] = {0x01, 0x01, 0x01, 0x02, 0x42, 0x43, 0x44, 0x45};
+
+ args.destsn = userinfo->sn;
+ args.flags = AIM_IMFLAGS_CUSTOMFEATURES;
+ args.msg = featmsg;
+ args.msglen = strlen(featmsg);
+ args.features = features;
+ args.featureslen = sizeof(features);
+
+ aim_send_im_ext(sess, conn, &args);
+
+ } else if (strstr(tmpstr, "sendicon") && priv->buddyicon) {
+
+ aim_send_icon(sess, conn, userinfo->sn, priv->buddyicon, priv->buddyiconlen, priv->buddyiconstamp, priv->buddyiconsum);
+
+ } else if (strstr(tmpstr, "warnme")) {
+
+ dprintf("faimtest: icbm: sending non-anon warning\n");
+ aim_send_warning(sess, conn, userinfo->sn, 0);
+
+ } else if (strstr(tmpstr, "anonwarn")) {
+
+ dprintf("faimtest: icbm: sending anon warning\n");
+ aim_send_warning(sess, conn, userinfo->sn, AIM_WARN_ANON);
+
+ } else if (strstr(tmpstr, "setdirectoryinfo")) {
+
+ dprintf("faimtest: icbm: sending backwards profile data\n");
+ aim_setdirectoryinfo(sess, conn, "tsrif", "elddim", "tsal", "nediam", "emankcin", "teerts", "ytic", "etats", "piz", 0, 1);
+
+ } else if (strstr(tmpstr, "setinterests")) {
+
+ dprintf("faimtest: icbm: setting fun interests\n");
+ aim_setuserinterests(sess, conn, "interest1", "interest2", "interest3", "interest4", "interest5", 1);
+
+ } else if (!strncmp(tmpstr, "getfile", 7)) {
+
+ if (!priv->ohcaptainmycaptain) {
+
+ aim_send_im(sess, conn, userinfo->sn, AIM_IMFLAGS_ACK, "I have no owner!");
+
+ } else
+ getfile_start(sess, conn, (strlen(tmpstr) < 8)?priv->ohcaptainmycaptain:tmpstr+8);
+
+ } else if (!strncmp(tmpstr, "open chatnav", 12)) {
+
+ aim_bos_reqservice(sess, conn, AIM_CONN_TYPE_CHATNAV);
+
+ } else if (!strncmp(tmpstr, "create", 6)) {
+
+ aim_chatnav_createroom(sess,aim_getconn_type(sess, AIM_CONN_TYPE_CHATNAV), (strlen(tmpstr) < 7)?"WorldDomination":tmpstr+7, 0x0004);
+
+ } else if (!strncmp(tmpstr, "close chatnav", 13)) {
+ aim_conn_t *chatnavconn;
+
+ if ((chatnavconn = aim_getconn_type(sess, AIM_CONN_TYPE_CHATNAV)))
+ aim_conn_kill(sess, &chatnavconn);
+
+ } else if (!strncmp(tmpstr, "join", 4)) {
+
+ aim_chat_join(sess, conn, 0x0004, "worlddomination", 0x0000);
+
+ } else if (!strncmp(tmpstr, "leave", 5)) {
+
+ aim_chat_leaveroom(sess, "worlddomination");
+
+ } else if (!strncmp(tmpstr, "getinfo", 7)) {
+
+ aim_getinfo(sess, conn, "75784102", AIM_GETINFO_GENERALINFO);
+ aim_getinfo(sess, conn, "15853637", AIM_GETINFO_AWAYMESSAGE);
+ aim_getinfo(sess, conn, "midendian", AIM_GETINFO_GENERALINFO);
+ aim_getinfo(sess, conn, "midendian", AIM_GETINFO_AWAYMESSAGE);
+
+ } else if (strstr(tmpstr, "open directim")) {
+
+ directim_start(sess, conn, userinfo->sn);
+
+ } else if(strstr(tmpstr, "lookup")) {
+
+ aim_usersearch_address(sess, conn, "mid@auk.cx");
+
+ } else if (!strncmp(tmpstr, "reqsendmsg", 10)) {
+
+ aim_send_im(sess, conn, priv->ohcaptainmycaptain, 0, "sendmsg 7900");
+
+ } else if (!strncmp(tmpstr, "reqauth", 7)) {
+
+ aim_bos_reqservice(sess, conn, AIM_CONN_TYPE_AUTH);
+
+ } else if (!strncmp(tmpstr, "reqconfirm", 10)) {
+
+ aim_auth_reqconfirm(sess, aim_getconn_type(sess, AIM_CONN_TYPE_AUTH));
+
+ } else if (!strncmp(tmpstr, "reqemail", 8)) {
+
+ aim_auth_getinfo(sess, aim_getconn_type(sess, AIM_CONN_TYPE_AUTH), 0x0011);
+
+ } else if (!strncmp(tmpstr, "changepass", 8)) {
+
+ aim_auth_changepasswd(sess, aim_getconn_type(sess, AIM_CONN_TYPE_AUTH), "NEWPASSWORD", "OLDPASSWORD");
+
+ } else if (!strncmp(tmpstr, "setemail", 8)) {
+
+ aim_auth_setemail(sess, aim_getconn_type(sess, AIM_CONN_TYPE_AUTH), "NEWEMAILADDRESS");
+
+ } else if (!strncmp(tmpstr, "sendmsg", 7)) {
+ int i;
+
+ i = atoi(tmpstr+8);
+ if (i < 10000) {
+ char *newbuf;
+ int z;
+
+ newbuf = malloc(i+1);
+ for (z = 0; z < i; z++)
+ newbuf[z] = (z % 10)+0x30;
+ newbuf[i] = '\0';
+ aim_send_im(sess, conn, userinfo->sn, 0, newbuf);
+ free(newbuf);
+ }
+
+ } else {
+
+ dprintf("unknown command.\n");
+ aim_add_buddy(sess, conn, userinfo->sn);
+
+ }
+
+ return 0;