[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Muddleftpd-cvs] CVSROOT: /cvsroot/muddleftpd
From: |
Joerg Jaspert |
Subject: |
[Muddleftpd-cvs] CVSROOT: /cvsroot/muddleftpd |
Date: |
Sun, 02 Nov 2003 13:51:36 -0500 |
Module name: muddleftpd
Branch: release_1_3_13
Changes by: Joerg Jaspert <address@hidden> 03/11/02 13:51:35
Reply-to: address@hidden
CVSROOT: /cvsroot/muddleftpd
Module name: muddleftpd
Branch: release_1_3_13
Changes by: Joerg Jaspert <address@hidden> 03/11/02 13:51:35
Modified files:
src : Makefile.in
modules/auth/authlibsmb: auth.h README Makefile.in
modules/auth/authlibmysql: configure.ac auth.h README
Makefile.in
modules/auth/authlibmud: auth.h README Makefile.in
modules/auth/authlibmsql: auth.h README Makefile.in
modules/auth/authlibexample: auth.h Makefile.in
doc : Makefile.in
. : configure.ac NEWS Makefile.in ChangeLog
Log message:
* configure.ac, modules/auth/authlibmysql/configure.ac: Changed
way we look for mysql. Thats easier for users now.
* modules/auth/: authlibmsql/auth.h, authlibmysql/auth.h,
authlibsmb/auth.h, authlibmud/auth.h, authlibexample/auth.h:
Changed include from varargs.h to stdarg.h as gcc no longer
includes varargs.h
* modules/auth/: authlibmsql/README, authlibmysql/README,
authlibsmb/README, authlibmud/README, authlibexample/README:
Changed documentation to be in sync with new configure/makefile
things.
* modules/auth: authlibmsql/Makefile.in,
authlibmysql/Makefile.in, authlibexample/Makefile.in,
authlibsmb/Makefile.in, authlibmud/Makefile.in: Change Install
Target from TODO to something useful. Install the autlibfile in
libdir/muddleftpd set by configure run.
Also install the READMEs as README.auth$MODULE in the
documentation dir (see below).
* doc/Makefile.in: Added things to install txt documentation in
prefix/share/doc/muddleftpd/*
CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/muddleftpd/muddleftpd/src/Makefile.in.diff?only_with_tag=release_1_3_13&tr1=1.1&tr2=1.1.10.1&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/muddleftpd/muddleftpd/modules/auth/authlibsmb/auth.h.diff?only_with_tag=release_1_3_13&tr1=1.1&tr2=1.1.8.1&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/muddleftpd/muddleftpd/modules/auth/authlibsmb/README.diff?only_with_tag=release_1_3_13&tr1=1.2&tr2=1.2.8.1&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/muddleftpd/muddleftpd/modules/auth/authlibsmb/Makefile.in.diff?only_with_tag=release_1_3_13&tr1=1.1&tr2=1.1.8.1&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/muddleftpd/muddleftpd/modules/auth/authlibmysql/configure.ac.diff?only_with_tag=release_1_3_13&tr1=1.1&tr2=1.1.8.1&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/muddleftpd/muddleftpd/modules/auth/authlibmysql/auth.h.diff?only_with_tag=release_1_3_13&tr1=1.1&tr2=1.1.8.1&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/muddleftpd/muddleftpd/modules/auth/authlibmysql/README.diff?only_with_tag=release_1_3_13&tr1=1.2&tr2=1.2.8.1&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/muddleftpd/muddleftpd/modules/auth/authlibmysql/Makefile.in.diff?only_with_tag=release_1_3_13&tr1=1.1&tr2=1.1.8.1&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/muddleftpd/muddleftpd/modules/auth/authlibmud/auth.h.diff?only_with_tag=release_1_3_13&tr1=1.1&tr2=1.1.8.1&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/muddleftpd/muddleftpd/modules/auth/authlibmud/README.diff?only_with_tag=release_1_3_13&tr1=1.1&tr2=1.1.8.1&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/muddleftpd/muddleftpd/modules/auth/authlibmud/Makefile.in.diff?only_with_tag=release_1_3_13&tr1=1.1&tr2=1.1.8.1&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/muddleftpd/muddleftpd/modules/auth/authlibmsql/auth.h.diff?only_with_tag=release_1_3_13&tr1=1.1&tr2=1.1.8.1&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/muddleftpd/muddleftpd/modules/auth/authlibmsql/README.diff?only_with_tag=release_1_3_13&tr1=1.2&tr2=1.2.8.1&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/muddleftpd/muddleftpd/modules/auth/authlibmsql/Makefile.in.diff?only_with_tag=release_1_3_13&tr1=1.1&tr2=1.1.8.1&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/muddleftpd/muddleftpd/modules/auth/authlibexample/auth.h.diff?only_with_tag=release_1_3_13&tr1=1.1&tr2=1.1.8.1&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/muddleftpd/muddleftpd/modules/auth/authlibexample/Makefile.in.diff?only_with_tag=release_1_3_13&tr1=1.1&tr2=1.1.8.1&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/muddleftpd/muddleftpd/doc/Makefile.in.diff?only_with_tag=release_1_3_13&tr1=1.3&tr2=1.3.4.1&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/muddleftpd/muddleftpd/configure.ac.diff?only_with_tag=release_1_3_13&tr1=1.3&tr2=1.3.2.1&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/muddleftpd/muddleftpd/NEWS.diff?only_with_tag=release_1_3_13&tr1=1.3&tr2=1.3.2.1&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/muddleftpd/muddleftpd/Makefile.in.diff?only_with_tag=release_1_3_13&tr1=1.4&tr2=1.4.8.1&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/muddleftpd/muddleftpd/ChangeLog.diff?only_with_tag=release_1_3_13&tr1=1.7&tr2=1.7.2.1&r1=text&r2=text
Patches:
Index: muddleftpd/ChangeLog
diff -c /dev/null muddleftpd/ChangeLog:1.7.2.1
*** /dev/null Sun Nov 2 13:51:35 2003
--- muddleftpd/ChangeLog Sun Nov 2 13:51:35 2003
***************
*** 0 ****
--- 1,259 ----
+ 2003-11-02 Joerg Jaspert <address@hidden>
+
+ * configure.ac, modules/auth/authlibmysql/configure.ac: Changed
+ way we look for mysql. Thats easier for users now.
+
+ * modules/auth/: authlibmsql/auth.h, authlibmysql/auth.h,
+ authlibsmb/auth.h, authlibmud/auth.h, authlibexample/auth.h:
+ Changed include from varargs.h to stdarg.h as gcc no longer
+ includes varargs.h
+
+ * modules/auth/: authlibmsql/README, authlibmysql/README,
+ authlibsmb/README, authlibmud/README, authlibexample/README:
+ Changed documentation to be in sync with new configure/makefile
+ things.
+
+ * modules/auth: authlibmsql/Makefile.in,
+ authlibmysql/Makefile.in, authlibexample/Makefile.in,
+ authlibsmb/Makefile.in, authlibmud/Makefile.in: Change Install
+ Target from TODO to something useful. Install the autlibfile in
+ libdir/muddleftpd set by configure run.
+ Also install the READMEs as README.auth$MODULE in the
+ documentation dir (see below).
+
+ * doc/Makefile.in: Added things to install txt documentation in
+ prefix/share/doc/muddleftpd/*
+
+ 2003-11-02 Beau Kuiper <address@hidden>
+
+ * src/ftpd.h: removed headers for string.h since they are in
+ string.h. Updated prototype for safe_vsnprintf().
+
+ * src/string.c: fixed double use of varargs in string_catvprintf().
+ This fixed muddleftpd problems on PPC and possibly other archs.
+
+ * src/string.h: updated prototype for string_catvprintf()
+
+ * src/ftpout.c: modified ftp_write to use fixed string_catvprintf()
+
+ * src/logger.c: modified debuglog() to use fixed safe_vsnprint()
+
+ * src/utils.c: fixed possible double use of varargs in safe_vsnprintf()
+ Fixed safe_snprintf() so it does not use safe_vsnprintf() to prevent
+ performance degredation due to new design.
+
+ * Configure.ac: Added a check for stdarg.h, since the replacement
+ snprintf code needs it.
+
+ 2003-04-15 Beau Kuiper <address@hidden>
+
+ * src/main.c: mainprog(): added code to close all file descriptors.
+ After the server is started, it will also close the terminal file
+ desciptors, so ssh sessions are not stalled at logout.
+
+ * src/utils.c: fd_closeall_nonterminal(): determines the max file
+ descriptors number and attempts to close all open fds. The terminal
+ file descriptors are left untouched.
+
+ 2002-11-20 Beau Kuiper <address@hidden>
+
+ * src/acl.c: transfer_config(): Added code that allows the server
+ to retrieve the gid a user will operate as from the password file.
+ Just put "!" in front of the gid parameter. (eg gid !anuser) will
+ give the user the gid of the user anuser.
+
+ 2002-10-29 Beau Kuiper <address@hidden>
+
+ * src/string.c: string_filterbadchars(): Added code to only allow
+ /r and /n characters if and only if they are together as a TELNET
+ newline (/r/n). This fixes the bug of muddleftpd accepting input
+ with those characters in it and then mucking the log files up with
+ it.
+
+ * src/logger.c: Removed code that replaces /r and /n with spaces.
+ It doesn't need it anymore, since I have cured the original bug.
+
+ 2002-10-21 Joerg Jaspert <address@hidden>
+
+ * modules/auth/authlibexample/COPYING: Added back. This license
+ is different (a public domain one) and not GPL as I blindly
+ assumed from the name. Sorry Beau.
+
+ 2002-10-20 Joerg Jaspert <address@hidden>
+
+ * NEWS: Added. Contains summaries of changes between releases.
+
+ * CHANGES: Removed, that is now in NEWS.
+
+ * modules/auth/: authlibmsql/README, authlibmysql/README,
+ authlibsmb/README: No need to mention that it depends
+ on muddleftpd. Of course it does, it is distributed with it. :)
+
+ * tools/muddlestats.0.3.0/: AUTHORS, COPYING: Removed.
+ AUTHORS integrated into the main AUTHORS, license is the same as
+ Muddleftpd, GPL.
+
+ * AUTHORS: Rewrote so it reflects current state of the Art.
+
+ * modules/auth/: authlibmysql/AUTHORS, authlibmysql/COPYING,
+ authlibsmb/AUTHORS, authlibsmb/COPYING,
+ authlibexample/AUTHORS, authlibexample/COPYING,
+ authlibmsql/AUTHORS, authlibmsql/COPYING,
+ authlibmud/AUTHORS, authlibmud/COPYING: Removed.
+ Authors is now integrated into the main AUTHORS file and license is
+ same as Muddleftpd.
+
+ 2002-10-20 Joerg Jaspert <address@hidden>
+
+ * Developer.txt: Added Section about Changelogs/Commit
+ Messages. Changed (C) for new Files to be for the Muddleftpd team.
+
+ 2002-10-20 Beau Kuiper <address@hidden>
+
+ * modules/auth/: authlibexample/AUTHORS,
+ authlibexample/CHANGES, authlibexample/COPYING,
+ authlibexample/Makefile.in, authlibexample/README,
+ authlibexample/auth.h, authlibexample/authunix.c,
+ authlibexample/configure.ac, authlibmsql/AUTHORS,
+ authlibmsql/CHANGES, authlibmsql/COPYING,
+ authlibmsql/Makefile.in, authlibmsql/README,
+ authlibmsql/auth.h, authlibmsql/authmsql.c,
+ authlibmsql/configure.ac, authlibmud/AUTHORS,
+ authlibmud/CHANGES, authlibmud/COPYING,
+ authlibmud/Makefile.in, authlibmud/README,
+ authlibmud/auth.h, authlibmud/authmud.c,
+ authlibmud/configure.ac, authlibmysql/AUTHORS,
+ authlibmysql/CHANGES, authlibmysql/COPYING,
+ authlibmysql/Makefile.in, authlibmysql/README,
+ authlibmysql/auth.h, authlibmysql/authmysql.c,
+ authlibmysql/configure.ac, authlibsmb/AUTHORS,
+ authlibsmb/CHANGES, authlibsmb/COPYING,
+ authlibsmb/Makefile.in, authlibsmb/README,
+ authlibsmb/auth.h, authlibsmb/authsmb.c,
+ authlibsmb/configure.ac, authlibsmb/valid.h,
+ authlibsmb/smbval/Makefile.in, authlibsmb/smbval/byteorder.h,
+ authlibsmb/smbval/md4.c,
+ authlibsmb/smbval/rfcnb-common.h,
+ authlibsmb/smbval/rfcnb-error.h, authlibsmb/smbval/rfcnb-io.c,
+ authlibsmb/smbval/rfcnb-io.h,
+ authlibsmb/smbval/rfcnb-priv.h,
+ authlibsmb/smbval/rfcnb-util.c,
+ authlibsmb/smbval/rfcnb-util.h, authlibsmb/smbval/rfcnb.h,
+ authlibsmb/smbval/session.c,
+ authlibsmb/smbval/smbdes.c, authlibsmb/smbval/smbencrypt.c,
+ authlibsmb/smbval/smblib-common.h,
+ authlibsmb/smbval/smblib-priv.h,
+ authlibsmb/smbval/smblib-util.c, authlibsmb/smbval/smblib.c,
+ authlibsmb/smbval/smblib.h,
+ authlibsmb/smbval/std-defines.h,
+ authlibsmb/smbval/std-includes.h, authlibsmb/smbval/valid.c,
+ authlibsmb/smbval/valid.h: Finally added module code
+ into CVS
+
+ 2002-10-20 Beau Kuiper <address@hidden>
+
+ * Makefile.in, autogen.sh, configure.ac,
+ defaults.h, defaults.h.in, install-sh: Imported
+ authentication modules into build system.
+
+ Install does not work properly for modules, and there are still
+ some more tweaks to do
+
+ 2002-10-20 Joerg Jaspert <address@hidden>
+
+ * Developer.txt: Added suggestions from Beau
+
+ 2002-10-19 Joerg Jaspert <address@hidden>
+
+ * Developer.txt: First version of Guidelines for People
+ working on Muddleftpd
+
+ 2002-10-17 Beau Kuiper <address@hidden>
+
+ * Makefile.in, config.h.in, src/version.c:
+ updated to autoconf 2.54
+
+ 2002-10-17 Beau Kuiper <address@hidden>
+
+ * Makefile.in, configure, configure.ac,
+ configure.in: updated to autoconf 2.54
+
+ 2002-10-16 Beau Kuiper <address@hidden>
+
+ * src/logger.c: Logger patch was broken
+
+ Character constants are in ', not in " And character 20 is not a
+ space, while 0x20 is
+
+ 2002-09-28 Joerg Jaspert <address@hidden>
+
+ * src/util/seteguid.c~: Well, it exists in the original
+ tarball, but its a backup file -> delete it :)
+
+ 2002-09-28 Joerg Jaspert <address@hidden>
+
+ * src/util/: pwgrent.c, seteguid.c, seteguid.c~,
+ snprintf.c, strerror.c, strerror.h: Uhh, looks
+ like i missed to add them into CVS
+
+ 2002-09-26 Joerg Jaspert <address@hidden>
+
+ * defaults.h: Ok, devel version is odd, stable is even.
+
+ 2002-09-26 Joerg Jaspert <address@hidden>
+
+ * defaults.h: This is now 1.3.12 and no longer 1.3.11-devel
+
+ 2002-09-26 Joerg Jaspert <address@hidden>
+
+ * src/logger.c: Remove \r and \n before output to logfile
+
+ 2002-09-26 Joerg Jaspert <address@hidden>
+
+ * AUTHORS: Changed debian maintainer
+
+ 2002-09-26 Joerg Jaspert <address@hidden>
+
+ * AUTHORS, CHANGES, COPYING, INSTALL,
+ Makefile.defs, Makefile.in, README, TESTING,
+ TODO, config.h.in, configure, configure.in,
+ defaults.h, doc/Makefile.in, doc/cookie.txt,
+ doc/ftpcmds.txt, doc/muddleftpd.txt,
+ doc/mudlogd.txt, doc/mudpasswd.txt, doc/reference.txt,
+ doc/info/muddleftpd.info, doc/info/muddleftpd.texi,
+ doc/man/ftpwho.1, doc/man/muddleftpd.1,
+ doc/man/mudpasswd.1, examples/README,
+ examples/anon-only.conf, examples/anon-reigon.conf,
+ examples/mudlogd.conf, examples/ratios.conf,
+ examples/standard.conf, examples/vserver-host.conf,
+ examples/vserver.conf, examples/vserverbig.conf,
+ src/Makefile.in, src/acl.c, src/acl.h, src/auth.c,
+ src/auth.h, src/authanon.c, src/authdisable.c,
+ src/authint.c, src/authpam.c, src/authunix.c,
+ src/bufread.c, src/cfloader.c, src/checkip.c,
+ src/cmd.c, src/config.c, src/configfile.h,
+ src/datasock.c, src/dir.c, src/file.c, src/ftp.c,
+ src/ftpcmd.h, src/ftpd.h, src/ftplist.c,
+ src/ftpout.c, src/ftpsite.c, src/ftpstat.c,
+ src/ftpstate.c, src/ftptrans.c, src/ftpwho.c,
+ src/init.c, src/logger.c, src/main.c,
+ src/malloc.c, src/mudlogd.c, src/mudpasswd.c,
+ src/myglob.c, src/myglob.h, src/newfile.c,
+ src/pnums.h, src/procnum.c, src/proxy.c,
+ src/ratio.c, src/ratio.h, src/ratiotool.c,
+ src/reply.h, src/select.c, src/shmem.c,
+ src/socket.c, src/string.c, src/string.h,
+ src/tokset.h, src/utils.c, src/version.c,
+ tools/muddlestats.0.3.0/AUTHORS,
+ tools/muddlestats.0.3.0/COPYING,
+ tools/muddlestats.0.3.0/INSTALL,
+ tools/muddlestats.0.3.0/README, tools/muddlestats.0.3.0/TODO,
+ tools/muddlestats.0.3.0/muddleftpd.logrotate,
+ tools/muddlestats.0.3.0/muddlestats-gather.py,
+ tools/muddlestats.0.3.0/muddlestats.lsm,
+ tools/muddlestats.0.3.0/muddlestats.py: Imported muddleftpd
+
+
+ Copyright (C) 2002 Muddleftpd Team, http://www.nongnu.org/muddleftpd/
+ Copying and distribution of this file, with or without modification, are
+ permitted provided the copyright notice and this notice are preserved.
Index: muddleftpd/Makefile.in
diff -c /dev/null muddleftpd/Makefile.in:1.4.8.1
*** /dev/null Sun Nov 2 13:51:35 2003
--- muddleftpd/Makefile.in Sun Nov 2 13:51:35 2003
***************
*** 0 ****
--- 1,71 ----
+ # Copyright (C) 1999 Beau Kuiper
+
+ # 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, or (at your option)
+ # any later version.
+
+ # 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, write to the Free Software
+ # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+ include Makefile.defs
+
+ address@hidden@
+ # where the binary is stored
+ address@hidden@
+
+ # where the man pages are stored
+ address@hidden@
+
+ # where info files should be stored
+ address@hidden@
+
+ # directories to make
+ DIRS=src doc @subdirs@
+
+ # filenames to clean in distclean
+ DISTCLEAN_NAMES=\*.a \*.o \*~ \*.so config.status config.log config.cache
config.h Makefile configure.scan defaults.h
+
+ # filenames to clean in maintainer-clean
+ MAINTAINERCLEAN_NAMES=$(DISTCLEAN_NAMES) configure config.h.in
+
+ all:
+ $(MAKE) recursive TARGET=all
+
+ recursive:
+ @for current_dir in $(DIRS); do \
+ (cd $$current_dir && $(MAKE) $(TARGET)) || exit 1; \
+ done
+
+ install:
+ $(MAKE) recursive TARGET=install
+
+ clean:
+ $(MAKE) recursive TARGET=clean
+ rm -f *~ DEADJOE
+
+ distclean:
+ $(MAKE) recursive TARGET=distclean
+ @echo
+ @echo -n searching and removing files
+ @for file in $(DISTCLEAN_NAMES); do \
+ find -name "$$file" -print0 | xargs -0 rm -f; \
+ echo -n .; \
+ done
+ @echo done
+
+ maintainer-clean:
+ $(MAKE) recursive TARGET=maintainer-clean
+ @echo
+ @echo -n searching and removing files
+ @for file in $(MAINTAINERCLEAN_NAMES); do \
+ find -name "$$file" -print0 | xargs -0 rm -f; \
+ echo -n .; \
+ done
+ @echo done
Index: muddleftpd/NEWS
diff -c /dev/null muddleftpd/NEWS:1.3.2.1
*** /dev/null Sun Nov 2 13:51:35 2003
--- muddleftpd/NEWS Sun Nov 2 13:51:35 2003
***************
*** 0 ****
--- 1,964 ----
+
+ Version 1.3.13:
+
+ 1) Change: Revamped build system to use new build tools.
+ 2) Change: Included authentication modules into build system.
+ They are installed (if selected at configure time) into
+ the libdir from configure. Normally prefix/lib
+ (/usr/local/lib if not specified).
+ 3) Bug Fix: Properly fixed bug in 1.3.12.1, so muddleftpd does not
+ accept /r or /n from user input unless it is the form of
+ a TELNET newline.
+ 4) Bug Fix: Scrambled output on PPC systems fixed. (possibly other
+ systems too)
+ 5) Change: Install .txt documentation in prefix/share/doc/muddleftpd/*.
+
+ Version 1.3.12.1:
+
+ 1) Bug Fix: Fixed logging of /r and /n so they are converted to
+ spaces.
+
+ Version 1.3.12:
+
+ 1) Bug Fix: Linux does not like custom PASV replies with ip-masq.
+ Using reply recommended (but not mandatory) in RFC959.
+ (Beau Kuiper)
+ 2) Change: Included support for large files (> 2 gig) on 32bit
+ systems.
+ 3) Change: Removed QUIET compile option, replaced by verbose
+ parameter.
+ 4) Change: Added support for HP-UX 11.00
+ 5) Bug Fix: fixed warnings with GCC 3.X compiler
+
+ Version 1.3.11:
+
+ 1) Change: Updated mudlogd. now sighup will reload config file.
+ (Beau Kuiper)
+ 2) Bug Fix: Overflowing port value allowed sending data to ports
+ below 1024 dispite restrictions. (Beau Kuiper)
+ 3) Bug Fix: Fixed storing files so they are truncated to the
+ start position, like other ftpds. (Beau Kuiper)
+ 4) Bug Fix: Removed races in the STOR and STOU commands.
+ (Beau Kuiper)
+ 5) Bug Fix: Removed race in STOU unique filename generator.
+ (Beau Kuiper)
+ 6) Change: Minor optimizations, less malloc frobbing in some common
+ code paths.
+
+ Version 1.3.10:
+
+ 1) Bug Fix: Fixed warnings from gcc. (Beau Kuiper)
+ 2) Change: Added %(x,*)d format for cookies. (Beau Kuiper)
+ 3) Bug Fix: Fixed gid/uid handling, corrected casting,
+ mainly useful for older machines with 16bit uid and gid
+ (Beau Kuiper)
+ 4) Bug Fix: Fixed manual page installation to put .1 at the end.
+ (Decklen Foster)
+ 5) Bug Fix: Fixed makefile problems. (Beau Kuiper)
+ 6) Bug Fix: Fixed freeing of null pointers when specified configuration
+ file is a directory. (Beau Kuiper)
+ 7) Bug Fix: Fixed gid/uid handling so NIS works. (Beau Kuiper)
+ 8) Change: Now using new malloc library. It is much better than
+ most other mallocs, including GNU's (Beau Kuiper)
+ 9) Change: Added the package Muddlestats. It seems very good and
+ has a promising future. (McRee)
+ 10) Bug Fix: Fixed uploads on IBM AIX systems. This bug has existed
+ a long time. (Beau Kuiper, helped by Sergey Novoselov)
+ 11) Bug Fix: Fixed recursive directory listings again (Beau Kuiper,
+ helped by Nik Soggia)
+ 12) Documentation: Minor changes to example configs. (Beau Kuiper)
+ 13) Documentation: Added mudlogd documentation. (Beau Kuiper)
+ 14) Change: Added the mudlogd program, which works separatly from
+ muddleftpd to allow simple log rotation. (Beau Kuiper)
+
+ Version 1.3.9:
+
+ 1) Bug Fix: Connection rejections if DNS broken fixed. (Beau Kuiper)
+ 2) Documentation: added mudpasswd manual page. (Decklen Foster)
+ 3) Bug Fix: Better error reporting in ftpwho (Decklen Foster)
+ 4) Documentation: Minor change to info page. (Decklen Foster)
+ 5) Bug Fix: made forking into background a command line
+ parameter instead of a #define (Beau Kuiper)
+ 6) Change: added separate upload/download speed limiters for people
+ with differing upload and download speeds, eg cable modem
+ and ASDL. (Beau Kuiper)
+ 7) Change: changed source tree directory structure, separating source
+ files into thier own directory. (Beau Kuiper)
+ 8) Bug Fix: Fixed directory listing again, so even simpler and
+ better. (Beau Kuiper)
+ 9) Bug Fix: Small memory leak in listing code fixed. (Beau Kuiper)
+ 10) Bug Fix: Finally fixed date parsing in list code so year is
+ displayed if last modified was a different year.
+ (Beau Kuiper)
+ 11) Bug Fix: String length checking fixes for config files.
+ (Tomas Ogren)
+ 12) Bug Fix: Memory alignment issues fixed in configuration
+ include sections (Tomas Ogren)
+ 13) Bug Fix: Some libc's don't like being told to vsnprintf
+ without a buffer. Fixed autoconf script to
+ check for this and use replacement if true.
+ (reported by Tomas Ogren, fixed by Beau Kuiper)
+ 14) Bug Fix: Moved HOST reply strings to reply.h (Beau Kuiper)
+ 15) Change: added EPSV and EPRT commands, to support IPV6 at
+ a later date. (Beau Kuiper)
+ 16) Change: added busydumpdata directive option for main and
+ virtual server sections. Now the server won't blindly
+ disconnect if too many users connect at the same
+ time. (Idea by Tomas Ogren, done by Beau Kuiper)
+ 17) Bug Fix: Fixed makefiles to use configure specified manpage
+ and info directories. (Decklin Foster)
+ 18) Bug Fix: Fixed ABOR to forget any data port information.
+ (Beau Kuoper)
+ 19) Bug Fix: Fixed default data port handling, with server using
+ the wrong IP address. (Beau Kuiper)
+ 20) Bug Fix: Fixed SITE error message with no parameters.
+ (Beau Kuiper)
+
+ Version 1.3.8:
+
+ 1) Bug Fix: Fixed bug in ratio record creation
+ 2) Change: Added HOST support as outlined in the draft I have
+ written.
+ 3) Bug Fix: Minor fix for errorous exit. Now exits with 1 if an
+ error occurs. Suggested by Decklin Foster
+ 4) Bug Fix: More descriptive error messages for when the server
+ has too many users.
+ 5) Bug Fix: Recursive listing crashed muddleftpd if the last dir
+ scanned but the recurse algorithm is empty.
+ 6) Bug Fix: substantial fix to be more compatible with /bin/ls for
+ recursive lists. Should fix mirror.pl
+ 7) Bug Fix: upload resume using STOR command fixed. A very simple
+ mistake that existed in the whole (1.3.X) series.
+ 8) Bug Fix: Fixed free NULL pointer error when no ipacls specified.
+
+ Version 1.3.7:
+
+ 1) Bug Fix: Listing ACL's did not work correctly.
+ 2) Bug Fix: Major bug in freeing children caused major problems
+ after server maxusers had logged in and out.
+ 3) Bug Fix: Bind errors were being displayed when using runasuser
+ directive. They are now ignored (they are harmless)
+ 4) Bug Fix: SIGHUP is now not acted upon if runasuser is active.
+
+ Version 1.3.6:
+
+ 1) Bug Fix: Fixed serious DOS bug when the new maxipconnect
+ directive is used.
+
+ Version 1.3.5:
+
+ 1) Change: Pam module now accepts option pam_user, to force
+ the username it will read from the password file and
+ return the credentials for.
+ 2) Bug Fix: better logging of some failed calls.
+ 3) Change: Now quitdump, cddump and welcome do not need to be
+ specified specially for chroot mode.
+ 4) Bug Fix: string.c changed for easier porting. Was GCC dependant.
+ 5) Bug Fix: memcpy bug while resolving hostnames.
+ 6) Bug Fix: Improper handling of uid, gid in authentication.
+ 7) Bug Fix: Warnings repaired, prototypes rebuilt using scribe.
+ 8) Change: Ftp list code now supports recursive listing. The listing
+ code is very fast/memory efficient.
+ 9) Bug Fix: Fixed memory leak while authenticating user.
+ 10) Change: Added funtions to retrieve hostname/ip from
+ authentication modules.
+ 11) Change: I am using my own glob routines now, sorts correctly for
+ machines without glob.
+ 12) Change: The fnmatch code I wrote is now being used regardless of
+ whether the library has its own one.
+ 13) Bug Fix: fnaccess and pfnaccess have been repaired, and can be
+ used.
+ 14) Change: Listing now shows total directory sizes like the real
+ ls.
+ 15) Bug Fix: Dumping relative files when changing directories caused
+ the file for the last directory to be dumped
+ 16) Bug Fix: ratiotool failed to set correct file permissions on
+ a newly created ratio file.
+ 17) Bug Fix: compile fixes for IRIX.
+ 18) Bug Fix: Macros broken in ftpd.h
+ 19) Bug Fix: Ips were shown backwards in ftpwho if reverse hostname
+ was not found.
+ 20) Change: Added option maxconnectperip. This limits the number of
+ connections from a single IP address.
+ 21) Bug Fix: Fix when user operation is more than 120 characters.
+ This lead to ftpwho printing the hostname after the
+ operation.
+ 22) Bug Fix: cookies in access directives were not being applied
+ correctly.
+ 23) Bug Fix: Signals must be blocked while reloading config, or
+ deleting users, or bad things happen
+
+ Version 1.3.4:
+
+ 1) Bug Fix: The internal password module was feeding the config
+ error function the wrong variable.
+ 2) Bug Fix: Fixed a bug in include handling that would prevent
+ use in 64bit environments.
+ 3) Bug Fix: Include looping is now checked before config file is
+ loaded.
+ 4) Change: Removed authparams option. Auth modules get to fend for
+ themselves (this provides more functionality, and better
+ directive names)
+ 5) Bug Fix: Help was not being shown correctly.
+ 6) Documentation: Updated some documentation.
+ 7) Bug Fix: Possible to free NULL pointers in config.c
+ 8) Change: Changed a few error messages to be more understandable.
+ 9) Change: A temporary change that will lock up muddleftpd if it
+ tries to free a NULL pointer. It locks muddleftpd up
+ so a debugger can get a clean backtrace of the program.
+ 10) Bug Fix: Fix for attempting to rotate logs while in droproot
+ mode.
+ 11) Bug Fix: Usernames are more rigourously checked because
+ regular expression characters in accepted usernames
+ may provide more access than intended.
+ 12) Change: The anonymous authentication module now returns the uid
+ and gid of nobody instead of the ftp user. This is
+ more consistent with other ftp servers.
+ 13) Change: Listing of devices is more accurate, showing the
+ major and minor device numbers like real ls.
+ 14) Change: Muddleftpd now uses the real hostname as the default
+ hostname of the host and virtual servers.
+ 15) Change: Ipacl for hostnames must be in brackets. Without
+ brackets, it is always checked against the IP
+ 16) Bug Fix: got rid of any use of inet_ntoa, since I wasn't
+ using it right.
+ 17) Change: Set default logstrength to log everything.
+ 18) Documentation: Documented all server directives.
+
+ Version 1.3.3:
+
+ 1) Change: Can now use %v in group config to get current virtual
+ server section name and %V to get current virtual server
+ host name. Ratio %v and %V are now %a and %A
+ 2) Change: Can now use tokens in greeting line.
+ 3) Bug Fix: Fix for bug where directories with % in them did weird
+ things (see version 1.2.10)
+ 4) Change: New config option droproot. This option will drop all
+ root prividges when a user logs. It also will use
+ capibilities so it can still use low numbered ports on
+ linux 2.2 or better if libcap is installed.
+ 5) Change: reply.h now contains macros to the replys the server
+ generates, It allows replies for foriegn languages or
+ other ftp servers to be used, basicly changing the
+ persona of the ftp server.
+ 6) Bug Fix: muddleftpd was not correctly enforcing the one command
+ at a time requirement of FTP.
+ 7) Bug Fix: muddleftpd was not updateing upload/download byte
+ counter.
+
+ Version 1.3.2:
+
+ 1) Bug Fix: Muddleftpd is much more careful now about the
+ configuration file it listens to. The config file now
+ must be owned by the user/group who runs it, and must
+ not be world or group writable. This fixes a security
+ vulnerability in ftpwho if it is setuid. Same for
+ internal password files.
+ 2) Change: Added the -n option to display IP's instead of hostnames
+ in ftpwho.
+ 3) Bug Fix: Fix for truncated replys where length of reply was more
+ than 1024 characters.
+ 4) Change: Implemented new directive include, which allows you to
+ include another section in the current section. Good for
+ creating templates.
+ 5) Change: Changed how config errors were handled, improving error
+ reporting and detection
+ 6) Change: By default, muddleftpd is built to be quiet on startup.
+ 7) Change: ratios now get data from groups section rather than a
+ separate section. Use include to have ratio directives in
+ other sections.
+ 8) Change: Sending SIGUSR1 to the server process will make it reopen
+ the log file and instruct the children servers to do the
+ same. Note that chrooted server children will not be able
+ to reopen the log file.
+ 9) Change: added fnmatch pattern based access controls, including
+ controls to explicitly match slashes.
+ 10) Bug Fix: Maximum process limit setting was broken, fixed.
+ 11) Bug Fix: Symbolic links were always assumed readable in the
+ listing code. Does not work because the /proc
+ filesystem actually has non-world readable symbolic
+ links.
+
+ Version 1.3.1:
+
+ 1) Change: Minor changes to how the scratchfile is used.
+ 2) Change: Muddleftpd now uses proper unix style arguments. It
+ has a usage screen and a version option.
+ 3) Change: PORT command more verbose, repling where it will connect
+ to.
+ 4) Change: root privliges are given for connecting to low number
+ ports. This is for RFC951 complience.
+ 5) Bug Fix: Fixed code so muddleftpd runs of FreeBSD. Borrowed :-)
+ some code from proftpd (for functions fgetpwent and
+ fgetgrent)
+ 6) Bug Fix: snprintf replacement code has a bug causing very bad
+ problems.
+ 7) Bug Fix: removed TCP_CORK code since it only slows data transfers
+ down.
+ 8) Bug Fix: Fixed a few compile bugs.
+ 9) Change: Changed log format and how log was written
+ 10) Change: Added support of dlopen modules for authentication
+ modules
+ 11) Change: Minor updates to authentication module interfaces.
+ 12) Change: Passwords used by anonymous users are now logged.
+ 13) Bug Fix: Fixed %N cookie for user count.
+ 14) Change: Got rid of pidfile support, now ftpwho -p will return
+ the pid of the running standalone muddleftpd.
+ 15) Change: Now scratchfile is used for locking in both inetd and
+ standalone modes. This means the server doesn't need to
+ lock against the config file and it could be changed
+ without problems.
+ 16) Change: ftpwho program rewritten and much more useful now :-)
+ 17) Bug Fix: A couple of missing returns fixed. Should have caused
+ problems already :-)
+ 18) Bug Fix: A bug in acl.c fixed where segfault would occur if no
+ ACLs were specified for a user
+ 19) Change: Authentication modules can now cancel authentication of
+ a user if a serious error occurs.
+ 20) Change: Authentication is now cancelled if an authentication
+ module cannot be found.
+ 21) Change: If muddleftpd cannot bind to a port when it starts up,
+ then it will exit. If it cannot bind to a port when
+ you issue a SIGHUP, then it will log it and continue.
+ 22) Change: Commands can now be disabled per group within the config
+ file.
+ 23) Bug Fix: Data corruption bug after SIGHUP removes a virtual
+ server fixed.
+ 24) Change: When a user connects, muddleftpd will fail to recognize
+ all but a few commands needed to login.
+ 25) Change: ftpwho reports vservers using their section names.
+ 26) Change: Now download speed limits can be specified per group
+ These are highly accurate and reasonably smooth.
+ 27) Bug Fix: Porting fixes for weirder unixes including simple-glob
+ fixes.
+ 28) Bug Fix: Small bug parsing gid lists caused crashes with long
+ suplemental gid lists.
+ 29) Change: Speed limits now also apply to file lists and uploads.
+ 30) Bug Fix: New listing code would possibly break when a partial write
+ occured.
+ 31) Change: Finished logindumpdata support.
+
+ Version 1.3.0:
+
+ 1) Bug Fix: for large maxusers, the default settings would cause
+ muddleftpd to croak. Fixed.
+ 2) Bug Fix: for long usernames and non-default constant values, a
+ possible problem with setting username has been fixed
+ 3) Change: PAM module now does more logging to aid debugging.
+ 4) Change: shared memory is more compact now, only storing thread
+ users.
+ 5) Change: EXPERIMENTAL INETD SUPPORT!!!!
+ 6) Bug Fix: on systems that need -ldl for pam support, it would
+ cause pam support not to compile. Fixed.
+ 7) Bug Fix: if muddleftpd is running inetd mode, now errormessages
+ go to the system log.
+ 8) Change: Log message now emmitted if non-existant auth method
+ used.
+ 9) Change: Better debug logging system now in place. Can work
+ even with inetd
+ 10) Bug Fix: Fix to MDTM. This broke netscape quite convincingly
+ 11) Bug Fix: Fix for netscape race and maybe other clients.
+ 12) Change: All configuration is in single file now! This improves
+ performace muchly esp under load.
+ 13) Documentation: Examples updated for new code!
+ 14) Bug Fix: Fix to logging where SITE commands were logged twice.
+ 15) Bug Fix: Listing bug fixed where files were being used as
+ regular expressions.
+ 16) Chnage: Replaced ACL code. New code also recognises mkdir and
+ rmdir, chmod and chdir. Add only applies to files now.
+ 17) Change: Now ip's can be denied as well as allowed with the new
+ ipacl directive. Note that the order ipacl's are
+ specified in is very important.
+ 18) Change: Now log messages are generated when a user logs out
+ of the server.
+ 19) Bug Fix: User cannot specify PORT command with data port < 1024
+ 20) Bug Fix: Total file size is now given when doing binary
+ downloads, regardless of starting position. Other
+ ftp servers act this way, and some client expect it.
+ 21) Bug Fix: Maximum timeout was not correctly set.
+ 22) Change: Writing to control port now has timeout, so it cannot
+ lock up.
+ 23) Change: Continuation messages have new format that look nicer.
+ 24) Change: New group system is working, It now traverses a list
+ of groups in the user file to determine what group a
+ user is. It needs more work ATM.
+ 25) Change: added IP and name access lists to make group system
+ very, very, very configurable.
+ 26) Bug Fix: For systems which uses non-DES encryption, muddleftpd
+ used crypt correctly.
+ 27) Change: added hostname based matching and hostnames in logs.
+ 28) Change: reverse dns timout setting added
+ 29) Change: Alternate long reply format option added, allows for bad
+ proxys and stuff.
+ 30) Change: VIRTUAL SERVER SUPPORT ADDED. Not yet completed or
+ optimised for file descriptor usage.
+ 31) Bug Fix: Fixed several small bugs found in 1.2.2.
+ 32) Bug Fix: A minor bug working with parameters fixed.
+ 33) Bug Fix: A bug when parsing config files caused tabs to be
+ misinterpreted.
+ 34) Change: Smart binding. This allow muddleftpd to minimize the
+ number of file descriptors used when binding files.
+ 35) Change: Zero binding. When used with smart binding above, allows
+ virtual servers to be used on all servers. This basicly
+ makes sure all binds are performed on address 0.0.0.0
+ 36) Change: Using rlimits instead of manually checking memory size
+ for determining overuse of memory.
+ 37) Change: Made single configuration file loading to be less memory
+ intensive.
+ 38) Change: Server will now reload config file with a HUP signal.
+ 39) Change: Server now lets you specify if you want to real chroot
+ to the rootdir instead of doing a pretend chroot. It is
+ ignored if root access isn't avaliable. This provides
+ extreme security for paranoid system administrators
+ (like me!)
+ 40) Change: When a user logs in, the uid/gid is switched to that
+ user instead of being left as root. This reduces code
+ size and improves security. I also seem to learn things
+ the hard way (I should have had this ages ago)
+ 41) Change: Ratio support. An external binary file is used for this,
+ and users are added to it as they log in. Ratio's are
+ implimented so multiple sessions are no problem. Ratios
+ apply to both files and bytes, and can be persistant or
+ non-persistant.
+ 42) Change: Config changes. Now parameters are easier to specify,
+ and including spaces is easy.
+ 43) Change: By default, muddleftpd now doesn't allow access to non
+ regular files (eg device files). To re-enable use
+ devaccess in group sections.
+ 44) Change: Full group support, include supplementry group lists.
+ 45) Change: Added a ratio changing program, ratiotool. It can add,
+ edit and psudo-delete ratio file entries. It is safe to
+ use while the server is running.
+ 46) Bug fix: Fixed a small bug that always put an extra / at the
+ beginning of a filename in the log if rootdir is /
+ 47) Change: If rootdir contains symlinks, they are now dereferenced
+ as the user logs in.
+ 48) Change: Added a realdir option. This will automaticly report the
+ real directory name, with all symlinks dereferenced,
+ instead of the internal construction.
+ 49) Change: Added code to detect broken snprintf, and to work out
+ which syntax it uses and use that syntax.
+ 50) Change: Detects if double ints work correctly and disables
+ ratios if they don't
+ 51) Change: Added fxpallow option, so server-server transfers may
+ work on a per-group basis.
+ 52) Change: Implemented output buffer to make sure long replies are
+ sent effeciently.
+ 53) Change: Input from dumped files and user is now put through a
+ filter that removes non-printable characters.
+ 54) Change: Implemented options to specify long replies directly in
+ the config file
+ 55) Change: Data port handling rewritten, should be a little faster
+ now.
+ 56) Change: Sendfile() support implemented. This should improve
+ performace slightly, but linux needs a better sendfile :(
+ 57) Change: Groups and vserver limits are handled in a much better
+ way now. Faster for standalone operation, correct for
+ inetd operation.
+ 58) Change: Log now contains thread id so it is easier to trace what
+ a specific user is doing
+
+ Version 1.2.10:
+
+ 1) Bug Fix: Bug where % in pathname would cause weird errors when
+ current directory was displayed. It was caused by using
+ the output of one printf (with user supplied data)
+ as the format string in the next. Fixed by removing all
+ (except where it is obviously safe) non-constant format
+ strings in the source. Entire source was checked for the
+ problem.
+
+ Version 1.2.9:
+
+ 1) Bug Fix: Mudpasswd backported from 1.3.X. Fixes problems with
+ mudpasswd segfaulting.
+ 2) Change: Included an init file for system V init scripts
+ 3) Chnage: Added a spec file for rpm generation. Havn't tested it
+ yet.
+
+ Version 1.2.8:
+
+ 1) Bug Fix: Another config file reading bug fixed. If you used tabs
+ at the end of a value, they would not be discarded by
+ the ftp server.
+ 2) Bug Fix: Repaired the README file.
+
+ Version 1.2.7:
+
+ 1) Bug Fix: Rename bug fixed. Ops :-) Occured because errno wasn't
+ reset correctly.
+
+ Version 1.2.6:
+
+ 1) Bug Fix: Fixed bug where garbage was printed if null password
+ was supplied.
+
+ Version 1.2.5:
+
+ 1) Bug Fix: snprintf madness fixed. Server now works for all known
+ snprintf types.
+ 2) Bug Fix: fixed the provided snprintf so it reports -1 if result
+ is too long.
+ 3) Bug Fix: ftpwho would segfault in certain denied access cases.
+
+ Version 1.2.4:
+
+ 1) Bug Fix: Parsing problems with tab separating name and value
+ pairs fixed.
+ 2) Change: Ftpwho program revamped. It can now do reverse IP lookups
+ for hostnames and supports regular options. Run ftpwho -h
+ to see options.
+ 3) Bug Fix: Problems with zero length strings on ftp commands fixed.
+ No real problems, just zero length parameters need to
+ be detected and reported as missing parameters.
+ 2) Bug Fix: A secuity problem with cddump relative files has been
+ fixed. If the user could create a symlink as the name
+ of a relative cddump file, the user could view any file
+ on the system over the control connection.
+
+ Version 1.2.3 (was 1.1.1c)
+
+ 1) Bug Fix: Active data connections now bind to specific interface.
+ Old method seemed to fail when used with strict ip
+ filewalls.
+ 2) Bug Fix: If an error occured accepting a control connection, the
+ server would bad.
+ 3) Bug Fix: If the PASV command couldn't bind to a port, it wouldn't
+ cleanly report the error.
+ 4) Bug Fix: An extra close was hiding the real cause of data port
+ connection failure.
+ 5) Bug Fix: Some calls to create sockets were not checked correctly.
+ 6) Bug Fix: No error was displayed if passive port connection
+ accept fails
+ 7) Bug Fix: Slight change in Makefile so that CFLAGS is recognised.
+
+ Version 1.1.1b (now 1.2.2):
+
+ 1) Bug Fix: if you didn't set authmethod in the config file, the
+ server process would crash.
+ 2) Bug Fix: if you use a non-DES crypt function, muddleftpd would
+ not authenticate properly. This bugfix fixes for a least
+ slackware 7.0.
+ 3) Change: New versioning system. Now I copy the linux versioning
+ system since I cannot get it right myself.
+ 4) Bug Fix: if a list failed due that was not the fault of glob,
+ then server would crash tring to free a non-existant
+ variable:
+ 5) Change: You can use group/usernames for uid/gid specification now
+ in user config files and authentication modules.
+
+ Version 1.1.1a (now 1.2.1):
+
+ 1) Bug Fix: Long usernames would cause the server to crash. Not an
+ exploitable bug, but not very nice looking.
+ 2) Bug Fix: files dumped over control connection were not logged
+ correctly.
+
+ Version 1.1.1 (now 1.2.0):
+
+ 1) Bug Fix: A minor memory leak was sealed.
+ 2) Bug Fix: Changed ACL error code to EACCES instead of
+ EPERM.
+ 3) Documentation: Added the info file back.
+ 4) Change: log entry generated when a user logs out of the ftp
+ server
+ 5) Bug Fix: Server will not allow client to specify a data port
+ less than 1024.
+ 6) Bug Fix: Changed byte count when starting download to total size
+ of file regardless of restart position. Other ftp
+ servers act this way, and some clients use this info.
+ 7) Change: When authenticating users, the server will change to
+ the configuration directory. This will improve
+ robustness of marginally defined configurations.
+ 8) Bug Fix: Maximum timeout was not set correctly when logging user
+ in.
+ 9) Bug Fix: Minor fixes for platform independance in mudpasswd.
+
+ Version 1.1.1beta3:
+
+ 1) Bug Fix: invalid rootdir message didn't show root dir.
+ 2) Bug Fix: fix for site commands being logged twice.
+ 3) Documentation: info files removed for now since maintainer
+ hasn't reponded to email.
+ 4) Bug Fix: Directory listing problems solved.
+
+ Version 1.1.1beta2:
+
+ 1) Bug Fix: Pam support didn't compile on system with dynamic linking
+ in a library
+ 2) Bug Fix: Small change to code to prevent problems if username
+ length constants get changed.
+ 3) Bug Fix: Fix to MDTM command, broke netscape access quite well :)
+ 4) Bug Fix: Fix for netscape race and maybe other clients.
+
+ Version 1.1.1beta1:
+
+ 1) Change: Changed the error message management system. Now much
+ better.
+ 2) Change: Help now contains descriptions for each command.
+ 3) Change: Full shadow password support with account expiry.
+ 4) Change: User now gets message as to why login fails.
+ 5) Bug Fix: strerror was compiled even if it already existed!
+ 6) Change: PAM support has been added!
+ 7) Bug Fix: now all root logins get demoted to user nobody like they
+ should
+ 8) Bug Fix: now user nobody from the password file is used to
+ determine what user nobody is. Any system without a user
+ nobody is in SERIOUS TROUBLE!
+ 9) Change: Added the disabled user authentication which will disable
+ a user.
+ 10) Bug Fix: Added a copy of the usleep function for older computers.
+ 11) Documentation: Fixed documentation for new features.
+ 12) Bug Fix: Put limits on maximum generated string lengths to
+ prevent users from filling virtual memory.
+ 13) Change: Added SITE IDLE command.
+
+ Version 1.1.1beta0:
+
+ 1) Change: Log message emitted when user cannot login due to bad
+ root dir
+ 2) Change: Error messages for socket connection are better handled.
+ 3) Change: added -d option to list a directory instead of its
+ contents.
+ 4) Change: Major refit of auth code. Now all auth code is modularied
+ into the different sources. Makes adding new auth schemes
+ easily.
+ 5) Change: new unix auth module can autodetect shadow passwords!
+ 6) Change: config files can handle windows style files.
+ 7) Change: added an internal password file support module.
+ 8) Change: added runasuser option in main config file.
+ 9) Change: removed runasuid and runasgid from main config file.
+ 10) Change: created a simple mudpasswd program to modify internal
+ password files.
+ 11) Change: Minor server reply tweeks.
+ 12) Documentation: Fixed examples for new code.
+ 13) Change: Added the badauthwait option to the main config file to
+ cause the server to wait a specifed number of milliseconds
+ if the user doesn't provide the correct password.
+ 14) Change: Added the userjail option to user files so when the user
+ logs in, he/she will not be able to log into a new user.
+ Good for anonymous accounts.
+ 15) Change: Added the logintrys option to the main config file. This
+ tells the server how many attempts a connection has to
+ login before the server refuses to log the user in.
+
+ Version 1.1:
+
+ 1) Documentation: Added man page and info pages. Thanks to
+ Jonas Oberg <address@hidden> for this.
+ 2) Bug Fix: Spelling mistake in init.c fixed. Thanks to
+ Jonas Oberg <address@hidden> for noticing my mistake.
+ 3) Change: Server will now detect if it needs root access to bind to a
+ port and gives a message to the user if it is so.
+
+ Version 1.1.beta3: Final beta if no bugs are found!
+
+ 1) Bug Fix: Fixed Makefile so QUIET=1 option is recognised.
+ 2) Bug Fix: Fixed spelling mistake in init.c (already instead of
+ aleady)
+ 3) Documentation: Added some documentation on how to build and install
+ muddleftpd (muddleftpd.txt)
+ 4) Documentation: Updated README and INSTALL.
+ 5) Bug Fix: If unixuser is specified and that specified user doesn't
+ exist, login will fail automaticly.
+ 6) Bug Fix: If it can't load a user's config file, it will now
+ output a log message.
+ 7) Bug Fix: Checks on files and directories now done in user auth
+ files.
+ 8) Change: Minor optimisations to improve processing of file
+ dumping, streamlines code.
+ 9) Bug Fix: busydump was crashing, due to incorrect working
+ directory value, fixed!
+ 10) Bug Fix: the username in the shared memory structure is properly
+ updated at the correct time. Allows a user with
+ maxconnect 1, to relogin.
+ 11) Documentation: Added documentation for user configuration files.
+ 12) Bug Fix: now mud authenication stuff is not compiled by default.
+ 13) Documentation: Added documentation for cookies in user config
+ files.
+ 14) Documentation: Added documentation for accepted ftp commands.
+ 15) Documentation: Gave up on HTML documentation!
+
+ Version 1.1.beta2:
+
+ 1) Change: Failed magic cookie tranformations are logged so that the
+ admin can find if cookies fail. (I decided that this
+ change is minor enough and important enough to be added
+ before version 1.1)
+ 2) Bug Fix: Download statistics were not correctly tallyed.
+ 3) Documentation: Added documentation for dumped file magic cookies
+ (cookies.txt)
+ 4) Documentation: Added documentation for ftpwho. (ftpwho.txt)
+ 5) Documentation: changed user.other so that if the example config
+ is directly used, it won't open gaping holes in the
+ system.
+ 6) Bug Fix: Server dies improperly on startup if shared memory isn't
+ initalized
+ 7) Bug Fix: Commented out error message about shadow passwords not
+ working as root. Change 1 should produce a log entry if
+ the user tries to use shadow passwords without root
+ access.
+ 8) Documentation: Created a new set of examples, that are more secure,
+ and better for creating a full configuration.
+ 9) Bug Fix: Updated socket.c, now if the server fails binding data
+ connections for any reason, it lets the computer choose
+ the port.
+
+ Version 1.1.beta1: Thanks to Mike Javorski <address@hidden> for the
+ first 3 fixes.
+
+ 1) Bug Fix: Removed SO_SNDLOWAT and SO_RCVLOWAT log messages because
+ they are unimportant and seem to be annoying people :)
+ The feature is still there, it will just fail quietly on
+ systems that have problems with it.
+ 2) Bug Fix: Manual page installation fixed (but commented out becuase
+ the manual page is yet to be written.
+ 3) Bug Fix: Fixed ftpwho.c for ANSI C complience. Now main returns
+ an int.
+ 4) Bug Fix: Defined prototypes for listing functions and found a bug
+ where they wern't supplied correct parameters.
+ 5) Bug Fix: Server now checks if you are already logged in before
+ accepting a password command.
+ 6) Bug Fix: Ops, I must have been on drugs to not have noticed this
+ bug before now (and write the broken code). SIZE in ascii
+ mode was badly broken.
+ 7) Bug Fix: SITE CHMOD was broken and logged out the client
+ 8) Bug Fix: HELP missed the first command when printing out a
+ command list.
+ 9) Bug Fix: When using runasuid/runasgid, the parent terminal holder
+ would not get killed due to the process not having
+ permission after changing uid.
+ 10) Bug Fix: When using runasuid/runasgid, and listening on ports
+ less than 1024, muddleftpd would fail to create data
+ ports because it couldn't bind to the port.
+ 11) Bug Fix: prototypes in ftpd.h for procnum.c fixed.
+ 12) Bug Fix: ftpwho.c now includes <unistd.h> as required.
+ 13) Bug Fix: fixed compiler warning compiling sglob.c on systems
+ without glob.
+ 14) Bug Fix: Prototype for strerror if the system hasn't got an
+ strerror
+ 15) Bug Fix: Fixed problems about double defining crypt
+ 16) Bug Fix: -lsocket and -lnsl should work for machines that need
+ them now.
+
+ Version 1.1.beta0:
+
+ 1) Bug Fix: forkwrapper is declared int instead of pid_t in ftpd.h
+ fixed.
+ 2) Bug Fix: On systems that don't support GLOB_PERIOD, compile will
+ fail, fixed.
+ 3) Documentation: Added some documentation for the main config file,
+ in doc/config.txt
+ 4) Bug Fix: Compile warning fixed for ftp.c
+ 5) Bug Fix: Fixed race condition in starting up program where tty
+ could hang if the parent recieved the signal to
+ give it back too soon.
+ 6) Documentation: Added some HTML documentation (just a quick
+ conversion of doc/config.txt)
+
+ Version 1.1.alpha5: Imposing a feature freeze for Version 1.1. Only bugfixes
+ and documentation from here.
+
+ 1) Change: Magic cookies when authing clients is now handled more
+ gracefully. No user side changes. This allows Change 6.
+ 2) Bug Fix: Empty listing caused memory leak. Fixed.
+ 3) Change: Server now holds the terminal until after the startup
+ messages so the prompt occurs after it.
+ 4) Change: Startup message fixed for correctness.
+ 5) Bug Fix: pids are now type pid_t, gids are now type gid_t, and
+ uids are now type uid_t in my program. They were ints
+ before!.
+ 6) Change: Now magic cookies work in dumped files (eg welcome file)
+ so you can give info out. The cookies are similar to the
+ real wu.ftpd cookies.
+ 7) Change: Added email option in config file for magic cookie %E.
+ 8) Change: Now you can bind to a port to a specific interface by
+ using port/ip as a parameter to ftpport. eg to bind
+ port 21 on the loopback device use "ftpport 21/127.0.0.1"
+ in the config file.
+
+ Version 1.1.alpha4:
+
+ 1) Change: SITE command now operates similarly to normal command. No
+ user visible changes.
+ 2) Change: Messages have changed so that the code is more general.
+ 3) Change: STAT ACCESS has been moved over the SITE ACCESS.
+ 4) Change: help routine is more generalized, giving better results,
+ less code and more maintainablity.
+ 5) Change: Now I use config.h instead of lots of compile options.
+ Thanks to Decklin Foster <address@hidden> for the
+ patch.
+ 6) Change: The pidfile is used to check if muddleftpd is still
+ running. If it is, muddleftpd refuses to start. Note, you
+ can still have multiple instances of muddleftpd if they
+ run with different config files.
+ 7) Bug Fix: config file name was not initalized properly.
+ 8) Change: Added a new user config option (quitdump) that prints a
+ file when the user quits.
+
+ Version 1.1.alpha3:
+
+ 1) Bug Fix: New parameter bug where process will segfault if it
+ cannot correctly substitue a %(a,b)h parameter.
+ 2) Change: Ftp listing is better now, it recognises the -a option
+ and displays all files. This improves interpolability
+ with misbehaving clients.
+ 3) Change: I removed the status reporting option and the code that
+ does it.
+ 4) Change: Shared memory used by muddleftpd can now be externally
+ accessed. (for things like ftpwho)
+ 5) Change: Added a simple ftpwho program that actually works
+ without races by accessing the shared memory.
+ 6) Change: The default config file is now specified in config.h
+
+ Version 1.1.alpha2:
+
+ 1) Change: Changed the status reporting so it now dumps info into a
+ file that can be read by other programs.
+ 3) Change: The admin now has the option to create a pidfile as
+ muddleftpd starts.
+ 2) Change: Changed the way parameters are processed. Now you can
+ select a range of characters to include. eg %(10,12)h
+ means to substitute characters 10 through 12 into the
+ string. The old %h still works.
+
+ Version 1.1.alpha1:
+
+ 1) Change: Added simple shadow password support
+ 2) Change: Changed the way listing works. Simpler, easier
+ 3) Change: now STAT <filename> works.
+ 4) Change: A list cannot be longer than MAXLISTSIZE
+ 5) Bug Fix: A long running LIST -n ./ bug has been fixed. It caused
+ an embarrasing infinite loop. Been in there for ages.
+ A big thanks to Richard(address@hidden) for the
+ tipoff.
+ 6) Bug Fix: Resume position should not be allowed to be negative.
+
+ Version 1.1.alpha0: * means ported back to 1.0
+
+ 1)*Bug Fix: Rename fixed again to check if RNFR was run before RNTO
+ 2) Change: The main routine now uses the select.c services.
+ 3) Change: The server can bind to many ports, and serve ftp over
+ them
+ 4)*Bug Fix: Memory leak in displaying symbolic links in listing.
+ 5) Change: Internal list function now displays setuid/setgid and
+ sticky bit. Rewrote to be much smaller.
+ 6)*Bug Fix: Fixed ENOTDIR error to becone MYERR_NODIR instead of
+ MYERR_NOFILE in file.c
+ 7)*Bug Fix: Minor changes to error descriptions in ftp.c
+ 8) Change: ~ works for going to your home directory.
+ 9) Change: Download/Upload now don't memmove buffer.
+ 10) Change: make a substitute glob using old BSD re_comp calls
+ for very old systems.
+ 11)*Bug Fix: Uid/Gid cache full causes problems.
+ 12) Change: for passive downloads, makes sure the host that connects
+ to the dataport is also the host that the control port
+ is connected to
+ 13)*Bug Fix: Obscure bug in ftplist.c fixed!
+ 14) Change: The server sets the high and low water marks for the
+ sockets on opening a data connection to improve
+ performace.
+ 15) Change: Added the STOU command!
+ 16) Change: Added the ability to type a file before the user logs in
+ 17) Change: Added the ability to type a file when the user enters a
+ directory.
+ 18) Change: The welcome file is now an absolute filename instead of
+ relative to rootdir
+ 19)*Bug Fix: Timeout didn't get updated properly when user logged on.
+ 20) Change: Added timeout to STAT command.
+ 21) Change: Added the APPE command!
+ 22) Change: Added the ALLO command. Does nothing.
+ 23) Change: Added the ACCT command. Does nothing.
+ 24)*Bug Fix: The server didn't kill children ftpd processes. Now it
+ does.
+ 25)*Bug Fix: If you didn't specify a groupname in a user file, the
+ server would crash.
+ 26) Change: Changed maxthreads directive to maxusers.
+ 27) Change: Cleaned up reading of commands.
+ 28) Change: Started to use assertions to debug code.
+ 29) Bug Fix: Server full log message not logged correctly.
+ 30) Change: select.c adjusted to work better.
+ 31) Bug Fix: server made 2 replys on logout.
+ 32) Bug FIx: server can handle lots of dataconnections now.
+ 33) Change: now too many login message is configurable per user
+ using the busydump directive.
+ 34) Change: ASCII upload resume disabled. It is not actually
+ possible to this safely. Use the APPE command instead.
+ 35) Change: Changed data collection to use shared memory rather than
+ pipes. Faster, easier to access and allows future
+ changes.
+ 36) Change: Error messages now output the filename and line the
+ error occured on.
+ 37) Change: I am starting to use assersions to test features, find
+ bugs.
+ 38) Bug Fix: Server exits if it can't write to the log file, i.e
+ disk full or other fatal error.
+ 39) Change: Passive is handled better througth the main select
+ handler.
+ 40) Change: A simple strerror replacement has been thrown in for
+ unlucky systems that don't have it.
+ 41) Bug Fix: High and low water marks are only set if the constants
+ for them exist. See 14.
+ 42) Bug Fix: --prefix parameter in configure works as expected.
+
+ Version 1.0: These fixed are ported back from version 1.1.alpha0.
+
+ 1) Bug Fix: very obscure and rare bug fixed in ftplist.c
+ 2) Bug Fix: Memory leak fixed in listing symbolic links.
+ 3) Bug Fix: Rename fixed to check if the command RNFR was
+ run first.
+ 4) Bug Fix: Fixed ENOTDIR to become MYERR_NODIR instead of
+ MYERR_NOFILE in file.c
+ 5) Bug Fix: Modified error descriptions in error.c
+ 6) Bug Fix: Fixed problems with full UID/GID caches.
+ 7) Bug FIx: Timeout wasn't updated when user logged in.
+ 8) Bug Fix: children processes are now automaticly killed when
+ you kill the parent.
+ 9) Change: Changed maxthreads to maxusers in the config file
+ 10) Bug Fix: If you don't specify a groupname in the user config
+ file, then the server will crash.
+
+ Version 1.0.beta3:
+
+ 1) Bug Fix: Buffers in acl.c fixed. Checked the rest of the code for
+ possible buffer problems.
+ 2) Bug Fix: stats.c buffers fixed. (not really a problem)
+ 3) Bug Fix: pnums.c buffers fixed. (not really a problem)
+ 4) Bug Fix: ftplist.c buffers fixed. (not really a problem)
+ 5) Bug Fix: Rename properly fixed. For some reason it worked with
+ the bug, and that worries me a little!
+ 6) Change: reentrant.c (old name for original threaded version)
+ cleaned up a little.
+
+ Version 1.0.beta2:
+
+ 1) Bug Fix: QUIT stopped working on 1.0.beta1, now fixed.
+ 2) Bug Fix: Buffers in auth.c fixed completely.
+ 3) Bug Fix: newfile.c has a realloc bug in it. ie it used a
+ pointer to the buffer after remalloc was run, and since
+ realloc may move the data to a new location, it was
+ unstable but difficult to debug!
+ 4) Bug Fix: a couple of memory over-freeing bugs fixed.
+ 5) Change: Symbolic links listed properly.
+
+ Version 1.0.beta1:
+
+ 1) Bug Fix: unimplemented type would print response code twice.
+ 2) Bug Fix: %U wasn't recognized unless unixuser was specified.
+ 3) Bug Fix: Permanent group changes specified in config file would
+ not work.
+
+ 4) Change: FTP server now runs data transfers (almost) completely
+ non-blocking. Timeout and ABOR work properly. ASCII
+ resume works now too.
+ 5) Change: Most of the code has been rewritten to use dynamic
+ buffers, removing most problems with fixed buffer code.
+ 6) Change: cdup, pwd, and cwd all use the same code now, thus all
+ return the current directory
+ 7) Change: mkdir now uses the 257 return code.
+ 8) Change: all commands now give better error messages based on
+ the real error, not the most likely error.
+
+ Version 1.0.beta0:
+
+ 1) First Version with CHANGES file.
Index: muddleftpd/configure.ac
diff -c /dev/null muddleftpd/configure.ac:1.3.2.1
*** /dev/null Sun Nov 2 13:51:35 2003
--- muddleftpd/configure.ac Sun Nov 2 13:51:35 2003
***************
*** 0 ****
--- 1,223 ----
+ dnl Process this file with autoconf to produce a configure script.
+ AC_INIT
+ AC_PREREQ(2.54)
+
+ AC_CONFIG_SRCDIR([src/acl.c])
+ AC_CONFIG_HEADER(config.h)
+
+ dnl Checks for programs.
+ AC_PROG_CC
+
+ dnl Damn this, I hate writing tests like this!
+ AC_DEFUN(AC_PROG_CC_SWITCH, [
+ dnl just run gcc program with -dynamic switch
+
+ ac_save_CFLAGS="$CFLAGS"
+ CFLAGS=
+ echo $ac_n "checking whether ${CC-cc} accepts -$1""... $ac_c" 1>&6
+ echo "configure: checking whether ${CC-cc} accepts -$1" >&5
+ echo 'void f(){}' > conftest.c
+ if test -z "`${CC-cc} -$1 -c conftest.c 2>&1`"; then
+ ac_cv_prog_cc_switch=yes
+ else
+ ac_cv_prog_cc_switch=no
+ fi
+ rm -f conftest*
+
+ echo "$ac_t""$ac_cv_prog_cc_switch" 1>&6
+ if test "$ac_cv_prog_cc_switch" = yes; then
+ CFLAGS="$ac_save_CFLAGS -$1"
+ else
+ CFLAGS=$ac_save_CFLAGS
+ fi
+ ])
+
+
+ dnl Replace `main' with a function in -lcrypt:
+ AC_CHECK_LIB(crypt, main)
+ AC_SEARCH_LIBS(connect, socket)
+ AC_SEARCH_LIBS(gethostbyname, nsl)
+ AC_SEARCH_LIBS(dlopen, dl)
+ AC_CHECK_LIB(pam, main)
+ AC_CHECK_LIB(cap, cap_init)
+
+ dnl Checks for header files.
+ AC_HEADER_DIRENT
+ AC_HEADER_STDC
+ AC_HEADER_SYS_WAIT
+ AC_CHECK_HEADERS(fcntl.h sys/time.h syslog.h unistd.h sys/uio.h)
+ AC_CHECK_HEADERS(crypt.h dlfcn.h sys/capability.h netinet/in_systm.h stdarg.h)
+
+ dnl Checks for typedefs, structures, and compiler characteristics.
+ AC_HEADER_TIME
+ AC_STRUCT_TM
+ AC_TYPE_UID_T
+
+ dnl Checks for library functions.
+ AC_TYPE_SIGNAL
+ AC_FUNC_STRFTIME
+ AC_CHECK_FUNCS(mkdir rmdir select socket strstr)
+
+ dnl
+ dnl check to see if snprintf returns what we expect.
+ dnl
+ AC_MSG_CHECKING([to see if snprintf work correctly])
+
+ AC_TRY_RUN([
+ #include <stdio.h>
+ #include <unistd.h>
+
+ int main()
+ {
+ FILE *outfile = fopen("snprintf-ok", "w");
+ char buffer[20];
+ int result;
+ int ok;
+ buffer[10] = 32;
+ if (outfile == NULL) exit(1);
+ result = snprintf(buffer, 10, "hellohellohello");
+
+ ok = 0;
+ if ((result == 15) && (buffer[10] == 32))
+ ok = 1;
+
+ if (ok)
+ result = snprintf(NULL, 0, "hellohellohello");
+
+ if ((result == 15) && ok)
+ fprintf(outfile, "yes");
+ else
+ fprintf(outfile, "no");
+ fclose(outfile);
+ exit(0);
+ }],[
+ SNPCOMPAT=`cat snprintf-ok`
+ rm -f snprintf-ok
+ AC_MSG_RESULT([$SNPCOMPAT])],
+ [AC_MSG_RESULT([error, assuming no])],
+ [AC_MSG_RESULT([cross-compiling, assuming no])])
+
+ if test "$SNPCOMPAT" = "yes"; then
+ AC_CHECK_FUNCS(snprintf vsnprintf)
+ fi
+
+ AC_CHECK_TYPE(off_t)
+
+ dnl
+ dnl check to see if we have LFS under linux
+ dnl
+
+ AC_SYS_LARGEFILE()
+
+ dnl AC_MSG_CHECKING([for Linux LFS])
+
+ dnl AC_TRY_RUN([
+ dnl #define _GNU_SOURCE
+ dnl #define _LARGEFILE64_SOURCE
+ dnl #define _FILE_OFFSET_BITS 64
+ dnl #include <stdio.h>
+ dnl #include <unistd.h>
+
+ dnl int main()
+ dnl {
+ dnl FILE *outfile = fopen("lfs-ok", "w");
+ dnl
+ dnl if (outfile == NULL) exit(1);
+ dnl
+ dnl if ((sizeof(off_t) == 8) && (sizeof(long int) == 4))
+ dnl fprintf(outfile, "yes");
+ dnl else
+ dnl fprintf(outfile, "no");
+ dnl fclose(outfile);
+ dnl exit(0);
+ dnl }],[
+ dnl LINUXLFS=`cat lfs-ok`
+ dnl rm -f lfs-ok
+ dnl AC_MSG_RESULT([$LINUXLFS])],
+ dnl [AC_MSG_RESULT([error, assuming no])],
+ dnl [AC_MSG_RESULT([cross-compiling, assuming no])])
+
+ dnl if test "$LINUXLFS" = "yes"; then
+ dnl AC_DEFINE(HAVE_LINUX_LFS,,[linux like large file support for 32 bit
systems])
+ dnl fi
+
+ AC_CHECK_FUNCS(memmove dlopen)
+ AC_CHECK_FUNCS(strerror getspnam)
+ AC_CHECK_FUNCS(usleep pam_start fgetpwent fgetgrent sendfile)
+ AC_CHECK_FUNCS(cap_init seteuid setegid)
+ AC_PROG_CC_SWITCH(rdynamic)
+
+ dnl check for additional features
+
+ dnl Checks for libraries.
+
+ # MUD module
+ AC_ARG_WITH(authmud,
+ AC_HELP_STRING([--with-authmud], [create MUD authentication module.
(no)]),
+ authmud=$withval, authmud=no
+ )
+
+ if test "$authmud" != no; then
+ AC_CONFIG_SUBDIRS(modules/auth/authlibmud)
+ modules="$modules authmud"
+ fi
+
+ # SMB module
+ AC_ARG_WITH(authsmb,
+ AC_HELP_STRING([--with-authsmb], [create SMB authentication module.
(yes)]),
+ authsmb=$withval, authsmb=yes
+ )
+
+ if test "$authsmb" != no; then
+ AC_CONFIG_SUBDIRS(modules/auth/authlibsmb)
+ modules="$modules authsmb"
+ fi
+
+ # MSQL module
+ AC_ARG_WITH(authmsql,
+ AC_HELP_STRING([--with-authmsql], [create mSQL authentication module.
(no)]),
+ authmsql=$withval, authmsql=no
+ )
+
+ AC_ARG_WITH(msqlpath,
+ AC_HELP_STRING([--with-msqlpath], [specify the top level of the msql
installation tree. (default is /usr/local/Hughes)]),
+ msqltop=$withval, msqltop=/usr/local/Hughes
+ )
+
+ if test "$authmsql" != no; then
+ AC_CONFIG_SUBDIRS(modules/auth/authlibmsql)
+ modules="$modules authmsql"
+ fi
+
+ # MYSQL module
+ AC_ARG_WITH(authmysql,
+ AC_HELP_STRING([--with-authmysql=DIR], [creates MySQL authentication
module, optionally specifies the DIR of mysql files]),
+ [authmysql="$withval"],
+ [authmysql=no])
+
+ if test "$authmysql" != no; then
+ AC_CONFIG_SUBDIRS(modules/auth/authlibmysql)
+ modules="$modules authmysql"
+ fi
+
+ # work out zerobind default (false on linux, true on other systems)
+
+ case `uname -s` in
+ Linux)
+ zero_bind=FALSE
+ ;;
+ *)
+ zero_bind=TRUE
+ ;;
+ esac
+ AC_SUBST(zerobind, "$zero_bind")
+
+ AC_CONFIG_FILES([Makefile src/Makefile doc/Makefile defaults.h])
+ AC_OUTPUT
+
+ echo
+ echo Muddleftpd is now ready to be compiled!
+ echo
+ echo Modules selected for compile: $modules
+ echo
+
Index: muddleftpd/doc/Makefile.in
diff -c /dev/null muddleftpd/doc/Makefile.in:1.3.4.1
*** /dev/null Sun Nov 2 13:51:35 2003
--- muddleftpd/doc/Makefile.in Sun Nov 2 13:51:35 2003
***************
*** 0 ****
--- 1,70 ----
+ # Copyright (C) 1999 Beau Kuiper
+
+ # 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, or (at your option)
+ # any later version.
+
+ # 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, write to the Free Software
+ # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+ include ../Makefile.defs
+
+ address@hidden@
+ # where the man pages are stored
+ address@hidden@
+
+ # where info files should be stored
+ address@hidden@
+
+ address@hidden@
+ DOCSRC = info/muddleftpd.texi
+
+ DOCTARGET =
+
+ ifdef MAKEINFO
+ DOCOBJ = $(DOCSRC:.texi=.info)
+ DOCTARGET += infofile
+ endif
+
+ all: doc
+
+ ifdef MAKEINFO
+ infofile:
+ $(MAKEINFO) $(DOCSRC) -o $(DOCOBJ)
+
+ doc: $(DOCTARGET)
+ else
+
+ doc:
+ echo There is no makeinfo on this machine
+ endif
+
+ install: all
+ mkdir -p $(MANDIR)/man1
+ install man/muddleftpd.1 -m 644 $(MANDIR)/man1/$(MUDOUTPROG).1
+ install man/ftpwho.1 -m 644 $(MANDIR)/man1/$(WHOPROG).1
+ install man/mudpasswd.1 -m 644 $(MANDIR)/man1/$(MUDPASSWDPROG).1
+ mkdir -p $(INFODIR)
+ install $(DOCOBJ) -m 644 $(INFODIR)
+ mkdir -p $(DOCDIR)/doc/muddleftpd
+ install -m 644 cookie.txt $(DOCDIR)/doc/muddleftpd/cookie.txt
+ install -m 644 ftpcmds.txt $(DOCDIR)/doc/muddleftpd/ftpcmds.txt
+ install -m 644 muddleftpd.txt $(DOCDIR)/doc/muddleftpd/muddleftpd.txt
+ install -m 644 mudlogd.txt $(DOCDIR)/doc/muddleftpd/mudlogd.txt
+ install -m 644 mudpasswd.txt $(DOCDIR)/doc/muddleftpd/mudpasswd.txt
+ install -m 644 reference.txt $(DOCDIR)/doc/muddleftpd/reference.txt
+
+ clean:
+
+ distclean: clean
+ rm -f Makefile *~
+
+ maintainer-clean: distclean
+ rm -f $(DOCOBJ)
Index: muddleftpd/modules/auth/authlibexample/Makefile.in
diff -c /dev/null muddleftpd/modules/auth/authlibexample/Makefile.in:1.1.8.1
*** /dev/null Sun Nov 2 13:51:35 2003
--- muddleftpd/modules/auth/authlibexample/Makefile.in Sun Nov 2 13:51:35 2003
***************
*** 0 ****
--- 1,36 ----
+
+ address@hidden@
+ address@hidden@
+ address@hidden@
+ address@hidden@
+
+ SRC=authunix.c
+ OBJ=$(SRC:.c=.o)
+
+ address@hidden@
+ address@hidden@
+
+ address@hidden@/muddleftpd
+ LIBNAME=libauthunix.so
+ address@hidden@
+
+ all: $(OBJ)
+ $(CC) $(CFLAGS) $(LIBS) -shared -Xlinker -x -o $(LIBNAME) $(OBJ)
+
+ clean:
+ rm -fr autom4te.cache
+ rm -f *.o *~ DEADJOE $(LIBNAME)
+
+ install: all
+ mkdir -p $(libdir)
+ mkdir -p $(DOCDIR)/doc/muddleftpd
+
+ install README -m 644 $(DOCDIR)/doc/muddleftpd/README.authexample
+ install $(LIBNAME) -m 644 $(libdir)
+
+
+ distclean: clean
+ rm -f config.h Makefile config.log config.cache config.status
+
+ maintainer-clean: distclean
+ rm -f configure config.h.in
Index: muddleftpd/modules/auth/authlibexample/auth.h
diff -c /dev/null muddleftpd/modules/auth/authlibexample/auth.h:1.1.8.1
*** /dev/null Sun Nov 2 13:51:35 2003
--- muddleftpd/modules/auth/authlibexample/auth.h Sun Nov 2 13:51:35 2003
***************
*** 0 ****
--- 1,150 ----
+ /* Copyright (C) 1999 Beau Kuiper
+
+ 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, or (at your option)
+ any later version.
+
+ 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, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+ /* Includes */
+
+ #include <stdio.h>
+ #include <unistd.h>
+ #include <sys/types.h>
+ #include <stdarg.h>
+
+ #ifndef INT_MAX
+ #define INT_MAX 0x7FFFFFFF
+ #endif
+
+ /* Inportant Constants */
+
+ /* yep, true and false */
+ #define FALSE 0
+ #define TRUE !FALSE
+
+ /* constants declaring various log levels. */
+ #define MYLOG_DACCESS 1 /* denied access to server because
of ip */
+ #define MYLOG_FTRANS 2 /* file transfer */
+ #define MYLOG_COMMAND 4 /* command from client */
+ #define MYLOG_RESPONSE 8 /* respone to client commands */
+ #define MYLOG_INFO 16 /* informational logs */
+ #define MYLOG_LOGIN 32 /* login information */
+ #define MYLOG_DEBUG 64 /* debug log */
+
+ /* set err to this to tell the server the result of getting an auth handle */
+ #define AUTH_OK 0 /* got handle, everything good
*/
+ #define AUTH_USERNKNOW 1 /* This module is not
responsible for
+ current user, move to next module */
+ #define AUTH_ERROR 2 /* A bad error occured, stop
attempting
+ to authenticate user */
+
+ /* a couple of macros to help :-) */
+ #define MAXIMUM(x, y) (x) > (y) ? (x) : (y)
+ #define MINIMUM(x, y) (x) > (y) ? (y) : (x)
+
+ /* Typedefs */
+
+ /* NEWFILE is a structure used with muddleftpd special text file handling
+ routines. Don't directly modify its structure */
+ typedef struct
+ {
+ int fd;
+ void *buffer;
+ int eof;
+ } NEWFILE;
+
+ /* here as some prototypes for functions you can use */
+
+ /* MEMORY FUNCTIONS */
+
+ /* Just like malloc, but it checks for out of memory */
+ extern void *mallocwrapper(int size);
+
+ /* Almost same a realloc, execpt supply double pointer of memory area(inarea)
+ * and the new size */
+ void reallocwrapper(int size, void **inarea);
+
+ /* Same as strdup, but checks for out of memory result */
+ char *strdupwrapper(char *s);
+
+ /* to free areas created by strdupwrapper and mallocwrapper, It also updates
+ * counters used to determine memory leakage, so you should use this instead
+ * of plain free() */
+ void freewrapper(void *tofree);
+
+ /* just memmove because muddleftpd will supply a replacement if the system
+ * doesn't supply one */
+ #ifndef HAVE_MEMMOVE
+ char *memmove(void *dest, void *src, int n);
+ #endif
+
+ /* STRING FUNCTIONS */
+
+ /* This drops all characaters with a code < 32 in the string suppled. This is
+ * done in place */
+ void strtrimspace(char *string);
+
+ /* This counts to number of occurences of char tok in the supplied string */
+ int strchrcount(char *string, char tok);
+
+ /* this is vsprintf except the result is given as a string allocated using
+ * mallocwrapper. Use freewrapper to reclaim the space it uses */
+ char *safe_vsnprintf(char *format, va_list ap);
+
+ /* this is the same as sprintf execpt the result is given as a string
allocated
+ * in dynamic memory using mallocwrapper. Use freewrapper to free it */
+ char *safe_snprintf(char *format, ...);
+
+ /* gets suplementary gids of user */
+ gid_t *getusergrouplist(char *username);
+
+ /* these are for really bad errors. Don't use either errormsg or
errormsgfatal.
+ * Use the ERRORMSG and ERRORMSGFATAL macros instead. BTW, ONLY USE THESE
+ * FOR ERRORS THAT CANNOT BE SOLVED ANYWAY ELSE */
+ void errormsg( char *errmessage, char *file, int line );
+ void errormsgfatal( char *errmessage, char *file, int line );
+ #define ERRORMSGFATAL(x) errormsgfatal(x, __FILE__, __LINE__)
+ #define ERRORMSG(x) errormsg(x, __FILE__, __LINE__)
+
+ /* LOG OPERATIONS */
+
+ /* Adds a log entry to muddleftpd's logs. type is one of the constants
+ * specified above. peer is the same peer pointer passed to the gethandle
+ * function. desc is the string to add to the log */
+ extern void log_addentry(int type, void *peer, char *desc);
+
+ /* Exactly the same a log_addentry, but muddleftpd will use freewrapper
+ * on desc so you can use safe_snprintf for desc */
+ extern void log_giveentry(int type, void *peer, char *desc);
+
+ /* the debug log */
+ extern void debuglog(char *format, ...);
+
+ /* CONFIF FILE OPERATIONS */
+
+ char *strsplit(char *, char *, char *);
+ void substitute(char **inputstr, char *strin, char *strout);
+ int loadconfigfile(char *filename, int (* confighandler)(char *, char *, int,
void *), void *configdata);
+ void *loadconfigcache(char *filename);
+ char *mktokconfstr(void *tset, int section, char *setting, char *defaul);
+ void loadintfromconfig(void *cache, int section, char *setting, int *to, int
def);
+ void loadstrfromconfig(void *cache, int section, char *setting, char **to,
char *def);
+ void freeconfigcache(void *cache);
+ char **makeconfiglist(void *cache, char *section, char *label);
+
+ extern NEWFILE *nfopen(char *filename);
+ extern NEWFILE *nfdopen(int fd);
+ extern char *nfgetcs(NEWFILE *file, char testchar);
+ extern void nfclose(NEWFILE *file);
+
+ extern int chkpassword(char *, char *);
+
Index: muddleftpd/modules/auth/authlibmsql/Makefile.in
diff -c /dev/null muddleftpd/modules/auth/authlibmsql/Makefile.in:1.1.8.1
*** /dev/null Sun Nov 2 13:51:35 2003
--- muddleftpd/modules/auth/authlibmsql/Makefile.in Sun Nov 2 13:51:35 2003
***************
*** 0 ****
--- 1,36 ----
+
+ address@hidden@
+ address@hidden@
+ address@hidden@
+ address@hidden@
+
+ SRC=authmsql.c
+ OBJ=$(SRC:.c=.o)
+
+ address@hidden@
+ address@hidden@
+
+ address@hidden@/muddleftpd
+ LIBNAME=libauthmsql.so
+ address@hidden@
+
+ all: $(OBJ)
+ $(CC) $(CFLAGS) -shared -Xlinker -x -o $(LIBNAME) $(OBJ) $(LIBS)
+
+ install: all
+ mkdir -p $(libdir)
+ mkdir -p $(DOCDIR)/doc/muddleftpd
+
+ install README -m 644 $(DOCDIR)/doc/muddleftpd/README.authmsql
+ install $(LIBNAME) -m 644 $(libdir)
+
+
+ clean:
+ rm -f *.o *~ DEADJOE $(LIBNAME)
+
+ distclean: clean
+ rm -f config.h Makefile config.log config.cache config.status
+
+ maintainer-clean: distclean
+ rm -f config.h.in configure
+
Index: muddleftpd/modules/auth/authlibmsql/README
diff -c /dev/null muddleftpd/modules/auth/authlibmsql/README:1.2.8.1
*** /dev/null Sun Nov 2 13:51:35 2003
--- muddleftpd/modules/auth/authlibmsql/README Sun Nov 2 13:51:35 2003
***************
*** 0 ****
--- 1,152 ----
+ mSQL authentication Module. (authlibmsql) Version 0.1
+
+ This module allows muddleftpd 1.3.4 and above authenticate using a mSQL
+ server. This module will read client information from a supplied
+ table/database within mSQL. It does not modify any data on the server. It
+ supports:
+
+ * Password encryption: Passwords can be encrypted on the mSQL
+ server in either plaintext (no encryption) or crypt based methods.
+ * Support for custom SELECT query strings. This allows tremendous
+ flexibility for choosing the structure of the tables muddleftpd
+ retreive data from.
+
+ Note: This server is based very heavily off the mysql authentication module.
+ Please excuse any reference to mysql I may make here as most of this
+ module is copied directly from the mysql module.
+
+ DEPENDANCIES:
+
+ mSQL 2.0.11 or better. This module may compile and work on earlier versions,
+ but it hasn't been tested for any older version.
+
+ Unless you specify a custom query for authlibmsql to perform, the table
+ containing user data must have the following fields, with these names:
+
+ username The username
+ password The password for the username
+ homedir The home directory for the user.
+ rootdir The root directory for the user.
+ uid The uid of the user.
+ gid The gid of the user.
+
+ BUILDING:
+
+ To build, execute the following in the authlibmsql source directory:
+
+ ./configure [--with-msql=<msqldir>]
+ make
+
+ Or simply build it with the rest of muddleftpd, add --with-authmsql to
+ the configuration options of that configure script.
+ If mSQL is not installed in the default location (/usr/local/Hughes), you
+ need to supply the --with-msql option with the path to the base directory
+ of your mSQL setup.
+
+ After you have run make, the file libauthmsql.so can be copied to the
+ directory you wish to store muddleftpd modules in. This directory must be
+ secure, so users cannot overwrite the module with a cracked version.
+ By default it is put into @prefix@/lib from configure, if you dont set
+ prefix this is /usr/local/lib/muddleftpd.
+
+ USAGE:
+
+ In the groups that you wish authlibmsql to authenticate, you need to use
+ the following to tell muddleftpd to use the authlibmsql module, replacing the
+ directory here with the directory the authentication module is stored in:
+ (If unsure a locate libauthmsql.so may help).
+
+ authmethod /usr/local/lib/muddleftpd/libauthmsql.so
+
+ To configure authlibmsql, the following directives have been added. You must
+ specify these in the group section that is being configured.
+
+ msql_host <hostname>
+
+ This specifies the host the mSQL server is located on. If you do
+ not specify this value, authlibmsql will assume the host is
+ 'localhost'. (the same computer as the ftp server)
+
+ msql_port <portnumber>
+
+ This specifies what TCP port number to connect to the mSQL server
+ using. If it is not supplied, the default mSQL port is used.
+
+ msql_database <databasename>
+
+ This specifies what database to use on the mSQL server. It is
+ advisable not to use the master database. You must specify this
+ value for authlibmsql to work.
+
+ msql_table <tablename>
+
+ This specifies the table to read user password data from. By
+ default, this is 'users'. This is not used if you specify a custom
+ query string.
+
+ msql_encryption <encryptiontype>
+
+ This specifies the type of encryption to use on passwords. There are
+ two options avaliable:
+
+ a) 'plaintext'
+ Passwords are stored with no encryption at all. Anybody with
+ read access to the database can steal the passwords. You
+ should set muddleftpd.conf to 600 permissions if you use this
+ setting.
+
+ b) 'crypt'
+ Use the standard unix crypt() call to test passwords, so
+ they typically end up as the same format as the password file
+
+ The default option for msql_encryption is 'crypt'
+
+ msql_query <querystring>
+
+ (ADVANCED OPTION) This specifies the query to use to get data from
+ the database. It should be a SELECT query that returns data in the
+ following order:
+
+ 1) password: The password of the user, in the selected encrypted
+ form.
+ 2) home directory: The home directory of the user.
+ 3) root directory: The root directory of the user.
+ 4) uid: An integer value for the user's uid.
+ 5) gid: An integer value for the user's gid.
+
+ This SELECT query should only return 1 result if the user exists,
+ or no results if the user does not exist. You can use this option if
+ the field names do not match the ones documented above. An example
+ (must be entered on a single line in the config file):
+
+ mysql_query SELECT pass,home,root,useruid,usergid FROM usertable
+ WHERE user='%U'
+
+ You can also use this option if data is spread among multiple
+ tables. Another example (must still be on a single line in the
+ config file!):
+
+ mysql_query SELECT P.pass,C.home,C.root,C.uid,C.gid FROM passwd P,
+ credtable C WHERE P.user=C.user AND P.user='%U'
+
+ This gets data from the password table, and joins it with data from
+ the credentials table to provide data for authlibmsql.
+
+
+ GROUP EFFECTS:
+
+ If authlibmsql finds a single result for a query, and the data checks out
+ ok, then it will accept the username, and authenticate for it. If it finds
+ no result for the query, then it will pass the username onto the next group
+ section. If more than one result is returned, or an error occured along the
+ way, authlibmsql will cancel authentication for that user.
+
+ FURTHER NOTES:
+
+ * You should avoid using plaintext stored passwords, especially
+ since anyone who can read the configuration file can steal all
+ the passwords in the mSQL database.
+
+ AUTHORS:
+
+ Beau Kuiper (address@hidden)
Index: muddleftpd/modules/auth/authlibmsql/auth.h
diff -c /dev/null muddleftpd/modules/auth/authlibmsql/auth.h:1.1.8.1
*** /dev/null Sun Nov 2 13:51:36 2003
--- muddleftpd/modules/auth/authlibmsql/auth.h Sun Nov 2 13:51:35 2003
***************
*** 0 ****
--- 1,150 ----
+ /* Copyright (C) 1999 Beau Kuiper
+
+ 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, or (at your option)
+ any later version.
+
+ 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, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+ /* Includes */
+
+ #include <stdio.h>
+ #include <unistd.h>
+ #include <sys/types.h>
+ #include <stdarg.h>
+
+ #ifndef INT_MAX
+ #define INT_MAX 0x7FFFFFFF
+ #endif
+
+ /* Inportant Constants */
+
+ /* yep, true and false */
+ #define FALSE 0
+ #define TRUE !FALSE
+
+ /* constants declaring various log levels. */
+ #define MYLOG_DACCESS 1 /* denied access to server because
of ip */
+ #define MYLOG_FTRANS 2 /* file transfer */
+ #define MYLOG_COMMAND 4 /* command from client */
+ #define MYLOG_RESPONSE 8 /* respone to client commands */
+ #define MYLOG_INFO 16 /* informational logs */
+ #define MYLOG_LOGIN 32 /* login information */
+ #define MYLOG_DEBUG 64 /* debug log */
+
+ /* set err to this to tell the server the result of getting an auth handle */
+ #define AUTH_OK 0 /* got handle, everything good
*/
+ #define AUTH_USERNKNOW 1 /* This module is not
responsible for
+ current user, move to next module */
+ #define AUTH_ERROR 2 /* A bad error occured, stop
attempting
+ to authenticate user */
+
+ /* a couple of macros to help :-) */
+ #define MAXIMUM(x, y) (x) > (y) ? (x) : (y)
+ #define MINIMUM(x, y) (x) > (y) ? (y) : (x)
+
+ /* Typedefs */
+
+ /* NEWFILE is a structure used with muddleftpd special text file handling
+ routines. Don't directly modify its structure */
+ typedef struct
+ {
+ int fd;
+ void *buffer;
+ int eof;
+ } NEWFILE;
+
+ /* here as some prototypes for functions you can use */
+
+ /* MEMORY FUNCTIONS */
+
+ /* Just like malloc, but it checks for out of memory */
+ extern void *mallocwrapper(int size);
+
+ /* Almost same a realloc, execpt supply double pointer of memory area(inarea)
+ * and the new size */
+ void reallocwrapper(int size, void **inarea);
+
+ /* Same as strdup, but checks for out of memory result */
+ char *strdupwrapper(char *s);
+
+ /* to free areas created by strdupwrapper and mallocwrapper, It also updates
+ * counters used to determine memory leakage, so you should use this instead
+ * of plain free() */
+ void freewrapper(void *tofree);
+
+ /* just memmove because muddleftpd will supply a replacement if the system
+ * doesn't supply one */
+ #ifndef HAVE_MEMMOVE
+ char *memmove(void *dest, void *src, int n);
+ #endif
+
+ /* STRING FUNCTIONS */
+
+ /* This drops all characaters with a code < 32 in the string suppled. This is
+ * done in place */
+ void strtrimspace(char *string);
+
+ /* This counts to number of occurences of char tok in the supplied string */
+ int strchrcount(char *string, char tok);
+
+ /* this is vsprintf except the result is given as a string allocated using
+ * mallocwrapper. Use freewrapper to reclaim the space it uses */
+ char *safe_vsnprintf(char *format, va_list ap);
+
+ /* this is the same as sprintf execpt the result is given as a string
allocated
+ * in dynamic memory using mallocwrapper. Use freewrapper to free it */
+ char *safe_snprintf(char *format, ...);
+
+ /* gets suplementary gids of user */
+ gid_t *getusergrouplist(char *username);
+
+ /* these are for really bad errors. Don't use either errormsg or
errormsgfatal.
+ * Use the ERRORMSG and ERRORMSGFATAL macros instead. BTW, ONLY USE THESE
+ * FOR ERRORS THAT CANNOT BE SOLVED ANYWAY ELSE */
+ void errormsg( char *errmessage, char *file, int line );
+ void errormsgfatal( char *errmessage, char *file, int line );
+ #define ERRORMSGFATAL(x) errormsgfatal(x, __FILE__, __LINE__)
+ #define ERRORMSG(x) errormsg(x, __FILE__, __LINE__)
+
+ /* LOG OPERATIONS */
+
+ /* Adds a log entry to muddleftpd's logs. type is one of the constants
+ * specified above. peer is the same peer pointer passed to the gethandle
+ * function. desc is the string to add to the log */
+ extern void log_addentry(int type, void *peer, char *desc);
+
+ /* Exactly the same a log_addentry, but muddleftpd will use freewrapper
+ * on desc so you can use safe_snprintf for desc */
+ extern void log_giveentry(int type, void *peer, char *desc);
+
+ /* the debug log */
+ extern void debuglog(char *format, ...);
+
+ /* CONFIF FILE OPERATIONS */
+
+ char *strsplit(char *, char *, char *);
+ void substitute(char **inputstr, char *strin, char *strout);
+ int loadconfigfile(char *filename, int (* confighandler)(char *, char *, int,
void *), void *configdata);
+ void *loadconfigcache(char *filename);
+ char *mktokconfstr(void *tset, int section, char *setting, char *defaul);
+ void loadintfromconfig(void *cache, int section, char *setting, int *to, int
def);
+ void loadstrfromconfig(void *cache, int section, char *setting, char **to,
char *def);
+ void freeconfigcache(void *cache);
+ char **makeconfiglist(void *cache, char *section, char *label);
+
+ extern NEWFILE *nfopen(char *filename);
+ extern NEWFILE *nfdopen(int fd);
+ extern char *nfgetcs(NEWFILE *file, char testchar);
+ extern void nfclose(NEWFILE *file);
+
+ extern int chkpassword(char *, char *);
+
Index: muddleftpd/modules/auth/authlibmud/Makefile.in
diff -c /dev/null muddleftpd/modules/auth/authlibmud/Makefile.in:1.1.8.1
*** /dev/null Sun Nov 2 13:51:36 2003
--- muddleftpd/modules/auth/authlibmud/Makefile.in Sun Nov 2 13:51:34 2003
***************
*** 0 ****
--- 1,35 ----
+
+ address@hidden@
+ address@hidden@
+ address@hidden@
+ address@hidden@
+
+ SRC=authmud.c
+ OBJ=$(SRC:.c=.o)
+
+ address@hidden@
+ address@hidden@
+
+ address@hidden@/muddleftpd
+ LIBNAME=libauthmud.so
+ address@hidden@
+
+ all: $(OBJ)
+ $(CC) $(CFLAGS) $(LIBS) -shared -Xlinker -x -o $(LIBNAME) $(OBJ)
+
+ install: all
+ mkdir -p $(libdir)
+ mkdir -p $(DOCDIR)/doc/muddleftpd
+
+ install README -m 644 $(DOCDIR)/doc/muddleftpd/README.authmud
+ install $(LIBNAME) -m 644 $(libdir)
+
+ clean:
+ rm -fr autom4te.cache
+ rm -f *.o *~ DEADJOE $(LIBNAME)
+
+ distclean: clean
+ rm -f config.h Makefile config.log config.cache config.status
+
+ maintainer-clean: distclean
+ rm -f configure config.h.in
Index: muddleftpd/modules/auth/authlibmud/README
diff -c /dev/null muddleftpd/modules/auth/authlibmud/README:1.1.8.1
*** /dev/null Sun Nov 2 13:51:36 2003
--- muddleftpd/modules/auth/authlibmud/README Sun Nov 2 13:51:34 2003
***************
*** 0 ****
--- 1,76 ----
+ Mud authentication Module. (authlibmud) Version 0.1
+
+ This module allows muddleftpd 1.3.4 and above authenticate against player
+ files on a mud server.
+
+ Note: This module is designed to run on a non-root execution of muddleftpd.
+ It does not provide uid, gid information about a user.
+
+ Note: This module does not provide any information other than the success of
+ authenticating a user. No home or root directory information is passed
+ on. You will need to configure these things in the config file.
+
+ Note: You may need to modify the code to get this to work on your mud. YMMV.
+ Contact me if you have any difficulties.
+
+ DEPENDANCIES:
+
+ None. However this module is useless unless you are using muddleftpd 1.3.4
+ or better.
+
+ Without modifing the code, authlibmud assumes:
+
+ * People level 21 and above are wizards and can login.
+ * Passwords in the player files are encrypted using the unix crypt()
+ call.
+ * The fields for the level and password in the player file are
+ labeled "Level" and "Password" in the same order.
+
+ BUILDING:
+
+ To build, execute the following in the authlibmud source directory:
+
+ ./configure
+ make
+
+ Or simply build it with the rest of muddleftpd, add --with-authmud to
+ the configuration options of that configure script.
+ Then the file libauthmud.so can be copied to the directory you with to
+ store muddleftpd modules in. This directory must be secure, so users cannot
+ overwrite the module with a cracked version. By default it is put into
+ @prefix@/lib from configure, if you dont set prefix this is
+ /usr/local/lib/muddleftpd.
+
+ USAGE:
+
+ In the groups that you wish authlibmud to authenticate, you need to use
+ the following to tell muddleftpd to use the authlibmud module, replacing the
+ directory with the directory the authentication module is stored in:
+ (If unsure a locate libauthmud.so may help).
+
+ authmethod /usr/local/lib/muddleftpd/libauthmud.so
+
+ To configure libauthmud, the following directives have been added. You must
+ specify these in the group section that is being configured.
+
+ playerfile <playerfilename>
+
+ This is the path and filename of the user filename. You should
+ construct this using the %U token, so it changes depending on
+ who is logging in. For example if player files are stored in
+ /usr/local/mud/players/<first letter of name>/<name>.passwd then you
+ would use in the config file:
+
+ playerfile /usr/local/mud/players/%(0,0)U/%U.passwd
+
+ GROUP EFFECTS:
+
+ If the player file is found, and the player has a level greater than 20,
+ then authlibmud will accept the username and authenticate for it. If the
+ player file is found, but the player has a level less than or equal to 20,
+ then authentication is cancelled. If the player file is not found,
+ authlibmud will pass the username to the next group section.
+
+ AUTHORS:
+
+ Beau Kuiper (address@hidden)
Index: muddleftpd/modules/auth/authlibmud/auth.h
diff -c /dev/null muddleftpd/modules/auth/authlibmud/auth.h:1.1.8.1
*** /dev/null Sun Nov 2 13:51:36 2003
--- muddleftpd/modules/auth/authlibmud/auth.h Sun Nov 2 13:51:34 2003
***************
*** 0 ****
--- 1,151 ----
+ /* Copyright (C) 1999 Beau Kuiper
+
+ 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, or (at your option)
+ any later version.
+
+ 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, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+ /* Includes */
+
+ #include <stdio.h>
+ #include <unistd.h>
+ #include <sys/types.h>
+ #include <stdarg.h>
+
+ #ifndef INT_MAX
+ #define INT_MAX 0x7FFFFFFF
+ #endif
+
+ /* Inportant Constants */
+
+ /* yep, true and false */
+ #define FALSE 0
+ #define TRUE !FALSE
+
+ /* constants declaring various log levels. */
+ #define MYLOG_DACCESS 1 /* denied access to server because
of ip */
+ #define MYLOG_FTRANS 2 /* file transfer */
+ #define MYLOG_COMMAND 4 /* command from client */
+ #define MYLOG_RESPONSE 8 /* respone to client commands */
+ #define MYLOG_INFO 16 /* informational logs */
+ #define MYLOG_LOGIN 32 /* login information */
+ #define MYLOG_DEBUG 64 /* debug log */
+
+ /* set err to this to tell the server the result of getting an auth handle */
+ #define AUTH_OK 0 /* got handle, everything good
*/
+ #define AUTH_USERNKNOW 1 /* This module is not
responsible for
+ current user, move to next module */
+ #define AUTH_ERROR 2 /* A bad error occured, stop
attempting
+ to authenticate user */
+
+ /* a couple of macros to help :-) */
+ #define MAXIMUM(x, y) (x) > (y) ? (x) : (y)
+ #define MINIMUM(x, y) (x) > (y) ? (y) : (x)
+
+ /* Typedefs */
+
+ /* NEWFILE is a structure used with muddleftpd special text file handling
+ routines. Don't directly modify its structure */
+ typedef struct
+ {
+ int fd;
+ void *buffer;
+ int eof;
+ } NEWFILE;
+
+ /* here as some prototypes for functions you can use */
+
+ /* MEMORY FUNCTIONS */
+
+ /* Just like malloc, but it checks for out of memory */
+ extern void *mallocwrapper(int size);
+
+ /* Almost same a realloc, execpt supply double pointer of memory area(inarea)
+ * and the new size */
+ void reallocwrapper(int size, void **inarea);
+
+ /* Same as strdup, but checks for out of memory result */
+ char *strdupwrapper(char *s);
+
+ /* to free areas created by strdupwrapper and mallocwrapper, It also updates
+ * counters used to determine memory leakage, so you should use this instead
+ * of plain free() */
+ void freewrapper(void *tofree);
+
+ /* just memmove because muddleftpd will supply a replacement if the system
+ * doesn't supply one */
+ #ifndef HAVE_MEMMOVE
+ char *memmove(void *dest, void *src, int n);
+ #endif
+
+ /* STRING FUNCTIONS */
+
+ /* This drops all characaters with a code < 32 in the string suppled. This is
+ * done in place */
+ void strtrimspace(char *string);
+
+ /* This counts to number of occurences of char tok in the supplied string */
+ int strchrcount(char *string, char tok);
+
+ /* this is vsprintf except the result is given as a string allocated using
+ * mallocwrapper. Use freewrapper to reclaim the space it uses */
+ char *safe_vsnprintf(char *format, va_list ap);
+
+ /* this is the same as sprintf execpt the result is given as a string
allocated
+ * in dynamic memory using mallocwrapper. Use freewrapper to free it */
+ char *safe_snprintf(char *format, ...);
+
+ /* gets suplementary gids of user */
+ gid_t *getusergrouplist(char *username);
+
+ /* these are for really bad errors. Don't use either errormsg or
errormsgfatal.
+ * Use the ERRORMSG and ERRORMSGFATAL macros instead. BTW, ONLY USE THESE
+ * FOR ERRORS THAT CANNOT BE SOLVED ANYWAY ELSE */
+ void errormsg( char *errmessage, char *file, int line );
+ void errormsgfatal( char *errmessage, char *file, int line );
+ #define ERRORMSGFATAL(x) errormsgfatal(x, __FILE__, __LINE__)
+ #define ERRORMSG(x) errormsg(x, __FILE__, __LINE__)
+
+ /* LOG OPERATIONS */
+
+ /* Adds a log entry to muddleftpd's logs. type is one of the constants
+ * specified above. peer is the same peer pointer passed to the gethandle
+ * function. desc is the string to add to the log */
+ extern void log_addentry(int type, void *peer, char *desc);
+
+ /* Exactly the same a log_addentry, but muddleftpd will use freewrapper
+ * on desc so you can use safe_snprintf for desc */
+ extern void log_giveentry(int type, void *peer, char *desc);
+
+ /* the debug log */
+ extern void debuglog(char *format, ...);
+
+ /* CONFIF FILE OPERATIONS */
+
+ char *strsplit(char *, char *, char *);
+ void substitute(char **inputstr, char *strin, char *strout);
+ int loadconfigfile(char *filename, int (* confighandler)(char *, char *, int,
void *), void *configdata,
+ int besecure, int *hendlererror, int *linenum);
+ void *loadconfigcache(char *filename);
+ char *mktokconfstr(void *tset, int section, char *setting, char *defaul);
+ void loadintfromconfig(void *cache, int section, char *setting, int *to, int
def);
+ void loadstrfromconfig(void *cache, int section, char *setting, char **to,
char *def);
+ void freeconfigcache(void *cache);
+ char **makeconfiglist(void *cache, char *section, char *label);
+
+ extern NEWFILE *nfopen(char *filename);
+ extern NEWFILE *nfdopen(int fd);
+ extern char *nfgetcs(NEWFILE *file, char testchar);
+ extern void nfclose(NEWFILE *file);
+
+ extern int chkpassword(char *, char *);
+
Index: muddleftpd/modules/auth/authlibmysql/Makefile.in
diff -c /dev/null muddleftpd/modules/auth/authlibmysql/Makefile.in:1.1.8.1
*** /dev/null Sun Nov 2 13:51:36 2003
--- muddleftpd/modules/auth/authlibmysql/Makefile.in Sun Nov 2 13:51:34 2003
***************
*** 0 ****
--- 1,36 ----
+
+ address@hidden@
+ address@hidden@
+ address@hidden@
+ address@hidden@
+
+ SRC=authmysql.c
+ OBJ=$(SRC:.c=.o)
+
+ address@hidden@
+ address@hidden@
+
+ address@hidden@/muddleftpd
+ LIBNAME=libauthmysql.so
+ address@hidden@
+
+ all: $(OBJ)
+ $(CC) $(CFLAGS) -shared -Xlinker $(OBJ) $(LIBS) -o $(LIBNAME)
+
+ install: all
+ mkdir -p $(libdir)
+ mkdir -p $(DOCDIR)/doc/muddleftpd
+
+ install README -m 644 $(DOCDIR)/doc/muddleftpd/README.authmysql
+ install $(LIBNAME) -m 644 $(libdir)
+
+
+ clean:
+ rm -f *.o *~ DEADJOE $(LIBNAME)
+
+ distclean: clean
+ rm -f config.h Makefile config.log config.cache config.status
+
+ maintainer-clean: distclean
+ rm -f configure config.h.in
+
Index: muddleftpd/modules/auth/authlibmysql/README
diff -c /dev/null muddleftpd/modules/auth/authlibmysql/README:1.2.8.1
*** /dev/null Sun Nov 2 13:51:36 2003
--- muddleftpd/modules/auth/authlibmysql/README Sun Nov 2 13:51:34 2003
***************
*** 0 ****
--- 1,161 ----
+ MySQL authentication Module. (authlibmysql) Version 0.1
+
+ This module allows muddleftpd 1.3.4 and above authenticate using a MySQL
+ server. This module will read client information from a supplied
+ table/database within MySQL. It does not modify any data on the server. It
+ supports:
+
+ * Password encryption: Passwords can be encrypted on the MySQL
+ server in either plaintext (no encryption), crypt based, or the
+ portable mysql password format.
+ * Support for custom SELECT query strings. This allows tremendous
+ flexibility for choosing the structure of the tables muddleftpd
+ retreive data from.
+
+ DEPENDANCIES:
+
+ MySQL 3.22.32 or better. This module may compile and work on earlier
+ versions, but it hasn't been tested for any older version.
+
+ Unless you specify a custom query for authlibmysql to perform, the table
+ containing user data must have the following fields, with these names:
+
+ username The username
+ password The password for the username
+ homedir The home directory for the user.
+ rootdir The root directory for the user.
+ uid The uid of the user.
+ gid The gid of the user.
+
+ BUILDING:
+
+ To build, execute the following in the authlibmysql source directory:
+
+ ./configure [--with-mysql=<mysqldir>]
+ make
+
+ Or simply build it with the rest of muddleftpd, add --with-authmysql to
+ the configuration options of that configure script.
+
+ When you have run make, the file libauthmysql.so can be copied to the
+ directory you wish to store muddleftpd modules in. This directory must be
+ secure, so users cannot overwrite the module with a cracked version.
+ By default it is put into @prefix@/lib from configure, if you dont set
+ prefix this is /usr/local/lib/muddleftpd.
+
+ USAGE:
+
+ In the groups that you wish authlibmysql to authenticate, you need to use
+ the following to tell muddleftpd to use the authlibmysql module, replacing the
+ directory here with the directory the authentication module is stored in:
+ (If unsure a locate libauthmysql.so may help).
+
+ authmethod /usr/local/lib/muddleftpd/libauthmysql.so
+
+ To configure authlibmysql, the following directives have been added. You must
+ specify these in the group section that is being configured.
+
+ mysql_host <hostname>
+
+ This specifies the host the MySQL server is located on. If you do
+ not specify this value, authlibmysql will assume the host is
+ 'localhost'. (the same computer as the ftp server)
+
+ mysql_port <portnumber>
+
+ This specifies what TCP port number to connect to the MySQL server
+ using. If it is not supplied, the default MySQL port is used.
+
+ mysql_database <databasename>
+
+ This specifies what database to use on the MySQL server. It is
+ advisable not to use the master database. You must specify this
+ value for authlibmysql to work.
+
+ mysql_user <username>
+
+ This specifies the username to access the MySQL server as. This user
+ should only require read access. You must specify this value,
+ otherwise authlibmysql will refuse to work.
+
+ mysql_password <password>
+
+ This specifies the password paired to the username used to access the
+ MySQL server. You must specify this value.
+
+ mysql_table <tablename>
+
+ This specifies the table to read user password data from. By
+ default, this is 'users'. This is not used if you specify a custom
+ query string.
+
+ mysql_encryption <encryptiontype>
+
+ This specifies the type of encryption to use on passwords. There are
+ three options avaliable:
+
+ a) 'plaintext'
+ Passwords are stored with no encryption at all. Anybody with
+ read access to the database can steal the passwords. You
+ should set muddleftpd.conf to 600 permissions if you use this
+ setting.
+
+ b) 'crypt'
+ Use the standard unix crypt() call to test passwords, so
+ they typically end up as the same format as the password file
+
+ c) 'mysql'
+ Use MySQL's builtin function password() to test passwords.
+ This is portable, and is easy to use within MySQL scripts.
+
+ The default option for mysql_encryption is 'mysql'
+
+ mysql_query <querystring>
+
+ (ADVANCED OPTION) This specifies the query to use to get data from
+ the database. It should be a SELECT query that returns data in the
+ following order:
+
+ 1) password: The password of the user, in the selected encrypted
+ form.
+ 2) home directory: The home directory of the user.
+ 3) root directory: The root directory of the user.
+ 4) uid: An integer value for the user's uid.
+ 5) gid: An integer value for the user's gid.
+
+ This SELECT query should only return 1 result if the user exists,
+ or no results if the user does not exist. You can use this option if
+ the field names do not match the ones documented above. An example
+ (must be entered on a single line in the config file):
+
+ mysql_query SELECT pass,home,root,useruid,usergid FROM usertable
+ WHERE user='%U'
+
+ You can also use this option if data is spread among multiple
+ tables. Another example (must still be on a single line in the
+ config file!):
+
+ mysql_query SELECT P.pass,C.home,C.root,C.uid,C.gid FROM passwd P,
+ credtable C WHERE P.user=C.user AND P.user='%U'
+
+ This gets data from the password table, and joins it with data from
+ the credentials table to provide data for authlibmysql.
+
+
+ GROUP EFFECTS:
+
+ If authlibmysql finds a single result for a query, and the data checks out
+ ok, then it will accept the username, and authenticate for it. If it finds
+ no result for the query, then it will pass the username onto the next group
+ section. If more than one result is returned, or an error occured along the
+ way, authlibmysql will cancel authentication for that user.
+
+ FURTHER NOTES:
+
+ * You should avoid using plaintext stored passwords, especially
+ since anyone who can read the configuration file can steal all
+ the passwords in the MySQL database.
+
+ AUTHORS:
+
+ Beau Kuiper (address@hidden)
Index: muddleftpd/modules/auth/authlibmysql/auth.h
diff -c /dev/null muddleftpd/modules/auth/authlibmysql/auth.h:1.1.8.1
*** /dev/null Sun Nov 2 13:51:36 2003
--- muddleftpd/modules/auth/authlibmysql/auth.h Sun Nov 2 13:51:34 2003
***************
*** 0 ****
--- 1,150 ----
+ /* Copyright (C) 1999 Beau Kuiper
+
+ 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, or (at your option)
+ any later version.
+
+ 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, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+ /* Includes */
+
+ #include <stdio.h>
+ #include <unistd.h>
+ #include <sys/types.h>
+ #include <stdarg.h>
+
+ #ifndef INT_MAX
+ #define INT_MAX 0x7FFFFFFF
+ #endif
+
+ /* Inportant Constants */
+
+ /* yep, true and false */
+ #define FALSE 0
+ #define TRUE !FALSE
+
+ /* constants declaring various log levels. */
+ #define MYLOG_DACCESS 1 /* denied access to server because
of ip */
+ #define MYLOG_FTRANS 2 /* file transfer */
+ #define MYLOG_COMMAND 4 /* command from client */
+ #define MYLOG_RESPONSE 8 /* respone to client commands */
+ #define MYLOG_INFO 16 /* informational logs */
+ #define MYLOG_LOGIN 32 /* login information */
+ #define MYLOG_DEBUG 64 /* debug log */
+
+ /* set err to this to tell the server the result of getting an auth handle */
+ #define AUTH_OK 0 /* got handle, everything good
*/
+ #define AUTH_USERNKNOW 1 /* This module is not
responsible for
+ current user, move to next module */
+ #define AUTH_ERROR 2 /* A bad error occured, stop
attempting
+ to authenticate user */
+
+ /* a couple of macros to help :-) */
+ #define MAXIMUM(x, y) (x) > (y) ? (x) : (y)
+ #define MINIMUM(x, y) (x) > (y) ? (y) : (x)
+
+ /* Typedefs */
+
+ /* NEWFILE is a structure used with muddleftpd special text file handling
+ routines. Don't directly modify its structure */
+ typedef struct
+ {
+ int fd;
+ void *buffer;
+ int eof;
+ } NEWFILE;
+
+ /* here as some prototypes for functions you can use */
+
+ /* MEMORY FUNCTIONS */
+
+ /* Just like malloc, but it checks for out of memory */
+ extern void *mallocwrapper(int size);
+
+ /* Almost same a realloc, execpt supply double pointer of memory area(inarea)
+ * and the new size */
+ void reallocwrapper(int size, void **inarea);
+
+ /* Same as strdup, but checks for out of memory result */
+ char *strdupwrapper(char *s);
+
+ /* to free areas created by strdupwrapper and mallocwrapper, It also updates
+ * counters used to determine memory leakage, so you should use this instead
+ * of plain free() */
+ void freewrapper(void *tofree);
+
+ /* just memmove because muddleftpd will supply a replacement if the system
+ * doesn't supply one */
+ #ifndef HAVE_MEMMOVE
+ char *memmove(void *dest, void *src, int n);
+ #endif
+
+ /* STRING FUNCTIONS */
+
+ /* This drops all characaters with a code < 32 in the string suppled. This is
+ * done in place */
+ void strtrimspace(char *string);
+
+ /* This counts to number of occurences of char tok in the supplied string */
+ int strchrcount(char *string, char tok);
+
+ /* this is vsprintf except the result is given as a string allocated using
+ * mallocwrapper. Use freewrapper to reclaim the space it uses */
+ char *safe_vsnprintf(char *format, va_list ap);
+
+ /* this is the same as sprintf execpt the result is given as a string
allocated
+ * in dynamic memory using mallocwrapper. Use freewrapper to free it */
+ char *safe_snprintf(char *format, ...);
+
+ /* gets suplementary gids of user */
+ gid_t *getusergrouplist(char *username);
+
+ /* these are for really bad errors. Don't use either errormsg or
errormsgfatal.
+ * Use the ERRORMSG and ERRORMSGFATAL macros instead. BTW, ONLY USE THESE
+ * FOR ERRORS THAT CANNOT BE SOLVED ANYWAY ELSE */
+ void errormsg( char *errmessage, char *file, int line );
+ void errormsgfatal( char *errmessage, char *file, int line );
+ #define ERRORMSGFATAL(x) errormsgfatal(x, __FILE__, __LINE__)
+ #define ERRORMSG(x) errormsg(x, __FILE__, __LINE__)
+
+ /* LOG OPERATIONS */
+
+ /* Adds a log entry to muddleftpd's logs. type is one of the constants
+ * specified above. peer is the same peer pointer passed to the gethandle
+ * function. desc is the string to add to the log */
+ extern void log_addentry(int type, void *peer, char *desc);
+
+ /* Exactly the same a log_addentry, but muddleftpd will use freewrapper
+ * on desc so you can use safe_snprintf for desc */
+ extern void log_giveentry(int type, void *peer, char *desc);
+
+ /* the debug log */
+ extern void debuglog(char *format, ...);
+
+ /* CONFIF FILE OPERATIONS */
+
+ char *strsplit(char *, char *, char *);
+ void substitute(char **inputstr, char *strin, char *strout);
+ int loadconfigfile(char *filename, int (* confighandler)(char *, char *, int,
void *), void *configdata);
+ void *loadconfigcache(char *filename);
+ char *mktokconfstr(void *tset, int section, char *setting, char *defaul);
+ void loadintfromconfig(void *cache, int section, char *setting, int *to, int
def);
+ void loadstrfromconfig(void *cache, int section, char *setting, char **to,
char *def);
+ void freeconfigcache(void *cache);
+ char **makeconfiglist(void *cache, char *section, char *label);
+
+ extern NEWFILE *nfopen(char *filename);
+ extern NEWFILE *nfdopen(int fd);
+ extern char *nfgetcs(NEWFILE *file, char testchar);
+ extern void nfclose(NEWFILE *file);
+
+ extern int chkpassword(char *, char *);
+
Index: muddleftpd/modules/auth/authlibmysql/configure.ac
diff -c /dev/null muddleftpd/modules/auth/authlibmysql/configure.ac:1.1.8.1
*** /dev/null Sun Nov 2 13:51:36 2003
--- muddleftpd/modules/auth/authlibmysql/configure.ac Sun Nov 2 13:51:34 2003
***************
*** 0 ****
--- 1,137 ----
+ dnl Process this file with autoconf to produce a configure script.
+ AC_INIT
+ AC_PREREQ(2.54)
+
+ AC_CONFIG_SRCDIR([authmysql.c])
+ AC_CONFIG_HEADER(config.h)
+
+ dnl Checks for programs.
+ AC_PROG_CC
+
+ dnl Checks for libraries.
+
+ dnl Checks for header files.
+ AC_CHECK_HEADERS(unistd.h)
+
+ dnl Checks for typedefs, structures, and compiler characteristics.
+ AC_STRUCT_TM
+
+ dnl Checks for library functions.
+ AC_HEADER_STDC
+
+ dnl Check functions
+ AC_CHECK_FUNCS(memmove)
+
+ default_directory="/usr /usr/local"
+
+ AC_DEFUN(FAIL_MESSAGE,[
+ echo
+ echo
+ echo "**********************************************"
+ echo " ERROR: unable to find" $1
+ echo " checked in the following places"
+ for i in `echo $2`; do
+ echo " $i"
+ done
+ echo "**********************************************"
+ echo
+ exit
+ ])
+
+ AC_ARG_WITH(authmysql,
+ AC_HELP_STRING([--with-authmysql=DIR],[Create MySQL authentication
module, optionally specify dir of mysql files]),
+ [ with_mysql="$withval" ],
+ [ with_mysql=no ])
+
+ if test "$with_mysql" != "no"; then
+ if test "$with_mysql" = "yes"; then
+ mysql_directory="$default_directory";
+ mysql_fail="yes"
+ elif test -d $withval; then
+ mysql_directory="$withval"
+ mysql_fail="no"
+ elif test "$with_mysql" = ""; then
+ mysql_directory="$default_directory";
+ mysql_fail="no"
+ fi
+
+ AC_MSG_CHECKING(for mysql)
+
+ for i in $mysql_directory; do
+ if test -r $i/include/mysql/mysql.h; then
+ MYSQL_DIR=$i
+ MYSQL_INC_DIR=$i/include/mysql
+ elif test -r $i/include/mysql.h; then
+ MYSQL_DIR=$i
+ MYSQL_INC_DIR=$i/include
+ fi
+ done
+
+ if test -z "$MYSQL_DIR"; then
+ if test "$mysql_fail" != "no"; then
+ tmp=""
+ for i in $mysql_directory; do
+ tmp="$tmp $i/include $i/include/mysql"
+ done
+ FAIL_MESSAGE("mysql headers (mysql.h)", $tmp)
+ else
+ AC_MSG_RESULT(no)
+ fi
+ else
+
+ for i in lib lib/mysql; do
+ str="$MYSQL_DIR/$i/libmysqlclient.*"
+ for j in `echo $str`; do
+ if test -r $j; then
+ MYSQL_LIB_DIR="$MYSQL_DIR/$i"
+ break 2
+ fi
+ done
+ done
+
+ if test -z "$MYSQL_LIB_DIR"; then
+ if test "$mysql_fail" != "no"; then
+ FAIL_MESSAGE("mysqlclient library",
+ "$MYSQL_DIR/lib $MYSQL_DIR/lib/mysql")
+ else
+ AC_MSG_RESULT(no)
+ fi
+ else
+ AC_MSG_RESULT(yes)
+ CFLAGS="$CFLAGS -I${MYSQL_INC_DIR}"
+ LDFLAGS="${LDFLAGS} -L${MYSQL_LIB_DIR}"
+ dnl CPPFLAGS="${CPPFLAGS} -I${MYSQL_INC_DIR} -DENABLE_MYSQL"
+ LIBS="-lmysqlclient ${LIBS}"
+ fi
+ fi
+ fi
+
+ dnl CFLAGS="$CFLAGS -I$mysqltop/include"
+ dnl LIBS="$LIBS $mysqltop/lib/libmysqlclient.a"
+
+
+ dnl AC_ARG_WITH(mysqlpath,
+ dnl AC_HELP_STRING([--with-mysqlpath], [specify the top level of the mysql
installation tree. (default is /usr/local/mysql)]),
+ dnl mysqltop=$withval, mysqltop=/usr/local/mysql
+ dnl )
+
+ dnl AC_MSG_CHECKING([for mysql in directory $mysqltop])
+
+ dnl if test "X$mysqltop" = "X"
+ dnl then
+ dnl AC_MSG_RESULT([no])
+ dnl AC_MSG_ERROR([msql directory not specified])
+ dnl fi
+
+ dnl if test -d $mysqltop
+ dnl then
+ dnl AC_MSG_RESULT([yes])
+ dnl CFLAGS="$CFLAGS -I$mysqltop/include"
+ dnl LIBS="$LIBS $mysqltop/lib/libmysqlclient.a"
+ dnl else
+ dnl AC_MSG_RESULT([no])
+ dnl AC_MSG_ERROR([mysql directory not found!])
+ dnl fi
+
+ AC_CONFIG_FILES([Makefile])
+ AC_OUTPUT
Index: muddleftpd/modules/auth/authlibsmb/Makefile.in
diff -c /dev/null muddleftpd/modules/auth/authlibsmb/Makefile.in:1.1.8.1
*** /dev/null Sun Nov 2 13:51:36 2003
--- muddleftpd/modules/auth/authlibsmb/Makefile.in Sun Nov 2 13:51:34 2003
***************
*** 0 ****
--- 1,39 ----
+
+ address@hidden@
+ address@hidden@
+ address@hidden@
+ address@hidden@
+
+ SRC=authsmb.c
+ OBJ=$(SRC:.c=.o)
+
+ address@hidden@
+ address@hidden@
+
+ address@hidden@/muddleftpd
+ LIBNAME=libauthsmb.so
+ address@hidden@
+
+ all: $(OBJ) smbvalid
+ $(CC) $(CFLAGS) $(LIBS) -shared -Xlinker -x -o $(LIBNAME) $(OBJ)
smbval/smbvalid.a
+
+ smbvalid:
+ $(MAKE) -C smbval
+
+ install: all
+ mkdir -p $(libdir)
+ mkdir -p $(DOCDIR)/doc/muddleftpd
+
+ install README -m 644 $(DOCDIR)/doc/muddleftpd/README.authsmb
+ install $(LIBNAME) -m 644 $(libdir)
+
+
+ clean:
+ $(MAKE) -C smbval clean
+ rm -f *.o *~ DEADJOE $(LIBNAME)
+
+ distclean: clean
+ rm -f config.h Makefile config.log config.cache config.status
+
+ maintainer-clean: distclean
+ rm -f configure config.h.in
Index: muddleftpd/modules/auth/authlibsmb/README
diff -c /dev/null muddleftpd/modules/auth/authlibsmb/README:1.2.8.1
*** /dev/null Sun Nov 2 13:51:36 2003
--- muddleftpd/modules/auth/authlibsmb/README Sun Nov 2 13:51:34 2003
***************
*** 0 ****
--- 1,88 ----
+ SMB authentication Module. (authlibsmb) Version 0.1
+
+ This module allows muddleftpd 1.3.4 and above authenticate against SMB
+ servers. This module will authenticate against the user list on any SMB
+ domain server, including both windows NT and Samba.
+
+ Note: This code is heavily dirived from the smb pam module. It is
+ essentually a front end for the smb pam module backend. Kudos to the
+ maintainers smb pam module for the good work.
+
+ Note: Although this code is dirived from the smb pam module, It does not
+ require pam to operate.
+
+ DEPENDANCIES:
+
+ A smb server somewhere available.
+
+ Also, authlibsmb requires that each user you wish to authenticate has a
+ local password entry. (unless you use the smb_localuser directive, where
+ all smb users use the same local username)
+
+ BUILDING:
+
+ To build, execute the following in the authlibsmb source directory:
+
+ ./configure
+ make
+
+ Or simply build it with the rest of muddleftpd, add --with-authsmb to
+ the configuration options of that configure script.
+ Then the file libauthsmb.so can be copied to the directory you with to
+ store muddleftpd modules in. This directory must be secure, so users cannot
+ overwrite the module with a cracked version. By default it is put into
+ @prefix@/lib from configure, if you dont set prefix this is
+ /usr/local/lib/muddleftpd.
+
+ USAGE:
+
+ In the groups that you wish authlibsmb to authenticate, you need to use
+ the following to tell muddleftpd to use the authlibsmb module, replacing the
+ directory with the directory the authentication module is stored in:
+ (If unsure a locate libauthsmb.so may help).
+
+ authmodule /usr/local/lib/muddleftpd/libauthsmb.so
+
+ To configure libauthsmb, the following directives have been added. You must
+ specify these in the group section that is being configured.
+
+ smb_domain <workgroup>
+
+ This specifies is the domain/workgroup that contains the domain server
+ to authenticate against. THIS PARAMTER IS REQUIRED
+
+ smb_primary <server>
+
+ This specifies the netbios name of the domain server, that is used to
+ authenticate against. THIS PARAMETER IS REQUIRED
+
+ smb_secondary <server>
+
+ This specifies the netbios name of the secondary domain server, that
+ is used to authenticate against. THIS PARAMETER IS OPTIONAL
+
+ smb_localuser <localusername>
+
+ This specifies the local user on the system (from the password file)
+ that smb users will access the system ass. If omitted, authlibsmb will
+ use the login username.
+
+ GROUP EFFECTS:
+
+ If smb_localuser is specified, authlibsmb will accept any username given to
+ it, regardless of whether or not it exists on the SMB server. This does not
+ mean it will log the user in, it will simply not pass the username onto the
+ next group section. You will have to use nameacl to limit this if required.
+
+ If smb_localuser is not specified, authlibsmb will only accept usernames
+ that also exist in the local password file. Users not found in the local
+ password file will be passed onto the next muddleftpd group section.
+
+ FURTHER NOTES:
+
+ * authlibsmb cannot detect the difference between a username not
+ existing on a domain server and the password being incorrect.
+
+ AUTHORS:
+
+ Beau Kuiper (address@hidden)
Index: muddleftpd/modules/auth/authlibsmb/auth.h
diff -c /dev/null muddleftpd/modules/auth/authlibsmb/auth.h:1.1.8.1
*** /dev/null Sun Nov 2 13:51:36 2003
--- muddleftpd/modules/auth/authlibsmb/auth.h Sun Nov 2 13:51:34 2003
***************
*** 0 ****
--- 1,150 ----
+ /* Copyright (C) 1999 Beau Kuiper
+
+ 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, or (at your option)
+ any later version.
+
+ 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, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+ /* Includes */
+
+ #include <stdio.h>
+ #include <unistd.h>
+ #include <sys/types.h>
+ #include <stdarg.h>
+
+ #ifndef INT_MAX
+ #define INT_MAX 0x7FFFFFFF
+ #endif
+
+ /* Inportant Constants */
+
+ /* yep, true and false */
+ #define FALSE 0
+ #define TRUE !FALSE
+
+ /* constants declaring various log levels. */
+ #define MYLOG_DACCESS 1 /* denied access to server because
of ip */
+ #define MYLOG_FTRANS 2 /* file transfer */
+ #define MYLOG_COMMAND 4 /* command from client */
+ #define MYLOG_RESPONSE 8 /* respone to client commands */
+ #define MYLOG_INFO 16 /* informational logs */
+ #define MYLOG_LOGIN 32 /* login information */
+ #define MYLOG_DEBUG 64 /* debug log */
+
+ /* set err to this to tell the server the result of getting an auth handle */
+ #define AUTH_OK 0 /* got handle, everything good
*/
+ #define AUTH_USERNKNOW 1 /* This module is not
responsible for
+ current user, move to next module */
+ #define AUTH_ERROR 2 /* A bad error occured, stop
attempting
+ to authenticate user */
+
+ /* a couple of macros to help :-) */
+ #define MAXIMUM(x, y) (x) > (y) ? (x) : (y)
+ #define MINIMUM(x, y) (x) > (y) ? (y) : (x)
+
+ /* Typedefs */
+
+ /* NEWFILE is a structure used with muddleftpd special text file handling
+ routines. Don't directly modify its structure */
+ typedef struct
+ {
+ int fd;
+ void *buffer;
+ int eof;
+ } NEWFILE;
+
+ /* here as some prototypes for functions you can use */
+
+ /* MEMORY FUNCTIONS */
+
+ /* Just like malloc, but it checks for out of memory */
+ extern void *mallocwrapper(int size);
+
+ /* Almost same a realloc, execpt supply double pointer of memory area(inarea)
+ * and the new size */
+ void reallocwrapper(int size, void **inarea);
+
+ /* Same as strdup, but checks for out of memory result */
+ char *strdupwrapper(char *s);
+
+ /* to free areas created by strdupwrapper and mallocwrapper, It also updates
+ * counters used to determine memory leakage, so you should use this instead
+ * of plain free() */
+ void freewrapper(void *tofree);
+
+ /* just memmove because muddleftpd will supply a replacement if the system
+ * doesn't supply one */
+ #ifndef HAVE_MEMMOVE
+ char *memmove(void *dest, void *src, int n);
+ #endif
+
+ /* STRING FUNCTIONS */
+
+ /* This drops all characaters with a code < 32 in the string suppled. This is
+ * done in place */
+ void strtrimspace(char *string);
+
+ /* This counts to number of occurences of char tok in the supplied string */
+ int strchrcount(char *string, char tok);
+
+ /* this is vsprintf except the result is given as a string allocated using
+ * mallocwrapper. Use freewrapper to reclaim the space it uses */
+ char *safe_vsnprintf(char *format, va_list ap);
+
+ /* this is the same as sprintf execpt the result is given as a string
allocated
+ * in dynamic memory using mallocwrapper. Use freewrapper to free it */
+ char *safe_snprintf(char *format, ...);
+
+ /* gets suplementary gids of user */
+ gid_t *getusergrouplist(char *username);
+
+ /* these are for really bad errors. Don't use either errormsg or
errormsgfatal.
+ * Use the ERRORMSG and ERRORMSGFATAL macros instead. BTW, ONLY USE THESE
+ * FOR ERRORS THAT CANNOT BE SOLVED ANYWAY ELSE */
+ void errormsg( char *errmessage, char *file, int line );
+ void errormsgfatal( char *errmessage, char *file, int line );
+ #define ERRORMSGFATAL(x) errormsgfatal(x, __FILE__, __LINE__)
+ #define ERRORMSG(x) errormsg(x, __FILE__, __LINE__)
+
+ /* LOG OPERATIONS */
+
+ /* Adds a log entry to muddleftpd's logs. type is one of the constants
+ * specified above. peer is the same peer pointer passed to the gethandle
+ * function. desc is the string to add to the log */
+ extern void log_addentry(int type, void *peer, char *desc);
+
+ /* Exactly the same a log_addentry, but muddleftpd will use freewrapper
+ * on desc so you can use safe_snprintf for desc */
+ extern void log_giveentry(int type, void *peer, char *desc);
+
+ /* the debug log */
+ extern void debuglog(char *format, ...);
+
+ /* CONFIF FILE OPERATIONS */
+
+ char *strsplit(char *, char *, char *);
+ void substitute(char **inputstr, char *strin, char *strout);
+ int loadconfigfile(char *filename, int (* confighandler)(char *, char *, int,
void *), void *configdata);
+ void *loadconfigcache(char *filename);
+ char *mktokconfstr(void *tset, int section, char *setting, char *defaul);
+ void loadintfromconfig(void *cache, int section, char *setting, int *to, int
def);
+ void loadstrfromconfig(void *cache, int section, char *setting, char **to,
char *def);
+ void freeconfigcache(void *cache);
+ char **makeconfiglist(void *cache, char *section, char *label);
+
+ extern NEWFILE *nfopen(char *filename);
+ extern NEWFILE *nfdopen(int fd);
+ extern char *nfgetcs(NEWFILE *file, char testchar);
+ extern void nfclose(NEWFILE *file);
+
+ extern int chkpassword(char *, char *);
+
Index: muddleftpd/src/Makefile.in
diff -c /dev/null muddleftpd/src/Makefile.in:1.1.10.1
*** /dev/null Sun Nov 2 13:51:36 2003
--- muddleftpd/src/Makefile.in Sun Nov 2 13:51:34 2003
***************
*** 0 ****
--- 1,119 ----
+
+ # Copyright (C) 1999 Beau Kuiper
+
+ # 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, or (at your option)
+ # any later version.
+
+ # 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, write to the Free Software
+ # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+ # **** TRY TO LEAVE EVERYTHING BELOW HERE ALONE!
+
+ include ../Makefile.defs
+
+ address@hidden@
+ address@hidden@
+
+ # where the binary is stored
+ address@hidden@
+
+ SRC = acl.c auth.c authanon.c authdisable.c authint.c authpam.c authunix.c \
+ bufread.c cfloader.c checkip.c cmd.c config.c datasock.c dir.c file.c \
+ ftp.c ftplist.c ftpout.c ftpsite.c ftpstat.c ftpstate.c ftptrans.c \
+ init.c logger.c main.c myglob.c newfile.c procnum.c proxy.c ratio.c \
+ select.c shmem.c socket.c string.c utils.c version.c \
+ util/pwgrent.c util/snprintf.c util/strerror.c
+
+ WHOSRC = ftpwho.c util/strerror.c utils.c string.c config.c newfile.c \
+ version.c util/snprintf.c util/pwgrent.c
+
+ MUDPASSWDSRC = mudpasswd.c util/strerror.c version.c util/snprintf.c
+
+ RATIOTOOLSRC = ratiotool.c util/strerror.c version.c utils.c util/snprintf.c \
+ util/pwgrent.c
+
+ MUDLOGDSRC = mudlogd.c util/strerror.c util/snprintf.c config.c utils.c \
+ newfile.c version.c string.c
+
+ ifdef NEWMALLOC
+ SRC += malloc.c
+ WHOSRC += malloc.c
+ MUDPASSWDSRC += malloc.c
+ RATIOTOOLSRC += malloc.c
+ endif
+
+ # Build a debug version (NOT RECOMMENDED FOR REAL USE)
+ #DEBUG = 1
+
+ # these flags are needed regardless of if DEBUG is used
+
+ address@hidden@
+ address@hidden@ -D$(shell uname)
+ address@hidden@
+ CFLAGSSHD:=$(DEFS) @CFLAGS@
+
+ # Set for debugging mode
+
+ ifdef DEBUG
+ CFLAGS=$(DEFS) -g -Wall -Wshadow -Wpointer-arith -Waggregate-return
-Wstrict-prototypes -DDEBUG #-Werror
+ # else set for optimising output code
+ else
+ CFLAGS=$(CFLAGSSHD)
+ endif
+
+ OBJ = $(SRC:.c=.o)
+ WHOOBJ = $(WHOSRC:.c=.o)
+ MUDPASSWDOBJ = $(MUDPASSWDSRC:.c=.o)
+ RATIOTOOLOBJ = $(RATIOTOOLSRC:.c=.o)
+ MUDLOGDOBJ = $(MUDLOGDSRC:.c=.o)
+
+ TARGETS = $(MUDOUTPROG) $(WHOPROG) $(MUDPASSWDPROG) $(RATIOTOOLPROG) \
+ $(MUDLOGD)
+
+ all: $(TARGETS)
+
+ # always force rebuilding of version.c, so it always has the current
+ # date
+ .PHONY : version.o
+ version.o:
+ $(CC) $(CFLAGS) -DDATESTR="\"$(shell date)\"" -c $(@:.o=.c) -o $@
+
+ $(WHOPROG): $(WHOOBJ)
+ $(CC) $(CFLAGS) $(LIBS) -o $(WHOPROG) $(WHOOBJ)
+
+ $(MUDPASSWDPROG): $(MUDPASSWDOBJ)
+ $(CC) $(CFLAGS) $(LIBS) -o $(MUDPASSWDPROG) $(MUDPASSWDOBJ)
+
+ $(RATIOTOOLPROG): $(RATIOTOOLOBJ)
+ $(CC) $(CFLAGS) $(LIBS) -o $(RATIOTOOLPROG) $(RATIOTOOLOBJ)
+
+ $(MUDOUTPROG): $(OBJ)
+ $(CC) $(CFLAGS) $(LIBS) -o $(MUDOUTPROG) $(OBJ)
+
+ $(MUDLOGD): $(MUDLOGDOBJ)
+ $(CC) $(CFLAGS) $(LIBS) -o $(MUDLOGD) $(MUDLOGDOBJ)
+
+ install: all
+ mkdir -p $(BINDIR)
+
+ install $(MUDOUTPROG) -m 755 $(BINDIR)
+ install $(WHOPROG) -m 755 $(BINDIR)
+ install $(MUDPASSWDPROG) -m 755 $(BINDIR)
+ install $(MUDLOGD) -m 755 $(BINDIR)
+
+ clean:
+ rm -f $(MUDOUTPROG) $(WHOPROG) *.o *~ core DEADJOE util/*.o
+ rm -f $(MUDPASSWDPROG) $(RATIOTOOLPROG) $(MUDLOGD)
+
+ distclean: clean
+ rm -f Makefile
+
+ maintainer-clean: distclean
- [Muddleftpd-cvs] CVSROOT: /cvsroot/muddleftpd,
Joerg Jaspert <=
- [Muddleftpd-cvs] CVSROOT: /cvsroot/muddleftpd, Joerg Jaspert, 2003/11/03
- [Muddleftpd-cvs] CVSROOT: /cvsroot/muddleftpd, Joerg Jaspert, 2003/11/03
- [Muddleftpd-cvs] CVSROOT: /cvsroot/muddleftpd, Beau Kuiper, 2003/11/04
- [Muddleftpd-cvs] CVSROOT: /cvsroot/muddleftpd, Beau Kuiper, 2003/11/04
- [Muddleftpd-cvs] CVSROOT: /cvsroot/muddleftpd, Beau Kuiper, 2003/11/04
- [Muddleftpd-cvs] CVSROOT: /cvsroot/muddleftpd, Beau Kuiper, 2003/11/06
- [Muddleftpd-cvs] CVSROOT: /cvsroot/muddleftpd, Beau Kuiper, 2003/11/06
- [Muddleftpd-cvs] CVSROOT: /cvsroot/muddleftpd, Joerg Jaspert, 2003/11/06
- [Muddleftpd-cvs] CVSROOT: /cvsroot/muddleftpd, Joerg Jaspert, 2003/11/06
- [Muddleftpd-cvs] CVSROOT: /cvsroot/muddleftpd, Joerg Jaspert, 2003/11/06