+2005-04-15 Michael Poole <mdpoole@troilus.org>
+
+ * doc/example.conf (Operator): Properly qualify plaintext password.
+ (Quarantine): Document (new) syntax.
+
+ * ircd/ircd.c: Add <sys/time.h> to make <sys/resource.h> compile
+ correctly on BSDs.
+
+ * ircd/ircd_parser.y (qconf): Remove global variable.
+ (killuhost): Null terminate username when present.
+ (quarantineblock): Replace with a syntax that works.
+
+ * ircd/s_stats.c: #include <querycmds.h> for UserStats.
+ (stats_server_verbose): Reinstate check for UserStats.
+
2005-04-09 Kevin L. Mitchell <klmitch@mit.edu>
* ircd/ircd.c: conditionally include sys/resource.h; otherwise,
};
Operator {
host = "*@*.uu.net";
- password = "notencryptedpass";
+ password = "$PLAIN$notencryptedpass";
name = "Niels";
class = "Opers";
};
port = 7000;
};
+# Quarantine blocks disallow operators from using OPMODE and CLEARMODE
+# on certain channels. Opers with the force_opmode (for local
+# channels, force_local_opmode) privilege may override the quarantine
+# by prefixing the channel name with an exclamation point ('!').
+# Wildcards are NOT supported; the channel name must match exactly.
+Quarantine {
+ "#shells" = "Thou shalt not support the h4><0rz";
+ "&kiddies" = "They can take care of themselves";
+};
+
# This is a server-implemented alias to send a message to a service.
# The string after Pseudo is the command name; the name entry inside
# is the service name, used for error messages. More than one nick
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <sys/time.h>
#ifdef HAVE_SYS_RESOURCE_H
#include <sys/resource.h>
#endif
struct ConnectionClass *c_class;
struct DenyConf *dconf;
struct ServerConf *sconf;
- struct qline *qconf = NULL;
struct s_map *smap;
struct Privs privs;
struct Privs privs_dirty;
else
{
u = $3;
- h++;
+ *h++ = '\0';
}
DupString(dconf->hostmask, h);
DupString(dconf->usermask, u);
stringlist[stringno++] = $1;
};
-quarantineblock: QUARANTINE '{'
+quarantineblock: QUARANTINE '{' quarantineitems '}' ';';
+quarantineitems: quarantineitems quarantineitem | quarantineitem;
+quarantineitem: QSTRING '=' QSTRING ';'
{
- qconf = (struct qline*) MyCalloc(1, sizeof(*qconf));
-} quarantineitems '}' ';'
-{
- if (qconf->chname == NULL || qconf->reason == NULL)
- {
- parse_error("quarantine blocks need a channel name and a reason.");
- return 0;
- }
+ struct qline *qconf = MyCalloc(1, sizeof(*qconf));
+ DupString(qconf->chname, $1);
+ DupString(qconf->reason, $3);
qconf->next = GlobalQuarantineList;
GlobalQuarantineList = qconf;
- qconf = NULL;
-};
-
-quarantineitems: CHANNEL NAME '=' QSTRING ';'
-{
- DupString(qconf->chname, $4);
-} | REASON '=' QSTRING ';'
-{
- DupString(qconf->reason, $3);
};
pseudoblock: PSEUDO QSTRING '{'
#include "msgq.h"
#include "numeric.h"
#include "numnicks.h"
+#include "querycmds.h"
#include "res.h"
#include "s_bsd.h"
#include "s_conf.h"
cli_serv(acptr)->asll_rtt,
cli_serv(acptr)->asll_to,
cli_serv(acptr)->asll_from,
- cli_serv(acptr)->clients,
+ (acptr == &me ? UserStats.local_clients : cli_serv(acptr)->clients),
cli_serv(acptr)->nn_mask,
cli_serv(acptr)->prot,
cli_serv(acptr)->timestamp,