summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNaram Qashat cyberbotx@cyberbotx.com <Naram Qashat cyberbotx@cyberbotx.com@5417fbe8-f217-4b02-8779-1006273d7864>2008-10-26 19:54:38 +0000
committerNaram Qashat cyberbotx@cyberbotx.com <Naram Qashat cyberbotx@cyberbotx.com@5417fbe8-f217-4b02-8779-1006273d7864>2008-10-26 19:54:38 +0000
commit314dbcd67e7c3f333abb7a4522e0adab6ed2b47f (patch)
tree0fdffd836ff04eff9c288717d7ec962d3c16b15d
parent66ea87314c514d7aeb650c763762d7a4132d9a28 (diff)
Added limitsessions directive to operserv block in new config.
git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@1481 5417fbe8-f217-4b02-8779-1006273d7864
-rw-r--r--data/example_new.conf15
-rw-r--r--include/extern.h2
-rw-r--r--src/config.c4
3 files changed, 18 insertions, 3 deletions
diff --git a/data/example_new.conf b/data/example_new.conf
index 7a90aa8ed..d9a0cd52e 100644
--- a/data/example_new.conf
+++ b/data/example_new.conf
@@ -785,4 +785,19 @@ operserv
* This directive is optional, if left blank, there will be no notifications.
*/
notifications="osglobal osmode osclearmodes oskick osakill ossgline ossqline osszline osnoop osjupe osraw getpass setpass forbid drop"
+
+ /*
+ * Enables session limiting. Session limiting prevents users from connecting more than a certain
+ * number of times from the same host at the same time - thus preventing most types of cloning.
+ * Once a host reaches it's session limit, all clients attempting to connect from that host will
+ * be killed. Exceptions to the default session limit can be defined via the exception list. It
+ * should be noted that session limiting, along with a large exception list, can degrade Services'
+ * performance.
+ *
+ * See the source and comments in sessions.c and the online help for more information about
+ * session limiting.
+ *
+ * This directive is optional.
+ */
+ limitsessions = yes
}
diff --git a/include/extern.h b/include/extern.h
index 43ae78e5e..2d6de6613 100644
--- a/include/extern.h
+++ b/include/extern.h
@@ -442,7 +442,7 @@ E int NickServCoreNumber;
E char **ChanServCoreModules;
E int ChanServCoreNumber;
-E int LimitSessions;
+E bool LimitSessions;
E int DefSessionLimit;
E int ExceptionExpiry;
E int MaxSessionKill;
diff --git a/src/config.c b/src/config.c
index 888cc12dc..423d504ab 100644
--- a/src/config.c
+++ b/src/config.c
@@ -217,7 +217,7 @@ bool WallGetpass;
bool WallSetpass;
int AddAkiller;
-int LimitSessions;
+bool LimitSessions;
int DefSessionLimit;
int ExceptionExpiry;
int MaxSessionKill;
@@ -658,6 +658,7 @@ int ServerConfig::Read(bool bail)
{"operserv", "killonsqline", "no", new ValueContainerBool(&KillonSQline), DT_BOOLEAN, NoValidation},
{"operserv", "disableraw", "no", new ValueContainerBool(&DisableRaw), DT_BOOLEAN, NoValidation},
{"operserv", "notifications", "", new ValueContainerString(&OSNotifications), DT_STRING, NoValidation},
+ {"operserv", "limitsessions", "no", new ValueContainerBool(&LimitSessions), DT_BOOLEAN, NoValidation},
{NULL, NULL, NULL, NULL, DT_NOTHING, NoValidation}
};
/* These tags can occur multiple times, and therefore they have special code to read them
@@ -1265,7 +1266,6 @@ Directive directives[] = {
{"KeepBackups", {{PARAM_INT, PARAM_RELOAD, &KeepBackups}}},
{"KeepLogs", {{PARAM_INT, PARAM_RELOAD, &KeepLogs}}},
{"AddAkiller", {{PARAM_SET, PARAM_RELOAD, &AddAkiller}}},
- {"LimitSessions", {{PARAM_SET, 0, &LimitSessions}}},
{"LocalAddress", {{PARAM_STRING, 0, &LocalHost},
{PARAM_PORT, PARAM_OPTIONAL, &LocalPort}}},
{"LogUsers", {{PARAM_SET, PARAM_RELOAD, &LogUsers}}},