Return to BSD News archive
Path: euryale.cc.adfa.oz.au!newshost.anu.edu.au!harbinger.cc.monash.edu.au!news.mira.net.au!vic.news.telstra.net!act.news.telstra.net!psgrain!news.uoregon.edu!arclight.uoregon.edu!news.dacom.co.kr!usenet.seri.re.kr!news.cais.net!van-bc!unixg.ubc.ca!rover.ucs.ualberta.ca!news.nl2k.edmonton.ab.CA!news.nl2k.edmonton.ab.CA!not-for-mail From: doctor@nl2k.edmonton.AB.ca (The Doctor) Newsgroups: comp.unix.bsd.bsdi.misc,comp.unix.bsd.netbsd.misc,comp.unix.bsd.freebsd.misc Subject: Re: configuring virtual ftp (wu-ftp) Date: 26 Apr 1996 09:59:26 -0600 Organization: NetLine 2000 Lines: 456 Message-ID: <4lqrsu$rbp@doctor.nl2k.edmonton.ab.ca> References: <4kk2pc$pvs@moon.igcom.net> <DqFAFI.CC2@kraken.aldhfn.org> NNTP-Posting-Host: doctor.nl2k.edmonton.ab.ca Xref: euryale.cc.adfa.oz.au comp.unix.bsd.bsdi.misc:3543 comp.unix.bsd.netbsd.misc:3402 comp.unix.bsd.freebsd.misc:18230 In article <DqFAFI.CC2@kraken.aldhfn.org>, Skip Watson <ciaran@phoenix.aldhfn.org> wrote: >David B. Bauman (david@terra.igcom.net) wrote: >: sd.misc >: References: <316BA418.65EF@softaid.net> <4ki14r$nv9@doctor.nl2k.edmonton.ab.ca> >: Organization: InterGlobal Communications >: Distribution: >: The Doctor (doctor@nl2k.edmonton.AB.ca) wrote: >: >: : Recompile and reinstall. BSDI's wu-ftpd is NOT virtual. BTW >: : where did you pick up vwu-ftpd? >: >: Please let me know as well. Ive been searching for it for a while. > > I found the following file in wu-ftpd-2.4.BSDI.tar.gz. Looking through >that archive it appears to have been compiled for FreeBSD. It does compile and >run on FreeBSD 2.1. > > Add the following line to ftpaccess and make sure name server is set >up correctly. Also make sure the interfaces are setup correctly just like for >WWW virtual host. > >virtual [IP Number] [ftp home directory] [ftp home directory/].message > > > One problem I have noticed. After logging into the virtual host, >"ls pub" causes the server to disconnect. If you "cd pub" and then do "ls" >it works. Someone that is a programmer needs to look into this "problem". >I'm not a programmer but I'm interested in any fixes/improvements ;-). > > Anyway here it is. It isn't mine so don't ask me about. Which version of the ftpd DO you have? The one Nebulus (Breckenridge) carries is 2.4(9). I joined the wu-ftpd mailing bt no info on were the CURRENT wu-ftpd is. > >-------------------------- cut here ----------------------- >--- extensions.c >+++ extensions.c Fri May 26 20:48:13 1995 >@@ -278,7 +278,7 @@ > /*************************************************************************/ > > void >-show_banner(int msgcode) >+show_banner(int msgcode, int virtual_mode, char *virtual_banner) > { > char *crptr, > linebuf[1024], >@@ -286,22 +286,38 @@ > struct aclmember *entry = NULL; > FILE *infile; > >- /* banner <path> */ >- while (getaclentry("banner", &entry)) { >+ if (virtual_mode) { >+ infile = fopen(virtual_banner, "r"); >+ if (infile) { >+ while (fgets(linebuf, 255, infile) != NULL) { >+ if ((crptr = strchr(linebuf, '\n')) != NULL) >+ *crptr = '\0'; >+ msg_massage(linebuf, outbuf); >+ lreply(msgcode, "%s", outbuf); >+ } >+ fclose(infile); >+ lreply(msgcode, ""); >+ } >+ } >+ else { >+ /* banner <path> */ >+ while (getaclentry("banner", &entry)) { > if (ARG0 && strlen(ARG0) > 0) { >- infile = fopen(ARG0, "r"); >- if (infile) { >- while (fgets(linebuf, 255, infile) != NULL) { >- if ((crptr = strchr(linebuf, '\n')) != NULL) >- *crptr = '\0'; >- msg_massage(linebuf, outbuf); >- lreply(msgcode, "%s", outbuf); >- } >- fclose(infile); >- lreply(msgcode, ""); >- } >- } >+ infile = fopen(ARG0, "r"); >+ if (infile) { >+ while (fgets(linebuf, 255, infile) != NULL) { >+ if ((crptr = strchr(linebuf, '\n')) != NULL) >+ *crptr = '\0'; >+ msg_massage(linebuf, outbuf); >+ lreply(msgcode, "%s", outbuf); >+ } >+ fclose(infile); >+ lreply(msgcode, ""); >+ } >+ } >+ } > } >+ > } > > /*************************************************************************/ >--- ftpd.c >+++ ftpd.c Fri May 26 20:53:57 1995 >@@ -150,6 +150,14 @@ > struct sockaddr_in his_addr; > struct sockaddr_in pasv_addr; > >+int virtual_mode=0; >+#ifdef VIRTUAL >+struct sockaddr_in virtual_addr; >+struct sockaddr_in *virtual_ptr; >+char virtual_root[MAXPATHLEN]; >+char virtual_banner[MAXPATHLEN]; >+#endif >+ > int data; > jmp_buf errcatch, > urgcatch; >@@ -261,6 +269,11 @@ > #endif > char *cp; > >+#ifdef VIRTUAL >+ int virtual_len; >+ int set; >+#endif >+ > #ifdef SecureWare > setluid(1); /* make sure there is a valid luid */ > set_auth_parameters(argc,argv); >@@ -499,6 +512,31 @@ > authenticate(); > conv_init(); > >+ >+#ifdef VIRTUAL >+ virtual_len = sizeof(virtual_addr); >+ if (getsockname(0, (struct sockaddr *) &virtual_addr, >+ &virtual_len) < 0) { >+ virtual_mode = 0; >+ } >+ else { >+ virtual_ptr = (struct sockaddr_in *) &virtual_addr; >+ set = 0; >+ entry = (struct aclmember *) NULL; >+ while (!set && getaclentry("virtual", &entry)) { >+ if (!strcmp(ARG0, inet_ntoa(virtual_ptr->sin_addr))) { >+ if (ARG1 != NULL && ARG2 != NULL) { >+ virtual_mode = 1; >+ strncpy(virtual_root, ARG1, MAXPATHLEN); >+ strncpy(virtual_banner, ARG2, MAXPATHLEN); >+ syslog(LOG_ERR, "VirtualFTP Connect to: %s", >+ inet_ntoa(virtual_ptr->sin_addr)); >+ } >+ } >+ } >+ } >+#endif >+ > if (is_shutdown(1) != 0) { > syslog(LOG_INFO, "connection refused (server shut down) from %s [%s]", > remotehost, remoteaddr); >@@ -506,7 +544,8 @@ > hostname); > exit(0); > } >- show_banner(220); >+ >+ show_banner(220, virtual_mode, virtual_banner); > > entry = (struct aclmember *) NULL; > if (getaclentry("lslong", &entry) && ARG0 && strlen(ARG0) > 0) { >@@ -1108,6 +1147,13 @@ > if (anonymous || guest) { > /* We MUST do a chdir() after the chroot. Otherwise the old current > * directory will be accessible as "." outside the new root! */ >+ >+#ifdef VIRTUAL >+ if (virtual_mode) { >+ strcpy(pw->pw_dir, virtual_root); >+ } >+#endif >+ > if (anonymous) { > if (chroot(pw->pw_dir) < 0 || chdir("/") < 0) { > reply(550, "Can't set guest privileges."); >--- makefiles/Makefile.aix >+++ makefiles/Makefile.aix Fri May 26 20:57:36 1995 >@@ -1,13 +1,14 @@ > CC = cc > IFLAGS = -I.. -I../support > LFLAGS = -L../support >-CFLAGS = -O -DDEBUG ${IFLAGS} ${LFLAGS} >+CFLAGS = -O -DDEBUG -DVIRTUAL ${IFLAGS} ${LFLAGS} > LIBES = -lsupport > LIBC = /lib/libc.a > LINTFLAGS= > LKERB = -lauth -lckrb -lkrb -ldes > MKDEP = ../util/mkdep > >+ > SRCS = ftpd.c ftpcmd.c glob.c logwtmp.c popen.c vers.c access.c extensions.c \ > realpath.c acl.c private.c authenticate.c conversions.c hostacc.c > OBJS = ftpd.o ftpcmd.o glob.o logwtmp.o popen.o vers.o access.o extensions.o \ >--- makefiles/Makefile.bsd >+++ makefiles/Makefile.bsd Fri May 26 20:57:56 1995 >@@ -1,12 +1,13 @@ > CC = cc > IFLAGS = -I.. -I../support > LFLAGS = -L../support >-CFLAGS = -O -DDEBUG ${IFLAGS} ${LFLAGS} >+CFLAGS = -O -DDEBUG -DVIRTUAL ${IFLAGS} ${LFLAGS} > LIBES = -lsupport > LIBC = /usr/lib/libc.a > LINTFLAGS= > LKERB = -lauth -lckrb -lkrb -ldes > MKDEP = ../util/mkdep >+ > > SRCS = ftpd.c ftpcmd.c glob.c logwtmp.c popen.c vers.c access.c extensions.c \ > realpath.c acl.c private.c authenticate.c conversions.c hostacc.c >--- makefiles/Makefile.dgx >+++ makefiles/Makefile.dgx Fri May 26 20:58:05 1995 >@@ -1,12 +1,13 @@ > CC = gcc > IFLAGS = -I.. -I../support > LFLAGS = -L../support >-CFLAGS = -g -DDEBUG ${IFLAGS} ${LFLAGS} >+CFLAGS = -g -DDEBUG -DVIRTUAL ${IFLAGS} ${LFLAGS} > LIBES = -lsupport > LIBC = -lc > LINTFLAGS= > LKERB = -lauth -lckrb -lkrb -ldes > MKDEP = ../util/mkdep >+ > > SRCS = ftpd.c ftpcmd.c glob.c logwtmp.c popen.c vers.c access.c extensions.c \ > realpath.c acl.c private.c authenticate.c conversions.c hostacc.c >--- makefiles/Makefile.dyn >+++ makefiles/Makefile.dyn Fri May 26 20:58:15 1995 >@@ -1,7 +1,7 @@ > CC = gcc > IFLAGS = -I.. -I../support > LFLAGS = -L../support >-CFLAGS = -O -DDEBUG ${IFLAGS} ${LFLAGS} >+CFLAGS = -O -DDEBUG -DVIRTUAL ${IFLAGS} ${LFLAGS} > LIBES = -lsupport > LIBC = /lib/libc.a > LINTFLAGS= >--- makefiles/Makefile.gen >+++ makefiles/Makefile.gen Fri May 26 20:58:25 1995 >@@ -1,12 +1,14 @@ > CC = cc > IFLAGS = -I.. -I../support > LFLAGS = -L../support >-CFLAGS = -O -DDEBUG ${IFLAGS} ${LFLAGS} >+CFLAGS = -O -DDEBUG -DVIRTUAL ${IFLAGS} ${LFLAGS} > LIBES = -lsupport > LIBC = /lib/libc.a > LINTFLAGS= > LKERB = -lauth -lckrb -lkrb -ldes > MKDEP = ../util/mkdep >+DEFINES = -DVIRTUAL >+ > > SRCS = ftpd.c ftpcmd.c glob.c logwtmp.c popen.c vers.c access.c extensions.c \ > realpath.c acl.c private.c authenticate.c conversions.c hostacc.c >--- makefiles/Makefile.hpx >+++ makefiles/Makefile.hpx Fri May 26 20:58:46 1995 >@@ -1,12 +1,13 @@ > CC = cc > IFLAGS = -I.. -I../support > LFLAGS = -L../support >-CFLAGS = -Aa -Dunix -D_HPUX_SOURCE -O -DDEBUG ${IFLAGS} ${LFLAGS} >+CFLAGS = -Aa -Dunix -DVIRTUAL -D_HPUX_SOURCE -O -DDEBUG ${IFLAGS} ${LFLAGS} > LIBES = -lsupport -lc -lPW > LIBC = /lib/libc.a > LINTFLAGS= > LKERB = -lauth -lckrb -lkrb -ldes > MKDEP = ../util/mkdep.hpx >+ > > SRCS = ftpd.c ftpcmd.c glob.c logwtmp.c popen.c vers.c access.c extensions.c \ > realpath.c acl.c private.c authenticate.c conversions.c hostacc.c >--- makefiles/Makefile.isc >+++ makefiles/Makefile.isc Fri May 26 20:58:57 1995 >@@ -1,12 +1,13 @@ > CC = gcc > IFLAGS = -I.. -I../support > LFLAGS = -L../support >-CFLAGS = -O -DISC -DM_UNIX -DPOSIX_JC -DHAVE_VPRINTF -DHAVE_DIRENT -DNBBY=8 -DHAVE_GETDTABLESIZE -DHAVE_GETCWD -DREGEX -DSHADOW_PASSWORD ${IFLAGS} ${LFLAGS} >+CFLAGS = -O -DVIRTUAL -DISC -DM_UNIX -DPOSIX_JC -DHAVE_VPRINTF -DHAVE_DIRENT -DNBBY=8 -DHAVE_GETDTABLESIZE -DHAVE_GETCWD -DREGEX -DSHADOW_PASSWORD ${IFLAGS} ${LFLAGS} > LIBES = -lsupport -linet -lnsl_s -lcposix -lPW -lsec > LIBC = /lib/libc.a > LINTFLAGS= > #LKERB = > MKDEP = ../util/mkdep >+ > > SRCS = ftpd.c ftpcmd.c glob.c logwtmp.c popen.c vers.c access.c extensions.c \ > realpath.c acl.c private.c authenticate.c conversions.c hostacc.c >--- makefiles/Makefile.lnx >+++ makefiles/Makefile.lnx Fri May 26 20:59:22 1995 >@@ -1,13 +1,13 @@ > CC = gcc > IFLAGS = -I.. -I../support -I/usr/include/bsd > LFLAGS = -L../support >-CFLAGS = -O -DDEBUG ${IFLAGS} ${LFLAGS} >+CFLAGS = -O -DVIRTUAL -DDEBUG ${IFLAGS} ${LFLAGS} > LIBES = -lsupport -lbsd > LIBC = /usr/lib/libc.a > LINTFLAGS= > LKERB = -lauth -lckrb -lkrb -ldes > MKDEP = ../util/mkdep >- >+ > SRCS = ftpd.c ftpcmd.c glob.c logwtmp.c popen.c vers.c access.c extensions.c \ > realpath.c acl.c private.c authenticate.c conversions.c hostacc.c > OBJS = ftpd.o ftpcmd.o glob.o logwtmp.o popen.o vers.o access.o extensions.o \ >@@ -22,7 +22,7 @@ > ${CC} ${CFLAGS} -o $@ ftpshut.c vers.o ${LIBES} > > ftpd: ${OBJS} ${LIBC} >- ${CC} ${CFLAGS} -o $@ ${OBJS} ${LIBES} >+ ${CC} ${CFLAGS} ${DEFINES} -o $@ ${OBJS} ${LIBES} > > ckconfig: ckconfig.c > ${CC} ${CFLAGS} -o $@ ckconfig.c >--- makefiles/Makefile.nx2 >+++ makefiles/Makefile.nx2 Fri May 26 20:59:12 1995 >@@ -1,7 +1,7 @@ > CC = cc > IFLAGS = -I.. -I../support > LFLAGS = -L../support >-CFLAGS = -O -DDEBUG ${IFLAGS} ${LFLAGS} >+CFLAGS = -O -DVIRTUAL -DDEBUG ${IFLAGS} ${LFLAGS} > LIBES = -lsupport > LIBC = /lib/libsys_s.a > LINTFLAGS= >--- makefiles/Makefile.nx3 >+++ makefiles/Makefile.nx3 Fri May 26 20:59:31 1995 >@@ -1,7 +1,7 @@ > CC = cc > IFLAGS = -I.. > LFLAGS = -L../support >-CFLAGS = -O2 ${IFLAGS} ${LFLAGS} >+CFLAGS = -O2 -DVIRTUAL ${IFLAGS} ${LFLAGS} > LIBES = -lsupport > LIBC = > LINTFLAGS= >--- makefiles/Makefile.osf >+++ makefiles/Makefile.osf Fri May 26 20:59:39 1995 >@@ -1,7 +1,7 @@ > CC = cc > IFLAGS = -I.. -I../support > LFLAGS = -L../support -s -x >-CFLAGS = -O -DDEBUG ${IFLAGS} ${LFLAGS} >+CFLAGS = -O -DVIRTUAL -DDEBUG ${IFLAGS} ${LFLAGS} > LIBES = -lsupport > LIBC = /lib/libc.a > LINTFLAGS= >--- makefiles/Makefile.ptx >+++ makefiles/Makefile.ptx Fri May 26 20:59:47 1995 >@@ -1,7 +1,7 @@ > CC = cc > IFLAGS = -I.. -I../support > LFLAGS = -L../support >-CFLAGS = -O -DDEBUG ${IFLAGS} ${LFLAGS} >+CFLAGS = -O -DVIRTUAL -DDEBUG ${IFLAGS} ${LFLAGS} > LIBES = -lsupport -lsec -lgen -lseq -lsocket -linet -lnsl -lmalloc > LIBC = /lib/libc.a > LINTFLAGS= >--- makefiles/Makefile.s41 >+++ makefiles/Makefile.s41 Fri May 26 20:59:56 1995 >@@ -2,7 +2,7 @@ > #CC = acc > IFLAGS = -I.. -I../support > LFLAGS = -L../support >-CFLAGS = $(OPT) -DDEBUG ${IFLAGS} ${LFLAGS} >+CFLAGS = $(OPT) -DVIRTUAL -DDEBUG ${IFLAGS} ${LFLAGS} > OPT = -g > LIBES = -lsupport > LIBC = /lib/libc.a >--- makefiles/Makefile.sco >+++ makefiles/Makefile.sco Fri May 26 21:00:09 1995 >@@ -1,7 +1,7 @@ > CC = cc > IFLAGS = -I.. -I../support > LFLAGS = -L../support >-CFLAGS = -O ${IFLAGS} ${LFLAGS} >+CFLAGS = -O -DVIRTUAL ${IFLAGS} ${LFLAGS} > # 1) If you do not have -lprot_s, use -lprot instead. > # 2) -lcrypt can be used in place of -lcrypt_i. If you do not have any crypt > # library, get and install ftp.sco.com:/SLS/lng225* (International Crypt >--- makefiles/Makefile.sgi >+++ makefiles/Makefile.sgi Fri May 26 21:00:18 1995 >@@ -1,7 +1,7 @@ > CC = cc > IFLAGS = -I.. -I../support > LFLAGS = -L../support >-CFLAGS = -O -DDEBUG ${IFLAGS} ${LFLAGS} >+CFLAGS = -O -DVIRTUAL -DDEBUG ${IFLAGS} ${LFLAGS} > LIBES = -lsupport > LIBC = /usr/lib/libc.a > LINTFLAGS= >--- makefiles/Makefile.sny >+++ makefiles/Makefile.sny Fri May 26 21:00:26 1995 >@@ -1,7 +1,7 @@ > CC = cc > IFLAGS = -I.. -I../support > LFLAGS = -L../support >-CFLAGS = -O -DDEBUG ${IFLAGS} ${LFLAGS} >+CFLAGS = -O -DVIRTUAL -DDEBUG ${IFLAGS} ${LFLAGS} > LIBES = -lsupport > LIBC = /lib/libc.a > LINTFLAGS= >--- makefiles/Makefile.sol >+++ makefiles/Makefile.sol Fri May 26 21:00:35 1995 >@@ -1,7 +1,7 @@ > CC = cc > IFLAGS = -I.. -I../support > LFLAGS = -L../support >-CFLAGS = -g -DDEBUG ${IFLAGS} ${LFLAGS} >+CFLAGS = -g -DDEBUG -DVIRTUAL ${IFLAGS} ${LFLAGS} > LIBES = -lsupport -lsocket -lnsl -lgen > LIBC = /lib/libc.a > LINTFLAGS= >--- makefiles/Makefile.ult >+++ makefiles/Makefile.ult Fri May 26 21:00:47 1995 >@@ -1,7 +1,7 @@ > CC = cc > IFLAGS = -I.. -I../support > LFLAGS = -L../support >-CFLAGS = -Dconst="" -O -DDEBUG -DSYSSYSLOG ${IFLAGS} ${LFLAGS} >+CFLAGS = -Dconst="" -O -DVIRTUAL -DDEBUG -DSYSSYSLOG ${IFLAGS} ${LFLAGS} > LIBES = -lsupport > LIBC = /lib/libc.a > LINTFLAGS= >-------------------------- cut here ------------------------------- > >Skip >-- >Auldhaefen Online Services automated info: info@aldhfn.org >216 745-9380 voice questions: support@aldhfn.org >216 753-8791 bbs/fax person: ciaran@aldhfn.org >216 745-7624 data experimental webserver: http://www.aldhfn.org -- God, Queen and Country Member - Liberal International NEVER Satan, President and Republic Board Member - Edmonton Heritage Nazarene Hating Bachelor's Living; Doctor Who returns: 13 May at BAFTA for DWAS, 14 May on Fox for NA, 27 May on BBC1 - check rec.arts.drwho for local gatherings http://doctor.nl2k.edmonton.ab.ca/~doctor British Columbia, beware of Van Der Zalm Reform and Harcourt/Clark NDP.