/** Delete an XLine
* @param hostmask The xline-specific string identifying the line, e.g. "*@foo"
* @param type The type of xline
+ * @param reason The xline reason, if it is being removed successfully
* @param user The user removing the line or NULL if its the local server
* @param simulate If this is true, don't actually remove the line, just return
* @return True if the line was deleted successfully
*/
- bool DelLine(const char* hostmask, const std::string &type, User* user, bool simulate = false);
+ bool DelLine(const char* hostmask, const std::string& type, std::string& reason, User* user, bool simulate = false);
/** Registers an xline factory.
* An xline factory is a class which when given a particular xline type,
/** Expire a line given two iterators which identify it in the main map.
* @param container Iterator to the first level of entries the map
* @param item Iterator to the second level of entries in the map
+ * @param silent If true, doesn't send an expiry SNOTICE.
*/
- void ExpireLine(ContainerIter container, LookupIter item);
+ void ExpireLine(ContainerIter container, LookupIter item, bool silent = false);
/** Apply any new lines that are pending to be applied.
* This will only apply lines in the pending_lines list, to save on
*/
void InvokeStats(const std::string& type, unsigned int numeric, Stats::Context& stats);
- /** Clears any XLines which were added by the server configuration. */
- void ClearConfigLines();
+ /** Expire X-lines which were added by the server configuration and have been removed. */
+ void ExpireRemovedConfigLines(const std::string& type, const insp::flat_set<std::string>& configlines);
};