X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=include%2Fconfigreader.h;h=62d757621815690640e2cc56ba09d429275d9756;hb=c5d8d3e3c6b7a5cb44572d9a9b6e5249d74cb1f7;hp=7fc60203d9116b736798206744722a35b648c74d;hpb=2be353eececbfb9ab811ac74134ed7437b641369;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/include/configreader.h b/include/configreader.h index 7fc60203d..62d757621 100644 --- a/include/configreader.h +++ b/include/configreader.h @@ -150,6 +150,8 @@ typedef ValueContainer ValueContainerChar; */ typedef ValueContainer ValueContainerInt; +typedef ValueContainer ValueContainerST; + /** A set of ValueItems used by multi-value validator functions */ typedef std::deque ValueList; @@ -226,6 +228,40 @@ struct operclass_data : public Extensible typedef std::map operclass_t; +class ServerLimits : public Extensible +{ + public: + size_t NickMax; + size_t ChanMax; + size_t MaxModes; + size_t IdentMax; + size_t MaxQuit; + size_t MaxTopic; + size_t MaxKick; + size_t MaxGecos; + size_t MaxAway; + + /* Creating the class initialises it to the defaults + * as in 1.1's ./configure script. Reading other values + * from the config will change these values. + */ + ServerLimits() : NickMax(31), ChanMax(64), MaxModes(20), IdentMax(12), MaxQuit(255), MaxTopic(307), MaxKick(255), MaxGecos(128), MaxAway(200) + { + } + + void Finalise() + { + NickMax++; + ChanMax++; + IdentMax++; + MaxQuit++; + MaxTopic++; + MaxKick++; + MaxGecos++; + MaxAway++; + } +}; + /** This class holds the bulk of the runtime configuration for the ircd. * It allows for reading new config values, accessing configuration files, * and storage of the configuration data needed to run the ircd, such as @@ -249,7 +285,7 @@ class CoreExport ServerConfig : public Extensible * configutation, appending errors to errorstream * and setting error if an error has occured. */ - bool ParseLine(ConfigDataHash &target, std::string &line, long &linenumber, std::ostringstream &errorstream); + bool ParseLine(ConfigDataHash &target, const std::string &filename, std::string &line, long &linenumber, std::ostringstream &errorstream); /** Check that there is only one of each configuration item */ @@ -275,11 +311,6 @@ class CoreExport ServerConfig : public Extensible std::map IncludedFiles; - std::map CompletedFiles; - - size_t TotalDownloaded; - size_t FileErrors; - /** Used to indicate who we announce invites to on a channel */ enum InviteAnnounceState { INVITE_ANNOUNCE_NONE, INVITE_ANNOUNCE_ALL, INVITE_ANNOUNCE_OPS, INVITE_ANNOUNCE_DYNAMIC }; @@ -295,6 +326,8 @@ class CoreExport ServerConfig : public Extensible */ ConfigDataHash config_data; + ServerLimits Limits; + /** Max number of WhoWas entries per user. */ int WhoWasGroupSize;