- return Version(1,0,0,1,VF_VENDOR);
- }
-};
-
-std::string EncodeCBan(const CBan &ban)
-{
- std::ostringstream stream;
- stream << ban.chname << " " << ban.set_by << " " << ban.set_on << " " << ban.length << " " << ban.reason;
- return stream.str();
-}
-
-CBan DecodeCBan(const std::string &data)
-{
- CBan res;
- std::istringstream stream(data);
- stream >> res.chname;
- stream >> res.set_by;
- stream >> res.set_on;
- stream >> res.length;
- res.reason = stream.str();
-
- return res;
-}
-
-bool CBanComp(const CBan &ban1, const CBan &ban2)
-{
- return ((ban1.set_on + ban1.length) < (ban2.set_on + ban2.length));
-}
-
-void ExpireBans()
-{
- while(cbans.size() && ((cbans.begin()->set_on + cbans.begin()->length) <= TIME))
- {
- cbanlist::iterator iter = cbans.begin();
-
- log(DEBUG, "m_cban.so: Ban on %s expired, removing...", iter->chname.c_str());
- WriteOpers("*** %li second CBAN on %s (%s) set %u seconds ago expired", iter->length, iter->chname.c_str(), iter->reason.c_str(), TIME - iter->set_on);
- cbans.erase(iter);
- }
-}
-
-bool IsValidChan(const char* cname)
-{
- if(!cname)
- return false;
-
- if(cname[0] != '#')
- return false;
-
- for(unsigned int i = 0; i < strlen(cname); i++)
- if((cname[i] == ' ') || (cname[i] == '\7') || (cname[i] == ','))
- return false;
-
- return true;
-}
-
-class ModuleCBanFactory : public ModuleFactory
-{
- public:
- ModuleCBanFactory()
- {