mirror of
https://github.com/anope/anope.git
synced 2026-06-12 18:54:47 +02:00
Added a new logging system
This commit is contained in:
+75
-37
@@ -201,23 +201,6 @@ serverinfo
|
||||
*/
|
||||
networkinfo
|
||||
{
|
||||
/*
|
||||
* If set, Services will output log messages to the given channel. This
|
||||
* directive is optional.
|
||||
*
|
||||
* IMPORTANT: This can be a security risk, so make certain this channel is
|
||||
* sufficiently protected from normal access.
|
||||
*/
|
||||
#logchannel = "#services"
|
||||
|
||||
/*
|
||||
* If set, Services will output all BotServ chatter to the defined logchannel
|
||||
* above. It shows all uses of BotServ ACT and SAY commands. Note that there
|
||||
* is no logging to the log file. Only works if logchannel is also defined.
|
||||
* This directive is optional.
|
||||
*/
|
||||
#logbot = yes
|
||||
|
||||
/*
|
||||
* This is the name of the network that Services will be running on.
|
||||
*/
|
||||
@@ -475,13 +458,6 @@ options
|
||||
*/
|
||||
#dumpcore = yes
|
||||
|
||||
/*
|
||||
* If set, Anope will log user connections, disconnections, and nickname
|
||||
* changes. You may have to do so in case you ever need to transmit user
|
||||
* information to your local authorities. This directive is optional.
|
||||
*/
|
||||
#logusers = yes
|
||||
|
||||
/*
|
||||
* If set, Services will only show /stats o to IRC Operators. This directive
|
||||
* is optional.
|
||||
@@ -546,12 +522,6 @@ options
|
||||
*/
|
||||
ulineservers = "stats.your.network"
|
||||
|
||||
/*
|
||||
* If set, Services will start logging to the log channel immediatly on startup.
|
||||
* This directive is optional, and has no effect if logchannel is not defined.
|
||||
*/
|
||||
#enablelogchannel = yes
|
||||
|
||||
/*
|
||||
* Default modes for mode lock, these are set on newly registered channels.
|
||||
*/
|
||||
@@ -580,6 +550,80 @@ options
|
||||
hideprivilegedcommands = no
|
||||
}
|
||||
|
||||
/*
|
||||
* [RECOMMENDED] Logging Configuration
|
||||
*
|
||||
* This section is used for configuring what is logged and where it is logged to.
|
||||
* You may have multiple log blocks if you wish. Remember to properly secure any
|
||||
* channels you choose to have Anope log to!
|
||||
*/
|
||||
log
|
||||
{
|
||||
/*
|
||||
* Target(s) to log to. If it starts with a # it is assumed to be a channel, otherwise
|
||||
* it will log to a file.
|
||||
*/
|
||||
target = "services.log"
|
||||
/* Log to both services.log and the channel #services */
|
||||
//target = "services.log #services"
|
||||
|
||||
/*
|
||||
* The source(s) to only accept log messages from. Leave commented to allow all sources.
|
||||
* This can be a users name, a channel name, one of our clients (eg, OperServ), or a server name.
|
||||
*/
|
||||
//source = ""
|
||||
|
||||
/*
|
||||
* The number of days to keep logfiles, only useful if you are logging to a file.
|
||||
* Set to 0 to never delete old logfiles.
|
||||
*
|
||||
* Note that Anope must run 24 hours a day for this feature to work correctly.
|
||||
*/
|
||||
logage = 7
|
||||
|
||||
/*
|
||||
* What types of log messages should be logged by this block. There are nine general categories:
|
||||
*
|
||||
* admin - Execution of admin commands (OperServ, etc).
|
||||
* override - A services operator using their powers to execute a command they couldn't normally.
|
||||
* commands - Execution of general commands.
|
||||
* servers - Server actions, linking, squitting, etc.
|
||||
* channels - Actions in channels such as joins, parts, kicks, etc.
|
||||
* users - User actions such as connecting, disconnecting, changing name, etc.
|
||||
* normal - Miscelanious messages.
|
||||
* rawio - Logs raw input and output from services
|
||||
* debug - Debug messages (log files can become VERY large from this).
|
||||
*
|
||||
* These options determin what messages from the categories should be logged. Wildcards are accepted, and
|
||||
* you can also negate values with a ~. For example, "operserv/* ~operserv/akill" would log all operserv
|
||||
* messages except for operserv/akill.
|
||||
*
|
||||
* Valid admin, override, and command options are:
|
||||
* pesudo-serv/commandname (eg, operserv/akill, chanserv/set)
|
||||
*
|
||||
* Valid server options are:
|
||||
* connect, quit, sync
|
||||
*
|
||||
* Valid channel options are:
|
||||
* create, destroy, join, part, kick, leave, mode
|
||||
*
|
||||
* Valid user options are:
|
||||
* connect, disconnect, quit, nick, ident, host, mode, maxusers
|
||||
*
|
||||
* Normal and debug are simple yes/no answers, there are no types for them.
|
||||
*
|
||||
* Note that modules may add their own values to these options.
|
||||
*/
|
||||
admin = "operserv/*"
|
||||
override = "chanserv/* nickserv/* memoserv/set botserv/* ~botserv/set"
|
||||
commands = "~operserv/* *"
|
||||
servers = "*"
|
||||
//channels = "~mode *"
|
||||
users = "connect disconnect nick"
|
||||
normal = yes
|
||||
rawio = no
|
||||
debug = no
|
||||
}
|
||||
|
||||
/*
|
||||
* [RECOMMENDED] Oper Access Config
|
||||
@@ -594,7 +638,7 @@ options
|
||||
*
|
||||
* Available privileges:
|
||||
* botserv/administration - Can perform certain BotServ administrative tasks
|
||||
* chanserv/access/modify - Can modify channel access lists
|
||||
* chanserv/access/modify - Can modify channel access and akick lists
|
||||
* chanserv/auspex - Can see any information with /chanserv info
|
||||
* chanserv/no-register-limit - May register an unlimited number of channels and nicknames
|
||||
* chanserv/set - Can modify the settings of any channel (incl. changing of the owner and password!)
|
||||
@@ -1301,12 +1345,6 @@ operserv
|
||||
*/
|
||||
#superadmin = yes
|
||||
|
||||
/*
|
||||
* If set, causes Services to write a message to the log every time a new user maximum is set.
|
||||
* This directive is optional.
|
||||
*/
|
||||
logmaxusers = yes
|
||||
|
||||
/*
|
||||
* These define the default expiration times for, respectively, AKILLs, CHANKILLs, SNLINEs,
|
||||
* SQLINEs, and SZLINEs.
|
||||
|
||||
@@ -11,6 +11,7 @@ opertype:commands added nickserv/saset/* and chanserv/saset/*
|
||||
options:socketengine added to choose what socket engine to use
|
||||
module:cs_set_misc and module:ns_set_misc added to replace the old set url/icq/email modules
|
||||
options:hideprivilegedcommands added to hide privileged commands from normal users
|
||||
log block added to customize logging
|
||||
|
||||
** MODIFIED CONFIGURATION DIRECTIVES **
|
||||
opertype:commands changed operserv/sgline to opserv/snline
|
||||
@@ -21,6 +22,7 @@ operserv:notifications ossgline changed ossnline
|
||||
|
||||
** DELETED CONFIGURATION DIRECTIVES **
|
||||
serverinfo:helpchannel removed because it has been readded in m_helpchan
|
||||
networkinfo:logchannel, logbot, logusers, logmaxusers, and logchannel removed because of the log block
|
||||
|
||||
Anope Version 1.9.2
|
||||
--------------------
|
||||
|
||||
@@ -23,6 +23,8 @@ enum BotFlag
|
||||
{
|
||||
BI_BEGIN,
|
||||
|
||||
/* This bot is a core bot. NickServ, ChanServ, etc */
|
||||
BI_CORE,
|
||||
/* This bot can only be assigned by IRCops */
|
||||
BI_PRIVATE,
|
||||
|
||||
|
||||
+3
-1
@@ -57,7 +57,9 @@ enum ChannelFlags
|
||||
/* Channel still exists when emptied */
|
||||
CH_PERSIST,
|
||||
/* If set the channel is syncing users (channel was just created) and it should not be deleted */
|
||||
CH_SYNCING
|
||||
CH_SYNCING,
|
||||
/* Is a services log channel */
|
||||
CH_LOGCHAN
|
||||
};
|
||||
|
||||
class CoreExport Channel : public Extensible, public Flags<ChannelFlags>
|
||||
|
||||
+5
-8
@@ -465,8 +465,6 @@ class ServerConfig
|
||||
/* The hostname if services clients */
|
||||
Anope::string ServiceHost;
|
||||
|
||||
/* Log channel */
|
||||
Anope::string LogChannel;
|
||||
/* Name of the network were on */
|
||||
Anope::string NetworkName;
|
||||
/* The max legnth of nicks */
|
||||
@@ -544,8 +542,6 @@ class ServerConfig
|
||||
bool UseStrictPrivMsg;
|
||||
/* Dump a core file if we crash */
|
||||
bool DumpCore;
|
||||
/* Log users connecting/existing/changing nicks */
|
||||
bool LogUsers;
|
||||
/* Number of seconds between consecutive uses of the REGISTER command
|
||||
* Not to be confused with NSRegDelay */
|
||||
unsigned NickRegDelay;
|
||||
@@ -555,6 +551,8 @@ class ServerConfig
|
||||
Anope::string MLock;
|
||||
/* Default botmodes on channels, defaults to ao */
|
||||
Anope::string BotModes;
|
||||
/* THe actual modes */
|
||||
std::vector<ChannelModeStatus *> BotModeList;
|
||||
/* How many times to try and reconnect to the uplink before giving up */
|
||||
unsigned MaxRetries;
|
||||
/* How long to wait between connection attempts */
|
||||
@@ -562,6 +560,9 @@ class ServerConfig
|
||||
/* If services should hide unprivileged commands */
|
||||
bool HidePrivilegedCommands;
|
||||
|
||||
/* A vector of our logfile options */
|
||||
std::vector<LogInfo *> LogInfos;
|
||||
|
||||
/* Services can use email */
|
||||
bool UseMail;
|
||||
/* Path to the sendmail executable */
|
||||
@@ -684,10 +685,6 @@ class ServerConfig
|
||||
Anope::string GlobalOnCycleUP;
|
||||
/* Super admin is allowed */
|
||||
bool SuperAdmin;
|
||||
/* Log things said through ACT/SAY */
|
||||
bool LogBot;
|
||||
/* Log when new user max is reached */
|
||||
bool LogMaxUsers;
|
||||
/* Default expiry time for akills */
|
||||
time_t AutokillExpiry;
|
||||
/* Default expiry time for chan kills */
|
||||
|
||||
+3
-12
@@ -153,8 +153,7 @@ E void hostserv_init();
|
||||
E void introduce_user(const Anope::string &user);
|
||||
E bool GetCommandLineArgument(const Anope::string &name, char shortname = 0);
|
||||
E bool GetCommandLineArgument(const Anope::string &name, char shortname, Anope::string ¶m);
|
||||
E int init_primary(int ac, char **av);
|
||||
E int init_secondary(int ac, char **av);
|
||||
E void Init(int ac, char **av);
|
||||
E Uplink *uplink_server;
|
||||
|
||||
/**** ircd.c ****/
|
||||
@@ -177,13 +176,8 @@ E const char *getstring(const NickCore *nc, int index);
|
||||
E const char *getstring(const User *nc, int index);
|
||||
E const char *getstring(int index);
|
||||
|
||||
/**** log.c ****/
|
||||
|
||||
E int open_log();
|
||||
E void close_log();
|
||||
E void log_perror(const char *fmt, ...) FORMAT(printf, 1, 2);
|
||||
E void fatal(const char *fmt, ...) FORMAT(printf, 1, 2);
|
||||
E void fatal_perror(const char *fmt, ...) FORMAT(printf, 1, 2);
|
||||
/*** logger.cpp ***/
|
||||
E void InitLogChannels(ServerConfig *);
|
||||
|
||||
/**** main.c ****/
|
||||
|
||||
@@ -193,7 +187,6 @@ E Anope::string services_dir;
|
||||
E Anope::string log_filename;
|
||||
E int debug;
|
||||
E bool readonly;
|
||||
E bool LogChan;
|
||||
E bool nofork;
|
||||
E bool nothird;
|
||||
E bool noexpire;
|
||||
@@ -297,8 +290,6 @@ E unsigned GenericChannelModes, GenericUserModes;
|
||||
E Flags<ChannelModeName> DefMLockOn;
|
||||
E Flags<ChannelModeName> DefMLockOff;
|
||||
E std::map<ChannelModeName, Anope::string> DefMLockParams;
|
||||
/* Modes to set on bots when they join the channel */
|
||||
E std::list<ChannelModeStatus *> BotModes;
|
||||
E void SetDefaultMLock(ServerConfig *config);
|
||||
|
||||
/**** nickserv.c ****/
|
||||
|
||||
@@ -0,0 +1,100 @@
|
||||
#ifndef LOGGER_H
|
||||
#define LOGGER_H
|
||||
|
||||
enum LogType
|
||||
{
|
||||
LOG_ADMIN,
|
||||
LOG_OVERRIDE,
|
||||
LOG_COMMAND,
|
||||
LOG_SERVER,
|
||||
LOG_CHANNEL,
|
||||
LOG_USER,
|
||||
LOG_NORMAL,
|
||||
LOG_TERMINAL,
|
||||
LOG_RAWIO,
|
||||
LOG_DEBUG,
|
||||
LOG_DEBUG_2,
|
||||
LOG_DEBUG_3,
|
||||
LOG_DEBUG_4
|
||||
};
|
||||
|
||||
struct LogFile
|
||||
{
|
||||
Anope::string filename;
|
||||
|
||||
public:
|
||||
std::ofstream stream;
|
||||
|
||||
LogFile(const Anope::string &name);
|
||||
Anope::string GetName() const;
|
||||
};
|
||||
|
||||
class CoreExport Log
|
||||
{
|
||||
public:
|
||||
BotInfo *bi;
|
||||
LogType Type;
|
||||
Anope::string Category;
|
||||
std::list<Anope::string> Sources;
|
||||
|
||||
std::stringstream buf;
|
||||
|
||||
Log(LogType type = LOG_NORMAL, const Anope::string &category = "", BotInfo *bi = Global);
|
||||
|
||||
/* LOG_COMMAND/OVERRIDE/ADMIN */
|
||||
Log(LogType type, User *u, Command *c, ChannelInfo *ci = NULL);
|
||||
|
||||
/* LOG_CHANNEL */
|
||||
Log(User *u, Channel *c, const Anope::string &category = "");
|
||||
|
||||
/* LOG_USER */
|
||||
explicit Log(User *u, const Anope::string &category = "");
|
||||
|
||||
/* LOG_SERVER */
|
||||
Log(Server *s, const Anope::string &category = "");
|
||||
|
||||
Log(BotInfo *b, const Anope::string &category = "");
|
||||
|
||||
~Log();
|
||||
|
||||
template<typename T> Log &operator<<(T val)
|
||||
{
|
||||
this->buf << val;
|
||||
return *this;
|
||||
}
|
||||
};
|
||||
|
||||
class CoreExport LogInfo
|
||||
{
|
||||
public:
|
||||
std::list<Anope::string> Targets;
|
||||
std::map<Anope::string, LogFile *> Logfiles;
|
||||
std::list<Anope::string> Sources;
|
||||
int LogAge;
|
||||
std::list<Anope::string> Admin;
|
||||
std::list<Anope::string> Override;
|
||||
std::list<Anope::string> Commands;
|
||||
std::list<Anope::string> Servers;
|
||||
std::list<Anope::string> Users;
|
||||
std::list<Anope::string> Channels;
|
||||
bool Normal;
|
||||
bool RawIO;
|
||||
bool Debug;
|
||||
|
||||
LogInfo(int logage, bool normal, bool rawio, bool debug);
|
||||
|
||||
~LogInfo();
|
||||
|
||||
void AddType(std::list<Anope::string> &list, const Anope::string &type);
|
||||
|
||||
bool HasType(std::list<Anope::string> &list, const Anope::string &type) const;
|
||||
|
||||
std::list<Anope::string> &GetList(LogType type);
|
||||
|
||||
bool HasType(LogType Type);
|
||||
|
||||
void ProcessMessage(const Log *l);
|
||||
};
|
||||
|
||||
#endif // LOGGER_H
|
||||
|
||||
+2
-2
@@ -66,7 +66,7 @@ if (true) \
|
||||
} \
|
||||
catch (const ModuleException &modexcept) \
|
||||
{ \
|
||||
Alog() << "Exception caught: " << modexcept.GetReason(); \
|
||||
Log() << "Exception caught: " << modexcept.GetReason(); \
|
||||
} \
|
||||
_i = safei; \
|
||||
} \
|
||||
@@ -98,7 +98,7 @@ if (true) \
|
||||
} \
|
||||
catch (const ModuleException &modexcept) \
|
||||
{ \
|
||||
Alog() << "Exception caught: " << modexcept.GetReason(); \
|
||||
Log() << "Exception caught: " << modexcept.GetReason(); \
|
||||
} \
|
||||
_i = safei; \
|
||||
} \
|
||||
|
||||
+10
-31
@@ -181,6 +181,7 @@ extern "C" void __pfnBkCheck() {}
|
||||
|
||||
/* Pull in the various bits of STL */
|
||||
#include <iostream>
|
||||
#include <fstream>
|
||||
#include <sstream>
|
||||
#include <string>
|
||||
#include <map>
|
||||
@@ -253,6 +254,14 @@ class CoreException : public std::exception
|
||||
}
|
||||
};
|
||||
|
||||
class FatalException : public CoreException
|
||||
{
|
||||
public:
|
||||
FatalException(const Anope::string &reason = "") : CoreException(reason) { }
|
||||
|
||||
virtual ~FatalException() throw() { }
|
||||
};
|
||||
|
||||
class ModuleException : public CoreException
|
||||
{
|
||||
public:
|
||||
@@ -939,6 +948,7 @@ class ServerConfig;
|
||||
#include "operserv.h"
|
||||
#include "mail.h"
|
||||
#include "servers.h"
|
||||
#include "logger.h"
|
||||
#include "config.h"
|
||||
|
||||
class CoreExport IRCDProto
|
||||
@@ -1039,10 +1049,6 @@ class CoreExport IRCDProto
|
||||
virtual void SetAutoIdentificationToken(User *u) { }
|
||||
};
|
||||
|
||||
class IRCDTS6Proto : public IRCDProto
|
||||
{
|
||||
};
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
struct Uplink
|
||||
@@ -1055,33 +1061,6 @@ struct Uplink
|
||||
Uplink(const Anope::string &_host, int _port, const Anope::string &_password, bool _ipv6) : host(_host), port(_port), password(_password), ipv6(_ipv6) { }
|
||||
};
|
||||
|
||||
enum LogLevel
|
||||
{
|
||||
LOG_NORMAL,
|
||||
LOG_TERMINAL,
|
||||
LOG_DEBUG,
|
||||
LOG_DEBUG_2,
|
||||
LOG_DEBUG_3,
|
||||
LOG_DEBUG_4
|
||||
};
|
||||
|
||||
class CoreExport Alog
|
||||
{
|
||||
private:
|
||||
std::stringstream buf;
|
||||
LogLevel Level;
|
||||
public:
|
||||
Alog(LogLevel val = LOG_NORMAL);
|
||||
~Alog();
|
||||
template<typename T> Alog &operator<<(T val)
|
||||
{
|
||||
buf << val;
|
||||
return *this;
|
||||
}
|
||||
};
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
#include "timers.h"
|
||||
|
||||
/** Timer for colliding nicks to force people off of nicknames
|
||||
|
||||
+5
-3
@@ -76,10 +76,12 @@ class CoreExport User : public Extensible
|
||||
/** Create a new user object, initialising necessary fields and
|
||||
* adds it to the hash
|
||||
*
|
||||
* @param nick The nickname of the user.
|
||||
* @param uid The unique identifier of the user.
|
||||
* @param snick The nickname of the user.
|
||||
* @param sident The username of the user
|
||||
* @param shost The hostname of the user
|
||||
* @param suid The unique identifier of the user.
|
||||
*/
|
||||
User(const Anope::string &nick, const Anope::string &uid);
|
||||
User(const Anope::string &snick, const Anope::string &sident, const Anope::string &shost, const Anope::string &suid);
|
||||
|
||||
/** Destroy a user.
|
||||
*/
|
||||
|
||||
@@ -49,8 +49,10 @@ class CommandBSAct : public Command
|
||||
|
||||
ircdproto->SendAction(ci->bi, ci->name, "%s", message.c_str());
|
||||
ci->bi->lastmsg = time(NULL);
|
||||
if (Config->LogBot && !Config->LogChannel.empty() && LogChan && !debug && findchan(Config->LogChannel))
|
||||
ircdproto->SendPrivmsg(ci->bi, Config->LogChannel, "ACT %s %s %s", u->nick.c_str(), ci->name.c_str(), message.c_str());
|
||||
|
||||
// XXX Need to be able to find if someone is overriding this.
|
||||
Log(LOG_COMMAND, u, this, ci) << message;
|
||||
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
|
||||
@@ -59,6 +59,9 @@ class CommandBSAssign : public Command
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
bool override = !check_access(u, ci, CA_ASSIGN);
|
||||
Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, this, ci) << "for " << bi->nick;
|
||||
|
||||
bi->Assign(u, ci);
|
||||
notice_lang(Config->s_BotServ, u, BOT_ASSIGN_ASSIGNED, bi->nick.c_str(), ci->name.c_str());
|
||||
return MOD_CONT;
|
||||
|
||||
@@ -53,10 +53,14 @@ class BadwordsDelCallback : public NumberList
|
||||
{
|
||||
User *u;
|
||||
ChannelInfo *ci;
|
||||
Command *c;
|
||||
unsigned Deleted;
|
||||
bool override;
|
||||
public:
|
||||
BadwordsDelCallback(User *_u, ChannelInfo *_ci, const Anope::string &list) : NumberList(list, true), u(_u), ci(_ci), Deleted(0)
|
||||
BadwordsDelCallback(User *_u, ChannelInfo *_ci, Command *_c, const Anope::string &list) : NumberList(list, true), u(_u), ci(_ci), c(_c), Deleted(0), override(false)
|
||||
{
|
||||
if (!check_access(u, ci, CA_BADWORDS) && u->Account()->HasPriv("botserv/administration"))
|
||||
this->override = true;
|
||||
}
|
||||
|
||||
~BadwordsDelCallback()
|
||||
@@ -74,6 +78,7 @@ class BadwordsDelCallback : public NumberList
|
||||
if (Number > ci->GetBadWordCount())
|
||||
return;
|
||||
|
||||
Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, c, ci) << "DEL " << ci->GetBadWord(Number -1 )->word;
|
||||
++Deleted;
|
||||
ci->EraseBadWord(Number - 1);
|
||||
}
|
||||
@@ -84,6 +89,9 @@ class CommandBSBadwords : public Command
|
||||
private:
|
||||
CommandReturn DoList(User *u, ChannelInfo *ci, const Anope::string &word)
|
||||
{
|
||||
bool override = !check_access(u, ci, CA_BADWORDS);
|
||||
Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, this, ci) << "LIST";
|
||||
|
||||
if (!ci->GetBadWordCount())
|
||||
notice_lang(Config->s_BotServ, u, BOT_BADWORDS_LIST_EMPTY, ci->name.c_str());
|
||||
else if (!word.empty() && word.find_first_not_of("1234567890,-") == Anope::string::npos)
|
||||
@@ -156,6 +164,8 @@ class CommandBSBadwords : public Command
|
||||
}
|
||||
}
|
||||
|
||||
bool override = !check_access(u, ci, CA_BADWORDS);
|
||||
Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, this, ci) << "ADD " << realword;
|
||||
ci->AddBadWord(realword, type);
|
||||
|
||||
notice_lang(Config->s_BotServ, u, BOT_BADWORDS_ADDED, realword.c_str(), ci->name.c_str());
|
||||
@@ -168,7 +178,7 @@ class CommandBSBadwords : public Command
|
||||
/* Special case: is it a number/list? Only do search if it isn't. */
|
||||
if (!word.empty() && isdigit(word[0]) && word.find_first_not_of("1234567890,-") == Anope::string::npos)
|
||||
{
|
||||
BadwordsDelCallback list(u, ci, word);
|
||||
BadwordsDelCallback list(u, ci, this, word);
|
||||
list.Process();
|
||||
}
|
||||
else
|
||||
@@ -190,6 +200,8 @@ class CommandBSBadwords : public Command
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
bool override = !check_access(u, ci, CA_BADWORDS);
|
||||
Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, this, ci) << "DEL " << badword->word;
|
||||
ci->EraseBadWord(i);
|
||||
|
||||
notice_lang(Config->s_BotServ, u, BOT_BADWORDS_DELETED, badword->word.c_str(), ci->name.c_str());
|
||||
@@ -200,6 +212,9 @@ class CommandBSBadwords : public Command
|
||||
|
||||
CommandReturn DoClear(User *u, ChannelInfo *ci)
|
||||
{
|
||||
bool override = !check_access(u, ci, CA_BADWORDS);
|
||||
Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, this, ci) << "CLEAR";
|
||||
|
||||
ci->ClearBadWords();
|
||||
notice_lang(Config->s_BotServ, u, BOT_BADWORDS_CLEAR);
|
||||
return MOD_CONT;
|
||||
|
||||
@@ -95,10 +95,13 @@ class CommandBSBot : public Command
|
||||
|
||||
if (!(bi = new BotInfo(nick, user, host, real)))
|
||||
{
|
||||
// XXX this cant happen?
|
||||
notice_lang(Config->s_BotServ, u, BOT_BOT_CREATION_FAILED);
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
Log(LOG_ADMIN, u, this) << "ADD " << bi->GetMask() << " " << bi->realname;
|
||||
|
||||
notice_lang(Config->s_BotServ, u, BOT_BOT_ADDED, bi->nick.c_str(), bi->GetIdent().c_str(), bi->host.c_str(), bi->realname.c_str());
|
||||
|
||||
FOREACH_MOD(I_OnBotCreate, OnBotCreate(bi));
|
||||
@@ -260,6 +263,7 @@ class CommandBSBot : public Command
|
||||
}
|
||||
|
||||
notice_lang(Config->s_BotServ, u, BOT_BOT_CHANGED, oldnick.c_str(), bi->nick.c_str(), bi->GetIdent().c_str(), bi->host.c_str(), bi->realname.c_str());
|
||||
Log(LOG_ADMIN, u, this) << "CHANGE " << oldnick << " to " << bi->GetMask() << " " << bi->realname;
|
||||
|
||||
FOREACH_MOD(I_OnBotChange, OnBotChange(bi));
|
||||
return MOD_CONT;
|
||||
@@ -294,6 +298,8 @@ class CommandBSBot : public Command
|
||||
XLine x(bi->nick);
|
||||
ircdproto->SendSQLineDel(&x);
|
||||
|
||||
Log(LOG_ADMIN, u, this) << "DEL " << bi->nick;
|
||||
|
||||
delete bi;
|
||||
notice_lang(Config->s_BotServ, u, BOT_BOT_DELETED, nick.c_str());
|
||||
return MOD_CONT;
|
||||
|
||||
@@ -42,6 +42,9 @@ class CommandBSKick : public Command
|
||||
notice_help(Config->s_BotServ, u, BOT_NOT_ASSIGNED);
|
||||
else
|
||||
{
|
||||
bool override = !check_access(u, ci, CA_SET);
|
||||
Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, this, ci) << option << " " << value;
|
||||
|
||||
if (option.equals_ci("BADWORDS"))
|
||||
{
|
||||
if (value.equals_ci("ON"))
|
||||
@@ -54,7 +57,7 @@ class CommandBSKick : public Command
|
||||
if (!error.empty() || ci->ttb[TTB_BADWORDS] < 0)
|
||||
{
|
||||
/* leaving the debug behind since we might want to know what these are */
|
||||
Alog(LOG_DEBUG) << "remainder of ttb " << error << " ttb " << ci->ttb[TTB_BADWORDS];
|
||||
Log(LOG_DEBUG) << "remainder of ttb " << error << " ttb " << ci->ttb[TTB_BADWORDS];
|
||||
/* reset the value back to 0 - TSL */
|
||||
ci->ttb[TTB_BADWORDS] = 0;
|
||||
notice_lang(Config->s_BotServ, u, BOT_KICK_BAD_TTB, ttb.c_str());
|
||||
@@ -85,7 +88,7 @@ class CommandBSKick : public Command
|
||||
ci->ttb[TTB_BOLDS] = convertTo<int16>(ttb, error, false);
|
||||
if (!error.empty() || ci->ttb[TTB_BOLDS] < 0)
|
||||
{
|
||||
Alog(LOG_DEBUG) << "remainder of ttb " << error << " ttb " << ci->ttb[TTB_BOLDS];
|
||||
Log(LOG_DEBUG) << "remainder of ttb " << error << " ttb " << ci->ttb[TTB_BOLDS];
|
||||
ci->ttb[TTB_BOLDS] = 0;
|
||||
notice_lang(Config->s_BotServ, u, BOT_KICK_BAD_TTB, ttb.c_str());
|
||||
return MOD_CONT;
|
||||
@@ -118,7 +121,7 @@ class CommandBSKick : public Command
|
||||
ci->ttb[TTB_CAPS] = convertTo<int16>(ttb, error, false);
|
||||
if (!error.empty() || ci->ttb[TTB_CAPS] < 0)
|
||||
{
|
||||
Alog(LOG_DEBUG) << "remainder of ttb " << error << " ttb " << ci->ttb[TTB_CAPS];
|
||||
Log(LOG_DEBUG) << "remainder of ttb " << error << " ttb " << ci->ttb[TTB_CAPS];
|
||||
ci->ttb[TTB_CAPS] = 0;
|
||||
notice_lang(Config->s_BotServ, u, BOT_KICK_BAD_TTB, ttb.c_str());
|
||||
return MOD_CONT;
|
||||
@@ -163,7 +166,7 @@ class CommandBSKick : public Command
|
||||
ci->ttb[TTB_COLORS] = convertTo<int16>(ttb, error, false);
|
||||
if (!error.empty() || ci->ttb[TTB_COLORS] < 0)
|
||||
{
|
||||
Alog(LOG_DEBUG) << "remainder of ttb " << error << " ttb " << ci->ttb[TTB_COLORS];
|
||||
Log(LOG_DEBUG) << "remainder of ttb " << error << " ttb " << ci->ttb[TTB_COLORS];
|
||||
ci->ttb[TTB_COLORS] = 0;
|
||||
notice_lang(Config->s_BotServ, u, BOT_KICK_BAD_TTB, ttb.c_str());
|
||||
return MOD_CONT;
|
||||
@@ -196,7 +199,7 @@ class CommandBSKick : public Command
|
||||
ci->ttb[TTB_FLOOD] = convertTo<int16>(ttb, error, false);
|
||||
if (!error.empty() || ci->ttb[TTB_FLOOD] < 0)
|
||||
{
|
||||
Alog(LOG_DEBUG) << "remainder of ttb " << error << " ttb " << ci->ttb[TTB_FLOOD];
|
||||
Log(LOG_DEBUG) << "remainder of ttb " << error << " ttb " << ci->ttb[TTB_FLOOD];
|
||||
ci->ttb[TTB_FLOOD] = 0;
|
||||
notice_lang(Config->s_BotServ, u, BOT_KICK_BAD_TTB, ttb.c_str());
|
||||
return MOD_CONT;
|
||||
@@ -243,7 +246,7 @@ class CommandBSKick : public Command
|
||||
ci->ttb[TTB_REPEAT] = convertTo<int16>(ttb, error, false);
|
||||
if (!error.empty() || ci->ttb[TTB_REPEAT] < 0)
|
||||
{
|
||||
Alog(LOG_DEBUG) << "remainder of ttb " << error << " ttb " << ci->ttb[TTB_REPEAT];
|
||||
Log(LOG_DEBUG) << "remainder of ttb " << error << " ttb " << ci->ttb[TTB_REPEAT];
|
||||
ci->ttb[TTB_REPEAT] = 0;
|
||||
notice_lang(Config->s_BotServ, u, BOT_KICK_BAD_TTB, ttb.c_str());
|
||||
return MOD_CONT;
|
||||
@@ -281,7 +284,7 @@ class CommandBSKick : public Command
|
||||
ci->ttb[TTB_REVERSES] = convertTo<int16>(ttb, error, false);
|
||||
if (!error.empty() || ci->ttb[TTB_REVERSES] < 0)
|
||||
{
|
||||
Alog(LOG_DEBUG) << "remainder of ttb " << error << " ttb " << ci->ttb[TTB_REVERSES];
|
||||
Log(LOG_DEBUG) << "remainder of ttb " << error << " ttb " << ci->ttb[TTB_REVERSES];
|
||||
ci->ttb[TTB_REVERSES] = 0;
|
||||
notice_lang(Config->s_BotServ, u, BOT_KICK_BAD_TTB, ttb.c_str());
|
||||
return MOD_CONT;
|
||||
@@ -311,7 +314,7 @@ class CommandBSKick : public Command
|
||||
ci->ttb[TTB_UNDERLINES] = convertTo<int16>(ttb, error, false);
|
||||
if (!error.empty() || ci->ttb[TTB_UNDERLINES] < 0)
|
||||
{
|
||||
Alog(LOG_DEBUG) << "remainder of ttb " << error << " ttb " << ci->ttb[TTB_UNDERLINES];
|
||||
Log(LOG_DEBUG) << "remainder of ttb " << error << " ttb " << ci->ttb[TTB_UNDERLINES];
|
||||
ci->ttb[TTB_UNDERLINES] = 0;
|
||||
notice_lang(Config->s_BotServ, u, BOT_KICK_BAD_TTB, ttb.c_str());
|
||||
return MOD_CONT;
|
||||
@@ -341,7 +344,7 @@ class CommandBSKick : public Command
|
||||
ci->ttb[TTB_ITALICS] = convertTo<int16>(ttb, error, false);
|
||||
if (!error.empty() || ci->ttb[TTB_ITALICS] < 0)
|
||||
{
|
||||
Alog(LOG_DEBUG) << "remainder of ttb " << error << " ttb " << ci->ttb[TTB_ITALICS];
|
||||
Log(LOG_DEBUG) << "remainder of ttb " << error << " ttb " << ci->ttb[TTB_ITALICS];
|
||||
ci->ttb[TTB_ITALICS] = 0;
|
||||
notice_lang(Config->s_BotServ, u, BOT_KICK_BAD_TTB, ttb.c_str());
|
||||
return MOD_CONT;
|
||||
|
||||
@@ -55,8 +55,10 @@ class CommandBSSay : public Command
|
||||
|
||||
ircdproto->SendPrivmsg(ci->bi, ci->name, "%s", text.c_str());
|
||||
ci->bi->lastmsg = time(NULL);
|
||||
if (Config->LogBot && !Config->LogChannel.empty() && LogChan && !debug && findchan(Config->LogChannel))
|
||||
ircdproto->SendPrivmsg(ci->bi, Config->LogChannel, "SAY %s %s %s", u->nick.c_str(), ci->name.c_str(), text.c_str());
|
||||
|
||||
// XXX need a way to find if someone is overriding this
|
||||
Log(LOG_COMMAND, u, this, ci) << text;
|
||||
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
|
||||
@@ -64,6 +64,9 @@ class CommandBSSet : public Command
|
||||
notice_lang(Config->s_BotServ, u, ACCESS_DENIED);
|
||||
else
|
||||
{
|
||||
bool override = !check_access(u, ci, CA_SET);
|
||||
Log(override ? LOG_ADMIN : LOG_COMMAND, u, this, ci) << option << value;
|
||||
|
||||
if (option.equals_ci("DONTKICKOPS"))
|
||||
{
|
||||
if (value.equals_ci("ON"))
|
||||
|
||||
@@ -36,6 +36,9 @@ class CommandBSUnassign : public Command
|
||||
notice_help(Config->s_BotServ, u, BOT_UNASSIGN_PERSISTANT_CHAN);
|
||||
else
|
||||
{
|
||||
bool override = !check_access(u, ci, CA_ASSIGN);
|
||||
Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, this, ci) << "for " << ci->bi->nick;
|
||||
|
||||
ci->bi->UnAssign(u, ci);
|
||||
notice_lang(Config->s_BotServ, u, BOT_UNASSIGN_UNASSIGNED, ci->name.c_str());
|
||||
}
|
||||
|
||||
+28
-10
@@ -108,12 +108,16 @@ class AccessDelCallback : public NumberList
|
||||
{
|
||||
User *u;
|
||||
ChannelInfo *ci;
|
||||
Command *c;
|
||||
unsigned Deleted;
|
||||
Anope::string Nicks;
|
||||
bool Denied;
|
||||
bool override;
|
||||
public:
|
||||
AccessDelCallback(User *_u, ChannelInfo *_ci, const Anope::string &numlist) : NumberList(numlist, true), u(_u), ci(_ci), Deleted(0), Denied(false)
|
||||
AccessDelCallback(User *_u, ChannelInfo *_ci, Command *_c, const Anope::string &numlist) : NumberList(numlist, true), u(_u), ci(_ci), c(_c), Deleted(0), Denied(false)
|
||||
{
|
||||
if (!check_access(u, ci, CA_ACCESS_CHANGE) && u->Account()->HasPriv("chanserv/access/modify"))
|
||||
this->override = true;
|
||||
}
|
||||
|
||||
~AccessDelCallback()
|
||||
@@ -124,7 +128,7 @@ class AccessDelCallback : public NumberList
|
||||
notice_lang(Config->s_ChanServ, u, CHAN_ACCESS_NO_MATCH, ci->name.c_str());
|
||||
else
|
||||
{
|
||||
Alog() << Config->s_ChanServ << ": " << u->GetMask() << " (level " << get_access(u, ci) << ") deleted access of user" << (Deleted == 1 ? " " : "s ") << Nicks << " on " << ci->name;
|
||||
Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, c, ci) << "for user" << (Deleted == 1 ? " " : "s ") << Nicks;
|
||||
|
||||
if (Deleted == 1)
|
||||
notice_lang(Config->s_ChanServ, u, CHAN_ACCESS_DELETED_ONE, ci->name.c_str());
|
||||
@@ -183,6 +187,8 @@ class CommandCSAccess : public Command
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
bool override = !check_access(u, ci, CA_ACCESS_CHANGE) || level >= ulev;
|
||||
|
||||
NickAlias *na = findnick(nick);
|
||||
if (!na)
|
||||
{
|
||||
@@ -214,7 +220,7 @@ class CommandCSAccess : public Command
|
||||
|
||||
FOREACH_MOD(I_OnAccessChange, OnAccessChange(ci, u, na->nc, level));
|
||||
|
||||
Alog() << Config->s_ChanServ << ": " << u->GetMask() << " (level " << ulev << ") set access level " << access->level << " to " << na->nick << " (group " << nc->display << ") on channel " << ci->name;
|
||||
Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, this, ci) << "ADD " << na->nick << "(group: " << nc->display << ") as level " << ulev;
|
||||
notice_lang(Config->s_ChanServ, u, CHAN_ACCESS_LEVEL_CHANGED, nc->display.c_str(), ci->name.c_str(), level);
|
||||
return MOD_CONT;
|
||||
}
|
||||
@@ -229,7 +235,7 @@ class CommandCSAccess : public Command
|
||||
|
||||
FOREACH_MOD(I_OnAccessAdd, OnAccessAdd(ci, u, nc, level));
|
||||
|
||||
Alog() << Config->s_ChanServ << ": " << u->GetMask() << " (level " << ulev << ") set access level " << level << " to " << na->nick << " (group " << nc->display << ") on channel " << ci->name;
|
||||
Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, this, ci) << "ADD " << na->nick << "(group: " << nc->display << ") as level " << ulev;
|
||||
notice_lang(Config->s_ChanServ, u, CHAN_ACCESS_ADDED, nc->display.c_str(), ci->name.c_str(), level);
|
||||
|
||||
return MOD_CONT;
|
||||
@@ -243,7 +249,7 @@ class CommandCSAccess : public Command
|
||||
notice_lang(Config->s_ChanServ, u, CHAN_ACCESS_LIST_EMPTY, ci->name.c_str());
|
||||
else if (isdigit(nick[0]) && nick.find_first_not_of("1234567890,-") == Anope::string::npos)
|
||||
{
|
||||
AccessDelCallback list(u, ci, nick);
|
||||
AccessDelCallback list(u, ci, this, nick);
|
||||
list.Process();
|
||||
}
|
||||
else
|
||||
@@ -274,7 +280,9 @@ class CommandCSAccess : public Command
|
||||
else
|
||||
{
|
||||
notice_lang(Config->s_ChanServ, u, CHAN_ACCESS_DELETED, access->nc->display.c_str(), ci->name.c_str());
|
||||
Alog() << Config->s_ChanServ << ": " << u->GetMask() << " (level " << get_access(u, ci) << ") deleted access of " << na->nick << " (group " << access->nc->display << ") on " << ci->name;
|
||||
bool override = !check_access(u, ci, CA_ACCESS_CHANGE);
|
||||
Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, this, ci) << "DEL " << na->nick << "(group: " << access->nc->display << ") from level " << access->level;
|
||||
|
||||
FOREACH_MOD(I_OnAccessDel, OnAccessDel(ci, u, na->nc));
|
||||
|
||||
ci->EraseAccess(i);
|
||||
@@ -375,7 +383,9 @@ class CommandCSAccess : public Command
|
||||
FOREACH_MOD(I_OnAccessClear, OnAccessClear(ci, u));
|
||||
|
||||
notice_lang(Config->s_ChanServ, u, CHAN_ACCESS_CLEAR, ci->name.c_str());
|
||||
Alog() << Config->s_ChanServ << ": " << u->GetMask() << " (level " << get_access(u, ci) << " cleared access list on " << ci->name;
|
||||
|
||||
bool override = !IsFounder(u, ci);
|
||||
Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, this, ci) << "CLEAR";
|
||||
}
|
||||
|
||||
return MOD_CONT;
|
||||
@@ -471,7 +481,10 @@ class CommandCSLevels : public Command
|
||||
{
|
||||
ci->levels[levelinfo[i].what] = level;
|
||||
FOREACH_MOD(I_OnLevelChange, OnLevelChange(u, ci, i, level));
|
||||
Alog() << Config->s_ChanServ << ": " << u->GetMask() << " set level " << levelinfo[i].name << " on channel " << ci->name << " to " << level;
|
||||
|
||||
bool override = !check_access(u, ci, CA_FOUNDER);
|
||||
Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, this, ci) << "SET " << levelinfo[i].name << " to " << level;
|
||||
|
||||
if (level == ACCESS_FOUNDER)
|
||||
notice_lang(Config->s_ChanServ, u, CHAN_LEVELS_CHANGED_FOUNDER, levelinfo[i].name.c_str(), ci->name.c_str());
|
||||
else
|
||||
@@ -498,7 +511,9 @@ class CommandCSLevels : public Command
|
||||
ci->levels[levelinfo[i].what] = ACCESS_INVALID;
|
||||
FOREACH_MOD(I_OnLevelChange, OnLevelChange(u, ci, i, levelinfo[i].what));
|
||||
|
||||
Alog() << Config->s_ChanServ << ": " << u->GetMask() << " disabled level " << levelinfo[i].name << " on channel " << ci->name;
|
||||
bool override = !check_access(u, ci, CA_FOUNDER);
|
||||
Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, this, ci) << "DISABLE " << levelinfo[i].name;
|
||||
|
||||
notice_lang(Config->s_ChanServ, u, CHAN_LEVELS_DISABLED, levelinfo[i].name.c_str(), ci->name.c_str());
|
||||
return MOD_CONT;
|
||||
}
|
||||
@@ -547,7 +562,10 @@ class CommandCSLevels : public Command
|
||||
{
|
||||
reset_levels(ci);
|
||||
FOREACH_MOD(I_OnLevelChange, OnLevelChange(u, ci, -1, 0));
|
||||
Alog() << Config->s_ChanServ << ": " << u->GetMask() << " reset levels definitions on channel " << ci->name;
|
||||
|
||||
bool override = !check_access(u, ci, CA_FOUNDER);
|
||||
Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, this, ci) << "RESET";
|
||||
|
||||
notice_lang(Config->s_ChanServ, u, CHAN_LEVELS_RESET, ci->name.c_str());
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
@@ -138,14 +138,18 @@ class AkickDelCallback : public NumberList
|
||||
{
|
||||
User *u;
|
||||
ChannelInfo *ci;
|
||||
Command *c;
|
||||
unsigned Deleted;
|
||||
public:
|
||||
AkickDelCallback(User *_u, ChannelInfo *_ci, const Anope::string &list) : NumberList(list, true), u(_u), ci(_ci), Deleted(0)
|
||||
AkickDelCallback(User *_u, ChannelInfo *_ci, Command *_c, const Anope::string &list) : NumberList(list, true), u(_u), ci(_ci), c(_c), Deleted(0)
|
||||
{
|
||||
}
|
||||
|
||||
~AkickDelCallback()
|
||||
{
|
||||
bool override = !check_access(u, ci, CA_AKICK);
|
||||
Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, c, ci) << "DEL on " << Deleted << " users";
|
||||
|
||||
if (!Deleted)
|
||||
notice_lang(Config->s_ChanServ, u, CHAN_AKICK_NO_MATCH, ci->name.c_str());
|
||||
else if (Deleted == 1)
|
||||
@@ -266,6 +270,9 @@ class CommandCSAKick : public Command
|
||||
else
|
||||
akick = ci->AddAkick(u->nick, mask, reason);
|
||||
|
||||
bool override = !check_access(u, ci, CA_AKICK);
|
||||
Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, this, ci) << "ADD " << mask << ": " << reason;
|
||||
|
||||
FOREACH_MOD(I_OnAkickAdd, OnAkickAdd(u, ci, akick));
|
||||
|
||||
notice_lang(Config->s_ChanServ, u, CHAN_AKICK_ADDED, mask.c_str(), ci->name.c_str());
|
||||
@@ -306,6 +313,9 @@ class CommandCSAKick : public Command
|
||||
return;
|
||||
}
|
||||
|
||||
bool override = !check_access(u, ci, CA_AKICK);
|
||||
Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, this, ci) << "STICK " << akick->mask;
|
||||
|
||||
akick->SetFlag(AK_STUCK);
|
||||
notice_lang(Config->s_ChanServ, u, CHAN_AKICK_STUCK, akick->mask.c_str(), ci->name.c_str());
|
||||
|
||||
@@ -346,6 +356,9 @@ class CommandCSAKick : public Command
|
||||
return;
|
||||
}
|
||||
|
||||
bool override = !check_access(u, ci, CA_AKICK);
|
||||
Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, this, ci) << "UNSTICK " << akick->mask;
|
||||
|
||||
akick->UnsetFlag(AK_STUCK);
|
||||
notice_lang(Config->s_ChanServ, u, CHAN_AKICK_UNSTUCK, akick->mask.c_str(), ci->name.c_str());
|
||||
}
|
||||
@@ -365,7 +378,7 @@ class CommandCSAKick : public Command
|
||||
/* Special case: is it a number/list? Only do search if it isn't. */
|
||||
if (isdigit(mask[0]) && mask.find_first_not_of("1234567890,-") == Anope::string::npos)
|
||||
{
|
||||
AkickDelCallback list(u, ci, mask);
|
||||
AkickDelCallback list(u, ci, this, mask);
|
||||
list.Process();
|
||||
}
|
||||
else
|
||||
@@ -387,6 +400,9 @@ class CommandCSAKick : public Command
|
||||
return;
|
||||
}
|
||||
|
||||
bool override = !check_access(u, ci, CA_AKICK);
|
||||
Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, this, ci) << "DEL " << mask;
|
||||
|
||||
ci->EraseAkick(i);
|
||||
|
||||
notice_lang(Config->s_ChanServ, u, CHAN_AKICK_DELETED, mask.c_str(), ci->name.c_str());
|
||||
@@ -397,6 +413,9 @@ class CommandCSAKick : public Command
|
||||
{
|
||||
Anope::string mask = params.size() > 2 ? params[2] : "";
|
||||
|
||||
bool override = !check_access(u, ci, CA_AKICK);
|
||||
Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, this, ci) << "LIST";
|
||||
|
||||
if (!ci->GetAkickCount())
|
||||
{
|
||||
notice_lang(Config->s_ChanServ, u, CHAN_AKICK_LIST_EMPTY, ci->name.c_str());
|
||||
@@ -442,6 +461,9 @@ class CommandCSAKick : public Command
|
||||
{
|
||||
Anope::string mask = params.size() > 2 ? params[2] : "";
|
||||
|
||||
bool override = !check_access(u, ci, CA_AKICK);
|
||||
Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, this, ci) << "VIEW";
|
||||
|
||||
if (!ci->GetAkickCount())
|
||||
{
|
||||
notice_lang(Config->s_ChanServ, u, CHAN_AKICK_LIST_EMPTY, ci->name.c_str());
|
||||
@@ -502,11 +524,17 @@ class CommandCSAKick : public Command
|
||||
++count;
|
||||
}
|
||||
|
||||
bool override = !check_access(u, ci, CA_AKICK);
|
||||
Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, this, ci) << "ENFORCE, affects " << count << " users";
|
||||
|
||||
notice_lang(Config->s_ChanServ, u, CHAN_AKICK_ENFORCE_DONE, ci->name.c_str(), count);
|
||||
}
|
||||
|
||||
void DoClear(User *u, ChannelInfo *ci)
|
||||
{
|
||||
bool override = !check_access(u, ci, CA_AKICK);
|
||||
Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, this, ci) << "CLEAR";
|
||||
|
||||
ci->ClearAkick();
|
||||
notice_lang(Config->s_ChanServ, u, CHAN_AKICK_CLEAR, ci->name.c_str());
|
||||
}
|
||||
|
||||
@@ -56,8 +56,11 @@ class CommandCSBan : public Command
|
||||
else
|
||||
{
|
||||
Anope::string mask;
|
||||
|
||||
get_idealban(ci, u2, mask);
|
||||
|
||||
// XXX need a way to detect if someone is overriding
|
||||
Log(LOG_COMMAND, u, this, ci) << "for " << mask;
|
||||
|
||||
c->SetMode(NULL, CMODE_BAN, mask);
|
||||
|
||||
/* We still allow host banning while not allowing to kick */
|
||||
|
||||
@@ -34,9 +34,13 @@ class CommandCSClear : public Command
|
||||
ChannelMode *halfop = ModeManager::FindChannelModeByName(CMODE_HALFOP);
|
||||
ChannelMode *voice = ModeManager::FindChannelModeByName(CMODE_VOICE);
|
||||
|
||||
if (c)
|
||||
// XXX
|
||||
Log(LOG_COMMAND, u, this, ci) << what;
|
||||
|
||||
if (!c)
|
||||
notice_lang(Config->s_ChanServ, u, CHAN_X_NOT_IN_USE, chan.c_str());
|
||||
else if (!u || !check_access(u, ci, CA_CLEAR))
|
||||
else if (!check_access(u, ci, CA_CLEAR))
|
||||
notice_lang(Config->s_ChanServ, u, ACCESS_DENIED);
|
||||
else if (what.equals_ci("bans"))
|
||||
{
|
||||
|
||||
@@ -53,8 +53,6 @@ class CommandCSDrop : public Command
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
int level = get_access(u, ci);
|
||||
|
||||
if (ci->c && ModeManager::FindChannelModeByName(CMODE_REGISTERED))
|
||||
ci->c->RemoveMode(NULL, CMODE_REGISTERED, "", false);
|
||||
|
||||
@@ -64,16 +62,13 @@ class CommandCSDrop : public Command
|
||||
ircdproto->SendSQLineDel(&x);
|
||||
}
|
||||
|
||||
Alog() << Config->s_ChanServ << ": Channel " << ci->name << " dropped by " << u->GetMask() << " (founder: " << (ci->founder ? ci->founder->display : "(none)") << ")";
|
||||
bool override = (ci->HasFlag(CI_SECUREFOUNDER) ? !IsFounder(u, ci) : !check_access(u, ci, CA_FOUNDER));
|
||||
Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, this, ci) << "founder: " << (ci->founder ? ci->founder->display : "none");
|
||||
if (override)
|
||||
ircdproto->SendGlobops(ChanServ, "\2%s\2 used DROP on channel \2%s\2", u->nick.c_str(), ci->name.c_str());
|
||||
|
||||
delete ci;
|
||||
|
||||
/* We must make sure that the Services admin has not normally the right to
|
||||
* drop the channel before issuing the wallops.
|
||||
*/
|
||||
if (Config->WallDrop && (level < ACCESS_FOUNDER || (!IsFounder(u, ci) && ci->HasFlag(CI_SECUREFOUNDER))))
|
||||
ircdproto->SendGlobops(ChanServ, "\2%s\2 used DROP on channel \2%s\2", u->nick.c_str(), chan.c_str());
|
||||
|
||||
notice_lang(Config->s_ChanServ, u, CHAN_DROPPED, chan.c_str());
|
||||
|
||||
FOREACH_MOD(I_OnChanDrop, OnChanDrop(chan));
|
||||
|
||||
@@ -53,7 +53,8 @@ class CommandCSForbid : public Command
|
||||
ci = new ChannelInfo(chan);
|
||||
if (!ci)
|
||||
{
|
||||
Alog() << Config->s_ChanServ << ": Valid FORBID for " << ci->name << " by " << u->nick << " failed";
|
||||
// this cant happen?
|
||||
//Alog() << Config->s_ChanServ << ": Valid FORBID for " << ci->name << " by " << u->nick << " failed";
|
||||
notice_lang(Config->s_ChanServ, u, CHAN_FORBID_FAILED, chan.c_str());
|
||||
return MOD_CONT;
|
||||
}
|
||||
@@ -80,16 +81,16 @@ class CommandCSForbid : public Command
|
||||
}
|
||||
}
|
||||
|
||||
if (Config->WallForbid)
|
||||
ircdproto->SendGlobops(ChanServ, "\2%s\2 used FORBID on channel \2%s\2", u->nick.c_str(), ci->name.c_str());
|
||||
|
||||
if (ircd->chansqline)
|
||||
{
|
||||
XLine x(chan, "Forbidden");
|
||||
ircdproto->SendSQLine(&x);
|
||||
}
|
||||
|
||||
Alog() << Config->s_ChanServ << ": " << u->nick << " set FORBID for channel " << ci->name;
|
||||
if (Config->WallForbid)
|
||||
ircdproto->SendGlobops(ChanServ, "\2%s\2 used FORBID on channel \2%s\2", u->nick.c_str(), ci->name.c_str());
|
||||
Log(LOG_ADMIN, u, this, ci) << (!ci->forbidreason.empty() ? ci->forbidreason : "No reason");
|
||||
|
||||
notice_lang(Config->s_ChanServ, u, CHAN_FORBID_SUCCEEDED, chan.c_str());
|
||||
|
||||
FOREACH_MOD(I_OnChanForbidden, OnChanForbidden(ci));
|
||||
|
||||
@@ -40,6 +40,9 @@ class CommandCSGetKey : public Command
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
bool override = !check_access(u, ci, CA_GETKEY);
|
||||
Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, this, ci);
|
||||
|
||||
notice_lang(Config->s_ChanServ, u, CHAN_GETKEY_KEY, chan.c_str(), key.c_str());
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
@@ -35,7 +35,7 @@ class CommandCSInvite : public Command
|
||||
|
||||
ci = c->ci;
|
||||
|
||||
if (!u || !check_access(u, ci, CA_INVITE))
|
||||
if (!check_access(u, ci, CA_INVITE))
|
||||
{
|
||||
notice_lang(Config->s_ChanServ, u, ACCESS_DENIED);
|
||||
return MOD_CONT;
|
||||
@@ -52,6 +52,9 @@ class CommandCSInvite : public Command
|
||||
}
|
||||
}
|
||||
|
||||
// XXX need a check for override...
|
||||
Log(LOG_COMMAND, u, this, ci) << "for " << u2->nick;
|
||||
|
||||
if (c->FindUser(u2))
|
||||
notice_lang(Config->s_ChanServ, u, CHAN_INVITE_ALREADY_IN, c->name.c_str());
|
||||
else
|
||||
|
||||
@@ -51,6 +51,9 @@ class CommandCSKick : public Command
|
||||
notice_lang(Config->s_ChanServ, u, NICK_X_NOT_ON_CHAN, u2->nick.c_str(), c->name.c_str());
|
||||
else
|
||||
{
|
||||
// XXX
|
||||
Log(LOG_COMMAND, u, this, ci) << "for " << u2->nick;
|
||||
|
||||
if (ci->HasFlag(CI_SIGNKICK) || (ci->HasFlag(CI_SIGNKICK_LEVEL) && !check_access(u, ci, CA_SIGNKICK)))
|
||||
ci->c->Kick(whosends(ci), u2, "%s (%s)", reason.c_str(), u->nick.c_str());
|
||||
else
|
||||
|
||||
+16
-22
@@ -15,6 +15,7 @@
|
||||
|
||||
/** do_util: not a command, but does the job of others
|
||||
* @param u The user doing the command
|
||||
* @param com The command calling this function
|
||||
* @param cm A channel mode class
|
||||
* @param chan The channel its being set on
|
||||
* @param nick The nick the modes being set on
|
||||
@@ -24,22 +25,14 @@
|
||||
* @param name The name, eg "OP" or "HALFOP"
|
||||
* @param notice Flag required on a channel to send a notice
|
||||
*/
|
||||
static CommandReturn do_util(User *u, ChannelMode *cm, const Anope::string &chan, const Anope::string &nick, bool set, int level, int levelself, const Anope::string &name, ChannelInfoFlag notice)
|
||||
static CommandReturn do_util(User *u, Command *com, ChannelMode *cm, const Anope::string &chan, const Anope::string &nick, bool set, int level, int levelself, const Anope::string &name, ChannelInfoFlag notice)
|
||||
{
|
||||
Channel *c = findchan(chan);
|
||||
ChannelInfo *ci;
|
||||
ChannelInfo *ci = c ? c->ci : NULL;
|
||||
User *u2;
|
||||
Anope::string realnick = nick;
|
||||
|
||||
int is_same;
|
||||
|
||||
if (realnick.empty())
|
||||
realnick = u->nick;
|
||||
|
||||
is_same = u->nick.equals_cs(realnick) ? 1 : u->nick.equals_ci(realnick);
|
||||
|
||||
if (c)
|
||||
ci = c->ci;
|
||||
Anope::string realnick = (!nick.empty() ? nick : u->nick);
|
||||
bool is_same = u->nick.equals_ci(realnick);
|
||||
|
||||
if (!c)
|
||||
notice_lang(Config->s_ChanServ, u, CHAN_X_NOT_IN_USE, chan.c_str());
|
||||
@@ -60,6 +53,7 @@ static CommandReturn do_util(User *u, ChannelMode *cm, const Anope::string &chan
|
||||
else
|
||||
c->RemoveMode(NULL, cm, u2->nick);
|
||||
|
||||
Log(LOG_COMMAND, u, com, ci) << "for " << u2->nick;
|
||||
if (notice && ci->HasFlag(notice))
|
||||
ircdproto->SendMessage(whosends(ci), c->name, "%s command used for %s by %s", name.c_str(), u2->nick.c_str(), u->nick.c_str());
|
||||
}
|
||||
@@ -78,7 +72,7 @@ class CommandCSOp : public Command
|
||||
{
|
||||
ChannelMode *cm = ModeManager::FindChannelModeByName(CMODE_OP);
|
||||
|
||||
return do_util(u, cm, !params.empty() ? params[0] : "", params.size() > 1 ? params[1] : "", true, CA_OPDEOP, CA_OPDEOPME, "OP", CI_OPNOTICE);
|
||||
return do_util(u, this, cm, params[0], params.size() > 1 ? params[1] : "", true, CA_OPDEOP, CA_OPDEOPME, "OP", CI_OPNOTICE);
|
||||
}
|
||||
|
||||
bool OnHelp(User *u, const Anope::string &subcommand)
|
||||
@@ -109,7 +103,7 @@ class CommandCSDeOp : public Command
|
||||
{
|
||||
ChannelMode *cm = ModeManager::FindChannelModeByName(CMODE_OP);
|
||||
|
||||
return do_util(u, cm, !params.empty() ? params[0] : "", params.size() > 1 ? params[1] : "", false, CA_OPDEOP, CA_OPDEOPME, "DEOP", CI_OPNOTICE);
|
||||
return do_util(u, this, cm, params[0], params.size() > 1 ? params[1] : "", false, CA_OPDEOP, CA_OPDEOPME, "DEOP", CI_OPNOTICE);
|
||||
}
|
||||
|
||||
bool OnHelp(User *u, const Anope::string &subcommand)
|
||||
@@ -140,7 +134,7 @@ class CommandCSVoice : public Command
|
||||
{
|
||||
ChannelMode *cm = ModeManager::FindChannelModeByName(CMODE_VOICE);
|
||||
|
||||
return do_util(u, cm, !params.empty() ? params[0] : "", params.size() > 1 ? params[1] : "", true, CA_VOICE, CA_VOICEME, "VOICE", CI_BEGIN);
|
||||
return do_util(u, this, cm, params[0], params.size() > 1 ? params[1] : "", true, CA_VOICE, CA_VOICEME, "VOICE", CI_BEGIN);
|
||||
}
|
||||
|
||||
bool OnHelp(User *u, const Anope::string &subcommand)
|
||||
@@ -171,7 +165,7 @@ class CommandCSDeVoice : public Command
|
||||
{
|
||||
ChannelMode *cm = ModeManager::FindChannelModeByName(CMODE_VOICE);
|
||||
|
||||
return do_util(u, cm, !params.empty() ? params[0] : "", params.size() > 1 ? params[1] : "", false, CA_VOICE, CA_VOICEME, "DEVOICE", CI_BEGIN);
|
||||
return do_util(u, this, cm, params[0], params.size() > 1 ? params[1] : "", false, CA_VOICE, CA_VOICEME, "DEVOICE", CI_BEGIN);
|
||||
}
|
||||
|
||||
bool OnHelp(User *u, const Anope::string &subcommand)
|
||||
@@ -207,7 +201,7 @@ class CommandCSHalfOp : public Command
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
return do_util(u, cm, !params.empty() ? params[0] : "", params.size() > 1 ? params[1] : "", true, CA_HALFOP, CA_HALFOPME, "HALFOP", CI_BEGIN);
|
||||
return do_util(u, this, cm, params[0], params.size() > 1 ? params[1] : "", true, CA_HALFOP, CA_HALFOPME, "HALFOP", CI_BEGIN);
|
||||
}
|
||||
|
||||
bool OnHelp(User *u, const Anope::string &subcommand)
|
||||
@@ -241,7 +235,7 @@ class CommandCSDeHalfOp : public Command
|
||||
if (!cm)
|
||||
return MOD_CONT;
|
||||
|
||||
return do_util(u, cm, !params.empty() ? params[0] : "", params.size() > 1 ? params[1] : "", false, CA_HALFOP, CA_HALFOPME, "DEHALFOP", CI_BEGIN);
|
||||
return do_util(u, this, cm, params[0], params.size() > 1 ? params[1] : "", false, CA_HALFOP, CA_HALFOPME, "DEHALFOP", CI_BEGIN);
|
||||
}
|
||||
|
||||
bool OnHelp(User *u, const Anope::string &subcommand)
|
||||
@@ -275,7 +269,7 @@ class CommandCSProtect : public Command
|
||||
if (!cm)
|
||||
return MOD_CONT;
|
||||
|
||||
return do_util(u, cm, !params.empty() ? params[0] : "", params.size() > 1 ? params[1] : "", true, CA_PROTECT, CA_PROTECTME, "PROTECT", CI_BEGIN);
|
||||
return do_util(u, this, cm, params[0], params.size() > 1 ? params[1] : "", true, CA_PROTECT, CA_PROTECTME, "PROTECT", CI_BEGIN);
|
||||
}
|
||||
|
||||
bool OnHelp(User *u, const Anope::string &subcommand)
|
||||
@@ -309,7 +303,7 @@ class CommandCSDeProtect : public Command
|
||||
if (!cm)
|
||||
return MOD_CONT;
|
||||
|
||||
return do_util(u, cm, !params.empty() ? params[0] : "", params.size() > 1 ? params[1] : "", false, CA_PROTECT, CA_PROTECTME, "DEPROTECT", CI_BEGIN);
|
||||
return do_util(u, this, cm, params[0], params.size() > 1 ? params[1] : "", false, CA_PROTECT, CA_PROTECTME, "DEPROTECT", CI_BEGIN);
|
||||
}
|
||||
|
||||
bool OnHelp(User *u, const Anope::string &subcommand)
|
||||
@@ -343,7 +337,7 @@ class CommandCSOwner : public Command
|
||||
if (!cm)
|
||||
return MOD_CONT;
|
||||
|
||||
return do_util(u, cm, !params.empty() ? params[0] : "", params.size() > 1 ? params[1] : "", true, CA_OWNER, CA_OWNERME, "OWNER", CI_BEGIN);
|
||||
return do_util(u, this, cm, params[0], params.size() > 1 ? params[1] : "", true, CA_OWNER, CA_OWNERME, "OWNER", CI_BEGIN);
|
||||
}
|
||||
|
||||
bool OnHelp(User *u, const Anope::string &subcommand)
|
||||
@@ -377,7 +371,7 @@ class CommandCSDeOwner : public Command
|
||||
if (!cm)
|
||||
return MOD_CONT;
|
||||
|
||||
return do_util(u, cm, !params.empty() ? params[0] : "", params.size() > 1 ? params[1] : "", false, CA_OWNER, CA_OWNERME, "DEOWNER", CI_BEGIN);
|
||||
return do_util(u, this, cm, params[0], params.size() > 1 ? params[1] : "", false, CA_OWNER, CA_OWNERME, "DEOWNER", CI_BEGIN);
|
||||
}
|
||||
|
||||
bool OnHelp(User *u, const Anope::string &subcommand)
|
||||
|
||||
@@ -49,16 +49,12 @@ class CommandCSRegister : public Command
|
||||
notice_lang(Config->s_ChanServ, u, u->Account()->channelcount > Config->CSMaxReg ? CHAN_EXCEEDED_CHANNEL_LIMIT : CHAN_REACHED_CHANNEL_LIMIT, Config->CSMaxReg);
|
||||
else if (!(ci = new ChannelInfo(chan)))
|
||||
{
|
||||
Alog() << Config->s_ChanServ << ": makechan() failed for REGISTER " << chan;
|
||||
// not possible ?
|
||||
//Alog() << Config->s_ChanServ << ": makechan() failed for REGISTER " << chan;
|
||||
notice_lang(Config->s_ChanServ, u, CHAN_REGISTRATION_FAILED);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (c)
|
||||
{
|
||||
c->ci = ci;
|
||||
ci->c = c;
|
||||
}
|
||||
ci->founder = u->Account();
|
||||
ci->desc = desc;
|
||||
|
||||
@@ -73,7 +69,7 @@ class CommandCSRegister : public Command
|
||||
|
||||
ci->bi = NULL;
|
||||
++ci->founder->channelcount;
|
||||
Alog() << Config->s_ChanServ << ": Channel '" << chan << "' registered by " << u->GetMask();
|
||||
Log(LOG_COMMAND, u, this, ci);
|
||||
notice_lang(Config->s_ChanServ, u, CHAN_REGISTERED, chan.c_str(), u->nick.c_str());
|
||||
|
||||
/* Implement new mode lock */
|
||||
|
||||
@@ -40,9 +40,11 @@ class CommandCSSASet : public Command
|
||||
|
||||
if (c)
|
||||
{
|
||||
Anope::string cmdparams = cs_findchan(params[0])->name;
|
||||
ChannelInfo *ci = cs_findchan(params[0]);
|
||||
Anope::string cmdparams = ci->name;
|
||||
for (std::vector<Anope::string>::const_iterator it = params.begin() + 2, it_end = params.end(); it != it_end; ++it)
|
||||
cmdparams += " " + *it;
|
||||
Log(LOG_ADMIN, u, this, ci) << params[1] << " " << cmdparams;
|
||||
mod_run_cmd(ChanServ, u, c, params[1], cmdparams);
|
||||
}
|
||||
else
|
||||
|
||||
@@ -45,7 +45,8 @@ class CommandCSSet : public Command
|
||||
|
||||
if (c)
|
||||
{
|
||||
Anope::string cmdparams = cs_findchan(params[0])->name;
|
||||
ChannelInfo *ci = cs_findchan(params[0]);
|
||||
Anope::string cmdparams = ci->name;
|
||||
for (std::vector<Anope::string>::const_iterator it = params.begin() + 2, it_end = params.end(); it != it_end; ++it)
|
||||
cmdparams += " " + *it;
|
||||
mod_run_cmd(ChanServ, u, c, params[1], cmdparams);
|
||||
|
||||
@@ -53,7 +53,7 @@ class CommandCSSetFounder : public Command
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
Alog() << Config->s_ChanServ << ": Changing founder of " << ci->name << " from " << ci->founder->display << " to " << nc->display << " by " << u->GetMask();
|
||||
Log(!this->permission.empty() ? LOG_ADMIN : LOG_COMMAND, u, this, ci) << "to change the founder to " << nc->display;
|
||||
|
||||
/* Founder and successor must not be the same group */
|
||||
if (nc == ci->successor)
|
||||
|
||||
@@ -58,7 +58,7 @@ class CommandCSSetSuccessor : public Command
|
||||
else
|
||||
nc = NULL;
|
||||
|
||||
Alog() << Config->s_ChanServ << ": Changing successor of " << ci->name << " from " << (ci->successor ? ci->successor->display : "none") << " to " << (nc ? nc->display : "none") << " by " << u->GetMask();
|
||||
Log(!this->permission.empty() ? LOG_ADMIN : LOG_COMMAND, u, this, ci) << "to change the successor from " << (ci->successor ? ci->successor->display : "none") << " to " << (nc ? nc->display : "none");
|
||||
|
||||
ci->successor = nc;
|
||||
|
||||
|
||||
@@ -64,14 +64,14 @@ class CommandCSSetXOP : public Command
|
||||
ci->SetFlag(CI_XOP);
|
||||
}
|
||||
|
||||
Alog() << Config->s_ChanServ << ": " << u->GetMask() << " enabled XOP for " << ci->name;
|
||||
Log(LOG_COMMAND, u, this, ci) << "to enable XOP";
|
||||
notice_lang(Config->s_ChanServ, u, CHAN_SET_XOP_ON, ci->name.c_str());
|
||||
}
|
||||
else if (params[1].equals_ci("OFF"))
|
||||
{
|
||||
ci->UnsetFlag(CI_XOP);
|
||||
|
||||
Alog() << Config->s_ChanServ << ": " << u->GetMask() << " disabled XOP for " << ci->name;
|
||||
Log(LOG_COMMAND, u, this, ci) << "to disable XOP";
|
||||
notice_lang(Config->s_ChanServ, u, CHAN_SET_XOP_OFF, ci->name.c_str());
|
||||
}
|
||||
else
|
||||
|
||||
@@ -74,14 +74,15 @@ class CommandCSSuspend : public Command
|
||||
if (Config->WallForbid)
|
||||
ircdproto->SendGlobops(ChanServ, "\2%s\2 used SUSPEND on channel \2%s\2", u->nick.c_str(), ci->name.c_str());
|
||||
|
||||
Alog() << Config->s_ChanServ << ": " << u->GetMask() << " set SUSPEND for channel " << ci->name;
|
||||
Log(LOG_ADMIN, u, this, ci) << (!reason.empty() ? reason : "No reason");
|
||||
notice_lang(Config->s_ChanServ, u, CHAN_SUSPEND_SUCCEEDED, chan.c_str());
|
||||
|
||||
FOREACH_MOD(I_OnChanSuspend, OnChanSuspend(ci));
|
||||
}
|
||||
else
|
||||
{
|
||||
Alog() << Config->s_ChanServ << ": Valid SUSPEND for " << ci->name << " by " << u->GetMask() << " failed";
|
||||
// cant happen?
|
||||
//Alog() << Config->s_ChanServ << ": Valid SUSPEND for " << ci->name << " by " << u->GetMask() << " failed";
|
||||
notice_lang(Config->s_ChanServ, u, CHAN_SUSPEND_FAILED, chan.c_str());
|
||||
}
|
||||
return MOD_CONT;
|
||||
@@ -134,6 +135,8 @@ class CommandCSUnSuspend : public Command
|
||||
|
||||
if (ci)
|
||||
{
|
||||
Log(LOG_ADMIN, u, this, ci) << " was suspended for: " << (!ci->forbidreason.empty() ? ci->forbidreason : "No reason");
|
||||
|
||||
ci->UnsetFlag(CI_SUSPENDED);
|
||||
ci->forbidreason.clear();
|
||||
ci->forbidby.clear();
|
||||
@@ -141,14 +144,14 @@ class CommandCSUnSuspend : public Command
|
||||
if (Config->WallForbid)
|
||||
ircdproto->SendGlobops(ChanServ, "\2%s\2 used UNSUSPEND on channel \2%s\2", u->nick.c_str(), ci->name.c_str());
|
||||
|
||||
Alog() << Config->s_ChanServ << ": " << u->GetMask() << " set UNSUSPEND for channel " << ci->name;
|
||||
notice_lang(Config->s_ChanServ, u, CHAN_UNSUSPEND_SUCCEEDED, chan.c_str());
|
||||
|
||||
FOREACH_MOD(I_OnChanUnsuspend, OnChanUnsuspend(ci));
|
||||
}
|
||||
else
|
||||
{
|
||||
Alog() << Config->s_ChanServ << ": Valid UNSUSPEND for " << chan << " by " << u->nick << " failed";
|
||||
// cant happen ?
|
||||
//Alog() << Config->s_ChanServ << ": Valid UNSUSPEND for " << chan << " by " << u->nick << " failed";
|
||||
notice_lang(Config->s_ChanServ, u, CHAN_UNSUSPEND_FAILED, chan.c_str());
|
||||
}
|
||||
return MOD_CONT;
|
||||
|
||||
@@ -25,11 +25,8 @@ class CommandCSTopic : public Command
|
||||
Anope::string chan = params[0];
|
||||
Anope::string topic = params.size() > 1 ? params[1] : "";
|
||||
|
||||
Channel *c;
|
||||
ChannelInfo *ci;
|
||||
|
||||
if ((c = findchan(chan)))
|
||||
ci = c->ci;
|
||||
ChannelInfo *ci = cs_findchan(params[0]);
|
||||
Channel *c = ci->c;
|
||||
|
||||
if (!c)
|
||||
notice_lang(Config->s_ChanServ, u, CHAN_X_NOT_IN_USE, chan.c_str());
|
||||
@@ -48,9 +45,10 @@ class CommandCSTopic : public Command
|
||||
else
|
||||
c->topic_time = ci->last_topic_time;
|
||||
|
||||
if (!check_access(u, ci, CA_TOPIC))
|
||||
Alog() << Config->s_NickServ << ": " << u->GetMask() << " changed topic of " << c->name << " as services admin.";
|
||||
if (ircd->join2set && whosends(ci) == ChanServ)
|
||||
bool override = !check_access(u, ci, CA_TOPIC);
|
||||
Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, this, ci) << "to change the topic to " << (!topic.empty() ? topic : "No topic");
|
||||
|
||||
if (ircd->join2set && whosends(ci) == ChanServ) // XXX what if the service bot is chanserv?
|
||||
{
|
||||
ChanServ->Join(c);
|
||||
ircdproto->SendMode(NULL, c, "+o %s", Config->s_ChanServ.c_str()); // XXX
|
||||
|
||||
+16
-6
@@ -150,11 +150,13 @@ class XOPDelCallback : public NumberList
|
||||
{
|
||||
User *u;
|
||||
ChannelInfo *ci;
|
||||
Command *c;
|
||||
int *messages;
|
||||
unsigned Deleted;
|
||||
Anope::string Nicks;
|
||||
bool override;
|
||||
public:
|
||||
XOPDelCallback(User *_u, ChannelInfo *_ci, int *_messages, const Anope::string &numlist) : NumberList(numlist, true), u(_u), ci(_ci), messages(_messages), Deleted(0)
|
||||
XOPDelCallback(User *_u, Command *_c, ChannelInfo *_ci, int *_messages, bool _override, const Anope::string &numlist) : NumberList(numlist, true), u(_u), ci(_ci), c(_c), messages(_messages), Deleted(0), override(_override)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -164,7 +166,7 @@ class XOPDelCallback : public NumberList
|
||||
notice_lang(Config->s_ChanServ, u, messages[XOP_NO_MATCH], ci->name.c_str());
|
||||
else
|
||||
{
|
||||
Alog() << Config->s_ChanServ << ": " << u->GetMask() << " (level " << get_access(u, ci) << ") deleted access of users " << Nicks << " on " << ci->name;
|
||||
Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, c, ci) << "deleted access of users " << Nicks;
|
||||
|
||||
if (Deleted == 1)
|
||||
notice_lang(Config->s_ChanServ, u, messages[XOP_DELETED_ONE], ci->name.c_str());
|
||||
@@ -263,7 +265,8 @@ class XOPBase : public Command
|
||||
access->creator = u->nick;
|
||||
}
|
||||
|
||||
Alog() << Config->s_ChanServ << ": " << u->GetMask() << " (level " << ulev << ") " << (change ? "changed" : "set") << " access level " << level << " to " << na->nick << " (group " << nc->display << ") on channel " << ci->name;
|
||||
bool override = (level >= ulev || ulev < ACCESS_AOP || (access && access->level > ulev));
|
||||
Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, this, ci) << "ADD " << na->nick << " (group: " << nc->display << ") as level " << level;
|
||||
|
||||
if (!change)
|
||||
{
|
||||
@@ -313,7 +316,8 @@ class XOPBase : public Command
|
||||
/* Special case: is it a number/list? Only do search if it isn't. */
|
||||
if (isdigit(nick[0]) && nick.find_first_not_of("1234567890,-") == Anope::string::npos)
|
||||
{
|
||||
XOPDelCallback list(u, ci, messages, nick);
|
||||
bool override = level >= ulev || ulev < ACCESS_AOP;
|
||||
XOPDelCallback list(u, this, ci, messages, override, nick);
|
||||
list.Process();
|
||||
}
|
||||
else
|
||||
@@ -325,7 +329,6 @@ class XOPBase : public Command
|
||||
return MOD_CONT;
|
||||
}
|
||||
NickCore *nc = na->nc;
|
||||
|
||||
unsigned i, end;
|
||||
for (i = 0, end = ci->GetAccessCount(); i < end; ++i)
|
||||
{
|
||||
@@ -345,7 +348,8 @@ class XOPBase : public Command
|
||||
notice_lang(Config->s_ChanServ, u, ACCESS_DENIED);
|
||||
else
|
||||
{
|
||||
Alog() << Config->s_ChanServ << ": " << u->GetMask() << " (level " << get_access(u, ci) << ") deleted access of user " << access->nc->display << " on " << ci->name;
|
||||
bool override = ulev <= access->level;
|
||||
Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, this, ci) << "DEL " << access->nc->display;
|
||||
|
||||
notice_lang(Config->s_ChanServ, u, messages[XOP_DELETED], access->nc->display.c_str(), ci->name.c_str());
|
||||
|
||||
@@ -368,6 +372,9 @@ class XOPBase : public Command
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
bool override = !get_access(u, ci);
|
||||
Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, this, ci);
|
||||
|
||||
if (!ci->GetAccessCount())
|
||||
{
|
||||
notice_lang(Config->s_ChanServ, u, messages[XOP_LIST_EMPTY], ci->name.c_str());
|
||||
@@ -426,6 +433,9 @@ class XOPBase : public Command
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
bool override = !check_access(u, ci, CA_FOUNDER);
|
||||
Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, this, ci) << "CLEAR level " << level;
|
||||
|
||||
for (unsigned i = ci->GetAccessCount(); i > 0; --i)
|
||||
{
|
||||
ChanAccess *access = ci->GetAccess(i - 1);
|
||||
|
||||
+16
-17
@@ -46,7 +46,7 @@ static void ReadDatabase(Module *m = NULL)
|
||||
|
||||
if (!db.is_open())
|
||||
{
|
||||
Alog() << "Unable to open " << DatabaseFile << " for reading!";
|
||||
Log() << "Unable to open " << DatabaseFile << " for reading!";
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -132,7 +132,7 @@ static void ReadDatabase(Module *m = NULL)
|
||||
}
|
||||
catch (const DatabaseException &ex)
|
||||
{
|
||||
Alog() << "[db_plain]: " << ex.GetReason();
|
||||
Log() << "[db_plain]: " << ex.GetReason();
|
||||
}
|
||||
}
|
||||
else if (Type == MD_NA && na)
|
||||
@@ -146,7 +146,7 @@ static void ReadDatabase(Module *m = NULL)
|
||||
}
|
||||
catch (const DatabaseException &ex)
|
||||
{
|
||||
Alog() << "[db_plain]: " << ex.GetReason();
|
||||
Log() << "[db_plain]: " << ex.GetReason();
|
||||
}
|
||||
}
|
||||
else if (Type == MD_NR && nr)
|
||||
@@ -160,7 +160,7 @@ static void ReadDatabase(Module *m = NULL)
|
||||
}
|
||||
catch (const DatabaseException &ex)
|
||||
{
|
||||
Alog() << "[db_plain]: " << ex.GetReason();
|
||||
Log() << "[db_plain]: " << ex.GetReason();
|
||||
}
|
||||
}
|
||||
else if (Type == MD_BI && bi)
|
||||
@@ -174,7 +174,7 @@ static void ReadDatabase(Module *m = NULL)
|
||||
}
|
||||
catch (const DatabaseException &ex)
|
||||
{
|
||||
Alog() << "[db_plain]: " << ex.GetReason();
|
||||
Log() << "[db_plain]: " << ex.GetReason();
|
||||
}
|
||||
}
|
||||
else if (Type == MD_CH && ci)
|
||||
@@ -188,7 +188,7 @@ static void ReadDatabase(Module *m = NULL)
|
||||
}
|
||||
catch (const DatabaseException &ex)
|
||||
{
|
||||
Alog() << "[db_plain]: " << ex.GetReason();
|
||||
Log() << "[db_plain]: " << ex.GetReason();
|
||||
if (!ci->founder)
|
||||
{
|
||||
delete ci;
|
||||
@@ -362,7 +362,7 @@ static void LoadNickCore(const std::vector<Anope::string> ¶ms)
|
||||
|
||||
nc->pass = params[1];
|
||||
|
||||
Alog(LOG_DEBUG_2) << "[db_plain]: Loaded NickCore " << nc->display;
|
||||
Log(LOG_DEBUG_2) << "[db_plain]: Loaded NickCore " << nc->display;
|
||||
}
|
||||
|
||||
static void LoadNickAlias(const std::vector<Anope::string> ¶ms)
|
||||
@@ -370,7 +370,7 @@ static void LoadNickAlias(const std::vector<Anope::string> ¶ms)
|
||||
NickCore *nc = findcore(params[0]);
|
||||
if (!nc)
|
||||
{
|
||||
Alog() << "[db_plain]: Unable to find core " << params[0];
|
||||
Log() << "[db_plain]: Unable to find core " << params[0];
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -380,7 +380,7 @@ static void LoadNickAlias(const std::vector<Anope::string> ¶ms)
|
||||
|
||||
na->last_seen = params[3].is_pos_number_only() ? convertTo<time_t>(params[3]) : 0;
|
||||
|
||||
Alog(LOG_DEBUG_2) << "[db_plain}: Loaded nickalias for " << na->nick;
|
||||
Log(LOG_DEBUG_2) << "[db_plain}: Loaded nickalias for " << na->nick;
|
||||
}
|
||||
|
||||
static void LoadNickRequest(const std::vector<Anope::string> ¶ms)
|
||||
@@ -391,21 +391,20 @@ static void LoadNickRequest(const std::vector<Anope::string> ¶ms)
|
||||
nr->email = params[3];
|
||||
nr->requested = params[4].is_pos_number_only() ? convertTo<time_t>(params[4]) : 0;
|
||||
|
||||
Alog(LOG_DEBUG_2) << "[db_plain]: Loaded nickrequest for " << nr->nick;
|
||||
Log(LOG_DEBUG_2) << "[db_plain]: Loaded nickrequest for " << nr->nick;
|
||||
}
|
||||
|
||||
static void LoadBotInfo(const std::vector<Anope::string> ¶ms)
|
||||
{
|
||||
BotInfo *bi = findbot(params[0]);
|
||||
if (!bi)
|
||||
bi = new BotInfo(params[0]);
|
||||
bi->SetIdent(params[1]);
|
||||
bi->host = params[2];
|
||||
bi = new BotInfo(params[0], params[1], params[2]);
|
||||
|
||||
bi->created = params[3].is_pos_number_only() ? convertTo<time_t>(params[3]) : 0;
|
||||
bi->chancount = params[4].is_pos_number_only() ? convertTo<uint32>(params[4]) : 0;
|
||||
bi->realname = params[5];
|
||||
|
||||
Alog(LOG_DEBUG_2) << "[db_plain]: Loaded botinfo for " << bi->nick;
|
||||
Log(LOG_DEBUG_2) << "[db_plain]: Loaded botinfo for " << bi->nick;
|
||||
}
|
||||
|
||||
static void LoadChanInfo(const std::vector<Anope::string> ¶ms)
|
||||
@@ -421,7 +420,7 @@ static void LoadChanInfo(const std::vector<Anope::string> ¶ms)
|
||||
|
||||
ci->last_used = params[2].is_pos_number_only() ? convertTo<time_t>(params[2]) : 0;
|
||||
|
||||
Alog(LOG_DEBUG_2) << "[db_plain]: loaded channel " << ci->name;
|
||||
Log(LOG_DEBUG_2) << "[db_plain]: loaded channel " << ci->name;
|
||||
}
|
||||
|
||||
static void LoadOperInfo(const std::vector<Anope::string> ¶ms)
|
||||
@@ -533,11 +532,11 @@ class DBPlain : public Module
|
||||
if (IsFile(newname))
|
||||
return;
|
||||
|
||||
Alog(LOG_DEBUG) << "db_plain: Attemping to rename " << DatabaseFile << " to " << newname;
|
||||
Log(LOG_DEBUG) << "db_plain: Attemping to rename " << DatabaseFile << " to " << newname;
|
||||
if (rename(DatabaseFile.c_str(), newname.c_str()))
|
||||
{
|
||||
ircdproto->SendGlobops(OperServ, "Unable to backup database!");
|
||||
Alog() << "Unable to back up database!";
|
||||
Log() << "Unable to back up database!";
|
||||
|
||||
if (!Config->NoBackupOkay)
|
||||
quitting = true;
|
||||
|
||||
@@ -336,7 +336,7 @@ class EMD5 : public Module
|
||||
MD5Final(reinterpret_cast<unsigned char *>(digest), &context);
|
||||
|
||||
buf += Anope::Hex(digest, 16);
|
||||
Alog(LOG_DEBUG_2) << "(enc_md5) hashed password from [" << src << "] to [" << buf << "]";
|
||||
Log(LOG_DEBUG_2) << "(enc_md5) hashed password from [" << src << "] to [" << buf << "]";
|
||||
dest = buf;
|
||||
return EVENT_ALLOW;
|
||||
}
|
||||
|
||||
@@ -28,7 +28,7 @@ class ENone : public Module
|
||||
Anope::string cpass;
|
||||
b64_encode(src, cpass);
|
||||
buf += cpass;
|
||||
Alog(LOG_DEBUG_2) << "(enc_none) hashed password from [" << src << "] to [" << buf << "]";
|
||||
Log(LOG_DEBUG_2) << "(enc_none) hashed password from [" << src << "] to [" << buf << "]";
|
||||
dest = buf;
|
||||
return EVENT_ALLOW;
|
||||
}
|
||||
|
||||
@@ -346,7 +346,7 @@ class EOld : public Module
|
||||
digest2[i / 2] = XTOI(digest[i]) << 4 | XTOI(digest[i + 1]);
|
||||
|
||||
buf += Anope::Hex(digest2, 16);
|
||||
Alog(LOG_DEBUG_2) << "(enc_old) hashed password from [" << src << "] to [" << buf << "]";
|
||||
Log(LOG_DEBUG_2) << "(enc_old) hashed password from [" << src << "] to [" << buf << "]";
|
||||
dest = buf;
|
||||
return EVENT_ALLOW;
|
||||
}
|
||||
|
||||
@@ -190,7 +190,7 @@ class ESHA1 : public Module
|
||||
SHA1Final(reinterpret_cast<unsigned char *>(digest), &context);
|
||||
|
||||
buf += Anope::Hex(digest, 20);
|
||||
Alog(LOG_DEBUG_2) << "(enc_sha1) hashed password from [" << src << "] to [" << buf << "]";
|
||||
Log(LOG_DEBUG_2) << "(enc_sha1) hashed password from [" << src << "] to [" << buf << "]";
|
||||
dest = buf;
|
||||
return EVENT_ALLOW;
|
||||
}
|
||||
|
||||
@@ -275,7 +275,7 @@ class ESHA256 : public Module
|
||||
SHA256Final(&ctx, reinterpret_cast<unsigned char *>(digest));
|
||||
digest[SHA256_DIGEST_SIZE] = '\0';
|
||||
buf << "sha256:" << Anope::Hex(digest, SHA256_DIGEST_SIZE) << ":" << GetIVString();
|
||||
Alog(LOG_DEBUG_2) << "(enc_sha256) hashed password from [" << src << "] to [" << buf.str() << " ]";
|
||||
Log(LOG_DEBUG_2) << "(enc_sha256) hashed password from [" << src << "] to [" << buf.str() << " ]";
|
||||
dest = buf.str();
|
||||
return EVENT_ALLOW;
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@ class CommandHSDel : public Command
|
||||
notice_lang(Config->s_HostServ, u, NICK_X_FORBIDDEN, nick.c_str());
|
||||
return MOD_CONT;
|
||||
}
|
||||
Alog() << "vHost for user \2" << nick << "\2 deleted by oper \2" << u->nick << "\2";
|
||||
Log(LOG_ADMIN, u, this) << "for user " << na->nick;
|
||||
FOREACH_MOD(I_OnDeleteVhost, OnDeleteVhost(na));
|
||||
na->hostinfo.RemoveVhost();
|
||||
notice_lang(Config->s_HostServ, u, HOST_DEL, nick.c_str());
|
||||
|
||||
@@ -38,7 +38,7 @@ class CommandHSDelAll : public Command
|
||||
na = *it;
|
||||
na->hostinfo.RemoveVhost();
|
||||
}
|
||||
Alog() << "vHosts for all nicks in group \2" << nc->display << "\2 deleted by oper \2" << u->nick << "\2";
|
||||
Log(LOG_ADMIN, u, this) << "for all nicks in group " << nc->display;
|
||||
notice_lang(Config->s_HostServ, u, HOST_DELALL, nc->display.c_str());
|
||||
}
|
||||
else
|
||||
|
||||
@@ -29,6 +29,7 @@ class CommandHSOff : public Command
|
||||
else
|
||||
{
|
||||
ircdproto->SendVhostDel(u);
|
||||
Log(LOG_COMMAND, u, this) << "to disable their vhost";
|
||||
notice_lang(Config->s_HostServ, u, HOST_OFF);
|
||||
}
|
||||
|
||||
|
||||
@@ -29,6 +29,7 @@ class CommandHSOn : public Command
|
||||
notice_lang(Config->s_HostServ, u, HOST_IDENT_ACTIVATED, na->hostinfo.GetIdent().c_str(), na->hostinfo.GetHost().c_str());
|
||||
else
|
||||
notice_lang(Config->s_HostServ, u, HOST_ACTIVATED, na->hostinfo.GetHost().c_str());
|
||||
Log(LOG_COMMAND, u, this) << "to enable their vhost of " << (!na->hostinfo.GetIdent().empty() ? na->hostinfo.GetIdent() + "@" : "") << na->hostinfo.GetHost();
|
||||
ircdproto->SendVhost(u, na->hostinfo.GetIdent(), na->hostinfo.GetHost());
|
||||
if (ircd->vhost)
|
||||
u->vhost = na->hostinfo.GetHost();
|
||||
|
||||
@@ -81,7 +81,8 @@ class CommandHSSet : public Command
|
||||
notice_lang(Config->s_HostServ, u, NICK_X_FORBIDDEN, nick.c_str());
|
||||
return MOD_CONT;
|
||||
}
|
||||
Alog() << "vHost for user \2" << nick << "\2 set to \2" << (!vIdent.empty() && ircd->vident ? vIdent : "") << (!vIdent.empty() && ircd->vident ? "@" : "") << hostmask << " \2 by oper \2" << u->nick << "\2";
|
||||
|
||||
Log(LOG_ADMIN, u, this) << "to set the vhost of " << na->nick << " to " << (!vIdent.empty() ? vIdent + "@" : "") << hostmask;
|
||||
|
||||
na->hostinfo.SetVhost(vIdent, hostmask, u->nick);
|
||||
FOREACH_MOD(I_OnSetVhost, OnSetVhost(na));
|
||||
|
||||
@@ -86,7 +86,7 @@ class CommandHSSetAll : public Command
|
||||
|
||||
tmp_time = time(NULL);
|
||||
|
||||
Alog() << "vHost for all nicks in group \2" << nick << "\2 set to \2" << (!vIdent.empty() && ircd->vident ? vIdent : "") << (!vIdent.empty() && ircd->vident ? "@" : "") << hostmask << " \2 by oper \2" << u->nick << "\2";
|
||||
Log(LOG_ADMIN, u, this) << "to set the vhost for all nicks in group " << na->nc->display << " to " << (!vIdent.empty() ? vIdent + "@" : "") << hostmask;
|
||||
|
||||
na->hostinfo.SetVhost(vIdent, hostmask, u->nick);
|
||||
HostServSyncVhosts(na);
|
||||
|
||||
@@ -47,7 +47,7 @@ class CommandMSRSend : public Command
|
||||
else
|
||||
{
|
||||
/* rsend has been disabled */
|
||||
Alog(LOG_DEBUG) << "MSMemoReceipt is set misconfigured to " << Config->MSMemoReceipt;
|
||||
Log() << "MSMemoReceipt is set misconfigured to " << Config->MSMemoReceipt;
|
||||
notice_lang(Config->s_MemoServ, u, MEMO_RSEND_DISABLED);
|
||||
}
|
||||
|
||||
|
||||
@@ -42,7 +42,7 @@ class CommandNSDrop : public Command
|
||||
{
|
||||
if (Config->WallDrop)
|
||||
ircdproto->SendGlobops(NickServ, "\2%s\2 used DROP on \2%s\2", u->nick.c_str(), nick.c_str());
|
||||
Alog() << Config->s_NickServ << ": " << u->GetMask() << " dropped nickname " << nr->nick << " (e-mail: " << nr->email << ")";
|
||||
Log(LOG_ADMIN, u, this) << "to drop nickname " << nr->nick << " (email: " << nr->email << ")";
|
||||
delete nr;
|
||||
notice_lang(Config->s_NickServ, u, NICK_X_DROPPED, nick.c_str());
|
||||
}
|
||||
@@ -73,7 +73,7 @@ class CommandNSDrop : public Command
|
||||
ircdproto->SendSQLineDel(&x);
|
||||
}
|
||||
|
||||
Alog() << Config->s_NickServ << ": " << u->GetMask() << " dropped nickname " << na->nick << " (group " << na->nc->display << ") (e-mail: " << (!na->nc->email.empty() ? na->nc->email : "none") << ")";
|
||||
Log(!is_mine ? LOG_OVERRIDE : LOG_COMMAND, u, this) << "to drop nickname " << na->nick << " (group: " << na->nc->display << ") (email: " << (!na->nc->email.empty() ? na->nc->email : "none") << ")";
|
||||
delete na;
|
||||
|
||||
FOREACH_MOD(I_OnNickDrop, OnNickDrop(!my_nick.empty() ? my_nick : nick));
|
||||
|
||||
@@ -76,14 +76,15 @@ class CommandNSForbid : public Command
|
||||
if (Config->WallForbid)
|
||||
ircdproto->SendGlobops(NickServ, "\2%s\2 used FORBID on \2%s\2", u->nick.c_str(), nick.c_str());
|
||||
|
||||
Alog() << Config->s_NickServ << ": " << u->nick << " set FORBID for nick " << nick;
|
||||
Log(LOG_ADMIN, u, this) << "to forbid nick " << nick;
|
||||
notice_lang(Config->s_NickServ, u, NICK_FORBID_SUCCEEDED, nick.c_str());
|
||||
|
||||
FOREACH_MOD(I_OnNickForbidden, OnNickForbidden(na));
|
||||
}
|
||||
else
|
||||
{
|
||||
Alog() << Config->s_NickServ << ": Valid FORBID for " << nick << " by " << u->nick << " failed";
|
||||
// XXX cant happen ?
|
||||
//Alog() << Config->s_NickServ << ": Valid FORBID for " << nick << " by " << u->nick << " failed";
|
||||
notice_lang(Config->s_NickServ, u, NICK_FORBID_FAILED, nick.c_str());
|
||||
}
|
||||
return MOD_CONT;
|
||||
|
||||
@@ -29,7 +29,7 @@ class CommandNSGetEMail : public Command
|
||||
Anope::string email = params[0];
|
||||
int j = 0;
|
||||
|
||||
Alog() << Config->s_NickServ << ": " << u->GetMask() << " used GETEMAIL on " << email;
|
||||
Log(LOG_ADMIN, u, this) << "on " << email;
|
||||
|
||||
for (nickcore_map::const_iterator it = NickCoreList.begin(), it_end = NickCoreList.end(); it != it_end; ++it)
|
||||
{
|
||||
|
||||
@@ -31,7 +31,7 @@ class CommandNSGetPass : public Command
|
||||
{
|
||||
if ((nr = findrequestnick(nick)))
|
||||
{
|
||||
Alog() << Config->s_NickServ << ": " << u->GetMask() << " used GETPASS on " << nick;
|
||||
Log(LOG_ADMIN, u, this) << "for " << nr->nick;
|
||||
if (Config->WallGetpass)
|
||||
ircdproto->SendGlobops(NickServ, "\2%s\2 used GETPASS on \2%s\2", u->nick.c_str(), nick.c_str());
|
||||
notice_lang(Config->s_NickServ, u, NICK_GETPASS_PASSCODE_IS, nick.c_str(), nr->passcode.c_str());
|
||||
@@ -47,7 +47,7 @@ class CommandNSGetPass : public Command
|
||||
{
|
||||
if (enc_decrypt(na->nc->pass, tmp_pass) == 1)
|
||||
{
|
||||
Alog() << Config->s_NickServ << ": " << u->GetMask() << " used GETPASS on " << nick;
|
||||
Log(LOG_ADMIN, u, this) << "for " << nick;
|
||||
if (Config->WallGetpass)
|
||||
ircdproto->SendGlobops(NickServ, "\2%s\2 used GETPASS on \2%s\2", u->nick.c_str(), nick.c_str());
|
||||
notice_lang(Config->s_NickServ, u, NICK_GETPASS_PASSWORD_IS, nick.c_str(), tmp_pass.c_str());
|
||||
|
||||
@@ -42,6 +42,7 @@ class CommandNSGhost : public Command
|
||||
int res = enc_check_password(pass, na->nc->pass);
|
||||
if (res == 1)
|
||||
{
|
||||
Log(LOG_COMMAND, u, this) << "for " << nick;
|
||||
Anope::string buf = "GHOST command used by " + u->nick;
|
||||
kill_user(Config->s_NickServ, nick, buf);
|
||||
notice_lang(Config->s_NickServ, u, NICK_GHOST_KILLED, nick.c_str());
|
||||
@@ -51,7 +52,7 @@ class CommandNSGhost : public Command
|
||||
notice_lang(Config->s_NickServ, u, ACCESS_DENIED);
|
||||
if (!res)
|
||||
{
|
||||
Alog() << Config->s_NickServ << ": GHOST: invalid password for " << nick << " by " << u->GetMask();
|
||||
Log(LOG_COMMAND, u, this) << "invalid password for " << nick;
|
||||
if (bad_password(u))
|
||||
return MOD_STOP;
|
||||
}
|
||||
@@ -61,6 +62,7 @@ class CommandNSGhost : public Command
|
||||
{
|
||||
if (u->Account() == na->nc || (!na->nc->HasFlag(NI_SECURE) && is_on_access(u, na->nc)))
|
||||
{
|
||||
Log(LOG_COMMAND, u, this) << "for " << nick;
|
||||
Anope::string buf = "GHOST command used by " + u->nick;
|
||||
kill_user(Config->s_NickServ, nick, buf);
|
||||
notice_lang(Config->s_NickServ, u, NICK_GHOST_KILLED, nick.c_str());
|
||||
|
||||
@@ -61,12 +61,12 @@ class CommandNSGroup : public Command
|
||||
notice_lang(Config->s_NickServ, u, NICK_GROUP_PLEASE_WAIT, (Config->NSRegDelay + u->lastnickreg) - time(NULL));
|
||||
else if (u->Account() && u->Account()->HasFlag(NI_SUSPENDED))
|
||||
{
|
||||
Alog() << Config->s_NickServ << ": " << u->GetMask() << " tried to use GROUP from SUSPENDED nick " << target->nick;
|
||||
//Alog() << Config->s_NickServ << ": " << u->GetMask() << " tried to use GROUP from SUSPENDED nick " << target->nick;
|
||||
notice_lang(Config->s_NickServ, u, NICK_X_SUSPENDED, u->nick.c_str());
|
||||
}
|
||||
else if (target && target->nc->HasFlag(NI_SUSPENDED))
|
||||
{
|
||||
Alog() << Config->s_NickServ << ": " << u->GetMask() << " tried to use GROUP for SUSPENDED nick " << target->nick;
|
||||
Log(LOG_COMMAND, u, this) << "tried to use GROUP for SUSPENDED nick " << target->nick;
|
||||
notice_lang(Config->s_NickServ, u, NICK_X_SUSPENDED, target->nick.c_str());
|
||||
}
|
||||
else if (target->HasFlag(NS_FORBIDDEN))
|
||||
@@ -82,7 +82,7 @@ class CommandNSGroup : public Command
|
||||
int res = enc_check_password(pass, target->nc->pass);
|
||||
if (res == -1)
|
||||
{
|
||||
Alog() << Config->s_NickServ << ": Failed GROUP for " << u->GetMask() << " (invalid password)";
|
||||
Log(LOG_COMMAND, u, this) << "failed group for " << na->nick << " (invalid password)";
|
||||
notice_lang(Config->s_NickServ, u, PASSWORD_INCORRECT);
|
||||
if (bad_password(u))
|
||||
return MOD_STOP;
|
||||
@@ -119,8 +119,7 @@ class CommandNSGroup : public Command
|
||||
FOREACH_MOD(I_OnNickGroup, OnNickGroup(u, target));
|
||||
ircdproto->SetAutoIdentificationToken(u);
|
||||
|
||||
Alog() << Config->s_NickServ << ": " << u->GetMask() << " makes " << u->nick << " join group of " << target->nick << " (" << target->nc->display << ") (e-mail: " <<
|
||||
(!target->nc->email.empty() ? target->nc->email : "none") << ")";
|
||||
Log(LOG_COMMAND, u, this) << "makes " << u->nick << " join group of " << target->nick << " (" << target->nc->display << ") (email: " << (!target->nc->email.empty() ? target->nc->email : "none") << ")";
|
||||
notice_lang(Config->s_NickServ, u, NICK_GROUP_JOINED, target->nick.c_str());
|
||||
|
||||
u->lastnickreg = time(NULL);
|
||||
@@ -129,7 +128,8 @@ class CommandNSGroup : public Command
|
||||
}
|
||||
else
|
||||
{
|
||||
Alog() << Config->s_NickServ << ": makealias(" << u->nick << ") failed";
|
||||
// XXX not possible?
|
||||
//Alog() << Config->s_NickServ << ": makealias(" << u->nick << ") failed";
|
||||
notice_lang(Config->s_NickServ, u, NICK_GROUP_FAILED);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -50,7 +50,7 @@ class CommandNSIdentify : public Command
|
||||
res = enc_check_password(pass, na->nc->pass);
|
||||
if (!res)
|
||||
{
|
||||
Alog() << Config->s_NickServ << ": Failed IDENTIFY for " << u->nick << "!" << u->GetIdent() << "@" << u->host;
|
||||
Log(LOG_COMMAND, u, this) << "failed to identify";
|
||||
notice_lang(Config->s_NickServ, u, PASSWORD_INCORRECT);
|
||||
if (bad_password(u))
|
||||
return MOD_STOP;
|
||||
@@ -60,7 +60,7 @@ class CommandNSIdentify : public Command
|
||||
else
|
||||
{
|
||||
if (u->IsIdentified())
|
||||
Alog() << Config->s_NickServ << ": " << u->GetMask() << " logged out of account " << u->Account()->display;
|
||||
Log(LOG_COMMAND, "nickserv/identify") << "logged out of account " << u->Account()->display;
|
||||
|
||||
na->last_realname = u->realname;
|
||||
na->last_seen = time(NULL);
|
||||
@@ -73,7 +73,7 @@ class CommandNSIdentify : public Command
|
||||
|
||||
FOREACH_MOD(I_OnNickIdentify, OnNickIdentify(u));
|
||||
|
||||
Alog() << Config->s_NickServ << ": " << u->GetMask() << " identified for account " << u->Account()->display;
|
||||
Log(LOG_COMMAND, u, this) << "identified for account " << u->Account()->display;
|
||||
notice_lang(Config->s_NickServ, u, NICK_IDENTIFY_SUCCEEDED);
|
||||
if (ircd->vhost)
|
||||
do_on_id(u);
|
||||
|
||||
@@ -38,7 +38,7 @@ class CommandNSLogout : public Command
|
||||
validate_user(u2);
|
||||
|
||||
u2->isSuperAdmin = 0; /* Dont let people logout and remain a SuperAdmin */
|
||||
Alog() << Config->s_NickServ << ": " << u->GetMask() << " logged out nickname " << u2->nick;
|
||||
Log(LOG_COMMAND, u, this) << "to logout " << u2->nick;
|
||||
|
||||
/* Remove founder status from this user in all channels */
|
||||
if (!nick.empty())
|
||||
|
||||
@@ -57,7 +57,7 @@ class CommandNSRecover : public Command
|
||||
notice_lang(Config->s_NickServ, u, ACCESS_DENIED);
|
||||
if (!res)
|
||||
{
|
||||
Alog() << Config->s_NickServ << ": RECOVER: invalid password for " << nick << " by " << u->GetMask();
|
||||
Log(LOG_COMMAND, u, this) << "with invalid password for " << nick;
|
||||
if (bad_password(u))
|
||||
return MOD_STOP;
|
||||
}
|
||||
|
||||
@@ -24,7 +24,8 @@ class CommandNSConfirm : public Command
|
||||
|
||||
if (!na)
|
||||
{
|
||||
Alog() << Config->s_NickServ << ": makenick(" << u->nick << ") failed";
|
||||
// XXX
|
||||
//Alog() << Config->s_NickServ << ": makenick(" << u->nick << ") failed";
|
||||
notice_lang(Config->s_NickServ, u, NICK_REGISTRATION_FAILED);
|
||||
return MOD_CONT;
|
||||
}
|
||||
@@ -57,7 +58,7 @@ class CommandNSConfirm : public Command
|
||||
if (!force)
|
||||
{
|
||||
u->Login(na->nc);
|
||||
Alog() << Config->s_NickServ << ": '" << u->nick << "' registered by " << u->GetIdent() << "@" << u->host << " (e-mail: " << (!nr->email.empty() ? nr->email : "none") << ")";
|
||||
Log(LOG_COMMAND, u, this) << "to register " << u->nick << " (email: " << (!nr->email.empty() ? nr->email : "none") << ")";
|
||||
if (Config->NSAddAccessOnReg)
|
||||
notice_lang(Config->s_NickServ, u, NICK_REGISTERED, u->nick.c_str(), na->nc->GetAccess(0).c_str());
|
||||
else
|
||||
@@ -74,7 +75,7 @@ class CommandNSConfirm : public Command
|
||||
}
|
||||
else
|
||||
{
|
||||
Alog() << Config->s_NickServ << ": '" << nr->nick << "' confirmed by " << u->GetMask() << " (email: " << (!nr->email.empty() ? nr->email : "none") << " )";
|
||||
Log(LOG_COMMAND, u, this) << "to confirm " << u->nick << " (email: " << (!nr->email.empty() ? nr->email : "none") << ")";
|
||||
notice_lang(Config->s_NickServ, u, NICK_FORCE_REG, nr->nick.c_str());
|
||||
User *user = finduser(nr->nick);
|
||||
/* Delrequest must be called before validate_user */
|
||||
@@ -250,7 +251,8 @@ class CommandNSRegister : public CommandNSConfirm
|
||||
/* i.e. there's already such a nick regged */
|
||||
if (na->HasFlag(NS_FORBIDDEN))
|
||||
{
|
||||
Alog() << Config->s_NickServ << ": " << u->GetIdent() << "@" << u->host << " tried to register FORBIDden nick " << u->nick;
|
||||
// XXX
|
||||
//Alog() << Config->s_NickServ << ": " << u->GetIdent() << "@" << u->host << " tried to register FORBIDden nick " << u->nick;
|
||||
notice_lang(Config->s_NickServ, u, NICK_CANNOT_BE_REGISTERED, u->nick.c_str());
|
||||
}
|
||||
else
|
||||
@@ -278,11 +280,11 @@ class CommandNSRegister : public CommandNSConfirm
|
||||
if (SendRegmail(u, nr))
|
||||
{
|
||||
notice_lang(Config->s_NickServ, u, NICK_ENTER_REG_CODE, email.c_str(), Config->s_NickServ.c_str());
|
||||
Alog() << Config->s_NickServ << ": sent registration verification code to " << nr->email;
|
||||
Log(LOG_COMMAND, u, this) << "send registration verification code to " << nr->email;
|
||||
}
|
||||
else
|
||||
{
|
||||
Alog() << Config->s_NickServ << ": Unable to send registration verification mail";
|
||||
Log(LOG_COMMAND, u, this) << "unable to send registration verification mail";
|
||||
notice_lang(Config->s_NickServ, u, NICK_REG_UNABLE);
|
||||
delete nr;
|
||||
return MOD_CONT;
|
||||
@@ -342,11 +344,11 @@ class CommandNSResend : public Command
|
||||
{
|
||||
nr->lastmail = time(NULL);
|
||||
notice_lang(Config->s_NickServ, u, NICK_REG_RESENT, nr->email.c_str());
|
||||
Alog() << Config->s_NickServ << ": re-sent registration verification code for " << nr->nick << " to " << nr->email;
|
||||
Log(LOG_COMMAND, u, this) << "resend registration verification code for " << nr->nick;
|
||||
}
|
||||
else
|
||||
{
|
||||
Alog() << Config->s_NickServ << ": Unable to re-send registration verification mail for " << nr->nick;
|
||||
Log(LOG_COMMAND, u, this) << "unable to resend registration verification code for " << nr->nick;
|
||||
return MOD_CONT;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -40,7 +40,7 @@ class CommandNSRelease : public Command
|
||||
int res = enc_check_password(pass, na->nc->pass);
|
||||
if (res == 1)
|
||||
{
|
||||
na->Release();
|
||||
Log(LOG_COMMAND, u, this) << "released " << na->nick;
|
||||
notice_lang(Config->s_NickServ, u, NICK_RELEASED);
|
||||
}
|
||||
else
|
||||
@@ -48,7 +48,7 @@ class CommandNSRelease : public Command
|
||||
notice_lang(Config->s_NickServ, u, ACCESS_DENIED);
|
||||
if (!res)
|
||||
{
|
||||
Alog() << Config->s_NickServ << ": RELEASE: invalid password for " << nick << " by " << u->GetMask();
|
||||
Log(LOG_COMMAND, u, this) << "invalid password for " << nick;
|
||||
if (bad_password(u))
|
||||
return MOD_STOP;
|
||||
}
|
||||
|
||||
@@ -36,7 +36,7 @@ class CommandNSResetPass : public Command
|
||||
{
|
||||
if (SendResetEmail(u, na))
|
||||
{
|
||||
Alog() << Config->s_NickServ << ": " << u->GetMask() << " used RESETPASS on " << na->nick << " (" << na->nc->display << ")";
|
||||
Log(LOG_COMMAND, u, this) << "for " << na->nick << " (group: " << na->nc->display << ")";
|
||||
notice_lang(Config->s_NickServ, u, NICK_RESETPASS_COMPLETE, na->nick.c_str());
|
||||
}
|
||||
}
|
||||
@@ -111,7 +111,7 @@ class NSResetPass : public Module
|
||||
ircdproto->SetAutoIdentificationToken(u);
|
||||
FOREACH_MOD(I_OnNickIdentify, OnNickIdentify(u));
|
||||
|
||||
Alog() << Config->s_NickServ << ": " << u->GetMask() << " used CONFIRM with RESETPASS to forcefully identify to " << na->nick;
|
||||
Log(LOG_COMMAND, u, &commandnsresetpass) << "confirmed RESETPASS to forcefully identify to " << na->nick;
|
||||
notice_lang(Config->s_NickServ, u, NICK_CONFIRM_SUCCESS, Config->s_NickServ.c_str());
|
||||
|
||||
if (ircd->vhost)
|
||||
@@ -122,7 +122,7 @@ class NSResetPass : public Module
|
||||
}
|
||||
else
|
||||
{
|
||||
Alog() << Config->s_NickServ << ": Invalid CONFIRM passcode for " << na->nick << " from " << u->GetMask();
|
||||
Log(LOG_COMMAND, u, &commandnsresetpass) << "invalid confirm passcode for " << na->nick;
|
||||
notice_lang(Config->s_NickServ, u, NICK_CONFIRM_INVALID);
|
||||
bad_password(u);
|
||||
}
|
||||
|
||||
@@ -55,6 +55,7 @@ class CommandNSSASet : public Command
|
||||
Anope::string cmdparams = na->nc->display;
|
||||
for (std::vector<Anope::string>::const_iterator it = params.begin() + 2; it != params.end(); ++it)
|
||||
cmdparams += " " + *it;
|
||||
Log(LOG_ADMIN, u, this) << params[1] << " " << cmdparams;
|
||||
mod_run_cmd(NickServ, u, c, params[1], cmdparams);
|
||||
}
|
||||
else
|
||||
@@ -192,7 +193,8 @@ class CommandNSSASetPassword : public Command
|
||||
|
||||
if (enc_encrypt(params[1], nc->pass))
|
||||
{
|
||||
Alog() << Config->s_NickServ << ": Failed to encrypt password for " << nc->display << " (saset)";
|
||||
// XXX
|
||||
//Alog() << Config->s_NickServ << ": Failed to encrypt password for " << nc->display << " (saset)";
|
||||
notice_lang(Config->s_NickServ, u, NICK_SASET_PASSWORD_FAILED, nc->display.c_str());
|
||||
return MOD_CONT;
|
||||
}
|
||||
@@ -203,8 +205,6 @@ class CommandNSSASetPassword : public Command
|
||||
else
|
||||
notice_lang(Config->s_NickServ, u, NICK_SASET_PASSWORD_CHANGED, nc->display.c_str());
|
||||
|
||||
Alog() << Config->s_NickServ << ": " << u->GetMask() << " used SASET PASSWORD on " << nc->display << " (e-mail: "<< (!nc->email.empty() ? nc->email : "none") << ")";
|
||||
|
||||
if (Config->WallSetpass)
|
||||
ircdproto->SendGlobops(NickServ, "\2%s\2 used SASET PASSWORD on \2%s\2", u->nick.c_str(), nc->display.c_str());
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@ class CommandNSSendPass : public Command
|
||||
{
|
||||
if (SendPassMail(u, na, tmp_pass))
|
||||
{
|
||||
Alog() << Config->s_NickServ << ": " << u->GetMask() << " used SENDPASS on " << nick;
|
||||
Log(Config->RestrictMail ? LOG_ADMIN : LOG_COMMAND, u, this) << "for " << na->nick;
|
||||
notice_lang(Config->s_NickServ, u, NICK_SENDPASS_OK, nick.c_str());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -175,7 +175,8 @@ class CommandNSSetPassword : public Command
|
||||
|
||||
if (enc_encrypt(param, u->Account()->pass) < 0)
|
||||
{
|
||||
Alog() << Config->s_NickServ << ": Failed to encrypt password for " << u->Account()->display << " (set)";
|
||||
// XXX ?
|
||||
//Alog() << Config->s_NickServ << ": Failed to encrypt password for " << u->Account()->display << " (set)";
|
||||
notice_lang(Config->s_NickServ, u, NICK_SASET_PASSWORD_FAILED);
|
||||
return MOD_CONT;
|
||||
}
|
||||
@@ -186,7 +187,6 @@ class CommandNSSetPassword : public Command
|
||||
else
|
||||
notice_lang(Config->s_NickServ, u, NICK_SASET_PASSWORD_CHANGED, u->Account()->display.c_str());
|
||||
|
||||
Alog() << Config->s_NickServ << ": " << u->GetMask() << " (e-mail: " << (!u->Account()->email.empty() ? u->Account()->email : "none") << ") changed its password.";
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
|
||||
@@ -44,8 +44,6 @@ class CommandNSSetEmail : public Command
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
Alog() << Config->s_NickServ << ": " << u->GetMask() << " (e-mail: " << (!u->Account()->email.empty() ? u->Account()->email : "none") << ") changed the e-mail of " << nc->display << " to " << (!param.empty() ? param : "none");
|
||||
|
||||
if (!param.empty())
|
||||
{
|
||||
nc->email = param;
|
||||
|
||||
@@ -76,7 +76,7 @@ class CommandNSSuspend : public Command
|
||||
if (Config->WallForbid)
|
||||
ircdproto->SendGlobops(NickServ, "\2%s\2 used SUSPEND on \2%s\2", u->nick.c_str(), nick.c_str());
|
||||
|
||||
Alog() << Config->s_NickServ << ": " << u->nick << " set SUSPEND for nick " << nick;
|
||||
Log(LOG_ADMIN, u, this) << "for " << nick << " (" << (!reason.empty() ? reason : "No reason") << ")";
|
||||
notice_lang(Config->s_NickServ, u, NICK_SUSPEND_SUCCEEDED, nick.c_str());
|
||||
|
||||
FOREACH_MOD(I_OnNickSuspended, OnNickSuspend(na));
|
||||
@@ -142,7 +142,7 @@ class CommandNSUnSuspend : public Command
|
||||
if (Config->WallForbid)
|
||||
ircdproto->SendGlobops(NickServ, "\2%s\2 used UNSUSPEND on \2%s\2", u->nick.c_str(), nick.c_str());
|
||||
|
||||
Alog() << Config->s_NickServ << ": " << u->nick << " set UNSUSPEND for nick " << nick;
|
||||
Log(LOG_ADMIN, u, this) << "for " << na->nick;
|
||||
notice_lang(Config->s_NickServ, u, NICK_UNSUSPEND_SUCCEEDED, nick.c_str());
|
||||
|
||||
FOREACH_MOD(I_OnNickUnsuspended, OnNickUnsuspended(na));
|
||||
|
||||
@@ -32,7 +32,7 @@ class DefConTimeout : public Timer
|
||||
{
|
||||
Config->DefConLevel = level;
|
||||
FOREACH_MOD(I_OnDefconLevel, OnDefconLevel(level));
|
||||
Alog() << "Defcon level timeout, returning to lvl " << level;
|
||||
Log(OperServ, "operserv/defcon") << "Defcon level timeout, returning to level " << level;
|
||||
ircdproto->SendGlobops(OperServ, getstring(OPER_DEFCON_WALL), Config->s_OperServ.c_str(), level);
|
||||
|
||||
if (Config->GlobalOnDefcon)
|
||||
@@ -92,7 +92,7 @@ class CommandOSDefcon : public Command
|
||||
|
||||
notice_lang(Config->s_OperServ, u, OPER_DEFCON_CHANGED, Config->DefConLevel);
|
||||
defcon_sendlvls(u);
|
||||
Alog() << "Defcon level changed to " << newLevel << " by Oper " << u->nick;
|
||||
Log(LOG_ADMIN, u, this) << "to change defcon level to " << newLevel;
|
||||
ircdproto->SendGlobops(OperServ, getstring(OPER_DEFCON_WALL), u->nick.c_str(), newLevel);
|
||||
/* Global notice the user what is happening. Also any Message that
|
||||
the Admin would like to add. Set in config file. */
|
||||
@@ -157,7 +157,7 @@ class OSDefcon : public Module
|
||||
{
|
||||
if (CheckDefCon(DEFCON_AKILL_NEW_CLIENTS))
|
||||
{
|
||||
Alog() << "DEFCON: adding akill for *@" << u->host;
|
||||
Log(OperServ, "operserv/defcon") << "DEFCON: adding akill for *@" << u->host;
|
||||
XLine *x = SGLine->Add(NULL, NULL, "*@" + u->host, time(NULL) + Config->DefConAKILL, !Config->DefConAkillReason.empty() ? Config->DefConAkillReason : "DEFCON AKILL");
|
||||
if (x)
|
||||
x->By = Config->s_OperServ;
|
||||
@@ -352,7 +352,7 @@ void runDefCon()
|
||||
{
|
||||
if (Config->DefConChanModes[0] == '+' || Config->DefConChanModes[0] == '-')
|
||||
{
|
||||
Alog() << "DEFCON: setting " << Config->DefConChanModes << " on all channels";
|
||||
Log(OperServ, "operserv/defcon") << "DEFCON: setting " << Config->DefConChanModes << " on all channels";
|
||||
DefConModesSet = true;
|
||||
MassChannelModes(OperServ, Config->DefConChanModes);
|
||||
}
|
||||
@@ -368,7 +368,7 @@ void runDefCon()
|
||||
Anope::string newmodes = defconReverseModes(Config->DefConChanModes);
|
||||
if (!newmodes.empty())
|
||||
{
|
||||
Alog() << "DEFCON: setting " << newmodes << " on all channels";
|
||||
Log(OperServ, "operserv/defcon") << "DEFCON: setting " << newmodes << " on all channels";
|
||||
MassChannelModes(OperServ, newmodes);
|
||||
}
|
||||
}
|
||||
@@ -420,7 +420,7 @@ void defconParseModeString(const Anope::string &str)
|
||||
{
|
||||
if (cm->Type == MODE_STATUS || cm->Type == MODE_LIST || !cm->CanSet(NULL))
|
||||
{
|
||||
Alog() << "DefConChanModes mode character '" << mode << "' cannot be locked";
|
||||
Log() << "DefConChanModes mode character '" << mode << "' cannot be locked";
|
||||
continue;
|
||||
}
|
||||
else if (add)
|
||||
@@ -434,7 +434,7 @@ void defconParseModeString(const Anope::string &str)
|
||||
|
||||
if (!ss.GetToken(param))
|
||||
{
|
||||
Alog() << "DefConChanModes mode character '" << mode << "' has no parameter while one is expected";
|
||||
Log() << "DefConChanModes mode character '" << mode << "' has no parameter while one is expected";
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -462,7 +462,7 @@ void defconParseModeString(const Anope::string &str)
|
||||
{
|
||||
DefConModesOn.UnsetFlag(CMODE_REDIRECT);
|
||||
|
||||
Alog() << "DefConChanModes must lock mode +l as well to lock mode +L";
|
||||
Log() << "DefConChanModes must lock mode +l as well to lock mode +L";
|
||||
}
|
||||
|
||||
/* Some ircd we can't set NOKNOCK without INVITE */
|
||||
@@ -470,7 +470,7 @@ void defconParseModeString(const Anope::string &str)
|
||||
if (ircd->knock_needs_i && (cm = ModeManager::FindChannelModeByName(CMODE_NOKNOCK)) && DefConModesOn.HasFlag(cm->Name) && !DefConModesOn.HasFlag(CMODE_INVITE))
|
||||
{
|
||||
DefConModesOn.UnsetFlag(CMODE_NOKNOCK);
|
||||
Alog() << "DefConChanModes must lock mode +i as well to lock mode +K";
|
||||
Log() << "DefConChanModes must lock mode +i as well to lock mode +K";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -170,7 +170,7 @@ class OSIgnore : public Module
|
||||
{
|
||||
if ((*ign)->time && (*ign)->time <= now)
|
||||
{
|
||||
Alog(LOG_DEBUG) << "[os_ignore] Expiring ignore entry " << (*ign)->mask;
|
||||
Log(LOG_DEBUG) << "[os_ignore] Expiring ignore entry " << (*ign)->mask;
|
||||
delete *ign;
|
||||
ign = ignore.erase(ign);
|
||||
}
|
||||
|
||||
@@ -32,7 +32,7 @@ class CommandOSModUnLoad : public Command
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
Alog() << "Trying to unload module [" << mname << "]";
|
||||
Log() << "Trying to unload module [" << mname << "]";
|
||||
|
||||
status = ModuleManager::UnloadModule(m, u);
|
||||
|
||||
|
||||
@@ -90,10 +90,7 @@ static void DisplayNews(User *u, NewsType Type)
|
||||
else if (Type == NEWS_RANDOM)
|
||||
msg = NEWS_RANDOM_TEXT;
|
||||
else
|
||||
{
|
||||
Alog() << "news: Invalid type (" << Type << ") to display_news()";
|
||||
return;
|
||||
}
|
||||
throw CoreException("news: Invalid type (" + stringify(Type) + ") to display_news()");
|
||||
|
||||
unsigned displayed = 0;
|
||||
bool NewsExists = false;
|
||||
@@ -277,10 +274,7 @@ class NewsBase : public Command
|
||||
|
||||
msgs = findmsgs(type, type_name);
|
||||
if (!msgs)
|
||||
{
|
||||
Alog() << "news: Invalid type to do_news()";
|
||||
return MOD_CONT;
|
||||
}
|
||||
throw CoreException("news: Invalid type to do_news()");
|
||||
|
||||
if (cmd.equals_ci("LIST"))
|
||||
return this->DoList(u, type, msgs);
|
||||
|
||||
@@ -31,7 +31,7 @@ class CommandOSReload : public Command
|
||||
}
|
||||
catch (const ConfigException &ex)
|
||||
{
|
||||
Alog() << "Error reloading configuration file: " << ex.GetReason();
|
||||
Log() << "Error reloading configuration file: " << ex.GetReason();
|
||||
}
|
||||
|
||||
notice_lang(Config->s_OperServ, u, OPER_RELOAD);
|
||||
|
||||
+13
-63
@@ -18,14 +18,14 @@ class CommandOSSet : public Command
|
||||
private:
|
||||
CommandReturn DoList(User *u)
|
||||
{
|
||||
Log(LOG_ADMIN, u, this);
|
||||
|
||||
int index;
|
||||
|
||||
index = allow_ignore ? OPER_SET_LIST_OPTION_ON : OPER_SET_LIST_OPTION_OFF;
|
||||
notice_lang(Config->s_OperServ, u, index, "IGNORE");
|
||||
index = readonly ? OPER_SET_LIST_OPTION_ON : OPER_SET_LIST_OPTION_OFF;
|
||||
notice_lang(Config->s_OperServ, u, index, "READONLY");
|
||||
index = LogChan ? OPER_SET_LIST_OPTION_ON : OPER_SET_LIST_OPTION_OFF;
|
||||
notice_lang(Config->s_OperServ, u, index, "LOGCHAN");
|
||||
index = debug ? OPER_SET_LIST_OPTION_ON : OPER_SET_LIST_OPTION_OFF;
|
||||
notice_lang(Config->s_OperServ, u, index, "DEBUG");
|
||||
index = noexpire ? OPER_SET_LIST_OPTION_ON : OPER_SET_LIST_OPTION_OFF;
|
||||
@@ -46,11 +46,13 @@ class CommandOSSet : public Command
|
||||
|
||||
if (setting.equals_ci("ON"))
|
||||
{
|
||||
Log(LOG_ADMIN, u, this) << "IGNORE ON";
|
||||
allow_ignore = 1;
|
||||
notice_lang(Config->s_OperServ, u, OPER_SET_IGNORE_ON);
|
||||
}
|
||||
else if (setting.equals_ci("OFF"))
|
||||
{
|
||||
Log(LOG_ADMIN, u, this) << "IGNORE OFF";
|
||||
allow_ignore = 0;
|
||||
notice_lang(Config->s_OperServ, u, OPER_SET_IGNORE_OFF);
|
||||
}
|
||||
@@ -73,15 +75,13 @@ class CommandOSSet : public Command
|
||||
if (setting.equals_ci("ON"))
|
||||
{
|
||||
readonly = true;
|
||||
Alog() << "Read-only mode activated";
|
||||
close_log();
|
||||
Log(LOG_ADMIN, u, this) << "READONLY ON";
|
||||
notice_lang(Config->s_OperServ, u, OPER_SET_READONLY_ON);
|
||||
}
|
||||
else if (setting.equals_ci("OFF"))
|
||||
{
|
||||
readonly = false;
|
||||
open_log();
|
||||
Alog() << "Read-only mode deactivated";
|
||||
Log(LOG_ADMIN, u, this) << "READONLY OFF";
|
||||
notice_lang(Config->s_OperServ, u, OPER_SET_READONLY_OFF);
|
||||
}
|
||||
else
|
||||
@@ -90,52 +90,6 @@ class CommandOSSet : public Command
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
CommandReturn DoSetLogChan(User *u, const std::vector<Anope::string> ¶ms)
|
||||
{
|
||||
Anope::string setting = params.size() > 1 ? params[1] : "";
|
||||
Channel *c;
|
||||
|
||||
if (setting.empty())
|
||||
{
|
||||
this->OnSyntaxError(u, "LOGCHAN");
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
/* Unlike the other SET commands where only stricmp is necessary,
|
||||
* we also have to ensure that Config->LogChannel is defined or we can't
|
||||
* send to it.
|
||||
*
|
||||
* -jester
|
||||
*/
|
||||
if (!Config->LogChannel.empty() && setting.equals_ci("ON"))
|
||||
{
|
||||
if (ircd->join2msg)
|
||||
{
|
||||
c = findchan(Config->LogChannel);
|
||||
if (c)
|
||||
Global->Join(c);
|
||||
else
|
||||
Global->Join(Config->LogChannel);
|
||||
}
|
||||
LogChan = true;
|
||||
Alog() << "Now sending log messages to " << Config->LogChannel;
|
||||
notice_lang(Config->s_OperServ, u, OPER_SET_LOGCHAN_ON, Config->LogChannel.c_str());
|
||||
}
|
||||
else if (!Config->LogChannel.empty() && setting.equals_ci("OFF"))
|
||||
{
|
||||
Alog() << "No longer sending log messages to a channel";
|
||||
c = findchan(Config->LogChannel);
|
||||
if (ircd->join2msg && c)
|
||||
Global->Part(c);
|
||||
LogChan = false;
|
||||
notice_lang(Config->s_OperServ, u, OPER_SET_LOGCHAN_OFF);
|
||||
}
|
||||
else
|
||||
notice_lang(Config->s_OperServ, u, OPER_SET_LOGCHAN_ERROR);
|
||||
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
CommandReturn DoSetSuperAdmin(User *u, const std::vector<Anope::string> ¶ms)
|
||||
{
|
||||
Anope::string setting = params.size() > 1 ? params[1] : "";
|
||||
@@ -157,14 +111,14 @@ class CommandOSSet : public Command
|
||||
{
|
||||
u->isSuperAdmin = 1;
|
||||
notice_lang(Config->s_OperServ, u, OPER_SUPER_ADMIN_ON);
|
||||
Alog() << Config->s_OperServ << ": " << u->nick << " is a SuperAdmin";
|
||||
Log(LOG_ADMIN, u, this) << "SUPERADMIN ON";
|
||||
ircdproto->SendGlobops(OperServ, getstring(OPER_SUPER_ADMIN_WALL_ON), u->nick.c_str());
|
||||
}
|
||||
else if (setting.equals_ci("OFF"))
|
||||
{
|
||||
u->isSuperAdmin = 0;
|
||||
notice_lang(Config->s_OperServ, u, OPER_SUPER_ADMIN_OFF);
|
||||
Alog() << Config->s_OperServ << ": " << u->nick << " is no longer a SuperAdmin";
|
||||
Log(LOG_ADMIN, u, this) << "SUPERADMIN OFF";
|
||||
ircdproto->SendGlobops(OperServ, getstring(OPER_SUPER_ADMIN_WALL_OFF), u->nick.c_str());
|
||||
}
|
||||
else
|
||||
@@ -186,19 +140,19 @@ class CommandOSSet : public Command
|
||||
if (setting.equals_ci("ON"))
|
||||
{
|
||||
debug = 1;
|
||||
Alog() << "Debug mode activated";
|
||||
Log(LOG_ADMIN, u, this) << "DEBUG ON";
|
||||
notice_lang(Config->s_OperServ, u, OPER_SET_DEBUG_ON);
|
||||
}
|
||||
else if (setting.equals_ci("OFF") || (setting[0] == '0' && setting.is_number_only() && !convertTo<int>(setting)))
|
||||
{
|
||||
Alog() << "Debug mode deactivated";
|
||||
Log(LOG_ADMIN, u, this) << "DEBUG OFF";
|
||||
debug = 0;
|
||||
notice_lang(Config->s_OperServ, u, OPER_SET_DEBUG_OFF);
|
||||
}
|
||||
else if (setting.is_number_only() && convertTo<int>(setting) > 0)
|
||||
{
|
||||
debug = convertTo<int>(setting);
|
||||
Alog() << "Debug mode activated (level " << debug << ")";
|
||||
Log(LOG_ADMIN, u, this) << "DEBUG " << debug;
|
||||
notice_lang(Config->s_OperServ, u, OPER_SET_DEBUG_LEVEL, debug);
|
||||
}
|
||||
else
|
||||
@@ -220,13 +174,13 @@ class CommandOSSet : public Command
|
||||
if (setting.equals_ci("ON"))
|
||||
{
|
||||
noexpire = true;
|
||||
Alog() << "No expire mode activated";
|
||||
Log(LOG_ADMIN, u, this) << "NOEXPIRE ON";
|
||||
notice_lang(Config->s_OperServ, u, OPER_SET_NOEXPIRE_ON);
|
||||
}
|
||||
else if (setting.equals_ci("OFF"))
|
||||
{
|
||||
noexpire = false;
|
||||
Alog() << "No expire mode deactivated";
|
||||
Log(LOG_ADMIN, u, this) << "NOEXPIRE OFF";
|
||||
notice_lang(Config->s_OperServ, u, OPER_SET_NOEXPIRE_OFF);
|
||||
}
|
||||
else
|
||||
@@ -249,8 +203,6 @@ class CommandOSSet : public Command
|
||||
return this->DoSetIgnore(u, params);
|
||||
else if (option.equals_ci("READONLY"))
|
||||
return this->DoSetReadOnly(u, params);
|
||||
else if (option.equals_ci("LOGCHAN"))
|
||||
return this->DoSetLogChan(u, params);
|
||||
else if (option.equals_ci("SUPERADMIN"))
|
||||
return this->DoSetSuperAdmin(u, params);
|
||||
else if (option.equals_ci("DEBUG"))
|
||||
@@ -270,8 +222,6 @@ class CommandOSSet : public Command
|
||||
notice_help(Config->s_OperServ, u, OPER_HELP_SET_LIST);
|
||||
else if (subcommand.equals_ci("READONLY"))
|
||||
notice_help(Config->s_OperServ, u, OPER_HELP_SET_READONLY);
|
||||
else if (subcommand.equals_ci("LOGCHAN"))
|
||||
notice_help(Config->s_OperServ, u, OPER_HELP_SET_LOGCHAN);
|
||||
else if (subcommand.equals_ci("DEBUG"))
|
||||
notice_help(Config->s_OperServ, u, OPER_HELP_SET_DEBUG);
|
||||
else if (subcommand.equals_ci("NOEXPIRE"))
|
||||
|
||||
@@ -41,10 +41,10 @@ class SSMain : public Module
|
||||
statserv = findbot("StatServ");
|
||||
if (!statserv)
|
||||
{
|
||||
Alog() << "Creating SS";
|
||||
Log() << "Creating SS";
|
||||
statserv = new BotInfo("StatServ", Config->ServiceUser, Config->ServiceHost, "Stats Service");
|
||||
}
|
||||
Alog() << "Done creating SS";
|
||||
Log() << "Done creating SS";
|
||||
|
||||
this->AddCommand(statserv, &commandsshelp);
|
||||
}
|
||||
|
||||
@@ -95,7 +95,7 @@ class CommandCSAppendTopic : public Command
|
||||
c->topic_time = ci->last_topic_time;
|
||||
|
||||
if (!check_access(u, ci, CA_TOPIC))
|
||||
Alog() << Config->s_ChanServ << ": " << u->GetMask() << " changed topic of " << c->name << " as services admin.";
|
||||
Log(LOG_OVERRIDE, u, this, ci) << "changed topic to " << topic;
|
||||
if (ircd->join2set && whosends(ci) == ChanServ)
|
||||
{
|
||||
ChanServ->Join(c);
|
||||
|
||||
@@ -60,8 +60,6 @@ class CommandCSEnforce : public Command
|
||||
if (!(ci = c->ci))
|
||||
return;
|
||||
|
||||
Alog(LOG_DEBUG) << "[cs_enforce] Enforcing SECUREOPS on " << c->name;
|
||||
|
||||
/* Dirty hack to allow chan_set_correct_modes to work ok.
|
||||
* We pretend like SECUREOPS is on so it doesn't ignore that
|
||||
* part of the code. This way we can enforce SECUREOPS even
|
||||
@@ -94,8 +92,6 @@ class CommandCSEnforce : public Command
|
||||
if (!(ci = c->ci))
|
||||
return;
|
||||
|
||||
Alog(LOG_DEBUG) << "[cs_enforce] Enforcing RESTRICTED on " << c->name;
|
||||
|
||||
old_nojoin_level = ci->levels[CA_NOJOIN];
|
||||
if (ci->levels[CA_NOJOIN] < 0)
|
||||
ci->levels[CA_NOJOIN] = 0;
|
||||
@@ -124,8 +120,6 @@ class CommandCSEnforce : public Command
|
||||
if (!(ci = c->ci))
|
||||
return;
|
||||
|
||||
Alog(LOG_DEBUG) << "[cs_enforce] Enforcing mode +R on " << c->name;
|
||||
|
||||
for (CUserList::iterator it = c->users.begin(), it_end = c->users.end(); it != it_end; )
|
||||
{
|
||||
UserContainer *uc = *it++;
|
||||
|
||||
@@ -151,7 +151,7 @@ class CSSetMisc : public Module
|
||||
CommandInfo *info = new CommandInfo(cname, desc, showhidden);
|
||||
if (!this->Commands.insert(std::make_pair(cname, info)).second)
|
||||
{
|
||||
Alog() << "cs_set_misc: Warning, unable to add duplicate entry " << cname;
|
||||
Log() << "cs_set_misc: Warning, unable to add duplicate entry " << cname;
|
||||
delete info;
|
||||
continue;
|
||||
}
|
||||
|
||||
+18
-20
@@ -405,7 +405,7 @@ class DBMySQL : public Module
|
||||
{
|
||||
if (!SQL)
|
||||
{
|
||||
Alog() << "Error, unable to find service reference for SQL, is m_mysql loaded and configured properly?";
|
||||
Log() << "Error, unable to find service reference for SQL, is m_mysql loaded and configured properly?";
|
||||
return EVENT_CONTINUE;
|
||||
}
|
||||
|
||||
@@ -442,7 +442,7 @@ class DBMySQL : public Module
|
||||
NickCore *nc = findcore(r.Get(i, "display"));
|
||||
if (!nc)
|
||||
{
|
||||
Alog() << "MySQL: Got NickCore access entry for nonexistant core " << r.Get(i, "display");
|
||||
Log() << "MySQL: Got NickCore access entry for nonexistant core " << r.Get(i, "display");
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -455,7 +455,7 @@ class DBMySQL : public Module
|
||||
NickCore *nc = findcore(r.Get(i, "display"));
|
||||
if (!nc)
|
||||
{
|
||||
Alog() << "MySQL: Got NickCore access entry for nonexistant core " << r.Get(i, "display");
|
||||
Log() << "MySQL: Got NickCore access entry for nonexistant core " << r.Get(i, "display");
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -470,7 +470,7 @@ class DBMySQL : public Module
|
||||
NickCore *nc = findcore(r.Get(i, "display"));
|
||||
if (!nc)
|
||||
{
|
||||
Alog() << "MySQL: Got NickAlias for nick " << r.Get(i, "nick") << " with nonexistant core " << r.Get(i, "display");
|
||||
Log() << "MySQL: Got NickAlias for nick " << r.Get(i, "nick") << " with nonexistant core " << r.Get(i, "display");
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -502,7 +502,7 @@ class DBMySQL : public Module
|
||||
NickAlias *na = findnick(r.Get(i, "nick"));
|
||||
if (!na)
|
||||
{
|
||||
Alog() << "MySQL: Got metadata for nonexistant nick " << r.Get(i, "nick");
|
||||
Log() << "MySQL: Got metadata for nonexistant nick " << r.Get(i, "nick");
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -516,9 +516,7 @@ class DBMySQL : public Module
|
||||
{
|
||||
BotInfo *bi = findbot(r.Get(i, "nick"));
|
||||
if (!bi)
|
||||
bi = new BotInfo(r.Get(i, "nick"));
|
||||
bi->SetIdent(r.Get(i, "user"));
|
||||
bi->host = r.Get(i, "host");
|
||||
bi = new BotInfo(r.Get(i, "nick"), r.Get(i, "user"), r.Get(i, "host"));
|
||||
bi->realname = r.Get(i, "rname");
|
||||
bi->created = r.Get(i, "created").is_pos_number_only() ? convertTo<time_t>(r.Get(i, "creeated")) : time(NULL);
|
||||
|
||||
@@ -543,7 +541,7 @@ class DBMySQL : public Module
|
||||
BotInfo *bi = findbot(r.Get(i, "botname"));
|
||||
if (!bi)
|
||||
{
|
||||
Alog() << "MySQL: BotInfo metadata for nonexistant bot " << r.Get(i, "botname");
|
||||
Log() << "MySQL: BotInfo metadata for nonexistant bot " << r.Get(i, "botname");
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -562,7 +560,7 @@ class DBMySQL : public Module
|
||||
nc = findcore(r.Get(i, "founder"));
|
||||
if (!nc)
|
||||
{
|
||||
Alog() << "MySQL: Channel " << r.Get(i, "name") << " with nonexistant founder " << r.Get(i, "founder");
|
||||
Log() << "MySQL: Channel " << r.Get(i, "name") << " with nonexistant founder " << r.Get(i, "founder");
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -664,7 +662,7 @@ class DBMySQL : public Module
|
||||
ChannelInfo *ci = cs_findchan(r.Get(i, "channel"));
|
||||
if (!ci)
|
||||
{
|
||||
Alog() << "MySQL: Channel ttb for nonexistant channel " << r.Get(i, "channel");
|
||||
Log() << "MySQL: Channel ttb for nonexistant channel " << r.Get(i, "channel");
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -677,7 +675,7 @@ class DBMySQL : public Module
|
||||
ChannelInfo *ci = cs_findchan(r.Get(i, "channel"));
|
||||
if (!ci)
|
||||
{
|
||||
Alog() << "MySQL: Channel badwords entry for nonexistant channel " << r.Get(i, "channel");
|
||||
Log() << "MySQL: Channel badwords entry for nonexistant channel " << r.Get(i, "channel");
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -697,14 +695,14 @@ class DBMySQL : public Module
|
||||
ChannelInfo *ci = cs_findchan(r.Get(i, "channel"));
|
||||
if (!ci)
|
||||
{
|
||||
Alog() << "MySQL: Channel access entry for nonexistant channel " << r.Get(i, "channel");
|
||||
Log() << "MySQL: Channel access entry for nonexistant channel " << r.Get(i, "channel");
|
||||
continue;
|
||||
}
|
||||
|
||||
NickCore *nc = findcore(r.Get(i, "display"));
|
||||
if (!nc)
|
||||
{
|
||||
Alog() << "MySQL: Channel access entry for " << ci->name << " with nonexistant nick " << r.Get(i, "display");
|
||||
Log() << "MySQL: Channel access entry for " << ci->name << " with nonexistant nick " << r.Get(i, "display");
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -717,7 +715,7 @@ class DBMySQL : public Module
|
||||
ChannelInfo *ci = cs_findchan(r.Get(i, "channel"));
|
||||
if (!ci)
|
||||
{
|
||||
Alog() << "MySQL: Channel access entry for nonexistant channel " << r.Get(i, "channel");
|
||||
Log() << "MySQL: Channel access entry for nonexistant channel " << r.Get(i, "channel");
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -750,7 +748,7 @@ class DBMySQL : public Module
|
||||
ChannelInfo *ci = cs_findchan(r.Get(i, "channel"));
|
||||
if (!ci)
|
||||
{
|
||||
Alog() << "MySQL: Channel level entry for nonexistant channel " << r.Get(i, "channel");
|
||||
Log() << "MySQL: Channel level entry for nonexistant channel " << r.Get(i, "channel");
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -763,7 +761,7 @@ class DBMySQL : public Module
|
||||
ChannelInfo *ci = cs_findchan(r.Get(i, "channel"));
|
||||
if (!ci)
|
||||
{
|
||||
Alog() << "MySQL: Channel metadata for nonexistant channel " << r.Get(i, "channel");
|
||||
Log() << "MySQL: Channel metadata for nonexistant channel " << r.Get(i, "channel");
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -1379,15 +1377,15 @@ class DBMySQL : public Module
|
||||
|
||||
void MySQLInterface::OnResult(const SQLResult &r)
|
||||
{
|
||||
Alog(LOG_DEBUG) << "MySQL successfully executed query: " << r.GetQuery();
|
||||
Log(LOG_DEBUG) << "MySQL successfully executed query: " << r.GetQuery();
|
||||
}
|
||||
|
||||
void MySQLInterface::OnError(const SQLResult &r)
|
||||
{
|
||||
if (!r.GetQuery().empty())
|
||||
Alog(LOG_DEBUG) << "Error executing query " << r.GetQuery() << ": " << r.GetError();
|
||||
Log(LOG_DEBUG) << "Error executing query " << r.GetQuery() << ": " << r.GetError();
|
||||
else
|
||||
Alog(LOG_DEBUG) << "Error executing query: " << r.GetError();
|
||||
Log(LOG_DEBUG) << "Error executing query: " << r.GetError();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -139,7 +139,7 @@ class CommandHSRequest : public Command
|
||||
|
||||
me->NoticeLang(Config->s_HostServ, u, LNG_REQUESTED);
|
||||
req_send_memos(u, vIdent, hostmask);
|
||||
Alog() << "New vHost Requested by " << nick;
|
||||
Log(LOG_COMMAND, u, this, NULL) << "to request new vhost " << (!vIdent.empty() ? vIdent + "@" : "") << hostmask;
|
||||
}
|
||||
else
|
||||
notice_lang(Config->s_HostServ, u, HOST_NOREG, nick.c_str());
|
||||
@@ -185,14 +185,14 @@ class CommandHSActivate : public Command
|
||||
if (it != Requests.end())
|
||||
{
|
||||
na->hostinfo.SetVhost(it->second->ident, it->second->host, u->nick, it->second->time);
|
||||
delete it->second;
|
||||
Requests.erase(it);
|
||||
|
||||
if (HSRequestMemoUser)
|
||||
my_memo_lang(u, na->nick, 2, LNG_ACTIVATE_MEMO);
|
||||
|
||||
me->NoticeLang(Config->s_HostServ, u, LNG_ACTIVATED, nick.c_str());
|
||||
Alog() << "Host Request for " << nick << " activated by " << u->nick;
|
||||
me->NoticeLang(Config->s_HostServ, u, LNG_ACTIVATED, na->nick.c_str());
|
||||
Log(LOG_COMMAND, u, this, NULL) << "for " << na->nick << " for vhost " << (!it->second->ident.empty() ? it->second->ident + "@" : "") << it->second->host;
|
||||
delete it->second;
|
||||
Requests.erase(it);
|
||||
}
|
||||
else
|
||||
me->NoticeLang(Config->s_HostServ, u, LNG_NO_REQUEST, nick.c_str());
|
||||
@@ -252,7 +252,7 @@ class CommandHSReject : public Command
|
||||
}
|
||||
|
||||
me->NoticeLang(Config->s_HostServ, u, LNG_REJECTED, nick.c_str());
|
||||
Alog() << "Host Request for " << nick << " rejected by " << u->nick << " (" << (!reason.empty() ? reason : "") << ")";
|
||||
Log(LOG_COMMAND, u, this, NULL) << "to reject vhost for " << nick << " (" << (!reason.empty() ? reason : "") << ")";
|
||||
}
|
||||
else
|
||||
me->NoticeLang(Config->s_HostServ, u, LNG_NO_REQUEST, nick.c_str());
|
||||
@@ -737,7 +737,7 @@ void my_memo_lang(User *u, const Anope::string &name, int z, int number, ...)
|
||||
free(buf); // XXX
|
||||
}
|
||||
else
|
||||
Alog() << me->name << ": INVALID language string call, language: [" << lang << "], String [" << number << "]";
|
||||
Log() << me->name << ": INVALID language string call, language: [" << lang << "], String [" << number << "]";
|
||||
}
|
||||
|
||||
void req_send_memos(User *u, const Anope::string &vIdent, const Anope::string &vHost)
|
||||
@@ -794,7 +794,7 @@ void my_load_config()
|
||||
HSRequestMemoOper = config.ReadFlag("hs_request", "memooper", "no", 0);
|
||||
HSRequestMemoSetters = config.ReadFlag("hs_request", "memosetters", "no", 0);
|
||||
|
||||
Alog(LOG_DEBUG) << "[hs_request] Set config vars: MemoUser=" << HSRequestMemoUser << " MemoOper=" << HSRequestMemoOper << " MemoSetters=" << HSRequestMemoSetters;
|
||||
Log(LOG_DEBUG) << "[hs_request] Set config vars: MemoUser=" << HSRequestMemoUser << " MemoOper=" << HSRequestMemoOper << " MemoSetters=" << HSRequestMemoSetters;
|
||||
}
|
||||
|
||||
MODULE_INIT(HSRequest)
|
||||
|
||||
@@ -58,7 +58,7 @@ class MySQLResult : public SQLResult
|
||||
if (!num_fields)
|
||||
return;
|
||||
|
||||
Alog(LOG_DEBUG) << "SQL query returned " << num_fields << " fields";
|
||||
Log(LOG_DEBUG) << "SQL query returned " << num_fields << " fields";
|
||||
|
||||
for (MYSQL_ROW row; (row = mysql_fetch_row(res));)
|
||||
{
|
||||
@@ -70,7 +70,7 @@ class MySQLResult : public SQLResult
|
||||
|
||||
for (unsigned field_count = 0; field_count < num_fields; ++field_count)
|
||||
{
|
||||
Alog(LOG_DEBUG) << "Field count " << field_count << " name is: " << (fields[field_count].name ? fields[field_count].name : "") << ", data is: " << (row[field_count] ? row[field_count] : "");
|
||||
Log(LOG_DEBUG) << "Field count " << field_count << " name is: " << (fields[field_count].name ? fields[field_count].name : "") << ", data is: " << (row[field_count] ? row[field_count] : "");
|
||||
Anope::string column = (fields[field_count].name ? fields[field_count].name : "");
|
||||
Anope::string data = (row[field_count] ? row[field_count] : "");
|
||||
|
||||
@@ -211,7 +211,7 @@ class ModuleSQL : public Module
|
||||
|
||||
if (i == num)
|
||||
{
|
||||
Alog() << "MySQL: Removing server connection " << cname;
|
||||
Log(LOG_NORMAL, "mysql") << "MySQL: Removing server connection " << cname;
|
||||
|
||||
delete s;
|
||||
this->MySQLServices.erase(cname);
|
||||
@@ -235,11 +235,11 @@ class ModuleSQL : public Module
|
||||
MySQLService *ss = new MySQLService(this, connname, database, server, user, password, port);
|
||||
this->MySQLServices.insert(std::make_pair(connname, ss));
|
||||
|
||||
Alog() << "MySQL: Sucessfully connected to server " << connname << " (" << server << ")";
|
||||
Log(LOG_NORMAL, "mysql") << "MySQL: Sucessfully connected to server " << connname << " (" << server << ")";
|
||||
}
|
||||
catch (const SQLException &ex)
|
||||
{
|
||||
Alog() << "MySQL: " << ex.GetReason();
|
||||
Log(LOG_NORMAL, "mysql") << "MySQL: " << ex.GetReason();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -84,7 +84,7 @@ class SSLModule : public Module
|
||||
}
|
||||
}
|
||||
else
|
||||
Alog() << "m_ssl: No certificate file found";
|
||||
Log() << "m_ssl: No certificate file found";
|
||||
|
||||
if (IsFile(KEYFILE))
|
||||
{
|
||||
@@ -102,7 +102,7 @@ class SSLModule : public Module
|
||||
throw ModuleException("Error loading private key - file not found");
|
||||
}
|
||||
else
|
||||
Alog() << "m_ssl: No private key found";
|
||||
Log() << "m_ssl: No private key found";
|
||||
}
|
||||
|
||||
this->SetAuthor("Anope");
|
||||
@@ -129,11 +129,11 @@ class SSLModule : public Module
|
||||
try
|
||||
{
|
||||
new SSLSocket(u->host, u->port, Config->LocalHost, u->ipv6);
|
||||
Alog() << "Connected to Server " << Number << " (" << u->host << ":" << u->port << ")";
|
||||
Log() << "Connected to Server " << Number << " (" << u->host << ":" << u->port << ")";
|
||||
}
|
||||
catch (const SocketException &ex)
|
||||
{
|
||||
Alog() << "Unable to connect with SSL to server" << Number << " (" << u->host << ":" << u->port << "), " << ex.GetReason();
|
||||
Log() << "Unable to connect with SSL to server" << Number << " (" << u->host << ":" << u->port << "), " << ex.GetReason();
|
||||
}
|
||||
|
||||
return EVENT_ALLOW;
|
||||
|
||||
@@ -163,7 +163,7 @@ void my_load_config()
|
||||
{
|
||||
ConfigReader config;
|
||||
NSEmailMax = config.ReadInteger("ns_maxemail", "maxemails", "0", 0, false);
|
||||
Alog(LOG_DEBUG) << "[ns_maxemail] NSEmailMax set to " << NSEmailMax;
|
||||
Log(LOG_DEBUG) << "[ns_maxemail] NSEmailMax set to " << NSEmailMax;
|
||||
}
|
||||
|
||||
MODULE_INIT(NSMaxEmail)
|
||||
|
||||
@@ -168,7 +168,7 @@ class NSSetMisc : public Module
|
||||
CommandInfo *info = new CommandInfo(cname, desc, showhidden);
|
||||
if (!this->Commands.insert(std::make_pair(cname, info)).second)
|
||||
{
|
||||
Alog() << "ns_set_misc: Warning, unable to add duplicate entry " << cname;
|
||||
Log() << "ns_set_misc: Warning, unable to add duplicate entry " << cname;
|
||||
delete info;
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -342,7 +342,7 @@ int anope_event_sjoin(const Anope::string &source, int ac, const char **av)
|
||||
{
|
||||
User *u = finduser(source);
|
||||
if (!u)
|
||||
Alog(LOG_DEBUG) << "SJOIN for nonexistant user " << source << " on " << c->name;
|
||||
Log(LOG_DEBUG) << "SJOIN for nonexistant user " << source << " on " << c->name;
|
||||
else
|
||||
{
|
||||
EventReturn MOD_RESULT;
|
||||
@@ -380,7 +380,7 @@ int anope_event_sjoin(const Anope::string &source, int ac, const char **av)
|
||||
ChannelMode *cm = ModeManager::FindChannelModeByChar(ch);
|
||||
if (!cm)
|
||||
{
|
||||
Alog() << "Receeved unknown mode prefix " << buf[0] << " in SJOIN string";
|
||||
Log() << "Receeved unknown mode prefix " << buf[0] << " in SJOIN string";
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -391,7 +391,7 @@ int anope_event_sjoin(const Anope::string &source, int ac, const char **av)
|
||||
User *u = finduser(buf);
|
||||
if (!u)
|
||||
{
|
||||
Alog(LOG_DEBUG) << "SJOIN for nonexistant user " << buf << " on " << c->name;
|
||||
Log(LOG_DEBUG) << "SJOIN for nonexistant user " << buf << " on " << c->name;
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -662,7 +662,7 @@ int anope_event_ping(const Anope::string &source, int ac, const char **av)
|
||||
int anope_event_error(const Anope::string &source, int ac, const char **av)
|
||||
{
|
||||
if (ac >= 1)
|
||||
Alog(LOG_DEBUG) << av[0];
|
||||
Log(LOG_DEBUG) << av[0];
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
|
||||
@@ -392,7 +392,7 @@ int anope_event_fmode(const Anope::string &source, int ac, const char **av)
|
||||
{
|
||||
newav[o] = av[n];
|
||||
++o;
|
||||
Alog(LOG_DEBUG) << "Param: " << newav[o - 1];
|
||||
Log(LOG_DEBUG) << "Param: " << newav[o - 1];
|
||||
}
|
||||
++n;
|
||||
}
|
||||
@@ -438,7 +438,7 @@ int anope_event_fjoin(const Anope::string &source, int ac, const char **av)
|
||||
|
||||
if (!cm)
|
||||
{
|
||||
Alog() << "Received unknown mode prefix " << buf[0] << " in FJOIN string";
|
||||
Log() << "Received unknown mode prefix " << buf[0] << " in FJOIN string";
|
||||
buf.erase(buf.begin());
|
||||
continue;
|
||||
}
|
||||
@@ -451,7 +451,7 @@ int anope_event_fjoin(const Anope::string &source, int ac, const char **av)
|
||||
User *u = finduser(buf);
|
||||
if (!u)
|
||||
{
|
||||
Alog(LOG_DEBUG) << "FJOIN for nonexistant user " << buf << " on " << c->name;
|
||||
Log(LOG_DEBUG) << "FJOIN for nonexistant user " << buf << " on " << c->name;
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -526,7 +526,7 @@ int anope_event_topic(const Anope::string &source, int ac, const char **av)
|
||||
|
||||
if (!c)
|
||||
{
|
||||
Alog(LOG_DEBUG) << "TOPIC " << merge_args(ac - 1, av + 1) << " for nonexistent channel " << av[0];
|
||||
Log(LOG_DEBUG) << "TOPIC " << merge_args(ac - 1, av + 1) << " for nonexistent channel " << av[0];
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
@@ -628,7 +628,7 @@ int anope_event_setname(const Anope::string &source, int ac, const char **av)
|
||||
u = finduser(source);
|
||||
if (!u)
|
||||
{
|
||||
Alog(LOG_DEBUG) << "SETNAME for nonexistent user " << source;
|
||||
Log(LOG_DEBUG) << "SETNAME for nonexistent user " << source;
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
@@ -646,7 +646,7 @@ int anope_event_chgname(const Anope::string &source, int ac, const char **av)
|
||||
u = finduser(source);
|
||||
if (!u)
|
||||
{
|
||||
Alog(LOG_DEBUG) << "FNAME for nonexistent user " << source;
|
||||
Log(LOG_DEBUG) << "FNAME for nonexistent user " << source;
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
@@ -664,7 +664,7 @@ int anope_event_setident(const Anope::string &source, int ac, const char **av)
|
||||
u = finduser(source);
|
||||
if (!u)
|
||||
{
|
||||
Alog(LOG_DEBUG) << "SETIDENT for nonexistent user " << source;
|
||||
Log(LOG_DEBUG) << "SETIDENT for nonexistent user " << source;
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
@@ -682,7 +682,7 @@ int anope_event_chgident(const Anope::string &source, int ac, const char **av)
|
||||
u = finduser(av[0]);
|
||||
if (!u)
|
||||
{
|
||||
Alog(LOG_DEBUG) << "CHGIDENT for nonexistent user " << av[0];
|
||||
Log(LOG_DEBUG) << "CHGIDENT for nonexistent user " << av[0];
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
@@ -700,7 +700,7 @@ int anope_event_sethost(const Anope::string &source, int ac, const char **av)
|
||||
u = finduser(source);
|
||||
if (!u)
|
||||
{
|
||||
Alog(LOG_DEBUG) << "SETHOST for nonexistent user " << source;
|
||||
Log(LOG_DEBUG) << "SETHOST for nonexistent user " << source;
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
@@ -755,7 +755,7 @@ int anope_event_chghost(const Anope::string &source, int ac, const char **av)
|
||||
u = finduser(source);
|
||||
if (!u)
|
||||
{
|
||||
Alog(LOG_DEBUG) << "FHOST for nonexistent user " << source;
|
||||
Log(LOG_DEBUG) << "FHOST for nonexistent user " << source;
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
|
||||
@@ -417,7 +417,7 @@ int anope_event_fmode(const Anope::string &source, int ac, const char **av)
|
||||
{
|
||||
newav[o] = av[n];
|
||||
++o;
|
||||
Alog(LOG_DEBUG) << "Param: " << newav[o - 1];
|
||||
Log(LOG_DEBUG) << "Param: " << newav[o - 1];
|
||||
}
|
||||
++n;
|
||||
}
|
||||
@@ -476,7 +476,7 @@ int anope_event_fjoin(const Anope::string &source, int ac, const char **av)
|
||||
ChannelMode *cm = ModeManager::FindChannelModeByChar(buf[0]);
|
||||
if (!cm)
|
||||
{
|
||||
Alog() << "Receeved unknown mode prefix " << buf[0] << " in FJOIN string";
|
||||
Log() << "Receeved unknown mode prefix " << buf[0] << " in FJOIN string";
|
||||
buf.erase(buf.begin());
|
||||
continue;
|
||||
}
|
||||
@@ -490,7 +490,7 @@ int anope_event_fjoin(const Anope::string &source, int ac, const char **av)
|
||||
User *u = finduser(buf);
|
||||
if (!u)
|
||||
{
|
||||
Alog(LOG_DEBUG) << "FJOIN for nonexistant user " << buf << " on " << c->name;
|
||||
Log(LOG_DEBUG) << "FJOIN for nonexistant user " << buf << " on " << c->name;
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -575,7 +575,7 @@ int anope_event_topic(const Anope::string &source, int ac, const char **av)
|
||||
|
||||
if (!c)
|
||||
{
|
||||
Alog(LOG_DEBUG) << "debug: TOPIC " << merge_args(ac - 1, av + 1) << " for nonexistent channel " << av[0];
|
||||
Log(LOG_DEBUG) << "debug: TOPIC " << merge_args(ac - 1, av + 1) << " for nonexistent channel " << av[0];
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
@@ -660,7 +660,7 @@ int anope_event_setname(const Anope::string &source, int ac, const char **av)
|
||||
u = finduser(source);
|
||||
if (!u)
|
||||
{
|
||||
Alog(LOG_DEBUG) << "SETNAME for nonexistent user " << source;
|
||||
Log(LOG_DEBUG) << "SETNAME for nonexistent user " << source;
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
@@ -675,7 +675,7 @@ int anope_event_chgname(const Anope::string &source, int ac, const char **av)
|
||||
u = finduser(source);
|
||||
if (!u)
|
||||
{
|
||||
Alog(LOG_DEBUG) << "FNAME for nonexistent user " << source;
|
||||
Log(LOG_DEBUG) << "FNAME for nonexistent user " << source;
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
@@ -690,7 +690,7 @@ int anope_event_setident(const Anope::string &source, int ac, const char **av)
|
||||
u = finduser(source);
|
||||
if (!u)
|
||||
{
|
||||
Alog(LOG_DEBUG) << "SETIDENT for nonexistent user " << source;
|
||||
Log(LOG_DEBUG) << "SETIDENT for nonexistent user " << source;
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
@@ -705,7 +705,7 @@ int anope_event_chgident(const Anope::string &source, int ac, const char **av)
|
||||
u = finduser(av[0]);
|
||||
if (!u)
|
||||
{
|
||||
Alog(LOG_DEBUG) << "CHGIDENT for nonexistent user " << av[0];
|
||||
Log(LOG_DEBUG) << "CHGIDENT for nonexistent user " << av[0];
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
@@ -720,7 +720,7 @@ int anope_event_sethost(const Anope::string &source, int ac, const char **av)
|
||||
u = finduser(source);
|
||||
if (!u)
|
||||
{
|
||||
Alog(LOG_DEBUG) << "SETHOST for nonexistent user " << source;
|
||||
Log(LOG_DEBUG) << "SETHOST for nonexistent user " << source;
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
@@ -791,7 +791,7 @@ int anope_event_chghost(const Anope::string &source, int ac, const char **av)
|
||||
u = finduser(source);
|
||||
if (!u)
|
||||
{
|
||||
Alog(LOG_DEBUG) << "FHOST for nonexistent user " << source;
|
||||
Log(LOG_DEBUG) << "FHOST for nonexistent user " << source;
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
@@ -1206,7 +1206,7 @@ int anope_event_endburst(const Anope::string &source, int ac, const char **av)
|
||||
u->RemoveMode(NickServ, UMODE_REGISTERED);
|
||||
}
|
||||
|
||||
Alog() << "Processed ENDBURST for " << s->GetName();
|
||||
Log(LOG_DEBUG) << "Processed ENDBURST for " << s->GetName();
|
||||
|
||||
s->Sync(true);
|
||||
return MOD_CONT;
|
||||
|
||||
@@ -415,7 +415,7 @@ int anope_event_fmode(const Anope::string &source, int ac, const char **av)
|
||||
{
|
||||
newav[o] = av[n];
|
||||
++o;
|
||||
Alog(LOG_DEBUG) << "Param: " << newav[o - 1];
|
||||
Log(LOG_DEBUG) << "Param: " << newav[o - 1];
|
||||
}
|
||||
++n;
|
||||
}
|
||||
@@ -474,7 +474,7 @@ int anope_event_fjoin(const Anope::string &source, int ac, const char **av)
|
||||
ChannelMode *cm = ModeManager::FindChannelModeByChar(buf[0]);
|
||||
if (!cm)
|
||||
{
|
||||
Alog() << "Recieved unknown mode prefix " << buf[0] << " in FJOIN string";
|
||||
Log() << "Recieved unknown mode prefix " << buf[0] << " in FJOIN string";
|
||||
buf.erase(buf.begin());
|
||||
continue;
|
||||
}
|
||||
@@ -488,7 +488,7 @@ int anope_event_fjoin(const Anope::string &source, int ac, const char **av)
|
||||
User *u = finduser(buf);
|
||||
if (!u)
|
||||
{
|
||||
Alog(LOG_DEBUG) << "FJOIN for nonexistant user " << buf << " on " << c->name;
|
||||
Log(LOG_DEBUG) << "FJOIN for nonexistant user " << buf << " on " << c->name;
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -573,7 +573,7 @@ int anope_event_topic(const Anope::string &source, int ac, const char **av)
|
||||
|
||||
if (!c)
|
||||
{
|
||||
Alog(LOG_DEBUG) << "debug: TOPIC " << merge_args(ac - 1, av + 1) << " for nonexistent channel " << av[0];
|
||||
Log(LOG_DEBUG) << "debug: TOPIC " << merge_args(ac - 1, av + 1) << " for nonexistent channel " << av[0];
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
@@ -658,7 +658,7 @@ int anope_event_setname(const Anope::string &source, int ac, const char **av)
|
||||
u = finduser(source);
|
||||
if (!u)
|
||||
{
|
||||
Alog(LOG_DEBUG) << "SETNAME for nonexistent user " << source;
|
||||
Log(LOG_DEBUG) << "SETNAME for nonexistent user " << source;
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
@@ -673,7 +673,7 @@ int anope_event_chgname(const Anope::string &source, int ac, const char **av)
|
||||
u = finduser(source);
|
||||
if (!u)
|
||||
{
|
||||
Alog(LOG_DEBUG) << "FNAME for nonexistent user " << source;
|
||||
Log(LOG_DEBUG) << "FNAME for nonexistent user " << source;
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
@@ -688,7 +688,7 @@ int anope_event_setident(const Anope::string &source, int ac, const char **av)
|
||||
u = finduser(source);
|
||||
if (!u)
|
||||
{
|
||||
Alog(LOG_DEBUG) << "SETIDENT for nonexistent user " << source;
|
||||
Log(LOG_DEBUG) << "SETIDENT for nonexistent user " << source;
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
@@ -702,7 +702,7 @@ int anope_event_chgident(const Anope::string &source, int ac, const char **av)
|
||||
|
||||
if (!u)
|
||||
{
|
||||
Alog(LOG_DEBUG) << "FIDENT for nonexistent user " << source;
|
||||
Log(LOG_DEBUG) << "FIDENT for nonexistent user " << source;
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
@@ -717,7 +717,7 @@ int anope_event_sethost(const Anope::string &source, int ac, const char **av)
|
||||
u = finduser(source);
|
||||
if (!u)
|
||||
{
|
||||
Alog(LOG_DEBUG) << "SETHOST for nonexistent user " << source;
|
||||
Log(LOG_DEBUG) << "SETHOST for nonexistent user " << source;
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
@@ -788,7 +788,7 @@ int anope_event_chghost(const Anope::string &source, int ac, const char **av)
|
||||
u = finduser(source);
|
||||
if (!u)
|
||||
{
|
||||
Alog(LOG_DEBUG) << "FHOST for nonexistent user " << source;
|
||||
Log(LOG_DEBUG) << "FHOST for nonexistent user " << source;
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
@@ -974,7 +974,7 @@ int anope_event_capab(const Anope::string &source, int ac, const char **av)
|
||||
if (cm)
|
||||
ModeManager::AddChannelMode(cm);
|
||||
else
|
||||
Alog() << "Unrecognized mode string in CAPAB CHANMODES: " << capab;
|
||||
Log() << "Unrecognized mode string in CAPAB CHANMODES: " << capab;
|
||||
}
|
||||
}
|
||||
else if (!strcasecmp(av[0], "USERMODES"))
|
||||
@@ -1030,7 +1030,7 @@ int anope_event_capab(const Anope::string &source, int ac, const char **av)
|
||||
if (um)
|
||||
ModeManager::AddUserMode(um);
|
||||
else
|
||||
Alog() << "Unrecognized mode string in CAPAB USERMODES: " << capab;
|
||||
Log() << "Unrecognized mode string in CAPAB USERMODES: " << capab;
|
||||
}
|
||||
}
|
||||
else if (!strcasecmp(av[0], "MODULES"))
|
||||
@@ -1179,7 +1179,7 @@ int anope_event_endburst(const Anope::string &source, int ac, const char **av)
|
||||
u->RemoveMode(NickServ, UMODE_REGISTERED);
|
||||
}
|
||||
|
||||
Alog() << "Processed ENDBURST for " << s->GetName();
|
||||
Log(LOG_DEBUG) << "Processed ENDBURST for " << s->GetName();
|
||||
|
||||
s->Sync(true);
|
||||
return MOD_CONT;
|
||||
|
||||
@@ -102,7 +102,7 @@ void ratbox_cmd_pass(const Anope::string &pass)
|
||||
send_cmd("", "PASS %s TS 6 :%s", pass.c_str(), TS6SID.c_str());
|
||||
}
|
||||
|
||||
class RatboxProto : public IRCDTS6Proto
|
||||
class RatboxProto : public IRCDProto
|
||||
{
|
||||
void SendGlobopsInternal(BotInfo *source, const Anope::string &buf)
|
||||
{
|
||||
@@ -327,7 +327,7 @@ int anope_event_sjoin(const Anope::string &source, int ac, const char **av)
|
||||
ChannelMode *cm = ModeManager::FindChannelModeByChar(ch);
|
||||
if (!cm)
|
||||
{
|
||||
Alog() << "Received unknown mode prefix " << buf[0] << " in SJOIN string";
|
||||
Log() << "Received unknown mode prefix " << buf[0] << " in SJOIN string";
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -338,7 +338,7 @@ int anope_event_sjoin(const Anope::string &source, int ac, const char **av)
|
||||
User *u = finduser(buf);
|
||||
if (!u)
|
||||
{
|
||||
Alog(LOG_DEBUG) << "SJOIN for nonexistant user " << buf << " on " << c->name;
|
||||
Log(LOG_DEBUG) << "SJOIN for nonexistant user " << buf << " on " << c->name;
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -443,7 +443,7 @@ int anope_event_topic(const Anope::string &source, int ac, const char **av)
|
||||
|
||||
if (!c)
|
||||
{
|
||||
Alog(LOG_DEBUG) << "TOPIC " << merge_args(ac - 1, av + 1) << " for nonexistent channel " << av[0];
|
||||
Log(LOG_DEBUG) << "TOPIC " << merge_args(ac - 1, av + 1) << " for nonexistent channel " << av[0];
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
@@ -487,7 +487,7 @@ int anope_event_tburst(const Anope::string &source, int ac, const char **av)
|
||||
|
||||
if (!c)
|
||||
{
|
||||
Alog(LOG_DEBUG) << "debug: TOPIC " << merge_args(ac - 1, av + 1) << " for nonexistent channel " << av[0];
|
||||
Log(LOG_DEBUG) << "debug: TOPIC " << merge_args(ac - 1, av + 1) << " for nonexistent channel " << av[0];
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
@@ -721,7 +721,7 @@ int anope_event_bmask(const Anope::string &source, int ac, const char **av)
|
||||
int anope_event_error(const Anope::string &source, int ac, const char **av)
|
||||
{
|
||||
if (ac >= 1)
|
||||
Alog(LOG_DEBUG) << av[0];
|
||||
Log(LOG_DEBUG) << av[0];
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
|
||||
@@ -735,7 +735,7 @@ int anope_event_setname(const Anope::string &source, int ac, const char **av)
|
||||
u = finduser(source);
|
||||
if (!u)
|
||||
{
|
||||
Alog(LOG_DEBUG) << "SETNAME for nonexistent user " << source;
|
||||
Log(LOG_DEBUG) << "SETNAME for nonexistent user " << source;
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
@@ -753,7 +753,7 @@ int anope_event_chgname(const Anope::string &source, int ac, const char **av)
|
||||
u = finduser(av[0]);
|
||||
if (!u)
|
||||
{
|
||||
Alog(LOG_DEBUG) << "CHGNAME for nonexistent user " << av[0];
|
||||
Log(LOG_DEBUG) << "CHGNAME for nonexistent user " << av[0];
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
@@ -771,7 +771,7 @@ int anope_event_setident(const Anope::string &source, int ac, const char **av)
|
||||
u = finduser(source);
|
||||
if (!u)
|
||||
{
|
||||
Alog(LOG_DEBUG) << "SETIDENT for nonexistent user " << source;
|
||||
Log(LOG_DEBUG) << "SETIDENT for nonexistent user " << source;
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
@@ -789,7 +789,7 @@ int anope_event_chgident(const Anope::string &source, int ac, const char **av)
|
||||
u = finduser(av[0]);
|
||||
if (!u)
|
||||
{
|
||||
Alog(LOG_DEBUG) << "CHGIDENT for nonexistent user " << av[0];
|
||||
Log(LOG_DEBUG) << "CHGIDENT for nonexistent user " << av[0];
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
@@ -807,7 +807,7 @@ int anope_event_sethost(const Anope::string &source, int ac, const char **av)
|
||||
u = finduser(source);
|
||||
if (!u)
|
||||
{
|
||||
Alog(LOG_DEBUG) << "SETHOST for nonexistent user " << source;
|
||||
Log(LOG_DEBUG) << "SETHOST for nonexistent user " << source;
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
@@ -920,7 +920,7 @@ int anope_event_chghost(const Anope::string &source, int ac, const char **av)
|
||||
u = finduser(av[0]);
|
||||
if (!u)
|
||||
{
|
||||
Alog(LOG_DEBUG) << "debug: CHGHOST for nonexistent user " << av[0];
|
||||
Log(LOG_DEBUG) << "debug: CHGHOST for nonexistent user " << av[0];
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
@@ -972,9 +972,9 @@ int anope_event_error(const Anope::string &source, int ac, const char **av)
|
||||
{
|
||||
if (av[0])
|
||||
{
|
||||
Alog(LOG_DEBUG) << av[0];
|
||||
Log(LOG_DEBUG) << av[0];
|
||||
if (strstr(av[0], "No matching link configuration"))
|
||||
Alog() << "Error: Your IRCD's link block may not be setup correctly, please check unrealircd.conf";
|
||||
Log() << "Error: Your IRCD's link block may not be setup correctly, please check unrealircd.conf";
|
||||
}
|
||||
return MOD_CONT;
|
||||
}
|
||||
@@ -1063,7 +1063,7 @@ int anope_event_sjoin(const Anope::string &source, int ac, const char **av)
|
||||
ChannelMode *cm = ModeManager::FindChannelModeByChar(ch);
|
||||
if (!cm)
|
||||
{
|
||||
Alog() << "Received unknown mode prefix " << buf[0] << " in SJOIN string";
|
||||
Log() << "Received unknown mode prefix " << buf[0] << " in SJOIN string";
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -1074,7 +1074,7 @@ int anope_event_sjoin(const Anope::string &source, int ac, const char **av)
|
||||
User *u = finduser(buf);
|
||||
if (!u)
|
||||
{
|
||||
Alog(LOG_DEBUG) << "SJOIN for nonexistant user " << buf << " on " << c->name;
|
||||
Log(LOG_DEBUG) << "SJOIN for nonexistant user " << buf << " on " << c->name;
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ class SocketEngineEPoll : public SocketEngineBase
|
||||
|
||||
if (max <= 0)
|
||||
{
|
||||
Alog() << "Can't determine maximum number of open sockets";
|
||||
Log() << "Can't determine maximum number of open sockets";
|
||||
throw ModuleException("Can't determine maximum number of open sockets");
|
||||
}
|
||||
|
||||
@@ -28,7 +28,7 @@ class SocketEngineEPoll : public SocketEngineBase
|
||||
|
||||
if (EngineHandle == -1)
|
||||
{
|
||||
Alog() << "Could not initialize epoll socket engine: " << strerror(errno);
|
||||
Log() << "Could not initialize epoll socket engine: " << strerror(errno);
|
||||
throw ModuleException(Anope::string("Could not initialize epoll socket engine: ") + strerror(errno));
|
||||
}
|
||||
|
||||
@@ -52,7 +52,7 @@ class SocketEngineEPoll : public SocketEngineBase
|
||||
|
||||
if (epoll_ctl(EngineHandle, EPOLL_CTL_ADD, ev.data.fd, &ev) == -1)
|
||||
{
|
||||
Alog() << "Unable to add fd " << ev.data.fd << " to socketengine epoll: " << strerror(errno);
|
||||
Log() << "Unable to add fd " << ev.data.fd << " to socketengine epoll: " << strerror(errno);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -71,7 +71,7 @@ class SocketEngineEPoll : public SocketEngineBase
|
||||
|
||||
if (epoll_ctl(EngineHandle, EPOLL_CTL_DEL, ev.data.fd, &ev) == -1)
|
||||
{
|
||||
Alog() << "Unable to delete fd " << ev.data.fd << " from socketengine epoll: " << strerror(errno);
|
||||
Log() << "Unable to delete fd " << ev.data.fd << " from socketengine epoll: " << strerror(errno);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -90,7 +90,7 @@ class SocketEngineEPoll : public SocketEngineBase
|
||||
ev.data.fd = s->GetSock();
|
||||
|
||||
if (epoll_ctl(EngineHandle, EPOLL_CTL_MOD, ev.data.fd, &ev) == -1)
|
||||
Alog() << "Unable to mark fd " << ev.data.fd << " as writable in socketengine epoll: " << strerror(errno);
|
||||
Log() << "Unable to mark fd " << ev.data.fd << " as writable in socketengine epoll: " << strerror(errno);
|
||||
}
|
||||
|
||||
void ClearWriteable(Socket *s)
|
||||
@@ -103,7 +103,7 @@ class SocketEngineEPoll : public SocketEngineBase
|
||||
ev.data.fd = s->GetSock();
|
||||
|
||||
if (epoll_ctl(EngineHandle, EPOLL_CTL_MOD, ev.data.fd, &ev) == -1)
|
||||
Alog() << "Unable to mark fd " << ev.data.fd << " as unwritable in socketengine epoll: " << strerror(errno);
|
||||
Log() << "Unable to mark fd " << ev.data.fd << " as unwritable in socketengine epoll: " << strerror(errno);
|
||||
}
|
||||
|
||||
void Process()
|
||||
@@ -112,7 +112,7 @@ class SocketEngineEPoll : public SocketEngineBase
|
||||
|
||||
if (total == -1)
|
||||
{
|
||||
Alog() << "SockEngine::Process(): error " << strerror(errno);
|
||||
Log() << "SockEngine::Process(): error " << strerror(errno);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -65,7 +65,7 @@ class SocketEngineSelect : public SocketEngineBase
|
||||
#ifdef WIN32
|
||||
errno = WSAGetLastError();
|
||||
#endif
|
||||
Alog() << "SockEngine::Process(): error" << strerror(errno);
|
||||
Log() << "SockEngine::Process(): error" << strerror(errno);
|
||||
}
|
||||
else if (sresult)
|
||||
{
|
||||
|
||||
+8
-7
@@ -20,16 +20,15 @@ BotInfo *MemoServ = NULL;
|
||||
BotInfo *NickServ = NULL;
|
||||
BotInfo *OperServ = NULL;
|
||||
|
||||
BotInfo::BotInfo(const Anope::string &nnick, const Anope::string &nuser, const Anope::string &nhost, const Anope::string &nreal) : User(nnick, ts6_uid_retrieve())
|
||||
BotInfo::BotInfo(const Anope::string &nnick, const Anope::string &nuser, const Anope::string &nhost, const Anope::string &nreal) : User(nnick, nuser, nhost, ts6_uid_retrieve())
|
||||
{
|
||||
this->ident = nuser;
|
||||
this->host = nhost;
|
||||
this->realname = nreal;
|
||||
this->server = Me;
|
||||
|
||||
this->chancount = 0;
|
||||
this->lastmsg = this->created = time(NULL);
|
||||
|
||||
this->SetFlag(BI_CORE);
|
||||
if (!Config->s_ChanServ.empty() && nnick.equals_ci(Config->s_ChanServ))
|
||||
ChanServ = this;
|
||||
else if (!Config->s_BotServ.empty() && nnick.equals_ci(Config->s_BotServ))
|
||||
@@ -44,6 +43,8 @@ BotInfo::BotInfo(const Anope::string &nnick, const Anope::string &nuser, const A
|
||||
NickServ = this;
|
||||
else if (!Config->s_GlobalNoticer.empty() && nnick.equals_ci(Config->s_GlobalNoticer))
|
||||
Global = this;
|
||||
else
|
||||
this->UnsetFlag(BI_CORE);
|
||||
|
||||
BotListByNick[this->nick] = this;
|
||||
if (!this->uid.empty())
|
||||
@@ -168,16 +169,16 @@ void BotInfo::Join(Channel *c, bool update_ts)
|
||||
|
||||
c->JoinUser(this);
|
||||
ChannelContainer *cc = this->FindChannel(c);
|
||||
for (std::list<ChannelModeStatus *>::iterator it = BotModes.begin(), it_end = BotModes.end(); it != it_end; ++it)
|
||||
for (int i = 0; i < Config->BotModeList.size(); ++i)
|
||||
{
|
||||
if (!update_ts)
|
||||
{
|
||||
c->SetMode(this, *it, this->nick, false);
|
||||
c->SetMode(this, Config->BotModeList[i], this->nick, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
cc->Status->SetFlag((*it)->Name);
|
||||
c->SetModeInternal(*it, this->nick, false);
|
||||
cc->Status->SetFlag(Config->BotModeList[i]->Name);
|
||||
c->SetModeInternal(Config->BotModeList[i], this->nick, false);
|
||||
}
|
||||
}
|
||||
if (!update_ts)
|
||||
|
||||
+39
-33
@@ -37,6 +37,8 @@ Channel::Channel(const Anope::string &name, time_t ts)
|
||||
this->ci = cs_findchan(this->name);
|
||||
if (this->ci)
|
||||
this->ci->c = this;
|
||||
|
||||
Log(NULL, this, "create");
|
||||
|
||||
FOREACH_MOD(I_OnChannelCreate, OnChannelCreate(this));
|
||||
}
|
||||
@@ -49,7 +51,7 @@ Channel::~Channel()
|
||||
|
||||
FOREACH_MOD(I_OnChannelDelete, OnChannelDelete(this));
|
||||
|
||||
Alog(LOG_DEBUG) << "Deleting channel " << this->name;
|
||||
Log(NULL, this, "destroy");
|
||||
|
||||
for (bd = this->bd; bd; bd = next)
|
||||
{
|
||||
@@ -114,7 +116,7 @@ void Channel::Sync()
|
||||
|
||||
void Channel::JoinUser(User *user)
|
||||
{
|
||||
Alog(LOG_DEBUG) << user->nick << " joins " << this->name;
|
||||
Log(user, this, "join");
|
||||
|
||||
ChannelStatus *Status = new ChannelStatus();
|
||||
ChannelContainer *cc = new ChannelContainer(this);
|
||||
@@ -128,7 +130,7 @@ void Channel::JoinUser(User *user)
|
||||
bool update_ts = false;
|
||||
if (this->ci && this->ci->HasFlag(CI_PERSIST) && this->creation_time > this->ci->time_registered)
|
||||
{
|
||||
Alog(LOG_DEBUG) << "Changing TS of " << this->name << " from " << this->creation_time << " to " << this->ci->time_registered;
|
||||
Log(LOG_DEBUG) << "Changing TS of " << this->name << " from " << this->creation_time << " to " << this->ci->time_registered;
|
||||
this->creation_time = this->ci->time_registered;
|
||||
update_ts = true;
|
||||
}
|
||||
@@ -188,13 +190,13 @@ void Channel::DeleteUser(User *user)
|
||||
if (this->ci)
|
||||
update_cs_lastseen(user, this->ci);
|
||||
|
||||
Alog(LOG_DEBUG) << user->nick << " leaves " << this->name;
|
||||
Log(user, this, "leaves");
|
||||
|
||||
CUserList::iterator cit, cit_end = this->users.end();
|
||||
for (cit = this->users.begin(); (*cit)->user != user && cit != cit_end; ++cit);
|
||||
if (cit == cit_end)
|
||||
{
|
||||
Alog(LOG_DEBUG) << "Channel::DeleteUser() tried to delete nonexistant user " << user->nick << " from channel " << this->name;
|
||||
Log(LOG_DEBUG) << "Channel::DeleteUser() tried to delete nonexistant user " << user->nick << " from channel " << this->name;
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -206,7 +208,7 @@ void Channel::DeleteUser(User *user)
|
||||
for (uit = user->chans.begin(); (*uit)->chan != this && uit != uit_end; ++uit);
|
||||
if (uit == uit_end)
|
||||
{
|
||||
Alog(LOG_DEBUG) << "Channel::DeleteUser() tried to delete nonexistant channel " << this->name << " from " << user->nick << "'s channel list";
|
||||
Log(LOG_DEBUG) << "Channel::DeleteUser() tried to delete nonexistant channel " << this->name << " from " << user->nick << "'s channel list";
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -310,7 +312,7 @@ void Channel::SetModeInternal(ChannelMode *cm, const Anope::string ¶m, bool
|
||||
{
|
||||
if (param.empty())
|
||||
{
|
||||
Alog() << "Channel::SetModeInternal() mode " << cm->ModeChar << " with no parameter for channel " << this->name;
|
||||
Log() << "Channel::SetModeInternal() mode " << cm->ModeChar << " with no parameter for channel " << this->name;
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -321,11 +323,11 @@ void Channel::SetModeInternal(ChannelMode *cm, const Anope::string ¶m, bool
|
||||
|
||||
if (!u)
|
||||
{
|
||||
Alog(LOG_DEBUG) << "MODE " << this->name << " +" << cm->ModeChar << " for nonexistant user " << param;
|
||||
Log() << "MODE " << this->name << " +" << cm->ModeChar << " for nonexistant user " << param;
|
||||
return;
|
||||
}
|
||||
|
||||
Alog(LOG_DEBUG) << "Setting +" << cm->ModeChar << " on " << this->name << " for " << u->nick;
|
||||
Log(LOG_DEBUG) << "Setting +" << cm->ModeChar << " on " << this->name << " for " << u->nick;
|
||||
|
||||
/* Set the status on the user */
|
||||
ChannelContainer *cc = u->FindChannel(this);
|
||||
@@ -342,7 +344,7 @@ void Channel::SetModeInternal(ChannelMode *cm, const Anope::string ¶m, bool
|
||||
{
|
||||
if (param.empty())
|
||||
{
|
||||
Alog() << "Channel::SetModeInternal() mode " << cm->ModeChar << " with no parameter for channel " << this->name;
|
||||
Log() << "Channel::SetModeInternal() mode " << cm->ModeChar << " with no parameter for channel " << this->name;
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -357,7 +359,7 @@ void Channel::SetModeInternal(ChannelMode *cm, const Anope::string ¶m, bool
|
||||
{
|
||||
if (cm->Type != MODE_PARAM)
|
||||
{
|
||||
Alog() << "Channel::SetModeInternal() mode " << cm->ModeChar << " for " << this->name << " with a paramater, but its not a param mode";
|
||||
Log() << "Channel::SetModeInternal() mode " << cm->ModeChar << " for " << this->name << " with a paramater, but its not a param mode";
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -437,7 +439,7 @@ void Channel::RemoveModeInternal(ChannelMode *cm, const Anope::string ¶m, bo
|
||||
{
|
||||
if (param.empty())
|
||||
{
|
||||
Alog() << "Channel::RemoveModeInternal() mode " << cm->ModeChar << " with no parameter for channel " << this->name;
|
||||
Log() << "Channel::RemoveModeInternal() mode " << cm->ModeChar << " with no parameter for channel " << this->name;
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -449,17 +451,17 @@ void Channel::RemoveModeInternal(ChannelMode *cm, const Anope::string ¶m, bo
|
||||
/* Reset modes on bots if we're supposed to */
|
||||
if (bi)
|
||||
{
|
||||
if (std::find(BotModes.begin(), BotModes.end(), cm) != BotModes.end())
|
||||
if (std::find(Config->BotModeList.begin(), Config->BotModeList.end(), cm) != Config->BotModeList.end())
|
||||
this->SetMode(bi, cm, bi->nick);
|
||||
}
|
||||
|
||||
if (!u)
|
||||
{
|
||||
Alog() << "Channel::RemoveModeInternal() MODE " << this->name << "-" << cm->ModeChar << " for nonexistant user " << param;
|
||||
Log() << "Channel::RemoveModeInternal() MODE " << this->name << "-" << cm->ModeChar << " for nonexistant user " << param;
|
||||
return;
|
||||
}
|
||||
|
||||
Alog(LOG_DEBUG) << "Setting -" << cm->ModeChar << " on " << this->name << " for " << u->nick;
|
||||
Log(LOG_DEBUG) << "Setting -" << cm->ModeChar << " on " << this->name << " for " << u->nick;
|
||||
|
||||
/* Remove the status on the user */
|
||||
ChannelContainer *cc = u->FindChannel(this);
|
||||
@@ -473,7 +475,7 @@ void Channel::RemoveModeInternal(ChannelMode *cm, const Anope::string ¶m, bo
|
||||
{
|
||||
if (param.empty())
|
||||
{
|
||||
Alog() << "Channel::RemoveModeInternal() mode " << cm->ModeChar << " with no parameter for channel " << this->name;
|
||||
Log() << "Channel::RemoveModeInternal() mode " << cm->ModeChar << " with no parameter for channel " << this->name;
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -904,11 +906,11 @@ void ChanSetInternalModes(Channel *c, int ac, const char **av)
|
||||
c->RemoveModeInternal(cm, av[j]);
|
||||
}
|
||||
else
|
||||
Alog() << "warning: ChanSetInternalModes() recieved more modes requiring params than params, modes: " << merge_args(ac, av) << ", ac: " << ac << ", j: " << j;
|
||||
Log() << "warning: ChanSetInternalModes() recieved more modes requiring params than params, modes: " << merge_args(ac, av) << ", ac: " << ac << ", j: " << j;
|
||||
}
|
||||
|
||||
if (j + k + 1 < ac)
|
||||
Alog() << "warning: ChanSetInternalModes() recieved more params than modes requiring them, modes: " << merge_args(ac, av) << ", ac: " << ac << ", j: " << j << " k: " << k;
|
||||
Log() << "warning: ChanSetInternalModes() recieved more params than modes requiring them, modes: " << merge_args(ac, av) << ", ac: " << ac << ", j: " << j << " k: " << k;
|
||||
}
|
||||
|
||||
/** Kick a user from a channel internally
|
||||
@@ -924,11 +926,11 @@ void Channel::KickInternal(const Anope::string &source, const Anope::string &nic
|
||||
User *user = bi ? bi : finduser(nick);
|
||||
if (!user)
|
||||
{
|
||||
Alog(LOG_DEBUG) << "Channel::KickInternal got a nonexistent user " << nick << " on " << this->name << ": " << reason;
|
||||
Log() << "Channel::KickInternal got a nonexistent user " << nick << " on " << this->name << ": " << reason;
|
||||
return;
|
||||
}
|
||||
|
||||
Alog(LOG_DEBUG) << "Channel::KickInternal kicking " << user->nick << " from " << this->name;
|
||||
Log(user, this, "kick") << "by " << source << " (" << reason << ")";
|
||||
|
||||
Anope::string chname = this->name;
|
||||
|
||||
@@ -938,7 +940,7 @@ void Channel::KickInternal(const Anope::string &source, const Anope::string &nic
|
||||
this->DeleteUser(user);
|
||||
}
|
||||
else
|
||||
Alog(LOG_DEBUG) << "Channel::KickInternal got kick for user " << user->nick << " who isn't on channel " << this->name << " ?";
|
||||
Log() << "Channel::KickInternal got kick for user " << user->nick << " who isn't on channel " << this->name << " ?";
|
||||
|
||||
/* Bots get rejoined */
|
||||
if (bi)
|
||||
@@ -1113,7 +1115,7 @@ void do_join(const Anope::string &source, int ac, const char **av)
|
||||
user = finduser(source);
|
||||
if (!user)
|
||||
{
|
||||
Alog(LOG_DEBUG) << "JOIN from nonexistent user " << source << ": " << merge_args(ac, av);
|
||||
Log() << "JOIN from nonexistent user " << source << ": " << merge_args(ac, av);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1150,7 +1152,7 @@ void do_join(const Anope::string &source, int ac, const char **av)
|
||||
/* Their time is older, we lose */
|
||||
if (chan->creation_time > ts)
|
||||
{
|
||||
Alog(LOG_DEBUG) << "Recieved an older TS " << chan->name << " in JOIN, changing from " << chan->creation_time << " to " << ts;
|
||||
Log(LOG_DEBUG) << "Recieved an older TS " << chan->name << " in JOIN, changing from " << chan->creation_time << " to " << ts;
|
||||
chan->creation_time = ts;
|
||||
|
||||
chan->Reset();
|
||||
@@ -1188,7 +1190,7 @@ void do_kick(const Anope::string &source, int ac, const char **av)
|
||||
Channel *c = findchan(av[0]);
|
||||
if (!c)
|
||||
{
|
||||
Alog(LOG_DEBUG) << "Recieved kick for nonexistant channel " << av[0];
|
||||
Log() << "Recieved kick for nonexistant channel " << av[0];
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1210,7 +1212,7 @@ void do_part(const Anope::string &source, int ac, const char **av)
|
||||
User *user = finduser(source);
|
||||
if (!user)
|
||||
{
|
||||
Alog(LOG_DEBUG) << "PART from nonexistent user " << source << ": " << merge_args(ac, av);
|
||||
Log() << "PART from nonexistent user " << source << ": " << merge_args(ac, av);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1221,17 +1223,17 @@ void do_part(const Anope::string &source, int ac, const char **av)
|
||||
Channel *c = findchan(buf);
|
||||
|
||||
if (!c)
|
||||
Alog(LOG_DEBUG) << "Recieved PART from " << user->nick << " for nonexistant channel " << buf;
|
||||
|
||||
if (user->FindChannel(c))
|
||||
Log() << "Recieved PART from " << user->nick << " for nonexistant channel " << buf;
|
||||
else if (user->FindChannel(c))
|
||||
{
|
||||
Log(user, c, "part") << "Reason: " << (av[1] ? av[1] : "No reason");
|
||||
FOREACH_MOD(I_OnPrePartChannel, OnPrePartChannel(user, c));
|
||||
Anope::string ChannelName = c->name;
|
||||
c->DeleteUser(user);
|
||||
FOREACH_MOD(I_OnPartChannel, OnPartChannel(user, findchan(ChannelName), ChannelName, av[1] ? av[1] : ""));
|
||||
}
|
||||
else
|
||||
Alog(LOG_DEBUG) << "Recieved PART from " << user->nick << " for " << c->name << ", but " << user->nick << " isn't in " << c->name << "?";
|
||||
Log() << "Recieved PART from " << user->nick << " for " << c->name << ", but " << user->nick << " isn't in " << c->name << "?";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1264,7 +1266,7 @@ void do_cmode(const Anope::string &source, int ac, const char **av)
|
||||
++av;
|
||||
}
|
||||
else
|
||||
Alog() << "TSMODE enabled but MODE has no valid TS";
|
||||
Log() << "TSMODE enabled but MODE has no valid TS";
|
||||
}
|
||||
|
||||
/* :42XAAAAAO TMODE 1106409026 #ircops +b *!*@*.aol.com */
|
||||
@@ -1281,7 +1283,7 @@ void do_cmode(const Anope::string &source, int ac, const char **av)
|
||||
{
|
||||
ci = cs_findchan(av[0]);
|
||||
if (!ci || ci->HasFlag(CI_FORBIDDEN))
|
||||
Alog(LOG_DEBUG) << "MODE " << merge_args(ac - 1, av + 1) << " for nonexistant channel " << av[0];
|
||||
Log(LOG_DEBUG) << "MODE " << merge_args(ac - 1, av + 1) << " for nonexistant channel " << av[0];
|
||||
}
|
||||
return;
|
||||
}
|
||||
@@ -1298,6 +1300,10 @@ void do_cmode(const Anope::string &source, int ac, const char **av)
|
||||
|
||||
--ac;
|
||||
++av;
|
||||
|
||||
User *u = finduser(source);
|
||||
if (u)
|
||||
Log(u, c, "mode") << merge_args(ac, av);
|
||||
ChanSetInternalModes(c, ac, av);
|
||||
}
|
||||
|
||||
@@ -1313,7 +1319,7 @@ void do_topic(const Anope::string &source, int ac, const char **av)
|
||||
|
||||
if (!c)
|
||||
{
|
||||
Alog(LOG_DEBUG) << "TOPIC " << merge_args(ac - 1, av + 1) << " for nonexistent channel " << av[0];
|
||||
Log() << "TOPIC " << merge_args(ac - 1, av + 1) << " for nonexistent channel " << av[0];
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1380,7 +1386,7 @@ void chan_set_correct_modes(User *user, Channel *c, int give_modes)
|
||||
if (ci->HasFlag(CI_FORBIDDEN) || c->name[0] == '+')
|
||||
return;
|
||||
|
||||
Alog(LOG_DEBUG) << "Setting correct user modes for " << user->nick << " on " << c->name << " (" << (give_modes ? "" : "not ") << "giving modes)";
|
||||
Log(LOG_DEBUG) << "Setting correct user modes for " << user->nick << " on " << c->name << " (" << (give_modes ? "" : "not ") << "giving modes)";
|
||||
|
||||
if (give_modes && !get_ignore(user->nick) && (!user->Account() || user->Account()->HasFlag(NI_AUTOOP)))
|
||||
{
|
||||
|
||||
+8
-8
@@ -252,7 +252,7 @@ void check_modes(Channel *c)
|
||||
|
||||
if (!c)
|
||||
{
|
||||
Alog(LOG_DEBUG) << "check_modes called with NULL values";
|
||||
Log() << "check_modes called with NULL values";
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -263,7 +263,7 @@ void check_modes(Channel *c)
|
||||
if (c->server_modecount >= 3 && c->chanserv_modecount >= 3)
|
||||
{
|
||||
ircdproto->SendGlobops(NULL, "Warning: unable to set modes on channel %s. Are your servers' U:lines configured correctly?", c->name.c_str());
|
||||
Alog() << Config->s_ChanServ << ": Bouncy modes on channel " << c->name;
|
||||
Log() << "Bouncy modes on channel " << c->name;
|
||||
c->bouncy_modes = 1;
|
||||
return;
|
||||
}
|
||||
@@ -497,7 +497,7 @@ int check_topiclock(Channel *c, time_t topic_time)
|
||||
|
||||
if (!c)
|
||||
{
|
||||
Alog(LOG_DEBUG) << "check_topiclock called with NULL values";
|
||||
Log() << "check_topiclock called with NULL values";
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -572,7 +572,7 @@ void expire_chans()
|
||||
continue;
|
||||
|
||||
Anope::string chname = ci->name;
|
||||
Alog() << "Expiring channel " << ci->name << " (founder: " << (ci->founder ? ci->founder->display : "(none)") << " )";
|
||||
Log(LOG_NORMAL, "chanserv/expire") << "Expiring channel " << ci->name << " (founder: " << (ci->founder ? ci->founder->display : "(none)") << " )";
|
||||
delete ci;
|
||||
FOREACH_MOD(I_OnChanExpire, OnChanExpire(chname));
|
||||
}
|
||||
@@ -599,13 +599,13 @@ void cs_remove_nick(const NickCore *nc)
|
||||
NickCore *nc2 = ci->successor;
|
||||
if (!nc2->IsServicesOper() && Config->CSMaxReg && nc2->channelcount >= Config->CSMaxReg)
|
||||
{
|
||||
Alog() << Config->s_ChanServ << ": Successor (" << nc2->display << " ) of " << ci->name << " owns too many channels, deleting channel",
|
||||
Log(LOG_NORMAL, "chanserv/expire") << "Successor (" << nc2->display << " ) of " << ci->name << " owns too many channels, deleting channel",
|
||||
delete ci;
|
||||
continue;
|
||||
}
|
||||
else
|
||||
{
|
||||
Alog() << Config->s_ChanServ << ": Transferring foundership of " << ci->name << " from deleted nick " << nc->display << " to successor " << nc2->display;
|
||||
Log(LOG_NORMAL, "chanserv/expire") << "Transferring foundership of " << ci->name << " from deleted nick " << nc->display << " to successor " << nc2->display;
|
||||
ci->founder = nc2;
|
||||
ci->successor = NULL;
|
||||
++nc2->channelcount;
|
||||
@@ -613,7 +613,7 @@ void cs_remove_nick(const NickCore *nc)
|
||||
}
|
||||
else
|
||||
{
|
||||
Alog() << Config->s_ChanServ << ": Deleting channel " << ci->name << "owned by deleted nick " << nc->display;
|
||||
Log(LOG_NORMAL, "chanserv/expire") << "Deleting channel " << ci->name << "owned by deleted nick " << nc->display;
|
||||
|
||||
if (ModeManager::FindChannelModeByName(CMODE_REGISTERED))
|
||||
{
|
||||
@@ -712,7 +712,7 @@ void reset_levels(ChannelInfo *ci)
|
||||
|
||||
if (!ci)
|
||||
{
|
||||
Alog(LOG_DEBUG) << "reset_levels() called with NULL values";
|
||||
Log() << "reset_levels() called with NULL values";
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
+4
-4
@@ -58,7 +58,7 @@ void mod_run_cmd(BotInfo *bi, User *u, Command *c, const Anope::string &command,
|
||||
if (!c->HasFlag(CFLAG_ALLOW_UNREGISTERED) && !u->IsIdentified())
|
||||
{
|
||||
notice_lang(bi->nick, u, NICK_IDENTIFY_REQUIRED, Config->s_NickServ.c_str());
|
||||
Alog() << "Access denied for unregistered user " << u->nick << " with service " << bi->nick << " and command " << command;
|
||||
Log(LOG_COMMAND, "denied", bi) << "Access denied for unregistered user " << u->GetMask() << " with command " << command;
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -103,13 +103,13 @@ void mod_run_cmd(BotInfo *bi, User *u, Command *c, const Anope::string &command,
|
||||
if (ci->HasFlag(CI_FORBIDDEN) && !c->HasFlag(CFLAG_ALLOW_FORBIDDEN))
|
||||
{
|
||||
notice_lang(bi->nick, u, CHAN_X_FORBIDDEN, ci->name.c_str());
|
||||
Alog() << "Access denied for user " << u->nick << " with service " << bi->nick << " and command " << command << " because of FORBIDDEN channel " << ci->name;
|
||||
Log(LOG_COMMAND, "denied", bi) << "Access denied for user " << u->GetMask() << " with command " << command << " because of FORBIDDEN channel " << ci->name;
|
||||
return;
|
||||
}
|
||||
else if (ci->HasFlag(CI_SUSPENDED) && !c->HasFlag(CFLAG_ALLOW_SUSPENDED))
|
||||
{
|
||||
notice_lang(bi->nick, u, CHAN_X_FORBIDDEN, ci->name.c_str());
|
||||
Alog() << "Access denied for user " << u->nick << " with service " << bi->nick <<" and command " << command << " because of SUSPENDED channel " << ci->name;
|
||||
Log(LOG_COMMAND, "denied", bi) << "Access denied for user " << u->GetMask() << " with command " << command << " because of SUSPENDED channel " << ci->name;
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -131,7 +131,7 @@ void mod_run_cmd(BotInfo *bi, User *u, Command *c, const Anope::string &command,
|
||||
if (!c->permission.empty() && !u->Account()->HasCommand(c->permission))
|
||||
{
|
||||
notice_lang(bi->nick, u, ACCESS_DENIED);
|
||||
Alog() << "Access denied for user " << u->nick << " with service " << bi->nick << " and command " << command;
|
||||
Log(LOG_COMMAND, "denied", bi) << "Access denied for user " << u->GetMask() << " with command " << command;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
+104
-23
@@ -82,7 +82,7 @@ ServerConfig::ServerConfig() : errstr(""), config_data()
|
||||
else if (option.equals_ci("msg"))
|
||||
{
|
||||
if (!this->UsePrivmsg)
|
||||
Alog() << "msg in <nickserv:defaults> can only be used when UsePrivmsg is set";
|
||||
Log() << "msg in <nickserv:defaults> can only be used when UsePrivmsg is set";
|
||||
else
|
||||
this->NSDefFlags.SetFlag(NI_MSG);
|
||||
}
|
||||
@@ -262,7 +262,7 @@ ServerConfig::ServerConfig() : errstr(""), config_data()
|
||||
|
||||
/* Check the user keys */
|
||||
if (this->UserKey1 == this->UserKey2 || this->UserKey1 == this->UserKey3 || this->UserKey3 == this->UserKey2)
|
||||
Alog() << "Every UserKey must be different. It's for YOUR safety! Remember that!";
|
||||
Log() << "Every UserKey must be different. It's for YOUR safety! Remember that!";
|
||||
|
||||
/**
|
||||
* Check all DEFCON dependiencies...
|
||||
@@ -349,10 +349,6 @@ ServerConfig::ServerConfig() : errstr(""), config_data()
|
||||
}
|
||||
|
||||
SetDefaultMLock(this);
|
||||
|
||||
/* Disable the log channel if its defined in the conf, but not enabled */
|
||||
if (this->LogChannel.empty() && LogChan)
|
||||
LogChan = false;
|
||||
}
|
||||
|
||||
bool ServerConfig::CheckOnce(const Anope::string &tag)
|
||||
@@ -614,13 +610,13 @@ bool ValidateNickLen(ServerConfig *, const Anope::string &, const Anope::string
|
||||
int nicklen = data.GetInteger();
|
||||
if (!nicklen)
|
||||
{
|
||||
Alog() << "You have not defined the <networkinfo:nicklen> directive. It is strongly";
|
||||
Alog() << "adviced that you do configure this correctly in your services.conf";
|
||||
Log() << "You have not defined the <networkinfo:nicklen> directive. It is strongly";
|
||||
Log() << "adviced that you do configure this correctly in your services.conf";
|
||||
data.Set(31);
|
||||
}
|
||||
else if (nicklen < 1)
|
||||
{
|
||||
Alog() << "<networkinfo:nicklen> has an invalid value; setting to 31";
|
||||
Log() << "<networkinfo:nicklen> has an invalid value; setting to 31";
|
||||
data.Set(31);
|
||||
}
|
||||
return true;
|
||||
@@ -645,7 +641,7 @@ bool ValidateGlobalOnCycle(ServerConfig *config, const Anope::string &tag, const
|
||||
{
|
||||
if (data.GetValue().empty())
|
||||
{
|
||||
Alog() << "<" << tag << ":" << value << "> was undefined, disabling <options:globaloncycle>";
|
||||
Log() << "<" << tag << ":" << value << "> was undefined, disabling <options:globaloncycle>";
|
||||
config->GlobalOnCycle = false;
|
||||
}
|
||||
}
|
||||
@@ -733,7 +729,7 @@ static bool DoOperType(ServerConfig *config, const Anope::string &, const Anope:
|
||||
{
|
||||
if ((*it)->GetName().equals_ci(tok))
|
||||
{
|
||||
Alog() << "Inheriting commands and privs from " << (*it)->GetName() << " to " << ot->GetName();
|
||||
Log() << "Inheriting commands and privs from " << (*it)->GetName() << " to " << ot->GetName();
|
||||
ot->Inherits(*it);
|
||||
break;
|
||||
}
|
||||
@@ -797,7 +793,7 @@ static bool DoneOpers(ServerConfig *config, const Anope::string &)
|
||||
OperType *ot = *tit;
|
||||
if (ot->GetName().equals_ci(type))
|
||||
{
|
||||
Alog() << "Tied oper " << na->nc->display << " to type " << type;
|
||||
Log() << "Tied oper " << na->nc->display << " to type " << type;
|
||||
na->nc->ot = ot;
|
||||
}
|
||||
}
|
||||
@@ -833,6 +829,91 @@ bool DoneModules(ServerConfig *, const Anope::string &)
|
||||
return true;
|
||||
}
|
||||
|
||||
bool InitLogs(ServerConfig *config, const Anope::string &)
|
||||
{
|
||||
for (unsigned i = 0; i < config->LogInfos.size(); ++i)
|
||||
{
|
||||
LogInfo *l = config->LogInfos[i];
|
||||
|
||||
for (std::list<Anope::string>::const_iterator sit = l->Targets.begin(), sit_end = l->Targets.end(); sit != sit_end; ++sit)
|
||||
{
|
||||
const Anope::string &target = *sit;
|
||||
|
||||
if (target[0] == '#')
|
||||
{
|
||||
Channel *c = findchan(target);
|
||||
if (c && c->HasFlag(CH_LOGCHAN))
|
||||
{
|
||||
for (CUserList::const_iterator cit = c->users.begin(), cit_end = c->users.end(); cit != cit_end; ++cit)
|
||||
{
|
||||
UserContainer *uc = *cit;
|
||||
BotInfo *bi = findbot(uc->user->nick);
|
||||
|
||||
if (bi && bi->HasFlag(BI_CORE))
|
||||
{
|
||||
bi->Part(c, "Reloading");
|
||||
}
|
||||
}
|
||||
|
||||
c->UnsetFlag(CH_PERSIST);
|
||||
c->UnsetFlag(CH_LOGCHAN);
|
||||
if (c->users.empty())
|
||||
delete c;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
delete config->LogInfos[i];
|
||||
}
|
||||
config->LogInfos.clear();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool DoLogs(ServerConfig *config, const Anope::string &, const Anope::string *, ValueList &values, int *)
|
||||
{
|
||||
//{"target", "source", "logage", "admin", "override", "commands", "servers", "channels", "users", "normal", "rawio", "debug"},
|
||||
Anope::string targets = values[0].GetValue();
|
||||
ValueItem vi(targets);
|
||||
if (!ValidateNotEmpty(config, "log", "target", vi))
|
||||
throw ConfigException("One or more values in your configuration file failed to validate. Please see your log for more information.");
|
||||
|
||||
Anope::string source = values[1].GetValue();
|
||||
int logage = values[2].GetInteger();
|
||||
Anope::string admin = values[3].GetValue();
|
||||
Anope::string override = values[4].GetValue();
|
||||
Anope::string commands = values[5].GetValue();
|
||||
Anope::string servers = values[6].GetValue();
|
||||
Anope::string channels = values[7].GetValue();
|
||||
Anope::string users = values[8].GetValue();
|
||||
bool normal = values[9].GetBool();
|
||||
bool rawio = values[10].GetBool();
|
||||
bool ldebug = values[11].GetBool();
|
||||
|
||||
LogInfo *l = new LogInfo(logage, normal, rawio, ldebug);
|
||||
l->Targets = BuildStringList(targets);
|
||||
l->Sources = BuildStringList(source);
|
||||
l->Admin = BuildStringList(admin);
|
||||
l->Override = BuildStringList(override);
|
||||
l->Commands = BuildStringList(commands);
|
||||
l->Servers = BuildStringList(servers);
|
||||
l->Channels = BuildStringList(channels);
|
||||
l->Users = BuildStringList(users);
|
||||
|
||||
config->LogInfos.push_back(l);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool DoneLogs(ServerConfig *config, const Anope::string &)
|
||||
{
|
||||
InitLogChannels(config);
|
||||
|
||||
Log() << "Loaded " << config->LogInfos.size() << " log blocks";
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void ServerConfig::Read()
|
||||
{
|
||||
errstr.clear();
|
||||
@@ -902,8 +983,6 @@ void ServerConfig::Read()
|
||||
{"serverinfo", "hostname", "", new ValueContainerString(&this->ServiceHost), DT_STRING | DT_NORELOAD, ValidateNotEmpty},
|
||||
{"serverinfo", "pid", "services.pid", new ValueContainerString(&this->PIDFilename), DT_STRING | DT_NORELOAD, ValidateNotEmpty},
|
||||
{"serverinfo", "motd", "services.motd", new ValueContainerString(&this->MOTDFilename), DT_STRING, ValidateNotEmpty},
|
||||
{"networkinfo", "logchannel", "", new ValueContainerString(&this->LogChannel), DT_STRING, NoValidation},
|
||||
{"networkinfo", "logbot", "no", new ValueContainerBool(&this->LogBot), DT_BOOLEAN, NoValidation},
|
||||
{"networkinfo", "networkname", "", new ValueContainerString(&this->NetworkName), DT_STRING, ValidateNotEmpty},
|
||||
{"networkinfo", "nicklen", "0", new ValueContainerUInt(&this->NickLen), DT_UINTEGER | DT_NORELOAD, ValidateNickLen},
|
||||
{"networkinfo", "userlen", "10", new ValueContainerUInt(&this->UserLen), DT_UINTEGER | DT_NORELOAD, NoValidation},
|
||||
@@ -930,7 +1009,6 @@ void ServerConfig::Read()
|
||||
{"options", "useprivmsg", "no", new ValueContainerBool(&this->UsePrivmsg), DT_BOOLEAN, NoValidation},
|
||||
{"options", "usestrictprivmsg", "no", new ValueContainerBool(&this->UseStrictPrivMsg), DT_BOOLEAN, NoValidation},
|
||||
{"options", "dumpcore", "yes", new ValueContainerBool(&this->DumpCore), DT_BOOLEAN | DT_NORELOAD, NoValidation},
|
||||
{"options", "logusers", "no", new ValueContainerBool(&this->LogUsers), DT_BOOLEAN, NoValidation},
|
||||
{"options", "hidestatso", "no", new ValueContainerBool(&this->HideStatsO), DT_BOOLEAN, NoValidation},
|
||||
{"options", "globaloncycle", "no", new ValueContainerBool(&this->GlobalOnCycle), DT_BOOLEAN, NoValidation},
|
||||
{"options", "globaloncycledown", "", new ValueContainerString(&this->GlobalOnCycleMessage), DT_STRING, ValidateGlobalOnCycle},
|
||||
@@ -940,7 +1018,6 @@ void ServerConfig::Read()
|
||||
{"options", "restrictopernicks", "no", new ValueContainerBool(&this->RestrictOperNicks), DT_BOOLEAN, NoValidation},
|
||||
{"options", "newscount", "3", new ValueContainerUInt(&this->NewsCount), DT_UINTEGER, NoValidation},
|
||||
{"options", "ulineservers", "", new ValueContainerString(&UlineServers), DT_STRING, NoValidation},
|
||||
{"options", "enablelogchannel", "no", new ValueContainerBool(&LogChan), DT_BOOLEAN, NoValidation},
|
||||
{"options", "mlock", "+nrt", new ValueContainerString(&this->MLock), DT_STRING, NoValidation},
|
||||
{"options", "botmodes", "", new ValueContainerString(&this->BotModes), DT_STRING, NoValidation},
|
||||
{"options", "maxretries", "10", new ValueContainerUInt(&this->MaxRetries), DT_UINTEGER, NoValidation},
|
||||
@@ -1017,7 +1094,6 @@ void ServerConfig::Read()
|
||||
{"operserv", "globaldescription", "Global Noticer", new ValueContainerString(&this->desc_GlobalNoticer), DT_STRING | DT_NORELOAD, ValidateNotEmpty},
|
||||
{"operserv", "modules", "", new ValueContainerString(&OperCoreModules), DT_STRING, NoValidation},
|
||||
{"operserv", "superadmin", "no", new ValueContainerBool(&this->SuperAdmin), DT_BOOLEAN, NoValidation},
|
||||
{"operserv", "logmaxusers", "no", new ValueContainerBool(&this->LogMaxUsers), DT_BOOLEAN, NoValidation},
|
||||
{"operserv", "autokillexpiry", "0", new ValueContainerTime(&this->AutokillExpiry), DT_TIME, ValidateNotZero},
|
||||
{"operserv", "chankillexpiry", "0", new ValueContainerTime(&this->ChankillExpiry), DT_TIME, ValidateNotZero},
|
||||
{"operserv", "snlineexpiry", "0", new ValueContainerTime(&this->SNLineExpiry), DT_TIME, ValidateNotZero},
|
||||
@@ -1067,6 +1143,11 @@ void ServerConfig::Read()
|
||||
{"", ""},
|
||||
{DT_CHARPTR},
|
||||
InitModules, DoModule, DoneModules},
|
||||
{"log",
|
||||
{"target", "source", "logage", "admin", "override", "commands", "servers", "channels", "users", "normal", "rawio", "debug", ""},
|
||||
{"", "", "7", "", "", "", "", "", "", "", "no", "no", ""},
|
||||
{DT_STRING, DT_STRING, DT_INTEGER, DT_STRING, DT_STRING, DT_STRING, DT_STRING, DT_STRING, DT_STRING, DT_BOOLEAN, DT_BOOLEAN, DT_BOOLEAN},
|
||||
InitLogs, DoLogs, DoneLogs},
|
||||
{"opertype",
|
||||
{"name", "inherits", "commands", "privs", ""},
|
||||
{"", "", "", "", ""},
|
||||
@@ -1339,10 +1420,10 @@ void ServerConfig::Read()
|
||||
}
|
||||
throw ConfigException(ce);
|
||||
}
|
||||
Alog(LOG_DEBUG) << "End config";
|
||||
Log(LOG_DEBUG) << "End config";
|
||||
for (int Index = 0; !Once[Index].empty(); ++Index)
|
||||
CheckOnce(Once[Index]);
|
||||
Alog() << "Done reading configuration file.";
|
||||
Log() << "Done reading configuration file.";
|
||||
}
|
||||
|
||||
bool ServerConfig::LoadConf(ConfigDataHash &target, const Anope::string &filename)
|
||||
@@ -1358,7 +1439,7 @@ bool ServerConfig::LoadConf(ConfigDataHash &target, const Anope::string &filenam
|
||||
errstr << "File " << filename << " could not be opened." << std::endl;
|
||||
return false;
|
||||
}
|
||||
Alog(LOG_DEBUG) << "Start to read conf " << filename;
|
||||
Log(LOG_DEBUG) << "Start to read conf " << filename;
|
||||
// Start reading characters...
|
||||
while (getline(conf, line.str()))
|
||||
{
|
||||
@@ -1462,7 +1543,7 @@ bool ServerConfig::LoadConf(ConfigDataHash &target, const Anope::string &filenam
|
||||
return false;
|
||||
}
|
||||
// this is the same as the below section for testing if itemname is non-empty after the loop, but done inside it to allow the above construct
|
||||
Alog(LOG_DEBUG) << "ln "<< linenumber << " EOL: s='" << section << "' '" << itemname << "' set to '" << wordbuffer << "'";
|
||||
Log(LOG_DEBUG) << "ln "<< linenumber << " EOL: s='" << section << "' '" << itemname << "' set to '" << wordbuffer << "'";
|
||||
sectiondata.push_back(KeyVal(itemname, wordbuffer));
|
||||
wordbuffer.clear();
|
||||
itemname.clear();
|
||||
@@ -1504,7 +1585,7 @@ bool ServerConfig::LoadConf(ConfigDataHash &target, const Anope::string &filenam
|
||||
errstr << "Item without value: " << filename << ":" << linenumber << std::endl;
|
||||
return false;
|
||||
}
|
||||
Alog(LOG_DEBUG) << "ln " << linenumber << " EOL: s='" << section << "' '" << itemname << "' set to '" << wordbuffer << "'";
|
||||
Log(LOG_DEBUG) << "ln " << linenumber << " EOL: s='" << section << "' '" << itemname << "' set to '" << wordbuffer << "'";
|
||||
sectiondata.push_back(KeyVal(itemname, wordbuffer));
|
||||
wordbuffer.clear();
|
||||
itemname.clear();
|
||||
@@ -1555,7 +1636,7 @@ bool ServerConfig::ConfValue(ConfigDataHash &target, const Anope::string &tag, c
|
||||
{
|
||||
if (!allow_linefeeds && j->second.find('\n') != Anope::string::npos)
|
||||
{
|
||||
Alog(LOG_DEBUG) << "Value of <" << tag << ":" << var << "> contains a linefeed, and linefeeds in this value are not permitted -- stripped to spaces.";
|
||||
Log(LOG_DEBUG) << "Value of <" << tag << ":" << var << "> contains a linefeed, and linefeeds in this value are not permitted -- stripped to spaces.";
|
||||
j->second.replace_all_cs("\n", " ");
|
||||
}
|
||||
else
|
||||
|
||||
+2
-2
@@ -38,7 +38,7 @@ int enc_decrypt(const Anope::string &src, Anope::string &dest)
|
||||
size_t pos = src.find(':');
|
||||
if (pos == Anope::string::npos)
|
||||
{
|
||||
Alog() << "Error: enc_decrypt() called with invalid password string (" << src << ")";
|
||||
Log() << "Error: enc_decrypt() called with invalid password string (" << src << ")";
|
||||
return -1;
|
||||
}
|
||||
Anope::string hashm(src.begin(), src.begin() + pos);
|
||||
@@ -62,7 +62,7 @@ int enc_check_password(Anope::string &plaintext, Anope::string &password)
|
||||
size_t pos = password.find(':');
|
||||
if (pos == Anope::string::npos)
|
||||
{
|
||||
Alog() << "Error: enc_check_password() called with invalid password string (" << password << ")";
|
||||
Log() << "Error: enc_check_password() called with invalid password string (" << password << ")";
|
||||
return 0;
|
||||
}
|
||||
Anope::string hashm(password.begin(), password.begin() + pos);
|
||||
|
||||
+58
-99
@@ -25,7 +25,7 @@ void introduce_user(const Anope::string &user)
|
||||
time_t now = time(NULL);
|
||||
static time_t lasttime = now - 4;
|
||||
if (lasttime >= now - 3)
|
||||
fatal("introduce_user loop detected");
|
||||
throw FatalException("introduce_user loop detected");
|
||||
lasttime = now;
|
||||
|
||||
if (user.empty())
|
||||
@@ -54,6 +54,8 @@ void introduce_user(const Anope::string &user)
|
||||
/* Load MLock from the database now that we know what modes exist */
|
||||
for (registered_channel_map::iterator it = RegisteredChannelList.begin(), it_end = RegisteredChannelList.end(); it != it_end; ++it)
|
||||
it->second->LoadMLock();
|
||||
/* Setup log chanels */
|
||||
InitLogChannels(Config);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -81,7 +83,7 @@ static int set_group()
|
||||
}
|
||||
else
|
||||
{
|
||||
Alog() << "Unknown run group '" << RUNGROUP << "'";
|
||||
Log() << "Unknown run group '" << RUNGROUP << "'";
|
||||
return -1;
|
||||
}
|
||||
#endif
|
||||
@@ -182,7 +184,7 @@ static void write_pidfile()
|
||||
atexit(remove_pidfile);
|
||||
}
|
||||
else
|
||||
log_perror("Warning: cannot write to PID file %s", Config->PIDFilename.c_str());
|
||||
throw FatalException("Can not write to PID file " + Config->PIDFilename);
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
@@ -191,7 +193,7 @@ static void write_pidfile()
|
||||
|
||||
int openlog_failed = 0, openlog_errno = 0;
|
||||
|
||||
int init_primary(int ac, char **av)
|
||||
void Init(int ac, char **av)
|
||||
{
|
||||
int started_from_term = isatty(0) && isatty(1) && isatty(2);
|
||||
|
||||
@@ -200,38 +202,38 @@ int init_primary(int ac, char **av)
|
||||
umask(DEFUMASK);
|
||||
#endif
|
||||
if (set_group() < 0)
|
||||
return -1;
|
||||
throw FatalException("set_group() fail");
|
||||
|
||||
/* Parse command line arguments */
|
||||
ParseCommandLineArguments(ac, av);
|
||||
|
||||
if (GetCommandLineArgument("version", 'v'))
|
||||
{
|
||||
Alog(LOG_TERMINAL) << "Anope-" << Anope::Version() << " -- " << Anope::Build();
|
||||
return -1;
|
||||
Log(LOG_TERMINAL) << "Anope-" << Anope::Version() << " -- " << Anope::Build();
|
||||
throw FatalException();
|
||||
}
|
||||
|
||||
if (GetCommandLineArgument("help", 'h'))
|
||||
{
|
||||
Alog(LOG_TERMINAL) << "Anope-" << Anope::Version() << " -- " << Anope::Build();
|
||||
Alog(LOG_TERMINAL) << "Anope IRC Services (http://www.anope.org)";
|
||||
Alog(LOG_TERMINAL) << "Usage ./" << SERVICES_BIN << " [options] ...";
|
||||
Alog(LOG_TERMINAL) << "-c, --config=filename.conf";
|
||||
Alog(LOG_TERMINAL) << "-d, --debug[=level]";
|
||||
Alog(LOG_TERMINAL) << " --dir=services_directory";
|
||||
Alog(LOG_TERMINAL) << "-h, --help";
|
||||
Alog(LOG_TERMINAL) << " --log=log_filename";
|
||||
Alog(LOG_TERMINAL) << "-e, --noexpire";
|
||||
Alog(LOG_TERMINAL) << "-n, --nofork";
|
||||
Alog(LOG_TERMINAL) << " --nothird";
|
||||
Alog(LOG_TERMINAL) << " --protocoldebug";
|
||||
Alog(LOG_TERMINAL) << "-r, --readonly";
|
||||
Alog(LOG_TERMINAL) << "-s, --support";
|
||||
Alog(LOG_TERMINAL) << "-v, --version";
|
||||
Alog(LOG_TERMINAL) << "";
|
||||
Alog(LOG_TERMINAL) << "Further support is available from http://www.anope.org";
|
||||
Alog(LOG_TERMINAL) << "Or visit us on IRC at irc.anope.org #anope";
|
||||
return -1;
|
||||
Log(LOG_TERMINAL) << "Anope-" << Anope::Version() << " -- " << Anope::Build();
|
||||
Log(LOG_TERMINAL) << "Anope IRC Services (http://www.anope.org)";
|
||||
Log(LOG_TERMINAL) << "Usage ./" << SERVICES_BIN << " [options] ...";
|
||||
Log(LOG_TERMINAL) << "-c, --config=filename.conf";
|
||||
Log(LOG_TERMINAL) << "-d, --debug[=level]";
|
||||
Log(LOG_TERMINAL) << " --dir=services_directory";
|
||||
Log(LOG_TERMINAL) << "-h, --help";
|
||||
Log(LOG_TERMINAL) << " --log=log_filename";
|
||||
Log(LOG_TERMINAL) << "-e, --noexpire";
|
||||
Log(LOG_TERMINAL) << "-n, --nofork";
|
||||
Log(LOG_TERMINAL) << " --nothird";
|
||||
Log(LOG_TERMINAL) << " --protocoldebug";
|
||||
Log(LOG_TERMINAL) << "-r, --readonly";
|
||||
Log(LOG_TERMINAL) << "-s, --support";
|
||||
Log(LOG_TERMINAL) << "-v, --version";
|
||||
Log(LOG_TERMINAL) << "";
|
||||
Log(LOG_TERMINAL) << "Further support is available from http://www.anope.org";
|
||||
Log(LOG_TERMINAL) << "Or visit us on IRC at irc.anope.org #anope";
|
||||
throw FatalException();
|
||||
}
|
||||
|
||||
if (GetCommandLineArgument("nofork", 'n'))
|
||||
@@ -264,10 +266,7 @@ int init_primary(int ac, char **av)
|
||||
if (level > 0)
|
||||
debug = level;
|
||||
else
|
||||
{
|
||||
Alog(LOG_TERMINAL) << "Invalid option given to --debug";
|
||||
return -1;
|
||||
}
|
||||
throw FatalException("Invalid option given to --debug");
|
||||
}
|
||||
else
|
||||
++debug;
|
||||
@@ -276,49 +275,36 @@ int init_primary(int ac, char **av)
|
||||
if (GetCommandLineArgument("config", 'c', Arg))
|
||||
{
|
||||
if (Arg.empty())
|
||||
{
|
||||
Alog(LOG_TERMINAL) << "The --config option requires a file name";
|
||||
return -1;
|
||||
}
|
||||
throw FatalException("The --config option requires a file name");
|
||||
services_conf = Arg;
|
||||
}
|
||||
|
||||
if (GetCommandLineArgument("dir", 0, Arg))
|
||||
{
|
||||
if (Arg.empty())
|
||||
{
|
||||
Alog(LOG_TERMINAL) << "The --dir option requires a directory name";
|
||||
return -1;
|
||||
}
|
||||
throw FatalException("The --dir option requires a directory name");
|
||||
services_dir = Arg;
|
||||
}
|
||||
|
||||
if (GetCommandLineArgument("log", 0, Arg))
|
||||
{
|
||||
if (Arg.empty())
|
||||
{
|
||||
Alog(LOG_TERMINAL) << "The --log option requires a file name";
|
||||
return -1;
|
||||
}
|
||||
throw FatalException("The --log option requires a file name");
|
||||
log_filename = Arg;
|
||||
}
|
||||
|
||||
/* Chdir to Services data directory. */
|
||||
if (chdir(services_dir.c_str()) < 0)
|
||||
{
|
||||
fprintf(stderr, "chdir(%s): %s\n", services_dir.c_str(), strerror(errno));
|
||||
return -1;
|
||||
throw FatalException("Unable to chdir to " + services_dir + ": " + Anope::string(strerror(errno)));
|
||||
}
|
||||
|
||||
/* Open logfile, and complain if we didn't. */
|
||||
if (open_log() < 0)
|
||||
{
|
||||
openlog_errno = errno;
|
||||
if (started_from_term)
|
||||
fprintf(stderr, "Warning: unable to open log file %s: %s\n", log_filename.c_str(), strerror(errno));
|
||||
else
|
||||
openlog_failed = 1;
|
||||
}
|
||||
Log(LOG_TERMINAL) << "Anope " << Anope::Version() << ", " << Anope::Build();
|
||||
#ifdef _WIN32
|
||||
Log(LOG_TERMINAL) << "Using configuration file " << services_dir << "\\" << services_conf;
|
||||
#else
|
||||
Log(LOG_TERMINAL) << "Using configuration file " << services_dir << "/" << services_conf;
|
||||
#endif
|
||||
|
||||
/* Read configuration file; exit if there are problems. */
|
||||
try
|
||||
@@ -327,17 +313,17 @@ int init_primary(int ac, char **av)
|
||||
}
|
||||
catch (const ConfigException &ex)
|
||||
{
|
||||
Alog(LOG_TERMINAL) << ex.GetReason();
|
||||
Alog(LOG_TERMINAL) << "*** Support resources: Read through the services.conf self-contained";
|
||||
Alog(LOG_TERMINAL) << "*** documentation. Read the documentation files found in the 'docs'";
|
||||
Alog(LOG_TERMINAL) << "*** folder. Visit our portal located at http://www.anope.org/. Join";
|
||||
Alog(LOG_TERMINAL) << "*** our support channel on /server irc.anope.org channel #anope.";
|
||||
return -1;
|
||||
Log(LOG_TERMINAL) << ex.GetReason();
|
||||
Log(LOG_TERMINAL) << "*** Support resources: Read through the services.conf self-contained";
|
||||
Log(LOG_TERMINAL) << "*** documentation. Read the documentation files found in the 'docs'";
|
||||
Log(LOG_TERMINAL) << "*** folder. Visit our portal located at http://www.anope.org/. Join";
|
||||
Log(LOG_TERMINAL) << "*** our support channel on /server irc.anope.org channel #anope.";
|
||||
throw FatalException("Configuration file failed to validate");
|
||||
}
|
||||
|
||||
/* Add IRCD Protocol Module; exit if there are errors */
|
||||
if (protocol_module_init())
|
||||
return -1;
|
||||
throw FatalException("Unable to load protocol module");
|
||||
|
||||
/* Create me */
|
||||
Me = new Server(NULL, Config->ServerName, 0, Config->ServerDesc, Config->Numeric);
|
||||
@@ -377,19 +363,7 @@ int init_primary(int ac, char **av)
|
||||
|
||||
/* Load the socket engine */
|
||||
if (ModuleManager::LoadModule(Config->SocketEngine, NULL))
|
||||
{
|
||||
Alog(LOG_TERMINAL) << "Unable to load socket engine " << Config->SocketEngine;
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int init_secondary(int ac, char **av)
|
||||
{
|
||||
#ifndef _WIN32
|
||||
int started_from_term = isatty(0) && isatty(1) && isatty(2);
|
||||
#endif
|
||||
throw FatalException("Unable to load socket engine " + Config->SocketEngine);
|
||||
|
||||
/* Add Core MSG handles */
|
||||
moduleAddMsgs();
|
||||
@@ -399,15 +373,13 @@ int init_secondary(int ac, char **av)
|
||||
{
|
||||
int i;
|
||||
if ((i = fork()) < 0)
|
||||
{
|
||||
perror("fork()");
|
||||
return -1;
|
||||
}
|
||||
throw FatalException("Unable to fork");
|
||||
else if (i != 0)
|
||||
{
|
||||
Alog(LOG_TERMINAL) << "PID " << i;
|
||||
Log(LOG_TERMINAL) << "PID " << i;
|
||||
exit(0);
|
||||
}
|
||||
|
||||
if (started_from_term)
|
||||
{
|
||||
close(0);
|
||||
@@ -415,22 +387,15 @@ int init_secondary(int ac, char **av)
|
||||
close(2);
|
||||
}
|
||||
if (setpgid(0, 0) < 0)
|
||||
{
|
||||
perror("setpgid()");
|
||||
return -1;
|
||||
}
|
||||
throw FatalException("Unable to setpgid()");
|
||||
}
|
||||
#else
|
||||
if (!SupportedWindowsVersion())
|
||||
{
|
||||
Alog() << GetWindowsVersion() << " is not a supported version of Windows";
|
||||
|
||||
return -1;
|
||||
}
|
||||
throw FatalException(GetWindowsVersion() + " is not a supported version of Windows");
|
||||
if (!nofork)
|
||||
{
|
||||
Alog(LOG_TERMINAL) << "PID " << GetCurrentProcessId();
|
||||
Alog() << "Launching Anope into the background";
|
||||
Log(LOG_TERMINAL) << "PID " << GetCurrentProcessId();
|
||||
Log() << "Launching Anope into the background";
|
||||
FreeConsole();
|
||||
}
|
||||
#endif
|
||||
@@ -439,13 +404,9 @@ int init_secondary(int ac, char **av)
|
||||
write_pidfile();
|
||||
|
||||
/* Announce ourselves to the logfile. */
|
||||
Alog() << "Anope " << Anope::Version() << " (ircd protocol: " << version_protocol << ") starting up" << (debug || readonly ? " (options:" : "") << (debug ? " debug" : "") << (readonly ? " readonly" : "") << (debug || readonly ? ")" : "");
|
||||
Log() << "Anope " << Anope::Version() << " (ircd protocol: " << version_protocol << ") starting up" << (debug || readonly ? " (options:" : "") << (debug ? " debug" : "") << (readonly ? " readonly" : "") << (debug || readonly ? ")" : "");
|
||||
start_time = time(NULL);
|
||||
|
||||
/* If in read-only mode, close the logfile again. */
|
||||
if (readonly)
|
||||
close_log();
|
||||
|
||||
/* Set signal handlers. Catch certain signals to let us do things or
|
||||
* panic as necessary, and ignore all others.
|
||||
*/
|
||||
@@ -457,7 +418,7 @@ int init_secondary(int ac, char **av)
|
||||
|
||||
/* Initialize multi-language support */
|
||||
lang_init();
|
||||
Alog(LOG_DEBUG) << "Loaded languages";
|
||||
Log(LOG_DEBUG) << "Loaded languages";
|
||||
|
||||
/* Initialize subservices */
|
||||
ns_init();
|
||||
@@ -476,14 +437,12 @@ int init_secondary(int ac, char **av)
|
||||
add_entropy_userkeys();
|
||||
|
||||
/* Load up databases */
|
||||
Alog() << "Loading databases...";
|
||||
Log() << "Loading databases...";
|
||||
EventReturn MOD_RESULT;
|
||||
FOREACH_RESULT(I_OnLoadDatabase, OnLoadDatabase());
|
||||
Alog() << "Databases loaded";
|
||||
Log() << "Databases loaded";
|
||||
|
||||
FOREACH_MOD(I_OnPostLoadDatabases, OnPostLoadDatabases());
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
+9
-10
@@ -65,7 +65,7 @@ static void load_lang(int index, const char *filename)
|
||||
FILE *f;
|
||||
int32 num, i;
|
||||
|
||||
Alog(LOG_DEBUG) << "Loading language " << index << " from file `languages/" << filename << "'";
|
||||
Log(LOG_DEBUG) << "Loading language " << index << " from file `languages/" << filename << "'";
|
||||
snprintf(buf, sizeof(buf), "languages/%s", filename);
|
||||
#ifndef _WIN32
|
||||
const char *mode = "r";
|
||||
@@ -74,16 +74,15 @@ static void load_lang(int index, const char *filename)
|
||||
#endif
|
||||
if (!(f = fopen(buf, mode)))
|
||||
{
|
||||
log_perror("Failed to load language %d (%s)", index, filename);
|
||||
return;
|
||||
throw CoreException("Failed to load language " + stringify(index) + " (" + stringify(filename) + ")");
|
||||
}
|
||||
else if (read_int32(&num, f) < 0)
|
||||
{
|
||||
Alog() << "Failed to read number of strings for language " << index << "(" << filename << ")";
|
||||
Log() << "Failed to read number of strings for language " << index << "(" << filename << ")";
|
||||
return;
|
||||
}
|
||||
else if (num != NUM_STRINGS)
|
||||
Alog() << "Warning: Bad number of strings (" << num << " , wanted " << NUM_STRINGS << ") for language " << index << " (" << filename << ")";
|
||||
Log() << "Warning: Bad number of strings (" << num << " , wanted " << NUM_STRINGS << ") for language " << index << " (" << filename << ")";
|
||||
langtexts[index] = static_cast<char **>(scalloc(sizeof(char *), NUM_STRINGS));
|
||||
if (num > NUM_STRINGS)
|
||||
num = NUM_STRINGS;
|
||||
@@ -93,7 +92,7 @@ static void load_lang(int index, const char *filename)
|
||||
fseek(f, i * 8 + 4, SEEK_SET);
|
||||
if (read_int32(&pos, f) < 0 || read_int32(&len, f) < 0)
|
||||
{
|
||||
Alog() << "Failed to read entry " << i << " in language " << index << " (" << filename << ") TOC";
|
||||
Log() << "Failed to read entry " << i << " in language " << index << " (" << filename << ") TOC";
|
||||
while (--i >= 0)
|
||||
{
|
||||
if (langtexts[index][i])
|
||||
@@ -107,7 +106,7 @@ static void load_lang(int index, const char *filename)
|
||||
langtexts[index][i] = NULL;
|
||||
else if (len >= 65536)
|
||||
{
|
||||
Alog() << "Entry " << i << " in language " << index << " (" << filename << ") is too long (over 64k) -- corrupt TOC?";
|
||||
Log() << "Entry " << i << " in language " << index << " (" << filename << ") is too long (over 64k) -- corrupt TOC?";
|
||||
while (--i >= 0)
|
||||
{
|
||||
if (langtexts[index][i])
|
||||
@@ -119,7 +118,7 @@ static void load_lang(int index, const char *filename)
|
||||
}
|
||||
else if (len < 0)
|
||||
{
|
||||
Alog() << "Entry " << i << " in language " << index << " (" << filename << ") has negative length -- corrupt TOC?";
|
||||
Log() << "Entry " << i << " in language " << index << " (" << filename << ") has negative length -- corrupt TOC?";
|
||||
while (--i >= 0)
|
||||
{
|
||||
if (langtexts[index][i])
|
||||
@@ -135,7 +134,7 @@ static void load_lang(int index, const char *filename)
|
||||
fseek(f, pos, SEEK_SET);
|
||||
if (fread(langtexts[index][i], 1, len, f) != len)
|
||||
{
|
||||
Alog() << "Failed to read string " << i << " in language " << index << "(" << filename << ")";
|
||||
Log() << "Failed to read string " << i << " in language " << index << "(" << filename << ")";
|
||||
while (--i >= 0)
|
||||
{
|
||||
if (langtexts[index][i])
|
||||
@@ -225,7 +224,7 @@ void lang_init()
|
||||
Config->NSDefLanguage = DEF_LANGUAGE;
|
||||
|
||||
if (!langtexts[DEF_LANGUAGE])
|
||||
fatal("Unable to load default language");
|
||||
throw CoreException("Unable to load default language");
|
||||
for (i = 0; i < NUM_LANGS; ++i)
|
||||
{
|
||||
if (!langtexts[i])
|
||||
|
||||
-264
@@ -1,264 +0,0 @@
|
||||
/* Logging routines.
|
||||
*
|
||||
* (C) 2003-2010 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
*
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*/
|
||||
|
||||
#include "services.h"
|
||||
|
||||
static FILE *logfile;
|
||||
|
||||
static int curday = 0;
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
static int get_logname(Anope::string &name, struct tm *tm)
|
||||
{
|
||||
char timestamp[32];
|
||||
time_t t;
|
||||
|
||||
if (!tm)
|
||||
{
|
||||
time(&t);
|
||||
tm = localtime(&t);
|
||||
}
|
||||
|
||||
/* fix bug 577 */
|
||||
strftime(timestamp, sizeof(timestamp), "%Y%m%d", tm);
|
||||
name = Anope::string("logs/") + timestamp + "." + log_filename;
|
||||
curday = tm->tm_yday;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
static void remove_log()
|
||||
{
|
||||
time_t t;
|
||||
struct tm tm;
|
||||
|
||||
Anope::string name;
|
||||
|
||||
if (!Config->KeepLogs)
|
||||
return;
|
||||
|
||||
time(&t);
|
||||
t -= (60 * 60 * 24 * Config->KeepLogs);
|
||||
tm = *localtime(&t);
|
||||
|
||||
/* removed if from here cause get_logchan is always 1 */
|
||||
get_logname(name, &tm);
|
||||
DeleteFile(name.c_str());
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
static void checkday()
|
||||
{
|
||||
time_t t;
|
||||
struct tm tm;
|
||||
|
||||
time(&t);
|
||||
tm = *localtime(&t);
|
||||
|
||||
if (curday != tm.tm_yday)
|
||||
{
|
||||
close_log();
|
||||
remove_log();
|
||||
open_log();
|
||||
}
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
/* Open the log file. Return -1 if the log file could not be opened, else
|
||||
* return 0. */
|
||||
|
||||
int open_log()
|
||||
{
|
||||
Anope::string name;
|
||||
|
||||
if (logfile)
|
||||
return 0;
|
||||
|
||||
/* if removed again.. get_logname is always 1 */
|
||||
get_logname(name, NULL);
|
||||
logfile = fopen(name.c_str(), "a");
|
||||
|
||||
if (logfile)
|
||||
setbuf(logfile, NULL);
|
||||
return logfile ? 0 : -1;
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
/* Close the log file. */
|
||||
|
||||
void close_log()
|
||||
{
|
||||
if (!logfile)
|
||||
return;
|
||||
fclose(logfile);
|
||||
logfile = NULL;
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
/* added cause this is used over and over in the code */
|
||||
Anope::string log_gettimestamp()
|
||||
{
|
||||
time_t t;
|
||||
struct tm tm;
|
||||
char tbuf[256];
|
||||
|
||||
time(&t);
|
||||
tm = *localtime(&t);
|
||||
#if HAVE_GETTIMEOFDAY
|
||||
if (debug)
|
||||
{
|
||||
char *s;
|
||||
struct timeval tv;
|
||||
gettimeofday(&tv, NULL);
|
||||
strftime(tbuf, sizeof(tbuf) - 1, "[%b %d %H:%M:%S", &tm);
|
||||
s = tbuf + strlen(tbuf);
|
||||
s += snprintf(s, sizeof(tbuf) - (s - tbuf), ".%06d", static_cast<int>(tv.tv_usec));
|
||||
strftime(s, sizeof(tbuf) - (s - tbuf) - 1, " %Y]", &tm);
|
||||
}
|
||||
else
|
||||
#endif
|
||||
strftime(tbuf, sizeof(tbuf) - 1, "[%b %d %H:%M:%S %Y]", &tm);
|
||||
return tbuf;
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
/* Like alog(), but tack a ": " and a system error message (as returned by
|
||||
* strerror()) onto the end.
|
||||
*/
|
||||
|
||||
void log_perror(const char *fmt, ...)
|
||||
{
|
||||
va_list args;
|
||||
int errno_save = errno;
|
||||
char str[BUFSIZE];
|
||||
|
||||
checkday();
|
||||
|
||||
if (!fmt)
|
||||
return;
|
||||
|
||||
va_start(args, fmt);
|
||||
vsnprintf(str, sizeof(str), fmt, args);
|
||||
va_end(args);
|
||||
|
||||
Anope::string buf = log_gettimestamp();
|
||||
|
||||
if (logfile)
|
||||
fprintf(logfile, "%s %s : %s\n", buf.c_str(), str, strerror(errno_save));
|
||||
if (nofork)
|
||||
fprintf(stderr, "%s %s : %s\n", buf.c_str(), str, strerror(errno_save));
|
||||
errno = errno_save;
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
/* We've hit something we can't recover from. Let people know what
|
||||
* happened, then go down.
|
||||
*/
|
||||
|
||||
void fatal(const char *fmt, ...)
|
||||
{
|
||||
va_list args;
|
||||
char buf2[4096];
|
||||
|
||||
checkday();
|
||||
|
||||
if (!fmt)
|
||||
return;
|
||||
|
||||
va_start(args, fmt);
|
||||
vsnprintf(buf2, sizeof(buf2), fmt, args);
|
||||
va_end(args);
|
||||
|
||||
Anope::string buf = log_gettimestamp();
|
||||
|
||||
if (logfile)
|
||||
fprintf(logfile, "%s FATAL: %s\n", buf.c_str(), buf2);
|
||||
if (nofork)
|
||||
fprintf(stderr, "%s FATAL: %s\n", buf.c_str(), buf2);
|
||||
if (UplinkSock)
|
||||
ircdproto->SendGlobops(NULL, "FATAL ERROR! %s", buf2);
|
||||
|
||||
/* one of the many places this needs to be called from */
|
||||
ModuleRunTimeDirCleanUp();
|
||||
|
||||
exit(1);
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
/* Same thing, but do it like perror(). */
|
||||
|
||||
void fatal_perror(const char *fmt, ...)
|
||||
{
|
||||
va_list args;
|
||||
char buf2[4096];
|
||||
int errno_save = errno;
|
||||
|
||||
checkday();
|
||||
|
||||
if (!fmt)
|
||||
return;
|
||||
|
||||
va_start(args, fmt);
|
||||
vsnprintf(buf2, sizeof(buf2), fmt, args);
|
||||
va_end(args);
|
||||
|
||||
Anope::string buf = log_gettimestamp();
|
||||
|
||||
if (logfile)
|
||||
fprintf(logfile, "%s FATAL: %s: %s\n", buf.c_str(), buf2, strerror(errno_save));
|
||||
if (nofork)
|
||||
fprintf(stderr, "%s FATAL: %s: %s\n", buf.c_str(), buf2, strerror(errno_save));
|
||||
if (UplinkSock)
|
||||
ircdproto->SendGlobops(NULL, "FATAL ERROR! %s: %s", buf2, strerror(errno_save));
|
||||
|
||||
/* one of the many places this needs to be called from */
|
||||
ModuleRunTimeDirCleanUp();
|
||||
|
||||
exit(1);
|
||||
}
|
||||
|
||||
Alog::Alog(LogLevel val) : Level(val)
|
||||
{
|
||||
if (Level >= LOG_DEBUG)
|
||||
buf << "Debug: ";
|
||||
}
|
||||
|
||||
Alog::~Alog()
|
||||
{
|
||||
if (Level >= LOG_DEBUG && (Level - LOG_DEBUG + 1) > debug)
|
||||
return;
|
||||
|
||||
int errno_save = errno;
|
||||
|
||||
checkday();
|
||||
|
||||
Anope::string tbuf = log_gettimestamp();
|
||||
|
||||
if (logfile)
|
||||
fprintf(logfile, "%s %s\n", tbuf.c_str(), buf.str().c_str());
|
||||
if (nofork)
|
||||
std::cout << tbuf << " " << buf.str() << std::endl;
|
||||
else if (Level == LOG_TERMINAL) // XXX dont use this yet unless you know we're at terminal and not daemonized
|
||||
std::cout << buf.str() << std::endl;
|
||||
if (Config && !Config->LogChannel.empty() && LogChan && !debug && findchan(Config->LogChannel))
|
||||
ircdproto->SendPrivmsg(Global, Config->LogChannel, "%s", buf.str().c_str());
|
||||
errno = errno_save;
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user