x2serv-cvs Mailing List for X2 IRC Channel and Oper Services (Page 5)
Brought to you by:
sirvulcan
You can subscribe to this list here.
2001 |
Jan
(33) |
Feb
(14) |
Mar
(26) |
Apr
(19) |
May
(28) |
Jun
(5) |
Jul
(6) |
Aug
(5) |
Sep
(6) |
Oct
(1) |
Nov
(21) |
Dec
(3) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2002 |
Jan
(3) |
Feb
(14) |
Mar
|
Apr
(2) |
May
(1) |
Jun
(1) |
Jul
|
Aug
|
Sep
(2) |
Oct
|
Nov
|
Dec
|
2003 |
Jan
(1) |
Feb
(4) |
Mar
|
Apr
|
May
(4) |
Jun
(6) |
Jul
|
Aug
|
Sep
|
Oct
(7) |
Nov
|
Dec
|
2004 |
Jan
|
Feb
|
Mar
(7) |
Apr
|
May
|
Jun
(19) |
Jul
(5) |
Aug
(16) |
Sep
(4) |
Oct
(10) |
Nov
(7) |
Dec
(6) |
2005 |
Jan
(4) |
Feb
(5) |
Mar
(24) |
Apr
(6) |
May
(17) |
Jun
(11) |
Jul
(2) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Alex S. <ru...@us...> - 2004-08-25 02:15:34
|
Committer : Alex Schumann <ru...@us...> CVSROOT : /cvsroot/x2serv Module : srvx2 Commit time: 2004-08-25 02:15:25 UTC Modified files: src/chanserv.c Log message: Author: Log message: Cleaning up after reed ---------------------- diff included ---------------------- Index: srvx2/src/chanserv.c diff -u srvx2/src/chanserv.c:1.9 srvx2/src/chanserv.c:1.10 --- srvx2/src/chanserv.c:1.9 Tue Aug 24 17:32:01 2004 +++ srvx2/src/chanserv.c Tue Aug 24 19:15:14 2004 @@ -2824,11 +2824,13 @@ return 0; } +#ifdef entropy_lameness if((victimCount > 4) && ((victimCount * 3) > channel->members.used) && !IsOper(user)) { reply("CSMSG_LAME_MASK", argv[1]); return 0; } +#endif if((action == ACTION_KICK) && (victimCount == 0)) { ----------------------- End of diff ----------------------- |
From: Reed L. <r3...@us...> - 2004-08-25 00:32:41
|
Committer : Reed Loden <r3...@us...> CVSROOT : /cvsroot/x2serv Module : srvx2 Commit time: 2004-08-25 00:32:13 UTC Modified files: ChangeLog INSTALL Makefile.am config.guess config.sub srvx.conf.example languages/de/strings.db src/chanserv.c src/chanserv.h src/global.c src/hash.c src/hash.h src/helpfile.c src/helpfile.h src/mod-helpserv.c src/mod-snoop.c src/modcmd.c src/nickserv.c src/nickserv.h src/opserv.c src/proto-bahamut.c src/proto-common.c src/proto-p10.c src/proto.h src/tools.c Added files: stamp-h2.in src/stamp-h.in src/stamp-h1.in tests/coverage-2.cmd tests/coverage.txt tests/srvx.conf Removed files: rx/README Log message: Synchronization with srvx--devo--1.3--patch-70. ---------------------- diff included ---------------------- Index: srvx2/ChangeLog diff -u srvx2/ChangeLog:1.1.1.1 srvx2/ChangeLog:1.2 --- srvx2/ChangeLog:1.1.1.1 Thu Jun 3 10:13:58 2004 +++ srvx2/ChangeLog Tue Aug 24 17:32:00 2004 @@ -2,6 +2,231 @@ # arch-tag: aut...@sr...--2004-srvx/srvx--devo--1.3 # +2004-08-12 16:06:55 GMT Zoot <zo...@ga...> patch-77 + + Summary: + More title host checking + Revision: + srvx--devo--1.3--patch-77 + + * src/nickserv.c: Make oset title verify that the final combined fakehost + will not be truncated before storing the title. Also, supply a missing + format string argument. + + modified files: + ChangeLog src/nickserv.c + + +2004-08-08 17:42:01 GMT Zoot <zo...@ga...> patch-76 + + Summary: + Fix format string bug + Revision: + srvx--devo--1.3--patch-76 + + * src/chanserv.c: Fix a format string bug in the myaccess command. + + modified files: + ChangeLog src/chanserv.c + + +2004-08-02 12:54:13 GMT Michael Poole <md...@tr...> patch-75 + + Summary: + Assorted bug fixes + Revision: + srvx--devo--1.3--patch-75 + + * Add missing semicolon in German translation of CSMSG_TRANSFER_WAIT. + + * Fix pointer used in !trim max_access calculation. + + * Default to maximum line length for all "single-line" messages. + + * Return success from NickServ ounregister so it is logged properly. + + modified files: + ChangeLog languages/de/strings.db src/chanserv.c + src/helpfile.c src/nickserv.c + + +2004-07-22 04:03:22 GMT Michael Poole <md...@tr...> patch-74 + + Summary: + Channel suspension, transfer and line wrap changes + Revision: + srvx--devo--1.3--patch-74 + + * Treat half-unsuspended channels as unsuspended, to avoid crashes + caused by sysadmins editing chanserv.db in screwy ways. + + * Add a srvx.conf option to limit how often channel owners can give + away channel ownership. + + * Limit most output line expansions to just one line. + + * Remove unnecessary assert(hs_user) checks from mod-helpserv.c. + + * Don't run_empty_interval() in HelpServ when the user's server is + still bursting. + + modified files: + ChangeLog languages/de/strings.db src/chanserv.c + src/chanserv.h src/helpfile.c src/helpfile.h + src/mod-helpserv.c srvx.conf.example + + +2004-07-19 03:38:09 GMT Michael Poole <md...@tr...> patch-73 + + Summary: + Bugfixes for !trim users, !unsuspend and /clearmodes + Revision: + srvx--devo--1.3--patch-73 + + * Show actual upper bound used to trim users. + + * Update whether an user being unsuspended is in the channel. + + * Add a missing "break;" so that /clearmodes c doesn't clear NOCTCPS too. + + modified files: + ChangeLog src/chanserv.c src/proto-p10.c + + +2004-07-12 19:06:38 GMT Michael Poole <md...@tr...> patch-72 + + Summary: + add FAQ to distribition; make compatible with gcc-2.95 + Revision: + srvx--devo--1.3--patch-72 + + * Add FAQ to EXTRA_DIST in root. + + * Name the anonymous union inside struct mod_chanmode. + + * Typecast printf() field width arguments to int. + + modified files: + ChangeLog Makefile.am src/chanserv.c src/hash.c + src/mod-helpserv.c src/mod-snoop.c src/opserv.c + src/proto-bahamut.c src/proto-common.c src/proto-p10.c + src/proto.h + + +2004-07-10 04:42:12 GMT Zoot <zo...@ga...> patch-71 + + Summary: + Fix OperServ inviteme crash + Revision: + srvx--devo--1.3--patch-71 + + * src/opserv.c: Fix a NULL pointer dereference in inviteme that caused crashes + for some users. + + modified files: + ChangeLog src/opserv.c + + +2004-07-01 02:23:21 GMT Michael Poole <md...@tr...> patch-70 + + Summary: + miscellaneous bugfixes and indentation fixes + Revision: + srvx--devo--1.3--patch-70 + + * srvx.conf.example: Clarify comment about "default_hostmask" setting. + + * patches/sethost13.diff: Forward port of sethost patch, from Reed Loden. + + * src/opserv.c (cmd_kickbanall): Free mod_chanmode_change after use. + + * src/proto-p10.c (cmd_whois): Fix indentation and show real server to opers. + + * src/tools.c (string_buffer_append_vprintf): Avoid a possible buffer overrun. + + new files: + patches/.arch-ids/sethost13.diff.id patches/sethost13.diff + + modified files: + ChangeLog INSTALL Makefile.am NEWS README compile configure.in + depcomp docs/access-levels.txt docs/coding-style.txt + docs/cookies.txt docs/helpserv.txt docs/ircd-modes.txt + docs/malloc-compare.txt languages/.arch-inventory + languages/de/README languages/de/chanserv.help + languages/de/global.help languages/de/modcmd.help + languages/de/nickserv.help languages/de/strings.db + languages/en/README languages/en_UK/README + languages/en_UK/chanserv.help languages/en_UK/opserv.help + languages/en_UK/strings.db languages/validate.pl + patches/helpserv-pgsql.diff sockcheck.conf.example + src/Makefile.am src/chanserv.c src/chanserv.h + src/chanserv.help src/common.h src/conf.c src/conf.h + src/dict-splay.c src/gline.c src/gline.h src/global.c + src/global.h src/global.help src/hash.c src/hash.h src/heap.c + src/heap.h src/helpfile.c src/helpfile.h src/ioset.c + src/ioset.h src/log.h src/main.c src/mod-helpserv.c + src/mod-memoserv.c src/mod-snoop.c src/modcmd.c src/modcmd.h + src/modules.c src/modules.h src/nickserv.c src/nickserv.h + src/nickserv.help src/opserv.c src/opserv.h src/opserv.help + src/policer.c src/policer.h src/proto-bahamut.c + src/proto-common.c src/proto-p10.c src/proto.h src/recdb.c + src/recdb.h src/saxdb.c src/saxdb.h src/saxdb.help + src/sendmail.c src/sendmail.h src/timeq.c src/timeq.h + src/tools.c srvx.conf.example tests/nickserv.cmd tests/p10.cmd + tests/test-driver.pl tests/test.cmd + {arch}/srvx/srvx--devo/srvx--devo--1.3/sr...@sr...--2004-srvx/patch-log/patch-10 + {arch}/srvx/srvx--devo/srvx--devo--1.3/sr...@sr...--2004-srvx/patch-log/patch-14 + {arch}/srvx/srvx--devo/srvx--devo--1.3/sr...@sr...--2004-srvx/patch-log/patch-18 + {arch}/srvx/srvx--devo/srvx--devo--1.3/sr...@sr...--2004-srvx/patch-log/patch-34 + {arch}/srvx/srvx--devo/srvx--devo--1.3/sr...@sr...--2004-srvx/patch-log/patch-43 + {arch}/srvx/srvx--devo/srvx--devo--1.3/sr...@sr...--2004-srvx/patch-log/patch-46 + {arch}/srvx/srvx--devo/srvx--devo--1.3/sr...@sr...--2004-srvx/patch-log/patch-57 + {arch}/srvx/srvx--devo/srvx--devo--1.3/sr...@sr...--2004-srvx/patch-log/patch-58 + {arch}/srvx/srvx--devo/srvx--devo--1.3/sr...@sr...--2004-srvx/patch-log/patch-61 + {arch}/srvx/srvx--devo/srvx--devo--1.3/sr...@sr...--2004-srvx/patch-log/patch-62 + {arch}/srvx/srvx--devo/srvx--devo--1.3/sr...@sr...--2004-srvx/patch-log/patch-63 + {arch}/srvx/srvx--devo/srvx--devo--1.3/sr...@sr...--2004-srvx/patch-log/patch-68 + {arch}/srvx/srvx--devo/srvx--devo--1.3/sr...@sr...--2004-srvx/patch-log/patch-69 + + modified directories: + languages/en_UK + + +2004-06-16 12:23:32 GMT adam <ad...@ga...> patch-69 + + Summary: + added modes parameter to srvx.conf to control user modes + Revision: + srvx--devo--1.3--patch-69 + + * each service now has a 'modes' parameter in srvx.conf to specify their individual modes.. if left blank, will default to whatever 'services' modes work for your ircd. + + + modified files: + ChangeLog src/chanserv.c src/global.c src/mod-helpserv.c + src/modcmd.c src/nickserv.c src/opserv.c src/proto-bahamut.c + src/proto-p10.c src/proto.h srvx.conf.example + + +2004-06-08 09:24:49 GMT adam <ad...@ga...> patch-68 + + Summary: + fixed MODE_REGISTERED bug; introduced MCP_REGISTERED + Revision: + srvx--devo--1.3--patch-68 + + * fixed MODE_REGISTERED bug: srvx was sending a blank mode change on channel unregistrations; we now have a srvx.conf setting that dictates whether or not to use MODE_REGISTERED (which has no corresponding letter on P10 networks!) - also, we now set MODE_REGISTERED in newly registered channels (which we werent before) + + * introduced MCP_REGISTERED: we now don't let channels that are registered play with the registered mode (usually +r on bahamut networks) via chanserv user-level commands (ie: !mode -r) + + + + + modified files: + ChangeLog src/chanserv.c src/proto-bahamut.c src/proto.h + srvx.conf.example + + 2004-05-22 04:24:57 GMT Michael Poole <md...@tr...> patch-67 Summary: Index: srvx2/INSTALL diff -u srvx2/INSTALL:1.2 srvx2/INSTALL:1.3 --- srvx2/INSTALL:1.2 Wed Jun 23 16:46:28 2004 +++ srvx2/INSTALL Tue Aug 24 17:32:01 2004 @@ -51,13 +51,12 @@ Quick Install: ---------- -$ ./autogen.sh -$ ./configure --prefix='/path/to/install/to' +$ ./configure NOTE: The protocol the resulting srvx binary will support is determined by the configure script. The P10 protocol is the default; if you would like to link to Bahamut, you must pass the --with-protocol=bahamut flag to the configure script: - $ ./configure --with-protocol=bahamut --prefix='/path/to/install/to' + $ ./configure --with-protocol=bahamut $ make $ ${EDITOR} srvx.conf NOTE: You may want to copy srvx.conf.example to srvx.conf and Index: srvx2/Makefile.am diff -u srvx2/Makefile.am:1.1.1.1 srvx2/Makefile.am:1.2 --- srvx2/Makefile.am:1.1.1.1 Thu Jun 3 10:13:58 2004 +++ srvx2/Makefile.am Tue Aug 24 17:32:01 2004 @@ -1,4 +1,4 @@ -EXTRA_DIST = srvx.conf.example sockcheck.conf.example +EXTRA_DIST = FAQ srvx.conf.example sockcheck.conf.example SUBDIRS = @MY_SUBDIRS@ DIST_SUBDIRS = src rx Index: srvx2/config.guess diff -u srvx2/config.guess:1.1.1.1 srvx2/config.guess:1.2 --- srvx2/config.guess:1.1.1.1 Thu Jun 3 10:13:58 2004 +++ srvx2/config.guess Tue Aug 24 17:32:01 2004 @@ -1,9 +1,9 @@ #! /bin/sh # Attempt to guess a canonical system name. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000 -# Free Software Foundation, Inc. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003 Free Software Foundation, Inc. -timestamp='2000-12-21' +timestamp='2004-06-11' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -24,8 +24,9 @@ # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. -# Written by Per Bothner <bo...@cy...>. -# Please send patches to <con...@gn...>. +# Originally written by Per Bothner <pe...@bo...>. +# Please send patches to <con...@gn...>. Submit a context +# diff and a properly formatted ChangeLog entry. # # This script attempts to guess a canonical system name similar to # config.sub. If it succeeds, it prints the system name on stdout, and @@ -33,10 +34,6 @@ # # The plan is that this can be called by configure scripts if you # don't specify an explicit build system type. -# -# Only a few systems have been added to this list; please add others -# (but try to keep the structure clean). -# me=`echo "$0" | sed -e 's,.*/,,'` @@ -56,7 +53,7 @@ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright (C) 1992, 93, 94, 95, 96, 97, 98, 99, 2000 +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO @@ -91,33 +88,45 @@ exit 1 fi +trap 'exit 1' 1 2 15 -dummy=dummy-$$ -trap 'rm -f $dummy.c $dummy.o $dummy; exit 1' 1 2 15 +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. -# CC_FOR_BUILD -- compiler used by this script. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. +# Portable tmp directory creation inspired by the Autoconf team. + +set_cc_for_build=' +trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; +trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; +: ${TMPDIR=/tmp} ; + { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; +dummy=$tmp/dummy ; +tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in - ,,) echo "int dummy(){}" > $dummy.c - for c in cc gcc c89 ; do - ($c $dummy.c -c -o $dummy.o) >/dev/null 2>&1 - if test $? = 0 ; then - CC_FOR_BUILD="$c"; break - fi - done - rm -f $dummy.c $dummy.o + ,,) echo "int x;" > $dummy.c ; + for c in cc gcc c89 c99 ; do + if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; if test x"$CC_FOR_BUILD" = x ; then - CC_FOR_BUILD=no_compiler_found + CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; -esac +esac ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. -# (gh...@no... 8/24/94.) +# (gh...@no... 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi @@ -131,29 +140,31 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) - # Netbsd (nbsd) targets should (where applicable) match one or + # NetBSD (nbsd) targets should (where applicable) match one or # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. - # Determine the machine/vendor (is the vendor relevant). - case "${UNAME_MACHINE}" in - amiga) machine=m68k-unknown ;; - arm32) machine=arm-unknown ;; - atari*) machine=m68k-atari ;; - sun3*) machine=m68k-sun ;; - mac68k) machine=m68k-apple ;; - macppc) machine=powerpc-apple ;; - hp3[0-9][05]) machine=m68k-hp ;; - ibmrt|romp-ibm) machine=romp-ibm ;; - *) machine=${UNAME_MACHINE}-unknown ;; + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || echo unknown)` + case "${UNAME_MACHINE_ARCH}" in + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. - case "${UNAME_MACHINE}" in - i386|sparc|amiga|arm*|hp300|mvme68k|vax|atari|luna68k|mac68k|news68k|next68k|pc532|sun3*|x68k) + case "${UNAME_MACHINE_ARCH}" in + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep __ELF__ >/dev/null then @@ -169,70 +180,135 @@ ;; esac # The OS release - release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case "${UNAME_VERSION}" in + Debian*) + release='-gnu' + ;; + *) + release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + ;; + esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit 0 ;; + amd64:OpenBSD:*:*) + echo x86_64-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + amiga:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + arc:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + cats:OpenBSD:*:*) + echo arm-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + hp300:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + luna88k:OpenBSD:*:*) + echo m88k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mac68k:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + macppc:OpenBSD:*:*) + echo powerpc-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvme68k:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvme88k:OpenBSD:*:*) + echo m88k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvmeppc:OpenBSD:*:*) + echo powerpc-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + pmax:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + sgi:OpenBSD:*:*) + echo mipseb-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + sun3:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + wgrisc:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + *:OpenBSD:*:*) + echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + *:ekkoBSD:*:*) + echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} + exit 0 ;; + macppc:MirBSD:*:*) + echo powerppc-unknown-mirbsd${UNAME_RELEASE} + exit 0 ;; + *:MirBSD:*:*) + echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} + exit 0 ;; alpha:OSF1:*:*) - if test $UNAME_RELEASE = "V4.0"; then + case $UNAME_RELEASE in + *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` - fi + ;; + *5.*) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + ;; + esac + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case "$ALPHA_CPU_TYPE" in + "EV4 (21064)") + UNAME_MACHINE="alpha" ;; + "EV4.5 (21064)") + UNAME_MACHINE="alpha" ;; + "LCA4 (21066/21068)") + UNAME_MACHINE="alpha" ;; + "EV5 (21164)") + UNAME_MACHINE="alphaev5" ;; + "EV5.6 (21164A)") + UNAME_MACHINE="alphaev56" ;; + "EV5.6 (21164PC)") + UNAME_MACHINE="alphapca56" ;; + "EV5.7 (21164PC)") + UNAME_MACHINE="alphapca57" ;; + "EV6 (21264)") + UNAME_MACHINE="alphaev6" ;; + "EV6.7 (21264A)") + UNAME_MACHINE="alphaev67" ;; + "EV6.8CB (21264C)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8AL (21264B)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8CX (21264D)") + UNAME_MACHINE="alphaev68" ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE="alphaev69" ;; + "EV7 (21364)") + UNAME_MACHINE="alphaev7" ;; + "EV7.9 (21364A)") + UNAME_MACHINE="alphaev79" ;; + esac + # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. - cat <<EOF >$dummy.s - .data -\$Lformat: - .byte 37,100,45,37,120,10,0 # "%d-%x\n" - - .text - .globl main - .align 4 - .ent main -main: - .frame \$30,16,\$26,0 - ldgp \$29,0(\$27) - .prologue 1 - .long 0x47e03d80 # implver \$0 - lda \$2,-1 - .long 0x47e20c21 # amask \$2,\$1 - lda \$16,\$Lformat - mov \$0,\$17 - not \$1,\$18 - jsr \$26,printf - ldgp \$29,0(\$26) - mov 0,\$16 - jsr \$26,exit - .end main -EOF - $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null - if test "$?" = 0 ; then - case `./$dummy` in - 0-0) - UNAME_MACHINE="alpha" - ;; - 1-0) - UNAME_MACHINE="alphaev5" - ;; - 1-1) - UNAME_MACHINE="alphaev56" - ;; - 1-101) - UNAME_MACHINE="alphapca56" - ;; - 2-303) - UNAME_MACHINE="alphaev6" - ;; - 2-307) - UNAME_MACHINE="alphaev67" - ;; - esac - fi - rm -f $dummy.s $dummy - echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + exit 0 ;; + Alpha*:OpenVMS:*:*) + echo alpha-hp-vms exit 0 ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? @@ -246,37 +322,22 @@ Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit 0;; - amiga:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit 0 ;; - arc64:OpenBSD:*:*) - echo mips64el-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - arc:OpenBSD:*:*) - echo mipsel-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - hkmips:OpenBSD:*:*) - echo mips-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - pmax:OpenBSD:*:*) - echo mipsel-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - sgi:OpenBSD:*:*) - echo mips-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - wgrisc:OpenBSD:*:*) - echo mipsel-unknown-openbsd${UNAME_RELEASE} + *:[Mm]orph[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-morphos exit 0 ;; *:OS/390:*:*) echo i370-ibm-openedition exit 0 ;; + *:OS400:*:*) + echo powerpc-ibm-os400 + exit 0 ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit 0;; - SR2?01:HI-UX/MPP:*:*) + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit 0;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) @@ -290,6 +351,13 @@ NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit 0 ;; + DRS?6000:unix:4.0:6*) + echo sparc-icl-nx6 + exit 0 ;; + DRS?6000:UNIX_SV:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7 && exit 0 ;; + esac ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; @@ -318,7 +386,7 @@ echo m68k-sun-sunos${UNAME_RELEASE} exit 0 ;; sun*:*:4.2BSD:*) - UNAME_RELEASE=`(head -1 /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) @@ -332,9 +400,6 @@ aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit 0 ;; - atari*:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor @@ -361,17 +426,8 @@ *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit 0 ;; - sun3*:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mac68k:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mvme68k:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mvme88k:OpenBSD:*:*) - echo m88k-unknown-openbsd${UNAME_RELEASE} + m68k:machten:*:*) + echo m68k-apple-machten${UNAME_RELEASE} exit 0 ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} @@ -389,6 +445,7 @@ echo clipper-intergraph-clix${UNAME_RELEASE} exit 0 ;; mips:*:*:UMIPS | mips:*:*:RISCos) + eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include <stdio.h> /* for printf() prototype */ @@ -410,12 +467,20 @@ exit (-1); } EOF - $CC_FOR_BUILD $dummy.c -o $dummy \ - && ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ - && rm $dummy.c $dummy && exit 0 - rm -f $dummy.c $dummy + $CC_FOR_BUILD -o $dummy $dummy.c \ + && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ + && exit 0 echo mips-mips-riscos${UNAME_RELEASE} exit 0 ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit 0 ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit 0 ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit 0 ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit 0 ;; @@ -463,11 +528,20 @@ ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' - i?86:AIX:*:*) + i*86:AIX:*:*) echo i386-ibm-aix exit 0 ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} + exit 0 ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include <sys/systemcfg.h> @@ -479,8 +553,7 @@ exit(0); } EOF - $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm $dummy.c $dummy && exit 0 - rm -f $dummy.c $dummy + $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 echo rs6000-ibm-aix3.2.5 elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 @@ -488,9 +561,9 @@ echo rs6000-ibm-aix3.2 fi exit 0 ;; - *:AIX:*:4) - IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | head -1 | awk '{ print $1 }'` - if /usr/sbin/lsattr -EHl ${IBM_CPU_ID} | grep POWER >/dev/null 2>&1; then + *:AIX:*:[45]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc @@ -498,23 +571,10 @@ if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else - IBM_REV=4.${UNAME_RELEASE} + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit 0 ;; - *:AIX:*:5) - case "`lsattr -El proc0 -a type -F value`" in - PowerPC*) IBM_ARCH=powerpc - IBM_MANUF=ibm ;; - Itanium) IBM_ARCH=ia64 - IBM_MANUF=unknown ;; - POWER*) IBM_ARCH=power - IBM_MANUF=ibm ;; - *) IBM_ARCH=powerpc - IBM_MANUF=ibm ;; - esac - echo ${IBM_ARCH}-${IBM_MANUF}-aix${UNAME_VERSION}.${UNAME_RELEASE} - exit 0 ;; *:AIX:*:*) echo rs6000-ibm-aix exit 0 ;; @@ -542,10 +602,8 @@ 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) - case "${HPUX_REV}" in - 11.[0-9][0-9]) - if [ -x /usr/bin/getconf ]; then - sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 @@ -554,12 +612,13 @@ case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; + '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac - fi ;; - esac - if [ "${HP_ARCH}" = "" ]; then - sed 's/^ //' << EOF >$dummy.c + fi + if [ "${HP_ARCH}" = "" ]; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include <stdlib.h> @@ -592,11 +651,21 @@ exit (0); } EOF - (CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null ) && HP_ARCH=`./$dummy` - if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi - rm -f $dummy.c $dummy - fi ;; + (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; esac + if [ ${HP_ARCH} = "hppa2.0w" ] + then + # avoid double evaluation of $set_cc_for_build + test -n "$CC_FOR_BUILD" || eval $set_cc_for_build + if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null + then + HP_ARCH="hppa2.0w" + else + HP_ARCH="hppa64" + fi + fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit 0 ;; ia64:HP-UX:*:*) @@ -604,6 +673,7 @@ echo ia64-hp-hpux${HPUX_REV} exit 0 ;; 3050*:HI-UX:*:*) + eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include <unistd.h> int @@ -629,8 +699,7 @@ exit (0); } EOF - $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm $dummy.c $dummy && exit 0 - rm -f $dummy.c $dummy + $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 echo unknown-hitachi-hiuxwe2 exit 0 ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) @@ -639,7 +708,7 @@ 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit 0 ;; - *9??*:MPE/iX:*:*) + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit 0 ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) @@ -648,7 +717,7 @@ hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit 0 ;; - i?86:OSF1:*:*) + i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else @@ -658,9 +727,6 @@ parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit 0 ;; - hppa*:OpenBSD:*:*) - echo hppa-unknown-openbsd - exit 0 ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit 0 ;; @@ -679,42 +745,39 @@ C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit 0 ;; - CRAY*X-MP:*:*:*) - echo xmp-cray-unicos - exit 0 ;; CRAY*Y-MP:*:*:*) - echo ymp-cray-unicos${UNAME_RELEASE} + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ - -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; - CRAY*T3D:*:*:*) - echo alpha-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; - CRAY-2:*:*:*) - echo cray2-cray-unicos - exit 0 ;; + *:UNICOS/mp:*:*) + echo nv1-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit 0 ;; - hp300:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} + 5000:UNIX_System_V:4.*:*) + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` + echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit 0 ;; - i?86:BSD/386:*:* | i?86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit 0 ;; sparc*:BSD/OS:*:*) @@ -724,10 +787,21 @@ echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit 0 ;; *:FreeBSD:*:*) - echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` - exit 0 ;; - *:OpenBSD:*:*) - echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + # Determine whether the default compiler uses glibc. + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include <features.h> + #if __GLIBC__ >= 2 + LIBC=gnu + #else + LIBC= + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` + # GNU/KFreeBSD systems have a "k" prefix to indicate we are using + # FreeBSD's kernel, but not the complete OS. + case ${LIBC} in gnu) kernel_only='k' ;; esac + echo ${UNAME_MACHINE}-unknown-${kernel_only}freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC} exit 0 ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin @@ -738,11 +812,17 @@ i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit 0 ;; + x86:Interix*:[34]*) + echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//' + exit 0 ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks + exit 0 ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? - echo i386-pc-interix + echo i586-pc-interix exit 0 ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin @@ -754,247 +834,178 @@ echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; *:GNU:*:*) + # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit 0 ;; + *:GNU/*:*:*) + # other systems with GNU libc and userland + echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu + exit 0 ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit 0 ;; - *:Linux:*:*) - + arm*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + cris:Linux:*:*) + echo cris-axis-linux-gnu + exit 0 ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + m32r*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + mips:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips + #undef mipsel + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mipsel + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` + test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 + ;; + mips64:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips64 + #undef mips64el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mips64el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips64 + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` + test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 + ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-gnu + exit 0 ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-gnu + exit 0 ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null + if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi + echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} + exit 0 ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) echo hppa1.1-unknown-linux-gnu ;; + PA8*) echo hppa2.0-unknown-linux-gnu ;; + *) echo hppa-unknown-linux-gnu ;; + esac + exit 0 ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-gnu + exit 0 ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux + exit 0 ;; + sh64*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + x86_64:Linux:*:*) + echo x86_64-unknown-linux-gnu + exit 0 ;; + i*86:Linux:*:*) # The BFD linker knows what the default object file format is, so # first see if it will tell us. cd to the root directory to prevent # problems with other programs or directories called `ld' in the path. - ld_supported_emulations=`cd /; ld --help 2>&1 \ - | sed -ne '/supported emulations:/!d + # Set LC_ALL=C to ensure ld outputs messages in English. + ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ + | sed -ne '/supported targets:/!d s/[ ][ ]*/ /g - s/.*supported emulations: *// + s/.*supported targets: *// s/ .*// p'` - case "$ld_supported_emulations" in - *ia64) - echo "${UNAME_MACHINE}-unknown-linux" - exit 0 - ;; - i?86linux) - echo "${UNAME_MACHINE}-pc-linux-gnuaout" - exit 0 - ;; - elf_i?86) + case "$ld_supported_targets" in + elf32-i386) TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" ;; - i?86coff) + a.out-i386-linux) + echo "${UNAME_MACHINE}-pc-linux-gnuaout" + exit 0 ;; + coff-i386) echo "${UNAME_MACHINE}-pc-linux-gnucoff" - exit 0 - ;; - sparclinux) - echo "${UNAME_MACHINE}-unknown-linux-gnuaout" - exit 0 - ;; - elf32_sparc) - echo "${UNAME_MACHINE}-unknown-linux-gnu" - exit 0 - ;; - armlinux) - echo "${UNAME_MACHINE}-unknown-linux-gnuaout" - exit 0 - ;; - elf32arm*) - echo "${UNAME_MACHINE}-unknown-linux-gnuoldld" - exit 0 - ;; - armelf_linux*) - echo "${UNAME_MACHINE}-unknown-linux-gnu" - exit 0 - ;; - m68klinux) - echo "${UNAME_MACHINE}-unknown-linux-gnuaout" - exit 0 - ;; - elf32ppc | elf32ppclinux) - # Determine Lib Version - cat >$dummy.c <<EOF -#include <features.h> -#if defined(__GLIBC__) -extern char __libc_version[]; -extern char __libc_release[]; -#endif -main(argc, argv) - int argc; - char *argv[]; -{ -#if defined(__GLIBC__) - printf("%s %s\n", __libc_version, __libc_release); -#else - printf("unkown\n"); -#endif - return 0; -} -EOF - LIBC="" - $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null - if test "$?" = 0 ; then - ./$dummy | grep 1\.99 > /dev/null - if test "$?" = 0 ; then - LIBC="libc1" - fi - fi - rm -f $dummy.c $dummy - echo powerpc-unknown-linux-gnu${LIBC} - exit 0 - ;; - shelf_linux) - echo "${UNAME_MACHINE}-unknown-linux-gnu" - exit 0 - ;; + exit 0 ;; + "") + # Either a pre-BFD a.out linker (linux-gnuoldld) or + # one that does not give us useful --help. + echo "${UNAME_MACHINE}-pc-linux-gnuoldld" + exit 0 ;; esac - - if test "${UNAME_MACHINE}" = "alpha" ; then - cat <<EOF >$dummy.s - .data - \$Lformat: - .byte 37,100,45,37,120,10,0 # "%d-%x\n" - - .text - .globl main - .align 4 - .ent main - main: - .frame \$30,16,\$26,0 - ldgp \$29,0(\$27) - .prologue 1 - .long 0x47e03d80 # implver \$0 - lda \$2,-1 - .long 0x47e20c21 # amask \$2,\$1 - lda \$16,\$Lformat - mov \$0,\$17 - not \$1,\$18 - jsr \$26,printf - ldgp \$29,0(\$26) - mov 0,\$16 - jsr \$26,exit - .end main -EOF - LIBC="" - $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null - if test "$?" = 0 ; then - case `./$dummy` in - 0-0) - UNAME_MACHINE="alpha" - ;; - 1-0) - UNAME_MACHINE="alphaev5" - ;; - 1-1) - UNAME_MACHINE="alphaev56" - ;; - 1-101) - UNAME_MACHINE="alphapca56" - ;; - 2-303) - UNAME_MACHINE="alphaev6" - ;; - 2-307) - UNAME_MACHINE="alphaev67" - ;; - esac - - objdump --private-headers $dummy | \ - grep ld.so.1 > /dev/null - if test "$?" = 0 ; then - LIBC="libc1" - fi - fi - rm -f $dummy.s $dummy - echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} ; exit 0 - elif test "${UNAME_MACHINE}" = "mips" ; then - cat >$dummy.c <<EOF -#ifdef __cplusplus -#include <stdio.h> /* for printf() prototype */ - int main (int argc, char *argv[]) { -#else - int main (argc, argv) int argc; char *argv[]; { -#endif -#ifdef __MIPSEB__ - printf ("%s-unknown-linux-gnu\n", argv[1]); -#endif -#ifdef __MIPSEL__ - printf ("%sel-unknown-linux-gnu\n", argv[1]); -#endif - return 0; -} -EOF - $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm $dummy.c $dummy && exit 0 - rm -f $dummy.c $dummy - elif test "${UNAME_MACHINE}" = "s390"; then - echo s390-ibm-linux && exit 0 - elif test "${UNAME_MACHINE}" = "x86_64"; then - echo x86_64-unknown-linux-gnu && exit 0 - elif test "${UNAME_MACHINE}" = "parisc" -o "${UNAME_MACHINE}" = "hppa"; then - # Look for CPU level - case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in - PA7*) - echo hppa1.1-unknown-linux-gnu - ;; - PA8*) - echo hppa2.0-unknown-linux-gnu - ;; - *) - echo hppa-unknown-linux-gnu - ;; - esac - exit 0 - else - # Either a pre-BFD a.out linker (linux-gnuoldld) - # or one that does not give us useful --help. - # GCC wants to distinguish between linux-gnuoldld and linux-gnuaout. - # If ld does not provide *any* "supported emulations:" - # that means it is gnuoldld. - test -z "$ld_supported_emulations" \ - && echo "${UNAME_MACHINE}-pc-linux-gnuoldld" && exit 0 - - case "${UNAME_MACHINE}" in - i?86) - VENDOR=pc; - ;; - *) - VENDOR=unknown; - ;; - esac - # Determine whether the default compiler is a.out or elf - cat >$dummy.c <<EOF -#include <features.h> -#ifdef __cplusplus -#include <stdio.h> /* for printf() prototype */ - int main (int argc, char *argv[]) { -#else - int main (argc, argv) int argc; char *argv[]; { -#endif -#ifdef __ELF__ -# ifdef __GLIBC__ -# if __GLIBC__ >= 2 - printf ("%s-${VENDOR}-linux-gnu\n", argv[1]); -# else - printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]); -# endif -# else - printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]); -# endif -#else - printf ("%s-${VENDOR}-linux-gnuaout\n", argv[1]); -#endif - return 0; -} + # Determine whether the default compiler is a.out or elf + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include <features.h> + #ifdef __ELF__ + # ifdef __GLIBC__ + # if __GLIBC__ >= 2 + LIBC=gnu + # else + LIBC=gnulibc1 + # endif + # else + LIBC=gnulibc1 + # endif + #else + #ifdef __INTEL_COMPILER + LIBC=gnu + #else + LIBC=gnuaout + #endif + #endif + #ifdef __dietlibc__ + LIBC=dietlibc + #endif EOF - $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm $dummy.c $dummy && exit 0 - rm -f $dummy.c $dummy - test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 - fi ;; -# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. earlier versions -# are messed up and put the nodename in both sysname and nodename. - i?86:DYNIX/ptx:4*:*) + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` + test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0 + test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 + ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. echo i386-sequent-sysv4 exit 0 ;; - i?86:UNIX_SV:4.2MP:2.*) + i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, @@ -1002,7 +1013,27 @@ # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit 0 ;; - i?86:*:4.*:* | i?86:SYSTEM_V:4.*:*) + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo ${UNAME_MACHINE}-pc-os2-emx + exit 0 ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit 0 ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit 0 ;; + i*86:syllable:*:*) + echo ${UNAME_MACHINE}-pc-syllable + exit 0 ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit 0 ;; + i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} @@ -1010,36 +1041,32 @@ echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit 0 ;; - i?86:*:5:7*) - # Fixed at (any) Pentium or better - UNAME_MACHINE=i586 - if [ ${UNAME_SYSTEM} = "UnixWare" ] ; then - echo ${UNAME_MACHINE}-sco-sysv${UNAME_RELEASE}uw${UNAME_VERSION} - else - echo ${UNAME_MACHINE}-pc-sysv${UNAME_RELEASE} - fi + i*86:*:5:[78]*) + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit 0 ;; - i?86:*:3.2:*) + i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name` echo ${UNAME_MACHINE}-pc-isc$UNAME_REL elif /bin/uname -X 2>/dev/null >/dev/null ; then - UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')` - (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486 - (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \ + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 - (/bin/uname -X|egrep '^Machine.*Pent ?II' >/dev/null) \ + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 - (/bin/uname -X|egrep '^Machine.*Pentium Pro' >/dev/null) \ + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit 0 ;; - i?86:*DOS:*:*) - echo ${UNAME_MACHINE}-pc-msdosdjgpp - exit 0 ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about @@ -1063,9 +1090,15 @@ # "miniframe" echo m68010-convergent-sysv exit 0 ;; - M68*:*:R3V[567]*:*) + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit 0 ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit 0 ;; + M68*:*:R3V[5678]*:*) test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; - 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 4850:*:4.0:3.0) + 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` @@ -1076,21 +1109,21 @@ 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && echo i486-ncr-sysv4 && exit 0 ;; - m68*:LynxOS:2.*:*) + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit 0 ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit 0 ;; - i?86:LynxOS:2.*:* | i?86:LynxOS:3.[01]*:*) - echo i386-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit 0 ;; - rs6000:LynxOS:2.*:* | PowerPC:LynxOS:2.*:*) + rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit 0 ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit 0 ;; @@ -1108,8 +1141,8 @@ echo ns32k-sni-sysv fi exit 0 ;; - PENTIUM:CPunix:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort - # says <Ric...@cc...> + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says <Ric...@cc...> echo i586-unisys-sysv4 exit 0 ;; *:UNIX_System_V:4*:FTX*) @@ -1121,6 +1154,10 @@ # From se...@sw.... echo i860-stratus-sysv4 exit 0 ;; + *:VOS:*:*) + # From Pau...@st.... + echo hppa1.1-stratus-vos + exit 0 ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit 0 ;; @@ -1149,6 +1186,9 @@ SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit 0 ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux${UNAME_RELEASE} + exit 0 ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit 0 ;; @@ -1156,18 +1196,24 @@ echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit 0 ;; *:Darwin:*:*) - echo `uname -p`-apple-darwin${UNAME_RELEASE} + case `uname -p` in + *86) UNAME_PROCESSOR=i686 ;; + powerpc) UNAME_PROCESSOR=powerpc ;; + esac + echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit 0 ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) - if test "${UNAME_MACHINE}" = "x86pc"; then + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = "x86"; then + UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi - echo `uname -p`-${UNAME_MACHINE}-nto-qnx + echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit 0 ;; *:QNX:*:4*) echo i386-pc-qnx exit 0 ;; - NSR-[KW]:NONSTOP_KERNEL:*:*) + NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit 0 ;; *:NonStop-UX:*:*) @@ -1190,16 +1236,36 @@ fi echo ${UNAME_MACHINE}-unknown-plan9 exit 0 ;; - i?86:OS/2:*:*) - # If we were able to find `uname', then EMX Unix compatibility - # is probably installed. - echo ${UNAME_MACHINE}-pc-os2-emx + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit 0 ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit 0 ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit 0 ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit 0 ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit 0 ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit 0 ;; + SEI:*:*:SEIUX) + echo mips-sei-seiux${UNAME_RELEASE} + exit 0 ;; + *:DragonFly:*:*) + echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit 0 ;; esac #echo '(No uname command or uname output not recognized.)' 1>&2 #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 +eval $set_cc_for_build cat >$dummy.c <<EOF #ifdef _SEQUENT_ # include <sys/types.h> @@ -1286,11 +1352,24 @@ #endif #if defined (vax) -#if !defined (ultrix) - printf ("vax-dec-bsd\n"); exit (0); -#else - printf ("vax-dec-ultrix\n"); exit (0); -#endif +# if !defined (ultrix) +# include <sys/param.h> +# if defined (BSD) +# if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +# else +# if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# endif +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# else + printf ("vax-dec-ultrix\n"); exit (0); +# endif #endif #if defined (alliant) && defined (i860) @@ -1301,8 +1380,7 @@ } EOF -$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm $dummy.c $dummy && exit 0 -rm -f $dummy.c $dummy +$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0 # Apollos put the system type in the environment. @@ -1337,8 +1415,9 @@ cat >&2 <<EOF $0: unable to guess system type -The $version version of this script cannot recognize your system type. -Please download the most up to date version of the config scripts: +This script, last modified $timestamp, has failed to recognize +the operating system you are using. It is advised that you +download the most up to date version of the config scripts from ftp://ftp.gnu.org/pub/gnu/config/ @@ -1347,7 +1426,7 @@ pertinent to <con...@gn...> in order to provide the needed information to handle your system. -config.guess version = $version +config.guess timestamp = $timestamp uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` Index: srvx2/config.sub diff -u srvx2/config.sub:1.1.1.1 srvx2/config.sub:1.2 --- srvx2/config.sub:1.1.1.1 Thu Jun 3 10:13:58 2004 +++ srvx2/config.sub Tue Aug 24 17:32:01 2004 @@ -1,9 +1,9 @@ #! /bin/sh # Configuration validation subroutine script. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000 -# Free Software Foundation, Inc. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003 Free Software Foundation, Inc. -timestamp='2000-12-20' +timestamp='2004-03-12' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software @@ -29,7 +29,8 @@ # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. -# Please send patches to <con...@gn...>. +# Please send patches to <con...@gn...>. Submit a context +# diff and a properly formatted ChangeLog entry. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. @@ -69,7 +70,7 @@ version="\ GNU config.sub ($timestamp) -Copyright (C) 1992, 93, 94, 95, 96, 97, 98, 99, 2000 +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO @@ -117,7 +118,8 @@ # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in - nto-qnx* | linux-gnu* | storm-chaos*) + nto-qnx* | linux-gnu* | linux-dietlibc | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | \ + kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; @@ -157,6 +159,14 @@ os=-vxworks basic_machine=$1 ;; + -chorusos*) + os=-chorusos + basic_machine=$1 + ;; + -chorusrdb) + os=-chorusrdb + basic_machine=$1 + ;; -hiux*) os=-hiuxwe2 ;; @@ -215,23 +225,50 @@ case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. - tahoe | i860 | ia64 | m32r | m68k | m68000 | m88k | ns32k | arc \ - | arm | arme[lb] | arm[bl]e | armv[2345] | armv[345][lb] | strongarm | xscale \ - | pyramid | mn10200 | mn10300 | tron | a29k \ - | 580 | i960 | h8300 \ - | x86 | ppcbe | mipsbe | mipsle | shbe | shle \ - | hppa | hppa1.0 | hppa1.1 | hppa2.0 | hppa2.0w | hppa2.0n \ - | hppa64 \ - | alpha | alphaev[4-8] | alphaev56 | alphapca5[67] \ - | alphaev6[78] \ - | we32k | ns16k | clipper | i370 | sh | sh[34] \ - | powerpc | powerpcle \ - | 1750a | dsp16xx | pdp11 | mips16 | mips64 | mipsel | mips64el \ - | mips64orion | mips64orionel | mipstx39 | mipstx39el \ - | mips64vr4300 | mips64vr4300el | mips64vr4100 | mips64vr4100el \ - | mips64vr5000 | miprs64vr5000el | mcore \ - | sparc | sparclet | sparclite | sparc64 | sparcv9 | v850 | c4x \ - | thumb | d10v | d30v | fr30 | avr) + 1750a | 580 \ + | a29k \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | am33_2.0 \ + | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ + | c4x | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | fr30 | frv \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | i370 | i860 | i960 | ia64 \ + | ip2k | iq2000 \ + | m32r | m32rle | m68000 | m68k | m88k | mcore \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64vr | mips64vrel \ + | mips64orion | mips64orionel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | msp430 \ + | ns16k | ns32k \ + | openrisc | or32 \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ + | pyramid \ + | sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv8 | sparcv9 | sparcv9b \ + | strongarm \ + | tahoe | thumb | tic4x | tic80 | tron \ + | v850 | v850e \ + | we32k \ + | x86 | xscale | xstormy16 | xtensa \ + | z8k) basic_machine=$basic_machine-unknown ;; m6811 | m68hc11 | m6812 | m68hc12) @@ -239,13 +276,13 @@ basic_machine=$basic_machine-unknown os=-none ;; - m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | z8k | v70 | h8500 | w65 | pj | pjl) + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. - i[234567]86 | x86_64) + i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. @@ -254,29 +291,61 @@ exit 1 ;; # Recognize the basic CPU types with company name. - # FIXME: clean up the formatting here. - vax-* | tahoe-* | i[234567]86-* | i860-* | ia64-* | m32r-* | m68k-* | m68000-* \ - | m88k-* | sparc-* | ns32k-* | fx80-* | arc-* | c[123]* \ - | arm-* | armbe-* | armle-* | armv*-* | strongarm-* | xscale-* \ - | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \ - | power-* | none-* | 580-* | cray2-* | h8300-* | h8500-* | i960-* \ - | xmp-* | ymp-* \ - | x86-* | ppcbe-* | mipsbe-* | mipsle-* | shbe-* | shle-* \ - | hppa-* | hppa1.0-* | hppa1.1-* | hppa2.0-* | hppa2.0w-* \ - | hppa2.0n-* | hppa64-* \ - | alpha-* | alphaev[4-8]-* | alphaev56-* | alphapca5[67]-* \ - | alphaev6[78]-* \ - | we32k-* | cydra-* | ns16k-* | pn-* | np1-* | xps100-* \ - | clipper-* | orion-* \ - | sparclite-* | pdp11-* | sh-* | powerpc-* | powerpcle-* \ - | sparc64-* | s... [truncated message content] |
From: Alex S. <ru...@us...> - 2004-08-23 18:26:18
|
Committer : Alex Schumann <ru...@us...> CVSROOT : /cvsroot/x2serv Module : srvx2 Commit time: 2004-08-23 18:26:10 UTC Modified files: .cvsignore Removed files: src/modules-list.h Log message: Removing config-built file from cvs Author: Log message: ---------------------- diff included ---------------------- Index: srvx2/.cvsignore diff -u srvx2/.cvsignore:1.1.1.1 srvx2/.cvsignore:1.2 --- srvx2/.cvsignore:1.1.1.1 Thu Jun 3 10:13:58 2004 +++ srvx2/.cvsignore Mon Aug 23 11:25:59 2004 @@ -9,3 +9,4 @@ p10 stamp-h2.in {arch} +src/modules-list.h Index: srvx2/src/modules-list.h diff -u srvx2/src/modules-list.h:1.5 srvx2/src/modules-list.h:removed --- srvx2/src/modules-list.h:1.5 Thu Aug 19 15:09:58 2004 +++ srvx2/src/modules-list.h Mon Aug 23 11:26:10 2004 @@ -1 +0,0 @@ - ----------------------- End of diff ----------------------- |
From: Neil S. <sir...@us...> - 2004-08-23 15:55:44
|
Committer : Code Monkey <sir...@us...> CVSROOT : /cvsroot/x2serv Module : srvx2 Commit time: 2004-08-23 15:55:36 UTC Modified files: src/mod-snoop.c Log message: quick fix ---------------------- diff included ---------------------- Index: srvx2/src/mod-snoop.c diff -u srvx2/src/mod-snoop.c:1.1.1.1 srvx2/src/mod-snoop.c:1.2 --- srvx2/src/mod-snoop.c:1.1.1.1 Thu Jun 3 10:14:00 2004 +++ srvx2/src/mod-snoop.c Mon Aug 23 08:55:25 2004 @@ -136,7 +136,7 @@ str = database_get_data(node, "channel", RECDB_QSTRING); if (!str) return; - snoop_cfg.channel = AddChannel(str, now, "+sntim", NULL); + snoop_cfg.channel = AddChannel(str, now, "+sntim", NULL, NULL); if (!snoop_cfg.channel) return; str = database_get_data(node, "show_bursts", RECDB_QSTRING); ----------------------- End of diff ----------------------- |
From: Neil S. <sir...@us...> - 2004-08-23 15:39:40
|
Committer : Code Monkey <sir...@us...> CVSROOT : /cvsroot/x2serv Module : srvx2 Commit time: 2004-08-23 15:39:30 UTC Modified files: src/chanserv.c src/common.h src/hash.c src/hash.h src/opserv.c src/proto-common.c src/proto-p10.c src/tools.c Log message: Stage 2, exempt support ---------------------- diff included ---------------------- Index: srvx2/src/chanserv.c diff -u srvx2/src/chanserv.c:1.7 srvx2/src/chanserv.c:1.8 --- srvx2/src/chanserv.c:1.7 Thu Aug 19 15:09:58 2004 +++ srvx2/src/chanserv.c Mon Aug 23 08:39:18 2004 @@ -1786,7 +1786,7 @@ } if(new_channel) - channel = AddChannel(argv[1], now, NULL, NULL); + channel = AddChannel(argv[1], now, NULL, NULL, NULL); cData = register_channel(channel, user->handle_info->handle); scan_user_presence(add_channel_user(cData, handle, UL_OWNER, 0, NULL), NULL); @@ -1924,7 +1924,7 @@ if(!(target = GetChannel(argv[1]))) { - target = AddChannel(argv[1], now, NULL, NULL); + target = AddChannel(argv[1], now, NULL, NULL, NULL); if(!IsSuspended(channel->channel_info)) AddChannelUser(chanserv, target); } @@ -6460,7 +6460,7 @@ const char *str2 = database_get_data(conf_node, KEY_SUPPORT_CHANNEL_MODES, RECDB_QSTRING); if(!str2) str2 = "+nt"; - chan = AddChannel(strlist->list[ii], now, str2, NULL); + chan = AddChannel(strlist->list[ii], now, str2, NULL, NULL); LockChannel(chan); channelList_append(&chanserv_conf.support_channels, chan); } @@ -6471,7 +6471,7 @@ str2 = database_get_data(conf_node, KEY_SUPPORT_CHANNEL_MODES, RECDB_QSTRING); if(!str2) str2 = "+nt"; - chan = AddChannel(str, now, str2, NULL); + chan = AddChannel(str, now, str2, NULL, NULL); LockChannel(chan); channelList_append(&chanserv_conf.support_channels, chan); } @@ -6746,7 +6746,7 @@ str = database_get_data(channel, KEY_REGISTRAR, RECDB_QSTRING); if(!str) str = "<unknown>"; - cNode = AddChannel(key, now, NULL, NULL); + cNode = AddChannel(key, now, NULL, NULL, NULL); if(!cNode) { log_module(CS_LOG, LOG_ERROR, "Unable to create registered channel %s.", key); Index: srvx2/src/common.h diff -u srvx2/src/common.h:1.1.1.1 srvx2/src/common.h:1.2 --- srvx2/src/common.h:1.1.1.1 Thu Jun 3 10:13:59 2004 +++ srvx2/src/common.h Mon Aug 23 08:39:18 2004 @@ -96,6 +96,7 @@ void reg_exit_func(exit_func_t handler); void call_exit_funcs(void); +char *mysep(char **sepstr, char *delim); const char *inttobase64(char *buf, unsigned int v, unsigned int count); unsigned long base64toint(const char *s, int count); int split_line(char *line, int irc_colon, int argv_size, char *argv[]); Index: srvx2/src/hash.c diff -u srvx2/src/hash.c:1.2 srvx2/src/hash.c:1.3 --- srvx2/src/hash.c:1.2 Thu Aug 19 15:09:58 2004 +++ srvx2/src/hash.c Mon Aug 23 08:39:18 2004 @@ -309,6 +309,11 @@ free(cNode->banlist.list[nn]); cNode->banlist.used = 0; + /* remove our old exe,[t list, replace it with the new one */ + for (nn=0; nn<cNode->exemptlist.used; nn++) + free(cNode->exemptlist.list[nn]); + cNode->exemptlist.used = 0; + /* deop anybody in the channel now, but count services to reop */ for (nn=argc=0; nn<cNode->members.used; nn++) { struct modeNode *mn = cNode->members.list[nn]; @@ -340,7 +345,7 @@ } struct chanNode * -AddChannel(const char *name, time_t time_, const char *modes, char *banlist) +AddChannel(const char *name, time_t time_, const char *modes, char *banlist, char *exemptlist) { struct chanNode *cNode; char new_modes[MAXLEN], *argv[MAXNUMPARAMS]; @@ -359,6 +364,7 @@ cNode = calloc(1, sizeof(*cNode) + strlen(name)); strcpy(cNode->name, name); banList_init(&cNode->banlist); + exemptList_init(&cNode->exemptlist); modeList_init(&cNode->members); mod_chanmode(NULL, cNode, argv, nn, 0); dict_insert(channels, cNode->name, cNode); @@ -400,6 +406,23 @@ } } + /* go through list of exempts and add each one */ + if (exemptlist && (rel_age >= 0)) { + for (nn=0; exemptlist[nn];) { + char *exempt = exemptlist + nn; + struct exemptNode *en; + while (exemptlist[nn] != ' ' && exemptlist[nn]) + nn++; + while (exemptlist[nn] == ' ') + exemptlist[nn++] = 0; + en = calloc(1, sizeof(*en)); + safestrncpy(en->exempt, exempt, sizeof(en->exempt)); + safestrncpy(en->who, "<unknown>", sizeof(en->who)); + en->set = now; + exemptList_append(&cNode->exemptlist, en); + } + } + return cNode; } @@ -441,11 +464,17 @@ free(channel->banlist.list[--n]); channel->banlist.used = 0; + /* delete all channel exempts */ + for (n=channel->exemptlist.used; n>0; ) + free(channel->exemptlist.list[--n]); + channel->exemptlist.used = 0; + for (n=0; n<dcf_used; n++) dcf_list[n](channel); modeList_clean(&channel->members); banList_clean(&channel->banlist); + exemptList_clean(&channel->exemptlist); free(channel); } @@ -633,6 +662,16 @@ return 0; } +int ChannelExemptExists(struct chanNode *channel, const char *exempt) +{ + unsigned int n; + + for (n = 0; n < channel->exemptlist.used; n++) + if (match_ircglobs(channel->exemptlist.list[n]->exempt, exempt)) + return 1; + return 0; +} + static topic_func_t *tf_list; static unsigned int tf_size = 0, tf_used = 0; @@ -713,6 +752,7 @@ DEFINE_LIST(userList, struct userNode*) DEFINE_LIST(modeList, struct modeNode*) DEFINE_LIST(banList, struct banNode*) +DEFINE_LIST(exemptList, struct exemptNode*) DEFINE_LIST(channelList, struct chanNode*) DEFINE_LIST(serverList, struct server*) Index: srvx2/src/hash.h diff -u srvx2/src/hash.h:1.4 srvx2/src/hash.h:1.5 --- srvx2/src/hash.h:1.4 Thu Aug 19 15:09:58 2004 +++ srvx2/src/hash.h Mon Aug 23 08:39:18 2004 @@ -49,6 +49,7 @@ #define MODE_NOAMSG 0x00200000 /* +T no multi-target messages */ #define MODE_SSLONLY 0x00400000 /* +z ssl only */ #define MODE_HALFOP 0x00800000 /* +h USER */ +#define MODE_EXEMPT 0x01000000 /* +e exempt */ #define MODE_REMOVE 0x80000000 #define FLAGS_OPER 0x0001 /* Operator +O */ @@ -103,6 +104,7 @@ #define MAXMODEPARAMS 6 #define MAXBANS 45 +#define MAXEXEMPTS 45 /* IDLEN is 6 because it takes 5.33 Base64 digits to store 32 bytes. */ #define IDLEN 6 @@ -110,6 +112,7 @@ DECLARE_LIST(userList, struct userNode*); DECLARE_LIST(modeList, struct modeNode*); DECLARE_LIST(banList, struct banNode*); +DECLARE_LIST(exemptList, struct exemptNode*); DECLARE_LIST(channelList, struct chanNode*); DECLARE_LIST(serverList, struct server*); @@ -152,6 +155,7 @@ struct modeList members; struct banList banlist; + struct exemptList exemptlist; struct policer join_policer; unsigned int join_flooded : 1; unsigned int bad_channel : 1; @@ -167,6 +171,12 @@ time_t set; /* time ban was set */ }; +struct exemptNode { + char exempt[NICKLEN + USERLEN + HOSTLEN + 3]; /* 1 for '\0', 1 for ! and 1 for @ = 3 */ + char who[NICKLEN + 1]; /* who set exempt */ + time_t set; /* time exempt was set */ +}; + struct modeNode { struct chanNode *channel; struct userNode *user; @@ -236,7 +246,7 @@ typedef void (*del_channel_func_t) (struct chanNode *chan); void reg_del_channel_func(del_channel_func_t handler); -struct chanNode* AddChannel(const char *name, time_t time_, const char *modes, char *banlist); +struct chanNode* AddChannel(const char *name, time_t time_, const char *modes, char *banlist, char *exemptlist); void LockChannel(struct chanNode *channel); void UnlockChannel(struct chanNode *channel); @@ -253,6 +263,7 @@ void ChannelUserKicked(struct userNode* kicker, struct userNode* victim, struct chanNode* channel); int ChannelBanExists(struct chanNode *channel, const char *ban); +int ChannelExemptExists(struct chanNode *channel, const char *exempt); typedef int (*topic_func_t)(struct userNode *who, struct chanNode *chan, const char *old_topic); void reg_topic_func(topic_func_t handler); Index: srvx2/src/opserv.c diff -u srvx2/src/opserv.c:1.3 srvx2/src/opserv.c:1.4 --- srvx2/src/opserv.c:1.3 Thu Aug 19 15:09:58 2004 +++ srvx2/src/opserv.c Mon Aug 23 08:39:18 2004 @@ -249,6 +249,8 @@ { "OSMSG_CHANINFO_TOPIC_UNKNOWN", "Topic: (none / not gathered)" }, { "OSMSG_CHANINFO_BAN_COUNT", "Bans (%d):" }, { "OSMSG_CHANINFO_BAN", "%%s by %%s (%a %b %d %H:%M:%S %Y)" }, + { "OSMSG_CHANINFO_EXEMPT_COUNT", "Exempts (%d):" }, + { "OSMSG_CHANINFO_EXEMPT", "%%s by %%s (%a %b %d %H:%M:%S %Y)" }, { "OSMSG_CHANINFO_MANY_USERS", "%d users (\"/msg $S %s %s users\" for the list)" }, { "OSMSG_CHANINFO_USER_COUNT", "Users (%d):" }, { "OSMSG_CSEARCH_CHANNEL_INFO", "%s [%d users] %s %s" }, @@ -425,6 +427,7 @@ char buffer[MAXLEN]; const char *fmt; struct banNode *ban; + struct exemptNode *exempt; struct modeNode *moden; unsigned int n; @@ -454,6 +457,15 @@ send_message_type(4, user, cmd->parent->bot, buffer, ban->ban, ban->who); } } + if (channel->exemptlist.used) { + reply("OSMSG_CHANINFO_EXEMPT_COUNT", channel->exemptlist.used); + fmt = user_find_message(user, "OSMSG_CHANINFO_EXEMPT"); + for (n = 0; n < channel->exemptlist.used; n++) { + exempt = channel->exemptlist.list[n]; + strftime(buffer, sizeof(buffer), fmt, localtime(&exempt->set)); + send_message_type(4, user, cmd->parent->bot, buffer, exempt->exempt, exempt->who); + } + } if ((argc < 2) && (channel->members.used >= 50)) { /* early out unless they ask for users */ reply("OSMSG_CHANINFO_MANY_USERS", channel->members.used, argv[0], channel->name); @@ -972,7 +984,7 @@ reply("MSG_NOT_CHANNEL_NAME"); return 0; } else if (!(channel = GetChannel(argv[1]))) { - channel = AddChannel(argv[1], now, NULL, NULL); + channel = AddChannel(argv[1], now, NULL, NULL, NULL); AddChannelUser(bot, channel)->modes |= MODE_CHANOP; } else if (GetUserMode(channel, bot)) { reply("OSMSG_ALREADY_JOINED", channel->name); @@ -2367,7 +2379,7 @@ channel = GetChannel(argv[3]); if (!irccasecmp(argv[1], "JOIN")) { if (!channel - && !(channel = AddChannel(argv[3], now, NULL, NULL))) { + && !(channel = AddChannel(argv[3], now, NULL, NULL, NULL))) { reply("MSG_CHANNEL_UNKNOWN", argv[3]); return 0; } @@ -3113,7 +3125,7 @@ send_message(user, opserv, "MSG_CHANNEL_UNKNOWN", argv[i]); goto fail; } else { - discrim->channel = AddChannel(argv[i]+j, now, NULL, NULL); + discrim->channel = AddChannel(argv[i]+j, now, NULL, NULL, NULL); } } LockChannel(discrim->channel); @@ -4039,7 +4051,7 @@ str2 = database_get_data(conf_node, KEY_DEBUG_CHANNEL_MODES, RECDB_QSTRING); if (!str2) str2 = "+tinms"; - opserv_conf.debug_channel = AddChannel(str, now, str2, NULL); + opserv_conf.debug_channel = AddChannel(str, now, str2, NULL, NULL); AddChannelUser(opserv, opserv_conf.debug_channel)->modes |= MODE_CHANOP; } else { opserv_conf.debug_channel = NULL; @@ -4049,7 +4061,7 @@ str2 = database_get_data(conf_node, KEY_ALERT_CHANNEL_MODES, RECDB_QSTRING); if (!str2) str2 = "+tns"; - opserv_conf.alert_channel = AddChannel(str, now, str2, NULL); + opserv_conf.alert_channel = AddChannel(str, now, str2, NULL, NULL); AddChannelUser(opserv, opserv_conf.alert_channel)->modes |= MODE_CHANOP; } else { opserv_conf.alert_channel = NULL; @@ -4059,7 +4071,7 @@ str2 = database_get_data(conf_node, KEY_STAFF_AUTH_CHANNEL_MODES, RECDB_QSTRING); if (!str2) str2 = "+timns"; - opserv_conf.staff_auth_channel = AddChannel(str, now, str2, NULL); + opserv_conf.staff_auth_channel = AddChannel(str, now, str2, NULL, NULL); AddChannelUser(opserv, opserv_conf.staff_auth_channel)->modes |= MODE_CHANOP; } else { opserv_conf.staff_auth_channel = NULL; Index: srvx2/src/proto-common.c diff -u srvx2/src/proto-common.c:1.3 srvx2/src/proto-common.c:1.4 --- srvx2/src/proto-common.c:1.3 Thu Aug 19 15:09:58 2004 +++ srvx2/src/proto-common.c Mon Aug 23 08:39:19 2004 @@ -552,6 +552,7 @@ mod_chanmode_apply(struct userNode *who, struct chanNode *channel, struct mod_chanmode *change) { struct banNode *bn; + struct exemptNode *en; unsigned int ii, jj; assert(change->argc <= change->alloc_argc); @@ -592,6 +593,36 @@ break; } break; + case MODE_EXEMPT: + /* If any existing exempt is a subset of the new exempt, + * silently remove it. The new exempt is not allowed + * to be more specific than an existing exempt. + */ + for (jj=0; jj<channel->exemptlist.used; ++jj) { + if (match_ircglobs(change->args[ii].hostmask, channel->exemptlist.list[jj]->exempt)) { + exemptList_remove(&channel->exemptlist, channel->exemptlist.list[jj]); + free(channel->exemptlist.list[jj]); + jj--; + } + } + en = calloc(1, sizeof(*en)); + safestrncpy(en->exempt, change->args[ii].hostmask, sizeof(en->exempt)); + if (who) + safestrncpy(en->who, who->nick, sizeof(en->who)); + else + safestrncpy(en->who, "<unknown>", sizeof(en->who)); + en->set = now; + exemptList_append(&channel->exemptlist, en); + break; + case MODE_REMOVE|MODE_EXEMPT: + for (jj=0; jj<channel->exemptlist.used; ++jj) { + if (strcmp(channel->exemptlist.list[jj]->exempt, change->args[ii].hostmask)) + continue; + free(channel->exemptlist.list[jj]); + exemptList_remove(&channel->exemptlist, channel->exemptlist.list[jj]); + break; + } + break; case MODE_CHANOP: case MODE_HALFOP: case MODE_VOICE: Index: srvx2/src/proto-p10.c diff -u srvx2/src/proto-p10.c:1.4 srvx2/src/proto-p10.c:1.5 --- srvx2/src/proto-p10.c:1.4 Thu Aug 19 15:09:58 2004 +++ srvx2/src/proto-p10.c Mon Aug 23 08:39:19 2004 @@ -579,6 +579,7 @@ int pos, base_len, len; struct modeNode *mn; struct banNode *bn; + struct exemptNode *en; long last_mode=-1; unsigned int n; @@ -639,6 +640,33 @@ burst_line[pos++] = ' '; } } + if (chan->exemptlist.used) { + /* dump the exempt */ + if (pos+2+strlen(chan->exemptlist.list[0]->exempt) > 505) { + burst_line[pos-1] = 0; + putsock("%s", burst_line); + pos = base_len; + } else { + burst_line[pos++] = ' '; + } + + burst_line[pos++] = ' '; + burst_line[pos++] = '~'; + burst_line[pos++] = ' '; + base_len = pos; + for (n=0; n<chan->exemptlist.used; n++) { + en = chan->exemptlist.list[n]; + len = strlen(en->exempt); + if (pos+len+1 > 510) { + burst_line[pos-1] = 0; /* -1 to back up over the space or comma */ + putsock("%s", burst_line); + pos = base_len; + } + memcpy(burst_line+pos, en->exempt, len); + pos += len; + burst_line[pos++] = ' '; + } + } /* print the last line */ burst_line[pos] = 0; putsock("%s", burst_line); @@ -944,7 +972,7 @@ return; } - AddChannelUser(cd->user, AddChannel(name, cd->when, NULL, NULL)); + AddChannelUser(cd->user, AddChannel(name, cd->when, NULL, NULL, NULL)); } static CMD_FUNC(cmd_create) @@ -1041,18 +1069,26 @@ static CMD_FUNC(cmd_burst) { extern int rel_age; - char modes[MAXLEN], *members = "", *banlist = NULL; - unsigned int next = 3, res = 1; + char modes[MAXLEN], *members = ""; + static char exemptlist[MAXLEN], banlist[MAXLEN]; + unsigned int next = 3; + unsigned int res = 1; + int ctype = 0, echeck = 0, bcheck = 0; struct chanNode *cNode; struct userNode *un; struct modeNode *mNode; long mode; char *user, *end, sep; time_t in_timestamp; + char* parm = NULL; if (argc < 3) return 0; modes[0] = 0; + + exemptlist[0] = 0; + banlist[0] = 0; + while (next < argc) { switch (argv[next][0]) { case '+': { @@ -1066,9 +1102,52 @@ next += n_modes; break; } - case '%': banlist = argv[next++]+1; break; - default: members = argv[next++]; break; + case '%': { + for(parm = mysep(&argv[next], " "); /* parm = first param */ + parm; /* While param is not null */ + parm = mysep(&argv[next], " ") /* parm = next param */ + ) + { + switch (parm[0]) { + case '%': { + ctype = 1; + break; + } + case '~': { + ctype = 2; + break; + } + default: { + break; + } + } + if (ctype == 1) { + if (bcheck == 0) { + /* strip % char off start of very first ban */ + strncat(banlist, strtok(parm, "%"), sizeof(banlist) - 1 - strlen(banlist)); + strncat(banlist, " ", sizeof(banlist) - 1 - strlen(banlist)); + bcheck = 1; + } else { + strncat(banlist, parm, sizeof(banlist) - 1 - strlen(banlist)); + strncat(banlist, " ", sizeof(banlist) - 1 - strlen(banlist)); + } + } else if (ctype == 2) { + if (echeck == 0) { + echeck = 1; + } else { + strncat(exemptlist, parm, sizeof(exemptlist) - 1 - strlen(exemptlist)); + strncat(exemptlist, " ", sizeof(exemptlist) - 1 - strlen(exemptlist)); + } + } + } + next++; + break; + } + default: { + members = argv[next++]; + break; } + } } @@ -1078,9 +1157,10 @@ dict_remove(unbursted_channels, cNode->name); irc_burst(cNode); } - cNode = AddChannel(argv[1], in_timestamp, modes, banlist); /* Burst channel members in now. */ + cNode = AddChannel(argv[1], in_timestamp, modes, banlist, exemptlist); + for (user = members, sep = *members, mode = 0; sep; user = end) { for (end = user + 3; isalnum(*end) || *end == '[' || *end == ']'; end++) ; sep = *end++; end[-1] = 0; @@ -2174,6 +2254,16 @@ change->args[ch_arg].mode |= MODE_REMOVE; change->args[ch_arg++].hostmask = modes[in_arg++]; break; + case 'e': + if (!(flags & MCP_ALLOW_OVB)) + goto error; + if (in_arg >= argc) + goto error; + change->args[ch_arg].mode = MODE_EXEMPT; + if (!add) + change->args[ch_arg].mode |= MODE_REMOVE; + change->args[ch_arg++].hostmask = modes[in_arg++]; + break; case 'o': case 'h': case 'v': { struct userNode *victim; @@ -2308,6 +2398,9 @@ case MODE_BAN: mod_chanmode_append(&chbuf, 'b', change->args[arg].hostmask); break; + case MODE_EXEMPT: + mod_chanmode_append(&chbuf, 'e', change->args[arg].hostmask); + break; default: if (change->args[arg].mode & MODE_CHANOP) mod_chanmode_append(&chbuf, 'o', change->args[arg].member->user->numeric); @@ -2360,6 +2453,9 @@ case MODE_BAN: mod_chanmode_append(&chbuf, 'b', change->args[arg].hostmask); break; + case MODE_EXEMPT: + mod_chanmode_append(&chbuf, 'e', change->args[arg].hostmask); + break; default: if (change->args[arg].mode & MODE_CHANOP) mod_chanmode_append(&chbuf, 'o', change->args[arg].member->user->numeric); @@ -2473,6 +2569,7 @@ channel->limit = 0; break; case 'b': remove |= MODE_BAN; break; + case 'e': remove |= MODE_EXEMPT; break; case 'D': remove |= MODE_DELAYJOINS; break; case 'r': remove |= MODE_REGONLY; break; case 'c': remove |= MODE_NOCOLORS; @@ -2500,6 +2597,14 @@ channel->banlist.used = 0; } + /* If removing exempts, kill 'em all. */ + if ((remove & MODE_EXEMPT) && channel->exemptlist.used) { + unsigned int i; + for (i=0; i<channel->exemptlist.used; i++) + free(channel->exemptlist.list[i]); + channel->exemptlist.used = 0; + } + /* Remove member modes. */ if ((remove & (MODE_CHANOP | MODE_HALFOP | MODE_VOICE)) && channel->members.used) { int mask = ~(remove & (MODE_CHANOP | MODE_HALFOP | MODE_VOICE)); Index: srvx2/src/tools.c diff -u srvx2/src/tools.c:1.2 srvx2/src/tools.c:1.3 --- srvx2/src/tools.c:1.2 Thu Jun 10 13:14:33 2004 +++ srvx2/src/tools.c Mon Aug 23 08:39:19 2004 @@ -854,3 +854,26 @@ free(str_tab.list[ii]); free(str_tab.list); } + +/* mysep() is my answer to the strtok/strsep + * issue. strsep is nice but doesn't skip + * multiple dilimiters, which can really + * offset tokens and cause huge corruption + * so this function will use strsep but + * act like strtok in that sence. + */ +char *mysep(char **sepstr, char *delim) +{ + static char *retstr; + + if(!*sepstr || !**sepstr) + return(NULL); + + do + { + retstr = strsep(sepstr, delim); + }while (retstr && !(*retstr)); + + return(retstr); +} + ----------------------- End of diff ----------------------- |
From: Alex S. <ru...@us...> - 2004-08-23 15:26:09
|
Committer : Alex Schumann <ru...@us...> CVSROOT : /cvsroot/x2serv Module : x2 Commit time: 2004-08-23 15:25:59 UTC Modified files: Makefile.in source/chan.c source/commands.c source/config.h source/misc.c source/misc.h source/parse.c source/parse.h source/user.c source/user.h Log message: Added (proper) support for hidden hosts, fakehosts, and sethosts. They are considered in lamer, ban and access functions, and available in the WHOIS command. ---------------------- diff included ---------------------- Index: x2/Makefile.in diff -u x2/Makefile.in:1.9 x2/Makefile.in:1.10 --- x2/Makefile.in:1.9 Sun Sep 15 00:41:10 2002 +++ x2/Makefile.in Mon Aug 23 08:25:47 2004 @@ -49,11 +49,11 @@ else \ echo "keeping existing $(prefix)/x2.motd.example";\ fi - @if [ ! -f $(prefix)/x2.news ]; then \ - echo "Creating $(prefix)/x2.news"; \ - $(CP) $(srcdir)/conf/x2.news $(prefix)/x2.news;\ + @if [ ! -f $(prefix)/x2.news.example ]; then \ + echo "Creating $(prefix)/x2.news.example"; \ + $(CP) $(srcdir)/conf/x2.news.example $(prefix)/x2.news.example;\ else \ - echo "keeping existing $(prefix)/x2.news";\ + echo "keeping existing $(prefix)/x2.news.example";\ fi @if [ ! -f $(prefix)/illegalchans.dat ]; then \ echo "Creating $(prefix)/illegalchans.dat"; \ Index: x2/source/chan.c diff -u x2/source/chan.c:1.90 x2/source/chan.c:1.91 --- x2/source/chan.c:1.90 Sun Jul 4 13:42:18 2004 +++ x2/source/chan.c Mon Aug 23 08:25:48 2004 @@ -165,22 +165,27 @@ { LamerListType lptr; char *nuh; + char *nuh2; if(uptr == NULL || cptr == NULL) return(NULL); - nuh = (char *) malloc(strlen(uptr->Nick) + strlen(uptr->UserID) + strlen(uptr->Address) + 3); - sprintf(nuh, "%s!%s@%s", uptr->Nick, uptr->UserID, uptr->Address); + nuh = (char *) malloc(strlen(uptr->Nick) + strlen(ActiveUsername(uptr)) + strlen(ActiveHost(uptr)) + 3); + nuh2 = (char *) malloc(strlen(uptr->Nick) + strlen(uptr->UserID) + strlen(uptr->Address) + 3); + sprintf(nuh, "%s!%s@%s", uptr->Nick, ActiveUsername(uptr), ActiveHost(uptr)); + sprintf(nuh2, "%s!%s@%s", uptr->Nick, uptr->UserID, uptr->Address); for(lptr = cptr->Lamers;lptr;lptr = lptr->Next) { - if(!matches(lptr->Mask, nuh)) + if(!matches(lptr->Mask, nuh) || !matches(lptr->Mask, nuh2)) { free(nuh); + free(nuh2); return(lptr); } } free(nuh); + free(nuh2); return (NULL); } @@ -287,7 +292,7 @@ } } /* No login, so find a match here... */ - sprintf(Str, "%s!%s@%s", uptr->Nick, uptr->UserID, uptr->Address); + sprintf(Str, "%s!%s@%s", uptr->Nick, ActiveUsername(uptr), ActiveHost(uptr)); for(hptr = cptr->Handles;hptr;hptr = hptr->Next) { for(mptr = hptr->Masks;mptr;mptr = mptr->Next) Index: x2/source/commands.c diff -u x2/source/commands.c:1.185 x2/source/commands.c:1.186 --- x2/source/commands.c:1.185 Sun Aug 22 12:10:42 2004 +++ x2/source/commands.c Mon Aug 23 08:25:48 2004 @@ -414,7 +414,7 @@ send_to_user(uptr, "\002%s is a Service.\002", rest); return(FALSE); } - sprintf(nuh, "%s!%s@%s", UserNode->Nick, UserNode->UserID, UserNode->Address); + sprintf(nuh, "%s!%s@%s", UserNode->Nick, ActiveUsername(UserNode), ActiveHost(UserNode)); if (!banok(cptr, uptr, nuh)) { @@ -624,7 +624,7 @@ send_to_user(uptr, "\002Sorry, you cannot kick or deop channel services.\002"); return(FALSE); } - sprintf(nuh, "%s!%s@%s", target->Nick, target->UserID, target->Address); + sprintf(nuh, "%s!%s@%s", target->Nick, ActiveUsername(target), ActiveHost(target)); if ((!kickok(cptr, uptr, target)) || (!banok(cptr, uptr, nuh))) { @@ -650,7 +650,7 @@ Debug(DBGWARNING, "c_ubm(): Null uptr"); return(FALSE); } - sprintf(nuh, "%s!%s@%s", uptr->Nick, uptr->UserID, uptr->Address); + sprintf(nuh, "%s!%s@%s", uptr->Nick, ActiveUsername(uptr), ActiveHost(uptr)); sprintf(nuh2, "%s!%s@%d.%d.%d.%d", uptr->Nick, uptr->UserID, uptr->IP / 65536 / 256 % 256, uptr->IP / 65536 % 256, uptr->IP / 256 % 256, uptr->IP % 256); @@ -694,7 +694,7 @@ } if((target = FindNick(rest, UsersN))) { - sprintf(nuh, "%s!%s@%s", target->Nick, target->UserID, target->Address); + sprintf(nuh, "%s!%s@%s", target->Nick, ActiveUsername(target), ActiveHost(target)); if (channel_unban(cptr, nuh)) { send_to_user(uptr, "\002%s has been unbanned from %s.\002", nuh, cptr->Name); @@ -750,7 +750,7 @@ else { char str[MAXLEN]; - snprintf(str, MAXLEN, "%s!%s@%s", target->Nick, target->UserID, target->Address); + snprintf(str, MAXLEN, "%s!%s@%s", target->Nick, ActiveUsername(target), ActiveHost(target)); send_to_user(uptr, "That user (%s) clusters to: %s", str, cluster(str)); } } @@ -875,13 +875,17 @@ if((target = (FindNick(rest, UsersN)))) { send_to_user(uptr, "\002=------%s------=\002", rest); - send_to_user(uptr, "\002 Nick : %s\002", target->Nick); - send_to_user(uptr, "\002 NumNick: %s\002", target->Numnick); - send_to_user(uptr, "\002 UserID : %s\002", target->UserID); - send_to_user(uptr, "\002 Address: %s\002", target->Address); - send_to_user(uptr, "\002 IP Addr: %s\002", unsigned32ToDotQuad(target->IP)); - send_to_user(uptr, "\002 Server : %s\002", target->Serv); - send_to_user(uptr, "\002 Clones : %d\002", target->Clones); + send_to_user(uptr, "\002 NumNick : %s\002", target->Numnick); + send_to_user(uptr, "\002 Nick : %s\002", target->Nick); + send_to_user(uptr, "\002 UserID : %s\002", target->UserID); + send_to_user(uptr, "\002 Address : %s\002", target->Address); + send_to_user(uptr, "\002 Realname: %s\002", target->RealName); + send_to_user(uptr, "\002 Account : %s\002", target->Account); + send_to_user(uptr, "\002 fakehost: %s\002", target->Fakehost); + send_to_user(uptr, "\002 sethost : %s\002", target->Sethost); + send_to_user(uptr, "\002 IP Addr : %s\002", unsigned32ToDotQuad(target->IP)); + send_to_user(uptr, "\002 Server : %s\002", target->Serv); + send_to_user(uptr, "\002 Clones : %d\002", target->Clones); if (target->Modes & UMODEd) strcat(modetmp, "d"); if (target->Modes & UMODEi) @@ -902,6 +906,12 @@ strcat(modetmp, "B"); if (target->Modes & UMODER) strcat(modetmp, "R"); + if (target->Modes & UMODEr) + strcat(modetmp, "r"); + if (target->Modes & UMODEf) + strcat(modetmp, "f"); + if (target->Modes & UMODEh) + strcat(modetmp, "h"); if (target->Modes & UMODEgod) strcat(modetmp, "(GOD)"); send_to_user(uptr, "\002 Modes : +%s\002", modetmp); @@ -3968,7 +3978,7 @@ send_to_user(uptr, "\002You cannot kick/deop/lamer a channel service.\002"); return(FALSE); } - sprintf(nuh, "%s!%s@%s", target->Nick, target->UserID, target->Address); + sprintf(nuh, "%s!%s@%s", target->Nick, ActiveUsername(target), ActiveHost(target)); sprintf(buff, "%s", cluster(nuh)); Address = buff; } @@ -4073,7 +4083,7 @@ { /* if the address doesnt have address stuff in it (!@ etc) */ if((target = FindNick(Address, UsersN))) { /* if theres a user on with that nick */ - sprintf(buff, "%s!%s@%s", target->Nick, target->UserID, target->Address); + sprintf(buff, "%s!%s@%s", target->Nick, ActiveUsername(target), ActiveHost(target)); Address = buff; send_to_user(uptr, "\002Searching for a mask matching: %s\002", Address); for(lptr = cptr->Lamers;lptr;lptr = lptr->Next) Index: x2/source/config.h diff -u x2/source/config.h:1.79 x2/source/config.h:1.80 --- x2/source/config.h:1.79 Sun Aug 22 12:10:42 2004 +++ x2/source/config.h Mon Aug 23 08:25:48 2004 @@ -47,7 +47,9 @@ #define VERSION "X2 v5.2 - AfterNET Channel Services" /* This is used to refer to your network in various places. It should be one word, eg "AfterNET" */ -#define NETWORK "AfterNET" +#define NETWORK "AfterNET" +#define HIDDEN_HOST "Users.AfterNET.Org" +#define HIDDEN_HOST_STAFF "Staff.AfterNET.Org" #define HELPURL "http://www.afternet.org/support/" #define OPERHELPFILE "HELP/operhelp.txt" @@ -68,7 +70,7 @@ /* Uncomment the following for debugging. */ -/* #define debugon */ + #define debugon /* If you dont want the word warez in channel names, define this. * TODO : This is a hack, and would do better in a config file. Do it! @@ -488,6 +490,9 @@ char Numnick[NUMNICKLEN]; char UserID[12]; char *Address; + char *Account; /* ircu +r account */ + char *Sethost; /* ircu +h sethost (S: lines) */ + char *Fakehost; /* ircu +f fakehost */ unsigned int IP; struct AuthHandleStruct *AuthHandles; /* A list of channel and handles were logged in as */ char *RealName; Index: x2/source/misc.c diff -u x2/source/misc.c:1.51 x2/source/misc.c:1.52 --- x2/source/misc.c:1.51 Sun Jul 4 13:42:19 2004 +++ x2/source/misc.c Mon Aug 23 08:25:48 2004 @@ -889,7 +889,7 @@ { char buff[MAXLEN]; - sprintf(buff, "%s!%s@%s", uptr->Nick, uptr->UserID, uptr->Address); + sprintf(buff, "%s!%s@%s", uptr->Nick, ActiveUsername(uptr), ActiveHost(uptr)); send_chanmode(cptr, "-ov+b %s %s %s", uptr->Numnick, uptr->Numnick, cluster(buff)); add_ban(cptr, cluster(buff)); } @@ -971,26 +971,7 @@ /* This will have to be reworked when the new domains are deploid */ tptr = &temp[strlen(temp) - 4]; /* Try to guess how many dots we need (minus one) */ - if(!strcasecmp(tptr, ".psi.net")) - { - numofdots = 4; - } - else if(!strcasecmp(tptr, "home.com") || - !strcasecmp(tptr, ".ar") || - !strcasecmp(tptr, ".ibm.net") || - !strcasecmp(tptr, ".uu.net")) - { - numofdots = 3; - } - else if(!strcasecmp(tptr, ".level3.net") || - !strcasecmp(tptr, ".texas.net") || - !strcasecmp(tptr, ".execpc.com") || - !strcasecmp(tptr, ".freei.net") || - !strcasecmp(tptr, ".rr.com")) - { - numofdots = 2; - } - else if (!strcasecmp(tptr, ".com") || + if ( !strcasecmp(tptr, ".com") || !strcasecmp(tptr, ".edu") || !strcasecmp(tptr, ".org") || !strcasecmp(tptr, ".net") || @@ -1003,7 +984,8 @@ !strcasecmp(tptr, ".no") || !strcasecmp(tptr, ".ca") || !strcasecmp(tptr, ".nu") || - !strcasecmp(tptr, ".fr")) + !strcasecmp(tptr, ".fr") + ) { numofdots = 1; } @@ -1011,6 +993,8 @@ { numofdots = 2; } + if(!matches("*.AfterNET.Org", fullhost)) + numofdots = 4; temp = fullhost; for (x = 0; x <= (strlen(fullhost) - 1); x++) { @@ -1596,3 +1580,49 @@ else return (Name); } + +char *ActiveHost(UserListType uptr) +{ + static char buff[MAXLEN]; + char *buffptr = buff; + if(uptr->Modes & UMODEh) + { + char *uname; + char *host; + strcpy(buff, uptr->Sethost); + uname = mysep(&buffptr, "@"); + host = mysep(&buffptr, "@"); + + return(host); + } + else if(uptr->Modes & UMODEf) + return(uptr->Fakehost); + else if(uptr->Modes & UMODEr) + { + if(uptr->Modes & UMODEo) + sprintf(buff, "%s.%s", uptr->Account, HIDDEN_HOST_STAFF); + else + sprintf(buff, "%s.%s", uptr->Account, HIDDEN_HOST); + return(buff); + } + else + return(uptr->Address); +} + +char *ActiveUsername(UserListType uptr) +{ + static char buff[MAXLEN]; + char *buffptr = buff; + if(uptr->Modes & UMODEh) + { + char *uname; + strcpy(buff, uptr->Sethost); + uname = mysep(&buffptr, "@"); + return(uname); + } + else + return(uptr->UserID); +} + + + Index: x2/source/misc.h diff -u x2/source/misc.h:1.20 x2/source/misc.h:1.21 --- x2/source/misc.h:1.20 Sun Jul 4 13:42:19 2004 +++ x2/source/misc.h Mon Aug 23 08:25:48 2004 @@ -71,3 +71,5 @@ unsigned int base64toint(const char *s); const char* inttobase64(char* buf, unsigned int v, unsigned int count); void LogAccess(UserListType uptr, char* item, int size); +char *ActiveHost(UserListType uptr); +char *ActiveUsername(UserListType uptr); Index: x2/source/parse.c diff -u x2/source/parse.c:1.92 x2/source/parse.c:1.93 --- x2/source/parse.c:1.92 Mon Jul 5 01:12:14 2004 +++ x2/source/parse.c Mon Aug 23 08:25:48 2004 @@ -89,11 +89,13 @@ { "WA", m_noop, TRUE, TRUE }, { "R", m_noop, TRUE, TRUE }, { "SE", m_settime, TRUE, FALSE }, - { "AC", m_noop, TRUE, FALSE }, /* not used in X2 */ + { "AC", m_account, TRUE, FALSE }, { "PRIVS", m_noop, TRUE, FALSE }, { "WU", m_noop, TRUE, TRUE }, { "LL", m_noop, TRUE, FALSE }, +#ifdef notdef { "SH", m_sethost, TRUE, FALSE }, +#endif { "FA", m_fakehost, TRUE, FALSE }, { "OM", m_noop, TRUE, TRUE }, { "CM", m_noop, TRUE, TRUE }, @@ -125,16 +127,54 @@ return true; } +/* This dont even exist.. it uses usermode */ +#ifdef notdef int m_sethost(M_PARAMS) { /* TODO: Change the host part of the structure */ return(0); } +#endif int m_fakehost(M_PARAMS) { - /* TODO: Change the host part of the structure */ - return(0); + char *numnick; + char *fakehost; + + numnick = mysep(&rest, " "); + fakehost = mysep(&rest, " "); + uptr = FindNumnick(numnick, UsersU); + if(!uptr) + { + Debug(DBGERROR, "Failed to find numnick %s in m_fakehost", numnick); + return(0); + } + uptr->Modes = uptr->Modes | UMODEf; + free(uptr->Fakehost); + uptr->Fakehost = malloc(strlen(fakehost)+1); + strcpy(uptr->Fakehost, fakehost); + return(0); +} +/* This is set when someone auths with srvx */ +/* It should set UMODEr and uptr->Account */ +int m_account(M_PARAMS) +{ + char *numnick; + char *account; + + numnick = mysep(&rest, " "); + account = mysep(&rest, " "); + uptr = FindNumnick(numnick, UsersU); + if(!uptr) + { + Debug(DBGERROR, "Failed to find numnick '%s' for AC '%s' (in m_account()) ", numnick, account); + return(0); + } + uptr->Modes = uptr->Modes | UMODEr; + free(uptr->Account); + uptr->Account = malloc(strlen(account) + 1); + strcpy(uptr->Account, account); + return(0); } int m_notice(M_PARAMS) @@ -418,9 +458,10 @@ int m_nick(M_PARAMS) { char* Arg[9]; - char* modes, *account, *sethost, *fakehost; + char* modes, *account = "", *sethost = "", *fakehost = ""; UserListType UserPtr; unsigned int IP; + char modestr[MAXLEN]; /* Built from parsing to pass to UserMode() */ Arg[0] = (char *) strtok(rest, " "); /* nick */ Arg[1] = (char *) strtok(NULL, " "); /* 1 */ @@ -440,20 +481,27 @@ Arg[3] = (char *) strtok(NULL, " "); /* userID */ Arg[4] = (char *) strtok(NULL, " "); /* address */ modes = (char *) strtok(NULL, " "); /* modes */ + strcpy(modestr, modes); if(modes[0] == '+') { Arg[5] = modes; if(strchr(modes, 'r')) { account = (char *) strtok(NULL, " "); /* This user has an account set from another service */ + strcat(modestr, " "); + strcat(modestr, account); } if(strchr(modes, 'h')) { sethost = (char *) strtok(NULL, " "); /* This user has an hidden hostmask (asuka/Nefarious only) */ + strcat(modestr, " "); + strcat(modestr, sethost); } if(strchr(modes, 'f')) { fakehost = (char *) strtok(NULL, " "); /* This user has an hidden hostmask (GameSurge/Nefarious only) */ + strcat(modestr, " "); + strcat(modestr, fakehost); } Arg[6] = (char *) strtok(NULL, " "); /* Compressed IP */ } @@ -475,14 +523,16 @@ Debug(DBGWARNING, "Incorrect syntax in NICK line"); return(0); } - UserPtr = AddUser(Arg[7], Arg[0], Arg[3], Arg[4], Arg[8], IP, sptr->Name, NOMODES); + UserPtr = AddUser(Arg[7], Arg[0], Arg[3], Arg[4], Arg[8], IP, sptr->Name, NOMODES, account, sethost, fakehost); if(!UserPtr) { Debug(DBGWARNING, "AddUser returned NULL for %s", Arg[0]); return(0); } - if(modes[0] == '+') - ProcessUserMode(UserPtr, modes); + + if(modes[0] == '+') + ProcessUserMode(UserPtr, modestr); + if(!NETBURSTING) SendMOTD(UserPtr); if(UserPtr) @@ -808,10 +858,10 @@ char* Arg[4]; Arg[0] = (char *) strtok(rest, " "); /* nick/channel */ - Arg[1] = (char *) strtok(NULL, " "); /* +/- mode */ if (Arg[0][0] == '#') { char buff[MAXLEN]; + Arg[1] = (char *) strtok(NULL, " "); /* +/- mode */ Arg[2] = (char *) strtok(NULL, " "); Arg[3] = (char *) strtok(NULL, "\n\0"); snprintf(buff, MAXLEN, "%s %s %s", Arg[1], Arg[2]?Arg[2]:"", Arg[3]?Arg[3]:""); @@ -822,7 +872,10 @@ on_mode(GetChannel(Arg[0]), NULL, buff); } else - ProcessUserMode(uptr, &Arg[1][1]); + { + Arg[1] = strtok(NULL, "\0"); + ProcessUserMode(uptr, Arg[1]); + } return (0); } int m_pong(M_PARAMS) @@ -1537,7 +1590,7 @@ } } AddUser(NumNick, IrcNick, IrcNick, "X2", ServiceName, - LOCALIP, ServiceName, (UMODEk & UMODEo)); + LOCALIP, ServiceName, (UMODEk & UMODEo),"","",""); ProcessUserMode(FindNick(IrcNick, UsersN), "+kows"); return; Index: x2/source/parse.h diff -u x2/source/parse.h:1.15 x2/source/parse.h:1.16 --- x2/source/parse.h:1.15 Sun Jul 4 13:42:19 2004 +++ x2/source/parse.h Mon Aug 23 08:25:48 2004 @@ -28,6 +28,9 @@ int m_quit(M_PARAMS); int m_kill(M_PARAMS); int m_squit(M_PARAMS); +#ifdef notdef int m_sethost(M_PARAMS); +#endif int m_fakehost(M_PARAMS); +int m_account(M_PARAMS); int m_logerror(M_PARAMS); Index: x2/source/user.c diff -u x2/source/user.c:1.36 x2/source/user.c:1.37 --- x2/source/user.c:1.36 Wed Jun 9 16:33:03 2004 +++ x2/source/user.c Mon Aug 23 08:25:48 2004 @@ -180,7 +180,7 @@ return (false); } -UserListType AddUser(char *Numnick, char *Nick, char *UserID, char *Address, char *RealName, unsigned int IP, char *Serv, unsigned char Modes) +UserListType AddUser(char *Numnick, char *Nick, char *UserID, char *Address, char *RealName, unsigned int IP, char *Serv, unsigned char Modes, char *Account, char *Sethost, char *Fakehost) { static int UserSegWarning = 1; UserListType NewUser, UserNode; @@ -210,6 +210,12 @@ return(NULL); if (!(NewUser->Address = (char *) malloc(strlen(Address) + 1))) return(NULL); + if (!(NewUser->Account = (char *) malloc(strlen(Account) + 1))) + return(NULL); + if (!(NewUser->Sethost = (char *) malloc(strlen(Sethost) + 1))) + return(NULL); + if (!(NewUser->Fakehost = (char *) malloc(strlen(Fakehost) + 1))) + return(NULL); if (!(NewUser->Serv = (char *) malloc(strlen(Serv) + 1))) return(NULL); if (!(NewUser->RealName = (char *) malloc(strlen(RealName) + 1))) @@ -218,6 +224,9 @@ UpdateCloneCount(CleanUserID, Address, CloneCount, UsersA); strcpy(NewUser->UserID, CleanUserID); strcpy(NewUser->Address, Address); + strcpy(NewUser->Account, Account); + strcpy(NewUser->Fakehost, Fakehost); + strcpy(NewUser->Sethost, Sethost); strcpy(NewUser->Serv, Serv); strcpy(NewUser->RealName, RealName); NewUser->IP = IP; @@ -472,7 +481,11 @@ if (ServPtr) ServPtr->NumOfUsers--; free(CurrPtrN->Address); + free(CurrPtrN->Account); + free(CurrPtrN->Fakehost); + free(CurrPtrN->Sethost); free(CurrPtrN->Serv); + free(CurrPtrN->RealName); free(CurrPtrN); } @@ -516,21 +529,26 @@ void ProcessUserMode(UserListType uptr, char *Modes) { -/* i'm not realy satisfied with the way this works */ char ch; char Operator = '+'; int len, i; unsigned int UserMode; + char *modestr; + char *sethost; + char *fakehost; + char *account; if (uptr == NULL) return; + modestr = mysep(&Modes, " "); + UserMode = NOMODES; - len = strlen(Modes); + len = strlen(modestr); for (i = 0; i < len; i++) { - ch = Modes[i]; + ch = modestr[i]; switch (ch) { case 'o': @@ -550,6 +568,20 @@ break; case 'h': UserMode = UMODEh; + if(Operator == '+') + { + /* Need to store the sethost! */ + sethost = mysep(&Modes, " "); + free(uptr->Sethost); /* Free the old one */ + uptr->Sethost = malloc(strlen(sethost) + 1); /* Make room */ + strcpy(uptr->Sethost, sethost); /* Copy it over */ + } + else + { + free(uptr->Sethost); + uptr->Sethost = malloc(2); + strcpy(uptr->Sethost, ""); + } break; case 'g': UserMode = UMODEg; @@ -559,9 +591,29 @@ break; case 'x': UserMode = UMODEx; + /* Can only be +, error on - */ break; case 'r': + /* Important NOTE: This is used for bursting, but after + * that m_account() gets called, which does the following + * itself (so look there too). + * Also note that -r doesnt ever really happen + */ UserMode = UMODEr; + if(Operator == '+') + { + /* Need to store the account */ + account = mysep(&Modes, " "); + free(uptr->Account); /* Free the old one */ + uptr->Account = malloc(strlen(account) + 1); + strcpy(uptr->Account, account); + } + else /* NEVER gets used. you cant unregister */ + { + free(uptr->Account); + uptr->Account = malloc(2); + strcpy(uptr->Account, ""); + } break; case 'B': UserMode = UMODEB; @@ -571,6 +623,21 @@ break; case 'f': UserMode = UMODEf; + if(Operator == '+') + { + /* Need to store teh fakehost! */ + fakehost = mysep(&Modes, " "); + free(uptr->Fakehost); + uptr->Fakehost = malloc(strlen(fakehost) + 1); + strcpy(uptr->Fakehost, fakehost); + } + else + { + free(uptr->Fakehost); + uptr->Fakehost = malloc(2); + strcpy(uptr->Fakehost, ""); + } + break; case '-': Operator = ch; break; Index: x2/source/user.h diff -u x2/source/user.h:1.12 x2/source/user.h:1.13 --- x2/source/user.h:1.12 Tue Jan 2 02:11:33 2001 +++ x2/source/user.h Mon Aug 23 08:25:48 2004 @@ -11,7 +11,7 @@ boolean IsOper(UserListType uptr); boolean IsGodOper(UserListType uptr); boolean IsOperByAdd(char *UserID, char *Address); -UserListType AddUser(char *Numnick, char *Nick, char *UserID, char *Address, char *RealName, unsigned int IP, char *Serv, unsigned char Modes); +UserListType AddUser(char *Numnick, char *Nick, char *UserID, char *Address, char *RealName, unsigned int IP, char *Serv, unsigned char Modes, char *Account, char *Sethost, char *Fakehost); void DeleteAllUsersByServer(char *ServerName); void DeleteUser(UserListType uptr, boolean sendnotice); void KillUserList(); ----------------------- End of diff ----------------------- |
From: Alex S. <ru...@us...> - 2004-08-22 19:11:04
|
Committer : Alex Schumann <ru...@us...> CVSROOT : /cvsroot/x2serv Module : x2 Commit time: 2004-08-22 19:10:53 UTC Modified files: source/commands.c source/config.h Log message: Removed server from ircops ---------------------- diff included ---------------------- Index: x2/source/commands.c diff -u x2/source/commands.c:1.184 x2/source/commands.c:1.185 --- x2/source/commands.c:1.184 Sun Jul 4 13:42:18 2004 +++ x2/source/commands.c Sun Aug 22 12:10:42 2004 @@ -103,9 +103,11 @@ { "DISCONNECT",c_disconnect, NONE, 0, 0, 0, T, F }, { "NETSTAT", c_netstat, NONE, 0, 0, 0, F, T }, { "NETSTATS", c_netstat, NONE, 0, 0, 0, F, T }, +/* not safe to show this anymore :( { "SERVERS", c_servers, NONE, 0, 0, 0, F, T }, { "LINKS", c_servers, NONE, 0, 0, 0, F, T }, { "MAP", c_map, NONE, 0, 0, 0, F, T }, +*/ { "RMAP", c_rmap, NONE, 0, 0, 0, T, T }, { "RLIST", c_rlist, NONE, 0, 0, 0, T, T }, { "ADDR", c_addr, NONE, 0, 0, 0, T, T }, @@ -4167,11 +4169,11 @@ { count++; if(ListPtr->Modes & UMODEaway) - send_to_user(uptr, "%16s : %s \002(Away)\002", - ListPtr->Nick, ListPtr->Serv); + send_to_user(uptr, "%16s : \002(Away)\002", + ListPtr->Nick); else - send_to_user(uptr, "\002%16s : %s\002", - ListPtr->Nick, ListPtr->Serv); + send_to_user(uptr, "\002%16s\002", + ListPtr->Nick); } } ListPtr = ListPtr->NextN; Index: x2/source/config.h diff -u x2/source/config.h:1.78 x2/source/config.h:1.79 --- x2/source/config.h:1.78 Sun Jul 4 13:42:19 2004 +++ x2/source/config.h Sun Aug 22 12:10:42 2004 @@ -68,7 +68,7 @@ /* Uncomment the following for debugging. */ - #define debugon +/* #define debugon */ /* If you dont want the word warez in channel names, define this. * TODO : This is a hack, and would do better in a config file. Do it! ----------------------- End of diff ----------------------- |
From: Neil S. <sir...@us...> - 2004-08-19 22:10:20
|
Committer : Code Monkey <sir...@us...> CVSROOT : /cvsroot/x2serv Module : srvx2 Commit time: 2004-08-19 22:10:09 UTC Modified files: src/chanserv.c src/chanserv.h src/chanserv.help src/hash.c src/hash.h src/modcmd.c src/modules-list.h src/opserv.c src/proto-common.c src/proto-p10.c Log message: stage one, half ops support ---------------------- diff included ---------------------- Index: srvx2/src/chanserv.c diff -u srvx2/src/chanserv.c:1.6 srvx2/src/chanserv.c:1.7 --- srvx2/src/chanserv.c:1.6 Mon Jun 28 15:45:20 2004 +++ srvx2/src/chanserv.c Thu Aug 19 15:09:58 2004 @@ -172,8 +172,9 @@ { "CSMSG_ILLEGAL_CHANNEL", "$b%s$b is an illegal channel, and cannot be registered." }, { "CSMSG_GODMODE_UP", "You may not use $b%s$b to op yourself unless you are on the user list. Use the $bop$b command instead." }, { "CSMSG_ALREADY_OPPED", "You are already opped in $b%s$b." }, + { "CSMSG_ALREADY_HALFOPPED", "You are already halfopped in $b%s$b." }, { "CSMSG_ALREADY_VOICED", "You are already voiced in $b%s$b." }, - { "CSMSG_ALREADY_DOWN", "You are not opped or voiced in $b%s$b." }, + { "CSMSG_ALREADY_DOWN", "You are not opped, halfopped, or voiced in $b%s$b." }, { "CSMSG_ALREADY_OPCHANNED", "There has been no net.join since the last opchan in $b%s$b." }, { "CSMSG_OPCHAN_DONE", "I have (re-)opped myself in $b%s$b." }, @@ -240,7 +241,8 @@ { "CSMSG_CONFIRM_DEFAULTS", "To reset %s's settings to the defaults, you must use 'set defaults %s'." }, { "CSMSG_SETTINGS_DEFAULTED", "All settings for %s have been reset to default values." }, { "CSMSG_BAD_SETLEVEL", "You cannot change any setting to above your level." }, - { "CSMSG_BAD_GIVEVOICE", "You cannot change GiveVoice to above GiveOps (%d)." }, + { "CSMSG_BAD_GIVEVOICE", "You cannot change GiveVoice to above GiveHalfOps (%d)." }, + { "CSMSG_BAD_GIVEHOPS", "You cannot change GiveHalfOps to below GiveOps (%d)." }, { "CSMSG_BAD_GIVEOPS", "You cannot change GiveOps to below GiveVoice (%d)." }, { "CSMSG_BAD_SETTERS", "You cannot change Setters to above your level." }, { "CSMSG_INVALID_MODE_LOCK", "$b%s$b is an invalid mode lock." }, @@ -255,9 +257,11 @@ { "CSMSG_SET_OFFCHANNEL", "$bOffChannel $b %s" }, { "CSMSG_SET_USERINFO", "$bUserInfo $b %d" }, { "CSMSG_SET_GIVE_VOICE", "$bGiveVoice $b %d" }, + { "CSMSG_SET_GIVE_HALFOPS", "$bGiveHalfOps $b %d" }, { "CSMSG_SET_TOPICSNARF", "$bTopicSnarf $b %d" }, { "CSMSG_SET_INVITEME", "$bInviteMe $b %d" }, { "CSMSG_SET_ENFOPS", "$bEnfOps $b %d" }, + { "CSMSG_SET_ENFHALFOPS", "$bEnfHalfOps $b %d" }, { "CSMSG_SET_GIVE_OPS", "$bGiveOps $b %d" }, { "CSMSG_SET_ENFMODES", "$bEnfModes $b %d" }, { "CSMSG_SET_ENFTOPIC", "$bEnfTopic $b %d" }, @@ -275,9 +279,12 @@ { "CSMSG_USER_PROTECTED", "Sorry, $b%s$b is protected." }, { "CSMSG_OPBY_LOCKED", "You may not op users who lack op or greater access." }, + { "CSMSG_HOPBY_LOCKED", "You may not halfop users who lack halfop or greater access." }, { "CSMSG_PROCESS_FAILED", "$b$C$b could not process some of the nicks you provided." }, { "CSMSG_OPPED_USERS", "Opped users in $b%s$b." }, + { "CSMSG_HALFOPPED_USERS", "Halfopped users in $b%s$b." }, { "CSMSG_DEOPPED_USERS", "Deopped users in $b%s$b." }, + { "CSMSG_DEHALFOPPED_USERS", "DeHalfopped users in $b%s$b." }, { "CSMSG_VOICED_USERS", "Voiced users in $b%s$b." }, { "CSMSG_DEVOICED_USERS", "Devoiced users in $b%s$b." }, { "CSMSG_PROTECT_ALL", "Non-users and users will be protected from those of equal or lower access." }, @@ -568,6 +575,7 @@ char ch; } accessLevels[] = { { "peon", "Peon", UL_PEON, '+' }, + { "halfop", "HalfOp", UL_HALFOP, '%' }, { "op", "Op", UL_OP, '@' }, { "manager", "Manager", UL_MANAGER, '%' }, { "coowner", "Coowner", UL_COOWNER, '*' }, @@ -584,8 +592,10 @@ unsigned short flag_value; } levelOptions[] = { { "CSMSG_SET_GIVE_VOICE", "givevoice", 100, ~0, CHANNEL_VOICE_ALL, 0 }, + { "CSMSG_SET_GIVE_HALFOPS", "givehalfops", 150, ~0, CHANNEL_HOP_ALL, 0 }, { "CSMSG_SET_GIVE_OPS", "giveops", 200, 2, 0, 0 }, { "CSMSG_SET_ENFOPS", "enfops", 300, 1, 0, 0 }, + { "CSMSG_SET_ENFHALFOPS", "enfhalfops", 300, 1, 0, 0 }, { "CSMSG_SET_ENFMODES", "enfmodes", 200, 3, 0, 0 }, { "CSMSG_SET_ENFTOPIC", "enftopic", 200, 4, 0, 0 }, { "CSMSG_SET_PUBCMD", "pubcmd", 0, 5, 0, 0 }, @@ -1438,6 +1448,24 @@ } static int +validate_halfop(struct userNode *user, struct chanNode *channel, struct userNode *victim) +{ + struct chanData *cData = channel->channel_info; + struct userData *cs_victim; + + if((!(cs_victim = GetChannelUser(cData, victim->handle_info)) + || (cs_victim->access < cData->lvlOpts[lvlGiveHalfOps])) + && !check_user_level(channel, user, lvlEnfHalfOps, 0, 0)) + { + send_message(user, chanserv, "CSMSG_HOPBY_LOCKED"); + return 0; + } + + return 1; +} + + +static int validate_deop(struct userNode *user, struct chanNode *channel, struct userNode *victim) { if(IsService(victim)) @@ -1455,6 +1483,24 @@ return 1; } +static int +validate_dehop(struct userNode *user, struct chanNode *channel, struct userNode *victim) +{ + if(IsService(victim)) + { + send_message(user, chanserv, "MSG_SERVICE_IMMUNE", victim->nick); + return 0; + } + + if(protect_user(victim, user, channel->channel_info)) + { + send_message(user, chanserv, "CSMSG_USER_PROTECTED", victim->nick); + return 0; + } + + return 1; +} + static struct do_not_register * chanserv_add_dnr(const char *chan_name, const char *setter, const char *reason) { @@ -2374,6 +2420,12 @@ return cmd_mdel_user(user, channel, UL_PEON, UL_PEON, argv[1], cmd); } +static CHANSERV_FUNC(cmd_mdelhalfop) +{ + return cmd_mdel_user(user, channel, UL_HALFOP, UL_HALFOP, argv[1], cmd); +} + + static int cmd_trim_bans(struct userNode *user, struct chanNode *channel, unsigned long duration) { @@ -2518,6 +2570,11 @@ change.args[0].mode = MODE_CHANOP; errmsg = "CSMSG_ALREADY_OPPED"; } + else if(uData->access >= channel->channel_info->lvlOpts[lvlGiveHalfOps]) + { + change.args[0].mode = MODE_HALFOP; + errmsg = "CSMSG_ALREADY_HALFOPPED"; + } else if(uData->access >= channel->channel_info->lvlOpts[lvlGiveVoice]) { change.args[0].mode = MODE_VOICE; @@ -2635,11 +2692,21 @@ return modify_users(CSFUNC_ARGS, validate_op, MODE_CHANOP, "CSMSG_OPPED_USERS"); } +static CHANSERV_FUNC(cmd_hop) +{ + return modify_users(CSFUNC_ARGS, validate_halfop, MODE_HALFOP, "CSMSG_HALFOPPED_USERS"); +} + static CHANSERV_FUNC(cmd_deop) { return modify_users(CSFUNC_ARGS, validate_deop, MODE_REMOVE|MODE_CHANOP, "CSMSG_DEOPPED_USERS"); } +static CHANSERV_FUNC(cmd_dehop) +{ + return modify_users(CSFUNC_ARGS, validate_dehop, MODE_REMOVE|MODE_HALFOP, "CSMSG_DEHALFOPPED_USERS"); +} + static CHANSERV_FUNC(cmd_voice) { return modify_users(CSFUNC_ARGS, NULL, MODE_VOICE, "CSMSG_VOICED_USERS"); @@ -2913,7 +2980,7 @@ change = mod_chanmode_alloc(victimCount + 1); for(n = 0; n < victimCount; ++n) { - change->args[n].mode = MODE_REMOVE|MODE_CHANOP|MODE_VOICE; + change->args[n].mode = MODE_REMOVE|MODE_CHANOP|MODE_HALFOP|MODE_VOICE; change->args[n].member = victims[n]; } if(!exists) @@ -3206,6 +3273,8 @@ { if(uData->access >= cData->lvlOpts[lvlGiveOps]) string_buffer_append(&sbuf, 'o'); + else if(uData->access >= cData->lvlOpts[lvlGiveHalfOps]) + string_buffer_append(&sbuf, 'h'); else if(uData->access >= cData->lvlOpts[lvlGiveVoice]) string_buffer_append(&sbuf, 'v'); } @@ -3531,9 +3600,14 @@ return cmd_list_users(CSFUNC_ARGS, UL_OP, UL_MANAGER-1); } +static CHANSERV_FUNC(cmd_hlist) +{ + return cmd_list_users(CSFUNC_ARGS, UL_HALFOP, UL_OP-1); +} + static CHANSERV_FUNC(cmd_plist) { - return cmd_list_users(CSFUNC_ARGS, 1, UL_OP-1); + return cmd_list_users(CSFUNC_ARGS, 1, UL_HALFOP-1); } static CHANSERV_FUNC(cmd_bans) @@ -4093,6 +4167,25 @@ changes->args[used++].member = mn; } } + else if(!cData->lvlOpts[lvlGiveHalfOps] + || (uData && uData->access >= cData->lvlOpts[lvlGiveHalfOps])) + { + if(!(mn->modes & MODE_HALFOP)) + { + changes->args[used].mode = MODE_HALFOP; + changes->args[used++].member = mn; + } + if(mn->modes & MODE_CHANOP) + { + changes->args[used].mode = MODE_REMOVE | (mn->modes & ~MODE_CHANOP); + changes->args[used++].member = mn; + } + if(mn->modes & MODE_VOICE) + { + changes->args[used].mode = MODE_REMOVE | (mn->modes & ~MODE_VOICE); + changes->args[used++].member = mn; + } + } else if(!cData->lvlOpts[lvlGiveVoice] || (uData && uData->access >= cData->lvlOpts[lvlGiveVoice])) { @@ -4101,6 +4194,11 @@ changes->args[used].mode = MODE_REMOVE | (mn->modes & ~MODE_VOICE); changes->args[used++].member = mn; } + if(mn->modes & MODE_HALFOP) + { + changes->args[used].mode = MODE_REMOVE | (mn->modes & ~MODE_VOICE); + changes->args[used++].member = mn; + } if(!(mn->modes & MODE_VOICE)) { changes->args[used].mode = MODE_VOICE; @@ -5049,6 +5147,13 @@ return 0; } break; + case lvlGiveHalfOps: + if(value < cData->lvlOpts[lvlGiveVoice]) + { + reply("CSMSG_BAD_GIVEHOPS", cData->lvlOpts[lvlGiveHalfOps]); + return 0; + } + break; case lvlGiveOps: if(value < cData->lvlOpts[lvlGiveVoice]) { @@ -5081,11 +5186,21 @@ return channel_level_option(lvlEnfOps, CSFUNC_ARGS); } +static MODCMD_FUNC(chan_opt_enfhalfops) +{ + return channel_level_option(lvlEnfHalfOps, CSFUNC_ARGS); +} + static MODCMD_FUNC(chan_opt_giveops) { return channel_level_option(lvlGiveOps, CSFUNC_ARGS); } +static MODCMD_FUNC(chan_opt_givehalfops) +{ + return channel_level_option(lvlGiveHalfOps, CSFUNC_ARGS); +} + static MODCMD_FUNC(chan_opt_enfmodes) { return channel_level_option(lvlEnfModes, CSFUNC_ARGS); @@ -5902,6 +6017,8 @@ } else if(cData->lvlOpts[lvlGiveOps] == 0) modes |= MODE_CHANOP; + else if(cData->lvlOpts[lvlGiveHalfOps] == 0) + modes |= MODE_HALFOP; else if(cData->lvlOpts[lvlGiveVoice] == 0) modes |= MODE_VOICE; @@ -5931,6 +6048,8 @@ { if(uData->access >= cData->lvlOpts[lvlGiveOps]) modes |= MODE_CHANOP; + if(uData->access >= cData->lvlOpts[lvlGiveHalfOps]) + modes |= MODE_HALFOP; else if(uData->access >= cData->lvlOpts[lvlGiveVoice]) modes |= MODE_VOICE; } @@ -5951,8 +6070,10 @@ { if(modes) { - if(modes & MODE_CHANOP) + if(modes & MODE_CHANOP) { + modes &= ~MODE_HALFOP; modes &= ~MODE_VOICE; + } change.args[0].mode = modes; change.args[0].member = mNode; mod_chanmode_announce(chanserv, channel, &change); @@ -6005,6 +6126,8 @@ { if(channel->access >= cn->channel_info->lvlOpts[lvlGiveOps]) change.args[0].mode = MODE_CHANOP; + else if(channel->access >= cn->channel_info->lvlOpts[lvlGiveHalfOps]) + change.args[0].mode = MODE_HALFOP; else if(channel->access >= cn->channel_info->lvlOpts[lvlGiveVoice]) change.args[0].mode = MODE_VOICE; else @@ -6023,7 +6146,7 @@ struct chanNode *channel = user->channels.list[ii]->channel; struct banData *ban; - if((user->channels.list[ii]->modes & (MODE_CHANOP|MODE_VOICE)) + if((user->channels.list[ii]->modes & (MODE_CHANOP|MODE_HALFOP|MODE_VOICE)) || !channel->channel_info) continue; for(jj = 0; jj < channel->banlist.used; ++jj) @@ -6237,7 +6360,7 @@ { channel = user->channels.list[ii]->channel; /* Need not check for bans if they're opped or voiced. */ - if(user->channels.list[ii]->modes & (MODE_CHANOP|MODE_VOICE)) + if(user->channels.list[ii]->modes & (MODE_CHANOP|MODE_HALFOP|MODE_VOICE)) continue; /* Need not check for bans unless channel registration is active. */ if(!channel->channel_info || IsSuspended(channel->channel_info)) @@ -6411,8 +6534,8 @@ /* free form text */ "DefaultTopic", "TopicMask", "Greeting", "UserGreeting", "Modes", /* options based on user level */ - "PubCmd", "InviteMe", "UserInfo", "GiveVoice", "GiveOps", "EnfOps", - "EnfModes", "EnfTopic", "TopicSnarf", "Setters", "CtcpUsers", + "PubCmd", "InviteMe", "UserInfo", "GiveVoice", "GiveHalfOps", "GiveOps", "EnfOps", + "EnfHalfOps", "EnfModes", "EnfTopic", "TopicSnarf", "Setters", "CtcpUsers", /* multiple choice options */ "CtcpReaction", "Protect", "Toys", "TopicRefresh", /* binary options */ @@ -6690,6 +6813,7 @@ case 'n': lvl = UL_OWNER+1; break; case 'o': lvl = UL_OP; break; case 'p': lvl = UL_PEON; break; + case 'h': lvl = UL_HALFOP; break; case 'w': lvl = UL_OWNER; break; default: lvl = 0; break; } @@ -7146,6 +7270,7 @@ DEFINE_COMMAND(mdelmanager, 2, MODCMD_REQUIRE_CHANUSER, "access", "coowner", NULL); DEFINE_COMMAND(mdelop, 2, MODCMD_REQUIRE_CHANUSER, "access", "manager", NULL); DEFINE_COMMAND(mdelpeon, 2, MODCMD_REQUIRE_CHANUSER, "access", "manager", NULL); + DEFINE_COMMAND(mdelhalfop, 2, MODCMD_REQUIRE_CHANUSER, "access", "manager", NULL); DEFINE_COMMAND(trim, 3, MODCMD_REQUIRE_CHANUSER, "access", "manager", NULL); DEFINE_COMMAND(opchan, 1, MODCMD_REQUIRE_REGCHAN|MODCMD_NEVER_CSUSPEND, "access", "1", NULL); @@ -7156,8 +7281,10 @@ DEFINE_COMMAND(down, 1, MODCMD_REQUIRE_REGCHAN, NULL); DEFINE_COMMAND(upall, 1, MODCMD_REQUIRE_AUTHED, NULL); DEFINE_COMMAND(downall, 1, MODCMD_REQUIRE_AUTHED, NULL); + DEFINE_COMMAND(hop, 2, MODCMD_REQUIRE_CHANNEL, "access", "op", NULL); DEFINE_COMMAND(op, 2, MODCMD_REQUIRE_CHANNEL, "access", "op", NULL); DEFINE_COMMAND(deop, 2, MODCMD_REQUIRE_CHANNEL, "template", "op", NULL); + DEFINE_COMMAND(dehop, 2, MODCMD_REQUIRE_CHANNEL, "template", "op", NULL); DEFINE_COMMAND(voice, 2, MODCMD_REQUIRE_CHANNEL, "template", "op", NULL); DEFINE_COMMAND(devoice, 2, MODCMD_REQUIRE_CHANNEL, "template", "op", NULL); @@ -7192,6 +7319,7 @@ DEFINE_COMMAND(clist, 1, MODCMD_REQUIRE_REGCHAN, "flags", "+nolog,+joinable", NULL); DEFINE_COMMAND(mlist, 1, MODCMD_REQUIRE_REGCHAN, "flags", "+nolog,+joinable", NULL); DEFINE_COMMAND(olist, 1, MODCMD_REQUIRE_REGCHAN, "flags", "+nolog,+joinable", NULL); + DEFINE_COMMAND(hlist, 1, MODCMD_REQUIRE_REGCHAN, "flags", "+nolog,+joinable", NULL); DEFINE_COMMAND(plist, 1, MODCMD_REQUIRE_REGCHAN, "flags", "+nolog,+joinable", NULL); DEFINE_COMMAND(info, 1, MODCMD_REQUIRE_REGCHAN, "flags", "+nolog,+joinable", NULL); DEFINE_COMMAND(seen, 2, MODCMD_REQUIRE_REGCHAN, "flags", "+nolog,+joinable", NULL); @@ -7226,7 +7354,9 @@ DEFINE_CHANNEL_OPTION(usergreeting); DEFINE_CHANNEL_OPTION(modes); DEFINE_CHANNEL_OPTION(enfops); + DEFINE_CHANNEL_OPTION(enfhalfops); DEFINE_CHANNEL_OPTION(giveops); + DEFINE_CHANNEL_OPTION(givehalfops); DEFINE_CHANNEL_OPTION(protect); DEFINE_CHANNEL_OPTION(enfmodes); DEFINE_CHANNEL_OPTION(enftopic); Index: srvx2/src/chanserv.h diff -u srvx2/src/chanserv.h:1.3 srvx2/src/chanserv.h:1.4 --- srvx2/src/chanserv.h:1.3 Sat Jun 26 14:23:22 2004 +++ srvx2/src/chanserv.h Thu Aug 19 15:09:58 2004 @@ -25,6 +25,7 @@ enum UL_ALIASES { UL_PEON = 100, + UL_HALFOP = 150, UL_OP = 200, UL_MANAGER = 300, UL_PRESENT = UL_MANAGER, @@ -35,8 +36,10 @@ enum levelOption { lvlGiveVoice, + lvlGiveHalfOps, lvlGiveOps, lvlEnfOps, + lvlEnfHalfOps, lvlEnfModes, lvlEnfTopic, lvlPubCmd, @@ -60,11 +63,14 @@ #define CHANNEL_SUSPENDED 0x00000002 /* (1 << 1) */ #define CHANNEL_INFO_LINES 0x00000004 /* (1 << 2) - DEPRECATED */ #define CHANNEL_VOICE_ALL 0x00000008 /* (1 << 3) - DEPRECATED */ + /* No longer used. */ /* (1 << 4) */ #define CHANNEL_DYNAMIC_LIMIT 0x00000020 /* (1 << 5) */ #define CHANNEL_TOPIC_SNARF 0x00000040 /* (1 << 6) - DEPRECATED */ #define CHANNEL_PEON_INVITE 0x00000080 /* (1 << 7) - DEPRECATED */ #define CHANNEL_OFFCHANNEL 0x00000100 /* (1 << 8) */ +#define CHANNEL_HOP_ALL 0x00000200 /* (1 << 9) */ + /* Flags with values over 0x20000000 or (1 << 29) will not work * because chanData.flags is a 30-bit field. */ Index: srvx2/src/chanserv.help diff -u srvx2/src/chanserv.help:1.5 srvx2/src/chanserv.help:1.6 --- srvx2/src/chanserv.help:1.5 Mon Jun 28 15:45:21 2004 +++ srvx2/src/chanserv.help Thu Aug 19 15:09:58 2004 @@ -23,6 +23,7 @@ " $bCLIST$b Show all COOWNERs of a channel.", " $bMLIST$b Show all MANAGERs of a channel.", " $bOLIST$b Show all OPs of a channel.", + " $bHLIST$b Show all HALFOPs of a channel.", " $bPLIST$b Show all PEONs of a channel.", " $bBANS$b Show all $ulasting$u bans in a channel.", " $bACCESS$b Check someone's access level in a channel.", @@ -31,6 +32,7 @@ " $bSEEN$b Find out the last time a user was in a channel.", "$b$b", " $bADDPEON$b Add a user as a PEON in a channel.", + " $bADDHOP$b Add a user as an HALFOP in a channel.", " $bADDOP$b Add a user as an OP in a channel.", " $bADDMANAGER$b Add a user as a MANAGER in a channel.", " $bADDCOOWNER$b Add a user as COOWNER in a channel.", @@ -42,6 +44,7 @@ " $bMDELCOOWNER$b Mass-delete coowners with accounts matching a mask.", " $bMDELMANAGER$b Mass-delete managers with accounts matching a mask.", " $bMDELOP$b Mass-delete ops with accounts matching a mask.", + " $bMDELHOP$b Mass-delete halfops with accounts matching a mask.", " $bMDELPEON$b Mass-delete peons with accounts matching a mask.", " $bDELBAN$b Remove the specified $upermanent$u ban from memory.", " $bWIPEINFO$b Remove a lower-ranked user's infoline.", @@ -69,6 +72,8 @@ " $bDOWNALL$b Remove your ops in all channels.", " $bOP$b Give ops to the specified user.", " $bDEOP$b Remove ops from the specified user.", + " $bHOP$b Give halfops to the specified user.", + " $bDEHOP$b Remove halfops from the specified user.", " $bVOICE$b Give voice to the specified user.", " $bDEVOICE$b Remove voice from the specified user.", " $bRESYNC$b Synchronize ops and voice with the channel userlist.", @@ -186,6 +191,9 @@ "ADDOP" ("/msg $C ADDOP <#channel> <nick|*account>", "This command adds someone to the channel user list with OP access level. (You may only add users to levels less than your own.)", "$uSee Also:$u adduser, deluser, users"); +"ADDHOP" ("/msg $C ADDHOP <#channel> <nick|*account>", + "This command adds someone to the channel user list with HALFOP access level. (You may only add users to levels less than your own.)", + "$uSee Also:$u adduser, deluser, users"); "ADDTIMEDBAN" ("/msg $C ADDTIMEDBAN <#channel> <mask|nick> <Duration> [Reason]", "Adds an automatically expiring ban to the channel ban list. This command behaves in the exact same fashion as ADDBAN with the exception that the bans are automatically removed after the user-supplied duration. If it exactly matches an existing ban already in the list, the reason will be updated. If the existing ban was a timed ban, it will be extended. Timed bans can be removed with the DELBAN command, as with permanent bans.", "$uSee Also:$u addban, bans, delban, durations"); @@ -254,11 +262,14 @@ "DEOP" ("/msg $C DEOP <#channel> <nick> [nick]...", "Deops the specified user[s].", "$uSee Also:$u down, op"); +"DEHOP" ("/msg $C DEHOP <#channel> <nick> [nick]...", + "Dehalfops the specified user[s].", + "$uSee Also:$u down, hop"); "DEVOICE" ("/msg $C DEVOICE <#channel> <nick> [nick]...", "This command will make $C devoice the selected user[s].", "$uSee Also:$u addpeon, delpeon, deop, voice"); "DOWN" ("/msg $C DOWN <#channel>", - "This command will devoice/deop you in the selected channel.", + "This command will devoice/dehalfop/deop you in the selected channel.", "$uSee Also:$u downall, up, upall"); "DOWNALL" ("/msg $C DOWNALL", "Executes the $bdown$b command for each channel you have access to.", @@ -281,6 +292,12 @@ "HELPERS" ("/msg $C HELPERS", "Lists all the helpers currently online. Nicknames enclosed in parentheses are away, and likely unavailable.", "$uSee Also:$u staff"); +"HLIST" ("/msg $C HLIST <#channel> [mask]", + "This command lists all users of level $bHalfop$b on a channel's userlist. If a mask is supplied, only halfops matching the mask will be shown.", + "$uSee Also:$u addhop, delhop, mdelhop, users"); +"HOP" ("/msg $C HOP <#channel> <nick> [nick]...", + "This command makes $C halfop the specified user.", + "$uSee Also:$u addhop, delhop, dehop"); "INFO" ("/msg $C INFO <#channel>", "This command responds with various pieces of information about a channel's users, status, and registration."); "INVITE" ("/msg $C INVITE <#channel> [nick [reason]]", @@ -299,6 +316,8 @@ "MDELCOOWNER" ("/msg $C MDELCOOWNER <#channel> <pattern>", "Deletes all coowners with accounts matching the given pattern from the channel user list.", "$uSee Also:$u clist, delcoowner"); +"MDELHOP" ("/msg $C MDELHOP <#channel> <pattern>", + "Deletes all halfops with accounts matching the given pattern from the channel user list."); "MDELMANAGER" ("/msg $C MDELMANAGER <#channel> <pattern>", "Deletes all managers with accounts matching the given pattern from the channel user list.", "$uSee Also:$u mdelban, mdelcoowner, mdelop, mdelowner, mdelpeon"); @@ -399,8 +418,10 @@ "INVITEME: Minimum level for users to use INVITEME or AUTOINVITE.", "USERINFO: Minimum level for users to show an infoline on join.", "GIVEVOICE: The users that $b$C$b will autovoice.", + "GIVEHOPS: The users that $b$C$b will autohalfop.", "GIVEOPS: The users that $b$C$b will autoop.", "ENFOPS: Restrictions for opping users.", + "ENFHALFOPS: Restrictions for halfopping users.", "ENFMODES: Restrictions to change the default modes.", "ENFTOPIC: Restrictions on changing the topic.", "TOPICSNARF: Topics set manually (by /TOPIC #channel ...) by users this level and above change the default $b$C$b topic.", @@ -414,7 +435,7 @@ "$bIRCOP ONLY$b:", "NODELETE: Prevents channel deletion.", "If you wish to reset your channel to the default settings, you can use the $bSET DEFAULTS$b command.", - "$uSee Also:$u set pubcmd, set giveops, set enfops, set enfmodes, set enftopic, set protect, set toys, set setters, set topicrefresh, set ctcpusers, set ctcpreaction, set defaults"); + "$uSee Also:$u set pubcmd, set giveops, set givehalfops, set enfops, set enfhalfops, set enfmodes, set enftopic, set protect, set toys, set setters, set topicrefresh, set ctcpusers, set ctcpreaction, set defaults"); "SET DEFAULTTOPIC" ("/msg $C SET <#channel> DEFAULTTOPIC <New default topic>", "This changes the default topic for the channel. $C will set the IRC topic to this value when the $btopic$b command is used with no arguments, when the topic refresh happens (if you have $bset topicrefresh$b), or when an unauthorized user changes the topic to something else.", "$uSee Also:$u set, set topicrefresh, set enftopic, set topicmask"); @@ -436,9 +457,15 @@ "SET ENFOPS" ("/msg $C SET <#channel> ENFOPS <value>", "This setting restricts who may op users who are not at least ops on the userlist. If $C sees someone with access below the specified access op someone not on the userlist (or who is a peon), it will deop the second user. It is a numeric user level, or 501 to mean no one may op unrecognized users.", "$uSee Also:$u set"); +"SET ENFHALFOPS" ("/msg $C SET <#channel> ENFHALFOPS <value>", + "This setting restricts who may halfop users who are not at least halfops on the userlist. If $C sees someone with access below the specified access halfop someone not on the userlist (or who is a peon), it will dehalfop the second user. It is a numeric user level, or 501 to mean no one may op unrecognized users.", + "$uSee Also:$u set"); "SET GIVEOPS" ("/msg $C SET <#channel> GIVEOPS <value>", "This setting restricts the minimum access someone must be to be automatically op'ed by $C. It is a numeric user level.", "$uSee Also:$u set"); +"SET GIVEHOPS" ("/msg $C SET <#channel> GIVEHOPS <value>", + "This setting restricts the minimum access someone must be to be automatically halfop'ed by $C. It is a numeric user level.", + "$uSee Also:$u set"); "SET ENFMODES" ("/msg $C SET <#channel> ENFMODES <value>", "This setting restricts the minimum access someone must have to change the channel modes from what is specified in the channel settings. It is a numeric user level, or 501 to mean no one may override the default modes.", "$uSee Also:$u set"); @@ -511,7 +538,7 @@ "Displays up to a certain limit, all channels registered with $b$C$b that have not been visited within a certain duration. If a duration is not provided, a default will be used.", "$uSee Also:$u expire, search, durations"); "UP" ("/msg $C UP <#channel>", - "Grants you your normal channel privileges. If your access in the channel is less than the GiveVoice setting, this does nothing. Otherwise, if your access is less than the GiveOps setting, $b$C$b will give you voice. If your access is at least GiveOps, $b$C$b will give you ops."); + "Grants you your normal channel privileges. If your access in the channel is less than the GiveVoice setting, this does nothing. Otherwise, if your access is less than the GiveOps setting, $b$C$b will give you an halfop. If your access is as GiveHalfOps, $b$C$b will give you halfops. If your access is at least GiveOps, $b$C$b will give you ops."); "UPALL" ("/msg $C UPALL", "Executes the $bup$b command for each channel you have access in.", "$uSee Also:$u up, down, downall"); Index: srvx2/src/hash.c diff -u srvx2/src/hash.c:1.1.1.1 srvx2/src/hash.c:1.2 --- srvx2/src/hash.c:1.1.1.1 Thu Jun 3 10:13:59 2004 +++ srvx2/src/hash.c Thu Aug 19 15:09:58 2004 @@ -315,6 +315,7 @@ if ((mn->modes & MODE_CHANOP) && IsService(mn->user) && IsLocal(mn->user)) argc++; } + if (argc) { struct mod_chanmode *change; Index: srvx2/src/hash.h diff -u srvx2/src/hash.h:1.3 srvx2/src/hash.h:1.4 --- srvx2/src/hash.h:1.3 Mon Jun 14 00:32:05 2004 +++ srvx2/src/hash.h Thu Aug 19 15:09:58 2004 @@ -48,6 +48,7 @@ #define MODE_NOQUITMSGS 0x00100000 /* +Q suppress messages from quit notices */ #define MODE_NOAMSG 0x00200000 /* +T no multi-target messages */ #define MODE_SSLONLY 0x00400000 /* +z ssl only */ +#define MODE_HALFOP 0x00800000 /* +h USER */ #define MODE_REMOVE 0x80000000 #define FLAGS_OPER 0x0001 /* Operator +O */ Index: srvx2/src/modcmd.c diff -u srvx2/src/modcmd.c:1.2 srvx2/src/modcmd.c:1.3 --- srvx2/src/modcmd.c:1.2 Thu Jun 3 16:34:03 2004 +++ srvx2/src/modcmd.c Thu Aug 19 15:09:58 2004 @@ -2325,6 +2325,7 @@ service_make_alias(service, "addcoowner", "*chanserv.adduser", "$1", "coowner", NULL); service_make_alias(service, "addmanager", "*chanserv.adduser", "$1", "manager", NULL); service_make_alias(service, "addop", "*chanserv.adduser", "$1", "op", NULL); + service_make_alias(service, "addhop", "*chanserv.adduser", "$1", "halfop", NULL); service_make_alias(service, "addpeon", "*chanserv.adduser", "$1", "peon", NULL); service_make_alias(service, "delowner", "*chanserv.deluser", "owner", "$1", NULL); service_make_alias(service, "delcoowner", "*chanserv.deluser", "coowner", "$1", NULL); Index: srvx2/src/modules-list.h diff -u srvx2/src/modules-list.h:1.4 srvx2/src/modules-list.h:1.5 --- srvx2/src/modules-list.h:1.4 Fri Jul 23 11:56:59 2004 +++ srvx2/src/modules-list.h Thu Aug 19 15:09:58 2004 @@ -1,3 +1 @@ -WITH_MODULE(snoop) -WITH_MODULE(memoserv) Index: srvx2/src/opserv.c diff -u srvx2/src/opserv.c:1.2 srvx2/src/opserv.c:1.3 --- srvx2/src/opserv.c:1.2 Thu Jun 10 13:14:33 2004 +++ srvx2/src/opserv.c Thu Aug 19 15:09:58 2004 @@ -101,6 +101,8 @@ { "OSMSG_NO_CHANNEL_MODES", "Channel $b%s$b had no modes to clear." }, { "OSMSG_DEOP_DONE", "Deopped the requested lusers." }, { "OSMSG_DEOPALL_DONE", "Deopped everyone on $b%s$b." }, + { "OSMSG_DEHOP_DONE", "Dehalfopped the requested lusers." }, + { "OSMSG_DEHOPALL_DONE", "Dehalfopped everyone on $b%s$b." }, { "OSMSG_NO_DEBUG_CHANNEL", "No debug channel has been configured." }, { "OSMSG_INVITE_DONE", "Invited $b%s$b to $b%s$b." }, { "OSMSG_ALREADY_THERE", "You are already in $b%s$b." }, @@ -112,6 +114,8 @@ { "OSMSG_MODE_SET", "I have set the modes for $b%s$b." }, { "OSMSG_OP_DONE", "Opped the requested lusers." }, { "OSMSG_OPALL_DONE", "Opped everyone on $b%s$b." }, + { "OSMSG_HOP_DONE", "Halfopped the requested lusers." }, + { "OSMSG_HOPALL_DONE", "Halfopped everyone on $b%s$b." }, { "OSMSG_WHOIS_IDENT", "%s (%s@%s) from %d.%d.%d.%d" }, { "OSMSG_WHOIS_NICK", "Nick : %s" }, { "OSMSG_WHOIS_HOST", "Host : %s@%s" }, @@ -177,6 +181,7 @@ { "OSMSG_CLONE_JOINED", "$b%s$b has joined $b%s$b." }, { "OSMSG_CLONE_PARTED", "$b%s$b has left $b%s$b." }, { "OSMSG_OPS_GIVEN", "I have given ops in $b%s$b to $b%s$b." }, + { "OSMSG_HOPS_GIVEN", "I have given halfops in $b%s$b to $b%s$b." }, { "OSMSG_CLONE_SAID", "$b%s$b has spoken to $b%s$b." }, { "OSMSG_UNKNOWN_SUBCOMMAND", "$b%s$b is not a valid subcommand of $b%s$b." }, { "OSMSG_UNKNOWN_OPTION", "$b%s$b has not been set." }, @@ -461,13 +466,18 @@ send_message_type(4, user, cmd->parent->bot, " @%s (%s@%s)", moden->user->nick, moden->user->ident, moden->user->hostname); } for (n=0; n<channel->members.used; n++) { + moden = channel->members.list[n]; + if ((moden->modes & (MODE_CHANOP|MODE_HALFOP|MODE_VOICE)) == MODE_HALFOP) + send_message_type(4, user, cmd->parent->bot, " %s%s (%s@%s)", "%", moden->user->nick, moden->user->ident, moden->user->hostname); + } + for (n=0; n<channel->members.used; n++) { moden = channel->members.list[n]; - if ((moden->modes & (MODE_CHANOP|MODE_VOICE)) == MODE_VOICE) + if ((moden->modes & (MODE_CHANOP|MODE_HALFOP|MODE_VOICE)) == MODE_VOICE) send_message_type(4, user, cmd->parent->bot, " +%s (%s@%s)", moden->user->nick, moden->user->ident, moden->user->hostname); } for (n=0; n<channel->members.used; n++) { moden = channel->members.list[n]; - if ((moden->modes & (MODE_CHANOP|MODE_VOICE)) == 0) + if ((moden->modes & (MODE_CHANOP|MODE_HALFOP|MODE_VOICE)) == 0) send_message_type(4, user, cmd->parent->bot, " %s (%s@%s)", moden->user->nick, moden->user->ident, moden->user->hostname); } return 1; @@ -570,6 +580,31 @@ return 1; } +static MODCMD_FUNC(cmd_dehop) +{ + struct mod_chanmode *change; + unsigned int arg, count; + + change = mod_chanmode_alloc(argc-1); + for (arg = 1, count = 0; arg < argc; ++arg) { + struct userNode *victim = GetUserH(argv[arg]); + struct modeNode *mn; + if (!victim || IsService(victim) + || !(mn = GetUserMode(channel, victim)) + || !(mn->modes & MODE_HALFOP)) + continue; + change->args[count].mode = MODE_REMOVE | MODE_HALFOP; + change->args[count++].member = mn; + } + if (count) { + change->argc = count; + modcmd_chanmode_announce(change); + } + mod_chanmode_free(change); + reply("OSMSG_DEHOP_DONE"); + return 1; +} + static MODCMD_FUNC(cmd_deopall) { struct mod_chanmode *change; @@ -592,6 +627,28 @@ return 1; } +static MODCMD_FUNC(cmd_dehopall) +{ + struct mod_chanmode *change; + unsigned int ii, count; + + change = mod_chanmode_alloc(channel->members.used); + for (ii = count = 0; ii < channel->members.used; ++ii) { + struct modeNode *mn = channel->members.list[ii]; + if (IsService(mn->user) || !(mn->modes & MODE_HALFOP)) + continue; + change->args[count].mode = MODE_REMOVE | MODE_HALFOP; + change->args[count++].member = mn; + } + if (count) { + change->argc = count; + modcmd_chanmode_announce(change); + } + mod_chanmode_free(change); + reply("OSMSG_DEHOPALL_DONE", channel->name); + return 1; +} + static MODCMD_FUNC(cmd_rehash) { extern char *services_config; @@ -856,6 +913,8 @@ } if (mn->modes & MODE_CHANOP) buff[count++] = '@'; + if (mn->modes & MODE_HALFOP) + buff[count++] = '%'; if (mn->modes & MODE_VOICE) buff[count++] = '+'; memcpy(buff+count, mn->channel->name, here_len); @@ -1127,6 +1186,33 @@ return 1; } +static MODCMD_FUNC(cmd_hop) +{ + struct mod_chanmode *change; + unsigned int arg, count; + + change = mod_chanmode_alloc(argc-1); + for (arg = 1, count = 0; arg < argc; ++arg) { + struct userNode *victim; + struct modeNode *mn; + if (!(victim = GetUserH(argv[arg]))) + continue; + if (!(mn = GetUserMode(channel, victim))) + continue; + if (mn->modes & MODE_HALFOP) + continue; + change->args[count].mode = MODE_HALFOP; + change->args[count++].member = mn; + } + if (count) { + change->argc = count; + modcmd_chanmode_announce(change); + } + mod_chanmode_free(change); + reply("OSMSG_HOP_DONE"); + return 1; +} + static MODCMD_FUNC(cmd_opall) { struct mod_chanmode *change; @@ -1149,6 +1235,28 @@ return 1; } +static MODCMD_FUNC(cmd_hopall) +{ + struct mod_chanmode *change; + unsigned int ii, count; + + change = mod_chanmode_alloc(channel->members.used); + for (ii = count = 0; ii < channel->members.used; ++ii) { + struct modeNode *mn = channel->members.list[ii]; + if (mn->modes & MODE_HALFOP) + continue; + change->args[count].mode = MODE_HALFOP; + change->args[count++].member = mn; + } + if (count) { + change->argc = count; + modcmd_chanmode_announce(change); + } + mod_chanmode_free(change); + reply("OSMSG_HOPALL_DONE", channel->name); + return 1; +} + static MODCMD_FUNC(cmd_whois) { struct userNode *target; @@ -1229,7 +1337,7 @@ change = mod_chanmode_alloc(channel->members.used); for (ii = count = 0; ii < channel->members.used; ++ii) { struct modeNode *mn = channel->members.list[ii]; - if (mn->modes & (MODE_CHANOP|MODE_VOICE)) + if (mn->modes & (MODE_CHANOP|MODE_HALFOP|MODE_VOICE)) continue; change->args[count].mode = MODE_VOICE; change->args[count++].member = mn; @@ -2298,6 +2406,24 @@ reply("OSMSG_OPS_GIVEN", channel->name, clone->nick); return 1; } + if (!irccasecmp(argv[1], "HOP")) { + struct mod_chanmode change; + if (!channel) { + reply("MSG_CHANNEL_UNKNOWN", argv[3]); + return 0; + } + mod_chanmode_init(&change); + change.argc = 1; + change.args[0].mode = MODE_HALFOP; + change.args[0].member = GetUserMode(channel, clone); + if (!change.args[0].member) { + reply("OSMSG_NOT_ON_CHANNEL", clone->nick, channel->name); + return 0; + } + modcmd_chanmode_announce(&change); + reply("OSMSG_HOPS_GIVEN", channel->name, clone->nick); + return 1; + } if (argc < 5) { reply("MSG_MISSING_PARAMS", argv[1]); OPSERV_SYNTAX(); @@ -2958,11 +3084,17 @@ case '#': goto find_channel; case '-': - discrim->chan_no_modes |= MODE_CHANOP | MODE_VOICE; + discrim->chan_no_modes |= MODE_CHANOP | MODE_HALFOP | MODE_VOICE; break; case '+': discrim->chan_req_modes |= MODE_VOICE; discrim->chan_no_modes |= MODE_CHANOP; + discrim->chan_no_modes |= MODE_HALFOP; + break; + case '%': + discrim->chan_req_modes |= MODE_HALFOP; + discrim->chan_no_modes |= MODE_CHANOP; + discrim->chan_no_modes |= MODE_VOICE; break; case '@': discrim->chan_req_modes |= MODE_CHANOP; @@ -4056,6 +4188,8 @@ opserv_define_func("DELTRUST", cmd_deltrust, 800, 0, 2); opserv_define_func("DEOP", cmd_deop, 100, 2, 2); opserv_define_func("DEOPALL", cmd_deopall, 400, 2, 0); + opserv_define_func("DEHOP", cmd_dehop, 100, 2, 2); + opserv_define_func("DEHOPALL", cmd_dehopall, 400, 2, 0); opserv_define_func("DEVOICEALL", cmd_devoiceall, 300, 2, 0); opserv_define_func("DIE", cmd_die, 900, 0, 2); opserv_define_func("DUMP", cmd_dump, 999, 0, 2); @@ -4079,6 +4213,8 @@ opserv_define_func("MODE", cmd_mode, 100, 2, 2); opserv_define_func("OP", cmd_op, 100, 2, 2); opserv_define_func("OPALL", cmd_opall, 400, 2, 0); + opserv_define_func("HOP", cmd_hop, 100, 2, 2); + opserv_define_func("HOPALL", cmd_hopall, 400, 2, 0); opserv_define_func("PART", cmd_part, 601, 0, 2); opserv_define_func("QUERY", cmd_query, 0, 0, 0); opserv_define_func("RAW", cmd_raw, 999, 0, 2); Index: srvx2/src/proto-common.c diff -u srvx2/src/proto-common.c:1.2 srvx2/src/proto-common.c:1.3 --- srvx2/src/proto-common.c:1.2 Thu Jun 10 13:14:33 2004 +++ srvx2/src/proto-common.c Thu Aug 19 15:09:58 2004 @@ -593,11 +593,13 @@ } break; case MODE_CHANOP: + case MODE_HALFOP: case MODE_VOICE: - case MODE_VOICE|MODE_CHANOP: + case MODE_VOICE|MODE_CHANOP|MODE_HALFOP: case MODE_REMOVE|MODE_CHANOP: + case MODE_REMOVE|MODE_HALFOP: case MODE_REMOVE|MODE_VOICE: - case MODE_REMOVE|MODE_VOICE|MODE_CHANOP: + case MODE_REMOVE|MODE_VOICE|MODE_CHANOP|MODE_HALFOP: if (change->args[ii].mode & MODE_REMOVE) change->args[ii].member->modes &= ~change->args[ii].mode; else Index: srvx2/src/proto-p10.c diff -u srvx2/src/proto-p10.c:1.3 srvx2/src/proto-p10.c:1.4 --- srvx2/src/proto-p10.c:1.3 Mon Jun 14 00:32:06 2004 +++ srvx2/src/proto-p10.c Thu Aug 19 15:09:58 2004 @@ -96,8 +96,10 @@ #define CMD_VERSION "VERSION" #define CMD_WALLCHOPS "WALLCHOPS" #define CMD_WALLOPS "WALLOPS" +#define CMD_WALLHOPS "WALLHOPS" #define CMD_WALLUSERS "WALLUSERS" #define CMD_WALLVOICES "WALLVOICES" +#define CMD_WALLHOPS "WALLHOPS" #define CMD_WHO "WHO" #define CMD_WHOIS "WHOIS" #define CMD_WHOWAS "WHOWAS" @@ -178,8 +180,10 @@ #define TOK_VERSION "V" #define TOK_WALLCHOPS "WC" #define TOK_WALLOPS "WA" +#define TOK_WALLHOPS "WH" #define TOK_WALLUSERS "WU" #define TOK_WALLVOICES "WV" +#define TOK_WALLHOPS "WH" #define TOK_WHO "H" #define TOK_WHOIS "W" #define TOK_WHOWAS "X" @@ -271,6 +275,7 @@ #define P10_VERSION TYPE(VERSION) #define P10_WALLCHOPS TYPE(WALLCHOPS) #define P10_WALLOPS TYPE(WALLOPS) +#define P10_WALLHOPS TYPE(WALLHOPS) #define P10_WALLUSERS TYPE(WALLUSERS) #define P10_WALLVOICES TYPE(WALLVOICES) #define P10_WHO TYPE(WHO) @@ -600,6 +605,8 @@ burst_line[pos++] = ':'; if (last_mode & MODE_CHANOP) burst_line[pos++] = 'o'; + if (last_mode & MODE_HALFOP) + burst_line[pos++] = 'h'; if (last_mode & MODE_VOICE) burst_line[pos++] = 'v'; } @@ -1051,9 +1058,10 @@ case '+': { const char *pos; int n_modes; - for (pos=argv[next], n_modes = 1; *pos; pos++) + for (pos=argv[next], n_modes = 1; *pos; pos++) { if ((*pos == 'k') || (*pos == 'l')) n_modes++; + } unsplit_string(argv+next, n_modes, modes); next += n_modes; break; @@ -1063,6 +1071,7 @@ } } + in_timestamp = atoi(argv[2]); if ((cNode = dict_find(unbursted_channels, argv[1], NULL))) { cNode->timestamp = in_timestamp; @@ -1080,6 +1089,8 @@ while ((sep = *end++)) { if (sep == 'o') mode |= MODE_CHANOP; + else if (sep == 'h') + mode |= MODE_HALFOP; else if (sep == 'v') mode |= MODE_VOICE; else @@ -1576,9 +1587,13 @@ dict_insert(irc_func_dict, TOK_WALLCHOPS, cmd_dummy); dict_insert(irc_func_dict, CMD_WALLVOICES, cmd_dummy); dict_insert(irc_func_dict, TOK_WALLVOICES, cmd_dummy); + dict_insert(irc_func_dict, CMD_WALLHOPS, cmd_dummy); + dict_insert(irc_func_dict, TOK_WALLHOPS, cmd_dummy); /* Ignore opers being silly. */ dict_insert(irc_func_dict, CMD_WALLOPS, cmd_dummy); dict_insert(irc_func_dict, TOK_WALLOPS, cmd_dummy); + dict_insert(irc_func_dict, CMD_WALLHOPS, cmd_dummy); + dict_insert(irc_func_dict, TOK_WALLHOPS, cmd_dummy); /* We have reliable clock! Always! Wraaa! */ dict_insert(irc_func_dict, CMD_SETTIME, cmd_dummy); dict_insert(irc_func_dict, TOK_SETTIME, cmd_dummy); @@ -2159,14 +2174,21 @@ change->args[ch_arg].mode |= MODE_REMOVE; change->args[ch_arg++].hostmask = modes[in_arg++]; break; - case 'o': case 'v': + case 'o': case 'h': case 'v': { struct userNode *victim; if (!(flags & MCP_ALLOW_OVB)) goto error; if (in_arg >= argc) goto error; - change->args[ch_arg].mode = (modes[0][ii] == 'o') ? MODE_CHANOP : MODE_VOICE; + + if (modes[0][ii] == 'o') + change->args[ch_arg].mode = MODE_CHANOP; + else if (modes[0][ii] == 'h') + change->args[ch_arg].mode = MODE_HALFOP; + else if (modes[0][ii] == 'v') + change->args[ch_arg].mode = MODE_VOICE; + if (!add) change->args[ch_arg].mode |= MODE_REMOVE; if (flags & MCP_FROM_SERVER) @@ -2289,6 +2311,8 @@ default: if (change->args[arg].mode & MODE_CHANOP) mod_chanmode_append(&chbuf, 'o', change->args[arg].member->user->numeric); + if (change->args[arg].mode & MODE_HALFOP) + mod_chanmode_append(&chbuf, 'h', change->args[arg].member->user->numeric); if (change->args[arg].mode & MODE_VOICE) mod_chanmode_append(&chbuf, 'v', change->args[arg].member->user->numeric); break; @@ -2339,6 +2363,8 @@ default: if (change->args[arg].mode & MODE_CHANOP) mod_chanmode_append(&chbuf, 'o', change->args[arg].member->user->numeric); + if (change->args[arg].mode & MODE_HALFOP) + mod_chanmode_append(&chbuf, 'h', change->args[arg].member->user->numeric); if (change->args[arg].mode & MODE_VOICE) mod_chanmode_append(&chbuf, 'v', change->args[arg].member->user->numeric); break; @@ -2430,6 +2456,7 @@ for (remove = 0; *modes; modes++) { switch (*modes) { case 'o': remove |= MODE_CHANOP; break; + case 'h': remove |= MODE_HALFOP; break; case 'v': remove |= MODE_VOICE; break; case 'p': remove |= MODE_PRIVATE; break; case 's': remove |= MODE_SECRET; break; @@ -2474,8 +2501,8 @@ } /* Remove member modes. */ - if ((remove & (MODE_CHANOP | MODE_VOICE)) && channel->members.used) { - int mask = ~(remove & (MODE_CHANOP | MODE_VOICE)); + if ((remove & (MODE_CHANOP | MODE_HALFOP | MODE_VOICE)) && channel->members.used) { + int mask = ~(remove & (MODE_CHANOP | MODE_HALFOP | MODE_VOICE)); unsigned int i; for (i = 0; i < channel->members.used; i++) ----------------------- End of diff ----------------------- |
From: Neil S. <sir...@us...> - 2004-08-10 17:07:49
|
Committer : Code Monkey <sir...@us...> CVSROOT : /cvsroot/x2serv Module : srvx2 Commit time: 2004-08-10 17:07:43 UTC Modified files: src/Makefile.am Log message: removed tla stuff, didnt work ---------------------- diff included ---------------------- Index: srvx2/src/Makefile.am diff -u srvx2/src/Makefile.am:1.2 srvx2/src/Makefile.am:1.3 --- srvx2/src/Makefile.am:1.2 Sat Jun 26 14:23:22 2004 +++ srvx2/src/Makefile.am Tue Aug 10 10:07:33 2004 @@ -5,28 +5,11 @@ EXTRA_PROGRAMS = checkdb globtest noinst_DATA = chanserv.help global.help modcmd.help nickserv.help opserv.help saxdb.help sendmail.help mod-sockcheck.help mod-helpserv.help mod-memoserv.help EXTRA_DIST = $(noinst_DATA) -BUILT_SOURCES = arch-version.h -noinst_HEADERS = arch-version.h - -.PHONY: checkversion -arch-version.h: checkversion -checkversion: - @tla logs -f >/dev/null || exit 0; \ - TMPFILE=`mktemp arch-version.h.XXXXXX` || exit 1 ; \ - echo "#define ARCH_VERSION \"`tla logs -f | tail -n 1`\"" >> $$TMPFILE ; \ - if diff -q arch-version.h $$TMPFILE >/dev/null 2>&1 ; then \ - rm $$TMPFILE ; \ - else \ - echo "Putting new arch version into arch-version.h" ; \ - rm -f arch-version.h ; \ - mv $$TMPFILE arch-version.h ; \ - fi EXTRA_srvx_SOURCES = proto-bahamut.c proto-common.c proto-p10.c mod-snoop.c mod-memoserv.c mod-helpserv.c mod-sockcheck.c srvx_LDADD = @MODULE_OBJS@ srvx_DEPENDENCIES = @MODULE_OBJS@ srvx_SOURCES = \ - arch-version.h \ chanserv.c chanserv.h \ compat.c compat.h \ conf.c conf.h \ ----------------------- End of diff ----------------------- |
From: Alex S. <ru...@us...> - 2004-08-10 17:07:11
|
Committer : Alex Schumann <ru...@us...> CVSROOT : /cvsroot/x2serv Module : CVSROOT Commit time: 2004-08-10 17:07:04 UTC Modified files: avail Log message: adding sirvulcan Author: Log message: ---------------------- diff included ---------------------- Index: CVSROOT/avail diff -u CVSROOT/avail:1.1 CVSROOT/avail:1.2 --- CVSROOT/avail:1.1 Wed Jun 11 15:44:59 2003 +++ CVSROOT/avail Tue Aug 10 10:06:54 2004 @@ -1,2 +1,2 @@ unavail -avail|rubin,lysergine,raisk,r33d,ultike +avail|rubin,lysergine,raisk,r33d,ultike,sirvulcan ----------------------- End of diff ----------------------- |
From: Alex S. <ru...@us...> - 2004-08-10 17:01:43
|
Committer : Alex Schumann <ru...@us...> CVSROOT : /cvsroot/x2serv Module : CVSROOT Commit time: 2004-08-10 17:01:36 UTC Modified files: usermap Log message: Added sirvulcan to usermap Author: Log message: ---------------------- diff included ---------------------- Index: CVSROOT/usermap diff -u CVSROOT/usermap:1.1 CVSROOT/usermap:1.2 --- CVSROOT/usermap:1.1 Wed Jun 11 15:44:59 2003 +++ CVSROOT/usermap Tue Aug 10 10:01:25 2004 @@ -3,3 +3,4 @@ raisk:'Wolfram Knipp <ra...@us...>' r33d:'Reed Loden <r3...@us...>' ultike:'Matthias Crauwels <ul...@us...>' +sirvulcan:'Code Monkey <sir...@us...>' ----------------------- End of diff ----------------------- |
From: Alex S. <ru...@us...> - 2004-07-23 18:57:15
|
Committer : Alex Schumann <ru...@us...> CVSROOT : /cvsroot/x2serv Module : srvx2 Commit time: 2004-07-23 18:57:09 UTC Modified files: src/modules-list.h src/nickserv.help Log message: Added oset to help. Author: Log message: ---------------------- diff included ---------------------- Index: srvx2/src/modules-list.h diff -u srvx2/src/modules-list.h:1.3 srvx2/src/modules-list.h:1.4 --- srvx2/src/modules-list.h:1.3 Wed Jun 23 16:53:23 2004 +++ srvx2/src/modules-list.h Fri Jul 23 11:56:59 2004 @@ -1 +1,3 @@ +WITH_MODULE(snoop) +WITH_MODULE(memoserv) Index: srvx2/src/nickserv.help diff -u srvx2/src/nickserv.help:1.3 srvx2/src/nickserv.help:1.4 --- srvx2/src/nickserv.help:1.3 Mon Jun 14 00:32:06 2004 +++ srvx2/src/nickserv.help Fri Jul 23 11:56:59 2004 @@ -144,6 +144,7 @@ "OPER" ("=---------- $bIRC Operator Help$b ---------=", " $bSEARCH$b Search accounts and apply an action.", + " $bOSET$b Modify account details including password.", " $bRENAME$b Rename an account.", " $bMERGE$b Merge one account into another.", " $bOREGISTER$b Create an account for someone else.", ----------------------- End of diff ----------------------- |
From: Alex S. <ru...@us...> - 2004-07-05 08:12:32
|
Committer : Alex Schumann <ru...@us...> CVSROOT : /cvsroot/x2serv Module : x2 Commit time: 2004-07-05 08:12:25 UTC Modified files: source/parse.c Log message: Fixed +e burst parsing ---------------------- diff included ---------------------- Index: x2/source/parse.c diff -u x2/source/parse.c:1.91 x2/source/parse.c:1.92 --- x2/source/parse.c:1.91 Sun Jul 4 13:42:19 2004 +++ x2/source/parse.c Mon Jul 5 01:12:14 2004 @@ -361,6 +361,7 @@ } case '%': /* burst ban list */ { + int bore = 0; /* 0=ban, 1=exempt */ /* ChannelListType ChanPtr; */ char* ban; /* if(!(ChanPtr = GetChannel(channel))) */ @@ -371,7 +372,19 @@ ban = (char *) mysep(&rest, " ") /* Get next ban from outside stack */ ) { - add_ban(ChanPtr, ban); + if(ban[0]=='~') /* If we encounter a ~ its sirvulcans exempt marker. rest are exempts */ + { /* and ignore this one as its just a ~ */ + bore = 1; + ban++; + } + if(ban[0]) /* If the aboe ~ check didnt end the string.. */ + { + if(bore == 0) /* ban */ + add_ban(ChanPtr, ban); + /* else ** TODO: Add exempt functions and uncomment this ** + add_exempt(ChanPtr, ban); + */ + } } break; } @@ -1501,7 +1514,10 @@ } for(i = 0; i < SERVNUMLEN - 1; i++) + { numnick[i] = Arg[6][i]; + } + numnick[i] = '\0'; Debug(DBGINFO, "Adding server %s %s %s", Arg[1], ServiceName, numnick); AddServer(Arg[1], ServiceName, numnick); NETBURSTING = TRUE; /* Ignore incomming users for a while*/ ----------------------- End of diff ----------------------- |
From: Alex S. <ru...@us...> - 2004-07-05 02:53:50
|
Committer : Alex Schumann <ru...@us...> CVSROOT : /cvsroot/x2serv Module : x2 Commit time: 2004-07-04 20:42:29 UTC Modified files: source/accounting.c source/chan.c source/commands.c source/config.h source/help.c source/main.c source/misc.c source/misc.h source/parse.c source/parse.h source/route.c source/set.c source/set.h Log message: Removed c++ style comments and fixed -Wall -pedantec warnings Added support for halfops and ban exceptions (+h and +e channel modes) (by support i mean - doesnt puke .. it doesnt do anything with them either) ---------------------- diff included ---------------------- Index: x2/source/accounting.c diff -u x2/source/accounting.c:1.9 x2/source/accounting.c:1.10 --- x2/source/accounting.c:1.9 Thu Mar 15 17:52:58 2001 +++ x2/source/accounting.c Sun Jul 4 13:42:18 2004 @@ -16,8 +16,9 @@ char* myrest; char* datestr; char *gmode; - // time_t mystart, myend; -// Debug(DBGINFO, "Examining: %s", LogLine); + /* time_t mystart, myend; + *Debug(DBGINFO, "Examining: %s", LogLine); + */ datestr = (char *) mysep(&LogLine, "]"); mychan = (char *) mysep(&LogLine, " "); @@ -28,7 +29,7 @@ if(!mycommand) { - //Debug(DBGINFO, "Invalid line in log input."); + /*Debug(DBGINFO, "Invalid line in log input."); */ return(0); } /* @@ -118,8 +119,9 @@ if(first) strcat(LogLine, PrevBuff); first = 0; - // Debug(DBGINFO, "LOGLINE: %s", LogLine); - // send_to_user(uptr, "LOGLINE: %s", LogLine); + /* Debug(DBGINFO, "LOGLINE: %s", LogLine); + * send_to_user(uptr, "LOGLINE: %s", LogLine); + */ searchline++; if(parselog(LogLine, uptr, cptr, chan, nuh, command, rest, start, end)) line++; Index: x2/source/chan.c diff -u x2/source/chan.c:1.89 x2/source/chan.c:1.90 --- x2/source/chan.c:1.89 Wed Jun 9 16:40:31 2004 +++ x2/source/chan.c Sun Jul 4 13:42:18 2004 @@ -367,6 +367,22 @@ return (false); } +boolean IsDehalfop(char *Modes) +{ + char Operator = '+'; + int Len, i; + + Len = strlen(Modes); + for (i = 0; i < Len; i++) + { + if (Modes[i] == '-') + Operator = '-'; + if ((Modes[i] == 'h') && (Operator == '-')) + return (true); + } + return (false); +} + boolean IsBan(char *Modes) { char Operator = '+'; @@ -385,6 +401,24 @@ return (false); } +boolean IsBanexamption(char *Modes) +{ + char Operator = '+'; + int Len, i; + + Len = strlen(Modes); + for (i = 0; i < Len; i++) + { + if (Modes[i] == '-') + Operator = '-'; + if (Modes[i] == '+') + Operator = '+'; + if ((Modes[i] == 'e') && (Operator == '+')) + return (true); + } + return (false); +} + void ProcessKick(ChannelListType cptr, UserListType uptr, char *Kicked) { UserListType kptr; @@ -504,6 +538,46 @@ } break; } + case 'h': + { + UserListType hptr; + numnick = (char *) strtok(params, " "); + params = (char *) strtok(NULL, "\0\n"); + if (!numnick) + break; + if (IsModeK(uptr)) + break; +/* server can do modes.. hmm. + if (GetServer(uptr)) + break; +*/ + hptr = FindNumnick(numnick, UsersU); + if (sign == '+') + { + /* Do checks if we should remove the o */ + if (!halfopok(cptr, uptr, hptr)) + { + strcat(unminmode, "h"); + strcat(unminparams, numnick); + strcat(unminparams, " "); + did_change = TRUE; + } + } + else + /* sign == '-' */ + { + /* Do checks if we should give back the o */ + if (!dehalfopok(cptr, uptr, hptr)) + { + strcat(unplusmode, "h"); + strcat(unplusparams, numnick); + strcat(unplusparams, " "); + did_change = TRUE; + punish(cptr, uptr, hptr, 'h'); + } + } + break; + } case 'b': banstring = (char *) strtok(params, " "); params = (char *) strtok(NULL, "\0\n"); @@ -518,7 +592,7 @@ strcat(unminparams, banstring); strcat(unminparams, " "); did_change = TRUE; -// punish(cptr, uptr, banstring, 'b'); +/* punish(cptr, uptr, banstring, 'b'); */ break; } add_ban(cptr, banstring); @@ -536,13 +610,14 @@ break; if (sign == '+') { -// if (!IsModeK(uptr)) /* If its not a service doing it */ -// add_exempt(cptr, exemptstring); +/* if (!IsModeK(uptr)) * If its not a service doing it + * add_exempt(cptr, exemptstring); + */ } else /* sign == '-' */ { - //delete_exempt(cptr, exemptstring); + /*delete_exempt(cptr, exemptstring); */ } break; case 'v': Index: x2/source/commands.c diff -u x2/source/commands.c:1.183 x2/source/commands.c:1.184 --- x2/source/commands.c:1.183 Sat Jun 26 14:02:15 2004 +++ x2/source/commands.c Sun Jul 4 13:42:18 2004 @@ -44,6 +44,7 @@ #include "parse.h" #include "accounting.h" #include "help.h" +#include "set.h" int FILTER = 0; char LISTTYPE = '\0'; @@ -842,6 +843,7 @@ Debug(DBGWARNING, "c_god(): null user"); return(FALSE); } + return(FALSE); } int c_whoami(C_PARAM) @@ -1241,7 +1243,6 @@ { char* handle; char* password; - char seed[14]; AuthHandleListType ahptr; if(!rest || !*rest) @@ -1305,7 +1306,6 @@ char* handle; char* password; char* channel; - char seed[14]; int OK; AuthHandleListType ahptr; @@ -1526,8 +1526,9 @@ return(FALSE); } rest = getscflags(rest, &secret, &nodelete, &noinchan, &suspended, &noowner, &total); -// send_to_user(uptr, "secret=%d, nodelete=%d, noinchan=%d, suspended=%d, total=%d :%s", -// secret, nodelete, noinchan, suspended, total, rest); +/* send_to_user(uptr, "secret=%d, nodelete=%d, noinchan=%d, suspended=%d, total=%d :%s", + * secret, nodelete, noinchan, suspended, total, rest); + */ count = 0; chansearch = (char *) strtok(rest, " "); if(!chansearch) @@ -1843,7 +1844,6 @@ int c_access(C_PARAM) { UserListType target; - char level[10] = ""; if (!strcmp(rest, "")) { target = uptr; @@ -2456,7 +2456,6 @@ char timestring[LINEBUFFSIZE]; time_t GoneTime; int OwnerNumber = 0, CoOwnerNumber = 0, ManagerNumber = 0, OpNumber = 0, PeonNumber = 0, LamerNumber = 0; - int k; if(cptr->Regged == FALSE) { @@ -3091,8 +3090,6 @@ int c_settings(C_PARAM) { - time_t UpTime; - ShowXSet(uptr); #ifdef NOTDEF UpTime = time(NULL) - StartTime; Index: x2/source/config.h diff -u x2/source/config.h:1.77 x2/source/config.h:1.78 --- x2/source/config.h:1.77 Wed Jun 9 16:40:31 2004 +++ x2/source/config.h Sun Jul 4 13:42:19 2004 @@ -17,7 +17,7 @@ #include <time.h> /* If your system doesnt have this, try commenting it out. */ -//#include <crypt.h> +/*#include <crypt.h>*/ /* If there are problems and you want all X2 output to go to x2.debug, define * this. Note that it gets very big, very fast... @@ -68,7 +68,7 @@ /* Uncomment the following for debugging. */ -/* #define debugon */ + #define debugon /* If you dont want the word warez in channel names, define this. * TODO : This is a hack, and would do better in a config file. Do it! Index: x2/source/help.c diff -u x2/source/help.c:1.2 x2/source/help.c:1.3 --- x2/source/help.c:1.2 Wed Jun 9 16:33:03 2004 +++ x2/source/help.c Sun Jul 4 13:42:19 2004 @@ -1,4 +1,5 @@ #include "config.h" +#include "send.h" int HelpSub(char *Target, char *Source) { Index: x2/source/main.c diff -u x2/source/main.c:1.61 x2/source/main.c:1.62 --- x2/source/main.c:1.61 Tue Mar 16 20:43:03 2004 +++ x2/source/main.c Sun Jul 4 13:42:19 2004 @@ -684,7 +684,7 @@ } fclose(OpFile); } -// fclose(OpFile); +/* fclose(OpFile); */ fclose(TheFile); Debug(DBGNOTICE, ":Finished reading channel data files\n"); return (1); @@ -897,8 +897,9 @@ #ifdef debugon perror("SELECT"); #endif - //Debug(DBGSEVERE, "select returned -1. Errno:%d", errno); - //exit(1); profiling causes "Interrupted System Call" here.. + /*Debug(DBGSEVERE, "select returned -1. Errno:%d", errno); + *exit(1); profiling causes "Interrupted System Call" here.. + */ } if(c > 0) /* Incomming data */ { Index: x2/source/misc.c diff -u x2/source/misc.c:1.50 x2/source/misc.c:1.51 --- x2/source/misc.c:1.50 Sat Jun 14 13:24:18 2003 +++ x2/source/misc.c Sun Jul 4 13:42:19 2004 @@ -327,7 +327,6 @@ void LogAccess(UserListType uptr, char* item, int size) { FILE* LOGFILE; - char buff[MAXLEN*4]; if(strcmp(AccessLog, "none")) { @@ -345,7 +344,6 @@ { FILE* LOGFILE; char buff[MAXLEN*4]; - int hidepass = 0; /* global nick!user@host command rest [time] */ /* #channel nick!user@host GOD command rest [time] */ if( ! (strcasecmp(command, "LOGIN") && @@ -518,6 +516,32 @@ } } +int halfopok(ChannelListType ChanPtr, UserListType uptr, UserListType optr) +{ + /* Check if its ok for user from to op user to given settings */ + if(uptr == NULL) + return(TRUE); /* No user.. must be a server */ + switch (ChanPtr->settings[STRICTOP]) + { + case 0: /* anyone */ + return (TRUE); + case 1: /* Ops Managers & (CO)Owners only */ + if (userlevel2(optr, FindBestUserMatch(ChanPtr, optr)) >= OP) + return (TRUE); + if (userlevel2(uptr, FindBestUserMatch(ChanPtr, uptr)) >= OP) + return (TRUE); + return (FALSE); + case 2: /* Managers & (co)owners */ + if (userlevel2(optr, FindBestUserMatch(ChanPtr, optr)) >= OP) + return (TRUE); + if (userlevel2(uptr, FindBestUserMatch(ChanPtr, uptr)) >= MA) + return (TRUE); + return (FALSE); + default: + return (TRUE); + } +} + int deopok(ChannelListType ChanPtr, UserListType from, UserListType to) { int fromlev, tolev; @@ -564,6 +588,52 @@ } } +int dehalfopok(ChannelListType ChanPtr, UserListType from, UserListType to) +{ + int fromlev, tolev; + + if(from == NULL) + return(TRUE); /* no from, must be server */ + if(from == to) /* Mode done to self. */ + { + return(TRUE); + } + fromlev = userlevel2(from, FindBestUserMatch(ChanPtr, from)); + tolev = userlevel2(to, FindBestUserMatch(ChanPtr, to)); + /* Check if its ok for user from to deop user to given settings */ + switch (ChanPtr->settings[PROTECT]) + { + case 0: /* Noone from anyone */ + return (TRUE); + case 1: /* Higher rank from lower rank */ + if (tolev < OP) + return (TRUE); + if (fromlev < tolev) + return (FALSE); + return (TRUE); + case 2: /* Equal or higher rank */ + if (tolev < OP) + return (TRUE); + if (fromlev <= tolev) + return (FALSE); + return (TRUE); + case 3: /* Managers & owners from everyone */ + if (tolev < MA) + return (TRUE); + if (fromlev <= tolev) + return (FALSE); + return (TRUE); + case 4: /* Owners from everyone */ + if (tolev < CO) + return (TRUE); + if (fromlev < tolev) + return (FALSE); + return (TRUE); + default: + return (TRUE); + } +} + int kickok(ChannelListType ChanPtr, UserListType from, UserListType to) { int fromlev, tolev; @@ -1382,8 +1452,9 @@ len = strlen(Address); -// if ((!isalpha(Address[0])) && (Address[0] != '*') && (Address[0] != '?')) -// return (0); +/* if ((!isalpha(Address[0])) && (Address[0] != '*') && (Address[0] != '?')) + * return (0); + */ if (Address[0] == '*') { gotstar = true; @@ -1401,9 +1472,10 @@ gotstar = true; else { -// Why are we not allowing * before @??? -// if (!gotat) -// return (false); +/* Why are we not allowing * before @??? + * if (!gotat) + * return (false); + */ } } else if (Address[i] == '!') Index: x2/source/misc.h diff -u x2/source/misc.h:1.19 x2/source/misc.h:1.20 --- x2/source/misc.h:1.19 Tue Dec 12 20:45:11 2000 +++ x2/source/misc.h Sun Jul 4 13:42:19 2004 @@ -22,6 +22,8 @@ int isinchan(ChannelListType cptr, UserListType uptr); int opok(ChannelListType ChanPtr, UserListType uptr, UserListType optr); int deopok(ChannelListType ChanPtr, UserListType from, UserListType to); +int halfopok(ChannelListType ChanPtr, UserListType uptr, UserListType optr); +int dehalfopok(ChannelListType ChanPtr, UserListType from, UserListType to); int kickok(ChannelListType ChanPtr, UserListType from, UserListType to); int modeok(ChannelListType ChanPtr, UserListType from); int banok(ChannelListType ChanPtr, UserListType from, char* mask); @@ -67,3 +69,5 @@ void do_math(char *buff, char *math); unsigned long Hash(char *str); unsigned int base64toint(const char *s); +const char* inttobase64(char* buf, unsigned int v, unsigned int count); +void LogAccess(UserListType uptr, char* item, int size); Index: x2/source/parse.c diff -u x2/source/parse.c:1.90 x2/source/parse.c:1.91 --- x2/source/parse.c:1.90 Mon Jun 28 14:46:22 2004 +++ x2/source/parse.c Sun Jul 4 13:42:19 2004 @@ -361,10 +361,10 @@ } case '%': /* burst ban list */ { -// ChannelListType ChanPtr; +/* ChannelListType ChanPtr; */ char* ban; -// if(!(ChanPtr = GetChannel(channel))) -// return(0); /* Not a channel we are in */ +/* if(!(ChanPtr = GetChannel(channel))) */ +/* return(0); * Not a channel we are in */ parm++; /* Ignore % */ for( ban = parm; /* ban = first ban */ ban; /* while ban != null */ @@ -405,7 +405,7 @@ int m_nick(M_PARAMS) { char* Arg[9]; - char* modes, *account, *sethost, *fakehost, *modef; + char* modes, *account, *sethost, *fakehost; UserListType UserPtr; unsigned int IP; Index: x2/source/parse.h diff -u x2/source/parse.h:1.14 x2/source/parse.h:1.15 --- x2/source/parse.h:1.14 Sat Jun 26 14:02:16 2004 +++ x2/source/parse.h Sun Jul 4 13:42:19 2004 @@ -1,5 +1,6 @@ int ProcessCommand(UserListType from, char *to, char *rest); int ProcessCTCP(UserListType from, char *to, char *rest); +int ProcessCTCPReply(UserListType from, char *to, char *rest); int ReadSocket(int TheSocket, char *Buffer); /* m_functions */ Index: x2/source/route.c diff -u x2/source/route.c:1.13 x2/source/route.c:1.14 --- x2/source/route.c:1.13 Sat Jun 14 13:48:56 2003 +++ x2/source/route.c Sun Jul 4 13:42:19 2004 @@ -97,7 +97,7 @@ ChangeRouteUplinks(Route); } } - //RankOutsideNess(Route); + /*RankOutsideNess(Route); */ } void WipeRouteList(RouteType Route) @@ -158,7 +158,7 @@ while(rptr) { strcpy(nextserver, rptr->uplink); /* next step in the trail */ - //strcpy(lastserver, rptr->server); + /*strcpy(lastserver, rptr->server); */ Debug(DBGINFO, "ChangeRouteUplinks(): Changing %s uplink to %s", rptr->server, lastserver); free(rptr->uplink); @@ -361,7 +361,7 @@ { if(rptr->outsideness == i) { - //send_to_user(uptr, "Inspecting server [%s]", rptr->server); + /*send_to_user(uptr, "Inspecting server [%s]", rptr->server); */ suptr = GetServer(rptr->uplink); if(!suptr) { Index: x2/source/set.c diff -u x2/source/set.c:1.7 x2/source/set.c:1.8 --- x2/source/set.c:1.7 Wed Jun 9 16:33:03 2004 +++ x2/source/set.c Sun Jul 4 13:42:19 2004 @@ -2,6 +2,10 @@ #include "commands.h" #include "set.h" #include "ctype.h" +#include "send.h" +#include "chan.h" +#include "user.h" +#include "misc.h" set_list set_commands[NUMOFCHANSETTINGS+1] = /* Command index level user num default description short set0 set1 set2 set3 set4 set5 */ @@ -383,7 +387,7 @@ { char ModeString[LINEBUFFSIZE]; char *option, *param; - int i, j, value; + int i, value; option = strtok(rest, " "); param = strtok(NULL, "\n"); @@ -535,6 +539,7 @@ } PINGOUTCONNECT = Val; send_wallops("PINGOUTCONNECT set to %s by %s.", GetSetting(PINGOUTCONNECT), uptr); + return(TRUE); } int xs_autorouting(UserListType uptr, char *param) @@ -552,6 +557,7 @@ } AUTOROUTING = Val; send_wallops("AUTOROUTING set to %s by %s.", GetSetting(AUTOROUTING), uptr->Nick); + return(TRUE); } int xs_autoconnect(UserListType uptr, char *param) @@ -569,6 +575,7 @@ } AUTOCONNECT = Val; send_wallops("AUTOCONNECT %s by %s.", GetSetting(AUTOCONNECT), uptr->Nick); + return(TRUE); } int xs_sub7scan(UserListType uptr, char *param) @@ -586,6 +593,7 @@ } SUB7SCAN = Val; send_wallops("SUB7SCAN set to %d by %s.", SUB7SCAN, uptr->Nick); + return(TRUE); } int xs_litmus(UserListType uptr, char *param) { @@ -602,6 +610,7 @@ } LITMUS = Val; send_wallops("LITMUS set to %d by %s.", LITMUS, uptr->Nick); + return(TRUE); } int xs_sdbot(UserListType uptr, char*param) @@ -619,6 +628,7 @@ } SDBOT = Val; send_wallops("SDBOT set to %d by %s.", SDBOT, uptr->Nick); + return(TRUE); } int xs_gatecheck(UserListType uptr, char *param) @@ -636,6 +646,7 @@ } GATECHECK = Val; send_wallops("GATECHECK set to %d by %s.", GATECHECK, uptr->Nick); + return(TRUE); } int xs_maxclones(UserListType uptr, char *param) @@ -653,6 +664,7 @@ } MAXCLONES = Val; send_wallops("MAXCLONES set to %d by %s.", MAXCLONES, uptr->Nick); + return(TRUE); } int xs_cloneres(UserListType uptr, char *param) @@ -670,6 +682,7 @@ } CLONERES = Val; send_wallops("CLONERES set to %s by %s.", GetCloneResMet(CLONERES), uptr->Nick); + return(TRUE); } int xs_debug(UserListType uptr, char *param) @@ -704,7 +717,6 @@ int do_xset(C_PARAM) { char *Option, *param; - int Val; int i; Option = strtok(rest, " "); Index: x2/source/set.h diff -u x2/source/set.h:1.3 x2/source/set.h:1.4 --- x2/source/set.h:1.3 Sun Sep 15 00:41:12 2002 +++ x2/source/set.h Sun Jul 4 13:42:19 2004 @@ -18,3 +18,4 @@ int do_set(C_PARAM); int do_xset(C_PARAM); +void ShowXSet(UserListType uptr); ----------------------- End of diff ----------------------- |
From: Alex S. <ru...@us...> - 2004-07-04 18:18:41
|
Committer : Alex Schumann <ru...@us...> CVSROOT : /cvsroot/x2serv Module : x2 Commit time: 2004-07-04 17:03:20 UTC Modified files: source/send.c source/send.h source/server.c Log message: Passing char to %s causes core files - go figure ;) CheckGline() updated to handle double-char numerics and not to crash.. ---------------------- diff included ---------------------- Index: x2/source/send.c diff -u x2/source/send.c:1.39 x2/source/send.c:1.40 --- x2/source/send.c:1.39 Mon Jun 28 14:46:23 2004 +++ x2/source/send.c Sun Jul 4 10:03:09 2004 @@ -223,7 +223,7 @@ send_command_from_server("GL * +%s %lu :%s", mask, duration, buff); } -void send_gline_to_server(char num, char *mask, time_t duration, char *format, ...) +void send_gline_to_server(char num1, char num2, char *mask, time_t duration, char *format, ...) { va_list args; char buff[LINEBUFFSIZE]; @@ -232,7 +232,7 @@ vsprintf(buff, format, args); va_end(args); - send_command_from_server("GL %s +%s %lu :%s", num, mask, duration, buff); + send_command_from_server("GL %c%c +%s %lu :%s", num1, num2, mask, duration, buff); } void send_ungline(char *mask) Index: x2/source/send.h diff -u x2/source/send.h:1.12 x2/source/send.h:1.13 --- x2/source/send.h:1.12 Mon Feb 4 01:55:46 2002 +++ x2/source/send.h Sun Jul 4 10:03:09 2004 @@ -18,7 +18,7 @@ void send_wallchops(ChannelListType cptr, char *format, ...); void send_kill(UserListType uptr, char *format, ...); void send_gline(char *mask, time_t duration, char *format, ...); -void send_gline_to_server(char num, char *mask, time_t duration, char *format, ...); +void send_gline_to_server(char num1, char num2, char *mask, time_t duration, char *format, ...); void send_ungline(char *mask); void send_settime(time_t thetime); void send_opchan(ChannelListType cptr); Index: x2/source/server.c diff -u x2/source/server.c:1.23 x2/source/server.c:1.24 --- x2/source/server.c:1.23 Wed Jun 9 16:40:31 2004 +++ x2/source/server.c Sun Jul 4 10:03:09 2004 @@ -83,7 +83,7 @@ { if(!matches(gptr->address, uhr) && gptr->time > NetTime()) { - send_gline_to_server(UserPtr->Numnick[0], gptr->address, gptr->time - NetTime(), "%s", gptr->reason); + send_gline_to_server(UserPtr->Numnick[0],UserPtr->Numnick[1], gptr->address, gptr->time - NetTime(), "%s", gptr->reason); return(TRUE); } gptr = gptr->Next; ----------------------- End of diff ----------------------- |
From: Alex S. <ru...@us...> - 2004-07-02 15:34:41
|
Committer : Alex Schumann <ru...@us...> CVSROOT : /cvsroot/x2serv Module : x2 Commit time: 2004-07-02 15:34:34 UTC Added files: conf/x2.news.example Removed files: conf/x2.news Log message: sick of forgetting to delete the news file. changing it to an example ---------------------- diff included ---------------------- Index: x2/conf/x2.news diff -u x2/conf/x2.news:1.2 x2/conf/x2.news:removed --- x2/conf/x2.news:1.2 Sun Oct 26 13:17:36 2003 +++ x2/conf/x2.news Fri Jul 2 08:34:35 2004 @@ -1,17 +0,0 @@ - A note from The X2 Author: --------------------------------- -Your network has recently upgraded -to X2 version 5.2! Congratulations! -This news file is displayed once to -every manager, owner, or coowner in -every channel. It can be used to -educate about new features, bugs, or -other cservice related events. You -can read the news at any time with -the NEWS command. -Please let your X2 operator know they -can change this news file by editing -x2.news in the main X2 5.2 directory. -Thanks, - -Rubin (ru...@af...) - X2 author/maintainer Index: x2/conf/x2.news.example diff -u /dev/null x2/conf/x2.news.example:1.1 --- /dev/null Fri Jul 2 08:34:35 2004 +++ x2/conf/x2.news.example Fri Jul 2 08:34:24 2004 @@ -0,0 +1,17 @@ + A note from The X2 Author: +-------------------------------- +Your network has recently upgraded +to X2 version 5.2! Congratulations! +This news file is displayed once to +every manager, owner, or coowner in +every channel. It can be used to +educate about new features, bugs, or +other cservice related events. You +can read the news at any time with +the NEWS command. +Please let your X2 operator know they +can change this news file by editing +x2.news in the main X2 5.2 directory. +Thanks, + -Rubin (ru...@af...) + X2 author/maintainer ----------------------- End of diff ----------------------- |
From: Reed L. <r3...@us...> - 2004-06-28 22:45:40
|
Committer : Reed Loden <r3...@us...> CVSROOT : /cvsroot/x2serv Module : srvx2 Commit time: 2004-06-28 22:45:31 UTC Modified files: configure.in src/chanserv.c src/chanserv.help src/math.c Log message: ChanServ.CALC works correctly now. Added help for it. ---------------------- diff included ---------------------- Index: srvx2/configure.in diff -u srvx2/configure.in:1.1.1.1 srvx2/configure.in:1.2 --- srvx2/configure.in:1.1.1.1 Thu Jun 3 10:13:58 2004 +++ srvx2/configure.in Mon Jun 28 15:45:19 2004 @@ -1,7 +1,7 @@ dnl Process this file with autoconf to create a configure script. dnl General initialization. -AC_REVISION([$Id: configure.in,v 1.1.1.1 2004/06/03 17:13:58 rubin Exp $]) +AC_REVISION([$Id: configure.in,v 1.2 2004/06/28 22:45:19 r33d Exp $]) AC_PREREQ(2.57) AC_INIT(srvx, 1.3, srv...@li...) CODENAME=surge @@ -57,6 +57,7 @@ dnl Checks for libraries. AC_CHECK_LIB(socket, socket) AC_CHECK_LIB(nsl, gethostbyname) +AC_CHECK_LIB(m, main) dnl Checks for header files. AC_HEADER_STDC Index: srvx2/src/chanserv.c diff -u srvx2/src/chanserv.c:1.5 srvx2/src/chanserv.c:1.6 --- srvx2/src/chanserv.c:1.5 Mon Jun 28 14:54:43 2004 +++ srvx2/src/chanserv.c Mon Jun 28 15:45:20 2004 @@ -5740,7 +5740,7 @@ do_math(response, unsplit_string(argv + 1, argc - 1, NULL)); if(channel) - send_channel_message(channel, cmd->parent->bot, "%b%s%b: %s", user->nick, response); + send_channel_message(channel, cmd->parent->bot, "$b%s$b: %s", user->nick, response); else send_message_type(4, user, cmd->parent->bot, "%s", response); return 1; Index: srvx2/src/chanserv.help diff -u srvx2/src/chanserv.help:1.4 srvx2/src/chanserv.help:1.5 --- srvx2/src/chanserv.help:1.4 Mon Jun 14 00:32:05 2004 +++ srvx2/src/chanserv.help Mon Jun 28 15:45:21 2004 @@ -194,12 +194,21 @@ "$uSee Also:$u register, noregister, unregister"); "BAN" ("/msg $C BAN <#channel> <mask|nick>", "This command will temporarily add a ban for the user specified as the parameter. Masks are to be supplied in the format <Nick>!<Ident>@<Host> and usually contain wildcards. If a nick is specified, a mask is automatically generated (though not completely foolproof). This ban is removed either by removing it from the channel ban list using any irc client, or sending the UNBAN or UNBANALL commands. If you are banned with this method, the UNBANME command can be used.", - "$uFor assistance, please join to #support$u", - "Example: *!*serv@*.gamesurge.net would ban anyone with ident 'serv' and a gamesurge.net hostname from joining the channel.", + "$uFor assistance, please join #Help$u", + "Example: *!*serv@*.afternet.org would ban anyone with ident 'serv' and an afternet.org hostname from joining the channel.", "$uSee Also:$u unban, unbanall, unbanme"); "BANS" ("/msg $C BANS <#channel>", "This command lists all permanent and timed bans in the channel.", "$uSee Also:$u addban, delban, mdelban"); +"CALC" ("/msg $C CALC <expression>", + "CALC calculates a mathematical expression, and returns the answer. It", + "supports +, -, *, /, ^, and () and many other math operations, such as", + "sqrt[], tan[], etc.", + "For example: CALC sqrt [5 + .43 * (tan[75])] / 2", + "If you do not have access in the channel, the answer may be reported", + "to you privately (via MSG or NOTICE) instead of in the channel.", + "CALC can be used by all users.", + "$uSee Also:$u dice, 8ball"); "CLIST" ("/msg $C CLIST <#channel> [mask]", "This command lists all users of level $bCoowner$b on a channel's userlist. If a mask is supplied, only coowners matching the mask will be shown.", "$uSee Also:$u addcoowner, delcoowner, mdelcoowner, users"); Index: srvx2/src/math.c diff -u srvx2/src/math.c:1.1 srvx2/src/math.c:1.2 --- srvx2/src/math.c:1.1 Sat Jun 26 14:23:22 2004 +++ srvx2/src/math.c Mon Jun 28 15:45:21 2004 @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, email srv...@sr.... * - * $Id: math.c,v 1.1 2004/06/26 21:23:22 r33d Exp $ + * $Id: math.c,v 1.2 2004/06/28 22:45:21 r33d Exp $ */ #include "conf.h" @@ -23,11 +23,11 @@ #include "modcmd.h" #include "saxdb.h" #include "timeq.h" -#include <stdio.h> #include <ctype.h> +#include <stdio.h> #include <stdlib.h> #include <string.h> -#include <math.h> +#include <tgmath.h> #include <time.h> #ifdef WIN32 ----------------------- End of diff ----------------------- |
From: Reed L. <r3...@us...> - 2004-06-28 21:55:01
|
Committer : Reed Loden <r3...@us...> CVSROOT : /cvsroot/x2serv Module : srvx2 Commit time: 2004-06-28 21:54:53 UTC Modified files: src/chanserv.c Log message: oops... need to define 'calc' before it can be used. *hehe* ---------------------- diff included ---------------------- Index: srvx2/src/chanserv.c diff -u srvx2/src/chanserv.c:1.4 srvx2/src/chanserv.c:1.5 --- srvx2/src/chanserv.c:1.4 Sat Jun 26 14:23:22 2004 +++ srvx2/src/chanserv.c Mon Jun 28 14:54:43 2004 @@ -7217,6 +7217,7 @@ DEFINE_COMMAND(8ball, 1, 0, "flags", "+nolog,+toy,+acceptchan", NULL); DEFINE_COMMAND(d, 1, 0, "flags", "+nolog,+toy,+acceptchan", NULL); DEFINE_COMMAND(huggle, 1, 0, "flags", "+nolog,+toy,+acceptchan", NULL); + DEFINE_COMMAND(calc, 1, 0, "flags", "+nolog,+toy,+acceptchan", NULL); /* Channel options */ DEFINE_CHANNEL_OPTION(defaulttopic); ----------------------- End of diff ----------------------- |
From: Reed L. <r3...@us...> - 2004-06-28 21:46:42
|
Committer : Reed Loden <r3...@us...> CVSROOT : /cvsroot/x2serv Module : x2 Commit time: 2004-06-28 21:46:33 UTC Modified files: source/parse.c source/send.c Log message: Fixed problem with X2 not recognizing numerics. Corrected some commands that had not had their syntax changed over to new P10. ---------------------- diff included ---------------------- Index: x2/source/parse.c diff -u x2/source/parse.c:1.89 x2/source/parse.c:1.90 --- x2/source/parse.c:1.89 Sat Jun 26 14:02:16 2004 +++ x2/source/parse.c Mon Jun 28 14:46:22 2004 @@ -97,9 +97,6 @@ { "FA", m_fakehost, TRUE, FALSE }, { "OM", m_noop, TRUE, TRUE }, { "CM", m_noop, TRUE, TRUE }, - { "401", m_logerror, TRUE, TRUE }, - { "402", m_logerror, TRUE, TRUE }, - { "443", m_logerror, TRUE, TRUE }, /* user is already on channel (invite attempt error) */ { NULL, NULL, FALSE, FALSE } }; /* *INDENT-ON* */ @@ -1570,6 +1567,21 @@ if((strlen(Sender) > 2) && !(UserPtr = FindNumnick(Sender, UsersU))) Debug(DBGINFO, "Sender %s not found", Sender); +/*** Check if maybe its a numeric ***/ + if(isdigit(Command[0]) && ServerPtr) /* If first letter is a number and a server sent it.. */ + { + int num = 0; + if((num = atoi(Command))) /* if num is non zero.. */ + { + char* target; + UserListType TmpUserPtr; + target = (char *) strtok(rest, " "); + rest = (char *) strtok(NULL, "\r\n"); + TmpUserPtr = FindNumnick(target, UsersU); + ProcessNumeric(ServerPtr, num, TmpUserPtr, rest); + return(0); + } + } for(i=0;server_commands[i].name;i++) { if(!strcasecmp(server_commands[i].name, Command)) Index: x2/source/send.c diff -u x2/source/send.c:1.38 x2/source/send.c:1.39 --- x2/source/send.c:1.38 Sat Jun 26 14:02:16 2004 +++ x2/source/send.c Mon Jun 28 14:46:23 2004 @@ -138,7 +138,8 @@ * returns the status, not our uplink. This is important * for getting good away status. */ - send_command_from_nick("W %s :%s", uptr->Numnick[0], uptr->Nick); + send_command_from_nick("W %c%c :%s", uptr->Numnick[0], + uptr->Numnick[1], uptr->Nick); } void send_chanmode(ChannelListType cptr, char *format, ...) @@ -538,7 +539,7 @@ { TempChanPtr->NumOfNicks++; /* Note that we joined the channel */ sendtosock(Sock, "%s B %s %lu %s:o", - convert2y[ServiceNumeric], /* servers numnick */ + ServNum, /* servers numnick */ TempChanPtr->Name, /* #channel */ TempChanPtr->CreationDate, /* Hopefully already set by other side BURST */ NumNick); /* My nick is joining, and had ops.. */ ----------------------- End of diff ----------------------- |
From: Reed L. <r3...@us...> - 2004-06-26 21:23:39
|
Committer : Reed Loden <r3...@us...> CVSROOT : /cvsroot/x2serv Module : srvx2 Commit time: 2004-06-26 21:23:32 UTC Modified files: src/Makefile.am src/chanserv.c src/chanserv.h Added files: src/math.c Log message: Add calc command from Mystical (really from X2). NOTE: Not tested. ---------------------- diff included ---------------------- Index: srvx2/src/Makefile.am diff -u srvx2/src/Makefile.am:1.1.1.1 srvx2/src/Makefile.am:1.2 --- srvx2/src/Makefile.am:1.1.1.1 Thu Jun 3 10:13:59 2004 +++ srvx2/src/Makefile.am Sat Jun 26 14:23:22 2004 @@ -41,6 +41,7 @@ ioset.c ioset.h \ log.c log.h \ main.c common.h \ + math.c \ md5.c md5.h \ modcmd.c modcmd.h \ modules.c modules.h \ Index: srvx2/src/chanserv.c diff -u srvx2/src/chanserv.c:1.3 srvx2/src/chanserv.c:1.4 --- srvx2/src/chanserv.c:1.3 Mon Jun 14 00:32:05 2004 +++ srvx2/src/chanserv.c Sat Jun 26 14:23:22 2004 @@ -5732,6 +5732,20 @@ return 1; } +static CHANSERV_FUNC(cmd_calc) +{ + char response[MAXLEN]; + + REQUIRE_PARAMS(2); + do_math(response, unsplit_string(argv + 1, argc - 1, NULL)); + + if(channel) + send_channel_message(channel, cmd->parent->bot, "%b%s%b: %s", user->nick, response); + else + send_message_type(4, user, cmd->parent->bot, "%s", response); + return 1; +} + static void chanserv_adjust_limit(void *data) { Index: srvx2/src/chanserv.h diff -u srvx2/src/chanserv.h:1.2 srvx2/src/chanserv.h:1.3 --- srvx2/src/chanserv.h:1.2 Thu Jun 3 16:34:03 2004 +++ srvx2/src/chanserv.h Sat Jun 26 14:23:22 2004 @@ -173,4 +173,6 @@ struct do_not_register *chanserv_is_dnr(const char *chan_name, struct handle_info *handle); int check_user_level(struct chanNode *channel, struct userNode *user, enum levelOption opt, int allow_override, int exempt_owner); +void do_math(char *Buffer, char *Math); + #endif Index: srvx2/src/math.c diff -u /dev/null srvx2/src/math.c:1.1 --- /dev/null Sat Jun 26 14:23:32 2004 +++ srvx2/src/math.c Sat Jun 26 14:23:22 2004 @@ -0,0 +1,590 @@ +/* math.c - Mathematics functions for chanserv.calc + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. Important limitations are + * listed in the COPYING file that accompanies this software. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, email srv...@sr.... + * + * $Id: math.c,v 1.1 2004/06/26 21:23:22 r33d Exp $ + */ + +#include "conf.h" +#include "helpfile.h" +#include "nickserv.h" +#include "modcmd.h" +#include "saxdb.h" +#include "timeq.h" +#include <stdio.h> +#include <ctype.h> +#include <stdlib.h> +#include <string.h> +#include <math.h> +#include <time.h> + +#ifdef WIN32 +#define strcasecmp stricmp +#endif + +enum MathType { + mEnd, + mPlus, + mMinus, + mMult, + mDiv, + mPower, + mLt, + mRt, + mOp, + mOpEnd, + mNumber +}; + +enum MathOpType { + otExp, + otLog, + otSin, + otASin, + otSinH, + otCos, + otACos, + otCosH, + otTan, + otATan, + otTanH, + otSqrt, + otAbs, + otCeil, + otFloor +}; + +/* This table is needed for the translation from infix to postfix. */ +static const int TranslateTable[][10] = { +/*List: _ + - * / ^ ( ) [ ] */ +/*Stack: */ +/* _ */ {4, 1, 1, 1, 1, 1, 1, 5, 1, 5}, +/* + */ {2, 2, 2, 1, 1, 1, 1, 2, 1, 2}, + {2, 2, 2, 1, 1, 1, 1, 2, 1, 2}, + {2, 2, 2, 2, 2, 1, 1, 2, 1, 2}, + {2, 2, 2, 2, 2, 1, 1, 2, 1, 2}, + {2, 2, 2, 2, 2, 2, 1, 2, 1, 2}, + {5, 1, 1, 1, 1, 1, 1, 3, 1, 5}, + {5, 5, 5, 5, 5, 5, 5, 5, 5, 5}, + {5, 1, 1, 1, 1, 1, 1, 5, 1, 6}, + {5, 5, 5, 5, 5, 5, 5, 5, 5, 5} +}; + +typedef struct MathToken { + enum MathType Type; + double Value; + enum MathOpType OpType; + struct MathToken *Next; + struct MathToken *Previous; /* Previous is used in the stack */ +} *MathList; + +typedef struct Values { + double Value; + struct Values *Next; + struct Values *Previous; +} *ValueList; + +void do_math(char *Buffer, char *Math) +{ + int HasDot; + double Value = 0.0; + double Floating; /* = 10^number of digits after the dot */ + int ValueExpected = 1; + char Identifier[512]; + + MathList ListFirst = NULL; + MathList StackFirst = NULL; + MathList PostFixFirst = NULL; + ValueList TheValuesFirst = NULL; + MathList List; + MathList Stack; + MathList PostFix; + ValueList TheValues; + int Minus = 0; + + void *Temp; + int Index; + int OEndExpected; + + if (!(List = ListFirst = malloc(sizeof(struct MathToken)))) goto MemError; + if (!(Stack = StackFirst = malloc(sizeof(struct MathToken)))) goto MemError; + if (!(PostFix = PostFixFirst = malloc(sizeof(struct MathToken)))) goto MemError; + if (!(TheValues = TheValuesFirst = malloc(sizeof(struct Values)))) goto MemError; + + List->Next = NULL; + Stack->Next = NULL; + PostFix->Next = NULL; + TheValues->Next = NULL; + + StackFirst->Type = mEnd; + + /* First tokenize the buffer */ + + while (*Math) { + if (isdigit(*Math) || *Math == '.') { + if (!ValueExpected) { + strcpy(Buffer, "Unexpected value"); + goto End; + } + HasDot = 0; + Value = 0; + Floating = 1; + while (isdigit(*Math) || *Math == '.') { + if (*Math == '.') + if (HasDot) { + strcpy(Buffer, "Error in constant"); + goto End; + } + else + HasDot = 1; + else + if (!HasDot) + Value = Value * 10 + *Math - '0'; + else { + Floating = Floating * 10; + Value = Value + (*Math - '0') / Floating; + } + ++Math; + } + if (!(List = List->Next = malloc(sizeof(struct MathToken)))) goto MemError; + List->Next = NULL; + List->Type = mNumber; + List->Value = Value; + if (Minus) { + List->Value = -Value; + Minus = 0; + } + ValueExpected = 0; + } + else switch (*Math) { + case ' ': case '\t': + ++Math; + break; + case '+': case '-': + case '*': case '/': + case '^': case '(': + case ')': case ']': + if (*Math == '-' && ValueExpected) { + Minus = !Minus; + ++Math; + break; + } + if (!(List = List->Next = malloc(sizeof(struct MathToken)))) goto End; + List->Next = NULL; + switch (*Math) { + case '+': List->Type = mPlus; break; + case '-': List->Type = mMinus; break; + case '*': List->Type = mMult; break; + case '/': List->Type = mDiv; break; + case '^': List->Type = mPower; break; + case '(': List->Type = mLt; break; + case ')': List->Type = mRt; break; + case ']': List->Type = mOpEnd; break; + } + if (*Math != '(' && ValueExpected) { + strcpy(Buffer, "Value expected"); + goto End; + } + if (*Math != ')' && *Math != ']') + ValueExpected = 1; + ++Math; + break; + default: + if (isalpha(*Math)) { + Index = 0; + while (isalpha(*Math)) + Identifier[Index++] = *Math++; + Identifier[Index] = '\0'; + OEndExpected = 0; + if (!ValueExpected) { + strcpy(Buffer, "Unexpected value"); + goto End; + } + if (!strcasecmp(Identifier, "e")) { + if (!(List = List->Next = malloc(sizeof(struct MathToken)))) goto MemError; + List->Next = NULL; + List->Type = mNumber; + List->Value = exp(1); + ValueExpected = 0; + } + else if (!strcasecmp(Identifier, "pi")) { + if (!(List = List->Next = malloc(sizeof(struct MathToken)))) goto MemError; + List->Next = NULL; + List->Type = mNumber; + List->Value = 4 * atan(1); + ValueExpected = 0; + } + else if (!strcasecmp(Identifier, "rand")) { + if (!(List = List->Next = malloc(sizeof(struct MathToken)))) goto MemError; + List->Next = NULL; + List->Type = mNumber; + List->Value = (double)rand() / (double)RAND_MAX; + ValueExpected = 0; + } + else if (!strcasecmp(Identifier, "exp")) { + if (!(List = List->Next = malloc(sizeof(struct MathToken)))) goto MemError; + List->Next = NULL; + List->Type = mOp; + List->OpType = otExp; + OEndExpected = 1; + } + else if (!strcasecmp(Identifier, "log")) { + if (!(List = List->Next = malloc(sizeof(struct MathToken)))) goto MemError; + List->Next = NULL; + List->Type = mOp; + List->OpType = otLog; + OEndExpected = 1; + } + else if (!strcasecmp(Identifier, "sin")) { + if (!(List = List->Next = malloc(sizeof(struct MathToken)))) goto MemError; + List->Next = NULL; + List->Type = mOp; + List->OpType = otSin; + OEndExpected = 1; + } + else if (!strcasecmp(Identifier, "asin")) { + if (!(List = List->Next = malloc(sizeof(struct MathToken)))) goto MemError; + List->Next = NULL; + List->Type = mOp; + List->OpType = otASin; + OEndExpected = 1; + } + else if (!strcasecmp(Identifier, "sinh")) { + if (!(List = List->Next = malloc(sizeof(struct MathToken)))) goto MemError; + List->Next = NULL; + List->Type = mOp; + List->OpType = otSinH; + OEndExpected = 1; + } + else if (!strcasecmp(Identifier, "cos")) { + if (!(List = List->Next = malloc(sizeof(struct MathToken)))) goto MemError; + List->Next = NULL; + List->Type = mOp; + List->OpType = otCos; + OEndExpected = 1; + } + else if (!strcasecmp(Identifier, "acos")) { + if (!(List = List->Next = malloc(sizeof(struct MathToken)))) goto MemError; + List->Next = NULL; + List->Type = mOp; + List->OpType = otACos; + OEndExpected = 1; + } + else if (!strcasecmp(Identifier, "cosh")) { + if (!(List = List->Next = malloc(sizeof(struct MathToken)))) goto MemError; + List->Next = NULL; + List->Type = mOp; + List->OpType = otCosH; + OEndExpected = 1; + } + else if (!strcasecmp(Identifier, "tan")) { + if (!(List = List->Next = malloc(sizeof(struct MathToken)))) goto MemError; + List->Next = NULL; + List->Type = mOp; + List->OpType = otTan; + OEndExpected = 1; + } + else if (!strcasecmp(Identifier, "atan")) { + if (!(List = List->Next = malloc(sizeof(struct MathToken)))) goto MemError; + List->Next = NULL; + List->Type = mOp; + List->OpType = otATan; + OEndExpected = 1; + } + else if (!strcasecmp(Identifier, "tanh")) { + if (!(List = List->Next = malloc(sizeof(struct MathToken)))) goto MemError; + List->Next = NULL; + List->Type = mOp; + List->OpType = otTanH; + OEndExpected = 1; + } + else if (!strcasecmp(Identifier, "sqrt")) { + if (!(List = List->Next = malloc(sizeof(struct MathToken)))) goto MemError; + List->Next = NULL; + List->Type = mOp; + List->OpType = otSqrt; + OEndExpected = 1; + } + else if (!strcasecmp(Identifier, "abs")) { + if (!(List = List->Next = malloc(sizeof(struct MathToken)))) goto MemError; + List->Next = NULL; + List->Type = mOp; + List->OpType = otAbs; + OEndExpected = 1; + } + else if (!strcasecmp(Identifier, "ceil")) { + if (!(List = List->Next = malloc(sizeof(struct MathToken)))) goto MemError; + List->Next = NULL; + List->Type = mOp; + List->OpType = otCeil; + OEndExpected = 1; + } + else if (!strcasecmp(Identifier, "floor")) { + if (!(List = List->Next = malloc(sizeof(struct MathToken)))) goto MemError; + List->Next = NULL; + List->Type = mOp; + List->OpType = otFloor; + OEndExpected = 1; + } + else { + strcpy(Buffer, "Unexpected Identifier"); + goto End; + } + if (OEndExpected) { + while (*Math == ' ' || *Math == '\t') + ++Math; + if (*Math != '[') { + strcpy(Buffer, "'[' expected"); + goto End; + } + ++Math; + } + } + else { + strcpy(Buffer, "Unknown character in expression"); + goto End; + } + } + } + if (ValueExpected) { + strcpy(Buffer, "Value expected"); + goto End; + } + if (!(List = List->Next = malloc(sizeof(struct MathToken)))) goto MemError; + List->Next = NULL; + List->Type = mEnd; + + /* We've got them tokenized now... now convert it + from infix notation to postfix notation */ + + List = ListFirst->Next; + while (List) { + if (List->Type == mNumber) { + PostFix = PostFix->Next = List; + ListFirst = List = List->Next; + PostFix->Next = NULL; + } + else switch (TranslateTable[Stack->Type][List->Type]) { + case 1: + List->Previous = Stack; + Stack = Stack->Next = List; + ListFirst = List = List->Next; + Stack->Next = NULL; + break; + case 2: + PostFix = PostFix->Next = Stack; + Stack = Stack->Previous; + Stack->Next = NULL; + break; + case 3: + Stack = Stack->Previous; + free(Stack->Next); + Stack->Next = NULL; + Temp = List; + ListFirst = List = List->Next; + free(Temp); + break; + case 4: + PostFix = PostFix->Next = List; + ListFirst = List = List->Next; + break; + case 5: + strcpy(Buffer, "Error in expression"); + goto End; + case 6: + PostFix = PostFix->Next = Stack; + Stack = Stack->Previous; + Stack->Next = NULL; + Temp = List; + ListFirst = List = List->Next; + free(Temp); + break; + default: + strcpy(Buffer, "Internal error"); + goto End; + } + } + + /* Now we've got everything in Postfix notation... calculate it now */ + + PostFix = PostFixFirst->Next; + while (PostFix) { + switch (PostFix->Type) { + case mNumber: + if (!(TheValues->Next = malloc(sizeof(struct Values)))) goto MemError; + TheValues->Next->Previous = TheValues; + TheValues = TheValues->Next; + TheValues->Next = NULL; + TheValues->Value = PostFix->Value; + break; + case mPlus: + TheValues->Previous->Value += TheValues->Value; + TheValues = TheValues->Previous; + free(TheValues->Next); + TheValues->Next = NULL; + break; + case mMinus: + TheValues->Previous->Value -= TheValues->Value; + TheValues = TheValues->Previous; + free(TheValues->Next); + TheValues->Next = NULL; + break; + case mMult: + TheValues->Previous->Value *= TheValues->Value; + TheValues = TheValues->Previous; + free(TheValues->Next); + TheValues->Next = NULL; + break; + case mDiv: + if (TheValues->Value == 0) { + strcpy(Buffer, "Division by zero error!"); + goto End; + } + TheValues->Previous->Value /= TheValues->Value; + TheValues = TheValues->Previous; + free(TheValues->Next); + TheValues->Next = NULL; + break; + case mPower: + TheValues->Previous->Value = pow(TheValues->Previous->Value, TheValues->Value); + TheValues = TheValues->Previous; + free(TheValues->Next); + TheValues->Next = NULL; + break; + case mEnd: + Value = TheValues->Value; + break; + case mOp: + switch (PostFix->OpType) { + case otExp: + TheValues->Value = exp(TheValues->Value); + break; + case otLog: + if (TheValues->Value <= 0) { + strcpy(Buffer, "Log of non-positive value error"); + goto End; + } + TheValues->Value = log(TheValues->Value); + break; + case otSin: + TheValues->Value = sin(TheValues->Value); + break; + case otASin: + if (TheValues->Value < -1 || TheValues->Value > 1) { + strcpy(Buffer, "Domain error"); + goto End; + } + TheValues->Value = asin(TheValues->Value); + break; + case otSinH: + TheValues->Value = sinh(TheValues->Value); + case otCos: + TheValues->Value = cos(TheValues->Value); + break; + case otACos: + if (TheValues->Value < -1 || TheValues->Value > 1) { + strcpy(Buffer, "Domain error"); + goto End; + } + TheValues->Value = acos(TheValues->Value); + break; + case otCosH: + TheValues->Value = cosh(TheValues->Value); + break; + case otTan: + TheValues->Value = tan(TheValues->Value); + break; + case otATan: + TheValues->Value = atan(TheValues->Value); + break; + case otTanH: + TheValues->Value = tanh(TheValues->Value); + break; + case otSqrt: + if (TheValues->Value < 0) { + strcpy(Buffer, "Sqrt from number < 0"); + goto End; + } + TheValues->Value = sqrt(TheValues->Value); + break; + case otAbs: + TheValues->Value = fabs(TheValues->Value); + break; + case otCeil: + TheValues->Value = ceil(TheValues->Value); + break; + case otFloor: + TheValues->Value = floor(TheValues->Value); + break; + } + break; + /* The following three do not occur. They are here to prevent compiler warnings */ + case mLt: + case mRt: + case mOpEnd: + break; + } + PostFix = PostFix->Next; + } + + if (fabs(Value) < 1000000 && (fabs(Value) > 0.001 || Value == 0.0)) + { + if (fabs(Value - floor(Value + 0.5)) < 0.00001) { + sprintf(Buffer, "%.0f", Value); + } + else { + sprintf(Buffer, "%f", Value); + } + } + else { + sprintf(Buffer, "%E", Value); + } +End: + /* Free up memory here */ + + List = ListFirst; + while (List) { + Temp = List; + List = List->Next; + free(Temp); + } + + Stack = StackFirst; + while (Stack) { + Temp = Stack; + Stack = Stack->Next; + free(Temp); + } + + PostFix = PostFixFirst; + while (PostFix) { + Temp = PostFix; + PostFix = PostFix->Next; + free(Temp); + } + + TheValues = TheValuesFirst; + while (TheValues) { + Temp = TheValues; + TheValues = TheValues->Next; + free(Temp); + } + + return; + +MemError: + strcpy(Buffer, "Couldn't allocate enough memory"); + goto End; +} ----------------------- End of diff ----------------------- |
From: Reed L. <r3...@us...> - 2004-06-26 21:02:33
|
Committer : Reed Loden <r3...@us...> CVSROOT : /cvsroot/x2serv Module : x2 Commit time: 2004-06-26 21:02:27 UTC Modified files: source/commands.c source/parse.c source/parse.h source/send.c Log message: Fix problem with X2 not sending entire server numeric due to %c and not %s. This was causing the problem with automatic reconnecting/rerouting. Added seperate placeholder functions for fakehost and sethost. X2 will now ignore numeric 401. (This commit is in memory of me crashing Hub-Svc.* while working on X2.) :P ---------------------- diff included ---------------------- Index: x2/source/commands.c diff -u x2/source/commands.c:1.182 x2/source/commands.c:1.183 --- x2/source/commands.c:1.182 Wed Jun 9 16:33:03 2004 +++ x2/source/commands.c Sat Jun 26 14:02:15 2004 @@ -1146,7 +1146,7 @@ int c_open(C_PARAM) { - send_chanmode(cptr, "-ilkmntps *"); + send_chanmode(cptr, "-ilkmnrtps *"); send_to_user(uptr, "Clearing %s of all modes.", cptr->Name); if(cptr->Regged) { Index: x2/source/parse.c diff -u x2/source/parse.c:1.88 x2/source/parse.c:1.89 --- x2/source/parse.c:1.88 Fri Jun 11 07:45:00 2004 +++ x2/source/parse.c Sat Jun 26 14:02:16 2004 @@ -59,8 +59,6 @@ { "WV", m_noop, TRUE, TRUE }, { "S", m_server, TRUE, FALSE }, { "B", m_burst, TRUE, FALSE }, -// wtf?? -// { "O", m_ping, TRUE, TRUE }, { "N", m_nick, TRUE, TRUE }, { "C", m_create, FALSE, TRUE }, { "J", m_join, FALSE, TRUE }, @@ -95,12 +93,13 @@ { "PRIVS", m_noop, TRUE, FALSE }, { "WU", m_noop, TRUE, TRUE }, { "LL", m_noop, TRUE, FALSE }, - { "SH", m_noop, FALSE, TRUE }, + { "SH", m_sethost, TRUE, FALSE }, + { "FA", m_fakehost, TRUE, FALSE }, { "OM", m_noop, TRUE, TRUE }, { "CM", m_noop, TRUE, TRUE }, + { "401", m_logerror, TRUE, TRUE }, { "402", m_logerror, TRUE, TRUE }, - { "443", m_logerror, TRUE, TRUE }, /* user is already on channel (invite attempt error) */ - { "FA", m_sethost, TRUE, FALSE }, + { "443", m_logerror, TRUE, TRUE }, /* user is already on channel (invite attempt error) */ { NULL, NULL, FALSE, FALSE } }; /* *INDENT-ON* */ @@ -135,6 +134,12 @@ return(0); } +int m_fakehost(M_PARAMS) +{ + /* TODO: Change the host part of the structure */ + return(0); +} + int m_notice(M_PARAMS) { char* to; @@ -403,7 +408,7 @@ int m_nick(M_PARAMS) { char* Arg[9]; - char* modes, *account, *hiddenhost, *modef; + char* modes, *account, *sethost, *fakehost, *modef; UserListType UserPtr; unsigned int IP; @@ -434,11 +439,11 @@ } if(strchr(modes, 'h')) { - hiddenhost = (char *) strtok(NULL, " "); /* This user has an hidden hostmask (asuka only) */ + sethost = (char *) strtok(NULL, " "); /* This user has an hidden hostmask (asuka/Nefarious only) */ } if(strchr(modes, 'f')) { - hiddenhost = (char *) strtok(NULL, " "); /* This user has an hidden hostmask */ + fakehost = (char *) strtok(NULL, " "); /* This user has an hidden hostmask (GameSurge/Nefarious only) */ } Arg[6] = (char *) strtok(NULL, " "); /* Compressed IP */ } Index: x2/source/parse.h diff -u x2/source/parse.h:1.13 x2/source/parse.h:1.14 --- x2/source/parse.h:1.13 Fri Jun 11 07:45:00 2004 +++ x2/source/parse.h Sat Jun 26 14:02:16 2004 @@ -28,4 +28,5 @@ int m_kill(M_PARAMS); int m_squit(M_PARAMS); int m_sethost(M_PARAMS); +int m_fakehost(M_PARAMS); int m_logerror(M_PARAMS); Index: x2/source/send.c diff -u x2/source/send.c:1.37 x2/source/send.c:1.38 --- x2/source/send.c:1.37 Sun Oct 26 13:45:53 2003 +++ x2/source/send.c Sat Jun 26 14:02:16 2004 @@ -138,7 +138,7 @@ * returns the status, not our uplink. This is important * for getting good away status. */ - send_command_from_nick("W %c :%s", uptr->Numnick[0], uptr->Nick); + send_command_from_nick("W %s :%s", uptr->Numnick[0], uptr->Nick); } void send_chanmode(ChannelListType cptr, char *format, ...) @@ -231,7 +231,7 @@ vsprintf(buff, format, args); va_end(args); - send_command_from_server("GL %c +%s %lu :%s", num, mask, duration, buff); + send_command_from_server("GL %s +%s %lu :%s", num, mask, duration, buff); } void send_ungline(char *mask) @@ -331,7 +331,7 @@ void send_connect(char *servertoconnect, int port, ServerListType target) { - send_command_from_nick("CO %s %d :%c", servertoconnect, port, target->numnick); + send_command_from_nick("CO %s %d :%s", servertoconnect, port, target->numnick); } void send_spoofserv(char *servname, int Numeric, char *format, ...) @@ -344,8 +344,8 @@ vsprintf(buff, format, args); va_end(args); - send_command_from_server("S %s 1 9999999999 9999999999 P10 %cD] 0 :%s", - servname, NumChar, buff); + send_command_from_server("S %s 1 9999999999 9999999999 P10 %sD] + :%s", + servname, NumChar, buff); } void send_numeric(int number, char *target, char *format, ...) @@ -537,7 +537,7 @@ if(TempChanPtr->settings[INCHAN]) { TempChanPtr->NumOfNicks++; /* Note that we joined the channel */ - sendtosock(Sock, "%c B %s %lu %s:o", + sendtosock(Sock, "%s B %s %lu %s:o", convert2y[ServiceNumeric], /* servers numnick */ TempChanPtr->Name, /* #channel */ TempChanPtr->CreationDate, /* Hopefully already set by other side BURST */ ----------------------- End of diff ----------------------- |
From: Alex S. <ru...@us...> - 2004-06-23 23:53:40
|
Committer : Alex Schumann <ru...@us...> CVSROOT : /cvsroot/x2serv Module : srvx2 Commit time: 2004-06-23 23:53:33 UTC Modified files: src/modules-list.h Removed files: chanserv.help global.help mod-helpserv.help mod-memoserv.help mod-sockcheck.help modcmd.help nickserv.help opserv.help saxdb.help sendmail.help Log message: Cleaning up a bit of a mess ---------------------- diff included ---------------------- Index: srvx2/chanserv.help diff -u srvx2/chanserv.help:1.4 srvx2/chanserv.help:removed --- srvx2/chanserv.help:1.4 Mon Jun 14 00:32:02 2004 +++ srvx2/chanserv.help Wed Jun 23 16:53:33 2004 @@ -1,540 +0,0 @@ -"<INDEX>" ("=--------------- $b$C Help$b --------------=", - " Hello there! ", - " Please select the area you would like ", - " help with from the list below. The ", - " help system uses the format: ", - " $b/MSG $C HELP <$bsubject$b>$b ", - " For example: $b/msg $C HELP UBM$b ", - " shows help with the UnBanMe command. ", - "=--------------------------------------=", - " GENERAL - How to use $C ", - " USER - Commands to add and remove", - " bans, ops and managers from ", - " your channel.", - " CHANNEL - Other channel related info", - " like setting permanent modes", - " and topic.", - " INFORMATION - Informative commands.", - " OPER - Commands for IRC Operators.", - "=--------------------------------------=", -); -"USER" ("=-- $bUserlist Management Commands:$b ---=", - " $bUSERS$b Show the channels userlist.", - " $bCLIST$b Show all COOWNERs of a channel.", - " $bMLIST$b Show all MANAGERs of a channel.", - " $bOLIST$b Show all OPs of a channel.", - " $bPLIST$b Show all PEONs of a channel.", - " $bBANS$b Show all $ulasting$u bans in a channel.", - " $bACCESS$b Check someone's access level in a channel.", - " $bCLVL$b Change a person's access level in a channel.", - " $bUSET$b Set a channel user's options (autos, info).", - " $bSEEN$b Find out the last time a user was in a channel.", - "$b$b", - " $bADDPEON$b Add a user as a PEON in a channel.", - " $bADDOP$b Add a user as an OP in a channel.", - " $bADDMANAGER$b Add a user as a MANAGER in a channel.", - " $bADDCOOWNER$b Add a user as COOWNER in a channel.", - " $bADDUSER$b A more advanced way to add users.", - " $bADDBAN$b Add a $upermanent$u ban for a user.", - " $bADDTIMEDBAN$b Add a $ulasting$u ban that expires in the specified time.", - "$b$b", - " $bDELUSER$b Delete a user from the userlist.", - " $bMDELCOOWNER$b Mass-delete coowners with accounts matching a mask.", - " $bMDELMANAGER$b Mass-delete managers with accounts matching a mask.", - " $bMDELOP$b Mass-delete ops with accounts matching a mask.", - " $bMDELPEON$b Mass-delete peons with accounts matching a mask.", - " $bDELBAN$b Remove the specified $upermanent$u ban from memory.", - " $bWIPEINFO$b Remove a lower-ranked user's infoline.", - " $bTRIM$b Delete users who are inactive.", - " $bSUSPEND$b Suspend a user's access to a channel.", - " $bUNSUSPEND$b Restore a user's access to a channel.", - "$b$b", - " $bMYACCESS$b Show all channels where you have access.", - " $bDELETEME$b Delete YOURSELF from the userlist.", - " $bGIVEOWNERSHIP$b Give away ownership to another user.", - "=------------- End of Help ------------=" -); - -"CHANNEL" ("=-------- $bChannel Commands:$b ---------=", - " $bSET$b Change various channel settings.", - " $bTOPIC$b Set the current topic, or reset it to the default topic.", - " $bMODE$b Change a channel mode.", - " $bOPEN$b Remove +ilk channel modes and any bans on you from a channel.", - "*$bNOTE$b Set a note on a channel.", - "*$bDELNOTE$b Remove a note from a channel.", - "$b$b", - " $bUP$b Give you ops in a channel.", - " $bDOWN$b Remove your ops in a channel.", - " $bUPALL$b Give you ops in all channels you have access to.", - " $bDOWNALL$b Remove your ops in all channels.", - " $bOP$b Give ops to the specified user.", - " $bDEOP$b Remove ops from the specified user.", - " $bVOICE$b Give voice to the specified user.", - " $bDEVOICE$b Remove voice from the specified user.", - " $bRESYNC$b Synchronize ops and voice with the channel userlist.", - "$b$b", - " $bKICK$b Kick a user from a channel.", - " $bBAN$b Ban a user from a channel.", - " $bUNBAN$b Remove the specified ban from the channel.", - " $bKICKBAN$b Kick and ban a user from a channel.", - " $bUNBANME$b Remove a ban matching your hostmask from specified channel.", - " $bUNBANALL$b Remove all bans from a channel.", - " $bINVITE$b Admit a user to pass through +ib modes in your channel.", - "$b$b", - " $bINFO$b Show numerical information about the users in a channel.", - " $bEVENTS$b View a list of events relevant to a channel.", - "=------------- End of Help ------------=" -); -"INFORMATION" ("=------- $bInformative Commands:$b ------=", - " $bVERSION$b Check the current running version of $C.", - " $bNETINFO$b Check current network-wide information.", - " $bSTAFF$b Get a list of all the current staff.", - " $bIRCOPS$b Get a list of all the current IRC operators.", - " $bHELPERS$b Get a list of all the current support helpers.", - " $bPEEK$b Reveal information on a channel's modes, topic and ops.", - " $bCOMMAND$b Display some information about a command.", - "=------------- End of Help ------------=" -); -"OPER" ("=-- $bHelper/IRC Operator commands:$b ---=", - " $bGOD$b Turn security override on/off.", - " $bOPCHAN$b Force $C to op itself in a channel.", - "$b$b", - " $bSEARCH$b Find registered channel matching criteria.", - " $bREGISTER$b Register a new channel with $C.", - " $bNOREGISTER$b Add a channel to the do-not-register list.", - " $bALLOWREGISTER$b Remove a channel from the do-not-register list.", - " $bUNREGISTER$b Remove $C from a registered channel.", - " $bMOVE$b Transition one channel's registration to a new channel name.", - " $bMERGE$b Merges a source and target channels' registration, ", - " users, bans, and other data into the target channel.", - " $bUNVISITED$b List all channels that have not been visited in specified duration.", - " $bEXPIRE$b Automatically unregister old channels.", - "$b$b", - " $bADDOWNER$b Add a new owner to a channel.", - " $bDELOWNER$b Remove a current owner from a channel.", - " $bMDELOWNER$b Remove multiple owners by account mask from a channel.", - " $bCSUSPEND$b Remove $C from a channel (preserving user data).", - " $bCUNSUSPEND$b Restore $C to a channel that was suspended.", - "$b$b", - " $bCREATENOTE$b Create a new note type.", - " $bREMOVENOTE$b Remove an existing note type.", - "*$bSAY$b Have $C say a message in a channel.", - "*$bEMOTE$b Equivalent to $C doing a /me in a channel.", - "=------------- End of Help ------------=" -); - -"GENERAL" ("=----------- General Help -------------=", - " NOTE: Before using $C or being added ", - " to channel userlists, users must ", - " register an account with $b$N$b. ", - " $b/MSG $N help$b for more information ", - "$b$b", - " $C uses a standard interface for each ", - " command in its command list. Commands ", - " can be issued either in /MSG format or ", - " in a channel which $C is in. These two ", - " ways are demonstrated below:", - " $b/MSG $C OP #chatzone Locke$b", - " $b.OP #chatzone locke$b", - "$b$b", - " If a command is given in a channel, and ", - " the channel parameter is not given, the ", - " channel that the command was issued in ", - " will be used:", - " $b.OP locke$b", - "$b$b", - " Some commands, such as $bNETSTATS$b ", - " don't require a channel. If one is ", - " supplied it will be ignored.", - "$b$b", - " If a command takes additional parameters", - " asside from channel, they will be ", - " expected as well. ", - " See $b/msg $C HELP <COMMAND>$b for the ", - " exact syntax of each command. ", - "=---------- For more info see ----------=", - " http://www.afternet.org/support ", - "=---------------------------------------=" -); - -"LOGIN" ("=-- Logging In --=", - " Please login using:", - " /MSG $N AUTH <account> <password>", - " or the shortcut:", - " /AUTH <account> <password>" - ); - -"MYACCESS" ("/msg $S MYACCESS [<nick|*account>]", - "Lists channels where you have access and infolines in each.", - "Network staff may specify a nickname or *account to view the list for another user.", - "Your access level in the channel may be followed by a comma and one of the following characters:", - " s Your access in the channel has been suspended.", - " o AutoOp is active.", - " v AutoVoice is active.", - " i AutoInvite is active.", - "$uSee Also:$u access, users"); -"ACCESS" ("/msg $S ACCESS <#channel> [<nick|*account>]", - "Reports various pieces of information about a channel user, including channel and network access level, and the user's info line. If no nick or account is provided, $S returns your own information.", - "$uSee Also:$u myaccess, users"); -"ADDBAN" ("/msg $C ADDBAN <#channel> <mask|nick> [Reason]", - "Adds a ban to the channels permanent ban list, remaining in effect until removed with the DELBAN command. If it exactly matches an existing ban already in the list, the reason will be updated. If the existing ban was a timed ban, it will be extended into a permanent ban.", - "$uSee Also:$u bans, delban, mdelban"); -"ADDUSER" ("/msg $C ADDUSER <#channel> <nick|*account> <level>", - "This command adds someone to the channel user list with the specified access level. (You may only add users to levels less than your own.)", - "The level may be one of $bpeon$b, $bop$b, $bmanager$b, $bcoowner$b, $bowner$b, or a number between 1 and 500. Only network staff may add level 500 users (owners).", - "$uSee Also:$u deluser, users"); -"ADDOP" ("/msg $C ADDOP <#channel> <nick|*account>", - "This command adds someone to the channel user list with OP access level. (You may only add users to levels less than your own.)", - "$uSee Also:$u adduser, deluser, users"); -"ADDTIMEDBAN" ("/msg $C ADDTIMEDBAN <#channel> <mask|nick> <Duration> [Reason]", - "Adds an automatically expiring ban to the channel ban list. This command behaves in the exact same fashion as ADDBAN with the exception that the bans are automatically removed after the user-supplied duration. If it exactly matches an existing ban already in the list, the reason will be updated. If the existing ban was a timed ban, it will be extended. Timed bans can be removed with the DELBAN command, as with permanent bans.", - "$uSee Also:$u addban, bans, delban, durations"); -"ALLOWREGISTER" ("/msg $C ALLOWREGISTER <#channel|*Account>", - "Removes the named channel (or channel mask) from the do-not-register list.", - "$uSee Also:$u register, noregister, unregister"); -"BAN" ("/msg $C BAN <#channel> <mask|nick>", - "This command will temporarily add a ban for the user specified as the parameter. Masks are to be supplied in the format <Nick>!<Ident>@<Host> and usually contain wildcards. If a nick is specified, a mask is automatically generated (though not completely foolproof). This ban is removed either by removing it from the channel ban list using any irc client, or sending the UNBAN or UNBANALL commands. If you are banned with this method, the UNBANME command can be used.", - "$uFor assistance, please join to #support$u", - "Example: *!*serv@*.gamesurge.net would ban anyone with ident 'serv' and a gamesurge.net hostname from joining the channel.", - "$uSee Also:$u unban, unbanall, unbanme"); -"BANS" ("/msg $C BANS <#channel>", - "This command lists all permanent and timed bans in the channel.", - "$uSee Also:$u addban, delban, mdelban"); -"CLIST" ("/msg $C CLIST <#channel> [mask]", - "This command lists all users of level $bCoowner$b on a channel's userlist. If a mask is supplied, only coowners matching the mask will be shown.", - "$uSee Also:$u addcoowner, delcoowner, mdelcoowner, users"); -"CLVL" ("/msg $C CLVL <#channel> <nick|*account> <level>", - "Modifies a channel user's access level. You cannot give users access greater than or equal to your own.", - "You may use *Account instead of Nick as the name argument; the * makes $C use the name of a account directly (useful if the user is not online).", - "$uSee Also:$u access, users, giveownership"); -"CREATENOTE" ("/msg $S CREATENOTE <typename> <set-access> [access-arg] <view-access> <max-length>", - "Defines a new note type. $btypename$b is the name of the note type. $bset-access$b is one of:", - " $bPRIVILEGED$b with required $baccess-arg$b being the minimum OpServ level to set", - " $bCHANNEL $b with required $baccess-arg$b being the channel access level to set", - " $bSETTER $b (with no access-arg) to allow anyone who can !set to set", - "$bview-access$b is one of $bPRIVILEGED$b, $bCHANNEL_USERS$b, or $bALL$b, that determines who can see the note (if it is set).", - "$bmax-length$b is the maximum length for this kind of note.", - "If the note type already exists, it is modified with the new values you specify.", - "$uSee Also:$u removenote"); -"GIVEOWNERSHIP" ("/msg $C GIVEOWNERSHIP <#channel> <nick|*account>", - "Transfer ownership of the channel from you to another user on the channel's userlist. You are demoted to co-owner, and he or she is promoted to owner.", - "You may use *Account instead of Nick as the name argument; the * makes $C use the name of a account directly (useful if the user is not online).", - "$uSee Also:$u clvl, access, users"); -"CSUSPEND" ("/msg $C CSUSPEND <#channel> [!]<duration> <reason>", - "This command will temporarily remove $b$C$b from a channel and suspend its registration.", - "The duration may be \"0\" to make it never expire; otherwise, $C will automatically unsuspend the channel after $uduration$u.", - "If you wish to modify a currently existing suspension, add a ! before the duration.", - "$uSee Also:$u unregister, cunsuspend, durations"); -"CUNSUSPEND" ("/msg $C CUNSUSPEND <#channel>", - "Restores a channel's $b$C$b registration.", - "$uSee Also:$u csuspend, unregister"); -"DELBAN" ("/msg $C DELBAN <#channel> <mask|nick>", - "Deletes a ban from the channel ban list. This command works for both permanent and timed bans alike.", - "$uSee Also:$u addban, addtimedban, bans"); -"DELNOTE" ("/msg $C DELNOTE <#channel> <note-name>", - "Deletes a note from the channel. To do this, you must be able to set the note.", - "$uSee Also:$u note, note types"); -"DELUSER" ("/msg $C DELUSER <#channel> <nick|*account>", - "Deletes a user from the channel user list.", - "You may use *Account instead of Nick as the name argument; the * makes $C use the name of a account directly (useful if the user is not online).", - "$uSee Also:$u adduser, deleteme, users"); -"DELETEME" ("/msg $C DELETEME <#channel> [<secret>]", - "If you have less than owner access in a channel, $bdeleteme$b removes your access from the channel. $bIf you do this by mistake, you must find a higher-ranked user to re-add you.$b", - "The secret value changes for each channel and each user. If you do not include the secret value, $C will tell you what it should be.", - "$uSee Also:$u adduser, deluser, giveownership, users"); -"DEOP" ("/msg $C DEOP <#channel> <nick> [nick]...", - "Deops the specified user[s].", - "$uSee Also:$u down, op"); -"DEVOICE" ("/msg $C DEVOICE <#channel> <nick> [nick]...", - "This command will make $C devoice the selected user[s].", - "$uSee Also:$u addpeon, delpeon, deop, voice"); -"DOWN" ("/msg $C DOWN <#channel>", - "This command will devoice/deop you in the selected channel.", - "$uSee Also:$u downall, up, upall"); -"DOWNALL" ("/msg $C DOWNALL", - "Executes the $bdown$b command for each channel you have access to.", - "$uSee Also:$u down, up, upall"); -"DURATIONS" ("[<n>y][<n>M][<n>w][<n>d][<n>h][<n>m][<n>[s]]", - "There is a standard syntax for durations that let you easily specify longer periods of time. A duration consists of one or more \"duration parts\", which are sequences of digits, separated by duration letters.", - "The valid duration letters are $by$b (for year, or 365 days), $bM$b (for month, or 31 days), $bw$b (for week, or 7 days), $bd$b (for day, or 24 hours), $bh$b (for hour, or 60 minutes), $bm$b (for minute, or 60 seconds), and $bs$b (for second). We know not all years are 365 days and not all months are 31 days, but we pretend they are for parsing durations.", - "If the last duration part does not have any letter to indicate the units, seconds are assumed.", - "$uExamples$u: 1y1M is 365 days plus 31 days; 1y1m is 365 days plus 1 minute; 1h30m45 is ninety minutes and forty-five seconds; and so forth."); -"EMOTE" ("/msg $C EMOTE <#channel> <text>", - "Makes $b$C$b send a CTCP ACTION message to the specified channel.", - "$uSee Also:$u say"); -"EVENTS" ("/msg $C EVENTS <#channel> [limit [pattern]]", - "Allows channel coowners to view a list of events related to their channel. If a pattern is provided, only events with a matching description will be displayed.", - "$bNote:$b You must specify a limit if you want to use a pattern to match against.", - "$uSee Also:$u last"); -"EXPIRE" ("/msg $C EXPIRE", - "Expires any channels that have not been visited within the configured duration. Channel registrations are automatically expired, so you only need to use this command if the duration has been changed.", - "$uSee Also:$u unvisited"); -"HELPERS" ("/msg $C HELPERS", - "Lists all the helpers currently online. Nicknames enclosed in parentheses are away, and likely unavailable.", - "$uSee Also:$u staff"); -"INFO" ("/msg $C INFO <#channel>", - "This command responds with various pieces of information about a channel's users, status, and registration."); -"INVITE" ("/msg $C INVITE <#channel> [nick [reason]]", - "Invites a user into the channel, sending them a reason if one is provided. However, unless you have at least $bmanager$b access, you can only invite yourself with this command. If no nick is provided, the user issuing the command will be invited."); -"INVITEME" ("/msg $S INVITEME <#channel>", - "Invites you into the channel."); -"IRCOPS" ("/msg $C IRCOPS", - "Lists all the IRC operators currently online. Nicknames enclosed in parentheses are away, and likely unavailable.", - "$uSee Also:$u staff"); -"KICK" ("/msg $C KICK <#channel> <mask|nick> [reason]", - "Kicks the users matching the given nick or mask with the specified reason. If no reason is provided, a default will be used.", - "$uSee Also:$u kickban"); -"KICKBAN" ("/msg $C KICKBAN <#channel> <mask|nick> [reason]", - "Kicks and bans with the specified reason any users with a matching nick or hostmask. If no reason is provided, a default one will be used.", - "$uSee Also:$u addban, kick"); -"MDELCOOWNER" ("/msg $C MDELCOOWNER <#channel> <pattern>", - "Deletes all coowners with accounts matching the given pattern from the channel user list.", - "$uSee Also:$u clist, delcoowner"); -"MDELMANAGER" ("/msg $C MDELMANAGER <#channel> <pattern>", - "Deletes all managers with accounts matching the given pattern from the channel user list.", - "$uSee Also:$u mdelban, mdelcoowner, mdelop, mdelowner, mdelpeon"); -"MDELOP" ("/msg $C MDELOP <#channel> <pattern>", - "Deletes all ops with accounts matching the given pattern from the channel user list."); -"MDELOWNER" ("/msg $C MDELOWNER <#channel> <pattern>", - "Deletes all owners with accounts matching the given pattern from the channel user list.", - "$uSee Also:$u addowner, mdelcoowner, mdelmanager, mdelop, mdelpeon"); -"MDELPEON" ("/msg $C MDELPEON <#channel> <pattern>", - "Deletes all peons with accounts matching the given pattern from the channel user list.", - "$uSee Also:$u addpeon, mdelcoowner, mdelmanager, mdelop"); -"MERGE" ("/msg $C MERGE <#channel> <destination>", - "Merges the source channel's registration, users, bans, and other data into the target channel. Users with access to both the source and target channels will retain the higher access level; if the access levels are the same, the more recent seen time is kept. Bans are also merged, with bans expiring later taking precedence.", - "$uSee Also:$u register, move, unregister"); -"MLIST" ("/msg $C MLIST <#channel> [mask]", - "This command lists all users of level $bManager$b on a channel's userlist. If a mask is supplied, only managers matching the mask will be shown.", - "$uSee Also:$u addmanager, delmanager, mdelmanager, users"); -"MODE" ("/msg $C MODE <#channel>", - "Resets the modes in the channel to their default.", - "$uSee Also:$u open, set"); -"MOVE" ("/msg $C MOVE <#channel> <destination>", - "Transfers a channel's registration to a different channel along with the settings and user/ban lists. All the restrictions that apply for the $bregister$b command apply to $bmove$b.", - "$uSee Also:$u register, merge, unregister"); -"NETINFO" ("/msg $C NETINFO", - "Displays some assorted pieces of information about network-wide $b$C$b statistics.", - "$uSee Also:$u info, staff"); -"NOREGISTER" ("/msg $C NOREGISTER <#channel|*Account> <reason>", - "With no arguments, lists the current do-not-register channels.", - "With arguments, adds a do-not-register channel (or account) with the specified reason. In this case, the channel name may include * or ? wildcards.", - "$uSee Also:$u allowregister, register, unregister"); -"NOTE" ("/msg $C NOTE <#channel> [<type> [new-note-text]]", - "With no arguments, lists all visible notes on the specified channel.", - "With one argument, lists the note type you name (if it is visible to you).", - "With two arguments, sets the note type (if you can set it).", - "$uSee Also:$u delnote, note types"); -"NOTE TYPES" ("$bNOTE TYPES$b", - "${notes}", - "$uSee Also:$u note, delnote"); -"OLIST" ("/msg $C OLIST <#channel> [mask]", - "This command lists all users of level $bOp$b on a channel's userlist. If a mask is supplied, only ops matching the mask will be shown.", - "$uSee Also:$u addop, delop, mdelop, users"); -"OP" ("/msg $C OP <#channel> <nick> [nick]...", - "This command makes $C op the specified user.", - "$uSee Also:$u addop, delop, deop"); -"OPCHAN" ("/msg $C OPCHAN <#channel>", - "This command makes $C op itself in the specified channel."); -"OPEN" ("/msg $C OPEN <#channel>", - "This command will make $C remove all modes preventing a user from the specified channel, and remove all bans matching the users hostmask.", - "$uSee Also:$u unbanme"); -"PEEK" ("/msg $C PEEK <#channel>", - "Displays the current topic, modes, and ops of the specified channel. Unlike $binfo$b, $bpeek$b displays channel information unrelated to $b$C$b.", - "$uSee Also:$u info"); -"PLIST" ("/msg $C PLIST <#channel>", - "This command lists all users of level $bPeon$b on a channel's userlist. If a mask is supplied, only peons matching the mask will be shown.", - "$uSee Also:$u addpeon, delpeon, mdelpeon, users"); -"REGISTER" ("/msg $C REGISTER <#channel> [user|*account] [force]", - "Registers a channel with $b$C$b, automatically granting owner access to the specified user. If no user is provided, $b$C$b gives owner access to the user executing the command.", - "If the registrar is on the network staff and provides the third argument, $bforce$b, it will allow a do-not-register channel to be registered anyway.", - "In addition, $bregister$b will only allow one user to own a certain number of channels without the $bforce$b argument.", - "$uSee Also:$u addowner, noregister, unregister"); -"REMOVENOTE" ("/msg $S REMOVENOTE <typename> [FORCE]", - "Permanently deletes a note type. Without the argument $bFORCE$b, it will only delete an unused note type. With the argument $bFORCE$b, it will delete the note from all channels and then delete the note type.", - "$uSee Also:$u createnote"); -"RESYNC" ("/msg $S RESYNC <#channel>", - "Synchronizes users in the channel with the userlist. This means that if the user can normally get ops, $S makes sure the user has ops. Otherwise, if the user normally gets voice, $S makes sure the user has voice but not ops. Otherwise, $S makes sure the user has neither voice nor ops."); -"SAY" ("/msg $C SAY <#channel> <text>", - "Makes $b$C$b send a message to the specified channel.", - "$uSee Also:$u emote"); -"SEARCH CRITERIA" ("$bSEARCH CRITERIA$b", - "The following criteria may be used:", - " NAME Channels whose names match the given mask", - " REGISTRAR Channels whose registrar's account matches the given mask", - " UNVISITED Channels that have not been visited in at least the given duration", - " REGISTERED Channels that have been registered for less than the given duration", - " FLAGS Matches channels with the specified flag set", - " LIMIT Limit the number of channels returned by the search", - "Flags that can be matched against are: nodelete and suspended.", - "$uSee Also:$u search, search actions"); -"SEARCH ACTIONS" ("$bSEARCH ACTIONS$b", - "The following are valid $bsearch$b actions:", - " PRINT Prints matching channels", - " COUNT Prints the number of matching channels", - "$uSee Also:$u search, search criteria"); -"SEARCH" ("/msg $C SEARCH <action> <criteria> <value> [<criteria> <value>]...", - "Searches for channels which match the specified criteria. For a list of search actions, see $bsearch actions$b. For a list of the criteria, see $bsearch criteria$b.", - "$uSee Also:$u search actions, search criteria"); -"SEEN" ("/msg $C SEEN <#channel> <account>", - "This command will tell you if the selected user is in the channel, or when was the last time the user was seen in the channel.", - "$uSee Also:$u access, users"); -"SET" ("/msg $C SET <#channel> [<parameter> [setting]]", - "This command will set various channel options. With no arguments, it will show the current values of all channel options.", - "DEFAULTTOPIC: The channel's default topic.", - "TOPICMASK: A pattern that topics must match.", - "GREETING: A greeting message for visitors to the channel.", - "USERGREETING: A greeting message for users on the channel's userlist.", - "MODES: The channel's default modes.", - "PUBCMD: Restrictions to use commands in public.", - "INVITEME: Minimum level for users to use INVITEME or AUTOINVITE.", - "USERINFO: Minimum level for users to show an infoline on join.", - "GIVEVOICE: The users that $b$C$b will autovoice.", - "GIVEOPS: The users that $b$C$b will autoop.", - "ENFOPS: Restrictions for opping users.", - "ENFMODES: Restrictions to change the default modes.", - "ENFTOPIC: Restrictions on changing the topic.", - "TOPICSNARF: Topics set manually (by /TOPIC #channel ...) by users this level and above change the default $b$C$b topic.", - "SETTERS: Who may change channel settings (using $bSET$b).", - "CTCPUSERS: Who is allowed to send CTCPs to the channel.", - "CTCPREACTION: What happens when a disallowed CTCP is sent to the channel.", - "PROTECT: The protection level $b$C$b provides.", - "TOYS: Toggles how $b$C$b will respond to toy commands (!8ball etc).", - "TOPICREFRESH: Controls if (and how often) $b$C$b will reset the topic.", - "DYNLIMIT: Adjusts user limit (+l channel mode) to prevent join floods.", - "$bIRCOP ONLY$b:", - "NODELETE: Prevents channel deletion.", - "If you wish to reset your channel to the default settings, you can use the $bSET DEFAULTS$b command.", - "$uSee Also:$u set pubcmd, set giveops, set enfops, set enfmodes, set enftopic, set protect, set toys, set setters, set topicrefresh, set ctcpusers, set ctcpreaction, set defaults"); -"SET DEFAULTTOPIC" ("/msg $C SET <#channel> DEFAULTTOPIC <New default topic>", - "This changes the default topic for the channel. $C will set the IRC topic to this value when the $btopic$b command is used with no arguments, when the topic refresh happens (if you have $bset topicrefresh$b), or when an unauthorized user changes the topic to something else.", - "$uSee Also:$u set, set topicrefresh, set enftopic, set topicmask"); -"SET TOPICMASK" ("/msg $C SET <#channel> TOPICMASK <Topic mask with * and ?>", - "This sets a pattern that $C allows for the topic. A $b*$b will match any number of characters (including 0); a $b?$b will match any single character -- the same as with IRC hostmasks. A user may set a topic if either $btopicmask$b or $benftopic$b allow it.", - "For example, $b!set topicmask Hello *$b allows anyone to set the topic to be $bHello world$b, but they must be able to override the topic (according to the $bEnfTopic$b setting) to set the topic to $bGoodbye world$b.", - "You may \"escape\" those characters by putting a \\ before them in the topic mask; for example, $b!set topicmask Whassup\\?$b would only allow the topic to be $bWhassup?$b, while leaving out the \\ would allow the topic to be $bWhassup!$b (among other things).", - "For ease of use, if the TopicMask has only one * and no ?, then using $b!topic something$b will (if $bsomething$b does not match the TopicMask and you cannot override the topic lock) replace the * with the text $bsomething$b. If there is more than one * or any ? at all, $b!topic something$b will not work like that.", - "$uSee Also:$u set, set topic, set enftopic"); -"SET TOYS" ("/msg $C SET <#channel> TOYS <value>", - "This setting changes how $C will respond to commands like !8ball, or whether it responds at all. Valid settings are:", - "$b0$b Toys are completely disabled.", - "$b1$b Toys will only reply privately.", - "$b2$b Toys will reply publicly.", - "$uSee Also:$u set"); -"SET PUBCMD" ("/msg $C SET <#channel> PUBCMD <value>", - "This setting restricts the access necessary to use in-channel commands. It is a numeric user level, or 501 to mean no one may use public commands.", - "$uSee Also:$u set"); -"SET ENFOPS" ("/msg $C SET <#channel> ENFOPS <value>", - "This setting restricts who may op users who are not at least ops on the userlist. If $C sees someone with access below the specified access op someone not on the userlist (or who is a peon), it will deop the second user. It is a numeric user level, or 501 to mean no one may op unrecognized users.", - "$uSee Also:$u set"); -"SET GIVEOPS" ("/msg $C SET <#channel> GIVEOPS <value>", - "This setting restricts the minimum access someone must be to be automatically op'ed by $C. It is a numeric user level.", - "$uSee Also:$u set"); -"SET ENFMODES" ("/msg $C SET <#channel> ENFMODES <value>", - "This setting restricts the minimum access someone must have to change the channel modes from what is specified in the channel settings. It is a numeric user level, or 501 to mean no one may override the default modes.", - "$uSee Also:$u set"); -"SET ENFTOPIC" ("/msg $C SET <#channel> ENFTOPIC <value>", - "This setting restricts the minimum access someone must have to change the channel topic. It is a numeric user level, or 501 to mean no one may override the default topic.", - "If a topic mask is set, then a person may change the topic as long as it matches that mask $bor$b they have the above access.", - "If no topic mask is set, then a person must have the above access to change the topic from the default.", - "$uSee Also:$u set, set topic, set topicmask"); -"SET PROTECT" ("/msg $C SET <#channel> PROTECT <value>", - "This setting restricts the protection that $C enforces. Valid settings are:", - "$b0$b Non-users and users will be protected from those of equal or lower access", - "$b1$b Users will be protected from those of equal or lower access.", - "$b2$b Users will be protected from those of lower access.", - "$b3$b No users will be protected.", - "$uSee Also:$u set"); -"SET SETTERS" ("/msg $C SET <#channel> SETTERS <value>", - "Users with at least this user level can use the $bset$b command for $C.", - "$uSee Also:$u set"); -"SET TOPICREFRESH" ("/msg $C SET <#channel> TOPICREFRESH <value>", - "This setting controls if (and how often) $C refreshes the topic to the default value. Valid settings are:", - "$b0$b Never refresh topic.", - "$b1$b Refresh every 3 hours.", - "$b2$b Refresh every 6 hours.", - "$b3$b Refresh every 12 hours.", - "$b4$b Refresh every 24 hours.", - "$uSee Also:$u set, set topic"); -"SET CTCPUSERS" ("/msg $C SET <#channel> CTCPUSERS <value>", - "This setting controls who is allowed to send CTCPs to the channel. CTCP ACTION, the way that /me is implemented, are always allowed. For any other CTCP, the user must have this access level. 501 indicates no users may use CTCPs in the channel.", - "If a user below the specified level sends a CTCP (besides ACTION) to the channel, the enforcement is specified by the $bCTCPReaction$b setting.", - "$uSee Also:$u set, set ctcpreaction"); -"SET CTCPREACTION" ("/msg $C SET <#channel> CTCPREACTION <value>", - "This setting controls what happens to those who send disallowed CTCPs to the channel:", - "$b0$b Kick on disallowed CTCPs.", - "$b1$b Kickban on disallowed CTCPs.", - "$b2$b Short timed ban (defaults to 3 minutes) on disallowed CTCPs.", - "$b3$b Long timed ban (defaults to 1 hour) on disallowed CTCPs.", - "$uSee Also:$u set, set ctcpusers"); -"SET DEFAULTS" ("/msg $C SET <#channel> DEFAULTS [<confirmation>]", - "With the proper confirmation string, resets all the options for the channel to their default values.", - "With no confirmation string, displays the appropriate confirmation string.", - "$uSee Also:$u set"); -"STAFF" ("/msg $C STAFF", - "Lists all the IRC operators and helpers currently online. Nicknames enclosed in parentheses are away, and likely unavailable.", - "$uSee Also:$u helpers, ircops, netinfo"); -"SUSPEND" ("/msg $C SUSPEND <#channel> <nick|*account>", - "This disables the target's access to the channel. That access can be restored using the unsuspend command.", - "$uSee Also:$u unsuspend, deluser"); -"TOPIC" ("/msg $C TOPIC <#channel> [topic]", - "Sets the current topic for the specified channel. If no topic is specified, then set the current topic to the default topic."); -"TRIM" ("/msg $C TRIM <#channel> <target> <duration>", - "The trim command removes target objects inactive for more than a certain duration from a channel. The target must be a channel access level, a range of access levels (for example, \"300-399\"), \"users\" or \"bans\". The duration argument specifies the amount of time the target has been inactive for to be removed.", - "$uSee Also:$u durations"); -"UNBAN" ("/msg $C UNBAN <#channel> <mask|nick>", - "Unbans the specified nick or hostmask. If a nick is given, $b$C$b determines what hostmask(s) to unban.", - "$uSee Also:$u ban, kick, kickban"); -"UNBANALL" ("/msg $C UNBANALL <#channel>", - "Clears the specified channel's banlist. If the channel is omitted, then $bunbanall$b will be done in the channel where the command was given.", - "$uSee Also:$u ban, unban, unbanme"); -"UNBANME" ("/msg $C UNBANME <#channel>", - "Unbans your hostmask from the specified channel.", - "$uSee Also:$u ban, unban"); -"UNREGISTER" ("/msg $C UNREGISTER <#channel> [<confirmation>]", - "Unregisters a channel that is registered with $b$C$b. $bIMPORTANT$b: Once the channel is unregistered, the userlist $bcannot$b be recovered.", - "If you are not network staff, you must add a confimation string to the end of your line to confirm the unregistration. If you leave it out, $C will show the proper confirmation string.", - "$uSee Also:$u register"); -"UNSUSPEND" ("/msg $C UNSUSPEND <#channel> <nick|*account>", - "This restores the target's access to the channel (after it has been suspended).", - "$uSee Also:$u suspend, deluser"); -"UNVISITED" ("/msg $C UNVISITED [duration] [limit]", - "Displays up to a certain limit, all channels registered with $b$C$b that have not been visited within a certain duration. If a duration is not provided, a default will be used.", - "$uSee Also:$u expire, search, durations"); -"UP" ("/msg $C UP <#channel>", - "Grants you your normal channel privileges. If your access in the channel is less than the GiveVoice setting, this does nothing. Otherwise, if your access is less than the GiveOps setting, $b$C$b will give you voice. If your access is at least GiveOps, $b$C$b will give you ops."); -"UPALL" ("/msg $C UPALL", - "Executes the $bup$b command for each channel you have access in.", - "$uSee Also:$u up, down, downall"); -"USET" ("/msg $C USET <#channel> [<option> [<setting>]]", - "The $buset$b command allows you to toggle various channel user settings. With no arguments, it will print the current values of all channel user options.", - "$bOptions:$b", - "INFO: Sets the infoline that $C sends when you join the channel.", - "NOAUTOOP: Enable or disable $C automatically opping you upon joining or authenticating.", - "AUTOINVITE: $C will invite you to this channel if you have access to and are not in when you authenticate if this setting is on.", - "NOTE: The NoAutoOp setting is equivalent to the !togop command in previous versions of srvx.", - "$uSee Also:$u set"); -"USET INFO" ("/msg $C USET <#channel> INFO <info>", - "This command will set a user defined information message to be displayed when you join the channel. By setting the message to '*', you will clear your message.", - "$uSee Also:$u access"); -"USERS" ("/msg $C USERS <#channel> [mask]", - "Displays the userlist for the specified channel. If a mask is supplied, only users matching the mask will be shown.", - "$uSee Also:$u clist, mlist, olist, plist, wlist"); -"VOICE" ("/msg $C VOICE <#channel> <nick> [nick]...", - "Voices the specified nick in the specified channel. If the channel is omitted, then $bvoice$b will be done in the channel where the command was given.", - "$uSee Also:$u devoice"); -"WIPEINFO" ("/msg $C WIPEINFO <#channel> <nick|*account>", - "Removes the named user's infoline in the channel."); -"WLIST" ("/msg $C WLIST <#channel> [mask]", - "This command lists all users of level $bOwner$b on a channel's userlist. If a mask is supplied, only owners matching the mask will be shown.", - "$uSee Also:$u addcoowner, delcoowner, mdelcoowner, users"); - -"ME" "I am at your service. /msg $C help command, or /join #help "; -"thanks" ("AfterNET's own srvx2 is based on the hard work of the origional srvx developers. They would like to thank the following people for their help in making the origional srvx:", - " $bGameSurge IRC Network$b - All the users and staff there bear with our shortcomings and bugs and let us know what needs to be fixed.", - " $bIC5 Networks$b (and JohnM in particular) - Never afraid to critique things, even if we are the 800 pound gorilla.", - " $bMeeko, eraser, hock(ey), KilledInAction, MadEwokHerd, Milon and Shoat$b - Hardcore beta testing and bug finding on the testnet.", - " $bCrips and feigling$b - Reading through all the boring messages and finding ways to make them clearer.", - "Futher, the AfterNET srvx2 team would like to thank:", - " $breed$b - who tirelessly nagged us to upgrade our services", - "$bAfterNET Users and Opers$b - who faught both for and against the change, for the better of Afternet."); Index: srvx2/global.help diff -u srvx2/global.help:1.1.1.1 srvx2/global.help:removed --- srvx2/global.help:1.1.1.1 Thu Jun 3 10:13:59 2004 +++ srvx2/global.help Wed Jun 23 16:53:33 2004 @@ -1,35 +0,0 @@ -"<INDEX>" ("$b$G Help$b", - "The $b$G$b service allows network administrators to manage and send important notices to users. It also allows users to retrieve, at once, all messages addressed to them.", - "$bUser Commands:$b", - " MESSAGES Sends you all messages addressed to your user class.", - " VERSION Prints the srvx and $G version information.", - "$bPrivileged Commands:$b", - " NOTICE Immediately sends a message.", - " MESSAGE Adds a message to $G's database.", - " LIST Displays active messages.", - " REMOVE Removes a message."); -"LIST" ("/msg $G LIST", - "Displays all active messages and information pertaining to them, such as the target, message ID, expiration time, and who the message is from.", - "$uSee Also:$u message, messages, remove"); -"MESSAGE" ("/msg $G MESSAGE [<options> <value>] text <message>", - "Adds a notice to the $b$G$b database. Messages are sent to users as they enter the network or the target class. $bMessage$b takes several options, which must be preceded by the name of the option being used. Options include:", - "$bTARGET$b: Controls the recipients of the message. This option may be used multiple times. See the $bTARGET$b help entry for details.", - "$bDURATION$b: This option sets the length of time for which the message is valid. After this time, the message will be deleted from the $b$G$b database.", - "$uSee Also:$u list, messages, remove, target"); -"MESSAGES" ("/msg $G MESSAGES", - "Sends you all messages addressed to your user class."); -"NOTICE" ("/msg $G NOTICE <target> <message>", - "Immediately sends a notice to a specific target. See $btarget$b for a list of targets.", - "$uSee Also:$u target"); -"REMOVE" ("/msg $G REMOVE <message id>", - "Remove a message before it expires. The message ID can be found in the message you received when using $bsend$b to first add the message, or by using $blist$b.", - "$uSee Also:$u list, message"); -"TARGET" ("$bTARGET$b", - "$bTarget$b is used as a sub-command in many commands. It's values are:", - "$bUSERS$b: The message will be sent to all users on the network including opers and helpers, but not channels.", - "$bANNOUNCEMENT$b: The message will be sent to all users who are configured to receive community announcements.", - "$bHELPERS$b: The message will be sent to helpers only.", - "$bOPERS$b: The message will be sent to opers only.", - "$bSTAFF$b: The message will be sent to helpers and opers.", - "$bCHANNELS$b: The message will be sent to all channels.", - "$bALL$b: A combination of USERS and CHANNELS."); Index: srvx2/mod-helpserv.help diff -u srvx2/mod-helpserv.help:1.1.1.1 srvx2/mod-helpserv.help:removed --- srvx2/mod-helpserv.help:1.1.1.1 Thu Jun 3 10:13:59 2004 +++ srvx2/mod-helpserv.help Wed Jun 23 16:53:33 2004 @@ -1,295 +0,0 @@ -"<index>" ("Help Queue Manager commands", - "The following topics are available:", - " HELP How to use this service", - " QUEUE Managing the request queue", - " USERS Managing $S helpers", - " OPER IRC operator administration commands"); -"QUEUE" ("Managing the request queue in $S", - " LIST List open requests", - " NEXT Pick up the next unassigned request", - " PICKUP Pick up a particular unassigned request", - " REASSIGN Assign a request to another helper", - " CLOSE Close out a request", - " SHOW Show detailed information on a request", - " ADDNOTE Add a note to a request", - " PAGE Try to wake up other helpers", - " STATS Get statistics on time and requests handled", - " STATSREPORT Shows statistics for all users"); -"USERS" ("Managing helpers in $S", - " USER ACCESS Description of the user access levels", - " HELPERS List current helpers and their access levels", - " GIVEOWNERSHIP Transfer ownership to another user", - " ADDMANAGER Add a new manager to the service", - " ADDHELPER Add a helper to the service", - " ADDTRIAL Add a trial helper to the service", - " DELUSER Remove a person from the service", - " CLVL Change a user's access", - " SET Change $S settings"); -"USER ACCESS" ("User access levels", - "There are four levels of user access to $S: $btrial$b helper, $bhelper$b, $bmanager$b, and $bowner$b.", - "Helpers can use the normal help queue management functions.", - "Trial helpers have the same access as helpers, but they do not stop the \"empty alert\" from occuring", - "Managers also have the ability to use the $ureassign$u command, add and remove helpers, and see stats for any helper.", - "Owners have those abilities, can add and remove managers, and change queue settings."); -"OPER" ("IRC operator administration commands", - " REGISTER Register a new HelpServ bot", - " ADDOWNER Add an owner to an existing HelpServ", - " DELOWNER Remove an owner from an existing HelpServ", - " MOVE Change the channel or nick the service helps on", - " UNREGISTER Unregister a HelpServ bot", - " BOTS List registered HelpServ instances", - " EXPIRE Expire inactive channels", - " READHELP Re-read help file"); -"COMMANDS" "${index}"; - -"ADDTRIAL" ("$bADDTRIAL$b", - "/msg $S ADDTRIAL <nick|*account>", - "Add the specified user to the bot as a trial helper.", - "$uSee also:$u helpers, addhelper, addmanager, clvl, deluser"); -"ADDHELPER" ("$bADDHELPER$b", - "/msg $S ADDHELPER <nick|*account>", - "Add the specified user to the bot as a helper.", - "$uSee also:$u helpers, addtrial, addmanager, clvl, deluser"); -"ADDMANAGER" ("$bADDMANAGER$b", - "/msg $S ADDMANAGER <nick|*account>", - "Add the specified user to the bot as a manager.", - "$uSee also:$u helpers, addtrial, addhelper, clvl, deluser"); -"ADDOWNER" ("$bADDOWNER$b", - "/msg $O HELPSERV ADDOWNER <bot-nick> <nick|*account>", - "Add the specified user to the bot as a owner.", - "$uSee also:$u clvl, delowner, helpers"); -"ADDNOTE" ("$bADDNOTE$b", - "/msg $S ADDNOTE <reqid|nick|*account> <message>", - "Adds a helper note to a request (useful for requests that last a long period of time).", - "$uSee also:$u show"); -"BOTS" ("$bBOTS$b", - "/msg $O HELPSERV BOTS", - "Lists the currently defined HelpServ bots (along with their channels and owners' accounts).", - "$uSee also:$u EXPIRE"); -"EXPIRE" ("$bEXPIRE$b", - "/msg $O HELPSERV EXPIRE", - "Expires any HelpServ bots that have been inactive for too long.", - "$uSee also:$u BOTS"); -"GIVEOWNERSHIP" ("$bGIVEOWNERSHIP$b", - "/msg $S GIVEOWNERSHIP <nick|*account> CONFIRM", - "Gives ownership of the bot to another user on the userlist."); -"CLOSE" ("$bCLOSE$b", - "/msg $S CLOSE <reqid|nick|*account> [reason]", - "Closes out the specified request. The optional [reason] is included in the request log file."); -"CLVL" ("$bCLVL$b", - "/msg $S CLVL <user|*nick> <new-level>", - "Allows an owner or manager to change a user's access with $S.", - "$uSee also:$u addtrial, addhelper, addmanager, deluser, helpers"); -"DELOWNER" ("$bDELOWNER$b", - "/msg $O HELPSERV DELOWNER <bot-nick> <nick|*account>", - "Delete an owner from the channel user list. (Secretly, this is just an alias for deluser.)", - "$uSee also:$u clvl, deluser, helpers"); -"DELUSER" ("$bDELUSER$b", - "/msg $S DELUSER <nick|*account>", - "Delete a user from the channel user list.", - "$uSee also:$u addhelper, addmanager, clvl, helpers"); -"HELP" ("$bHELP$b", - "/msg $S HELP [command|topic]", - "HELP will show you usage or other information for the command you give.", - "All help entries will use the same syntax for usage, with optional parameters listed in [] and meta-parameters listed in <> (a meta-parameter is one that you must provide a value for).", - "If you do not give a command or topic for HELP, an index is shown."); -"HELPERS" ("$bHELPERS$b", - "/msg $S HELPERS", - "Displays the trials, helpers, managers and owner(s) registered with $S.", - "$uSee also:$u addtrial, addhelper, addmanager, deluser, tlist, hlist, mlist, wlist"); -"WLIST" ("$bWLIST$b", - "/msg $S WLIST", - "Displays the owner(s) registered with $S.", - "$uSee also:$u helpers"); -"MLIST" ("$bMLIST$b", - "/msg $S MLIST", - "Displays the managers registered with $S.", - "$uSee also:$u helpers"); -"HLIST" ("$bHLIST$b", - "/msg $S HLIST", - "Displays the helpers registered with $S.", - "$uSee also:$u helpers"); -"TLIST" ("$bTLIST$b", - "/msg $S TLIST", - "Displays the trials registered with $S.", - "$uSee also:$u helpers"); -"LIST" ("$bLIST$b", - "/msg $S LIST [unassigned|assigned|me|all]", - "Lists open help requests of the specified type (if not specified, defaults to \"unassigned\").", - "\"assigned\" means that a helper has picked up the request or been assigned to handle it.", - "\"me\" means to only show requests assigned to you.", - "$uSee also:$u next, pickup"); -"MOVE" ("$bMOVE$b", - "/msg $O HELPSERV MOVE <bot-nick> <new-nick|#new-channel>", - "Makes the HelpServ bot use a different nick or channel."); -"NEXT" ("$bNEXT$b", - "/msg $S NEXT", - "Assigns the next unhandled help request to you.", - "$uSee also:$u list, pickup, reassign, close"); -"PAGE" ("$bPAGE$b", - "/msg $S PAGE <reason for page>", - "Pages the current page target, requesting attention.", - "$uSee also:$u set"); -"PICKUP" ("$bPICKUP$b", - "/msg $S PICKUP <reqid|nick|*account>", - "Assigns the request with $breqid$b to you.", - "$uSee also:$u list, next, reassign, close"); -"READHELP" ("$bREADHELP$b", - "/msg $O HELPSERV READHELP", - "Re-reads the HelpServ help file."); -"REASSIGN" ("$bREASSIGN$b", - "/msg $S REASSIGN <reqid|nick|*account> <new-helper-nick>", - "Reassigns (or assigns) the specified request to $bnew_helper_nick$b.", - "$uSee also:$u next, pickup, close"); -"REGISTER" ("$bREGISTER$b", - "/msg $O HELPSERV REGISTER <bot-nick> <#channel> <owner-nick|*account>", - "Registers a new HelpServ bot to the specified channel, and adds the given user as owner.", - "$uSee also:$u unregister, helpers"); -"SET" ("$bSET$b", - "/msg $S SET [<option> [new-value]]", - "Change service options. If no option is specified, show all options. If no value is specified, show current value of option.", - "PageTarget Send command pages to this channel", - "PageType Delivery type for command pages (sent by the PAGE command)", - "AlertPageTarget Send alert pages to this channel", - "AlertPageType Delivery type for alert pages (to gain helpers' attention)", - "StatusPageTarget Send status pages to this channel", - "StatusPageType Delivery type for status pages (less urgent information, such as requests being opened/assigned/closed)", - "Greeting Message sent to users joining channel", - "ReqOpened Message sent to user opening a new request", - "ReqAssigned Message sent to user when their request is assigned to a helper", - "ReqClosed Message sent to user when their request is closed", - "IdleDelay Time user may idle in channel before bot complains to StatusPageTarget", - "WhineInterval Time between complaints about unhandled requests and idle users", - "WhineDelay Time before an unhandled request makes bot complain to AlertPageTarget", - "EmptyInterval Time between complaints (to AlertPageTarget) that the help channel is unstaffed", - "StaleDelay Time after which updating an old request causes it to send an activity alert", - "ReqPersist Persistence for new requests", - "HelperPersist Persistence for assignation of requests to helpers", - "Notification Notification to helpers of events concerning their requests", - "IdWrap Maximum request ID plus one (IDs wrap to 0 when they reach this)", - "ReqMaxLen Maximum number of lines of text allowed in a request", - "PrivmsgOnly Messages to users are sent as privmsg (overriding account preference)", - "ReqOnJoin Automatically opens a request for a user who joins the channel", - "AutoVoice Automatically voices users when their request is assigned to a helper", - "AutoDeVoice Automatically devoices users when their request is closed or their helper is unassigned", - "$uSee also:$u set <option-name>"); -"SET PAGETARGET" ("$bSET PAGETARGET$b", - "/msg $S SET PAGETARGET [#channel-name]", - "This sets the destination for pages and other alerts. The target may be set to * to disable pages entirely.", - "Just like $C registration requires an oper or helper, this option can only be set by an oper.", - "$uSee also:$u set, set pagetype, set statuspagetype"); -"PAGE TYPES" ("$bPAGE TYPES$b", - "The following types of pages may be used:", - "None Disable this particular page type", - "Notice Send as a notice to PageTarget", - "Privmsg Send as a normal message to PageTarget", - "Onotice Send as a notice to channel operators in PageTarget", - "$uSee also:$u set, set pagetarget, set pagetype, set statuspagetype"); -"SET PAGETYPE" ("$bSET PAGETYPE$b", - "/msg $S SET PAGETYPE <page-type>", - "This sets the type of page for pages sent using the $bpage$b command.", - "$uSee also:$u set, set pagetarget, page types, page"); -"SET STATUSPAGETYPE" ("$bSET STATUSPAGETYPE$b", - "/msg $S SET STATUSPAGETYPE <page-type>", - "This sets the type of page sent when a new request is opened.", - "$uSee also:$u set, set pagetarget, page types, page"); -"SET GREETING" ("$bSET GREETING$b", - "/msg $S SET GREETING <greeting-text>", - "This sets the message sent to users when they join the channel -- for example, the URL for a FAQ or \"How to get help\" page.", - "You may disable this message by using * as the text.", - "$uSee also:$u set"); -"SET OPENREQ" ("$bSET OPENREQ$b", - "/msg $S SET OPENREQ <openreq-text>", - "This sets a message sent to users when they open a new request with the bot. It is sent just before more mechanical information about the request ID, current wait time, and request persistence.", - "You may disable this message by using * as the text.", - "$uSee also:$u set"); -"SET ASSIGNREQ" ("$bSET ASSIGNREQ$b", - "/msg $S SET ASSIGNREQ <assignreq-text>", - "This sets a message sent to users when their request is assigned to a helper (or re-assigned to another helper).", - "You may disable this message by using * as the text.", - "$uSee also:$u set"); -"SET CLOSEREQ" ("$bSET CLOSEREQ$b", - "/msg $S SET CLOSEREQ <closereq-text>", - "This sets a message sent to users when their request is closed.", - "You may disable this message by using * as the text.", - "$uSee also:$u set"); -"SET IDLEDELAY" ("$bSET IDLEDELAY$b", - "/msg $S SET IDLEDELAY <interval>", - "If a user idles in the help channel longer than the IdleDelay, then the bot will complain every WhineInterval reminding helpers of all the users that are waiting and idle at least IdleDelay. As a user without voice is forced to be idle, this makes sense primarily if the help channel is moderated (+m) and the helpers voice users (+v) to ask them what they need.", - "You may disable this by using 0 as the interval.", - "$uSee also:$u set, set whineinterval"); -"SET WHINEDELAY" ("$bSET WHINEDELAY$b", - "/msg $S SET WHINEDELAY <interval>", - "If any unhandled requests in the queue are at least this old, the bot will send a page requesting someone to handle it.", - "If the request remains unhandled, another complaint will be sent every WhineInterval.", - "You may disable this by using 0 as the interval.", - "$uSee also:$u set, set whineinterval"); -"SET WHINEINTERVAL" ("$bSET WHINEINTERVAL$b", - "/msg $S SET WHINEINTERVAL <interval>", - "If any unhandled requests in the queue are at least WhineDelay old, then every WhineInterval, the bot will send a complaint about each unhandled request at least WhineDelay old, reminding helpers that the request is still unhandled.", - "IdleDelay messages are also sent every WhineInterval.", - "If you use 0 as the interval, only the initial request will be sent.", - "$uSee also:$u set, set whinedelay, set idledelay"); -"SET EMPTYINTERVAL" ("$bSET EMPTYINTERVAL$b", - "/msg $S SET EMPTYINTERVAL <interval>", - "If the help channel is unstaffed (there are no helpers in the channel) the bot will send a complaint to PageTarget every EmptyInterval.", - "You may disable this by using 0 as the interval.", -... [truncated message content] |
From: Alex S. <ru...@us...> - 2004-06-23 23:46:57
|
Committer : Alex Schumann <ru...@us...> CVSROOT : /cvsroot/x2serv Module : srvx2 Commit time: 2004-06-23 23:46:48 UTC Modified files: INSTALL Removed files: srvx Log message: Howd that get there.. ---------------------- diff included ---------------------- Index: srvx2/INSTALL diff -u srvx2/INSTALL:1.1.1.1 srvx2/INSTALL:1.2 --- srvx2/INSTALL:1.1.1.1 Thu Jun 3 10:13:58 2004 +++ srvx2/INSTALL Wed Jun 23 16:46:28 2004 @@ -51,12 +51,13 @@ Quick Install: ---------- -$ ./configure +$ ./autogen.sh +$ ./configure --prefix='/path/to/install/to' NOTE: The protocol the resulting srvx binary will support is determined by the configure script. The P10 protocol is the default; if you would like to link to Bahamut, you must pass the --with-protocol=bahamut flag to the configure script: - $ ./configure --with-protocol=bahamut + $ ./configure --with-protocol=bahamut --prefix='/path/to/install/to' $ make $ ${EDITOR} srvx.conf NOTE: You may want to copy srvx.conf.example to srvx.conf and Index: srvx2/srvx ----------------------- End of diff ----------------------- |
From: Alex S. <ru...@us...> - 2004-06-14 07:32:37
|
Committer : Alex Schumann <ru...@us...> CVSROOT : /cvsroot/x2serv Module : srvx2 Commit time: 2004-06-14 07:32:16 UTC Modified files: chanserv.help nickserv.help srvx src/chanserv.c src/chanserv.help src/hash.h src/modules-list.h src/nickserv.c src/nickserv.help src/proto-p10.c Log message: Support modes SMNQTO and commented support for z to use later added limit for account length of 15 (to go along with nefarious) ---------------------- diff included ---------------------- Index: srvx2/chanserv.help diff -u srvx2/chanserv.help:1.3 srvx2/chanserv.help:1.4 --- srvx2/chanserv.help:1.3 Thu Jun 10 13:14:32 2004 +++ srvx2/chanserv.help Mon Jun 14 00:32:02 2004 @@ -157,6 +157,13 @@ "=---------------------------------------=" ); +"LOGIN" ("=-- Logging In --=", + " Please login using:", + " /MSG $N AUTH <account> <password>", + " or the shortcut:", + " /AUTH <account> <password>" + ); + "MYACCESS" ("/msg $S MYACCESS [<nick|*account>]", "Lists channels where you have access and infolines in each.", "Network staff may specify a nickname or *account to view the list for another user.", Index: srvx2/nickserv.help diff -u srvx2/nickserv.help:1.2 srvx2/nickserv.help:1.3 --- srvx2/nickserv.help:1.2 Thu Jun 10 13:14:32 2004 +++ srvx2/nickserv.help Mon Jun 14 00:32:02 2004 @@ -307,6 +307,9 @@ "If no account is given, it will cancel the allowauth for the user (assuming the user has an allowauth).", "If the account is marked as a helper or oper, the STAFF qualifier must be given afterwards. This reduces social engineering attacks.", "$uSee Also:$u addmask, auth"); + +"LOGIN" ("See /MSG $N HELP AUTH"); + "AUTH" { "/services/nickserv/email_enabled" ( "/msg $N@$s AUTH [account] <password>", Index: srvx2/src/chanserv.c diff -u srvx2/src/chanserv.c:1.2 srvx2/src/chanserv.c:1.3 --- srvx2/src/chanserv.c:1.2 Thu Jun 3 16:34:02 2004 +++ srvx2/src/chanserv.c Mon Jun 14 00:32:05 2004 @@ -5806,6 +5806,11 @@ * full, see if they're on the banlist for the channel. If so, * kickban them. */ + /* This is really, really stupid. not all banned people are kicked. + * sometimes we like to leave them unkicked. + * I tried to explain this to the srvx developers and + * got insulted.. hence one reason for this fork. + * if(user->uplink->burst && !mNode->modes) { unsigned int ii; @@ -5813,12 +5818,13 @@ { if(user_matches_glob(user, channel->banlist.list[ii]->ban, 1)) { - /* Riding a netburst. Naughty. */ + ** Riding a netburst. Naughty. ** KickChannelUser(user, channel, chanserv, "User from far side of netsplit should have been banned - bye."); return 1; } } } + */ mod_chanmode_init(&change); change.argc = 1; Index: srvx2/src/chanserv.help diff -u srvx2/src/chanserv.help:1.3 srvx2/src/chanserv.help:1.4 --- srvx2/src/chanserv.help:1.3 Thu Jun 3 16:55:32 2004 +++ srvx2/src/chanserv.help Mon Jun 14 00:32:05 2004 @@ -157,6 +157,13 @@ "=---------------------------------------=" ); +"LOGIN" ("=-- Logging In --=", + " Please login using:", + " /MSG $N AUTH <account> <password>", + " or the shortcut:", + " /AUTH <account> <password>" + ); + "MYACCESS" ("/msg $S MYACCESS [<nick|*account>]", "Lists channels where you have access and infolines in each.", "Network staff may specify a nickname or *account to view the list for another user.", Index: srvx2/src/hash.h diff -u srvx2/src/hash.h:1.2 srvx2/src/hash.h:1.3 --- srvx2/src/hash.h:1.2 Thu Jun 10 13:14:33 2004 +++ srvx2/src/hash.h Mon Jun 14 00:32:05 2004 @@ -25,22 +25,29 @@ #include "dict.h" #include "policer.h" -#define MODE_CHANOP 0x0001 /* +o USER */ -#define MODE_VOICE 0x0002 /* +v USER */ -#define MODE_PRIVATE 0x0004 /* +p */ -#define MODE_SECRET 0x0008 /* +s */ -#define MODE_MODERATED 0x0010 /* +m */ -#define MODE_TOPICLIMIT 0x0020 /* +t */ -#define MODE_INVITEONLY 0x0040 /* +i */ -#define MODE_NOPRIVMSGS 0x0080 /* +n */ -#define MODE_KEY 0x0100 /* +k KEY */ -#define MODE_BAN 0x0200 /* +b BAN */ -#define MODE_LIMIT 0x0400 /* +l LIMIT */ -#define MODE_DELAYJOINS 0x0800 /* +D */ -#define MODE_REGONLY 0x1000 /* ircu +r, Bahamut +R */ -#define MODE_NOCOLORS 0x2000 /* +c */ -#define MODE_NOCTCPS 0x4000 /* +C */ -#define MODE_REGISTERED 0x8000 /* Bahamut +r */ +#define MODE_CHANOP 0x00000001 /* +o USER */ +#define MODE_VOICE 0x00000002 /* +v USER */ +#define MODE_PRIVATE 0x00000004 /* +p */ +#define MODE_SECRET 0x00000008 /* +s */ +#define MODE_MODERATED 0x00000010 /* +m */ +#define MODE_TOPICLIMIT 0x00000020 /* +t */ +#define MODE_INVITEONLY 0x00000040 /* +i */ +#define MODE_NOPRIVMSGS 0x00000080 /* +n */ +#define MODE_KEY 0x00000100 /* +k KEY */ +#define MODE_BAN 0x00000200 /* +b BAN */ +#define MODE_LIMIT 0x00000400 /* +l LIMIT */ +#define MODE_DELAYJOINS 0x00000800 /* +D */ +#define MODE_REGONLY 0x00001000 /* ircu +r, Bahamut +R */ +#define MODE_NOCOLORS 0x00002000 /* +c */ +#define MODE_NOCTCPS 0x00004000 /* +C */ +#define MODE_REGISTERED 0x00008000 /* Bahamut +r */ +#define MODE_STRIPCOLOR 0x00010000 /* +S Strip mirc color codes */ +#define MODE_MODUNREG 0x00020000 /* +M mod unregister */ +#define MODE_NONOTICE 0x00040000 /* +N no notices */ +#define MODE_OPERSONLY 0x00080000 /* +O Opers only */ +#define MODE_NOQUITMSGS 0x00100000 /* +Q suppress messages from quit notices */ +#define MODE_NOAMSG 0x00200000 /* +T no multi-target messages */ +#define MODE_SSLONLY 0x00400000 /* +z ssl only */ #define MODE_REMOVE 0x80000000 #define FLAGS_OPER 0x0001 /* Operator +O */ Index: srvx2/src/modules-list.h diff -u srvx2/src/modules-list.h:1.1.1.1 srvx2/src/modules-list.h:1.2 --- srvx2/src/modules-list.h:1.1.1.1 Thu Jun 3 10:14:00 2004 +++ srvx2/src/modules-list.h Mon Jun 14 00:32:05 2004 @@ -1 +1,4 @@ +WITH_MODULE(helpserv) +WITH_MODULE(snoop) +WITH_MODULE(memoserv) Index: srvx2/src/nickserv.c diff -u srvx2/src/nickserv.c:1.2 srvx2/src/nickserv.c:1.3 --- srvx2/src/nickserv.c:1.2 Thu Jun 3 16:34:03 2004 +++ srvx2/src/nickserv.c Mon Jun 14 00:32:05 2004 @@ -130,6 +130,7 @@ static unsigned int flag_access_levels[32]; static const struct message_entry msgtab[] = { { "NSMSG_HANDLE_EXISTS", "Account $b%s$b is already registered." }, + { "NSMSG_HANDLE_TOLONG", "The account name %s is too long. Account names must be %lu charactors or less."}, { "NSMSG_PASSWORD_SHORT", "Your password must be at least %lu characters long." }, { "NSMSG_PASSWORD_ACCOUNT", "Your password may not be the same as your account name." }, { "NSMSG_PASSWORD_DICTIONARY", "Your password should not be the word \"password\", or any other dictionary word." }, @@ -959,6 +960,12 @@ return 0; } + if(strlen(handle) > 15) + { + send_message(user, nickserv, "NSMSG_HANDLE_TOLONG", handle, 15); + return 0; + } + if (!is_secure_password(handle, passwd, user)) return 0; @@ -1491,6 +1498,11 @@ reply("NSMSG_HANDLE_EXISTS", argv[2]); return 0; } + if(strlen(argv[2]) > 15) + { + reply("NMSG_HANDLE_TOLONG", argv[2], 15); + return 0; + } dict_remove2(nickserv_handle_dict, old_handle = hi->handle, 1); hi->handle = strdup(argv[2]); Index: srvx2/src/nickserv.help diff -u srvx2/src/nickserv.help:1.2 srvx2/src/nickserv.help:1.3 --- srvx2/src/nickserv.help:1.2 Fri Jun 4 14:39:23 2004 +++ srvx2/src/nickserv.help Mon Jun 14 00:32:06 2004 @@ -307,6 +307,9 @@ "If no account is given, it will cancel the allowauth for the user (assuming the user has an allowauth).", "If the account is marked as a helper or oper, the STAFF qualifier must be given afterwards. This reduces social engineering attacks.", "$uSee Also:$u addmask, auth"); + +"LOGIN" ("See /MSG $N HELP AUTH"); + "AUTH" { "/services/nickserv/email_enabled" ( "/msg $N@$s AUTH [account] <password>", Index: srvx2/src/proto-p10.c diff -u srvx2/src/proto-p10.c:1.2 srvx2/src/proto-p10.c:1.3 --- srvx2/src/proto-p10.c:1.2 Thu Jun 10 13:14:33 2004 +++ srvx2/src/proto-p10.c Mon Jun 14 00:32:06 2004 @@ -548,8 +548,8 @@ void irc_gline(struct server *srv, struct gline *gline) { - putsock("%s " P10_GLINE " %s +%s %ld :%s", - self->numeric, (srv ? srv->numeric : "*"), gline->target, gline->expires-now, gline->reason); + putsock("%s " P10_GLINE " %s +%s %ld :<%s> %s", + self->numeric, (srv ? srv->numeric : "*"), gline->target, gline->expires-now, gline->issuer, gline->reason); } void @@ -2114,6 +2114,14 @@ case 'r': do_chan_mode(MODE_REGONLY); break; case 's': do_chan_mode(MODE_SECRET); break; case 't': do_chan_mode(MODE_TOPICLIMIT); break; + case 'S': do_chan_mode(MODE_STRIPCOLOR); break; + case 'M': do_chan_mode(MODE_MODUNREG); break; + case 'N': do_chan_mode(MODE_NONOTICE); break; + case 'Q': do_chan_mode(MODE_NOQUITMSGS); break; + case 'T': do_chan_mode(MODE_NOAMSG); break; + case 'O': do_chan_mode(MODE_OPERSONLY); break; +// uncomment this when ssl is enabled on the network. +// case 'z': do_chan_mode(MODE_SSLONLY); break; #undef do_chan_mode case 'l': if (add) { @@ -2257,6 +2265,14 @@ DO_MODE_CHAR(REGONLY, 'r'); DO_MODE_CHAR(NOCOLORS, 'c'); DO_MODE_CHAR(NOCTCPS, 'C'); + DO_MODE_CHAR(STRIPCOLOR, 'S'); + DO_MODE_CHAR(MODUNREG, 'M'); + DO_MODE_CHAR(NONOTICE, 'N'); + DO_MODE_CHAR(NOQUITMSGS, 'Q'); + DO_MODE_CHAR(NOAMSG, 'T'); + DO_MODE_CHAR(OPERSONLY, 'O'); + // uncomment this for ssl support + //DO_MODE_CHAR(SSLONLY, 'z'); #undef DO_MODE_CHAR if (change->modes_clear & channel->modes & MODE_KEY) mod_chanmode_append(&chbuf, 'k', channel->key); @@ -2295,6 +2311,14 @@ DO_MODE_CHAR(REGONLY, 'r'); DO_MODE_CHAR(NOCOLORS, 'c'); DO_MODE_CHAR(NOCTCPS, 'C'); + DO_MODE_CHAR(STRIPCOLOR, 'S'); + DO_MODE_CHAR(MODUNREG, 'M'); + DO_MODE_CHAR(NONOTICE, 'N'); + DO_MODE_CHAR(NOQUITMSGS, 'Q'); + DO_MODE_CHAR(NOAMSG, 'T'); + DO_MODE_CHAR(OPERSONLY, 'O'); + // uncomment this for ssl support + //DO_MODE_CHAR(SSLONLY, 'z'); #undef DO_MODE_CHAR if(change->modes_set & MODE_KEY) mod_chanmode_append(&chbuf, 'k', change->new_key); @@ -2350,6 +2374,14 @@ DO_MODE_CHAR(REGONLY, 'r'); DO_MODE_CHAR(NOCOLORS, 'c'); DO_MODE_CHAR(NOCTCPS, 'C'); + DO_MODE_CHAR(STRIPCOLOR, 'S'); + DO_MODE_CHAR(MODUNREG, 'M'); + DO_MODE_CHAR(NONOTICE, 'N'); + DO_MODE_CHAR(NOQUITMSGS, 'Q'); + DO_MODE_CHAR(NOAMSG, 'T'); + DO_MODE_CHAR(OPERSONLY, 'O'); + // uncomment this for ssl support + //DO_MODE_CHAR(SSLONLY, 'z'); #undef DO_MODE_CHAR } if (change->modes_set) { @@ -2365,6 +2397,14 @@ DO_MODE_CHAR(REGONLY, 'r'); DO_MODE_CHAR(NOCOLORS, 'c'); DO_MODE_CHAR(NOCTCPS, 'C'); + DO_MODE_CHAR(STRIPCOLOR, 'S'); + DO_MODE_CHAR(MODUNREG, 'M'); + DO_MODE_CHAR(NONOTICE, 'N'); + DO_MODE_CHAR(NOQUITMSGS, 'Q'); + DO_MODE_CHAR(NOAMSG, 'T'); + DO_MODE_CHAR(OPERSONLY, 'O'); + // uncomment this for ssl support + //DO_MODE_CHAR(SSLONLY, 'z'); #undef DO_MODE_CHAR switch (change->modes_set & (MODE_KEY|MODE_LIMIT)) { case MODE_KEY|MODE_LIMIT: @@ -2410,6 +2450,12 @@ case 'r': remove |= MODE_REGONLY; break; case 'c': remove |= MODE_NOCOLORS; case 'C': remove |= MODE_NOCTCPS; break; + case 'S': remove |= MODE_STRIPCOLOR; break; + case 'M': remove |= MODE_MODUNREG; break; + case 'N': remove |= MODE_NONOTICE; break; + case 'Q': remove |= MODE_NOQUITMSGS; break; + case 'T': remove |= MODE_NOAMSG; break; + case 'O': remove |= MODE_OPERSONLY; break; } } Index: srvx2/srvx ----------------------- End of diff ----------------------- |
From: Alex S. <ru...@us...> - 2004-06-11 14:45:43
|
Committer : Alex Schumann <ru...@us...> CVSROOT : /cvsroot/x2serv Module : x2 Commit time: 2004-06-11 14:45:37 UTC Added files: HELP/EXPIRE Log message: adding help for expire command ---------------------- diff included ---------------------- Index: x2/HELP/EXPIRE diff -u /dev/null x2/HELP/EXPIRE:1.2 --- /dev/null Fri Jun 11 07:45:37 2004 +++ x2/HELP/EXPIRE Fri Jun 11 07:45:26 2004 @@ -0,0 +1,20 @@ + $n will automatically purge channels that + are not being used anymore. Every time + an owner or coowner joins their channel + the counter is reset. Expirations + occur accorrding to the following: + * NEW (never before logged-into) channels + expire in 2 hours. + * All other channels expire in 30 days. + * Either an Owner or a CoOwner must + join and log in to reset the counter. + * use the .wlist command to see how long + since an owner has been seen. + + NOTE: A special topic will be set to warn + of impending expiration 3 days before. + You must clear this warning manually + after logging in. + /MSG $n #channel topic * + /MSG $n #channel SET TOPICFREQ 0 + See /MSG $n HELP SET for details. ----------------------- End of diff ----------------------- |