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

📄 xdata.c

📁 AnyQ服务端源代码(2004/10/28)源码
💻 C
📖 第 1 页 / 共 2 页
字号:
		{
		    room->logformat = LOG_TEXT;
		}
	    }
	}

	/* Set up room logging */
	if(room->logfile == NULL && j_strcmp(xmlnode_get_tag_data(xmlnode_get_tag(results,"?var=logging"),"value"),"1") == 0)
	{

            con_room_log_new(room);

	    if (room->logfile == NULL)
	        log_alert(NULL, "cannot open log file for room %s", jid_full(jid_fix(room->id)));
	    else
		con_room_log(room, NULL, "LOGGING STARTED");

	}

	if(room->logfile != NULL && j_strcmp(xmlnode_get_tag_data(xmlnode_get_tag(results,"?var=logging"),"value"),"0") == 0)
	{
	    con_room_log(room, NULL, "LOGGING STOPPED");
	    con_room_log_close(room);
	}

	if(room->persistant == 1)
	{
	    xdb_room_set(room);
	}
	else
	{
	    xdb_room_clear(room);
	}
    }
}

void xdata_room_config(cnr room, cnu user, int new, xmlnode query)
{
    xmlnode msg, iq, element, field, x;
    char value[4];
    
    log_debug(NAME, "[%s] Configuration form requested by %s", FZONE, jid_full(jid_fix(user->realid)));
    
    if(!is_owner(room, user->realid))
    {
        log_debug(NAME, "[%s] Configuration form request denied", FZONE);
        
        if(query != NULL)
        {
            jutil_error(query,TERROR_MUC_CONFIG);
            deliver(dpacket_new(query),NULL);
        }   
        
        return;
    }   
   
    /* Lock room for IQ Registration method. Will release lock when config received */
    if(new == 1)
         room->locked = 1;

    /* Catchall code, for creating a standalone form */
    if( query == NULL )
    {
        msg = xmlnode_new_tag("message");
        xmlnode_put_attrib(msg, "to", jid_full(jid_fix(user->realid)));
        xmlnode_put_attrib(msg,"from",jid_full(jid_fix(room->id)));
        xmlnode_put_attrib(msg,"type","normal");
        
        xmlnode_insert_cdata(xmlnode_insert_tag(msg,"subject"),"Please setup your room",-1);
        
        element = xmlnode_insert_tag(msg,"body");
        xmlnode_insert_cdata(element,"Channel ",-1);
        xmlnode_insert_cdata(element,room->id->user,-1);
        
        if(new == 1)
                xmlnode_insert_cdata(element," has been created",-1);
        else    
                xmlnode_insert_cdata(element," configuration setting",-1);

        x = xmlnode_insert_tag(msg,"x");
    }           
    else
    {
        msg = xmlnode_dup(query);
        jutil_iqresult(msg);
	iq = xmlnode_insert_tag(msg,"query");
	xmlnode_put_attrib(iq, "xmlns", NS_MUC_OWNER);
    
	x = xmlnode_insert_tag(iq,"x");
    }

    xmlnode_put_attrib(x,"xmlns",NS_DATA);
    xmlnode_put_attrib(x,"type","form");
    xmlnode_insert_cdata(xmlnode_insert_tag(x,"title"),"Room configuration",-1);

    if(new == 1)
    {
        field = xmlnode_insert_tag(x,"instructions");
        xmlnode_insert_cdata(field,"Your room \"",-1);
        xmlnode_insert_cdata(field,room->id->user,-1);
        xmlnode_insert_cdata(field,"\" has been created! The default configuration is as follows:\n", -1);

	if(room->logfile == NULL)
		xmlnode_insert_cdata(field,"- No logging\n", -1);
        else
		xmlnode_insert_cdata(field,"- logging\n", -1);

	if(room->moderated == 1)
		xmlnode_insert_cdata(field,"- Room moderation\n", -1);
	else
		xmlnode_insert_cdata(field,"- No moderation\n", -1);

	if(room->maxusers > 0)
	{
	    snprintf(value, 4, "%i", room->maxusers);
	    xmlnode_insert_cdata(field,"- Up to ", -1);
	    xmlnode_insert_cdata(field, value, -1); 
	    xmlnode_insert_cdata(field, " participants\n", -1);
	}
	else
	{
	    xmlnode_insert_cdata(field,"- Unlimited room size\n", -1);
	}

	if(room->secret == NULL)
		xmlnode_insert_cdata(field,"- No password required\n", -1);
	else
		xmlnode_insert_cdata(field,"- Password required\n", -1);

	if(room->invitation == 0)
		xmlnode_insert_cdata(field,"- No invitation required\n", -1);
	else
		xmlnode_insert_cdata(field,"- Invitation required\n", -1);

	if(room->persistant == 0)
		xmlnode_insert_cdata(field,"- Room is not persistent\n", -1);
	else
		xmlnode_insert_cdata(field,"- Room is persistent\n", -1);

	if(room->subjectlock == 0)
		xmlnode_insert_cdata(field,"- Only admins may change the subject\n", -1);
	else
		xmlnode_insert_cdata(field,"- Anyone may change the subject\n", -1);

        xmlnode_insert_cdata(field,"To accept the default configuration, click OK. To select a different configuration, please complete this form", -1);
    }
    else
	    xmlnode_insert_cdata(xmlnode_insert_tag(x,"instructions"),"Complete this form to make changes to the configuration of your room.",-1);

    xmlnode_insert_node(x,add_xdata_text(NULL, 0, "form", "config"));
    xmlnode_insert_node(x,add_xdata_text("Room Title", 1, "title", room->name));
    xmlnode_insert_node(x,add_xdata_text("Short description of room", 2, "description", room->description));

    xmlnode_insert_node(x,add_xdata_desc("The following messages are sent to legacy clients."));
    xmlnode_insert_node(x,add_xdata_text("Message for user leaving room", 1, "leave", room->note_leave));
    xmlnode_insert_node(x,add_xdata_text("Message for user joining room", 1, "join", room->note_join));
    xmlnode_insert_node(x,add_xdata_text("Message for user renaming nickname in room", 1, "rename", room->note_rename));

    xmlnode_insert_node(x,add_xdata_boolean("Allow users to change Subject?", "subject", room->subjectlock));

    field = xmlnode_insert_tag(x,"field");
    xmlnode_put_attrib(field,"type","list-single");
    xmlnode_put_attrib(field,"label","Maximum number of Participants");
    xmlnode_put_attrib(field,"var","participants");
    snprintf(value, 4, "%i", room->maxusers);
    xmlnode_insert_cdata(xmlnode_insert_tag(field, "value"), value, -1);

    element = xmlnode_insert_tag(field, "option");
    xmlnode_put_attrib(element, "label", "1");
    xmlnode_insert_cdata(xmlnode_insert_tag(element, "value"), "1", -1);
    element = xmlnode_insert_tag(field, "option");
    xmlnode_put_attrib(element, "label", "10");
    xmlnode_insert_cdata(xmlnode_insert_tag(element, "value"), "10", -1);
    element = xmlnode_insert_tag(field, "option");
    xmlnode_put_attrib(element, "label", "20");
    xmlnode_insert_cdata(xmlnode_insert_tag(element, "value"), "20", -1);
    element = xmlnode_insert_tag(field, "option");
    xmlnode_put_attrib(element, "label", "30");
    xmlnode_insert_cdata(xmlnode_insert_tag(element, "value"), "30", -1);
    element = xmlnode_insert_tag(field, "option");
    xmlnode_put_attrib(element, "label", "40");
    xmlnode_insert_cdata(xmlnode_insert_tag(element, "value"), "40", -1);
    element = xmlnode_insert_tag(field, "option");
    xmlnode_put_attrib(element, "label", "50");
    xmlnode_insert_cdata(xmlnode_insert_tag(element, "value"), "50", -1);
    element = xmlnode_insert_tag(field, "option");
    xmlnode_put_attrib(element, "label", "None");
    xmlnode_insert_cdata(xmlnode_insert_tag(element, "value"), "0", -1);

    xmlnode_insert_node(x,add_xdata_boolean("Allow users to query other users?", "privacy", room->private));
    xmlnode_insert_node(x,add_xdata_boolean("Make room publicly searchable?", "public", room->public));

    if(room->master->dynamic == 0 || is_sadmin(room->master, user->realid))
        xmlnode_insert_node(x,add_xdata_boolean("Make room persistant?", "persistant", room->persistant));

    xmlnode_insert_node(x,add_xdata_boolean("All clients considered legacy (shown messages)", "legacy", room->legacy));
    xmlnode_insert_node(x,add_xdata_boolean("Make room moderated?", "moderated", room->moderated));
    xmlnode_insert_node(x,add_xdata_desc("By default, new users entering a moderated room are only visitors"));
    xmlnode_insert_node(x,add_xdata_boolean("Default users as members?", "defaulttype", room->defaulttype));
    xmlnode_insert_node(x,add_xdata_boolean("Ban private messages?", "privmsg", room->privmsg));
    xmlnode_insert_node(x,add_xdata_boolean("Make room members only? (require invitation)", "invitation", room->invitation));
    xmlnode_insert_node(x,add_xdata_desc("By default, only admins can send invites in an invite-only room"));
    xmlnode_insert_node(x,add_xdata_boolean("Allow users to send invites?", "invites", room->invites));

    if(room->secret == NULL)
            xmlnode_insert_node(x,add_xdata_boolean("Make room password protected?", "password", 0));
    else
            xmlnode_insert_node(x,add_xdata_boolean("Make room password protected?", "password", 1));

    xmlnode_insert_node(x,add_xdata_desc("If a password is required to enter this room, you must specify the password below."));
    xmlnode_insert_node(x,add_xdata_text("Password", -1, "secret", room->secret));

    field = xmlnode_insert_tag(x,"field");
    xmlnode_put_attrib(field,"type","list-single");
    xmlnode_put_attrib(field,"label","Who may discover Real JIDs");
    xmlnode_put_attrib(field,"var","whois");
    if(room->visible == 0)
            xmlnode_insert_cdata(xmlnode_insert_tag(field, "value"),"admins", -1);
    else
            xmlnode_insert_cdata(xmlnode_insert_tag(field, "value"),"anyone", -1);

    element = xmlnode_insert_tag(field, "option");
    xmlnode_put_attrib(element, "label", "Room Owner and Admins Only");
    xmlnode_insert_cdata(xmlnode_insert_tag(element, "value"), "admins", -1);
    element = xmlnode_insert_tag(field, "option");
    xmlnode_put_attrib(element, "label", "Anyone");
    xmlnode_insert_cdata(xmlnode_insert_tag(element, "value"), "anyone", -1);
    
    if(room->logfile == NULL)
            xmlnode_insert_node(x,add_xdata_boolean("Enable logging?", "logging", 0));
    else
            xmlnode_insert_node(x,add_xdata_boolean("Enable logging?", "logging", 1));

    field = xmlnode_insert_tag(x,"field");
    xmlnode_put_attrib(field,"type","list-single");
    xmlnode_put_attrib(field,"label","Logfile format");
    xmlnode_put_attrib(field,"var","logformat");

    if(room->logformat == LOG_XML)
            xmlnode_insert_cdata(xmlnode_insert_tag(field, "value"),"xml", -1);
    else if(room->logformat == LOG_XHTML)
	    xmlnode_insert_cdata(xmlnode_insert_tag(field, "value"),"xhtml", -1);
    else
            xmlnode_insert_cdata(xmlnode_insert_tag(field, "value"),"text", -1);

    element = xmlnode_insert_tag(field, "option");
    xmlnode_put_attrib(element, "label", "XML");
    xmlnode_insert_cdata(xmlnode_insert_tag(element, "value"), "xml", -1);
    element = xmlnode_insert_tag(field, "option");
    xmlnode_put_attrib(element, "label", "XHTML");
    xmlnode_insert_cdata(xmlnode_insert_tag(element, "value"), "xhtml", -1);
    element = xmlnode_insert_tag(field, "option");
    xmlnode_put_attrib(element, "label", "Plain Text");
    xmlnode_insert_cdata(xmlnode_insert_tag(element, "value"), "text", -1);
    
    deliver(dpacket_new(msg),NULL);
}   

⌨️ 快捷键说明

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