summaryrefslogtreecommitdiff
path: root/src/protocol
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2010-07-15 22:55:02 -0400
committerAdam <Adam@anope.org>2010-07-15 22:55:02 -0400
commita22f8d3b2de88b9bb6f80f0c2780846ae23ab389 (patch)
treea2fdf570868896a787df8a1169951b0028e68d6b /src/protocol
parent43b1e43afb85639485e36d24da351dc0f121be6e (diff)
Moved some files and diretories around, made cmake skip files it knows it can't compile because of missing dependices.
Diffstat (limited to 'src/protocol')
-rw-r--r--src/protocol/CMakeLists.txt54
-rw-r--r--src/protocol/bahamut.cpp832
-rw-r--r--src/protocol/inspircd11.cpp1171
-rw-r--r--src/protocol/inspircd12.cpp1371
-rw-r--r--src/protocol/inspircd20.cpp1351
-rw-r--r--src/protocol/ratbox.cpp899
-rw-r--r--src/protocol/unreal32.cpp1345
7 files changed, 0 insertions, 7023 deletions
diff --git a/src/protocol/CMakeLists.txt b/src/protocol/CMakeLists.txt
deleted file mode 100644
index abca56caf..000000000
--- a/src/protocol/CMakeLists.txt
+++ /dev/null
@@ -1,54 +0,0 @@
-# Find all the *.cpp files within the current source directory, and sort the list
-file(GLOB PROTOCOL_SRCS_CPP RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*.cpp")
-set(PROTOCOL_SRCS ${PROTOCOL_SRCS_C} ${PROTOCOL_SRCS_CPP})
-sort_list(PROTOCOL_SRCS)
-
-# If using Windows, add the MODULE_COMPILE define
-if(WIN32)
- add_definitions(-DMODULE_COMPILE)
-endif(WIN32)
-
-# Set all the files to use C++ as well as set their compile flags (use the module-specific compile flags, though)
-set_source_files_properties(${PROTOCOL_SRCS} PROPERTIES LANGUAGE CXX COMPILE_FLAGS "${CXXFLAGS}")
-
-# Create an empty list to store extra include directories
-set(EXTRA_INCLUDES)
-
-# Iterate through all the source files
-foreach(SRC ${PROTOCOL_SRCS})
- # Convert the source file extension to have a .so extension
- string(REGEX REPLACE "\\.(c|cpp)$" ".so" SO ${SRC})
- # Temporary variable for the current source's include directories
- set(TEMP_INCLUDES)
- # Calculate the header file dependencies for the given source file
- calculate_depends(${SRC} TEMP_INCLUDES)
- # If there were some extra include directories, add them to the list
- if(TEMP_INCLUDES)
- append_to_list(EXTRA_INCLUDES ${TEMP_INCLUDES})
- endif(TEMP_INCLUDES)
- # For Visual Studio only, include win32_memory static library, required to override Visual Studio's overrides of the new/delete operators
- if(MSVC)
- set(WIN32_MEMORY win32_memory)
- else(MSVC)
- set(WIN32_MEMORY)
- endif(MSVC)
- # Generate the module and set it's linker flags, also set it to depend on the main Anope executable to be built beforehand
- add_library(${SO} MODULE ${SRC})
- set_target_properties(${SO} PROPERTIES LINKER_LANGUAGE CXX PREFIX "" SUFFIX "" LINK_FLAGS "${LDFLAGS}")
- add_dependencies(${SO} ${PROGRAM_NAME})
- # For Windows only, have the module link to the export library of Anope as well as the wsock32 library (most of the modules probably don't need this, but this is to be on the safe side), also set it's version
- if(WIN32)
- target_link_libraries(${SO} ${PROGRAM_NAME} wsock32 ${WIN32_MEMORY})
- set_target_properties(${PROGRAM_NAME} PROPERTIES VERSION "${VERSION_DOTTED}")
- endif(WIN32)
- # Set the module to be installed to the module directory under the data directory
- install(TARGETS ${SO}
- DESTINATION data/modules
- )
-endforeach(SRC)
-
-# If there were extra include directories, remove the duplicates and add the directories to the include path
-if(EXTRA_INCLUDES)
- remove_list_duplicates(EXTRA_INCLUDES)
- include_directories(${EXTRA_INCLUDES})
-endif(EXTRA_INCLUDES)
diff --git a/src/protocol/bahamut.cpp b/src/protocol/bahamut.cpp
deleted file mode 100644
index d7849c940..000000000
--- a/src/protocol/bahamut.cpp
+++ /dev/null
@@ -1,832 +0,0 @@
-/* Bahamut functions
- *
- * (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"
-#include "modules.h"
-
-IRCDVar myIrcd[] = {
- {"Bahamut 1.8.x", /* ircd name */
- "+", /* Modes used by pseudoclients */
- 2, /* Chan Max Symbols */
- "+o", /* Channel Umode used by Botserv bots */
- 1, /* SVSNICK */
- 0, /* Vhost */
- 1, /* Supports SNlines */
- 1, /* Supports SQlines */
- 1, /* Supports SZlines */
- 3, /* Number of server args */
- 0, /* Join 2 Set */
- 0, /* Join 2 Message */
- 0, /* TS Topic Forward */
- 0, /* TS Topci Backward */
- 1, /* Chan SQlines */
- 1, /* Quit on Kill */
- 1, /* SVSMODE unban */
- 0, /* Reverse */
- 0, /* vidents */
- 1, /* svshold */
- 1, /* time stamp on mode */
- 1, /* NICKIP */
- 0, /* O:LINE */
- 1, /* UMODE */
- 0, /* VHOST ON NICK */
- 0, /* Change RealName */
- 1, /* No Knock requires +i */
- 0, /* We support TOKENS */
- 0, /* TIME STAMPS are BASE64 */
- 0, /* Can remove User Channel Modes with SVSMODE */
- 0, /* Sglines are not enforced until user reconnects */
- 0, /* ts6 */
- 0, /* p10 */
- 0, /* CIDR channelbans */
- "$", /* TLD Prefix for Global */
- 6, /* Max number of modes we can send per line */
- }
- ,
- {NULL}
-};
-
-void bahamut_cmd_burst()
-{
- send_cmd(NULL, "BURST");
-}
-
-/*
- * SVINFO
- * parv[0] = sender prefix
- * parv[1] = TS_CURRENT for the server
- * parv[2] = TS_MIN for the server
- * parv[3] = server is standalone or connected to non-TS only
- * parv[4] = server's idea of UTC time
- */
-void bahamut_cmd_svinfo()
-{
- send_cmd(NULL, "SVINFO 3 1 0 :%ld", static_cast<long>(time(NULL)));
-}
-
-/* PASS */
-void bahamut_cmd_pass(const char *pass)
-{
- send_cmd(NULL, "PASS %s :TS", pass);
-}
-
-/* CAPAB */
-void bahamut_cmd_capab()
-{
- send_cmd(NULL, "CAPAB SSJOIN NOQUIT BURST UNCONNECT NICKIP TSMODE TS3");
-}
-
-/* this avoids "undefined symbol" messages of those whom try to load mods that
- call on this function */
-void bahamut_cmd_chghost(const char *nick, const char *vhost)
-{
- Alog(LOG_DEBUG) << "This IRCD does not support vhosting";
-}
-
-class BahamutIRCdProto : public IRCDProto
-{
- void SendModeInternal(BotInfo *source, Channel *dest, const char *buf)
- {
- if (!buf)
- return;
- if (Capab.HasFlag(CAPAB_TSMODE))
- send_cmd(source->nick, "MODE %s 0 %s", dest->name.c_str(), buf);
- else
- send_cmd(source->nick, "MODE %s %s", dest->name.c_str(), buf);
- }
-
- void SendModeInternal(BotInfo *bi, User *u, const char *buf)
- {
- if (!buf)
- return;
- send_cmd(bi ? bi->nick : Config.ServerName, "SVSMODE %s %ld %s", u->nick.c_str(), static_cast<long>(u->timestamp), buf);
- }
-
- /* SVSHOLD - set */
- void SendSVSHold(const char *nick)
- {
- send_cmd(Config.ServerName, "SVSHOLD %s %u :%s", nick, static_cast<unsigned>(Config.NSReleaseTimeout), "Being held for registered user");
- }
-
- /* SVSHOLD - release */
- void SendSVSHoldDel(const char *nick)
- {
- send_cmd(Config.ServerName, "SVSHOLD %s 0", nick);
- }
-
- /* SVSMODE -b */
- void SendBanDel(Channel *c, const std::string &nick)
- {
- SendSVSModeChan(c, "-b", nick.empty() ? NULL : nick.c_str());
- }
-
- /* SVSMODE channel modes */
- void SendSVSModeChan(Channel *c, const char *mode, const char *nick)
- {
- if (nick)
- send_cmd(Config.ServerName, "SVSMODE %s %s %s", c->name.c_str(), mode, nick);
- else
- send_cmd(Config.ServerName, "SVSMODE %s %s", c->name.c_str(), mode);
- }
-
- /* SQLINE */
- void SendSQLine(XLine *x)
- {
- send_cmd(NULL, "SQLINE %s :%s", x->Mask.c_str(), x->Reason.c_str());
- }
-
- /* UNSLINE */
- void SendSGLineDel(XLine *x)
- {
- send_cmd(NULL, "UNSGLINE 0 :%s", x->Mask.c_str());
- }
-
- /* UNSZLINE */
- void SendSZLineDel(XLine *x)
- {
- /* this will likely fail so its only here for legacy */
- send_cmd(NULL, "UNSZLINE 0 %s", x->Mask.c_str());
- /* this is how we are supposed to deal with it */
- send_cmd(NULL, "RAKILL %s *", x->Mask.c_str());
- }
-
- /* SZLINE */
- void SendSZLine(XLine *x)
- {
- /* this will likely fail so its only here for legacy */
- send_cmd(NULL, "SZLINE %s :%s", x->Mask.c_str(), x->Reason.c_str());
- /* this is how we are supposed to deal with it */
- send_cmd(NULL, "AKILL %s * %d %s %ld :%s", x->Mask.c_str(), 172800, x->By.c_str(), static_cast<long>(time(NULL)), x->Reason.c_str());
- }
-
- /* SVSNOOP */
- void SendSVSNOOP(const char *server, int set)
- {
- send_cmd(NULL, "SVSNOOP %s %s", server, set ? "+" : "-");
- }
-
- /* SGLINE */
- void SendSGLine(XLine *x)
- {
- send_cmd(NULL, "SGLINE %d :%s:%s", static_cast<int>(x->Mask.length()), x->Mask.c_str(), x->Reason.c_str());
- }
-
- /* RAKILL */
- void SendAkillDel(XLine *x)
- {
- send_cmd(NULL, "RAKILL %s %s", x->GetHost().c_str(), x->GetUser().c_str());
- }
-
- /* TOPIC */
- void SendTopic(BotInfo *whosets, Channel *c, const char *whosetit, const char *topic)
- {
- send_cmd(whosets->nick, "TOPIC %s %s %lu :%s", c->name.c_str(), whosetit, static_cast<unsigned long>(c->topic_time), topic);
- }
-
- /* UNSQLINE */
- void SendSQLineDel(XLine *x)
- {
- send_cmd(NULL, "UNSQLINE %s", x->Mask.c_str());
- }
-
- /* JOIN - SJOIN */
- void SendJoin(BotInfo *user, const char *channel, time_t chantime)
- {
- send_cmd(user->nick, "SJOIN %ld %s", static_cast<long>(chantime), channel);
- }
-
- void SendAkill(XLine *x)
- {
- // Calculate the time left before this would expire, capping it at 2 days
- time_t timeleft = x->Expires - time(NULL);
- if (timeleft > 172800)
- timeleft = 172800;
- send_cmd(NULL, "AKILL %s %s %d %s %ld :%s", x->GetHost().c_str(), x->GetUser().c_str(), static_cast<int>(timeleft), x->By.c_str(), static_cast<long>(time(NULL)), x->Reason.c_str());
- }
-
- /*
- Note: if the stamp is null 0, the below usage is correct of Bahamut
- */
- void SendSVSKillInternal(BotInfo *source, User *user, const char *buf)
- {
- send_cmd(source ? source->nick : NULL, "SVSKILL %s :%s", user->nick.c_str(), buf);
- }
-
- /* SVSMODE */
- /* parv[0] - sender
- * parv[1] - nick
- * parv[2] - TS (or mode, depending on svs version)
- * parv[3] - mode (or services id if old svs version)
- * parv[4] - optional arguement (services id)
- */
- void SendSVSMode(User *u, int ac, const char **av)
- {
- this->SendModeInternal(NULL, u, merge_args(ac, av));
- }
-
- void SendEOB()
- {
- send_cmd(NULL, "BURST 0");
- }
-
- void SendNoticeChanopsInternal(BotInfo *source, Channel *dest, const char *buf)
- {
- if (!buf)
- return;
- send_cmd(NULL, "NOTICE @%s :%s", dest->name.c_str(), buf);
- }
-
- void SendKickInternal(BotInfo *source, Channel *chan, User *user, const char *buf)
- {
- if (buf)
- send_cmd(source->nick, "KICK %s %s :%s", chan->name.c_str(), user->nick.c_str(), buf);
- else
- send_cmd(source->nick, "KICK %s %s", chan->name.c_str(), user->nick.c_str());
- }
-
- void SendClientIntroduction(const std::string &nick, const std::string &user, const std::string &host, const std::string &real, const char *modes, const std::string &uid)
- {
- EnforceQlinedNick(nick, Config.s_BotServ);
- send_cmd(NULL, "NICK %s 1 %ld %s %s %s %s 0 0 :%s", nick.c_str(), static_cast<long>(time(NULL)), modes, user.c_str(), host.c_str(), Config.ServerName, real.c_str());
- }
-
- /* SVSMODE +d */
- /* nc_change was = 1, and there is no na->status */
- void SendUnregisteredNick(User *u)
- {
- BotInfo *bi = NickServ;
- u->RemoveMode(bi, UMODE_REGISTERED);
- ircdproto->SendMode(bi, u, "+d 1");
- }
-
- /* SERVER */
- void SendServer(Server *server)
- {
- send_cmd(NULL, "SERVER %s %d :%s", server->GetName().c_str(), server->GetHops(), server->GetDescription().c_str());
- }
-
- void SendConnect()
- {
- bahamut_cmd_pass(uplink_server->password);
- bahamut_cmd_capab();
- SendServer(Me);
- bahamut_cmd_svinfo();
- bahamut_cmd_burst();
- }
-
- void SetAutoIdentificationToken(User *u)
- {
- char svidbuf[15];
-
- if (!u->Account())
- return;
-
- srand(time(NULL));
- snprintf(svidbuf, sizeof(svidbuf), "%d", rand());
-
- u->Account()->Shrink("authenticationtoken");
- u->Account()->Extend("authenticationtoken", new ExtensibleItemPointerArray<char>(sstrdup(svidbuf)));
-
- BotInfo *bi = NickServ;
- u->SetMode(bi, UMODE_REGISTERED);
- ircdproto->SendMode(bi, u, "+d %s", svidbuf);
- }
-} ircd_proto;
-
-/* EVENT: SJOIN */
-int anope_event_sjoin(const char *source, int ac, const char **av)
-{
- Channel *c = findchan(av[1]);
- time_t ts = atol(av[0]);
- bool was_created = false;
- bool keep_their_modes = false;
-
- if (!c)
- {
- c = new Channel(av[1], ts);
- was_created = true;
- }
- /* Our creation time is newer than what the server gave us */
- else if (c->creation_time > ts)
- {
- c->creation_time = ts;
-
- /* Remove status from all of our users */
- for (std::list<Mode *>::const_iterator it = ModeManager::Modes.begin(), it_end = ModeManager::Modes.end(); it != it_end; ++it)
- {
- Mode *m = *it;
-
- if (m->Type != MODE_STATUS)
- continue;
-
- ChannelMode *cm = dynamic_cast<ChannelMode *>(m);
-
- for (CUserList::const_iterator uit = c->users.begin(), uit_end = c->users.end(); uit != uit_end; ++uit)
- {
- UserContainer *uc = *uit;
-
- c->RemoveMode(NULL, cm, uc->user->nick);
- }
- }
- if (c->ci)
- {
- /* Rejoin the bot to fix the TS */
- if (c->ci->bi)
- {
- c->ci->bi->Part(c, "TS reop");
- c->ci->bi->Join(c);
- }
- /* Reset mlock */
- check_modes(c);
- }
- }
- /* Their TS is newer than ours, our modes > theirs, unset their modes if need be */
- else
- keep_their_modes = false;
-
- /* Mark the channel as syncing */
- if (was_created)
- c->SetFlag(CH_SYNCING);
-
- /* If we need to keep their modes, and this SJOIN string contains modes */
- if (keep_their_modes && ac >= 4)
- {
- /* Set the modes internally */
- ChanSetInternalModes(c, ac - 3, av + 2);
- }
-
- /* For a reason unknown to me, bahamut will send a SJOIN from the user joining a channel
- * if the channel already existed
- */
- if (!was_created && ac == 2)
- {
- User *u = finduser(source);
- if (!u)
- Alog(LOG_DEBUG) << "SJOIN for nonexistant user " << source << " on " << c->name;
- else
- {
- EventReturn MOD_RESULT;
- FOREACH_RESULT(I_OnPreJoinChannel, OnPreJoinChannel(u, c));
-
- /* Add the user to the channel */
- c->JoinUser(u);
-
- /* Now set whatever modes this user is allowed to have on the channel */
- chan_set_correct_modes(u, c, 1);
-
- /* Check to see if modules want the user to join, if they do
- * check to see if they are allowed to join (CheckKick will kick/ban them)
- * Don't trigger OnJoinChannel event then as the user will be destroyed
- */
- if (MOD_RESULT == EVENT_STOP && (!c->ci || !c->ci->CheckKick(u)))
- {
- FOREACH_MOD(I_OnJoinChannel, OnJoinChannel(u, c));
- }
- }
- }
- else
- {
- spacesepstream sep(av[ac - 1]);
- std::string buf;
- while (sep.GetToken(buf))
- {
- std::list<ChannelMode *> Status;
- Status.clear();
- char ch;
-
- /* Get prefixes from the nick */
- while ((ch = ModeManager::GetStatusChar(buf[0])))
- {
- buf.erase(buf.begin());
- ChannelMode *cm = ModeManager::FindChannelModeByChar(ch);
- if (!cm)
- {
- Alog() << "Recieved unknown mode prefix " << buf[0] << " in SJOIN string";
- continue;
- }
-
- Status.push_back(cm);
- }
-
- User *u = finduser(buf);
- if (!u)
- {
- Alog(LOG_DEBUG) << "SJOIN for nonexistant user " << buf << " on " << c->name;
- continue;
- }
-
- EventReturn MOD_RESULT;
- FOREACH_RESULT(I_OnPreJoinChannel, OnPreJoinChannel(u, c));
-
- /* Add the user to the channel */
- c->JoinUser(u);
-
- /* Update their status internally on the channel
- * This will enforce secureops etc on the user
- */
- for (std::list<ChannelMode *>::iterator it = Status.begin(), it_end = Status.end(); it != it_end; ++it)
- c->SetModeInternal(*it, buf);
-
- /* Now set whatever modes this user is allowed to have on the channel */
- chan_set_correct_modes(u, c, 1);
-
- /* Check to see if modules want the user to join, if they do
- * check to see if they are allowed to join (CheckKick will kick/ban them)
- * Don't trigger OnJoinChannel event then as the user will be destroyed
- */
- if (MOD_RESULT != EVENT_STOP && c->ci && c->ci->CheckKick(u))
- continue;
-
- FOREACH_MOD(I_OnJoinChannel, OnJoinChannel(u, c));
- }
- }
-
- /* Channel is done syncing */
- if (was_created)
- {
- /* Unset the syncing flag */
- c->UnsetFlag(CH_SYNCING);
-
- /* If there are users in the channel they are allowed to be, set topic mlock etc. */
- if (!c->users.empty())
- c->Sync();
- /* If there are no users in the channel, there is a ChanServ timer set to part the service bot
- * and destroy the channel soon
- */
- }
-
- return MOD_CONT;
-}
-
-/*
-** NICK - new
-** source = NULL
-** parv[0] = nickname
-** parv[1] = hopcount
-** parv[2] = timestamp
-** parv[3] = modes
-** parv[4] = username
-** parv[5] = hostname
-** parv[6] = server
-** parv[7] = servicestamp
-** parv[8] = IP
-** parv[9] = info
-** NICK - change
-** source = oldnick
-** parv[0] = new nickname
-** parv[1] = hopcount
-*/
-int anope_event_nick(const char *source, int ac, const char **av)
-{
- User *user;
-
- if (ac != 2)
- {
- user = do_nick(source, av[0], av[4], av[5], av[6], av[9], strtoul(av[2], NULL, 10), strtoul(av[8], NULL, 0), NULL, NULL);
- if (user)
- {
- /* Check to see if the user should be identified because their
- * services id matches the one in their nickcore
- */
- user->CheckAuthenticationToken(av[7]);
-
- UserSetInternalModes(user, 1, &av[3]);
- }
- }
- else
- do_nick(source, av[0], NULL, NULL, NULL, NULL, strtoul(av[1], NULL, 10), 0, NULL, NULL);
- return MOD_CONT;
-}
-
-/* EVENT : CAPAB */
-int anope_event_capab(const char *source, int ac, const char **av)
-{
- CapabParse(ac, av);
- return MOD_CONT;
-}
-
-/* EVENT : OS */
-int anope_event_os(const char *source, int ac, const char **av)
-{
- if (ac < 1)
- return MOD_CONT;
- m_privmsg(source, Config.s_OperServ, av[0]);
- return MOD_CONT;
-}
-
-/* EVENT : NS */
-int anope_event_ns(const char *source, int ac, const char **av)
-{
- if (ac < 1)
- return MOD_CONT;
- m_privmsg(source, Config.s_NickServ, av[0]);
- return MOD_CONT;
-}
-
-/* EVENT : MS */
-int anope_event_ms(const char *source, int ac, const char **av)
-{
- if (ac < 1)
- return MOD_CONT;
- m_privmsg(source, Config.s_MemoServ, av[0]);
- return MOD_CONT;
-}
-
-/* EVENT : HS */
-int anope_event_hs(const char *source, int ac, const char **av)
-{
- if (ac < 1)
- return MOD_CONT;
- m_privmsg(source, Config.s_HostServ, av[0]);
- return MOD_CONT;
-}
-
-/* EVENT : CS */
-int anope_event_cs(const char *source, int ac, const char **av)
-{
- if (ac < 1)
- return MOD_CONT;
- m_privmsg(source, Config.s_ChanServ, av[0]);
- return MOD_CONT;
-}
-
-int anope_event_436(const char *source, int ac, const char **av)
-{
- if (ac < 1)
- return MOD_CONT;
-
- m_nickcoll(av[0]);
- return MOD_CONT;
-}
-
-/* EVENT : SERVER */
-int anope_event_server(const char *source, int ac, const char **av)
-{
- do_server(source, av[0], atoi(av[1]), av[2], "");
- return MOD_CONT;
-}
-
-/* EVENT : PRIVMSG */
-int anope_event_privmsg(const char *source, int ac, const char **av)
-{
- if (ac != 2)
- return MOD_CONT;
- m_privmsg(source, av[0], av[1]);
- return MOD_CONT;
-}
-
-int anope_event_part(const char *source, int ac, const char **av)
-{
- if (ac < 1 || ac > 2)
- return MOD_CONT;
- do_part(source, ac, av);
- return MOD_CONT;
-}
-
-int anope_event_whois(const char *source, int ac, const char **av)
-{
- if (source && ac >= 1)
- m_whois(source, av[0]);
- return MOD_CONT;
-}
-
-int anope_event_topic(const char *source, int ac, const char **av)
-{
- if (ac != 4)
- return MOD_CONT;
- do_topic(source, ac, av);
- return MOD_CONT;
-}
-
-int anope_event_squit(const char *source, int ac, const char **av)
-{
- if (ac != 2)
- return MOD_CONT;
- do_squit(source, ac, av);
- return MOD_CONT;
-}
-
-int anope_event_quit(const char *source, int ac, const char **av)
-{
- if (ac != 1)
- return MOD_CONT;
- do_quit(source, ac, av);
- return MOD_CONT;
-}
-
-/* EVENT: MODE */
-int anope_event_mode(const char *source, int ac, const char **av)
-{
- if (ac < 2)
- return MOD_CONT;
-
- if (*av[0] == '#' || *av[0] == '&')
- do_cmode(source, ac, av);
- else
- do_umode(source, ac, av);
- return MOD_CONT;
-}
-
-/* EVENT: KILL */
-int anope_event_kill(const char *source, int ac, const char **av)
-{
- if (ac != 2)
- return MOD_CONT;
-
- m_kill(av[0], av[1]);
- return MOD_CONT;
-}
-
-/* EVENT: KICK */
-int anope_event_kick(const char *source, int ac, const char **av)
-{
- if (ac != 3)
- return MOD_CONT;
- do_kick(source, ac, av);
- return MOD_CONT;
-}
-
-/* EVENT: JOIN */
-int anope_event_join(const char *source, int ac, const char **av)
-{
- if (ac != 1)
- return MOD_CONT;
- do_join(source, ac, av);
- return MOD_CONT;
-}
-
-/* EVENT: MOTD */
-int anope_event_motd(const char *source, int ac, const char **av)
-{
- if (!source)
- return MOD_CONT;
-
- m_motd(source);
- return MOD_CONT;
-}
-
-int anope_event_away(const char *source, int ac, const char **av)
-{
- if (!source)
- return MOD_CONT;
- m_away(source, (ac ? av[0] : NULL));
- return MOD_CONT;
-}
-
-int anope_event_ping(const char *source, int ac, const char **av)
-{
- if (ac < 1)
- return MOD_CONT;
- ircdproto->SendPong(ac > 1 ? av[1] : Config.ServerName, av[0]);
- return MOD_CONT;
-}
-
-int anope_event_error(const char *source, int ac, const char **av)
-{
- if (ac >= 1)
- Alog(LOG_DEBUG) << av[0];
- return MOD_CONT;
-}
-
-int anope_event_burst(const char *source, int ac, const char **av)
-{
- Server *s = Server::Find(source ? source : "");
-
- if (!ac)
- {
- /* for future use - start burst */
- }
- else
- {
- /* If we found a server with the given source, that one just
- * finished bursting. If there was no source, then our uplink
- * server finished bursting. -GD
- */
- if (!s)
- s = Me->GetUplink();
- if (s)
- s->Sync(true);
- }
- return MOD_CONT;
-}
-
-bool ChannelModeFlood::IsValid(const std::string &value)
-{
- char *dp, *end;
-
- if (!value.empty() && value[0] != ':' && strtoul((value[0] == '*' ? value.c_str() + 1 : value.c_str()), &dp, 10) > 0 && *dp == ':' && *(++dp) && strtoul(dp, &end, 10) > 0 && !*end)
- return true;
-
- return false;
-}
-
-void moduleAddIRCDMsgs()
-{
- Anope::AddMessage("436", anope_event_436);
- Anope::AddMessage("AWAY", anope_event_away);
- Anope::AddMessage("JOIN", anope_event_join);
- Anope::AddMessage("KICK", anope_event_kick);
- Anope::AddMessage("KILL", anope_event_kill);
- Anope::AddMessage("MODE", anope_event_mode);
- Anope::AddMessage("MOTD", anope_event_motd);
- Anope::AddMessage("NICK", anope_event_nick);
- Anope::AddMessage("PART", anope_event_part);
- Anope::AddMessage("PING", anope_event_ping);
- Anope::AddMessage("PRIVMSG", anope_event_privmsg);
- Anope::AddMessage("QUIT", anope_event_quit);
- Anope::AddMessage("SERVER", anope_event_server);
- Anope::AddMessage("SQUIT", anope_event_squit);
- Anope::AddMessage("TOPIC", anope_event_topic);
- Anope::AddMessage("WHOIS", anope_event_whois);
- Anope::AddMessage("SVSMODE", anope_event_mode);
- Anope::AddMessage("CAPAB", anope_event_capab);
- Anope::AddMessage("CS", anope_event_cs);
- Anope::AddMessage("HS", anope_event_hs);
- Anope::AddMessage("MS", anope_event_ms);
- Anope::AddMessage("NS", anope_event_ns);
- Anope::AddMessage("OS", anope_event_os);
- Anope::AddMessage("SJOIN", anope_event_sjoin);
- Anope::AddMessage("ERROR", anope_event_error);
- Anope::AddMessage("BURST", anope_event_burst);
-}
-
-static void AddModes()
-{
- /* Add user modes */
- ModeManager::AddUserMode(new UserMode(UMODE_SERV_ADMIN, "UMODE_SERV_ADMIN", 'A'));
- ModeManager::AddUserMode(new UserMode(UMODE_REGPRIV, "UMODE_REGPRIV", 'R'));
- ModeManager::AddUserMode(new UserMode(UMODE_ADMIN, "UMODE_ADMIN", 'a'));
- ModeManager::AddUserMode(new UserMode(UMODE_INVIS, "UMODE_INVIS", 'i'));
- ModeManager::AddUserMode(new UserMode(UMODE_OPER,"UMODE_OPER", 'o'));
- ModeManager::AddUserMode(new UserMode(UMODE_REGISTERED, "UMODE_REGISTERED", 'r'));
- ModeManager::AddUserMode(new UserMode(UMODE_SNOMASK, "UMODE_SNOMASK", 's'));
- ModeManager::AddUserMode(new UserMode(UMODE_WALLOPS, "UMODE_WALLOPS", 'w'));
- ModeManager::AddUserMode(new UserMode(UMODE_DEAF, "UMODE_DEAF", 'd'));
-
- /* b/e/I */
- ModeManager::AddChannelMode(new ChannelModeBan('b'));
-
- /* v/h/o/a/q */
- ModeManager::AddChannelMode(new ChannelModeStatus(CMODE_VOICE, "CMODE_VOICE", 'v', '+'));
- ModeManager::AddChannelMode(new ChannelModeStatus(CMODE_OP, "CMODE_OP", 'o', '@'));
-
- /* Add channel modes */
- ModeManager::AddChannelMode(new ChannelMode(CMODE_BLOCKCOLOR, "CMODE_BLOCKCOLOR", 'c'));
- ModeManager::AddChannelMode(new ChannelMode(CMODE_INVITE, "CMODE_INVITE", 'i'));
- ModeManager::AddChannelMode(new ChannelModeFlood('f'));
- ModeManager::AddChannelMode(new ChannelModeKey('k'));
- ModeManager::AddChannelMode(new ChannelModeParam(CMODE_LIMIT, "CMODE_LIMIT", 'l'));
- ModeManager::AddChannelMode(new ChannelMode(CMODE_MODERATED, "CMODE_MODERATED", 'm'));
- ModeManager::AddChannelMode(new ChannelMode(CMODE_NOEXTERNAL, "CMODE_NOEXTERNAL", 'n'));
- ModeManager::AddChannelMode(new ChannelMode(CMODE_PRIVATE, "CMODE_PRIVATE", 'p'));
- ModeManager::AddChannelMode(new ChannelModeRegistered('r'));
- ModeManager::AddChannelMode(new ChannelMode(CMODE_SECRET, "CMODE_SECRET", 's'));
- ModeManager::AddChannelMode(new ChannelMode(CMODE_TOPIC, "CMODE_TOPIC", 't'));
- ModeManager::AddChannelMode(new ChannelMode(CMODE_REGMODERATED, "CMODE_REGMODERATED", 'M'));
- ModeManager::AddChannelMode(new ChannelModeOper('O'));
- ModeManager::AddChannelMode(new ChannelMode(CMODE_REGISTEREDONLY, "CMODE_REGISTEREDONLY", 'R'));
-}
-
-class ProtoBahamut : public Module
-{
- public:
- ProtoBahamut(const std::string &modname, const std::string &creator) : Module(modname, creator)
- {
- this->SetAuthor("Anope");
- this->SetType(PROTOCOL);
-
- pmodule_ircd_version("BahamutIRCd 1.4.*/1.8.*");
- pmodule_ircd_var(myIrcd);
- pmodule_ircd_useTSMode(0);
-
- CapabType c[] = { CAPAB_NOQUIT, CAPAB_TSMODE, CAPAB_UNCONNECT, CAPAB_BURST, CAPAB_DKEY, CAPAB_DOZIP };
- for (unsigned i = 0; i < 6; ++i)
- Capab.SetFlag(c[i]);
-
- moduleAddIRCDMsgs();
- AddModes();
-
- pmodule_ircd_proto(&ircd_proto);
-
- ModuleManager::Attach(I_OnUserNickChange, this);
- }
-
- void OnUserNickChange(User *u, const std::string &)
- {
- u->RemoveModeInternal(ModeManager::FindUserModeByName(UMODE_REGISTERED));
- }
-};
-
-MODULE_INIT(ProtoBahamut)
diff --git a/src/protocol/inspircd11.cpp b/src/protocol/inspircd11.cpp
deleted file mode 100644
index 66c9ffabc..000000000
--- a/src/protocol/inspircd11.cpp
+++ /dev/null
@@ -1,1171 +0,0 @@
-/* inspircd 1.1 beta 6+ functions
- *
- * (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"
-#include "modules.h"
-#include "hashcomp.h"
-
-#ifndef _WIN32
-# include <sys/socket.h>
-# include <netinet/in.h>
-# include <arpa/inet.h>
-#endif
-
-#ifdef _WIN32
-# include <winsock.h>
-int inet_aton(const char *name, struct in_addr *addr)
-{
- uint32 a = inet_addr(name);
- addr->s_addr = a;
- return a != (uint32) - 1;
-}
-#endif
-
-IRCDVar myIrcd[] = {
- {"InspIRCd 1.1", /* ircd name */
- "+I", /* Modes used by pseudoclients */
- 5, /* Chan Max Symbols */
- "+ao", /* Channel Umode used by Botserv bots */
- 1, /* SVSNICK */
- 1, /* Vhost */
- 1, /* Supports SNlines */
- 1, /* Supports SQlines */
- 1, /* Supports SZlines */
- 4, /* Number of server args */
- 0, /* Join 2 Set */
- 1, /* Join 2 Message */
- 1, /* TS Topic Forward */
- 0, /* TS Topci Backward */
- 0, /* Chan SQlines */
- 0, /* Quit on Kill */
- 0, /* SVSMODE unban */
- 1, /* Reverse */
- 1, /* vidents */
- 1, /* svshold */
- 0, /* time stamp on mode */
- 0, /* NICKIP */
- 1, /* O:LINE */
- 1, /* UMODE */
- 1, /* VHOST ON NICK */
- 0, /* Change RealName */
- 1, /* No Knock requires +i */
- 0, /* We support inspircd TOKENS */
- 0, /* TIME STAMPS are BASE64 */
- 0, /* Can remove User Channel Modes with SVSMODE */
- 0, /* Sglines are not enforced until user reconnects */
- 0, /* ts6 */
- 0, /* p10 */
- 1, /* CIDR channelbans */
- "$", /* TLD Prefix for Global */
- 20, /* Max number of modes we can send per line */
- }
- ,
- {NULL}
-};
-
-static bool has_servicesmod = false;
-static bool has_globopsmod = false;
-static bool has_svsholdmod = false;
-static bool has_chghostmod = false;
-static bool has_chgidentmod = false;
-static bool has_hidechansmod = false;
-
-/* CHGHOST */
-void inspircd_cmd_chghost(const char *nick, const char *vhost)
-{
- if (has_chghostmod)
- {
- if (!nick || !vhost)
- return;
- send_cmd(Config.s_OperServ, "CHGHOST %s %s", nick, vhost);
- }
- else
- ircdproto->SendGlobops(OperServ, "CHGHOST not loaded!");
-}
-
-int anope_event_idle(const char *source, int ac, const char **av)
-{
- if (ac == 1)
- send_cmd(av[0], "IDLE %s %ld 0", source, static_cast<long>(time(NULL)));
- return MOD_CONT;
-}
-
-static char currentpass[1024];
-
-/* PASS */
-void inspircd_cmd_pass(const char *pass)
-{
- strlcpy(currentpass, pass, sizeof(currentpass));
-}
-
-class InspIRCdProto : public IRCDProto
-{
- void SendAkillDel(XLine *x)
- {
- send_cmd(Config.s_OperServ, "GLINE %s", x->Mask.c_str());
- }
-
- void SendTopic(BotInfo *whosets, Channel *c, const char *whosetit, const char *topic)
- {
- send_cmd(whosets->nick, "FTOPIC %s %lu %s :%s", c->name.c_str(), static_cast<unsigned long>(c->topic_time), whosetit, topic);
- }
-
- void SendVhostDel(User *u)
- {
- if (u->HasMode(UMODE_CLOAK))
- inspircd_cmd_chghost(u->nick.c_str(), u->chost.c_str());
- else
- inspircd_cmd_chghost(u->nick.c_str(), u->host);
-
- if (has_chgidentmod && u->GetIdent() != u->GetVIdent())
- inspircd_cmd_chgident(u->nick.c_str(), u->GetIdent().c_str());
- }
-
- void SendAkill(XLine *x)
- {
- // Calculate the time left before this would expire, capping it at 2 days
- time_t timeleft = x->Expires - time(NULL);
- if (timeleft > 172800)
- timeleft = 172800;
- send_cmd(Config.ServerName, "ADDLINE G %s %s %ld %ld :%s", x->Mask.c_str(), x->By.c_str(), static_cast<long>(time(NULL)), static_cast<long>(timeleft), x->Reason.c_str());
- }
-
- void SendSVSKillInternal(BotInfo *source, User *user, const char *buf)
- {
- send_cmd(source ? source->nick : Config.ServerName, "KILL %s :%s", user->nick.c_str(), buf);
- }
-
- void SendSVSMode(User *u, int ac, const char **av)
- {
- this->SendModeInternal(NULL, u, merge_args(ac, av));
- }
-
- void SendNumericInternal(const char *source, int numeric, const char *dest, const char *buf)
- {
- send_cmd(source, "PUSH %s ::%s %03d %s %s", dest, source, numeric, dest, buf);
- }
-
- void SendGuestNick(const char *nick, const char *user, const char *host, const char *real, const char *modes)
- {
- send_cmd(Config.ServerName, "NICK %ld %s %s %s %s +%s 0.0.0.0 :%s", static_cast<long>(time(NULL)), nick, host, host, user, modes, real);
- }
-
- void SendModeInternal(BotInfo *source, Channel *dest, const char *buf)
- {
- if (!buf)
- return;
- send_cmd(source ? source->nick : Config.s_OperServ, "FMODE %s %u %s", dest->name.c_str(), static_cast<unsigned>(dest->creation_time), buf);
- }
-
- void SendModeInternal(BotInfo *bi, User *u, const char *buf)
- {
- if (!buf)
- return;
- send_cmd(bi ? bi->nick : Config.ServerName, "MODE %s %s", u->nick.c_str(), buf);
- }
-
- void SendClientIntroduction(const std::string &nick, const std::string &user, const std::string &host, const std::string &real, const char *modes, const std::string &uid)
- {
- send_cmd(Config.ServerName, "NICK %ld %s %s %s %s %s 0