+ bool nofork;
+
+ /** If this value if true then all log
+ * messages will be output, regardless of
+ * the level given in the config file.
+ * This is set with the -debug commandline
+ * option.
+ */
+ bool forcedebug;
+
+ /** If this is true then log output will be
+ * written to the logfile. This is the default.
+ * If you put -nolog on the commandline then
+ * the logfile will not be written.
+ * This is meant to be used in conjunction with
+ * -debug for debugging without filling up the
+ * hard disk.
+ */
+ bool writelog;
+
+ /** True if we have been told to run the testsuite from the commandline,
+ * rather than entering the mainloop.
+ */
+ bool TestSuite;
+
+ /** Saved argc from startup
+ */
+ int argc;
+
+ /** Saved argv from startup
+ */
+ char** argv;
+
+ std::string startup_log;
+};
+
+class CoreExport OperInfo : public refcountbase
+{
+ public:
+ std::set<std::string> AllowedOperCommands;
+ std::set<std::string> AllowedPrivs;
+
+ /** Allowed user modes from oper classes. */
+ std::bitset<64> AllowedUserModes;
+
+ /** Allowed channel modes from oper classes. */
+ std::bitset<64> AllowedChanModes;
+
+ /** \<oper> block used for this oper-up. May be NULL. */
+ reference<ConfigTag> oper_block;
+ /** \<type> block used for this oper-up. Valid for local users, may be NULL on remote */
+ reference<ConfigTag> type_block;
+ /** \<class> blocks referenced from the \<type> block. These define individual permissions */
+ std::vector<reference<ConfigTag> > class_blocks;
+ /** Name of the oper type; i.e. the one shown in WHOIS */
+ std::string name;
+
+ /** Get a configuration item, searching in the oper, type, and class blocks (in that order) */
+ std::string getConfig(const std::string& key);
+ void init();