summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorAttila Molnar <attilamolnar@hush.com>2013-04-12 09:04:01 -0700
committerAttila Molnar <attilamolnar@hush.com>2013-04-12 09:04:01 -0700
commitdebedfeb0abb398443fa33452f486c6cc80bb832 (patch)
tree7c8eac3b1ad474fdaf42767bffee7c3c4b4cce48 /include
parenta5fe50aca04ca554d313e7361c571c6a497a9c4e (diff)
parent11cafc12d5440b67a9f676c9f6aa67840ca5399d (diff)
Merge pull request #461 from SaberUK/master+header-cleanup
Tidy up source files.
Diffstat (limited to 'include')
-rw-r--r--include/bancache.h5
-rw-r--r--include/base.h5
-rw-r--r--include/caller.h5
-rw-r--r--include/channels.h5
-rw-r--r--include/command_parse.h5
-rw-r--r--include/commands/cmd_whowas.h6
-rw-r--r--include/configparser.h4
-rw-r--r--include/configreader.h5
-rw-r--r--include/consolecolors.h6
-rw-r--r--include/ctables.h5
-rw-r--r--include/cull_list.h6
-rw-r--r--include/dns.h8
-rw-r--r--include/dynamic.h6
-rw-r--r--include/exitcodes.h6
-rw-r--r--include/extensible.h5
-rw-r--r--include/filelogger.h6
-rw-r--r--include/hashcomp.h5
-rw-r--r--include/inspircd.h6
-rw-r--r--include/inspsocket.h4
-rw-r--r--include/inspstring.h7
-rw-r--r--include/listmode.h1
-rw-r--r--include/logger.h5
-rw-r--r--include/membership.h5
-rw-r--r--include/mode.h5
-rw-r--r--include/modules.h5
-rw-r--r--include/modules/account.h41
-rw-r--r--include/modules/cap.h90
-rw-r--r--include/modules/hash.h58
-rw-r--r--include/modules/httpd.h203
-rw-r--r--include/modules/regex.h55
-rw-r--r--include/modules/sasl.h31
-rw-r--r--include/modules/spanningtree.h40
-rw-r--r--include/modules/sql.h184
-rw-r--r--include/modules/ssl.h172
-rw-r--r--include/numerics.h5
-rw-r--r--include/protocol.h6
-rw-r--r--include/snomasks.h5
-rw-r--r--include/socket.h6
-rw-r--r--include/socketengine.h6
-rw-r--r--include/testsuite.h5
-rw-r--r--include/threadengine.h6
-rw-r--r--include/threadengines/threadengine_pthread.h6
-rw-r--r--include/threadengines/threadengine_win32.h6
-rw-r--r--include/timer.h6
-rw-r--r--include/typedefs.h7
-rw-r--r--include/uid.h2
-rw-r--r--include/usermanager.h5
-rw-r--r--include/users.h5
-rw-r--r--include/xline.h4
49 files changed, 918 insertions, 167 deletions
diff --git a/include/bancache.h b/include/bancache.h
index 9cff91802..450f711c4 100644
--- a/include/bancache.h
+++ b/include/bancache.h
@@ -18,8 +18,7 @@
*/
-#ifndef BANCACHE_H
-#define BANCACHE_H
+#pragma once
/** Stores a cached ban entry.
* Each ban has one of these hashed in a hash_map to make for faster removal
@@ -84,5 +83,3 @@ class CoreExport BanCacheManager
}
~BanCacheManager();
};
-
-#endif
diff --git a/include/base.h b/include/base.h
index 5308ed655..117ffab76 100644
--- a/include/base.h
+++ b/include/base.h
@@ -20,8 +20,7 @@
*/
-#ifndef BASE_H
-#define BASE_H
+#pragma once
#include <map>
#include <deque>
@@ -255,5 +254,3 @@ class CoreExport ServiceProvider : public classbase
virtual ~ServiceProvider();
};
-
-#endif
diff --git a/include/caller.h b/include/caller.h
index 563577ac2..f69ff6796 100644
--- a/include/caller.h
+++ b/include/caller.h
@@ -19,8 +19,7 @@
*/
-#ifndef CALLER_H
-#define CALLER_H
+#pragma once
/* Pending some sort of C++11 support */
#if 0
@@ -355,5 +354,3 @@ template <typename ReturnType, typename Param1, typename Param2, typename Param3
class CoreExport NAME : public HandlerBase8<RETURN, V1, V2, V3, V4, V5, V6, V7, V8> { public: NAME() { } virtual ~NAME() { } virtual RETURN Call(V1, V2, V3, V4, V5, V6, V7, V8); }
#endif
-
-#endif
diff --git a/include/channels.h b/include/channels.h
index 43302552e..3c60fcd6a 100644
--- a/include/channels.h
+++ b/include/channels.h
@@ -20,8 +20,7 @@
*/
-#ifndef CHANNELS_H
-#define CHANNELS_H
+#pragma once
#include "membership.h"
#include "mode.h"
@@ -354,5 +353,3 @@ class CoreExport Channel : public Extensible, public InviteBase
*/
ModResult GetExtBanStatus(User *u, char type);
};
-
-#endif
diff --git a/include/command_parse.h b/include/command_parse.h
index f6ff588e1..e865018e4 100644
--- a/include/command_parse.h
+++ b/include/command_parse.h
@@ -20,8 +20,7 @@
*/
-#ifndef COMMAND_PARSE_H
-#define COMMAND_PARSE_H
+#pragma once
/** A list of dll/so files containing the command handlers for the core
*/
@@ -175,5 +174,3 @@ const int duration_multi[] =
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
};
-
-#endif
diff --git a/include/commands/cmd_whowas.h b/include/commands/cmd_whowas.h
index 590c11172..7e1eeefc9 100644
--- a/include/commands/cmd_whowas.h
+++ b/include/commands/cmd_whowas.h
@@ -19,8 +19,8 @@
*/
-#ifndef CMD_WHOWAS_H
-#define CMD_WHOWAS_H
+#pragma once
+
#include "modules.h"
/* Forward ref for typedefs */
@@ -114,5 +114,3 @@ class WhoWasGroup
*/
~WhoWasGroup();
};
-
-#endif
diff --git a/include/configparser.h b/include/configparser.h
index 9b2cd4527..8292fdda5 100644
--- a/include/configparser.h
+++ b/include/configparser.h
@@ -17,6 +17,8 @@
*/
+#pragma once
+
struct fpos
{
std::string filename;
@@ -76,5 +78,3 @@ struct FileWrapper
}
}
};
-
-
diff --git a/include/configreader.h b/include/configreader.h
index b137ee544..a2dfd2a34 100644
--- a/include/configreader.h
+++ b/include/configreader.h
@@ -21,8 +21,7 @@
*/
-#ifndef INSPIRCD_CONFIGREADER
-#define INSPIRCD_CONFIGREADER
+#pragma once
#include <sstream>
#include <string>
@@ -569,5 +568,3 @@ class CoreExport ConfigReaderThread : public Thread
void Finish();
bool IsDone() { return done; }
};
-
-#endif
diff --git a/include/consolecolors.h b/include/consolecolors.h
index f7ca1335e..9b7e0670a 100644
--- a/include/consolecolors.h
+++ b/include/consolecolors.h
@@ -14,8 +14,8 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONSOLECOLORS_H
-#define CONSOLECOLORS_H
+
+#pragma once
#include <ostream>
@@ -96,5 +96,3 @@ inline std::ostream& con_reset(std::ostream &s)
}
#endif
-
-#endif
diff --git a/include/ctables.h b/include/ctables.h
index f9cd08cb3..2ccca0f7b 100644
--- a/include/ctables.h
+++ b/include/ctables.h
@@ -21,8 +21,7 @@
*/
-#ifndef CTABLES_H
-#define CTABLES_H
+#pragma once
/** Used to indicate command success codes
*/
@@ -252,5 +251,3 @@ class CoreExport SplitCommand : public Command
translation.push_back(x5);translation.push_back(x6);translation.push_back(x7);
#define TRANSLATE8(x1,x2,x3,x4,x5,x6,x7,x8) translation.push_back(x1);translation.push_back(x2);translation.push_back(x3);translation.push_back(x4);\
translation.push_back(x5);translation.push_back(x6);translation.push_back(x7);translation.push_back(x8);
-
-#endif
diff --git a/include/cull_list.h b/include/cull_list.h
index 75b08b7a3..ac64dced2 100644
--- a/include/cull_list.h
+++ b/include/cull_list.h
@@ -20,8 +20,7 @@
*/
-#ifndef CULL_LIST_H
-#define CULL_LIST_H
+#pragma once
/**
* The CullList class is used to delete objects at the end of the main loop to
@@ -58,6 +57,3 @@ class CoreExport ActionList
void Run();
};
-
-#endif
-
diff --git a/include/dns.h b/include/dns.h
index 3c8e55d08..d03af8918 100644
--- a/include/dns.h
+++ b/include/dns.h
@@ -18,7 +18,6 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-
/*
dns.h - dns library very very loosely based on
firedns, Copyright (C) 2002 Ian Gulliver
@@ -37,8 +36,8 @@ along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
-#ifndef DNS_H
-#define DNS_H
+
+#pragma once
#include "socket.h"
#include "hashcomp.h"
@@ -438,6 +437,3 @@ class CoreExport DNS : public EventHandler
*/
int PruneCache();
};
-
-#endif
-
diff --git a/include/dynamic.h b/include/dynamic.h
index 5e66ddbb0..d42cf61bf 100644
--- a/include/dynamic.h
+++ b/include/dynamic.h
@@ -20,8 +20,7 @@
*/
-#ifndef DLL_H
-#define DLL_H
+#pragma once
/** The DLLManager class is able to load a module file by filename,
* and locate its init_module symbol.
@@ -65,6 +64,3 @@ class CoreExport DLLManager : public classbase
/** Get detailed version information from the module file */
std::string GetVersion();
};
-
-#endif
-
diff --git a/include/exitcodes.h b/include/exitcodes.h
index d4890c94d..888431969 100644
--- a/include/exitcodes.h
+++ b/include/exitcodes.h
@@ -19,8 +19,7 @@
*/
-#ifndef EXITCODE_H
-#define EXITCODE_H
+#pragma once
/** Valid exit codes to be used with InspIRCd::Exit()
*/
@@ -52,6 +51,3 @@ enum ExitStatus
* human-readable strings to be shown on shutdown.
*/
extern const char * ExitCodes[];
-
-#endif
-
diff --git a/include/extensible.h b/include/extensible.h
index bcc4992bb..e062f66a5 100644
--- a/include/extensible.h
+++ b/include/extensible.h
@@ -17,8 +17,7 @@
*/
-#ifndef EXTENSIBLE_H
-#define EXTENSIBLE_H
+#pragma once
#include <stdint.h>
@@ -190,5 +189,3 @@ class CoreExport StringExtItem : public ExtensionItem
void unset(Extensible* container);
void free(void* item);
};
-
-#endif
diff --git a/include/filelogger.h b/include/filelogger.h
index 739e4d94b..091dc9a03 100644
--- a/include/filelogger.h
+++ b/include/filelogger.h
@@ -18,8 +18,7 @@
*/
-#ifndef FILELOGGER_H
-#define FILELOGGER_H
+#pragma once
#include "logger.h"
@@ -51,6 +50,3 @@ class CoreExport FileLogStream : public LogStream
virtual void OnLog(int loglevel, const std::string &type, const std::string &msg);
};
-
-#endif
-
diff --git a/include/hashcomp.h b/include/hashcomp.h
index 2932f2a48..e4b3cfe79 100644
--- a/include/hashcomp.h
+++ b/include/hashcomp.h
@@ -22,8 +22,7 @@
*/
-#ifndef HASHCOMP_H
-#define HASHCOMP_H
+#pragma once
#include <cstring>
#include <string>
@@ -600,5 +599,3 @@ namespace std
}
}
-
-#endif
diff --git a/include/inspircd.h b/include/inspircd.h
index f61d48529..0ec2c7465 100644
--- a/include/inspircd.h
+++ b/include/inspircd.h
@@ -23,8 +23,7 @@
*/
-#ifndef INSPIRCD_H
-#define INSPIRCD_H
+#pragma once
#define _FILE_OFFSET_BITS 64
#ifndef _LARGEFILE_SOURCE
@@ -877,6 +876,3 @@ class CommandModule : public Module
return Version(cmd.name, VF_VENDOR|VF_CORE);
}
};
-
-#endif
-
diff --git a/include/inspsocket.h b/include/inspsocket.h
index c62c5a250..75c6dc511 100644
--- a/include/inspsocket.h
+++ b/include/inspsocket.h
@@ -21,8 +21,7 @@
*/
-#ifndef INSPSOCKET_H
-#define INSPSOCKET_H
+#pragma once
#include "timer.h"
@@ -234,4 +233,3 @@ class CoreExport BufferedSocket : public StreamSocket
inline Module* StreamSocket::GetIOHook() { return IOHook; }
inline void StreamSocket::AddIOHook(Module* m) { IOHook = m; }
inline void StreamSocket::DelIOHook() { IOHook = NULL; }
-#endif
diff --git a/include/inspstring.h b/include/inspstring.h
index 494ce92b1..7a433427a 100644
--- a/include/inspstring.h
+++ b/include/inspstring.h
@@ -18,13 +18,11 @@
*/
-#ifndef INSPSTRING_H
-#define INSPSTRING_H
+#pragma once
// This (config) is needed as inspstring doesn't pull in the central header
#include "config.h"
#include <cstring>
-//#include <cstddef>
#ifndef HAS_STRLCPY
/** strlcpy() implementation for systems that don't have it (linux) */
@@ -52,6 +50,3 @@ CoreExport std::string BinToHex(const std::string& data);
CoreExport std::string BinToBase64(const std::string& data, const char* table = NULL, char pad = 0);
/** Base64 decode */
CoreExport std::string Base64ToBin(const std::string& data, const char* table = NULL);
-
-#endif
-
diff --git a/include/listmode.h b/include/listmode.h
index b070b90f9..1c6f70d6f 100644
--- a/include/listmode.h
+++ b/include/listmode.h
@@ -16,6 +16,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+
#pragma once
/** The base class for list modes, should be inherited.
diff --git a/include/logger.h b/include/logger.h
index eee964e15..7b4c45f1c 100644
--- a/include/logger.h
+++ b/include/logger.h
@@ -18,8 +18,7 @@
*/
-#ifndef LOGGER_H
-#define LOGGER_H
+#pragma once
/** Simple wrapper providing periodic flushing to a disk-backed file.
*/
@@ -211,5 +210,3 @@ class CoreExport LogManager
*/
void Log(const std::string &type, int loglevel, const char *fmt, ...) CUSTOM_PRINTF(4, 5);
};
-
-#endif
diff --git a/include/membership.h b/include/membership.h
index 436a9371c..44f588417 100644
--- a/include/membership.h
+++ b/include/membership.h
@@ -17,8 +17,7 @@
*/
-#ifndef MEMBERSHIP_H
-#define MEMBERSHIP_H
+#pragma once
class CoreExport Membership : public Extensible
{
@@ -59,5 +58,3 @@ class Invitation : public classbase
static void Create(Channel* c, LocalUser* u, time_t timeout);
static Invitation* Find(Channel* c, LocalUser* u, bool check_expired = true);
};
-
-#endif
diff --git a/include/mode.h b/include/mode.h
index de8d4c5f8..57f1b0669 100644
--- a/include/mode.h
+++ b/include/mode.h
@@ -20,8 +20,7 @@
*/
-#ifndef MODE_H
-#define MODE_H
+#pragma once
#include "ctables.h"
@@ -563,5 +562,3 @@ class CoreExport ModeParser
*/
std::string BuildPrefixes(bool lettersAndModes = true);
};
-
-#endif
diff --git a/include/modules.h b/include/modules.h
index 9ba238da5..783edd9b1 100644
--- a/include/modules.h
+++ b/include/modules.h
@@ -23,8 +23,7 @@
*/
-#ifndef MODULES_H
-#define MODULES_H
+#pragma once
#include "dynamic.h"
#include "base.h"
@@ -1645,5 +1644,3 @@ struct AllModuleList {
#define COMMAND_INIT(c) MODULE_INIT(CommandModule<c>)
#endif
-
-#endif
diff --git a/include/modules/account.h b/include/modules/account.h
new file mode 100644
index 000000000..c00b044e4
--- /dev/null
+++ b/include/modules/account.h
@@ -0,0 +1,41 @@
+/*
+ * InspIRCd -- Internet Relay Chat Daemon
+ *
+ * Copyright (C) 2008 Craig Edwards <craigedwards@brainbox.cc>
+ *
+ * This file is part of InspIRCd. InspIRCd is free software: you can
+ * redistribute it and/or modify it under the terms of the GNU General Public
+ * License as published by the Free Software Foundation, version 2.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#pragma once
+
+#include <map>
+#include <string>
+
+class AccountEvent : public Event
+{
+ public:
+ User* const user;
+ const std::string account;
+ AccountEvent(Module* me, User* u, const std::string& name)
+ : Event(me, "account_login"), user(u), account(name)
+ {
+ }
+};
+
+typedef StringExtItem AccountExtItem;
+
+inline AccountExtItem* GetAccountExtItem()
+{
+ return static_cast<AccountExtItem*>(ServerInstance->Extensions.GetItem("accountname"));
+}
diff --git a/include/modules/cap.h b/include/modules/cap.h
new file mode 100644
index 000000000..2ed8df494
--- /dev/null
+++ b/include/modules/cap.h
@@ -0,0 +1,90 @@
+/*
+ * InspIRCd -- Internet Relay Chat Daemon
+ *
+ * Copyright (C) 2009 Daniel De Graaf <danieldg@inspircd.org>
+ * Copyright (C) 2008 Craig Edwards <craigedwards@brainbox.cc>
+ *
+ * This file is part of InspIRCd. InspIRCd is free software: you can
+ * redistribute it and/or modify it under the terms of the GNU General Public
+ * License as published by the Free Software Foundation, version 2.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#pragma once
+
+class CapEvent : public Event
+{
+ public:
+ enum CapEventType
+ {
+ CAPEVENT_REQ,
+ CAPEVENT_LS,
+ CAPEVENT_LIST,
+ CAPEVENT_CLEAR
+ };
+
+ CapEventType type;
+ std::vector<std::string> wanted;
+ std::vector<std::string> ack;
+ User* user;
+ CapEvent(Module* sender, User* u, CapEventType capevtype) : Event(sender, "cap_request"), type(capevtype), user(u) {}
+};
+
+class GenericCap
+{
+ public:
+ LocalIntExt ext;
+ const std::string cap;
+ GenericCap(Module* parent, const std::string &Cap) : ext("cap_" + Cap, parent), cap(Cap)
+ {
+ ServerInstance->Modules->AddService(ext);
+ }
+
+ void HandleEvent(Event& ev)
+ {
+ if (ev.id != "cap_request")
+ return;
+
+ CapEvent *data = static_cast<CapEvent*>(&ev);
+ if (data->type == CapEvent::CAPEVENT_REQ)
+ {
+ for (std::vector<std::string>::iterator it = data->wanted.begin(); it != data->wanted.end(); ++it)
+ {
+ if (it->empty())
+ continue;
+ bool enablecap = ((*it)[0] != '-');
+ if (((enablecap) && (*it == cap)) || (*it == "-" + cap))
+ {
+ // we can handle this, so ACK it, and remove it from the wanted list
+ data->ack.push_back(*it);
+ data->wanted.erase(it);
+ ext.set(data->user, enablecap ? 1 : 0);
+ break;
+ }
+ }
+ }
+ else if (data->type == CapEvent::CAPEVENT_LS)
+ {
+ data->wanted.push_back(cap);
+ }
+ else if (data->type == CapEvent::CAPEVENT_LIST)
+ {
+ if (ext.get(data->user))
+ data->wanted.push_back(cap);
+ }
+ else if (data->type == CapEvent::CAPEVENT_CLEAR)
+ {
+ data->ack.push_back("-" + cap);
+ ext.set(data->user, 0);
+ }
+ }
+};
+
diff --git a/include/modules/hash.h b/include/modules/hash.h
new file mode 100644
index 000000000..da04c45ba
--- /dev/null
+++ b/include/modules/hash.h
@@ -0,0 +1,58 @@
+/*
+ * InspIRCd -- Internet Relay Chat Daemon
+ *
+ * Copyright (C) 2010 Daniel De Graaf <danieldg@inspircd.org>
+ *
+ * This file is part of InspIRCd. InspIRCd is free software: you can
+ * redistribute it and/or modify it under the terms of the GNU General Public
+ * License as published by the Free Software Foundation, version 2.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#pragma once
+
+#include "modules.h"
+
+class HashProvider : public DataProvider
+{
+ public:
+ const unsigned int out_size;
+ const unsigned int block_size;
+ HashProvider(Module* mod, const std::string& Name, int osiz, int bsiz)
+ : DataProvider(mod, Name), out_size(osiz), block_size(bsiz) {}
+ virtual std::string sum(const std::string& data) = 0;
+ inline std::string hexsum(const std::string& data)
+ {
+ return BinToHex(sum(data));
+ }
+
+ inline std::string b64sum(const std::string& data)
+ {
+ return BinToBase64(sum(data), NULL, 0);
+ }
+
+ /** HMAC algorithm, RFC 2104 */
+ std::string hmac(const std::string& key, const std::string& msg)
+ {
+ std::string hmac1, hmac2;
+ std::string kbuf = key.length() > block_size ? sum(key) : key;
+ kbuf.resize(block_size);
+
+ for (size_t n = 0; n < block_size; n++)
+ {
+ hmac1.push_back(static_cast<char>(kbuf[n] ^ 0x5C));
+ hmac2.push_back(static_cast<char>(kbuf[n] ^ 0x36));
+ }
+ hmac2.append(msg);
+ hmac1.append(sum(hmac2));
+ return sum(hmac1);
+ }
+};
diff --git a/include/modules/httpd.h b/include/modules/httpd.h
new file mode 100644
index 000000000..d1746e862
--- /dev/null
+++ b/include/modules/httpd.h
@@ -0,0 +1,203 @@
+/*
+ * InspIRCd -- Internet Relay Chat Daemon
+ *
+ * Copyright (C) 2009 Daniel De Graaf <danieldg@inspircd.org>
+ * Copyright (C) 2008 Pippijn van Steenhoven <pip88nl@gmail.com>
+ * Copyright (C) 2007 John Brooks <john.brooks@dereferenced.net>
+ * Copyright (C) 2007 Dennis Friis <peavey@inspircd.org>
+ * Copyright (C) 2006 Craig Edwards <craigedwards@brainbox.cc>
+ *
+ * This file is part of InspIRCd. InspIRCd is free software: you can
+ * redistribute it and/or modify it under the terms of the GNU General Public
+ * License as published by the Free Software Foundation, version 2.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#pragma once
+
+#include "base.h"
+
+#include <string>
+#include <sstream>
+#include <map>
+
+/** A modifyable list of HTTP header fields
+ */
+class HTTPHeaders
+{
+ protected:
+ std::map<std::string,std::string> headers;
+ public:
+
+ /** Set the value of a header
+ * Sets the value of the named header. If the header is already present, it will be replaced
+ */
+ void SetHeader(const std::string &name, const std::string &data)
+ {
+ headers[name] = data;
+ }
+
+ /** Set the value of a header, only if it doesn't exist already
+ * Sets the value of the named header. If the header is already present, it will NOT be updated
+ */
+ void CreateHeader(const std::string &name, const std::string &data)
+ {
+ if (!IsSet(name))
+ SetHeader(name, data);
+ }
+
+ /** Remove the named header
+ */
+ void RemoveHeader(const std::string &name)
+ {
+ headers.erase(name);
+ }
+
+ /** Remove all headers
+ */
+ void Clear()
+ {
+ headers.clear();
+ }
+
+ /** Get the value of a header
+ * @return The value of the header, or an empty string
+ */
+ std::string GetHeader(const std::string &name)
+ {
+ std::map<std::string,std::string>::iterator it = headers.find(name);
+ if (it == headers.end())
+ return std::string();
+
+ return it->second;
+ }
+
+ /** Check if the given header is specified
+ * @return true if the header is specified
+ */
+ bool IsSet(const std::string &name)
+ {
+ std::map<std::string,std::string>::iterator it = headers.find(name);
+ return (it != headers.end());
+ }
+
+ /** Get all headers, formatted by the HTTP protocol
+ * @return Returns all headers, formatted according to the HTTP protocol. There is no request terminator at the end
+ */
+ std::string GetFormattedHeaders()
+ {
+ std::string re;
+
+ for (std::map<std::string,std::string>::iterator i = headers.begin(); i != headers.end(); i++)
+ re += i->first + ": " + i->second + "\r\n";
+
+ return re;
+ }
+};
+
+class HttpServerSocket;
+
+/** This class represents a HTTP request.
+ */
+class HTTPRequest : public Event
+{
+ protected:
+ std::string type;
+ std::string document;
+ std::string ipaddr;
+ std::string postdata;
+
+ public:
+
+ HTTPHeaders *headers;
+ int errorcode;
+
+ /** A socket pointer, which you must return in your HTTPDocument class
+ * if you reply to this request.
+ */
+ HttpServerSocket* sock;
+
+ /** Initialize HTTPRequest.
+ * This constructor is called by m_httpd.so to initialize the class.
+ * @param request_type The request type, e.g. GET, POST, HEAD
+ * @param uri The URI, e.g. /page
+ * @param hdr The headers sent with the request
+ * @param opaque An opaque pointer used internally by m_httpd, which you must pass back to the module in your reply.
+ * @param ip The IP address making the web request.
+ * @param pdata The post data (content after headers) received with the request, up to Content-Length in size
+ */
+ HTTPRequest(Module* me, const std::string &eventid, const std::string &request_type, const std::string &uri,
+ HTTPHeaders* hdr, HttpServerSocket* socket, const std::string &ip, const std::string &pdata)
+ : Event(me, eventid), type(request_type), document(uri), ipaddr(ip), postdata(pdata), headers(hdr), sock(socket)
+ {
+ }
+
+ /** Get the post data (request content).
+ * All post data will be returned, including carriage returns and linefeeds.
+ * @return The postdata
+ */
+ std::string& GetPostData()
+ {
+ return postdata;
+ }
+
+ /** Get the request type.
+ * Any request type can be intercepted, even ones which are invalid in the HTTP/1.1 spec.
+ * @return The request type, e.g. GET, POST, HEAD
+ */
+ std::string& GetType()
+ {
+ return type;
+ }
+
+ /** Get URI.
+ * The URI string (URL minus hostname and scheme) will be provided by this function.
+ * @return The URI being requested
+ */
+ std::string& GetURI()
+ {
+ return document;
+ }
+
+ /** Get IP address of requester.
+ * The requesting system's ip address will be returned.
+ * @return The IP address as a string
+ */
+ std::string& GetIP()
+ {
+ return ipaddr;
+ }
+};
+
+/** You must return a HTTPDocument to the httpd module by using the Request class.
+ * When you initialize this class you may initialize it with all components required to
+ * form a valid HTTP response, including document data, headers, and a response code.
+ */
+class HTTPDocumentResponse : public Request
+{
+ public:
+ std::stringstream* document;
+ int responsecode;
+ HTTPHeaders headers;
+ HTTPRequest& src;
+
+ /** Initialize a HTTPRequest ready for sending to m_httpd.so.
+ * @param opaque The socket pointer you obtained from the HTTPRequest at an earlier time
+ * @param doc A stringstream containing the document body
+ * @param response A valid HTTP/1.0 or HTTP/1.1 response code. The response text will be determined for you
+ * based upon the response code.
+ * @param extra Any extra headers to include with the defaults, seperated by carriage return and linefeed.
+ */
+ HTTPDocumentResponse(Module* me, HTTPRequest& req, std::stringstream* doc, int response)
+ : Request(me, req.source, "HTTP-DOC"), document(doc), responsecode(response), src(req)
+ {
+ }
+};
diff --git a/include/modules/regex.h b/include/modules/regex.h
new file mode 100644
index 000000000..875f942bc
--- /dev/null
+++ b/include/modules/regex.h
@@ -0,0 +1,55 @@
+/*
+ * InspIRCd -- Internet Relay Chat Daemon
+ *
+ * Copyright (C) 2009 Daniel De Graaf <danieldg@inspircd.org>
+ * Copyright (C) 2008 Thomas Stagner <aquanight@inspircd.org>
+ *
+ * This file is part of InspIRCd. InspIRCd is free software: you can
+ * redistribute it and/or modify it under the terms of the GNU General Public
+ * License as published by the Free Software Foundation, version 2.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#pragma once
+
+#include "inspircd.h"
+
+class Regex : public classbase
+{
+protected:
+ std::string regex_string; // The raw uncompiled regex string.
+
+ // Constructor may as well be protected, as this class is abstract.
+ Regex(const std::string& rx) : regex_string(rx)
+ {
+ }
+
+public:
+
+ virtual ~Regex()
+ {
+ }
+
+ virtual bool Matches(const std::string& text) = 0;
+
+ const std::string& GetRegexString() const
+ {
+ return regex_string;
+ }
+};
+
+class RegexFactory : public DataProvider
+{
+ public:
+ RegexFactory(Module* Creator, const std::string& Name) : DataProvider(Creator, Name) {}
+
+ virtual Regex* Create(const std::string& expr) = 0;
+};
diff --git a/include/modules/sasl.h b/include/modules/sasl.h
new file mode 100644
index 000000000..321711a68
--- /dev/null
+++ b/include/modules/sasl.h
@@ -0,0 +1,31 @@
+/*
+ * InspIRCd -- Internet Relay Chat Daemon
+ *
+ * Copyright (C) 2010 Daniel De Graaf <danieldg@inspircd.org>
+ *
+ * This file is part of InspIRCd. InspIRCd is free software: you can
+ * redistribute it and/or modify it under the terms of the GNU General Public
+ * License as published by the Free Software Foundation, version 2.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#pragma once
+
+class SASLFallback : public Event
+{
+ public:
+ const parameterlist& params;
+ SASLFallback(Module* me, const parameterlist& p)
+ : Event(me, "sasl_fallback"), params(p)
+ {
+ Send();
+ }
+};
diff --git a/include/modules/spanningtree.h b/include/modules/spanningtree.h
new file mode 100644
index 000000000..99f4f9fc4
--- /dev/null
+++ b/include/modules/spanningtree.h
@@ -0,0 +1,40 @@
+/*
+ * InspIRCd -- Internet Relay Chat Daemon
+ *
+ * Copyright (C) 2009 Daniel De Graaf <danieldg@inspircd.org>
+ *
+ * This file is part of InspIRCd. InspIRCd is free software: you can
+ * redistribute it and/or modify it under the terms of the GNU General Public
+ * License as published by the Free Software Foundation, version 2.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#pragma once
+
+struct AddServerEvent : public Event
+{
+ const std::string servername;
+ AddServerEvent(Module* me, const std::string& name)
+ : Event(me, "new_server"), servername(name)
+ {
+ Send();
+ }
+};
+
+struct DelServerEvent : public Event
+{
+ const std::string servername;
+ DelServerEvent(Module* me, const std::string& name)
+ : Event(me, "lost_server"), servername(name)
+ {
+ Send();
+ }
+};
diff --git a/include/modules/sql.h b/include/modules/sql.h
new file mode 100644
index 000000000..a671cc95c
--- /dev/null
+++ b/include/modules/sql.h
@@ -0,0 +1,184 @@
+/*
+ * InspIRCd -- Internet Relay Chat Daemon
+ *
+ * Copyright (C) 2010 Daniel De Graaf <danieldg@inspircd.org>
+ *
+ * This file is part of InspIRCd. InspIRCd is free software: you can
+ * redistribute it and/or modify it under the terms of the GNU General Public
+ * License as published by the Free Software Foundation, version 2.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#pragma once
+
+/** Defines the error types which SQLerror may be set to
+ */
+enum SQLerrorNum { SQL_NO_ERROR, SQL_BAD_DBID, SQL_BAD_CONN, SQL_QSEND_FAIL, SQL_QREPLY_FAIL };
+
+/** A list of format parameters for an SQLquery object.
+ */
+typedef std::vector<std::string> ParamL;
+
+typedef std::map<std::string, std::string> ParamM;
+
+class SQLEntry
+{
+ public:
+ std::string value;
+ bool nul;
+ SQLEntry() : nul(true) {}
+ SQLEntry(const std::string& v) : value(v), nul(false) {}
+ inline operator std::string&() { return value; }
+};
+
+typedef std::vector<SQLEntry> SQLEntries;
+
+/**
+ * Result of an SQL query. Only valid inside OnResult
+ */
+class SQLResult : public classbase
+{
+ public:
+ /**
+ * Return the number of rows in the result.
+ *
+ * Note that if you have perfomed an INSERT or UPDATE query or other
+ * query which will not return rows, this will return the number of
+ * affected rows. In this case you SHOULD NEVER access any of the result
+ * set rows, as there aren't any!
+ * @returns Number of rows in the result set.
+ */
+ virtual int Rows() = 0;
+
+ /**
+ * Return a single row (result of the query). The internal row counter
+ * is incremented by one.
+ *
+ * @param result Storage for the result data.
+ * @returns true if there was a row, false if no row exists (end of
+ * iteration)
+ */
+ virtual bool GetRow(SQLEntries& result) = 0;
+
+ /** Returns column names for the items in this row
+ */
+ virtual void GetCols(std::vector<std::string>& result) = 0;
+};
+
+/** SQLerror holds the error state of a request.
+ * The error string varies from database software to database software
+ * and should be used to display informational error messages to users.
+ */
+class SQLerror
+{
+ public:
+ /** The error id
+ */
+ SQLerrorNum id;
+
+ /** The error string
+ */
+ std::string str;
+
+ /** Initialize an SQLerror
+ * @param i The error ID to set
+ * @param s The (optional) error string to set
+ */
+ SQLerror(SQLerrorNum i, const std::string &s = "")
+ : id(i), str(s)
+ {
+ }
+
+ /** Return the error string for an error
+ */
+ const char* Str()
+ {
+ if(str.length())
+ return str.c_str();
+
+ switch(id)
+ {
+ case SQL_BAD_DBID:
+ return "Invalid database ID";
+ case SQL_BAD_CONN:
+ return "Invalid connection";
+ case SQL_QSEND_FAIL:
+ return "Sending query failed";
+ case SQL_QREPLY_FAIL:
+ return "Getting query result failed";
+ default:
+ return "Unknown error";
+ }
+ }
+};
+
+/**
+ * Object representing an SQL query. This should be allocated on the heap and
+ * passed to an SQLProvider, which will free it when the query is complete or
+ * when the querying module is unloaded.
+ *
+ * You should store whatever information is needed to have the callbacks work in
+ * this object (UID of user, channel name, etc).
+ */
+class SQLQuery : public classbase
+{
+ public:
+ ModuleRef creator;
+
+ SQLQuery(Module* Creator) : creator(Creator) {}
+ virtual ~SQLQuery() {}
+
+ virtual void OnResult(SQLResult& result) = 0;
+ /**
+ * Called when the query fails
+ */
+ virtual void OnError(SQLerror& error) { }
+};
+
+/**
+ * Provider object for SQL servers
+ */
+class SQLProvider : public DataProvider
+{
+ public:
+ SQLProvider(Module* Creator, const std::string& Name) : DataProvider(Creator, Name) {}
+ /** Submit an asynchronous SQL request
+ * @param callback The result reporting point
+ * @param query The hardcoded query string. If you have parameters to substitute, see below.
+ */
+ virtual void submit(SQLQuery* callback, const std::string& query) = 0;
+
+ /** Submit an asynchronous SQL request
+ * @param callback The result reporting point
+ * @param format The simple parameterized query string ('?' parameters)
+ * @param p Parameters to fill in for the '?' entries
+ */
+ virtual void submit(SQLQuery* callback, const std::string& format, const ParamL& p) = 0;
+
+ /** Submit an asynchronous SQL request.
+ * @param callback The result reporting point
+ * @param format The parameterized query string ('$name' parameters)
+ * @param p Parameters to fill in for the '$name' entries
+ */
+ virtual void submit(SQLQuery* callback, const std::string& format, const ParamM& p) = 0;
+
+ /** Convenience function to prepare a map from a User* */
+ void PopulateUserInfo(User* user, ParamM& userinfo)
+ {
+ userinfo["nick"] = user->nick;
+ userinfo["host"] = user->host;
+ userinfo["ip"] = user->GetIPString();
+ userinfo["gecos"] = user->fullname;
+ userinfo["ident"] = user->ident;
+ userinfo["server"] = user->server;
+ userinfo["uuid"] = user->uuid;
+ }
+};
diff --git a/include/modules/ssl.h b/include/modules/ssl.h
new file mode 100644
index 000000000..a79dcc9ef
--- /dev/null
+++ b/include/modules/ssl.h
@@ -0,0 +1,172 @@
+/*
+ * InspIRCd -- Internet Relay Chat Daemon
+ *
+ * Copyright (C) 2009 Daniel De Graaf <danieldg@inspircd.org>
+ * Copyright (C) 2006 Craig Edwards <craigedwards@brainbox.cc>
+ *
+ * This file is part of InspIRCd. InspIRCd is free software: you can
+ * redistribute it and/or modify it under the terms of the GNU General Public
+ * License as published by the Free Software Foundation, version 2.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#pragma once
+
+#include <map>
+#include <string>
+
+/** ssl_cert is a class which abstracts SSL certificate
+ * and key information.
+ *
+ * Because gnutls and openssl represent key information in
+ * wildly different ways, this class allows it to be accessed
+ * in a unified manner. These classes are attached to ssl-
+ * connected local users using SSLCertExt
+ */
+class ssl_cert : public refcountbase
+{
+ public:
+ std::string dn;
+ std::string issuer;
+ std::string error;
+ std::string fingerprint;
+ bool trusted, invalid, unknownsigner, revoked;
+
+ ssl_cert() : trusted(false), invalid(true), unknownsigner(true), revoked(false) {}
+
+ /** Get certificate distinguished name
+ * @return Certificate DN
+ */
+ const std::string& GetDN()
+ {
+ return dn;
+ }
+
+ /** Get Certificate issuer
+ * @return Certificate issuer
+ */
+ const std::string& GetIssuer()
+ {
+ return issuer;
+ }
+
+ /** Get error string if an error has occured
+ * @return The error associated with this users certificate,
+ * or an empty string if there is no error.
+ */
+ const std::string& GetError()
+ {
+ return error;
+ }
+
+ /** Get key fingerprint.
+ * @return The key fingerprint as a hex string.
+ */
+ const std::string& GetFingerprint()
+ {
+ return fingerprint;
+ }
+
+ /** Get trust status
+ * @return True if this is a trusted certificate
+ * (the certificate chain validates)
+ */
+ bool IsTrusted()
+ {
+ return trusted;
+ }
+
+ /** Get validity status
+ * @return True if the certificate itself is
+ * correctly formed.
+ */
+ bool IsInvalid()
+ {
+ return invalid;
+ }
+
+ /** Get signer status
+ * @return True if the certificate appears to be
+ * self-signed.
+ */
+ bool IsUnknownSigner()
+ {
+ return unknownsigner;
+ }
+
+ /** Get revokation status.
+ * @return True if the certificate is revoked.
+ * Note that this only works properly for GnuTLS
+ * right now.
+ */
+ bool IsRevoked()
+ {
+ return revoked;
+ }
+
+ bool IsCAVerified()
+ {
+ return trusted && !invalid && !revoked && !unknownsigner && error.empty();
+ }
+
+ std::string GetMetaLine()
+ {
+ std::stringstream value;
+ bool hasError = !error.empty();
+ value << (IsInvalid() ? "v" : "V") << (IsTrusted() ? "T" : "t") << (IsRevoked() ? "R" : "r")
+ << (IsUnknownSigner() ? "s" : "S") << (hasError ? "E" : "e") << " ";
+ if (hasError)
+ value << GetError();
+ else
+ value << GetFingerprint() << " " << GetDN() << " " << GetIssuer();
+ return value.str();
+ }
+};
+
+/** Get certificate from a socket (only useful with an SSL module) */
+struct SocketCertificateRequest : public Request
+{
+ StreamSocket* const sock;
+ ssl_cert* cert;
+
+ SocketCertificateRequest(StreamSocket* ss, Module* Me)
+ : Request(Me, ss->GetIOHook(), "GET_SSL_CERT"), sock(ss), cert(NULL)
+ {
+ Send();
+ }
+
+ std::string GetFingerprint()
+ {
+ if (cert)
+ return cert->GetFingerprint();
+ return "";
+ }
+};
+
+/** Get certificate from a user (requires m_sslinfo) */
+struct UserCertificateRequest : public Request
+{
+ User* const user;
+ ssl_cert* cert;
+
+ UserCertificateRequest(User* u, Module* Me, Module* info = ServerInstance->Modules->Find("m_sslinfo.so"))
+ : Request(Me, info, "GET_USER_CERT"), user(u), cert(NULL)
+ {
+ Send();
+ }
+
+ std::string GetFingerprint()
+ {
+ if (cert)
+ return cert->GetFingerprint();
+ return "";
+ }
+};
diff --git a/include/numerics.h b/include/numerics.h
index 4fce4cb6d..997a71d3a 100644
--- a/include/numerics.h
+++ b/include/numerics.h
@@ -18,8 +18,7 @@
*/
-#ifndef NUMERICS_H
-#define NUMERICS_H
+#pragma once
/*
* This file is aimed providing a string that is easier to use than using the numeric
@@ -157,5 +156,3 @@ enum Numerics
ERR_CANTLOADMODULE = 974, // insp-specific
RPL_LOADEDMODULE = 975 // insp-specific
};
-
-#endif
diff --git a/include/protocol.h b/include/protocol.h
index aabb5b022..4488fcea4 100644
--- a/include/protocol.h
+++ b/include/protocol.h
@@ -18,8 +18,7 @@
*/
-#ifndef PROTOCOL_H
-#define PROTOCOL_H
+#pragma once
#include "hashcomp.h"
@@ -135,6 +134,3 @@ class ProtocolInterface
*/
virtual void GetServerList(ProtoServerList &sl) { }
};
-
-#endif
-
diff --git a/include/snomasks.h b/include/snomasks.h
index 85ad26f71..c5d594eeb 100644
--- a/include/snomasks.h
+++ b/include/snomasks.h
@@ -20,8 +20,7 @@
*/
-#ifndef SNOMASKS_H
-#define SNOMASKS_H
+#pragma once
class Snomask
{
@@ -106,5 +105,3 @@ class CoreExport SnomaskManager
*/
void FlushSnotices();
};
-
-#endif
diff --git a/include/socket.h b/include/socket.h
index 5f6705124..f6934b771 100644
--- a/include/socket.h
+++ b/include/socket.h
@@ -22,8 +22,7 @@
*/
-#ifndef INSPIRCD_SOCKET_H
-#define INSPIRCD_SOCKET_H
+#pragma once
#ifndef _WIN32
@@ -165,6 +164,3 @@ class CoreExport ListenSocket : public EventHandler
*/
void AcceptInternal();
};
-
-#endif
-
diff --git a/include/socketengine.h b/include/socketengine.h
index 58af73589..fd199c324 100644
--- a/include/socketengine.h
+++ b/include/socketengine.h
@@ -20,8 +20,7 @@
*/
-#ifndef SOCKETENGINE_H
-#define SOCKETENGINE_H
+#pragma once
#include <vector>
#include <string>
@@ -492,6 +491,3 @@ public:
};
SocketEngine* CreateSocketEngine();
-
-#endif
-
diff --git a/include/testsuite.h b/include/testsuite.h
index f91e508c9..43064b063 100644
--- a/include/testsuite.h
+++ b/include/testsuite.h
@@ -16,8 +16,7 @@
*/
-#ifndef TESTSUITE_H
-#define TESTSUITE_H
+#pragma once
class TestSuite
{
@@ -32,5 +31,3 @@ class TestSuite
bool DoSpaceSepStreamTests();
bool DoGenerateUIDTests();
};
-
-#endif
diff --git a/include/threadengine.h b/include/threadengine.h
index e0ed9ec40..39f150566 100644
--- a/include/threadengine.h
+++ b/include/threadengine.h
@@ -18,8 +18,7 @@
*/
-#ifndef THREADENGINE_H
-#define THREADENGINE_H
+#pragma once
#include <vector>
#include <string>
@@ -172,6 +171,3 @@ class CoreExport SocketThread : public Thread
*/
virtual void OnNotify() = 0;
};
-
-#endif
-
diff --git a/include/threadengines/threadengine_pthread.h b/include/threadengines/threadengine_pthread.h
index 5168ed238..253e8d223 100644
--- a/include/threadengines/threadengine_pthread.h
+++ b/include/threadengines/threadengine_pthread.h
@@ -18,8 +18,7 @@
*/
-#ifndef THREADENGINE_PTHREAD_H
-#define THREADENGINE_PTHREAD_H
+#pragma once
#include <pthread.h>
#include "typedefs.h"
@@ -153,6 +152,3 @@ class ThreadSignalData
public:
ThreadSignalSocket* sock;
};
-
-
-#endif
diff --git a/include/threadengines/threadengine_win32.h b/include/threadengines/threadengine_win32.h
index 2fdcac565..59848bd44 100644
--- a/include/threadengines/threadengine_win32.h
+++ b/include/threadengines/threadengine_win32.h
@@ -18,8 +18,7 @@
*/
-#ifndef THREADENGINE_WIN32_H
-#define THREADENGINE_WIN32_H
+#pragma once
#include "config.h"
#include "base.h"
@@ -152,6 +151,3 @@ class ThreadSignalData
connFD = -1;
}
};
-
-#endif
-
diff --git a/include/timer.h b/include/timer.h
index 9bb7128b8..0dda6876e 100644
--- a/include/timer.h
+++ b/include/timer.h
@@ -19,8 +19,7 @@
*/
-#ifndef INSPIRCD_TIMER_H
-#define INSPIRCD_TIMER_H
+#pragma once
/** Timer class for one-second resolution timers
* Timer provides a facility which allows module
@@ -149,6 +148,3 @@ class CoreExport TimerManager
*/
static bool TimerComparison( Timer *one, Timer*two);
};
-
-#endif
-
diff --git a/include/typedefs.h b/include/typedefs.h
index e73790667..be7d4f796 100644
--- a/include/typedefs.h
+++ b/include/typedefs.h
@@ -19,8 +19,7 @@
*/
-#ifndef TYPEDEFS_H
-#define TYPEDEFS_H
+#pragma once
class BanCacheManager;
class BanItem;
@@ -154,7 +153,3 @@ typedef XLineContainer::iterator ContainerIter;
/** An interator in an XLineLookup
*/
typedef XLineLookup::iterator LookupIter;
-
-
-#endif
-
diff --git a/include/uid.h b/include/uid.h
index 17061bdee..3783e7ada 100644
--- a/include/uid.h
+++ b/include/uid.h
@@ -16,6 +16,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+#pragma once
/**
* This is the maximum length of a UUID (unique user identifier).
@@ -24,4 +25,3 @@
*/
#define UUID_LENGTH 10
-
diff --git a/include/usermanager.h b/include/usermanager.h
index 812d8e2f2..560db17f2 100644
--- a/include/usermanager.h
+++ b/include/usermanager.h
@@ -17,8 +17,7 @@
*/
-#ifndef USERMANAGER_H
-#define USERMANAGER_H
+#pragma once
#include <list>
@@ -168,5 +167,3 @@ class CoreExport UserManager
*/
void ServerPrivmsgAll(const char* text, ...) CUSTOM_PRINTF(2, 3);
};
-
-#endif
diff --git a/include/users.h b/include/users.h
index c5c936c13..34bcc9c73 100644
--- a/include/users.h
+++ b/include/users.h
@@ -22,8 +22,7 @@
*/
-#ifndef USERS_H
-#define USERS_H
+#pragma once
#include "socket.h"
#include "inspsocket.h"
@@ -953,5 +952,3 @@ class CoreExport UserResolver : public Resolver
*/
void OnError(ResolverError e, const std::string &errormessage);
};
-
-#endif
diff --git a/include/xline.h b/include/xline.h
index 4094e05df..119e29dc1 100644
--- a/include/xline.h
+++ b/include/xline.h
@@ -20,8 +20,7 @@
*/
-#ifndef XLINE_H
-#define XLINE_H
+#pragma once
/** XLine is the base class for ban lines such as G lines and K lines.
* Modules may derive from this, and their xlines will automatically be
@@ -527,4 +526,3 @@ class CoreExport XLineManager
void InvokeStats(const std::string &type, int numeric, User* user, string_list &results);
};
-#endif