#ifndef OS_FORBID_H #define OS_FORBID_H enum ForbidType { FT_NONE, FT_NICK, FT_CHAN, FT_EMAIL, FT_REGISTER }; struct ForbidData : Serializable { Anope::string mask; Anope::string creator; Anope::string reason; time_t created; time_t expires; ForbidType type; ForbidData() : Serializable("ForbidData") { } void Serialize(Serialize::Data &data) const anope_override; static Serializable* Unserialize(Serializable *obj, Serialize::Data &data); }; class ForbidService : public Service { public: ForbidService(Module *m) : Service(m, "ForbidService", "forbid") { } virtual void AddForbid(ForbidData *d) = 0; virtual void RemoveForbid(ForbidData *d) = 0; virtual ForbidData *FindForbid(const Anope::string &mask, ForbidType type) = 0; virtual const std::vector &GetForbids() = 0; }; static ServiceReference forbid_service("ForbidService", "forbid"); void ForbidData::Serialize(Serialize::Data &data) const { data["mask"] << this->mask; data["creator"] << this->creator; data["reason"] << this->reason; data["created"] << this->created; data["expires"] << this->expires; data["type"] << this->type; } Serializable* ForbidData::Unserialize(Serializable *obj, Serialize::Data &data) { if (!forbid_service) return NULL; ForbidData *fb; if (obj) fb = anope_dynamic_static_cast(obj); else fb = new ForbidData; data["mask"] >> fb->mask; data["creator"] >> fb->creator; data["reason"] >> fb->reason; data["created"] >> fb->created; data["expires"] >> fb->expires; unsigned int t; data["type"] >> t; fb->type = static_cast(t); if (!obj) forbid_service->AddForbid(fb); return fb; } #endif