⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 register.c

📁 AnyQ服务端源代码(2004/10/28)源码
💻 C
字号:
/* * Jabber AIM-Transport libfaim interface **/#include "aimtrans.h"/* * XXX ICK I entered fast mode and just browsed this for errors.  Comb me again */int at_register(ati ti, jpacket jp){	xmlnode query;	char *user;	char *pass;	at_session s;	aim_session_t *ass;    xmlnode info;    xmlnode sn;    char *key;    xmlnode dup;	    switch(jpacket_subtype(jp))    {        case JPACKET__GET:            log_debug(ZONE, "[AIM] Handling register:get.\n");	        query = xmlnode_get_tag(jp->x, "query");            xmlnode_insert_cdata(xmlnode_insert_tag(query,"key"),                                 jutil_regkey(NULL,jid_full(jp->from)),-1);            sn = xmlnode_insert_tag(query,"username");            s = at_session_find_by_jid(ti, jp->from);            if(s!=NULL)            {                ass = s->ass;                xmlnode_insert_cdata(sn, ass->sn, 							         strlen(ass->sn));                xmlnode_insert_tag(query, "registered");            }            xmlnode_insert_tag(query,"password");            info = xmlnode_insert_tag(query, "instructions");            xmlnode_insert_cdata(info, "Enter your AIM screenname or ICQ UIN and the password for that account", -1);            xmlnode_put_attrib(jp->x,"type","result");            jutil_tofrom(jp->x);            break;        case JPACKET__SET:            log_debug(ZONE, "[AIM] Handling register:set.\n");            if(xmlnode_get_tag(xmlnode_get_tag(jp->x,"query"),"remove") != NULL)            {                char *from,*to;                at_buddy cur;                xmlnode sub;                log_debug(ZONE, "[AIM] Removing registration\n");                s = at_session_find_by_jid(ti, jp->from);                if(s == NULL)                {                    jutil_error(jp->x, TERROR_REGISTER);                    break;                }                s->exit_flag = 1;                xhash_walk(s->buddies, _at_buddies_unsubscribe, s);                sub = jutil_presnew(JPACKET__UNSUBSCRIBE, jid_full(jp->from),                                     NULL);                xmlnode_put_attrib(sub, "from", jid_full(s->from));                at_deliver(ti,sub);                sub = jutil_iqresult(jp->x);                at_deliver(ti,sub);                            return 1;            }            /* make sure they sent a valid */            key = xmlnode_get_tag_data(jp->iq,"key");            xmlnode_hide(xmlnode_get_tag(jp->iq,"key"));            if(key == NULL || jutil_regkey(key,jid_full(jp->from)) == NULL)            {                jutil_error(jp->x, TERROR_NOTACCEPTABLE);                break;            }            	    	query = xmlnode_get_tag(jp->x, "query");		    user = xmlnode_get_data(xmlnode_get_firstchild(                                    xmlnode_get_tag(query,"username")));            pass = xmlnode_get_data(xmlnode_get_firstchild(                                    xmlnode_get_tag(query,"password")));            xmlnode_hide(xmlnode_get_tag(jp->x,"query"));                            if(user == NULL || pass == NULL)            {                xmlnode err;			                log_debug(ZONE, "[AIM] Handling register:err.\n");                jutil_error(jp->x, TERROR_NOTACCEPTABLE);                break;            }            else            {                xmlnode logon;                logon = xmlnode_new_tag("logon");                xmlnode_put_attrib(logon, "id", user);                xmlnode_put_attrib(logon, "pass", pass);                                log_debug(ZONE, "[AT] Attempting to start a session from register");                if(at_session_create(ti, logon, jp)!=NULL)                {                    log_debug(ZONE, "[AT] Subscribing to user from register");                    at_auth_subscribe(ti, jp);                    at_xdb_set(ti, jp->to->server, jp->from, logon, AT_NS_AUTH);                    jutil_iqresult(jp->x);                    break;                } else {                    xmlnode err;			                    log_debug(ZONE, "[AT] Unable to start session");                    jutil_error(jp->x, TERROR_NOTACCEPTABLE);                    break;                }            }            break;        default:            log_debug(ZONE, "[AIM] Odd we didn't handle this jpacket for subtype %d", jpacket_subtype(jp));            return 0;    }    log_debug(ZONE, "[AIM] Sending %s as iq reply\n", xmlnode2str(jp->x));    at_deliver(ti,jp->x);	    return 1;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -