📄 xdata.c
字号:
{
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 + -