- virtual int OnUserPreJoin(userrec *user, chanrec *chan, const char *cname, std::string &privs)
- {
- ExpireBans();
-
- /* check cbans in here, and apply as necessary. */
- for(cbanlist::iterator iter = cbans.begin(); iter != cbans.end(); iter++)
- {
- if(iter->chname == cname && !user->modes[UM_OPERATOR])
- {
- // Channel is banned.
- user->WriteServ( "384 %s %s :Cannot join channel, CBANed (%s)", user->nick, cname, iter->reason.c_str());
- ServerInstance->WriteOpers("*** %s tried to join %s which is CBANed (%s)", user->nick, cname, iter->reason.c_str());
- return 1;
- }
- }
- return 0;
- }
-
- virtual void OnSyncOtherMetaData(Module* proto, void* opaque, bool displayable)
- {
- for(cbanlist::iterator iter = cbans.begin(); iter != cbans.end(); iter++)
- {
- proto->ProtoSendMetaData(opaque, TYPE_OTHER, NULL, "cban", EncodeCBan(*iter));
- }
- }
-
- virtual void OnDecodeMetaData(int target_type, void* target, const std::string &extname, const std::string &extdata)
- {
- if((target_type == TYPE_OTHER) && (extname == "cban"))
- {
- cbans.push_back(DecodeCBan(extdata));
- std::sort(cbans.begin(), cbans.end(), CBanComp);
- }
+ ServerInstance->Modules->AddService(mycommand);
+ Implementation eventlist[] = { I_OnUserPreJoin, I_OnStats };
+ ServerInstance->Modules->Attach(eventlist, this, sizeof(eventlist)/sizeof(Implementation));