1 /* +------------------------------------+
\r * | Inspire Internet Relay Chat Daemon |
\r * +------------------------------------+
\r *
\r * InspIRCd: (C) 2002-2007 InspIRCd Development Team
\r * See: http://www.inspircd.org/wiki/index.php/Credits
\r *
\r * This program is free but copyrighted software; see
\r * the file COPYING for details.
\r *
\r * ---------------------------------------------------
\r */
\r\r#ifndef __SNOMASKS_H__
\r#define __SNOMASKS_H__
\r\r#include <string>
\r#include <vector>
\r#include <map>
\r#include "configreader.h"
\r#include "inspircd.h"
\r\r/** A list of snomasks which are valid, and their descriptive texts
\r */
\rtypedef std::map<char, std::string> SnoList;
\r\r/** Snomask manager handles routing of SNOMASK (usermode +n) messages to opers.
\r * Modules and the core can enable and disable snomask characters. If they do,
\r * then sending snomasks using these characters becomes possible.
\r */
\rclass CoreExport SnomaskManager : public Extensible
\r{
\r private:
\r /** Creator/owner
\r */
\r InspIRCd* ServerInstance;
\r /** Currently active snomask list
\r */
\r SnoList SnoMasks;
\r /** Set up the default (core available) snomask chars
\r */
\r void SetupDefaults();
\r public:
\r /** Create a new SnomaskManager
\r */
\r SnomaskManager(InspIRCd* Instance);
\r /** Delete SnomaskManager
\r */
\r ~SnomaskManager();
\r\r /** Enable a snomask.
\r * @param letter The snomask letter to enable. Once enabled,
\r * server notices may be routed to users with this letter in
\r * their list, and users may add this letter to their list.
\r * @param description The descriptive text sent along with any
\r * server notices, at the start of the notice, e.g. "GLOBOPS".
\r * @return True if the snomask was enabled, false if it already
\r * exists.
\r */
\r bool EnableSnomask(char letter, const std::string &description);
\r /** Disable a snomask.
\r * @param letter The snomask letter to disable.
\r * @return True if the snomask was disabled, false if it didn't
\r * exist.
\r */
\r bool DisableSnomask(char letter);
\r /** Write to all users with a given snomask.
\r * @param letter The snomask letter to write to
\r * @param text The text to send to the users
\r */
\r void WriteToSnoMask(char letter, const std::string &text);
\r /** Write to all users with a given snomask.
\r * @param letter The snomask letter to write to
\r * @param text A format string containing text to send
\r * @param ... Format arguments
\r */
\r void WriteToSnoMask(char letter, const char* text, ...);
\r /** Check if a snomask is enabled.
\r * @param letter The snomask letter to check.
\r * @return True if the snomask has been enabled.
\r */
\r bool IsEnabled(char letter);
\r};
\r\r#endif
\r