#include // you shouldn't let your users be able to enter this and // receive synchronization reports. you have to restrict entry here. #ifndef ADMINISTRATORS # ifdef CONFIG_PATH # include CONFIG_PATH "admins.h" # endif #endif #ifdef ADMINISTRATORS # define PLACE_OWNED ADMINISTRATORS # define RESTRICTED #else # echo Warning: Sync room is not restricted. #endif #define PRIVATE #define NICKLESS #define TRUSTED #define ALLOW_EXTERNAL_LOCALS // this allows /m from ircers.. todo // but _message is irrelevant anyway here // history triggers a recursion. why i can't tell. //#define PLACE_HISTORY //#define HISTORY_METHOD "_notice_synchronize" #include #ifdef _flag_enable_request_list_user_registered msg(source, mc, data, mapping vars) { P2(("%O got %O from %O\n", ME, mc, source)) switch(mc) { case "_request_list_user_registered": if (isMember(source) || vars["_INTERNAL_trust"] > 5) { // TODO: i think we need an api for "all registered users" // which could also do caching mixed files = map(get_dir(DATA_PATH "person/", 0x01), (: return $1[..<3]; :)); mapping rv = ([ ]); if (vars["_tag"]) rv["_tag_reply"] = vars["_tag"]; rv["_list_user"] = files; sendmsg(source, "_notice_list_user_registered", 0, rv); } else { P0(("%O not trusted to do request list user, trust is %O\n", source, vars["_INTERNAL_trust"])) } break; default: return ::msg(source, mc, data, vars); } } #endif