diff --git a/.hgtags b/.hgtags
index ce887118..85d2c4dd 100644
--- a/.hgtags
+++ b/.hgtags
@@ -1 +1,2 @@
47f12ac9988a5face261827531851051af48968f charybdis-3.0.0-beta1
+7aef7b002131a0e536913663dd814c0b28bbfc33 charybdis-3.0.0-rc1
diff --git a/TODO b/TODO
index 1d31c8b6..73b0614b 100644
--- a/TODO
+++ b/TODO
@@ -40,8 +40,5 @@
[?] somehow hide channel operators like ircnet can do?
[x] merge m_join.c and m_sjoin.c in one module (same functions, done in ratbox3)
[x] create chmode.h and put there all declarations of chm_* - this will make some modules clean
-[F] Move most use of server WALLOPS to a global mechanism.
- [F] Add SNONOTICE protocol command (like in InspIRCd) to broadcast to a specific SNOMASK.
- (Using ENCAP?)
- [F] Adopt commands to this framework.
+[?] Move oper override server WALLOPS to global server notices?
diff --git a/doc/sgml/oper-guide/commands.sgml b/doc/sgml/oper-guide/commands.sgml
index e26edf7c..eabf734d 100644
--- a/doc/sgml/oper-guide/commands.sgml
+++ b/doc/sgml/oper-guide/commands.sgml
@@ -631,6 +631,27 @@
no target is specified.
+
+ PRIVS
+
+ PRIVS
+ nick
+
+
+ Displays effective operator privileges for
+ the specified nick, or for yourself if no nick is
+ given. This includes all privileges from the operator
+ block, the name of the operator block and those
+ privileges from the auth block that have an effect
+ after the initial connection.
+
+
+ The exact output depends on the server the nick is on,
+ see the matching version of this document.
+ If the remote server does not support this extension, you will not
+ receive a reply.
+
+
MASKTRACE
diff --git a/doc/sgml/oper-guide/oprivs.sgml b/doc/sgml/oper-guide/oprivs.sgml
index 7a7654be..fb5213e4 100644
--- a/doc/sgml/oper-guide/oprivs.sgml
+++ b/doc/sgml/oper-guide/oprivs.sgml
@@ -18,9 +18,9 @@
remoteban (B), set remote bans
- This grants the ability to use the ON argument on KLINE/XLINE/RESV
- and UNKLINE/UNXLINE/UNRESV to set and unset bans on other servers,
- and the server argument on REHASH.
+ This grants the ability to use the ON argument on
+ DLINE/KLINE/XLINE/RESV and UNDLINE/UNKLINE/UNXLINE/UNRESV to set
+ and unset bans on other servers, and the server argument on REHASH.
This is only allowed if the oper may perform the action locally,
and if the remote server has a shared{} block.
@@ -133,7 +133,7 @@
- unkline (U), unkline
+ unkline (U), unkline and undline
Allows using UNKLINE and UNDLINE.
diff --git a/help/opers/privs b/help/opers/privs
index ecb09ea3..1bf575e4 100644
--- a/help/opers/privs
+++ b/help/opers/privs
@@ -7,5 +7,6 @@ block, the name of the operator block and those
privileges from the auth block that have an effect
after the initial connection.
-If the server the nick is on does not support this
-extension, you will not receive a reply.
+The exact format depends on the server the nick is on;
+if it does not support this extension, you will not
+receive a reply.
diff --git a/modules/m_dline.c b/modules/m_dline.c
index f7f0945e..ef7c1cdc 100644
--- a/modules/m_dline.c
+++ b/modules/m_dline.c
@@ -100,6 +100,13 @@ mo_dline(struct Client *client_p, struct Client *source_p,
if(parc >= loc+2 && !irccmp(parv[loc], "ON"))
{
+ if(!IsOperRemoteBan(source_p))
+ {
+ sendto_one(source_p, form_str(ERR_NOPRIVS),
+ me.name, source_p->name, "remoteban");
+ return 0;
+ }
+
target_server = parv[loc+1];
loc += 2;
}
@@ -145,6 +152,13 @@ mo_undline(struct Client *client_p, struct Client *source_p, int parc, const cha
if(parc >= 4 && !irccmp(parv[2], "ON"))
{
+ if(!IsOperRemoteBan(source_p))
+ {
+ sendto_one(source_p, form_str(ERR_NOPRIVS),
+ me.name, source_p->name, "remoteban");
+ return 0;
+ }
+
target_server = parv[3];
sendto_match_servs(source_p, target_server,
CAP_ENCAP, NOCAPS,
diff --git a/scripts/application.sh b/scripts/application.sh
new file mode 100755
index 00000000..f3da0b7d
--- /dev/null
+++ b/scripts/application.sh
@@ -0,0 +1,33 @@
+#!/bin/sh
+# application.sh: Special package building rules for charybdis.
+#
+# Copyright (c) 2007-2008 atheme.org
+#
+# Permission to use, copy, modify, and/or distribute this software for
+# any purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+# ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+if [ "x$TIP" = "x" ]; then
+ echo "Please don't run me directly."
+ exit
+fi
+
+# Charybdis wants the hg tip to be in include/serno.h, in its own format.
+MYTIP=`hg parents --template '#date|shortdate#_#node|short#' 2>/dev/null | sed -e s/-//g -e s/_/-/`
+echo "[atheme-services] Generating include/serno.h for tip $MYTIP."
+cat << _EOF_ > include/serno.h
+/* Generated automatically by makepackage. Any changes made here will be lost. */
+#define SERNO "$MYTIP"
+_EOF_
diff --git a/scripts/makerelease.sh b/scripts/makerelease.sh
new file mode 100755
index 00000000..716b57d6
--- /dev/null
+++ b/scripts/makerelease.sh
@@ -0,0 +1,100 @@
+#!/bin/sh
+# mkrelease.sh: Creates a release suitable for distfiles.atheme.org.
+#
+# Copyright (c) 2007 atheme.org
+#
+# Permission to use, copy, modify, and/or distribute this software for
+# any purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+# ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+if [ "x$1" = "x" ]; then
+ echo "usage: $0 releasename [--automatic]"
+ exit
+else
+ RELEASENAME="$1"
+fi
+
+if [ "x$2" = "x--automatic" ]; then
+ AUTOMATIC="yes"
+fi
+
+TIP=`hg tip --template "#rev#:#node|short#"`
+
+WRKDIR=`pwd`
+
+if [ -d $RELEASENAME ]; then
+ echo "Deleting previous release named $RELEASENAME."
+ rm -rf $WRKDIR/$RELEASENAME/
+fi
+
+echo "Making release named $RELEASENAME (tip $TIP)"
+
+echo
+echo "Building root: $RELEASENAME/"
+hg archive $RELEASENAME
+cd $RELEASENAME
+sh autogen.sh
+rm -rf autogen.sh autom4te.cache
+
+# Run application specific instructions here.
+if [ -x "$WRKDIR/application.sh" ]; then
+ . $WRKDIR/application.sh
+fi
+
+cd ..
+
+echo "Building $RELEASENAME.tgz from $RELEASENAME/"
+tar zcf $RELEASENAME.tgz $RELEASENAME/
+
+echo "Building $RELEASENAME.tbz2 from $RELEASENAME/"
+tar jcf $RELEASENAME.tbz2 $RELEASENAME/
+
+PUBLISH="yes"
+
+ok="0"
+if [ "x$AUTOMATIC" != "xyes" ]; then
+ echo
+ echo "Would you like to publish these releases now?"
+ while [ $ok -eq 0 ]; do
+ echo -n "[$PUBLISH] "
+
+ read INPUT
+ case $INPUT in
+ [Yy]*)
+ PUBLISH="yes"
+ ok=1
+ ;;
+ [Nn]*)
+ PUBLISH="no"
+ ok=1
+ ;;
+ esac
+ done
+fi
+
+if [ "x$PUBLISH" = "xyes" ]; then
+ scp $RELEASENAME.tgz distfiles-master.atheme.org:/srv/distfiles
+ scp $RELEASENAME.tbz2 distfiles-master.atheme.org:/srv/distfiles
+
+ echo
+ echo "The releases have been published, and will be available to the entire"
+ echo "distribution network within 15 minutes."
+fi
+
+echo
+echo "Done. If you have any bugs to report, report them against"
+echo "the distfiles.atheme.org component at http://bugzilla.atheme.org"
+echo "Thanks!"
+echo