From d11323cf349815197d824facf79b6fdbfc9f5a98 Mon Sep 17 00:00:00 2001 From: Attila Molnar Date: Mon, 27 Oct 2014 21:10:03 +0100 Subject: Allow setting a limit of less than 64 entries for non-ban listmodes via Fixes regression introduced in 234be2f3cb --- src/modules/u_listmode.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/modules/u_listmode.h b/src/modules/u_listmode.h index 30bf6a48f..a728eb839 100644 --- a/src/modules/u_listmode.h +++ b/src/modules/u_listmode.h @@ -294,6 +294,8 @@ class ListModeBase : public ModeHandler return MODEACTION_DENY; } } + else + break; } } -- cgit v1.2.3 From fbe1743e5e24fdf26c91a9a8b77ca9ad082c5689 Mon Sep 17 00:00:00 2001 From: Peter Powell Date: Wed, 29 Oct 2014 12:44:50 +0000 Subject: Fix modulemanager not being able to download modules (again!). --- modulemanager | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/modulemanager b/modulemanager index 24f4467a4..af5bf113c 100755 --- a/modulemanager +++ b/modulemanager @@ -348,11 +348,16 @@ for my $mod (sort keys %todo) { } $mod_versions{$mod} = $ver; - my $stat = getstore($url, "src/modules/$mod.cpp"); - if ($stat == 200) { + my $ua = LWP::UserAgent->new(ssl_opts => { verify_hostname => 0 }); + my $response = $ua->get($url); + + if ($response->is_success) { + open(MF, ">src/modules/$mod.cpp") or die "\nFilesystem not writable: $!"; + print MF $response->decoded_content; + close(MF); print " - done\n"; } else { - print " - HTTP $stat\n"; + printf "\nHTTP %s: %s\n", $response->code, $response->message; } } -- cgit v1.2.3 From def45e087db7a74005856e9d783dab852cbf3fc3 Mon Sep 17 00:00:00 2001 From: Attila Molnar Date: Fri, 31 Oct 2014 16:36:47 +0100 Subject: Remove formatting from the IRC link in README.md It does not work, people don't see the address on the page --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index caadad82d..70171861c 100644 --- a/README.md +++ b/README.md @@ -18,4 +18,4 @@ many different users. * [Website](http://inspircd.org) * [GitHub](https://github.com/inspircd) -* [IRC](irc://irc.chatspike.net/inspircd) \ No newline at end of file +* IRC: #inspircd on irc.inspircd.org \ No newline at end of file -- cgit v1.2.3 From c35ad9206cbcf544bf84a9d54e03c750c0c381ba Mon Sep 17 00:00:00 2001 From: JD Horelick Date: Sat, 8 Nov 2014 18:45:55 -0500 Subject: Add missing oper-only commands to oper class blocks --- docs/conf/opers.conf.example | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/conf/opers.conf.example b/docs/conf/opers.conf.example index d03d019c6..e3bcc1969 100644 --- a/docs/conf/opers.conf.example +++ b/docs/conf/opers.conf.example @@ -15,7 +15,7 @@ name="Shutdown" # commands: Oper-only commands that opers of this class can run. - commands="DIE RESTART REHASH LOADMODULE UNLOADMODULE RELOADMODULE GUNLOADMODULE GRELOADMODULE" + commands="DIE RESTART REHASH LOADMODULE UNLOADMODULE RELOADMODULE GLOADMODULE GUNLOADMODULE GRELOADMODULE" # privs: Special privileges that users with this class may utilise. # VIEWING: @@ -39,11 +39,11 @@ # chanmodes: Oper-only channel modes that opers with this class can use. chanmodes="*"> - + - + #-#-#-#-#-#-#-#-#-#-#-#- OPERATOR COMPOSITION -#-#-#-#-#-#-#-#-#-#-# -- cgit v1.2.3 From 2faf5ff670024c0b1c217ade65517005ec20df11 Mon Sep 17 00:00:00 2001 From: JD Horelick Date: Sat, 8 Nov 2014 19:40:08 -0500 Subject: Make some config strings a bit more professional and use RFC reserved TLD's everywhere --- docs/conf/inspircd.conf.example | 18 +++++++++--------- docs/conf/links.conf.example | 16 ++++++++-------- docs/conf/modules.conf.example | 42 +++++++++++++++++++++-------------------- docs/conf/opers.conf.example | 4 ++-- 4 files changed, 41 insertions(+), 39 deletions(-) diff --git a/docs/conf/inspircd.conf.example b/docs/conf/inspircd.conf.example index 551797f7b..9fd0adfd3 100644 --- a/docs/conf/inspircd.conf.example +++ b/docs/conf/inspircd.conf.example @@ -53,7 +53,7 @@ # # # # # Executable include example: # -# +# # # @@ -81,7 +81,7 @@ + #-#-#-#-#-#-#-#-#-#-#- DISABLED FEATURES -#-#-#-#-#-#-#-#-#-#-#-#-#-# @@ -572,7 +572,7 @@ # allowmismatch: Setting this option to yes will allow servers to link even # if they don't have the same "optionally common" modules loaded. Setting this to - # yes may introduce some desyncs and weirdness. + # yes may introduce some desyncs and unwanted behaviour. allowmismatch="no" # defaultbind: Sets the default for tags without an address. Choices are @@ -887,10 +887,10 @@ + reason="Evading Bans"> @@ -937,7 +937,7 @@ # # # You should already know what to do here :) # - + #-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-# MODULES #-#-#-#-#-#-#-#-#-#-#-#-#-#-# # ____ _ _____ _ _ ____ _ _ _ # diff --git a/docs/conf/links.conf.example b/docs/conf/links.conf.example index 591ebcac3..a1bab2b3a 100644 --- a/docs/conf/links.conf.example +++ b/docs/conf/links.conf.example @@ -17,11 +17,11 @@ value of the remote server. - name="hub.penguin.org" + name="hub.example.org" # ipaddr: The IP address of the remote server. # Can also be a hostname, but hostname must resolve. - ipaddr="penguin.box.com" + ipaddr="penguin.example.org" # port: The port to connect to the server on. # It must be bound as a server port on the other server. @@ -71,8 +71,8 @@ # A duplicate of the first link block without comments # if you like copying & pasting. - + # Failover autoconnect block. If you have multiple hubs, or want your network # to automatically link even if the hub is down, you can specify multiple @@ -103,7 +103,7 @@ # robin fashion until one succeeds. Period defines the time for restarting # a single loop. + server="hub.us.example.org hub.eu.example.org leaf.eu.example.org"> #-#-#-#-#-#-#-#-#-#-#-#- ULINES CONFIGURATION #-#-#-#-#-#-#-#-#-#-#-#-# @@ -115,4 +115,4 @@ # not generate quit and connect notices, which can cut down on noise # # to opers on the network. # # # - + diff --git a/docs/conf/modules.conf.example b/docs/conf/modules.conf.example index 30b8181ac..70025260d 100644 --- a/docs/conf/modules.conf.example +++ b/docs/conf/modules.conf.example @@ -22,7 +22,8 @@ # To link servers to InspIRCd, you MUST load the m_spanningtree # # module. If you don't do this, server links will NOT work at all. # # This is by design, to allow for the implementation of other linking # -# protocols in modules in the future. # +# protocols in modules in the future. This module is at the bottom of # +# this file. # # # #-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-# @@ -293,8 +294,9 @@ # cooldown="60"> #-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-# -# CAP module: Provides the CAP negotiation mechanism seen in -# ratbox-derived ircds. +# CAP module: Provides the CAP negotiation mechanism required by the +# m_sasl, m_namesx, m_uhnames, and m_ircv3 modules. +# It is also recommended for the STARTTLS support in m_ssl_gnutls. # #-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-# @@ -335,12 +337,12 @@ # CGI:IRC documentation. # # Old style: -# # Get IP from PASS -# # Get IP from ident -# # See the docs +# # Get IP from PASS +# # Get IP from ident +# # See the docs # New style: # # Get IP from WEBIRC +# mask="somebox.example.com"> # Get IP from WEBIRC # # IMPORTANT NOTE: # --------------- @@ -654,7 +656,7 @@ # vhost - Displayed host (optional). # # -#<title name="bar" password="foo" host="ident@host.name" title="Official Chat Helper" vhost="helper.network.chat"> +#<title name="bar" password="foo" host="ident@test.org" title="Official Chat Helper" vhost="helper.test.org"> #<title name="foo" password="fcde2b2edba56bf408601fb721fe9b5c338d10ee429ea04fae5511b68fbf8fb9" hash="sha256" title="Official Chat Helper"> #-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-# @@ -713,13 +715,13 @@ # redirect - Redirect the user to a different channel. # # # #<badchan name="#gods*" allowopers="yes" reason="Tortoises!"> # -#<badchan name="#heaven" redirect="#hell" reason="Nice try!"> # +#<badchan name="#chan1" redirect="#chan2" reason="Chan1 is closed"> # # # # Redirects will not work if the target channel is set +L. # # # # Additionally, you may specify channels which are allowed, even if # # a badchan tag specifies it would be denied: # -#<goodchan name="#godsleeps"> # +#<goodchan name="#funtimes"> # # Glob masks are accepted here also. # #-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-# @@ -854,10 +856,10 @@ # # # See http://wiki.inspircd.org/Modules/hostchange for help. # # # -#<host suffix="polarbears.org" separator="." prefix=""> -#<hostchange mask="*@fbi.gov" action="addnick"> -#<hostchange mask="*r00t@*" action="suffix"> -#<hostchange mask="a@b.com" action="set" value="blah.blah.blah"> +#<host suffix="invalid.org" separator="." prefix=""> +#<hostchange mask="*@42.theanswer.example.org" action="addnick"> +#<hostchange mask="*root@*" action="suffix"> +#<hostchange mask="a@example.com" action="set" value="foo.bar.baz"> #<hostchange mask="localhost" ports="7000,7001,7005-7007" action="set" value="blahblah.foo"> #-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-# @@ -885,7 +887,7 @@ # Restrict access to the m_httpd_stats module to all but the local # network and when the correct password is specified: # <httpdacl path="/stats*" types="password,whitelist" -# username="secretstuff" password="mypasshere" whitelist="127.0.0.*,10.*"> +# username="secrets" password="mypasshere" whitelist="127.0.0.*,10.*"> # # Deny all connections to all but the main index page: # <httpdacl path="/*" types="blacklist" blacklist="*"> @@ -921,7 +923,7 @@ # Invite exception module: Adds support for channel invite exceptions # (+I). #<module name="m_inviteexception.so"> -# Does a +I bypass channel +k in addition to +i? +# bypasskey: If this is enabled, exceptions will bypass +k as well as +i #<inviteexception bypasskey="yes"> #-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-# @@ -1082,7 +1084,7 @@ #-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-# # Map hiding module: replaces /MAP and /LINKS output to users with a # -# message to see a website, set by maphide="http://link.to/site" in # +# message to see a website, set by maphide="http://test.org/map" in # # the <security> tag, instead. # #<module name="m_maphide.so"> @@ -1333,7 +1335,7 @@ # password you want to hash. For example: # # <oper name="Brain" -# host="ident@dialup15.isp.com" +# host="ident@dialup15.isp.test.com" # hash="sha256" # password="01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b" # type="NetAdmin"> @@ -1849,8 +1851,8 @@ # # # host - Vhost to set. # # -#<vhost user="some_username" pass="some_password" host="some.host"> -#<vhost user="foo" password="fcde2b2edba56bf408601fb721fe9b5c338d10ee429ea04fae5511b68fbf8fb9" hash="sha256" host="some.other.host"> +#<vhost user="some_username" pass="some_password" host="some.host.test.cc"> +#<vhost user="foo" password="fcde2b2edba56bf408601fb721fe9b5c338d10ee429ea04fae5511b68fbf8fb9" hash="sha256" host="some.other.host.example.com"> #-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-# # Watch module: Adds the WATCH command, which is used by clients to diff --git a/docs/conf/opers.conf.example b/docs/conf/opers.conf.example index e3bcc1969..75b54faf0 100644 --- a/docs/conf/opers.conf.example +++ b/docs/conf/opers.conf.example @@ -129,8 +129,8 @@ # Operator with a plaintext password and no comments, for easy copy & paste. <oper name="Brain" - password="s3cret" - host="brain@dialup15.isp.com *@localhost *@example.com *@2001:db8::/32" + password="youshouldhashthis" + host="brain@dialup15.isp.test.com *@localhost *@example.com *@2001:db8::/32" #fingerprint="67cb9dc013248a829bb2171ed11becd4" type="NetAdmin"> -- cgit v1.2.3 From 293c9c66b7b2b9467c487a44370b24f652454216 Mon Sep 17 00:00:00 2001 From: Dan Parsons <dparsons@nyip.net> Date: Mon, 4 Aug 2014 10:57:43 -0700 Subject: Updated inspircd init script template to make it chkconfig compatible. Backported from master, PR #901 --- make/template/inspircd | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/make/template/inspircd b/make/template/inspircd index 322ee2cd6..7cd83a8e1 100644 --- a/make/template/inspircd +++ b/make/template/inspircd @@ -18,6 +18,12 @@ # along with this program. If not, see <http://www.gnu.org/licenses/>. # +# InspIRCd Start up the InspIRCd Internet Relay Chat Daemon +# +# chkconfig: 2345 55 25 +# description: InspIRCd -- Internet Relay Chat Daemon +# +# processname: inspircd use strict; use POSIX; -- cgit v1.2.3 From fc7bd73cf5e7f609d497e2166657f77a0bac7d41 Mon Sep 17 00:00:00 2001 From: Attila Molnar <attilamolnar@hush.com> Date: Sat, 29 Nov 2014 16:40:33 +0100 Subject: Fix a couple of helpop issues Fixes issue #949 reported by @webczat --- docs/conf/helpop-full.conf.example | 18 ++++++++++++++---- docs/conf/helpop.conf.example | 8 ++++++-- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/docs/conf/helpop-full.conf.example b/docs/conf/helpop-full.conf.example index 0d8a72761..f86eb2394 100644 --- a/docs/conf/helpop-full.conf.example +++ b/docs/conf/helpop-full.conf.example @@ -112,7 +112,7 @@ a message stating they were removed from the channel and by whom."> This behaves identically to /REMOVE, the only difference is that the <channel> and <nick> parameters are switched around to match /KICK's -syntax. Also, /REMOVE is a builtin mIRC command which caused trouble +syntax. Also, /REMOVE is a built-in mIRC command which caused trouble for some users."> <helpop key="devoice" value="/DEVOICE <channel> @@ -380,7 +380,7 @@ Sets your name to the specified name."> ------------- OPERMOTD CHECK CLONES USERIP TLINE -ALLTIME WALLOPS GLOBOPS +ALLTIME WALLOPS GLOBOPS MODENOTICE SETHOST SETIDENT CHGHOST CHGIDENT CHGNAME SETIDLE SWHOIS @@ -732,7 +732,7 @@ The duration may be specified in seconds, or in the format <helpop key="eline" value="/ELINE <user@host> [<duration> :<reason>] -Sets or removes a e-line (local ban exception) on host mask. +Sets or removes a e-line (global ban exception) on host mask. You must specify at least 3 parameters to add an exception, and one parameter to remove an exception (just the user@host section). @@ -768,6 +768,12 @@ server is specified, the local server's DNS cache will be cleared."> Closes all unregistered connections to the local server."> +<helpop key="modenotice" value="/MODENOTICE <modeletters> <message> + +Sends a notice to all users who have the given mode(s) set. +If multiple mode letters are given, the notice is only sent to users +who have all of them set."> + ###################### # User/Channel Modes # ###################### @@ -884,6 +890,10 @@ Closes all unregistered connections to the local server."> specified rate (requires nickflood module). G Censors messages to the channel based on the network configuration (requires censor module). + H <num>:<duration> Displays the last <num> lines of chat to joining + users. <duration> is the maximum time to keep + lines in the history buffer (requires chanhistory + module). J <seconds> Prevents rejoin after kick for the specified number of seconds. This prevents auto-rejoin (requires kicknorejoin module). @@ -893,7 +903,7 @@ Closes all unregistered connections to the local server."> module). M Blocks unregistered users from speaking (requires services account module). - N Prevents users on the channel from chainging nick + N Prevents users on the channel from changing nick (requires nonicks module). O Channel is IRCops only (can only be set by IRCops, requires operchans module). diff --git a/docs/conf/helpop.conf.example b/docs/conf/helpop.conf.example index 87e4d4274..5b92faeda 100644 --- a/docs/conf/helpop.conf.example +++ b/docs/conf/helpop.conf.example @@ -50,7 +50,7 @@ OPER"> ------------- OPERMOTD CHECK CLONES USERIP TLINE -ALLTIME WALLOPS GLOBOPS +ALLTIME WALLOPS GLOBOPS MODENOTICE SETHOST SETIDENT CHGHOST CHGIDENT CHGNAME SETIDLE SWHOIS @@ -183,6 +183,10 @@ LOCKSERV UNLOCKSERV"> specified rate (requires nickflood module). G Censors messages to the channel based on the network configuration (requires censor module). + H <num>:<duration> Displays the last <num> lines of chat to joining + users. <duration> is the maximum time to keep + lines in the history buffer (requires chanhistory + module). J <seconds> Prevents rejoin after kick for the specified number of seconds. This prevents auto-rejoin (requires kicknorejoin module). @@ -192,7 +196,7 @@ LOCKSERV UNLOCKSERV"> module). M Blocks unregistered users from speaking (requires services account module). - N Prevents users on the channel from chainging nick + N Prevents users on the channel from changing nick (requires nonicks module). O Channel is IRCops only (can only be set by IRCops, requires operchans module). -- cgit v1.2.3 From a2f23523cff4dcc7dfac60781027fc90074c1ebd Mon Sep 17 00:00:00 2001 From: Attila Molnar <attilamolnar@hush.com> Date: Sun, 30 Nov 2014 18:20:42 +0100 Subject: Validate module reload callback before use in PURE_STATIC builds --- src/modmanager_static.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/modmanager_static.cpp b/src/modmanager_static.cpp index c5b1e1062..cea40c7a3 100644 --- a/src/modmanager_static.cpp +++ b/src/modmanager_static.cpp @@ -158,7 +158,8 @@ namespace { ServerInstance->Modules->DoSafeUnload(mod); ServerInstance->GlobalCulls.Apply(); bool rv = ServerInstance->Modules->Load(name.c_str()); - callback->Call(rv); + if (callback) + callback->Call(rv); ServerInstance->GlobalCulls.AddItem(this); } }; -- cgit v1.2.3 From c5f19db85c2a2669884eb8ac72362c86afb65617 Mon Sep 17 00:00:00 2001 From: Attila Molnar <attilamolnar@hush.com> Date: Sun, 30 Nov 2014 18:24:17 +0100 Subject: Don't submit a reload worker if the module doing the reload is scheduled for unload --- src/commands/cmd_reloadmodule.cpp | 2 +- src/modules/m_globalload.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/commands/cmd_reloadmodule.cpp b/src/commands/cmd_reloadmodule.cpp index 81ecce1cb..eac364f0e 100644 --- a/src/commands/cmd_reloadmodule.cpp +++ b/src/commands/cmd_reloadmodule.cpp @@ -66,7 +66,7 @@ CmdResult CommandReloadmodule::Handle (const std::vector<std::string>& parameter Module* m = ServerInstance->Modules->Find(parameters[0]); if (m) { - ServerInstance->Modules->Reload(m, new ReloadModuleWorker(user->uuid, parameters[0])); + ServerInstance->Modules->Reload(m, (creator->dying ? NULL : new ReloadModuleWorker(user->uuid, parameters[0]))); return CMD_SUCCESS; } else diff --git a/src/modules/m_globalload.cpp b/src/modules/m_globalload.cpp index 9e0ec7705..aed65045f 100644 --- a/src/modules/m_globalload.cpp +++ b/src/modules/m_globalload.cpp @@ -151,7 +151,7 @@ class CommandGreloadmodule : public Command if (m) { GReloadModuleWorker* worker = NULL; - if (m != creator) + if ((m != creator) && (!creator->dying)) worker = new GReloadModuleWorker(user->nick, user->uuid, parameters[0]); ServerInstance->Modules->Reload(m, worker); } -- cgit v1.2.3 From 7559c4316830b24c338096b96384d35877794125 Mon Sep 17 00:00:00 2001 From: Attila Molnar <attilamolnar@hush.com> Date: Sun, 30 Nov 2014 18:40:10 +0100 Subject: Reject empty mode parameters in ModeParser::Process() instead of relying on ModeHandlers to do it --- src/mode.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mode.cpp b/src/mode.cpp index 2a32dfac2..89ff37fa1 100644 --- a/src/mode.cpp +++ b/src/mode.cpp @@ -470,7 +470,7 @@ void ModeParser::Process(const std::vector<std::string>& parameters, User *user, { parameter = parameters[param_at++]; /* Make sure the user isn't trying to slip in an invalid parameter */ - if ((parameter.find(':') == 0) || (parameter.rfind(' ') != std::string::npos)) + if ((parameter.empty()) || (parameter.find(':') == 0) || (parameter.rfind(' ') != std::string::npos)) continue; if (merge && targetchannel && targetchannel->IsModeSet(modechar) && !mh->IsListMode()) { -- cgit v1.2.3 From e4167bc3a150116e4235cfa106ab72ee0d14faca Mon Sep 17 00:00:00 2001 From: Attila Molnar <attilamolnar@hush.com> Date: Wed, 10 Dec 2014 17:50:31 +0100 Subject: m_httpd On module unload close all connections hooked by the module being unloaded --- src/modules/m_httpd.cpp | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/modules/m_httpd.cpp b/src/modules/m_httpd.cpp index 2a430d967..2b079c6ff 100644 --- a/src/modules/m_httpd.cpp +++ b/src/modules/m_httpd.cpp @@ -348,7 +348,7 @@ class ModuleHttpServer : public Module void init() { HttpModule = this; - Implementation eventlist[] = { I_OnAcceptConnection, I_OnBackgroundTimer, I_OnRehash }; + Implementation eventlist[] = { I_OnAcceptConnection, I_OnBackgroundTimer, I_OnRehash, I_OnUnloadModule }; ServerInstance->Modules->Attach(eventlist, this, sizeof(eventlist)/sizeof(Implementation)); OnRehash(NULL); } @@ -397,6 +397,20 @@ class ModuleHttpServer : public Module } } + void OnUnloadModule(Module* mod) + { + for (std::set<HttpServerSocket*>::const_iterator i = sockets.begin(); i != sockets.end(); ) + { + HttpServerSocket* sock = *i; + ++i; + if (sock->GetIOHook() == mod) + { + sock->cull(); + delete sock; + } + } + } + CullResult cull() { std::set<HttpServerSocket*> local; -- cgit v1.2.3 From 8365be5414ae0f6d09724bd540db41ba24b2a7fd Mon Sep 17 00:00:00 2001 From: Attila Molnar <attilamolnar@hush.com> Date: Sat, 27 Dec 2014 14:50:22 +0100 Subject: m_check Fix non-standard format specifier %s passed to strftime() causing problems on systems not supporting it (Windows) --- src/modules/m_check.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/modules/m_check.cpp b/src/modules/m_check.cpp index 96b357f20..9c5c414f1 100644 --- a/src/modules/m_check.cpp +++ b/src/modules/m_check.cpp @@ -38,8 +38,10 @@ class CommandCheck : public Command { char timebuf[60]; struct tm *mytime = gmtime(&time); - strftime(timebuf, 59, "%Y-%m-%d %H:%M:%S UTC (%s)", mytime); - return std::string(timebuf); + strftime(timebuf, 59, "%Y-%m-%d %H:%M:%S UTC (", mytime); + std::string ret(timebuf); + ret.append(ConvToStr(time)).push_back(')'); + return ret; } void dumpExt(User* user, const std::string& checkstr, Extensible* ext) -- cgit v1.2.3 From 37db441fb55f954f25fb2846e803b5c9527c21bb Mon Sep 17 00:00:00 2001 From: Attila Molnar <attilamolnar@hush.com> Date: Tue, 30 Dec 2014 20:26:05 +0100 Subject: Fix User::age being incorrectly used in some places instead of signon --- src/commands/cmd_stats.cpp | 4 ++-- src/commands/cmd_who.cpp | 2 +- src/userprocess.cpp | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/commands/cmd_stats.cpp b/src/commands/cmd_stats.cpp index 9399b7bea..60bb5b30e 100644 --- a/src/commands/cmd_stats.cpp +++ b/src/commands/cmd_stats.cpp @@ -368,7 +368,7 @@ void CommandStats::DoStats(char statschar, User* user, string_list &results) for (LocalUserList::iterator n = ServerInstance->Users->local_users.begin(); n != ServerInstance->Users->local_users.end(); n++) { LocalUser* i = *n; - results.push_back(sn+" 211 "+user->nick+" "+i->nick+"["+i->ident+"@"+i->dhost+"] "+ConvToStr(i->eh.getSendQSize())+" "+ConvToStr(i->cmds_out)+" "+ConvToStr(i->bytes_out)+" "+ConvToStr(i->cmds_in)+" "+ConvToStr(i->bytes_in)+" "+ConvToStr(ServerInstance->Time() - i->age)); + results.push_back(sn+" 211 "+user->nick+" "+i->nick+"["+i->ident+"@"+i->dhost+"] "+ConvToStr(i->eh.getSendQSize())+" "+ConvToStr(i->cmds_out)+" "+ConvToStr(i->bytes_out)+" "+ConvToStr(i->cmds_in)+" "+ConvToStr(i->bytes_in)+" "+ConvToStr(ServerInstance->Time() - i->signon)); } break; @@ -378,7 +378,7 @@ void CommandStats::DoStats(char statschar, User* user, string_list &results) for (LocalUserList::iterator n = ServerInstance->Users->local_users.begin(); n != ServerInstance->Users->local_users.end(); n++) { LocalUser* i = *n; - results.push_back(sn+" 211 "+user->nick+" "+i->nick+"["+i->ident+"@"+i->GetIPString()+"] "+ConvToStr(i->eh.getSendQSize())+" "+ConvToStr(i->cmds_out)+" "+ConvToStr(i->bytes_out)+" "+ConvToStr(i->cmds_in)+" "+ConvToStr(i->bytes_in)+" "+ConvToStr(ServerInstance->Time() - i->age)); + results.push_back(sn+" 211 "+user->nick+" "+i->nick+"["+i->ident+"@"+i->GetIPString()+"] "+ConvToStr(i->eh.getSendQSize())+" "+ConvToStr(i->cmds_out)+" "+ConvToStr(i->bytes_out)+" "+ConvToStr(i->cmds_in)+" "+ConvToStr(i->bytes_in)+" "+ConvToStr(ServerInstance->Time() - i->signon)); } break; diff --git a/src/commands/cmd_who.cpp b/src/commands/cmd_who.cpp index 2b3242211..90c26a974 100644 --- a/src/commands/cmd_who.cpp +++ b/src/commands/cmd_who.cpp @@ -141,7 +141,7 @@ bool CommandWho::whomatch(User* cuser, User* user, const char* matchtext) long seconds = ServerInstance->Duration(matchtext); // Okay, so time matching, we want all users connected `seconds' ago - if (user->age >= ServerInstance->Time() - seconds) + if (user->signon >= ServerInstance->Time() - seconds) match = true; } diff --git a/src/userprocess.cpp b/src/userprocess.cpp index 9cc2e7df7..0ef95e413 100644 --- a/src/userprocess.cpp +++ b/src/userprocess.cpp @@ -107,7 +107,7 @@ void InspIRCd::DoBackgroundUserStuff() break; } - if (curr->registered != REG_ALL && (Time() > (curr->age + curr->MyClass->GetRegTimeout()))) + if (curr->registered != REG_ALL && (Time() > (curr->signon + curr->MyClass->GetRegTimeout()))) { /* * registration timeout -- didnt send USER/NICK/HOST -- cgit v1.2.3 From f3f443f085e922fa2bb5393c46d02722ad05879d Mon Sep 17 00:00:00 2001 From: Attila Molnar <attilamolnar@hush.com> Date: Tue, 30 Dec 2014 20:51:34 +0100 Subject: Fix signon time of clients being off by dns_timeout seconds --- src/usermanager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/usermanager.cpp b/src/usermanager.cpp index 076277a33..1918b5c4c 100644 --- a/src/usermanager.cpp +++ b/src/usermanager.cpp @@ -72,7 +72,7 @@ void UserManager::AddUser(int socket, ListenSocket* via, irc::sockets::sockaddrs (*(this->clientlist))[New->nick] = New; New->registered = REG_NONE; - New->signon = ServerInstance->Time() + ServerInstance->Config->dns_timeout; + New->signon = ServerInstance->Time(); New->lastping = 1; ServerInstance->Users->AddLocalClone(New); -- cgit v1.2.3 From e27820683226e3832936bccd537b45bc04208f74 Mon Sep 17 00:00:00 2001 From: Peter Powell <petpow@saberuk.com> Date: Sat, 3 Jan 2015 20:33:09 +0000 Subject: Fix a snotice in m_spanningtree incorrectly using an unsigned long. This value can be negative so it should be a signed long not an unsigned long. --- src/modules/m_spanningtree/fjoin.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/modules/m_spanningtree/fjoin.cpp b/src/modules/m_spanningtree/fjoin.cpp index c8cd768aa..47b394522 100644 --- a/src/modules/m_spanningtree/fjoin.cpp +++ b/src/modules/m_spanningtree/fjoin.cpp @@ -86,8 +86,8 @@ CmdResult CommandFJoin::Handle(const std::vector<std::string>& params, User *src time_t ourTS = chan->age; if (TS != ourTS) - ServerInstance->SNO->WriteToSnoMask('d', "Merge FJOIN received for %s, ourTS: %lu, TS: %lu, difference: %lu", - chan->name.c_str(), (unsigned long)ourTS, (unsigned long)TS, (unsigned long)(ourTS - TS)); + ServerInstance->SNO->WriteToSnoMask('d', "Merge FJOIN received for %s, ourTS: %lu, TS: %lu, difference: %ld", + chan->name.c_str(), (unsigned long)ourTS, (unsigned long)TS, (long)(ourTS - TS)); /* If our TS is less than theirs, we dont accept their modes */ if (ourTS < TS) { -- cgit v1.2.3 From d4b7746ef2c6ba8a1955f8d9b37fd5213a809def Mon Sep 17 00:00:00 2001 From: Peter Powell <petpow@saberuk.com> Date: Sun, 11 Jan 2015 04:29:50 +0000 Subject: Don't load Data::Dumper in the configure script. This is not used and apparently there are some distros which do not include it as part of the system Perl. --- configure | 6 ------ 1 file changed, 6 deletions(-) diff --git a/configure b/configure index 6a8e28fe9..425bb21af 100755 --- a/configure +++ b/configure @@ -33,12 +33,6 @@ BEGIN { use strict; use warnings FATAL => qw(all); -use Data::Dumper; -BEGIN { - $Data::Dumper::Sortkeys = 1; - $Data::Dumper::Useqq = 1; -}; - use File::Copy (); use Socket; use Cwd; -- cgit v1.2.3 From 225322b46f888fb034c87aea45fdde3f941c6450 Mon Sep 17 00:00:00 2001 From: Attila Molnar <attilamolnar@hush.com> Date: Mon, 12 Jan 2015 14:10:53 +0100 Subject: Fix harmless uninitialized variable usage on startup if the config is incorrect --- src/configreader.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/configreader.cpp b/src/configreader.cpp index b5d2fdb16..bd147782e 100644 --- a/src/configreader.cpp +++ b/src/configreader.cpp @@ -35,6 +35,7 @@ #endif ServerConfig::ServerConfig() + : NoSnoticeStack(false) { WhoWasGroupSize = WhoWasMaxGroups = WhoWasMaxKeep = 0; RawLog = NoUserDns = HideBans = HideSplits = UndernetMsgPrefix = false; -- cgit v1.2.3 From 83bcc83a56a235f5c4e479ff47713f467640a4eb Mon Sep 17 00:00:00 2001 From: Attila Molnar <attilamolnar@hush.com> Date: Mon, 12 Jan 2015 14:19:58 +0100 Subject: Increase penalty for some core commands --- src/commands/cmd_motd.cpp | 6 ++++++ src/commands/cmd_pass.cpp | 1 + src/commands/cmd_ping.cpp | 2 +- src/commands/cmd_pong.cpp | 11 +++++++++-- src/commands/cmd_rules.cpp | 6 ++++++ src/commands/cmd_stats.cpp | 6 ++++++ src/commands/cmd_user.cpp | 1 + 7 files changed, 30 insertions(+), 3 deletions(-) diff --git a/src/commands/cmd_motd.cpp b/src/commands/cmd_motd.cpp index 869a9c353..9ed5ff188 100644 --- a/src/commands/cmd_motd.cpp +++ b/src/commands/cmd_motd.cpp @@ -51,7 +51,13 @@ class CommandMotd : public Command CmdResult CommandMotd::Handle (const std::vector<std::string>& parameters, User *user) { if (parameters.size() > 0 && parameters[0] != ServerInstance->Config->ServerName) + { + // Give extra penalty if a non-oper queries the /MOTD of a remote server + LocalUser* localuser = IS_LOCAL(user); + if ((localuser) && (!IS_OPER(user))) + localuser->CommandFloodPenalty += 2000; return CMD_SUCCESS; + } ConfigTag* tag = ServerInstance->Config->EmptyTag; if (IS_LOCAL(user)) diff --git a/src/commands/cmd_pass.cpp b/src/commands/cmd_pass.cpp index f082a4ce8..9fc758874 100644 --- a/src/commands/cmd_pass.cpp +++ b/src/commands/cmd_pass.cpp @@ -46,6 +46,7 @@ CmdResult CommandPass::HandleLocal(const std::vector<std::string>& parameters, L // Check to make sure they haven't registered -- Fix by FCS if (user->registered == REG_ALL) { + user->CommandFloodPenalty += 1000; user->WriteNumeric(ERR_ALREADYREGISTERED, "%s :You may not reregister",user->nick.c_str()); return CMD_FAILURE; } diff --git a/src/commands/cmd_ping.cpp b/src/commands/cmd_ping.cpp index 3ccadd929..dd14b52c8 100644 --- a/src/commands/cmd_ping.cpp +++ b/src/commands/cmd_ping.cpp @@ -30,7 +30,7 @@ class CommandPing : public Command public: /** Constructor for ping. */ - CommandPing ( Module* parent) : Command(parent,"PING", 1, 2) { Penalty = 0; syntax = "<servername> [:<servername>]"; } + CommandPing ( Module* parent) : Command(parent,"PING", 1, 2) { syntax = "<servername> [:<servername>]"; } /** Handle command. * @param parameters The parameters to the comamnd * @param pcnt The number of parameters passed to teh command diff --git a/src/commands/cmd_pong.cpp b/src/commands/cmd_pong.cpp index 825168de7..3b6f17f3b 100644 --- a/src/commands/cmd_pong.cpp +++ b/src/commands/cmd_pong.cpp @@ -43,8 +43,15 @@ class CommandPong : public Command CmdResult CommandPong::Handle (const std::vector<std::string>&, User *user) { // set the user as alive so they survive to next ping - if (IS_LOCAL(user)) - IS_LOCAL(user)->lastping = 1; + LocalUser* localuser = IS_LOCAL(user); + if (localuser) + { + // Increase penalty unless we've sent a PING and this is the reply + if (localuser->lastping) + localuser->CommandFloodPenalty += 1000; + else + localuser->lastping = 1; + } return CMD_SUCCESS; } diff --git a/src/commands/cmd_rules.cpp b/src/commands/cmd_rules.cpp index 17de9f3f2..7aacf8c31 100644 --- a/src/commands/cmd_rules.cpp +++ b/src/commands/cmd_rules.cpp @@ -49,7 +49,13 @@ class CommandRules : public Command CmdResult CommandRules::Handle (const std::vector<std::string>& parameters, User *user) { if (parameters.size() > 0 && parameters[0] != ServerInstance->Config->ServerName) + { + // Give extra penalty if a non-oper queries the /RULES of a remote server + LocalUser* localuser = IS_LOCAL(user); + if ((localuser) && (!IS_OPER(user))) + localuser->CommandFloodPenalty += 2000; return CMD_SUCCESS; + } ConfigTag* tag = ServerInstance->Config->EmptyTag; if (IS_LOCAL(user)) diff --git a/src/commands/cmd_stats.cpp b/src/commands/cmd_stats.cpp index 60bb5b30e..d547635ed 100644 --- a/src/commands/cmd_stats.cpp +++ b/src/commands/cmd_stats.cpp @@ -420,7 +420,13 @@ void CommandStats::DoStats(char statschar, User* user, string_list &results) CmdResult CommandStats::Handle (const std::vector<std::string>& parameters, User *user) { if (parameters.size() > 1 && parameters[1] != ServerInstance->Config->ServerName) + { + // Give extra penalty if a non-oper does /STATS <remoteserver> + LocalUser* localuser = IS_LOCAL(user); + if ((localuser) && (!IS_OPER(user))) + localuser->CommandFloodPenalty += 2000; return CMD_SUCCESS; + } string_list values; char search = parameters[0][0]; DoStats(search, user, values); diff --git a/src/commands/cmd_user.cpp b/src/commands/cmd_user.cpp index 305d0847f..09e1e3319 100644 --- a/src/commands/cmd_user.cpp +++ b/src/commands/cmd_user.cpp @@ -68,6 +68,7 @@ CmdResult CommandUser::HandleLocal(const std::vector<std::string>& parameters, L } else { + user->CommandFloodPenalty += 1000; user->WriteNumeric(462, "%s :You may not reregister", user->nick.c_str()); return CMD_FAILURE; } -- cgit v1.2.3 From 80350a67aa7d45e5068f46b8995be92b0d9b40aa Mon Sep 17 00:00:00 2001 From: Attila Molnar <attilamolnar@hush.com> Date: Mon, 12 Jan 2015 14:24:23 +0100 Subject: Always penalize clients executing a command which fails before running the handler, even if the command has 0 penalty --- src/command_parse.cpp | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/command_parse.cpp b/src/command_parse.cpp index 1c72c7de4..0dd793592 100644 --- a/src/command_parse.cpp +++ b/src/command_parse.cpp @@ -204,12 +204,22 @@ bool CommandParser::ProcessCommand(LocalUser *user, std::string &cmd) /* find the command, check it exists */ Commandtable::iterator cm = cmdlist.find(command); + // Penalty to give if the command fails before the handler is executed + unsigned int failpenalty = 0; + /* Modify the user's penalty regardless of whether or not the command exists */ bool do_more = true; if (!user->HasPrivPermission("users/flood/no-throttle")) { // If it *doesn't* exist, give it a slightly heftier penalty than normal to deter flooding us crap - user->CommandFloodPenalty += cm != cmdlist.end() ? cm->second->Penalty * 1000 : 2000; + unsigned int penalty = (cm != cmdlist.end() ? cm->second->Penalty * 1000 : 2000); + user->CommandFloodPenalty += penalty; + + // Increase their penalty later if we fail and the command has 0 penalty by default (i.e. in Command::Penalty) to + // throttle sending ERR_* from the command parser. If the command does have a non-zero penalty then this is not + // needed because we've increased their penalty above. + if (penalty == 0) + failpenalty = 1000; } @@ -290,11 +300,13 @@ bool CommandParser::ProcessCommand(LocalUser *user, std::string &cmd) { if (!user->IsModeSet(cm->second->flags_needed)) { + user->CommandFloodPenalty += failpenalty; user->WriteNumeric(ERR_NOPRIVILEGES, "%s :Permission Denied - You do not have the required operator privileges",user->nick.c_str()); return do_more; } if (!user->HasPermission(command)) { + user->CommandFloodPenalty += failpenalty; user->WriteNumeric(ERR_NOPRIVILEGES, "%s :Permission Denied - Oper type %s does not have access to command %s", user->nick.c_str(), user->oper->NameStr(), command.c_str()); return do_more; @@ -303,6 +315,7 @@ bool CommandParser::ProcessCommand(LocalUser *user, std::string &cmd) if ((user->registered == REG_ALL) && (!IS_OPER(user)) && (cm->second->IsDisabled())) { /* command is disabled! */ + user->CommandFloodPenalty += failpenalty; if (ServerInstance->Config->DisabledDontExist) { user->WriteNumeric(ERR_UNKNOWNCOMMAND, "%s %s :Unknown command",user->nick.c_str(),command.c_str()); @@ -323,6 +336,7 @@ bool CommandParser::ProcessCommand(LocalUser *user, std::string &cmd) if (command_p.size() < cm->second->min_params) { + user->CommandFloodPenalty += failpenalty; user->WriteNumeric(ERR_NEEDMOREPARAMS, "%s %s :Not enough parameters.", user->nick.c_str(), command.c_str()); if ((ServerInstance->Config->SyntaxHints) && (user->registered == REG_ALL) && (cm->second->syntax.length())) user->WriteNumeric(RPL_SYNTAX, "%s :SYNTAX %s %s", user->nick.c_str(), cm->second->name.c_str(), cm->second->syntax.c_str()); @@ -330,6 +344,7 @@ bool CommandParser::ProcessCommand(LocalUser *user, std::string &cmd) } if ((user->registered != REG_ALL) && (!cm->second->WorksBeforeReg())) { + user->CommandFloodPenalty += failpenalty; user->WriteNumeric(ERR_NOTREGISTERED, "%s :You have not registered",command.c_str()); return do_more; } -- cgit v1.2.3 From 74a95f4e1312ef5a628da484b6cb39c417e2fceb Mon Sep 17 00:00:00 2001 From: Peter Powell <petpow@saberuk.com> Date: Fri, 16 Jan 2015 03:14:35 +0000 Subject: Fix a blank error message when trying to load a module with a path. --- src/modmanager_dynamic.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/modmanager_dynamic.cpp b/src/modmanager_dynamic.cpp index 045b488b5..050f41c75 100644 --- a/src/modmanager_dynamic.cpp +++ b/src/modmanager_dynamic.cpp @@ -36,7 +36,10 @@ bool ModuleManager::Load(const std::string& filename, bool defer) { /* Don't allow people to specify paths for modules, it doesn't work as expected */ if (filename.find('/') != std::string::npos) + { + LastModuleError = "You can't load modules with a path: " + filename; return false; + } char modfile[MAXBUF]; snprintf(modfile,MAXBUF,"%s/%s",ServerInstance->Config->ModPath.c_str(),filename.c_str()); -- cgit v1.2.3 From cd5edf841bffc810466de2752323cd0730c9db9e Mon Sep 17 00:00:00 2001 From: Daniel Vassdal <shutter@canternet.org> Date: Sat, 17 Jan 2015 14:46:28 +0100 Subject: cmd_list: Give +s precedence to +p When +ps is set, handle it as +s (most restrictive) instead of +p --- src/commands/cmd_list.cpp | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/commands/cmd_list.cpp b/src/commands/cmd_list.cpp index 2f417bc04..2c420d1dd 100644 --- a/src/commands/cmd_list.cpp +++ b/src/commands/cmd_list.cpp @@ -82,14 +82,15 @@ CmdResult CommandList::Handle (const std::vector<std::string>& parameters, User // if the channel is not private/secret, OR the user is on the channel anyway bool n = (i->second->HasUser(user) || user->HasPrivPermission("channels/auspex")); - if (!n && i->second->IsModeSet('p')) + // If we're not in the channel and +s is set on it, we want to ignore it + if (n || !i->second->IsModeSet('s')) { - /* Channel is +p and user is outside/not privileged */ - user->WriteNumeric(322, "%s * %ld :",user->nick.c_str(), users); - } - else - { - if (n || !i->second->IsModeSet('s')) + if (!n && i->second->IsModeSet('p')) + { + /* Channel is +p and user is outside/not privileged */ + user->WriteNumeric(322, "%s * %ld :",user->nick.c_str(), users); + } + else { /* User is in the channel/privileged, channel is not +s */ user->WriteNumeric(322, "%s %s %ld :[+%s] %s",user->nick.c_str(),i->second->name.c_str(),users,i->second->ChanModes(n),i->second->topic.c_str()); -- cgit v1.2.3 From c8b344ea748d62d9f37cacd4dd785f15b186725c Mon Sep 17 00:00:00 2001 From: Attila Molnar <attilamolnar@hush.com> Date: Sat, 17 Jan 2015 15:21:51 +0100 Subject: Fix elines not matching elined users when rechecking elined status --- src/xline.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/xline.cpp b/src/xline.cpp index 66d24f439..b710c5c43 100644 --- a/src/xline.cpp +++ b/src/xline.cpp @@ -598,9 +598,6 @@ void GLine::Apply(User* u) bool ELine::Matches(User *u) { - if (u->exempt) - return false; - if (InspIRCd::Match(u->ident, this->identmask, ascii_case_insensitive_map)) { if (InspIRCd::MatchCIDR(u->host, this->hostmask, ascii_case_insensitive_map) || -- cgit v1.2.3 From ae4017f4459de4945754dae658f731a19fe7fd64 Mon Sep 17 00:00:00 2001 From: Attila Molnar <attilamolnar@hush.com> Date: Sat, 17 Jan 2015 15:27:09 +0100 Subject: m_hideoper Fix wrong /WHO output for hidden opers if the channel name contains '*' --- src/modules/m_hideoper.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/modules/m_hideoper.cpp b/src/modules/m_hideoper.cpp index b83c7de1a..88b0c4cdf 100644 --- a/src/modules/m_hideoper.cpp +++ b/src/modules/m_hideoper.cpp @@ -82,7 +82,11 @@ class ModuleHideOper : public Module if (user->IsModeSet('H') && !source->HasPrivPermission("users/auspex")) { // hide the "*" that marks the user as an oper from the /WHO line - std::string::size_type pos = line.find("*"); + std::string::size_type spcolon = line.find(" :"); + if (spcolon == std::string::npos) + return; // Another module hid the user completely + std::string::size_type sp = line.rfind(' ', spcolon-1); + std::string::size_type pos = line.find('*', sp); if (pos != std::string::npos) line.erase(pos, 1); // hide the line completely if doing a "/who * o" query -- cgit v1.2.3 From f5519a585fdff5a009c20c3d89db315d4af45196 Mon Sep 17 00:00:00 2001 From: Peter Powell <petpow@saberuk.com> Date: Sat, 17 Jan 2015 15:31:35 +0000 Subject: Fix modules not being versioned on Windows. --- include/modules.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/include/modules.h b/include/modules.h index cd0d5aad0..9857012fc 100644 --- a/include/modules.h +++ b/include/modules.h @@ -1717,7 +1717,8 @@ struct AllModuleList { break; \ } \ return TRUE; \ - } + } \ + extern "C" DllExport const char inspircd_src_version[] = VERSION " r" REVISION; #else -- cgit v1.2.3 From 078abdfc8fecc3b5738d7c6b1943302eeb3939ee Mon Sep 17 00:00:00 2001 From: Attila Molnar <attilamolnar@hush.com> Date: Sat, 17 Jan 2015 17:02:48 +0100 Subject: Update year in resource file for Windows --- win/inspircd.rc.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/win/inspircd.rc.cmake b/win/inspircd.rc.cmake index 20c7839fe..ba52ad5d2 100644 --- a/win/inspircd.rc.cmake +++ b/win/inspircd.rc.cmake @@ -22,7 +22,7 @@ BEGIN VALUE "FileDescription", "InspIRCd" VALUE "FileVersion", "@FULL_VERSION@" VALUE "InternalName", "InspIRCd" - VALUE "LegalCopyright", "Copyright (c) 2014 InspIRCd Development Team" + VALUE "LegalCopyright", "Copyright (c) 2015 InspIRCd Development Team" VALUE "OriginalFilename", "inspircd.exe" VALUE "ProductName", "InspIRCd - The Inspire IRC Daemon" VALUE "ProductVersion", "@FULL_VERSION@" -- cgit v1.2.3 From 2653fbaa28c9b7b41e03abd4893ea623a6276d21 Mon Sep 17 00:00:00 2001 From: Attila Molnar <attilamolnar@hush.com> Date: Mon, 19 Jan 2015 17:38:30 +0100 Subject: Don't bind ports after an unsuccessful rehash --- src/configreader.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/configreader.cpp b/src/configreader.cpp index bd147782e..b3caf8c75 100644 --- a/src/configreader.cpp +++ b/src/configreader.cpp @@ -730,7 +730,7 @@ void ServerConfig::Apply(ServerConfig* old, const std::string &useruid) if (valid) ServerInstance->WritePID(this->PID); - if (old) + if (old && valid) { // On first run, ports are bound later on FailedPortList pl; -- cgit v1.2.3 From 17b4151bff2edcec3f3524cc60e536407c70cec6 Mon Sep 17 00:00:00 2001 From: Attila Molnar <attilamolnar@hush.com> Date: Mon, 19 Jan 2015 17:43:58 +0100 Subject: m_operprefix Fix force joined opers not being given the operprefix mode --- src/modules/m_operprefix.cpp | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/modules/m_operprefix.cpp b/src/modules/m_operprefix.cpp index 62ddb6c67..9f1f6cc5e 100644 --- a/src/modules/m_operprefix.cpp +++ b/src/modules/m_operprefix.cpp @@ -85,7 +85,7 @@ class ModuleOperPrefixMode : public Module { ServerInstance->Modules->AddService(opm); - Implementation eventlist[] = { I_OnUserPreJoin, I_OnPostOper, I_OnLoadModule, I_OnUnloadModule }; + Implementation eventlist[] = { I_OnUserPreJoin, I_OnPostOper, I_OnLoadModule, I_OnUnloadModule, I_OnPostJoin }; ServerInstance->Modules->Attach(eventlist, this, sizeof(eventlist)/sizeof(Implementation)); /* To give clients a chance to learn about the new prefix we don't give +y to opers @@ -110,6 +110,22 @@ class ModuleOperPrefixMode : public Module return MOD_RES_PASSTHRU; } + void OnPostJoin(Membership* memb) + { + if ((!IS_LOCAL(memb->user)) || (!IS_OPER(memb->user)) || (((mw_added) && (memb->user->IsModeSet('H'))))) + return; + + if (memb->hasMode(opm.GetModeChar())) + return; + + // The user was force joined and OnUserPreJoin() did not run. Set the operprefix now. + std::vector<std::string> modechange; + modechange.push_back(memb->chan->name); + modechange.push_back("+y"); + modechange.push_back(memb->user->nick); + ServerInstance->SendGlobalMode(modechange, ServerInstance->FakeClient); + } + void SetOperPrefix(User* user, bool add) { std::vector<std::string> modechange; -- cgit v1.2.3 From 22d6da594d49b6059773b1ab16e990a16dee1707 Mon Sep 17 00:00:00 2001 From: Attila Molnar <attilamolnar@hush.com> Date: Wed, 21 Jan 2015 19:07:44 +0100 Subject: Fix numeric ERR_NOTREGISTERED not containing the user's nick --- src/command_parse.cpp | 2 +- src/commands/cmd_server.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/command_parse.cpp b/src/command_parse.cpp index 0dd793592..76dfc06ce 100644 --- a/src/command_parse.cpp +++ b/src/command_parse.cpp @@ -345,7 +345,7 @@ bool CommandParser::ProcessCommand(LocalUser *user, std::string &cmd) if ((user->registered != REG_ALL) && (!cm->second->WorksBeforeReg())) { user->CommandFloodPenalty += failpenalty; - user->WriteNumeric(ERR_NOTREGISTERED, "%s :You have not registered",command.c_str()); + user->WriteNumeric(ERR_NOTREGISTERED, "%s %s :You have not registered", user->nick.c_str(), command.c_str()); return do_more; } else diff --git a/src/commands/cmd_server.cpp b/src/commands/cmd_server.cpp index d54eca392..05954f3e8 100644 --- a/src/commands/cmd_server.cpp +++ b/src/commands/cmd_server.cpp @@ -48,7 +48,7 @@ CmdResult CommandServer::Handle (const std::vector<std::string>&, User *user) } else { - user->WriteNumeric(ERR_NOTREGISTERED, "%s :You may not register as a server (servers have separate ports from clients, change your config)",name.c_str()); + user->WriteNumeric(ERR_NOTREGISTERED, "%s %s :You may not register as a server (servers have separate ports from clients, change your config)", user->nick.c_str(), name.c_str()); } return CMD_FAILURE; } -- cgit v1.2.3 From f8185feff704c19326dc7af767a875b22a8f85e0 Mon Sep 17 00:00:00 2001 From: Attila Molnar <attilamolnar@hush.com> Date: Wed, 21 Jan 2015 19:08:30 +0100 Subject: m_abbreviation Fix typo in numeric text --- src/modules/m_abbreviation.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/m_abbreviation.cpp b/src/modules/m_abbreviation.cpp index a744f55f6..1e8f71176 100644 --- a/src/modules/m_abbreviation.cpp +++ b/src/modules/m_abbreviation.cpp @@ -79,7 +79,7 @@ class ModuleAbbreviation : public Module /* Ambiguous command, list the matches */ if (!matchlist.empty()) { - user->WriteNumeric(420, "%s :Ambiguous abbreviation, posssible matches: %s%s", user->nick.c_str(), foundcommand.c_str(), matchlist.c_str()); + user->WriteNumeric(420, "%s :Ambiguous abbreviation, possible matches: %s%s", user->nick.c_str(), foundcommand.c_str(), matchlist.c_str()); return MOD_RES_DENY; } -- cgit v1.2.3 From 1c81963c73a52b9b1dc6ee422edbc5657746145b Mon Sep 17 00:00:00 2001 From: Attila Molnar <attilamolnar@hush.com> Date: Mon, 2 Feb 2015 23:39:40 +0100 Subject: threadengine_pthread Throw CoreExceptions instead of CoreException pointers --- src/threadengines/threadengine_pthread.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/threadengines/threadengine_pthread.cpp b/src/threadengines/threadengine_pthread.cpp index e16e401f3..40205da31 100644 --- a/src/threadengines/threadengine_pthread.cpp +++ b/src/threadengines/threadengine_pthread.cpp @@ -109,7 +109,7 @@ SocketThread::SocketThread() signal.sock = NULL; int fd = eventfd(0, EFD_NONBLOCK); if (fd < 0) - throw new CoreException("Could not create pipe " + std::string(strerror(errno))); + throw CoreException("Could not create pipe " + std::string(strerror(errno))); signal.sock = new ThreadSignalSocket(this, fd); } #else @@ -160,7 +160,7 @@ SocketThread::SocketThread() signal.sock = NULL; int fds[2]; if (pipe(fds)) - throw new CoreException("Could not create pipe " + std::string(strerror(errno))); + throw CoreException("Could not create pipe " + std::string(strerror(errno))); signal.sock = new ThreadSignalSocket(this, fds[0], fds[1]); } #endif -- cgit v1.2.3 From f6ace5e8084e2ab23f6797ab9d77a41466ea4a78 Mon Sep 17 00:00:00 2001 From: Attila Molnar <attilamolnar@hush.com> Date: Wed, 4 Feb 2015 18:53:28 +0100 Subject: m_spanningtree Fix TreeRoot UserCount being possibly wrong if loaded after startup --- src/modules/m_spanningtree/main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/m_spanningtree/main.cpp b/src/modules/m_spanningtree/main.cpp index 5f06cad58..967b577b1 100644 --- a/src/modules/m_spanningtree/main.cpp +++ b/src/modules/m_spanningtree/main.cpp @@ -88,7 +88,7 @@ void ModuleSpanningTree::init() loopCall = false; // update our local user count - Utils->TreeRoot->SetUserCount(ServerInstance->Users->local_users.size()); + Utils->TreeRoot->SetUserCount(ServerInstance->Users->LocalUserCount()); } void ModuleSpanningTree::ShowLinks(TreeServer* Current, User* user, int hops) -- cgit v1.2.3 From 40bcbd81b6e32f8db9aecf6d2b76ad71b3978411 Mon Sep 17 00:00:00 2001 From: Attila Molnar <attilamolnar@hush.com> Date: Wed, 4 Feb 2015 19:16:20 +0100 Subject: cmd_userhost List 5 users in the reply even if the query (incorrectly) contains more than 5 nicks --- src/commands/cmd_userhost.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/commands/cmd_userhost.cpp b/src/commands/cmd_userhost.cpp index 1065f9a35..79685388f 100644 --- a/src/commands/cmd_userhost.cpp +++ b/src/commands/cmd_userhost.cpp @@ -30,7 +30,7 @@ class CommandUserhost : public Command public: /** Constructor for userhost. */ - CommandUserhost ( Module* parent) : Command(parent,"USERHOST", 1, 5) { + CommandUserhost ( Module* parent) : Command(parent,"USERHOST", 1) { syntax = "<nick> [<nick> ...]"; } /** Handle command. @@ -46,7 +46,10 @@ CmdResult CommandUserhost::Handle (const std::vector<std::string>& parameters, U { std::string retbuf = "302 " + user->nick + " :"; - for (unsigned int i = 0; i < parameters.size(); i++) + unsigned int max = parameters.size(); + if (max > 5) + max = 5; + for (unsigned int i = 0; i < max; i++) { User *u = ServerInstance->FindNickOnly(parameters[i]); -- cgit v1.2.3 From cde9fdc38bd247bba69638782e0265c86e427bae Mon Sep 17 00:00:00 2001 From: Attila Molnar <attilamolnar@hush.com> Date: Mon, 9 Feb 2015 00:09:38 +0100 Subject: Remove outdated ircservices and neostats config examples Issue #991 --- docs/conf/aliases/ircservices.conf.example | 21 ------------------ docs/conf/aliases/neostats.conf.example | 35 ------------------------------ 2 files changed, 56 deletions(-) delete mode 100644 docs/conf/aliases/ircservices.conf.example delete mode 100644 docs/conf/aliases/neostats.conf.example diff --git a/docs/conf/aliases/ircservices.conf.example b/docs/conf/aliases/ircservices.conf.example deleted file mode 100644 index a4c31dd05..000000000 --- a/docs/conf/aliases/ircservices.conf.example +++ /dev/null @@ -1,21 +0,0 @@ -# Aliases for nickserv, chanserv, operserv, memoserv, hostserv -<alias text="NICKSERV" replace="PRIVMSG NickServ :$2-" requires="NickServ" uline="yes"> -<alias text="CHANSERV" replace="PRIVMSG ChanServ :$2-" requires="ChanServ" uline="yes"> -<alias text="OPERSERV" replace="PRIVMSG OperServ :$2-" requires="OperServ" uline="yes" operonly="yes"> -<alias text="MEMOSERV" replace="PRIVMSG MemoServ :$2-" requires="MemoServ" uline="yes"> -<alias text="STATSERV" replace="PRIVMSG StatServ :$2-" requires="StatServ" uline="yes" operonly="yes"> -<alias text="HOSTSERV" replace="PRIVMSG HostServ :$2-" requires="HostServ" uline="yes"> - -# Shorthand aliases for nickserv, chanserv, operserv, memoserv, hostserv -<alias text="NS" replace="PRIVMSG NickServ :$2-" requires="NickServ" uline="yes"> -<alias text="CS" replace="PRIVMSG ChanServ :$2-" requires="ChanServ" uline="yes"> -<alias text="OS" replace="PRIVMSG OperServ :$2-" requires="OperServ" uline="yes" operonly="yes"> -<alias text="MS" replace="PRIVMSG MemoServ :$2-" requires="MemoServ" uline="yes"> -<alias text="SS" replace="PRIVMSG StatServ :$2-" requires="StatServ" uline="yes" operonly="yes"> -<alias text="HS" replace="PRIVMSG HostServ :$2-" requires="HostServ" uline="yes"> - -# /id [channel] <password> -# Identify for a channel or nickname -<alias text="ID" format="#*" replace="PRIVMSG ChanServ :IDENTIFY $2 $3" requires="ChanServ" uline="yes"> -<alias text="ID" format="*" replace="PRIVMSG NickServ :IDENTIFY $2" requires="NickServ" uline="yes"> - diff --git a/docs/conf/aliases/neostats.conf.example b/docs/conf/aliases/neostats.conf.example deleted file mode 100644 index baa7fe0ba..000000000 --- a/docs/conf/aliases/neostats.conf.example +++ /dev/null @@ -1,35 +0,0 @@ -# Aliases for BLSB, ConnectServ, FloodServ, NeoStats, Operlog, QuoteServ, SecureServ, SeenServ, TextServ, WarServ, YahtzeeServ, LogServ, opsb, GamesServ, ProfileServ & StupidServ -<alias text="BLSB" replace="PRIVMSG BLSB :$2-" requires="BLSB" uline="yes" operonly="yes"> -<alias text="CONNECTSERV" replace="PRIVMSG ConnectServ :$2-" requires="ConnectServ" uline="yes" operonly="yes"> -<alias text="FLOODSERV" replace="PRIVMSG FloodServ :$2-" requires="FloodServ" uline="yes" operonly="yes"> -<alias text="NEOSTATS" replace="PRIVMSG NeoStats :$2-" requires="NeoStats" uline="yes" operonly="yes"> -<alias text="OPERLOG" replace="PRIVMSG Operlog :$2-" requires="Operlog" uline="yes" operonly="yes"> -<alias text="QUOTESERV" replace="PRIVMSG QuoteServ :$2-" requires="QuoteServ" uline="yes" operonly="yes"> -<alias text="SECURESERV" replace="PRIVMSG SecureServ :$2-" requires="SecureServ" uline="yes" operonly="yes"> -<alias text="SEENSERV" replace="PRIVMSG SeenServ :$2-" requires="SeenServ" uline="yes" operonly="yes"> -<alias text="TEXTSERV" replace="PRIVMSG TextServ :$2-" requires="TextServ" uline="yes" operonly="yes"> -<alias text="WARSERV" replace="PRIVMSG WarServ :$2-" requires="WarServ" uline="yes"> -<alias text="YAHTZEESERV" replace="PRIVMSG YahtzeeServ :$2-" requires="YahtzeeServ" uline="yes" operonly="yes"> -<alias text="LOGSERV" replace="PRIVMSG LogServ :$2-" requires="LogServ" uline="yes" operonly="yes"> -<alias text="OPSB" replace="PRIVMSG opsb :$2-" requires="opsb" uline="yes" operonly="yes"> -<alias text="GAMESSERV" replace="PRIVMSG GamesServ :$2-" requires="GamesServ" uline="yes"> -<alias text="PROFILESERV" replace="PRIVMSG ProfileServ :$2-" requires="ProfileServ" uline="yes"> -<alias text="STUPIDSERV" replace="PRIVMSG StupidServ :$2-" requires="StupidServ" uline="yes"> - -# Shorthand aliases for FloodServ, Operlog, QuoteServ, TextServ, WarServ, YahtzeeServ, LogServ, GamesServ, ProfileServ, SecureServ, SeenServ, NeoStats, ConnectServ & StupidServ -<alias text="FS" replace="PRIVMSG FloodServ :$2-" requires="FloodServ" uline="yes" operonly="yes"> -<alias text="OL" replace="PRIVMSG Operlog :$2-" requires="Operlog" uline="yes" operonly="yes"> -<alias text="QS" replace="PRIVMSG QuoteServ :$2-" requires="QuoteServ" uline="yes" operonly="yes"> -<alias text="TS" replace="PRIVMSG TextServ :$2-" requires="TextServ" uline="yes" operonly="yes"> -<alias text="WS" replace="PRIVMSG WarServ :$2-" requires="WarServ" uline="yes"> -<alias text="YS" replace="PRIVMSG YahtzeeServ :$2-" requires="YahtzeeServ" uline="yes" operonly="yes"> -<alias text="LS" replace="PRIVMSG LogServ :$2-" requires="LogServ" uline="yes" operonly="yes"> -<alias text="GS" replace="PRIVMSG GamesServ :$2-" requires="GamesServ" uline="yes"> -<alias text="PS" replace="PRIVMSG ProfileServ :$2-" requires="ProfileServ" uline="yes"> - -<alias text="SECURE" replace="PRIVMSG SecureServ :$2-" requires="SecureServ" uline="yes" operonly="yes"> -<alias text="SEEN" replace="PRIVMSG SeenServ :$2-" requires="SeenServ" uline="yes" operonly="yes"> -<alias text="NEO" replace="PRIVMSG NeoStats :$2-" requires="NeoStats" uline="yes" operonly="yes"> -<alias text="CONN" replace="PRIVMSG ConnectServ :$2-" requires="ConnectServ" uline="yes" operonly="yes"> -<alias text="STUPID" replace="PRIVMSG StupidServ :$2-" requires="StupidServ" uline="yes"> - -- cgit v1.2.3 From 9f4038f62015b79246ca6e267f9935f5305cf21a Mon Sep 17 00:00:00 2001 From: Peter Powell <petpow@saberuk.com> Date: Thu, 12 Feb 2015 22:12:41 +0000 Subject: Fix erroneous error messages in configure. --- configure | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/configure b/configure index 425bb21af..fae17dfea 100755 --- a/configure +++ b/configure @@ -660,12 +660,12 @@ dumphash(); if (($config{USE_GNUTLS} eq "y") && ($config{HAS_GNUTLS} ne "y")) { - print "Sorry, but I couldn't detect GnuTLS. Make sure gnutls-config is in your path.\n"; + print "Sorry, but I couldn't detect GnuTLS. Make sure pkg-config is in your path.\n"; exit(0); } if (($config{USE_OPENSSL} eq "y") && ($config{HAS_OPENSSL} ne "y")) { - print "Sorry, but I couldn't detect OpenSSL. Make sure openssl is in your path.\n"; + print "Sorry, but I couldn't detect OpenSSL. Make sure pkg-config and openssl are in your path.\n"; exit(0); } our $failed = 0; -- cgit v1.2.3 From 81841f76c863844210baf991d5c8cdfd01e57353 Mon Sep 17 00:00:00 2001 From: Peter Powell <petpow@saberuk.com> Date: Sun, 22 Feb 2015 20:24:31 +0000 Subject: Fix a minor crash when a user has no class after OnCheckReady. This bug looks serious but it can only be triggered with a very unusual server configuration problem. If you haven't already had a crash then you probably aren't at any risk. The way this crash happens is: 1. InspIRCd::DoBackgroundUserStuff is called by the main loop. 2. In the switch statement curr->registered is set to REG_NICKUSER so InspIRCd::AllModulesReportReady is called. 3. InspIRCd::AllModulesReportReady calls the OnCheckReady event in m_cgiirc. 4. m_cgiirc calls RecheckClass which sets the user's class to NULL and calls LocalUser::SetClass followed by LocalUser::CheckClass. 5. The user doesn't match any classes in LocalUser::SetClass so LocalUser::CheckClass quits the user with with "Access denied by configuration". 6. Control flow returns to InspIRCd::DoBackgroundUserStuff when InspIRCd::AllModulesReportReady returns false. 7. The if statement at the end of InspIRCd::DoBackgroundUserStuff calls ConnectClass::GetRegTimeout on curr->MyClass. 8. ConnectClass::GetRegTimeout tries to access a member of this which is NULL. 9. The server crashes with a SEGFAULT. --- src/userprocess.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/userprocess.cpp b/src/userprocess.cpp index 0ef95e413..69c31f840 100644 --- a/src/userprocess.cpp +++ b/src/userprocess.cpp @@ -104,10 +104,15 @@ void InspIRCd::DoBackgroundUserStuff() curr->FullConnect(); continue; } + + // If the user has been quit in OnCheckReady then we shouldn't + // quit them again for having a registration timeout. + if (curr->quitting) + continue; break; } - if (curr->registered != REG_ALL && (Time() > (curr->signon + curr->MyClass->GetRegTimeout()))) + if (curr->registered != REG_ALL && curr->MyClass && (Time() > (curr->signon + curr->MyClass->GetRegTimeout()))) { /* * registration timeout -- didnt send USER/NICK/HOST -- cgit v1.2.3 From db7b2a603d4a4ce0f9bc71173b379b42d0416759 Mon Sep 17 00:00:00 2001 From: Peter Powell <petpow@saberuk.com> Date: Thu, 26 Feb 2015 07:41:46 +0000 Subject: Fix various Clang warnings. - warning: 'register' storage class specifier is deprecated. --- src/hashcomp.cpp | 4 ++-- src/modules/m_md5.cpp | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/hashcomp.cpp b/src/hashcomp.cpp index 3fb7f84fb..e0347421b 100644 --- a/src/hashcomp.cpp +++ b/src/hashcomp.cpp @@ -140,7 +140,7 @@ void nspace::strlower(char *n) * only with *x replaced with national_case_insensitive_map[*x]. * This avoids a copy to use hash<const char*> */ - register size_t t = 0; + size_t t = 0; for (std::string::const_iterator x = s.begin(); x != s.end(); ++x) /* ++x not x++, as its faster */ t = 5 * t + national_case_insensitive_map[(unsigned char)*x]; return t; @@ -149,7 +149,7 @@ void nspace::strlower(char *n) size_t CoreExport irc::hash::operator()(const irc::string &s) const { - register size_t t = 0; + size_t t = 0; for (irc::string::const_iterator x = s.begin(); x != s.end(); ++x) /* ++x not x++, as its faster */ t = 5 * t + national_case_insensitive_map[(unsigned char)*x]; return t; diff --git a/src/modules/m_md5.cpp b/src/modules/m_md5.cpp index 14ccf16a8..c902ee3cb 100644 --- a/src/modules/m_md5.cpp +++ b/src/modules/m_md5.cpp @@ -163,7 +163,7 @@ class MD5Provider : public HashProvider void MD5Transform(word32 buf[4], word32 const in[16]) { - register word32 a, b, c, d; + word32 a, b, c, d; a = buf[0]; b = buf[1]; -- cgit v1.2.3 From c5a85f686e1aac063754b2c79f6991c58ec31bfb Mon Sep 17 00:00:00 2001 From: Peter Powell <petpow@saberuk.com> Date: Thu, 26 Feb 2015 22:31:57 +0000 Subject: Upgrade Doxyfile from 1.8.3.1 to 1.8.9.1. Also, strip comments by request of @attilamolnar. --- docs/Doxyfile | 1642 +-------------------------------------------------------- 1 file changed, 17 insertions(+), 1625 deletions(-) diff --git a/docs/Doxyfile b/docs/Doxyfile index e731ec590..807020af5 100644 --- a/docs/Doxyfile +++ b/docs/Doxyfile @@ -1,1873 +1,265 @@ -# Doxyfile 1.8.3.1 - -# This file describes the settings to be used by the documentation system -# doxygen (www.doxygen.org) for a project. -# -# All text after a hash (#) is considered a comment and will be ignored. -# The format is: -# TAG = value [value, ...] -# For lists items can also be appended using: -# TAG += value [value, ...] -# Values that contain spaces should be placed between quotes (" "). - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- - -# This tag specifies the encoding used for all characters in the config file -# that follow. The default is UTF-8 which is also the encoding used for all -# text before the first occurrence of this tag. Doxygen uses libiconv (or the -# iconv built into libc) for the transcoding. See -# http://www.gnu.org/software/libiconv for the list of possible encodings. - DOXYFILE_ENCODING = UTF-8 - -# The PROJECT_NAME tag is a single word (or sequence of words) that should -# identify the project. Note that if you do not use Doxywizard you need -# to put quotes around the project name if it contains spaces. - PROJECT_NAME = InspIRCd - -# The PROJECT_NUMBER tag can be used to enter a project or revision number. -# This could be handy for archiving the generated documentation or -# if some version control system is used. - PROJECT_NUMBER = 2.0 - -# Using the PROJECT_BRIEF tag one can provide an optional one line description -# for a project that appears at the top of each page and should give viewer -# a quick idea about the purpose of the project. Keep the description short. - PROJECT_BRIEF = - -# With the PROJECT_LOGO tag one can specify an logo or icon that is -# included in the documentation. The maximum height of the logo should not -# exceed 55 pixels and the maximum width should not exceed 200 pixels. -# Doxygen will copy the logo to the output directory. - PROJECT_LOGO = - -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) -# base path where the generated documentation will be put. -# If a relative path is entered, it will be relative to the location -# where doxygen was started. If left blank the current directory will be used. - OUTPUT_DIRECTORY = docs/doxygen - -# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create -# 4096 sub-directories (in 2 levels) under the output directory of each output -# format and will distribute the generated files over these directories. -# Enabling this option can be useful when feeding doxygen a huge amount of -# source files, where putting all generated files in the same directory would -# otherwise cause performance problems for the file system. - CREATE_SUBDIRS = NO - -# The OUTPUT_LANGUAGE tag is used to specify the language in which all -# documentation generated by doxygen is written. Doxygen will use this -# information to generate all constant output in the proper language. -# The default language is English, other supported languages are: -# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, -# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German, -# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English -# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, -# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak, -# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese. - +ALLOW_UNICODE_NAMES = NO OUTPUT_LANGUAGE = English - -# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will -# include brief member descriptions after the members that are listed in -# the file and class documentation (similar to JavaDoc). -# Set to NO to disable this. - BRIEF_MEMBER_DESC = YES - -# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend -# the brief description of a member or function before the detailed description. -# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the -# brief descriptions will be completely suppressed. - REPEAT_BRIEF = YES - -# This tag implements a quasi-intelligent brief description abbreviator -# that is used to form the text in various listings. Each string -# in this list, if found as the leading text of the brief description, will be -# stripped from the text and the result after processing the whole list, is -# used as the annotated text. Otherwise, the brief description is used as-is. -# If left blank, the following values are used ("$name" is automatically -# replaced with the name of the entity): "The $name class" "The $name widget" -# "The $name file" "is" "provides" "specifies" "contains" -# "represents" "a" "an" "the" - ABBREVIATE_BRIEF = - -# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then -# Doxygen will generate a detailed section even if there is only a brief -# description. - ALWAYS_DETAILED_SEC = NO - -# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all -# inherited members of a class in the documentation of that class as if those -# members were ordinary class members. Constructors, destructors and assignment -# operators of the base classes will not be shown. - INLINE_INHERITED_MEMB = NO - -# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full -# path before files name in the file list and in the header files. If set -# to NO the shortest path that makes the file name unique will be used. - FULL_PATH_NAMES = YES - -# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag -# can be used to strip a user-defined part of the path. Stripping is -# only done if one of the specified strings matches the left-hand part of -# the path. The tag can be used to show relative paths in the file list. -# If left blank the directory from which doxygen is run is used as the -# path to strip. Note that you specify absolute paths here, but also -# relative paths, which will be relative from the directory where doxygen is -# started. - STRIP_FROM_PATH = - -# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of -# the path mentioned in the documentation of a class, which tells -# the reader which header file to include in order to use a class. -# If left blank only the name of the header file containing the class -# definition is used. Otherwise one should specify the include paths that -# are normally passed to the compiler using the -I flag. - STRIP_FROM_INC_PATH = - -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter -# (but less readable) file names. This can be useful if your file system -# doesn't support long names like on DOS, Mac, or CD-ROM. - SHORT_NAMES = NO - -# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen -# will interpret the first line (until the first dot) of a JavaDoc-style -# comment as the brief description. If set to NO, the JavaDoc -# comments will behave just like regular Qt-style comments -# (thus requiring an explicit @brief command for a brief description.) - JAVADOC_AUTOBRIEF = NO - -# If the QT_AUTOBRIEF tag is set to YES then Doxygen will -# interpret the first line (until the first dot) of a Qt-style -# comment as the brief description. If set to NO, the comments -# will behave just like regular Qt-style comments (thus requiring -# an explicit \brief command for a brief description.) - QT_AUTOBRIEF = NO - -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen -# treat a multi-line C++ special comment block (i.e. a block of //! or /// -# comments) as a brief description. This used to be the default behaviour. -# The new default is to treat a multi-line C++ comment block as a detailed -# description. Set this tag to YES if you prefer the old behaviour instead. - MULTILINE_CPP_IS_BRIEF = NO - -# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented -# member inherits the documentation from any documented member that it -# re-implements. - INHERIT_DOCS = YES - -# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce -# a new page for each member. If set to NO, the documentation of a member will -# be part of the file/class/namespace that contains it. - SEPARATE_MEMBER_PAGES = NO - -# The TAB_SIZE tag can be used to set the number of spaces in a tab. -# Doxygen uses this value to replace tabs by spaces in code fragments. - TAB_SIZE = 8 - -# This tag can be used to specify a number of aliases that acts -# as commands in the documentation. An alias has the form "name=value". -# For example adding "sideeffect=\par Side Effects:\n" will allow you to -# put the command \sideeffect (or @sideeffect) in the documentation, which -# will result in a user-defined paragraph with heading "Side Effects:". -# You can put \n's in the value part of an alias to insert newlines. - ALIASES = - -# This tag can be used to specify a number of word-keyword mappings (TCL only). -# A mapping has the form "name=value". For example adding -# "class=itcl::class" will allow you to use the command class in the -# itcl::class meaning. - TCL_SUBST = - -# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C -# sources only. Doxygen will then generate output that is more tailored for C. -# For instance, some of the names that are used will be different. The list -# of all members will be omitted, etc. - OPTIMIZE_OUTPUT_FOR_C = NO - -# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java -# sources only. Doxygen will then generate output that is more tailored for -# Java. For instance, namespaces will be presented as packages, qualified -# scopes will look different, etc. - OPTIMIZE_OUTPUT_JAVA = NO - -# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran -# sources only. Doxygen will then generate output that is more tailored for -# Fortran. - OPTIMIZE_FOR_FORTRAN = NO - -# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL -# sources. Doxygen will then generate output that is tailored for -# VHDL. - OPTIMIZE_OUTPUT_VHDL = NO - -# Doxygen selects the parser to use depending on the extension of the files it -# parses. With this tag you can assign which parser to use for a given -# extension. Doxygen has a built-in mapping, but you can override or extend it -# using this tag. The format is ext=language, where ext is a file extension, -# and language is one of the parsers supported by doxygen: IDL, Java, -# Javascript, CSharp, C, C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, -# C++. For instance to make doxygen treat .inc files as Fortran files (default -# is PHP), and .f files as C (default is Fortran), use: inc=Fortran f=C. Note -# that for custom extensions you also need to set FILE_PATTERNS otherwise the -# files are not read by doxygen. - EXTENSION_MAPPING = - -# If MARKDOWN_SUPPORT is enabled (the default) then doxygen pre-processes all -# comments according to the Markdown format, which allows for more readable -# documentation. See http://daringfireball.net/projects/markdown/ for details. -# The output of markdown processing is further processed by doxygen, so you -# can mix doxygen, HTML, and XML commands with Markdown formatting. -# Disable only in case of backward compatibilities issues. - MARKDOWN_SUPPORT = YES - -# When enabled doxygen tries to link words that correspond to documented classes, -# or namespaces to their corresponding documentation. Such a link can be -# prevented in individual cases by by putting a % sign in front of the word or -# globally by setting AUTOLINK_SUPPORT to NO. - AUTOLINK_SUPPORT = YES - -# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want -# to include (a tag file for) the STL sources as input, then you should -# set this tag to YES in order to let doxygen match functions declarations and -# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. -# func(std::string) {}). This also makes the inheritance and collaboration -# diagrams that involve STL classes more complete and accurate. - BUILTIN_STL_SUPPORT = YES - -# If you use Microsoft's C++/CLI language, you should set this option to YES to -# enable parsing support. - CPP_CLI_SUPPORT = NO - -# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. -# Doxygen will parse them like normal C++ but will assume all classes use public -# instead of private inheritance when no explicit protection keyword is present. - SIP_SUPPORT = NO - -# For Microsoft's IDL there are propget and propput attributes to indicate -# getter and setter methods for a property. Setting this option to YES (the -# default) will make doxygen replace the get and set methods by a property in -# the documentation. This will only work if the methods are indeed getting or -# setting a simple type. If this is not the case, or you want to show the -# methods anyway, you should set this option to NO. - IDL_PROPERTY_SUPPORT = YES - -# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -# tag is set to YES, then doxygen will reuse the documentation of the first -# member in the group (if any) for the other members of the group. By default -# all members of a group must be documented explicitly. - DISTRIBUTE_GROUP_DOC = NO - -# Set the SUBGROUPING tag to YES (the default) to allow class member groups of -# the same type (for instance a group of public functions) to be put as a -# subgroup of that type (e.g. under the Public Functions section). Set it to -# NO to prevent subgrouping. Alternatively, this can be done per class using -# the \nosubgrouping command. - SUBGROUPING = YES - -# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and -# unions are shown inside the group in which they are included (e.g. using -# @ingroup) instead of on a separate page (for HTML and Man pages) or -# section (for LaTeX and RTF). - INLINE_GROUPED_CLASSES = NO - -# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and -# unions with only public data fields will be shown inline in the documentation -# of the scope in which they are defined (i.e. file, namespace, or group -# documentation), provided this scope is documented. If set to NO (the default), -# structs, classes, and unions are shown on a separate page (for HTML and Man -# pages) or section (for LaTeX and RTF). - INLINE_SIMPLE_STRUCTS = NO - -# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum -# is documented as struct, union, or enum with the name of the typedef. So -# typedef struct TypeS {} TypeT, will appear in the documentation as a struct -# with name TypeT. When disabled the typedef will appear as a member of a file, -# namespace, or class. And the struct will be named TypeS. This can typically -# be useful for C code in case the coding convention dictates that all compound -# types are typedef'ed and only the typedef is referenced, never the tag name. - TYPEDEF_HIDES_STRUCT = NO - -# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to -# determine which symbols to keep in memory and which to flush to disk. -# When the cache is full, less often used symbols will be written to disk. -# For small to medium size projects (<1000 input files) the default value is -# probably good enough. For larger projects a too small cache size can cause -# doxygen to be busy swapping symbols to and from disk most of the time -# causing a significant performance penalty. -# If the system has enough physical memory increasing the cache will improve the -# performance by keeping more symbols in memory. Note that the value works on -# a logarithmic scale so increasing the size by one will roughly double the -# memory usage. The cache size is given by this formula: -# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, -# corresponding to a cache size of 2^16 = 65536 symbols. - -SYMBOL_CACHE_SIZE = 0 - -# Similar to the SYMBOL_CACHE_SIZE the size of the symbol lookup cache can be -# set using LOOKUP_CACHE_SIZE. This cache is used to resolve symbols given -# their name and scope. Since this can be an expensive process and often the -# same symbol appear multiple times in the code, doxygen keeps a cache of -# pre-resolved symbols. If the cache is too small doxygen will become slower. -# If the cache is too large, memory is wasted. The cache size is given by this -# formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range is 0..9, the default is 0, -# corresponding to a cache size of 2^16 = 65536 symbols. - LOOKUP_CACHE_SIZE = 0 - -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- - -# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in -# documentation are documented, even if no documentation was available. -# Private class members and static file members will be hidden unless -# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES - EXTRACT_ALL = NO - -# If the EXTRACT_PRIVATE tag is set to YES all private members of a class -# will be included in the documentation. - EXTRACT_PRIVATE = NO - -# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal -# scope will be included in the documentation. - EXTRACT_PACKAGE = NO - -# If the EXTRACT_STATIC tag is set to YES all static members of a file -# will be included in the documentation. - EXTRACT_STATIC = NO - -# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) -# defined locally in source files will be included in the documentation. -# If set to NO only classes defined in header files are included. - EXTRACT_LOCAL_CLASSES = YES - -# This flag is only useful for Objective-C code. When set to YES local -# methods, which are defined in the implementation section but not in -# the interface are included in the documentation. -# If set to NO (the default) only methods in the interface are included. - EXTRACT_LOCAL_METHODS = NO - -# If this flag is set to YES, the members of anonymous namespaces will be -# extracted and appear in the documentation as a namespace called -# 'anonymous_namespace{file}', where file will be replaced with the base -# name of the file that contains the anonymous namespace. By default -# anonymous namespaces are hidden. - EXTRACT_ANON_NSPACES = NO - -# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all -# undocumented members of documented classes, files or namespaces. -# If set to NO (the default) these members will be included in the -# various overviews, but no documentation section is generated. -# This option has no effect if EXTRACT_ALL is enabled. - HIDE_UNDOC_MEMBERS = NO - -# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all -# undocumented classes that are normally visible in the class hierarchy. -# If set to NO (the default) these classes will be included in the various -# overviews. This option has no effect if EXTRACT_ALL is enabled. - HIDE_UNDOC_CLASSES = NO - -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all -# friend (class|struct|union) declarations. -# If set to NO (the default) these declarations will be included in the -# documentation. - HIDE_FRIEND_COMPOUNDS = NO - -# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any -# documentation blocks found inside the body of a function. -# If set to NO (the default) these blocks will be appended to the -# function's detailed documentation block. - HIDE_IN_BODY_DOCS = NO - -# The INTERNAL_DOCS tag determines if documentation -# that is typed after a \internal command is included. If the tag is set -# to NO (the default) then the documentation will be excluded. -# Set it to YES to include the internal documentation. - INTERNAL_DOCS = NO - -# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate -# file names in lower-case letters. If set to YES upper-case letters are also -# allowed. This is useful if you have classes or files whose names only differ -# in case and if your file system supports case sensitive file names. Windows -# and Mac users are advised to set this option to NO. - CASE_SENSE_NAMES = NO - -# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen -# will show members with their full class and namespace scopes in the -# documentation. If set to YES the scope will be hidden. - HIDE_SCOPE_NAMES = NO - -# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen -# will put a list of the files that are included by a file in the documentation -# of that file. - +HIDE_COMPOUND_REFERENCE= NO SHOW_INCLUDE_FILES = YES - -# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen -# will list include files with double quotes in the documentation -# rather than with sharp brackets. - +SHOW_GROUPED_MEMB_INC = NO FORCE_LOCAL_INCLUDES = NO - -# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] -# is inserted in the documentation for inline members. - INLINE_INFO = YES - -# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen -# will sort the (detailed) documentation of file and class members -# alphabetically by member name. If set to NO the members will appear in -# declaration order. - SORT_MEMBER_DOCS = YES - -# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the -# brief documentation of file, namespace and class members alphabetically -# by member name. If set to NO (the default) the members will appear in -# declaration order. - SORT_BRIEF_DOCS = NO - -# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen -# will sort the (brief and detailed) documentation of class members so that -# constructors and destructors are listed first. If set to NO (the default) -# the constructors will appear in the respective orders defined by -# SORT_MEMBER_DOCS and SORT_BRIEF_DOCS. -# This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO -# and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO. - SORT_MEMBERS_CTORS_1ST = NO - -# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the -# hierarchy of group names into alphabetical order. If set to NO (the default) -# the group names will appear in their defined order. - SORT_GROUP_NAMES = NO - -# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be -# sorted by fully-qualified names, including namespaces. If set to -# NO (the default), the class list will be sorted only by class name, -# not including the namespace part. -# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. -# Note: This option applies only to the class list, not to the -# alphabetical list. - SORT_BY_SCOPE_NAME = NO - -# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to -# do proper type resolution of all parameters of a function it will reject a -# match between the prototype and the implementation of a member function even -# if there is only one candidate or it is obvious which candidate to choose -# by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen -# will still accept a match between prototype and implementation in such cases. - STRICT_PROTO_MATCHING = NO - -# The GENERATE_TODOLIST tag can be used to enable (YES) or -# disable (NO) the todo list. This list is created by putting \todo -# commands in the documentation. - GENERATE_TODOLIST = YES - -# The GENERATE_TESTLIST tag can be used to enable (YES) or -# disable (NO) the test list. This list is created by putting \test -# commands in the documentation. - GENERATE_TESTLIST = YES - -# The GENERATE_BUGLIST tag can be used to enable (YES) or -# disable (NO) the bug list. This list is created by putting \bug -# commands in the documentation. - GENERATE_BUGLIST = YES - -# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or -# disable (NO) the deprecated list. This list is created by putting -# \deprecated commands in the documentation. - GENERATE_DEPRECATEDLIST= YES - -# The ENABLED_SECTIONS tag can be used to enable conditional -# documentation sections, marked by \if section-label ... \endif -# and \cond section-label ... \endcond blocks. - ENABLED_SECTIONS = - -# The MAX_INITIALIZER_LINES tag determines the maximum number of lines -# the initial value of a variable or macro consists of for it to appear in -# the documentation. If the initializer consists of more lines than specified -# here it will be hidden. Use a value of 0 to hide initializers completely. -# The appearance of the initializer of individual variables and macros in the -# documentation can be controlled using \showinitializer or \hideinitializer -# command in the documentation regardless of this setting. - MAX_INITIALIZER_LINES = 30 - -# Set the SHOW_USED_FILES tag to NO to disable the list of files generated -# at the bottom of the documentation of classes and structs. If set to YES the -# list will mention the files that were used to generate the documentation. - SHOW_USED_FILES = YES - -# Set the SHOW_FILES tag to NO to disable the generation of the Files page. -# This will remove the Files entry from the Quick Index and from the -# Folder Tree View (if specified). The default is YES. - SHOW_FILES = YES - -# Set the SHOW_NAMESPACES tag to NO to disable the generation of the -# Namespaces page. -# This will remove the Namespaces entry from the Quick Index -# and from the Folder Tree View (if specified). The default is YES. - SHOW_NAMESPACES = YES - -# The FILE_VERSION_FILTER tag can be used to specify a program or script that -# doxygen should invoke to get the current version for each file (typically from -# the version control system). Doxygen will invoke the program by executing (via -# popen()) the command <command> <input-file>, where <command> is the value of -# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file -# provided by doxygen. Whatever the program writes to standard output -# is used as the file version. See the manual for examples. - FILE_VERSION_FILTER = - -# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed -# by doxygen. The layout file controls the global structure of the generated -# output files in an output format independent way. To create the layout file -# that represents doxygen's defaults, run doxygen with the -l option. -# You can optionally specify a file name after the option, if omitted -# DoxygenLayout.xml will be used as the name of the layout file. - LAYOUT_FILE = - -# The CITE_BIB_FILES tag can be used to specify one or more bib files -# containing the references data. This must be a list of .bib files. The -# .bib extension is automatically appended if omitted. Using this command -# requires the bibtex tool to be installed. See also -# http://en.wikipedia.org/wiki/BibTeX for more info. For LaTeX the style -# of the bibliography can be controlled using LATEX_BIB_STYLE. To use this -# feature you need bibtex and perl available in the search path. Do not use -# file names with spaces, bibtex cannot handle them. - CITE_BIB_FILES = - -#--------------------------------------------------------------------------- -# configuration options related to warning and progress messages -#--------------------------------------------------------------------------- - -# The QUIET tag can be used to turn on/off the messages that are generated -# by doxygen. Possible values are YES and NO. If left blank NO is used. - QUIET = NO - -# The WARNINGS tag can be used to turn on/off the warning messages that are -# generated by doxygen. Possible values are YES and NO. If left blank -# NO is used. - WARNINGS = NO - -# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings -# for undocumented members. If EXTRACT_ALL is set to YES then this flag will -# automatically be disabled. - WARN_IF_UNDOCUMENTED = NO - -# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for -# potential errors in the documentation, such as not documenting some -# parameters in a documented function, or documenting parameters that -# don't exist or using markup commands wrongly. - WARN_IF_DOC_ERROR = YES - -# The WARN_NO_PARAMDOC option can be enabled to get warnings for -# functions that are documented, but have no documentation for their parameters -# or return value. If set to NO (the default) doxygen will only warn about -# wrong or incomplete parameter documentation, but not about the absence of -# documentation. - WARN_NO_PARAMDOC = NO - -# The WARN_FORMAT tag determines the format of the warning messages that -# doxygen can produce. The string should contain the $file, $line, and $text -# tags, which will be replaced by the file and line number from which the -# warning originated and the warning text. Optionally the format may contain -# $version, which will be replaced by the version of the file (if it could -# be obtained via FILE_VERSION_FILTER) - WARN_FORMAT = "$file:$line: $text" - -# The WARN_LOGFILE tag can be used to specify a file to which warning -# and error messages should be written. If left blank the output is written -# to stderr. - WARN_LOGFILE = - -#--------------------------------------------------------------------------- -# configuration options related to the input files -#--------------------------------------------------------------------------- - -# The INPUT tag can be used to specify the files and/or directories that contain -# documented source files. You may enter file names like "myfile.cpp" or -# directories like "/usr/src/myproject". Separate the files or directories -# with spaces. - INPUT = - -# This tag can be used to specify the character encoding of the source files -# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is -# also the default input encoding. Doxygen uses libiconv (or the iconv built -# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for -# the list of possible encodings. - INPUT_ENCODING = UTF-8 - -# If the value of the INPUT tag contains directories, you can use the -# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank the following patterns are tested: -# *.c *.cc *.cxx *.cpp *.c++ *.d *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh -# *.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py -# *.f90 *.f *.for *.vhd *.vhdl - FILE_PATTERNS = - -# The RECURSIVE tag can be used to turn specify whether or not subdirectories -# should be searched for input files as well. Possible values are YES and NO. -# If left blank NO is used. - RECURSIVE = YES - -# The EXCLUDE tag can be used to specify files and/or directories that should be -# excluded from the INPUT source files. This way you can easily exclude a -# subdirectory from a directory tree whose root is specified with the INPUT tag. -# Note that relative paths are relative to the directory from which doxygen is -# run. - EXCLUDE = - -# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or -# directories that are symbolic links (a Unix file system feature) are excluded -# from the input. - EXCLUDE_SYMLINKS = YES - -# If the value of the INPUT tag contains directories, you can use the -# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude -# certain files from those directories. Note that the wildcards are matched -# against the file with absolute path, so to exclude all test directories -# for example use the pattern */test/* - EXCLUDE_PATTERNS = */.git/* \ */doxygen/* \ */commands/* \ */modes/* \ */modules/* - -# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names -# (namespaces, classes, functions, etc.) that should be excluded from the -# output. The symbol name can be a fully qualified name, a word, or if the -# wildcard * is used, a substring. Examples: ANamespace, AClass, -# AClass::ANamespace, ANamespace::*Test - EXCLUDE_SYMBOLS = - -# The EXAMPLE_PATH tag can be used to specify one or more files or -# directories that contain example code fragments that are included (see -# the \include command). - EXAMPLE_PATH = - -# If the value of the EXAMPLE_PATH tag contains directories, you can use the -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank all files are included. - EXAMPLE_PATTERNS = - -# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be -# searched for input files to be used with the \include or \dontinclude -# commands irrespective of the value of the RECURSIVE tag. -# Possible values are YES and NO. If left blank NO is used. - EXAMPLE_RECURSIVE = NO - -# The IMAGE_PATH tag can be used to specify one or more files or -# directories that contain image that are included in the documentation (see -# the \image command). - IMAGE_PATH = - -# The INPUT_FILTER tag can be used to specify a program that doxygen should -# invoke to filter for each input file. Doxygen will invoke the filter program -# by executing (via popen()) the command <filter> <input-file>, where <filter> -# is the value of the INPUT_FILTER tag, and <input-file> is the name of an -# input file. Doxygen will then use the output that the filter program writes -# to standard output. -# If FILTER_PATTERNS is specified, this tag will be -# ignored. - INPUT_FILTER = - -# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern -# basis. -# Doxygen will compare the file name with each pattern and apply the -# filter if there is a match. -# The filters are a list of the form: -# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further -# info on how filters are used. If FILTER_PATTERNS is empty or if -# non of the patterns match the file name, INPUT_FILTER is applied. - FILTER_PATTERNS = - -# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using -# INPUT_FILTER) will be used to filter the input files when producing source -# files to browse (i.e. when SOURCE_BROWSER is set to YES). - FILTER_SOURCE_FILES = NO - -# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file -# pattern. A pattern will override the setting for FILTER_PATTERN (if any) -# and it is also possible to disable source filtering for a specific pattern -# using *.ext= (so without naming a filter). This option only has effect when -# FILTER_SOURCE_FILES is enabled. - FILTER_SOURCE_PATTERNS = - -# If the USE_MD_FILE_AS_MAINPAGE tag refers to the name of a markdown file that -# is part of the input, its contents will be placed on the main page (index.html). -# This can be useful if you have a project on for instance GitHub and want reuse -# the introduction page also for the doxygen output. - USE_MDFILE_AS_MAINPAGE = README.md - -#--------------------------------------------------------------------------- -# configuration options related to source browsing -#--------------------------------------------------------------------------- - -# If the SOURCE_BROWSER tag is set to YES then a list of source files will -# be generated. Documented entities will be cross-referenced with these sources. -# Note: To get rid of all source code in the generated output, make sure also -# VERBATIM_HEADERS is set to NO. - SOURCE_BROWSER = NO - -# Setting the INLINE_SOURCES tag to YES will include the body -# of functions and classes directly in the documentation. - INLINE_SOURCES = NO - -# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct -# doxygen to hide any special comment blocks from generated source code -# fragments. Normal C, C++ and Fortran comments will always remain visible. - STRIP_CODE_COMMENTS = YES - -# If the REFERENCED_BY_RELATION tag is set to YES -# then for each documented function all documented -# functions referencing it will be listed. - REFERENCED_BY_RELATION = NO - -# If the REFERENCES_RELATION tag is set to YES -# then for each documented function all documented entities -# called/used by that function will be listed. - REFERENCES_RELATION = NO - -# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) -# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from -# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will -# link to the source code. -# Otherwise they will link to the documentation. - REFERENCES_LINK_SOURCE = YES - -# If the USE_HTAGS tag is set to YES then the references to source code -# will point to the HTML generated by the htags(1) tool instead of doxygen -# built-in source browser. The htags tool is part of GNU's global source -# tagging system (see http://www.gnu.org/software/global/global.html). You -# will need version 4.8.6 or higher. - +SOURCE_TOOLTIPS = YES USE_HTAGS = NO - -# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen -# will generate a verbatim copy of the header file for each class for -# which an include is specified. Set to NO to disable this. - VERBATIM_HEADERS = YES - -#--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- - -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index -# of all compounds will be generated. Enable this if the project -# contains a lot of classes, structs, unions or interfaces. - ALPHABETICAL_INDEX = YES - -# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then -# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns -# in which this list will be split (can be a number in the range [1..20]) - COLS_IN_ALPHA_INDEX = 5 - -# In case all classes in a project start with a common prefix, all -# classes will be put under the same header in the alphabetical index. -# The IGNORE_PREFIX tag can be used to specify one or more prefixes that -# should be ignored while generating the index headers. - IGNORE_PREFIX = - -#--------------------------------------------------------------------------- -# configuration options related to the HTML output -#--------------------------------------------------------------------------- - -# If the GENERATE_HTML tag is set to YES (the default) Doxygen will -# generate HTML output. - GENERATE_HTML = YES - -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `html' will be used as the default path. - HTML_OUTPUT = html - -# The HTML_FILE_EXTENSION tag can be used to specify the file extension for -# each generated HTML page (for example: .htm,.php,.asp). If it is left blank -# doxygen will generate files with .html extension. - HTML_FILE_EXTENSION = .html - -# The HTML_HEADER tag can be used to specify a personal HTML header for -# each generated HTML page. If it is left blank doxygen will generate a -# standard header. Note that when using a custom header you are responsible -# for the proper inclusion of any scripts and style sheets that doxygen -# needs, which is dependent on the configuration options used. -# It is advised to generate a default header using "doxygen -w html -# header.html footer.html stylesheet.css YourConfigFile" and then modify -# that header. Note that the header is subject to change so you typically -# have to redo this when upgrading to a newer version of doxygen or when -# changing the value of configuration settings such as GENERATE_TREEVIEW! - HTML_HEADER = - -# The HTML_FOOTER tag can be used to specify a personal HTML footer for -# each generated HTML page. If it is left blank doxygen will generate a -# standard footer. - HTML_FOOTER = - -# The HTML_STYLESHEET tag can be used to specify a user-defined cascading -# style sheet that is used by each HTML page. It can be used to -# fine-tune the look of the HTML output. If left blank doxygen will -# generate a default style sheet. Note that it is recommended to use -# HTML_EXTRA_STYLESHEET instead of this one, as it is more robust and this -# tag will in the future become obsolete. - HTML_STYLESHEET = - -# The HTML_EXTRA_STYLESHEET tag can be used to specify an additional -# user-defined cascading style sheet that is included after the standard -# style sheets created by doxygen. Using this option one can overrule -# certain style aspects. This is preferred over using HTML_STYLESHEET -# since it does not replace the standard style sheet and is therefor more -# robust against future updates. Doxygen will copy the style sheet file to -# the output directory. - HTML_EXTRA_STYLESHEET = - -# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or -# other source files which should be copied to the HTML output directory. Note -# that these files will be copied to the base HTML output directory. Use the -# $relpath$ marker in the HTML_HEADER and/or HTML_FOOTER files to load these -# files. In the HTML_STYLESHEET file, use the file name only. Also note that -# the files will be copied as-is; there are no commands or markers available. - HTML_EXTRA_FILES = - -# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. -# Doxygen will adjust the colors in the style sheet and background images -# according to this color. Hue is specified as an angle on a colorwheel, -# see http://en.wikipedia.org/wiki/Hue for more information. -# For instance the value 0 represents red, 60 is yellow, 120 is green, -# 180 is cyan, 240 is blue, 300 purple, and 360 is red again. -# The allowed range is 0 to 359. - HTML_COLORSTYLE_HUE = 220 - -# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of -# the colors in the HTML output. For a value of 0 the output will use -# grayscales only. A value of 255 will produce the most vivid colors. - HTML_COLORSTYLE_SAT = 100 - -# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to -# the luminance component of the colors in the HTML output. Values below -# 100 gradually make the output lighter, whereas values above 100 make -# the output darker. The value divided by 100 is the actual gamma applied, -# so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2, -# and 100 does not change the gamma. - HTML_COLORSTYLE_GAMMA = 80 - -# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML -# page will contain the date and time when the page was generated. Setting -# this to NO can help when comparing the output of multiple runs. - HTML_TIMESTAMP = NO - -# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML -# documentation will contain sections that can be hidden and shown after the -# page has loaded. - HTML_DYNAMIC_SECTIONS = NO - -# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of -# entries shown in the various tree structured indices initially; the user -# can expand and collapse entries dynamically later on. Doxygen will expand -# the tree to such a level that at most the specified number of entries are -# visible (unless a fully collapsed tree already exceeds this amount). -# So setting the number of entries 1 will produce a full collapsed tree by -# default. 0 is a special value representing an infinite number of entries -# and will result in a full expanded tree by default. - HTML_INDEX_NUM_ENTRIES = 100 - -# If the GENERATE_DOCSET tag is set to YES, additional index files -# will be generated that can be used as input for Apple's Xcode 3 -# integrated development environment, introduced with OSX 10.5 (Leopard). -# To create a documentation set, doxygen will generate a Makefile in the -# HTML output directory. Running make will produce the docset in that -# directory and running "make install" will install the docset in -# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find -# it at startup. -# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html -# for more information. - GENERATE_DOCSET = YES - -# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the -# feed. A documentation feed provides an umbrella under which multiple -# documentation sets from a single provider (such as a company or product suite) -# can be grouped. - DOCSET_FEEDNAME = "Doxygen generated documentation" - -# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that -# should uniquely identify the documentation set bundle. This should be a -# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen -# will append .docset to the name. - DOCSET_BUNDLE_ID = org.doxygen.Project - -# When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely -# identify the documentation publisher. This should be a reverse domain-name -# style string, e.g. com.mycompany.MyDocSet.documentation. - DOCSET_PUBLISHER_ID = org.doxygen.Publisher - -# The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher. - DOCSET_PUBLISHER_NAME = Publisher - -# If the GENERATE_HTMLHELP tag is set to YES, additional index files -# will be generated that can be used as input for tools like the -# Microsoft HTML help workshop to generate a compiled HTML help file (.chm) -# of the generated HTML documentation. - GENERATE_HTMLHELP = NO - -# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can -# be used to specify the file name of the resulting .chm file. You -# can add a path in front of the file if the result should not be -# written to the html output directory. - CHM_FILE = - -# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can -# be used to specify the location (absolute path including file name) of -# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run -# the HTML help compiler on the generated index.hhp. - HHC_LOCATION = - -# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag -# controls if a separate .chi index file is generated (YES) or that -# it should be included in the master .chm file (NO). - GENERATE_CHI = NO - -# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING -# is used to encode HtmlHelp index (hhk), content (hhc) and project file -# content. - CHM_INDEX_ENCODING = - -# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag -# controls whether a binary table of contents is generated (YES) or a -# normal table of contents (NO) in the .chm file. - BINARY_TOC = NO - -# The TOC_EXPAND flag can be set to YES to add extra items for group members -# to the contents of the HTML help documentation and to the tree view. - TOC_EXPAND = NO - -# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and -# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated -# that can be used as input for Qt's qhelpgenerator to generate a -# Qt Compressed Help (.qch) of the generated HTML documentation. - GENERATE_QHP = NO - -# If the QHG_LOCATION tag is specified, the QCH_FILE tag can -# be used to specify the file name of the resulting .qch file. -# The path specified is relative to the HTML output folder. - QCH_FILE = - -# The QHP_NAMESPACE tag specifies the namespace to use when generating -# Qt Help Project output. For more information please see -# http://doc.trolltech.com/qthelpproject.html#namespace - QHP_NAMESPACE = org.doxygen.Project - -# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating -# Qt Help Project output. For more information please see -# http://doc.trolltech.com/qthelpproject.html#virtual-folders - QHP_VIRTUAL_FOLDER = doc - -# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to -# add. For more information please see -# http://doc.trolltech.com/qthelpproject.html#custom-filters - QHP_CUST_FILTER_NAME = - -# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the -# custom filter to add. For more information please see -# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters"> -# Qt Help Project / Custom Filters</a>. - QHP_CUST_FILTER_ATTRS = - -# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this -# project's -# filter section matches. -# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes"> -# Qt Help Project / Filter Attributes</a>. - QHP_SECT_FILTER_ATTRS = - -# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can -# be used to specify the location of Qt's qhelpgenerator. -# If non-empty doxygen will try to run qhelpgenerator on the generated -# .qhp file. - QHG_LOCATION = - -# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files -# will be generated, which together with the HTML files, form an Eclipse help -# plugin. To install this plugin and make it available under the help contents -# menu in Eclipse, the contents of the directory containing the HTML and XML -# files needs to be copied into the plugins directory of eclipse. The name of -# the directory within the plugins directory should be the same as -# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before -# the help appears. - GENERATE_ECLIPSEHELP = NO - -# A unique identifier for the eclipse help plugin. When installing the plugin -# the directory name containing the HTML and XML files should also have -# this name. - ECLIPSE_DOC_ID = org.doxygen.Project - -# The DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) -# at top of each HTML page. The value NO (the default) enables the index and -# the value YES disables it. Since the tabs have the same information as the -# navigation tree you can set this option to NO if you already set -# GENERATE_TREEVIEW to YES. - DISABLE_INDEX = NO - -# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index -# structure should be generated to display hierarchical information. -# If the tag value is set to YES, a side panel will be generated -# containing a tree-like index structure (just like the one that -# is generated for HTML Help). For this to work a browser that supports -# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser). -# Windows users are probably better off using the HTML help feature. -# Since the tree basically has the same information as the tab index you -# could consider to set DISABLE_INDEX to NO when enabling this option. - GENERATE_TREEVIEW = NO - -# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values -# (range [0,1..20]) that doxygen will group on one line in the generated HTML -# documentation. Note that a value of 0 will completely suppress the enum -# values from appearing in the overview section. - ENUM_VALUES_PER_LINE = 4 - -# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be -# used to set the initial width (in pixels) of the frame in which the tree -# is shown. - TREEVIEW_WIDTH = 250 - -# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open -# links to external symbols imported via tag files in a separate window. - EXT_LINKS_IN_WINDOW = NO - -# Use this tag to change the font size of Latex formulas included -# as images in the HTML documentation. The default is 10. Note that -# when you change the font size after a successful doxygen run you need -# to manually remove any form_*.png images from the HTML output directory -# to force them to be regenerated. - FORMULA_FONTSIZE = 10 - -# Use the FORMULA_TRANPARENT tag to determine whether or not the images -# generated for formulas are transparent PNGs. Transparent PNGs are -# not supported properly for IE 6.0, but are supported on all modern browsers. -# Note that when changing this option you need to delete any form_*.png files -# in the HTML output before the changes have effect. - FORMULA_TRANSPARENT = YES - -# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax -# (see http://www.mathjax.org) which uses client side Javascript for the -# rendering instead of using prerendered bitmaps. Use this if you do not -# have LaTeX installed or if you want to formulas look prettier in the HTML -# output. When enabled you may also need to install MathJax separately and -# configure the path to it using the MATHJAX_RELPATH option. - USE_MATHJAX = NO - -# When MathJax is enabled you can set the default output format to be used for -# thA MathJax output. Supported types are HTML-CSS, NativeMML (i.e. MathML) and -# SVG. The default value is HTML-CSS, which is slower, but has the best -# compatibility. - MATHJAX_FORMAT = HTML-CSS - -# When MathJax is enabled you need to specify the location relative to the -# HTML output directory using the MATHJAX_RELPATH option. The destination -# directory should contain the MathJax.js script. For instance, if the mathjax -# directory is located at the same level as the HTML output directory, then -# MATHJAX_RELPATH should be ../mathjax. The default value points to -# the MathJax Content Delivery Network so you can quickly see the result without -# installing MathJax. -# However, it is strongly recommended to install a local -# copy of MathJax from http://www.mathjax.org before deployment. - MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest - -# The MATHJAX_EXTENSIONS tag can be used to specify one or MathJax extension -# names that should be enabled during MathJax rendering. - MATHJAX_EXTENSIONS = - -# When the SEARCHENGINE tag is enabled doxygen will generate a search box -# for the HTML output. The underlying search engine uses javascript -# and DHTML and should work on any modern browser. Note that when using -# HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets -# (GENERATE_DOCSET) there is already a search function so this one should -# typically be disabled. For large projects the javascript based search engine -# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution. - +MATHJAX_CODEFILE = SEARCHENGINE = YES - -# When the SERVER_BASED_SEARCH tag is enabled the search engine will be -# implemented using a web server instead of a web client using Javascript. -# There are two flavours of web server based search depending on the -# EXTERNAL_SEARCH setting. When disabled, doxygen will generate a PHP script for -# searching and an index file used by the script. When EXTERNAL_SEARCH is -# enabled the indexing and searching needs to be provided by external tools. -# See the manual for details. - SERVER_BASED_SEARCH = NO - -# When EXTERNAL_SEARCH is enabled doxygen will no longer generate the PHP -# script for searching. Instead the search results are written to an XML file -# which needs to be processed by an external indexer. Doxygen will invoke an -# external search engine pointed to by the SEARCHENGINE_URL option to obtain -# the search results. Doxygen ships with an example indexer (doxyindexer) and -# search engine (doxysearch.cgi) which are based on the open source search engine -# library Xapian. See the manual for configuration details. - EXTERNAL_SEARCH = NO - -# The SEARCHENGINE_URL should point to a search engine hosted by a web server -# which will returned the search results when EXTERNAL_SEARCH is enabled. -# Doxygen ships with an example search engine (doxysearch) which is based on -# the open source search engine library Xapian. See the manual for configuration -# details. - SEARCHENGINE_URL = - -# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed -# search data is written to a file for indexing by an external tool. With the -# SEARCHDATA_FILE tag the name of this file can be specified. - SEARCHDATA_FILE = searchdata.xml - -# When SERVER_BASED_SEARCH AND EXTERNAL_SEARCH are both enabled the -# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is -# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple -# projects and redirect the results back to the right project. - EXTERNAL_SEARCH_ID = - -# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen -# projects other than the one defined by this configuration file, but that are -# all added to the same external search index. Each project needs to have a -# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id -# of to a relative location where the documentation can be found. -# The format is: EXTRA_SEARCH_MAPPINGS = id1=loc1 id2=loc2 ... - EXTRA_SEARCH_MAPPINGS = - -#--------------------------------------------------------------------------- -# configuration options related to the LaTeX output -#--------------------------------------------------------------------------- - -# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will -# generate Latex output. - GENERATE_LATEX = NO - -# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `latex' will be used as the default path. - LATEX_OUTPUT = latex - -# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be -# invoked. If left blank `latex' will be used as the default command name. -# Note that when enabling USE_PDFLATEX this option is only used for -# generating bitmaps for formulas in the HTML output, but not in the -# Makefile that is written to the output directory. - LATEX_CMD_NAME = latex - -# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to -# generate index for LaTeX. If left blank `makeindex' will be used as the -# default command name. - MAKEINDEX_CMD_NAME = makeindex - -# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact -# LaTeX documents. This may be useful for small projects and may help to -# save some trees in general. - COMPACT_LATEX = NO - -# The PAPER_TYPE tag can be used to set the paper type that is used -# by the printer. Possible values are: a4, letter, legal and -# executive. If left blank a4wide will be used. - PAPER_TYPE = a4 - -# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX -# packages that should be included in the LaTeX output. - EXTRA_PACKAGES = - -# The LATEX_HEADER tag can be used to specify a personal LaTeX header for -# the generated latex document. The header should contain everything until -# the first chapter. If it is left blank doxygen will generate a -# standard header. Notice: only use this tag if you know what you are doing! - LATEX_HEADER = - -# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for -# the generated latex document. The footer should contain everything after -# the last chapter. If it is left blank doxygen will generate a -# standard footer. Notice: only use this tag if you know what you are doing! - LATEX_FOOTER = - -# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated -# is prepared for conversion to pdf (using ps2pdf). The pdf file will -# contain links (just like the HTML output) instead of page references -# This makes the output suitable for online browsing using a pdf viewer. - +LATEX_EXTRA_STYLESHEET = +LATEX_EXTRA_FILES = PDF_HYPERLINKS = YES - -# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of -# plain latex in the generated Makefile. Set this option to YES to get a -# higher quality PDF documentation. - USE_PDFLATEX = YES - -# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. -# command to the generated LaTeX files. This will instruct LaTeX to keep -# running if errors occur, instead of asking the user for help. -# This option is also used when generating formulas in HTML. - LATEX_BATCHMODE = NO - -# If LATEX_HIDE_INDICES is set to YES then doxygen will not -# include the index chapters (such as File Index, Compound Index, etc.) -# in the output. - LATEX_HIDE_INDICES = NO - -# If LATEX_SOURCE_CODE is set to YES then doxygen will include -# source code with syntax highlighting in the LaTeX output. -# Note that which sources are shown also depends on other settings -# such as SOURCE_BROWSER. - LATEX_SOURCE_CODE = NO - -# The LATEX_BIB_STYLE tag can be used to specify the style to use for the -# bibliography, e.g. plainnat, or ieeetr. The default style is "plain". See -# http://en.wikipedia.org/wiki/BibTeX for more info. - LATEX_BIB_STYLE = plain - -#--------------------------------------------------------------------------- -# configuration options related to the RTF output -#--------------------------------------------------------------------------- - -# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output -# The RTF output is optimized for Word 97 and may not look very pretty with -# other RTF readers or editors. - GENERATE_RTF = NO - -# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `rtf' will be used as the default path. - RTF_OUTPUT = rtf - -# If the COMPACT_RTF tag is set to YES Doxygen generates more compact -# RTF documents. This may be useful for small projects and may help to -# save some trees in general. - COMPACT_RTF = NO - -# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated -# will contain hyperlink fields. The RTF file will -# contain links (just like the HTML output) instead of page references. -# This makes the output suitable for online browsing using WORD or other -# programs which support those fields. -# Note: wordpad (write) and others do not support links. - RTF_HYPERLINKS = NO - -# Load style sheet definitions from file. Syntax is similar to doxygen's -# config file, i.e. a series of assignments. You only have to provide -# replacements, missing definitions are set to their default value. - RTF_STYLESHEET_FILE = - -# Set optional variables used in the generation of an rtf document. -# Syntax is similar to doxygen's config file. - RTF_EXTENSIONS_FILE = - -#--------------------------------------------------------------------------- -# configuration options related to the man page output -#--------------------------------------------------------------------------- - -# If the GENERATE_MAN tag is set to YES (the default) Doxygen will -# generate man pages - +RTF_SOURCE_CODE = NO GENERATE_MAN = NO - -# The MAN_OUTPUT tag is used to specify where the man pages will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `man' will be used as the default path. - MAN_OUTPUT = man - -# The MAN_EXTENSION tag determines the extension that is added to -# the generated man pages (default is the subroutine's section .3) - MAN_EXTENSION = .3 - -# If the MAN_LINKS tag is set to YES and Doxygen generates man output, -# then it will generate one additional man file for each entity -# documented in the real man page(s). These additional files -# only source the real man page, but without them the man command -# would be unable to find the correct page. The default is NO. - +MAN_SUBDIR = MAN_LINKS = NO - -#--------------------------------------------------------------------------- -# configuration options related to the XML output -#--------------------------------------------------------------------------- - -# If the GENERATE_XML tag is set to YES Doxygen will -# generate an XML file that captures the structure of -# the code including all documentation. - GENERATE_XML = NO - -# The XML_OUTPUT tag is used to specify where the XML pages will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `xml' will be used as the default path. - XML_OUTPUT = xml - -# The XML_SCHEMA tag can be used to specify an XML schema, -# which can be used by a validating XML parser to check the -# syntax of the XML files. - -XML_SCHEMA = - -# The XML_DTD tag can be used to specify an XML DTD, -# which can be used by a validating XML parser to check the -# syntax of the XML files. - -XML_DTD = - -# If the XML_PROGRAMLISTING tag is set to YES Doxygen will -# dump the program listings (including syntax highlighting -# and cross-referencing information) to the XML output. Note that -# enabling this will significantly increase the size of the XML output. - XML_PROGRAMLISTING = YES - -#--------------------------------------------------------------------------- -# configuration options for the AutoGen Definitions output -#--------------------------------------------------------------------------- - -# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will -# generate an AutoGen Definitions (see autogen.sf.net) file -# that captures the structure of the code including all -# documentation. Note that this feature is still experimental -# and incomplete at the moment. - +GENERATE_DOCBOOK = NO +DOCBOOK_OUTPUT = docbook +DOCBOOK_PROGRAMLISTING = NO GENERATE_AUTOGEN_DEF = NO - -#--------------------------------------------------------------------------- -# configuration options related to the Perl module output -#--------------------------------------------------------------------------- - -# If the GENERATE_PERLMOD tag is set to YES Doxygen will -# generate a Perl module file that captures the structure of -# the code including all documentation. Note that this -# feature is still experimental and incomplete at the -# moment. - GENERATE_PERLMOD = NO - -# If the PERLMOD_LATEX tag is set to YES Doxygen will generate -# the necessary Makefile rules, Perl scripts and LaTeX code to be able -# to generate PDF and DVI output from the Perl module output. - PERLMOD_LATEX = NO - -# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be -# nicely formatted so it can be parsed by a human reader. -# This is useful -# if you want to understand what is going on. -# On the other hand, if this -# tag is set to NO the size of the Perl module output will be much smaller -# and Perl will parse it just the same. - PERLMOD_PRETTY = YES - -# The names of the make variables in the generated doxyrules.make file -# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. -# This is useful so different doxyrules.make files included by the same -# Makefile don't overwrite each other's variables. - PERLMOD_MAKEVAR_PREFIX = - -#--------------------------------------------------------------------------- -# Configuration options related to the preprocessor -#--------------------------------------------------------------------------- - -# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will -# evaluate all C-preprocessor directives found in the sources and include -# files. - ENABLE_PREPROCESSING = YES - -# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro -# names in the source code. If set to NO (the default) only conditional -# compilation will be performed. Macro expansion can be done in a controlled -# way by setting EXPAND_ONLY_PREDEF to YES. - MACRO_EXPANSION = YES - -# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES -# then the macro expansion is limited to the macros specified with the -# PREDEFINED and EXPAND_AS_DEFINED tags. - EXPAND_ONLY_PREDEF = NO - -# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files -# pointed to by INCLUDE_PATH will be searched when a #include is found. - SEARCH_INCLUDES = YES - -# The INCLUDE_PATH tag can be used to specify one or more directories that -# contain include files that are not input files but should be processed by -# the preprocessor. - INCLUDE_PATH = - -# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard -# patterns (like *.h and *.hpp) to filter out the header-files in the -# directories. If left blank, the patterns specified with FILE_PATTERNS will -# be used. - INCLUDE_FILE_PATTERNS = - -# The PREDEFINED tag can be used to specify one or more macro names that -# are defined before the preprocessor is started (similar to the -D option of -# gcc). The argument of the tag is a list of macros of the form: name -# or name=definition (no spaces). If the definition and the = are -# omitted =1 is assumed. To prevent a macro definition from being -# undefined via #undef or recursively expanded use the := operator -# instead of the = operator. - PREDEFINED = - -# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then -# this tag can be used to specify a list of macro names that should be expanded. -# The macro definition that is found in the sources will be used. -# Use the PREDEFINED tag if you want to use a different macro definition that -# overrules the definition found in the source code. - EXPAND_AS_DEFINED = - -# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then -# doxygen's preprocessor will remove all references to function-like macros -# that are alone on a line, have an all uppercase name, and do not end with a -# semicolon, because these will confuse the parser if not removed. - SKIP_FUNCTION_MACROS = YES - -#--------------------------------------------------------------------------- -# Configuration::additions related to external references -#--------------------------------------------------------------------------- - -# The TAGFILES option can be used to specify one or more tagfiles. For each -# tag file the location of the external documentation should be added. The -# format of a tag file without this location is as follows: -# -# TAGFILES = file1 file2 ... -# Adding location for the tag files is done as follows: -# -# TAGFILES = file1=loc1 "file2 = loc2" ... -# where "loc1" and "loc2" can be relative or absolute paths -# or URLs. Note that each tag file must have a unique name (where the name does -# NOT include the path). If a tag file is not located in the directory in which -# doxygen is run, you must also specify the path to the tagfile here. - TAGFILES = - -# When a file name is specified after GENERATE_TAGFILE, doxygen will create -# a tag file that is based on the input files it reads. - GENERATE_TAGFILE = - -# If the ALLEXTERNALS tag is set to YES all external classes will be listed -# in the class index. If set to NO only the inherited external classes -# will be listed. - ALLEXTERNALS = NO - -# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed -# in the modules index. If set to NO, only the current project's groups will -# be listed. - EXTERNAL_GROUPS = YES - -# The PERL_PATH should be the absolute path and name of the perl script -# interpreter (i.e. the result of `which perl'). - +EXTERNAL_PAGES = YES PERL_PATH = /usr/bin/perl - -#--------------------------------------------------------------------------- -# Configuration options related to the dot tool -#--------------------------------------------------------------------------- - -# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will -# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base -# or super classes. Setting the tag to NO turns the diagrams off. Note that -# this option also works with HAVE_DOT disabled, but it is recommended to -# install and use dot, since it yields more powerful graphs. - CLASS_DIAGRAMS = YES - -# You can define message sequence charts within doxygen comments using the \msc -# command. Doxygen will then run the mscgen tool (see -# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the -# documentation. The MSCGEN_PATH tag allows you to specify the directory where -# the mscgen tool resides. If left empty the tool is assumed to be found in the -# default search path. - MSCGEN_PATH = - -# If set to YES, the inheritance and collaboration graphs will hide -# inheritance and usage relations if the target is undocumented -# or is not a class. - +DIA_PATH = HIDE_UNDOC_RELATIONS = YES - -# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is -# available from the path. This tool is part of Graphviz, a graph visualization -# toolkit from AT&T and Lucent Bell Labs. The other options in this section -# have no effect if this option is set to NO (the default) - HAVE_DOT = NO - -# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is -# allowed to run in parallel. When set to 0 (the default) doxygen will -# base this on the number of processors available in the system. You can set it -# explicitly to a value larger than 0 to get control over the balance -# between CPU load and processing speed. - DOT_NUM_THREADS = 0 - -# By default doxygen will use the Helvetica font for all dot files that -# doxygen generates. When you want a differently looking font you can specify -# the font name using DOT_FONTNAME. You need to make sure dot is able to find -# the font, which can be done by putting it in a standard location or by setting -# the DOTFONTPATH environment variable or by setting DOT_FONTPATH to the -# directory containing the font. - DOT_FONTNAME = Helvetica - -# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. -# The default size is 10pt. - DOT_FONTSIZE = 10 - -# By default doxygen will tell dot to use the Helvetica font. -# If you specify a different font using DOT_FONTNAME you can use DOT_FONTPATH to -# set the path where dot can find it. - DOT_FONTPATH = - -# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for each documented class showing the direct and -# indirect inheritance relations. Setting this tag to YES will force the -# CLASS_DIAGRAMS tag to NO. - CLASS_GRAPH = YES - -# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for each documented class showing the direct and -# indirect implementation dependencies (inheritance, containment, and -# class references variables) of the class with other documented classes. - COLLABORATION_GRAPH = YES - -# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for groups, showing the direct groups dependencies - GROUP_GRAPHS = YES - -# If the UML_LOOK tag is set to YES doxygen will generate inheritance and -# collaboration diagrams in a style similar to the OMG's Unified Modeling -# Language. - UML_LOOK = NO - -# If the UML_LOOK tag is enabled, the fields and methods are shown inside -# the class node. If there are many fields or methods and many nodes the -# graph may become too big to be useful. The UML_LIMIT_NUM_FIELDS -# threshold limits the number of items for each type to make the size more -# managable. Set this to 0 for no limit. Note that the threshold may be -# exceeded by 50% before the limit is enforced. - UML_LIMIT_NUM_FIELDS = 10 - -# If set to YES, the inheritance and collaboration graphs will show the -# relations between templates and their instances. - TEMPLATE_RELATIONS = NO - -# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT -# tags are set to YES then doxygen will generate a graph for each documented -# file showing the direct and indirect include dependencies of the file with -# other documented files. - INCLUDE_GRAPH = YES - -# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and -# HAVE_DOT tags are set to YES then doxygen will generate a graph for each -# documented header file showing the documented files that directly or -# indirectly include this file. - INCLUDED_BY_GRAPH = YES - -# If the CALL_GRAPH and HAVE_DOT options are set to YES then -# doxygen will generate a call dependency graph for every global function -# or class method. Note that enabling this option will significantly increase -# the time of a run. So in most cases it will be better to enable call graphs -# for selected functions only using the \callgraph command. - CALL_GRAPH = NO - -# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then -# doxygen will generate a caller dependency graph for every global function -# or class method. Note that enabling this option will significantly increase -# the time of a run. So in most cases it will be better to enable caller -# graphs for selected functions only using the \callergraph command. - CALLER_GRAPH = NO - -# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen -# will generate a graphical hierarchy of all classes instead of a textual one. - GRAPHICAL_HIERARCHY = YES - -# If the DIRECTORY_GRAPH and HAVE_DOT tags are set to YES -# then doxygen will show the dependencies a directory has on other directories -# in a graphical way. The dependency relations are determined by the #include -# relations between the files in the directories. - DIRECTORY_GRAPH = YES - -# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images -# generated by dot. Possible values are svg, png, jpg, or gif. -# If left blank png will be used. If you choose svg you need to set -# HTML_FILE_EXTENSION to xhtml in order to make the SVG files -# visible in IE 9+ (other browsers do not have this requirement). - DOT_IMAGE_FORMAT = png - -# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to -# enable generation of interactive SVG images that allow zooming and panning. -# Note that this requires a modern browser other than Internet Explorer. -# Tested and working are Firefox, Chrome, Safari, and Opera. For IE 9+ you -# need to set HTML_FILE_EXTENSION to xhtml in order to make the SVG files -# visible. Older versions of IE do not have SVG support. - INTERACTIVE_SVG = NO - -# The tag DOT_PATH can be used to specify the path where the dot tool can be -# found. If left blank, it is assumed the dot tool can be found in the path. - DOT_PATH = - -# The DOTFILE_DIRS tag can be used to specify one or more directories that -# contain dot files that are included in the documentation (see the -# \dotfile command). - DOTFILE_DIRS = - -# The MSCFILE_DIRS tag can be used to specify one or more directories that -# contain msc files that are included in the documentation (see the -# \mscfile command). - MSCFILE_DIRS = - -# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of -# nodes that will be shown in the graph. If the number of nodes in a graph -# becomes larger than this value, doxygen will truncate the graph, which is -# visualized by representing a node as a red box. Note that doxygen if the -# number of direct children of the root node in a graph is already larger than -# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note -# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. - +DIAFILE_DIRS = +PLANTUML_JAR_PATH = +PLANTUML_INCLUDE_PATH = DOT_GRAPH_MAX_NODES = 50 - -# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the -# graphs generated by dot. A depth value of 3 means that only nodes reachable -# from the root by following a path via at most 3 edges will be shown. Nodes -# that lay further from the root node will be omitted. Note that setting this -# option to 1 or 2 may greatly reduce the computation time needed for large -# code bases. Also note that the size of a graph can be further restricted by -# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. - MAX_DOT_GRAPH_DEPTH = 0 - -# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent -# background. This is disabled by default, because dot on Windows does not -# seem to support this out of the box. Warning: Depending on the platform used, -# enabling this option may lead to badly anti-aliased labels on the edges of -# a graph (i.e. they become hard to read). - DOT_TRANSPARENT = NO - -# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output -# files in one run (i.e. multiple -o and -T options on the command line). This -# makes dot run faster, but since only newer versions of dot (>1.8.10) -# support this, this feature is disabled by default. - DOT_MULTI_TARGETS = NO - -# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will -# generate a legend page explaining the meaning of the various boxes and -# arrows in the dot generated graphs. - GENERATE_LEGEND = YES - -# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will -# remove the intermediate dot files that are used to generate -# the various graphs. - DOT_CLEANUP = YES -- cgit v1.2.3 From c38d29fd760a52958377a0664cbcdf74e9a12c84 Mon Sep 17 00:00:00 2001 From: Peter Powell <petpow@saberuk.com> Date: Thu, 26 Feb 2015 22:35:06 +0000 Subject: Fix various Doxygen warnings. --- .gitignore | 1 + README.md | 2 +- include/dns.h | 2 ++ 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 0b02b1292..f39aa4a55 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,7 @@ /BSDmakefile /GNUmakefile /build +/docs/doxygen /inspircd /org.inspircd.plist /run diff --git a/README.md b/README.md index 70171861c..f3b3c3c32 100644 --- a/README.md +++ b/README.md @@ -18,4 +18,4 @@ many different users. * [Website](http://inspircd.org) * [GitHub](https://github.com/inspircd) -* IRC: #inspircd on irc.inspircd.org \ No newline at end of file +* IRC: \#inspircd on irc.inspircd.org diff --git a/include/dns.h b/include/dns.h index 95abaaf80..de4bcf422 100644 --- a/include/dns.h +++ b/include/dns.h @@ -92,6 +92,7 @@ class CoreExport DNSResult * @param res The request result, a hostname or IP * @param timetolive The request time-to-live * @param orig The original request, a hostname or IP + * @param qt The type of DNS query this result represents. */ DNSResult(int i, const std::string &res, unsigned long timetolive, const std::string &orig, QueryType qt = DNS_QUERY_NONE) : id(i), result(res), ttl(timetolive), original(orig), type(qt) { } }; @@ -118,6 +119,7 @@ class CoreExport CachedQuery /** Build a cached query * @param res The result data, an IP or hostname + * @param qt The type of DNS query this instance represents. * @param ttl The time-to-live value of the query result */ CachedQuery(const std::string &res, QueryType qt, unsigned int ttl); -- cgit v1.2.3 From 8cae3800efbe87644145fc2fa71f547c4e296290 Mon Sep 17 00:00:00 2001 From: Peter Powell <petpow@saberuk.com> Date: Mon, 9 Mar 2015 15:26:40 +0000 Subject: Fix building when VERBOSE is already set in the environment. This is a workaround for now. In 2.2 we should prefix all of the environment variables with INSPIRCD_ to avoid collisions. --- make/template/main.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/make/template/main.mk b/make/template/main.mk index f88a80e3a..d5705d928 100644 --- a/make/template/main.mk +++ b/make/template/main.mk @@ -125,6 +125,7 @@ CXXFLAGS += -Iinclude @BSD_ONLY MAKE += -s RUNCC = perl $(SOURCEPATH)/make/run-cc.pl $(CC) RUNLD = perl $(SOURCEPATH)/make/run-cc.pl $(CC) + VERBOSE = @ENDIF @IFDEF PURE_STATIC -- cgit v1.2.3 From 7a0e881ffebf2a2dce8e08b8535b2870f675efba Mon Sep 17 00:00:00 2001 From: Renegade334 <contact.caaeed4f@renegade334.me.uk> Date: Mon, 16 Mar 2015 19:57:04 +0000 Subject: Remove non-existant extban M: from docs extban M: has not existed since 2d732f4d in 2009... --- docs/conf/helpop-full.conf.example | 6 ++---- docs/conf/helpop.conf.example | 6 ++---- docs/conf/modules.conf.example | 3 +-- 3 files changed, 5 insertions(+), 10 deletions(-) diff --git a/docs/conf/helpop-full.conf.example b/docs/conf/helpop-full.conf.example index f86eb2394..a3529b9dc 100644 --- a/docs/conf/helpop-full.conf.example +++ b/docs/conf/helpop-full.conf.example @@ -1058,8 +1058,6 @@ Acting extbans: matching users (requires blockcaps module). C:<banmask> Blocks CTCPs from matching users (requires noctcp module). - M:<account> Blocks messages from users logged into a matching - account (requires services account module). N:<banmask> Blocks nick changes from matching users (requires nonicks module). Q:<banmask> Blocks kicks by matching users (requires nokicks @@ -1072,8 +1070,8 @@ Acting extbans: (requires services account). A ban given to an Acting extban may either be a nick!user@host mask -(unless stated otherwise, for example M: taking an account name), -matched against users as for a normal ban, or a Matching extban. +(unless stated otherwise), matched against users as for a normal ban, +or a Matching extban. There is an additional special type of extended ban, a redirect ban: diff --git a/docs/conf/helpop.conf.example b/docs/conf/helpop.conf.example index 5b92faeda..32884ea16 100644 --- a/docs/conf/helpop.conf.example +++ b/docs/conf/helpop.conf.example @@ -300,8 +300,6 @@ Acting extbans: matching users (requires blockcaps module). C:<banmask> Blocks CTCPs from matching users (requires noctcp module). - M:<account> Blocks messages from users logged into a matching - account (requires services account module). N:<banmask> Blocks nick changes from matching users (requires nonicks module). Q:<banmask> Blocks kicks by matching users (requires nokicks @@ -314,8 +312,8 @@ Acting extbans: (requires services account). A ban given to an Acting extban may either be a nick!user@host mask -(unless stated otherwise, for example M: taking an account name), -matched against users as for a normal ban, or a Matching extban. +(unless stated otherwise), matched against users as for a normal ban, +or a Matching extban. There is an additional special type of extended ban, a redirect ban: diff --git a/docs/conf/modules.conf.example b/docs/conf/modules.conf.example index 70025260d..71a0fb079 100644 --- a/docs/conf/modules.conf.example +++ b/docs/conf/modules.conf.example @@ -1613,9 +1613,8 @@ # as identified separately from the idea of a master account, which # can be useful for services which are heavily nick-as-account centric. # -# Also of note is that this module implements three extbans: +# Also of note is that this module implements two extbans: # +b R: (stop matching account names from joining) -# +b M: (stop matching account names from speaking) # +b U:n!u@h (blocks matching unregistered users) # #<module name="m_services_account.so"> -- cgit v1.2.3 From 7f051bcc5198c2eb3fff1ca52888bd7c6ec19000 Mon Sep 17 00:00:00 2001 From: Adam <Adam@anope.org> Date: Tue, 3 Mar 2015 15:45:22 -0500 Subject: Rebuild clone counts on rehash --- include/usermanager.h | 4 ++++ src/configreader.cpp | 1 + src/usermanager.cpp | 16 ++++++++++++++++ 3 files changed, 21 insertions(+) diff --git a/include/usermanager.h b/include/usermanager.h index ac8ae1cb3..2a9d6b47b 100644 --- a/include/usermanager.h +++ b/include/usermanager.h @@ -112,6 +112,10 @@ class CoreExport UserManager */ void RemoveCloneCounts(User *user); + /** Rebuild clone counts + */ + void RehashCloneCounts(); + /** Return the number of global clones of this user * @param user The user to get a count for * @return The global clone count of this user diff --git a/src/configreader.cpp b/src/configreader.cpp index b3caf8c75..bcee938d5 100644 --- a/src/configreader.cpp +++ b/src/configreader.cpp @@ -963,6 +963,7 @@ void ConfigReaderThread::Finish() * XXX: The order of these is IMPORTANT, do not reorder them without testing * thoroughly!!! */ + ServerInstance->Users->RehashCloneCounts(); ServerInstance->XLines->CheckELines(); ServerInstance->XLines->ApplyLines(); ServerInstance->Res->Rehash(); diff --git a/src/usermanager.cpp b/src/usermanager.cpp index 1918b5c4c..76446c5b5 100644 --- a/src/usermanager.cpp +++ b/src/usermanager.cpp @@ -287,6 +287,22 @@ void UserManager::RemoveCloneCounts(User *user) } } +void UserManager::RehashCloneCounts() +{ + local_clones.clear(); + global_clones.clear(); + + const user_hash& hash = *ServerInstance->Users->clientlist; + for (user_hash::const_iterator i = hash.begin(); i != hash.end(); ++i) + { + User* u = i->second; + + if (IS_LOCAL(u)) + AddLocalClone(u); + AddGlobalClone(u); + } +} + unsigned long UserManager::GlobalCloneCount(User *user) { clonemap::iterator x = global_clones.find(user->GetCIDRMask()); -- cgit v1.2.3 From 8723866b4cdf100892677ab5c1619fcee9536d9b Mon Sep 17 00:00:00 2001 From: Attila Molnar <attilamolnar@hush.com> Date: Mon, 13 Apr 2015 15:40:26 +0200 Subject: m_timedbans Store Channel pointer in struct TimedBan --- src/modules/m_timedbans.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/modules/m_timedbans.cpp b/src/modules/m_timedbans.cpp index 497ac2569..f633bc3e2 100644 --- a/src/modules/m_timedbans.cpp +++ b/src/modules/m_timedbans.cpp @@ -32,6 +32,7 @@ class TimedBan std::string channel; std::string mask; time_t expire; + Channel* chan; }; typedef std::vector<TimedBan> timedbans; @@ -98,6 +99,7 @@ found: T.channel = channelname; T.mask = mask; T.expire = expire + (IS_REMOTE(user) ? 5 : 0); + T.chan = channel; TimedBanList.push_back(T); // If halfop is loaded, send notice to halfops and above, otherwise send to ops and above -- cgit v1.2.3 From 0243179509eb8a561b62c7845dc1322fcd94654a Mon Sep 17 00:00:00 2001 From: Attila Molnar <attilamolnar@hush.com> Date: Mon, 13 Apr 2015 15:42:06 +0200 Subject: m_timedbans On channel destruction remove all timed bans belonging to the channel from internal bookkeeping --- src/modules/m_timedbans.cpp | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/src/modules/m_timedbans.cpp b/src/modules/m_timedbans.cpp index f633bc3e2..ef1ae4c48 100644 --- a/src/modules/m_timedbans.cpp +++ b/src/modules/m_timedbans.cpp @@ -116,6 +116,22 @@ found: } }; +class ChannelMatcher +{ + Channel* const chan; + + public: + ChannelMatcher(Channel* ch) + : chan(ch) + { + } + + bool operator()(const TimedBan& tb) const + { + return (tb.chan == chan); + } +}; + class ModuleTimedBans : public Module { CommandTban cmd; @@ -128,7 +144,7 @@ class ModuleTimedBans : public Module void init() { ServerInstance->Modules->AddService(cmd); - Implementation eventlist[] = { I_OnDelBan, I_OnBackgroundTimer }; + Implementation eventlist[] = { I_OnDelBan, I_OnBackgroundTimer, I_OnChannelDelete }; ServerInstance->Modules->Attach(eventlist, this, sizeof(eventlist)/sizeof(Implementation)); } @@ -185,6 +201,12 @@ class ModuleTimedBans : public Module } } + void OnChannelDelete(Channel* chan) + { + // Remove all timed bans affecting the channel from internal bookkeeping + TimedBanList.erase(std::remove_if(TimedBanList.begin(), TimedBanList.end(), ChannelMatcher(chan)), TimedBanList.end()); + } + virtual Version GetVersion() { return Version("Adds timed bans", VF_COMMON | VF_VENDOR); -- cgit v1.2.3 From b7526f6efd47ed87dc67adfa70f09c9b83adf9a8 Mon Sep 17 00:00:00 2001 From: Attila Molnar <attilamolnar@hush.com> Date: Mon, 13 Apr 2015 15:48:00 +0200 Subject: m_timedbans Extract IsBanSet() to a function --- src/modules/m_timedbans.cpp | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/modules/m_timedbans.cpp b/src/modules/m_timedbans.cpp index ef1ae4c48..754b4c3a0 100644 --- a/src/modules/m_timedbans.cpp +++ b/src/modules/m_timedbans.cpp @@ -42,6 +42,16 @@ timedbans TimedBanList; */ class CommandTban : public Command { + static bool IsBanSet(Channel* chan, const std::string& mask) + { + for (BanList::const_iterator i = chan->bans.begin(); i != chan->bans.end(); ++i) + { + if (!strcasecmp(i->data.c_str(), mask.c_str())) + return true; + } + return false; + } + public: CommandTban(Module* Creator) : Command(Creator,"TBAN", 3) { @@ -90,11 +100,9 @@ class CommandTban : public Command // use CallHandler to make it so that the user sets the mode // themselves ServerInstance->Parser->CallHandler("MODE",setban,user); - for (BanList::iterator i = channel->bans.begin(); i != channel->bans.end(); i++) - if (!strcasecmp(i->data.c_str(), mask.c_str())) - goto found; - return CMD_FAILURE; -found: + if (!IsBanSet(channel, mask)) + return CMD_FAILURE; + CUList tmp; T.channel = channelname; T.mask = mask; -- cgit v1.2.3 From 4e24fb7c19cff866eda602349fbafce78b7e4c51 Mon Sep 17 00:00:00 2001 From: Attila Molnar <attilamolnar@hush.com> Date: Mon, 13 Apr 2015 15:49:29 +0200 Subject: m_timedbans Notice user when trying to set a ban that's already set --- src/modules/m_timedbans.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/modules/m_timedbans.cpp b/src/modules/m_timedbans.cpp index 754b4c3a0..b47327704 100644 --- a/src/modules/m_timedbans.cpp +++ b/src/modules/m_timedbans.cpp @@ -96,6 +96,13 @@ class CommandTban : public Command user->WriteServ("NOTICE "+user->nick+" :Invalid ban mask"); return CMD_FAILURE; } + + if (IsBanSet(channel, mask)) + { + user->WriteServ("NOTICE %s :Ban already set", user->nick.c_str()); + return CMD_FAILURE; + } + setban.push_back(mask); // use CallHandler to make it so that the user sets the mode // themselves -- cgit v1.2.3 From 6058483d9fbc1b904d5ae7cfea47bfcde5c5b559 Mon Sep 17 00:00:00 2001 From: Attila Molnar <attilamolnar@hush.com> Date: Thu, 16 Apr 2015 18:04:03 +0200 Subject: Reject replies to DNS PTR requests that contain invalid characters Fixes issue #1033 reported by @ping86 --- src/dns.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/dns.cpp b/src/dns.cpp index 75e5731fe..14305ccab 100644 --- a/src/dns.cpp +++ b/src/dns.cpp @@ -700,8 +700,16 @@ DNSResult DNS::GetResult() /* Identical handling to PTR */ case DNS_QUERY_PTR: + { /* Reverse lookups just come back as char* */ resultstr = std::string((const char*)data.first); + if (resultstr.find_first_not_of("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.-") != std::string::npos) + { + std::string ro = req->orig; + delete req; + return DNSResult(this_id | ERROR_MASK, "Invalid char(s) in reply", 0, ro); + } + } break; default: -- cgit v1.2.3 From a0c331eff30434dc648638990f16f546c9467c37 Mon Sep 17 00:00:00 2001 From: Attila Molnar <attilamolnar@hush.com> Date: Thu, 16 Apr 2015 21:13:07 +0200 Subject: m_sasl Add missing validation for server-to-server SASL message --- src/modules/m_sasl.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/modules/m_sasl.cpp b/src/modules/m_sasl.cpp index 66efcfe4e..b59fd3835 100644 --- a/src/modules/m_sasl.cpp +++ b/src/modules/m_sasl.cpp @@ -99,6 +99,9 @@ class SaslAuthenticator if (msg[0] != this->agent) return this->state; + if (msg.size() < 4) + return this->state; + if (msg[2] == "C") this->user->Write("AUTHENTICATE %s", msg[3].c_str()); else if (msg[2] == "D") -- cgit v1.2.3 From c490a9061f18eceb69eb4bb5ed9eb32fd90400fe Mon Sep 17 00:00:00 2001 From: Attila Molnar <attilamolnar@hush.com> Date: Thu, 16 Apr 2015 22:50:06 +0200 Subject: Revert c8b344ea748d62d9f37cacd4dd785f15b186725c to fix regression Fixes issue #989 reported by @B00mX0r --- src/xline.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/xline.cpp b/src/xline.cpp index b710c5c43..66d24f439 100644 --- a/src/xline.cpp +++ b/src/xline.cpp @@ -598,6 +598,9 @@ void GLine::Apply(User* u) bool ELine::Matches(User *u) { + if (u->exempt) + return false; + if (InspIRCd::Match(u->ident, this->identmask, ascii_case_insensitive_map)) { if (InspIRCd::MatchCIDR(u->host, this->hostmask, ascii_case_insensitive_map) || -- cgit v1.2.3 From 64faca29b377185c4615c8f2e4eecedc7ad045d1 Mon Sep 17 00:00:00 2001 From: Attila Molnar <attilamolnar@hush.com> Date: Thu, 16 Apr 2015 22:51:41 +0200 Subject: cmd_userhost Fix +H hidden opers being shown as opers --- src/commands/cmd_userhost.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/commands/cmd_userhost.cpp b/src/commands/cmd_userhost.cpp index 79685388f..7e1efd637 100644 --- a/src/commands/cmd_userhost.cpp +++ b/src/commands/cmd_userhost.cpp @@ -49,6 +49,8 @@ CmdResult CommandUserhost::Handle (const std::vector<std::string>& parameters, U unsigned int max = parameters.size(); if (max > 5) max = 5; + + bool has_privs = user->HasPrivPermission("users/auspex"); for (unsigned int i = 0; i < max; i++) { User *u = ServerInstance->FindNickOnly(parameters[i]); @@ -58,7 +60,12 @@ CmdResult CommandUserhost::Handle (const std::vector<std::string>& parameters, U retbuf = retbuf + u->nick; if (IS_OPER(u)) - retbuf = retbuf + "*"; + { + // XXX: +H hidden opers must not be shown as opers + ModeHandler* mh = ServerInstance->Modes->FindMode('H', MODETYPE_USER); + if ((u == user) || (has_privs) || (!mh) || (!u->IsModeSet('H')) || (mh->name != "hideoper")) + retbuf += '*'; + } retbuf = retbuf + "="; @@ -69,7 +76,7 @@ CmdResult CommandUserhost::Handle (const std::vector<std::string>& parameters, U retbuf = retbuf + u->ident + "@"; - if (user->HasPrivPermission("users/auspex")) + if (has_privs) { retbuf = retbuf + u->host; } -- cgit v1.2.3 From 9f69e159adcc0892f0bdef16ac4617630737b156 Mon Sep 17 00:00:00 2001 From: Attila Molnar <attilamolnar@hush.com> Date: Thu, 16 Apr 2015 23:00:56 +0200 Subject: m_dccallow Validate tokens before use --- src/modules/m_dccallow.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/modules/m_dccallow.cpp b/src/modules/m_dccallow.cpp index b42d12968..829c1d337 100644 --- a/src/modules/m_dccallow.cpp +++ b/src/modules/m_dccallow.cpp @@ -339,6 +339,9 @@ class ModuleDCCAllow : public Module while (ss >> buf) tokens.push_back(buf); + if (tokens.size() < 2) + return MOD_RES_PASSTHRU; + irc::string type = tokens[1].c_str(); ConfigTag* conftag = ServerInstance->Config->ConfValue("dccallow"); @@ -346,6 +349,9 @@ class ModuleDCCAllow : public Module if (type == "SEND") { + if (tokens.size() < 3) + return MOD_RES_PASSTHRU; + std::string defaultaction = conftag->getString("action"); std::string filename = tokens[2]; -- cgit v1.2.3 From b3c338c0948a2edec22d36a98d5962cbaae1619e Mon Sep 17 00:00:00 2001 From: Attila Molnar <attilamolnar@hush.com> Date: Thu, 16 Apr 2015 23:12:47 +0200 Subject: m_sasl Update description, SASL is no longer exclusive to Atheme --- src/modules/m_sasl.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/m_sasl.cpp b/src/modules/m_sasl.cpp index b59fd3835..32c9afc79 100644 --- a/src/modules/m_sasl.cpp +++ b/src/modules/m_sasl.cpp @@ -293,7 +293,7 @@ class ModuleSASL : public Module Version GetVersion() { - return Version("Provides support for IRC Authentication Layer (aka: atheme SASL) via AUTHENTICATE.",VF_VENDOR); + return Version("Provides support for IRC Authentication Layer (aka: SASL) via AUTHENTICATE.", VF_VENDOR); } void OnEvent(Event &ev) -- cgit v1.2.3 From 1548078e5dc304814669cd1ea052f92be9d1ac40 Mon Sep 17 00:00:00 2001 From: Attila Molnar <attilamolnar@hush.com> Date: Thu, 16 Apr 2015 23:17:02 +0200 Subject: Release v2.0.19 --- src/version.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/version.sh b/src/version.sh index 7c54efc71..01c651a29 100755 --- a/src/version.sh +++ b/src/version.sh @@ -1,2 +1,2 @@ #!/bin/sh -echo "InspIRCd-2.0.18" +echo "InspIRCd-2.0.19" -- cgit v1.2.3